SPARC - Google

SPARC

Z Wikipedii

Skocz do: nawigacji, szukaj
Mikroprocesor Sun UltraSPARC II
Mikroprocesor Sun UltraSPARC II

SPARC - ang. Scalable Processor ARChitecture - architektura mikroprocesorów RISC zaprojektowana początkowo przez firmę Sun Microsystems, a od roku 1989 rozwijana przez organizację SPARC International.

Spis treści

[edytuj] Opis

Architektura SPARC określa 32-bitową (SPARC version 8) oraz 64-bitową (SPARC version 9) architekturę programową mikroprocesora (ang. ISA - Instruction Set Architecture) oraz zawiera wskazówki pomagające w implementacji tej architektury. SPARC jest otwartą architekturą (zgodnie z dawną definicją otwartości - przyp. autora), oznacza to że dostępna jest publicznie cała dokumentacja opisująca ISA oraz wskazówki dla osób lub firm implementujących. Dodatkowo firmy będące członkami organizacji SPARC mają wpływ na rozwój tej architektury oraz prawo do używania znaków handlowych. Dostępna jest także otwarta implementacja - na licencji GNU LGPL, kod w języku VHDL - procesora o nazwie LEON.

Procesory opracowane na podstawie architektury SPARC używane są powszechnie w wysokowydajnych serwerach, stacjach roboczych, a także systemach wbudowanych (ang. embedded). Zaprezentowane po raz pierwszy w 1985 roku przez Suna. Architektura SPARC, będąca zawczasu bardzo radykalna, pozwala na ominięcie wielokrotnych pętli mnożenia i dzielenia. Inną podstawową cechą architektury SPARC, nieczę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ę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).

Zasada działania okna rejestrów
Zasada działania okna rejestrów

[edytuj] Specyfikacja SPARC-v9

Architektura SPARC-v9 zawiera dwa typy rejestrów: rejestry ogólnego przeznaczenia (nazywane rejestrami roboczymi) oraz rejestry statusowe/kontrolne.

  • Zestaw rejestrów roboczych zawiera:
    • Rejestry caÅ‚kowitoliczbowe (rejestry r),
    • Rejestry zmiennopozycyjne (rejestry f).
  • Zestaw rejestrów statusu/kontrolne zawiera, m.in.:
    • Rejestr licznika programu (PC),
    • Rejestr stanu procesora (PSTATE),
    • Rejestr adresu bazowego puÅ‚apki (TRAP),
    • Rejestr wskaźnika aktualnego okna (CWP),
    • 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 procesora 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 aktualne 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 zmiennopozycyjnych (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 rejestry 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 zmiennopozycyjnych 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:

  • instrukcje warunkowego przesÅ‚ania danych - stosowane w przypadku prostego warunkowego przypisania zmiennych, umożliwiajÄ… wyeliminowanie instrukcji skoku
  • instrukcje wymuszajÄ…ce wstÄ™pne pobranie danych (ang. prefetch) - umożliwiajÄ… zminimalizowanie opóźnienia zwiÄ…zanego z dostÄ™pem do danych które nie znajdujÄ… siÄ™ w pamiÄ™ci cache
  • instrukcje zaÅ‚adowania danych które nie generujÄ… wyjÄ…tków (ang. nonfaulted-load) - stosowane główne ze wzglÄ™du na możliwość dostÄ™pu do danych z wyprzedzeniem, a które to wyprzedzenie mogÅ‚oby naruszyć zasady ochrony danych
  • instrukcje skoków opóźnionych - wszystkie instrukcje zmieniajÄ…ce sekwencjÄ™ wykonania programu (z wyjÄ…tkiem instrukcji: DONE, RETRY i instrukcji puÅ‚apek Tcc) powodujÄ… modyfikacjÄ™ rejestru nPC (rejestr ten wskazuje zawsze na instrukcjÄ™ która bÄ™dzie wykonywana po instrukcji nastÄ™pnej do wykonania wskazywanej przez rejestr PC) i skutkujÄ… zawsze wykonaniem jednej instrukcji nastÄ™pujÄ…cej bezpoÅ›rednio za tÄ… instrukcjÄ…
  • architektura jest standardowo typu big-endian, lecz tak naprawdÄ™ jest niezależna od zastosowanej konwencji i może wprost obsÅ‚ugiwać dane jako little-endian, wÅ‚aÅ›ciwość ta zmieniana jest za pomocÄ… bitu w rejestrze stanu procesora PSTATE za pomocÄ… instrukcji uprzywilejowanej.

[edytuj] Organizacja SPARC International

SPARC International została założona w 1989 roku jako niezależna organizacja niekomercyjna (ang. non-profit) w celu nadzorowania i kierowania rozwojem architektury SPARC. Organizacja posiada prawa do modelu programowego (ang. ISA - Instruction Set Architecture) architektury SPARC, znaków handlowych (ang. trademarks) SPARC, oraz pochodnych znaków handlowych (ang. derivative trademarks - TM) SPARC. Organizacja jest utrzymywana wyłącznie przez członków organizacji wspierających architekturę SPARC oraz technologie otwartych standardów. Członkami organizacji SPARC są m.in: Fujitsu, Sun Microsystems, Texas Instruments, LSI Logic, Toshiba Corporation oraz wiele mniej lub bardziej znanych firm.

[edytuj] Producenci procesorów SPARC

[edytuj] Linki zewnętrzne


Towarzysko: remis Islandii
Piłkarze Islandii zremisowali przed własną publicznością w towarzyskim meczu z Azerbejdżanem 1:1 (0:0).
Towarzysko: Portugalia gromi
W towarzyskim meczu piłkarskim rozegranym w Aveiro Portugalia pokonała Wyspy Owcze 5:0 (1:0).
Pekin: Kusznierewicz i Życki czekają na cud
Mateusz Kusznierewicz i Dominik Życki, mistrzowie świata w żeglarskiej klasie Star przed ostatnim wyścigiem - zaplanowanym na czwartek - mają tylko minimalne szanse na wywalczenie olimpijskiego medalu podczas igrzysk w Pekinie.
ATP w New Haven: Verdasco w ćwierćfinale
Rozstawiony z numerem pierwszym Hiszpan Fernando Verdasco pokonał Czecha Ivo Minara 6:3, 6:1 i awansował do ćwierćfinału turnieju ATP tenisistów na twardych kortach w amerykańskim New Haven (z pulą nagród 708 tys. dol.).
Towarzysko: Gruzja wygrała z Walią
Walia przegrała z Gruzją 1:2 (1:0) w towarzyskim meczu piłkarskim w Swansea.
Linki: Strona g³ówna