SPARC: diferència entre les revisions

Contingut suprimit Contingut afegit
m Corregit: hitecture'') es una > hitecture'') és una
m Terminologia: adreçament/encaminament
Línia 8:
SPARC és la primera arquitectura RISC oberta i com tal, les especificacions de disseny estan publicades, així més fabricants de microprocessadors poden desenvolupar el seu propi disseny.
 
Una de les idees innovadores d'aquesta arquitectura és la finestra de registres que permeten fer fàcilment [[compilador]]s d'alt rendiment i una significativa reducció de memòria en lasles instruccions load/store en relació amb altres arquitectures RISC. Els avantatges s'aprecien sobretot en programes grans.
 
La CPU SPARC està formada d'una unitat sencera, UI (''Integer Unit'') que processa l'execució bàsica i una [[FPU]] (''Floating-Point Unit'') que executa les operacions i càlculs de reals. La IU i la FPU poden o no estar integrades en el mateix xip.
 
Encara que no és una part formal de l'arquitectura, els PCs basats amb sistemes SPARC de [[Sun Microsystems]] tenen una unitat de maneig de memòria ([[MMU]]) i un gran caché de direccionsd'adreces virtuals (per a instruccions i dades) que estan disposats perifèricament sobre un bus de dades i direccionsadreces de 32 bits.
 
== Principals característiques ==
 
* La seva característica distintiva esés utilitzar finestres de registres.
* 32 registres de sencers de 32 bits.
* 16 registres de [[coma flotant|punt flotant]] de [[64 bits]] (pel cas de [[doble precisió]]) que es poden utilitzar com 32 registres de 32 bits (per a precisió simple).
* Modes de direccionamentd'adreçament:
** Immediat, (constants de 13 bits).
** Directe, (offset de 13 bits).
Línia 30:
== Tipus d'instruccions ==
 
L'arquitectura SPARC te prop de 50 instruccions senceres, poques més que l'anterior disseny RISC, però menys de la mitatmeitat del nombre d'instruccions senceres del 6800 de Motorola.
 
Les instruccions de SPARC es poden classificar en cinc categories:
 
* LOAD i STORE (L'única manera d'accedir a la memòria). Aquestes instruccions utilitzen dos registres o, un registre i una constant per a calcular l'adreça de memòria aque cal direccionaradreçar.
 
* Instruccions Aritmètico/Lògiques/Desplaçament. Executen operacions aritmètiques, lògiques i de desplaçament de bits. Aquestes instruccions calculen el resultat si esés una funció de 2 operadors i emmagatzemen el resultat en un registre.
 
* Operacions del coprocessador. La IU extrau les operacions de punt flotant des de les instruccions del bus de dades i els situa en la cua per la [[FPU]]. La [[FPU]] executa els càlculs de punt flotant amb un nombre fix en unitat aritmètica de punt flotant, (el nombre depèn de l'aplicació). Les operacions de punt flotant són executades concurrentment amb les instruccions de la IU i amb altres operacions de punt flotant quan és necessari. L'arquitectura SPARC també especifica una interfície per la connexió d'un coprocessador addicional.
 
* Instruccions de Control de Transferència. Aquestes inclouen jumps, calls, traps i branches. El control de transferència esés retardat usualment fins després de l'execució de la pròxima instrucció, així el pipeline no és buidat perquè es produeixi un control de temps. D'aquesta manera, els compiladors poden ser optimitzats per ramificacions retardades.
 
* Instruccions de control de registres Read/Write. Aquestes instruccions s'inclouen per llegir i enregistrar el contingut de diversos registres de control. Generalment la font del destí està implícit en la instrucció.
 
== Finestra de registres ==
Un tret únic que caracteritza al disseny SPARC, és la finestra amb solapamentsuperposició de registres. El processador posseeix molt més que 32 registres sencers, però presenta a cada instant 32. Una analogia pot ser creada comparant la finestra de registres amb una roda rotativa. Alguna part de la roda sempre està amb contactocontacte amb el terra; així alen girar-la prenem diferents porcions de la roda, (l'efecte esés similar per al overlap de la finestra de registres). El resultat d'un registre es canvia per l'operand per la pròxima operació, descartant la necessitat d'una instrucció Load i Store extres.
 
Es va acordar per l'especificació de l'arquitectura, poder disposar de 32 registres "visibles" dividits en grups de 8.
Línia 54:
* De r24 a r31, Registres ENTRADA.
 
Els registres globals són "vistos" per totes les finestres, els locals solament són accessibles per la finestra actual i els registres de sortida esse solapen amb els registres d'entrada de la següent finestra (els registres de sortida per una finestra s'han de ficar com a registres d'entrada per la pròxima, i han d'estar en el mateix registre).
 
El punter de finestra manté la pista de la finestra que actualment és activa. Existeixen instruccions per "obrir" i "tancar" finestres, per exemple per una instrucció "call", la finestra de registres gira en sentit anti horari; pel retornoretorn des d'una instrucció "call", gira en sentit horari.
 
Una interrupció utilitza una finestra fresca, és a dir, obre una finestra nova. La quantitat de finestres és un paràmetre de la implementació, generalment 7 o \d.
 
L'alternativa més elaborada per circundar lentament la finestra de registres esés col·locar els registres durant el temps de compilació. Per a llenguatges comocom C, Pascal, etz., aquesta estratègia és difícil i consumeix molt temps. Per això, el compilador és crucial per millorar la productivitat del programa.
 
"Recents investigacions suggereixen que la finestra de registres, trobada en els sistemes SPARC però no en altres màquines RISC comercials, estan en condicions de proveir un rendiment excel·lent per a llenguatges de desenvolupament com [[Lisp]] i [[Smalltalk]]." (R. Blau, P.Foley, etz. 1984).