| Frage | Erklärung |
|---|---|
| Schichtenmodell | Das Schichtenmodell funktioniert nach folgendem Prinzip. Eine untere Schicht erbringt so genannte Dienstleistungen für die nächst höhere Schicht und eine obere Schicht nutzt nur die Dienste, die von dernächst niedrigeren Schicht angeboten werden. Zwischen diesen Schichten sind eindeutige Schnittstellen definiert. |
| Datenverabeitungssystem | „Ein Datenverarbeitungssystem ist eine Funktionseinheit zur Verarbeitung und Aufbewahrung von Daten. Verarbeitung umfaßt die Durchführung mathematischer, umformender, übertragender und speichernder Operationen.“ |
| Rechnersystem | in Rechnersystem enthält mindestens vier Komponente. Einen Prozessor (Zentraleinheit oder CPU1 ), der Programme ausführt, einen Speicher, der Programme und Daten enthält (Speichersystem), einen Bus2 zum Transfer von Informationen zwischen dem Prozessor und dem Speicher und ein Ein-/Ausgabesystem zum Transfer von Informationen mit der Außenwelt. |
| Digitale Souveränität | Unter dem Begriff der Souveränität versteht man allgemein die Fähigkeit zur Selbstbestimmung, die sich durch Eigenständigkeit und Unabhängigkeit ausdrückt. „Digitale Souveränität bezeichnet in diesem Sinne die Fähigkeit zu selbstbestimmtem Handeln und Entscheiden im digitalen Raum.“ |
| CISC | Complex Instruction Set Computer |
| Risc | Reduced Instruction Set Computer |
| Programmiermodell | Programmiermodell bezeichnet im Kontext der maschinennahen Programmierung den Registersatz eines Prozessors, sowie den dazugehörigen Befehlssatz, also der Menge aller verfügbaren Befehle. |
| Big-Endian | Bei Big-Endian (Motorola-Format) wird das höchstwertige Byte an der kleinsten Speicheradressen gespeichert. |
| Little-Endian | Bei Little-Endian (Intel-Format) wird das kleinstwertige Byte an der kleinstwertigen Speicherstelle gespeichert. |
| Condition Mnemonics | Condition Mnemonics sind ein entscheidendes Element, um Programmkontrollfluss zu implementieren. Es handelt es sich dabei zwei Buchstaben, die direkt an einen beliebigen Befehl angehängt werden (z.B. das Mnemonic EQ an den Befehl b, also beq …). Dieser Befehl wird nur dann ausgeführt, wenn die in dem Mnemonic codierte Flag-Bedingung erfüllt ist (bei EQ z.B., muss das Zero Flag gesetzt worden sein). |
| Datenfelder | Datenfelder (oder auch Arrays genannt) sind eine Datenstruktur die aus mehreren Wörtern besteht. Sie besitzen eine feste Größe, welche für die Anzahl an Elementen im Datenfeld steht. |
| Unterprogramme | Unterprogramme (bzw. Teilprogramme) sind Teile eines Programmes (Hauptprogrammes), die eine bestimmte Funktionalität implementieren. Unterprogramme werden genutzt, um für eine bessere Strukturierung der Programme zu sorgen. |
| Makrotechnik | Bei der Makrotechnik wird das Teilprogramm an den Stellen, wo es gebraucht wird, in das Hauptprogramm einkopiert. Dazu wird dem Teilprogramm, dem sogenannten Makro, durch die Makrodefinition ein Makroname zugeordnet. Mit einem Makroaufruf wird dann an den Stellen, an denen das Unterprogramm einkopiert werden soll der Makroname genannt. |
| Unterprogrammtechnik | Bei der Unterprogrammtechnik wird auf ein seperates Teilprogramm im Hauptprogramm mehrfach zugegriffen (vgl. Abbildung 12b). Das Teilprogramm muss nur einmal im Code vorliegen und ist durch eine Sprungmarke (z.B. „UP“) gekennzeichnet. |
| Funktion und Prozedur | Der Unterschied zwischen diesen ist hierbei, dass eine Prozedur anders als eine Funktion keinen Rückgabewert besitzt. |
| Der Stack | Der Stack (dt. Stapel- oder Kellerspeicher) ist nach dem Prinzip Last In First Out aufgebaut. Das heißt, die Daten die zuletzt auf dem Stack gespeichert wurden, liegen an der “obersten” Position des Stapels. |
| Rekursion | Rekursion bedeutet, dass sich ein Unterprogramm selber aufruft. Diesen Aufruf nennt man auch Inkarnation. |
| Phasen der Übersetzung | 1. Phase: der Preprocessor (oder Precompiler) bereitet den Hochsprachenquelltext auf, indem er Direktiven (mit #) ausführt. 2. Phase: der Compiler übersetzt das C-Programm hello.i in ein Assemblerprogramm hello.s. 3. Phase: der Assembler übersetzt hello.s in Maschinensprache. Ergebnis ist das verschiebbare Objektprogramm hello.o 4. Phase: der Linker (oder Binder) fügt verschiedene Module (in Form von verschiebbaren Objektprogrammen) zu einem ausführbaren Objektprogramm zusammen, unter anderem indem offene externe Referenzen aufgelöst werden |
| Relocatable (verschiebbare) object files | Enthalten binären Code und Daten in einer Form, die mit anderen verschiebbaren Objekt-Files zu einem ausführbaren Objekt-File zusammengefügt werden können |
| Executable object files | Enthalten binären Code und Daten in einer Form, die direkt in den Speicher kopiert und ausgeführt werden können |
| Shared object files | Spezieller Typ von relocatable object files, welche in den Speicher geladen werden können und dynamisch mit anderen Objekt-Files zusammengeführt werden können |
| ELF header | ELF relocatable object files beginnt mit einer 16-Byte Sequenz mit Wortgröße, Byte-Ordering (Little Endian, Big Endian) und weiteren Informationen, die vom Binder (Linker) verarbeitet werden, z. B. Maschinentyp (ARM, IA32) |
| .text | Maschinencode des Programms |
| .data | Initialisierte globale Variablen |
| object dump | Da Objektdateien binär sind, sind sie für den Menschen nur schwer lesbar. Mithilfe eines object dump können diese lesbarer dargestellt werden. |
| Lader | Ein Lader ist ein Systemprogramm, das die Aufgabe hat, Objektprogramme in den Speicher zu laden und ggf. deren Ausführung anzustoßen. |
| Rechnerarchitektur | definiert durch ihren Befehlssatz und ihrem Architekturzustand |
| Architekturzustand | sind auf der Architekturebene sichtbare Daten, wie z.B. PC, 16 Register, Speicher |
| Mikroarchitektur | Die Hardware-Implementierung einer Architektur |
| Takt(-signal) | Eine Zeitbasis, [im Idealfall] in Form eines periodischen Rechtecksignals. Das Signal dient der Synchronisation der Komponenten im Rechnersystem und wird daher auch Systemtakt genannt. |
| Taktflanke | Beschreibt den Übergang zwischen den zwei Signalzuständen Low und High. Eine steigende Taktflanke ist also der Übergang von Low zu High und eine fallende Taktflanke der Übergang von High zu Low |
| Taktfrequenz | Je höher die Taktfrequenz desto schneller die Datenverarbeitung [im Normalfall]. |
| ISA | instruction set architecture (Menge der verfügbaren Instruktionen/Befehle) |
| SIMD | single instruction multiple data (vector processing), Beispiel NEON beim ARM® |
| VLIW | very long instruction word (static multi-issue), superscalar processors (dynamic multi-issue) |
| Befehlsholphase - instruction fetch | Der Prozessor ist dafür zuständig die Anweisung zu erteilen Befehle und Daten aus dem Speicher zu lesen. |
| Befehlsdekodierung - instruction decode | Nachdem der Befehl geholt ist und in einem Register steht, muss er dekodiert werden. |
| Befehlsausführung - instruction execute | Nun wird der Befehl ausgeführt Danach wird der nächste Befehl aus dem Speicher geholt. |
| Bitfelder eines Befehls | |
| Cond | Die ersten vier Bits stehen für die Bedingung im Befehl, daher cond[ition] (1110 AL always) |
| 00 Data Processing | ![]() |
| I | für Immediate, für Register |
| Opcode | Das Bitfeld Opcode gibt an was für eine Operation durchgeführt wird.(0000 AND, 0100 ADD, 0001 OR, 1010 CMP, 0010 SUB, 1101 MOV) |
| S | Ist S gesetzt so wird der Condition Code (Status Flags) geändert, ansonsten nicht. |
| Rn, Rd | Quellregister, Zielregister |
| 01 Single Data Transfer (LDR, STR) | ![]() |
| W | write-back bit - 0 no write back - 1 write address into base |
| L | load/store bit - 0 store to memory - 1 load from memory |
| 101 Branch and Branch with Link (B, BL) | ![]() |
| L und Offset | Das Bitfeld L gibt mit einem Bit an ob zusätzlich zum branch gelinkt wird und das 24 Bit große Offset gibt die relative Sprungadresse als Direktwert an. |
| Eintakt-Prozessor | ![]() |
| Eintakt-Implementierung | Jeder Befehl wird in einem Takt ausgeführt. |
| Harvard-Architektur | Befehlsspeicher und Datenspeicher sind getrennt |
| Kontrolleinheit | ![]() |
| Decoder | ![]() |
| Mehrtakt-Prozessor | ![]() |
| Kontrolleinheit | ![]() |
| Main FSM | ![]() |
| Pipeline-Prozessor | ![]() |
| Hazards | Hazards sind Abhängigkeiten zwischen Pipelinestufen. Diese treten auf wenn Instruktion vom Ergebnis einer vorhergehenden abhängt aber diese noch kein Ergebnis geliefert hat |
| Data Hazards | z. B. Neuer Wert von Register noch nicht in Registerfeld eingetragen. • Plane Wartezeiten von Anfang an ein • Füge nops zur Compile-Zeit ein • scheduling (Ablaufplanung) • Stelle Maschinencode zur Compile-Zeit um(scheduling / reordering) • Leite Daten zur Laufzeit schneller ¨über Abkurzungen weiter(bypassing / forwarding) • Halte Prozessor zur Laufzeit an bis Daten da sind(stalling) |
| Control Hazards | Unklar welche Instruktion als nächstes ausgeführt werden muss (tritt bei Verzweigungen auf). Umgang: flush |
| Vergleich der Prozessoren | |
| Grundkomponenten | • Datenpfad: verbindet funktionale Blöcke • Kontrollpfad: Steuersignale/Steuerwerk |
| Vor- und Nachteile | ![]() |
| Speicherhierarchie | ![]() |
| Kosten | Werden in Dollar/Bit oder Dollar/MByte angegeben. |
| Zugriffszeit | Durchschnittliche Zeit, um ein Wort aus dem Speicher zu lesen. |
| Zykluszeit | Minimale Zeit zwischen zwei Speicherzugriffen. Zykluszeit hängt von Zugriffszeit und Protokoll des Speicherbus ab. |
| Bandbreite | Maximale Menge an Daten, die pro Zeiteinheit übertragen werden kann, gemesen in Byte/s. |
| Zugriffsverfahren | Zugriff auf Speicher kann auf zwei Arten umgesetzt werden: wahlweise und seriell. |
| Wahlweiser Zugriff (Random Access) | Bedeutet, dass auf jede Speicherzelle gleich schnell in konstanter Zeit zugegriffen werden kann. Das wird beispielsweise in den Registern, im Cache und im Hauptspeicher (Arbeitsspeicher) verwendet. |
| Seriellen Zugrif | Die Zugriffszeit ist nicht konstant, sondern hängt von der Position der Daten im Speicher ab. Ein Beispiel hierfür ist ein Magnetbandspeicher, bei dem die Daten am Ende des Bandes deutlich länger zum Laden brauchen, als welche am Anfang. Weitere Speicher, die seriell zugreifen, sind z.B. Festplatten oder optische Platten. |
| Änderbarkeit | Die Änderbarkeit von Speicher lässt sich in drei Klassen einteilen: Read-Only und Read-Write und Read-Mostly. |
| Read-Only | Der Speicher kann nur gelesen werden, ein Überschreiben der gespeicherten Daten ist nicht möglich |
| Read-Write | Der Inhalt kann während des Betriebs sowohl geschrieben als auch gelesen werden. Der Großteil des Speichers in einem Rechnersystem ist Read-Write Speicher, z.B. Register, Cache, Hauptspeicher und Festplatten |
| Read-Mostly | Der Inhalt wird deutlich häufiger gelesen und nur sehr selten geschrieben. Beispielsweise wird EEPROM oder Flash-Speicher im BIOS verwendet. |
| Permanenz | Man kann Speicher in flüchtige und nicht-flüchtige Speicher unterteilen. |
| Flüchtigen Speichern | Bei flüchtigen Speichern muss konstant Strom anliegen, da ansonsten die Daten verloren gehen. Flüchtigen Speicher kann man weiterhin in statische und dynamische Speicher unterteilen. |
| Dynamischen Speicher | Bei dynamischen Speicher muss in regelmäßigen Abständen die Spannung erneuert werden, da die Speicherzelle über die Zeit ihre Spannung verliert. (Hauptspeicher) |
| Statischer Speicher | Das ist bei statischem Speicher nicht nötig, hier bleibt die Ladung solange bestehen, wie der Speicher mit Strom versorgt wird. (Register, Cache) |
| Nicht-flüchtige Speicher | Nicht-flüchtige Speicher haben dieses Problem nicht, ihr Inhalt bleibt bei Stromausfall erhalten. (SSDs, ROM und EEPROM) |
| Random Access Memory (RAM) | RAM besteht aus einem Array aus Speicherzellen, die über die Wordline und Bitline addressiert werden können. Dazu wird über den Row Decoder zuerst die passende Wordline ausgewählt. Nachdem die Sense Amplifiers die Signale der Daten verstärkt haben, wird aus dem Wort mithilfe des Column Decoders das gewünschte Bit zum Schreiben bzw. Lesen ausgewählt. |
| Statisches RAM (SRAM) | SRAM ist ein statischer Speicher, das heißt, Informationen werden solange in der Speicherzelle gehalten, wie Spannung angelegt ist. Das wird durch zwei Inverter realisiert, die zwei stabile Zustände haben, die die 1 und 0 repräsentieren. Auf Schaltkreisebene verwendet man 6 Transistoren, was eine einzelne Speicherzelle zu einer 6T-Zelle macht. |
| Dynamisches RAM (DRAM) | Dynamisches RAM (DRAM) verwendet einen Kondensator zur Speicherung von Informationen. Daher benötigt man zusätzlich nur einen Transistor für eine Speicherzelle. DRAM wird als 1T-Zelle bezeichnet. DRAM-Zellen verlieren allerdings mit der Zeit ihre Ladung, typischerweise entlädt sich der Kondensator in 10 bis 100 Millisekunden. Um Informationsverlust zu vermeiden muss daher in regelmäßigen Abständen der Inhalt erneuert werden. Diesen Prozess nennt man “Refresh-Zyklus”. Zudem wird bei jedem Lesezugriff auf eine Speicherzelle der Transistor entladen, das heißt das Speichersystem muss sicherstellen, dass direkt nach dem Lesen wieder der richtige Wert in der Speicherzelle steht. |
| Verteilung von SRAM und DRAM | Je nach Leistungsfähigkeit und Preis des Prozessors werden in einem Rechnersystem 10 bis 100 MB SRAM verbaut. Von DRAM wird dagegen 100 bis 1000 mal so viel verbaut, mehrere GB sind sogar bei kleinen Systemen wie dem Raspberry Pi Standard. |
| Eigenschaften von RAM-Chips | RAM-Chips werden durch die Anzahl der adressierbaren Plätze (Speicherstellen) und die Breite der Plätze in Bit bestimmt. |
| 32Kx8 SRAM | hat also 32000 Einträge, die jeweils 8 Bit groß sind. Daher benötigen wir einen Adresseingang mit 15 Bit, da 2 15 = 32768, einen Dateneingang Din und einen Datenausgang Dout, mit jeweils 8 Bit. Die Funktionalität des Chips kann erweitert werden durch drei weitere 1 Bit Eingänge. • Chip select wird verwendet, um den jeweiligen Chip auszuwählen. • Output enable muss auf 1 gesetzt werden, um Daten zu lesen • Write enable muss auf 1 gesetzt werden, um Daten zu schreiben |
| Matrixdarstellung | Der Vorteil dieser Darstellung ist, dass der Adresseingang weniger Bits benötigt, allerdings müssen jetzt jeweils die Zeile und Spalte nacheinander übertragen werden. Um das umzusetzen, verwendet man einen Zwischenspeicher, den Internal Row Buffer und teilt den Speicherzugriff in zwei Phasen auf, Row Address Strobe und Column Address Strobe. |
| Row Address Strobe | Beim Row Address Strobe wird zuerst die Adresse der jeweiligen Zeile über den Adresseingang übertragen. Die ausgewählte Zeile wird dann in den Internal row buffer kopiert. |
| Column Address Strobe | Der Column Address Strobe überträgt die Adresse der jeweiligen Spalte über den Adresseingang. Da mit dem Row Address Strobe bereits die korrekte Zeile ausgewählt wurde, muss nur noch die jeweilige Spalte aus dem Internal row buffer übertragen werden. |
| Verschaltung mehrere Speichermodule | Um mehrere Speicherchips miteinander zu verbinden wird ein Datum, wie beispielsweise ein Wort, auf mehrere Chips aufgeteilt. Wir können beispielsweise 8 8Mx8 DRAM-Chips verwenden, um ein 64 Bit Datum zu speichern. Der erste Chip speichert die ersten 8 Bits, der zweite die Bits 8 bis 15, und so weiter. Der Memory Controller baut dann aus den 8 Bits, die er von jedem Chip erhält, ein 64 Bit Wort zusammen |
| I/O Bridge | Die Aufgabe der I/O Bridge ist, die verschiedenen Busse im Rechnersystem zusammenzuführen. Dazu übernimmt sie eine Art Übersetzerfunktion zwischen den Bussen. |
| Lokalität | Wir wissen, dass bei einem Programm höchstwahrscheinlich auf nur einen sehr kleinen Teil des Adressraums und somit auch des Speichers zugegriffen wird. Das können wir ausnutzen und jeweils diesen Teil in den schnelleren Speichern der Speicherhierarchie speichern. Dadurch erreicht man geringere Zugriffszeiten, was in kürzerer Ausführungsdauer resultiert. |
| Lokalitätsprinzip | Eine Eigenschaft bei der Ausführung von Programmen ist, dass meistens nur auf einen relativ geringen Teil des Adressraumes zugriffen wird. |
| Räumliche Lokalität | Mit hoher Wahrscheinlichkeit wird auf Daten zugegriffen, die räumlich nah am aktuellen Datum stehen |
| Zeitliche Lokalität | Mit hoher Wahrscheinlichkeit wird zu einem späteren Zeitpunkt auf das selbe Datum zugegriffen. |
| Lokalität der Daten und Lokalität der Befehle | Man unterscheidet zwischen Lokalität der Daten und Lokalität der Befehle. Es kann also sein, dass die Befehle gute Lokalität haben, die Daten jedoch nicht, z.B. wenn die Befehle ausschließlich sequentiell ausgeführt werden, die Speicherzugriffe jedoch durcheinander geschehen. Befehle werden zudem meist nur gelesen, im Gegensatz zu Daten, bei denen auch Schreibzugriffe stattfinden. |
| Cache | Ein Cache ist ein kleiner und schneller Speicher, der für die Zwischenspeicherung von Daten aus einem größeren Speicher verwendet wird. Diesen Prozess nennt man caching. Allgemein fungiert ein schnellerer und kleinerer Speicher auf dem Level k als Cache für einen größeren und langsameren Speicher auf dem Level k + 1. In der Speicherhierarchie wird dieses Prinzip gleich mehrfach angewendet, die Register (L0) agieren als Cache für den L1 Cache, der wiederum Daten aus dem L2 Cache speichert, und so weiter, bis zu lokalen Festplattenspeicher, der Daten aus dem Netzwerk von Servern cached. |
| Cache Hit | Ein benötigtes Datum wird im Cache gefunden. Bei einem Cache Hit kann man das Datum direkt aus dem Cache laden. Da der Cache auf Level k schneller ist als der Speicher auf Level k + 1, kann das Datum schneller geladen werden und die Ausführungsdauer des Programms wird verringert. |
| Cache Miss | Ein benötigtes Datum wird nicht im Cache gefunden. Bei einem Cache Miss muss das Datum aus dem Speicher auf Level k + 1 geladen werden. Dabei wird das benötigte Datum in den Cache auf Level k geschrieben, was bei späteren Zugriffen vorteilhaft ist (siehe temporale Lokalität 9.4). Wenn der Cache bereits voll ist, dann muss ein gecacheder Block ersetzt werden. Dabei gibt es verschiedene Strategien, wie das geschehen kann. Nachdem der Block ersetzt wurde, kann auf das Datum direkt in Level k zugegriffen werden. |
| Zufallsersetzung | Ein zufälliger Cache Block wird ersetzt |
| Least-recently used (LRU) Ersetzung | Der Block, auf den am längsten nicht zugegriffen wurde, wird ersetzt |
| Cache Latenz | ![]() |
| Cachesystem eines modernen Prozessors | (Caches für Daten (d-cache) und Instruktionen (i-cache)) |
| Cachekohärenz | Da die Cores sich im L3 Cache Daten teilen, im L1 und L2 Cache allerdings nicht mehr, kann es sein, dass in diesen von mehreren Cores für das selbe Datum verschiedene Werte stehen. Um das zu verhindern, gibt es auf dem Chip verschiedene Einheiten, die dafür sorgen, dass die Daten kohärent bleiben, sodass alle Operationen korrekt ablaufen können. |
| Gleitkommazahlen | Besonderheiten: Die Null kann (durch die Normalisierung) nicht dargestellt werden. Unendliche Zahlen (oder keine Zahlen) sollen auch dargestellt werden |
| Leistungsbewertung | |
| Antwortzeit | Zeit, die real vergeht, bis eine gegebene Aufgabe vom Rechner gelöst wurde. |
| Ausführungszeit | Zeit, die die CPU bei der Lösung der Aufgabe benötigt ohne Ein-/Ausgabe und Zeit fur andere Aufgaben. |
| system CPU time | (CPU-Zeit fur Betriebssystemaufgaben) |
| user CPU time | (CPU-Zeit, die zur Ausfuhrung eines Programms benötigt wird) |
| Taktfrequenz | Leistungssteigerung wurde lange Zeit durch erh¨ohen der Taktfrequenz erreicht. Aktuell liegt der Prozessortakt vieler Mikroprozessoren bei 3.x GHz. Bedingt durch die Technologie (CMOS-Technologie) steigt der Leistungsumsatz der Prozessoren mit dem Takt |
| CPI Rate (Clock Cycles per Instruction) | Anzahl der Taktzyklen pro Instruktion |
| Ausfuhrungszeit eines Programms | |
| MIPS Rate | Million Instructions per Second |
| MFLOPS | Million Floating-point Operations per Second |
| Flynn | sehr grobe Klassifikation, viele Aspekte werden nicht erfaßt, wie Pipelining, Wortbreite, Verbindungsstrukturen, Speicherorganisation (lokale/globale Speicher, virtueller Speicher, Caches; Trennung von Programm- und Datenspeicher) |
| Instruction Stream | SI – Single Instruction MI – Multiple Instruction (mehrere Befehle zu einem Zeitpunkt) |
| Data Stream | SD – Single Data MD – Multiple Data |
| SISD | Von-Neumann-Rechner |
| SIMD | Feldrechner, Vektorrechner |
| MIMD | Multiprozessorsysteme |
| MISD | ? |
| SSE Einheiten | Streaming SIMD Extensions |
| Benchmarks | Benchmarks sind repräsentative Programme, die auf den zu vergleichenden Rechnern ausgeführt werden. Aber: In der Praxis wurden häufig Compiler oder auch Instruktionssätze so optimiert, dass gängige Benchmarks besonders schnell abliefen. |
| Reale Programme | Verwendung häufiger Anwendungen wie C-Compiler, Textprozessoren (LATEX), SPICE usw. |
| Kernels | Kurze kritische Auszuge aus realen Programmen, die isoliert zur Ausführung gebracht werden |
| Toy Benchmarks | Kleine, einfach zu schreibende Programme, die leicht zur Ausführung gebracht werden können (z. B. Quicksort) |
| Synthetische Benchmarks | Speziell entwickelte Programme, die die Leistungsfähigkeit einzelner Instruktionen oder einzelner Komponenten der zu vergleichenden CPUs aufdecken sollen (z. B. Dhrystone) |
| SPEC | Standard-Benchmark Suites |
| BogoMips | “unwissenschaftliches” Maß fur die CPU-Geschwindigkeit. Wert wird beim Booten ermittelt, um interne Warteschleifen zu kalibrieren |
| Definition eines Betriebssystems | Die Programme eines digitalen Rechensystems, die zusammen mit den Eigenschaften der Rechenanlage die Grundlage der möglichen Betriebsarten des digitalen Rechensystems bilden und insbesondere die Abwicklung von Programmen steuern und überwachen. |
| Aufgaben eines Betriebssystems | “Veredelung” der Hardware, Organisation und Steuerung des Ablauf, Langfristige Datenhaltung, Einhaltung von Qualitätsanforderungen |
| Schichtenmodell | ![]() |
| Betriebszustände | Prozessor kann sich in verschiedenen Betriebszuständen befinden. Betriebszustand teilweise definiert durch: Maschinenzustand und Privilegierungszustand. Hardware muss gestatten, Zustandswechsel per Software herbeizufuhren |
| Maschinenzustand | Prozessor kann aus- oder angeschaltet sein; Prozessor kann gerade im Urladevorgang sein; Zustände: stop, laden, tätig |
| Privilegierungszustand | Zustände definieren die Menge der jeweils erlaubten, ausfuhrbaren Maschinenbefehle. |
| Anwenderzustand | nicht privilegiert; nur eingeschränkter Befehlsvorrat gultig |
| Systemzustand | privilegiert; voller Befehlsvorrat gultig |
| Privilegiert | Befehl heißt privilegiert, wenn ausschließlich im Systemzustand ausfuhrbar |
| Unterbrechungen (Interrupt) | besseres Leistungsverhalten; Prozessor und Peripheriegeräte können zeitlich uberlappend arbeiten; Unterbrechungskonzept verbessert Synchronisation zwischen Prozessor und Gerät Signal, das den Befehlszyklus des Prozessors abändert bzw. unterbricht und den Befehlszyklus an spezifizierter Stelle fortführt. |
| Ereignisses | Unterbrechung wird durch Eintreten eines speziellen Ereignisses ausgelöst (Ereignisursache in Software oder Hardware, Programmbezogene Unterbrechungen, Systembezogene Unterbrechungen, Maschinenfehler) |
| Programmbezogene Unterbrechungen | Der in Ausfuhrung befindliche Befehl löst Unterbrechung aus; synchrone oder interne Unterbrechungen [arithmetische Fehler (bspw. Division durch Null, Überlauf), Adressenfehler (bspw. Zugriff auf nicht installierten Speicher, fehlende Rechte), falsche Befehle (bspw. privilegierter Befehl im Anwenderzustand), Spezialbefehle zum Einleiten von Systemaufrufen] |
| Systembezogene Unterbrechungen | Unterbrechungsursache liegt außerhalb der Prozessoraktivität. Unterbrechungsquelle ist ein relativ selbständig arbeitendes Gerät Unterbrechung trifft das zufällig laufende Programm ⇒ asynchrone oder externe Unterbrechung. Beispiele: Zeitgeberunterbrechungen, I/O-Unterbrechungen, Prozessoranrufe |
| Besondere Anwendung von Unterbrechungen | Spezialbefehle ⇒ Systemaufrufe (system calls) ermöglichen einen Wechsel von nieder- in höherprivilegierten Zustand. Dadurch wird u. a. ermöglicht, Benutzern Dienste des Betriebssystems verfügbar zu machen. Befehle dieser Art: SWI ⇒ Software (SW) Interrupt (I) bei ARM®-Architekturen, INT bei Intel x86, TRAP bei Motorola 680x0, SUPERVISOR CALL (SVC) bei IBM- und Siemens-Systemen |
Das Schichtenmodell funktioniert nach folgendem Prinzip. Eine untere Schicht erbringt so genannte Dienstleistungen für die nächst höhere Schicht und eine obere Schicht nutzt nur die Dienste, die von dernächst niedrigeren Schicht angeboten werden. Zwischen diesen Schichten sind eindeutige Schnittstellen definiert.
in Rechnersystem enthält mindestens vier Komponente. Einen Prozessor (Zentraleinheit oder CPU1 ), der Programme ausführt, einen Speicher, der Programme und Daten enthält (Speichersystem), einen Bus2 zum Transfer von Informationen zwischen dem Prozessor und dem Speicher und ein Ein-/Ausgabesystem zum Transfer von Informationen mit der Außenwelt.











RAM besteht aus einem Array aus Speicherzellen, die über die Wordline und Bitline addressiert werden können. Dazu wird über den Row Decoder zuerst die passende Wordline ausgewählt. Nachdem die Sense Amplifiers die Signale der Daten verstärkt haben, wird aus dem Wort mithilfe des Column Decoders das gewünschte Bit zum Schreiben bzw. Lesen ausgewählt.
SRAM ist ein statischer Speicher, das heißt, Informationen werden solange in der Speicherzelle gehalten, wie Spannung angelegt ist. Das wird durch zwei Inverter realisiert, die zwei stabile Zustände haben, die die 1 und 0 repräsentieren. Auf Schaltkreisebene verwendet man 6 Transistoren, was eine einzelne Speicherzelle zu einer 6T-Zelle macht.
Dynamisches RAM (DRAM) verwendet einen Kondensator zur Speicherung von Informationen. Daher benötigt man zusätzlich nur einen Transistor für eine Speicherzelle. DRAM wird als 1T-Zelle bezeichnet. DRAM-Zellen verlieren allerdings mit der Zeit ihre Ladung, typischerweise entlädt sich der Kondensator in 10 bis 100 Millisekunden. Um Informationsverlust zu vermeiden muss daher in regelmäßigen Abständen der Inhalt erneuert werden. Diesen Prozess nennt man “Refresh-Zyklus”. Zudem wird bei jedem Lesezugriff auf eine Speicherzelle der Transistor entladen, das heißt das Speichersystem muss sicherstellen, dass direkt nach dem Lesen wieder der richtige Wert in der Speicherzelle steht.
• Chip select wird verwendet, um den jeweiligen Chip auszuwählen.
Der Vorteil dieser Darstellung ist, dass der Adresseingang weniger Bits benötigt, allerdings müssen jetzt jeweils die Zeile und Spalte nacheinander übertragen werden. Um das umzusetzen, verwendet man einen Zwischenspeicher, den Internal Row Buffer und teilt den Speicherzugriff in zwei Phasen auf, Row Address Strobe und Column Address Strobe.
Beim Row Address Strobe wird zuerst die Adresse der jeweiligen Zeile über den Adresseingang übertragen. Die ausgewählte Zeile wird dann in den Internal row buffer kopiert.
Der Column Address Strobe überträgt die Adresse der jeweiligen Spalte über den Adresseingang. Da mit dem Row Address Strobe bereits die korrekte Zeile ausgewählt wurde, muss nur noch die jeweilige Spalte aus dem Internal row buffer übertragen werden.
Um mehrere Speicherchips miteinander zu verbinden wird ein Datum, wie beispielsweise ein Wort, auf mehrere Chips aufgeteilt. Wir können beispielsweise 8 8Mx8 DRAM-Chips verwenden, um ein 64 Bit Datum zu speichern. Der erste Chip speichert die ersten 8 Bits, der zweite die Bits 8 bis 15, und so weiter. Der Memory Controller baut dann aus den 8 Bits, die er von jedem Chip erhält, ein 64 Bit Wort zusammen
Die Aufgabe der I/O Bridge ist, die verschiedenen Busse im Rechnersystem zusammenzuführen. Dazu übernimmt sie eine Art Übersetzerfunktion zwischen den Bussen.
(Caches für Daten (d-cache) und Instruktionen (i-cache))
Besonderheiten: Die Null kann (durch die Normalisierung) nicht dargestellt werden. Unendliche Zahlen (oder keine Zahlen) sollen auch dargestellt werden
sehr grobe Klassifikation, viele Aspekte werden nicht erfaßt, wie Pipelining, Wortbreite, Verbindungsstrukturen, Speicherorganisation (lokale/globale Speicher, virtueller Speicher, Caches; Trennung von Programm- und Datenspeicher)