Computerarchitektur – Wikipedia

before-content-x4

Satz von Regeln und Methoden, die die Funktionalität, Organisation und Implementierung von Computersystemen beschreiben

Blockdiagramm eines Basiscomputers mit Einprozessor-CPU. Schwarze Linien zeigen den Datenfluss an, während rote Linien den Kontrollfluss anzeigen. Pfeile geben die Strömungsrichtung an.
after-content-x4

In der Computertechnik, Rechnerarchitektur ist eine Reihe von Regeln und Methoden, die die Funktionalität, Organisation und Implementierung von Computersystemen beschreiben. Einige Definitionen der Architektur definieren sie als Beschreibung der Fähigkeiten und des Programmiermodells eines Computers, jedoch nicht als eine bestimmte Implementierung.[1] In anderen Definitionen umfasst die Computerarchitektur das Design von Befehlssatzarchitekturen, das Design von Mikroarchitekturen, das Logikdesign und die Implementierung.[2]

Geschichte[edit]

Die erste dokumentierte Computerarchitektur befand sich in der Korrespondenz zwischen Charles Babbage und Ada Lovelace und beschrieb die analytische Engine. Beim Bau des Computers Z1 im Jahr 1936 beschrieb Konrad Zuse in zwei Patentanmeldungen für seine zukünftigen Projekte, dass Maschinenanweisungen in demselben Speicher gespeichert werden könnten, der für Daten verwendet wird, dh im Konzept des gespeicherten Programms.[3][4] Zwei weitere frühe und wichtige Beispiele sind:

Der Begriff „Architektur“ in der Computerliteratur lässt sich auf die Arbeit von Lyle R. Johnson und Frederick P. Brooks Jr. zurückführen, die 1959 Mitglieder der Abteilung Machine Organization im Hauptforschungszentrum von IBM waren. Johnson hatte die Gelegenheit, eine eigene zu schreiben Forschungskommunikation über den Stretch, einen von IBM entwickelten Supercomputer für das Los Alamos National Laboratory (zu der Zeit als Los Alamos Scientific Laboratory bekannt). Um den Detaillierungsgrad für die Erörterung des luxuriös verzierten Computers zu beschreiben, stellte er fest, dass seine Beschreibung von Formaten, Befehlstypen, Hardwareparametern und Geschwindigkeitsverbesserungen auf der Ebene der „Systemarchitektur“ lag, ein Begriff, der nützlicher schien als „Maschinenorganisation“ ”.[7]

Anschließend schlug Brooks, ein Stretch-Designer, Kapitel 2 eines Buches mit dem Titel auf Planen eines Computersystems: Projektdehnung mit der Aussage: “Computerarchitektur ist wie andere Architektur die Kunst, die Bedürfnisse des Benutzers einer Struktur zu bestimmen und diese dann unter wirtschaftlichen und technologischen Bedingungen so effektiv wie möglich zu gestalten.”[8]

Brooks half bei der Entwicklung der IBM System / 360-Computerreihe (jetzt IBM zSeries), bei der „Architektur“ zu einem Substantiv wurde, das „das definiert, was der Benutzer wissen muss“.[9] Später verwendeten Computerbenutzer den Begriff auf viel weniger explizite Weise.[10]

after-content-x4

Die frühesten Computerarchitekturen wurden auf Papier entworfen und dann direkt in die endgültige Hardwareform eingebaut.[11]

Später wurden Prototypen der Computerarchitektur physisch in Form eines Transistor-Transistor-Logik-Computers (TTL) gebaut – wie die Prototypen des 6800 und des PA-RISC -, getestet und optimiert, bevor die endgültige Hardwareform festgelegt wurde. Ab den 1990er Jahren werden neue Computerarchitekturen in der Regel in einer anderen Computerarchitektur in einem Computerarchitektur-Simulator “erstellt”, getestet und optimiert. oder in einem FPGA als weicher Mikroprozessor; oder beides – bevor Sie sich zum endgültigen Hardwareformular verpflichten.[12]

Unterkategorien[edit]

Die Disziplin der Computerarchitektur hat drei Hauptunterkategorien:[13]

Es gibt andere Technologien in der Computerarchitektur. Die folgenden Technologien werden in größeren Unternehmen wie Intel eingesetzt und wurden im Jahr 2002 geschätzt[13] 1% der gesamten Computerarchitektur ausmachen:

  • Makroarchitektur: Architekturebenen abstrakter als Mikroarchitektur
  • Assembly Instruction Set Architektur: Ein intelligenter Assembler kann eine abstrakte Assemblersprache, die einer Gruppe von Maschinen gemeinsam ist, für verschiedene Implementierungen in eine leicht unterschiedliche Maschinensprache konvertieren.
  • Vom Programmierer sichtbare Makroarchitektur: Übergeordnete Sprachtools wie Compiler können eine konsistente Schnittstelle definieren oder Verträge mit Programmierern abschließen, die diese verwenden, um Unterschiede zwischen zugrunde liegenden ISA-, UISA- und Mikroarchitekturen zu abstrahieren. Beispielsweise definieren die C-, C ++ – oder Java-Standards verschiedene vom Programmierer sichtbare Makroarchitekturen.
  • Mikrocode: microcode ist eine Software, die Anweisungen für die Ausführung auf einem Chip übersetzt. Es wirkt wie ein Wrapper um die Hardware und präsentiert eine bevorzugte Version der Befehlssatzschnittstelle der Hardware. Diese Befehlsübersetzungsfunktion bietet Chipdesignern flexible Optionen: ZB 1. Eine neue verbesserte Version des Chips kann Mikrocode verwenden, um genau den gleichen Befehlssatz wie die alte Chipversion zu präsentieren, sodass alle Software, die auf diesen Befehlssatz abzielt, auf dem neuen Chip ohne ausgeführt wird Änderungen brauchen. Beispiel: 2. Der Mikrocode kann eine Vielzahl von Befehlssätzen für denselben zugrunde liegenden Chip darstellen, sodass eine größere Auswahl an Software ausgeführt werden kann.
  • UISA: User Instruction Set Architecture bezieht sich auf eine von drei Teilmengen der RISC CPU-Anweisungen bereitgestellt von PowerPC RISC-Prozessoren. Die UISA-Teilmenge sind die RISC-Anweisungen, die für Anwendungsentwickler von Interesse sind. Die anderen beiden Untergruppen sind VEA-Anweisungen (Virtual Environment Architecture), die von Entwicklern von Virtualisierungssystemen verwendet werden, und OEA (Operating Environment Architecture), die von Entwicklern von Betriebssystemen verwendet werden.[15]
  • Pin-Architektur: Die Hardwarefunktionen, die ein Mikroprozessor für eine Hardwareplattform bereitstellen sollte, z. B. die x86-Pins A20M, FERR / IGNNE oder FLUSH. Außerdem Nachrichten, die der Prozessor ausgeben soll, damit externe Caches ungültig gemacht (geleert) werden können. Pin-Architekturfunktionen sind flexibler als ISA-Funktionen, da sich externe Hardware an neue Codierungen anpassen oder von einem Pin zu einer Nachricht wechseln kann. Der Begriff “Architektur” passt, da die Funktionen für kompatible Systeme bereitgestellt werden müssen, auch wenn sich die detaillierte Methode ändert.

Definition[edit]

Die Computerarchitektur befasst sich mit dem Gleichgewicht zwischen Leistung, Effizienz, Kosten und Zuverlässigkeit eines Computersystems. Der Fall der Befehlssatzarchitektur kann verwendet werden, um das Gleichgewicht dieser konkurrierenden Faktoren zu veranschaulichen. Mit komplexeren Befehlssätzen können Programmierer platzsparendere Programme schreiben, da ein einzelner Befehl eine Abstraktion auf höherer Ebene codieren kann (z. B. den x86-Schleifenbefehl).[16] Längere und komplexere Anweisungen benötigen jedoch länger für die Dekodierung des Prozessors und können kostengünstiger in der effektiven Implementierung sein. Die erhöhte Komplexität eines großen Befehlssatzes schafft auch mehr Raum für Unzuverlässigkeit, wenn Befehle auf unerwartete Weise interagieren.

Die Implementierung umfasst das Design, die Verpackung, die Stromversorgung und die Kühlung integrierter Schaltkreise. Die Optimierung des Designs erfordert Kenntnisse über Compiler, Betriebssysteme, Logikdesign und Verpackung.[17]

Befehlssatzarchitektur[edit]

Eine Befehlssatzarchitektur (ISA) ist die Schnittstelle zwischen der Software und der Hardware des Computers und kann auch als Ansicht des Programmierers auf die Maschine angesehen werden. Computer verstehen keine Programmiersprachen auf hoher Ebene wie Java, C ++ oder die meisten verwendeten Programmiersprachen. Ein Prozessor versteht nur Anweisungen, die auf numerische Weise codiert sind, normalerweise als Binärzahlen. Softwaretools wie Compiler übersetzen diese Hochsprachen in Anweisungen, die der Prozessor verstehen kann.

Neben Anweisungen definiert der ISA Elemente im Computer, die einem Programm zur Verfügung stehen, z. B. Datentypen, Register, Adressierungsmodi und Speicher. Anweisungen suchen diese verfügbaren Elemente mit Registerindizes (oder Namen) und Speicheradressierungsmodi.

Die ISA eines Computers wird normalerweise in einer kleinen Bedienungsanleitung beschrieben, in der beschrieben wird, wie die Anweisungen codiert werden. Es kann auch kurze (vage) mnemonische Namen für die Anweisungen definieren. Die Namen können von einem Softwareentwicklungstool namens Assembler erkannt werden. Ein Assembler ist ein Computerprogramm, das eine für Menschen lesbare Form der ISA in eine für Computer lesbare Form übersetzt. Disassembler sind ebenfalls weit verbreitet, normalerweise in Debuggern und Softwareprogrammen, um Fehlfunktionen in binären Computerprogrammen zu isolieren und zu korrigieren.

ISAs unterscheiden sich in Qualität und Vollständigkeit. Ein guter ISA geht Kompromisse zwischen dem Komfort des Programmierers (wie einfach der Code zu verstehen ist), der Größe des Codes (wie viel Code für eine bestimmte Aktion erforderlich ist) und den Kosten des Computers für die Interpretation der Anweisungen ein (mehr Komplexität bedeutet mehr Hardware) Dekodieren und Ausführen der Anweisungen) und Geschwindigkeit des Computers (bei komplexerer Dekodierungshardware dauert die Dekodierungszeit länger). Die Speicherorganisation definiert, wie Anweisungen mit dem Speicher interagieren und wie der Speicher mit sich selbst interagiert.

Während der Entwurfsemulation können Emulatoren Programme ausführen, die in einem vorgeschlagenen Befehlssatz geschrieben sind. Moderne Emulatoren können Größe, Kosten und Geschwindigkeit messen, um festzustellen, ob eine bestimmte ISA ihre Ziele erreicht.

Computerorganisation[edit]

Die Computerorganisation hilft bei der Optimierung leistungsbasierter Produkte. Zum Beispiel müssen Softwareentwickler die Verarbeitungsleistung von Prozessoren kennen. Möglicherweise müssen sie die Software optimieren, um die höchste Leistung zum niedrigsten Preis zu erzielen. Dies kann eine recht detaillierte Analyse der Computerorganisation erfordern. Beispielsweise müssen die Designer bei einer SD-Karte die Karte möglicherweise so anordnen, dass die meisten Daten auf schnellstmögliche Weise verarbeitet werden können.

Die Computerorganisation hilft auch bei der Planung der Auswahl eines Prozessors für ein bestimmtes Projekt. Multimedia-Projekte benötigen möglicherweise einen sehr schnellen Datenzugriff, während virtuelle Maschinen schnelle Interrupts benötigen. Manchmal benötigen bestimmte Aufgaben auch zusätzliche Komponenten. Beispielsweise benötigt ein Computer, auf dem eine virtuelle Maschine ausgeführt werden kann, virtuelle Speicherhardware, damit der Speicher verschiedener virtueller Computer getrennt gehalten werden kann. Die Organisation und Funktionen des Computers wirken sich auch auf den Stromverbrauch und die Prozessorkosten aus.

Implementierung[edit]

Sobald ein Befehlssatz und eine Mikroarchitektur entworfen wurden, muss eine praktische Maschine entwickelt werden. Dieser Entwurfsprozess wird als bezeichnet Implementierung. Die Implementierung wird normalerweise nicht als architektonisches Design betrachtet, sondern als Hardware-Design-Engineering. Die Implementierung kann weiter in mehrere Schritte unterteilt werden:

  • Logikimplementierung entwirft die erforderlichen Schaltungen auf Logikgatterebene.
  • Schaltungsimplementierung Entwürfe auf Transistorebene von Grundelementen (z. B. Gattern, Multiplexern, Latches) sowie von einigen größeren Blöcken (ALUs, Caches usw.), die auf der Ebene des Logikgatters oder sogar auf der physikalischen Ebene implementiert werden können, wenn die Design verlangt danach.
  • Physische Implementierung zeichnet physikalische Schaltkreise. Die verschiedenen Schaltungskomponenten werden in einem Chip-Grundriss oder auf einer Platine platziert und die sie verbindenden Drähte werden erstellt.
  • Entwurfsvalidierung Testet den Computer als Ganzes, um festzustellen, ob er in allen Situationen und zu allen Zeiten funktioniert. Sobald der Entwurfsvalidierungsprozess beginnt, wird der Entwurf auf Logikebene unter Verwendung von Logikemulatoren getestet. Dies ist jedoch normalerweise zu langsam, um einen realistischen Test durchzuführen. Nach Korrekturen basierend auf dem ersten Test werden Prototypen mithilfe von FPGAs (Field-Programmable Gate-Arrays) erstellt. Die meisten Hobbyprojekte hören zu diesem Zeitpunkt auf. Der letzte Schritt besteht darin, integrierte Prototypschaltungen zu testen, für die möglicherweise mehrere Neukonstruktionen erforderlich sind.

Bei CPUs ist der gesamte Implementierungsprozess unterschiedlich organisiert und wird häufig als CPU-Design bezeichnet.

Designziele[edit]

Die genaue Form eines Computersystems hängt von den Einschränkungen und Zielen ab. Computerarchitekturen tauschen normalerweise Standards, Leistung gegen Leistung, Kosten, Speicherkapazität, Latenz (Latenz ist die Zeit, die Informationen von einem Knoten benötigen, um zur Quelle zu gelangen) und Durchsatz ab. Manchmal sind auch andere Überlegungen wie Merkmale, Größe, Gewicht, Zuverlässigkeit und Erweiterbarkeit Faktoren.

Das gebräuchlichste Schema führt eine eingehende Leistungsanalyse durch und ermittelt, wie der Stromverbrauch niedrig gehalten werden kann, während eine angemessene Leistung aufrechterhalten wird.

Performance[edit]

Die moderne Computerleistung wird häufig in Anweisungen pro Zyklus (IPC) beschrieben, die die Effizienz der Architektur bei jeder Taktfrequenz messen. Eine schnellere IPC-Rate bedeutet, dass der Computer schneller ist. Ältere Computer hatten IPC-Zahlen von nur 0,1, während moderne Prozessoren leicht nahe 1 erreichen. Superskalare Prozessoren können drei bis fünf IPC erreichen, indem sie mehrere Befehle pro Taktzyklus ausführen.[citation needed]

Das Zählen von maschinensprachlichen Anweisungen wäre irreführend, da sie in verschiedenen ISAs unterschiedlich viel Arbeit leisten können. Die “Anweisung” in den Standardmessungen ist keine Zählung der maschinensprachlichen Anweisungen der ISA, sondern eine Maßeinheit, die normalerweise auf der Geschwindigkeit der VAX-Computerarchitektur basiert.

Viele Leute haben die Geschwindigkeit eines Computers an der Taktrate gemessen (normalerweise in MHz oder GHz). Dies bezieht sich auf die Zyklen pro Sekunde des Haupttakts der CPU. Diese Metrik ist jedoch etwas irreführend, da eine Maschine mit einer höheren Taktrate möglicherweise nicht unbedingt eine höhere Leistung aufweist. Infolgedessen haben sich die Hersteller als Maß für die Leistung von der Taktrate entfernt.

Andere Faktoren beeinflussen die Geschwindigkeit, wie z. B. die Mischung aus Funktionseinheiten, Busgeschwindigkeiten, verfügbarem Speicher sowie Art und Reihenfolge der Anweisungen in den Programmen.

Es gibt zwei Haupttypen von Geschwindigkeit: Latenz und Durchsatz. Die Latenz ist die Zeit zwischen dem Start eines Prozesses und seinem Abschluss. Der Durchsatz ist der Arbeitsaufwand pro Zeiteinheit. Die Interrupt-Latenz ist die garantierte maximale Reaktionszeit des Systems auf ein elektronisches Ereignis (z. B. wenn das Festplattenlaufwerk einige Daten nicht mehr verschiebt).

Die Leistung wird durch eine Vielzahl von Entwurfsoptionen beeinflusst. Beispielsweise verschlechtert das Pipelining eines Prozessors normalerweise die Latenz, verbessert jedoch den Durchsatz. Computer, die Maschinen steuern, benötigen normalerweise geringe Interrupt-Latenzen. Diese Computer arbeiten in einer Echtzeitumgebung und schlagen fehl, wenn ein Vorgang nicht in einer bestimmten Zeit abgeschlossen wird. Beispielsweise müssen computergesteuerte Antiblockierbremsen innerhalb eines vorhersehbaren und begrenzten Zeitraums nach dem Erkennen des Bremspedals mit dem Bremsen beginnen, da sonst die Bremse ausfällt.

Das Benchmarking berücksichtigt all diese Faktoren, indem es die Zeit misst, die ein Computer benötigt, um eine Reihe von Testprogrammen auszuführen. Obwohl Benchmarking Stärken zeigt, sollte es nicht so sein, wie Sie einen Computer auswählen. Oft teilen sich die gemessenen Maschinen nach verschiedenen Maßen auf. Beispielsweise kann ein System wissenschaftliche Anwendungen schnell verarbeiten, während ein anderes Videospiele reibungsloser wiedergibt. Darüber hinaus können Designer ihre Produkte durch Hardware oder Software gezielt einsetzen und ihnen spezielle Funktionen hinzufügen, die eine schnelle Ausführung eines bestimmten Benchmarks ermöglichen, jedoch keine ähnlichen Vorteile wie allgemeine Aufgaben bieten.

Energie-Effizienz[edit]

Die Energieeffizienz ist eine weitere wichtige Messung in modernen Computern. Eine höhere Energieeffizienz kann oft gegen niedrigere Geschwindigkeit oder höhere Kosten eingetauscht werden. Die typische Messung in Bezug auf den Stromverbrauch in der Computerarchitektur ist MIPS / W (Millionen von Anweisungen pro Sekunde pro Watt).

Moderne Schaltungen benötigen weniger Energie pro Transistor, wenn die Anzahl der Transistoren pro Chip zunimmt.[18] Dies liegt daran, dass jeder Transistor, der in einen neuen Chip eingesetzt wird, eine eigene Stromversorgung benötigt und neue Wege zur Stromversorgung benötigt werden. Die Anzahl der Transistoren pro Chip beginnt jedoch langsamer zuzunehmen. Daher wird die Energieeffizienz immer wichtiger, wenn nicht sogar wichtiger als der Einbau von immer mehr Transistoren in einen einzelnen Chip. Neuere Prozessorkonstruktionen haben diesen Schwerpunkt gezeigt, da sie sich mehr auf die Energieeffizienz konzentrieren, als so viele Transistoren wie möglich in einen einzelnen Chip zu packen.[19] In der Welt der eingebetteten Computer ist die Energieeffizienz neben Durchsatz und Latenz seit langem ein wichtiges Ziel.

Verschiebungen in der Marktnachfrage[edit]

Der Anstieg der Taktfrequenz ist in den letzten Jahren im Vergleich zu Verbesserungen bei der Leistungsreduzierung langsamer gewachsen. Dies wurde durch das Ende des Moore’schen Gesetzes und die Forderung nach einer längeren Akkulaufzeit und einer Verringerung der Größe für mobile Technologien vorangetrieben. Diese Änderung des Fokus von höheren Taktraten auf Stromverbrauch und Miniaturisierung kann durch die signifikante Reduzierung des Stromverbrauchs um bis zu 50% gezeigt werden, die Intel bei der Veröffentlichung der Haswell-Mikroarchitektur gemeldet hat. Dort senkten sie ihren Stromverbrauchs-Benchmark von 30 auf 40 Watt auf 10 bis 20 Watt.[20] Vergleicht man dies mit der Erhöhung der Verarbeitungsgeschwindigkeit von 3 GHz auf 4 GHz (2002 bis 2006)[21] Es ist ersichtlich, dass sich der Fokus in Forschung und Entwicklung von der Taktfrequenz wegbewegt und dazu führt, weniger Strom zu verbrauchen und weniger Platz zu beanspruchen.

Siehe auch[edit]

Verweise[edit]

  1. ^ Clements, Alan. Prinzipien der Computerhardware (Vierte Ausgabe). p. 1. Architektur beschreibt die interne Organisation eines Computers auf abstrakte Weise; Das heißt, es definiert die Fähigkeiten des Computers und seines Programmiermodells. Sie können zwei Computer haben, die auf unterschiedliche Weise mit unterschiedlichen Technologien, aber mit derselben Architektur konstruiert wurden.
  2. ^ Hennessy, John; Patterson, David. Computerarchitektur: Ein quantitativer Ansatz (Fünfte Ausgabe). p. 11. Diese Aufgabe hat viele Aspekte, einschließlich Befehlssatzdesign, funktionale Organisation, Logikdesign und Implementierung.
  3. ^ Williams, FC; Kilburn, T. (25. September 1948), “Elektronische digitale Computer”, Natur, 162 (4117): 487, Bibcode:1948Natur.162..487W, doi:10.1038 / 162487a0, S2CID 4110351, archiviert von das Original am 6. April 2009abgerufen 2009-04-10
  4. ^ Susanne Faber, “Konrad Zuses Bemuehungen um die Patentanmeldung der Z3”, 2000
  5. ^ Neumann, John (1945). Erster Entwurf eines Berichts über die EDVAC. p. 9.
  6. ^ Wiedergabe in BJ Copeland (Hrsg.), “Alan Turings Automatic Computing Engine”, Oxford University Press, 2005, S. 369-454.
  7. ^ Johnson, Lyle (1960). “Eine Beschreibung der Dehnung” (PDF). p. 1. Abgerufen 7. Oktober 2017.
  8. ^ Buchholz, Werner (1962). Planen eines Computersystems. p. 5.
  9. ^ “System 360, von Computern zu Computersystemen”. IBM100. Abgerufen 11. Mai 2017.
  10. ^ Hellige, Hans Dieter (2004). “Die Genese von Wissenschaftskonzeptionen der Computerarchitektur: Vom” Organsystem “zum Schichtmodell des Designraums”. Geschichten der Informatik: Visionen, Paradigmen, Leitmotive. S. 411–472.
  11. ^ ACE unterzog sich in einem Jahr sieben Papierentwürfen, bevor 1948 ein Prototyp initiiert wurde. [B. J. Copeland (Ed.), “Alan Turing’s Automatic Computing Engine”, OUP, 2005, p. 57]
  12. ^ Schmalz, MS “Organisation von Computersystemen”. UF CISE. Abgerufen 11. Mai 2017.
  13. ^ ein b John L. Hennessy und David A. Patterson. Computerarchitektur: Ein quantitativer Ansatz (Dritte Ausgabe). Morgan Kaufmann Verlag.
  14. ^ Laplante, Phillip A. (2001). Wörterbuch der Informatik, Ingenieurwissenschaften und Technologie. CRC Drücken Sie. S. 94–95. ISBN 0-8493-2691-5.
  15. ^ Frey, Brad (24.02.2005). “PowerPC Architecture Book, Version 2.02”. IBM Corporation.
  16. ^ Null, Linda (2019). Die Grundlagen der Computerorganisation und -architektur (5. Aufl.). Burlington, MA: Jones & Bartlett lernen. p. 280. ISBN 9781284123036.
  17. ^ Martin, Milo. “Was ist Computerarchitektur?” (PDF). UPENN. Abgerufen 11. Mai 2017.
  18. ^ “Integrierte Schaltungen und Herstellung” (PDF). Abgerufen 8. Mai 2017.
  19. ^ “Exynos 9 Series (8895)”. Samsung. Abgerufen 8. Mai 2017.
  20. ^ “Messen der Prozessorleistung TDP gegen ACP” (PDF). Intel. April 2011. Abgerufen 5. Mai 2017.
  21. ^ “Geschichte der Prozessorleistung” (PDF). cs.columbia.edu. 24. April 2012. Abgerufen 5. Mai 2017.

Quellen[edit]

Externe Links[edit]


after-content-x4