miniatura|Circuit integrat de fitxer de registre de 4x4 bits. Els registres es poden llegir i escriure simultàniament. (Texas Instruments SN74LS670N) Un fitxer registre és una matriu de registres direccionables que té dos o més ports que permeten la lectura i escriptura simultànies dels registres de la matriu. La lectura no és destructiva, és a dir, que l'acte de lectura no altera les dades emmagatzemades.

Cada port és un port d'escriptura o un port de lectura, amb senyals d'entrada i sortida rellevants per a la funció del port. Tots els ports tenen entrades d'adreça que especifiquen el registre al qual s'accedeix. Els ports d'escriptura també tenen entrades de dades que especifiquen el valor que s'escriurà al registre i una entrada d'habilitació d'escriptura que permet escriure les dades. Els ports de lectura tenen sortides de dades que transmeten el valor de sortida del registre.

Els fitxers de registre s'utilitzen en una varietat d'aplicacions, com ara com a registres de processador en unitats centrals de processament (CPU), com a memòria de dades en FIFO i en acceleradors de maquinari.

Arquitectura típica

En unitats centrals de processament (CPU) L'arquitectura del conjunt d'instruccions d'una CPU gairebé sempre defineix un conjunt de registres que s'utilitzen per intercanviar dades entre la memòria i les unitats funcionals del xip. El fitxer de registre forma part de l'arquitectura i és visible per al programador, a diferència del concepte de memòries cau transparents. En les CPU més senzilles, aquests registres arquitectònics corresponen un per un a les entrades d'un fitxer de registre físic (PRF) dins de la CPU. Les CPU més complicades utilitzen el canvi de nom de registres, de manera que el mapatge de quina entrada física emmagatzema un registre arquitectònic concret canvia dinàmicament durant l'execució.

La banca de registres és el mètode d'utilitzar un únic nom per accedir a diversos registres físics diferents segons el mode de funcionament.

Canvi de registre i banc Els fitxers de registre es poden agrupar com a bancs de registre.Wikibooks: Microprocessor Design/Register File#Register Bank. Un processador pot tenir més d'un banc de registre.

Els processadors ARM tenen registres emmagatzemats i no emmagatzemats. Tot i que tots els modes sempre comparteixen els mateixos registres físics per als primers vuit registres d'ús general (GPR), de R0 a R7, el registre físic al qual apunten els registres emmagatzemats, de R8 a R14, depèn del mode operatiu en què es troba el processador. Cal destacar que el mode de sol·licitud d'interrupció ràpida (FIQ) té el seu propi banc de registres per a R8 a R12, i l'arquitectura també proporciona un punter de pila privat (R13) per a cada mode d'interrupció.

Els processadors x86 utilitzen commutació de context i interrupcions ràpides per canviar entre instruccions, descodificadors, GPR i fitxers de registre, si n'hi ha més d'un, abans que s'emeti la instrucció, però això només existeix en processadors que admeten l'execució superescalar. Tanmateix, la commutació de context és un mecanisme totalment diferent del banc de registres d'ARM dins dels registres.

El MODCOMP i els processadors posteriors compatibles amb 8051 utilitzen bits de la paraula d'estat del programa per seleccionar el banc de registres actiu actualment.

Implementació física dreta La convenció de disseny habitual és que una matriu simple es llegeix verticalment. És a dir, una sola línia de paraula, que s'executa horitzontalment, fa que una fila de cel·les de bits posi les seves dades en línies de bits, que s'executen verticalment. Els amplificadors de detecció, que converteixen les línies de bits de lectura de baixa velocitat en nivells lògics de velocitat completa, solen estar a la part inferior (per convenció). Els fitxers de registre més grans de vegades es construeixen mitjançant matrius simples en mosaic, mirant i girant.

Els fitxers de registre tenen una línia de paraula per entrada per port, una línia de bit per bit d'amplada per port de lectura i dues línies de bit per bit d'amplada per port d'escriptura. Cada cel·la de bit també té un Vdd i un Vss. Per tant, l'àrea del pas del cable augmenta com el quadrat del nombre de ports, i l'àrea del transistor augmenta linealment.Johan Janssen. "Compiler Strategies for Transport Triggered Architectures". 2001. p. 169. p. 171-173. En algun moment, pot ser més petit i/o més ràpid tenir diversos fitxers de registre redundants, amb un nombre més petit de ports de lectura, en lloc d'un únic fitxer de registre amb tots els ports de lectura. La unitat entera del MIPS R8000, per exemple, tenia un fitxer de registre de 64 bits amb 9 entrades de lectura i 4 ports d'escriptura, 32 entrades, implementat en un format de 0,7. procés de μm, que es podia veure en mirar el xip des de la distància del braç.

Dos mètodes populars per dividir els registres en diversos fitxers de registre són la configuració de fitxers de registre distribuïts i la configuració de fitxers de registre particionats.Johan Janssen. "Compiler Strategies for Transport Triggered Architectures". 2001. p. 169. p. 171-173.

En principi, qualsevol operació que es pogués fer amb un fitxer de registre de 64 bits d'amplada amb molts ports de lectura i escriptura es podria fer amb un únic fitxer de registre de 8 bits d'amplada amb un únic port de lectura i un únic port d'escriptura. Tanmateix, el paral·lelisme a nivell de bit dels fitxers de registre amplis amb molts ports els permet executar-se molt més ràpid i, per tant, poden fer operacions en un sol cicle que trigarien molts cicles amb menys ports o una amplada de bit més estreta, o ambdues coses.

L'amplada en bits del fitxer de registre sol ser el nombre de bits de la mida de la paraula del processador. De vegades és lleugerament més ampla per tal d'adjuntar bits "extra" a cada registre, com ara el bit de poison. Si l'amplada de la paraula de dades és diferent de l'amplada d'una adreça (o en alguns casos, com el 68000, fins i tot quan tenen la mateixa amplada), els registres d'adreces es troben en un fitxer de registre separat dels registres de dades.

Descodificador El descodificador sovint es divideix en predescodificador i descodificador pròpiament dit. El descodificador és una sèrie de portes AND que controlen les línies de paraules. Hi ha un descodificador per port de lectura o escriptura. Si la matriu té quatre ports de lectura i dos d'escriptura, per exemple, té 6 línies de paraula per cel·la de bits a la matriu i sis portes AND per fila al descodificador. Tingueu en compte que el descodificador ha de coincidir amb el to de la matriu, cosa que obliga a que aquestes portes AND siguin amples i curtes.

Matriu marc|Un fitxer de registre típic, de "triple port", capaç de llegir des de 2 registres i escriure a 1 registre simultàniament, està format per cel·les de bits com aquesta.

L'estat s'emmagatzema en un parell d'inversors. Les dades es llegeixen mitjançant un transistor NMOS a una línia de bits. Les dades s'escriuen curtcircuitant un costat o l'altre a terra a través d'una pila de dos NMOS. Així doncs: els ports de lectura ocupen un transistor per cel·la de bits, els ports d'escriptura ocupen quatre.

Moltes optimitzacions són possibles:

Compartició de línies entre cel·les, per exemple, Vdd i Vss. Les línies de bits de lectura sovint es precarregan a alguna cosa entre Vdd i Vss. Les línies de bits de lectura sovint només oscil·len una fracció del camí a Vdd o Vss. Un amplificador de detecció converteix aquest senyal de petita oscil·lació en un nivell lògic complet. Els senyals de petita oscil·lació són més ràpids perquè la línia de bits té poca excitació però molta capacitat paràsita. Les línies de bits d'escriptura es poden trenar, de manera que s'acoblen per igual a les línies de bits de lectura properes. Com que les línies de bits d'escriptura estan a ple rendiment, poden causar pertorbacions significatives a les línies de bits de lectura. Si Vdd és una línia horitzontal, es pot desactivar, mitjançant un altre descodificador, si algun dels ports d'escriptura està escrivint aquesta línia durant aquest cicle. Aquesta optimització augmenta la velocitat d'escriptura. Les tècniques que redueixen l'energia utilitzada pels fitxers de registre són útils en electrònica de baixa potència."Energy efficient asymmetrically ported register files" by Aneesh Aggarwal and M. Franklin. 2003.

Microarquitectura La majoria de fitxers de registre no fan cap disposició especial per evitar que diversos ports d'escriptura escriguin a la mateixa entrada simultàniament. En canvi, el maquinari de planificació d'instruccions garanteix que només una instrucció en un cicle concret escrigui una entrada concreta. Si s'emeten diverses instruccions dirigides al mateix registre, totes menys una tenen les seves habilitacions d'escriptura desactivades.

Els inversors creuats triguen un temps finit a establir-se després d'una operació d'escriptura, durant el qual una operació de lectura trigarà més o retornarà errors. És habitual tenir multiplexors de bypass que ignoren les dades escrites als ports de lectura quan es comanda una lectura i escriptura simultànies a la mateixa entrada. Aquests multiplexors de bypass sovint formen part d'una xarxa de bypass més gran que reenvia resultats que encara no s'han confirmat entre unitats funcionals.

El fitxer de registre normalment té un pas adaptat a la ruta de dades que serveix. El pas adaptat evita que molts busos que passen per la ruta de dades facin cantonades, cosa que ocuparia molta àrea. Però com que cada unitat ha de tenir el mateix pas de bit, cada unitat de la ruta de dades acaba amb el pas de bit forçat per la unitat més ampla, cosa que pot malgastar àrea a les altres unitats. Els fitxers de registre, com que tenen dos cables per bit per port d'escriptura i com que totes les línies de bit han de contactar amb el silici a cada cel·la de bit, sovint poden establir el pas d'una ruta de dades.

De vegades es pot estalviar àrea en màquines amb diverses unitats en una ruta de dades tenint dues rutes de dades una al costat de l'altra, cadascuna de les quals té un pas de bit més petit que el que tindria una sola ruta de dades. Aquest cas normalment força múltiples còpies d'un fitxer de registre, una per a cada ruta de dades.

L'Alpha 21264 (EV6), per exemple, va ser la primera microarquitectura gran a implementar una "arquitectura de fitxers de registre ombra". Tenia dues còpies del fitxer de registre enter i dues còpies del registre de coma flotant situades al seu front-end (fitxer futur i escalat, cadascun amb dos ports de lectura i dos d'escriptura), i necessitava un cicle addicional per propagar dades entre els dos durant un canvi de context. La lògica emissora intentava reduir el nombre d'operacions que reenviaven dades entre els dos i va millorar considerablement el seu rendiment enter, i va ajudar a reduir l'impacte del nombre limitat de registres d'ús general en arquitectures superescalars amb execució especulativa. Aquest disseny va ser adaptat posteriorment per SPARC, MIPS i algunes de les implementacions posteriors de x86.

El MIPS també utilitza diversos fitxers de registre. La unitat de coma flotant R8000 té dues còpies del fitxer de registre de coma flotant, cadascuna amb quatre ports d'escriptura i quatre de lectura, i escrivia ambdues còpies alhora amb un canvi de context. Tanmateix, no admetia operacions amb enters i el fitxer de registre enters seguia sense canvis. Més tard, a causa de les demandes del mercat integrat, els fitxers de registre ombra es van abandonar en els dissenys més nous.