Forum: Mikrocontroller und Digitale Elektronik Kompatibilität zw. CPU - RAM - I/O - Bus


von Reiko (Gast)


Lesenswert?

Hier gleich ein weiterer "Beitrag" hinterher.

Da ich mit den ganz frühen Rechnern leider nichts am Hut habe/hatte
sind mir einige Verständnisfragen offengeblieben.
Falls es jemand beantworten möchte/kann, dann bitte ich um eine
ausführliche Erläuterung ... lasst euch damit ruhig Zeit, aber ich will
die Tatsachen auf jeden Fall bis ins kleineste Detail verstehen. Und
Litaratur darüber gibts so gut wie keine.


In einem Buch habe ich folgende Zitate gelesen:

Zitat 1:
========
" From a hardware designer’s perspective, the 8088
is purely an eight bit processor – it has only eight data lines and is
bus compatible with memory and I/O devices designed for eight bit
processors. "

=> daraus folgt also, dass ein RAM, I/O-geräte auf den Datenbus der
CPU (hier: 8088) zugeschnitten sein müssen.

Aus obigem Zitat stellt sich für mich die Frage nach der Richtigkeit:
Dort steht die CPU sei Buskompatibel mit RAM und I/O, welche für
8-Biter entwickelt wurden. Müßte es nicht umgekehrt heißen, dass
RAM+I/O buskompatibel mit der jeweiligen CPU sind?


Frage: Wie sieht es denn aus, wenn man die Hardware mixt? Konnte man
damals überhaupt die Hardware mixen? Schaut man sich die 8-,16-,32-Bit
CPUs an, so muß man feststellen, dass man zumindest bei letzteren
beiden 286er (16 Bit) und 386er (32-Bit) dieselben Geräte anschließen
konnte. Oder war dem nicht so?

Ich kann doch eine 16 Bit Karte auf einem 32 Bit System betreiben. Kann
man auch eine 32 Karte auf einem 16 Bit System laufen lassen? Falls ja,
dann würde sie doch nicht ganz ausgereizt werden, oder?
Seh ich das alle richtig?

Vor allem stelle ich mir das beim 8088 und 8086er bzw. zw. 8088/86 und
286er/386er schwierig vor.


Also, wonach wurde denn das Design bzw. die Ausrichtung einer
Hardwarekomponente (Erweiterungskarte oder Gerät) definiert, bzw. woran
erkenne ich denn, ob es ich um eine 8,16 oder 32 Bit Karte/Gerät
handelt, die ich mit kaufe bzw. damals gekauft habe?

Wenn man eine Lan-Karte kauft, dann kann man sie gleichfalls in einem
Pentium und einem 486er betreiben. Man achtet beim Kauf nicht auf den
Datenbus, auf den die Karte zugeschnitten ist, sondern auf die Bus
Buskompatibilität (ISA, PCI etc).

----------------------------------------------------------------------


Zitat 2:
========
" Since the 80x86 family busses are eight, 16, 32, or 64 bits wide,
most data accesses are also eight, 16, 32, or 64 bits. Although
it is possible to process 12 bit data with an 8088, most programmers
process 16 bits since the processor will fetch and manipulate 16 bits
anyway.
This is because the processor always fetches eight bits. To fetch 12
bits requires two eight bit memory operations. Since the processor
fetches 16 bits rather than 12, most programmers use all 16 bits.
In general,manipulating data which is eight, 16, 32, or 64 bits in
length is the most efficient. "


Dinge, die mich an diesem Zitat stören:
---------------------------------------

1) << it is possible to process 12 bit data with an 8088 >>

Ein 8088er kann immer nur 8 Bit auf einmal holen, dh also auch
Vielfache von 8. Wie soll ich mir das mit den 12 Bit vorstellen.
Gilt das nur für den 8088? Oder auch für den 8086er und später?

Ist für die 12 Bit ein spezieller Adress-Modus vorhanden etc?

Mal angenommen, der 8088er holt sich einfach 12Bit am Stück (also mit
2x 8 Bit-Zugriffen) und nicht 16, dann würde sich doch der Text
(speziel der erste Satz und der auf diese Stelle folgende) sich selbt
wiedersprechen!? Was ist nun richtig?



2)<< Since the processor fetches 16 bits rather than 12, most
programmers use all 16 bits >>

Gemeint ist doch an diese Stelle doch, dass es 2x 8-Bit-Zugriffe sind
oder? Wenn es so gemeint sein sollte und angenommen, ich will nur die
ersten 12 Bit manipulieren, dann ignoriere ich die übrigen 4 einfach
oder nicht? Das ist doch ein ganz normales vorgehen.
Somit hätte sich der Autor die Sache mit den 12 Bit sparen können, weil
es doch gar nicht geht. Anderenfalls widerspricht er sich doch selbst
???


Bin schon gespannt auf die Aufklärung ;-)

von ---- (Gast)


Lesenswert?

Zitat1:

> Müßte es nicht umgekehrt heißen, dass RAM+I/O buskompatibel mit der
jeweiligen CPU sind?
-> Du hast Recht - ich vermute, daß sich der Autor da nicht so viele
Gedanken gemacht hat.

Du verwechselt Prozessor(Adress-/Daten-)bus mit 'Peripherie'-Bus (wie
z.B. ISA, PCI usw.). -> Da kann man anbinden was man will, da das nix
mit dem AD-Bus des Prozessors zu tun hat.

Zitat2:

12 Bit werden mit 2x 8Bitzugriffen geholt und dann die oberen 4 Bit
ignoriert - genau wie du vermutest. Ja, der Autor hätte sich diese
Ausführlichkeit sparen können. Aber bedenke, damals waren
Speicherbausteine, die alle 16Bits nutzen (also 64k) noch sehr
teuer...

----, (QuadDash).

von Gerhard Gunzelmann (Gast)


Lesenswert?

Hallo reiko

wie kommt es, daß Du dich mit Museums-Stücken beschäftigst ?

Ergänzend zu Quaddash:Die Literatur ist wohl zu einer Zeit erstanden,
in der die Prozessoren noch in einer starken Entwicklungsphase waren.
Nach den 8-Bitter 8085 wurde der 16 Bitter 8086 entwickelt, der für
Steuerungsanwendungen auch als 8-Bitter (8088) angeboten wurde. Die
Weiterentwicklung 80188 wurde stark in Siemens SPS Anlagen verbaut.

Zum Zitat 2: hier ist vom 8086 die Rede, nicht vom 8088. Ein 8088 kann
keine 12 Bit daten lesen. Wenn eine Karte oder ein bauteil an den Bus
eines Prozessors angeschlossen wird, kann der datenbus der karte nur
maximal soviel Datenleitungen haben wie der prozessor. Umgekehrt ist es
nicht so dramatisch, wenn es weniger sind: Aber der prozessor bei der
12-Bit Karte hat dann 16Bit.

Gerhard

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.