PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Konsolen-CPU (um 1980 herum) mit vielen Registern?


aths
2006-10-11, 17:03:54
Folgende Fragen sind rein aus Jux, ich will keine CPU bauen. Aber angenommen ich wäre 1977 oder 1978 so alt wie heute und hätte das Startkapital, eine Konsole zu entwickeln um den Atari 2600 verdrängen UND sich mindestens so lange zu halten – dann bräuchte ich dazu eine CPU.

- Der 6502 ist zu schwach, denke ich mal.

- Der Z80 zu teuern.


Kurz zu den Eckdaten vom 2600: Eine 6502-Version mit ca 1,15 MHz (etwa drei mal niedriger als der Pixeltakt – obwohl das Ding jedes Bild erneut aufbauen muss. Der "Framebuffer" hält nur eine halbe Bildschirmzeile vor.)

An Arbeitsspeicher sollte meine Konsole schon 256 Byte haben (statt 128 wie im 2600) – aber im Prinzip auch mehr nutzen können, um auf der Hardwarebasis ggf. später einen Homecomputer herausbringen zu können. Außerdem soll der Bildschirm-Speicher eine volle Zeile umfassen.


Die Grafik müsste eh von einem custom Chip erzeugt werden. Warum nicht auch die CPU selbst entwerfen? Mir schwebte etwa folgendes Desing vor.

- Akku besteht aus 2x 8 Bit. Nennen wir sie A0L (A Null Low) und A0H (A Null High.)

- Hilfs-Akku ebenfalls aus 2x 8 Bit, sagen wie A1L und A1H.

- Drei mathematische Grund-Operationen. Pro Takt entweder 16-Bit-ADD, oder 2x 8-Bit-ADD, oder 8-Bit-MAD:

16-Bit-ADD: A0H_A0L = A0H_A0L + A1H_A1L

2x 8-Bit-ADD: A0H = A0H + A1H, A0L = A0L + A1L.

8-Bit-MAD: A0H_A0L = A0L * A1L + A1H.

(Vielleicht sollte man auch noch ein 8-Bit-MUL vorsehen.)

Wahlweise sollte man das Ergebnis statt in den Akku auch gleich auf eine Speicherzelle schreiben können. Ist das durchaus realisierbar oder wäre das sehr aufwändig?

Nun dachte ich an ebenfalls zwei Basis-Register, jeweils 2x 8 Bit, ein Register fürs Schreiben, eins fürs Lesen. Die MOV-Befehle gibt es in drei Ausführungen, einmal normal MOV, einmal MOV + Inc(Basis-Adresse) und einmal MOV + Dec(Basis-Adresse.) So könnte man bequem hier lesen, da schreiben.

Zur Bequemlichkeit hätte ich dann gerne noch ein Zählregister, das man als einen 16-Bit-Zähler oder als zwei getrennte 8-Bit-Zähler nutzen kann. So käme man auf 10 Byte für Register. Wäre das für eine CPU in damaliger Zeit überhaupt praktikabel?

Edit: Natürlich braucht man noch einen Program Counter und ein Stack-Register. Das wären dann sogar 14 Byte an Register-Platz, nicht mitgezählt 1 oder 2 Byte für ein internes Register was beim Swap genutzt wird.

Gasthaus
2006-10-12, 02:32:14
Leider verstehe ich nur das wenigste.

Für mich waren schon immer die 68000er sehr interessant,gabs schon ab 1985.

Doch mit solch alten CPUs,ausgenommen NES mit custom 6502,habe ich wenig Erfahrung.Den C64 hatte ich nicht nur ein CBS ColecoVision mit Z80 ebenso SegaMasterSystem.

Wie wärs mit nem Amiga-Killer,vom Ram wars ja schon ordentlich doch der Sprite und Character(Background-Scrollebenen)Generator ware furchtbar,jedes MegaDrive-Game war dem Amiga technisch(Sprite/Character)überlegen.Einige Ausnahmen liefen jedoch mit Overscan(Vollbild)@50/60fps auf dem Amiga.

Achso,hast du ne Ahnung wie Rom-Cartridges ausgelesen werden?Bei fast allen Konsolen sind die Daten komprimiert und haben tatssächlich spürbare Ladezeiten.Ausgnommen Neo-Geo welches keine(merklichen)Ladezeiten aufweist.Ich vermute das hat den Vorteil eines komplett gleichzeitigen Zugriffs auf die maximalen 330Megabit Rom um zu streamen,denn 64Kilobyte V-Ram sind wirklich zu gering für diese Grafikpracht.

Ich weiss deine Idee basiert auf Einfachheit und Nachvollziebarkeit,doch ich hab soviel 68000er inklusive vieler Custom-Chips erlebt,das mich diese Geschichte brennend interessiert.Immerhin war dieser Prozessor ziemlich erfolgreich und in seiner Urform,Taktfrequenzanhebungen ausgenommen,weit verbreitet wie im Amiga,AtariST,MegaDrive,unzählige JAMMA-Platinen.

micki
2006-10-12, 09:10:04
das problem ist, zu der zeit hat die hardware so gut wie niemanden gejukt. natuerlich wollte man spaeter wissen was in der konsole steckt die man hat, aber das war kein kriterium fuer den kauf. da zaehlte eher die verbreitung, weil man dann spiele tauschen konnte.
jemand mit ner super konsole, die er aber als einziger in der stadt hat, hatte sicherlich kaum spass.

Tigerchen
2006-10-12, 14:55:31
Multiplikation könnte sich als ineffektiv herausstellen aths.
Bilde das lieber über Rotations/Schiebebefehle nach die beim Überlauf natürlich ein Bit im Flagregister setzen.

Interessant wäre auch ein 1 Byte + 1 Byte Opcode Schleifenbefehl:
Loop: LD B,#FF
(Diverse Operationen)
DJNZ Loop (Do Jump Non Zero)
Den hab ich immer gern genutzt beim Z80.

aths
2006-10-13, 12:07:19
[COLOR="#000099"]
Multiplikation könnte sich als ineffektiv herausstellen aths.
Bilde das lieber über Rotations/Schiebebefehle nach die beim Überlauf natürlich ein Bit im Flagregister setzen."Russische Multiplikation" kostet unvorhersehbar viele Takte. Ein MUL in einem Takt käme der Programmierung auf einer Konsole, dessen CPU unter oder nur knapp am Pixeltakt arbeitet, entgegen.






das problem ist, zu der zeit hat die hardware so gut wie niemanden gejukt. natuerlich wollte man spaeter wissen was in der konsole steckt die man hat, aber das war kein kriterium fuer den kauf. da zaehlte eher die verbreitung, weil man dann spiele tauschen konnte.
jemand mit ner super konsole, die er aber als einziger in der stadt hat, hatte sicherlich kaum spass.Ja. Ich überlege, wie eine Konsole aussehen müsste, damit man mit ihr

- eine große Bandbreite Spiele ermöglicht, über Text-Adventures, simple Rollenspiele, bis zu Autorennspielen (die besser aussehen als Pole Position.) Nicht zu vergessen die obligatorischen Scroller und Spiele mit "Bild-für-Bild"-Kniffelaufgaben.

- eine Basis als kompatiblen Homecomputer hat. Der Homecomputer sollte mehr Speicher und ROM haben, aber problemlos diese Konsolenspiele abspielen können. Das heißt aber auch, dass ich trotz nur 256 Byte RAM in der Konsole nicht einfach den Stack-Zeiger auf 8 Bit stutzen kann.

- eine preiswert herzustellende Architektur hat, die meinetwegen schwierig zu programmieren ist, aber dann auch Grafik ermöglicht die man als Verkaufsargument nutzen kann. Was aus dem Atari 2600 rausgeholt wurde, ist für mich unfassbar. Würde man noch einige nervige Begrenzungen wegnehmen, müsste man von guten Entwicklern, die einige Jahre Erfahrung mit der Hardware haben, aber noch mal deutlich bessere Grafik bekommen.






Leider verstehe ich nur das wenigste.

Für mich waren schon immer die 68000er sehr interessant,gabs schon ab 1985.Der 68000 ist viel zu teuer und zu fortschrittlich für meine Überlegungen.

Ich hab schon überlegt ob man als CPU einen Z80 und als "GPU" einen 6502 nutzen kann. Aber das wäre sehr, sehr hässlich zu programmieren.



Wie wärs mit nem Amiga-Killer,vom Ram wars ja schon ordentlich doch der Sprite und Character(Background-Scrollebenen)Generator ware furchtbar,jedes MegaDrive-Game war dem Amiga technisch(Sprite/Character)überlegen.Einige Ausnahmen liefen jedoch mit Overscan(Vollbild)@50/60fps auf dem Amiga.Als Amiga-Killer hätte ich bevor der Amiga hochgekommen wäre versucht, einen etwas einfacheren aber umso preiswerteten Homecomputer mit 256 kiB RAM in den Markt zu drücken. Vermutlich mit Graka mit wahnsinnigen 128 kiB eigenem Speicher, oder nur mit 64 kiB, das müsste man sich noch mal durchdenken. Aus der Retroperspektive ist mein Gerede natürlich sehr einfach ...

Mit 64 kiB wäre im s/w-Modus immerhin eine Highres-Auflösung von 768x576 möglich. Mit 16 Farben hätte man noch 384x288 – deutlich mehr als das PC-typische 320x200. So eine Graka von mir böte auf jeden Fall flexible Darstellungen, so dass man auch 384x144 oder 192x288 mit jeweils 8-Bit-Farbe realisieren könnte. Mindestens bis 288 Zeilen auch einen Doublescan-Modus, der jede Zeile zwei mal zeichnet, damit das Bild nicht so streifig wirkt. Doch ich lenke schon ab – es geht mir erst mal um eine Primitiv-Konsole anno 1979.

Achso,hast du ne Ahnung wie Rom-Cartridges ausgelesen werden?Bei fast allen Konsolen sind die Daten komprimiert und haben tatssächlich spürbare Ladezeiten.Ausgnommen Neo-Geo welches keine(merklichen)Ladezeiten aufweist.Ich vermute das hat den Vorteil eines komplett gleichzeitigen Zugriffs auf die maximalen 330Megabit Rom um zu streamen,denn 64Kilobyte V-Ram sind wirklich zu gering für diese Grafikpracht.Das weiß ich leider nicht. Aber es wäre denkbar, dass die Grafikunit separaten ROM-Zugriff hat.

Ich weiss deine Idee basiert auf Einfachheit und Nachvollziebarkeit,doch ich hab soviel 68000er inklusive vieler Custom-Chips erlebt,das mich diese Geschichte brennend interessiert.Immerhin war dieser Prozessor ziemlich erfolgreich und in seiner Urform,Taktfrequenzanhebungen ausgenommen,weit verbreitet wie im Amiga,AtariST,MegaDrive,unzählige JAMMA-Platinen.Der 68000 kann mit 32-Bit-Software umgehen und ist eine für meine Zwecke viel zu fortschrittliche CPU.

micki
2006-10-13, 12:59:58
Ja. Ich überlege, wie eine Konsole aussehen müsste, damit man mit ihr

- eine große Bandbreite Spiele ermöglicht, über Text-Adventures, simple Rollenspiele, bis zu Autorennspielen (die besser aussehen als Pole Position.) Nicht zu vergessen die obligatorischen Scroller und Spiele mit "Bild-für-Bild"-Kniffelaufgaben.

- eine Basis als kompatiblen Homecomputer hat. Der Homecomputer sollte mehr Speicher und ROM haben, aber problemlos diese Konsolenspiele abspielen können. Das heißt aber auch, dass ich trotz nur 256 Byte RAM in der Konsole nicht einfach den Stack-Zeiger auf 8 Bit stutzen kann.

- eine preiswert herzustellende Architektur hat, die meinetwegen schwierig zu programmieren ist, aber dann auch Grafik ermöglicht die man als Verkaufsargument nutzen kann. Was aus dem Atari 2600 rausgeholt wurde, ist für mich unfassbar. Würde man noch einige nervige Begrenzungen wegnehmen, müsste man von guten Entwicklern, die einige Jahre Erfahrung mit der Hardware haben, aber noch mal deutlich bessere Grafik bekommen.

welche vorteile der gegenwart willst du denn nutzen um es besser zu machen als die chip-bauer damals?
ich meine, fuer alles was die eingebaut bzw nicht eingebaut haben, gab es sicherlich beweggruende, wenn wir nun also eine cpu bauen wuerden, fuer damals, muesten wir im resultat so ziemlich das selbe bekommen, falls wir nicht irgendwelche vorteile der gegenwart nutzen.

kurz. ich steh auf dem schlauch.

ooAlbert
2006-10-13, 14:13:46
öhm, nur mal so, warum soll ein Z80 zu teuer sein? zumal der die beste leistung im angestrebten segment hat.

Letztendlich müßte man das eh etwas globaler sehen beim konzeptionieren, modular heißt das zauberwort und nicht neuerfinden was schon existiert ;) der preis regelt sich ja eh über die masse...

Tigerchen
2006-10-13, 19:02:52
"Russische Multiplikation" kostet unvorhersehbar viele Takte. Ein MUL in einem Takt käme der Programmierung auf einer Konsole, dessen CPU unter oder nur knapp am Pixeltakt arbeitet, entgegen.


Hmm. Bei Mul denk ich immer daran wie ineffektiv da selbst ein fortschrittlicher 8086 war. Der einzige 8 Bit Homecomputerprozessor der das konnte war der 6809E von Motorola. Hab aber keine Ahnung wie da die Effizienz war.

aths
2006-10-15, 15:03:14
öhm, nur mal so, warum soll ein Z80 zu teuer sein? zumal der die beste leistung im angestrebten segment hat.

Letztendlich müßte man das eh etwas globaler sehen beim konzeptionieren, modular heißt das zauberwort und nicht neuerfinden was schon existiert ;) der preis regelt sich ja eh über die masse...Der Z80 ist gut, keine Frage. Er kann allerdings kein MUL. Meine Idee mit der Spezial-CPU wäre, Rechenleistung zu gewinnen auch wenn die Programmierung umständlicher würde. Allerdings wäre die gewünschte Rechenleistung wohl nur mittels einer Pipeline realisierbar und dann hat man wieder neue Probleme am Hals.

Gast Acorn
2006-10-15, 19:42:24
- Der 6502 ist zu schwach, denke ich mal.

- Der Z80 zu teuer.

Was viele nicht wissen, der 6502 übertrug pro Flanke ein Byte vom Speicher, anstatt nur einmal pro Takt wie beim Z80. Der 6502 braucht 2-7 Takte pro Befehl, der Z80 4-28 Takte pro Befehl.

Anders ausgedrückt ein 1Mhz 6502 ist etwa genauso schnell wie ein Z80 mit 4Mhz.

Tigerchen
2006-10-16, 15:43:19
- Der 6502 ist zu schwach, denke ich mal.

- Der Z80 zu teuer.

Was viele nicht wissen, der 6502 übertrug pro Flanke ein Byte vom Speicher, anstatt nur einmal pro Takt wie beim Z80. Der 6502 braucht 2-7 Takte pro Befehl, der Z80 4-28 Takte pro Befehl.

Anders ausgedrückt ein 1Mhz 6502 ist etwa genauso schnell wie ein Z80 mit 4Mhz.

Aber der 6502 hatte auch nur ein richtiges Register von 8 Bit Breite. Der Z-80 gleich 7 Stück die auch noch zu 16-Bitregistern zusammengeschaltet werden konnten. Da ließ sich schon mehr rausholen wenn man sich anstrengte. Das Locomotive-Basic des Schneider CPC war erheblich flotter als das Commodore Basic. Und beide wurden natürlich in Assembler programmiert.

Gast
2006-10-16, 15:53:32
welche vorteile der gegenwart willst du denn nutzen um es besser zu machen als die chip-bauer damals?
ich meine, fuer alles was die eingebaut bzw nicht eingebaut haben, gab es sicherlich beweggruende, wenn wir nun also eine cpu bauen wuerden, fuer damals, muesten wir im resultat so ziemlich das selbe bekommen, falls wir nicht irgendwelche vorteile der gegenwart nutzen.

kurz. ich steh auf dem schlauch.

Zumindest die Algorithmen und Layout-Tools wurden doch schon verbessert seither, oder? Würde das nicht in evtl. einem geringerem Transistorcount resultieren?

aths
2006-10-16, 16:07:01
welche vorteile der gegenwart willst du denn nutzen um es besser zu machen als die chip-bauer damals?
ich meine, fuer alles was die eingebaut bzw nicht eingebaut haben, gab es sicherlich beweggruende, wenn wir nun also eine cpu bauen wuerden, fuer damals, muesten wir im resultat so ziemlich das selbe bekommen, falls wir nicht irgendwelche vorteile der gegenwart nutzen.

kurz. ich steh auf dem schlauch.Ok. Die Playsi 2 bietet viel Rechenleistung, aber opfert dafür einfache Programmierbarkeit. Die CPU die mir vorschwebte, böte (für damals) viel Rechenleistung aber keine besonders gute Sprung-Performance.


- Der 6502 ist zu schwach, denke ich mal.

- Der Z80 zu teuer.

Was viele nicht wissen, der 6502 übertrug pro Flanke ein Byte vom Speicher, anstatt nur einmal pro Takt wie beim Z80. Der 6502 braucht 2-7 Takte pro Befehl, der Z80 4-28 Takte pro Befehl.

Anders ausgedrückt ein 1Mhz 6502 ist etwa genauso schnell wie ein Z80 mit 4Mhz.Kennst du Listen wo mal die Anzahl der Takt-Zyklen für die wichtigen Befehle aufgelistet sind?

Avalox
2006-10-16, 19:54:35
aths dich gab es 1977 in der Rolle, jetzt wird es mir klar. Du wirst bestimmt irgendwie an eine Zeitmaschine kommen und in das Jahr 1975 reisen und dich Jay Miner (warum eigentlich?) nennen`.
Dort entwickelst du dann den GTIA, den Pokey und den ANTIC (http://www.atariarchives.org/dere/)gehst dann zu Atari (http://www.kleincomputer.de/movies/atariprismxvid.avi) um das Startkapital zu bekommen. Leider werden diese sehr fortschrittlichen Bausteine in sündhaft teure Homecomputer gesteckt. Das aber immerhin 1978 schon. Leider können sich diese nicht durchsetzen, weil der Preis zu hoch, die Software zu Spielelastig und niemand was von Hardware versteht.

Eine der Fragen die ich dann an dich hätte ist, warum wirst du Atari nicht vom Motorola 6809 (http://www-vs.informatik.uni-ulm.de/teach/ws04/ti2/2004w-TI2-C-6809-1.pdf)überzeugen können? Der dürfte doch genau dein Ding sein und das zur passenden Zeit.

Na ja. Der 6502 treibt ja auch den T800 Terminator in Zukunft an. Da schliesst sich wieder der Kreis. Der stammt aber nicht auch von Dir? Hab mich eh immer schon gefragt, wo Jay Miner hin ist ...

Ja. Mit dem Wissen und den Ideen von Heute in die Anfangszeit zurück.. das wäre was.

Gast
2006-10-17, 05:06:50
abrax 100e1

Gast
2006-10-17, 12:01:31
Wäre ich, sagen wir mal 1979, in dieser Situation würde ich mich wohl allein aus Kostengründen für einen 6502 entscheiden und ihn nach meinem Bedürfnissen erweitern. Ein 65ATHS CPU halt. ;)

DerRob
2006-10-17, 13:16:26
Kennst du Listen wo mal die Anzahl der Takt-Zyklen für die wichtigen Befehle aufgelistet sind?

hier (http://www.6502.org/documents/datasheets/mos/) gibts einige datenblätter zum 6502, und in diesem pdf (http://www.6502.org/documents/datasheets/mos/mos_6510_mpu_nov_1982.pdf) kann man auch einigermaßen die liste der assembler-befehle entziffern, mit taktlänge, parameter usw.

Gast Acorn
2006-10-17, 15:57:06
Hab mal bissl gesucht und diese beiden Seiten gefunden.

Z80
http://www.students-help.de/p/referate/02/6378.htm

6502
http://www.ihlaid.de/c64_internal4.html

ooAlbert
2006-10-17, 16:17:44
alo dann nehmt halt den nächsten zillog :) den z800 oder den z8000 der ist sogar schon bei 32bit...

oder wie wärs mit einem Vector-CPU, mehr leistung geht dann wohl nicht ...

Ralf2209
2006-10-17, 18:39:49
Am besten wäre doch, sich die CPU einfach komplett selber zu bauen:

http://www.mycpu.thtec.org/bilder.php

aths
2006-10-18, 16:10:51
Hab mal bissl gesucht und diese beiden Seiten gefunden.

Z80
http://www.students-help.de/p/referate/02/6378.htm

6502
http://www.ihlaid.de/c64_internal4.htmlDanke sehr.



Wäre ich, sagen wir mal 1979, in dieser Situation würde ich mich wohl allein aus Kostengründen für einen 6502 entscheiden und ihn nach meinem Bedürfnissen erweitern. Ein 65ATHS CPU halt. ;)Meine neuste Idee: Das 6809-Design auf 10/20 Bit aufbohren. Der 6809 kennt bereits MUL. Er ist einfach zu programmieren. Er hat nur ca. 6800 Transistoren. Auf 10/20 Bit erweitert dürfte man noch immer unter 10000 Transistoren bleiben. Zu überlegen wäre noch eine breitere Speicher-Anbindung um die Ausführungsgeschwindigkeit zu verbessern.

aths
2006-10-18, 16:12:36
aths dich gab es 1977 in der Rolle, jetzt wird es mir klar. Du wirst bestimmt irgendwie an eine Zeitmaschine kommen und in das Jahr 1975 reisen und dich Jay Miner (warum eigentlich?) nennen`.Es geht nicht darum ob die äußeren Beweggründe meiner Überlegungen realistisch sind. Es ist eine technische Spielerei. Am Ende sieht man oft, dass das gewählte Design schon seine Gründe hatte. Trotzdem überlegt man doch gerne, ob man nicht hätte etwas deutlich besser machen können.

Der 6809 zieht ziemlich gut aus. Wäre interessant zu wissen, was der damals gekostet hat.

Avalox
2006-10-18, 23:14:11
Es geht nicht darum ob die äußeren Beweggründe meiner Überlegungen realistisch sind. Es ist eine technische Spielerei. Am Ende sieht man oft, dass das gewählte Design schon seine Gründe hatte. Trotzdem überlegt man doch gerne, ob man nicht hätte etwas deutlich besser machen können.

Man findet ja vieles in der Geschichte, was wegweisend war, schlicht aber zu früh dran war, um das Potential breit der Öffentlichkeit zu zeigen .

Der ANTIC Grafikprozessor oben z.B. (Atari 8Bit Computer), dieses war tatsächlich ein programmierbarer Grafikprozessor der mit einem eigenen Instruction Set daher kam und zwischen dem System und dem Rasterizer Grafikchip positioniert war. Praktisch eine DMA(!) GPU mit einer Vorstufe eines programmierbaren Shaders.
Das ganze eben schon 1978. Bis zum AMIGA Agnus und Denise (welche ja ebenfalls von Jay Miner entwickelt wurden) gab es dann lange Zeit nichts vergleichbares.

Ich denke Jay Miner ist da einer der ganz gross Vsionären, aber doch schändlich unbeachteten Entwickler. Sehr schade.


Den Preis des 6809 kenne ich leider nicht direkt. Weiss aber, dass dieser in einigen Homecomputern durchaus vertreten war. Ich denke allerdings, dass dieser Motorola typisch nicht ganz billig gewesen ist. Allerdings kam ja schon ein Jahr nach dem 6809, eben 1978 der Motorola 68000 auf den Markt. Die beiden müssen ja in einen vernümftigen Preisverhältnis gestanden haben.

Gast
2006-10-20, 20:38:41
hier [ http://en.wikipedia.org/wiki/MOS_Technology_6502 ] steht das der 6502 bei der Einführung 1975 25,- Dollar gekostet hat während die Konkurrenten 6800 und 8080 179,- Dollar gekostet haben. Durch den 6502 ist der Preis der anderen CPUs dann auf 79,- Dollar gefallen.

Der 6809 sollte dann ähnlich viel gekostet haben wie der 6800 da er ja als billige Alternative zum 68000 gedacht war (und auch zusammen mit diesem 1979 auf den Markt kam)

Wenn man sich das ganze durchliest kommt man zum Schluß das der 6809 und der 6502 wohl beide Söhne des 6800 waren. :)


Vielleicht wäre ja auch der Chip hier was für dich:
http://en.wikipedia.org/wiki/Hitachi_6309 ist ein Sohn des 6809

Gast
2006-10-22, 13:10:12
Als Ergänzung zum letzten Posting hier noch eine Info-Seite über ältere CPUs:

http://www.microprocessor.sscc.ru/great/


Manfred