← ST-Computer 12 / 1989

Wie schnell sind Disketten zu laden?

Grundlagen

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