II. CPU

Die klassische CentralProcessingUnit (CPU)  ist eine von Neumann-Maschine:

- die Befehle werden nacheinander abgearbeitet

- ProgrammCode und Daten befinden sich in einem Speicher und sind prinzipiell gleich zu behandeln

- mindestens ein Befehl muss vorhanden sein, um das Programm in Abhängigkeit von Zwischenwerten an anderer Stelle fortzusetzen

- EnhancedRISC-Controller wie der AVR90S1200 sind nach dem Konzept der Harvard-Architektur aufgebaut:

"Eine Architektur heißt Harvard-Architektur, falls für Befehlsspeicher und Datenspeicher räumlich getrennte Daten- und Adreßbusse zur Verfügung stehen."

- XPuter mit sich selbst rekonfigurierenden KressArrays werden die von Neumann Maschine ablösen.

Prinzipiell besteht eine CPU aus:

- Rechenwerk (ArithmeticLogicUnit, ALU). Zur ALU gehören ein oder mehrere Akkumulatoren (Rechenregister) und ein FlagRegister

- GeneralPurposeRegister (= allgemein zugängliche Arbeitsregister)

- SpecialFunctionRegister (Sonderregister)

- Befehls- oder Steuerwerk (ControlUnit, CU)

- ProgramCounter (PC)

- StackPointer (SP)

- Interner Speicher (ROM, SRAM, EEPROM)

- Hauptspeicher (RAM)

- Ein-/Ausgabe-Einheit (Ports)

Die ControlUnit (CU) besteht aus einer Ablaufsteuerung und einem "Zeitschaltwerk", das im EngineClock getaktet wird.
Sämtliche Steuervorgänge der CPU wie Schreiben (WRITE), Lesen (READ), Rücksetzen (RESET) oder Bausteinauswahl (CHIPSELECT) werden durch das Steuerwerk vorgenommen.
Auch der ProgrammCounter (PC) und der StackPointer (SP) werden vom Befehlswerk gesteuert:

1. Nach einem Reset/PowerOn zeigt der ProgrammCounter auf eine definierte Anfangsadresse im internen Speicher ($0000).

2. Von dort holt das Befehlswerk den ersten Maschinenbefehl (OpCode) ins Befehlsregister (fetch cycle), um ihn im Befehlsdecoder zu decodieren. Die CU bestimmt anschliessend über den ControlBus die weitere Verarbeitung des Codes in der ALU (excute cycle).

3. Danach wird der PC um 1 erhöht, um so die nächste Adresse im  Programm-Speicher zu selektieren.

4. Bei einem INTERRUPT  (INT) wird eine Subroutine (Interrupt- Handler) befahren. Um nach beendigter Unterprogrammbearbeitung wieder an die Unterbrechungsstelle im Hauptprogramm zurückzukehren, muss die Rücksprungadresse im Stack (Stapelspeicher) hinterlegt werden. Der Stack befindet sich in den meisten Fällen in einem dazu reservierten Bereich des Arbeitsspeichers. 
[Beim AVR_AT90S1200 existiert ein spezieller Hardwarestack mit 3 Level Tiefe, so dass kein Stackpointer benötigt wird.]

Der StackPointer (Stapelzeiger) zeigt auf die entsprechende Rücksprung-Adresse, die im Stack hinterlegt wurde.

- Das  Rechenwerk  umfasst die ALU,  Akkumulatoren  (Rechenregister), allenfalls Indexregister (X,Y) für die indizierte Adressierung und das StatusRegister (beim 68HC11 ConditionCodeRegister genannt). Dieses besteht aus 8 Bits (= Flags), welche von mathematischen und logischen Operationen der ALU beeinflusst werden .

- Der interne Speicher umfasst bei den 68HC11-Derivaten ein EE- PROM (BootstrapLoader, ProgramCode) und ein SRAM (Daten), bei der AVR-Familie hingegen einen FlashMemory, ein EEPROM und ein SRAM. Die Speicheraufteilung und Adressierungsart ist immer hard- warespezifisch und controllergebunden.

- Über die Ein-/Ausgabe-Einheit (I/O-Ports) greift der Controller auf die Peripherie zu.

- Die CPU ist über den Systembus mit dem Hauptspeicher (RAM) und den übrigen Systemkomponenten verbunden. CPU-intern verbindet ein Datenbus die inneren Komponenten.

Der Systembus seinerseits besteht aus:

a. dem Datenbus mit einer Länge von 8 oder16 Bit

b. dem Adressbus mit einer Länge von 16 oder 32 Bit

c. dem Steuerbus

Über den Steuerbus werden von der CU beim Lesen (READ) und Schreiben (WRITE) entsprechende Pegel auf die Steuerleitungen gelegt, so dass ein kollisionsfreier CPU-Zugriff erfolgen kann. Nicht benötigte I/O's werden in einen hochohmigen Zustand (Tristate) versetzt.


Aufgrund der Harvard-Architektur der AVR-Mikrocontroller stehen für Daten und Programme getrennte Adressbusse zur Verfügung, woraus ein erheblicher Performancezuwachs resultiert.