Diky za clanek, SPARC jsem nikdy nestudoval, takovyhle strucny uvod je vyborna vec.
Jen mi neni jasne toto: Opravdu se v tabulce pred obrazkem vlozi bublina D jeste pred tim nez se provede IF nasledujici instrukce? Jak by pak CPU poznal ze kdyz dalsi instrukce neni zavisla na loadu, ze tam bublinu nema vlkadat?
Chapal bych, kdyby obrazek vypadal takto
1 IF --
2 EX IF
3 MA D
4 WB EX
5 -- MA
6 -- WB
Nebo mozna by bylo prehlednejsi kreslit kterou instrukci se ta-ktera jednotka zabyva
----- cas --->
IF 1 2 - - - -
EX - 1 D 2 - -
MA - - 1 D 2 -
WB - - - 1 D 2
Ono to spis nez o nejake "mezinarodni politice" je o licencni politice Sunu. U vetsiny jinych procesoru si muzete vybrat jestli od nejakeho omezeneho mnozstvi dodavatelu (typicky 1) licencujete IP core za relativne draho nebo si to navrhnete cele sami (a pak na vas obcas nekdo nabehne, ze stejne chce zaplatit za licenci). Zato u toho Sparcu jsou dostupna IP core od mnoha vyrobcu (vcetne Sunu samotneho) ktere jsou k mnoha uzitecnym aplikacim k dispozici zdarma a povetsinou open source. Prvotni pricina je jasne zrejma v tom, ze od zacatku Sparc vyrabelo neuveritelne mnostvi ruznych vyrobcu. Dusledek je pak obecna obliba Spracu pro "specialni" aplikace (napr. ESA ma svoji vlastni variantu Sparcu od ktere je spousta jinych embedded variant odvozena).
Nejjednodušší je instrukce skoku, v níž je použita 30bitová konstanta, která je posunuta o dva bity doleva, takže výsledkem tohoto výpočtu je 32 bitová adresa se zarovnáním na čtyři bajty
Toto je format instrukce CALL, ne skoku. AFAIK ke skokum se pouziva bud BA (branch always) nebo JMPL, ktera ma format jako bezne aritmeticke operace a adresa se pocita z hodnotu registru. Dobry ulet je pak jeste operace BN (branch never), ktera nikdy skok neprovede.
Mate pravdu, ma byt instrukce skoku do subrutiny. Mimochodem BN resp. podobne oznacovana instrukce se pouziva(la) na nekterych Motorolach, kde doplnovala sadu podminenych skoku na celkove sestnact instrukci - 14 skoku s podminkou, jeden skok provedeny vzdy (BRA) a skok "provedeny nikdy" (BRN) - v podstate se tam jednalo o dvoubajtovy ci tribajtovy NOP, kdezto u RISCu s 32bitovymi instrukcemi je to proste jeden z x-zpusobu implementace NOPu :-)
Netreba zabudat na to ze UltraSparc T1 (dost mizerny vykon vo float operaciach) a UltraSparc T2 boli vydane pod otvorenou licenciou, takze si kazdy moze vyrobit vlastny procesor, ak by majoritni vyrobcovia zacali "blbnut" (napriklad implementovali nevypinatelnu hardwarovu podporu DRM) :-)
http://en.wikipedia.org/wiki/OpenSparc