Warum war der 1541 so langsam?

Dec 13 2020

Das für die Verwendung mit dem 64 verkaufte Diskettenlaufwerk Commodore 1541 war aus historischen und technischen Gründen notorisch langsam :

  1. Das Marketing bestand auf der Kompatibilität mit dem 1540, dem mit dem Vic-20 verkauften Diskettenlaufwerk, was langsam war, da das Schieberegister im 6522 VIA-Chip nicht funktionierte und daher ein Stück nach dem anderen anstelle eines Bytes übertragen werden musste eine Zeit.

  2. Dann musste es noch langsamer werden, denn im Gegensatz zum Vic-20 muss der Videochip des 64 den Bus eine von acht aktiven Scanlinien vollständig übernehmen.

Okay, angesichts der Worst-Case-Kombination dieser beiden Faktoren, bei der keine Entwicklungszeit zur Linderung des Problems vorgesehen war, konnte man sehen, dass das Laufwerk nur ein Bit pro horizontalem Leerzeichen = 63 Mikrosekunden übertragen konnte. 1 / (63e-6) = 15873 Bits / s = 1984 Bytes / s.

Aber anscheinend betrug die tatsächliche Geschwindigkeit nur 400 Bytes / s .

Warum war die tatsächliche Geschwindigkeit nur ein Fünftel dessen, was trotz der unglücklichen Kombination von historischen und technischen Problemen möglich zu sein scheint?

Antworten

14 Raffzahn Dec 13 2020 at 21:29

Das Laufwerk kann möglicherweise nur ein Bit pro horizontalem Leerzeichen = 63 Mikrosekunden übertragen. 1 / (63e-6) = 15873 Bits / s = 1984 Bytes / s.

Dies wäre die Bitrate während der Übertragung innerhalb eines Bytes, aber die Bytes werden gerahmt und von Hand geschüttelt, wodurch durchschnittlich 160 µs pro Byte hinzugefügt werden. Daraus resultieren (63 * 8) + 160 µsoder ~ 664 µs pro Byte. Die obere Übertragungsgeschwindigkeit liegt also eher bei oder unter 1500 Byte / s

Die obigen Zahlen sind das absolute Minimum. Die Zeit zwischen den Bytes kann 1000 µs betragen und liegt immer noch innerhalb der Spezifikationen. Zusätzliche Bearbeitungszeiten liegen vor Befehlen und zwischen Blöcken / Befehlen. Als nächstes braucht der 1541 Zeit, um zu reagieren und zu reagieren. Und schließlich muss die C64-Seite auch über die reine Bitübertragung hinaus verwaltet werden. All dies summiert sich.

Aber anscheinend betrug die tatsächliche Geschwindigkeit nur 400 Bytes / s.

Vor allem ist zu beachten, dass es bei diesen 400 Bytes / s darum geht, von einem realen FD-Laufwerk zu lesen. Mit echter Kopfbewegung, Suchlatenz, Übertragungen und Umdrehen. Bei dem häufig verwendeten Test geht es um das Lesen eines 185-Block-Programms, dh mindestens 10 Spurwechsel usw.

Ein guter Maßstab für reale Übertragungsraten unter Verwendung eines nicht modifizierten C64 (Nospeed Loader, alle ursprünglich verwendeten Routinen) ohne mechanisches Laufwerk könnte die SD2IEC- Schnittstelle sein. Es bietet einen durchschnittlichen Durchsatz von 650 Bytes / s . Der SD2IEC ist im Wesentlichen ein Atmel ATMega, der mit 8 MHz direkt mit der seriellen IEC arbeitet. Die Reaktionszeit und die Übertragungszeit liegen nahe am maximal möglichen Wert. Das Lesen von SD / MMC führt zu keinen mechanischen Bewegungen, Suchlatenz und einer eher schnellen Datenübertragung von SD / MMC zum Controller-RAM.