Rechnerarchitektur
Rechnerarchitektur ist ein Teilgebiet der Technischen Informatik, welches sich mit dem Design von Computern und speziell mit deren Organisation, sowie deren externen und internen Aufbau beschäftigt.
Definition
Amdahl, Brooks und Blaauw definieren 1967: "Rechnerarchitektur definiert sich aus den Attributen und des Verhaltens eines Computers, wie dieser von einem Maschinenspracheprogrammierer gesehen wird. Diese Definition umfasst den Befehlssatz, die Befehlsformate, die OP-Codes, die Adressierungsarten und alle Register und Speicher, die direkt durch einen Maschinenspracheprogrammierer verändert werden können. Die Implementation ist durch den aktuellen Hardwareaufbau, das logische Design und die Organisation der Datenpfade einer bestimmten Ausführung der Architektur definiert."
Laut Stahlknecht und Hasenkamp: "Unter dem Begriff Rechnerarchitektur versteht man:
- die interne Struktur des Rechners, d.h. seinen Aufbau aus verschiedenen Komponenten, und
- die Organisation der Arbeitsabläufe im Rechner."
Anwendung
Wie ein Architekt eines Gebäudes die Prinzipien und Ziele eines Bauprojektes als die Basis für die Pläne des Bauzeichners festlegt, genauso legt ein Computer-Architekt die Computer-Architektur als Basis für die eigentlichen Designspezifikationen fest.
Der Ausdruck wird für verschiedene Bedeutungen verwendet:
- Das Design der Prozessorarchitektur eines Computer und seines Befehlssatzes und Techniken wie SIMD- und MIMD-Parallelität.
- Allgemeinere und umfassendere Hardware-Architektur wie Cluster Computing und NUMA-Architekturen.
- Eine weniger formale Bedeutung bezieht sich auf die Beschreibung der Voraussetzungen (besonders Geschwindigkeits- und Verbindungsvoraussetzungen) oder Design-Implementationen der verschiedenen Komponenten eines Computers (Wie zum Beispiel Arbeitsspeicher, Hauptplatine, elektronische Peripherie oder ganz allgemein die CPU).
Designziele
Die am häufigsten verfolgten Ziele beim Design einer Computer-Architektur kreisen um den Konflikt zwischen Kosten und Performance (d.h. Geschwindigkeit), allerdings können auch Erwägungen wie z.B. Zuverlässigkeit, Erweiterbarkeit, Größe/Gewicht oder Energieverbrauch ausschlaggebende Faktoren sein.
Kosten
Im Allgemeinen stehen die Kosten im Voraus fest, werden bestimmt durch den System- oder kommerziellen Bedarf. Die Geschwindigkeit und Speicherkapazität werden an dieses Kostenziel angepasst.
Performance
Computerverkäufer beschreiben die Performance ihrer Maschinen mit dem Begriff der Taktfrequenz (normalerweise in MHz oder GHz). Diese beschreibt, wie oft ein Taktzyklus des Systemtaktgebers pro Sekunde durchlaufen wird. Diese Maßeinheit ist jedoch etwas irreführend: Eine Maschine mit höherer Taktfrequenz muss nicht unbedingt auch eine höhere Performance aufweisen. Moderne CPUs können mehrere Instruktionen pro Taktzyklus ausführen, was ein Programm dramatisch beschleunigt. Auch andere Faktoren wie der Mix von funktionellen Einheiten, Bussystem-Geschwindigkeiten, verfügbarer Speicher und die Art und Reihenfolge der Instruktionen eines laufenden Programmes beeinflussen die Performance stark.
Es gibt verschiedene Arten von Geschwindigkeit. Interrupt Latency ist die garantierte maximale Antwortzeit des Systems auf ein elektronisches Ereignis (zum Beispiel wenn die Festplatte mit Schreiben von Daten fertig wird). Diese Zahl wird durch eine große Anzahl von Designentscheidungen beeinflusst. Computer, die Maschinen kontrollieren, brauchen für gewöhnlich eine niedrige Latenzzeit, weil die Maschine nicht warten kann, nicht warten wird oder nicht warten sollte. Zum Beispiel sollte eine computer-kontrollierte Bremse nicht warten, bis der Computer mit dem fertig ist, was er gerade macht, sondern sollte direkt bremsen. Niedrige Antwortzeiten können oft sehr kostengünstig erreicht werden.
Benchmarks versuchen dies alles zusammen zu erfassen indem sie die Zeit messen, die ein Computer braucht um eine Reihe von Testprogrammen zu verarbeiten. Obwohl ein Benchmark die Stärken aufzeigt, muss er bei der Auswahl eines Computer nicht unbedingt hilfreich sein. Oft variiert die Leistung der Systeme bei einzelnen Messpunkten. Zum Beispiel kann ein System vielleicht wissenschaftliche Programme schnell verarbeiten, während ein anderes Videos besser abspielen kann.
Ein allgemeines Optimierungsschema ist es, die einzelnen Kosten der verschiedenen Komponenten des Rechners zu betrachten. In einem ausgeglichenen Computersystem wird die Datenrate für alle Teile des Systems konstant sein und die Kosten werden proportional auf diese verteilt. Die genaue Ausprägung des Computersystems wird letztendlich aber immer durch das Umfeld und die Ziele bestimmt, für die es optimiert wurde.