das ist ein text der kategorie home

lass die geschichte beginnen

Erstellt: Sonntag, 23. August 2020 Geschrieben von Marcus Meyer

warum

seit ich mich erinnern kann faszinieren mich die verschiedenen cpu architekturen und die zusammenhänge zwischen der hardwarearchitektur und der befehlsarchitektur, der ISA.
aber warum nun diese seite? getriggert wurde mein denkweise vor ein paar jahren, als RISK-V anfing viel aufmerksamkeit zu bekommen. zwei punkte triggerten mich dabei besonders. mein erster gedanke war "boaaa, schon wieder ein neuer RISC (yar-yet another risc)" aber der zweite faszinierte mich dann doch, das hier aus meiner sicht ein meilenstein gesetzt wurde, diese ISA unter die BSD-Lizenz zu packen - wie geil ist das denn! nachdem ich den design guide von andrew waterman las insperierte er mich dieses thema dann aus meinen hintergrundwindungen meines gehirns in einen fokus bereich zu verschieben. diese webseite ist nun genau dafür gedacht, meine erkenntnisse aus den letzten jahren mal zu verschriftlichen um sie aus meinen kopf raus zu bekommen.


historie

in meinen anfängen der computerei, die durch zx81 und dem vc20 geprägt wurden, kam ich sehr schnell nach ersten gehversuchen mit dem comodere basic mit so komischen hexzeichen in berührung aus irgendwelchen zeitschriften was dann umgangssprachlich irgendwie "assembler" hieß und besonders schnell sein soll. das war der erste maschinencode vom 6502 mit dem ich zu tun hatte. ab da ging es los und fasziniert mich bis heute. aus heutiger sicht kann ich nur meinen hut ziehen, wie aus nur 3,5k transistoren eine solche performance generiert werden kann. ich hatte viel spass mit dem 6502 und extrem viel gelernt über das schon oben beschriebene zusammenspiel von silizium und isa. mein umwerfend nächster schritt war dann ein atari st mit seiner 68k cpu. mainframe power auf einem heimcomputer, wahnsinn. dir 68k wurde dann zu meiner wohlfühl cpu. eine coole ISA auf der es spass machte zu entwickeln. im gegensatz dazu fande ich die 80x86 zu seiner zeit sehr sperrig, unintuitiv und inperformant. meine denke zu der zeit war dann auch, das sich das mit den x86'ern nicht durchsetzen wird - nicht meine letzte fehlannahme ;) schon damals reifte ein gedanke bei unendlich vielen diskussionen mit meinem kumpel marek, während wir ein eigens betriebssystem entwickelten, eine art microkernel system, wie wir denn herr werden über die vielen verschiedenen ISA's. doch dazu später mehr. der i860 von intel war dann der einstieg in welt des pipelinings und der parrallelverarbeitung, denn er konnte bis zu drei befehle gleichzeitig ausführen. am i860 wurde das erste mal klar, das im gegensatz zum 68k es nicht mehr so einfach sein würde auch komplexere systeme in maschinensprache zu entwickeln. einer der letzten zu dieser zeit überraschend interessanten prozessoren waren dann die transputer von inmos. bis heute finde ich die ISA elegant und effizient, mit einem stack anstelle von registern zu arbeiten finde ich nach wie vor aus sehr vielen gründen äußerst charmant. leider hat er der t9000 dann nicht wirklich geschafft die firma aus ihrer schieflage zu bewegen, obwohl er für seine zeit meines erachtens weit voraus war. wirklich interessante entwicklungen gab es meiner ansicht nach dann nur noch wenige, wie den itanium, der cell und die transmeta serie. auch die transmetas hatten es mir angetan. einen x86 zu emulieren, und mit einem sehr effizienten vliw auszuführen, der nicht für den programmierer sichtbar ist. da hatte ich mich dann doch wieder an die langen gespräche mit marek erinnert. alle anderen sind auch meiner sicht dann doch nur weitere risc's, wo jeder sein eigenes süppchen kochte. natürlich gibt es noch eine vielzahl von anderen prozessoren wie dsp's, microcontroller, und und und, aber ich hatte mich immer auf cpu's konzentriert die allgemeingültig code ausführen. 


und was soll das jetzt alles

wie ich schon oben schrieb, ließ mich der gedanke einer isa nie wirklich los. eigentlich soetwas wie die transputer, nur auf neu getrimmt, halt so wie risc-v, blos anders ;) also habe ich mich vor gut drei jahren auf den weg gemacht, und angefangen zu recherchieren, kann ja nicht so schwer sein. naivität und neugierde ist der anfang der erkenntnis.
als erstes musste ich feststellen, das ich def. nicht der einzige auf der welt bin, der sich gedanken macht über dieses thema. es gibt 1000'de master und doktor arbeiten die sich in den letzten jahren damit auseinander gesetzt hatten. das war und ist es auch noch immer, ein schlaraffenland für mich! und kaum 170 arbeiten später, fange ich auch schon an zu schreiben *lach* angefangen hatte ich damit, zu überlegen womit ich anfangen soll. so das klassische henne ei problem. also emulator oder compiler, und wenn emulator, dann etwas, was auch gleich für einen fpga code erzeugt? also bei recherchieren stieß ich dann auf PyMTL wow, alles was ich brauchte. nach ersten gehversuchen stellt ich aber sehr schnell fest, das wohl doch wichtig ist, zuerst maschinencode zu generieren, was mich unmittelbar zum LLVM bewegte. also habe ich das CPU0 tutorial zum generieren eines backendes durchgearbeitet, habe dabei meine eigene syntax entwickelt, und voilà da hatte ich meine eigene risc isa - yar. ja, cool, aber nicht das was ich wollte. 
also wieder einen schritt zurück, und ersteinmal schauen, worauf das alles basieren soll. ich wollte ja nicht schon wieder eine klassische registerbasierende risc ISA. aber zu meinem erstaunen gibt und gab es sehr wenige stack basierte ansätze. immer wieder wurde stack als nicht skalierbar dargestellt. es gibt zwar ansätze wie sTTAck oder BOOST die beide ihre interessanten seiten haben, aber dann doch eher akademischer natur sind. lange hatte ich mich dann mit einer registerlosen speicher-zu-speicher architektur dem perl prozessor auseinander gesetzt. dieses paper hatte mich wirklich einen großen schritt nach vorne gebracht, weil u.a. hier auf viele andere interessante paper verwiesen werden. ein interessanter aspekt daraus ist, das ein großteil an registern nur ein oder keinmal benutzt wird. die benutzung von registern innerhalb sehr weniger befehle erfolgt, und das zwische 200-300 registern eine art sättigung eintritt. spannend an der registerlosen perl architektur ist auch die tatsache, das es keine load's und store's mehr gibt und dadurch die anzahl an befehlen um 25%-30% gesenkt werden. ein anderer interessanter ansatz war dann die transport-triggert architektur TTA auch wieder äußerst spannend, weil sie pipeline im grunde genommen in einer riesigen switch-matrix abbildet, und dabei die zwischenspeicher der ausführenden einheiten als register mitbenutzt. dadurch kann der druck auf die register drastisch gesenkt werden. allerdings wieder eine register architektur, mal vond er oberen sTTAck architektur mal abgesehen. es gibt noch eine andere variante von dieser exposed datapath architektur das ist scad. während meiner recherchen stieß ich auf zwei weitere aktuelle entwicklungen. einerseits ist das ForwardCom mit seiner vector ISA und sehr vielen interessanten ansätzen, auf die ich später noch zu sprechen komme, und der für mich vielversprechendste ansatz, die Mill CPU mit ihrem fließband (fifo) als register.


mill oder nicht mill - das ist hier die frage

der mill hat mir wirklich die schuhe ausgezogen. an dem mill wird nun schon seit 16jahren gearbeitet, und ich muss sagen, das hat sich wirklich gelohnt. es trifft genau meinen nerv, und ist aus meiner sicht um längen besser als risc-v. jeder aspekt einer cpu architektur wurde angeschaut und nicht nur auf den aktuellen stand der dinge gebracht, sondern kompromisslos alte zöpfe angeschnitten. alleine schon das speichermanagement und der taskwechsel sind schon das optimum was aus meiner sicht möglich ist. gemeinsam mit den vielen anderen aspekten ist das das rundum sorglos paket. und wie sagte claudia immer so schön: immer auf das aber warten ;) 
aber - wenn da nicht die patente wären, und diese schier unglaublich lange entwicklungszeit, die auch noch lange nicht abzusehen ist.


patente

ja, ich bin kein wirklicher freund von patenten. ich glaube eine herangehensweise der freien verfügbarkeit wie sie risc-v vormacht bezüglich der ISA und der dahinterliegenden architektur dazu führt das sich eine große gemeinschaft bilden wird wo alle gemeinsam an einem strang ziehen um ein solch komplexes und kompliziertes system auf ein stabiles level zu heben. daraus werden dann firmen enstehen, die, so wie sifive, sich um diesen dann ihr wissen aufbauen und entsprechend anbieten können. die software sparte hat das schon sehr lange vorgemacht.


und nu

na ja, die idee ist nun zweigeteilt.
1 - neoISA
2 - CPU