Computadores supersegmentados

13
Arturo Marzo de la Fuente Arquitecturas Basadas en Microprocesadores 3º I.T.I. Gestión Curso 200708 COMPUTADORES/PROCESADORES SUPERSEGMENTADOS

Transcript of Computadores supersegmentados

Page 1: Computadores supersegmentados

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Arturo Marzo de la Fuente 

Arquitecturas Basadas en Microprocesadores 

3º I.T.I. Gestión 

Curso 2007­08 

 

 

COMPUTADORES/PROCESADORES SUPERSEGMENTADOS

Page 2: Computadores supersegmentados

2  

1. Introducción 

En  su descomposición  funcional más  sencilla,  un microprocesador  se  compone de  una Unidad de Control y una Unidad de Proceso. En esta última convivían inicialmente la ALU y el  banco  de  registros,  pero  enseguida  se  añadieron  nuevas  unidades  funcionales  en  la búsqueda de un aumento del rendimiento. La mayoría de estas adiciones ayudan a obtener alguna  forma  de  paralelismo  a  nivel  de  instrucción.  Esto  consiste  en  romper  con  la ejecución  secuencial  de  instrucciones  (una  detrás  de  otra  en  el  tiempo)  para  obtener  a ejecución de varias simultáneamente. 

La  supersegmentación  de  los  procesadores  es  una  técnica  de  implementación  que busca el mencionado paralelismo a nivel de instrucción, pero antes de explicarlo, conviene explicar  otras  técnicas  que  también  sirven  para  lograr  el  paralelismo  y  que  suelen combinarse  todas  juntas  en  el  diseño  de  los  actuales  microprocesadores  como  son  la segmentación, la superescalaridad y la combinación de ambas. 

Page 3: Computadores supersegmentados

3  

2. Segmentación 

La segmentación (pipelining) es una técnica de implementación de microprocesadores por la cual se solapa la ejecución de múltiples instrucciones. Hoy día, la segmentación es la técnica de implementación clave utilizada para hacer CPU rápidas. 

La  segmentación  es  como  una  línea  de  ensamblaje:  cada  etapa  de  la  segmentación completa una parte de la instrucción. Como en una línea de ensamblaje de automóviles, el trabajo que va a realizar una instrucción se descompone en partes más pequeñas, cada una de  las  cuales  necesita  una  fracción  del  tiempo  necesario  para  completar  la  instrucción completa. Cada uno de estos pasos se define como etapa de la segmentación o segmento. Las etapas están conectadas, cada una a la siguiente, para formar una especie de cauce ‐ las instrucciones entran por un extremo, son procesadas a través de las etapas y salen por el otro extremo. 

 

2.1. Procesador segmentado 

Un  procesador  segmentado  es  aquel  que  divide  el  proceso  de  ejecución  de  una instrucción  en N etapas de  similar duración  con  el  objetivo de procesar N  instrucciones simultáneamente, encontrándose cada una en una etapa diferente de su ejecución. 

Conseguimos  así,  que  un  procesador  compuesto  por  N  unidades  funcionales  que trabajan a la vez en circunstancias ideales, incremente su rendimiento en un factor de N. 

Las  instrucciones  fluyen  secuencialmente  por  las  distintas  unidades  funcionales  del procesador de igual forma que el agua fluye por el cauce de una tubería, de ahí que en la jerga de la calle se les conozca como procesadores pipeline que significa tubería en inglés. 

El  modelo  de  segmentación  más  repetido  en  la  primera  mitad  de  los  años  90  es  el compuesto  por  las  siguientes  cinco  etapas:  búsqueda  de  la  instrucción,    decodificación, lectura de operandos, ejecución de la operación asociada, escritura de su resultado. 

El DLX  es  un  microprocesador  diseñado  por  John  L.  Hennessy  y  David  A.  Patterson  presenta una ejecución en cinco etapas, similares a las del microprocesador MIPS, también diseñado por John L. Hennessy en  la Universidad de Stanford, buscando la  filosofía de  la segmentación. Estas cinco etapas son: 

IF: búsqueda 

ID: decodificación 

EX: ejecución de unidad aritmético lógica 

MEM: memoria 

WB: escritura 

De  esta  manera,  mientras  el  procesador  escribe  una  instrucción,  ejecuta simultáneamente la siguiente, busca los operandos de una tercera, decodifica una cuarta y busca en memoria una quinta instrucción, lográndose en un caso ideal una aceleración de cinco para el rendimiento del chip. 

Page 4: Computadores supersegmentados

4  

Podemos observar en el siguiente grafico la ejecución simultánea de cinco instrucciones en distintas etapas en un procesador DLX: 

Figura 1. 

Todos  los  microprocesadores  actuales  se  encuentran  segmentados,  habiendo aumentado  el  número  de  etapas  con  el  paso  de  las  generaciones.  Así,  lo  normal  en  la séptima  generación  es  encontrarnos  con  cauces  de  ejecución  entera  de  20  etapas  de segmentación en el caso del Pentium IV (2003) de Intel o 31 etapas en  los procesadores Prescott (2004) también de Intel.  

Junto al cauce (pipeline) de ejecución entero se sitúan otros cauces por donde circulan otros tipos de instrucciones, principalmente multimedia y de punto flotante. No obstante, hasta que no concluya la fase de decodificación de instrucción (ID) no se puede realizar la ramificación,  las  primeras  etapas  de  segmentación  son  siempre  comunes  a  todos  los cauces del procesador, lo cual se puede observar con facilidad en la Figura 2 mostrada más adelante. 

La  gran  ventaja  de  la  aplicación  de  la  segmentación  en  el  diseño  de  los microprocesadores es que el  aumento del  rendimiento  se  consigue con  solo  reorganizar las unidades funcionales existentes, por lo que no supone un incremento de coste para la Unidad de Proceso. El diseño de la Unidad de Control sí se complica un poco a medida que  aumenta  el  número  de  etapas  y  el  grado  de  concurrencia  en  la  ejecución  de  las instrucciones pero es despreciable si  lo comparamos con el espectacular  incremento del rendimiento. 

 

 

Page 5: Computadores supersegmentados

5  

3. Superescalaridad 

La  superescalaridad  consiste  en  la  replicación  de  la  circuitería  de  las  unidades funcionales  de  un  microprocesador,  creando  por  lo  tanto  varios  cauces  (pipelines)  de manera que se puedan ejecutar varias instrucciones a la vez. 

 

3.1. Procesador superescalar 

Un procesador superescalar de factor N es aquel que replica N veces la circuitería de alguna  de  sus  unidades  funcionales  con  el  fin  de  poder  ejecutar  N  instrucciones  en  sus respectivas etapas de computación. 

Con la mejora de la capacidad de integración de circuitos que permiten concentrar más y más   componentes dentro de un chip,  los diseñadores de microprocesadores también ha aumentado  el  factor  de  Superescalaridad,  logrando,  al  igual  que  en  la  segmentación, mejoras del rendimiento de un factor de N. 

Sin  embargo,  el  coste  de  incrementar  el  rendimiento mediante  la  Superescalaridad  es superior al de  la segmentación. El hecho de que el coste de  integración por transistor se reduzca  con  la  evolución  de  las  generaciones  de  microprocesadores  indica  que  es  un método de incremento del rendimiento altamente rentable para los diseñadores. 

En el siguiente grafico se muestra la ejecución en paralelo de 5 instrucciones cada una en su cauce o pipeline, lo que representa una superescalaridad de factor 5. 

 

 

 

 

 

 

 

 

 

Figura 2. 

 

 

 

Page 6: Computadores supersegmentados

6  

4. Combinación de segmentación y superescalaridad 

Como puede observarse en la Figura 3, las filosofías de segmentación y superescalaridad son perfectamente compatibles. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Figura 3 

Sin embargo, existen ciertos conflictos a la hora de poner en práctica simultáneamente ambas ideas, y es que cada técnica exige unos requisitos diferentes: 

‐ La segmentación requiere una elevada frecuencia, de forma que solo un periodo de reloj muy corto permitirá descomponer cada  instrucción en un número elevado de etapas. 

‐ La  superescalaridad,  por  el  contrario,  necesita  un  ingente  número  de transistores para poder ser implementada, y esto solo se consigue con mejoras en la tecnología de integración. 

Page 7: Computadores supersegmentados

7  

Por lo tanto, la superescalaridad estorba a la segmentación porque ésta provoca un desdoble de la circuitería existente, que perjudica la frecuencia de reloj, lo que dificulta el obtener un número elevado de etapas de segmentación. 

De  igual  forma  la  segmentación  estorba  a  la    superescalaridad  ya  que  cuando  las etapas son tan minúsculas, es difícil incrementar la complejidad replicando la circuitería. 

Por  tanto,  los  diseños  fuertemente  segmentados  no  utilizan  un  factor  de superescalaridad alto, y  los que apuestan por  la  superescalaridad reducen el número de etapas  de  segmentación.  Por  ejemplo,  el Pentium  IV  de  Intel  llega  a  las  20  etapas  de segmentación pero  solo  tiene un  factor  tres de  superescalaridad, mientras que el K7  de AMD consigue un  factor cinco de superescalaridad a costa de reducir a 14 el número de etapas del cauce de ejecución entero. Al final, las dos estrategias alcanzan un paralelismo de  entorno  a  las  60‐70  instrucciones  simultáneas  compatibilizando  los  dos  conceptos, pero en cada caso se da prioridad a una de las dos filosofías. 

 

 

Page 8: Computadores supersegmentados

8  

5. Supersegmentación 

La  palabra  supersegmentación  nos  lleva  a  la  tentación  de  aplicar  la  ecuación superescalar + segmentado = supersegmentado, cuando en realidad la ecuación correcta es segmentado + segmentado = supersegmentado. 

La  supersegmentación  consiste  en  segmentar  algunas  de  las  etapas  (en  concreto  las más lentas) que mencionamos para los procesadores segmentados, en dos o más etapas de manera que  se permite que haya dos  instrucciones a  la  vez dentro de  la misma etapa y unidad funcional sin tener que replicar ésta (superescalaridad). De esta forma, dividiendo por ejemplo cada etapa en 2, el ciclo de reloj de periodo T se verá reducido a la mitad, T/2, de esta forma al máximo de capacidad el cauce o pipeline produce un resultado cada T/2 segundos. 

 

5.1. Procesadores supersegmentados 

Un  procesador  supersegmentado  es  aquel  que  aplica  dos  veces  el  concepto  de segmentación,  la  primera  al  nivel  de  diseño  global,  y  la  segunda  al  nivel  interno  de  sus unidades funcionales. 

Por ejemplo, una descomposición en cinco etapas de segmentación como la del Pentium, compuesta  por  las  etapas  de  búsqueda,  decodificación,  lectura,  ejecución  y  escritura, permite aplicar otra segmentación a cada una de las unidades funcionales que intervienen en cada ciclo como son: la caché de instrucciones, el decodificador de instrucción, la caché de datos, la ALU o el banco de registros. 

En  el  caso  de  la  caché  de  instrucciones,  que  es  referenciada  en  la  primera  etapa,  esta puede ser una caché segmentada en dos etapas, que permite simultanear la búsqueda de una instrucción y la localización de su celda de caché asociada, con la lectura del código de la  anterior  instrucción y  su volcado  al bus de datos del procesador. Así  se obtienen dos niveles de segmentación como se muestra en el aparatado d) de  la Figura 4, en la que se comparan las cuatro técnicas de paralelismo expuestas: 

Page 9: Computadores supersegmentados

9  

Figura 4 

Esta segmentación ha provocado un desdoble de la señal de reloj, que discurre por el eje temporal de abscisas al doble de frecuencia que en los otros tres diagramas mostrados. En general,  la  supersegmentación  lleva  asociada  la  subdivisión  del  ciclo de  reloj  base  en ciclos supersegmentados (como se aprecia en la Figura 5), tantos ciclos como etapas se hayan establecido para el  segundo nivel de  segmentación,  lo que desemboca en diseños que trabajan a muy alta frecuencia. 

 

 

 

 

 

 

Figura 5 

Page 10: Computadores supersegmentados

10  

Una  buena  implementación  supersegmentada  siempre  incluye  la  ejecución  de instrucciones  fuera  de  orden.  La  ejecución  de  instrucciones  fuera  de  orden  es  un paradigma utilizado  en  la mayoría de  los microprocesadores  de  alto  rendimiento por  el cual, si una vez capturada una instrucción los operandos no están disponibles, para evitar esperas improductivas del procesador hasta que estén disponibles la instrucción se pone en  una  cola  a  la  espera,  de  forma  que  otras  instrucciones  puedan  abandonar  la  cola  y ejecutarse  si  sus  operandos  están  disponibles.  La  ejecución  fuera  de  orden minimiza  el efecto negativo que producen las esperas por dependencias de datos sobre el rendimiento del  procesador  pero  para  desarrollarla  hace  falta  también  implementar  la superescalaridad en los procesadores. 

 

5.2. Ejemplos de procesadores supersegmentados 

5.2.1. R4000 y R4400 

La  empresa  MIPS  Technologies,  fundada  por  investigadores  de  la  Universidad  de Stanford,  incluido  John L. Hennessy,  lanzó en 1991 el primer microprocesador   de 64 bit, el R4000. Integraba la FPU dentro para crear un microprocesador de un solo chip y operaba  a  unas  frecuencias  radicalmente  altas  para  la  época  (cuando  fue  introducido, trabajaba a 100 MHz). 

Sin embargo para lograr aumentar la frecuencia del reloj hubo que reducir las 3 cachés a 8Kb  (con respecto a  los 64 Kb que presentaban  los anteriores procesadores R3500) y requerían 3 ciclos para ser accedidas. 

Estas grandes velocidades de operación  fueron posibilitadas usando  la  técnica  llamada deep  pipelining  (segmentación  profunda)  y  denominada  más  tarde  como supersegmentación o superpipelining. 

Presentaba  una  supersegmentación  de  8  etapas  (en  vez  de  las  5  del  DLX),  como  los accesos a la caché son críticos, las etapas que acceden a memoria se han subdividido: 

   IF, IS     RF, EX         DF, DS, TC     WB 

Acceso a caché de instrucciones     Acceso a caché de datos 

Con  el  desarrollo del R4000  se desarrolló un número de  versiones mejoradas  como  el R4400 de 1993, que incluía cachés de 16 Kb, un operador de 64 bit ampliamente depurado y soporte para una caché externa de nivel 2.  

A continuación podemos observar un esquema de  la supersegmentación de 8 etapas que presentaban estos procesadores MIPS: 

 

 

 

Page 11: Computadores supersegmentados

11  

 

 

 

 

 

 

 

Figura 6 

 

5.2.2. Pentium PRO 

El  procesador  Pentium  PRO  desarrollado  en  1995  y  perteneciente  a  la  sexta generación  de  procesadores  estaba  compuesto  por  5.500.000  transistores, incrementó  su  velocidad  usando  una  supersegmentación  de  14  etapas  y trabajaba a una frecuencia de 200 MHz, con un Front Side Bus (FSB) de 66 MHz. 

Potenció el paralelismo mediante la ejecución de instrucciones fuera de orden y  la  incorporación de más unidades  de  ejecución que  trabajan  simultáneamente. Incluyó una caché interna de segundo nivel y la caché de nivel 1 presenta 2 cauces de instrucciones y 4 de datos. En cuanto a su rendimiento se ha estimado en 220 SPECInt92. 

 

5.2.3. ALPHA 21264 

Un clásico ejemplo de diseño supersegmentado es el procesador Alpha 21264 de Digital, procesador RISC de principios de la década de los 90 y hermano menor del Alpha 21364 de COMPAQ que fue el encargado de decodificar el genoma humano en la empresa Celera Genomic. 

El  segundo  nivel  de  segmentación  de  esta  arquitectura  incluye  una descomposición en nueve etapas para el caso de  la caché,  lo que dio  lugar  a una  frecuencia  de  reloj  de  600 MHZ  a  finales  de  1997,  cuando  en  esa  época  los Pentium  II  y  demás  modelos  para  PC  operaban  a  menos  de  la  mitad  de  esa frecuencia. 

 

 

Page 12: Computadores supersegmentados

12  

5.2.4. UltraSPARC 

El  procesador  UltraSPARC  II  lanzado  a  mediados  de  1996  por  Sun Microelectronics, pertenece a la segunda generación de la familia UltraSPARC y fue pensado para mantener estaciones de trabajo. 

Presenta  una  arquitectura  de  64  bits  supersegmentada  y  un  factor  4  de superescalaridad. Está compuesto por 5.400.000 transistores, opera a un rango de frecuencias de entre 250 y 480 MHz y dispone de dos cachés de nivel 1 de 16 Kb y una  caché  de  nivel  2  de  entre  256  KB  y  16  Mb.  Finalmente,  se  le  estima  un desempeño de: 

• 350‐420 SPEC Int92.  

• 550‐660 SPEC Fp92. 

 

5.2.5. Pentium IV 

Desarrollado en el 2000, está compuesto de 42.000.000 de transistores, funciona a  una  frecuencia  de  2’4  GHz,  con  un  FSB  de  400  MHz.  Presenta  una supersegmentación  de  20  etapas  y  ofrece  144  nuevas  instrucciones  para procesar video y audio, optimizando el rendimiento para las tecnologías modernas de Internet y visualización de gráficos en 3 dimensiones. A continuación un gráfico que muestra  la  ejecución  de  4  instrucciones  en  las  20  etapas  supersegmentadas    de  un Pentium IV. 

Figura 7 

Su rendimiento se estima en: 

• 410 SPEC int2000. 

• 14,6 SPEC int95. 

 

 

 

 

 

Page 13: Computadores supersegmentados

13  

6. Bibliografía 

 

‐ Recursos electrónicos: 

http://es.wikipedia.org/wiki/Segmentaci%C3%B3n_(inform%C3%A1tica) 

http://es.wikipedia.org/wiki/DLX 

http://es.wikipedia.org/wiki/Arquitectura_MIPS 

http://vagos.es/showthread.php?t=63741 

http://www.angelfire.com/ca6/angie/segmentados.htm 

http://aulavirtual.uji.es/file.php/2648/Teoria/Primer_cuatrimestre/Tema2_superescalares/2_1_introduccion_procesadores_superescalares.pdf 

http://www.atc.us.es/asignaturas/asp‐itis/descargas/Transparencias_ASP_Tema_5_Introduccion_al_Paralelismo.pdf 

http://osito.disca.upv.es/aic/es/teoria/t9.pdf 

http://dac.escet.urjc.es/docencia/Micros/Microprocesadores2.pdf 

http://www.dacya.ucm.es/hidalgo/arquitectura/pipeline.pdf 

http://www.cag.lcs.mit.edu/raw/documents/R4400_Uman_book_Ed2.pdf 

http://www.macuarium.com/cms/index.php?option=com_content&task=view&id=218&Itemid=93 

http://www.dcc.uchile.cl/~rbaeza/cursos/proyarq/maraya/node9.html 

http://research.sun.com/features/tenyears/volcd/papers/SPARCv9.pdf 

 

‐ Publicaciones: 

Arquitectura  del  PC  –  Volumen  1.  Autor:  Manuel  Ujaldón  Martínez.  Editorial: Megamultimedia S.L. 

Arquitectura  de  computadores  –  Un  enfoque  cuantitativo.  Autores:  John  L. Hennessy, David A. Patterson. Editorial: McGraw Hill. 

Tema 4 de apuntes de Arquitectura de los computadores.