Software > Alternative Betriebssysteme
EmuTOS 0.9.9 released
mfro:
Ich hab' gerade mal die XFERRATE-Dokumentation studiert.
Xferrate misst den Durchsatz von 192 kB grossen Rwabs()-Lesezugriffen. Wenn HDDRIVER die Möglichkeiten von IDE "multiple sectors" (256 Sektoren) ausreizt, sind das zwei Lesezugriffe.
EmuTOS braucht dafür im besten Fall 12.
Der praktische Nutzen ist aber - bei echten Dateizugriffen - wahrscheinlich eher gering. Die meisten realen Plattenzugriffe dürften deutlich darunterliegen (GEMDOS agiert auf Clustern und muss zwischendurch immer die FAT anschauen).
czietz:
--- Zitat von: mfro am Do 14.12.2017, 07:51:21 ---EmuTOS hat (mindestens) eine Indirektion mehr im Code, weil es das "verschränkte" IDE-Kabel unterstützt.
--- Ende Zitat ---
Das verschränkte/"twisted" Kabel an sich führt zu keiner zusätzlichen if-Bedingung in der Leseroutine. Also eben nicht...
if (is_twisted) {
read_twisted();
} else {
read_normal();
}
Das war ja gerade eine Vorbedingung für meine Patch: die Laufzeit der Funktionen für normale IDE-Interfaces sollte sich nicht verlängern.
--- Zitat von: mfro am Do 14.12.2017, 07:51:21 --- Das allein erklärt den Faktor >2 aber sicher nicht.
--- Ende Zitat ---
Wie Du tippe ich derzeit auch auf die "multiple sectors"-Leseaufrufe. Leider habe keine Zeit, mal bei mir zu messen.
Lukas Frank:
Mit HowFast bei minimal 1KB und maximal 100kB Blöcken zeigt das Programm 400kB/s an. Bei maximal kleineren Böcken noch schlechtere Werte. Das Programm von ppera landet auch wie HowFast bei knapp 400kB/s ...
Gefühlt ist zum Beispiel das speichern der Desktop.inf oder das kopieren von Daten auch langsam. Da wird immer sowas wie eine Gedenk Sekunde eingelegt, meine ich ...
mfro:
--- Zitat von: czietz am Do 14.12.2017, 12:41:08 ---Das verschränkte/"twisted" Kabel an sich führt zu keiner zusätzlichen if-Bedingung in der Leseroutine.
--- Ende Zitat ---
... vielleicht blick' ich ja im Code nicht ganz durch, aber das hier:
--- Code: ---
796 if (status1 & IDE_STATUS_DRQ) {
797 if (info->twisted_cable) {
798 ide_get_data((volatile struct IDE *)(((ULONG)interface)+1),buffer,xferlen,need_byteswap) ;
799 } else {
800 ide_get_data(interface,buffer,xferlen,need_byteswap);
801 }
802 } else {
803 rc = EREADF;
804 }
--- Ende Code ---
sieht mir schon ein wenig danach aus? Ja, nicht in der Leseroutine, aber einmal pro DRQ Block.
1ST1:
Da ist sicher in ide_get_data noch eine Unterscheidung anhand des Übergabeparameters need_byteswap notwendig, und der Byteswap braucht ja auch noch drei Befehle pro Datenwort.
Und wie oben schon angedeutet, macht der Byteswap für ein rein (Emu)TOS/MiNT/Debian68k benutztes Medium (mit (annähernd) AHDI-kompatiblen Partitionsschema) eh keinen Sinn.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln