Donnerstag, 20. Oktober 2011

C und die Welt von Assembler - Teil 3

Die Arbeitsweise einer CPU
Wie eine CPU aufgebaut ist, wissen wir nun. Doch zu Wissen wie sie aufgebaut ist, heißt noch lange nicht zu Wissen wie sie arbeitet. Was macht eine CPU mit dem Maschinencode? Dieser Frage wollen wir nun auf den Grund gehen. Fangen wir am Anfang an.

Man nehme an jemand hätte ein Programmcode geschrieben und diesen mit einem Assembler in den Maschinencode compiliert. Jetzt sind die Einsen und Nullen irgendwo im Arbeitsspeicher.

Ein Programm besteht aus einer Reihe von Befehlen. Diese werden vom Prozessor bearbeitet. Dies geschieht folgendermaßen.
  1. Zum Anfang wird der Programmzähler auf die Adresse des Speicherplatzes gesetzt. In dieser Adresse befindet sich der Code des nächsten Befehls. 
  2. Der Befehlscode wird aus dem Arbeitsspeicher geholt und dekodiert.
  3. Jetzt wird der Befehl ausgeführt. Wäre der Befehl "LSR". So würde der Prozessor alle Werte im Stack um eine Position nach Links verschieben.
  4. Danach wird der Programmzähler erhöht und ein neuer Zyklus beginnt.
Die Highways des Computer: Die Busse
Wie schon erwähnt sind die CPU und die Arbeitsspeicher(RAM) durch Bussysteme miteinander verbunden. Diese Digitalen Autobahnen befördern eine Unmenge an Daten zwischen all den Komponenten im PC. Man unterscheidet zwischen drei Bussysteme.

  1. Der Datenbus
    Der Datenbus überträgt Daten zwischen Computerbestandteilen innerhalb eines Computers oder zwischen verschiedenen Computern. Die Bezeichnungen 4-Bit-, 8-Bit-, 16-Bit-, 32-Bit- oder 64-Bit-CPU bezeichnen in der Regel die Breite des internen Datenpfades einer solchen CPU. Der Prozessor kann auf den Datenbus in
    zwei Richtungen zugreifen: lesend und schreibend. So eine Verbindung, die in
    beide Richtungen möglich ist, bezeichnet man auch als bidirektional.
  2. Der Adressbus
    Der Adressbus ist im Gegensatz zum Datenbus ein Bus, der nur Speicheradressen überträgt. Die Busbreite, also die Anzahl der Verbindungsleitungen, bestimmt dabei, wie viel Speicher direkt adressiert werden kann. Der Adressbus leitet Informationen nur in eine Richtung, nämlich vom
    Steuerwerk des Prozessors zum Arbeitsspeicher. Er wird daher als unidirektional
    bezeichnet.
    Bei einem System mit 32 Adressleitungen können
    232 4 GB angesprochen werden. Bei einem 64-Bit-System können sogar 264 =  16 Exabyte angesprochen werden. Um mehr als 4 GB RAM ansprechen zu können benötigt man demnach ein 64-Bit-System.

    Die 8086/8088-CPU beispielsweise besitzt einen 20 Bit breiten Adressbus. Damit
    kann sie auf  1 MB Speicher zugreifen. Allerdings müsste dafür das Register in der CPU auch 20 Bit aufweisen. Da sich in diesem Register die Adresse befindet, bevor sie auf den Adressbus geht.
    Die 8086/8088-CPU hat allerdings nur ein 16 Bit Register. Damit können lediglich 65 KB direkt adressiert werden.
    Um dennoch auf die 1 MB Speicher zugreifen zu können, werden zwei Register benötigt. Mit zwei 16-Bit-Registern kann man 4 GB Arbeitsspeicher ansprechen. Teilt man die Adresse auf die beiden Register auf, so dass 16 Bit vom einten und 4 Bit vom anderen Register genutzt werden, hat man eine 20 Bit Adresse.
  3. Der Kontroll- / Steuerbus
    Der Kontrollbus ist ein Teil des Bussystems, welcher die Steuerung des Bussystems bewerkstelligt. Hierzu zählen unter anderem
    • die Leitungen für die Lese-/Schreib-Steuerung, 
    • Interrupt-Steuerung, 
    • Buszugriffssteuerung, 
    • die Taktung (falls ein Bustakt erforderlich ist), 
    • Reset- und Statusleitungen. 
    Der Kontrollbus koordiniert den Adress- und den Datenbus. Er sorgt dafür, dass nicht mehrere Komponenten gleichzeitig darauf zugreifen.

Nun kennen wir die Hardware nochmals ein wenig besser.


C - simple programs
---------------------------------------------------------------------------------
Captain Malgardi
Malgardis Crew
become a fan on Facebook : Malgardi Fan!
hugo17 has contributed to DaniWeb

Keine Kommentare:

Kommentar veröffentlichen