Dlaczego 1541 był tak powolny?

Dec 13 2020

Stacja dyskietek Commodore 1541, sprzedawana do użytku z 64, była notorycznie powolna z powodów historycznych i technicznych :

  1. Marketing nalegał na kompatybilność z dyskietką 1540 sprzedawaną z Vic-20, która była powolna, ponieważ rejestr przesuwny w chipie 6522 VIA nie działał, więc musiał przesyłać trochę za jednym razem zamiast bajtu na czas.

  2. Potem musiał iść jeszcze wolniej, ponieważ w przeciwieństwie do Vic-20, chip wideo 64 musi całkowicie przejąć magistralę, jedną z ośmiu aktywnych linii skanowania.

W porządku, więc biorąc pod uwagę najgorszą kombinację tych dwóch czynników, bez czasu na rozwój, który pozwoliłby na złagodzenie problemu, można było zobaczyć, jak napęd może w końcu przesłać tylko jeden bit na poziomą pustą przestrzeń = 63 mikrosekundy. 1 / (63e-6) = 15873 bitów / s = 1984 bajtów / s.

Ale najwyraźniej rzeczywista prędkość wynosiła tylko 400 bajtów / s .

Dlaczego faktyczna prędkość była tylko jedną piątą tego, co wydawałoby się możliwe, nawet przy nieszczęśliwym połączeniu problemów historycznych i technicznych?

Odpowiedzi

14 Raffzahn Dec 13 2020 at 21:29

napęd mógłby w końcu przesyłać tylko jeden bit na poziomą pustą przestrzeń = 63 mikrosekundy. 1 / (63e-6) = 15873 bitów / s = 1984 bajtów / s.

Byłby to bitrate podczas transmisji w bajcie, ale bajty są umieszczane w ramkach i uzgadniane, co dodaje średnio 160 µs na bajt. Wynik (63 * 8) + 160 µslub ~ 664 µs na bajt. Tak więc górna prędkość transferu wynosi raczej 1500 bajtów / s lub mniej

Powyższe liczby to absolutne minimum, czas między bajtami może wynosić nawet 1000 µs i nadal mieści się w specyfikacji. Dodatkowe czasy zwrotu są przed komendami i pomiędzy blokami / komendami. Następnie 1541 potrzebuje czasu na reakcję i odpowiedź. I wreszcie strona C64 również potrzebuje zarządzania poza czystym transferem bitów. Wszystko to się sumuje.

Ale najwyraźniej rzeczywista prędkość wynosiła tylko 400 bajtów / s.

Przede wszystkim należy pamiętać, że te 400 bajtów / s dotyczą odczytu z rzeczywistego dysku FD. Z rzeczywistym ruchem głowy, opóźnieniem wyszukiwania, transferami i obracaniem. Często używany test polega na odczytaniu programu blokowego 185, co oznacza co najmniej 10 zmian ścieżek i tak dalej.

Dobrym punktem odniesienia dla rzeczywistych szybkości transferu przy użyciu niezmodyfikowanego C64 (nospeed loader, wszystkie oryginalne procedury używane) bez napędu mechanicznego może być interfejs SD2IEC . Oferuje średnią przepustowość 650 bajtów / s . SD2IEC to w istocie Atmel ATMega pracujący z częstotliwością 8 MHz bezpośrednio obsługujący szeregowy IEC. Jego odpowiedź i czas transferu są bliskie maksymalnego możliwego. Odczyt z SD / MMC nie wiąże się z żadnymi ruchami mechanicznymi, opóźnieniem wyszukiwania i dość szybkim przesyłaniem danych z SD / MMC do pamięci RAM kontrolera.