stringtranslate.com

Registrar archivo

Un archivo de registro es una matriz de registros de procesador en una unidad central de procesamiento (CPU). La arquitectura del conjunto de instrucciones de una CPU casi siempre definirá un conjunto de registros que se utilizan para almacenar datos entre la memoria y las unidades funcionales del chip. El archivo de registro es parte de la arquitectura y es visible para el programador, a diferencia del concepto de cachés transparentes . En las CPU más simples, estos registros arquitectónicos corresponden uno por uno a las entradas en un archivo de registro físico (PRF) dentro de la CPU. Las CPU más complicadas utilizan el cambio de nombre de registros , de modo que el mapeo de qué entrada física almacena un registro arquitectónico particular cambia dinámicamente durante la ejecución.

Los archivos de registro modernos basados ​​en circuitos integrados generalmente se implementan mediante RAM estáticas rápidas con múltiples puertos. Estas RAM se distinguen por tener puertos dedicados de lectura y escritura, mientras que las SRAM multipuerto normales suelen leer y escribir a través de los mismos puertos. La banca de registros es el método de utilizar un solo nombre para acceder a múltiples registros físicos diferentes según el modo de operación.

Cambio de banco-registro

Los archivos de registro pueden agruparse como bancos de registro. [1] Un procesador puede tener más de un banco de registro.

Los procesadores ARM tienen registros tanto bancarizados como no bancarizados. Si bien todos los modos siempre comparten los mismos registros físicos para los primeros ocho registros de propósito general, R0 a R7, el registro físico al que apuntan los registros agrupados, R8 a R14, depende del modo operativo en el que se encuentra el procesador. [2] En particular , el modo de solicitud de interrupción rápida (FIQ) tiene su propio banco de registros para R8 a R12, y la arquitectura también proporciona un puntero de pila privado (R13) para cada modo de interrupción.

Los procesadores x86 utilizan cambio de contexto e interrupción rápida para cambiar entre instrucciones, decodificadores, GPR y archivos de registro, si hay más de uno, antes de que se emita la instrucción, pero esto solo existe en procesadores que admiten superescalar. Sin embargo, el cambio de contexto es un mecanismo totalmente diferente al banco de registros de ARM dentro de los registros.

El MODCOMP y los procesadores posteriores compatibles con 8051 utilizan bits en la palabra de estado del programa para seleccionar el banco de registros actualmente activo.

Implementación

La convención de diseño habitual es que una matriz simple se lee verticalmente. Es decir, una sola línea de palabra, que corre horizontalmente, hace que una fila de celdas de bits coloque sus datos en líneas de bits, que corren verticalmente. Los amplificadores de detección , que convierten líneas de bits de lectura de oscilación baja en niveles lógicos de oscilación completa, suelen estar en la parte inferior (por convención). A veces se construyen archivos de registro más grandes colocando en mosaico matrices simples reflejadas y rotadas.

Los archivos de registro tienen una línea de palabra por entrada por puerto, una línea de bits por bit de ancho por puerto de lectura y dos líneas de bits por bit de ancho por puerto de escritura. Cada celda de bits también tiene un Vdd y un Vss. Por lo tanto, el área del paso del cable aumenta con el cuadrado del número de puertos y el área del transistor aumenta linealmente. [3] En algún momento, puede ser más pequeño y/o más rápido tener múltiples archivos de registro redundantes, con números más pequeños de puertos de lectura, en lugar de un único archivo de registro con todos los puertos de lectura. La unidad entera del MIPS R8000 , por ejemplo, tenía un archivo de registro de 64 bits con 9 puertos de lectura, 4 escrituras y 32 entradas implementado en un proceso de 0,7 µm, que se podía ver al mirar el chip desde la distancia.

Dos enfoques populares para dividir registros en múltiples archivos de registro son la configuración del archivo de registro distribuido y la configuración del archivo de registro particionado. [3]

En principio, cualquier operación que pueda realizarse con un archivo de registro de 64 bits de ancho con muchos puertos de lectura y escritura podría realizarse con un único archivo de registro de 8 bits de ancho con un único puerto de lectura y un único puerto de escritura. Sin embargo, el paralelismo a nivel de bits de los archivos de registro ancho con muchos puertos les permite ejecutarse mucho más rápido y, por lo tanto, pueden realizar operaciones en un solo ciclo que tomarían muchos ciclos con menos puertos o un ancho de bits más estrecho, o ambos.

El ancho en bits del archivo de registro suele ser el número de bits en el tamaño de palabra del procesador . En ocasiones es un poco más ancho para poder adjuntar bits "extra" a cada registro, como el bit venenoso. Si el ancho de la palabra de datos es diferente al ancho de una dirección (o en algunos casos, como el 68000 , incluso cuando tienen el mismo ancho), los registros de direcciones están en un archivo de registro separado de los registros de datos.

Descifrador

Formación

Un archivo de registro típico (de "triple puerto", capaz de leer desde 2 registros y escribir en 1 registro simultáneamente) está formado por celdas de bits como esta.

El esquema básico para una celda de bits:

Son posibles muchas optimizaciones:

Microarquitectura

La mayoría de los archivos de registro no tienen disposiciones especiales para evitar que múltiples puertos de escritura escriban en la misma entrada simultáneamente. En cambio, el hardware de programación de instrucciones garantiza que sólo una instrucción en cualquier ciclo particular escriba una entrada particular. Si se emiten varias instrucciones dirigidas al mismo registro, todas menos una tienen sus habilitaciones de escritura desactivadas.

Los inversores cruzados tardan un tiempo finito en estabilizarse después de una operación de escritura, durante el cual una operación de lectura tardará más o devolverá basura. Es común tener multiplexores de derivación que omiten los datos escritos en los puertos de lectura cuando se ordena una lectura y escritura simultáneas en la misma entrada. Estos multiplexores de derivación suelen formar parte de una red de derivación más grande que envía resultados que aún no se han comprometido entre unidades funcionales.

El archivo de registro generalmente coincide con el tono de la ruta de datos que sirve. La coincidencia de tono evita que muchos autobuses pasen por la ruta de datos al girar en las esquinas, lo que consumiría mucha área. Pero como cada unidad debe tener el mismo paso de bits, cada unidad en la ruta de datos termina con el paso de bits forzado por la unidad más amplia, lo que puede desperdiciar área en las otras unidades. Los archivos de registro, debido a que tienen dos cables por bit por puerto de escritura, y debido a que todas las líneas de bits deben contactar el silicio en cada celda de bits, a menudo pueden establecer el paso de una ruta de datos.

A veces se puede ahorrar área en máquinas con varias unidades en una ruta de datos al tener dos rutas de datos una al lado de la otra, cada una de las cuales tiene un paso de bits más pequeño que el que tendría una sola ruta de datos. Este caso normalmente obliga a realizar varias copias de un archivo de registro, una para cada ruta de datos.

El Alpha 21264 (EV6), por ejemplo, fue la primera microarquitectura grande en implementar una "Arquitectura de archivos de registro oculto". Tenía dos copias del archivo de registro de enteros y dos copias del registro de punto flotante ubicadas en su interfaz (archivo futuro y escalado, cada uno con 2 puertos de lectura y 2 de escritura), y tomó un ciclo adicional para propagar datos entre los dos durante un cambio de contexto. La lógica de emisión intentó reducir la cantidad de operaciones que reenvían datos entre los dos y mejoró enormemente su rendimiento de números enteros, y ayudó a reducir el impacto de la cantidad limitada de registros de propósito general en arquitecturas superescalares con ejecución especulativa. Este diseño fue posteriormente adaptado por SPARC , MIPS y algunas de las implementaciones x86 posteriores.

El MIPS también utiliza múltiples archivos de registro. La unidad de punto flotante R8000 tenía dos copias del archivo de registro de punto flotante, cada una con cuatro puertos de escritura y cuatro de lectura, y escribió ambas copias al mismo tiempo con un cambio de contexto. Sin embargo, no admitía operaciones con números enteros y el archivo de registro de números enteros seguía siendo como tal. Más tarde, los archivos de registro oculto se abandonaron en diseños más nuevos en favor del mercado integrado.

SPARC también utiliza una "Arquitectura de archivos de registro oculto" para su línea de alta gama . Tiene hasta 4 copias de archivos de registro de números enteros (futuro, retirado, escalado y borrador, cada uno con 7 puertos de lectura y 4 de escritura) y 2 copias del archivo de registro de punto flotante. Sin embargo, a diferencia de Alpha y x86, se ubican en el backend como una unidad de retiro justo después de su unidad fuera de servicio y cambian el nombre de los archivos de registro. Los registros ocultos no cargan instrucciones durante las etapas de búsqueda y decodificación de instrucciones y en este diseño no es necesario un cambio de contexto.

IBM utiliza el mismo mecanismo que muchos microprocesadores importantes, fusionando profundamente el archivo de registro con el decodificador, pero sus archivos de registro funcionan independientemente del lado del decodificador y no implican cambio de contexto, lo cual es diferente de Alpha y x86. La mayoría de sus archivos de registro no solo sirven para su decodificador dedicado, sino también hasta el nivel de subproceso. Por ejemplo, POWER8 tiene hasta 8 decodificadores de instrucciones, pero hasta 32 archivos de registro de 32 registros de uso general cada uno (4 puertos de lectura y 4 de escritura) para facilitar el multiproceso simultáneo , ya que sus instrucciones paralelas no se pueden usar en ningún otro archivo de registro debido a la falta de un cambio de contexto.

En la línea de procesadores x86 , una CPU típica anterior a 486 no tenía un archivo de registro individual, ya que todos los registros de propósito general trabajaban directamente con el decodificador y la pila de inserción x87 estaba ubicada dentro de la propia unidad de punto flotante. Comenzando con Pentium , un procesador x86 típico compatible con Pentium está integrado con una copia de un archivo de registro arquitectónico de puerto único que contiene 6 registros de propósito general, 4 registros de control, 8 registros de depuración (dos reservados), 1 registro de puntero de pila, 1 registro base de pila, 1 puntero de instrucción, 1 registro de banderas y 6 registros de segmento.

Una copia de la pila push down de 8 x87 FP de forma predeterminada, el registro MMX se simuló virtualmente desde la pila x87 y requiere el registro x86 para proporcionar instrucciones MMX y alias para existir la pila. En P6, la instrucción se puede almacenar y ejecutar de forma independiente en paralelo en las primeras etapas del proceso antes de decodificarla en microoperaciones y cambiarle el nombre en una ejecución fuera de orden. Comenzando con P6 , todos los archivos de registro no requieren un ciclo adicional para propagar los datos, los archivos de registro como los arquitectónicos y de punto flotante se ubican entre el búfer de código y los decodificadores, llamados "búfer de retirada", búfer de reordenamiento y OoOE y conectados dentro del bus de anillo (16 bytes). El archivo de registro en sí sigue siendo un archivo de registro x86 y una pila x87 y ambos sirven como almacenamiento de retiro. Su archivo de registro x86 se amplió a doble puerto para aumentar el ancho de banda para el almacenamiento de resultados. Los registros como depuración/código de condición/control/sin nombre/bandera se eliminaron del archivo de registro principal y se colocaron en archivos individuales entre la ROM del microoperador y el secuenciador de instrucciones. Sólo los registros inaccesibles como el registro de segmento ahora están separados del archivo de registro de propósito general (excepto el puntero de instrucción); ahora están ubicados entre el programador y el asignador de instrucciones, para facilitar el cambio de nombre de los registros y la ejecución desordenada. La pila x87 se fusionó más tarde con el archivo de registro de punto flotante después de que un registro XMM de 128 bits debutara en Pentium III, pero el archivo de registro XMM todavía se encuentra separado de los archivos de registro de enteros x86.

Las implementaciones posteriores de P6 (Pentium M, Yonah) introdujeron una "Arquitectura de archivos de registro en la sombra" que se expandió a 2 copias de archivos de registro arquitectónicos enteros de doble puerto y consisten en un cambio de contexto (entre archivos futuros y retirados y archivos escalados usando el mismo truco usado entre entero y punto flotante). Esto se hizo para resolver el cuello de botella de registros que existía en la arquitectura x86 después de que se introdujo la fusión de microoperaciones, pero todavía tiene 8 entradas de registros arquitectónicos de 32 bits para un total de 32 bytes de capacidad por archivo (el registro de segmento y el puntero de instrucción permanecen dentro del archivo, aunque el programa no puede acceder a ellos) como archivo especulativo. El segundo archivo se sirve como un archivo de registro de sombra escalado, que sin un cambio de contexto el archivo escalado no puede almacenar alguna instrucción de forma independiente. Algunas instrucciones de SSE2/SSE3/SSSE3 requieren esta característica para operación con números enteros, por ejemplo, instrucciones como PSHUFB, PMADDUBSW, PHSUBW, PHSUBD, PHSUBSW, PHADDW, PHADDD, PHADDSW requerirían cargar EAX/EBX/ECX/EDX desde ambos archivos de registro, aunque Era poco común que un procesador x86 utilizara otro archivo de registro con la misma instrucción. La mayoría de las veces, el segundo archivo se sirve como un archivo retirado de báscula. La arquitectura Pentium M todavía tiene un archivo de registro de punto flotante de doble puerto (8 entradas MM/XMM) compartido con tres decodificadores, y el archivo de registro FP no tiene un archivo de registro oculto junto con él, como su archivo de registro oculto. La arquitectura no incluía funciones de punto flotante. En los procesadores posteriores a P6, los archivos de registro arquitectónico son externos y están ubicados en el backend del procesador después del archivo retirado, a diferencia del archivo de registro interno ubicado en el núcleo interno para el búfer de cambio de nombre/reordenación de registros. Sin embargo, en Core 2 ahora está alojado dentro de una unidad llamada "tabla de alias de registro" (RAT), ubicada con el asignador de instrucciones pero tiene el mismo tamaño de registro que el retiro. Core 2 aumentó el bus del anillo interno a 24 bytes (permite decodificar más de 3 instrucciones) y extendió su archivo de registro de doble puerto (una lectura/una escritura) a cuatro puertos (dos lecturas/dos escrituras), el registro aún Quedan 8 entradas en 32 bits y 32 bytes (sin incluir el registro de 6 segmentos y un puntero de instrucción, ya que ningún código/instrucción puede acceder a ellos en el archivo) en el tamaño total del archivo y se expandieron a 16 entradas en x64 para un total de 128 bytes. tamaño por archivo. Desde Pentium M, su puerto de canalización y decodificador aumentaron, pero están ubicados en una tabla de asignadores en lugar de un búfer de código. Su archivo de registro FP XMM también aumentó a cuatro puertos (2 lectura/2 escritura), el registro aún tiene 8 entradas en 32 bits y se extendió a 16 entradas en modo x64 y el número sigue siendo 1, ya que su arquitectura de archivo de registro oculto es sin incluir funciones de punto flotante/SSE.

En implementaciones x86 posteriores, como Nehalem y procesadores posteriores, los registros de punto entero y flotante ahora se incorporan en un archivo de registro de propósito general unificado con puertos octaportados (seis de lectura y dos de escritura) (8 + 8 en 32 bits y 16 + 16). en x64 por archivo), mientras que el archivo de registro se extendió a 2 con una "Arquitectura de archivo de registro de sombra" mejorada, favorita para ejecutar hiperprocesamiento y cada subproceso utiliza archivos de registro independientes para su decodificador. Posteriormente, Sandy Bridge y en adelante reemplazó la tabla de registros ocultos y los registros arquitectónicos con un archivo de registro físico mucho más grande y aún más avanzado antes de decodificarlo en el búfer de reordenamiento. Randered que Sandy Bridge y en adelante ya no tienen un registro arquitectónico.

En la línea Atom estaba la revisión moderna simplificada del P5. Incluye copias únicas del archivo compartido de registro con subproceso y decodificador. El archivo de registro tiene un diseño de doble puerto, GPRS de 8/16 entradas, registro de depuración de 8/16 y código de condición de 8/16 entradas están integrados en el mismo archivo. Sin embargo, tiene un registro basado en sombra de 64 bits de ocho entradas y un registro sin nombre de 64 bits de ocho entradas que ahora están separados de los GPR principales a diferencia del diseño P5 original y ubicados después de la unidad de ejecución, y el archivo de estos registros tiene un solo puerto. y no exponer a instrucciones como el archivo de registro de sombra escalado que se encuentra en Core/Core2 (el archivo de registro de sombra está hecho de registros arquitectónicos y Bonnell no tenía debido a que no tenía "Arquitectura de archivo de registro de sombra"), sin embargo, el archivo se puede usar para cambiar el nombre debido a la falta de ejecución fuera de orden encontrada en la arquitectura Bonnell. También tenía una copia del archivo de registro de punto flotante XMM por hilo. La diferencia con Nehalem es que Bonnell no tiene un archivo de registro unificado y no tiene un archivo de registro dedicado para su hiperprocesamiento. En cambio, Bonnell utiliza un registro de cambio de nombre separado para su hilo a pesar de que no está fuera de servicio. Al igual que Bonnell, Larrabee y Xeon Phi también tienen cada uno solo un archivo de registro de números enteros de uso general, pero Larrabee tiene hasta 16 archivos de registro XMM (8 entradas por archivo) y Xeon Phi tiene hasta 128 archivos de registro AVX-512. , cada uno de los cuales contiene 32 registros ZMM de 512 bits para almacenamiento de instrucciones vectoriales, que pueden ser tan grandes como una caché L2.

Hay algunas otras líneas x86 de Intel que no tienen un archivo de registro en su diseño interno, Geode GX y Vortex86 y muchos procesadores integrados que no son compatibles con Pentium o que no han sido sometidos a ingeniería inversa en los primeros procesadores 80x86. Por lo tanto, la mayoría de ellos no tienen un archivo de registro para sus decodificadores, sino que sus GPR se utilizan de forma individual. Pentium 4 (basado en la microarquitectura NetBurst ), por otro lado, no tiene un archivo de registro para su decodificador, ya que sus GPR x86 no existían dentro de su estructura, debido a la introducción de un archivo de registro de cambio de nombre unificado físico (similar a Sandy Bridge, pero ligeramente diferente debido a la incapacidad de Pentium 4 de usar el registro antes de nombrar) por intentar reemplazar el archivo de registro arquitectónico y omitir el esquema de decodificación x86. En su lugar, utiliza SSE para la ejecución y el almacenamiento de números enteros antes de la ALU y después del resultado, SSE2/SSE3/SSSE3 también utiliza el mismo mecanismo para su operación con números enteros.

Los primeros diseños de AMD, como el K6, no tienen un archivo de registro como Intel y no son compatibles con la "Arquitectura de archivos de registro en la sombra", ya que su falta de cambio de contexto y de inversor de derivación son necesarios para que un archivo de registro funcione correctamente. En su lugar, utilizan GPR separados que se vinculan directamente a una tabla de registro de cambio de nombre para su CPU OoOE con un decodificador de enteros dedicado y un decodificador flotante. El mecanismo es similar a la línea de procesadores anteriores a Pentium de Intel. Por ejemplo, el procesador K6 tiene cuatro int (un archivo de registro temporal rayado de ocho entradas + un archivo de registro futuro de ocho entradas + un archivo de registro recuperado de ocho entradas + un archivo de registro sin nombre de ocho entradas) y dos archivos de registro de cambio de nombre FP ( dos archivos x87 ST de ocho entradas (uno se vuelve fadd y el otro fmov) que se vinculan directamente con su x86 EAX para cambiar el nombre de números enteros y el registro XMM0 para cambiar el nombre de punto flotante, pero luego Athlon incluyó un "registro de sombra" en su interfaz, se amplió a Archivo de registro unificado de 40 entradas para la operación de números enteros antes de decodificar, el archivo de registro contiene 8 entradas de registro temporal + 16 archivos de registro de GPR futuros + 16 archivos de registro de GPR sin nombre. En diseños posteriores de AMD, abandona el diseño de registro de sombra y prefiere la arquitectura K6 con diseño de enlace directo de GPR individuales. Al igual que Phenom , tiene tres archivos de registro int y dos archivos de registro SSE que se encuentran en el archivo de registro físico directamente vinculado con los GPR. Sin embargo, se reduce a un número entero + un punto flotante en Bulldozer . Al igual que los primeros diseños de AMD, la mayoría de los fabricantes de x86 como Cyrix, VIA, DM&P y SIS también utilizaron el mismo mecanismo, lo que resultó en una falta de rendimiento de enteros sin cambiar el nombre de los registros de su CPU en orden. Empresas como Cyrix y AMD tuvieron que aumentar el tamaño de la caché con la esperanza de reducir el cuello de botella. La operación de números enteros SSE de AMD funciona de manera diferente a la de Core 2 y Pentium 4; utiliza su registro entero de cambio de nombre separado para cargar el valor directamente antes de la etapa de decodificación. Aunque teóricamente solo necesitará un proceso más corto que la implementación SSE de Intel, pero en general el costo de la predicción de bifurcación es mucho mayor y la tasa de faltas es mayor que la de Intel, y tendría que tomar al menos dos ciclos para que su instrucción SSE se ejecute independientemente de instrucción en toda su extensión, ya que las primeras implementaciones de AMD no podían ejecutar tanto FP como Int en un conjunto de instrucciones SSE como lo hacía la implementación de Intel.

A diferencia de Alpha , SPARC y MIPS, que solo permiten que un archivo de registro cargue/recupere un operando a la vez; Se necesitarían varios archivos de registro para lograr una superescala. Por otro lado, el procesador ARM no integra múltiples archivos de registro para cargar/obtener instrucciones. Los ARM GPR no tienen un propósito especial para el conjunto de instrucciones (el ARM ISA no requiere acumulador, índice ni puntos de pila/base. Los registros no tienen un acumulador y el punto de base/pila solo se puede usar en modo pulgar). Cualquier GPR puede propagar y almacenar múltiples instrucciones de forma independiente en un tamaño de código más pequeño que sea lo suficientemente pequeño como para poder caber en un registro y su registro arquitectónico actúa como una tabla y se comparte con todos los decodificadores/instrucciones con un simple cambio de banco entre decodificadores. La principal diferencia entre ARM y otros diseños es que ARM permite ejecutarse en el mismo registro de uso general con un cambio rápido de banco sin requerir un archivo de registro adicional en superescalar. A pesar de que x86 comparte el mismo mecanismo con ARM de que sus GPR pueden almacenar cualquier dato individualmente, x86 enfrentará la dependencia de datos si se almacenan más de tres instrucciones no relacionadas, ya que sus GPR por archivo son demasiado pequeños (ocho en modo de 32 bits y 16 en modo de 32 bits). 64 bits, en comparación con los 13 de ARM en 32 bits y 31 en 64 bits) para datos, y es imposible tener un superescalar sin múltiples archivos de registro para alimentar su decodificador (el código x86 es grande y complejo en comparación con ARM). Porque la mayoría de las interfaces x86 se han vuelto mucho más grandes y consumen mucha más energía que el procesador ARM para poder ser competitivos (ejemplo: Pentium M y Core 2 Duo, Bay Trail). Algunos procesadores equivalentes a x86 de terceros incluso dejaron de competir con ARM debido a que no tenían una arquitectura de archivo de registro dedicada. Particularmente para AMD, Cyrix y VIA, que no pueden brindar ningún rendimiento razonable sin cambiar el nombre de los registros y una ejecución fuera de orden, lo que deja solo a Intel Atom como el único núcleo de procesador x86 en orden en la competencia móvil. Esto fue hasta que el procesador Nehalem x86 fusionó su registro entero y de punto flotante en un solo archivo, y la introducción de una gran tabla de registros físicos y una tabla de asignador mejorada en su interfaz antes de cambiar el nombre en su núcleo interno desordenado. .

Registrar cambio de nombre

Los procesadores que realizan cambios de nombre de registros pueden disponer que cada unidad funcional escriba en un subconjunto del archivo de registro físico. Esta disposición puede eliminar la necesidad de múltiples puertos de escritura por celda de bits, para lograr grandes ahorros de área. El archivo de registro resultante, efectivamente una pila de archivos de registro con puertos de escritura únicos, se beneficia de la replicación y subconjunto de los puertos de lectura. En el límite, esta técnica colocaría una pila de archivos de registro de 1 escritura y 2 lecturas en las entradas de cada unidad funcional. Dado que los archivos de registro con una pequeña cantidad de puertos a menudo están dominados por el área de transistores, es mejor no llevar esta técnica a este límite, pero de todos modos es útil.

Registrar ventanas

SPARC ISA define ventanas de registro , en las que los nombres arquitectónicos de 5 bits de los registros en realidad apuntan a una ventana en un archivo de registro mucho más grande, con cientos de entradas. La implementación de archivos de registro multiportados con cientos de entradas requiere un área grande. La ventana de registro se desliza 16 registros cuando se mueve, de modo que cada nombre de registro arquitectónico puede hacer referencia sólo a un pequeño número de registros en la matriz más grande, por ejemplo, el registro arquitectónico r20 sólo puede hacer referencia a los registros físicos #20, #36, #52, # 68, #84, #100, #116, si solo hay siete ventanas en el archivo físico.

Para ahorrar área, algunas implementaciones SPARC implementan un archivo de registro de 32 entradas, en el que cada celda tiene siete "bits". Sólo uno se puede leer y escribir a través de los puertos externos, pero el contenido de los bits se puede rotar. Una rotación realiza en un solo ciclo un movimiento de la ventana de registro. Debido a que la mayoría de los cables que realizan el movimiento estatal son locales, es posible lograr un ancho de banda enorme con poca energía.

Esta misma técnica se utiliza en el archivo de mapeo de cambio de nombre de registros R10000 , que almacena un número de registro virtual de 6 bits para cada uno de los registros físicos. En el archivo de cambio de nombre, el estado de cambio de nombre se controla cada vez que se toma una rama, de modo que cuando se detecta que una rama está mal predicha, el antiguo estado de cambio de nombre se puede recuperar en un solo ciclo. (Consulte Registrar cambio de nombre ).

Ver también

Referencias

  1. ^ Wikilibros: Diseño de microprocesador / Archivo de registro # Banco de registro.
  2. ^ "Manual de referencia de arquitectura ARM" (PDF) . BRAZO limitado. Julio de 2005 . Consultado el 13 de octubre de 2021 .
  3. ^ ab Johan Janssen. "Estrategias de compilador para arquitecturas activadas por transporte". 2001. pág. 169. pág. 171-173.
  4. ^ "Archivos de registro con puertos asimétricos y energéticamente eficientes" por Aneesh Aggarwal y M. Franklin. 2003.

enlaces externos