Forum: Mikrocontroller und Digitale Elektronik RISC oder CISC - Was ist besser?


von Lenny (Gast)


Lesenswert?

Hallo zusammen,

Kann man generell sagen das entweder RISC oder CISC - Architektur besser 
ist?

Oder haben beide ihre Einsatzgebiete?

Was muss man beim programmieren beachten wenn man RISC oder CISC hat?


Gruss
Lenny

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Nichts ist besser und alles ist besser, sowohl bei der einen als auch 
bei der anderen Architektur. Informiere Dich über Vor- und Nachteile der 
Architekturen und entscheide, welche für Deine Anwendung in Frage kommt.

>Was muss man beim programmieren beachten wenn man RISC oder CISC hat?

Daß das Programm den Anforderungen entsprechend läuft vielleicht?

von jack (Gast)


Lesenswert?

Fragen, die so einfach ins Blaue hinein gehen, haben wenig Sinn.

Sammle ein wenig Programmiererfahrung, dann weißt du wenigstens,
worüber du redest.

von holger (Gast)


Lesenswert?

www.gidf.de gibt dir die Antwort. Einfach "RISC CISC" eingeben.

von Lenny (Gast)


Lesenswert?

>Fragen, die so einfach ins Blaue hinein gehen, haben wenig Sinn.

Was heisst da ins blaue hinein??

Ich hab noch nie gehört, dass jemand seien uP nach RISC oder CISC 
ausgesucht hat. Deshalb frag ich obs überhaupt draufan kommt!

von Lothar L. (lole)


Lesenswert?

Beim Programmieren musst Du gar nichts beachte, solange Du eine höhere 
Programmiersprache benutzt. RISC hat eben einen Reduzierten Istruction 
Set, arbeitet dafür Befehe meist in einem Takt ab. CISC hat mächtigere 
Befehle, die dafür öfter gerne einige Takte brauchen. Ich hoffe das 
reicht erst mal. Wikipedia hat sicher mehr dazu zu sagen.
Grüsse

von Gast (Gast)


Lesenswert?

Schaut man sich die 2Mrd. Transistoren bei x86 an, scheint CISC recht 
erfolgreich zu sein. Zumindest bei MS-Maustreibern.

von Lenny (Gast)


Lesenswert?

>Beim Programmieren musst Du gar nichts beachte, solange Du eine höhere
>Programmiersprache benutzt. RISC hat eben einen Reduzierten Istruction
>Set, arbeitet dafür Befehe meist in einem Takt ab. CISC hat mächtigere
>Befehle, die dafür öfter gerne einige Takte brauchen. Ich hoffe das
>reicht erst mal. Wikipedia hat sicher mehr dazu zu sagen.

Ja danke, ich weiss schon was RISC und CISC ist. Ich frag mich nur was 
unter dem Strich besser ist.


>Schaut man sich die 2Mrd. Transistoren bei x86 an, scheint CISC recht
>erfolgreich zu sein.

Das x86 erfolgreich ist muss doch überhaupt nichts damit zu tun haben ob 
RISC oder CISC besser ist. Hat ich einfach als Standard durchgesetzt.

von jack (Gast)


Lesenswert?

>Was heisst da ins blaue hinein??

Auf diese Frage gibts eine gute Antwort:

>Schaut man sich die 2Mrd. Transistoren bei x86 an, scheint CISC recht
>erfolgreich zu sein. Zumindest bei MS-Maustreibern.

Hier kommt das "ins Blaue hinein" sehr deutlich zum Ausdruck.

von Karl (Gast)


Lesenswert?

>Schaut man sich die 2Mrd. Transistoren bei x86 an, scheint CISC recht
>erfolgreich zu sein. Zumindest bei MS-Maustreibern.

Erstens ist ein großer Teil der Transistoren Cache, hat also mit 
CISC/RISC erstmal nichts zu tun. Zweitens kann man heutige x86er nicht 
genau einordnen, weil sie nur noch die ISA (Instruction Set 
Architecture) mit ihren CISC Vorfahren gemeinsam haben. Intern läuft es 
dann doch wieder RISC-artig ab. Wie so oft sind die Übergänge fließend.

von Lothar L. (lole)


Lesenswert?

Wenn Du weißt, was Du erschlagen willst, wirst Du auch wissen, was Du 
einsetzen musst.

von Simon K. (simon) Benutzerseite


Lesenswert?

Lenny wrote:
>>Beim Programmieren musst Du gar nichts beachte, solange Du eine höhere
>>Programmiersprache benutzt. RISC hat eben einen Reduzierten Istruction
>>Set, arbeitet dafür Befehe meist in einem Takt ab. CISC hat mächtigere
>>Befehle, die dafür öfter gerne einige Takte brauchen. Ich hoffe das
>>reicht erst mal. Wikipedia hat sicher mehr dazu zu sagen.
>
> Ja danke, ich weiss schon was RISC und CISC ist. Ich frag mich nur was
> unter dem Strich besser ist.

Oh gott.

do
{
    Lese von Beginn;
} while (DuStellstDirImmernochDieseFrage);

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Hallo,

ich bin mal mutig und sage RISC ist besser. Bei CISC-CPUs werden 
entweder µCode verwendet oder die CISC-Befehle direkt RISC umgeformt. 
RISC ist schneller, flexibler, sparsamer da sehr oft nur einfache 
Befehle gebraucht werden. Möglicherweise sind bei CISC-Systemen die 
Programme kleiner und es werden weniger Programmspeichrzugriffe 
erforderlich, weil nur ein Befehl geholt werden muss der viel bewirkt 
anstatt mehrere die wenig bewirken, doch heute ist Speicher billig und 
die statische Verlustleistung größer als die dynamische, weshalb ein 
paar Speicherzgriffe mehr auch nicht schaden. Der deutlich einfacher 
aufgebaute RISC aber weniger statische Verlutleistung.
Da man gemerkt hat, dass RISC ein paar Nachteile hat, hat man einfach 
später noch bestimmte CISC-Befehle in RISC integriert, jedoch nicht 
irgendwelche, sondern nur die wichtigsten. Man merkte, das man oft 
Datentransportbefehle braucht, also hat man welche übernommen die 
mehrere Register in den Speicher kopieren. Das ist bei ARM der Fall.
Der RISC verdrängt den CISC in vielen Bereichen. Man denke an die 
mobilen Anwendungen (Handy, PDA, Navi,...). Auch in Spielekonsolen 
findet er Einsatz.

von Falk B. (falk)


Lesenswert?

@ Stefan Helmert (stefan_helmert)

>ich bin mal mutig und sage RISC ist besser. Bei CISC-CPUs werden
>entweder µCode verwendet oder die CISC-Befehle direkt RISC umgeformt.

Was Pentium Und Athlon seit Jahren machen, kann also nicht so falsch 
sein.

>paar Speicherzgriffe mehr auch nicht schaden. Der deutlich einfacher

Naja, damit wäre ich vorsichitg. Ohne Caches geht da heute fast nix 
mehr.

>aufgebaute RISC aber weniger statische Verlutleistung.

???
Bei CMOS? Wir reden hier glaub ich auch nicht über die Tuning Tricks von 
Intel, die massive Leckströme in Kauf nehmen um ein paar hundert MHz 
mehr Takt in Kauf zu nehmen. Die schnellsten Intel-CPUs sollen bis zu 
50% ihres Stroms als Leckstrom dadurch verbrauchen :-0

>Datentransportbefehle braucht, also hat man welche übernommen die

SIMD, Singe Instruction, Multiple Data, also MMX, 3D NOW etc.)

>mehrere Register in den Speicher kopieren. Das ist bei ARM der Fall.

Das ist aber schon eher DMA.

MFG
Falk

von David (Gast)


Lesenswert?

der trend geht klar richtung risc... somit dürfte die frage wohl 
beantwortet sein...

--> der x86 stammt ursprünglich von einem cisc ab und wurde richtung 
risc vergewaltigt... sprich sie haben gebastelt, weil sie die kosten für 
eine kommplete risc neuentwicklung scheuten...

von mr.chip (Gast)


Lesenswert?

Kann man so wirklich nicht sagen. Nur schon die Definition von 'besser' 
ist schwer. Rechenleistung? Stromverbrauch? Leichter Vorteil
Einfachheit beim Design? Einfachheit in der Produktion? Flexibilität?

Und definiere mir dann mal RISC* und CISC* präziser. Wie vergangene 
Diskussionen zeigen, kann man hier nach verschiedenen Gesichtspunkten 
die Grenze ziehen, moderne PC-Prozessoren sind teilweise kaum 
einzuordnen.

Grundsätzlich ist jedes CISC* auch ein bisschen RISC*, wobei halt noch 
der Mikrocode dazwischen steht.


* Ich definiere für mich RISC und CISC rein nur über die 
Hardware-Implementierung, nicht über den Instruktionssatz. RISC: Daten 
rutschen nach einem vorgegebenen Schema durch die CPU, insbesondere sind 
die einzelnen Komponenten direkt und eigenständig verdrahtet, so dass 
Pipelining möglich wird. CISC: Daten werden vom Mikrocode Schritt für 
Schritt an die verschiedenen Komponenten angelegt, wobei insbesondere 
allgemeine Bus-Strukturen vorkommen können und erst der Mikrocode 
bestimmt, welche Prozessorkomponente ihre Daten anlegt bzw. übernimmt.

von I_ H. (i_h)


Lesenswert?

Die meisten Befehle werden auf x86ern aber in Hardware dekodiert, nicht 
vom Mikrocode ;).

Es ist schwer zu sagen was "besser" ist. Es ist auf jeden Fall 
schwieriger CISC performant umzusetzen. Andererseits hat man bei einer 
performanten Umsetzung diverse Vorteile, zB. ist CISC Code deutlich 
kompakter als RISC. Und CISC erlaubt flexiblere Implementierungen, weil 
komplexere Befehle nicht so stark an die Hardware angelehnt sind.

Im Endeffekt ist beides gut. Schau dich mal um, x86 CPUs sind mit die 
schnellsten CPUs auf dem Markt, und vor allem die vielseitigsten. 
Reinrassige RISCs wie der Power oder auch Designs die extra auf 
paralleles Rechnen ausgelegt wurden (zB. EPIC im Itani(c)um) sind nicht 
viel besser, und fertigungstechnisch der absolute Albtraum ('n Itanium 
ist ca. 10mal so groß wie ein Opteron...).

von Michael König (Gast)


Lesenswert?

> Kann man generell sagen das entweder RISC oder CISC - Architektur besser
> ist?

Hängt von der Anwendung ab. Bei CISC hat man meist bessere Codedichte, 
RISC ist üblicherweise schneller, da die Decoder- und 
Ausführungseinheiten einfacher zu realisieren sind.

Im Mikrocontrollerbereich sind echte RISCs selten, da die meisten immer 
noch die Möglichkeit haben irgendwie direkt die Portpins zu 
manipulieren, was dem RISC-Konzept komplett widerspricht.

Es ist aber klar, daß alle heutigen Prozessoren, wenn sie auch nur 
annähernd in der Geschwindigkeit mithalten, intern immer eine 
RISC-ähnliche Implementierung haben, ganz gleich wie CISC-mäßig die 
Architekur sein mag. Das gilt vor allem für die CPUs von Intel und AMD, 
denn wenn die nicht RISC-Know-How für ihre Prozessorkerne übernommen 
hätten (und etwas später noch sehr viel Optimierungswissen in Form von 
ehemaligen Alpha-Designern eingekauft hätten), wären sie schon vor 
Jahren im Desktop- und Server-Bereich von den RISC-Prozessoren abgehängt 
worden.
Da sich x86 aber aufgrund der etablierten Architektur sehr gut verkauft, 
war wohl genug Geld für Investitionen und den Aufwand der Übersetzung 
einer verkorksten ISA in RISC-ähnliche Code für den Kern vorhanden.

Da der Begriff RISC gerne nicht vollkommen korrekt ausgelegt wird, hier 
noch eine genauere Definition:
"RISC" steht zwar für "Reduced Instruction Set Computer", aber ganz so 
wörtlich darf man dieses Akronym von David Patterson doch nicht 
auslegen, da seine Definition doch deutlich anders aussieht.
(In einem Buch habe ich die alternative Interpretation "Reduced 
Instruction Set Complexity" gefunden.)

* Load/Store-Architektur, d.h. nur spezielle Load/Store-Instruktionen 
sind für den Datenaustausch zuständig. Alle Datenmanipulationen finden 
ausschließlich auf Registern statt. Hier unterscheiden sich einige 
Embedded-RISC (beispielsweise SuperH kann Bitoperationen auf 
Speicherstellen durchführen), damit man direkt auf Ports zugreifen kann.

* Eine große Zahl an Universalregistern. Groß ist dabei relativ, 
üblicherweise aber ab 16 aufwärts, die meisten Desktop-RISCs haben 32 
Register, von denen aber häufig eines immer Null ist. Universalregister 
heißt dabei, daß sie gleichermaßen für Daten und Adressen und von allen 
Instruktionen verwendet werden können. Zugunsten der Codedichte machen 
einige Embedded-RISC hier auch Eingeständnisse.

* Uniforme und einfache Instruktionscodierung. D.h. alle Instruktionen 
haben die gleiche Länge und es gibt nur sehr wenige Instruktionsformate. 
Ein "typischer" RISC käme beispielsweise mit drei Formaten aus: Opcode 
mit drei Registern, Opcode mit zwei Registern und einer Konstante, 
Opcode und Adresse.
In der Praxis sieht das gelegentlich auch etwas anders aus. ARM hat 
erstaunlich viele unterschiedliche Formate und bei der Länge ist man 
auch nicht immer einheitlich. ARM schaltet zumindest zwischen Modi mit 
unterschiedlichen Längen um (32-Bit ARM / 16-Bit Thumb), andere wie 
TriCore können auch verschieden lange Instruktionen mischen.

* Die meisten Instruktionen sind primitiv genug, daß mittels Pipelining 
eine Instruktion pro Zyklus fertiggestellt werden kann. Aus diesem Grund 
hatte der erste SPARC übrigens auch keine Multiplikation und Division, 
was aber später aus Performanzgründen nachgeflickt wurde.
Hierbei ist wichtig, daß keine CPU eine Instruktion in einem Taktzyklus 
ausführen kann; es sind immer mehrere Schritte nötig. Wenn man aber 
nicht alle Instruktionen nacheinander ausführt, sondern die einzelnen 
Schritte jeder Instruktion um eins versetzt in einer Art Fließband 
(Fachausdruck "Pipeline") berabeiten, kann man im Idealfall eine 
Instruktion pro Taktzyklus abschließen. Das setzt allerdings voraus, daß 
die Instruktionen alle eine ähnliche Anzahl an Einzelschritten haben, 
weswegen sie möglichst primitiv sein sollten.
Ein typisches Gegenbeispiel hierfür ist der PowerPC, der für RISC einige 
viel zu komplexe Instruktionen hat. Das Laden und Speichern von mehr als 
einem Register in einer Instruktion ist allerdings auch in ARM 
vorhanden. Aus diesem Grund arbeitet übrigens die Implementierung des 
PPC970, der im Vergleich zu den anderen PowerPCs eine deutlich tiefere 
Pipeline hat, intern mir "cracked instructions", d.h. komplexe 
Instruktionen werden in zwei oder mehr primitivere zerlegt. Das Konzept 
erinnert natürlich sehr stark an die Micro-Ops von Intel.

* In der Originaldefinition von David Patterson war auch noch die 
Implementierung von sog. Registerfenstern vorhanden, aber abgesehen von 
SPARC, die von diesem Berkeley-RISC-Projekt abgeleitet wurde, hat das 
eigentlich keine andere Architektur übernommen.

Es handelt sich also hierbei im rein architektonische Vorgaben, die eine 
möglichst effiziente Implementierung erleichtern sollen. Ein Verzicht 
auf Mikrocode wird in keinster Form gefordert, mir ist aber auch kein 
RISC bekannt, der nicht überwiegend hardcodiert wäre.

Ein x86 fällt aus architektonischer Sicht definitiv nicht ins 
RISC-Raster. Instruktionslängen die zwischen 1 und 16 Byte schwanken und 
teilweise äußerst komplex codiert sind. Immer noch keine echten 
Universalregister, da EAX als ehemaliger Akkumulator codierungstechnisch 
bevorzugt wird, variable Shiftweiten nur in CL stehen dürfen, 
Multiplikation/Division implizit EAX/EDX verwenden, etc. pp.
Beim Pentium werden die 8 Pseudo-Universalregister intern auf 40 
Register umverteilt und die Instruktionen in Micro-Ops zerlegt, damit 
sie einigermaßen effizient in einer Pipeline ausgeführt werden können.

Rein von der Geschwindigkeit hat RISC aus meiner Sicht deutliche 
Vorteile gegenüber einem reinen CISC, was sich alleine daran zeigt, daß 
die wirklich schnellen Prozessoren intern alle auf eine Form von RISC 
zurückgreifen.
Für den Embedded-Bereich ergeben sich Nachteile bezüglich der Codedichte 
oder dem direkten Zugriff auf Ports, weswegen hier meist gewisse 
Abweichungen von der originalen RISC-Definition finden lassen.

von Ernie (Gast)


Lesenswert?

Was ist besser - Apfel oder Birne?

von Gast (Gast)


Lesenswert?

Pflaume!

von Gast (Gast)


Lesenswert?

...ist besser.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.