aboutsummaryrefslogtreecommitdiff
path: root/aoc
diff options
context:
space:
mode:
authorJuan Marín Noguera <juan.marinn@um.es>2020-12-13 12:04:48 +0100
committerJuan Marín Noguera <juan.marinn@um.es>2020-12-13 12:04:48 +0100
commit8f0ea7300a3a2777744906578cfe3285ad16046d (patch)
tree952e4bcd3ac3c345701d47d1bddce562fc3c7634 /aoc
parent7a3ad775c6143ec873d28a5b4bbea92e943aad8b (diff)
AOC tema 2, inicio
Diffstat (limited to 'aoc')
-rw-r--r--aoc/n.lyx14
-rw-r--r--aoc/n2.lyx325
2 files changed, 339 insertions, 0 deletions
diff --git a/aoc/n.lyx b/aoc/n.lyx
index aafa697..87cd742 100644
--- a/aoc/n.lyx
+++ b/aoc/n.lyx
@@ -183,5 +183,19 @@ filename "n1.lyx"
\end_layout
+\begin_layout Chapter
+Arquitecturas superescalares
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n2.lyx"
+
+\end_inset
+
+
+\end_layout
+
\end_body
\end_document
diff --git a/aoc/n2.lyx b/aoc/n2.lyx
new file mode 100644
index 0000000..2033406
--- /dev/null
+++ b/aoc/n2.lyx
@@ -0,0 +1,325 @@
+#LyX 2.3 created this file. For more info see http://www.lyx.org/
+\lyxformat 544
+\begin_document
+\begin_header
+\save_transient_properties true
+\origin unavailable
+\textclass book
+\use_default_options true
+\begin_modules
+algorithm2e
+\end_modules
+\maintain_unincluded_children false
+\language spanish
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\use_microtype false
+\use_dash_ligatures true
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 1
+\use_minted 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\is_math_indent 0
+\math_numbering_side default
+\quotes_style french
+\dynamic_quotes 0
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Standard
+Para reducir por debajo de 1 los CPI de un núcleo del procesador, debemos
+ lanzar y ejecutar varias instrucciones en cada ciclo de reloj, pero esto
+ implica más presión sobre la memoria y los registros, más posibilidad de
+ riesgos, más área de silicio y más consumo.
+ Distinguimos:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Arquitecturas superescalares
+\series default
+: Lanzan un número variable de instrucciones por ciclo, de 0 a 8, planificadas
+ de forma
+\series bold
+estática
+\series default
+ por el compilador y
+\series bold
+dinámica
+\series default
+ por el
+\emph on
+\lang english
+hardware
+\emph default
+\lang spanish
+.
+ La ejecución puede ser en orden o fuera de orden, especulativa o no.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+VLIW
+\series default
+ (
+\series bold
+\emph on
+\lang english
+Very Long Instruction Word
+\series default
+\emph default
+\lang spanish
+): En cada ciclo se carga una
+\series bold
+macro-instrucción
+\series default
+, formada por varias instrucciones independientes agrupadas por el compilador.
+ El
+\emph on
+\lang english
+hardware
+\emph default
+\lang spanish
+ es más simple, lo que permite una mayor frecuencia de reloj y un menor
+ consumo, pero no se beneficia de las técnicas de planificación dinámica
+ y el código suele ser más grande e incompatible entre distintas versiones
+ del procesador, por lo que actualmente está casi en desuso.
+\end_layout
+
+\begin_layout Standard
+Un núcleo superescalar tiene un sistema de memoria de alto rendimiento y
+ unidades funcionales redundantes, que administra con técnicas como:
+\end_layout
+
+\begin_layout Itemize
+Renombrado de registros para eliminar las dependencias de nombre.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Planificación dinámica
+\series default
+: Reorganizar la secuencia de instrucciones separando la decodificación
+ de la comprobación de dependencias y la emisión.
+\end_layout
+
+\begin_layout Itemize
+Ejecución fuera de orden para mitigar la degradación de rendimiento por
+ dependencias de datos.
+\end_layout
+
+\begin_layout Itemize
+Ejecución especulativa para mitigar los riesgos de control.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Separator plain
+\end_inset
+
+
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Obtención de instrucciones
+\series default
+ (
+\series bold
+IF
+\series default
+): Lee varias instrucciones por ciclo en orden y las añade a una
+\series bold
+cola de instrucciones
+\series default
+, que suaviza los fallos de la caché de instrucciones.
+ También hace
+\emph on
+\lang english
+prefetching
+\emph default
+\lang spanish
+ de instrucciones.
+ La predicción de saltos de puede hacer aquí o en ID, y es estática si siempre
+ se predice el mismo comportamiento para el mismo salto o dinámica si no.
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Decodificación
+\series default
+ (
+\series bold
+ID
+\series default
+): Decodifica varias instrucciones por ciclo en orden para conocer su tipo,
+ las añade decodificadas en una
+\series bold
+ventana de instrucciones
+\series default
+ y renombra los registros para evitar riesgos.
+ Si se quiere terminación en orden se almacenan las instrucciones en un
+
+\series bold
+ROB
+\series default
+ (
+\emph on
+\lang english
+Re-Order Buffer
+\emph default
+\lang spanish
+), un
+\emph on
+\lang english
+buffer
+\emph default
+\lang spanish
+ circular FIFO que almacena las instrucciones y posteriormente los resultados
+ hasta que se escriben en orden.
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Emisión
+\series default
+ (
+\series bold
+\emph on
+\lang english
+Issue
+\series default
+\emph default
+\lang spanish
+): Se comprueba que los operandos y recursos (unidades funcionales y puestos
+ de E/S) de cada instrucción estén disponibles y, cuando lo están, se manda
+ a ejecutar la instrucción.
+ Puede ser fuera de orden, permitiendo que instrucciones cuyos operandos
+ y recursos estén disponibles adelanten a otras más antiguas.
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Ejecución
+\series default
+ (
+\series bold
+EX
+\series default
+,
+\series bold
+X
+\series default
+): Fuera de orden, con varias unidades funcionales de cada tipo a ser posible
+ totalmente segmentadas.
+ Para que la latencia sea lo menor posible, se usa
+\series bold
+adelantamiento
+\series default
+, difundiendo el resultado de una operación a las pendientes tan pronto
+ esta termina, y técnicas como la predicción de valor o la reutilización
+ de valores.
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Pos-escritura
+\series default
+ (
+\series bold
+WB
+\series default
+): Se difunden los resultados sobre un
+\series bold
+bus de resultados
+\series default
+, actualizando el ROB, del que otras instrucciones pueden tomar sus operandos.
+ Los almacenamientos no hacen nada.
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Confirmación
+\series default
+ (
+\series bold
+\emph on
+\lang english
+Commit
+\series default
+\emph default
+\lang spanish
+): Actualiza el estado de la máquina (registros y almacenamientos en memoria)
+ en orden de programa desde el ROB, comprobando también las excepciones.
+ La terminación en orden facilita deshacer las instrucciones mal especuladas
+ y tratar las excepciones.`
+\end_layout
+
+\begin_layout Section
+Algoritmo de Tomasulo
+\end_layout
+
+\end_body
+\end_document