Computerhardware: BIOS: Grundbegriffe
Die vergleichsweise einfacheren Fakten über die Hauptplatine, Chipsatz, Steckplätze und Schnittstellen wurden im Buch „Computerhardware für Anfänger“ ausführlich erklärt. In diesem Kapitel geht es um weniger bekannte Details, die für die große Masse der Computernutzer sowohl zu schwierig als auch wenig interessant sind.
Zunächst eine kurze Erläuterung von Fachbegriffen.
BIOS: Als „Basic Input Output System“, abgekürzt „BIOS“ wird das Programm bezeichnet, mit dem der PC nach dem Einschalten startet.
BIOS-ROM: Festwertspeicher, in dem das Startprogramm der Hauptplatine (das BIOS) gespeichert ist. Der BIOS-ROM belegt die Speicheradressen ab FFFFFh abwärts.
CMOS: Eine Halbleitertechnologie mit äußerst geringem Energiebedarf.
CMOS-RAM: Ein statischer RAM, gefertigt in CMOS-Technologie, zur Speicherung von Datum, Uhrzeit und diversen Einstellungen. Steckt seit den 286er CPUs in jedem PC.
286er: PCs werden nach der Art des verwendeten Prozessors kategorisiert. PCs mit der Intel-CPU 8088 und 8086 werden als PC/XT bezeichnet, Nachfolger waren die „286er“ mit i80286, es folgten die „386er“ mit i80386 und die „486er“ mit i80486-CPU. Die fünfte Generation der x86-CPUs heißt „Pentium“. Es folgten Pentium MMX, 2, 3, 4, Pentium Duo, Core Duo und Core Quad. Aktuelle Intel-CPUs heißen „Core“ mit dem Zusatz i3, i5, i7 und i9. Ein angehängtes „X“ steht für Spitzenexemplare mit „extremer“ Leistung.
RTC: Real Time Clock: Eine Digitaluhr, die seit dem 286er auf jeder Hauptplatine eingebaut ist. Diese Uhr speichert jede Sekunde die aktuelle Uhrzeit in den ersten 10 Byte des CMOS-RAM, wo sie von jedem Programm abgerufen werden kann. Der RTC-Chip ist in stromsparender CMOS Technologie gefertigt.
BIOS-Batterie: Kleine Batterie, oft als Knopfzelle 2032, welche das CMOS - RAM und den RTC versorgt, während der PC ausgeschaltet ist. Hält je nach Nutzung des PCs drei bis 10 Jahre.
BIOS-Setup: Ein Programm, mit dem einige Zustände des PCs abgefragt werden können, z. B. CPU-Temperatur und Lüfterdrehzahl. Zweitens können die im CMOS-RAM gespeicherten Einstellungen abgefragt und verändert werden, z. B. die Boot-Sequenz, die Maximaltemperatur der CPU, bei der ein Alarm erfolgt, die Art der Lüfterregelung (temperaturabhängig oder ständig volle Drehzahl) und vieles mehr. Das BIOS-Setup-Programm ist im BIOS-ROM gespeichert und wird meist mit der Taste Del/Entf aufgerufen.
DMA: Direct M mory A cess (Direkter Speicherzugriff): Ein Controller, der Daten zwischen Arbeitsspeicher und Peripherie (vor allem von und zur Festplatte) schneller transportieren kann als es die CPU könnte. Die CPU gibt Quell- und Zieladresse sowie Bytezahl vor und kann sich anderen Berechnungen widmen, bis der DMA-Controller mit einem Interrupt das Ende der Übertragung meldet.
Interrupt: Meldung an die CPU über ein meist zeitkritisches Ereignis (z. B. die Meldung von der Tastatur, dass eine Taste gedrückt wurde), woraufhin die CPU die Abarbeitung einer anderen Befehlsfolge zeitweilig unterbricht, um auf das Ereignis zu reagieren.
BIOS
[Bearbeiten]Die BIOS-Adressen
[Bearbeiten]Im ersten IBM-PC arbeitete eine i8088-CPU von Intel, die den Speicher mit 20 Adressbits verwalten konnte. Das begrenzte den Speicher auf 1 MB, genauer: 220 = 1 048 576 Byte. Der adressierbare Speicherbereich reichte von Adresse 0 bis FFFFFHex (Falls Sie sich mit Hexadezimalzahlen nicht auskennen, lesen Sie den Anhang von „Software-Grundlagen“ oder den Wikipedia-Artikel „Hexadezimalsystem“). Im Jahr 1981 war 1 MB sehr viel und RAM war unglaublich teuer:
Die PCs wurden wahlweise mit 16 oder 64 kByte RAM ausgeliefert. Bill Gates meinte 1981, „640 kB sollten genug für jedermann sein“. Daher wurden die Adressbereiche recht freizügig vergeben.
Für den Arbeitsspeicher war der Adressbereich ab 0 bis 9FFFFh reserviert. Der darauffolgende Speicherbereich von A0000h bis AFFFFh ist für das Startprogramm einer Grafikkarte (das Grafik-BIOS) vorgesehen und der darauffolgende Bereich von B0000h bis BFFFFh ist für den BildWiederholSpeicher reserviert, in dem die Bildschirmausgabe zusammengestellt wird. Ab C0000h ist Platz für „BIOS-Erweiterungen“ und dahinter war Platz für Zusatzprogramme, z. B. ein „ROM-BASIC“.
Vom oberen Ende des adressierbaren Speichers, beginnend ab Adresse FFFFFh abwärts befindet sich das BIOS-Programm. Die CPU ist so entworfen, dass sie nach dem Einschalten auf Adresse FFFF0h ihren Startbefehl erwartet. Weil an dieser Stelle, 16 Byte vor dem Speicherende, kein Platz für ein Programm ist, befindet sich dort ein Sprungbefehl, der zum eigentlichen BIOS-Start führt.
Power On Self Test
[Bearbeiten]Das erste Programm, welches die CPU nach dem Einschalten ausführt, ist ein Selbsttest, der „Power On Self Test“, abgekürzt POST. Was sind die wichtigsten Etappen des POST?
Einige Komponenten der Hauptplatine, wie zum Beispiel die Interrupt-Controller, sind nach dem Einschalten der Betriebsspannung in einem nicht vorhersehbaren Zustand. Darum sperrt die CPU zuerst alle Interrupt-Eingänge, damit der POST ungestört ablaufen kann. Dann werden Reset-Signale und Initialisierungsbefehle an den Chipsatz und andere Komponenten gesendet. Der Tastaturcontroller wird getestet und ein Puffer für die Tastatureingaben wird eingerichtet.
Die CPU berechnet die Kontrollsumme des BIOS-ROM und vergleicht diese mit der gespeicherten Summe. Auch die Kontrollsumme des CMOS-RAM wird überprüft. Stimmt diese nicht, ist häufig die Batterie leer.
Von den ersten 64k des Speichers werden alle Bytes kurz getestet. Der restliche Speicher wird in 64k-Schritten überprüft, um festzustellen, wieviel RAM installiert ist. Der für den Speicher-Refresh zuständige erste DMA-Controller wird programmiert und der Refresh wird getestet.
Nun kann die CPU beginnen, den RAM mit der „Interrupt Vektor Tabelle“ (siehe nächste Seite) zu füllen. Der Typ der Grafikkarte wird ermittelt, der Video-Speicher und Grundfunktionen der Grafikkarte werden getestet. Wenn alles funktioniert, kann das BIOS ab jetzt Meldungen auf dem Bildschirm ausgeben.
Die Tastatur wird getestet, dabei leuchten die LEDs der Tastatur kurz auf.
Das BIOS führt weitere Tests und Initialisierungen durch, um festzustellen, welche Komponenten auf der Hauptplatine verbaut oder angesteckt sind: Gibt es serielle und parallele Schnittstellen und wie viele davon? Gibt es Diskettenlaufwerke, Festplatten oder optische Laufwerke? Die ermittelten Werte werden auf vordefinierten Speicherplätzen abgelegt, die später auch vom Betriebssystem abgefragt werden können.
IO Access
[Bearbeiten]Das BIOS „initialisiert“ Komponenten, schickt Reset-Signale, sperrt Interruptsignale, programmiert den DMA-Controller ... Wie kommuniziert eigentlich die CPU mit den Komponenten des PCs?
Wenn die CPU mit dem Arbeitsspeicher kommunizieren will, legt sie eine Adresse an ihre Adressleitungen und nach einer winzigen Wartezeit fühlt sich eine der Speicherzellen angesprochen und sendet ihre Daten an die CPU oder empfängt Daten von der CPU zum Schreiben.
Die CPU hat ein zweites, wenig bekanntes Adressierungssystem. Wenn die CPU eine Adresse auf ihre Adressleitungen ausgibt und gleichzeitig ein Signal an ihr Pin M / IO gibt, wird von „Memory Access“ zu „IO Access“ umgeschaltet. Über diesen „Input Output Access“ könnte man sogar auf einen weiteren Speicher (RAM oder ROM) zugreifen, und in einigen Spezialsteuerungen wird das so gemacht.
IBM hat bei der Entwicklung ihres ersten PCs entschieden, den IO-Adressbereich für den Anschluss von einigen hochintegrierten Chips zu nutzen. Für alle klassischen Komponenten ist ein Adressbereich festgelegt. Beispielsweise sendet die CPU Befehle an den ersten PIC (Programmable Interrupt Controller), indem sie ein Befehlsbyte an die IO-Adresse 20h schickt, danach werden Daten an die Adresse 21h geschickt. Danach holt die CPU von der Adresse 21h die Antwort des PIC, z. B. die Nummer des letzten Interrupts. Mehr dazu können Sie unter der folgenden Adresse nachlesen: http://www.lowlevel.eu/wiki/I/O_Ports
Interrupt Vektor Tabelle
[Bearbeiten]Nr. | Adresse | Ereignis |
---|---|---|
0 | 00 - 03 | CPU meldet (verbotene) Division durch Null |
1 | 04 - 07 | CPU hat Einzelschritt ausgeführt (Debugger-Testmodus) |
2 | 08 - 0B | NMI (Fehler in RAM-Baustein) |
3 | 0C - 0F | CPU hat Breakpoint erreicht (Debugger-Testmodus) |
4 | 10 - 13 | CPU meldet numerischen Überlauf |
5 | 14 - 17 | Print Screen (Bildschirminhalt ausdrucken) |
8 | 20 - 23 | IRQ0: Timer (alle 18,2 Sekunden vom RTC ausgelöst) |
9 | 24 - 27 | IRQ1: Tastatur (Taste wurde gedrückt oder losgelassen) |
A | 28 - 2B | IRQ2: Interrupt an einem der 8 Eingänge des zweiten PIC |
B | 2C - 2F | IRQ3: Serielle Schnittstelle 2 |
C | 30 - 33 | IRQ4: Serielle Schnittstelle 1 (Maus wurde bewegt) |
D | 34 - 37 | IRQ5: Soundkarte |
E | 38 - 3B | IRQ6: Diskette |
F | 3C - 3F | IRQ7: Drucker |
10 | 40 - 43 | BIOS: Video-Funktionen (Grafikkarte) |
20 | 80 - 83 | DOS: Programm beenden |
21 | 84 - 87 | DOS: Funktion aufrufen |
70 | 1C0 - 1C3 | IRQ08: RTC (Echtzeituhr) |
71 | 1C4 - 1C7 | IRQ09: VGA oder Netz |
72 | 1C8 - 1CB | IRQ10: PCI-Bus |
73 | 1CC - 1CF | IRQ11: PCI-Bus oder SCSI |
74 | 1D0 - 1D3 | IRQ12: PS/2 Maus |
75 | 1D4 - 1D7 | IRQ13: 80287 NMI (Mathematischer Co-Prozessor) |
76 | 1D8 - 1DB | IRQ14: Primärer Festplattencontroller |
77 | 1DC - 1DF | IRQ15: Sekundärer Festplattencontroller |
Die Hersteller von Hauptplatinen können wählen, von welcher Firma sie ein BIOS für eine neue Platine anpassen und liefern lassen: AMI, Award, Phoenix und IBM/Lenovo sind die bekanntesten.
Das BIOS enthält und nutzt zahlreiche Unterprogramme (Treiber) für den Zugriff auf Massenspeicher, Tastatur, Grafikkarte und viele andere. Die Startadressen der Treiber sind natürlich in jedem BIOS anders. Die Hersteller von Betriebssystemen benutzen die BIOS-Treiber ebenfalls (ersetzen diese aber nach dem Laden meist durch bessere Treiber). Damit jedes Betriebssystem mit jedem BIOS zusammenarbeiten kann, muss es eine einheitliche Tabelle für die Startadressen der BIOS-Treiber geben. Diese Interrupt Vektor Table wird vom BIOS ab Adresse 0 im Arbeitsspeicher angelegt.
In der IVT sind für jede Adresse vier Byte vorgesehen. In der Tabelle 1.2 sind einige Interrupts aufgeführt. Der Interrupt 2 ist ein Nicht-Maskierbarer I terrupt (der sich im Unterschied zu anderen nicht sperren lässt).
Der Interrupt 2 wird bei einem Speicherparitätsfehler ausgelöst. Die CPU setzt dann das Programm an der Sprungadresse fort, die auf den Speicherplätzen 08 bis 0Bh bereitgestellt ist.
Die Interrupts 1 und 3 werden von Programmierern benötigt, um Maschinenspracheprogramme schrittweise testen zu können. Interrupt 5 wird von der Taste „Druck“ ausgelöst. Auf den RAM-Adressen 14h bis 17h steht eine Sprungadresse zu einer Routine, welche den Bildschirminhalt direkt zum Drucker schickt. Windows ersetzt diese Adresse und speichert den Bildschirminhalt in der Zwischenablage. Und wenn Sie ein Screenshot-Tool installieren, ersetzt dieses die auf Windows zeigende Adresse durch eine andere, eigene.
Die zu den acht Unterbrechungsleitungen IRQ0 bis IRQ7 zugehörigen Sprungadressen, die vom ersten Interrupt-Controller überwacht werden, werden vom BIOS auf den Plätzen 20h bis 3Fh bereitgestellt. Seit den 286er CPUs ist ein zweiter Interrupt-Controller mit den IRQ8 bis IRQ15 dazugekommen, deren Adressen ab Interrupt 70h zu finden sind.
Die Interrupt Vektor Tabelle hat Platz für 256 Adressen von je 4 Byte, ist also 1024 Byte lang. Auf die IVT folgen 256 Byte „BIOS Data Area“. In diesem Speicherbereich hält das BIOS solche Informationen bereit wie Speichergröße, Hardwareausstattung, die Anzahl und Adressen von Schnittstellen und Controllern. Dadurch bleiben von den 640 KByte des konventionellen Speichers noch knapp 639 KB übrig.
Bei alten PCs mit ISA-Karten durften Interrupts nicht doppelt belegt werden, wofür mit dem Setzen von Jumpern auf der Karte gesorgt werden musste. Seit dem PCI-Bus dürfen sich mehrere Geräte einen Interrupt teilen (das wird „IRQ-Sharing“ genannt). Der PCI-Bus sucht sich aus den 15 IRQs vier freie aus, die mit INT_A, INT_B, INT_C und INT_D bezeichnet werden. Die PCI-Spezifikation empfiehlt den Mainboard-Herstellern die folgende Zuordnung zu den Steckplätzen:
INT_A | AGP, 1. und 5. PCI-Steckplatz |
INT_B | 2. und 6. PCI-Steckplatz |
INT_C | Onboard-Sound und 3. PCI-Steckplatz |
INT_D | Onboard-USB und 4. PCI-Steckplatz |
Prüfen Sie im Handbuch, ob Ihr Mainboard davon abweicht. Versuchen Sie die Steckkarten so auf die Slots zu verteilen, dass jede Karte einen anderen Interrupt bekommt, um Leistungsverluste zu vermeiden.
„PCI Express“ kommt ohne diese Einschränkungen aus. PCIe arbeitet ohne Unterbrechungsleitungen und verschickt stattdessen Datenpakete, die „Message-Signaled Interrupts“ genannt werden.