Wichtige Erkenntnisse
1. Computer sind hierarchisch strukturiert, wobei jede Ebene eine spezifische Funktion erfüllt.
Die ersten drei Ausgaben dieses Buches basierten auf der Idee, dass ein Computer als eine Hierarchie von Ebenen betrachtet werden kann, von denen jede eine klar definierte Funktion erfüllt.
Schichtweise Abstraktion. Ein Computersystem ist kein monolithisches Gebilde, sondern besteht aus einer Reihe von Schichten, die jeweils auf der darunterliegenden aufbauen. Dieser schichtweise Ansatz vereinfacht das Design und das Verständnis, sodass Ingenieure sich auf spezifische Ebenen konzentrieren können, ohne das gesamte System auf einmal erfassen zu müssen. Jede Ebene bietet eine virtuelle Maschine, die die Komplexität der unteren Ebenen abstrahiert.
Ebenen der Hierarchie. Das Buch hebt zentrale Ebenen hervor:
- Digitales Logikniveau: Die Grundlage, die sich mit Toren und Schaltungen befasst.
- Mikroarchitektur-Ebene: Implementiert die ISA unter Verwendung von Datenpfaden und Steuersignalen.
- Instruction Set Architecture (ISA) Ebene: Definiert die Maschinensprache.
- Betriebssystemebene: Verwaltet Ressourcen und bietet Dienste für Anwendungen.
- Assemblersprachebene: Eine für Menschen lesbare Darstellung von Maschinencode.
- Problemorientierte Sprachebene: Hochsprachen wie Java oder C++.
Vorteile des hierarchischen Modells. Diese Struktur ermöglicht Modularität, was es einfacher macht, Komponenten auf einer Ebene zu aktualisieren oder zu ersetzen, ohne andere zu beeinträchtigen. Sie ermöglicht auch eine Arbeitsteilung, bei der verschiedene Teams sich auf unterschiedliche Aspekte des Systems konzentrieren. Diese Abstraktion ist entscheidend für das Management der Komplexität moderner Computer.
2. Die Computerarchitektur hat sich durch verschiedene Generationen entwickelt, die jeweils durch technologische Fortschritte gekennzeichnet sind.
Die moderne Computerhistorie beginnt hier.
Mechanische Anfänge. Die frühesten Versuche der Berechnung umfassten mechanische Geräte, wie Babbages analytische Maschine (1834), die, obwohl nie vollständig realisiert, den Grundstein für digitale Computer legte. Diese Maschinen verwendeten Zahnräder und Hebel zur Durchführung von Berechnungen und stellten einen bedeutenden konzeptionellen Sprung dar.
Die Vakuumröhren-Ära. Die erste Generation elektronischer Computer (1945-1955) basierte auf Vakuumröhren. Der COLOSSUS (1943) und der ENIAC (1946) waren wegweisende Beispiele, aber sie waren groß, energiehungrig und anfällig für Ausfälle. Der EDSAC (1949) markierte einen entscheidenden Schritt, indem er das Konzept des gespeicherten Programms implementierte.
Transistoren und integrierte Schaltungen. Die zweite (1955-1965) und dritte (1965-1980) Generation sah die Einführung von Transistoren und integrierten Schaltungen. Diese Innovationen führten zu kleineren, zuverlässigeren und energieeffizienteren Computern. Der IBM 360 (1964) war ein Meilenstein, der das Konzept einer Produktlinie als Familie etablierte.
VLSI und darüber hinaus. Die vierte Generation (1980-heute) ist durch Very Large Scale Integration (VLSI) gekennzeichnet, die die Schaffung von Mikroprozessoren und Personal Computern ermöglicht. Moores Gesetz sagte das exponentielle Wachstum der Anzahl von Transistoren auf einem Chip voraus und trieb kontinuierliche Fortschritte in der Rechenleistung voran.
3. Der Computer "Zoo" umfasst ein breites Spektrum an Geräten, die jeweils auf spezifische Bedürfnisse und wirtschaftliche Rahmenbedingungen zugeschnitten sind.
Das aktuelle Spektrum der verfügbaren Computer. Die Preise sollten mit einer Prise (oder besser gesagt, einer Tonne) Salz betrachtet werden.
Vielfältige Landschaft. Der Computermarkt ist kein Monolith; er ist ein vielfältiges Ökosystem mit Geräten, die von Einwegcomputern in Grußkarten bis hin zu Multimillionen-Dollar-Supercomputern reichen. Jeder Typ bedient spezifische Bedürfnisse und balanciert Leistung, Kosten und Größe.
Beispiele für Computerarten:
- Eingebettete Computer: Zu finden in Uhren, Autos und Haushaltsgeräten.
- Spielcomputer: Heimvideospielkonsolen.
- Personal Computer: Desktop- und tragbare Computer.
- Server: Netzwerkserver für Unternehmen.
- Großrechner: Werden für die Batch-Datenverarbeitung in großen Organisationen verwendet.
- Supercomputer: Bewältigen komplexe wissenschaftliche und ingenieurtechnische Probleme.
Technologische und wirtschaftliche Kräfte. Die Evolution des Computer "Zoos" wird durch technologische Fortschritte und wirtschaftliche Überlegungen vorangetrieben. Moores Gesetz, das den exponentiellen Anstieg der Transistordichte vorhersagt, hat die Schaffung zunehmend leistungsfähiger und erschwinglicher Geräte ermöglicht. Marktnachfragen und Wettbewerbsdruck gestalten weiter die Landschaft.
4. Prozessoren führen Anweisungen durch Pipelines aus, um die Leistung durch Parallelität zu steigern.
Der Datenpfad einer typischen von-Neumann-Maschine.
Anweisungsausführungszyklus. Prozessoren führen Anweisungen in einem Zyklus aus, der das Abrufen, Dekodieren, Abrufen von Operanden, Ausführen und Zurückschreiben umfasst. Moderne Prozessoren verwenden Techniken wie Pipelining und Parallelität, um die Leistung zu verbessern.
Pipelining. Pipelining unterteilt den Anweisungsausführungszyklus in Phasen, sodass mehrere Anweisungen gleichzeitig verarbeitet werden können. Dies erhöht den Durchsatz, aber die Pipeline kann durch Abhängigkeiten oder Verzweigungen gestoppt werden.
Parallelität. Moderne Prozessoren erreichen Parallelität durch:
- Instruction-Level Parallelism (ILP): Ausführung mehrerer Anweisungen gleichzeitig.
- Processor-Level Parallelism: Verwendung mehrerer Prozessoren, um an verschiedenen Teilen einer Aufgabe zu arbeiten.
RISC vs. CISC. Reduced Instruction Set Computing (RISC)-Architekturen bevorzugen einfache Anweisungen, die schnell ausgeführt werden können, während Complex Instruction Set Computing (CISC)-Architekturen komplexere Anweisungen verwenden, die mehr Arbeit pro Anweisung leisten können. Moderne Prozessoren kombinieren oft Aspekte beider.
5. Der Speicher ist hierarchisch organisiert und balanciert Geschwindigkeit, Kosten und Kapazität.
Eine fünfstufige Speicherhierarchie.
Die Speicherhierarchie. Der Computerspeicher ist als Hierarchie strukturiert, wobei jede Ebene ein unterschiedliches Gleichgewicht zwischen Geschwindigkeit, Kosten und Kapazität bietet. Diese Hierarchie umfasst typischerweise:
- Register: Schnellste, teuerste und kleinste.
- Cache-Speicher: Schnell, relativ teuer und klein.
- Hauptspeicher (RAM): Mäßig schnell, mäßig teuer und mittelgroß.
- Sekundärspeicher (Festplatte): Langsam, kostengünstig und groß.
- Tertiärspeicher (Band, optische Disk): Sehr langsam, sehr kostengünstig und sehr groß.
Cache-Speicher. Cache-Speicher ist ein kleiner, schneller Speicher, der häufig verwendete Daten speichert und so die Notwendigkeit verringert, auf den langsameren Hauptspeicher zuzugreifen. Die Leistung des Caches hängt von Faktoren wie Größe, Assoziativität und Ersetzungsrichtlinie ab.
Speicherverpackung und -typen. Speicher wird in verschiedenen Formen verpackt, wie SIMMs und DIMMs. Verschiedene RAM-Typen, einschließlich SRAM und DRAM, bieten unterschiedliche Leistungsmerkmale.
6. Eingabe-/Ausgabesysteme (I/O) erleichtern die Kommunikation zwischen dem Computer und der Außenwelt.
Physische Struktur eines Personal Computers.
Busse. I/O-Geräte verbinden sich über Busse mit dem Computer, die gemeinsame Kommunikationswege sind. Moderne Systeme verfügen oft über mehrere Busse, darunter Hochgeschwindigkeitsbusse wie PCI und USB sowie langsamere Busse wie ISA.
Controller. Jedes I/O-Gerät hat einen Controller, der die Kommunikation mit dem Bus und dem Gerät selbst verwaltet. Controller können Direct Memory Access (DMA) verwenden, um Daten direkt in den Speicher zu übertragen oder von diesem zu empfangen, ohne dass die CPU eingreifen muss.
Häufige I/O-Geräte:
- Terminals: Tastaturen und Monitore für die Benutzerinteraktion.
- Mäuse: Zeigegeräte für grafische Benutzeroberflächen.
- Drucker: Ausgabegeräte zur Erstellung von Ausdrucke.
- Modems: Geräte zur Übertragung von Daten über Telefonleitungen.
Zeichencodes. Zeichencodes wie ASCII und Unicode werden verwendet, um Textzeichen in einem standardisierten Format darzustellen.
7. Digitale Logikgatter und Boolesche Algebra bilden die Grundlage der Computerhardware.
Ein Transistor-Inverter.
Gatter. Digitale Schaltungen bestehen aus Logikgattern wie AND-, OR-, NOT-, NAND- und NOR-Gattern. Diese Gatter führen grundlegende Boolesche Operationen auf binären Eingaben aus.
Boolesche Algebra. Die Boolesche Algebra bietet einen mathematischen Rahmen zur Analyse und Gestaltung digitaler Schaltungen. Sie verwendet Operatoren wie AND, OR und NOT, um binäre Werte zu manipulieren.
Grundlegende digitale Logikschaltungen. Kombinatorische Schaltungen, wie Addierer und Multiplexer, werden aus miteinander verbundenen Logikgattern aufgebaut. Sequenzielle Schaltungen, wie Flip-Flops und Register, verwenden Rückkopplung, um den Zustand zu speichern.
CPU-Chips und Busse. CPU-Chips enthalten komplexe digitale Logikschaltungen, einschließlich ALUs, Steuereinheiten und Registern. Computerbusse bieten Kommunikationswege zwischen der CPU, dem Speicher und den I/O-Geräten.
8. Die Mikroarchitektur implementiert die Instruction Set Architecture (ISA) unter Verwendung von Datenpfaden und Steuersignalen.
Der Datenpfad der Beispiel-Mikroarchitektur, die in diesem Kapitel verwendet wird.
Datenpfade. Die Mikroarchitekturebene implementiert die ISA unter Verwendung von Datenpfaden, die die physischen Wege sind, durch die Daten fließen. Ein typischer Datenpfad umfasst Register, eine ALU und einen Schieber.
Mikroanweisungen. Mikroanweisungen steuern den Betrieb des Datenpfades. Jede Mikroanweisung gibt an, welche Register gelesen, welche ALU-Operation ausgeführt und in welches Register das Ergebnis geschrieben werden soll.
Mikroanweisungssteuerung. Die Mikroanweisungssteuerung kann durch Mikroprogrammierung implementiert werden, bei der ein in ROM gespeichertes Mikroprogramm die Ausführung der Mikroanweisungen steuert.
Entwurfsabwägungen. Das Design der Mikroarchitektur umfasst Abwägungen zwischen Geschwindigkeit und Kosten. Techniken wie Pipelining und Caching können die Leistung verbessern, erhöhen jedoch auch die Komplexität und die Kosten.
9. Die Instruction Set Architecture (ISA) definiert die Maschinensprache und ihre Eigenschaften.
Eigenschaften der ISA-Ebene.
ISA-Eigenschaften. Die ISA-Ebene definiert die Maschinensprache, einschließlich des Befehlssatzes, des Speichermodells, der Register und der Datentypen. Sie bietet eine Abstraktion der zugrunde liegenden Hardware, die es Programmierern ermöglicht, Code zu schreiben, ohne die Details der Mikroarchitektur zu kennen.
Speichermodelle. Die ISA definiert das Speichermodell, einschließlich der Art und Weise, wie der Speicher adressiert und organisiert wird. Häufige Speichermodelle sind lineare Adressierung und segmentierte Adressierung.
Register. Die ISA legt die Anzahl und Typen der Register fest, die den Programmierern zur Verfügung stehen. Register werden verwendet, um Daten und Adressen während der Programmausführung zu speichern.
Befehlsformate. Die ISA definiert das Format der Maschinenanweisungen, einschließlich des Opcodes und der Operanden. Befehlsformate können feste oder variable Längen haben.
10. Betriebssysteme verwalten virtuellen Speicher, I/O und parallele Verarbeitung.
Positionierung der Betriebssystem-Maschinenebene.
Virtueller Speicher. Betriebssysteme implementieren virtuellen Speicher, der es Prozessen ermöglicht, auf mehr Speicher zuzugreifen, als physisch verfügbar ist. Virtueller Speicher verwendet Techniken wie Paging und Segmentierung, um virtuelle Adressen auf physische Adressen abzubilden.
Virtuelle I/O-Anweisungen. Betriebssysteme bieten virtuelle I/O-Anweisungen, die es Prozessen ermöglichen, auf I/O-Geräte auf eine geräteunabhängige Weise zuzugreifen. Dies umfasst die Verwaltung von Dateien, Verzeichnissen und Gerätetreibern.
Virtuelle Anweisungen für parallele Verarbeitung. Betriebssysteme bieten Mechanismen zur Erstellung und Synchronisierung von Prozessen, die parallele Verarbeitung ermöglichen. Dazu gehören die Prozessgenerierung, die Vermeidung von Wettlaufbedingungen und die Prozesssynchronisation mithilfe von Semaphoren.
Beispielbetriebssysteme. UNIX und Windows NT sind zwei weit verbreitete Betriebssysteme, die diese Dienste bereitstellen.
11. Assemblersprache bietet eine für Menschen lesbare Schnittstelle zu Maschinencode.
Eine Auswahl der Integer-Anweisungen des Pentium II.
Grundlagen der Assemblersprache. Die Assemblersprache ist eine niedrigstufige Programmiersprache, die eine symbolische Darstellung von Maschinencode bietet. Sie verwendet Mnemonics zur Darstellung von Anweisungen und Labels zur Darstellung von Speicheradressen.
Anweisungen der Assemblersprache. Anweisungen in der Assemblersprache bestehen typischerweise aus einem Label, einem Opcode und Operanden. Pseudoinstruktionen werden verwendet, um den Assemblierungsprozess zu steuern.
Makros. Makros sind eine Möglichkeit, wiederverwendbare Code-Sequenzen in der Assemblersprache zu definieren. Sie können verwendet werden, um das Programmieren zu vereinfachen und die Lesbarkeit des Codes zu verbessern.
Der Assemblierungsprozess. Der Assemblierungsprozess umfasst zwei Durchgänge: Durchgang eins, der die Symboltabelle erstellt, und Durchgang zwei, der den Maschinencode generiert.
12. Parallele Computerarchitekturen adressieren die Leistung durch verschiedene Kommunikationsmodelle und Verbindungsnetzwerke.
Flynns Taxonomie paralleler Computer.
Entwurfsfragen. Das Design paralleler Computer umfasst Überlegungen zu Kommunikationsmodellen, Verbindungsnetzwerken, Leistung und Software. Kommunikationsmodelle können gemeinsamen Speicher oder Nachrichtenübertragung sein.
Verbindungsnetzwerke. Verbindungsnetzwerke verbinden die Verarbeitungselemente in einem parallelen Computer. Häufige Topologien sind Sterne, Ringe, Gitter und Hyperwürfel.
SIMD-Computer. Single Instruction, Multiple Data (SIMD)-Computer, wie Array-Prozessoren und Vektorprozessoren, führen dieselbe Anweisung gleichzeitig auf mehreren Datenelementen aus.
Shared-Memory-Multiprozessoren. Shared-Memory-Multiprozessoren haben mehrere CPUs, die einen gemeinsamen Speicher teilen. Speichersemantiken, Cache-Kohärenz und busbasierte Architekturen sind wichtige Überlegungen.
Nachrichtenübertragende Multicomputer. Nachrichtenübertragende Multicomputer haben mehrere CPUs, von denen jede über ihren eigenen privaten Speicher verfügt. Die Kommunikation zwischen den CPUs erfolgt durch das Übertragen von Nachrichten über ein Verbindungsnetzwerk.
Zuletzt aktualisiert:
Rezensionen
Strukturierte Computerorganisation erhält überwiegend positive Bewertungen mit einer durchschnittlichen Bewertung von 4,03/5. Die Leser schätzen den Humor, die klaren Erklärungen und die umfassende Abdeckung der Computerarchitektur. Viele empfinden es als hervorragende Einführung für Anfänger und loben die Organisation und Lesbarkeit des Buches. Einige kritisieren es als veraltet oder gelegentlich verwirrend bei tiefergehenden Themen. Das Buch ist bekannt für seinen Ansatz, das Verständnis von Transistoren bis hin zu Software aufzubauen. Während einige das Material als trocken empfinden, schätzen andere Tanenbaums Fähigkeit, es ansprechend zu gestalten.
Similar Books









