Die wichtigsten Komponenten eines Personalcomputers (PCs)

Wir beschreiben in diesem Kapitel den grundsätzlichen Aufbau, die Funktionsweise und die Hardwarekomponenten, die man in aktuellen PCs, in Servern aber auch in vielen Microcontrollern findet.

Die für die Funktion wesentlichen Komponenten aktueller PCs findet man auf der Hauptplatine (Motherboard, Mainboard). Das Zusammenwirken der Komponenten garantiert eine Reihe integrierter Bausteine (ICs), die

genannt werden. Auf neueren Mainboards ist der Speichercontroller in die CPU integriert, womit der Chipsatz nur mehr aus einem Baustein besteht.

KLASSISCHE ARCHITEKTUREN

Die den meisten Rechnern (PCs, Microcontroller, Mobiltelefone, Supercomputer) zugrunde liegende Architektur ist die sogenannte Von-Neumann-Architektur, die schon in den späten 1940er Jahren vom österreichisch-ungarischen Mathematiker John von Neumann als Referenzmodell vorgestellt wurde:

vNeumannArchitektur

Die Von-Neumann-Architektur besteht aus vier Baugruppen:

Der Austausch der Daten und Instruktionen zwischen den Baugruppen erfolgt in der Regel über ein Bussystem, das aus

besteht. Dabei kann auch ein Bus die Aufgaben von zwei (z.B. Daten- und Adressbus) oder allen drei Bussen übernehmen.

Die Von-Neumann-Architektur besticht durch ihre Einfachheit, die eine gewisse Robustheit der Rechner - bei geringen Hardwarekosten - zur Folge hatte. Das ist wahrscheinlich ein Grund, warum die Von-Neumann-Architektur in ihrem grundsätzlichen Aufbau bis heute Verwendung findet. Sie hat allerdings den Nachteil, dass das Holen einer Instruktion aus dem Memory und das Verarbeiten der Daten sequentiell erfolgen müssen:

Dieser Mangel an Parallelisierung bremst das System und ist als Von-Neumann-Flaschenhals bekannt.

Eine gewisse Abhilfe erhoffte man sich durch die Harvard-Architektur,  bei der Daten und Instruktionen im Memory physisch getrennt werden:

Harvard-Architektur

Sie ermöglicht, die Programmsteuerung und die Datenverarbeitung zu parallelisieren; das bedeutet aber, dass es zu einer Synchronisation zwischen den Instruktionen und den Daten kommen muss, weil sie zwar mehr oder weniger gleichzeitig aus den verschiedenen Speichern geholt werden können, nicht aber voneinander unabhängig verarbeitet werden können: Erst muss die Instruktion festlegen, was zu berechnen ist, dann erst können die Daten verarbeitet werden.

Verwendung findet die Harvard-Architektur vor allem in digitalen Signalprozessoren. Dort steht oft das Programm fest (kann also in einem ROM gespeichert werden), nur die Daten sind variabel.

ERWEITERUNGEN DER KLASSISCHEN ARCHITEKTUR

Die Entwicklung hin zu aktuellen Architekturen ist durch das Bemühen gekennzeichnet, den Von-Neumann-Flaschenhals abzuschwächen. Eine wesentliche Rolle spielt dabei der Einsatz von Caches.

Cache:

Prozessoren enthalten zur Steigerung ihrer Leistung schnelle Pufferspeicher, genannt Cache (engl. geheimes Waffenlager), des Typs SRAM (Static Random Access Memory). Logisch gesehen liegt das Cache zwischen Hauptspeicher und CPU-Registern. Seit einiger Zeit werden mehrere Ebenen von Caches verwendet. Physisch sind Caches bei aktuellen Systemen in die CPU integriert. Die folgende Tabelle soll dies grafisch verdeutlichen:

CPU 1
CPU 2
Instr.-
Cache (L1)
Daten-
Cache (L1)
Instr.-
Cache (L1)
Daten-
Cache (L1)
L2-Cache für CPU 1
L2-Cache für CPU 2
gemeinsames L3-Cache

Moderne Prozessoren haben pro Kern (CPU) ein Level 1 Cache (L1), das Daten und Instruktionen getrennt speichert. Darüber hinaus sind bis zu zwei weitere Caches, L2 und L3, hierarchisch angelegt, wobei letzteres auch auf der Hauptplatine liegen kann. Durch die Trennung des L1-Cache in einen Bereich für Instruktionen und einen Bereich für Daten wird der Von-Neumann-Flaschenhals in gewisser Weise umgangen.

Caches sind natürlich wesentlich kleiner als der Arbeitsspeicher. Dafür ist die Zugriffszeit auf ein Element im Cache wesentlich kürzer als die Zugriffszeit in den Arbeitsspeicher. Ein Cache oder mehrere Caches machen nur Sinn, wenn die CPU, die auf ein Element im Memory zugreifen will (Daten oder Instruktionen), dieses Element in den meisten Fällen bereits im Cache findet. Nur dann kann die Verarbeitungsgeschwindigkeit erhöht werden, weil der Zugriff auf das relativ langsame Memory wegfällt. Es entfallen dadurch die so genannten Waitstates (Wartezustände), wo die CPU für einige Taktzyklen im Leerlauf ist, bis die für die weitere Verarbeitung benötigten Daten (oder Instruktionen) aus dem Arbeitsspeicher geholt wurden.

Der Vorteil von Caches beruht auf der Tatsache, dass die Lokalität der Zugriffe ausgenutzt wird. Wenn eine Instruktion aus dem Arbeitsspeicher geholt werden muss, landet diese Information auch in den Caches. Damit wäre allerdings noch nicht viel gewonnen, weil beim ersten Zugriff kein Geschwindigkeitsvorteil verbunden ist und es nicht abzusehen ist, ob diese Instruktion noch einmal benötigt werden wird. Ähnlich verhält es sich mit Daten. Beim Zugriff in den Arbeitsspeicher wird jedoch nicht nur das benötigte Element (Daten oder Instruktionen) in die Caches geladen, sondern auch benachbarte Elemente. Es ist sehr wahrscheinlich, dass die CPU in der Folge auf ein solches benachbartes Element zugreifen wird. Bei Instruktionen liegt das sofort auf der Hand, weil ein Programm aus einer Folge von Instruktionen besteht, die hintereinander abgespeichert werden und üblicherweise auch nacheinander abgearbeitet werden. Eine Ausnahme stellen Sprunganweisungen und Aufrufe von Unterprogrammen dar. Aber auch beim Zugriff auf Daten ist es wahrscheinlich, dass "benachbarte" Variable unmittelbar hintereinander benötigt werden. Man lese zum Beweis ein beliebiges Programm in einer beliebigen Programmiersprache: dort befinden sich sehr oft die Deklarationen von Variablen, die in einem gemeinsamen Kontext verwendet werden, auch in einem gemeinsamen Programmabschnitt.


Ein wesentlicher Entwicklungsschritt bestand darin, die CPU-Hardware so anzupassen, dass bestimmte Abläufe parallel - also gleichzeitig - ausgeführt werden können. Das geschieht durch

Pipelines:

Das Konzept geht davon aus, dass das Verarbeiten einer Instruktion die folgenden Schritte umfasst, die nicht parallel verarbeitet werden können:

  1. IF - Instruction fetch: Eine Instruktion wird aus dem Memory in die CPU geladen.
  2. ID - Instruction decoding: Die Instruktion wird decodiert und die benötigten Daten in die CPU-Register geladen.
  3. EX - Execution: Die Instruktion wird ausgeführt.
  4. WB - Write Back: Die veränderten Daten werden in die Register oder das Memory geschrieben.
Die folgende Graphik illustriert die Leistungssteigerung, wenn drei Instruktionen in einer Pipline ausgeführt werden. Dabei wird bei jedem Taktzyklus einer der vier oben genannten Schritte ausgeführt.
Pipelines

Die Ausführung einer Instruktion wird dadurch nicht schneller. Die nächste Instruktion wird aber schon begonnen, bevor die vorhergehende vollständig ausgeführt wurde. Dadurch kann bei jedem Taktzyklus eine neue Instruktion begonnen werden. Voraussetzung für das Funktionieren von Pipelines ist die Unabhängigkeit der hintereinander in die Pipeline geladenen Instruktionen. Wenn das nicht der Fall ist (und eine nachfolgende Instruktion das Ergebnis der vorherigen benötigt), muss die Pipeline leer laufen. Es ist daher die Aufgabe eines Compilers, die Instruktionen so zu ordnen, dass ein Leerlauf einer Pipeline möglichst vermieden wird. Eine CPU besitzt üblicherweise mehrere Pipelines für Integer-Arithmetik und mehrere Pipelines für Gleitkomma-Berechnungen.

Einen großen Geschwindigkeitsvorteil erzielen Pipelines bei der Abarbeitung von Programmteilen, die in Form von Schleifen programmiert wurden, denn bei wiederholten Schleifendurchläufen werden die Anweisungen sequenziell in die Pipline geladen. Am Ende jedes Schleifendurchlaufs wird angenommen, dass ein weiterer Durchlauf erfolgen, also zum Schleifenbeginn gesprungen wird. Diese Annahme heißt auch Sprungvorhersage oder Branch Prediction.

Bei Programmverzweigungen (if-then-else) kann generell keine allgemein sinnvolle Sprungvorhersage getroffen werden.

Zusätzlich sei angemerkt, dass im Falle von Schleifen die benötigten Daten und Instruktionen wahrscheinlich im Cache liegen werden.


CPU

Der Prozessor bzw. die CPUs (Central Processing Unit) enthält jedenfalls:

Als CPU werden im PC Prozessoren der Familie x86 von Intel eingesetzt; es existieren mehrere Nachbauten dieser Prozessorfamilie von anderen Herstellern, die allerdings alle zu einem sehr hohen Grad kompatibel zum Intel-Original sein müssen. 

Die wesentlichen Schaltelemente der CPU sind Transistoren, die zu sogenannten Gattern zusammengeschaltet sind, die schalten oder Boole'sche Operationen ausführen können. Daher gilt die Anzahl der Transistoren - beim intel  Haswell E Octa-Core werden 2,6 Milliarden Transistoren angegeben - als Leistungsmaß. Darüber hinaus ist die Integrationsdichte, die Anzahl der Transistoren pro mm2, für Leistungsbedarf und die Verlustleistung und damit auch für die Datenverarbeitungsgeschwindigkeit entscheidend. Angegeben wird Letztere gelegentlich in

MIPS (million instructions per second)

für Ganzzahloperationen oder

FLOPS (floating point operations per second)

für Gleitkommaoperationen. Für die Datenverarbeitungsgeschwindigkeit sind aber auch der Prozessortakt, der normalerweise ein Vielfaches des Bustaktes ist, und die Anzahl und die Breite der Register (Speicher im Prozessor) verantwortlich.

Bei Mikroprozessoren unterscheidet man grundsätzlich:

RISC (Reduced Instruction Set)

Konzept:

In der CPU werden nur die einfachsten, am häufigsten verwendeten Befehle als Schaltungen realisiert, die CPU verfügt über einen reduzierten Befehlssatz.

Konsequenzen:

+: einfacher Chipaufbau, schnelle Verarbeitung der häufigsten Befehle in der Regel in einem Taktzyklus, billige Entwicklung und Herstellung

-: komplexe Befehle müssen durch Software emuliert werden

Anwendungen: Zu den prominentesten Anwendungen zählt die ARM-Architektur, die in Mobilgeräten (Smartphones, Tabletts) in Routern oder Microcontrollern (embedded systems) verwendet wird. Dabei werden oft alle Komponenten eines Systems wie Bus, Taktgeber Prozessor, Memory, Graphik, Audio, Schnittstellen uam. auf einem Chip (Die) aufgebracht und SoC (System-on-a-Chip, Einchipsystem) genannt.

CISC (Complex Instruction Set Computer)

Konzept:

In der CPU werden sowohl einfache, als auch komplexe Befehle (z.B. Gleitkomma-Berechnungen) als Schaltungen realisiert, die CPU verfügt über einen komplexen (dh. umfangreichen) Befehlssatz von in der Regel mehr als 300 Befehlen.

Konsequenzen:

Komplexer Chipaufbau, verlangsamte Verarbeitung einfacher Befehle, rasche Verarbeitung komplexer Befehle, teure Entwicklung und Herstellung.

Dazu kommen in den letzten Jahren

Hybride Architekturen

Konzept:

Prozessoren mit RISC-Kern und CISC-Erweiterungen

Konsequenzen:

Sehr komplexer Chipaufbau. rasche Verarbeitung einfacher Befehle, rasche Verarbeitung komplexer Befehle, teure Entwicklung und Herstellung, Kompatibilität zu älteren Prozessor-Typen, die auf CISC-Technologie aufbauten.

In diese Klasse gehören die Desktopprozessoren von AMD und Intel.

Für spezielle Einsatzgebiete wie etwa Multimedia-Anwendungen wurden darüber hinaus Prozessoren mit Befehlssatzerweiterungen geschaffen: MMX (Multi-Media extensions), SSE (Streaming SIMD Extensions), 3DNow! uam.


Hauptspeicher

Der CPU unmittelbar zugeordnet ist der Hauptspeicher (Memory; RAM = Random Access Memory). Der Hauptspeicher wird zum Abspeichern und Lesen von Zwischenergebnissen und von Programmen benötigt. Hinsichtlich seiner Funktionsweise darf man sich den Hauptspeicher logisch als zweispaltige Liste mit den Spaltenüberschriften Adressen und Daten vorstellen.


Bus

Die Kommunikation der auf der Hauptplatine befindlichen oder mit ihr verbundenen Geräte untereinander erfolgt über den Systembus, ein Bündel paralleler Leitungen. Man unterscheidet:

Datenbus:

8, 16, 32, 64, 128 Bit Breite für den Transport von Instruktionen und Daten. Die Breite des Datenbusses in Bit heißt auch Wortlänge und gibt die Anzahl der Bits an, die pro Takt über den Bus transportiert werden können.

Adressbus:

16, 20, 32, 64 Bit Breite für den Transport von Speicheradressen. Die Breite des Adressbus gibt die Anzahl der (direkt) adressierbaren Speicherzellen im Hauptspeicher an. Es gilt

Anzahl der Speicherzellen = 2Adressbusbreite

Steuerbus:

Für die Übertragung von Steuersignalen.

Am Systembus wird zur Datenübertragung eine von einem Taktgeber produzierte pulsierende Spannung mit fixer Frequenz verwendet, wobei nicht alle Teile des Bus mit der gleichen Frequenz arbeiten müssen. Der in der Regel schnellste Bus ist der Front Side Bus (FSB), der die CPU mit dem Hauptspeicher verbindet. Typische Taktraten waren lange 133 MHz bzw 267 MHz. Beim P4 von Intel werden 800 MHz angegeben. Zusätzlich wird zur Steigerung der Datentransferrate am FSB und auch im Prozessor eine andere Bitcodierung (mehrere Spannungsstufen, Flankenkodierung) verwendet.

Der außerhalb des FSB liegende externe Bus ist dann wesentlich langsamer getaktet, im Falle des PCI-Busses mit 33 MHz.


BIOS

Das Motherboard weist ferner Read Only Memory (ROM) auf. In diesem befinden sich Programme und Daten, die der PC beim Einschalten benötigt (z.B. das aktuelle Datum und die Uhrzeit sowie Informationen über die Konfiguration des Rechners). Außerdem befinden sich viele Hilfsprogramme zum Ansprechen von Tastatur, Grafikkarte etc. im ROM (im so genannten BIOS = Basic Input/Output System). Wenn ein modernes Betriebssystem einmal auf dem Computer läuft (nach Beendigung des Startvorgangs), werden diese Routinen allerdings nicht mehr verwendet.

EFI

Das BIOS erschien erstmals auf den IMP-PCs in den 1980er Jahren und wurde seither von den Boardherstellern mehrfach an die Anforderungen neuerer Hardware angepasst. Das dadurch entstandene Flickwerk genügt aber schon seit langem nicht mehr den Anforderungen, besonders was die neuere 64Bit-Architektur anlangt. Daher einigten sich einige namhafte Hard- und Softwarehersteller wie intel, AMD, Apple oder Microsoft auf einen BIOS-Nachfolger, das EFI (Extensible Firmware Interface) bzw. UEFI (Unified EFI). EFI soll einfacher zu bedienen sein und unter anderem folgende Dienste zusätzlich anbieten:

Ein- und Ausgabegeräte

Für die Verbindung zur Außenwelt stehen zumindest Tastatur und Maus sowie ein Bildschirm zur Verfügung. Während Tastatur und Maus direkt mit dem Motherboard verbunden sind, wird der Bildschirm meistens über eine eigene Grafikkarte ("Grafikadapter"), die ihrerseits mit dem Motherboard verbunden ist, angeschlossen. Für bestimmte Aufgaben werden allerdings weder Tastatur oder Maus oder Bildschirm benötigt; es ist deshalb auch denkbar, einen PC ohne diese Bestandteile zu betreiben (etwa für eine Maschinensteuerung). Der Computer muss in diesem Fall über andere Datenverbindungen mit der "Außenwelt" (Maschine) verbunden sein.

Um größere Datenmengen einzulesen oder dauerhaft zu speichern, stehen so genannte Massenspeicher zu Verfügung. Diese sind beispielsweise Festplatten, Magnetbänder, Memory Sticks, Disketten. Von diesen kann der Prozessor über einen Controller Daten lesen oder Daten auf sie schreiben. Das ist notwendig, weil mit Ausnahme des CMOS-RAM, das batteriegepuffert ist, alle RAMs ihren Inhalt verlieren, wenn die Spannungsversorgung abgeschaltet wird (d.h. wenn der PC abgeschaltet wird). Alle im RAM gespeicherten Daten gehen damit verloren.

Weitere Kommunikationswege mit der Außenwelt stellen die serielle und parallele Schnittstelle des PCs dar. Die parallele Schnittstelle wird (wenn überhaupt noch) dazu verwendet, um einen Drucker anzuschließen. Die serielle Schnittstelle wird meistens verwendet, um ein Modem mit dem PC zu verbinden. Es existieren allerdings viele andere, allerdings seltener benützte Verwendungszwecke für die serielle Schnittstelle. Die Bedeutung dieser beiden Schnittstellenarten tritt freilich mehr und mehr in den Hintergrund, weil sie durch leistungsfähigere Schnittstellen, die überdies bequemer zu handhaben sind, verdrängt werden. Bei diesen Schnittstellen handelt es sich um den Universal Serial Bus (USB) und die so genannte FireWire-Schnittstelle. Beide Schnittstellen werden in einem eigenen Abschnitt besprochen.

Viele PCs besitzen außerdem einen Netzwerkadapter. Damit wird der PC in ein lokales Netzwerk (LAN = Local Area Network) eingebunden. Über diese Netzwerkschnittstelle können Daten mit beliebigen weiteren Rechnern (die keine PCs sein müssen) ausgetauscht werden.

Die folgende Abbildung zeigt ein Blockschaltbild für die Hauptplatine eines PCs. Die Abbildung ist mit freundlicher Genehmigung des Heise Zeitschriften Verlags dem Heft 24/2007 der Zeitschrift c't entnommen worden.

Motherboard-Layout (Stand 2007)

Stromversorgung

Ein wesentlicher Bestandteil im Gehäuse eines PCs ist auch der Netzteil. Schließlich müssen alle oben erwähnten Komponenten des Rechners mit elektrischer Energie versorgt werden. Der Netzteil weist zunächst einen oder zwei Stecker für die Versorgung des Motherboards auf. Die am Motherboard eingesetzten Steckkarten werden in der Regel über die Busverbindung vom Motherboard versorgt. Diskettenlaufwerke und Festplatten werden direkt vom Netzteil mit entsprechenden Kabeln und Steckern mit elektrischer Energie beliefert.

Man sollte bedenken, dass ein PC die aufgenommene elektrische Leistung praktisch ausschließlich als Wärme wieder abgibt. Sie muss aus dem Gehäuse wieder entweichen, damit die PC-Komponenten nicht zu heiß werden. Die weit verbreiteten ATX-Gehäuse von PCs besitzen einen ATX-Netzteil, der gemäß ATX-Spezifikation mit einem Lüfter ausgestattet sein muss, weil das Netzteil auch für die Systemkühlung herangezogen wird. Bis zu einem Drittel der Wärmeenergie kann allerdings über die Blechflächen des Gehäuses abgegeben werden, sofern es nicht zwecks Schalldämmung mit speziellen Dämmmaterial verklebt ist. In diesem Fall muss man der Belüftung des PC-Gehäuses besonderes Augenmerk schenken.


Der besseren Orientierung auf einem aktuellen Mainboard können schließlich noch die folgenden Abbildung dienen, die der Fachzeitschrift c't 3/2016 entnommen sind:
Platine 2015

Anschlüsse

zurück
Inhalt
vor