Computerarchitektur

Die Computerarchitektur ist ein Teilgebiet der Informatik, welche sich mit dem internen sowie externen Aufbau eines Computersystems beschäftigt

Von-Neumann-Architektur

Über Hauptplatine sind alle Komponenten miteinander verbunden. Das ist in Systemen ein kompliziertes Verbindungsgeflecht, weshalb man sich dieser Materie zunächst mit Hilfe einer sehr vereinfachten Darstellung nähert, der Von-Neumann-Architektur.

Computer, der nach Prinzipien der Von-Neumann-Architektur aufgebaut ist, nennt man Von-Neumann-Rechner 

Dies ist Referenzsystem für Computer und bestehtimage-1660629507311.pngaus einer CPU mit Steuerwerk und Rechenwerk, einem Ein- / Ausgabewerk, einem Speicherwerk und  Bus-System. Das Bus-System verbindet die Komponenten miteinander.


Von-Neumann-Flaschenhals

Nur eine angeschlossene Komponente kann zur selben Zeit schreibend auf das Bussystem zugreifen, da es sonst zu einer Kollision kommen würde. Das macht das Gerät insgesamt langsam.

Kollision
Sollten einmal zwei (oder mehr) angeschlossene Komponenten zur selben Zeit auf den Bus schreiben, so kommt es zu einer Überlagerung der Signale, wodurch diese unbrauchbar werden. Man nennt dies eine Kollision auf dem Bus.

Strategien zur Kollisionsvermeidung
Damit Rechner trotz Von-Neumann-Flaschenhals funktionieren kann, sind Strategien zur Vermeidung von Kollisionen auf Bus nötig. Sind negativ für Geschwindigkeit, mit der Datenübertragung über den Bus möglich ist und des gesamten Rechners.

Komponenten eines VNR

 

image-1664348929119.png

image-1664295900353.png

 

CPU

Die CPU ist ein zentraler Bestandteil eines Computers. Sie besteht in erster aus Steuerwerk, Rechenwerk sowie Registern.

Register ist digitaler Speicherbereich, der auf CPU angesiedelt ist, und Gruppe von binären Werten (Bits) speichern kann.

→ Anzahl der gleichzeitig in einem Register speicherbaren Bits nennt man die Breite des Registers oder Registerbreite
→ Bei einer Breite von n Bit spricht man auch von einem n-Bit-Register. (4, 8, 16, 32 oder 64 Bit.)


Steuerwerk

Bestandteil der CPU und für die sequentielle Abarbeitung des im Speicherwerk befindlichen Programms zuständig.

→ sendet die Adresse des aktuellen Befehls an das Speicherwerk 
→ erhält als Antwort genau jenen Befehl, der an der übermittelten Adresse innerhalb des Speicherwerks steht.
→ Sobald das Steuerwerk den Befehl erhalten hat, wird dieser ausgeführt.

  • Damit die Adresse des aktuellen Befehls vom Steuerwerk verwaltet werden kann, muss es einen Speicherbereich dafür geben. → Verwendet wird dazu ein RegisterProgram Counter, kurz: PC.
  • Damit der vom Speicherwerk empfangene Befehl verwaltet werden kann, muss es einen Speicherbereich dafür geben.
    → Verwendet wird dazu ein RegisterBefehlsregister, kurz: IR.
  • Die Adresse des aktuellen Befehls kann über das vorhandene Bus-System an das Speicherwerk gesendet werden. 
    → Verbindung der Register PC sowie IR mit dem Bus-System muss daher gegeben sein.

Ein Bus (Binary Unit System) dient zur parallelen Übertragung einer Gruppe von Bits.

→  Die Anzahl der parallel übertragbaren Bits auf einem Bus nennt man die Breite des Busses oder Busbreite. (4, 8, 16, 32 oder 64)

schreibender Zugriff: wenn eine an diesem Bus angeschlossene Komponente eine Gruppe von Bits auf Bus gibt. (Senden)

lesender Zugriff: wenn eine an Bus angeschlossene Komponente Gruppe von Bits vom Bus entgegennimmt. (Empfangen)

→ Es können beliebig viele Komponenten zur gleichen Zeit Informationen über den Bus empfangen, jedoch nur eine Senden

Ein Adressbus ist ein Bus, bei dem die parallel übertragene Gruppe von Bits als Adresse zu interpretieren ist.
Ein Datenbus ist ein Bus, bei dem die parallel übertragene Gruppe von Bits als Daten zu interpretieren ist.#


RechenwerkCpu5.jpg

Führt vom Steuerwerk in Auftrag gegebene Berechnungen durch. Hauptbestandteil ist ALU

Vom Rechenwerk bereitgestellte Funktionen

  • Addition der Operanden (A + B)
  • Subtraktion (A - B)
  • Multiplikation (A * B)
  • Konjunktion (logisches UND, bitweise)
  • Disjunktion (logisches ODER, bitweise)
  • Vergleich von A und B (bitweise)
  • etc.

 

Speicherwerk

Speicherwerk.jpg

Das Speicherwerk ist in eine endliche Anzahl gleichgroßer (aber verhältnismäßig kleiner) Speicherzellen unterteilt (RAM)

→ Jede Zelle verfügt dabei über eine eindeutige Adresse.
→ Es kann nur Informationen speichern bei eingeschaltetem Rechner.
→ Speicherwerk kann den Wert einer adressierten Speicherstelle auslesen und zur Verfügung stellen oder andersherum

Ein Steuerbus ist ein Bus, bei dem die parallel übertragene Gruppe von Bits als Steuerinformation zu interpretieren ist.

Ein- / Ausgabewerk

Eawerk.jpgDas Ein-/Ausgabewerk ist in der Von-Neumann-Architektur nicht näher spezifiziert. Man kann es sich vorstellen als eine Art von "Stellvertreter" für alle weiteren Komponenten eines modernen Rechners. Z.B. also für Komponenten wie:

  • Monitor mit Grafikkarte
  • Festplatte mit Controller
  • Netzwerkkarte mit Controller
  • Maus mit Controller
  • Tastatur mit Controller
  • etc.

Für jede Komponente ist ein eigener Controller vorgesehen, der das Bus-System mit dem eigentlichen Gerät verbindet.

 

Vom Quellcode zum Prozessor

  1. Compiler übersetzt Quellcode in Maschinensprache
    -> Compiler muss wissen welche CPU weil unterschiedlich Sprache
    -> z.B: 16 Bit CPU = Befehle von 16 Bit können überführt werden

    void main (void){
       int x = 2;
       int y = 5;
       int z = x + y;
    }

     

     

    zu

     

    00000000110000100000000100001101000000001100010100000001000011100000000010001101000000011000111000000001000011110000001110000000

  2. Maschinensprache in Einzelteile zerlegen 
    -> Wenn Nummer = 1, dann geht es um die Zahl, sonst um die Speicherzelle
    -> die Befehle werden auf dem ACC durchgeführt
    Reserve Befehl Nr. Operant  Bedeutung   Nr. Befehl Bedeutung

    000000

    000000

    000000

    000000

    000000

    000000

    000000

    000000

    001

    010

    001

    010

    001

    011

    010

    111

    1

    0

    1

    0

    0

    0

    0

    0

    000010

    001101

    000101

    001110

    001101

    001110

    001111

    000000

    Lade den Wert 2 in ACC

    Speichere ACC in Speicherzelle 13

    Lade den Wert 5 in ACC

    Speichere ACC in Speicherzelle 14

    Lade Speicherzelle 13 in ACC

    Addiere Speicherzelle in 14 zu ACC 

    Speichere ACC in Speicherzelle 15

    Programm beenden

     

    000 
    001

    010

    011

    100

    101

    110

    111

    NOOP

    LOAD

    STORE
    ADD

    SUB

    EQUAL 

    JUMP
    HALT

    No Operation

    Was laden

    Speicher

    Addieren

    Minimieren

    Vergleichen

    Überspringe

    Beenden 


Befehlsformat

Das Befehlsformat definiert für jeden einzelnen Befehl, wie dieser codiert ist: <Befehl><Num><Operand>

Opcode - Binäre Codierung, aus der sowohl der Befehl, als auch zusätzlich benötigte Steuerinformationen hervorgehen.

Klassifizierungen - Bei den Befehlsformaten werden verschiedene Klassifizierungen unterschieden:

  • Einadressformat | Zweiadressformat | Dreiadressformat

Das Einadressformat entspricht dem Format Vom Quellcode zum Prozessor. Hier wird für die einzelnen Befehle nur der Opcode und die Adresse eines Operanden (deshalb Einadressformat) angegeben.

<Opcode><Operand1>


Bedeutung des Akkumulators

Wird ein zweiter Operand benötigt, so wird vorausgesetzt, dass dieser sich im Register Akkumulator befindet. Das bei der Abarbeitung des Befehls berechnete Ergebnis wird per Definition wieder im Akkumulator gespeichert.

Ablauf der Steuerung

image-1660631018907.png


CPU - Steuerwerkimage-1661775572730.png


CPU - Rechenwerk

image-1660630451859.pngDas Rechenwerk führt vom Steuerwerk in Auftrag gegebene Berechnungen durch.

In der ALU werden Funktionen durchgeführt. Die Werte werden schließlich im Akkumulator zwischengespeichert, wo sie ausgelesen werden können.

 


Speicherwerk (RAM)


Ein- / Ausgabewerk

image-1660630922369.png

 

Transaktion von Informationen über verschiedene Peripheriegeräte (Maus, Tastatur, Monitor, ...). Für jedes Gerät gibt es einen Controller.

Register auf der CPU - Stackregister

Stackregister

image-1660636899189.png

Basisregister und Limitregister

image-1660639003026.png

Mehrere Prozesse gleichzeitig im Speicher

  1. Starte den Rechner.
  2. Lade nacheinander mehrere Programme in den Hauptspeicher. Die Befehle des ersten Programms werden zusammenhängend ab Speicherzelle 0 abgelegt, die Befehle der weiteren Programme jeweils zusammenhängend in freien Speicherbereichen danach.
  3. Treffe für jedes Programm die nötigen Vorarbeiten für seine spätere Ausführung.
  4. Starte in Speicherzelle 0 mit der Ausführung des ersten Befehls des ersten Prozesses.
  5. Führe entsprechend des Ablaufs alle weiteren Befehle dieses ersten Prozesses aus.
  6. Wenn Ausführung des ersten Prozesses beendet (HALT-Befehl), wird CPU auf zweiten Prozess vorbereitet.
  7. Starte mit dem ersten Befehl des zweiten Prozesses...

Swapping: Aus- und Einlagern von kompletten Prozessen
→ Wenn mehr Programme gleichzeitig in den Hauptspeicher aufgenommen werden sollen, als verfügbare Hauptspeicher 

WER oder WAS lagert Prozesse aus oder ein? - BETRIEBSSYSTEM

Unter Swapping versteht man das Aus- bzw. Einlagern eines kompletten Prozesses.

→ Entscheidend ist hier der Begriff kompletter Prozess, also sowohl der Programmtext, als auch alle zugehörigen Daten.
→ Daten aus Datensegment im Hauptspeicher und alle zu diesem Prozess gehörigen Daten aus Registern der CPU berücksichtigen


Limitregister zum Speicherschutz
→ mehrere Prozesse gleichzeitig im Hauptspeicher erfordert eine Berücksichtigung von Sicherheitsbelangen.
→ sichergestellt werden, dass Prozess nicht auf Speicherzellen im Hauptspeicher zugreift, die anderen Prozess zugeordnet sind.

Interrupt-Controller

Interrupt-Controller: Interrupt-Signale von Komponenten des Rechners entgegen zu nehmen, und die CPU über das Vorliegen von einem (oder mehreren) Interrupts zu informieren.

→ Die CPU ist dann für die Abarbeitung des Interrupts zuständig.
→ Dies geschieht, indem eine sogenannte Interruptbehandlungsroutine aufgerufen wird.

Interruptbehandlungsroutine (ISR): eine Reihe von Anweisungen, die einem bestimmten Interrupt zugeordnet ist und deren Anweisungen auf einer CPU ausgeführt werden können.

Keine negative Beeinträchtigung
→ Interrupt unterbrochene Prozess muss später ohne negative Beeinträchtigung weiter ausgeführt werden können
→ Das vom Prozess erarbeitete Ergebnis darf sich nicht unterscheiden

Einen Interrupt nennt man eine präzise Unterbrechung, falls alle der folgenden Bedingungen erfüllt sind:

  1. Der Programmzähler des unterbrochenen Prozesses wird an einer bekannten Stelle gesichert.
  2. Alle Befehle des unterbrochenen Prozesses, die vor dem Befehl ausgeführt werden müssen, auf den der Programmzähler zeigt, sind vollständig abgearbeitet.
  3. Kein Befehl des unterbrochenen Prozesses, der nach dem Befehl ausgeführt werden muss, auf den der Programmzähler zeigt, ist bereits abgearbeitet.
  4. Der Ausführungszustand des Befehls des unterbrochenen Prozesses, auf den der Programmzähler zeigt, ist bekannt.

Einen Interrupt nennt man eine unpräzise Unterbrechung, falls mindestens eine der für einen präzisen Interrupt genannten Bedingungen nicht erfüllt ist.

Gründe für eine Interrupt-Auslösung:

Speicherschutzverletzung
→ Stellt das Steuerwerk während der Abarbeitung eines Prozesses fest, dass der aktive Prozess auf einen Speicherbereich im Hauptspeicher zugreifen möchte, der ihm selbst nicht zugeordnet ist, so handelt es sich um eine Speicherschutzverletzung, die durch einen Interrupt angezeigt wird.
Reaktion: Speicherschutzverletzung verursachende Prozess wird ohne zu speichern beendet 


Interruptablauf - Beispiel: Eine Datei soll in den RAM-Speicher innerhalb eines Prozesses abgespeichert werden. 

image-1660635422406.png

1. CPU schickt Anforderung eines Datenworts an die Festplatte und führt danach einen Kontextwechsel aus
2. HD löst Interrupt aus. Interrupt wird an Interrupt-Controller gesendet und in Queue gespeichert.
3. Der Interrupt-Controller meldet den Interrupt dem Steuerwerk.
4. Nach letzten Execute-Phase des aktuellen Prozesses werden Registerinhalte gesichert. Die Interruptbehandlungsroutine wird ausgeführt. Datenwort wird mit Speicherzelle und Befehl (wirte) wird an Hauptspeicher geschickt (Adressbus, Databus, Steuerbus)


Kontextwechsel

image-1660298066107.png


Kontextwechsel versus Interrupt 

image-1660655844439.png

Der Unterschied zwischen Kontextwechsel und Interrupt, ist die Dauer der Unterbrechung

Kontextwechsel: sehr aufwendig, da viele Informationen auf unterschiedliche Register abgespeichert werden   

Interrupt: arbeitet mit dem ISR und somit handelt es sich nur um ein Programm, dass für sich selbst sichert


Gründe für eine Interrupt-Auslösung


Quasi-gleichzeitige Ausführung mehrerer Prozesse
→ indem sich die betreffenden Prozesse in kleinen Zeiteinheiten auf der CPU abwechseln

WER oder WAS bestimmt, wann es Zeit ist, einen Prozess zu unterbrechen und die CPU einem anderen Prozess zuzusprechen?
WER oder WAS bestimmt, welcher Prozess als nächstes die CPU bekommt?

→ Wir brauchen ein Betriebssystem!

Hardware-Taktgeber löst in sehr kleinen zeitlichen Abständen einen Interrupt auslöst

→ Wird entschieden, dass es Zeit für einen Prozesswechsel auf CPU ist, so kann ein anderer Teil des Betriebssystems aufgerufen werden, der den nächsten Prozess auswählt und ihm die CPU übergibt.


image-1664641686924.png

Kommunikation mit E/A-Geräte (Festplatte/Monitor/Maus/Tastatur/...)
→ CPU kommuniziert nicht direkt mit diesen Komponenten, sondern mit einem Controller,  speziell für die Komponente zuständig 


Datentransfer und Interrupts

DMA - Controller

Direct Memory Access-Controller ist eine Hardware-Komponente, die die Geschwindigkeit des Gesamtsystems erhöht.

→ Erreicht werden soll dies durch Reduzierung der Anzahl an Interrupts, die bei der Kommunikation zwischen der CPU und den E/A-Geräten ausgelöst werden und durch die Spezialisierung des DMA-Controllers.
→ Die Daten sollen zwischen dem Hauptspeicher und einem weiteren DMA-fähigen Peripheriegerät übertragen werden.


Allgemeiner Ablauf

image-1660641644972.png

1. Die CPU versorgt aus Steuerwerk DMA-Controller mit Informationen zu beteiligte Komponenten, Start- und Zieladresse, Anzahl zu übertragener Datenwörter und Übertragungsrichtung und erteilt  DMA-Controller Erlaubnis, mit Datenübertragung zu beginnen.
2. Der DMA-Controller steuert die Übertragung aller Datenwörter 
3. HD gibt die Datenwörter zurück 
4. DMA lässt die Datenwörter auf den RAM schreiben 

MMU - Memory Management Unit


Wie es bisher ohne MMU ist

Um Flexibilisierung der Speicherverwaltung zu erreichen, wird in BS Konzepte einer virtuellen Speicherverwaltung integriert

Wir brauchen ein Betriebssystem!


Virtuelle Speicherverwaltung

 

Unter dem physischen Speicher eines Computers versteht man den tatsächlich in dieses Gerät verbauten Speicher, soweit er direkt von der CPU oder der MMU angesprochen werden kann. Eine Seite ist ein zusammenhängender Block von Speicherzellen des physikalischen Speichers (RAM). Die Größe einer Seite entspricht der Größe eines Seitenrahmens.

Unter dem virtuellen Speicher eines Prozesses versteht man den Speicherbereich, der einem Prozess durch das Betriebssystem zur Verfügung gestellt wird. Ein Seitenrahmen ist ein zusammenhängender Block von Speicherzellen des virtuellen Speichers (RAM).

Der physische Speicher bezieht sich auf den Computer, während der virtuelle Speicher auf einen Prozess bezogen wird!

Count Programm (Assembler)

image-1660133448775.png

Dieses Programm stellt den Ablauf eine Zyklus dar

1. PC gibt den Wert zum RAM über
2.  Befehl mit PC Wert wird ausgeführt und läuft über den Data Bus zum IR
3. Danach wird der Decoder angestoßen die Weiche im MUX zu stellen 
4. Im ALU wird der Befehl geladen 
5. Im AC wird dann die geladenen Zahl zwischengespeichert