EGA/VGA

Bearbeiten

Du schreibst in Amiga, dass bei EGA und VGA ein direkter Zugriff auf den Grafikspeicher durch den Prozessor möglich war. Meiner Erinnerung nach kann man das so nicht sagen. Zumindest war es so, dass man immer nur auf einen winzigen Teil jenes Speichers zugreifen konnte (die 1 oder 4 KB, wie man sie auch auf der CGA hatte und die noch im 1-MB-Adressraum oben eingeblendet waren), dass man dieses Fenster dann aber mühselig über Register in den Karten verschieben musste, wenn man woanders hin schreiben wollte. Und bei Waitstates kann ich mich bei den ersten VGA-Karten an die Größenordnung 20 erinnern. --PeterFrankfurt 03:20, 23. Okt. 2009 (CEST)Beantworten

Nach http://en.wikipedia.org/wiki/VGA#Addressing_details kann man den Speicher direkt durch ein 64kb großes Fenster ansprechen (liegt im vermurksten Adressraum des Realmode zwischen den 640k und der 1-Mb-Grenze). Das reicht bei 320x200 in 256 Farben gerade für eine Bildschirmseite, ansonsten muss man wohl Bankswitching oder wie es in diesem Fall heißt verwenden. Ich habe allerdings nie auf VGA programmiert, wenn Du irgendwelche Dokus hast, die etwas anderes sagen, lasse ich mich natürlich vom Gegenteil überzeugen. Zu den Waitstates: k.A., allerdings kann ich mir es nicht recht vorstellen, gerade Spiele und Grafikdemos wie z.B. Wing Commander, die einfach nur Daten in den Grafikspeicher geschaufelt haben (weil VGA im Gegemsatz zum Amiga auch praktisch nur die Daten anzeigen, aber nicht manipulieren konnte) waren sehr flott... Der Commodore 128 hatte allerdings so eine kaputte Architektur (VDC). An was für Effekte, die beim Amiga durch direkten Speicherzugriff durch den Prozessor möglich wären, hast Du denn gedacht? --Petuschki 03:54, 23. Okt. 2009 (CEST)Beantworten
Vorsicht, in dem en-VGA-Artikel steht ganz am Anfang, dass das so nur im Real Mode geht. Und den gibt es erst seit dem 386er. Ich spreche aber von den Jahren 1985 und 1986, also der Einführung des Amiga. Da war MS-DOS gerade auf Version 2.11 und konnte neuerdings Unterverzeichnisse! Der PC XT war gerade Standard geworden, und 1986 staunte man über die ersten ATs mit dem 286. Alles ohne Real Mode. Und VGAs gab es da auch noch nicht, höchstens EGA. Und damit konnte man wirklich keinen Amiga erschrecken. Erst einige Jahre später, mit dem 386 und 486, mit XVGA und so, da fingen die Probleme an, wo der Amiga mit seiner Entwicklungsgeschwindigkeit nicht mithalten konnte. Aber in der Anfangszeit, und von der ist im Artikel die Rede, war er den PCs weit, weit voraus. - Zur letzten Frage: Gerade das, was Du für VGA erwähnst, "einfach nur Daten in den Grafikspeicher schaufeln", das konnte der Amiga (in arg beschränktem Maße zwar, aber doch) eben schon, siehe die CDXL-Filme (oder wie die hießen) auf dem CDTV. Die waren zwar auch auf einen Amiga-Viertelschirm (halb x halb) begrenzt, aber PC-Videos der Zeit kamen über 50 Pixel Kantenlänge noch nicht hinaus, wegen der Waitstates. Wie gesagt, es gab da für wenige Jahre einen deutlichen Vorsprung, und der sollte im Artikel formuliert werden. - Schau Dir in den PC-Artikeln nur die Erscheinungsdaten an: VGA kam erst 87, und da erst mit dem LoRes 320x200. Usw. --PeterFrankfurt 01:39, 24. Okt. 2009 (CEST)Beantworten
Der Real Mode ist (etwas vereinfacht) der ursprüngliche (kranke) Adressmodus, den es ab dem 8086 gab (hieß ab Erscheinen des 286 so, war vorher wohleinfach namenlos). Siehe http://en.wikipedia.org/wiki/Real_mode ("80186 CPUs and earlier, back to the original 8086, have only one operational mode, which is equivalent to real mode in later chips) Du meinst den Protected Mode. Ich bezweifele überhaupt nicht,dass der Amiga dem typischen PC 1985 grafisch weit überlegen war, aber die Behauptung, bei diesen sei der Grafikspeicher nur über Register ansprechbar gewesen, ist einfach falsch, auch für EGA, wenn man z.B. http://www.freebasic.net/forum/viewtopic.php?t=4918 (das Erstbeste das ich gefunden habe) liest. Es ist halt,bedingt durch den Real Mode, immer nur ein Fenster von 64kB ohne Bankumschaltung ansprechbar, aber das ist meist kein grosses Performanceproblem. der von mir gelöschte Satz lautete
"was bei den damaligen PCs typischerweise noch nicht möglich war (es musste indirekt über Register und mit vielen Waitstates geschrieben werden), wodurch viele Grafikeffekte überhaupt erst möglich werden."
und hier ist das mit der indirekten Ansprache falsch, das Ausmaß der Waitstates nicht belegt und nicht erwähnt, welche Grafikeffekte sich beim Amiga dadurch ergeben, dass der Prozessor direkt auf den Speicher zugreifen kann und die bei anderen Rechnern nicht gehen. Das würde mich nämlich auch interessieren, ich habe einige Zeit auf dem Amiga Grafikprogrammierung in Assembler gemacht und für mich waren gerade die Sachen die starken Punkte, die der Chipsatz selber, ohne viel Prozessorhilfe, gemacht hat. Aber das sollte nicht der Hauptpunkt der Diskussion sein, mich stört bei dem Artikel einfach, das im Bemühen, den Amiga gut dastehen zu lassen, ungeprüfte oder sogar falsche Informationen verwendet werden.
Oh sorry, das mit Real Mode und Protected Mode habe ich durcheinanderbekommen. Und einen Beleg zu den 20 Waitstates sollte man auch auftreiben können. Ich muss da mal forschen. --PeterFrankfurt 03:26, 24. Okt. 2009 (CEST)Beantworten
Gerade lese ich im EGA-Artikel, dass das Video-RAM in vier "Planes" (Bereiche, nicht Bitplanes wie beim Amiga) unterteilt ist, zwischen denen man wahrscheinlich je nach Koordinate umschalten muss, wie ich das immer gehört habe. --PeterFrankfurt 03:32, 24. Okt. 2009 (CEST)Beantworten
Und zu Waitstates siehe hier: Wait states, ab der ersten Zwischenüberschrift wird es interessant. --PeterFrankfurt 03:40, 24. Okt. 2009 (CEST)Beantworten


Vielen Dank für die sehr informative Quelle zu den Waitstates. Zu den Planes: Ich bin mir nicht sicher, wie die Dinger genau funktionieren, welcher Pixel in welcher Plane liegt etc. Das System ist wohl auch ein wenig verdreht. Trotzdem würde ich nicht sagen, dass ein direkter Zugriff auf den Videospeicher nicht möglich ist, es geht ja, in einem 64kB-Fenster, und das ist ja für die meisten Anwendungen auch ausreichend. Mit den Waitstates habe ich die folgenden Probleme: einmal gibt es sie beim Amiga auch - so weit ich mich erinnere, ist der Bus zweigeteilt, der 68000er kann eh nur in jedem zweiten Zyklus darauf zugreifen, der Rest ist sozusagen "umsonst" für die Customchips (Zugriff ohne den Prozessor zu bremsen). Bei Auflösungen, die mehr Bandbreite erfordern als 4Bitplanes (lowres) bzw. 2 Bitplanes (Hires) reicht dieser Anteil an den Buszyklen nicht mehr aus, die Customchips klauen einen Teil der Buszyklen der CPU, der Prozessor muss warten (oder sich im FastRam vergnügen). Bei Hires mit 4bpl macht das schon eine Menge aus (Ich schaue mal, ob ich irgendwo noch genaue Zahlen finde). Das System ist natürlich viel eleganter als beim PC, gerade weil ein Teil der Soeicherzugriffe umsonst erfolgt, aber es ist halt ein quantitativer Unterschied, kein qualitativer, und auch keine Folge des Universal-Chiprams gegenüber dem spezialisierten Videospeicher des PC, sondern des schlechten Designs der Grafikkarten (es gab übrigens auch durchaus schnellere Karten, das war wohl von Hersteller zu Hersteller unterschiedlich, ist aber halt keine Folge der Gesamtarchitektur) im Vergleich zu dem sehr sehr cleveren des Amiga. Deshalb passt der von mir Satz gelöschte m.M. dort eben nicht hin. --Petuschki 00:16, 25. Okt. 2009 (CEST)Beantworten
Ja, das Chip-RAM ist auch nicht das schnellste, aber eines seiner Prinzipien war, dass man eben nicht unabsehbar lange warten musste, sondern abwechselnd mit Agnus immer dran kam. Lass das mal einen oder zwei Waitstates sein, aber eben niemals mehr als diese. Dagegen läuft das bei den alten PC-Grafiken eben nicht auf vier oder fünf, sondern auf 20 oder sogar noch mehr hinaus, das war halt so (ich habe bloß diesen unquantifizierten Beleg, aber so habe ich das damals gelesen), und das war schon ein prinzipieller Unterschied. Es hat Jahre gedauert, bis die sich aus diesem Loch befreit haben. --PeterFrankfurt 01:08, 25. Okt. 2009 (CEST)Beantworten


Das ist aber abhängig von Auflösung und Farbtiefe und geht von "Keine Wartezeiten bei Zugriff aufs Chipmem" bis hin zu "Zugriff nur in der Austastlücke möglich, wenn kein Bild dargestellt wird". Ich zitiere mal das Hardware Reference Manual: "If you specify four high-resolution bit-planes (640 pixels wide), bit-plane DMA needs all of the available memory time slots during the display time just to fetch the 40 data words for each line of the four bit-planes (40 4 = 160 time slots). This effectively locks out the 68000 (as well as the blitter or Copper) from any memory access during the display, except during horizontal and vertical blanking." und "If the display contains four or fewer low-resolution bit-planes, the 68000 can be granted altemate memory cycles (if it is ready to ask for the cycle and is the highest priority item at the time)." alternate memory access hier -> der Prozessor kann mit voller Geschwindigkeit aufs Chipmem zugreifen. PS: Interessante, aber schon ganz schön lange Diskussion für einen einzigen Satz :) Ich wollte eigentlich noch ein paar Dinge am Artikel verändern, aber das muss ich mir wohl noch mal überlegen - das droht ganz schön anstrengend zu werden :) --Petuschki 02:14, 25. Okt. 2009 (CEST)Beantworten
Da muss ich wohl passen, gegen das RKM werde ich nicht anstänkern. --PeterFrankfurt 02:21, 25. Okt. 2009 (CEST)Beantworten
Ach, als stänkern habe ich das jetzt wirklich nicht empfunden... Und man muss halt wirklich sagen, das System ist extrem clever und sauber designed, nur zaubern konnten sie halt damals auch nicht. --Petuschki 02:52, 25. Okt. 2009 (CEST)Beantworten