|
|
Das nachfolgende Bild zeigt einen
Computer mit CPU und Speichern. Die CPU ist dem ®Intel 80186
Prozessor nachempfunden, der sowohl über einen
Programmhauptspeicher, als auch über einen später zu
betrachtenden IO-Speicher verfügt.
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
- Die CPU (der Prozessor)
-
Jede CPU unterteilt sich in eine CU
(CentralUnit- Zentraleinheit) und eine ALU
(ArithmeticLogicUnion- Recheneinheit).
-
Während die CU die Steuerung der
Arbeitsschritte im Prozessor übernimmt, befinden sich in
der ALU die elektrischen Schaltungen zur Umsetzung der
Arbeitsschritte. Letzte werden durch die CU, zur jeweils
gewünschten Arbeitsaufgabe freigegeben.
-
Soll beispielsweise addiert werden, so
schaltet die CU das Addierwerk
ein. Sollen dagegen die Inhalt von Speichern durch eine logische
UND-Operation verknüpft werden, so schaltet die CU den
Schaltungsteil ein, der diese Operation beherrscht. Sehr
vereinfacht gesprochen, stellt die CU einen elektrischen
Schalter dar, der die jeweils gewünschte Digitalschaltung
der ALU einschaltet.
-
-
Die Schalterstellung der CU wird durch
externe elektrische Signale aus dem Programmspeicher angewiesen,
deren Speicherzellen die Befehle enthalten
-

Genaugenommen besteht ein Befehl an die CPU
aus dem Umschaltkommando und den Daten, die bearbeitet werden
sollen. Die CU trennt beide Teile und gibt die Daten an die ALU
weiter. Die Leitungen über welche die CU den Befehl und die
Daten erhält, ist der Datenbus. Dieser ist mit den Speichern
verbunden, in denen die Befehle und Daten, also das Programm,
enthalten ist.
|
|
|
|
|
|
|
|
Im Bild nicht gezeichnet ist die
Speicherauswahlschaltung der CU. Sie muss ja von Speicher zu
Speicher weiterschalten können um immer neue Befehle und
Daten zu erhalten. Dies geschieht im einfachsten Fall durch ein
Zählwerk, das mit jedem Takt einen Schritt weiterzählt
und damit einen Speicher nach dem nächsten einschaltet. Wie
bereits angesprochen geschieht das Fortschalten der Speicher
nicht über den Datenbus, sondern über ein zweites
Bussystem das Adressbus heisst. Davon später.
|
|
|
|
|
|
|
|
- Register
(Arbeitsspeicher) der 80186 CPU
Im Bild ganz oben, sind die Hauptregister
der CPU des ® Intel 80186 eingetragen. Sie werden als
Allzweckregister AX, BX, CX und DX angesprochen und stehen allen
ALU-Schaltungen zur Verfügung. Ebenfalls zur ALU gehörend
ist das Flaggenregister, das PSW (ProgramStatusWord). Flaggen
sind einzelne Bits mit Informationseigenschaften. Wie im Thema
Zahlen zu lesen war, kann beispielsweise der Überlauf eines
Registers nach einer vorzeichenbehafteten Addition im
Overflow-Flag erkannt werden.
|
|
|
|
|
|
|
|
- CU des 80186
-
Auch im Bereich der CU sind beim 80186
eine ganze Anzahl von Registern aufgeführt. Momentan
interessant sind hiervon, das Befehlregister und der Instruction
Pointer oder Befehlszeiger IP.
-
Diese beiden Register bewirken die gerade
angesprochene Schaltungsauswahl in der ALU. Der Unterschied zu
dem dort gedachten Schaltermodell besteht allerdings darin, dass
hier die Ablaufsteuerung über eine Diodenmatrix
stattfindet, die man als Mikroprogramm der CPU bezeichnet. Der
Wert im Befehlsregister gibt dabei den Einstiegspunkt in diese
Diodenmatrix an, die nun ihrerseits die gewünschte
Schaltung der ALU anwählt und wie der Walzenschalter in
einer Drehorgel, weitere Schaltvorgänge zur Ausführung
des Befehls, im Taktrythmus ablaufen lässt.
Der Befehlszeiger hingegen schaltet von
einer Speicherzelle zur nächsten weiter, um immer an einen
neuen Befehl und seine Daten, die Parameter, heranzukommen. Er
ist etwas flexibler als der oben angedachte Zähler, der ja
nur einen linearen Programmdurchlauf ermöglichen würde.
Mit dem Befehlszähler der 80186 CPU kann beispielsweise auch
zu bereits gelesenen Speicherzellen zurückgeprungen werden,
was Programmschleifen ermöglicht
|
|
|
|
|
|
|
|
- Weitere Eigenschaften der CU des
80186
-
Moderne CPUs können natürlich
mehr, als in dem Schaltermodell oben angedacht wurde. Dies liegt
an ihrer Mikroprogrammierung, welche um im Bild des
Schaltermodells zu bleiben, einen Arbeitsschritt über
Unterschalter in viele weitere, taktgesteuerte Schritte zerlegen
können. So ist es beispielsweise möglich, während
der Ausführung eines Befehls, beliebig oft auf andere Orte
im Speicher zuzugreifen.
-
-
Ermöglicht wird dies durch weitere
Register, die wie der Befehlzeiger, den Hauptspeicher
adressieren können. Bei der 80186CPU, gibt es neben dem
Befehszähler noch drei weitere Register, die einen
Speicherort bestimmen können.
-
Der Befehlszähler zeigt dabei immer
auf die nächste Stelle im Programm und die anderen Register
können während eines abzuarbeitenden Befehls, von
beliebigen Orten des Speichers weitere Daten holen oder sie dort
ablegen. Entscheidend im Fortlauf des Programms bleibt aber
immer der Befehlszähler.
-
-
Aus Gründen die hier nicht weiter
erläutert werden sollen, bestehen diese Adressregister bei
der 80x86 CPU immer aus einem Registerpaar. Ihre Namen sind ..
-
-
Befehlszähler CS:IP
(Codesegment : Instructionpointer)
-
Stapelzeiger SS:SP (Stacksegment
: Stackpointer)
-
Datenzeiger
DS:SI (Datensegment :
Sourcepointer)
-
Extrazeiger
ES:DI (Extrasegment :
Destinationpointer)
|
|
|
|
|
|
|
|
- Interruptlogik
Eine weitere Besonderheit, welche alle CUs
bereitstellen, ist die Interruptlogik. Sie ermöglicht es,
durch ein externes Hardwaresignal an einem Anschlussbein der CPU,
den Programmlauf im Hauptprogramm zu unterbrechen und zu einem
Parallelprogramm zu verzweigen .. um nach dessen Ablauf wieder im
Hauptprogramm fortzufahren. Programmierer benutzen diese Technik
gerne damit periphere Geräte kurzzeitig die Arbeitskraft der
CPU beanspruchen können. Tastaturen sind ein Beispiel dafür.
Wird die Taste einer Tastatur gedrückt,
so gibt die Tastatursteuerung auf einen der IRQ-Pins an der CPU
ein Signal. Daraufhin startet die CU kurzzeitig ein zweites
Programm, liest den Tastendruck ein, und führt das
Hauptprogramm weiter. Auf diese Weise kann z.B. der
Reset-Affengriff auch dann erkannt werden, wenn sich das
Hauptprogramm 'aufgehängt' hat.
|
|
|
|
|
|
|
|
- Register, Buffer und Speicher
-
Die Begriffe Register und Speicher wurden
im bisherigen Text ohne besondere Unterscheidung verwendet und
grundsätzlich funktionieren sie auch ähnlich.
-
-
Als Register bezeichnet man üblicherweise
Speicherzellen, die sich in einer CPU befinden. Sie besitzen
Namen, die der Programmierer beim Schreiben eines Programms
angibt. Bei etlichen Befehlen weiss die CU sogar von sich aus
welches ihrer Register sie verwenden muss.
-
Anders ist dies bei den Massenspeichern.
Hier muss der Programmierer in jedem Fall die Nummer (Adresse)
der Speicherzelle angeben, bevor die CU auf diese zugreifen
kann.
-
-
Hinter dem Begriff Buffer muss nicht immer
eine Speicherzelle stehen. Es handelt sich bei ihnen zunächst
um signalverstärkende Digitalschaltungen, die manchmal auch
speichern können. Sie werden in der Regel eingesetzt, um
genügend Strom für Schaltungsteile ausserhalb der CPU
bereitzustellen. Im Computerbild würde man das rosafarbene
Adresshilfsregister, als Adressbuffer bezeichnen. Dieses
CU-Register, das einem Programmierer nicht zugänglich ist,
enthält die jeweils im Speicher gültige Adresse, die
auf den 20 Adressleitungen ausgegeben wird, und von einem der
vier adressgebenden Registerpaare CS:IP, SS:SP, DS:SI, ES:DI
stammt.
Die Register und Buffer einer CPU müssen
nicht benutzerzugänglich sein. Beispiele aus dem
Computerbild sind der Befehlszähler und das Hilfsregister
des Addierwerks sowie der bereits erwähnte Adressbuffer.
Wieviele Register eine CPU letztendlich besitzt weiss nur ihr
Hersteller. Er gibt in seinen Datenblättern nur die
benutzerzugänglichen Register an.
|
|
|
|
|
|
|
|
- Lesen und schreiben der
Massenspeicher
-
Die CPU externen Massenspeicher enthalten
als wichtigsten Bestandteil die Befehlsabfolgen (das Programm)
für die CPU. Natürlich können in ihnen auch die
Benutzerdaten abgelegt werden, was aber nur funktioniert, wenn
auch ein Programm läuft.
-
Damit der Programmfluss gesichert ist,
kann die CU Speicher für Speicher über den Adressbus
einschalten, was als Adressierung bezeichnet wird. Sie tut dies
über den sogenannten Befehlszeiger. Die CU weiss dabei,
wann ein Befehl samt Parameter(daten) eingelesen und
abgearbeitet wurde und erwarten nach der Bearbeitung zwingend
einen nächsten Befehl.
-
Befehle können dabei Parameter(daten)
bedingen, müssen es aber nicht. Bei dem Maschinenbefehl
schiebe das AX-Register um eine Stelle nach links, genügt
beispielsweise das Befehlsbyte, denn die CU kennt das
AX-Register und auch die ALU-Schaltung welche den Schiebeauftrag
erledigt. Bei anderen Befehlen ist das anders. Bei dem Befehl
kopiere die Zahl 3 in das AX-Register (mov AX, 3) müssen
mindestens zwei Bytes vorliegen. Das eine Byte enthält den
Befehl 'Kopiere in das AX-Register, das zweite Byte die Zahl,
die in das Register hineinkopiert werden soll. Dementsprechend
erwartet die CU den Befehl und einen Parameter und muss auf zwei
hintereinanderfolgende Speicherzellen zugreifen.
-
Nun können Speicherzelle von der CPU-
gelesen werden, was im Beispiel notwendig ist, aber auch
beschrieben werden. Um der Speicherzelle mitteilen zu können,
ob diese ihre Ausgänge an den Datenbus legen soll, damit
sie gelesen werden kann, oder ob sie ihre Eingänge an den
Datenbus legen soll, weil die CPU Daten in sie hineinschreiben
will, verfügt die CU über zwei zusätzliche
Signale. Dies sind das Lese- und das Schreibsingal. Bei obiger
CPU heissen sie in Bezug auf den Hauptspeicher, MemoryRead
(MEMRD) und MemoryWrite (MEMWR).
-
Jedes von ihnen geht auf log 0, wenn es
aktiv wird. Beide Signale können nicht gleichzeitig aktiv
werden, denn dann würde die CPU signalisieren, dass sie
gleichzeitig lesen und schreiben will was undenkbar ist .. es
sei denn die CPU ist defekt.
Will nun die CPU einen Befehl oder einen
Parameter lesen, so gibt sie die Adresse der gewünschten
Speicherzelle auf dem Adressbus aus und setzt das Lesesignal. Die
derart adressierte Speicherzelle schaltet sich ein und legt ihre
Ausgänge an den Datenbus. Nun liest die CPU den Datenbus und
überträgt das Datum in eines ihrer Register. Bei
Befehlen ist das betroffene Register das Befehlsregister, bei
einem Parameter, das im vorangehenden Befehl angesagte
Arbeitsregister. Jeder weitere Befehlsaufruf folgt diesem Schema.
Schreibvorgänge laufen ebenso ab, nur dass bei ihnen das
Schreibsignal gesetzt wird, die betroffene Speicherzelle ihre
Eingänge an den Datenbus legt, und der einzuspeichernde Wert
aus einem der Arbeitsregister der CPU stammt.
|
|
|
|
|
|
|
|
- Der IO Speicher.
-
Er ist nicht bei allen CPUs vorhanden und
auch für die Arbeit der 80186 CPU nicht zwingend notwendig.
Andererseits erleichtert er das Leben der Konstrukteure ebenso
wie das der Programmierer. In diesem Speicher der adressparallel
zum Haupspeicher liegt, befinden sich nur an einigen Stellen
Speicherzellen, und diese gehören allen möglichen
Schnittstellenbausteinen. Durch die Trennung von den, Programm
und Daten enthaltenden, Hauptspeicherzellen und den
Schnittstellenspeicherzellen, kann der Hauptspeicher vor
Fragmentierungen durch Interfacebausteine und -Schaltungen
geschützt werden. Er kann durchgehend mit normalen
Speicherzellen aufgefüllt werden. Andererseits wird im
IO-Speicher nie ein Programm ausgeführt werden, denn er ist
dem Befehlszeiger der CU nicht zugänglich. Es gibt für
ihn nur zwei Maschinenbefehle und diese können
ausschliesslich Daten aus im weg, oder zu ihm transportieren.
-
Diese beiden Befehle benutzen eigene Lese-
und Schreibsignale die IORD und IOWR heissen. Sie gewährleisten,
dass trotz gleicher Adressen von Speicherzellen des Haupt- und
des IO-Speichers, nie gleichzeitig eine Speicherzelle des
Hauptspeichers und eine des IO-Speichers am Datenbus aktiv
werden können. Immer dann wenn eines der Signale IORD oder
IOWR aktiv werden, sind die Signale MEMRD und MEMWR mit
Sicherheit inaktiv. Eine durch die Adresse im Hauptspeicher
teilaktivierte Speicherzelle wird also weder schreibend noch
empfangend an den Datenbus gelangen.
-
-
Im Gegensatz zum 1MByte grossen
Hauptspeicher einer 80186 CPU ist der IO-Speicher maximal
64kByte gross.
|
|
|
|

|
|