diff options
| author | Juan Marín Noguera <juan.marinn@um.es> | 2020-12-13 12:04:48 +0100 |
|---|---|---|
| committer | Juan Marín Noguera <juan.marinn@um.es> | 2020-12-13 12:04:48 +0100 |
| commit | 8f0ea7300a3a2777744906578cfe3285ad16046d (patch) | |
| tree | 952e4bcd3ac3c345701d47d1bddce562fc3c7634 /aoc | |
| parent | 7a3ad775c6143ec873d28a5b4bbea92e943aad8b (diff) | |
AOC tema 2, inicio
Diffstat (limited to 'aoc')
| -rw-r--r-- | aoc/n.lyx | 14 | ||||
| -rw-r--r-- | aoc/n2.lyx | 325 |
2 files changed, 339 insertions, 0 deletions
@@ -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 |
