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:
FAQ
What is "Structured Computer Organization" by Andrew S. Tanenbaum about?
- Hierarchical computer organization: The book presents computers as a hierarchy of levels, from digital logic up to parallel computer architectures, each with distinct roles and functions.
- Comprehensive coverage: It covers processors, memory, I/O devices, instruction set architectures, operating systems, and assembly language, providing a layered understanding of computer systems.
- Modern examples and technologies: The text uses real-world examples like Pentium II, UltraSPARC II, and Java Virtual Machine, ensuring relevance to current industry standards.
- Educational focus: Designed for students and professionals, it includes practical exercises, code samples, and simulators to reinforce learning.
Why should I read "Structured Computer Organization" by Andrew S. Tanenbaum?
- Solid foundational knowledge: The book offers a clear, structured approach to understanding computer architecture, essential for anyone studying or working in computing.
- Real-world relevance: It connects theory to practice with examples from actual processors and operating systems, such as UNIX and Windows NT.
- Hands-on learning: Nearly 300 exercises, Java code examples, and a Mic-1 simulator provide opportunities for practical application.
- Up-to-date content: Coverage of modern technologies like RAID, PCI, USB, and parallel architectures ensures readers stay current with industry trends.
What are the key takeaways from "Structured Computer Organization" by Andrew S. Tanenbaum?
- Layered computer model: Understanding computers as a hierarchy of levels clarifies how hardware and software interact.
- Diverse architectures: Exposure to CISC, RISC, and JVM architectures broadens knowledge of different design philosophies.
- Parallel and memory systems: In-depth discussion of parallel architectures and memory hierarchies highlights performance considerations in modern systems.
- Practical assembly and microprogramming: The book demystifies low-level programming and microarchitecture, bridging the gap between high-level code and hardware execution.
What are the main levels of computer organization described in "Structured Computer Organization" by Andrew S. Tanenbaum?
- Six-level model: The book details digital logic, microarchitecture, instruction set architecture, operating system machine, assembly language, and parallel computer architecture levels.
- Distinct functions: Each level has a specific role, from basic electronic circuits to high-level software and hardware interactions.
- Support mechanisms: The text explains how each level is implemented, such as hardware for logic and microarchitecture, and software for operating system and assembly levels.
- Inter-level relationships: Understanding how levels interact helps clarify the flow of data and control in a computer system.
How does "Structured Computer Organization" by Andrew S. Tanenbaum explain instruction set architecture (ISA)?
- ISA as interface: The ISA is presented as the boundary between hardware and software, defining available instructions, registers, and data types.
- Real-world examples: The book uses Pentium II, UltraSPARC II, and JVM ISAs to illustrate different instruction formats and architectural choices.
- Instruction types: It covers data movement, arithmetic, control flow, procedure calls, and exception handling in detail.
- Design implications: The text discusses how ISA design affects compiler construction, performance, and hardware complexity.
What are the key concepts related to memory and caching in "Structured Computer Organization" by Andrew S. Tanenbaum?
- Memory hierarchy: The book explains the structure and importance of primary, cache, and secondary memory, emphasizing the role of caches in reducing latency.
- Cache design: It covers direct-mapped and set-associative caches, cache lines, replacement policies like LRU, and write strategies such as write-through and write-back.
- Performance impact: Multi-level caches (L1, L2, L3) and their effect on bandwidth and latency are discussed, highlighting their significance in modern CPUs.
- Virtual memory: The text also explores virtual memory models in UNIX and Windows NT, including paging, memory-mapped files, and shared memory.
How does "Structured Computer Organization" by Andrew S. Tanenbaum address parallel computer architectures?
- Comprehensive coverage: The book provides an expanded chapter on parallel architectures, including multiprocessors (UMA, NUMA, COMA) and multicomputers (MPP, COW).
- Design issues: It discusses interconnection networks, communication models, performance metrics, and software considerations for parallel systems.
- Types of parallelism: SIMD, shared-memory multiprocessors, and message-passing multicomputers are explained, with examples and taxonomy.
- Flynn’s taxonomy: The book uses Flynn’s classification (SISD, SIMD, MISD, MIMD) and its extensions to categorize parallel computers.
What are the main differences between UNIX and Windows NT operating systems as described in "Structured Computer Organization" by Andrew S. Tanenbaum?
- System structure: UNIX features a small kernel with user-level shells, while NT has a modular kernel and multiple environmental subsystems.
- Security models: NT offers comprehensive security (Orange Book C2 compliance), whereas UNIX uses simpler user/group/other permissions.
- System calls and APIs: UNIX has minimal, stable system calls; NT uses the extensive Win32 API, including many functions beyond basic system calls.
- Process and memory management: NT supports threads, fibers, and advanced memory management; UNIX supports processes, POSIX threads, and shared memory primitives.
How does "Structured Computer Organization" by Andrew S. Tanenbaum explain microarchitecture and its significance?
- Microarchitecture level focus: The book uses the Java Virtual Machine as an example to illustrate microprogrammed machine design and data path control.
- Performance trade-offs: It discusses the balance between design cost and performance, showing evolution from simple to pipelined designs like the Mic-4.
- Advanced techniques: Topics include caching, branch prediction, out-of-order execution, speculative execution, and predication for CPU performance.
- Practical microprogramming: Detailed microprograms for JVM instructions demonstrate how high-level operations are implemented at the microarchitecture level.
What are the key features of the Intel IA-64 architecture discussed in "Structured Computer Organization" by Andrew S. Tanenbaum?
- EPIC paradigm: IA-64 uses Explicitly Parallel Instruction Computing, with instruction bundles and templates to indicate parallelism, shifting scheduling to the compiler.
- Predication: Many conditional branches are replaced with predicated instructions, reducing pipeline stalls and improving parallelism.
- Speculative loads: The architecture supports speculative LOAD instructions, allowing early execution and later validation for increased instruction-level parallelism.
- Adoption challenges: The book notes the complexity for compilers, operating system support, and software ecosystem readiness as hurdles for IA-64.
How does "Structured Computer Organization" by Andrew S. Tanenbaum approach assembly language and its relationship to high-level languages?
- Assembly vs. high-level: Assembly provides fine control but is more time-consuming; high-level languages offer productivity but may need tuning for performance.
- Pseudoinstructions and macros: Assemblers simplify coding with pseudoinstructions and macros, improving readability and maintainability.
- Symbol tables and linking: The book explains the assembly process, symbol management, and how modules are linked and relocated.
- Dynamic linking: Concepts like DLLs and shared libraries are introduced, showing how modern systems manage code reuse and memory.
What foundational knowledge about binary and floating-point numbers does "Structured Computer Organization" by Andrew S. Tanenbaum provide?
- Number systems: The book covers decimal, binary, octal, and hexadecimal representations, including conversions and their use in computing.
- Integer representations: It explains signed magnitude, one’s complement, two’s complement, and excess notation for signed integers.
- Floating-point formats: IEEE single and double precision formats are detailed, including normalization, exponent bias, and special values.
- Arithmetic operations: Examples of floating-point addition, subtraction, and normalization illustrate hardware implementation and challenges.
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









