fbpx
Wikipedia

Superescalar

Superescalar es el término utilizado para designar un tipo de microarquitectura de procesador capaz de ejecutar más de una instrucción por ciclo de reloj. El término se emplea por oposición a la microarquitectura escalar que sólo es capaz de ejecutar una instrucción por ciclo de reloj. En la clasificación de Flynn, un procesador (mononúcleo) escalar es un procesador de tipo SISD, en cambio un procesador (multinúcleo) superescalar es un procesador de tipo MIMD.

Introducción

La microarquitectura superescalar utiliza el paralelismo de instrucciones además del paralelismo de flujo, este último gracias a la estructura en pipeline. La estructura típica de un procesador superescalar consta de un pipeline con las siguientes etapas:

  • Lectura (fetch).
  • Decodificación (decode).
  • Lanzamiento (dispatch).
  • Ejecución (execute).
  • Escritura (writeback).
  • Finalización (retirement).

En un procesador superescalar, el procesador maneja más de una instrucción en cada etapa. El número máximo de instrucciones en una etapa concreta del pipeline se denomina grado, así un procesador superescalar de grado 4 en lectura (fetch) es capaz de leer como máximo cuatro instrucciones por ciclo. El grado de la etapa de ejecución depende del número y del tipo de las unidades funcionales.

Un procesador superescalar suele tener unidades funcionales independientes de los tipos siguientes :

Un procesador superescalar es capaz de ejecutar más de una instrucción simultáneamente únicamente si las instrucciones no presentan algún tipo de dependencia (hazard). Los tipos de dependencia entre instrucciones son :

  • Dependencia estructural, esta ocurre cuando dos instrucciones requieren el mismo tipo unidad funcional y su número no es suficiente.
  • Dependencia de datos, esta ocurre cuando una instrucción necesita del resultado de otra instrucción para ejecutarse, por ejemplo R1<=R2+R3 y R4<=R1+5.
  • Dependencia de escritura o falsa dependencia o nombre, esta ocurre cuando dos instrucciones necesitan escribir en la misma memoria, por ejemplo R1<=R2+R3 y R1<=R1+5.
  • Dependencia de control, esta ocurre cuando una instrucción depende de una estructura de control y no se puede determinar el flujo correcto hasta la evaluación de la estructura de control, por ejemplo, if R1<R2 then R3<=R4+R5 else R6<=R7+5.

La detección y resolución de las dependencias entre instrucciones puede ser estática (durante la compilación) o dinámica, es decir, a medida que se ejecuta un programa, generalmente durante la etapas de codificación y lanzamiento de las instrucciones.

La detección y resolución dinámica de las dependencias entre instrucciones suele realizarse mediante alguna variante del algoritmo de Tomasulo que permite la ejecución de instrucciones en un orden distinto al del programa también llamada ejecución en desorden. La eficacia de un procesador superescalar viene limitada por un lado por la dificultad en suministrar al procesador suficientes instrucciones que puedan ser ejecutadas en paralelo y por otro lado por las prestaciones de la jerarquía de memorias.

Si las instrucciones de salto son un problema para los procesadores con pipeline en general, en el caso de los procesadores superescalares, el problema se multiplica ya que un parón en el pipeline tiene consecuencias en un número mayor de instrucciones. Por esta razón, los fabricantes de procesadores recurren a técnicas de ejecución especulativa y diseñan algoritmos de predicción de saltos cada vez más sofisticados así como sistemas de almacenamiento de instrucciones por trazas (trace cachés).

Las arquitecturas superescalares adolecen de una estructura compleja y de un mal aprovechamiento de sus recursos debido en parte a la dificultad en encontrar suficientes instrucciones paralelizables. Una forma de obtener un mayor número de instrucciones paralelizables es aumentar la ventana de instrucciones, es decir el conjunto de instrucciones que la unidad de lanzamiento considera como candidatas a ser lanzadas en un momento dado.

Desafortunadamente la complejidad del procesador superescalar aumenta desproporcionadamente con respecto al tamaño de dicha ventana lo que se traduce por un ralentizamiento general del circuito. Otra forma de obtener más instrucciones paralelizables es manipulando instrucciones de más de un programa a la vez, lo que se conoce bajo el nombre de multitarea simultánea o multihilo simultáneo.

Mientras las primeras CPUs superescalares disponían de dos ALUs y una sola FPU, un procesador moderno como el PowerPC 970 incluye cuatro ALUs y dos FPUs, además de dos unidades SIMD. Si el despachador no es eficiente haciendo trabajar lo máximo posible a estas unidades, el rendimiento global del procesador se verá mermado.

Historia

La CDC 6600 de Seymour Cray, construida en 1965, es la primera arquitectura superescalar, siendo llevado el concepto a las microcomputadoras en las CPUs RISC. Esta posibilidad venía dada por la sencillez de los núcleos RISC, permitiendo meter más unidades de ejecución en un mismo chip. Esta fue una de las razones de la rapidez de los sistemas RISC frente a los más antiguos CISC durante las décadas de los 80 y los 90, pero a medida que los procesos de fabricación mejoraron y se pudieron meter más y más transistores en el mismo chip, hasta diseños complejos como el IA-32 pudieron ser superescalares.

La inmensa mayoría de las CPUs desarrolladas desde 1998 son superescalares. Llegados a un punto en que la mejora sustancial de la unidad de control y despachamiento parece imposible, ya no parece que los diseños superescalares puedan dar más de sí. Una de las posibles soluciones es trasladar la lógica de despachamiento desde el chip hasta el compilador, que puede invertir mucho más tiempo en tomar las mejores decisiones posibles, ya que no tiene que operar en tiempo real como tenía que hacer el hardware de despachamiento. Este es el principio básico de los procesadores VLIW (Very Long Instruction Word), donde el paralelismo es explicitado por el formato de instrucción, también conocidos como superescalares estáticos.

Véase también

Enlaces externos

  •   Datos: Q1045706

superescalar, término, utilizado, para, designar, tipo, microarquitectura, procesador, capaz, ejecutar, más, instrucción, ciclo, reloj, término, emplea, oposición, microarquitectura, escalar, sólo, capaz, ejecutar, instrucción, ciclo, reloj, clasificación, fly. Superescalar es el termino utilizado para designar un tipo de microarquitectura de procesador capaz de ejecutar mas de una instruccion por ciclo de reloj El termino se emplea por oposicion a la microarquitectura escalar que solo es capaz de ejecutar una instruccion por ciclo de reloj En la clasificacion de Flynn un procesador mononucleo escalar es un procesador de tipo SISD en cambio un procesador multinucleo superescalar es un procesador de tipo MIMD Indice 1 Introduccion 2 Historia 3 Vease tambien 4 Enlaces externosIntroduccion EditarLa microarquitectura superescalar utiliza el paralelismo de instrucciones ademas del paralelismo de flujo este ultimo gracias a la estructura en pipeline La estructura tipica de un procesador superescalar consta de un pipeline con las siguientes etapas Lectura fetch Decodificacion decode Lanzamiento dispatch Ejecucion execute Escritura writeback Finalizacion retirement En un procesador superescalar el procesador maneja mas de una instruccion en cada etapa El numero maximo de instrucciones en una etapa concreta del pipeline se denomina grado asi un procesador superescalar de grado 4 en lectura fetch es capaz de leer como maximo cuatro instrucciones por ciclo El grado de la etapa de ejecucion depende del numero y del tipo de las unidades funcionales Un procesador superescalar suele tener unidades funcionales independientes de los tipos siguientes Unidad aritmetico logica ALU Unidad de lectura escritura en memoria Load Store Unit Unidad de coma flotante Floating Point Unit Unidad de salto Branch unit Un procesador superescalar es capaz de ejecutar mas de una instruccion simultaneamente unicamente si las instrucciones no presentan algun tipo de dependencia hazard Los tipos de dependencia entre instrucciones son Dependencia estructural esta ocurre cuando dos instrucciones requieren el mismo tipo unidad funcional y su numero no es suficiente Dependencia de datos esta ocurre cuando una instruccion necesita del resultado de otra instruccion para ejecutarse por ejemplo R1 lt R2 R3 y R4 lt R1 5 Dependencia de escritura o falsa dependencia o nombre esta ocurre cuando dos instrucciones necesitan escribir en la misma memoria por ejemplo R1 lt R2 R3 y R1 lt R1 5 Dependencia de control esta ocurre cuando una instruccion depende de una estructura de control y no se puede determinar el flujo correcto hasta la evaluacion de la estructura de control por ejemplo if R1 lt R2 then R3 lt R4 R5 else R6 lt R7 5 La deteccion y resolucion de las dependencias entre instrucciones puede ser estatica durante la compilacion o dinamica es decir a medida que se ejecuta un programa generalmente durante la etapas de codificacion y lanzamiento de las instrucciones La deteccion y resolucion dinamica de las dependencias entre instrucciones suele realizarse mediante alguna variante del algoritmo de Tomasulo que permite la ejecucion de instrucciones en un orden distinto al del programa tambien llamada ejecucion en desorden La eficacia de un procesador superescalar viene limitada por un lado por la dificultad en suministrar al procesador suficientes instrucciones que puedan ser ejecutadas en paralelo y por otro lado por las prestaciones de la jerarquia de memorias Si las instrucciones de salto son un problema para los procesadores con pipeline en general en el caso de los procesadores superescalares el problema se multiplica ya que un paron en el pipeline tiene consecuencias en un numero mayor de instrucciones Por esta razon los fabricantes de procesadores recurren a tecnicas de ejecucion especulativa y disenan algoritmos de prediccion de saltos cada vez mas sofisticados asi como sistemas de almacenamiento de instrucciones por trazas trace caches Las arquitecturas superescalares adolecen de una estructura compleja y de un mal aprovechamiento de sus recursos debido en parte a la dificultad en encontrar suficientes instrucciones paralelizables Una forma de obtener un mayor numero de instrucciones paralelizables es aumentar la ventana de instrucciones es decir el conjunto de instrucciones que la unidad de lanzamiento considera como candidatas a ser lanzadas en un momento dado Desafortunadamente la complejidad del procesador superescalar aumenta desproporcionadamente con respecto al tamano de dicha ventana lo que se traduce por un ralentizamiento general del circuito Otra forma de obtener mas instrucciones paralelizables es manipulando instrucciones de mas de un programa a la vez lo que se conoce bajo el nombre de multitarea simultanea o multihilo simultaneo Mientras las primeras CPUs superescalares disponian de dos ALUs y una sola FPU un procesador moderno como el PowerPC 970 incluye cuatro ALUs y dos FPUs ademas de dos unidades SIMD Si el despachador no es eficiente haciendo trabajar lo maximo posible a estas unidades el rendimiento global del procesador se vera mermado Historia EditarLa CDC 6600 de Seymour Cray construida en 1965 es la primera arquitectura superescalar siendo llevado el concepto a las microcomputadoras en las CPUs RISC Esta posibilidad venia dada por la sencillez de los nucleos RISC permitiendo meter mas unidades de ejecucion en un mismo chip Esta fue una de las razones de la rapidez de los sistemas RISC frente a los mas antiguos CISC durante las decadas de los 80 y los 90 pero a medida que los procesos de fabricacion mejoraron y se pudieron meter mas y mas transistores en el mismo chip hasta disenos complejos como el IA 32 pudieron ser superescalares La inmensa mayoria de las CPUs desarrolladas desde 1998 son superescalares Llegados a un punto en que la mejora sustancial de la unidad de control y despachamiento parece imposible ya no parece que los disenos superescalares puedan dar mas de si Una de las posibles soluciones es trasladar la logica de despachamiento desde el chip hasta el compilador que puede invertir mucho mas tiempo en tomar las mejores decisiones posibles ya que no tiene que operar en tiempo real como tenia que hacer el hardware de despachamiento Este es el principio basico de los procesadores VLIW Very Long Instruction Word donde el paralelismo es explicitado por el formato de instruccion tambien conocidos como superescalares estaticos Vease tambien EditarSuper threading Ejecucion especulativa VLIWEnlaces externos Editarhttp www cs clemson edu mark eager html Datos Q1045706 Obtenido de https es wikipedia org w index php title Superescalar amp oldid 117850896, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos