Theorie
 
 
 
 
 
Computertechnik

 
 
 
 

Der Computer

 
 

.. Computer mit CPU, Haupt- und IO-Speicher

 
 

 
 
 
 


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.





www..de