SPARC: Różnice pomiędzy wersjami

[wersja nieprzejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
A. (dyskusja | edycje)
m →‎Linki zewnętrzne: Kategoria:Architektury procesorów
T ziel (dyskusja | edycje)
redakcja
Linia 6:
 
Procesory opracowane na podstawie architektury SPARC używane są powszechnie w wysokowydajnych [[serwer]]ach, [[stacja robocza|stacjach roboczych]], a także [[systemy wbudowane|systemach wbudowanych]] (ang. ''embeded'').
Zaprezentowane po raz pierwszy w 1985 roku przez [[Sun]]'a. Architektura SPARC, będąca zawczasu bardzo radykalna, pozwala na ominięcie wielokrotnych pętli mnożenia i dzielenia. Inną podstawową cechą architektury SPARC, nie częstonieczęsto spotykaną w innych rozwiązaniach, jest zastosowanie bardzo dużego zestawu rejestrów ogólnego przeznaczenia (zalecenia implementacyjne mówią nawet o zestawie 64 do 528 - 64-bitowych rejestrach) dostępowanychdostępnych poprzez "okna rejestrów" które mogą być przełączane podczas każdorazowego wywołania podprogramu czy obsługi przerwania, za pomocą instrukcji ''SAVE'', tak że zbiór rejestrów stanowiących parametry wywołania podprogramu staje się automatycznie zbiorem rejestrów parametrów lokalnych bez dodatkowych działań programowo-sprzętowych (''patrz obrazek'').
 
===Specyfikacja SPARC-v9===
[[Grafika:SPARC-okno-rejestrow.png|thumb|200px|right|Zasada działania okna rejestrów]]
Architektura SPARC-v9 zawiera dwa typy rejestrów: rejestry ogólnego przeznaczenia (nazywane rejestrami roboczymi) oraz rejestry statusowe/kontrolne.
* Zestaw rejestrów roboczych zawerazawiera:
** Rejestry całkowitoliczbowe (rejestry ''r'')
** Rejestry zmienno pozycyjnezmiennopozycyjne (rejestry ''f'')
* Zestaw rejestrów statusu/kontrolne zawiera, m.in.:
** Rejestr licznika programu (PC)
Linia 21:
** i wiele innych...
 
'''Rejestry ogólnego przeznaczenia''' - ''r'', podzielone są na grupy: 8 rejestrów globalnych (ang. ''global registers''), 8 alternatywnych rejestrów globalnych (ang. ''alternate global registers'') oraz zależną od implementacji liczbę zestawów 24 rejestrów dostępnych jako okno rejestrów (ang. ''register window'') podzielone jako: 8 rejestrów wejściowych (ang. ''in''), 8 rejestrów lokalnych (ang. ''local'') i 8 rejestrów wyjściowych (ang. ''out''). Rejestry ''r[0] - r[7]'' stanowią zestaw rejestrów globalnych o nazwach odpowiednio ''g0 - g7''. Rejestr globalny ''g0'' (''r[0]'') zawiera zawsze wartość zero i zwraca ją podczas odczytu, natomiast podczas zapisu do tego rejestru zapisywana wartość jest ignorowana (tak naprawdę, to odwołanie do tego rejestru za pomocą pewnych instrukcji - LDD, LDA, STD, STA, powoduje zapisanie wyniku w rejestrze ''r[0]''). Drugim specyficznym rejestrem jest ''r[15]'' do którego zapisywany jest adres instrukcji wywołania CALL. Wybór pomiędzy zestawami rejestrów globalnych - aktualnym i alternatywnym - odbywa się poprzez wybór w polu AG (ang. ''alternate global'') rejestru stanu procersoraprocesora PSTATE. Dodatkowy zestaw rejestrów globalnych został wprowadzony w specyfikacji v9. Przełączanie okien rejestrów ogólnego przeznaczenia ''r'' realizowane jest za pomocą instrukcji SAVE (zwiększająca numer aktywnego okna) oraz RESTORE (zmniejszająca numer aktywnego okna). Przekroczenie możliwych wartości w rejestrze CWP wskazującego na aktulaneaktualne okno rejestrów jest kontrolowane przez zawartość rejestrów CANSAVE oraz CANRESTORE i w przypadku przekroczenia procesor generuje pułapkę (ang. ''trap'').
 
'''Zestaw rejestrów zmienno-pozycyjnychzmiennopozycyjnych''' (ang. ''floating-point'') ''f'' zawiera:
*32 rejestry pojedynczej precyzji (ang. ''single-precision'' - 32-bity) oznaczane jako ''f[0], f[1], - f[31]''
*32 rejestry podwójnej precyzji (ang. ''double-precision'' - 64-bity) oznaczone jako ''f[0], f[2], - f[62]''
*16 rejestrów poczwórnej precyzji (ang. ''quad-precision'' - 128-bitów) oznaczone jako ''f[0], f[4], - f[60]''
Zestaw tej zorganizowany jest w ten sposób, że rejestrty mogą na siebie nachodzić. Zestaw ten w przeciwieństwie do rejestrów ogólnego przeznaczenia nie jest podzielony na okna rejestrów i jest dostępny cały czas. Dostęp i operacje wykonywane na tych rejestrach realizowany jest za pomocą specjalnych instrukcji zmienno-pozycyjnychzmiennopozycyjnych '''FPop'''. Zestaw rejestrów oraz wykonywane na nich operacje zgodne sa z normą IEEE std 754-1985.
 
'''Architektura SPARC-v9''' zawiera kilka specyficznych, w porównaniu do [[x86]] i innych znanych procesorów, aspektów, m.in: