Software > Alternative Betriebssysteme

EmuTOS 0.9.9 released

<< < (5/10) > >>

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