Hallo Besucher, der Thread wurde 10k mal aufgerufen und enthält 70 Antworten

letzter Beitrag von Diddl am

6502 vs 6809

  • Ich habe heute mal in Gedanken verglichen, was ich über den 6502 und den 6809 weiß und versucht, die beiden zu vergleichen. Dabei kamen eine Menge Fragen.


    Um direkt vorzubeugen: ja, ich besitze Datenblätter und ja, ich kann sie auch lesen - aber vielleicht hat das ja schon jemand auf dem Schirm und kann mir direkt antworten.


    Stimmt es, dass es für jeden 6502-Befehl eine 6809-Entsprechung gibt? Könnte man also ein 6502-Programm einfach "reassemblieren"? Wenn ja, kennt jemand so einen Reassembler?


    Meines Wissens nach ist der 6502 festverdrahtet und arbeitet mit Unmengen AND-Gattern seine Logik ab, während der 6809 ein "waschechter" CISC-Prozessor ist, und Mikrocode abarbeitet - bedeutet das, dass ein 6502 eher "RISC" ist und bei gleicher Taktfrequenz schneller als ein 6809 ist?


    Wenn ein 6502 schneller wäre, also weniger Taktzyklen pro Befehll benötigen würde, könnte der 6809 das durch mächtigere Befehle ausgleichen?


    Und warum war die "Mini-Mainfraime-Geschichte", also der CBM 9000 MMF - ein CBM 8032 mit 6809-Prozessorkarte - so langsam, d.h. sogar langsamer als das interpretierte BASIC des 8032? Ist dafür die Software (mieser Interpreter) oder die Hardware (6809 oder z.B. keinen direkten Zugriff auf (Bildschirm-)Speicher) verantwortlich?

  • Er hat ja internen Clock, also würde ich behaupten der Nachteil der CISC ist aufgehoben. Er arbeitet wahrscheinlich intern viel schneller und so ist nur der externe Takt maßgeblich.


    Die 16 Bit Register verschaffen riesiege Vorteile wenn man die Programme darauf auslegt.


    Der 16 Bit Stack und Frame Pointer erlaubt es viel leichter Hochsprachen zu verwenden.


    Haufenweise interessante Befehle wie XCH und PC relative Adressierung erhöhen den Vorsprung weiter.



    Insgesamt halte ich den 6809 für sehr interessant. Er kam nur viel zu spät auf den Markt, und gegen den Hauptkonkurrenten 8088 kam er natürlich mit seinem 16Bit Bus niemals an.

  • Der MMF9000 baut auf einen CBM 8032 auf. Diese ganzen Sandwich-Boards und die ROMs waren sicher nicht das beste Design.


    Naja, 6809-Befehle sind aufgrund der Architektur etwas umfangreicher. Ein Beispiel: :)


    SEX ( Sign Extend) : the 8-bit two's complement value in accumulator B is sign extended to a 16-bit value in accumulator D. The original value of A is lost.


    Viele Befehle sind dem 6502 sehr ähnlich.


    Quelle: Programming the 6809


    Edit: Das Buch bekommt man sogar noch. Ist in englischer Sprache und geht auf die Programmierung ein : http://www.amazon.com/Programm…Rodnay-Zaks/dp/0895880784 . Für ein paar Euro bei Interesse zu empfehlen.

  • Ich hab gerade mal das hier gefunden, ist nicht ganz dasselbe, aber vielleicht sind ein paar hilfreiche Tips darunter: LINK (under Log dazu: LINK)


    One difference between the 6502 and the 6809 is the way they use the clock signal. A 6502 will accept a clock input and generate two non-overlapping clock outputs, Phase 1 and Phase 2. Phase 2 is equivalent to the 6800 and 6809's 'E' signal, but the 6809 generates 'E' by dividing the master clock by four. The 6502 doesn't divide the clock frequency, so Phase 2 is the same frequency as the input clock. Which means, to get a 1MHz 'E' signal, the same as the original 6502 Phase 2, I'd need to give the 6809 a 4MHz master clock.

  • Ich habe mal den Entwickler des Vectrex getroffen (Vintage Computer Festival 2004 in Las Vegas) - wir haben nen coolen Abend in der Glitzerstadt gehabt, an dem er viel aus dem Nähkästchen geplaudert hat. Die CPU des Vectrex war auch ein Thema: Er hat damals den 6809 gewählt, weil er im Datenblatt gesehen hat, dass die CPU dividieren kann. Erst später hat er herausgefunden, dass das rein gar nichts bringt, denn eine Implementierung auf dem 6502 wäre schneller gewesen. Er hat wohl regelmäßig von Programmierern zu hören bekommen, warum er den "speed demon of the time" (eben den 6502) nicht eingesetzt hat.


    Ein 1MHz 6502 schlägt sowohl einen 4MHz 6809, als auch einen 4MHz Z80 - deswegen der Titel "speed demon", den das Buch "programming the 65816" dieser CPU verliehen hat.


    Jens

  • Danke Antabaka für die Links - das sieht ja wirklich sehr interessant aus.
    Wenn ich ihn richtig verstehe, hat er einen 6502-basierten Rechner auf den 6809 umgebaut, in dem er einfach einen höheren Takt angelegt hat? Sooo einfach kann das sein? Dann ließe sich ja auch sehr einfach ein 8032 auf 6809 umbauen... fast zu schön, um wahr zu sein!

  • Dann ließe sich ja auch sehr einfach ein 8032 auf 6809 umbauen... fast zu schön, um wahr zu sein!

    Äh, entsprechende Boards gab es doch: LINK


    EDIT: Hier noch eine Seite mit massiv Informationen zum 6809: LINK

  • Ja sorry, hab den Link nachgepflegt :)


    EDIT: Und festgestellt, dass es sich genau um das von Dir oben beschriebene "MicroMainFrame 9000" handelt. Also bitte einfach ignorieren...

  • Ich habe mal den Entwickler des Vectrex getroffen (Vintage Computer Festival 2004 in Las Vegas) - wir haben nen coolen Abend in der Glitzerstadt gehabt, an dem er viel aus dem Nähkästchen geplaudert hat. Die CPU des Vectrex war auch ein Thema: Er hat damals den 6809 gewählt, weil er im Datenblatt gesehen hat, dass die CPU dividieren kann. Erst später hat er herausgefunden, dass das rein gar nichts bringt, denn eine Implementierung auf dem 6502 wäre schneller gewesen. Er hat wohl regelmäßig von Programmierern zu hören bekommen, warum er den "speed demon of the time" (eben den 6502) nicht eingesetzt hat.


    Ein 1MHz 6502 schlägt sowohl einen 4MHz 6809, als auch einen 4MHz Z80 - deswegen der Titel "speed demon", den das Buch "programming the 65816" dieser CPU verliehen hat.


    Jens


    Warum ist dann Elite bzw. Vektorgrafik am C64 so langsam?


  • Findest Du die langsam?


    Ich wollte nicht so viel schreiben. Ich bezog mich damit auf die alten Geschichten das Elite etc. auf einem Spektrum schneller und flüssiger läuft, weil der Z80 der bessere Rechenknecht ist. Dem hat halt diese "speed demon schneller als" Aussage widersprochen. Und da Wiesel sich in den Internas ja sehr gut auskennt hatte ich mir mit dieser kurzen Bemerkung eine detailiertere Beschreibung und Aufklärung des Sachverhalts erhofft.

  • Ein 1MHz 6502 schlägt sowohl einen 4MHz 6809, als auch einen 4MHz Z80 - deswegen der Titel "speed demon", den das Buch "programming the 65816" dieser CPU verliehen hat.


    Die Geschwindigkeit eines 1 MHz 6502 entspricht in etwa einem 2,5 MHz Z80. Daher sind die Z80 Homecomputer mit ihren 3,5 - 4 MHz tatsächlich etwas schneller. Nützt den Rechnern aber gar nichts, denn sobald man mit Sprites, Charset-Modus oder Smooth-Scrolling des VIC2 hantiert ist der kleine Geschwindigkeitsvorteil der Z80 Rechner nutzlos. Im Endeffekt sind die also nur im Bereich 3D etwas besser, bei allem anderen deutlich schlechter.

  • Die Geschwindigkeit eines 1 MHz 6502 entspricht in etwa einem 2,5 MHz Z80.


    Die Frequenz spielt keine Rolle. Die Zeitdauer die eine CPU zur Ausführung eines Befehls benötigt (Takte / Frequenz) ist wichtig. Es nützt nix wenn die CPU mit 20 MHz getaktet wird, aber für einen Befehl im Schnitt 25 Takte benötigt.


    Die 6502 braucht für einige Befehle nur 2 Takte, das macht sie schnell. Und die 6502 hat die Zero Page, was den Nachteil der geringen Registeranzahl etwas wett macht.



    Aber alle Benchmarks sind natürlich graue Theorie. Letztendlich hat die CISC Architektur die Risk geschlagen. Wenn einzelne CPU Befehle so mächtig werden, dass man ganze Programme braucht um den Befehl zu emulieren, dann dreht sich die Sache wieder um.



    Natürlich kann ich Benchmark Programme so auslegen, dass die 1MHz 6502 einen 4MHz Z80 schafft. Aber das ganze geht auch verkehrt rum.


    Ein seriöser Benchmark analysiert eine Menge an Programmen, welche Befehle wirklich wie oft benutzt werden. Daraus kann man dann schliessen ob diese oder jene CPU die Nase vorne hat. Auf ein einzelnes Beispiel kann es immer zu überaschenden Ergebnissen kommen.



    Und dann ist noch ein Unterschied, ob die Programme von Menschen in Assembler geschrieben werden oder nicht. Bei Hochsprachen zieht die 6502 vermutlich den Kürzeren. Der kleine Stack, die geringe Registeranzahl, - schlechte Karten. Und heute wird praktisch nicht mehr in Assembler programmiert.

  • Aber alle Benchmarks sind natürlich graue Theorie. Letztendlich hat die CISC Architektur die Risk geschlagen.


    Jein... Alle aktuellen x86-CPUs sind intern eher RISC-CPUs mit einem Umsetzer, der den ankommenden CISC-Code auf die interne RISC-Architektur abbildet. Hauptgrund dafür ist natürlich die berühmte Abwärtskompatibilität, aber der x86-CISC-Code hat noch einen weiteren Vorteil gegenüber einer reinen RISC-Architektur: Durch die variable Instruktionslänge sind die Befehle im Mittel kürzer, damit wird weniger Speicherbandbreite benötigt um die CPU mit ihrem Programm zu versorgen. Da die Geschwindigkeit des Hauptspeichers deutlich langsamer steigt als die der CPU hilft das am Ende die nutzbare Rechenleistung hochzubekommen.


    Auf ARM kann man bei Thumb/Thumb2 den Effekt auch feststellen, z.B. bei der Ausführung von Code aus dem Modul-Rom auf einem GBA (nur mit 16 Bit angebunden).


    Zitat

    Wenn einzelne CPU Befehle so mächtig werden, dass man ganze Programme braucht um den Befehl zu emulieren, dann dreht sich die Sache wieder um.


    Je komplexer der Befehl ist, um so unwahrscheinlicher ist es dass ein Compiler den kennt und einsetzen kann.

  • Ist doch klar, weil der C64 Vektorgrafik nur über bitmapgrafik simulieren kann, dazu kommt das Elite keine einfache Vectorgrafik hat sondern immerhin auf verdeckung prüft.



    Schon klar warum, aber nicht wegen dem im Zitat genannten!
    Die Vektorgrafik über eine Bitmap zu "simulieren" müssen faktisch alle Homecomputer dieser Zeit machen. Da sehe ich keinen Zusammenhang mit der CPU-Architektur. Im speziellen bei Elite ist der Code sehr auf 8-Bit Operationen hin optimiert. Das hat z.B. beim C64 Hires-Modus den Effekt, dass sich etwa die Grafik in der horizontalen Ausdehnung nur auf 256 Pixel beschränkt. Damit kann man die gesamten Vektoroperationen mit 8-Bit für Operatoren und Ergebnis erledigen (dabei die Winkelfunktionen und Multiplikation, Division etc. geschickt mit Lookup-Tables bzw. Logarithmentabellen gelöst - das gilt auch für den Z-Buffer-Tabellenzugriffe um die Verdeckung zu prüfen -, ein Feuerwerk an Index-Zugriffen, die den 6502 entgegen kommen).
    Aber ohne Unterstützung durch einen Grafikprozessor, der von sich aus Linien zeichnet, ist das ganze ja extrem CPU-lastig. Da kommen einem auch die sonstigen C64-Helferlein wie VIC dem 6502 nicht zur Hilfe ;) Schlussendlich kommen alle Prozessoren die dem 1MHz 6502 an Rechenleistung äquivalent sind, bei Elite ins Schwitzen. Auf einem BBC Acorn mit 2MHz 6502 ist das Spiel natürlich die Hölle ... Auch andere Plattformen, wie die 3,5 bis 4MHz "starken" Z80 Homecomputer waren hier rein CPU-mäßig überlegen.


    Die vollen Auflösung hätte bei Elite aber den 6502 beim C64 schlussendlich überfordert. Bei vielen anderen Hardwareplattformen hat es diese Entscheidung aber oft gar nicht gegeben, da ohnehin nur 256 Pixel bestenfalls vorhanden waren.



    Wenn man hier mal den Bogen zum 6809 spannt, dann wäre der natürlich mit seinen 16-Bit-orientieren Registern im Vorteil, den er aber nur auspielen könnte, wenn die Grafik in irgendeine Richtung über eine 8-Bit-Darstellung hinausgehen müsste. Aber auch da müsste der 6809 Federn lassen, da er bei gleich Zyklusdauer, für nahezu alle Befehle (die Äquivalent zum 6502 wären) länger braucht, schon alleine wegen der Tatsache, das gewisse Dinge eben nur 16-bittig gehen, wie das Operieren mit den Index-Registern.
    Ich hab leider keinen direkten Vergleich gesehen, wie etwa ein Elite auf einem Dragon/CoCo (gab's Elite jemals auf dieser Plattform überhaupt?) läuft ... der 6809 könnte bei der Implementierung wie sie Elite verwendet schwerlich schneller sein.


    JK