Dipl. User mit summa cum laude
Das was Rolus und Jeez sagen, wiederspricht doch in keiner Weise dem, was ich gesagt habe. Ich habe nie gesagt, dass ein CISC keine einfachen RISC Befehle haben soll. Und die komplexen Funktionen sollen auch nichts bewirken, was mit normalen Prozessoren nicht ginge. Den obigen CPY Befehl gibt es (unter anderem Namen) bereits seit dem 286er Befehlssatz. Und da solche komplexen Funktionen effektiv umgesetzt werden koennten, wuerde sich das anbieten.
Auch die hohe Anzahl von Registern sollte aus technischer Sicht nicht das Problem darstellen. Es wurden schon RISC Prozessoren mit mehr als 256 registern in den 80ern gebaut und von Seiten der VM stellt eine hohe Registeranzahl keinen Mehraufwand gegenueber wenigen Registern dar, da die VM die Register in einem einfachen Datenarray verwalten kann.
Was den Programmieraufwand betrifft, so muessen wir in jedem Fall die mathematischen Routinen selber schreiben, wenn wir die Bitbreite und/oder das Encoding aendern. Selbst bei 32bit muessen wir wenn wir von little Endian auf BigEndian wechseln (wobei ich sagen muss letzteres ist besser lesbar, da wir ja auch von links nach rechts lesen, sollte das Least Significant Bit auch rechts stehen) die Arithmetik neu schreiben. Da kommen wir wohl kaum drum rum, ausser wir bauen einen x86 nach.
Das Problem der CISCs liegt ja darin, dass die Dekodierung der Befehle so lange lange dauert, weil ihre Laenge variabel ist, zu gunsten einer hohen Befehlsanzahl. Dieses Problem haben wir ja nicht wirklich, auch wenn wir mit unserem Prozessor realistisch halten wollen. Mit einer festen Befehlsstruktur haben wir genuegend Platz um die Befehle sehr flexibel zu halten. Wenn ein Befehl immer aus 96bit besteht, koennen wir alle besonderheiten gleich hineincodieren. Nehmen wir einfach mal an, unser Prozessor wuerde 2048 verschiedene Register haben (addressierbar ueber 12 bit). Das koennte z.B. in einem InVivo Prozessor durch einen weiteren addressierbaren First Level Cache realisiert werden (wie es in einigen RISC Prozessoren der Fall ist), der 384 kB gross waere. Dann koennte man die 96bit eines jeden Befehles in 8 Bloecke a 12bit unterteilen. Die ersten 12bit koennten zur Bezeichnung von bis zu 2048 Befehlen verwendet werden. Die anderen 7 Bloecke koennten zur Addressierung von bis zu 7 Registern, zur Spezifizierung des Datenformats (Register mit welcher Bitbreite interpretieren), zur Uebergabe von konstanten Daten oder aehnliches benutzen. Wenn zusaetzliche Daten oder Daten in voller 96bit Breite erforderlich sind, koennen immer noch weitere Daten zur Berarbeitung nachgeladen werden. Wenn ein Befehl also nicht die vommen 96bit braucht, wuerde einfach der Rest mit Nullen gepaddet werden. Zumindest wuerde es wohl ein In Vivo Prozessor so machen.
Geändert von Ineluki (12.04.2006 um 23:00 Uhr)