Hlavní navigace

Názor ke zprávičce IBM se chystá zbavit divize výroby procesorů od klusacek - Zrovna ten K1 Dever mi neprijde prilis jako...

  • Aktualita je stará, nové názory již nelze přidávat.
  • 22. 10. 2014 23:36

    klusacek (neregistrovaný)

    Zrovna ten K1 Dever mi neprijde prilis jako CISC. Spis je to RISC nebo VLIW, ktery interpretuje ARM instrukce. Jednak primo tak ze je hardwarove prevadi do svych, nebo kdyz objevi cyklus tak pomoci JIT kompilatoru.

    Neco jako byla Transmeta ale myslim ze ta v sobe nemela primou moznost interpretovat x86 kod, coz se nedivim protoze to je pekelne slozite.

    Naprotitomu ARM instrukce celkem jdou, mozna to ani nebude umet vsechny, stacilo by jen ty ktere se pouzivaji casto, treba non-Thumb a ostatni mohou jit pres JIT.

    Takze to o cem oni mluvi jako o mikrokodu je vlastne nativni strojak toho procesoru.

    Slovo mikrokod je bohuzel trochu pretizeno. Puvodne to znamenalo tabulku (v ROM) ve ktere byla ulozena prechodova a vystupni funkce konecneho automatu.

    Pak s nastupem mikroprocesoru to vicemene splynulo s implementaci jednotlivych instrukci pomoci nekolika kroku v teto tabulce kterym se rikalo mikroinstrukce -- obvykle primo (nebo pres jednoduchy dekoder) tahaly za draty ridici sbernice cimz pripojovaly registry k vnirni sbernici, zapinaly ALU, zapisovaly data na vnejsi sbernici CPU, atd. Jelikoz se instrukce neprekryvaly behem provadeni v case, tak se dalo rict ze instrukce sestava z nekolika mikroinstrukci.

    Alternativou k tomuto byl obvodovy radic, ktery delal v podstate totez, jen nebyl implementovan pomoci tabulky v ROM ale slozen primo z NANDu tak aby se choval jako takovato tabulka (pro slozitejsi funkce velmi pracny navrh, jakakoliv zmena znamena cele to predelat, ale jednodussi funkce muzou ve vysledku pouzivat mensi plochu chipu).

    Pak vzniklo IBM801 (a pred nim CRAY), ktere zavedly instrukcni sadu tak jednoduchou ze (1) se instrukce mohly v mnoha pripadech casove prekryvat (2) byly tak jednoduche ze na jejich rizeni stacil obvodovy radic. Tomu se zacalo rikat RISC.

    Pochopitelne, misto obvodoveho radice by se klidne mohl dat mikroprogramovy, jen uz jeho mikroinstrukce by neodpovidaly instrukcim procesoru protoze v kazdem okamziku je jich rozpracovano nekolik kdezto mikroinstrukce, ktera celou tu vyrobni linku na zpracovani instrukci ridi, se provadi v jednom okamziku prave jedna.

    To co pan Tisnovsky mysli mikrokodem, je IMHO tento puvodni vyznam. Tedy zhruba to co bylo v i386. Pak ale prisla i486 a ta mela nejcastejsi instrukce pipelinovane taky, i kdyz nebyly RISC a ty mene caste provadela po staru pomoci mikroprogramoveho radice -- takze mela mikrokod v puvodnim smyslu jen na nektere instrukce. Mozna tam byl jeste jiny mikrokod ktery cely ten procesor ridil, mozna to bylo udelano obvodove, ale jak je uvedeno vyse -- tento mikrokod nesouvisi primo s instrukcni sadou CPU.

    Pak prisel NexGEN, ktery mel uvnir risc procesor s instrukcni sadou nazvanou RISC86 a puvodni x86 instrukce do ni prekladal. Treba add [ebx], 1 se prelozilo na 3 operace load add a store. RISC86 byl superskalarni, tedy schopen dokoncit vice RISC86 operaci za takt, takze i toto drobeni instrukci na mensi kousky nemuselo znamenat zpomaleni. Slozitejsi CISC instrukce tzv. `vector path' (nesouvisi se SIMD, jen shoda jmen) se provadely jako `podprogramy' RISC86 instrukci. Ty byly ulozeny nekde na procesoru a tomu by se dalo tez rikat mikrokod.

    Zajimave je ze Pentium-1 tuto techniku nepouzivalo a delalo to primo jako 486, jen to melo 2 pipeliny.

    Pak AMD koupilo NexGEN a prakticky do ted to funguje takhle (s vylepsenimi samozrejme). Zaroven Intel zavedl ty sve mikrooperace coz je podobna myslenka jako RISC86. Jen to svadi k tomu zacit primo temto instrukci rikat mikrokod, zvlaste kdyz vector-path instrukce jsou pomoci nich naprogramovany takze zastavaji stejnou funkci jako mikrokod v 486.

    Ale je to trochu neco jineho nez mikrokod ktery primo ridil HW, kdyz se jeste tolik nepouzival pipelining.

    A to jsem pro jednoduchost radsi pomlcel o prejmenovavani registru a spekulativnim vykonavani instrukci (coz muze delat jak RISC tak CISC, ale myslim ze zrovna tohle bylo driv na CISC pocitacich -- scoreboarding algoritmus je tusim nekdy ze 70tych let, mozna dokonce i 60tych).