tema 5: conceptos avanzados de microprocesadores … · • las extensiones sse permiten manipular...
TRANSCRIPT
TEMA 5: Conceptos avanzados demicroprocesadores
Bibliografía
Computer Architecture. Nicholas Carter. Schaum's outlines 2001.
Computer Architecture Design. Henesse & Paterson. MorganEdition.
The computer engineering handbook. Chapter 6. CRC 2002.Kevin Skadron.
High perfomance computer architecture. Harold S. Stone. 3edition. Addison- Wesley 1993.
• INFORMACIÓN ADICIONALTransparencias, Documentación Electrónica, Enlaces atutoriales HTML en:
http://www.dte.us.es/tec_inf/itig/microele/INDEX.HTM
05/09/05 1
1. Representación de datos [6][7]
1.1Tamaño Byte, Palabra, Doble palabra, Cuádruple palabra y doble cuádruplepalabra.
1.2Tipos1.2.1.Entero
1.2.2.Flotante (IEEE 754)
05/09/05 2
05/09/05 3
2. Modelo de programación.
2.1Arquitecturas: basadas en PILA o en registros de propósito general)
2.2Tipos de instrucciones [6][7]
2.2.1.Instrucciones SISD (Single-Instrucción-Single-Data)
Sólo trabajan con un dato.
– De aritmética entera.
• Utilizan registros de propósito general (Ej.: EAX,EBX,ECX ... enIntel) y la ALU convencional.
• Clasificación (Ej.:Intel): De movimiento de datos, aritméticabinaria, aritmética decimal, instrucciones lógicas, dedesplazamiento y rotación, de manejo de bits y bytes, de control,de cadenas, de entrada/salida, de control de flags, etc.
Se destacan algunas nuevas instrucciones de transferencia quepermiten eliminar saltos condicionales:
CMOVEcc Conditional MoveCc= Z, NZ, AE, LE, NLE,... Equal, Not equal, abobe or equal, less or
equal, not less or equal,... Ej.:
05/09/05 4
– De aritmética flotante (FPU).
• Utilizan registros específicos de la unidad en coma flotante.
• Arquitectura orientada a PILA.• La carga de un dato en alguno de los registros (ya sea entero o
flotante simple) se convierte a flotante de doble precisiónextendida.
• Registro de Estado: Contiene códigos de condición parainstrucciones de salto, bits de estado y la cima de la pila (top).
• Registro de control: contiene bits de máscara (asociados a los bitsde estado) y establece la precisión y el redondeo.
• Registro de etiquetas: Contiene una etiqueta de 2 bits por cadaregistro de la FPU. Cada etiqueta informa si el registro asociadoestá vacío, contiene datos válidos, un cero o datos especiales(denormalizados, NAN, ...)
• Modos de direccionamiento de operandos: memoria o relativos apila (ST(0),ST(1)...)
• Instrucciones:a) De transferencia de datos
05/09/05 5
b) De carga de constantes:
c) De aritmética básica:
d) De comparación
e) Trigonométricas
05/09/05 6
f ) Logarítmicas y exponenciales
g) De control.
2.2.1 Instrucciones SIMD(Single-Instruction-Multiple-Data)
Una instrucción SIMD puede trabajar con vectores de datos(paquetes de datos).
2.2.1.1 MMX, SSE, SSE2 y SSE3
• La tecnología MMX trabaja con enteros empaquetados de 64 bits:• 8 enteros de tamaño byte (con signo o sin signo).• 4 enteros de tamaño palabra (con signo o sin signo).• 2 enteros de tamaño doblepalabra (con signo o sin signo).
05/09/05 7
• Dispone de 8 registros de 64 bits (compartidos con la FPU)denominados MMn.
• Las instrucciones MMX pueden utilizar como operandos cualquiera delos registros MM0..7, los registros de propósito general o la memoria.Los mnemónicos empiezan con la letra P.
• La ejecución de una instrucción MMX afecta a varios datossimultáneamente.
• La ejecución de las instrucciones aritméticas pueden generar resultadosfuera de rango. Las instrucciones MMX pueden tratar esos resultados detres formas distintas:
- Wraparound.- Signed saturation.
05/09/05 8
- Unsigned saturation.
• Juego de instrucciones:
• Las extensiones SSE permiten manipular vectores (y escalares) denúmeros flotantes en precisión simple (32bits) usando 8 registrosindependientes de 128 bits denominados XMM.
05/09/05 9
• Los operandos de las instrucciones SSE pueden ser obtenidos de lamemoria, de los registros de propósito general, de los registros MM o delos registros XMM.
• Instrucciones SSE: – De movimiento de datos.– Aritméticas: ADDPS (suma vectorial) ,ADDSS (suma escalar),
MULxS (x=P o S), DIVxS, SQRTxS, RCPxS, RSQRTxS,MAXxS, MINxS.
– Lógicas: ANDPS, ORPS, ANDNPS, XORPS.– Comparación: CMPxS, COMISS (activa señalizadores).– De desempaquetado y mezcla– De conversión: De entero a flotante (CVTPI2PS y CVTSI2SS) o
de flotante a entero (CVTPS2PI y CVTSS2SI).
• SSE incorpora nuevas instrucciones de manipulación de enterosalmacenados en los registros MMX:
• Las extensiones SSE2 permiten trabajar con datos en doble precisión ycon enteros en los registros XMM.
05/09/05 10
• Las extensiones SSE3 introducen nuevas instrucciones entre las quedestacamos las que permiten un procesado asimétrico y un movimientode datos horizontal en los registros XMM.
05/09/05 11
2.3 RISC versus CISC[3]
• Antes de los 80's el diseño estuvo orientado a microprocesadores con juego deinstrucciones complejas (CISC) (objetivo: aumentar prestacionesdisminuyendo distancia entre lenguaje formal e instrucciones).
• Cuando la tecnología de compilación mejoró, los investigadores se plantearonlas ventajas entre computadores con juego de instrucciones reducido (RISC)que ejecutan instrucciones a la misma velocidad y los CISC.
CISC RISCRequieren pocas instrucciones pararealizar una operación (ocupan pocamemoria).
Se favorecen arquitecturas que permitenejecutar instrucciones a mayor velocidad(requieren más registros para suejecución).Permite al compilador atomizaroperaciones y optimizar los tiempos deejecución.
• ¿Quién gana, CISC o RISC?. Existe gran controversia• Desde los 80's la mayor parte de las arquitecturas son RISC.
• Pero IA-32 es CISC (posición dominante en el mercado pornúmero de ventas).
• Existen convergencia entre arquitecturas RISC y CISC:– RISC incorpora algunas instrucciones más complejas sin que
exista pérdida en el tiempo de ejecución.
– CISC ha eliminado algunas instrucciones que no eran losuficientemente útiles como para justificar su implementación.
• Los RISC se caracterizan por arquitecturas Load-Store (sólo lasinstrucciones load y store pueden acceder a memoria).
CISC RISCADD.B (R0),(R1) LD R2,(R0)
LD R3,(R1)ADD R2,R3ST (R0),R2
05/09/05 12
3. Microarquitectura del procesador3.1Unidades• El procesador puede dividirse en una serie de unidades, que realizan
funciones específicas.
• Por simplicidad sólo consideraremos las siguientes unidades
05/09/05 13
3.2Pipelining [3][4]
• Los primeros computadores trabajaban deforma muy lineal, procediendoa la búsqueda de una instrucción a partir de que la anterior hayaejecutada.
• Con pipeling, el funcionamiento del procesador se asemeja al de unalínea de montaje:
Ejemplo línea de montaje de un automóvil, con cuatro secciones de montaje(motor, puertas, ruedas y pintura), cuyo tiempo de estancia (latencia) es de 5miny un operario en toda la línea.
5min 10min 15min 20min 25min 30min 35min 40minMotor Coche 1 Coche2
Puertas Coche1 Coche2
Ruedas Coche1 Coche2
Pintura Coche1 Coche2
Ejemplo de línea de montaje con un operario por sección.5min 10min 15min 20min 25min 30min 35min 40min
Motor Coche 1 Coche2 Coche3 Coche4 Coche5 Coche6 Coche7 Coche8
Puertas Coche1 Coche2 Coche3 Coche4 Coche5 Coche6 Coche7
Ruedas Coche1 Coche2 Coche3 Coche4 Coche5 Coche6
Pintura Coche1 Coche2 Coche3 Coche4 Coche5
• Para los microprocesadores, el concepto es el mismo.
Ciclo (PIPELINED)1 2 3 4 5 6 7
(IF) Inst1 Inst2 Inst3 Inst4 Inst5 Inst6 Inst7
(ID) Inst1 Inst2 Inst3 Inst4 Inst5 Inst6
(RR) Inst1 Inst2 Inst3 Inst4 Inst5
(EX) Inst1 Inst2 Inst3 Inst4
(WB) Inst1 Inst2 Inst3
Ciclo (UNPIPELINED)1 2 3 4 5 6 7
(IF) Inst1 Inst2
(ID) Inst1 Inst2
(RR) Inst1
(EX) Inst1
(WB) Inst1
05/09/05 14
• Pipelining es la técnica por la que se solapa la ejecución de variasinstrucciones con el objeto de reducir el tiempo de ejecución de unconjunto de instrucciones.
• Parámetros: – Latencia (Latency): tiempo que emplea una instrucción en
ejecutarse– Eficiencia (Throughput): Es la razón que muestra el número de
operaciones que se pueden ejecutar por unidad de tiempo o ciclode reloj. (operaciones/seg o operaciones/ciclo)
EficienciaUnpipelined = 1/ LatenciaEficienciaPipelined > 1/ Latencia
• Para implementar pipelining, los diseñadores dividen el procesador ensecciones, colocando latches entre ellas. Al inicio de cada ciclo, cadalatch captura las salidas de la etapa anterior y mantiene la copia establedurante el resto del ciclo para la siguiente etapa.
05/09/05 15
• Tiempo de ciclo (cycle time): Número de ciclos de reloj transcurridospara que se elimine una instrucción ejecutada del pipeline.
Cycle time pipelined = cycle time unpipelined numero de etapas
latencia de latch
Ejemplo: Supóngase un procesador sin pipeline que tenga un tiempode ciclo de 25ns y una misma versión del procesador con un pipelinede 5 etapas y una latencia de latch de 1ns.
Unpipelined PipelinedTiempo de ciclo 25ns 25ns/5 + 1ns = 6nsLatencia 25ns 25ns + 4ns = 29nsEficiencia 1/25 ns = 40 M op/seg. 1/6ns = 166 M op/seg
05/09/05 16
• Muy a menudo, la trayectoria de datos del pipeline (datapatah) no sepuede dividir en etapas que tengan idénticos tiempos de latencia. Entales casos, el tiempo de ciclo lo determina el tiempo de latencia de laetapa más lenta.
Ejemplo: Supóngase un procesador sin pipeline que tenga un tiempode ciclo de 25ns y una misma versión del procesador con un pipelinede 5 etapas con latencias 5,7,3,6 y 4ns y una latencia de latch de 1ns.
Unpipelined PipelinedTiempo de ciclo 25ns 7ns + 1ns = 8nsLatencia 25ns (5+7+3+6+4)ns + 4ns = 29nsEficiencia 1/25 ns = 40 M op/seg. 1/8ns = 125 M op/seg
05/09/05 17
• Existen múltiples factores que impiden que el pipeline ejecuteinstrucciones a su máxima velocidad:
– Dependencia entre las instrucciones– Saltos– Tiempo necesario para acceder a la memoria– Impedimentos estructurales
• Las dependencias (Instruction hazards) tienen lugar cuando lasinstrucciones leen o escriben los registros que son utilizados por otrasinstrucciones. Se pueden dividir en cuatro categorías:
– RAR (Read after Read) Ocurre cuando dos instrucciones leen elmismo registro.
Ej: MOVE r1,r2 (Formato: inst op_destino,op_fuente) CMP r3,r2
Este tipo de dependencia no causa problemas, por no cambiar elcontenido del registro. Dos instrucciones con dependencia RAR sepueden ejecutar en ciclos distintos (o incluso en el mismo ciclo de reloj)
– RAW (Read after Write) Ocurre cuando una instrucción procedea leer un registro cuyo contenido ha sido modificado por algunainstrucción previa. Se conoce como dependencia verdadera.
Ej: MOVE r1,r2 CMP r1,r3
En RAW se producen “burbujas” en el pipeline, motivadas por la esperaque una instrucción debe realizar para leer el dato que otra modifica.
ciclo1 2 3 4 5 6 7 8
(IF) MOVE r1,r3 CMP r1,r3
(ID) MOVE r1,r3 CMP r1,r3
(RR) MOVE r1,r CMP r1,r3 CMP r1,r3 CMP r1,r3
(EX) MOVE r1,r3 Burbuja Burbuja CMP r1,r3
(WB) MOVE r1,r3 Burbuja Burbuja CMP r1,r3
El correcto funcionamiento de la secuencia requiere que, hasta que elregistro r1 no haya sido modificado en la etapa WB por la instrucciónMOVE, la siguiente instrucción, CMP, deberá esperar en la etapa RR.Esto se consigue con la técnica del Scoreboarding.
05/09/05 18
– Una instrucción en la etapa RR procede a leer un registro si el bit depresencia marca que ésta está ocupado (la lectura borra el bit depresencia). En caso contrario, la instrucción se retiene en la etapa RR yse introducen burbujas en las siguientes. Una instrucción en la etapaWB, cuando escribe en un registro, lo marca como ocupado,permitiendo que las instrucciones en la etapa RR puedan leer sucontenido.
– WAR (Write after read) Ocurre cuando una instrucción procede aescribir un registro después de que la instrucción previa lo hayaleído. Si el procesador ejecuta las instrucciones en el orden en queellas aparecen en el programa, esta dependencia no plantea ningúnproblema.
Ej: MOVE r1,r2 MOVE r2,r3
– WAW (Write after write) Ej: ADD r1,r2
MOVE r1,r3Al igual que WAR, no plantea ningún problema en procesadores queejecutan instrucciones en el orden en la que éstas aparecen.
A WAW y WAR se denominan dependencias de nombre. Si elprocesador tuviese un número infinito de registros y cada instrucciónusara uno de ellos, estas dependencias no ocurrirían.
• Los impedimentos estructurales ocurren cuando el hardware es incapazde ejecutar todas las instrucciones del pipeline simultáneamente. P. ej: siel conjunto de registros no tienen el número de puertos necesarios comopara que una instrucción en la etapa WB del pipeline pueda escribir en
05/09/05 19
un registro a la vez que otra, en la etapa RR, pueda leer del conjunto deregistros.
• Los saltos provocan retrasos en procesadores con pipeline, porque no sepueden determinar cuál es la siguiente instrucción a buscar hasta que elsalto se haya ejecutado.
ciclo1 2 3 4 5 6 7 8
(IF) Inst. Salto Burbuja Burbuja Burbuja Inst. N Inst. N+1 Inst. N+2 Inst. N+3
(ID) Inst. Salto Burbuja Burbuja Burbuja Insta. N Inst. N+1 Inst. N+2
(RR) Inst. Salto Burbuja Burbuja Burbuja Inst. N Inst. N+1
(EX) Inst. Salto Burbuja Burbuja Burbuja Inst. N
(WB) Inst. Salto Burbuja Burbuja Burbuja
Los retrasos provocados por los saltos se denominan tambiénimpedimentos de control y, para evitarlos, se necesitan técnicas depredicción en las primeras etapas del pipeline.
3.2.1 Branch prediction [1],[2]
• Predicción estática– Basada en estadísticas obtenidas mediante SPEC (Standard
Perfomance Evaluation Corporation -http://www.spec.org/-). Lossaltos siempre se evalúan como Tomados (Taken)
– Poco eficiente.
• Predicción dinámica1. 1-bit branch perdiction
• Utiliza una tabla de 2n x 1 bits (PHT pattern history table )indexada con los n bits menos significativos de la direccióndel PC.
05/09/05 20
• Cada entrada de la PHT registra la historia reciente de unsalto (si este fue tomado, T, o no, NT)
• El pipeline busca la siguiente instrucción de acuerdo con elbit almacenado en la entrada de la PHT.
• En el caso de que al evaluar la instrucción de salto en launidad EX su resultado hubiera sido distinto al predicho, seactualiza el valor de la PHT.
• Esta técnica no predice ni el inicio ni el fin de un bucle.
2. 2-bit branch perdiction (Bimodal branch prediction)
• Utiliza una PHT con contadores de 2 bits con saturacióncon cuatro estados: strongly taken, weakly taken, stronglynot taken, weaky not taken.
• Cada contador se actualiza en la evaluación del salto.• Mejora el número de predicciones en comparación con el
modelo de 1bit.
05/09/05 21
• Esta técnica no predice el fin de un bucle.• Los contadores se inicializan a 3 (según autores y estudios
de eficacia).• En SPEC'89 benchmarks, este predictor satura en 93.5% de
aciertos.
3. Local branch prediction.
• Se puede mejorar la predicción para aquellos bucles con unpatrón de comportamiento concreto.
• Esta técnica utiliza dos niveles: tabla de histórico de saltos(BHT) y tabla de contadores saturantes de 2 bits (PHT).
• La PHT se direcciona con los bits menos significativos dela dirección del salto.
• Cada entrada de la PHT registra el comportamiento delsalto las n últimas veces que fue evaluado.
• Cada patrón de la tabla indexa un contador de la BHT(bimodal) que se actualiza en cada nueva evaluación ypermite realizar una predicción.
• SPEC'89 benchmarks arrojan un porcentaje de prediccióndel 97.1% que varía con el tamaño de la tabla BHT.
05/09/05 22
• La implementación hardware es compleja y el tiempo depredicción puede ser lento por tener dos niveles debúsqueda (aunque se puede reducir “cacheado” la entradadel PHT en un campo adicional de la BHT).
4. Global Branch Prediction
• Esta técnica sólo utiliza un único registro dedesplazamiento, GBHR (global branch history register) paraalmacenar el histórico de todos los saltos (basándose en lacorrelación de los mismos).
• Presenta “ruido” por la influencia global de todos lossaltos, por lo que para reducirlo, se concatena el contenidodel GBHR con unos pocos bits (tres como mínimo) de ladirección del salto (gselect).
05/09/05 23
• McFarling propone realizar la operación XOR entre los bitsde la dirección y el histórico almacenado en GBHR(gshare).
05/09/05 24
• En SPEC'89 benchmarks, el predictor gshare satura a96,6%.
• Gshare es algo inferior al predictor local pero más rápido,al no precisar de una doble búsqueda.
5. Métodos híbridos
• Une la acción de dos predictores con un tercero que, enfunción de la historia de aciertos y fallos de los dosanteriores, elige la acción a seguir.
3.3Paralelismo a nivel de instrucción
• Los computadores actuales, además de pipeline, emplean, como mejora,técnicas que permiten ejecutar más de una instrucción por ciclo:multiprocesadores o procesadores ILP (Instruction Level Parallel).
05/09/05 25
• Un procesador ILP contiene múltiples unidades de ejecución quemanejan operandos almacenados en un fichero de registros común. Lasinstrucciones son suministradas, en paralelo, por la lógica de expediciónde instrucciones.
• Algunas unidades de ejecución está habilitadas para ejecutar unsubconjunto de instrucciones. Ej1.: unidad de enteros y unidad en comaflotante. Ej2.: unidades de enteros diseñadas para ejecutar subconjuntosde instrucciones (coste frente paralelización).
• ¿Cómo trabaja ILP? --> Independencia entre instruccionesconsecutivas.
• Limitaciones de ILP: Dependencias entre instrucciones e instruccionesde bifurcación.
– Dependencias:• RAW. (exige la ejecución en secuencia de las instrucciones, es la
más importante limitación)• WAW (exige seguir la secuencia para obtener el resultado
correcto) se elimina con la técnica “register renaming”.• WAR (factible en el mismo ciclo pero no “sin orden”) se elimina
con la técnica “register renaming”.– Saltos:
05/09/05 26
Pueden solucionarse mediante técnicas de predicción y conejecución especulativa.
• Aparte de las técnicas hardware para favorecer ILP existen técnicas decompilación como: “loop unrolling” y “software pipeline”.
3.3.1 Procesadores superescalares
• Son aquellos que consiguen ejecutar instrucciones en paralelo deprogramas secuenciales.
• La unidad de expedición examina una ventana de instrucciones y lasenvía a las diferentes unidades de ejecución cuando sea posible.
3.3.2 Ejecución “In Order” frente a ejecución “Out of order”
• La ejecución “en orden” o “sin orden” representa uno de los puntos mássignificativos en los procesadores escalares (prestación frente acomplejidad).
• Ejecución “en orden”.• El procesador ejecuta instrucciones en el orden en el que éstas
aparecen en el programa. • Se examina una ventana de instrucciones para seleccionar
aquellas instrucciones que podrán ser suministradas en paralelo alas diferentes unidades de ejecución.
• El tamaño de la ventana es pequeño (igual al número de unidadesde ejecución)
• Ejecución “sin orden”.• El procesador ejecuta instrucciones en cualquier orden mientras
que no cambien el resultado del programa. • Más prestaciones que la ejecución “en orden”• Precisa de ventanas de mayor tamaño.• Complejidad mayor. (n2 para ventanas de n instrucciones)• Dificultad de manejo de excepciones (-> precisa unidad “in order
retirement”)3.3.3 Register renaming
• Esta técnica pretender eliminar o paliar las dependencias de nombre(WAR y WAW) que provienen del número reducido de registros depropósito general.
05/09/05 27
• Asignación automática de un nuevo registro a aquellas instruccionesque presentan dependencias WAR y WAW
• La lógica de renombrado establece un “mapeo” entre los registrospropios de la arquitectura del procesador y los ocultos.
• Esta técnica es mejor que aumentar el número de registrosarquitecturales que el procesador pueda manejar por:
1. Mantener compatibilidad con programas compilados paraversiones anteriores.
2. Por evitar incrementar el número de bits en cada instrucción parael manejo del operando fuente y destino.
05/09/05 28
3.3.4 Ejecución especulativa.
• Consigue mayor paralelismo mediante la ejecución de bloques deinstrucciones asociados a dependencias de control que todavía no hansido resueltas (control speculation) o evitando dependencias de datos(data speculation)
• Ejemplo de ejecución especulativa: suma BCD
Suponiendo que existen tres unidades de ejecución...
05/09/05 29
3.3.5Técnicas software
3.3.5.1 Loop unrolling
• Los bucles tienden a tener bajo ILP por presentar a menudoinstrucciones dependientes y por el bajo número de instruccionesentre saltos.
• Esta técnica transforma un bucle de N iteraciones en otro deN/M, donde cada iteración del nuevo bucle realiza M iteracionesdel antiguo.
3.3.5.2 Software pipelining
• Esta técnica distribuye cada iteración del bucle original sobremúltiples iteraciones del 'pipelined loop', de manera que cadaiteración del nuevo bucle realiza múltiples iteraciones del bucleoriginal.
05/09/05 30
Ejecución de la iteración i de un bucle sin pipeline (dependencias entre instrucciones-no favorece ILP-)
.... Iteración i Iteración i+1 ...
FTCH b[i]; c[i] b[i+1]; c[i+1]
EX. R = b[i] + c[i] R = b[i+1] + c[i+1]
WB A[i] = R A[i+1] = R
Ejecución de la iteración i de un bucle con pipeline (Independencia entreinstrucciones -favorece ILP- )
.... Iteración i Iteración i+1 Iteración i+2 ....
WB a[i-1]=R a[i]=R a[i+1]=R
EX. R = b[i] + c[i] R = b[i+1] + c[i+1] R = b[i+2] + c[i+2]
FTCH b[i+1];c[i+1] b[i+2];c[i+2] b[i+3];c[i+3]
4. Arquitectura de memoria
05/09/05 31
4.1Memoria principal (memoria semiconductora)
• La unidad mínima de almecenamiento es el bit y la estructura física quelo soporta se denomina celda básica.
• La memoria organiza las celdas por filas y columnas (estructuramatricial).
• Existen varias formas de acceder la celdas (o grupos de ellas):decodificación por filas y decodificación por filas y columnas.
DECODIFICACIÓN POR FILAS Y COLUMNAS
05/09/05 32
ROM
• Son memorias de sólo lectura.
• No pierden la información aunque se interrumpa la alimentación.
• Tipos: ROM, PROM (OTP ROM), EPROM, EEPROM ( FLASH )
• Las memorias ROM se programan en fábrica y no es posible modificarsu contenido
• Las memorias PROM contienen una matriz de fusibles que. Sonprogramables por el usuario una sola vez
• Las EPROM permiten su reprogramación después de someter al chip aun proceso de borrado por radiación ultravioleta.
• Las EEPROM permiten su reprogramación eléctrica. Las FLASHEEPROM son más rápidas por permitir borrado y escritura por bloquesaunque tienen el inconveniente del desgaste (10.000-90.000 borrados).
• Ejemplo: Memoria EPROM
Señales de control: #OE (habilitador salida), #CE (habilitador chip)
05/09/05 33
• Proceso de lectura:
- Establecer dirección
- Habilitar chip y salidas
RAM
• Son memorias de lectura y escritura.
• Tipos: SRAM y DRAM.
• Características de la SRAM:
- Celda básica basada en un biestable (6 transistores)
- Rápidas (-> Caché)
– La información no se pierde mientras exista alimentación
05/09/05 34
Tiempo de acceso
• Ejemplo de SRAM
Señales de control ( #CS, Habilitador de chip; #WE, Lectura/Escritura ;#OE, Habilitador de salida)
RAM DINÁMICA (DRAM)
- celda básica: 1 transistor + condensador
- Necesita refresco.
- Requiere lógica externa compleja.
- Mayor densidad que SRAM -> mayor capacidad
– Menor velocidad de acceso
05/09/05 35
Establecer la direcciónPoner #WE a 1 lógicoHabilitar salidas y chip
Proceso de lectura
• Ejemplo de DRAM:
Señales de control: #RAS, (Habilitador de fila), #CAS,(Habilitador de columna), #CS, #WE y #OE.
• La reducción del tiempo de latencia es imprescindible para mejorar lavelocidad de las DRAM.
- FPM (Fast Page Mode) /EDO (Extended Data Output) DRAM.Agiliza los accesos a los bits de una misma fila (página). Dentro de unapágina sólo es necesario identificar la columna.
- El tiempo de acceso a n datos de una página es Trac*n en DRAM yTrac+(n-1)*Tpc en FPM/EDO RAM (Tpc = tiempo de ciclo en modopagina). Tpc es menor en EDO DRAM que en FPM DRAM.
05/09/05 36
TIEMPO DE LATENCIA
Tiempo de pulso de la señal RAS Tiempo de mantenimiento de columnaTiempo de establecimiento de columna
Establecer la FILA (primera mitad de la dirección)Validar FILA (#RAS)Establecer la COLUMNA (segunda mitad de la dirección)Validar COLUMNA (#CAS)Poner #WE a 1 lógicoHabilitar salidas y chip
Proceso de lectura(ver secuencia de pasos
en el cronograma)
– Ejemplo: Si n=8, Trac=60ns y Tpc=25ns -> Tacceso DRAM = 480ns,Tacceso FPM/EDO DRAM = 235ns
• Los microprocesadores tienden a buscar bytes en posicionesconsecutivas de la memoria y, si disponen de caché, además, en ráfagas.(Ej. Caché L2 de un pentium busca bloques de 32 bytes).
• Las SDRAM (DRAM síncronas) incorporan una señal de reloj queestablece la base de tiempos para el modo paginado y un contadorinterno que genera las direcciones de columna para cada ciclo de reloj.
• El tiempo de acceso para n bytes es Trac+(n-1)Tclk.
• Ejemplo: Una SDRAM PC-100Mhz, tiene Tclk = 10ns, si Trac=60ns yn=8, entonces Tacceso SDRAM = 130ns.
05/09/05 37
• Las DDR (Double Data Rate) RAM permiten duplicar la velocidad alutilizar, tanto los flancos de subida como los de bajada del reloj paratransferir un bit. Tacceso de n bytes en DDR RAM = Trac + (n-1)*Tclk/2. (95ns si se usan los mismos datos de la SDRAM anterior)
• Futuro: QDR (Quad Data Rate) RAM (cuatro transferencias por ciclode reloj)
• Las memorias para un ordenador personal vienen en módulos: SIMM ,DIMM
05/09/05 38
4.2 Sistemas Caché [3][5]
• Nivel más alto en la jerarquía de memoria (SRAM).
• Basadas en principio de vecindad (datos e instrucciones próximos enespacio y tiempo son más probables de ser requeridos).
• Permiten procesar instrucciones y datos casi a la misma velocidad queen el caso ideal en el que toda la memoria principal fuera SRAM, perocon un coste algo superior a sólo DRAM.
• Contienen hardware que permite identificar las direcciones de memoriade los datos almacenados en la caché y copiar datos, si es necesario,desde la memoria a la caché o a la inversa.
• Disponen de una memoria de etiquetas y una memoria de datos.
05/09/05 39
• En memorias caché es habitual separar datos e instrucciones (Harvardcaché) aunque también es común las cachés unificadas (datos einstrucciones)
• La capacidad de una caché indica la cantidad de datos que puedealmacenar. Ej.: Caché de 32KB almacena 32Kilobytes de datos(internamente se necesita más memoria-> etiquetas).
• La longitud de línea de una caché es el tamaño del bloque de datosmínimo que el sistema caché se trae de la memoria en Caché miss o quepuede escribir en la memoria. (Ej.: caché de 32 bytes de línea lee 32bytes de datos en cada acceso a memoria).
Longitud de línea Tiempo de acceso Probabilidad de aciertoGrande Alto AltaPequeña Bajo Baja
Longitudes de línea actuales (32 bytes – 128 bytes )
• La asociatividad de una caché determina cuantas posiciones internaspueden contener una dirección de memoria dada:
1. Cachés totalmente asociativas. Cualquier dirección se puedealmacenar en cualquier posición interna. Asociatividad m.
2. Cachés directamente mapeadas. Una dirección dada sólo puedealmacenarse en una posición concreta. Asociatividad 1.
3. Cachés asociativas por conjuntos. Una dirección dada puedealmacenarse en una única posición dentro de un conjunto, pero entantos conjuntos distintos como existan. Asociatividad n.
05/09/05 40
Memoria caché totalmente asociativa
• Cualquier dirección de la memoria principal se puede almacenar encualquier línea de la caché.
• Los bits MSB de la dirección se compara con los valores almacenadosen la memoria de etiquetas.
05/09/05 41
• Mayor tasa de aciertos
• Gran complejidad circuital (tamaño de la memoria de etiquetas ynúmero de comparadores)
• Ejemplo: Memoria principal 16Mb (24 bits de direcciones) y MemoriaCaché de 2Kb con 4 bytes por línea (512 líneas y 22 bits de etiqueta)
05/09/05 42
Memoria caché directamente mapeada
• La memoria principal se ve dividida en páginas de igual tamaño a lacaché.
• La posición relativa de un dato en cada página ocupa la misma que en lacaché de datos.
• Menor complejidad circuital que la totalmente asociativa (memoria deetiquetas más pequeña y un sólo comparador).
05/09/05 43
• Pueden eliminarse bloques de la caché aún teniendo espacio disponible.
• Menor tasa de acierto.
• Ejemplo: Memoria principal 16Mb (24 bits de direcciones) y MemoriaCaché de 2Kb con 4 bytes por línea (512 líneas -> 9 bits de línea y 22-9 = 13 bits de etiqueta)
05/09/05 44
Memoria caché asociativa por conjuntos (caché de n-vías)
• La memoria principal se ve dividida en bloques o páginas de tamañoigual al de una vía.
• La memoria de datos de la caché se divide en n-vías o bloques de igualtamaño.
• La posición relativa de un dato en una página de la memoria ocupa lamisma posición relativa que en una vía de la caché.
05/09/05 45
• Ahora bien, un dato de un bloque de la memoria principal puede serubicado en n posibles posiciones en la memoria caché (tantas comovias).
• Este esquema requiere n comparadores.
• Elevada tasa de aciertos.
05/09/05 46
• Ejemplo: Memoria principal 16Mb (24 bits de direcciones) y MemoriaCaché de 2Kb con 4 bytes por línea (512 líneas -> 9 bits de línea y 22-9 = 13 bits de etiqueta)
05/09/05 47
• La política de reemplazo determina qué línea es desechada cuando lacachés está llena o hay conflictos entre conjuntos.
Totalmente asociativa Directamente mapeada Asociativa por conjuntosSi la caché está llena sedeberá sustituir alguna línea
No hay conflicto alguno,cada dato nuevo tiene unalocalización predeterminadaque sobrescribe al antiguo(incluso si existenposiciones libres)
Si todos los conjuntostienen ocupadas la mismaposición interna, se deberádecidir cuál de ellas esvaciada.
• La política de reemplazo deberá mejorar el cache hit a un costehardware razonable.
• Algoritmo LRU (Last Recently Used) – Se sustituye el menos reciente.– Cada línea debe tener unos bits que registren su orden de
utilización.– Cada sustitución de una línea requiere la actualización de los bits
en las restantes.– Eficiente pero costoso.
• Algoritmo NMRU (Not-Most-Recently-Used):– Salvo la línea más reciente, se puede sustituir cualquier otra
(aleatorio).– Cada línea sólo requiere un bit.– Menos costoso y algo menos eficiente que LRU.
05/09/05 48
• Coherencia de la caché
– La información de la caché es una copia de la informaciónalmacenada en la memoria. Por tanto, cualquier modificación enalguna de ellas, deberá ser actualizada en la otra. (Coherencia).
– Modificación en Caché (actualización en memoria).• Write-Through.
– Se actualiza la memoria cuando se produce unamodificación en alguna línea.
– Simple de implementar.– Requiere mucho uso del bus.
• Write-Back– Se actualiza la memoria sólo cuando la línea
modificada va a ser sustituida.– Cada línea requiere registrar información sobre si su
contenido ha sido modificado por el Procesador(Línea sucia).
– Necesitan buffers intermedios (almacenar línea aactualizar en memoria y evitar retrasos en lasustitución).
– Más compleja de implementar.– Uso más eficiente del bus.
– Modificación en Memoria (actualización de la caché- Snooping-).• El controlador de caché rastrea el uso de la memoria por
otros controladores.• Captura, si procede, del dato en la caché o etiquetado de la
línea como no válida (posterior actualización).
• Non-cacheable cycles
Algunos accesos a memoria no deben ser copiados en la caché: zona deentradas/salida y reconocimiento de interrupciones.
05/09/05 49
• Memoria de etiquetas.
– Contienen bits de la dirección y bits adicionales de gestión.
– El bit de etiqueta válida indica sobre si la línea contiene datosválidos o no.
• Lógica de Ausencia/Presencia (Hit/Miss)
– Una presencia en la caché requiere de que la etiqueta coincida conla dirección y el bit de etiqueta válida sea correcto.
05/09/05 50
• Jerarquía de Cachés (Multilevel caches)
– Diferentes niveles mejoran, en promedio, el tiempo de acceso.
– Niveles superiores (más cercanos a la memoria principal) debentener mayor capacidad.
– Niveles inferiores (más próximos a la CPU) deben tener mayorvelocidad.
05/09/05 51
5. Memoria virtual [3][5]
• La memoria virtual es una técnica que permite al microprocesadorutilizar un espacio de memoria mucho mayor que el proporcionado porla memoria física.
• El microprocesador trabaja con direcciones virtuales que definen elespacio virtual (de mucha mayor capacidad que el espacio físico).
• La unidad MMU (Memory Management Unity) es la encargada defacilitar la traducción de direcciones virtuales a direcciones físicas.
05/09/05 52
• El SO debe disponer de las siguientes funciones:1. Lista de todos los “objetos” residentes tanto en la memoria virtual
como física.2. Cargar los objetos en la memoria física en tiempo de ejecución.3. Establecer la política de sustitución de objetos de la memoria
física por otros nuevos.
• Existen distintos modelos de memoria virtual: paginada, segmentada yde segmentos paginados.
5.1 Memoria virtual paginada
• La memoria virtual se divide en bloques de tamaño fijo llamadospáginas. La memoria física contendrá un determinado número depáginas virtuales.
• La dirección virtual se divide en dos campos: número de página virtual(npv) y desplazamiento (d).
• Existe una tabla de páginas en la Memoria que dispone de una entradapor cada página virtual.
05/09/05 53
• La tabla de páginas (TP) se crea en el arranque del sistema y reside enmemoria principal. Un registro de la CPU denominado RBTP (RegistroBase de la Tabla de Páginas) se inicializa con la posición de memoriadonde comienza dicha tabla.
• Cuando la CPU lanza una dirección (virtual) el campo npv se desagregade la misma y se utiliza como índice al RBTP para acceder a memoria aleer la entrada asociada a la página virtual. De dicha entrada se obtienela dirección de la memoria principal donde se ubica la página requeridaque, junto, con el desplazamiento (d), forman la dirección física. Métodode correspondencia directa.
• El método de correspondencia directa requiere dos accesos a memoria(uno a la TP y otro para acceder al objeto propiamente dicho) lo queimplica reducción de prestaciones. Para evitarlo se suele implementarcon un buffer de traducción adelantada (TLB- Translation LookasideBuffer)
• El TLB es una pequeña caché que contiene las entradas de la tabla quese han usado más recientemente.
05/09/05 54
• La tabla de páginas es de gran tamaño (1 entrada por cada páginavirtual). Para reducir dicho tamaño (método de correspondenciaasociativa) se podría utilizar una TP inversa que al número de páginafísica se le asigna un número de página virtual.
• Requiere de una memoria cara de tipo asociativo (búsqueda porcontenido en lugar de búsqueda por dirección).
05/09/05 55
5.2 Memoria virtual segmentada.
• La memoria virtual se divide en bloques de tamaño variable llamadossegmentos.
• Conceptualmente parecida a la paginada. Se requiere almacenar ahorala longitud del segmento.
5.3Memoria virtual de segmentos paginados.
• La segmentación presenta algunas ventajas:1. Simplifica la gestión de estructuras de datos crecientes. El SO
puede aumentar el tamaño del segmento a demanda.2. Se presta a la protección3. Modularidad.
• La paginación elimina la fragmentación y permite aprovechar lamemoria principal de forma más eficiente.
• Un dirección virtual en el modelo virtual de segmentos paginadosdispone de tres campos: nsv, npv y d.
• Existen una Tabla de Segmentos y tantas tablas de páginas comopáginas en segmentos.
05/09/05 56
5.4Algoritmos de gestión de memoria (SO)
• Política de lectura: Demanda y previa.
• Política de ubicación: mejora ajuste, pero ajuste, otras.
• Política de reemplazo: • LRU (dificultad de implementación).• FIFO (cola circular de fácil implementación).• Reloj
05/09/05 57
[1] The computer engineering handbook. Chapter 6. CRC 2002. Kevin Skadron.
[2] Evaluation of branch-prediction methods on traces from commercial applications.Journal of Research and Development. Volume 43, number 4, 1999. R. B. Hilgendorf,G. J. Heim and W. Rosenstiel.
http://www.research.ibm.com/journal/rd/434/hilgendorf.html
[3] Computer Architecture. Nicholas Carter. Schaum's outlines 2001.
[4] High perfomance computer architecture. Harold S. Stone. 3 edition. Addison-Wesley 1993.
[5] Computer Architecture Design. Henesse & Paterson. Morgan Edition.
[6] IA-32 Architecture. Vol1. Intel corporation.
[7] AMD64 Architecture. Programmer's manual. Volumen 1.
Enlaces a páginas web:
• Applet para simulación de predictores simples:http://www.ecs.umass.edu/ece/koren/architecture/BrPredict/BranchPrediction.html
• Evaluación de los métodos de predicción de saltos. Hilgendorf. http://www.research.ibm.com/journal/rd/434/hilgendorf.html
• Pipelines y evaluación de saltos: http://www.cs.ucsb.edu/~cs290i/a1_branch.html
• Tutorial de la Universidad de Massachusetts: http://euler.ecs.umass.edu/arch/parts/Part7-brnchprdct.pdf
05/09/05 58