Wie schnell sind Disketten zu laden?

Sicherlich ist dies in starkem Maße abhängig von der Qualität der benutzten Disketten und Laufwerke, ihrer Drehzahl und Steprate; aber fällt Ihnen aus dem Stegreif noch mehr dazu ein?

Schon häufiger war in Zeitschriften über den ‘optimalen Interleave’ zu lesen, bislang handelte es sich jedoch immer um Festplatten. Da nicht jeder ST-Benutzer ein solches Speichermedium sein eigen nennt, außerdem die ATARI-Festplatten lange nicht so optimierungsbedürftig sind wie beispielsweise Platten für PCs und Kompatible, habe ich eine lange Versuchsreihe mit Disketten angestellt; auch dort wirkt sich nämlich die Art der Formatierung in starkem Maße auf die Geschwindigkeit beim Laden und Speichern aus. Um optimale Übertragungseigenschaften zu erreichen, machte ich Gebrauch von allen mir bekannten Möglichkeiten zur Formatierung. Die in manchen Punkten recht interessanten Meßergebnisse basieren auf Messungen am ATARI ST mit seinen standardmäßigen 3 1/2"-Laufwerken, die daraus gefolgerten Ergebnisse haben jedoch grundsätzliche Gültigkeit.

Besondere Rücksicht wurde auf den Umstand genommen, daß nicht alle ST-Benutzer ein sog. FASTLOAD (s. Begriffserl.) eingebaut haben, denn gerade auf solchen Systemen kann man durch clevere Formatierung eine Beschleunigung des Datentransfers erreichen. Zum Formatieren wurde Hyperformat benutzt, ein kurzes GFA-BASIC Programm ermittelte die Ladezeiten der Disketten; bei allen Diskettenoperationen wurde die Standard-Steprate von 3 ms benutzt.

Die größte Ladegeschwindigkeit einer Diskette mit 512 Byte-Sektoren in Laufwerken mit 300 UPM kann nach folgender Formel berechnet werden:

Speed = SPT*2,5/(IL+SPIR)
(Formel 1)

Speed = kB/Sek.
SPT = Sektoren pro Track
IL = Interleave
SPIR = Spiralfaktor

Die Konstante 2,5 ergibt sich aus dem Produkt von Sektorlänge in kB und der Zahl der Umdrehungen pro Sekunde und muß für andere Laufwerke und Sektorlängen entsprechend angepaßt werden. Die maximale Ladegeschwindigkeit einer 9-Sektor-Diskette mit Interleave 1 und Spiralfaktor 0 ist demnach:

9*2,5/(1+0) = 22,5 kB pro Sekunde

Die Richtigkeit dieser Formel sollten Messungen bestätigen. Die Ergebnisse mit Fastload kann man Tabelle 1 entnehmen. Wie zu erwarten war, fällt die Ladegeschwindigkeit mit steigendem Spiralfaktor stetig ab. Für 11 Sektoren muß sogar mit Interleave 2 gearbeitet werden, da die Sektoren so eng beieinander liegen, daß sie nicht mehr in einem Rutsch gelesen werden können. (Interleave 2 bei 11 Sektoren = Interleave-Faktor 6, s. Erläut.)

Wie sieht’s denn aus, wenn man diese Disketten ohne Fastload einlädt? Tabelle 2 gibt darüber Aufschluß. Plötzlich findet sich ein Maximum der Übertragungsrate bei einem Spiralfaktor von 2, warum aber nicht beim Spiralfaktor 0?

Formen wir die Formel 1 zur Geschwindigkeitsermittlung so um, daß ihr Nenner auf einer Seite steht, dann erhalten wir im Falle von 9 Sektoren, IL 1 und Spir 0:

SPT*2,5/Speed = IL+SPIR

9*2,5/11,31 = 17,90

(Formel 2)

SPT IL SPIR Speed SPT IL SPIR Speed SPT IL SPIR Speed
9 1 0 22,48 10 1 0 25,01 11 2 0 13,75
9 1 1 20,24 10 1 1 22,72 11 2 1 13,15
9 1 2 18,41 10 1 2 20,83 11 2 2 12,61
9 1 3 16,87 10 1 3 19,23 11 2 3 12,12
9 1 4 15,57 10 1 4 17,85 11 2 4 11,64

Tabelle 1: Ladegeschwindigkeit mit Fastload

SPT IL SPIR Speed SPT IL SPIR Speed SPT IL SPIR Speed
9 1 0 11,31 10 1 0 12,56 11 2 0 9,21
9 1 1 11,28 10 1 1 11,96 11 2 1 8,95
9 1 2 18,39 10 1 2 20,79 11 2 2 12,62
9 1 3 16,87 10 1 3 19,23 11 2 3 12,10
9 1 4 15,57 10 1 4 17,85 11 2 4 11,63

Tabelle 2: Ladegeschwindigkeit ohne Fastload

Die Geschwindigkeit ist geringer als das errechnete Maximum, die Diskette hat also mehr Umdrehungen ausgeführt. Wie auch den Erläuterungen zu entnehmen ist, ist gerade der INTERLEAVE ein Maß dafür, wieviele Umdrehungen die Disk machen muß, damit alle Sektoren der Spur eingelesen werden können.

Setzen wir auf der rechten Seite der Formel 2 für SPT die 9 und für SPIR die 1 ein, dann ist die Gleichung für IL=2 erfüllt. Wie Sie sehen, wirkt sich der formatierte Interleave von 1 in der Praxis so aus, als sei die Diskette mit Interleave 2 formatiert worden!

Je nach Geschmack kann man die Gleichung aber auch nach SPIR auflösen, wenn man IL mit 1 beläßt. Es ergibt sich dann ein effektiver Spiralfaktor von 9 (statt des formatierten Spiralfaktors von 0), was bei 9 Sektoren pro Track nichts anderes als eine Extraumdrehung bedeutet. (Die Ungenauigkeiten in den Nachkommastellen rühren daher, daß beim Lesen mehrerer Spuren nicht die gesamte letzte Spur gelesen werden muß, um die letzten 9 Sektoren zu erfassen, sondern nur die ersten ca. 90%.) Was besagt aber nun diese Rechnung:

Ohne Fastload kann bei diesem Format eine Spur nur in 2 Umdrehungen komplett eingelesen werden. Das liegt eben daran, daß in Systemen ohne FASTLOAD nach einem Spurwechsel und einer Pause von 15 ms zur Beruhigung des Kopfes erst noch die neue Spurnummer verifiziert werden muß, und diese befindet sich gerade vor dem Sektor, der eigentlich als nächster hätte gelesen werden sollen; also: eine Runde Pause, macht 200 ms.

Wenn Ihr Lese(r)kopf nun schon qualmt, dann gönnen Sie sich erst auch mal ‘ne Pause und lesen danach die Erläuterungen zu den wichtigsten, hier gebrauchten Ausdrücken!

ATARI nimmt die Spirale

Auch die ATARI-Entwickler haben festgestellt, daß die unter TOS 1.0 formatierten Disketten - Spiralfaktor 0 - im Originalbetriebssystem ohne Fastload nur im Schneckentempo zu laden sind, ganz zu schweigen vom Abspeichern, was durch das Verifizieren der gerade geschriebenen Daten doppelt so viel Zeit beansprucht. Seit TOS-Version 1.2 (Blitter-TOS) wird daher aus dem Desktop nur noch mit Spiralfaktor 2 formatiert, in einer der neuen, inoffiziellen 1.4 Versionen sogar die Vorderseite mit Spiralfaktor 3 und die Rückseite mit Spiralfaktor 2. Die unter dieser TOS-Version formatierten Disketten sind daher noch etwas langsamer als solche von TOS 1.2. Ihre Ladegeschwindigkeit liegt bei 9-Sektor-Disketten etwa bei 17,62 kB/Sekunde. Mit Formel 2 errechnet man hierbei einen effektiven Spiralfaktor von 2,5. Aber keine Angst, in der endgültigen 1.4er-Version vom 6.4.1989 benutzt man wieder den Spiralfaktor 2 auf beiden Seiten und erreicht damit 18,39 kB/Sek.

Wir haben nun schon die erste Möglichkeit kennengelernt, um Disketten ohne Fastload etwas schneller zu machen - die Spiralisierung. Sie wird nur indirekt von der Formatier-Routine des XBIOS unterstützt; man kann seit TOS-Version 1.2 einen Zeiger auf die selbstkonstruierte Tabelle der Sektornummern übergeben.

Hinzu kommt das Interleaving, was von allen TOS-Versionen unterstützt wird; wo es jedoch erst wichtig wird, nämlich bei 11-Sektor-Disketten, da macht TOS nicht mehr mit und verschwendet den Platz für den 11. Sektor in den anderen Sektorzwischenräumen. Maximal 10 Sektoren passen daher auf ‘Desktop-formatierte’ Disketten.

Mit Köpfchen geht’s besser

Es gibt aber noch den ‘zusätzlichen Header’, der (wahrscheinlich ungewollt) sogar mit einem kleinen Trick unter TOS erzeugt werden kann. Wenn Sie sich die Sektorfolgen ansehen, die das abgebildete GFA-BASIC-Programm generiert, können Sie erkennen, daß bei einer 9-Sektor-Diskette und Interleave-Faktor 11 genau 11 Sektoren erzeugt werden. Zwar ist der 11. Sektor um seinen Dateninhalt beschnitten, der wichtige Sektorvorspann - der Header - ist aber allemal noch mit drauf auf der Spur. Lädt man eine solche Diskette ohne Fastload ein, ergibt sich - o Wunder - eine Lesegeschwindigkeit von 22,49 kB/Sekunde, also genauso schnell wie mit Fastload. Schuld daran ist nur der Header des 11. Sektors, der genau dann zur Stelle ist, wenn der Floppycontroller die aktuelle Spur verifizieren will. Bei 10 Sektoren und Interleave 11 klappt das nicht mehr, weil der Kopf auf der alten Spur noch den 10. Sektor lesen muß und gerade dann in die nächste Spur hochfährt, wenn der Header des 11. Sektors unter ihm vorbeirauscht. Moral von der Geschicht': Extrarunde!

Wo sollte der zusätzliche Header stehen?

Welche Schlüsse kann man daraus ziehen? Der zusätzliche Header sollte so dicht wie eben möglich vor dem ersten auf der neuen Spur zu ladenden Sektor stehen; und das ist der Sektor Numero 1. Versuche ergaben, daß das Ende dieses zusätzlichen Headers mindestens 10 Bytes vor dem Anfang des Sektorvorspanns vom 1. Sektor liegen muß, da sonst der 1. Sektor überlesen wird. Als ‘dicht’ kann man auch das Ende des Tracks bezeichnen, wenn zuvor der Sektor mit der höchsten Nummer residiert. Von dieser Lösung machen viele Kopier- und Formatierprogramme Gebrauch.

Zunehmend an Beliebtheit gewonnen hat die 10-Sektor-Diskette, viele Public Domain-Disketten sind derart formatiert. 25 kB/Sek. mit und 20,79 kB/Sek. Ladegeschwindigkeit ohne Fastload tragen mit dazu bei. Ohne Fastload klappt das aber nur beim Spiralfaktor 2 (siehe Tabelle 2). Und dieser Faktor 2 ließ mich noch eine Steigerung der Geschwindigkeit vermuten....

Folgendes GFA-BASIC-Programm demonstriert die Arbeitsweise des TOS beim Konstruieren der Sektorfolgen mit Interleave-Faktor:

FOR spt%=9 TO 11                ! 9 bis 11 Sekt, pro Track
    FOR ilf%=1 TO 11            ! Interl.-Faktor 1 bis 11
        @makesecs(spt%,ilf%)    ! Sektorfolgen konstruieren
        PRINT                   ! neue Zeile
    NEXT ilf%                   ! Nächster IL-Faktor
NEXT spt%                       ! Nächstes Trackformat
END
PROCEDURE makesecs(spt%,ilf%)
    lauf%=1
    PRINT spt%;"/";ilf%;"= ";
    REPEAT
        secnr%=lauf%
        REPEAT
            PRINT secnr%;" ";   ! hier ensteht der Sektor
            ADD secnr%,ilf%
        UNTIL secnr%>spt%
        INC lauf%
    UNTIL lauf%>ilf%
RETURN
# Begriffserläuterungen

Ich weiß, viele Leser haben sie nicht mehr nötig, aber im Interesse aller anderen mögen Sie mir die Wiederholung der Erläuterung verzeihen!

Fastload, Trackverify: Alle originalen, unveränderten Betriebssystemversionen des ATARI ST arbeiten ohne Fastload. Dadurch wird das Schreiben und Lesen von Diskette verlangsamt, weil nach einem Spurwechsel erst einmal eine Pause von 15 ms zur Kopfberuhigung eingelegt und danach die Information darüber verlangt wird, ob die erreichte Spur die richtige ist. Vor jedem Sektor steht diese Information und wird auch für dieses ‘Trackverify’ benutzt. Da aber diese Information - der Sektorheader - auch zum Lesen des eigentlichen Sektorinhalts benötigt wird, kann der Kopf den Sektor, über dem er sich gerade befindet, nicht mehr lesen und muß daher eine ganze Diskettenumdrehung auf ihn warten.

Um dieses Trackverify abzuschalten, muß ein Byte (eigentlich nur 1 Bit) im Betriebssystem geändert werden. Derart geänderte EPROMs kann man für etwa 20.- bis 30.-DM kaufen und kommt dadurch in den Genuß der höheren Lese- und Schreibgeschwindigkeiten (siehe Tabelle). Zum Selbermachen die Patchadressen in den verschiedenen Betriebssystem-Versionen (jeweils das Byte $14 ändern in $10):

Spiralfaktor, SP/R: Die Sektoren einer Diskette sind dann spiralisiert, wenn zwar die Reihenfolge der Sektoren auf allen Spuren erhalten bleibt, jedoch jede Spur mit einer anderen Nummer dieser Reihenfolge beginnt. Verbindet man im Gedanken von außen alle Sektoren der Diskette, die die Nummer 1 haben, so beschreibt diese Kurve eine Spirale, die im Zentrum der Diskette enden würde. Nach einem Spurwechsel hat der Lesekopf dadurch mehr Zeit, weil der nächste zu bearbeitende Sektor aufgrund der Spiralisierung etwas später erscheint als ohne Spiralisierung. Bei Systemen ohne Fastload scheint der Spir-Faktor von 2 optimal zu sein, da der Kopf nach dem Spurwechsel erst noch sein Trackverify ausführen kann und danach sofort auf den richtigen Sektor stößt.

Beispiel:

Track 17, Sektorfolge 1 23456789
Track 18, Sektorfolge 891 234567 >> Spiralfaktor 2

Nachdem der Kopf den Sektor 9 auf Spur 17 gelesen hat, fährt er auf Spur 18 und landet dort irgendwo in Sektor 8. Den Header von Sektor 9, Spur 18 benutzt er zum Trackverify und kann sodann mit dem Laden des Sektors 1 beginnen.

Interleave, Interleave-Faktor: Aufgepaßt, Interleave bezeichnet man als den Zwischenraum zwischen 2 numerisch aufeinanderfolgenden Sektoren. Oder: so viele Diskettenumdrehungen sind notwendig, um alle Sektoren des Tracks zu lesen.

Sektorfolge:16 2 7 3 8 4 9 5 >> Interleave 2

Zwischen Sektor 1 und 2 liegen 2 Zwischenräume (1 -6 und 6-2), aber Interleave-Ftf bezeichnet die Zahl, die auf eine Sektornummer aufaddiert wird, um auf die Nummer des nachfolgenden Sektors zu kommen.

Sektorfolge: 1 728394 10 511 6
>> Interleave-Faktor 6
>> Interleave 2

Die Formatier-Routine (XBIOS 10) des ATARI ST erwartet auf dem Stack einen Interleave-Faktor und führt damit obige Rechnung aus. Wem es noch nicht kompliziert genug ist, für den ist hier der mathematische Zusammenhang zwischen Interleave (IL) und Interleave-Faktor (ILF):

Bedingung: 0<ILF<SPT und 1<IL<SPT
ILF*IL=SPT+1 SPT=Sektoren pro Track
(Formel 3)

Zur Beurteilung der Ladegeschwindigkeiten und deshalb auch in meiner Formel wird hingegen der Interleave (IL) benutzt, weil er diesbezüglich aussagekräftiger ist und unabhängig von der Anzahl der Sektoren pro Track (SPT) Auskunft über die minimale Anzahl von Diskettenumdrehungen gibt, die zum Lesen aller Sektoren nötig sind.

Zusätzlicher Header, Sektorvorspann: So nennt man den Teil eines Sektors, in dem Auskunft über Tracknummer, Seite, Sektornummer und Sektorgröße gegeben wird, dem aber nicht wie normalerweise das 512 Byte lange Datenfeld des Sektors folgt. Dieser Sektorvorspann wird alleine geschrieben, belegt insgesamt 10 Bytes auf der Diskette, und seine einzige Aufgabe ist, dem System Auskunft über die Tracknummer zu geben, in der die gerade gelesene Information steht. Durch diesen Trick wird dem Trackverify (s. dort) Rechnung getragen.

Version Datum Offset U7 im Speicher  
TOS 1.0 06.02.1986 $0DC7 $FC1B8F
TOS 1.2 22.04.1987 S0EC7 $FC1D8F
TOS 1.4 18.05.1988 $0AE9 $FC15D3 inoffiziell!
TOS 1.4 22.02.1989 $0A8E $FC151D inoffiziell!
TOS 1.4 06.04.1989 $0A8B $FC1517
Version Datum File-Offset im Speicher  
RAMTOS 1.0 06.02.1986 $1A1D $7A
RAMTOS 1.4 18.05.1988 $13D5 $BED5 inoffiziell!
RAMTOS 1.4 08.08.1988 $13B1 $BFB1 inoffiziell!

Tabelle 4: Fastload-Patchadressen

Rekordverdächtig: 10-Sektor-Disketten ohne Fastload

Tatsächlich ist es mir gelungen, ein 10-Sektor-Format zu generieren, das bisherige Formate in puncto Geschwindigkeit schlägt. Dabei wurden die 10 Sektoren eines Tracks mit Interleave 1 und Spiralfaktor 1 auf eine einseitige Diskette formatiert, insbesondere aber vor jedem Sektor mit der Nummer 1 ein zusätzlicher Header geschrieben. Da nach dem Lesen des letzten Sektors (Nummer 10) der Lesekopf einen Schritt nach innen fährt, versucht das System ohne Fastload erst einmal, die Spumummer festzustellen. Der Spiralfaktor von eins sorgt nun dafür, daß der Kopf etwa am Ende des 10. Sektors der neuen Spur landet. Er findet sodann den zusätzlichen Header, der das Bedürfnis des Betriebssystems nach Trackverify erfolgreich befriedigt. Sofort nach dem Header kann dann mit dem Lesen des 1. Sektors der neuen Spur begönnen werden. Die so erreichbaren Ladegeschwindigkeiten bewegen sich um die 22,7 kB/Sek. und stellen für Betriebssysteme ohne Fastload den absoluten Spitzenwert dar. Die schnellsten 10er-Disketten konnten bisher mit 20,79 kB/ Sek. geladen werden (siehe Tabelle); Steigerung: 9,2%. Leider existiert meines Wissens (bisher!) kein Formatierprogramm, das automatisch auch bei spiralisierten Disketten den zusätzlichen Header mitspiralisiert. Die erste derartige Diskette erzeugte ich in ‘Handarbeit’, inzwischen kann’s aber auch mein ‘Formatierer’.

Und wie schnell sind Hyper-Density-Disketten?

Das sind solche Disketten, die mit höherer Datenrate formatiert wurden - siehe ST Computer 7/8-89 - und dadurch bis zu 1,2 MB Datenkapazität vertragen. Aber sie sind auch noch mit Abstand die schnellsten. Die Ergebnisse kann man Tabelle 3 entnehmen.

Weniger ist manchmal mehr

Nur bedingt kann man die schnellste Formatierung auch als die optimale bezeichnen, speziell bei eingebautem Fastload. Besonders bei den schnellen 10er-Disketten (IL 1,SPIR 0) und den 13er-Hyper-Density-Disketten (IL LSPIR 0) entstehen beim Schreiben auf einigen Laufwerken (auch auf meiner SF314) gelegentlich Fehler. Schuld daran ist das Schwingverhalten des Schreib-/Lesekopfes, der bei einem Spiralfaktor von 0 praktisch keine Beruhigungszeit mehr hat. Ein sicheres Zeichen dafür sind fehlerhafte Sektoren mit Nummer 1. Deswegen rate ich bei 10er-und 13er-Disketten auf den Spiralfaktor 1 auszuweichen, weil damit dem Kopf eine Sektorlänge mehr Zeit gegeben wird. Die Geschwindigkeitseinbuße hält sich dabei in Grenzen (etwa 6-9%). Dies scheint wohl auch der Hauptgrund dafür zu sein, weswegen die ATARI-Entwickler im Desktop mit Spiralfaktor 2 formatieren, werden doch die verschiedensten Laufwerke für den ST angeboten.

Ein nützlicher Nebeneffekt ist die Tatsache, daß 5,25"-Laufwerke bei 6 ms Steprate und Spiralfaktor 1 in den meisten Fällen gleiche Lesegeschwindigkeiten erreichen wie ihre kleinen 3,5"-Pendants.

SPT IL SPIR Speed SPT IL SPIR Speed
11 1 0 27,51 11 1 0 27,50
12 1 0 30,02 12 1 0 29,87!
13 1 0 32,49 13 1 1 30,16!
14 2 0 17,49

Tabelle 3: Ladegeschwindigkeiten von Hyper-Density-Disketten, links mit Fastload, rechts ohne Fastload, aber mit den Ihnen nun bekannten Mitteln optimiert.


Jürgen Stessun
Aus: ST-Computer 12 / 1989, Seite 149

Links

Copyright-Bestimmungen: siehe Über diese Seite