Innocience schrieb:
Bin schwer unbeeindruckt von dem Chip und ARM. Aber wenn es hilft, diese blöden CISC und RISC Debatten ad acta zu legen:
Die Diskussion um CISC und RISC kann man heute sowieso vollkommen ausblenden, weil die Vorteile von CISC - höhere Lesbarkeit - und RISC - atomare Operationen - heute verschwommen sind.
Bei heute modernen Prozessoren, werden quasi alle Instruktionen durch einen Decoder geschleust und in µOPs zerlegt, egal ob jetzt ARM (RISC) oder x86 (CISC).
RISC und CISC sind Philosophien dahinter, wie man die ISA entwirft. Bei RISC versucht man sich auf elementare Operatoren zu beschränken, während man bei CISC auf Grund der Lesbarkeit halt auch komplexere Operatoren zulässt. Wenn man es mal extrem vergleichen will:
Brainfuck gegen
Basic.
Mein Professor in theoretischer Informatik sagte uns mal sehr deutlich, dass man jeden Beweis mit nur 2 grundlegenden Operatoren führen kann und damit sind nicht "+" und "-" gemeint, sondern "erhöhe um 1" und "verringere um 1". Entsprechend fies waren auchs eine Klausuren, weil man erst mal +/-/*/: beweisen musste.
Herdware schrieb:
Und auch wenn diese Kompatibilitätsschicht etwas Leistung kostet, fällt das bei den komplexen, modernen SoCs, die viel mehr als nur CPUs sind (große Cache-Speicher, iGPU, Speicher- und PCIe-Controller usw.), in Sachen Effizienz kaum noch ins Gewicht.
In ARM sind heute CISC ähnliche Anweisungen, in x86 heute RISC ähnliche. Auf einen Decoder, der damit umgehen kann, sind quasi heute alle µArchs angeweisen. Reihn theoertisch könnte man durch einen "programmierbaren" Decoder sogar ARM und x86 in der gleichen µArch laufen lassen.
RISC ist eine Entwicklung der immer besseren Compiler der 70er und 80er, deutlich effizienteren Code auch mit C und C++ sowie Konsorten erzeugen konnte. Entsprechend hat die Lesbarkeit von Assembler stark abgenommen.
Bereits damals hat x86 mit einen Decoder gearbeitet und manche komplexe Instrukltion in µOPS zerlegt. Geschwindigkeit gab es damals oft dann, wenn besonders langwierige Instruktionen in Hardware gegossen wurde.
Herdware schrieb:
in Sachen Effizienz kaum noch ins Gewicht.
Stimmt, CISC oder RISC ist heute für die Effizienz kaum von Bedeutung. Leider wird x86 und ARM immer mit CISC und RISC gleichgesetzt, was so aber nicht stimmt. Leider hält sich auch bis heute - selbst bei Menschen die es theoretisch besser wissen müssten - die Mär, dass RISC sich nur für effiziente und langsame "CPUs" eigenet, während CISC (wegen dem Wort "Complex") ineffizienter wäre, dafür aber deutlich schneller. Oft ist das sogar die Begründung dafür.
Was in Sachen "Effizienz" damals als auch heute noch ins Gewicht fällt, sind eher die Rahmenbedienungen der ISA, die unabhängig von CISC oder RISC sind. Bis heute wird von vielen unterschätzt, welche Auswirkungen die Anzahl der Register, die der Compiler nutzen kann, auf die Effizienz hat, weil damit bestimmt wird, wann man auf den "Cache/RAM" zugreifen muss oder ob man es sich sparen kann.
Ja, ich weiß, dass es Schattenregister und Registerrenaming gibt, die verhindern aber die Zugriffe auf den Cache/RAM nicht. Schattenregister sind vorhanden, damit jede ALU/ST/LD-Einheit sich entsprechend austoben kann und keine Wartezeit entsteht. Die Store-Einheiten können aus einem bearbeitete Register die Daten wegsichern, die LD-Einheit in ein Register die Daten schreiben, die ALUs wiederum können mit anderen Registern rechnen. Ändert am Ende aber nichts daran, dass der Compiler bei 8 Registern öfter ein LD/ST benötigt, als bei 16 und eben bei 32. Intel beschreibt das ganze bei
APX sehr gut. Wichtig ist dabei der Satz: "Register accesses are not only faster, but they also consume significantly less dynamic power than complex load and store operations." Würden die Schattenregister ausreichen, dann hätte sich Intel APX auch sparen können.
Und Register-Renaming ist für OoO eine Grundvoraussetzung, da Operatoren unabhängig sein könnten, aber durch Verwendung gleicher Register, sich dennoch blockieren können. Entsprechend wird diese Abhängigkeit damit aufgelöst.
MrTony schrieb:
Das ist halt was, was mich beim SnapdragonX Elite gerade wundert. Apple gatte damals erklärt, dass die Leistung bei geringerem Energieverbrauch nur dank des durch ARM reduzierten Instruction Sets möglich ist.
Hast du dazu einen Link und sicher, dass hier wirklich "RISC" und "CISC" gemeint war, oder die ISA allgemein?
Weil bei der ISA (allgemein) hat Apple durchaus einen Punkt, wobei es halt darauf an kommt, was genau gemeint ist.