Welche Rolle spielt ISA (Instruction Set Architecture) im Comp Arch-Abstraktionsstapel? [geschlossen]

Ich habe Programmierhintergrund und habe vor kurzem begonnen, einen Computerarchitekturkurs zu belegen. Die meisten Vorlesungen, die ich sehe, verwenden eine Art Schichtung, wie im folgenden Diagramm beschrieben, das erklärt, was in dem Kurs behandelt wird.

Geben Sie hier die Bildbeschreibung ein

Die Frage hier ist, dass der Compiler (Systemsoftware) sich um die Konvertierung von High-Level-/Assembler-Code in Maschinencode kümmert, der vom Prozessor verstanden werden kann. Das Betriebssystem führt diesen Code aus, indem es die Ressourcen wie Prozessorplanung, Speicherverwaltung usw. verwaltet. Welche Rolle spielt also die ISA-Schicht hier?

  1. Was ist die Eingabeschnittstelle zu dieser Schicht (Maschinencode vom Betriebssystem)?
  2. Was ist die Ausgangsschnittstelle zu dieser Schicht?

Bild mit freundlicher Genehmigung: http://theembeddedguy.com/2016/05/15/layers-of-abstraction/

Das ist nicht wirklich eine aussagekräftige Frage, genauso wie die Frage, was die Ein- und Ausgabe für die "Algorithmus"- oder "Physik"-Blöcke in Ihrem Diagramm sind, keine wirklich aussagekräftigen Fragen wären.
Warum nicht :) ? So ist doch jeder Block (oder) Software (oder) System aufgebaut, oder? Wir müssen wissen, wie man Spezifikationen eingibt und Spezifikationen ausgibt, um das System/die Software/die Schicht zu verstehen. Kann man das vielleicht anders formulieren als was ist die Rolle von ISA?
Die ISA ist etwas immaterieller als die anderen Schichten dieses Kuchens. Der Begriff „ISA“ wird üblicherweise mit der Vorstellung in Verbindung gebracht, dass der Befehlssatz eine relativ stabile Spezifikation der Schnittstelle zwischen Hardware und Software ist. Die Hardware-Mikroarchitektur ist in der Lage, "direkt" Maschinencode zu verarbeiten. Die ISA (aktuell beliebte sind ARM und x86) definiert, wie verschiedene Mikroarchitekturen (z. B. AMD Zen und Intel SkyLake) und verschiedene Software (z. B. GCC- und Microsoft-Compiler, Linux und Windows) kompatibel sein könnten. Dies ist nur eine Teilansicht, es gibt viele Dinge, die rund um CPUs benötigt werden.
Sie sollten sich Beispiele ansehen: „ARM-Architektur-Referenzhandbuch“ oder „Intel 64- und IA-32-Softwareentwicklerhandbuch“, „Power ISA™“, „M68000PRM“... diese Anleitung.
Es gibt viele Möglichkeiten, die Funktionsweise eines Computersystems zu partitionieren. Auf eine Weise, die von theembeddedguy.com präsentiert wird, enthält es eine vollständige Erklärung dessen, was sie in dem jeweiligen Diagramm bedeuten. Ich habe das Gefühl, dass die Frage von albernen Online-MIT-Vorlesungen inspiriert ist, die alles in "Inputs" und "Outputs" umwandeln.
Was sind die Inputs und Outputs einer Programmiersprache? Was sind übrigens die Inputs und Outputs einer Gebäudearchitektur?
Betrachten Sie die RTL-Ebene (Register-Transfer-Ebene) als das, was Sie wollen.

Antworten (3)

Die ISA ist die Ebene, auf die ein Compiler abzielt (obwohl Optimierungen empfindlich auf die Mikroarchitektur reagieren, insbesondere im Hinblick auf eine optimale Planung). Die ISA ist eine vereinfachte, aber ausreichende Definition der Hardwareschnittstelle.

Die ISA beschreibt das abstrakte Verhalten der zugrunde liegenden Rechenmaschine und welche grundlegenden Operationen in Maschinencodeanweisungen codiert werden können. Es wird definiert, welche Art von Registern der Prozessor hat, wie sie mit dem Speicher interagieren und welche arithmetischen Operationen möglich sind.

Die ISA kann auch beeinflussen, wie einfach es ist, die Implementierung zu optimieren (z. B. lange Pipelines oder breite Probleme), und kann Funktionen implementieren, die auf bestimmte Hochsprachen abzielen (oder die Aufgabe eines Compilers vereinfachen).

Zusammen mit der ISA wird es architektonische Ordnungsgarantien, Ausnahmen, Leistungssteuerung und Zugriffskontrollen geben, die auch die Prozessorarchitektur definieren. Diese sind für einen Compiler nicht relevant (und erfordern häufig systeminterne Zugriffe), sind jedoch für ein Betriebssystem (und manchmal Anwendungen) von entscheidender Bedeutung.

Ihr Diagramm ist eine irreführende Abstraktion, obwohl jedes Element unterschiedlich ist, sind sie nicht auf die gleiche Weise miteinander verbunden wie ein Software-Stack. Die Mikroarchitektur wird zum Beispiel von der Merkmalsgröße beeinflusst – sowohl in Bezug auf das Timing als auch auf die Kosten – die Ansicht auf Gatterebene ist das, woran Designer denken, wenn sie an Mikrobögen arbeiten.

Um ein allgemeines Beispiel dafür zu geben, was ein ISA ist , überlegen Sie, wie ein 32-Bit-Befehl mit fester Länge aufgeteilt werden könnte.

4 Bits für den Befehlstyp (Laden/Speichern, ALU usw.) 4 Bits für die Befehlsoperation (Add/Sub oder Adressierungsmodus) 4 Bits für das Register von Operand 1 4 Bits für das Register von Operand 2 4 Bits für das Zielregister 4 Bits für die Flusssteuerung 4 Bits für konstante Eingabe (z. B. Operandenverschiebung) 4 weitere Bits spezifisch für den Befehl

Sie möchten diese auf eine Obermenge der Funktionen abbilden, die Sie für eine effiziente Drehmaschine benötigen. Somit beschreibt die ISA genau, was der Maschinencode und der Assemblercode darstellen (in einer mehr oder weniger 1:1-Beziehung). Einige Befehle (NOP ist das offensichtliche Beispiel) können unter Verwendung eines benutzerdefinierten Opcodes oder eines Befehls vom Typ A = A | A erreicht werden, wenn die Symmetrie dies zulässt.

In Bezug auf die Quelle des Diagramms würde die Mikroarchitektur in der Computerarchitektur im Allgemeinen nicht verwendet werden, um sich auf RAM, ROM und Zeitgeber in einem Mikrocontroller zu beziehen. Es würde sich darauf beziehen, wie die ganzzahlige Teilung implementiert ist, wie viele Befehle pro Zyklus ausgeführt werden können, wie viele Lasten gleichzeitig ausstehen können - die Art von Details, die in Software überhaupt schwer zu beobachten sind.

Auf hoher Ebene kann ich ISA als eine Art Spezifikation betrachten, die dem Compiler hilft zu entscheiden, welche Art von Maschinencode der Compiler generieren muss. Das Betriebssystem plant dies (Maschinencodeprogramme) in Prozessoren ein, die wiederum ausgeführt werden. Ist mein Verständnis richtig?
Nein, das ist nicht falsch, aber auch nicht hilfreich. ALLER Code (Betriebssystem oder Anwendung) ist ein Peer auf ISA-Ebene und wird identisch ausgedrückt. Das Betriebssystem hat möglicherweise das Recht, auf Speicherberechtigungen zuzugreifen, aber das liegt außerhalb der ISA.
Danke, zumindest denke ich, dass ich auf dem richtigen Weg bin, um zu verstehen. ISA ist die Hardwareschnittstellenspezifikation (definiert, wie der Prozessor und andere zugehörige Ressourcen verwendet werden). Sei es das Betriebssystem oder ein anderes Programm, alle halten sich daran und werden im Prozessor (als Peers) ausgeführt. Es ist nur das Betriebssystem, das die Prozessverwaltung und viele andere übernimmt. Das Benutzerprogramm ist anwendungsspezifisch. Hoffentlich ist dies die richtige Version des Verständnisses. Entschuldigung, wenn ich wieder falsch liege (ich bin neu hier) :)
Ja, die ISA definiert die Hardwareschnittstelle für eine Teilmenge von Funktionen genau (abhängig von der Verwendung des Begriffs). Die Definition hat jedoch keine Subtilität, zeigt also nicht, wie die Hardware am besten verwendet wird.
Okay, danke, viele Vorlesungen platzieren das in einem Stapeldiagramm, und das hat mich etwas verwirrt.
Viele Vorlesungen scheinen um 1985 geschrieben worden zu sein und seitdem nicht wesentlich aktualisiert worden zu sein ...
@SeanHoulihane, wäre es vom philosophischen Standpunkt aus nicht wahr, dass sich einige Grundlagen, wenn sie jemals festgelegt wurden, nicht ändern sollen und keine "wesentlichen Aktualisierungen" benötigen? Sonst wären sie nicht so fundamental...
@AliChen Sag das Einstein. Und ich meinte inhaltlich.
@SeanHoulihane, Wenn Sie sich mit den Grundlagen der Physik auskennen, sollten Sie wissen, dass sich die grundlegende Newtonsche Mechanik nicht geändert hat, sondern nur die Erweiterung auf unverschämt extreme Bedingungen (ultrakleine / große Skalen und ultrahohe Geschwindigkeiten) korrigiert wurde.
Und Sie beleidigen OP auch, indem Sie "Ihr Diagramm" sagen, während es eine Kreation von theembeddedguy.com war. Und ich war es nicht mit -1.

In dem Diagramm geht es überhaupt nicht um Ein- und Ausgänge, daher ist die Frage so formuliert bedeutungslos.

Jedes gegebene System kann auf verschiedenen Detailebenen beschrieben werden, und genau darum geht es bei dem Diagramm. Jede Schicht beschreibt das gleiche System , aber mit unterschiedlichen Referenzbegriffen.

Beispielsweise könnten Sie einen Webserver auf der höchsten Abstraktionsebene als einen Computer beschreiben, der HTTP-Anforderungen akzeptiert und die angeforderten Daten bereitstellt, wobei „HTTP-Anforderung“ in einem bestimmten Standarddokument als eine TCP/IP-Verbindung definiert ist, die Daten in a überträgt bestimmtes Format (die nächste Detailebene).

Das gleiche System könnte in Bezug auf die elektromagnetischen Felder beschrieben werden, die es empfängt und überträgt, zusammen mit der Art und Weise, wie sich die elektrischen Ladungen innerhalb der darin enthaltenen Metall- und Halbleitermuster bewegen. Dies wäre die Abstraktionsebene "Physik". Es bietet viele Details, aber es ist wirklich zu detailliert, um für das Verständnis des Verhaltens auf hoher Ebene nützlich zu sein.

In Computersystemen werden die höchsten Abstraktionsebenen in Software definiert. In gewissem Sinne "läuft" jede Abstraktionsschicht auf der virtuellen Maschine, die durch die nächstniedrigere Ebene definiert wird. Die ISA ist die Ebene, auf der der Übergang von Software zu Hardware erfolgt: Die ISA definiert die Hardware-Software-Schnittstelle. Auf dieser Ebene ist die „virtuelle Maschine“ sehr universell einsetzbar, da wir in den meisten Fällen keine unterschiedlichen Hardware-Maschinen für unterschiedliche Anwendungen definieren möchten.

In einigen Fällen ist die ISA selbst eine Abstraktion, die auf einem Hardwarecomputer niedrigerer Ebene ausgeführt wird. Es gibt mikrocodierte Maschinen, die verschiedene Versionen von Mikrocode laden können, um verschiedene ISAs zu implementieren. Der Mikrocodeprozessor besteht aus physikalischen Registern und Gattern.

Ich versuche, zwischen den Zeilen Ihrer Frage zu lesen und eine Frage zu beantworten, die Sie nicht wirklich gestellt haben – hilft irgendetwas davon?

Ich denke das Diagramm ist selbsterklärend. Innerhalb des Kontexts und der Partitionierung, wie sie im ursprünglichen theembeddedguy.com-Artikel und dem „Input-Output“-Paradigma dargestellt sind, ist die Eingabe für die als „ISA“ dargestellte Schicht der Binärcode, der bei „Machine-Level Code“ generiert wird. Die ISA-Schicht ruft den Binärstrom ab und parst ihn in Übereinstimmung mit der inneren Architektur eines Prozessors. In der speziellen x86-Architektur übersetzt es komplexe Befehle (CISC) in einfachere Formate vom RISC-Typ in Übereinstimmung mit der Mikroarchitektur des inneren Prozessors. Das ist die „Ausgabe“.

Das gesamte Mehrebenenmodell ist nur eine Abstraktion und in der realen Welt nicht besonders nützlich. Die Grenzen können verschwommen sein, es können mehrere weitere Abstraktionsebenen eingeführt werden, in Implementierungen können einige Ebenen kombiniert werden usw. Der gesamte theembeddedguy.com-Artikel ist eine eklektische Mischung von Begriffen, was wahrscheinlich die Verwirrung erklärt.

Wow! In weniger als 60 Sekunden habe ich jemanden gekränkt ... Möchtest du erklären, was deiner Meinung nach an meiner Antwort falsch ist?
Die ISA hat nichts mit Befehlsdekodierung oder internem Microcode zu tun. Die ISA definiert Befehle, Register, Speichermodelle, ...
a) Sie beleidigen den OP. b) die ISA ist nicht Teil eines Stacks, sie verarbeitet nicht (stattdessen informiert sie den Designer).
@TEMLIB, innerhalb des Kontexts und der Partitionierung, wie sie von OP aus dem Originalartikel dargestellt werden, führt die ISA diese Funktionen tatsächlich aus, hauptsächlich die binäre Dekodierung. Wir können über Bedeutungen und Definitionen diskutieren, aber im Kontext der Laienerklärung von theembeddedguy.com tut es das, was ich erklärt habe.
@SeanHoulihane, wie habe ich das OP genau beleidigt? Erkläre bitte.
Wenn das Diagramm selbsterklärend wäre, bräuchte man die Frage nicht. Ich denke nicht, dass diese Frage "keine Forschung" ist, aber Ihre Antwort kommt dem sehr nahe.
@SeanHoulihane, ja, der Originalartikel enthält eine faire Erklärung, was die "ISA" -Schicht in ihrem Diagramm bedeutet. Hast du den Artikel gelesen, der die Frage ausgelöst hat?
Der Artikel „besitzt“ die Terminologie nicht und hat dem OP eindeutig nicht geholfen, die verschiedenen Komplexitätsstufen zu verstehen. Es ist auch an Stellen falsch (wo es Mikroarchitektur beschreibt), zumindest aus einem CPU-Kontext.