Warum hat man die Hardware im Upper Memory Block eingeblendet?



  • Ich denke mal, das Problem ist, dass man Hardware nicht per se beliebig umkonfigurieren kann bzw. damals konnte. Die Grafikkarte hat halt nur auf 0xA0000+ gehorcht. Vielleicht war da teilweise was mit DIP-Schaltern machbar, aber sonst nichts.



  • Bashar schrieb:

    Ich denke mal, das Problem ist, dass man Hardware nicht per se beliebig umkonfigurieren kann bzw. damals konnte. Die Grafikkarte hat halt nur auf 0xA0000+ gehorcht. Vielleicht war da teilweise was mit DIP-Schaltern machbar, aber sonst nichts.

    Wenn dem so wäre, wie war es dann möglich, HW beliebig zusammenzustecken?

    Man konnte ja z.B. schon damals 2-4 ISA Netzwerkkarten in den Rechner stecken.
    Wenn die alle die gleiche Adresse wollen, dann hätte dies doch sicher zu einem Problem geführt.

    Außerdem konnte man schon bei der Soundkarte oder dem SCSI Controller die Adresse per Jumper einstellen. Z.b. 220h, anstatt 330h.



  • PS:

    Und Prinzipiell hat man das HW Adress Problem damit ja nur in den oberen Adressbereich verlagert.

    Es hätte also keinen unterschied gemacht, wenn man die Grafikkartenadresse unten bei z.B. 9h hingesetzt hätte.



  • 640kbyte Grenze schrieb:

    Wenn dem so wäre, wie war es dann möglich, HW beliebig zusammenzustecken?

    War es meines Wissens nicht.

    Man konnte ja z.B. schon damals 2-4 ISA Netzwerkkarten in den Rechner stecken.

    Gab es sowas 1980 schon?

    Es hätte also keinen unterschied gemacht, wenn man die Grafikkartenadresse unten bei z.B. 9h hingesetzt hätte

    Doch, warum hätte man das tun sollen? Der erste PC hatte 64kB RAM, warum sollte man da eine krumme Adresse nehmen statt etwas schön rundem am oberen Ende des Speichers, wo man eh so schnell nicht hinkommt?



  • Bashar schrieb:

    640kbyte Grenze schrieb:

    Wenn dem so wäre, wie war es dann möglich, HW beliebig zusammenzustecken?

    War es meines Wissens nicht.

    Genau dafür war aber der ISA Bus mit seinen vielen Slots da.

    Damit man beliebige Erweiterungskarten an den Rechner anschließen konnte.

    Man konnte ja z.B. schon damals 2-4 ISA Netzwerkkarten in den Rechner stecken.

    Gab es sowas 1980 schon?

    Der IBM PC kam ende Augst 1981 auf dem Markt und Erweiterungskarten folgten dann.

    Irgendwelche Netzwerkkarten folgten dann danach und das muss nicht gleich Ethernet gewesen sein.
    Kann auch Token Ring oder irgendwas propritäres sein.

    Ich habe jedenfalls eine ISA Ethernetkarte für meinen 486er.

    Es hätte also keinen unterschied gemacht, wenn man die Grafikkartenadresse unten bei z.B. 9h hingesetzt hätte

    Doch, warum hätte man das tun sollen? Der erste PC hatte 64kB RAM, warum sollte man da eine krumme Adresse nehmen statt etwas schön rundem am oberen Ende des Speichers, wo man eh so schnell nicht hinkommt?

    Weil man die 64Kb RAM auch oben einblenden hätte können, denn dadurch hätte man das RAM beliebig erweitern können, bis halt der Adressbus nicht mehr ausreicht.

    Außerdem, wie haben das denn die anderen Computer, wie z.B. der Amiga, Macintosh oder Atari ST gelöst?
    Auch diese konnte man mit HW erweitern und auch diese mußten sicher die Adressen der HW irgendwo einblenden.

    Aber so Probleme wie die 640 KB Grenze kenne ich nur vom x86 PC.



  • Hat geschichtliche Ursachen.
    IBM ist damals davon ausgegangen, das die 10 mal 64kB für Programme locker für lange Zeit ausreichten. Da bleiben in der Realität je nach DOS-Version weniger als 640kB, da ja noch Treiber und sonstiges da mit hinein kommt.

    Der Speicher von 640kB bis 1MB war für Grafikkarten Axxxx oder/und Bxxxx und die oberen ein oder zwei Blöcke fürs BIOS reserviert. Dazwischen fand man noch die Infos anderer Erweiterungen. Wenn da noch Platz war, konnte man bei den letzten DOSen den noch für Treiber und eventuell anderes nutzen.

    Das ohne Gewähr, ist schon länger her. 😉

    Diese Speicherverwaltung Geschichte war eine speziellen Geschichte des 8080 und seiner Nachkommen. Den 8080 gab es schon in den 70ern. Warum IBM den und keine der CPU der Mitbewerber bevorzugt hat. 😕

    Ist heute ja nur noch von historischem Interesse. Der 286 hielt sich ja noch bis auf ein paar spezielle Varianten dieser CPU daran. Ab dem 386er wurden auch andere Speicherverwaltungen möglich.

    MfG f.-th.



  • Hat darauf jemand eine Antwort:

    640kbyte Grenze schrieb:

    Außerdem, wie haben das denn die anderen Computer, wie z.B. der Amiga, Macintosh oder Atari ST gelöst?
    Auch diese konnte man mit HW erweitern und auch diese mußten sicher die Adressen der HW irgendwo einblenden.



  • 640kbyte Grenze schrieb:

    Bashar schrieb:

    640kbyte Grenze schrieb:

    Wenn dem so wäre, wie war es dann möglich, HW beliebig zusammenzustecken?

    War es meines Wissens nicht.

    Genau dafür war aber der ISA Bus mit seinen vielen Slots da.

    Damit man beliebige Erweiterungskarten an den Rechner anschließen konnte.

    Die Slots sind pure Hardware. Es war jede Karte selbst dafür verantwortlich, auf welche Adressen sie horcht. Wenn man es nicht konfigurieren konnte, hatte man halt Pech gehabt.

    Man konnte ja z.B. schon damals 2-4 ISA Netzwerkkarten in den Rechner stecken.

    Gab es sowas 1980 schon?

    Der IBM PC kam ende Augst 1981 auf dem Markt und Erweiterungskarten folgten dann.

    Ja klar, aber nicht "2-4 ISA Netzwerkkarten". Vielleicht eine.

    Ich habe jedenfalls eine ISA Ethernetkarte für meinen 486er.

    Hatten 1993 sicher viele.

    Es hätte also keinen unterschied gemacht, wenn man die Grafikkartenadresse unten bei z.B. 9h hingesetzt hätte

    Doch, warum hätte man das tun sollen? Der erste PC hatte 64kB RAM, warum sollte man da eine krumme Adresse nehmen statt etwas schön rundem am oberen Ende des Speichers, wo man eh so schnell nicht hinkommt?

    Weil man die 64Kb RAM auch oben einblenden hätte können, denn dadurch hätte man das RAM beliebig erweitern können, bis halt der Adressbus nicht mehr ausreicht.

    Ich verstehe die Antwort nicht. Weil man den RAM oben einblenden könnte, kann der Grafikspeicher bei 9 beginnen? Müsstest du erklären.



  • Bashar schrieb:

    Ich verstehe die Antwort nicht. Weil man den RAM oben einblenden könnte, kann der Grafikspeicher bei 9 beginnen? Müsstest du erklären.

    Es ist ja nur eine Adresse.

    Das ROM der Grafikkarte wird in einen Adressbereich eingeblendet.
    Wenn man ROM an eine bestimmte Adresse einblenden kann, dann geht das auch mit RAM.

    Wenn mans geschickt macht, dann könnte man das RAM auch virtuell aufteilen.
    Damit wären z.B. ein kleiner RAM Block von wenigen Bytes für Adresse 0 bis x möglich, dann ab x+1 das ROM und nach dem ROM+1 wieder der Rest des RAMs.

    Wenn man's geschickt macht, dann könnte man es auch so machen, dass die HW dem Rechner medlet wieviel ROM sie einblenden möchte und die HW bzw. das OS blendet das ROM dann an der passenden Stelle ein und legt das restliche RAM oben drüber.

    Ziel des ganzen ist also, den größten Teil des RAMs weiterhin linear ansprechen zu können.
    Und beim IBM PC hat man damals bei DOS einfach hierzu nichts gedacht, außer dass man in der Lebenszeit des IBM PC davon ausgegangen ist, dass man eh nie mehr als 10* 64 Kbyte benötigt, wo dann die Adressen für das HW ROM gelandet ist.



  • Ich weiß nicht, ob das damals ging, einfach irgendwas beliebig irgendwo "einzublenden". Technisch notwendig ist das nicht, und deshalb glaube ich nicht, dass der Ur-PC das schon konnte.

    Im einfachsten Fall hast du nämlich eine Karte, die liegt am Adressbus mit ein paar simplen Logikgattern, die eine Enable-Leitung einschalten, wenn eine zu dieser Karte passende Adresse anliegt.



  • Das Hauptproblem liegt wohl heute auch darin, dass wenn sich die Hardware im untersten MB komplett einblenden würde, das dann gar kein Platz im untersten Megabyte mehr für ein RealMode-OS verfügbar ist und mit dem Realmode es nicht möglich ist mehr als 1 MB+(64KB -1 Byte) zu adressieren. Es sind ja nicht nur 160 KB die an Platz benötigt werden, sondern je nach verwendeten Komponennten auch schon mal 1 GB an Speicher der von der Hardware über das Bios belegt wird und dann nicht als freier Ram benutzt werden kann.

    Ich vermute beim Atari und Amiga gab es noch nicht so viele verschiedene Hardwarekomponenten.

    Dirk



  • Ist schon Technik aus früher PC-Zeit.

    @ 640kbyte Grenze

    Programmiere auf deiner 486er Kiste mal die Grafikkarte direkt und in Farbe mit verschiedenen Farbtiefen und Bildschirmauflösungen, also ohne Interrupt oder Herstellertreiber. Wo du die Infos zur Adressierung her bekommst 😕 Bei einigen gängigen Grafikkarten konnte man die im Netz finden. Je nach Auslöung oder Modus war das nicht einheitlich umgesetzt. Deswegen waren die Grafiken damals nicht so schnell wie möglich, sondern es wurde vorrangig Wert auf Kompatibilität gesetzt. Okay, immer hatte das nicht gepasst. 😉

    Wenn du wirklich die alten Geschichten wissen willst, besorge dir die Infos zu den alten CPU und ihrer Adressierung. Wer hat sich den vor etwa 30 Jahren da in Rechnern fürs Volk versucht? 😉
    8080 von Intel: PC
    Z80 von Zilog: Amstrat
    9900 von TI: TI
    6800 von Motorola: Appel
    Das sind die, die mir spontan einfallen. Bis auf den TI, der schon 16 bit hatte, waren das damals 8bit. Auf 16 oder 32bit hat man die erst später gebracht.

    Ohne Gewähr, war zu bequem zur Quellensuche. Ob die Marken richtig geschrieben sind?
    Mitbewerber gab es, mit Ausnahme der TI CPU 😕 Die TI hatte aber damals einige spezielle Vorteile, die man zum Teil Jahre später auch z.B. bei Intel auch finden konnte.

    Viel Spass bei der Technik-Geschichte und ihrer Vermarktung 😉

    P.S.:Aktuelle Mainboards können zum Teil gar kein altes DOS mehr. Steht jedenfalls so in der Bedienungsanleitung. Da könnt ihr nur noch neuere Betriebssysteme darauf los lassen.



  • f.-th. schrieb:

    P.S.:Aktuelle Mainboards können zum Teil gar kein altes DOS mehr. Steht jedenfalls so in der Bedienungsanleitung. Da könnt ihr nur noch neuere Betriebssysteme darauf los lassen.

    Ich dachte jedes x86-Board mit (U)EFI bringt immer noch ein Kompatibilätsmode mit, wo ein 16Bit-Bios verwendet wird und womit auch ein DOS gebootet werden kann.

    Nit welchem Board geht das denn nicht mehr?

    Dirk



  • 640kbyte Grenze schrieb:

    Wenn man's geschickt macht, dann könnte man es auch so machen, dass die HW dem Rechner medlet wieviel ROM sie einblenden möchte und die HW bzw. das OS blendet das ROM dann an der passenden Stelle ein und legt das restliche RAM oben drüber.

    Ziel des ganzen ist also, den größten Teil des RAMs weiterhin linear ansprechen zu können.
    Und beim IBM PC hat man damals bei DOS einfach hierzu nichts gedacht, außer dass man in der Lebenszeit des IBM PC davon ausgegangen ist, dass man eh nie mehr als 10* 64 Kbyte benötigt, wo dann die Adressen für das HW ROM gelandet ist.

    Warum hätte man sich denn damals den Kopf darüber zerbrechen sollen? Ich schätze mal, für die damaligen Entwickler waren 640KB Lichtjahre vom denkbaren Speicherausbau entfernt. Heute macht sich auch kaum jemand darüber Gedanken, wie seine Programme mit 128GB Speicherausbau laufen.
    Ausserdem wurde das damalige Design wohl für 1MB Speicherausbau gemacht. Wenn man dann natürlich Jahre später doch mehr Speicher will und das Design das dann nicht hergibt (weil es keine Vorgabe war mehr herzugeben), kann man IMHO nicht sagen, dass die Entwickler damals nicht nachgedacht hätten. Ich entwickele auch meine Programme anhand der aktuellen Vorgaben und nicht für jede Eventualität der Zukunft. Letztendlich kostet Eventualitäten abzudecken auch Geld.



  • Morle schrieb:

    ... kann man IMHO nicht sagen, dass die Entwickler damals nicht nachgedacht hätten.

    Wie weit vorausschauend bei der Entwicklung nachgedacht wurde lässt sich andererseits ja auch schon am 2K-Bug gut erkennen. 😃

    Dirk



  • freecrac schrieb:

    Das Hauptproblem liegt wohl heute auch darin, dass wenn sich die Hardware im untersten MB komplett einblenden würde, das dann gar kein Platz im untersten Megabyte mehr für ein RealMode-OS verfügbar ist und mit dem Realmode es nicht möglich ist mehr als 1 MB+(64KB -1 Byte) zu adressieren. Es sind ja nicht nur 160 KB die an Platz benötigt werden, sondern je nach verwendeten Komponennten auch schon mal 1 GB an Speicher der von der Hardware über das Bios belegt wird und dann nicht als freier Ram benutzt werden kann.

    Unfug, Programm die im Real Mode unter einem Protected Mode OS laufen,
    landen seit dem Intel 386er im sogenannten Virtual 8086 Mode und für denn kann der Speicher überall liegen. Das Real Mode Programm merkt davon nichts, deswegen hat man den Virtual 8086 Mode mit dem 386er eingeführt.



  • Real Mode! schrieb:

    freecrac schrieb:

    Das Hauptproblem liegt wohl heute auch darin, dass wenn sich die Hardware im untersten MB komplett einblenden würde, das dann gar kein Platz im untersten Megabyte mehr für ein RealMode-OS verfügbar ist und mit dem Realmode es nicht möglich ist mehr als 1 MB+(64KB -1 Byte) zu adressieren. Es sind ja nicht nur 160 KB die an Platz benötigt werden, sondern je nach verwendeten Komponennten auch schon mal 1 GB an Speicher der von der Hardware über das Bios belegt wird und dann nicht als freier Ram benutzt werden kann.

    Unfug, Programm die im Real Mode unter einem Protected Mode OS laufen,
    landen seit dem Intel 386er im sogenannten Virtual 8086 Mode und für denn kann der Speicher überall liegen.

    Das Bios schaltet aber selber gar nicht in den V86-Mode und ist dafür auch gar nicht ausgelegt.

    Das Real Mode Programm merkt davon nichts, deswegen hat man den Virtual 8086 Mode mit dem 386er eingeführt.

    Vor dem Booten ist es aber irrelevant ob danach der Speicher auch anders verwendet werden kann und so weit sind wir ja noch gar nicht das wir booten können, wenn im untersten MB gar kein Bios mehr arbeiten kann.

    Dirk



  • UEFI hätte dann ja mit der Einführung zum 80386 schon dabei sein müssen.
    Ich meine für einen 80386 wäre so ein Mainboard damals unbezahlbar geworden und es wäre aus Mangel an Anwendungen dafür auch gar keine Nachfrage vorhanden.

    Dirk



  • freecrac schrieb:

    Das Bios schaltet aber selber gar nicht in den V86-Mode und ist dafür auch gar nicht ausgelegt.

    Das Bios wird in einem Protected Mode OS nicht mehr benötigt.

    Das Real Mode Programm merkt davon nichts, deswegen hat man den Virtual 8086 Mode mit dem 386er eingeführt.

    Vor dem Booten ist es aber irrelevant ob danach der Speicher auch anders verwendet werden kann und so weit sind wir ja noch gar nicht das wir booten können, wenn im untersten MB gar kein Bios mehr arbeiten kann.

    Dirk

    Das BIOS könnte man durchaus durch andere Firmware ersetzen die gleich im Protected Mode arbeitet. Die Zusatzhardware müßte dies natürlich eventuell berücklsichtigen.
    Selbstverständlich macht das Heutzutage aber keinen Sinn, weil es dieses Speicherproblem unter einem modernen OS im Protected Mode mit Pageing nicht mehr gibt und man das BIOS weiterhin aus Kompatibilitätsgründen (wenn auch emuliert bei UEFI) gerne hätte.



  • freecrac schrieb:

    UEFI hätte dann ja mit der Einführung zum 80386 schon dabei sein müssen.
    Ich meine für einen 80386 wäre so ein Mainboard damals unbezahlbar geworden und es wäre aus Mangel an Anwendungen dafür auch gar keine Nachfrage vorhanden.

    Dirk

    Als der 386er eingeführt wurde, war DOS unter x86 Rechnern das noch am meisten verbreitete Betriebssystem und Speicher knapp, was dazu führte, das Protected Mode Betriebssysteme wie OS/2 kaum Verbreitung fanden, weil diese eben selbst viel Speicher brauchten um ordentlich zu laufen.

    Und wenn der Speicher knapp ist, dann verwendet man soweiso viel lieber 16 Bit Programme anstatt 32 Bit Programme um auch hier Speicherplatz zu sparen.

    Zur Info:
    Der 80386 erblickte 1985 die Welt.

    OS/2 1.0 erschien 1987 als 16 Bit Version, aber schon als Protected Mode OS, denn der 286er konnte bereits Protected Mode, nur halt eben nicht per Paging, sondern per Segmentierung und den Virtuel 8086 Mode kannte der 286er auch nicht.

    Und 1 MB Speicher war 1987 noch sehr teuer.

    Die 32 Bit Version von OS/2 erschien erst 1991 und man sollte hier nen Rechner mit 8 MB nutzen, damit man auch für Programme noch ordentlich Speicher hat.
    Für Spiele war OS/2 darüberhinaus nicht brauchbar, weil es keinen direkten Zugriff auf die Grafikhardware zulies. Man hat an die Spieler einfach nicht gedacht.

    So etwas gab's erst mit Win95 und das lief mehr schlecht als Recht, womit das erste brauchbare Proteced Mode OS, das auch für Spieler geeignet war, erst Windows 2000 mit DirectX 7.x war.


Anmelden zum Antworten