Damit sind eigentlich die wichtigsten Informationen für die Fetch-Phase verfügbar. Fassen wir sie also noch einmal zusammen:
- Die im Program Counter im Steuerwerk gespeicherte Adresse wird an den Decoder des Caches übermittelt (das geschieht übrigens über den sogenannten Adressbus – eine Datenleitung im Computer, die einfach mehrere getrennte Bauelemente miteinander verbindet und so auch die Datenübermittlung über größere Entfernungen ermöglicht).
- Der Decoder wandelt das Adresssignal derart um, dass eine einzelne Zeile im Cache aktiviert wird.
- Die nun am Ausgang vom Cache anliegende Bitkette wird (wieder über einen Bus, diesmal den Datenbus) zurück an das Steuerwerk übermittelt, wo sie als Instruktion im Instruktionsregister gespeichert wird.
- Als letztes wird noch der Program Counter aktualisiert, so dass er auf die nächste Instruktion im Speicher verweist.
Phase 2: Decode
Die größte Magie ist jetzt eigentlich schon vorbei, spannender wird es nicht mehr. In der zweiten Phase wird die nun im Instruktionsregister geladene Instruktion durch einen Decoder im Steuerwerk geschleust (wobei das Register seine gespeicherten Werte zum Beispiel einfach direkt an den Decoder ausgebe könnte), der sie in ihre relevanten Bestandteile (also den Opcode und eventuelle Adressen, Register-Identifizierer und konkrete Werte) zerlegt. Der Decoder hier arbeitet genauso wie der im Cache, nur dass diesmal eben keine einzelne Bitkette mit nur jeweils einer einzelnen 1 darin entsteht, sondern mehrere, variablere Bitketten. Nach dem Ende der zweiten Phase ist also bekannt, was gemacht werden soll und welche Daten dafür zu benutzen sind.
Phase 3: Fetch Operands
Genauso, wie in der ersten Phase die Instruktion aus dem Speicher geladen wurde, werden in der dritten Phase eventuell benötigte Daten geladen; die Adressen hierfür wurden in der vorherigen Phase ja aus der Instruktion extrahiert, sind also bekannt. Das Vorgehen ist hierbei identisch zu dem in Phase 1, lediglich mit dem Unterschied, dass die geladenen Daten in anderen Registern gespeichert werden.
Phase 4: Execute
In der letzten Phase werden schließlich alle gesammelten Daten vereint und die geladene Instruktion ausgeführt. Vereinfacht ausgedrückt ist ein Prozessor dabei so verdrahtet, dass durch den gespeicherten Opcode automatisch die passenden Steuersignale an die benötigten Teile des Prozessors gesendet werden; wenn wir an das Rechenwerk aus dem letzten Teil denken, könnte durch den Opcode also das Steuersignal für den Addier-/Subtrahiereingang generiert werden.
Zusammenfassung
Wenn man sich jetzt den ganzen Prozessor einfach um noch viel mehr (Rechen-)Funktionen angereichert vorstellt, hat man ein ziemlich gutes Bild davon, wie so ein Computer tief im Inneren funktioniert. Auch moderne Prozessoren funktionieren nach dem in diesem und den letzten Kapiteln beschriebenen Prinzip. Natürlich sind sie weitaus komplexer in der Hinsicht, dass sie mehr Register, ein viel größeres Rechenwerk und insgesamt über mehr Funktionalität verfügen, aber das Prinzip ist wirklich das gleiche.
Damit haben den technischen Teil der Arbeitsweise von Computern geklärt. Wir haben die theoretischen Grundlagen des dualen Zahlensystems geklärt; wir haben besprochen, wie aus Transistoren einfache logische Gatter aufgebaut werden können; anschließend wurde gezeigt, wie mit Hilfe dieser logischen Gatter zunächst einzelne Bits miteinander verrechnet und gespeichert werden können; danach haben wir uns mit der Speicherung von ganzen Bitketten beschäftigt und komplexere Rechenoperationen besprochen; heute schließlich wurde erklärt, wie all die vorher vorgestellten Methoden zusammenwirken und einen Prozessor formen.
Wenn im Kommentarbereich keine besonderen Wünsche über weitere technische Bestandteile eines Rechners, die hier noch besprochen werden sollen, geäußert werden, würde ich diese Reihe hiermit für (erfolgreich) beendet erklären und mich in Zukunft der Programmierung von Computern zuwenden. Wir haben schließlich zwar geklärt, wie ein Computer Instruktionen verarbeiten kann, aber woher diese Instruktionen letzten Endes kommen, ist noch offen – und hier kommt der Programmierer ins Spiel. Aber dazu in Zukunft mehr.
Kommentare (12)