Guten Morgen an alle,
Ich wollt mal fragen ob ich mit meinen überlegungen richtig liege:
Und zwar:
CISC:
Ein Befehl muss durch mehrere Schritte verarbeitet werden. Es muss
jedesmal gewartet werden, bis der Befehl komplett durch ist, um mit
einem neuen anzufangen.
Das ist ja auch das von Neumann Prinzip. Alle Befehle + Adressen werden
in reihe in den Speicher gelegt und dann auch so ausgeführt.
RISC:
Es werden Befehle parallelausgeführt.
Heisst, wenn Befehl_1 mit Schritt A fertig ist und ins Schritt B geht,
wird Schritt A direkt von einem neuen Befehl ausgenutzt. Somit wird Zeit
gespart.
Ist das so korrekt ? :)
Vielen dank!
Da gehen 30 Jahre alte technische Überlegungen und jede Menge
Marketinggeblubber durcheinander. Wir sollten diese Begriffe aufgeben.
Da finden wir nicht mal eine gemeinsame Definition.
Derneue schrieb:> Ist das so korrekt ? :)
Nein.
CISC = *C*omplex *I*nstruction *S*et *Computer
RISC = *R*educed *I*nstruction *S*set *C*omputer
Mit dem was du beschreibst hat das überhaupt nichts zu tun.
Ganz simpel könnte man sagen:
Bei einem RISC Rechner kann das Silizium weniger Befehle, die aber dafür
sauschnell.
Hintergrund der Sache ist, dass man vor RISC (in den Anfängen der
Computerbauerei) dachte, man könne Computer schneller machen, indem man
in die CPU immer komplexere Befehle einbaut, damit das darauf laufende
Programm auf mächtige Grundbausteine zurückgreifen kann.
Das war komplex, fehleranfällig und teuer.
Bis sich dann jemand mal ansah, was bei durchschnittlichen Programmen
tatsächlich auch benutzt wird. Man kam drauf, dass diese mächtigen
Befehle so selten zum Einsatz kamen, dass es sich nicht lohnt diesen
Aufwand zu treiben. Nimm die Befehle die oft vorkommen, schmeiss alles
andere raus und mach dafür die sauschnell. In den seltenen Fällen, in
denen tatsächlich mal so ein Eierleg-Wollmilchsau Befehl zum Einsatz
kommen könnte, setzt man das dann aus diesen einfacheren Befehlen
zusammen. Das ist in Summe immer noch schneller und vor allen Dingen
viel viel einfacher in Silizium zu giessen.
Und es öffnet das Tor um dann auch noch weitergehende Optimierungen
einfacher realisieren zu können.
Nein, glaub das ist falsch. CISC hat einfach einen größeren
Befehlsumfang als RISC aber die Einteilung ist eigentlich egal. Bei Risc
war am Anfang die Grundidee wenige gleichförmige Befehle zu haben die
einfach in eine Pipeline gebracht werden könne. (So 1 Befehl/ Takt
kommt) aber das können moderne CISC auch.
MfG
ich
Nein. Leider nicht.
Zunächst hat die Frage nichts mit der "Von-Neumann-Architektur" zu tun.
Ihr wesentliches Merkmal ist, dass Daten- und Programme in einem
gemeinsamen Speicher, der über ein und den selben Adressbus adressiert
wird, gespeichert sind.
Was CISC und RISC betrifft ist das Unterscheidungsmerkmal, je nach
Standpunkt, ein wenig komplexer zu beschreiben. Ich würde Dir zunächst
empfehlen, die Wikipedia-Artikel, vor allem die englischen Artikel dazu
zu lesen und dann wieder hier nachzufragen, falls noch Details unklar
sind.
Derneue schrieb:> Ich hab mich auf dieses Bild bezogen:> https://de.wikipedia.org/wiki/Pipeline_%28Prozessor%29#/media/File:Befehlspipeline.svg>> https://de.wikipedia.org/wiki/Pipeline_%28Prozessor%29>> Desswegen dachte ich dass es so wäre wie ich schrieb.> Aber beim RISC werden doch schon paar Befehle gleichzeitig ausgeführt?> Sonst wèrde die Zeichnung keinen Sinn ergeben?>> lG
Das Thema Pipelining hat auch nichts mit der Frage CISC/RISC zu tun. Du
wirst in dem ganzen Artikel diese Stichworte nicht finden.
Anders herum: Pipelining lässt sich (und wird) bei CISC und bei RISC
verwendet - jedenfalls gibt es keinen prinzipiellen Grund dagegen.
Allerdings überschneiden sich die zeitliche Entwicklung von Pipelining
und Cache einerseits und die Abkehr von CISC, so daß man den Eindruck
haben könnte es gäbe einen kausalen Zusammenhang. Der Eindruck täuscht.
Das sind zwei völlig verschiedene paar Schuhe.
Karl H. schrieb:> Einen Z80 wird wohl kaum jemand als RISC Rechner bezeichnen. Der machte> auch Pipelining. So wie die meisten CISC Cpus vor und nach ihm
Da verwechselst du aber den Z80 mit dem Z8.
W.S.
Karl H. schrieb:> Bei einem RISC Rechner kann das Silizium weniger Befehle, die aber dafür> sauschnell
Nun ja der ARM1 hatte 1986 30 Befehle und war sicher RISC aber der
Cortex hat heute hunderte Befehle.
Und der erste AVR hatte schon 1994 mehr Befehle als ein 8051 der als
CISC bezeichnet wird. Inzwischen hat der AVR auch über 100 Befehle, vom
XMEGA gar nicht zu reden.
Derneue schrieb:> Ich hab mich auf dieses Bild bezogen:> https://de.wikipedia.org/wiki/Pipeline_%28Prozessor%29#/media/File:Befehlspipeline.svg>> https://de.wikipedia.org/wiki/Pipeline_%28Prozessor%29>> Desswegen dachte ich dass es so wäre wie ich schrieb.> Aber beim RISC werden doch schon paar Befehle gleichzeitig ausgeführt?> Sonst wèrde die Zeichnung keinen Sinn ergeben?>> lG
Das hat aber nichts mit CISC/RISC zu tun. Pipelining versucht nur, die
gesamte (Rechen-) Operation in deren einzelne Aktionen (Instruktion
laden, Daten aus Speicher holen etc) aufzuspalten. Dadurch kann in jedem
Takt quasi parallel gearbeitet werden, indem die nächste Instruktion
schon geladen wird, wenn die davor noch am rechnen ist und so weiter.
CISC und RISC beziehen sich wie die Namen sagen auf den
Instruktionssatz, also das, was die CPUs können. Beispielsweise gibt es
sehr einfache Instruktionen, wie "Addiere operanden 1 und 2" oder "lade
32Bit Variable aus Speicheradresse 0xabcd". Bei CISC gibt es auch sehr
komplizierte, die z.B. ganze Zeichenketten verarbeiten. Dadurch steigt
die Komplexität und die Fehleranfälligkeit. Insbesondere kann man diese
Operationen auch aus einfachen "nachbauen".
edit: meine Fresse, geht das schnell hier :D
W.S. schrieb:> Karl H. schrieb:>> Einen Z80 wird wohl kaum jemand als RISC Rechner bezeichnen. Der machte>> auch Pipelining. So wie die meisten CISC Cpus vor und nach ihm>> Da verwechselst du aber den Z80 mit dem Z8.http://www.z80.info/z80arki.htm
1
....
2
The interesting thing about the Z80-CPU is that you can all ready see
3
the beginning to: what was about to become pipelined constructions.
4
....
5
6
Processor architecture:
7
8
The Z80 CPU has a very interesting architecture. First of all it has
9
"fetch/execute overlapping", witch means that it's possible to get (fetch)
10
next instruction from memory while the first instruction are executed
erste Ansätze von Pipeling. Noch sehr rudimentär, aber immerhin.
Derneue schrieb:> Ist das so korrekt ?
Nö.
http://www.bernd-leitenberger.de/risc.shtmlKarl H. schrieb:> Ganz simpel könnte man sagen:> Bei einem RISC Rechner kann das Silizium weniger Befehle, die aber dafür> sauschnell.
Niemand sagt, daß sie sauschnell wären.
Auch der Transputer war angeblich RISC, aber lahm.
Da schon der 6502 von manchen als RISC angesehen wird, war der INS8060
SC/MP erst recht RISC, aber ebenfalls saulangsam. Und erst der MC14500,
glatte 16 Befehle und schnachlahm.
Lothar schrieb:> Karl H. schrieb:>> Bei einem RISC Rechner kann das Silizium weniger Befehle, die aber dafür>> sauschnell>> Nun ja der ARM1 hatte 1986 30 Befehle und war sicher RISC aber der> Cortex hat heute hunderte Befehle.>> Und der erste AVR hatte schon 1994 mehr Befehle als ein 8051 der als> CISC bezeichnet wird. Inzwischen hat der AVR auch über 100 Befehle, vom> XMEGA gar nicht zu reden.
Aber der wesentliche Unterschied zwischen RISC/CISC ist nicht die Anzahl
der Befehle sondern die Mächtigkeit, die Komplexität jedes einzelnen
Befehls.
Dein Argument ist insofern verständlich, als viele Leute (sorry K.H.B.
:-)), die diese Entwicklung selbst erlebt haben, sagen das wesentliche
Merkmal von RISC seien wenige einfache Befehle. Allerdings ist das im
Kontext zu sehen. Als RISC aufkamen stimmte auch die Qualifizierung
wenige Befehle. Das das nunmehr von der Zählung her nicht stimmt,
ändert aber nichts daran, dass die einzelnen Befehle nach wie vor simpel
im Vergleich zu CISC sind.
Lothar schrieb:> Karl H. schrieb:>> Bei einem RISC Rechner kann das Silizium weniger Befehle, die aber dafür>> sauschnell>> Nun ja der ARM1 hatte 1986 30 Befehle und war sicher RISC aber der> Cortex hat heute hunderte Befehle.>> Und der erste AVR hatte schon 1994 mehr Befehle als ein 8051 der als> CISC bezeichnet wird. Inzwischen hat der AVR auch über 100 Befehle, vom> XMEGA gar nicht zu reden.
Aber der wesentliche Unterschied zwischen RISC/CISC ist nicht die Anzahl
der Befehle sondern die Mächtigkeit, die Komplexität jedes einzelnen
Befehls.
Dein Argument ist insofern verständlich, als viele Leute (sorry K.H.B.
:-)), die diese Entwicklung selbst erlebt haben, sagen das wesentliche
Merkmal von RISC seien wenige einfache Befehle. Allerdings ist das im
Kontext zu sehen. Als RISC aufkamen stimmte auch die Qualifizierung
wenige Befehle. Das das nunmehr von der Zählung her nicht stimmt,
ändert aber nichts daran, dass die einzelnen Befehle nach wie vor simpel
im Vergleich zu CISC sind.
Also nochmal:
Mit pipelining kann man also quasi parallel arbeiten.
Und der Unterschied zwischen CISC und RISC ist der dass CISC sehr viele
komplexe Befehle benutzt, und festgestellt wurde, dass viele der sehr
komplexen Befehle nicht oft benutzt wurden. Somit wurde in RISC alles
auf sehr rudimentäre triviale Befehle reduziert. Die komplexen nicht so
oft benutzen werden im RISC dann durch einfache Bausteine
zusammengebastelt.
Richtig ?
lG
Man muss auch beachten, dass diese Begriffe keine formale Definition
haben. Es waren auch Marketing-Worte. Insofern wird sich immer ein
Standpunkt finden lassen, der plausibel heutige RISC-Befehle in die Nähe
von CISC rückt.
Allerdings kann man mal spaßeshalber ein interessantes Experiment
machen, um den Unterschied ein wenig deutlicher zu machen. Man versuche
einmal, einen Abschnitt von etwa 30 Befehlen 6502-Code in AVR-Assembler
nachzubilden.
Mir ist erst neulich wieder, als ich mal auf meine 6502 Programming
Reference Card geschaut habe, die zur Erinnerung an der Wand hängt,
aufgefallen wie "orthogonal" der Befehlsatz war. Nahezu jeder Befehl
liess sich auf jedes Quell- und Zielargument (Speicher, Register)
anwenden. Das geht beim AVR nicht. Weitere analoge Unterschiede lassen
sich finden.
Insofern muss man ein wenig in die Geschichte dieser Begriffe
hineingehen um den Unterschied zu verstehen.
Derneue schrieb:> Also nochmal:>> Mit pipelining kann man also quasi parallel arbeiten.>> Und der Unterschied zwischen CISC und RISC ist der dass CISC sehr viele> komplexe Befehle benutzt, und festgestellt wurde, dass viele der sehr> komplexen Befehle nicht oft benutzt wurden. Somit wurde in RISC alles> auf sehr rudimentäre triviale Befehle reduziert. Die komplexen nicht so> oft benutzen werden im RISC dann durch einfache Bausteine> zusammengebastelt.>> Richtig ?
Ich denke, so kann man das stehen lassen ohne einen wesentlichen Fehler
zu machen.
Derneue schrieb:> Also nochmal:>> Mit pipelining kann man also quasi parallel arbeiten.
Nicht "quasi" sondern tatsächlich.
> Und der Unterschied zwischen CISC und RISC ist der dass CISC sehr viele
Vorsicht! Da hier im Thread die Verwendung von "viele" als Kritikpunkt
genommen wurde muss man darauf hinweisen, dass die Anzahl der
verschiedenen Befehle kein wesentliches Unterscheidungsmerkmal ist.
> komplexe Befehle benutzt, und festgestellt wurde, dass viele der sehr> komplexen Befehle nicht oft benutzt wurden. Somit wurde in RISC alles> auf sehr rudimentäre triviale Befehle reduziert. Die komplexen nicht so> oft benutzen werden im RISC dann durch einfache Bausteine
-> Befehle (wir reden ja nicht von Fischertechnik :-) )
> zusammengebastelt.>> Richtig ?>> lG
Soweit ja.
Klaus schrieb:> Dein Argument ist insofern verständlich, als viele Leute (sorry K.H.B.> :-)),
braucht kein sorry. Ist schon ok.
> die diese Entwicklung selbst erlebt haben, sagen das wesentliche> Merkmal von RISC seien wenige einfache Befehle.
OK. UNterlassungssünde meinerseits.
Das wenige ist nicht so sehr wichtig. Das Hauptaugenmerk lag auf
einfach (und 'orthogonal').
> Allerdings ist das im> Kontext zu sehen. Als RISC aufkamen stimmte auch die Qualifizierung> wenige Befehle. Das das nunmehr von der Zählung her nicht stimmt,> ändert aber nichts daran, dass die einzelnen Befehle nach wie vor simpel> im Vergleich zu CISC sind.
Weil ichs weiter oben schon mal benutzt habe:
Erinnert mich ein wenig an Benzin-Motor - Diesel-Motor.
In den 60-er Jahren verband man mit Diesel: Einfach im Aufbau, kaum
fehleranfällig, weil einfach: billig in der Herstellung, robust.
Heutige Diesel stehen einem Benziner sehr wahrscheinlich in Punkto
Komplexität in nichts mehr nach.
Karl H. schrieb:> Erinnert mich ein wenig an Benzin-Motor - Diesel-Motor.> In den 60-er Jahren verband man mit Diesel: Einfach im Aufbau, kaum> fehleranfällig, weil einfach: billig in der Herstellung, robust.> Heutige Diesel stehen einem Benziner sehr wahrscheinlich in Punkto> Komplexität in nichts mehr nach.
Was mich wiederum an meine erste Fahrstunde (ich habe sehr spät den
Führerschein gemacht, als ich aus einer U-Bahn-Bus-Grossstadt in die
Pampa zog). Ich bin gerade dabei den Zündschlüssel zu drehen und die
Kupplung kommen zu lassen, als mein Fahrlehrer sagt: "Einen Diesel kann
man eigentlich gar nicht abwürgen". Wröghhhh!
OK.
Die Unterscheidung RISC/CISC ist eh hinfällig, wenn ein Prozessor mit
Microcode arbeitet.
https://de.wikipedia.org/wiki/Mikrocode
Der kann dann zwar eine RISC CPU haben, doch mittels Mikrocode trotzdem
CISC-artige/komplexe Befehle ausführen (in mehreren Takten natürlich).
Einer der Gründe, warum RISC-Rechner "sauschnell" (zumindest einige)
sind:
Die Befehle sind alle gleich lang. Bei CISC-Rechnern ist das meist
anders. Dort gibt es kürzere und längere Befehle. Da muss der
CISC-Rechner erstmal nachschauen, was für ein Typ der jeweilige Befehl
ist, um anschließend Operanden und auch noch weitere Parameter
nachzuladen.
Wenn jedoch alle Befehle gleich lang sind, z.B. 4 Bytes, kann die CPU
die 4 Bytes "blind" laden, bevor es an die Verarbeitung geht.
Johnny B. schrieb:> Die Unterscheidung RISC/CISC ist eh hinfällig, wenn ein Prozessor mit> Microcode arbeitet.
RISC/CISC bezieht sich üblicherweise auf die für den Programmierer
sichtbare Architektur. Nicht auf Details der Implementierung.
> Der kann dann zwar eine RISC CPU haben,
Damit kategorisiert du aber nicht die CPU, sondern einen Teil des Cores
einer CPU. Microcode ist keine neue Erfindung (spätestens 60er Jahre)
und viele CPUs, die auf Basis von Microcode arbeiten, haben
vergleichsweise einfache Cores.
Der Core mancher kleiner VAXen dürfte sich dem Prinzip nach nicht allzu
sehr von den Cores früher ARMs unterschieden haben. Das macht aber aus
dieser VAX keine RISC und aus diesen ARMs kein CISC.
Ebenso enthielten IBM frühe POWER Prozessoren (bis PowerPC 601)
Microcode für einige komplexe Befehle. Das macht aus ihnen kein CISC.
Frank M. schrieb:> Wenn jedoch alle Befehle gleich lang sind, z.B. 4 Bytes, kann die CPU> die 4 Bytes "blind" laden, bevor es an die Verarbeitung geht.
Das gewinnt in dem Mass an zusätzlicher Bedeutung, in dem man mehrere
Befehle parallel dekodiert und ausführt. Bei extrem variabler
Befehlslänge ist das deutlich aufwändiger. Ganz besonders wenn diese
Längenerkennung eine iterative Komponente enthält (VAX, 68020).
Allerdings ist das nicht ganz so strikt zu sehen, denn manche RISCs
haben dann doch wieder variable Längen implementiert, wie etwa die
Cortex M mit Thumb2 Befehlssatz.
Manchmal ist das auch einfach nur Marketing, wie bei den als "variable
length RISC" angepriesenen Coldfires, die eigentlich ganz normale CISC
sind, nur eben gegenüber der übertriebenen 68020 stark reduziert wurden.
Johnny B. schrieb:> Die Unterscheidung RISC/CISC ist eh hinfällig, wenn ein Prozessor mit> Microcode arbeitet.> https://de.wikipedia.org/wiki/Mikrocode
Das ist so nicht richtig. Allerdings geht mein Einwand schon ein wenig
in die Richtung "Erbsenzählerei". Der englische Wikipedia-Artikel ist da
(wie so oft) wesentlich präziser (sogar, wenn gerade darin "multiple
issues" am Anfang bemerkt werden).
Die RISC/CISC Unterscheidung hat zunächst nichts mit der Frage
Mikroprogrammierung/Festdrahtetes Steuerwerk zu tun. Mikrpprogrammierung
war und ist zunächst nichts als ein Mittel den Ablauf von Befehlen zu
spezifizieren. Man kann damit sowohl RISC als auch CISC Befehle
beschreiben. Aber das ist wohl nicht Deine (Johnnys) Kernaussage.
> Der kann dann zwar eine RISC CPU haben, doch mittels Mikrocode trotzdem> CISC-artige/komplexe Befehle ausführen (in mehreren Takten natürlich).
Wenn ich oben sage, dass sei so nicht richtig dann beziehe ich mich auf
die Frage ob es den Unterschied noch gibt.
Da bei heutigen grossen Prozessoren (ich kenne keine
Mikroprogrammierbaren Mikrocontroller, aber das mag eine Bildungslücke
sein) der Mikrocode veränderbar ist, kann man sehr wohl auch komplexe
Befehle beschreiben. Allerdings ändert das ja nichts an der Frage ob ein
gegebener Befehl nun komplex (CISC) ist oder nicht (RISC).
Langer Rede, kurzer Sinn:
Wie bei so vielem in der Informatik kann man die Begriffe nicht 100%
absolut festmachen. Wie überall gibt es Grauzonen in denen die
Definitionen versagen bzw. nicht eindeutig sind bzw. nicht klar ist, in
welche Schublade ein konkretes Objekt zu schieben ist.
Was bleibt ist die Grundidee, die sich aber im Laufe der Zeit aus guten
Gründen verwässert hat.
W.S. schrieb:>> Einen Z80 wird wohl kaum jemand als RISC Rechner bezeichnen. Der machte>> auch Pipelining. So wie die meisten CISC Cpus vor und nach ihm>> Da verwechselst du aber den Z80 mit dem Z8.
Selbst einfache CPUs wie Z80 oder 6502 hatten bereits eine rudimentäre
Pipeline, denn der letzte Teil der Ausführungsphase einen Befehls
überlappte sich oft mit dem Instruction Fetch des Folgebefehls.
Beispiel: Bei beiden CPUs findet die Addition des "add immediate to
accumulator" zu dem Zeitpunkt statt, zu dem der Folgebefehl geladen
wird.
Karl H. schrieb:> Derneue schrieb:>> Also nochmal:>>>> Mit pipelining kann man also quasi parallel arbeiten.>>>> Und der Unterschied zwischen CISC und RISC ist der dass CISC sehr viele>> komplexe Befehle benutzt, und festgestellt wurde, dass viele der sehr>> komplexen Befehle nicht oft benutzt wurden. Somit wurde in RISC alles>> auf sehr rudimentäre triviale Befehle reduziert. Die komplexen nicht so>> oft benutzen werden im RISC dann durch einfache Bausteine>> zusammengebastelt.>>>> Richtig ?>> Ich denke, so kann man das stehen lassen ohne einen wesentlichen Fehler> zu machen.
PS:
CISC:
Befehle und Adressen stehen im gleichen Speicher. ->von Neumann
Architektur
RISC:
Befehle und Adressen stehen getrennt in 2 verschiedene Speichern, somit
ist RISC "schneller" da es befehl und adresse gleichzeitig laden kann.
->Havard Archtitektur
Es geht nur ums Prinzip
Richtig?
Wolfgang schrieb:> CISC:> Befehle und Adressen stehen im gleichen Speicher. ->von Neumann> Architektur> RISC:> Befehle und Adressen stehen getrennt in 2 verschiedene Speichern
Blödsinn.
Das eine ist von Neumann, das andere Harvard Architektur.
Beide können jeweils mit RISC oder CISC gebaut werden.
Wolfgang schrieb:> PS:> CISC:> Befehle und Adressen stehen im gleichen Speicher. ->von Neumann> Architektur> RISC:> Befehle und Adressen stehen getrennt in 2 verschiedene Speichern, somit> ist RISC "schneller" da es befehl und adresse gleichzeitig laden kann.> ->Havard Archtitektur>> Es geht nur ums Prinzip>> Richtig?
Nein. Das ist in einem Beitrag ganz oben (hüstel, von mir) schon einmal
geschrieben worden.
Die Frage CISC/RISC hat nichts (jedenfalls nicht kausal oder logisch)
etwas mit Von-Neuman/Harvard-Architektur zu tun. Es gibt, ähnlich wie
beim Pipelining eine gewisse zeitliche Parallelität - daher kann man auf
diese Idee kommen. Aber sachlich gibt es absolut keinen Zusammenhang.
Wolfgang schrieb:> PS:> CISC:> Befehle und Adressen stehen im gleichen Speicher. ->von Neumann> Architektur> RISC:> Befehle und Adressen stehen getrennt in 2 verschiedene Speichern, somit> ist RISC "schneller" da es befehl und adresse gleichzeitig laden kann.> ->Havard Archtitektur>> Es geht nur ums Prinzip>> Richtig?
Nö. Von-Neumann-Architektur heißt nach Lehrbuch nur:
- räumliche Aufteilung in Steuerwerk/Rechenwerk/Speicherwerk/IO-Werk
- Verwendung des Dualzahlensystem als Grundlage für Berechnungen
- linear addressierter Speicher für sowohl Daten + Befehle (daher auch
v.N-Flaschenhals)
- Sequenzbefehle
- Verzweigungsbefehle
- Sprungbefehle
Die Klassifikation CISC/RISC kommt nur aus der
Hennessy/Patterson-Studie, in der halt festgestellt wurde, dass die
Compiler die Anzahl von Befehlen der komplexen Steuerwerke (CISC) gar
nicht implementieren. CISC/RISC ist also eine Klassifikation nach
Befehlsarchitektur. RISC-Rechner waren die Konsequenz der Studie, indem
viele und reichlich Register, dafür aber vergleichsweise wenige Befehle
(OpCodes) implementiert wurden, was zu einfacheren Steuerwerken geführt
hat. Die ARMs sind sicher das beste Beispiel einer Befehlsarchitektur,
die mit Compilern fast besseren Code erzeugt, als handgeschriebener
ASM-Code.
Falk S. schrieb:> Nö. Von-Neumann-Architektur heißt nach Lehrbuch nur:> - Verwendung des Dualzahlensystem als Grundlage für Berechnungen
Nö. Von-Neumann geht auch dezimal => IBM 650, der erste in grosser
Stückzahl verkaufte Computer.
A. K. schrieb:> Falk S. schrieb:>> Nö. Von-Neumann-Architektur heißt nach Lehrbuch nur:>> - Verwendung des Dualzahlensystem als Grundlage für Berechnungen>> Nö. Von-Neumann geht auch dezimal => IBM 650, der erste in grosser> Stückzahl verkaufte Computer.
Deswegen hab ich ja auch geschrieben "nach Lehrbuch". :)
Allerdings nehme ich auch an, dass obige Definition schon ganz gut die
Gemeinsamkeiten von mehr als soundsoviel Prozent der existierenden
Rechnerarchitekturen beschreibt.
Falk S. schrieb:> Deswegen hab ich ja auch geschrieben "nach Lehrbuch". :)
Welches Lehrbuch?
Ich will Deine Aussage nicht bestreiten. Sicher gibt es dieses Lehrbuch
in dem das steht. Mich würde nur interessieren, welches das ist.
Klaus schrieb:> Falk S. schrieb:>> Deswegen hab ich ja auch geschrieben "nach Lehrbuch". :)>> Welches Lehrbuch?> Ich will Deine Aussage nicht bestreiten. Sicher gibt es dieses Lehrbuch> in dem das steht. Mich würde nur interessieren, welches das ist.
Gute Frage, meine Definition stammt so von Prof. Rossak anno 2002 in der
Info1-Veranstaltung. Verfügbar hier, Quellen sind auf der Titelseite
angegeben (Schauer bzw. Rauch, Eder, Steinberger):
https://caj.informatik.uni-jena.de/caj/file/view;jsessionid=4C8C972A677471539C2C38C8AF748D9B?id=87
MaWin schrieb:> INS8060 SC/MP erst recht RISC, aber ebenfalls saulangsam.
Als RISC werden meint Prozessoren verstanden, die ihre Rechenoperationen
zwischen Registern durchführen und davon getrennte Lade- und
Speicheroperationen verwenden.
So gesehen fallen daher alle Akkumulator-Architekturen raus. Es ist eben
nicht die Anzahl der Befehle.
IBM hatte bei der POWER Architektur RISC wohlweislich mit "Reduced
Instruction Set Cycles" übersetzt, angesichts der grossen Anzahl
Befehle.
PIC schrieb im Beitrag #4220252:
>> So gesehen fallen daher alle Akkumulator-Architekturen raus.> Mikrochip bezeichent seine PIC10, -12, -16, -18 als RISC.
Klar. Und Motorola tat das mit den Coldfires. Ist halt eine Frage, ob
man diesen Begriff für die Klassifizierung von Architekturen verwendet,
oder als Buzzword auf Powerpoint-Folien.
A. K. schrieb:>> Auch der Transputer war angeblich RISC,>> Definitiv nicht.
Nun, der Hersteller sagt RISC. Ist natürlich auch Marketing.
> Der hatte etliche immens komplexe Befehle.
Nicht mal ein REPMSB (repeat move string byte) oder ähnlich,
Blockumkopieraktionen waren EXTEM lahmarschig.
MaWin schrieb:> Nicht mal ein REPMSB (repeat move string byte) oder ähnlich,
Blockmove gab es als "move", 2 Takte pro Byte.
Beim T800 auch als 2D-Grafikblock.
Was noch nicht angesprochen wurde:
Ein IMO typisches Merkmal von RISCs ist die Load-Store-Architektur. D.h.
Speicherzugriffe gibts nur mit speziellen Befehlen, "normale" Befehle
arbeiten nur auf Registern. Das geht teilweise so weit, dass auch
Call/Ret nicht mehr existieren und "von Hand" nachgebaut werden müssen.
Dadurch fallen auch die übermässigen Befehlsvariationen weg (ala
68020-Kuddelmuddel, das dem 68040 das Genick gebrochen hat) und man
bekommt ein einheitliches Opcodeformat. Gibt eigentlich nur wenige
traditionelle RISCs, die unterschiedliche Befehlslänge haben (AFAIR 29K,
da gabs einen Jump mit 2*32Bit). Diese Einheitlichkeit hat dann
natürlich auch wieder Vorteile für die einfache und schnelle
HW-Dekodierung und das erlaubt dann auch wieder einfacheres Pipelining.
Einheitlich Befehlslänge erlaubt z.B. exakt vorhersagen zu können, wo
ein Befehl anfängt. Anders als bei den Byte-Streams eines typischen x86
Befehls. Ist er das schon, oder hatte er noch 5 Perfixe? Damit wird
natürlich auch wirkungsvoll Creative Programmierung unterdrückt, wenn
dann ein und der selbe Bytestring je nach Einsprungadresse
unterschiedlichstes macht. Ich erinnere mich da an meinen ersten
Computer. Zx81, und es wollte mir nicht gelingen ein Firmware-Listing in
Buchform mit dem in Einklang zu bringen, was ich aus dem ROM lesen
konnte. Und das war auch sinnvoll. Und es war "mehrfachverwendbar".
PIC (die mit dem W-Reg) ist vielleicht wirklich RISC, erinnert mich aber
eher an ein Vorlesung Microprogrammierung auf PDP11. Adresse in ein
Register schreiben und gelesenes Byte aus einem anderen Register lesen
klingt stark nach "unterhalb Assembler". Und damit haben das Kriterium
"separate Lade-/Speicher-Befehle" erfüllt.
> PIC (die mit dem W-Reg) ist vielleicht wirklich RISC,
Die Original-PICs von General Instruments Mitte der 70er Jahre sind aber
deutlich vor der RISC-Definition von Patterson rausgekommen. RISC ist
nicht nur einfach "wenig Befehle und keiner taugt was" ;)
RISC in Sinne von "Lade/Speicher sind die einzigen Speicherzugriffe".
Und bloß weil dafür noch keiner einen Namen gefunden hat muß es ja nicht
"nicht-existent" sein. Zudem finde ich die Dinger eher
"mikroprogrammier".
> RISC in Sinne von "Lade/Speicher sind die einzigen Speicherzugriffe".
Aber dann hat "echtes" RISC noch dazu viele gleichberechtigte Register,
und das kann man vom PIC (und vom 8051) mit dem einen Akku nicht
wirklich behaupten ;)