Re: i430FX i tryby PIO/DMA (bylo: Plyta Glowna i Vobis)

Autor: Maciej W. Rozycki (macro_at_macro.ds2.pg.gda.pl)
Data: Tue 18 Feb 1997 - 14:28:09 MET


On 16 Feb 1997, Andrzej Karpinski wrote:

> >2. Dysk moze transmitowac w PIO3(2) z taka sama szybkoscia jak w PIO4 (no
> >chyba, ze czyta nie z nosnika, a z pamieci podrecznej, ale to zdarza sie
> >niezmiernie rzadko).
>
> Szczerze mowiac faktyczna roznica miedzy PIO3 a PIO4 (przy 84MHz external
> CPU clock) przy szybkim (WDC AC 33100H) dysku wynosi ponizej 5%. Roznica
> miedzy PIO2 a PIO4 jest nieco wieksza, aczkolwiek nie jest to tez wiecej
> niz 10% (jedynie testy pokazuja roznice - w zasadzie jej nie widac).

 Zalezy to m.in. od jakosci firmware. Np. moj Seagate 2 GB osiaga w
tescie liniowego odczytu 16 MB ('hdparm') ok. 5 MB/s w PIO4 i ok. 2.5 MB/s
w DMA MW2 mimo, ze wg specyfikacji te tryby maja te same parametry
czasowe. Ponadto, przelaczenie w PIO3 lub MW1, nie daje zadnych zmian w
wydajnosci.

 Specyfikacja podaje nastepujace czasy pojedynczych cykli:
PIO0 = 600 ns, PIO1 = 383 ns, PIO2 = 240 ns, PIO3 = 180 ns, PIO4 = 120ns,
SW0 = 960 ns, SW1 = 480 ns, SW2 = 240 ns,
MW0 = 480 ns, MW1 = 150 ns, MW2 = 120 ns.
Sam wiec widzisz, jak to sie ma do rzeczywistosci.

> Podobnie ma sie sprawa z transferami blokowymi - doslownie
> kilkuprocentowe przyrosty predkosci w najlepszym przypadku. Biorac pod
> uwage ilosc problemow jakie moze powodowac wyzsze PIO zastanawiam sie, po
> co wlasciwie jest ta zaba. Z drugiej strony sam szaleje z dyskami (PIO4,
> MW-DMA2 @84MHz ex.) i pewna nieznacza poprawe widac, a ze udalo sie
> doprowadzic do sytuacji gdzy problemy nie wystepuja korzystam z tych
> kilku procent przyspieszenia. Kilka obserwacji:

 Transfery blokowe przydaja sie bardzo, w polaczeniu z DMA, w systemach
wielozadaniowych. Poza tym mozna sobie wyobrazic bezposrednie transmisje
po PCI pomiedzy ATA, VGA i siecia, prawie bez udzialu procesora i pamieci
plyty glownej. ;-)

 Wydajnosc transferow blokowych tez mocno zalezy od firmware. Niektore
dyski zwalniaja wyraznie powyzej pewnego rozmiaru bloku. Czasami jednak to
spowolnienie jest rekompensowane mniejszym obciazeniem procesora. Nie znam
jednak zadnego testu (nawet dedykowanego do okreslonego srodowiska), ktory
potrafilby ta zaleznosc oszacowac (i nie podejmuje sie napisac). ;-)

> * transmisja do cache dysku w normalnych warunkach to ok. 12-13MB/s.
> * w warunkach optymalnych udaje sie osiagnac 15MB/s
> * kombinujac specjalnie udaje sie osiagnac w standardowym EIDE (nie
> UltraATA!) 19MB/s

 Rozumiem, ze chodzi o "write posting", gdyz 150 Mb/s z nosnika to zaden
dysk ATA aktualnie nie osiaga (a trzeba jeszcze doliczyc opoznienia na
synchronizacje i ECC).

> * w porownaniu z PIO3 daje to 2-5% wzrost realnej wydajnosci dysku ;)

 Jak mam to rozumiec?

> Btw. nie jestem przekonany co do znikomego znaczenia cache wewnatrz dysku.

 Ja nie twierdzilem, ze cache "ma znikome znaczenie". Pamiec ta poprawia
ogolna sprawnosc dysku: umozliwia "write posting" i "read prefetching". W
ten sposob mozna np. dostarczyc nowych danych, zanim fizycznie dokonane
zostana wczesniejsze operacje zapisu. Niemniej jednak, na transfer z
dysku, cache wplyw ma niewielki.

> >4. PIIX tak naprawde nie obsluguje PIO4. Niestety. W kontrolerach
> >zawartych w tym ukladzie nie konfiguruje sie trybu PIO czy DMA, a liczbe
> >taktow zegara pomiedzy zadaniem transmisji, a momentem probkowania IORDY
> >oraz pomiedzy momentem probkowania i kolejnym zadaniem transmisji.
> >Minimalne wartosci tych opoznien wynosza odpowiednio: 2 takty i 1 takt, co
> >daje w sumie 3 takty. Niestety kontrolery dyskow PIIX taktowane sa zegarem
> >PCI, co daje max. 33 MHz / 3 = 11 MHz i to jest akurat PIO3. Koniec,
> >kropka. Dla czestotliwosci 30 i 25 MHz jest to odpowiednio mniej.
>
> Pytanie: skad te informacje? Sa interesujace i chcialbym dotrzec do
> zrodla. Podobnie poprzedni punkt nt. IORDY.

 Troche pokielbasilem (ech, ta pamiec). Oczywiscie transfery danych po
zlaczu ATA sa 16-bitowe (chyba, ze ustawi sie 8 bitow, przy czym nie
wszystkie urzadzenia to obsluguja). Przy niezmienionych pozostalych
zalozeniach, daje to 22 MHz. Z tym, ze jedna z firm produkujacych BIOSy,
Microid Research, twierdzi, ze nie da sie zejsc ponizej 5 taktow bez
ryzyka przeklaman. Odsylaja przy tym do Quantum, do dokumentu 'ATA Signal
Integrity Issues'. Nie widzialem tego dokumentu, ale mam powody sadzic, ze
maja racje. Z drugiej strony, moj BIOS (AMI) inicjuje zaleznosci czasowe
dla dysku PIO4 na 3 i 2 odpowiednio, co daje 5 taktow @ 25 MHz, czyli 10
MB/s.

 Zrodla informacji -- bardzo rozne, m.in. rozne specyfikacje i "data
sheets" oraz wlasne doswiadczenia. Co Cie konkretnie interesuje? (e-mail)

> PS. Na moim ASUSku T2P4 zupelnie nie potrafie tego potwierdzic co
> napisales - wychodzi szybciej niz wg. tego teoretycznie powinno.
>
> > A tak na marginesie, to po odpowiednim ustawieniu parametrow dysku PIO2,
> >wyciagam z niego pod Linuxem 1500 kB/s zamiast 800 kB/s (chyba warto bylo
> >w nim pogrzebac ;-) ). Niestety, BIOS chyba nie do konca go inicjuje, gdyz
> >po restarcie, DOS pokazuje mi na nim sieczke. Moze wylaczenie zasilania by
> >pomoglo, ale ostatnio tego nie czynie.
>
> Hihi! :) Powiedz to Youhou. Dowiesz sie, ze Linux nie korzysta z BIOS
> (sorry ze jestem zlosliwy) ;->>>>>

 Cos Ci ta zlosliwosc nie wyszla, gdyz Linux (niestety?!) korzysta z BIOSa
co najmniej w dwoch przypadkach:

1. Wykrywanie urzadzen PCI. Wynika to (jak mi sie zdaje) z pewnej
dowolnosci w interpretacji specyfikacji PCI widocznej u producentow
chipset-ow. Spotkalem np. plyte glowna, na ktorej generowane byly cykle
konfiguracyjne typu 1 (lokalna magistrala), niezaleznie od numeru
magistrali podawanego w rejestrze adresowym (ciekawe, co by bylo, gdyby
wetknac do tej plyty karte 'PCI-PCI bridge'). 'Host bridge' tez jest
roznie dekodowany: w Tritonie jako urzadzenie 0, w Saturnie i Neptunie
jako urzadzenie 5; spotkalem tez plyte, gdzie mial numer F. Ponadto
wykrywanie typu mechanizmu adresowania przestrzeni konfiguracyjnej
zaimplementowanego w danym chipsecie nie jest sprawa trywialna i moze
prowadzic do niepozadanych efektow ubocznych (np. do tzw. padu).
Zwlaszcza mechanizm 2 (obecnie przestarzaly), ze wzgledu na szeroki zakres
portow we/wy lubi sprawiac niespodzianki. BIOS "wie", jaki mechanizm ma
dana plyta zaimplementowany i oczywiscie powinien "umiec" z niego
skorzystac.

2. Korzystanie z nieznanych urzadzen. Sa to wszelkie urzadzenia, dla
ktorych nie ma bezposredniego wsparcia w jadrze lub w oprogramowaniu, a
ktore dzialaja niejako same z siebie (tj. po wstepnej inicjacji lub nawet
bez). Urzadzenia te sa zwykle programowane przez BIOS podczas procedury
startowej sprzetu. Przyklady: adresy we/wy i przerwania urzadzen plyty
glownej takie, jak interface szeregowy i rownolegly, rejestry routingu
przerwan PCI, sterownik przerwan APIC, czy tez wlasnie rejestry zaleznosci
czasowych ukladow PIIX badz PIIX3. O ile parametry urzadzen ATA(PI) moga
byc zmieniane w miare dowolnie przy uzyciu programu 'hdparm', o tyle
rejestry konfiguracyjne PCI wymagaja w zasadzie napisania odpowiedniego
programu i dysponowania dokumentacja chipsetu.

 To drugie, to w zasadzie nie tyle korzystanie, co poleganie na BIOSie.

--
+  Maciej W. Rozycki, Technical University of Gdansk, Poland   +
+--------------------------------------------------------------+
+        e-mail: macro_at_ds2.pg.gda.pl, PGP key available        +


To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 15:54:57 MET DST