Forum: PC Hard- und Software Verständnisfragen zur 8086 Architektur


von Jann (Gast)


Lesenswert?

Hallo,

ich bin dabei mich in die Intel 8086 Architektur einzuarbeiten, und 
dabei haben sich ein paar Fragen ergeben, bei denen ihr mir hoffentlich 
weiterhelfen könnt:

1) Wird durch die Hardware ein Interrupt ausgelöst, dann - soweit ich es 
verstehe - wird dies über einen Pin des Interrupt Controllers 
angestoßen. Dieser besitzt dazu mehrere Pins, einen pro Interrupt.
Der Interrupt Controller wiederum triggert den Interrupt Pin der CPU. 
Wie genau findet die CPU nun heraus welcher Interrupt (welche Nummer) 
ursprünglich gemeint war? Wie kommuniziert die CPU mit dem Interrupt 
Controller?

2) Alle Peripherie wird in den Adressraum gemappt. Bisher bin ich davon 
ausgegangen, dass über bspw. den Buscontroller entschieden wird, ob eine 
Adresse nun zu dem Arbeits-, Grafik- oder bspw. Speicher eines 
Keyboardcontrollers gehört. Doch scheinbar gibt es hier Unterschiede.
Was genau ist (bus- und CPU- seitig) der Unterschied zwischen dem 
Speicherzugriff mit MOV und den "Port"-Zugriffen mit IN und OUT? Können 
die beiden Arten synonym verwendet werden (kann ich IN/OUT durch MOV 
ersetzen?)?

3) Wie "startet" das BIOS, um bspw. auf Interrupts zu reagieren? Lädt es 
sich beim Start in den Arbeitsspeicher (per DMA?)?

4) Über BIOS Interrupt 16h kann auf die Tastatur zugegriffen werden. 
Könnt ihr mir kurz erklären wie das Lesen einer Taste funktioniert? Was 
passiert zwischen dem Interruptcall und dem Rücksprung? Wie kommt hier 
der Keyboardcontroller ins Spiel?

5) Das grundlegende DMA Prinzip habe ich verstanden. Aber was ist ein 
"DMA Channel"?

Danke für eure Mühe

von Wilhelm F. (Gast)


Lesenswert?

Jann schrieb:

> Wie genau findet die CPU nun heraus welcher Interrupt (welche Nummer)
> ursprünglich gemeint war? Wie kommuniziert die CPU mit dem Interrupt
> Controller?

So, wie Parallelbus orientierte externe Peripheriebausteine früher mit 
dem Prozessor kommunizierten.

Ein Interrupt-Controller nannte sich wohl mal 8259. Da dürfte das 
Datenblatt im Netz noch zu finden sein.

von (prx) A. K. (prx)


Lesenswert?

Jann schrieb:
> 1) Wie kommuniziert die CPU mit dem Interrupt
> Controller?

Ein spezieller Buszyklus liefert die Nummer des Vektors, der Interrupt 
Acknowledge.

> 2) Alle Peripherie wird in den Adressraum gemappt.

Genauer gesagt in 2 getrennte Adressräume. Der I/O-Adressraum (z.B. 
UART) ist vom Speicheradressraum (z.B. VGA) getrennt. Siehe 
entsprechendes Bussignal im minimum mode oder Busstatussignal im maximum 
mode.

> die beiden Arten synonym verwendet werden (kann ich IN/OUT durch MOV
> ersetzen?)?

Nein. Getrennte Adressräume.

> 3) Wie "startet" das BIOS, um bspw. auf Interrupts zu reagieren? Lädt es
> sich beim Start in den Arbeitsspeicher (per DMA?)?

Das BIOS wurde anno 8088 direkt aus dem EPROM ausgeführt. Heute wird es 
ins RAM kopiert, sobald das System soweit konfiguriert und getestet ist, 
dass man damit arbeiten kann.

Mit DMA hat das nichts zu tun. DMA ist für IO da, nicht um Daten im 
Speicher zu kopieren - das kann die CPU besser und schneller.

> 4) Über BIOS Interrupt 16h kann auf die Tastatur zugegriffen werden.
> Könnt ihr mir kurz erklären wie das Lesen einer Taste funktioniert?

In der Tastatur sitzt ein Mikrocontroller (anfangs wohl ein 8048), der 
vom PC seriell angesprochen wird. Seit AT findet die Kommunikation mit 
dem Tastaturcontroller in einem eigenen Mikrocontroller (8041) auf dem 
Mainboard statt, der später auch die PS/2 Maus und ein paar andere 
Kleinigkeiten regelt.

> 5) Das grundlegende DMA Prinzip habe ich verstanden. Aber was ist ein
> "DMA Channel"?

Ein DMA-Kanal ist per Request/Acknowledge-Leitung mit der entsprechenden 
IO-Karte verbunden. Hat man mehrere mit DMA arbeitende IOs benötigt man 
für jede davon einen Kanal.

von (prx) A. K. (prx)


Lesenswert?

Details beantwortet dir jederzeit das technische Handbuch des PC/XT, 
Schaltbilder und BIOS Sourcecode inklusive. Wobei ich davon ausgehe, 
dass du nicht (nur) den 8086 allgemein meinst, sondern im Kontext eines 
PCs: http://www.retroarchive.org/dos/docs/ibm5160techref.pdf

von Jann (Gast)


Lesenswert?

Danke für die Infos!

von Viktor N. (Gast)


Lesenswert?

Der 8086 interrupt controller was der 8259. Dessen Manual ist auf alle 
Faelle lesenswert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.