Hallo Besucher, der Thread wurde 20k mal aufgerufen und enthält 67 Antworten

letzter Beitrag von Ruudi am

CP/M-Benchmark C128D vs CPC6128 (Teil 1?)

  • EinleitungÜber den C128D und CPC6128 brauche ich wohl nicht viel schreiben, außer, das beide Rechner ein gemeinsames Betriebssystem haben: CP/M+, was historisch gesehen als Vorläufer von MS DOS angesehen werden kann (also im weiteren Sinne... MS-DOS gab's ja da schon). Allerdings hat der C128 den Ruf, der langsamste CP/M-Rechner zu sein (ist er nicht, versprochen ;) ) und dass der CPC ihn nass macht. Deshalb schwelte seit einiger Zeit sowohl bei ford68 als auch bei mir der Gedanke, man müsste mal den CPC und den C128 nebeneinander hinstellen und die gleichen Programme drauf laufen lassen. Genial wäre ja dabei, die Diskette auf dem einen Rechner zu bespielen, in den anderen einzulegen und da nahtlos weiterzumachen. Leider hat Amstrad damals bekanntlich auf das eher ungewöhnliche 3"-Diskettenformat gesetzt, was diese Idee vereitelt. Nichtsdestotrotz - über zwei, drei Ecken bekommt man das hin.


    Vorbereitung
    So, was für Programme nimmt man nun... ein erster Gedanke: Benchmarkprogramme. Soweit so gut, ich wurde recht schnell auf den Dhrystone-Benchmark aufmerksam. Nur - den gibt's für CP/M nicht fertig kompiliert sondern nur als Quelltext. Also hab ich erst mal Hitech-C organisiert und über zwei, drei Ecken auf d81-CP/M-Images gepackt: Hitech-C entpacken, mit ctools auf mehrere D71-Images kopieren und danach mit x128 dann unter CP/M auf ein d81-Image zusammenkopieren (hat auch nur ein Wochenende gebraucht, das hinzubekommen). Heutzutage würde ich dafür Yaze verwenden, ein sehr komfortabler und schneller CP/M-Emulator, der auf das Dateisystem vom PC zugreifen kann und 4MB große Images unterstützt.
    Als zweites Programm stand ein Klassiker auf der Liste: Apfelmännchen. Da die Interface nur einen Tag lang ist, kam nur Textmodus in Frage. Vom Aufwand mit dem C-Compiler leicht genervt, hatte ich das dann in Turbo Pascal umgesetzt. Dazu kam dann noch ne kleine handvoll Anwendungsprogramme und Spiele aus diversen Quellen. Dem großen Tag stand nichts mehr im Wege...


    Durchführung
    Nachdem die Geräte aufgebaut waren (der Aufbau des C128D dauerte trotz der unzähligen Kabel für den Videokonverter nur unwesentlich länger als der des CPC), konnte der erste Benchmark starten. Hier konnte der C128D seinen Heimvorteil ausspielen und hatte den Benchmark deutlich vor dem CPC beendet. Grund war aber nicht die brachiale Rechenleistung des C128D sondern ein Fehler beim Überspielen des Benchmarks auf den CPC. Immerhin, vor dem ersten Grillen hatten wir zumindest für den C128D schon einen Wert: 85,5 Dhrystones (YEAH! CP/M Fast Final rulez! Das normale CP/M bringt nämlich nur etwas über 70 Dhrystones.)
    Nach dem Grillen lief dann auch das Benchmarkprogramm auf dem CPC und zeigte beeindruckende 142,9 Dhrystones an (Mist!). Ein nochmaliger Durchlauf bestätigte das Ergebnis, wobei man bei dem Testprogramm eine Schwankung von 3 Einheiten einkalkulieren muss.
    Also nächstes Programm: Apfelmännchen bzw. Mandelbrot. Der C128D legt solide los und zeichnet stoisch Zeichen für Zeichen das Apfelmännchen. Ein beruhigender Anblick, so dass wir fast vergessen, das Programm auch auf den CPC zu starten. So startet es auf dem CPC erst, als der C128D schon die Hälfte geschafft hat. Und legt ein Tempo vor dass der Eindruck entsteht, er will unbedingt aufholen. Und tatsächlich, als der C128D das Apfelmännchen fertig hat, fehlen dem CPC nur noch zwei Zeilen.
    In Zahlen: 7:35 Minuten braucht der C128D und 4:26 Minuten der CPC für das Apfelmännchen.


    Fazit
    Die Unkenrufe haben Recht - der CPC ist deutlich schneller als der C128D. CP/M Fast Final verringert den Abstand zwar etwas, so dass der CPC zumindest nicht mehr doppelt so schnell ist. So im Rückblick fällt mir auf, dass ein Vergleich der reinen Textausgabe fehlt. Der Benchmark als auch das Apfelmännchen belasten hauptsächlich den Prozessor. Und ein Grafikvergleich (GSX vs. einer der C128-CP/M-Grafikbibliotheken) wäre auch noch interessant. Vielleicht ergibt sich da nochmal was...
    Und welcher von beiden ist nun der bessere CP/M-Rechner? Tja, das muss jeder für sich selbst herausfinden :)

  • Würde die Programme auf meinem 8 MHz Z80 im SX64 laufen lassen (OK, mit 4-5 Wait States je nach Befehl; also halbe Leistung eines echten 8 MHz Z80). Wüsste aber nicht, wie ich die beiden fertig kompilierten Programme von einer CP/M 3.0 disktte eines C128 lesen könnte. Im "alten" einseitegen 1541 CP/M 2.2 Format hätte ich eine Chance. Der 128 kann mit einer 1571 dieses Format schreiben und lesen.


    Könntest du ein Disketten-Image dazu erstellen? Wäre cool!
    Danke :-)

  • Sehr gute Idee - die beiden "getesten" Rechner sind Heimcomputer, die auch CP/M können und beide unterschiedlich stark gehandicapt sind (lt. Wikipedia-Artikel zum CPC ist der auch leicht gebremst, damit die Grafikqualität nicht leidet). Mich interessiert auf jeden Fall, wie auch die professionelleren CP/M Systeme so abschneiden :)

  • Asklia: hatte ich gestern schon gemacht. Den Dhrystone muss ich noch anpassen - cp/m 2.2 scheint keine interne Uhrzeit zu führen - er denkt immer, dass er den Test in 0 Sekunden absolviert. Ergo auf CIA Echtzeituhr ändern. Aber nicht mehr heute abend ;) Mandelbrot läuft, sieht aber im 40Zeichen-Modus etwas eigenwillig auf. Im Pascal-Programm das "/78" durch "/38" ersetzen.


    oobdoo: musst Du Ford68 fragen. Hab von CPC keine Ahnung :)

  • So wie das Programm jetzt ist, kann man die Zeit vom C64 CP/M (8:10 Minuten) halbwegs mit der von CPC und C128D vergleichen. Aber manchmal will man auch nur mal den Fraktal bewundern - dafür die Anpassung ;)


    Nachtrag: das CPC-Bild in Beitrag#1 ist leider falsch... hier das richtige.


    Übrigens: wenn ich das richtig sehe, bietet der CPC seinen Programmen 61k freien Speicher, der C128 58k

  • (lt. Wikipedia-Artikel zum CPC ist der auch leicht gebremst, damit die Grafikqualität nicht leidet).

    Was meinst Du mit "leicht gebremst" bzw. wo "genau" steht das?

  • Gerne, hier steht es (im englischsprachigen Wiki steht dann auch was von 3,3 Mhz):

    ...m CPC wird die Z80-CPU mit einer Taktfrequenz von 4 MHz betrieben, wobei jeder Maschinenbefehl auf Vielfache von 4 Zyklen gestreckt wird, um Zugriffskonflikte zwischen Hauptprozessor und Videoelektronik (Snowing) zu vermeiden. Da viele der meistverwendeten Z80-Befehle drei oder vier Zyklen erfordern, ist die durch dieses Verfahren entstehende Leistungseinbuße relativ gering. Es ergibt sich eine theoretische Rechenleistung von bis zu 1 MIPS, in praktischen Anwendungen sind es jedoch eher unter 0,5 MIPS.


    Dieser Absatz machte den Vergleich im Vorfelde spannend - ich hatte die Hoffnung, dass der Abstand deshalb geringer ist (okay, meine Hoffnung war, dass beide Systeme gleich schnell sind... ^^ , u. a. auch, wie MGR3SA anmerkt, der CPC eigentlich die ganze Zeit im Grafikmodus unterwegs ist. Aber davon ist nix zu merken. Trotzdem schaue ich bei Gelegenheit nochmal, wie man was basteln kann, was rein die Textdarstellung belastet, irgendwas das nicht so öde ist wie den Bildschirm mit einem Buchstaben zu füllen ;) ).


    Auf der anderen Seite bin ich nun natürlich gespannt, wie ein System abschneidet, dass nicht diese Einschränkung hat. Deshalb hoffe ich ja noch auf ein reines text-only-CP/M-System

  • Mir war so als wenn der CPC keinen echten Textmodus hätte

    Der CPC hat überhaupt keinen Textmodus, dafür muß beim 128er alles durch den zwei-Byte-Indexport (und man muß vorher dort die Schreibadresse setzen!). Zudem hat der c128 noch einen Schatten-Bildschirm für die Anwender eines 40-Zeichen-Bildschirmes. Beim Scrolling ist der CPC auch scheinbar im Vorteil, weil er den Bildschirmanfang im Speicher umherschieben kann- er muß nur die letzte Zeile löschen. Macht dank Grafikmodus 'nur' 640 Byte schreiben statt 16000 kopieren. Dagegen steht der halb-kaputte Kopiermechanismus im Commodore-VDC. Unterm Strich dürfte das also ziemlich ausgeglichen sein udn von der jeweiligen Terminal-Emulation abhänmgen; da haben beide Systeme Optimierungspotential, wenn es um Geschwindigkeit geht.


    Ähnlich übrigens beim Disk-Zugriff: CPC ultrsschnell, dafür 512K RAM-Disk im Commodore.

  • Deshalb hoffe ich ja noch auf ein reines text-only-CP/M-System

    Ich könnte noch meine Olivetti ETV 250 Bildschirmschreibmaschine beisteuern, auch die läuft unter CP/M. Eine Uhr hat die aber nicht, man müsste versuchen von Hand zu stoppen.


    Datentransfer der Testprogramme auf deren 3,5 Zoll Disketten ist möglich, habe ich schon mit Zork 1-3 und anderen Sachen gemacht.

  • Welcher ist das denn und wie schnell/langsam ist der?

    Alles, was ne U880 hat, PC1715 oder A5120... obwohl... sehe gerade, die haben schon 2,5MHz... hmmm... die KC85/3 bzw. /4 waren glaub ich langsamer ^^


    1ST1: dafür eignet sich das Apfelmännchen... starten, Kaffee holen und dann rechtzeitig die Stoppuhr wieder anhalten :)

  • >> Warscheinlich der Cevi mit CP/M Modul und dann kommt erst der C128



    Nicht ganz. Das Orignal-Modul lief mit 1 MHz in der Austastlücke des 6510, gelegentlich unterbroichen durch die Zugriffe des VIC und den Refreshzyklen. Es gab aber keine "Wait-States" wie man das heute nennt.


    Im C128 lief der Z80 zwar mit nominal 4 MHz, wurde aber letztendlich auf 2 MHz ausgebremst.


    Die mit dem Aufkommen der schnelleren Z80H entwickelte 8 MHz Karte für den C64 läuft auf nominal 8 MHz, aber mit fünf Wait-States; realisiert durch einen Takt-Zähler. Nach drei Takten kann der Z80 noch im letzten Takt einen Befehl beenden; dann wird er im Wait festgehalten, bis der Bus vom 6510 wieder frei ist. Der Wait nach drei statt erst vier Takten war nötig, weil der Z80 bei manchen Befehlen nicht immer sofort in den Wait geht oder gar fertig ist. Hat damals viel Debugging mit dem Logi Analyser gekostet. Lustigerweise waren es diejenigen CP/M Anwendungsprogramme, die echte und längere Z80 Befehle benutzt haben. CP/M selber benutzt nur die 8080 Befehle. Macht also eine reale Taktfrequenz von 8/3 = 2.66 MHz und damit etwas mehr als der C128.


    Die 80 Zeichenkarte von Jann Datentechnik basiert auf einem 6845. Die Terminal Emulation war in Maschinensprache und recht schnell. Der Bildschirmspeicher liegt zudem im adressierbaren RAM. Wordstar liess sich damals patchen; der Z80 schreibt selber direkt in den Bildschirmspeicher. Dies geht mit Wordstar schon prinzipiell nicht mehr unter CP/M 3.0, weil dort das Video RAM in der zweiten Bank liegt. Und beim C128 aus den oben genannten Gründen auch nicht.


    C64: 1.00 MHz
    C128: 2.00 MHz
    C64/8: 2.66 MHz



    P.S.: Ich suche immer noch jemanden, der gegen gutes Geld die bestehende 8 MHz Z80 Karte sowie 80 Zeichenkarte neu layoutet.