Re: 586 AMD 133 ??? Pytania, pytania ...

Autor: Gregorio Kus (Grego_at_RMnet.IT)
Data: Tue 19 Mar 1996 - 00:04:37 MET


On Mon, 18 Mar 1996 13:43:04 +0100 Slawomir Stuglik wrote:

> Z innej beczki, czy moze ktos wyjasnic mi co DOKLADNIE znacza
> ( i jak powinny byc ustawione dla 586AMD133 ) nastepujace opcje BIOS'u:
>
> Cache speed options DRAM read wait state
> DRAM write wait state
> PCICLK-to-ISA sysclk divisor PCICLK/4

W ogromnym skrocie i uproszczeniu (zaraz pewnie wsiada na mnie elektronicy):

Read wait state:
Procesor wystawia na szyne adresowa adres i ustawia sygnal MEMR (memory read)
[to tylko przykladowy skrot, w kazdym procesorze nazywa sie to inaczej, dla
uproszczenia rzecz jasna :-). W nastepnym cyklu zegara procesor najchetniej
przeczytalby sobie z szyny danych to co mu tam wystawila pamiec, ale...
jesli plyta jest taktowana z czestotliwoscia 33MHz to uplunelo zaledwie 30ns
wiec noramalna pamiec o szybkosci 70ns oczywiscie nie zdazyla sie jeszcze
"wyrobic" - stad koniecznosc przeczekania co najmniej jednego cyklu (to tak
na styk, 33MHz z pamiecia 60ns), odpowiedni ukladzik, ktoreym sterujesz
wlasnie tym ustawieniem BIOSu wystawia sygnal WAIT dla procesora, przez co
procesor w pewnym sensie "zatrzymuje sie", czyli wykonuje cykl "wait" zamiast
kolejnego cyklu instrukcji, ktory wykonalby od razu gdyby pamiec nadazala.

Write wait state:
Wyglada to bardzo podobnie, tyle ze tym raze procesor wystawia adres
na szyne adresowa i dane na szyne danych oraz ustawia sygnal MEMW,
nastepnie procesor musi poczekac az pamiec sobie "zdejmie" te dane
bo znow pamiec o szybkosci 60ns nie jest sie w stanie wyrobic.
Oczywiscie pamiec moze "zwolnic procesor" niemal od razu (przy zapisie)
po zobie "zatrzasnie" dane w szybkim "latch'u" ale potem i tak musi sobie
caly ten swoj cykl wewnetrzny wykonac, zanim dane znajda sie na swoim
miejscu i tym samym, zanim pamiec bedzie gotowa do nastepnego dostepu.

Nazwalem to "ogromnym uproszczeniem" gdyz tak to mniej wiecej
funkcjonowalo w czasach 8080 czy 6502, (oczywiscie wtedy [nawet na Z80
z 4MHz i z pamieciami 120ns] nie bylo potrzeby wstawiania zadnych wait
state'ow) dzis procesor komunikuje sie z pamiecia poprzez cache, w dodatku
ma z reguly "w srodku" wlasnego cache'a, pamieci maja rozne cudenka
(fast page, EDO etc), procesor pracuje z inna czestotliwoscia niz plyta,
wiec sprawy sie nieco pokomplikowaly, ale zapewne nie zalezy Ci
na wyjasnieniu tych wszystkich szczegolow? Nie zamierzasz chyba projektowac
mother board?

Cache to taka szybka pamiec (10 - 15ns), ktora [powiedzmy] jest w stanie
nadazyc za procesorem [jest oczywiscie za droga aby z niej zrobic caly RAM
i pozbyc sie klopotu], w ktorej przechowuje sie ostatnio uzywane dane wraz
z adresami [znow ogromne uproszczenie], a poniewaz wiekszosc programow
99% czasu swojej aktywnosci "przezywa w petlach", wiec majac w cache'u
malenka czesc calej pamieci mozna uzyskac znaczne przyspieszenie pracy.

Cache speed options (to sa takie dziwne ciagi cyfr od 2-1-1-1 do 3-3-3-3)
[choc sa BIOSy w ktorych jest to np. "wolno", "szybko", "bardzo szybko" ]
to sprawa jeszcze bardziej skomplikowana. W najwiekszym skrocie: kiedy z
pamieci pobierane sa jednym ciagiem (burst) KOLEJNE byte'y (slowa),
wybranie pierwszego z nich "kosztuje" 2 cykle a kazdego nastepnego
po jednym cyklu i to jest wlasnie 2-1-1-1. Znaczenia pozostalych - nietrudno
sie domyslic przez analogie.

Co do ustawiania: NIE MA ZADNEJ REGULY OGOLNEJ ktora moglaby Ci powiedziec:
przy pamieciach 70ns i procesorze DX4/120 MHz ustaw 3 waity na read a 2 na
write, zas przy DX2/66Hz 2 wait read/1wait write, a przy DX2/50 mozesz
trzymac obydwa na 1. Zalezy to od masy rzeczy, od chipsetu, od konstrukcji
plyty ogolnie. Pomoc ci moga wylacznie eksperymenty. Schodzic z opoznieniami
w dol, zapuszczac PO KAZDEJ POJEDYNCZEJ ZMIANIE Linuxa lub WARPa i patrzyc
czy sie zawiesza czy nie.

To samo z trybem dostepu do cache - zalezy to od czestotliwosci zegara,
ale i od szybkosci pamieci statycznych uzytych w cache'u jak i od
konstrukcji samego cache'a (sa co najmniej 3 glowne odmiany konstrukcyjne
cache'a, a kazda z nich ma jeszcze szereg pododmian) to jest pamiec
asocjacyjna, wiec mozna ja zrealizowac na wiele sposobow, nie jest to
takie proste jak zwykly RAM, gdzie wystawiasz adres i wysylasz lub
zczytujesz zaadresowane dane, cache musi sprawdzic czy zadany adres ma
zachowany, (dane z tego adresu) jesli jest to go znalezc, jesli nie to
przekazac zadanie do "glownego" RAMu. Od konstrukcji cache'a zalezy bardzo
wiele - w czasach kiedy zajmowalem sie troche wiecej sprzetem niz dzisiaj,
spotkalem sie nie raz z plytami 386DX/40MHz z 8kB cache ktore chodzily
zdecydowanie szybciej (zarowno w testach jak i "wzrokowo", w aplikacjach)
niz inne konstrukcje ktore "chwalily sie" posiadaniem 128kB.

W sumie: zadnych regul - tylko eksperymenty.

Ostatnie pytanie: PCI to ISA clock divisor - wyjasnili Ci juz inni.
Moge dorzucic tylko z wlasnych doswiadczen - dopoki uzywalem video
i HD na magistrali ISA - zawsze ja~ zylowalem. Tseng ET4000 np. chodzil
doskonale na 13MHz (40MHz/3), lecz karte multi I/O trzeba bylo juz
pieczolowicie dobierac, bo byly klopoty z kontrolerem twardego dysku.
Na 10 MHz - chodzilo dokladnie wszystko i w widoczny sposob szybciej.
Oczywiscie - w nowoczesnej plycie, gdzie urzadzenia o najwiekszych
przesylach wisza na PCI - nie ma to specjalnie sensu. Dzis uzywam 8.33
bo moj nowy modem wewnetrzny nie wyrabia sie nawet na 10MHz. Albo moze
wyrabia sie, tyle ze ma jakies swoje "temporyzacje" zalezne od clock'a
ISY.

pozdrawiam

Grego

--
/------------------------------------------------------------------
Gregorio Kus    Grego_at_RMnet.it                 Grego_at_cyberspace.org
ROMA, Italy     http://www.RMnet.it/~grego     Grego_at_FreeNet.hut.fi


To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 12:40:20 MET DST