Verständnisfragen zur 8086 Architektur

Gast #3128669
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
Gast #3128678
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.
#3128679
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.