Kontroler ATA SIL 0680

Micro Amiga One posiada zintegrowany kontroler IDE na układzie VIA 686B. Od 2005 roku używam go z powodzeniem z 80-cio GB dyskiem twardym firmy Seagate i nagrywarką DVD firmy Plextor. Oba urządzenia bezproblemowo pracują w trybie UDMA 5. Dla AmigaOS 4.0 istnieją jednak także sterowniki dla kontrolerów opartych na układach Silicon Image (SIL). Jedno z takich rozwiązań (kontroler SIL3112 SATA z 74 GB dyskiem Western Digital Raptor) sprawdził z dużą Amigą One Stian Strom z serwisu AmigaWeb.net. Z kolei redakcja eXeca wyznaczyła mnie do przetestowania karty PCI firmy UNITEK - kontrolera SIL0680 ULTRA ATA/133 IDE RAID z micro Amigą One. Dodatkowo, aby test nie był tylko nudną zabawą z twardym dyskiem, otrzymałem adapter kart pamięci typu compact flash - IDE2CF i 2 GB kartę firmy SanDisk. Oprócz porównania kontrolerów IDE na układzie VIA i SIL ten artykuł ma także ogólnie zademonstrować w jaki sposób UBoot i AmigaOS 4.0 radzą sobie z urządzeniami IDE.

Testowane urządzenia:

Kontroler SIL0680 + dysk twardy Seagate

Pierwszym krokiem było włożenie karty kontrolera w slot PCI i podłączenie dysku twardego. Karta firmy UNITEK posiada dwa gniazda IDE - jedno w kolorze niebieskim, a drugie w kolorze białym. Do każdego z nich mogą zostać podłączone dwa urządzenia. Dysk twardy skonfigurowany jako MASTER podłączyłem więc do pierwszego gniazda i uruchomiłem Amigę. Oczywiście UBoot był skonfigurowany tak, aby wystartować z urządzenia podpiętego pod kontroler VIA na płycie głównej. Przerwałem więc start klawiszem ENTER i jako Boot Device wybrałem "SILII Parallel Disk". Na dysku został znaleziony SLB (kod inicjujący Amigę One) i już mogłem cieszyć się AmigaOS. Resztę konfiguracji przeprowadziłem w systemowych preferencjach UBoot.

UBoot wykrywa SIL0680 i dysk twardy Seagate:

Units on controller Silicon Image Parallel ATA 133
IDE device: 0 Model: ST380011A Firm: 801 Ser#: 5JVHNGRO
Type: Hard Disk
Supports: 48-bit addressing
Capacity: 76319.0 MB = 74,5 GB (156301488 x 512)

Jak sprawdzić aktualny tryb pracy dysku i jego maksymalne możliwości?

C:idetool -u sii0680ide.device 0
// lub
C:idetool -l sii0680ide.device

Jak "w locie" przełączyć się z trybu PIO na UDMA (lub odwrotnie)?

C:idetool -x sii0680ide.device 0 12 - PIO 4, 16 MB/s
C:idetool -x sii0680ide.device 0 69 - UDMA 5, 100 MB/s

W zakładce "Uruchamianie" należy skonfigurować źródła rozruchu. Jako pierwsze pozostawiłem Dysk VIA IDE, a jako drugie wybrałem Dysk SIL IDE. W zakładce "Porty IDE" dostępna jest kolejna zakładka, która w całości odnosi się do kontrolera SII ATA(680). W niej możemy skonfigurować obie szyny (gniazda).

Standardowo wszystkie opcje ustawione są na "Automatycznie" - także te, które dotyczą trybów przesyłania (UBoot wtedy wybiera najlepszy dostępny tryb PIO). Kontroler SIL oferuje tryb UDMA 6 ale niestety to mój dysk Seagate pracuje maksymalnie w UDMA 5. Tak więc ustawiłem, po czym dokonałem zapisu do pamięci UBoota i zrestartowałem Amigę.

Amiga nie znalazła kodu inicjującego SLB na pierwszym źródle rozruchu (zintegrowany kontroler VIA), ale poszukała go także na kontrolerze SIL (drugie źródło rozruchu). Po uruchomieniu AmigaOS wykonałem porównawcze testy prędkości, poniżej przedstawiam wyniki.

SIL
C:scsispeed drive=sii0680ide.device:0 fast buf1=65536 buf2=0 buf3=0 buf4=0
VIA
C:scsispeed drive=a1ide.device:0 fast buf1=65536 buf2=0 buf3=0 buf4=0
35346841 bytes/sec32184729 bytes/sec
33144832 bytes/sec32155238 bytes/sec
32250265 bytes/sec31843942 bytes/sec
35104358 bytes/sec32220774 bytes/sec
35212492 bytes/sec31942246 bytes/sec

SIL - kopiowanie pliku (A2000PPC_SVCD_version.mpg, ok. 146 MB) z partycji SFS na SFS

kopiowanie SIL
21,772922

VIA - kopiowanie pliku (A2000PPC_SVCD_version.mpg, ok. 146 MB) z partycji SFS na SFS

kopiowanie VIA
23,160904

Oczywiście po zakupieniu nowszego dysku i pracy w trybie UDMA 6 wyniki dla SILa powinny być jeszcze trochę lepsze.

Taśma z dysku twardego Seagate w pierwszym gnieździe kontrolera SIL0680, w czerwonym kółku piny służące do podłączenia diod LED sygnalizujących pracę urządzeń na obudowie komputera. W tle, na płycie głównej, widoczny układ VIA 686B.

Kontroler SIL0680 + adapter IDE2CF + SanDisk 2.0 GB

Testowany adapter IDE2CF jest tanim rozwiązaniem i nie wspiera trybów UDMA. Jednak seria ULTRA II kart CF firmy SanDisk też nie należy do najszybszych - producent pisze o transferach rzędu 10 MB/s (zapisu 9MB/sek, odczyt 10MB/sek).

CompactFlash (na podstawie pl.wikipedia.org) to karta pamięci, w której zastosowano pamięć Flash EEPROM. Znalazła zastosowanie w takich urządzeniach jak aparaty cyfrowe, przenośne odtwarzacze muzyki i inne. Standard został przedstawiony w 1994 r. i CF była pierwszą dostępną na rynku kartą flash. Cechą kart CF jest interfejs elektroniczny prawie identyczny z interfejsem IDE stosowanym do obsługi dysków - to umożliwia stosowanie kart Compact Flash jako dysków o bardzo dużej wytrzymałości mechanicznej, niskim poborze prądu oraz małym wydzielaniu ciepła. Na zdjęciu testowana karta typu CF firmy SanDisk, model: ULTRA II 2.0 GB.

Na zdjęciu IDE2CF - adapter kart pamięci typu compact flash podłączany pod interfejs IDE. Dzięki temu adapterowi można używać kart pamięci jako dysków twardych. Karta CF zachowuje się jak zwykły HDD z całą jego strukturą (cylinders, heads i sectors).

Adaptery IDE2CF występują w różnych wersjach - złącze IDE może występować jako gniazdo lub wtyk, dostęp do adaptera może być tylko wewnątrz obudowy komputera lub adapter może być umiejscowiony na śledziu PCI (karty CF wkładane z tyłu komputera). Ja do testów otrzymałem wersję posiadającą 40-pinowe złącze IDE w postaci prostego wtyku. Musiałem więc skorzystać ze specjalnej taśmy IDE (z jednej strony zakończonej gniazdem), aby zmienić położenie adaptera i zamknąć obudowę komputera.

Jak widać na zdjęciach adapter wymaga podłączenia zasilania poprzez złącze kompatybilne z wtyczką zasilania stacji dysków (FDD). Dostępne są trzy zworki - dwie pierwsze (JP1 i JP2) odpowiadają za wybór złącza (istnieje możliwość zasilania także przez złącze IDE) i napięcia zasilania. JP3 to kolejność dysków - Master/Single lub Slave. Żółta dioda wskazuje wykrycie karty, zielona odczyt lub zapis danych, a czerwona zasilanie adaptera.

UBoot wykrywa SIL0680 i kartę CF:

Units on controller Silicon Image Parallel ATA 133
IDE device: 0 Model: SanDisk SDCFH-2048 Firm: HDX 4.04 Ser#: 012606E2907P5131
Type: Removable Hard Disk
Capacity: 1953.9 MB = 1.9 GB (4001760 x 512)

W pierwszym gnieździe kontrolera SIL poprzednio pracował w trybie UDMA 5 dysk Seagate. W CLI komenda C:idetool -u sii0680ide.device 0 wyraźnie pokazuje nam jednak, że tryby UDMA nie są dla karty CF dostępne i UBoot automatycznie ustawił najlepszy z możliwych tryb - PIO 4. Sprawdzamy więc realny transfer:

c:scsispeed drive=sii0680ide.device:0 fast buf1=65536 buf2=0 buf3=0 buf4=0
5229772 bytes/sec
5180620 bytes/sec
5252710 bytes/sec
5180620 bytes/sec
5187174 bytes/sec

Przy pomocy systemowej aplikacji MediaToolBox na karcie CF instalujemy RDB i kod inicjujący Amigę One - SLB. Następnie zakładamy i formatujemy (czas pełnego formatu to około 15 minut) partycję w FFS2.

Na tak przygotowaną kartę można zainstalować system AmigaOS (np. w innej wersji niż ta, której aktualnie używamy). Ja z płyty CD zainstalowałem AmigaOS 4.0 Update 4. Aby choć trochę przyśpieszyć wolne kopiowanie małych plików na partycję FFS2 warto skorzystać z pluginu fs_plugin_cache (run >NIL: C:fs_plugin_cache DH11: - można to dodać na stałe do sekwencji startowej).

Po restarcie komputera w UBoocie wybieramy jako źródło rozruchu "SILII Parallel Disk". I znowu na karcie CF zostanie znaleziony kod inicjujący Amigę One (SLB) i wczyta się Kickstart. Następnie załaduje się system z bootowalnej partycji o najwyższym priorytecie (ustalamy go w MediaToolBox). W moim przypadku była na niej oczywiście najnowsza wersja AmigaOS 4.0. Dlatego, aby wystartować Update 4 musiałem wykonać reset z klawiatury, wejść do Early Startup Menu (wciśnięcie dwóch klawiszy myszki) i wybrać partycję DH11 znajdującą się na karcie CF. Po kilku sekundach (cudowny brak odgłosów pracy dysku!) pojawił się blat Workbencha.

I tutaj dochodzimy do sedna zabawy z kartą CompactFlash. Jak wiadomo system AmigaOS bardzo szybko staruje, nie zapisuje i nie przetwarza danych na dysku, aplikacje użytkowe także zajmują bardzo mało. Osoby, które nie gromadzą danych multimedialnych (muzyka, zdjęcia, filmy) mogą więc pokusić się o całkowite zrezygnowanie z użytkowania dysku twardego na rzecz tego typu karty pamięci. Pozostanie szum niewielkiego wentylatora na procesorze i zazwyczaj cichego wiatraka w zasilaczu.

CLI - kopiowanie pliku (A2000PPC_SVCD_version.mpg, ok. 146 MB) z partycji SFS na kartę CF (PIO 4) z systemem plików FFS2, wynik - ponad 4 minuty. Dane multimedialne nie wchodzą więc w grę, nie tylko ze względu na ograniczoną pojemność katy CF.

Niestety po zapisaniu RDB i SLB na karcie CF nie da się jej sformatować pod Smart FileSystem. Tym samym nie da się zabootować AmigaOS z SFS. Jörg Strohmayer, deweloper zajmujący się rozwojem SFS dla AmigaOS, tłumaczy to luką w FFS2 (choć w tym wypadku to zaleta), który nie sprawdza faktu, iż ma do czynienia z jednostką typu removable (wymiennym nośnikiem danych). Na tego typu nośniku nie powinno zapisywać się Ridig Disk Block.

CLI - kopiowanie pliku (A2000PPC_SVCD_version.mpg, ok. 146 MB) z partycji SFS na kartę CF (PIO 4) z systemem plików SFS, wynik to ok. 32 sekund.

Dla SFS można jednak stworzyć odpowiednią mountlistę. Na przykład na bazie mountlisty dla DVD+RW (MountRainer w AmigaOS 4.0 korzysta z SFS). Wystarczy zmienić BlockSize z 2048 do 512, a w tooltypach podać odpowiedni DEVICE i UNIT. Podobną mountlistę można przygotować (odwołując się do L:CrossDOSFileSystem) dla karty CF w FAT.

Szymon Tomzik