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!
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.