Rechnerarchitektur

Blockierende Diagramm eines Basiscomputers mit Uniprozessor -CPU. Schwarze Linien geben den Datenfluss an, während rote Linien den Steuerfluss angeben. Pfeile geben die Flussrichtung an.

Im Technische Informatik, Rechnerarchitektur ist eine Reihe von Regeln und Methoden, die die Funktionalität, Organisation und Implementierung von beschreiben Computer Systeme. Die Architektur eines Systems bezieht sich auf seine Struktur in Bezug auf separat festgelegte Komponenten dieses Systems und ihrer Wechselbeziehungen.[1]

Einige Definitionen der Architektur definieren es als die Beschreibung der Funktionen und des Programmiermodells eines Computers, jedoch nicht als bestimmte Implementierung.[2] In anderen Definitionen beinhaltet Computerarchitektur Anweisungsset Architektur Entwurf, Mikroarchitektur Entwurf, Logikdesign, und Implementierung.[3]

Geschichte

Die erste dokumentierte Computerarchitektur befand sich in der Korrespondenz zwischen Charles Babbage und Ada Lovelace, beschreiben die analytischer Motor. Beim Bauen des Computers Z1 1936, Konrad Zuse beschrieben in zwei Patentanwendungen für seine zukünftigen Projekte, die Maschinenanweisungen in demselben Speicher gespeichert werden könnten, der für Daten verwendet wird, d. H. Die, die Speichernprogramm Konzept.[4][5] Zwei weitere frühe und wichtige Beispiele sind:

Der Begriff „Architektur“ in der Computerliteratur kann auf die Arbeit von Lyle R. Johnson und verfolgt werden Frederick P. Brooks, Jr., Mitglieder der Maschinenorganisationsabteilung im Hauptforschungszentrum von IBM im Jahr 1959. Johnson hatte die Möglichkeit, eine proprietäre Forschungskommunikation über die zu schreiben Strecken, ein IBM-entwickelt Supercomputer zum Los Alamos Nationales Labor (Zu dieser Zeit als Los Alamos Scientific Laboratory). Um das Detailniveau für die Diskussion des luxuriös verzierten Computers zu beschreiben, stellte er fest, dass seine Beschreibung von Formaten, Anweisungen, Hardwareparametern und Geschwindigkeitsverbesserungen auf der Ebene der „Systemarchitektur“ lag, ein Begriff, der nützlicher schien als „Maschinenorganisation“ ”.[8]

Anschließend eröffnete Brooks, ein Stretch Designer, Kapitel 2 eines Buches namens Planung eines Computersystems: Projektstrecke Mit der Angabe von Computerarchitektur ist wie andere Architektur die Kunst, die Bedürfnisse des Benutzers einer Struktur zu bestimmen und dann zu entwerfen, um diese Bedürfnisse innerhalb wirtschaftlicher und technologischer Einschränkungen so effektiv wie möglich zu erfüllen. "[9]

Brooks fuhr fort, die zu entwickeln IBM System/360 (jetzt das genannt IBM ZSeries) Computerlinie, in der „Architektur“ zu einem Substantiv wurde, das „was der Benutzer wissen muss“ definierte.[10] Später verwendeten Computerbenutzer den Begriff auf viele weniger explizite Weise.[11]

Die frühesten Computerarchitekturen wurden auf Papier entworfen und dann direkt in das endgültige Hardwareformular eingebaut.[12] Später wurden die Prototypen der Computerarchitektur physisch in Form von a gebaut Transistor -Transistor -Logik (TTL) Computer - wie die Prototypen der 6800 und die Pa-risc- Geprüft und optimiert, bevor Sie sich für das endgültige Hardwareformular verpflichtet haben. Ab den neunziger Jahren werden neue Computerarchitekturen in der Regel "gebaut", getestet und optimiert - eine andere Computerarchitektur in a Computerarchitektursimulator; oder in einem FPGA als weicher Mikroprozessor; oder beides - bevor sich das endgültige Hardwareformular verpflichtet.[13]

Unterkategorien

Die Disziplin der Computerarchitektur hat drei Hauptunterkategorien:[14]

Es gibt andere Technologien in der Computerarchitektur. Die folgenden Technologien werden in größeren Unternehmen wie Intel verwendet und wurden 2002 geschätzt[14] zählen für 1% der gesamten Computerarchitektur:

  • Makroarchitektur: Architekturschichten Abstrakter als Mikroarchitektur
  • Assembly -Anweisung Set Architektur: Ein intelligenter Assembler kann eine Zusammenfassung umwandeln Montagesprache Gemeinsam einer Gruppe von Maschinen in etwas anders Maschinensprache für unterschiedlich Implementierungen.
  • Programmierer-sichtbarer Makroarchitektur: höhere Sprachwerkzeuge wie z. Compiler kann eine konsistente Schnittstelle oder einen Vertrag an definieren Programmierer Verwenden Sie sie, abstrahieren Unterschiede zwischen zugrunde liegender ISA, UISA und Mikroarchitekturen. Zum Beispiel die C, C ++, oder Java Standards definieren verschiedene Programmierer-sichtbare Makroarchitekturen.
  • Mikrocode: Microcode ist Software, die Anweisungen für einen Chip übersetzt. Es wirkt wie eine Wrapper um die Hardware und präsentiert eine bevorzugte Version der Anweisungssatzschnittstelle der Hardware. Diese Anleitung Übersetzungsanlage bietet Chip -Designern flexible Optionen: z. 1. Eine neue verbesserte Version des Chips kann Microcode verwenden, um genau den gleichen Befehlssatz wie die alte Chip -Version zu präsentieren. Daher werden alle Software -Targeting auf den Befehlssatz auf dem neuen Chip ausgeführt, ohne Änderungen zu benötigen. Z.B. 2. Mikrocode kann eine Vielzahl von Befehlssätzen für denselben zugrunde liegenden Chip vorstellen, sodass es eine größere Vielfalt an Software ausführen kann.
  • UISA: Benutzeranweisungs -Architektur bezieht sich auf einen von drei Teilmengen der RISC CPU -Anweisungen zur Verfügung gestellt von Powerpc RISC -Prozessoren. Die UISA -Untergruppe sind diese RISC -Anweisungen, die für Anwendungsentwickler interessiert sind. Die anderen beiden Untergruppen sind VEA -Anweisungen (Virtual Environment Architecture), die von den Entwicklern des Virtualisierungssystems und der OEA (Betriebsumfeldarchitektur) von Betriebssystementwicklern verwendet werden.[16]
  • Pin -Architektur: Die Hardwarefunktionen, die a Mikroprozessor sollte einer Hardwareplattform bereitstellen, z. B. die x86 Pins A20m, Ferr/Ignne oder Flush. Auch Nachrichten, die der Prozessor so emittieren sollte, so extern Caches kann ungültig (geleert) werden. PIN -Architekturfunktionen sind flexibler als ISA -Funktionen, da sich externe Hardware an neue Codierungen anpassen oder von einer 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.

Rollen

Definition

Die Computerarchitektur befasst sich mit dem Ausgleich der Leistung, Effizienz, Kosten und Zuverlässigkeit eines Computersystems. Der Fall der Anweisungs -Set -Architektur kann verwendet werden, um das Gleichgewicht dieser konkurrierenden Faktoren zu veranschaulichen. Komplexere Anweisungssätze ermöglichen es den Programmierern, platzendere Programme zu schreiben, da eine einzelne Anweisung eine höhere Abstraktion auf höherer Ebene codieren kann (z. B. der X86-Schleifenanweis).[17] Es dauert jedoch längere und komplexere Anweisungen, bis der Prozessor dekodiert wird, und können teurer werden, um effektiv zu implementieren. Die erhöhte Komplexität eines großen Unterrichtssatzes schafft auch mehr Raum für Unzuverlässigkeit, wenn Anweisungen auf unerwartete Weise interagieren.

Die Implementierung umfasst integriertes Schaltungsdesign, Verpackung, Strom und Kühlung. Die Optimierung des Designs erfordert Vertrautheit mit Compilern, Betriebssystemen für Logikdesign und Verpackung.[18]

Anweisungsset Architektur

Ein Anweisungsset Architektur (ISA) ist die Schnittstelle zwischen der Software und der Hardware des Computers und kann auch als Sicht des Programmierers auf den Computer angesehen werden. Computer verstehen nicht hochrangige Programmiersprachen wie Java, C ++ oder die meisten verwendeten Programmiersprachen. Ein Prozessor versteht nur Anweisungen, die auf numerische Weise codiert werden, normalerweise als Binärzahlen. Softwaretools wie z. CompilerÜbersetzen Sie diese Sprachen auf hoher Ebene in Anweisungen, die der Prozessor verstehen kann.

Neben den Anweisungen definiert der ISA Elemente im Computer, die einem Programm zur Verfügung stehen - z. Datentypen, Register, Adressierungsmodiund Erinnerung. Anweisungen finden Sie diese verfügbaren Elemente mit Registerindizes (oder Namen) und Speicheradresungsmodi.

Der ISA eines Computers wird normalerweise in einer kleinen Bedienungsanleitung beschrieben, in der beschrieben wird, wie die Anweisungen codiert werden. Außerdem kann es kurze (vage) mnemonische Namen für die Anweisungen definieren. Die Namen können durch ein Softwareentwicklungs -Tool namens ein erkannt werden Assembler. Ein Assembler ist ein Computerprogramm, das eine menschlich lesbare Form des ISA in eine computerlesbare Form übersetzt. Disassembler sind auch weit verbreitet, normalerweise in Debugger und Softwareprogramme zur Isolierung und Korrektur von Fehlfunktionen in binären Computerprogrammen.

Die ISAs variieren in Qualität und Vollständigkeit. Eine gute ISA -Kompromisse zwischen Programmierkomfort (wie einfach der Code zu verstehen ist), Größe des Code (wie viel Code erforderlich ist, um eine bestimmte Aktion auszuführen), Kosten des Computers, um die Anweisungen zu interpretieren (mehr Komplexität bedeutet, dass mehr Hardware erforderlich ist Dekodieren und führen Sie die Anweisungen aus) und die Geschwindigkeit des Computers (mit komplexerer Dekodierungshardware länger länger dekodieren). Speicherorganisation definiert, wie Anweisungen mit dem Speicher interagieren und wie das Gedächtnis mit sich selbst interagiert.

Während des Designs Emulation, Emulatoren können Programme ausführen, die in einem vorgeschlagenen Anweisungssatz geschrieben wurden. Moderne Emulatoren können Größe, Kosten und Geschwindigkeit messen, um festzustellen, ob eine bestimmte ISA ihre Ziele erreicht.

Computerorganisation

Die Computerorganisation hilft bei der Optimierung leistungsbasierter Produkte. Zum Beispiel müssen Software -Ingenieure die Verarbeitungsleistung von Prozessoren kennen. Möglicherweise müssen sie die Software optimieren, um die größte Leistung für den niedrigsten Preis zu erzielen. Dies kann eine detaillierte Analyse der Organisation des Computers erfordern. In einer SD -Karte müssen die Designer beispielsweise möglicherweise die Karte anordnen, damit 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 möglicherweise schnelle Interrupts benötigen. Manchmal benötigen bestimmte Aufgaben auch zusätzliche Komponenten. Zum Beispiel ein Computer, der in der Lage ist, eine virtuelle Maschine auszuführen, benötigt virtueller Speicher Hardware, damit der Speicher verschiedener virtueller Computer getrennt gehalten werden kann. Computerorganisation und Funktionen wirken sich auch auf Stromverbrauch und Prozessorkosten aus.

Implementierung

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

  • Logische Implementierung entwirft die Schaltkreise bei a Logik-Gate eben.
  • Implementierung der Schaltung tut Transistor-Legeldesigns grundlegender Elemente (z. B. Gates, Multiplexer, Riegel) sowie einige größere Blöcke (Alus, Caches usw.), die auf der Ebene der Logikstunde oder sogar auf physischer Ebene implementiert werden können, wenn das Design dies erfordert.
  • Physische Implementierung Zeichnet physische Schaltkreise. Die verschiedenen Schaltungskomponenten werden in einem Chip platziert Gebäudeplan oder auf einer Platine und die Drähte, die sie verbinden, werden erstellt.
  • Entwurfsvalidierung Testen Sie den Computer als Ganzes, um festzustellen, ob er in allen Situationen und allen Timings funktioniert. Sobald der Entwurfsvalidierungsprozess beginnt, wird das Design auf der Logikebene mit Logikemulatoren getestet. Dies ist jedoch normalerweise zu langsam, um einen realistischen Test durchzuführen. Nach dem Aufbau von Korrekturen basierend auf dem ersten Test werden Prototypen unter Verwendung von feldprogrammierbaren Gate-Arrays konstruiert (Fpgas). Die meisten Hobbyprojekte stoppen in dieser Phase. Der letzte Schritt besteht darin, integrierte Prototypen integrierte Schaltkreise zu testen, für die möglicherweise mehrere Neugestaltungen erforderlich sind.

Zum CPUsDer gesamte Implementierungsprozess wird unterschiedlich organisiert und wird häufig als als bezeichnet CPU -Design.

Designziele

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

Das häufigste Schema führt eine eingehende Leistungsanalyse durch und ermittelt, wie der Stromverbrauch niedrig bleibt und gleichzeitig eine angemessene Leistung aufrechterhalten kann.

Leistung

Moderne Computerleistung wird oft in beschrieben Anweisungen pro Zyklus (IPC), das die Effizienz der Architektur bei jeder Taktfrequenz misst; Eine schnellere IPC -Rate bedeutet, dass der Computer schneller ist. Ältere Computer hatten IPC -Zähler von nur 0,1, während moderne Prozessoren problemlos nahe 1 erreichten. Superscalar Prozessoren können drei bis fünf IPC erreichen, indem sie mehrere Anweisungen pro Taktzyklus ausführen.

Das Zählen von Anweisungen für maschinensprachige Anweisungen wäre irreführend, da sie in verschiedenen ISAs unterschiedliche Arbeiten leisten können. Die "Anweisung" in den Standardmessungen ist keine Anzahl der maschinensprachigen Anweisungen des ISA, sondern eine Messeinheit, die normalerweise auf der Geschwindigkeit der Geschwindigkeit basiert Vax Rechnerarchitektur.

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

Andere Faktoren beeinflussen die Geschwindigkeit, wie die Mischung von Funktionseinheiten, Bus Geschwindigkeiten, verfügbarer Speicher sowie Art und Reihenfolge der Anweisungen in den Programmen.

Es gibt zwei Haupttypen von Geschwindigkeit: Latenz und Durchsatz. Latenz ist die Zeit zwischen dem Beginn eines Prozesses und seiner Fertigstellung. Durchsatz ist die Menge an Arbeit pro Zeiteinheit. Latenz unterbrechen ist die garantierte maximale Reaktionszeit des Systems zu einem elektronischen Ereignis (wie wenn das Festplattenlaufwerk einige Daten beendet).

Die Leistung wird durch eine sehr breite Palette von Designentscheidungen beeinflusst - zum Beispiel, Pipelining Ein Prozessor verschlechtert sich in der Regel die Latenz, macht aber den Durchsatz besser. Computer, die Maschinen steuern, benötigen normalerweise niedrige Interrupt -Latenzen. Diese Computer arbeiten in a Echtzeit Umgebung und scheitern, wenn ein Vorgang nicht in einer bestimmten Zeit abgeschlossen ist. Beispielsweise müssen computergesteuerte Anti-Lock-Bremsen innerhalb eines vorhersehbaren und begrenzten Zeitraums nach dem Erkennen des Bremspedals beginnen, sonst tritt ein Versagen der Bremse auf.

Benchmarking Berücksichtigt all diese Faktoren, indem er die Zeit misst, die ein Computer benötigt, um eine Reihe von Testprogrammen durchzuführen. Obwohl das Benchmarking Stärken zeigt, sollte es nicht so sein, wie Sie einen Computer auswählen. Oft teilen sich die gemessenen Maschinen auf verschiedene Maßnahmen. Beispielsweise kann ein System schnell wissenschaftliche Anwendungen abwickeln, während ein anderes Videospiele reibungsloser machen. Darüber hinaus können Designer über Hardware oder Software spezielle Funktionen für ihre Produkte ansprechen und hinzufügen, die es einem bestimmten Benchmark ermöglichen, schnell auszuführen, aber keine ähnlichen Vorteile für allgemeine Aufgaben bieten.

Energie-Effizienz

Leistungseffizienz ist eine weitere wichtige Messung in modernen Computern. Eine höhere Leistungseffizienz kann häufig gegen niedrigere Geschwindigkeit oder höhere Kosten gehandelt werden. Die typische Messung bei der Bezugnahme auf Stromverbrauch in der Computerarchitektur ist MIPS/W (Millionen von Anweisungen pro Sekunde pro Watt).

Moderne Schaltkreise sind weniger Strom pro erforderlich Transistor Mit der Anzahl der Transistoren pro Chip wächst.[19] Dies liegt daran, dass jeder Transistor, der in einen neuen Chip eingebaut wird, seine eigene Stromversorgung benötigt und neue Wege benötigt, um ihn mit Strom zu versorgen. Die Anzahl der Transistoren pro Chip steigt jedoch langsamer an. Daher wird die Leistungseffizienz genauso wichtig, wenn nicht sogar wichtiger als immer mehr Transistoren in einen einzelnen Chip zu passen. Jüngste Prozessorentwürfe haben diesen Schwerpunkt gezeigt, da sie sich mehr auf die Energieeffizienz konzentrieren als so viele Transistoren wie möglich in einen einzelnen Chip.[20] In der Welt der eingebetteten Computer ist Stromeffizienz seit langem ein wichtiges Ziel neben Durchsatz und Latenz.

Verschiebungen der Marktnachfrage

Die Zunahme der Taktfrequenz ist in den letzten Jahren langsamer gewachsen als bei Verbesserungen der Stromversuche. Dies wurde bis zum Ende von getrieben Moores Gesetz und Nachfrage nach längerer Akkulaufzeit und Verringerung der Größe für mobile Technologie. Diese Veränderung des Fokus von höheren Taktraten zu Stromverbrauch und Miniaturisierung kann durch die signifikanten Verringerung des Stromverbrauchs von bis zu 50%gezeigt werden, die von Intel in ihrer Freisetzung der gemeldet wurden Haswell -Mikroarchitektur; wo sie ihren Stromverbrauch von 30 bis 40 Watt auf 10-20 Watt fallen ließen.[21] Vergleich dies mit der Verarbeitungsgeschwindigkeitssteigerung von 3 GHz mit 4 GHz (2002 bis 2006)[22] Es ist ersichtlich, dass sich der Fokus auf Forschung und Entwicklung von der Uhrfrequenz abweist und sich in Richtung weniger Stromverbrauch und weniger Platz einbezieht.

Siehe auch

Verweise

  1. ^ Dragoni, Nicole (n.d.). "Einführung in Peer to Peer Computing" (PDF). DTU -Computer - Abteilung für angewandte Mathematik und Informatik. Lyngby, Dänemark.
  2. ^ Clements, Alan. Prinzipien der Computerhardware (Viertes Ausgabe). p. 1. Die Architektur beschreibt die interne Organisation eines Computers auf abstrakte Weise. Das heißt, es definiert die Funktionen des Computers und des Programmiermodells. Sie können zwei Computer haben, die auf unterschiedliche Weise mit unterschiedlichen Technologien konstruiert wurden, jedoch mit derselben Architektur.
  3. ^ Hennessy, John; Patterson, David. Computerarchitektur: Ein quantitativer Ansatz (Fünfter Aufl.). p. 11. Diese Aufgabe verfügt über viele Aspekte, einschließlich des Design -Designs, funktionaler Organisation, Logikdesign und Implementierung.
  4. ^ Williams, F. C.; 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 2009, abgerufen 2009-04-10
  5. ^ Susanne Faber, "Konrad zuses Bemuehungen um Die Patentanmeldung der Z3", 2000
  6. ^ Neumann, John (1945). Erster Entwurf eines Berichts über den EDVAC. p. 9.
  7. ^ Reproduziert in B. J. Copeland (Hrsg.), "Alan Turings Automatic Computing Engine", Oxford University Press, 2005, S. 369-454.
  8. ^ Johnson, Lyle (1960). "Eine Beschreibung der Stretch" (PDF). p. 1. Abgerufen 7. Oktober 2017.
  9. ^ Buchholz, Werner (1962). Planung eines Computersystems. p. 5.
  10. ^ "System 360, von Computern zu Computersystemen". IBM100. 7. März 2012. Abgerufen 11. Mai 2017.
  11. ^ Hellige, Hans Dieter (2004). "Die Genese von WissenschaftskonzCENCENTEN der Computerarchitektur: VOM" System der Organe "Zum Schichtmodell des Desigraums". Geschichten der Informatik: Visionen, Paradignen, Leitmotive. S. 411–472.
  12. ^ Ace wurde in einem Jahr sieben Papierdesigns unterzogen, bevor ein Prototyp 1948 eingeleitet wurde. [B. J. Copeland (Hrsg.), "Alan Turings Automatic Computing Engine", OUP, 2005, p. 57]
  13. ^ Schmalz, M.S. "Organisation von Computersystemen". Uf Cise. Abgerufen 11. Mai 2017.
  14. ^ a b John L. Hennessy und David A. Patterson. Computerarchitektur: Ein quantitativer Ansatz (Dritter Aufl.). Morgan Kaufmann Publishers.
  15. ^ Laplante, Phillip A. (2001). Wörterbuch für Informatik, Ingenieurwesen und Technologie. CRC Press. S. 94–95. ISBN 0-8493-2691-5.
  16. ^ Frey, Brad (2005-02-24). "Powerpc Architecture Book, Version 2.02". IBM Corporation.
  17. ^ Null, Linda (2019). Das Wesentliche der Computerorganisation und Architektur (5. Aufl.). Burlington, MA: Jones & Bartlett Learning. p. 280. ISBN 9781284123036.
  18. ^ Martin, Milo. "Was ist Computerarchitektur?" (PDF). Upenn. Abgerufen 11. Mai 2017.
  19. ^ "Integrierte Schaltungen und Herstellung" (PDF). Abgerufen 8. Mai 2017.
  20. ^ "Exynos 9er (8895)". Samsung. Abgerufen 8. Mai 2017.
  21. ^ "Messungsprozessorleistung TDP gegen ACP" (PDF). Intel. April 2011. Abgerufen 5. Mai 2017.
  22. ^ "Geschichte der Prozessorleistung" (PDF). cs.columbia.edu. 24. April 2012. Abgerufen 5. Mai 2017.

Quellen

Externe Links