{"id":14479,"date":"2019-12-20T08:15:57","date_gmt":"2019-12-20T07:15:57","guid":{"rendered":"https:\/\/www.bernd-leitenberger.de\/blog\/?p=14479"},"modified":"2019-12-20T08:15:57","modified_gmt":"2019-12-20T07:15:57","slug":"bits-sparen-videoprozessor-und-controller","status":"publish","type":"post","link":"https:\/\/www.bernd-leitenberger.de\/blog\/2019\/12\/20\/bits-sparen-videoprozessor-und-controller\/","title":{"rendered":"Bits sparen, Videoprozessor und -controller"},"content":{"rendered":"<p>Heute wieder ein kleiner Wissenshappen, als Abfallprodukt meiner derzeitigen Besch&auml;ftigung mit alten Rechnern.<\/p>\n<p>Was ich in den Achtzigern nicht wusste, war, dass viele Grafikprozessoren der 8 Bit &Auml;ra Bits einsparten. Ein 8 Bitter hatte ja mit 64 KByte nicht viel Speicher und selbst mit nur 4 Bits pro Farbe konnte eine ansprechende Grafik dann schon einen gr&ouml;&szlig;eren Teil des Arbeitsspeichers beanspruchen. Bei meinem CPC war der Grafikspeicher 16 KByte gro&szlig;, also ein Viertel des Gesamtspeichers, was folgende Modi erm&ouml;glichte:<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vg06.met.vgwort.de\/na\/146a66426cf140338054a1e4f1cb7005\" width=\"1\" height=\"1\" alt=\"\"\/><!--more--><\/p>\n<ul>\n<li>640 x 200 in zwei Farben<\/li>\n<li>320 x 200 in vier Farben<\/li>\n<li>160 x 200 in 16 Farben, jeweils aus einer Palette von 27 frei ausw&auml;hlbar.<\/li>\n<\/ul>\n<p>Im Allgemeinen ist der Speicherbedarf berechenbar nach PixelX x PixelY * ld(Farben)\/8, wobei ld() der Logarithmus zur Basis 2 ist (1 bei zwei, 2 bei vier, 4 bei 16 Farben).<\/p>\n<p>Viele Grafikprozessoren dieser Zeit trennten aber Bitmap und Farben. Es gab einen &#8222;Bitmap&#8220;-Speicher, der das monochrome Pixelmuster aufnahm und dessen Gr&ouml;&szlig;e man mittels PixelY*PixelY\/8 berechnen konnte und einen Farbspeicher, wobei aber mehrere Pixel jeweils die gleiche Farbinformation hatten. &Uuml;blich als Modi waren:<\/p>\n<ul>\n<li>8 Pixels in X-Richtung nebeneinander (TMS 9918\/9 und Nachfolger)<\/li>\n<li>64 Pixels eines Zeichens (8&#215;8) (Spectrum, C64 im normalen Grafikmodus)<\/li>\n<li>Der C64 hatte noch eine Abwandlung bei dem synchron zum Auslesen der Grafikspeicher verschoben wurde, sodass aus dem Normalmodus der Modus des TMS 9918 wurde, der nat&uuml;rlich dann den achtfachen Speicherbedarf f&uuml;r den Farbspeicher hatte,<\/li>\n<\/ul>\n<p>Konkret hie&szlig; dies: in 8 bzw. 64 Bit sind nur zwei Farben erlaubt, aber in den n&auml;chsten 8 \/ 64 Bit wieder eine andere Kombination. Als ich das zum ersten Mal las, dachte ich mir \u201eda hat aber jemand viel Aufwand betrieben, um auch noch das letzte Bit herauszuquetschen\u201c. Aber beim Nachdenken ist die Idee genial. Es geht ja bei der Grafik meist um zwei Anwendungen. Das eine sind Spiele und das Zweite sind irgendwelche Diagramme entweder gesch&auml;ftliche oder Funktionsplotter. In Spielen hat man oft monochrome Muster oder feste Texturen wie W&auml;nde. Innerhalb eines kleinen Bereiches wechseln die Farben kaum. &Auml;hnlich sieht es bei Nutzgrafik aus, egal ob Tortendiagramme. Ballkendiagramme oder Funktionsplotter \u2013 wenn sie nicht schon, um die h&ouml;chste Aufl&ouml;sung f&uuml;r eine Hardcopy zu haben, monochrom sind, dann kommen auch dort in einem kleinen Bereich maximal zwei Farben vor. Probleme sind nur Spielfiguren, die sich bewegen. Der C64 und TMS 9918 hatten Sprites die vom Videoprozessor bewegt wurden, also konnte er auch die korrekte Farbinformation ausgeben. Beim Spectrum ohne diese F&auml;higkeit, aber mit einer noch gr&ouml;beren Farbaufl&ouml;sung scheint Pixelsalat, wo Hintergrundpixel dann abrupt ihre Farbe &auml;ndern, &uuml;blich gewesen sein und auch das Vermeiden dessen ziemlich aufwendig. Der Lohn. Man kann viel Speicher einsparen. Hier mal eine Berechnung f&uuml;r 320 x 200 Pixel und die g&auml;ngigen Farben (8 oder 32 Farben gehen nicht geradzahlig in ein Byte und erh&ouml;hen so den Aufwand beim Schreiben und Auslesen)<\/p>\n<table width=\"100%\" cellspacing=\"0\" cellpadding=\"4\">\n<colgroup>\n<col width=\"51*\" \/>\n<col width=\"51*\" \/>\n<col width=\"51*\" \/>\n<col width=\"51*\" \/>\n<col width=\"51*\" \/> <\/colgroup>\n<thead>\n<tr valign=\"TOP\">\n<th width=\"20%\">Aufl&ouml;sung<\/th>\n<th width=\"20%\">Farben<\/th>\n<th width=\"20%\">Jeder Punkt farbig<\/th>\n<th width=\"20%\">8 Punkte eine Farbe<\/th>\n<th width=\"20%\">64 Punkte eine Farbe<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr valign=\"TOP\">\n<td width=\"20%\">320 x 200<\/td>\n<td width=\"20%\">2<\/td>\n<td width=\"20%\">8 KByte<\/td>\n<td width=\"20%\">8 KByte<\/td>\n<td width=\"20%\">8 KByte<\/td>\n<\/tr>\n<tr valign=\"TOP\">\n<td width=\"20%\">320 x 200<\/td>\n<td width=\"20%\">4<\/td>\n<td width=\"20%\">16 KByte<\/td>\n<td width=\"20%\">12 KByte<\/td>\n<td width=\"20%\">8,5 KByte<\/td>\n<\/tr>\n<tr valign=\"TOP\">\n<td width=\"20%\">320 x 200<\/td>\n<td width=\"20%\">16<\/td>\n<td width=\"20%\">32 KByte<\/td>\n<td width=\"20%\">16 KByte<\/td>\n<td width=\"20%\">9 KByte<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Der Spareffekt wird um so gr&ouml;&szlig;er je mehr Farben man einsetzt, mehr als 16 Farben hatten die Heimcomputer nicht, doch wenn man damals schon 256 Farben gehabt h&auml;tte, man w&auml;re mit 24 bzw. 10 anstatt 64 KByte ausgekommen. F&uuml;r einen Computer also durchaus eine Option, vor allem wenn er Hardware animierte Spielfiguren hat, dann f&auml;llt das Einsparen von Bits meist nicht mal auf.<\/p>\n<p>Das Einsparen von Bits gab es auch noch sp&auml;ter. Beim Amiga nutzte man das RLL-Verfahren, das damals auch Festplattenkontroller nutzten. Anstatt jedes Pixel abzuspeichern, z&auml;hlte das Grafik-IC, wie viele Pixel in einer Zeile dieselbe Farbe hatten, und speicherte Farbwert und Anzahl ab. Bei den typischen Bildern mit weitestgehend monochromen Fl&auml;chen spart das enorm viel Speicher ein. Das Verfahren ist Basis des PCX-Bildstandards, das hei&szlig;t, man kann es heute noch leicht ausprobieren. Nur wenn jemand ein Pixel An-Pixel-Aus Muster hatte, belegte das mehr Speicher als normal. Allerdings klappte das beim Amiga trotz schnellerem 68000 Prozessor nur, weil der Graphic-Prozessor ein spezielles ASIC war, das diese Funktion in Hardware verankert hatte.<\/p>\n<h3 class=\"western\">Video Display Controller vs. Video Display Processor<\/h3>\n<p>F&uuml;r die Ausgabe des Bildschirminhalts gab es damals drei Methoden:<\/p>\n<ul>\n<li>Man l&ouml;st das mit eigener Hardware, entweder auf Basis von Schieberegistern und TTL Schaltungen wie bei der ersten Videokarte, der Dazzler, sp&auml;ter integrierte man dies in einen anwendungsspezifischen Baustein, eine ULA. So bei der Sinclair Reihe (ZX80\/81, Spectrum), Apple II oder dem Oric.<\/li>\n<li>Man setzt einen Video Display Controller (VDC) ein. So bei der CPC-Serie, dem IBM PC, Dragon, TRS-80<\/li>\n<li>Man setzt einen Video Display Processor (VDP) ein: So beim ti 99\/4A, MSX, Commodore 8 Bit Reihe<\/li>\n<\/ul>\n<p>Doch was sind die Unterschiede zwischen einem Video Display Controller und einem Prozessor?<\/p>\n<p>Ein Video Display Controller ist nur daf&uuml;r da die Anzeige zum Monitor zu schicken (f&uuml;r eine Ausgabe auf einen Fernseher musste man noch einen PAL-Modulator hinterherschalten). Er verarbeitet sie aber in keiner Weise.<\/p>\n<p>Ein Video Display Processor verwaltet einen Speicherbereich selbst und er kann die Daten auch beeinflussen. In den Achtzigern hatten VDP noch keine M&ouml;glichkeit die Grafik selbst zu zeichnen, das musste nach wie vor der Hauptprozessor machen. Aber die popul&auml;rsten VDP hatten die F&auml;higkeit Sprites zu definieren. Das waren \u201eSpielfiguren\u201c meistens maximal etwa 30 x 30 Pixel gro&szlig;, die vom VDP selbst bewegt wurden. Er &uuml;bernahm dabei eine wichtige Arbeit, n&auml;mlich das Restaurieren des Bildschirminhalts, nachdem ein Sprite einen Bereich &uuml;berquert hatte, das entlastete den Hauptprozessor und der konnte sogar ein anderes Programm abwickeln und wurde vom VDP &uuml;ber einen Interrupt unterbrochen, wenn zwei Sprites kollidierten oder eines den Bildschirmrand erreichte. F&uuml;r Spiele Entwickler, die ja oft kleine Figuren hatten, (man denke an Pac-Man oder einen Ball) war das eine tolle Eigenschaft. Die zweite wichtige Eigenschaft wurde weniger genutzt: da der Video Display Prozessor ein eigenes RAM hatte, konnte es unabh&auml;ngig vom Hauptspeicher sein und belegte so keinen Platz. Bei dem knappen Speicher eines 8 Bitters ein Vorteil. Das hatte aber auch den Nachteil, das nun die Haupt-CPU nicht nur den Zugriff auf den Speicher abstimmen musste (das war auch bei VDC n&ouml;tig, spezielles schnelles VRAM wurde damals in der Regel nicht verbaut) sondern nur &uuml;ber den VDP auf den Speicher zugreifen konnte, das hei&szlig;t ihm beim Lesen erst die Adresse mitteilen musste und dann warten, bis der Video Prozessor die Daten ausgelesen hatte. Bei der MSX-Serie war das so, was f&uuml;r deren langsamen Bildaufbau mitverantwortlich war. Beim C128 hatte der VDP ein gemeinsam genutztes RAM, das aber separat vom Hauptspeicher war. Das absolut kurioseste Konzept war, das des Ti 99, der nur Video-RAM hatte und der Hauptprozessor dort seine BASIC-Programme ablegte.<\/p>\n<p>Video Display Controller hatten andere Vorteile. Sie waren oft flexibler, was Grafikmodi betrag. Der Motorola 6845 wurde z.B. in der CPC-Serie verwendet (verschiedene Grafikmodi von 160 x 200 x 16 bis 640 x 200 x 2), der CGA (Textmodi bis 80 x 25, Grafik bis 320 x 200 x 4), Hercules Grafikkarte (nur monochrom bis 720 x 348) wie auch EGA (bis maximal 640 x 350 x 16) und VGA (640 x 480 x 16 aus 256, dort allerdings f&uuml;r mehr Farben von Custom-ICs unterst&uuml;tzt) und konnte bis zu 512 KB RAM adressieren.<\/p>\n<p>Eine 8-Bit-CPU alleine h&auml;tte die Grafikausgabe nicht geschafft: Selbst bei einer Grafik mit 320 x 200 Pixeln und 4 Farben (belegt 16 KBytes) h&auml;tte sie bei 25 Bildern\/s (PAL-Standard) 400 KByte pro Sekunde &uuml;bertragen m&uuml;ssen \u2013 das schafft sie nicht, wenn man bedenkt, dass man jedes Byte zuerst in die CPU laden, dann an einen Ausgabeport schreiben muss, dann den Adressz&auml;hler erh&ouml;hen und vergleichen muss (Zeilensprung \/ neues Bild). Gemacht hat dies soweit ich wei&szlig; nur die 6502 im VCS2600 System, das daher nur eine geringe Aufl&ouml;sung von 40 Pixeln pro Zeile bot (aber aufgrund des Schreibens \u201eon the fly\u201c konnte jede Zeile anders aussehen). Bei einer so reduzierten Aufl&ouml;sung ging das noch.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Heute wieder ein kleiner Wissenshappen, als Abfallprodukt meiner derzeitigen Besch&auml;ftigung mit alten Rechnern. Was ich in den Achtzigern nicht wusste, war, dass viele Grafikprozessoren der 8 Bit &Auml;ra Bits einsparten. Ein 8 Bitter hatte ja mit 64 KByte nicht viel Speicher und selbst mit nur 4 Bits pro Farbe konnte eine ansprechende Grafik dann schon [&hellip;]<\/p>\n","protected":false},"author":169,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[4441,4442,611,4444,4443],"class_list":["post-14479","post","type-post","status-publish","format-standard","hentry","category-computer","tag-bits","tag-grafik","tag-grafikdarstellung","tag-vdc","tag-vdp","entry"],"a3_pvc":{"activated":false,"total_views":610,"today_views":0},"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":18612,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/03\/28\/galileos-cds-teil-2\/","url_meta":{"origin":14479,"position":0},"title":"Galileos CDS \u2013 Teil 2","author":"Bernd Leitenberger","date":"28. M\u00e4rz 2026","format":false,"excerpt":"So, heute geht es weiter mit Teil 2 \u00fcber Galileos CDS, dieser Beitrag schlie\u00dft nahtlos an den ersten Beitrag von gestern an, wie man schon an der ersten Textzeile sieht. Nach der Einleitung im ersten Teil geht es heute weiter damit warum der RCA 1802 genutzt wurde und was seine\u2026","rel":"","context":"In &quot;Raumfahrt&quot;","block_context":{"text":"Raumfahrt","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/"},"img":{"alt_text":"","src":"https:\/\/vg07.met.vgwort.de\/na\/191e4b0728de42829cf656027b84dc82","width":350,"height":200},"classes":[]},{"id":18614,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/03\/29\/galileos-cds-teil-3\/","url_meta":{"origin":14479,"position":1},"title":"Galileos CDS &#8211; Teil 3","author":"Bernd Leitenberger","date":"29. M\u00e4rz 2026","format":false,"excerpt":"So nun zum dritten Teil \u00fcber das prim\u00e4re Computersystem von Galileo, das CDS. Nachdem sich die ersten beiden Teile nur mit dem RCA 1802, warum er gew\u00e4hlt wurde und seiner Architektur befassten geht es heute um das Computersystem selbst. Der Artikel schlie\u00dft so an seine beiden Vorg\u00e4nger gestern und vorgestern\u2026","rel":"","context":"In &quot;Raumfahrt&quot;","block_context":{"text":"Raumfahrt","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/"},"img":{"alt_text":"","src":"https:\/\/vg07.met.vgwort.de\/na\/6e7f572a246b4ac395de9c260733b707","width":350,"height":200},"classes":[]},{"id":18610,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/03\/27\/galileos-cds-teil-1\/","url_meta":{"origin":14479,"position":2},"title":"Galileos CDS &#8211; Teil 1","author":"Bernd Leitenberger","date":"27. M\u00e4rz 2026","format":false,"excerpt":"Hall\u00f6chen, es wird Zeit das ich mich mal wieder melde. Es gab zwei Gr\u00fcnde, warum ich mich so rar gemacht habe. Das eine ist das es gerade nicht so viel aktuelles gibt, au\u00dfer einem Update zu Artemis, zu dem ich vielleicht noch etwas schreibe. W\u00e4hrend Trump das ganze Programm nach\u2026","rel":"","context":"In &quot;Raumfahrt&quot;","block_context":{"text":"Raumfahrt","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/"},"img":{"alt_text":"","src":"https:\/\/vg07.met.vgwort.de\/na\/4fb81c7bafbd4d9d88b5695abdb33d29","width":350,"height":200},"classes":[]},{"id":18380,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/09\/03\/die-glorreichen-10-das-war-mal-weg-pc-hardware\/","url_meta":{"origin":14479,"position":3},"title":"Die glorreichen 10 &#8211; Das war mal weg: PC Hardware","author":"Bernd Leitenberger","date":"3. September 2025","format":false,"excerpt":"Ich will heute mal zwei ZDF Info \/ Neo Sendungen verbinden. Die glorreichen 10, die bei mir als Vorlage f\u00fcr einige Blogs dienten und die von mir noch mehr gesch\u00e4tzte Sendung \"Das war mal weg\", wo es um Dinge geht, die fr\u00fcher fast jeder hatte und die heute aus unserem\u2026","rel":"","context":"In &quot;Die Glorreichen 10&quot;","block_context":{"text":"Die Glorreichen 10","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/allgemein\/die-glorreichen-10\/"},"img":{"alt_text":"","src":"https:\/\/vg02.met.vgwort.de\/na\/876c61d389304d98aa0332fadd769381","width":350,"height":200},"classes":[]},{"id":18524,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/02\/06\/elon-musks-ki-rechenzentren-im-orbit-nochmals-nachgerechnet\/","url_meta":{"origin":14479,"position":4},"title":"Elon Musks KI-Rechenzentren im Orbit &#8211; nochmals nachgerechnet","author":"Bernd Leitenberger","date":"6. Februar 2026","format":false,"excerpt":"Ich habe mich ja schon mal mit diesem Thema besch\u00e4ftigt, in dem es vor allem um die Kosten und den wirtschaftlichen Unsinn ging - warum sollte ich ein Rechenzentrum in den Orbit bringen, wenn ich es billiger auf der Erde bauen kann und es auch gen\u00fcgend Gegenden gibt in denen\u2026","rel":"","context":"In &quot;Raumfahrt&quot;","block_context":{"text":"Raumfahrt","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/"},"img":{"alt_text":"","src":"https:\/\/vg06.met.vgwort.de\/na\/78014052fde04012a2be60bd108cd4bb","width":350,"height":200},"classes":[]},{"id":18504,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/01\/25\/die-glorreichen-10-satellitenrekorde\/","url_meta":{"origin":14479,"position":5},"title":"Die glorreichen 10 &#8211; Satellitenrekorde","author":"Bernd Leitenberger","date":"25. Januar 2026","format":false,"excerpt":"Ich denke, es wird mal wieder Zeit f\u00fcr etwas leichte Unterhaltung die etwas Wissen vermittelt. Also einen Blog \u00fcber 10 Rekorde bei Satelliten, die ihr vielleicht noch nicht kennt. Um eines klarzustellen - es geht nur um Satelliten. Raumsonden sind au\u00dfen vor, weil bei ihnen vieles anderes ist, so kann\u2026","rel":"","context":"In &quot;Die Glorreichen 10&quot;","block_context":{"text":"Die Glorreichen 10","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/allgemein\/die-glorreichen-10\/"},"img":{"alt_text":"","src":"\/img\/1kgsats.png","width":350,"height":200,"srcset":"\/img\/1kgsats.png 1x, \/img\/1kgsats.png 1.5x, \/img\/1kgsats.png 2x, \/img\/1kgsats.png 3x"},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts\/14479","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/users\/169"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/comments?post=14479"}],"version-history":[{"count":0,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts\/14479\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/media?parent=14479"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/categories?post=14479"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/tags?post=14479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}