Professional Documents
Culture Documents
Metzger P. - Anatomia PC
Metzger P. - Anatomia PC
ISBN: 83-7197-082-X
Wydawnictwo HELION
ul. Chopina 6,44-100 GLIWICE
tel/fax.: (32) 230-98-63, (32) 232-22-19
e-mail: helion@helion.com.pl.
http://www.helion.com.pl (najnowszy katalog, możliwość zamawiania książek przez Internet)
MS DOS i MS Windows to zastrzeżone znaki firmy Microsoft. Inne występujące w tekście znaki
są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje
były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie,
ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich.
Printed in Poland.
Spis treści 3
Spis treści
Rozdział 1.
Komunikacja procesora
z innymi elementami architektury komputera...................... 13
Procesor...........................................................................................................................13
Przetwarzanie rozkazów........................................................................................ 15
RISC i CISC.......................................................................................................15
Pipeline................................................................................................................16
Techniki przyspieszania.................................................................. 19
Dostęp do pamięci................................................................................................... 26
Adresowanie...................................................................................................... 28
Stronicowanie.................................................................................................... 30
Caching.....................................................................................................................31
Topologie...........................................................................................................33
Organizacja pamięci podręcznej.................................................................... 34
Pamięć podręczna procesora 80386...............................................................36
Zakres pokrywany przez pamięć podręczną................................................. 40
Obsługa przestrzeni adresowej I/O ...................................................................... 41
Procesor 8086.................................................................................................... 42
Procesory 80386 i 80486................................................................................. 42
Pentium................................................................. 43
Funkcje kontrolne i sterujące................................................................................ 43
BIST....................................................................................................................44
Kontrola TLB.................................................................................................... 44
Kontrola pamięci podręcznej...........................................................................44
Przejście w stan wysokiej impedancji........................................................... 44
JTAG....................................... 45
Częstotliwość taktowania....................................................................................... 47
Zasilanie....................................................................................................................49
Przegląd architektury procesorów.........................................................................52
Procesory AM D................................................................................................. 53
Procesory Cyrix.................................................................................................60
Procesory Intel................................................................................................... 66
4 Anatomia PC
Systemy multiprocesorowe..................................................................................167
Architektura MPP.............................................. 168
Architektura U M A ......................................................................................... 169
Komunikacja z pamięcią........................ 170
Buforowa pamięć podręczna (Cache)..........................................................171
Obsługa układów peryferyjnych.................................................................. 174
Architektura komputerów przenośnych................................................................... 182
Złącze PCMCIA.................................................................................................... 183
Rozdział 2.
Procesor z rozszerzeniem MMX ....................................... 185
Zmiany w architekturze..............................................................................................185
Rozpoznanie procesora P55C ............................................................................. 187
Nowe rejestry.........................................................................................................188
Nowe typy danych................................................................................................ 191
‘ Nowe rozkazy.......................................................................................................191
Przykład działania: Rozkaz PACKUSWB.................................................. 194
Przykład działania: Rozkaz PAD DSW ....................................................... 195
Przykłady zastosowań................................................................................................. 196
Blue-Box................................................................................................................ 197
Przetwarzanie pliku W A V ............... 198
Rozdział 3.
System obsługi przerwań sprzętowych............................ 199
Układ scalony 8259A .................................................................................................201
Cykl przyjęcia zgłoszenia.......................................................................................... 202
Kaskadowe łączenie kontrolerów przerwań........................................................... 204
Fazy obsługi przerwań od układu Slave......................................................205
Programowanie kontrolera przerwań........................................................................206
Inicjowanie pracy układu.............................................................................. 207
Polling........................................................................................................................... 211
Przerwanie niemaskowalne (NM I).................................................................. ....... 211
Rozdział 4.
Kontroler DMA .............................................................. 213
Układ scalony 8237A ................................................................................................. 214
Tryby pracy kontrolera DM A....................... -......... 217
Kaskadowe łączenie układów 8237A .......................................................................218
Programowanie kontrolerów D M A .......................................................................... 219
Adresy portów kontrolerów DMA w komputerze IBM PC/XT......................... 220
Adresy portów kontrolerów DMA w komputerze IBM PC/AT......................... 221
Budowa rejestrów wewnętrznych............................................................................. 223
6 Anatomia PC
Przebieg transmisji.......................................................................
Komputer IBM PC............................................................................................... 226
Komputer IBM PC /X T........................................................................................227
Komputer IBM PC /A T........................................................................................228
Kanały 16-bitowe........................................................................................... 228
Układ odświeżania pamięci.......................................................
Rozdział 5.
Kontroler napędu dysków elastycznych.......................... 231
Zapis informacji na dyskietce................................................................................... 231
Fizyczna organizacja danych na dyskietce............................................................. 233
Programowanie operacji dyskowych z poziomu systemu M S-DOS.................. 236
Obsługa dysków za pomocą funkcji BIOS............................................................. 240
Bezpośredni dostęp do kontrolera napędu dysków elastycznych.......................248
Rejestry kontrolera napędu dysków elastycznych...........................................249
Cykl rozkazowy kontrolera.......................................................................................251
Faza przygotowawcza......................................................................................... 251
Faza przekazywania rozkazu.............................................................................. 252
Budowa przykładowego rozkazu - rozkaz RS {Read Sector) .......................252
Alternatywne metody transmisji danych .................................................. 258
Uwzględnianie mechanicznych własności napędu............................................... 259
Zastosowanie kodów C R C ...................................................
Rozdział 6.
Obsługa dysku twardego............................................... 265
Budowa kontrolera..................................................................................................... 265
Systemy kodowania MFM i RLL............................................................................. 267
Fizyczna organizacja danych i formatowanie......................................................... 269
Formatowanie wysokiego poziomu................................................................... 270
Formatowanie niskiego poziomu........................................................................271
Błędy i ich korekcja......................................................................
Standard AT-BUS........................................................................................................276
Logiczny opis złącza............................................................................................ 277
Złącze fizyczne —Host Adapter..........................................................................278
Dostęp CPU do dysku A T -B U S.........................................................................281
Cykl programowania kontrolera.........................................................................288
Przykład realizacji rozkazu CZYTAJ SEKTOR........................................290
Przykład realizacji rozkazu samoidentyfikacji dysku...............................293
Funkcje oszczędnościowe....................................................................................296
System automatyczny.....................................................................................297
Rozkazy specjalne........................................................................... -..............297
Spis treści 7
Standard EIDE.............................................................................................................301
Pojemność dysku............................................. 302
Logical Block Address.................................................................................. 304
Extended Cylinder Head Sector ...............................................................305
Prędkości transmisji danych................................................................................ 305
Tryby PIO.................................................................... 305
Tryby DM A..................... 306
Zwiększenie liczby urządzeń.............................................................................. 307
Poszerzenie oferty urządzeń IDE........................................................................309
Standard SD X .............................................................................................................. 309
Standard SC SI.............................................................................................................313
Ogólny opis systemu............................................................................................ 313
Realizacja magistrali............................................................................................ 316
SCSI a komputery klasy PC ..........................................................................319
Platforma fizyczna................................................................................................321
Wersja asymetryczna......................................................................................321
Wersja symetryczna.......................................................................................323
Praktyczna realizacja obciążenia końców linii...........................................324
Organizacja pracy magistrali SCSI.................................................................... 327
Konwencja oznaczania sygnałów.................................................................327
Fazy pracy magistrali.....................................................................................327
Transfer danych w fazach informacyjnych................................................ 342
Sytuacje wyjątkowe........................................................................................ 350
Rozkazy systemowe...................... 353
Informacja statusowa......................................................................................357
Komunikaty......................................... 359
System wskaźników....................................................................................... 364
Przykładowa wymiana danych...........................................................................366
Przykład prostego kontrolera SCSI........................ 370
Programowanie operacji dyskowych........................................................................375
System operacyjny M S-DOS.............................................................................. 375
Przerwanie INT25h DOS - czytaj sektor logiczny................................... 376
Przerwanie INT 26h DOS - pisz sektor logiczny..................................... 376
Przerwanie INT 25h DOS - czytaj sektor logiczny, tryb poszerzony....377
Przerwanie INT 26h DOS - pisz sektor logiczny, tryb poszerzony....... 378
Przerwanie INT 2 lh D O S ............................................................................. 379
Przerwanie INT41h i INT46h.......................................................................379
Funkcje BIOS-u.................................................................................................... 379
Numeracja cylindrów.....................................................................................380
Numeracja dysków......................................................................................... 380
Kody błędów................................................................................................... 380
Funkcje przerwania 13h............................... 380
8 Anatomia PC
Rozdział 7.
Karty graficzne.................................................
Przegląd kart graficznych.......................................................................................... 395
Omówienie kart graficznych EGA, VGA i SVGA................................................ 399
Tryby tekstowe...................................................................................................... 402
Tryby graficzne........................................................................
Tryby zapisu i odczytu pamięci obrazu............................................................ 404
Standard VESA.....................................................................................................406
Rejestry sterowników EGA/VGA............................................................................406
Rejestry zewnętrzne ( external/generaI registers) ............................................408
Układ sekwencyjny (sequencer) ........................................................................ 410
Układ graficzny (graphics controller) .............................................................. 412
Układ sterowania atrybutem (attribute controller) ..........................................417
Przetwornik cyfrowo-analogowy (digital to analog converter) ................... 421
Układ sterowania wyświetlaczem (CRT controller) ....................................... 423
Funkcje BIOS obsługujące karty graficzne.........................................
Funkcje określające tryb pracy i ogólne parametry sterownika......... 433
Funkcje dostępu do ekranu................................................................................. 436
Funkcje służące do definiowania kolorów........................................................440
Funkcje generatora znaków................................................................................ 446
Funkcje konfigurujące sterownik....................................................................... 453
Funkcje uzupełniające.......................................................................................... 457
Dodatkowe funkcje obsługiwane przez VESA-BIOS..................................... 464
Przykłady zastosowania funkcji BIOS-u kart graficznych................................... 470
Rozpoznanie typu karty graficznej................. 470
Sprawdzenie ilości pamięci zainstalowanej na karcie graficznej.................. 471
Zmiana wyglądu znaku........................................................................................ 471
Rozdział 8.
Grafika PC w dobie multimediów..................................... 473
Akceleratory graficzne................................................................................................474
Sprzętowe wspomaganie funkcji video..............................................................475
Interfejs programowy........................................................................................... 477
Obrazy trójwymiarowe..................................................................................-........... 479
Tworzenie i przechowywanie obiektów 3D ......................................................479
Mapowanie............................................................................................................. 480
Skrót perspektywy.......................................................................................... 484
Korekcja perspektywy....................................................................................486
Mipmapping.................................................................................................... 487
Akceleratory 3 D .................................................................................................... 488
Przygotowanie trójkąta (Triangle Setup)....................................................488
Dostęp do pamięci obrazu............................................................................. 492
Spis treści 9
Rozdział 9.
System odmierzania czasu..............................................529
Układ 8253/8254.........................................................................................................529
Tryb 0................................................................................................................ 532
Tryb 1................................................................................................................532
Tryb 2 ................................................................................................................532
Tryb 3................................................................................................................532
Tryb 4 ................................................................................................................533
Tryb 5 . ..........................................................................................................533
Programowanie generatora 8253/8254.................................................................... 534
Zegar systemowy.........................................................................................................537
Układ odświeżania pamięci dynamicznej................................................................ 538
Obsługa głośnika.........................................................................................................540
Drugi układ 8254 i jego zastosowanie......................................................................542
Rozdział 10.
Pamięć CMOS-RAM.................... ...,............................... 545
Układ scalony MC 146818......................................................................................... 546
Organizacja pamięci CM O S................................................................................546
Funkcje BIOS obsługujące pamięć konfiguracji .......................................... 555
Bezpośredni dostęp do pamięci CMOS................................................................... 558
10 Anatomia PC
Rozdział 11.
Łącze równoległe.......................................................... 561
Obsługa drukarki z łączem równoległym................................................................562
Dostęp do łącza równoległego z poziomu systemu operacyjnego D O S 564
Dostęp do łącza równoległego poprzez funkcje BIO S..........................................566
Ogólne zastosowanie łącza równoległego - dostęp do portów........................... 568
Rozdział 12.
Łącze szeregowe........................................................... 573
Transmisja synchroniczna............................................................................. 573
Transmisja asynchroniczna...........................................................................573
Asynchroniczna transmisja szeregowa i ramka danych........................................573
Układ scalony 8250.................................................................................................... 575
Interfejs RS-232C....................................................................................................... 579
Tryb simpleksowy.......................................................................................... 581
Tryb półdupleksowy.......................................................................................582
Tryb dupleksowy............................................................................................ 582
Dostęp do łącza szeregowego z poziomu systemu operacyjnego MS-DOS 584
Funkcja 03h..................................................................................................... 585
Funkcja 04h..................................................................................................... 585
Funkcja 3Fh..................................................................................................... 585
Funkcja 40h ..................................................................................................... 586
Funkcje BIOS obsługujące łącze szeregowe.......................................................... 587
Przekroczenie czasu (Time Out) .................... 587
Przerwanie połączenia {Break)..................................................................... 588
Błąd protokołu {Frame E rror) ..................................................................... 5 88
Błąd parzystości {Parity Error) ................................................................. 588
Błąd przepełnienia {Overrun Error) ........................................................... .588
Bajt statusu modemu.........................................................................
Funkcja OOh........................................................................... 589
Funkcja Olh..................................................................................................... 590
Funkcja 02h..................................................................................................... 590
Funkcja 03h..................................................................................................... 591
Bezpośrednie programowanie rejestrów UART..................................................... 591
Przerwania generowane przez łącze szeregowe.........................................593
Rejesfr konfiguracji przerwań.......................................................................593
Rejestr identyfikacji przerwań..............................................
Rejestr formatu danych..........................................................
Prędkość transmisji........................................................................................ 596
Rejestr wyjściowych sygnałów sterujących łącza R S-232C ....................597
Rejestr wejściowych sygnałów sterujących łącza R S-232C ....................598
Rejestr stanu transmisji..................................................................................598
Specyfika układu UART 16450................................................................... 599
Spis treści 11
Rozdział 13.
Klawiatura 601
Klawiatury XT, AT i PS/2......................................................................................... 601
Mapa klawiatury........................................................................................
Organizacja obsługi klawiatury przez B IO S.......................................................... 608
Funkcje przerwania 16h B IO S ................................................................................. 613
Bezpośrednie programowanie klawiatury...............................................................618
Port wejściowy i port wyjściowy.............................................
Rozdział 14.
Pozostałe urządzenia wejścia......................................... 629
Myszka i jej obsługa......................................................................................... 62
Game port.....................................................................................................................635
Rozdział 15.
Złącze USB................................................................... 639
Specyfikacja...........................................................................................................639
Topologia............................................................................................................... 640
Okablowanie..........................................................................................................640
Protokół.................................................................................................................. 642
USB w praktyce.......................................................................
Rozdział 16.
Zasilacz.., 647
Dodatek A
Program Setup.............................................................. 651
Setup 2 8 6 ...................................................................................................................... 656
Tryb podstawowy.................................................................................................. 656
Tryb zaawansowany..............................................................................................657
Setup 3 8 6 ...................................................................................................................... 659
Układ scalony 82C206 i jego rejestry................................................................ 662
Układ scalony 82C301 i jego rejestry................................................................ 663
Układ scalony 82C302 i jego rejestry................................................................ 665
Setup 4 8 6 ...................................................................................................................... 669
Setup Pentium..............................................................
12 Anatomia PC
Dodatek B
Współpraca z magistralą zewnętrzną ........................ 685
Opis działania.......................................................... 685
Wykorzystywane sygnały magistrali....................................... 687
Zastosowane układy scalone.....................................................................................688
Dodatek C
CD-ROM dołączony do książki........................................691
Komunikacja procesora z innymi elementami architektury komputera 13
Procesor
Rozwój mikroelektroniki i technologii sprzyja opracowywaniu coraz to potężniejszych
mikroprocesorów. Postęp w miniaturyzacji pozwala na zwiększenie stopnia upakowania
i wzrost częstotliwości taktującej. Dobrze opanowana jest technika 0,35 pm a już obser
wuje się przejście w kierunku 0,25 pm. To dzięki temu nieustannemu zmniejszaniu roz
miarów elementarnych tranzystorów (mimo stałego wzrostu ich liczby) pobór mocy
nowych procesorów mieści się jeszcze w granicach zdrowego rozsądku.
Rysunek 1.1
Schemat blokowy
procesora
Adres
Dane
BU
Sygnały
kontrolne
i sterujące
< ►
Przetwarzanie rozkazów
Obraz architektury współczesnych procesorów jest wynikiem wpływów wielu czyn
ników. Stała pogoń za wzrostem mocy obliczeniowej zmusza do szukania nowych dróg.
Nie wszystkie z nich są tak nowatorskie jak mogłoby się wydawać. Wiele z rozwiązań
ma swoje pierwowzory w procesorach dużych maszyn, które ujrzały światło dzienne na
długo przed komputerami klasy PC. Wspomniany, w poprzednim punkcie, klasyczny
model mikroprocesora był dobry jeszcze przed kilkoma laty. Mocno zarysowany podział
na wyspecjalizowane bloki nie zawsze da się zastosować do współczesnych konstrukcji
i ulega stopniowemu rozmyciu.
Słownictwo w tej dziedzinie wzbogaciło się o szereg nowych, często tajemniczo brzmią
cych, zwrotów. W publikowanych pracach teoretycznych nie zawsze panuje zgodność
poglądów. Głębokie zazębianie się zagadnień teoretycznych z konkretnymi rozwiąza
niami sprzętowymi prowadzi do sporów odnośnie definiowanych określeń (kwestią
sporną jest nawet sprecyzowanie zakresu obejmowanego pojęciem architektura). W tej
części rozdziału omówione zostaną skrótowo podstawowe pojęcia z tego zakresu.
RISC i CISC
Termin RISC {Reduced Instruction Set Computer) zrodził się w toku prac nad projek
tem „801” firmy IBM1 i oznaczał tendencję do ograniczania listy rozkazów procesora
do niewielu błyskawicznie wykonywanych instrukcji. Realizacja każdej z nich była wy
nikiem odwołania się do wyspecjalizowanego obwodu elektronicznego, który nie tracił
1 Idea podchwycona została przez wielu innych projektantów i utrwalona między innymi
w projektach: AMD 29000, HP PA-RISC, Intel 860 i 960 oraz IBM RS/6000.
16 Anatomia PC
Odmienny punkt widzenia reprezentuje filozofia CISC {Complex Instruction Set Com
puter) dominująca w rodzinach x86 Intela i 680xx Motoroli. Procesory budowane według
tej zasady biorą na siebie coraz to większe zadania. Pobierany z pamięci pojedynczy
rozkaz wywołuje szereg kompleksowych działań. Czas opracowywania takiego pole
cenia może dochodzić nawet do kilkudziesięciu cykli zegarowych. Kod programu jest
bardzo zwarty a proces jego transportu do procesora znacznie mniej krytyczny.
Pipeline
Niezależnie od powyższej klasyfikacji każdy procesor można porównać do zakładu pro
dukcyjnego, który z dostarczonych materiałów (dane w pamięci) wytwarza według
określonego algorytmu (kod programu) pewien określony produkt wyjściowy (inny stan
danych). Analogia ta pozwala na sięgnięcie do jednego z bardziej rewolucyjnych po
mysłów racjonalizatorskich - taśmy produkcyjnej. Wprowadzona po raz pierwszy w za
kładach Forda idea podzielenia cyklu produkcyjnego na wiele małych i szybkich ope
racji wydaje się pozornie bezużyteczna: czas pracy nad produktem nie ulega przecież
zmianie (może się nawet wydłużyć jeśli szwankują połączenia między poszczególnymi
etapami). Nie o ten czas tu jednak chodzi, ale o zwiększenie przepustowości.
podział czasu pracy nad pojedynczym rozkazem na wyraźnie zarysowane fazy. Symbo
liczna taśma produkcyjna nazywana jest tutaj potokiem przetwarzającym (Pipeline lub
w skrócie Pipę) a jej poszczególne punkty stopniami {Pipeline Stages).
Rysunek 1.2.
Idea potokowego
przetwarzanie FAZA FAZA FAZA FAZA FAZA
danych 1 " 2 3 ........... 4
ii:xr
bbq•
i
Rozkaz Rozkaz Rozkaz Rozkaz
<M Wynik (n-3)
(n+1) mrMm, (n-1) (n-2) (n-3)
i i * : ;
* ■mmmm
Rozkaz Rozkaz J A Q Rozkaz Rozkaz
Wynik (n-2)
w
▼
ZEGAR
CPU
Potok pracuje jednocześnie nad kilkoma rozkazami a każdy z nich znajduje się w innej
fazie wykonania. Chociaż czas przetwarzania każdego z nich wynosi pewną wielokrot
ność okresu zegara taktującego, w każdym jego cyklu taśmę opuszcza kompletny pro
dukt finalny. Nie inaczej pracuje taśma montażowa w fabryce samochodów - mimo, że
co minutę zjeżdża z niej gotowy samochód, czas jego montażu może wynosić wiele
godzin.
Stopień rozdrobnienia takiej linii produkcyjnej (ilość stopni) nazywany jest też głębo
kością potoku. Wielkość ta ma fundamentalne znaczenie dla kluczowych parametrów
procesora. Rozbicie procesu produkcyjnego na bardzo wiele małych operacji pozwala
na ich przyspieszenie - dwaj robotnicy przykręcający po jednym kole pracują szybciej
niż jeden, który musi zamontować dwa. W przeniesieniu na grunt architektury proce
sora oznacza to możliwość zwiększenie częstotliwości taktującej i ogólnej wydajności.
Poszczególne stacje mogą pracować wręcz szybciej niż wynika to z wymiaru zewnętrz
nego zegara (Super-Pipeline ). Model powyższy nie bierze jednak pod uwagę sytuacji
awaryjnych a analogia do taśmy produkcyjnej nie znajduje tutaj pełnego zastosowania.
Międzystopniowa kontrola jakości może po prostu odrzucić wadliwy wyrób na dowol-
18 Anatomia PC
nym etapie przetwarzania. Odbywa się to bez większej szkody dla całej taśmy. Inaczej
jest jednak w przypadku procesorów. Stwierdzenie błędu (na przykład opracowywana
właśnie instrukcja sprowadza się do dzielenia przez zero) oznacza konieczność oczysz
czenia całego potoku. Punkt w którym taka sytuacja została rozpoznana znajduje się
z natury rzeczy daleko od wejścia, a na pewno tym dalej im więcej stopni ma potok.
Dodatkowym czynnikiem ograniczającym wzrost wydajności wraz z rozdrobnieniem
potoku są wzajemne uzależnienia pomiędzy instrukcjami oraz konflikty w wykorzys
taniu zasobów zewnętrznych. Zagadnienia te omówione zostaną bardziej szczegółowo
w dalszej części rozdziału.
Tabela 1.1.
Liczba stopni w potokach współczesnych procesorów
Procesory wyposażone w potok pracują nad kolejnymi rozkazami według ściśle określo
nego schematu. Przetwarzana instrukcja przesuwa się wzdłuż linii produkcyjnej zalicza
jąc kolejne etapy. Niezależnie od różnic w architekturze, należą do nich zawsze cztery
podstawowe czynności: pobranie, dekodowanie, wykonanie i zakończenie. Każda z nich
może być rozpisana na kilka czynności bardziej elementarnych, na przykład: pobranie
wstępne i pobranie właściwe, wykonanie część pierwsza i następne itp.
Techniki przyspieszania
Wzrost mocy obliczeniowej mierzy się ilością wykonywanych operacji w jednostce
czasu. Zwiększanie częstotliwości taktującej (skrócenie czasu trwania pojedynczego
cyklu) jest najbardziej oczywistym czynnikiem gwarantującym przyrost wydajności (pod
warunkiem, iż nadążają układy otaczające procesor, głównie systemy pamięciowe). Na
określonym etapie rozwoju technologii, dalszy wzrost częstotliwości taktującej nie jest
już możliwy i trzeba sięgać do innych rozwiązań. Jeśli trzymać się analogii do zakładu
produkcyjnego, ogromne możliwości drzemią zawsze we właściwej „organizacji pracy”
i różnych drobnych usprawnieniach. W świecie mikroprocesorów należą do nich między
innymi: techniki superskalarne, przemianowywanie rejestrów, przepowiadanie rozga
łęzień i odpowiednie (zoptymalizowane pod kątem konstrukcji wewnętrznej danego
procesora) przygotowanie kodu.
Techniki superskalarne
Jeśli nie można zwiększyć wydajności pojedynczej linii produkcyjnej należy wybudować
drugą. Procesor taki nosi miano superskalarnego. Uruchomienie dodatkowych, równo
ległych linii produkcyjnych gwarantuje oczywiście zwielokrotnienie produkcji. Model
taki nie sprawdza się jednak na gruncie mikroprocesorów. Strumień rozkazów do wy
Przemianowywanie rejestrów
Wykonywany przez procesor program stanowi w najbardziej korzystnym przypadku
sekwencję instrukcji, które dają się naprzemiennie kierować do potoków U i V. Tech
nika taka nosi miano parowania rozkazów. Nie wszystkie rozkazy podlegają parowaniu
i nie zawsze przez ich równoległe wykonywania można cokolwiek przyspieszyć. Roz
kazy odwołujące się do tych samych lokalizacji pamięci lub oceniające status procesora
nie mogą być przecież wykonywane wcześniej niż to wynika z ich naturalnego położe
nia w sekwencji kodu. Najczęstsza przyczyna uzależnień leży jednak w zazębieniach
powstałych skutkiem odwoływania się do tych samych programowych rejestrów pro
cesora.
Segment stosu
Wskaźnik stosu
Segment dodatkowy
Wskaźnik bazowy
Tabela 1.2:
Sekwencje rozkazów , których nie można parować
Różne procesory posługują się tą techniką w mniejszym lub większym zakresie. W naj
prostszej formie procesor wyposaża się w zestaw dodatkowych rejestrów, które stoją do
dyspozycji jednostki sterującej. W razie napotkania pary rozkazów powodującej uzależ
nienie typu WAR:
mov bx, ax
add ax, cx
22 Anatomia PC
Rysunek 1.4.
Idea
przemianowywan ia
rejestrów
Liczba stojących do dyspozycji tej techniki rejestrów jest różna w zależności od modelu
i typu procesora. Pentium i Pentium MMX nie mają ich wcale a AMD-K6 dysponuje
zestawem 48 (tabela 1.3).
Tabela 7.3.
Liczba przemianowanych rejestrów
Przepowiadanie
Wykorzystanie pełnych mocy obliczeniowej procesorów wyposażonych w potoki prze
twarzające (pipeline) wymaga stałego zasilania instrukcjami. Program, którego realizacja
przebiega kolejno od jednej instrukcji do następnej nie stwarza w tym zakresie żadnych
problemów. Również bezwarunkowe skoki typu go to mają jasno określony punkt do
celowy, Kłopoty pojawiają się w momencie napotkania warunkowej instrukcji rozgałę
zienia kiedy to dalsza realizacja programu może w zależności od spełnienia określonych
warunków przebiegać sekwencyjnie dalej lub też przemieścić się do odległego obszaru
kodu.
Mimo iż nie jest wiadomo która z instrukcji będzie wykonywana jako następna po prob
lematycznej i f potok musi zostać czymś napełniony. Problem przybiera na sile wraz ze
wzrostem długości pipeline; coraz więcej operacji tkwi już głęboko w systemie prze
twarzania, choć nie do końca wiadomo czy słusznie. Ostateczne rozstrzygnięcie warun
ku zawartego w i f odbywa się w najlepszym razie w okolicach środka potoku. Może
się więc zdarzyć, iż wszystko to co jest za instrukcją warunkową należy usunąć. Oczysz
czenie całego skomplikowanego aparatu przetwarzającego ze zbędnych wyników po
średnich zajmuje dłuższą chwilę3. Krok taki jest z punktu widzenia wydajności proce
sora ogromną stratą czasu.
Stosowane w praktyce próby rozwiązania tego dylematu grupują się wokół dwóch
podstawowych sposobów rozumowania;
• Dalszy bieg programu można z większym lub mniejszym powodzeniem spróbo
wać przewidzieć {Branch Prediction).
• W przypadku rozgałęzienia podąża się na wszelki wypadek w obydwu kierun
kach {Multiple Paths o f Execution).
Oba punkty podejścia mają swoje dobre i złe strony. Prawdopodobieństwo właściwego
przepowiedzenia jest zawsze mniejsze od jedności a prowadzenie programu kilkoma
ścieżkami jednocześnie4 prowadzi do ogromnej komplikacji sprzętowej. Powielaniu
podlegają nie tylko jednostki wykonawcze ale i dekodery oraz systemy pamięci pod
ręcznej. Wielokrotnie zagnieżdżone lub następujące szybko po sobie pętle szybko upo
rają się z każdą ilością zasobów sprzętowych. Wybranie przypuszczalnie słusznej drogi
i jej realizacja {Speculative Execution) też niesie z sobą sporą dozę komplikacji całego
systemu. Wyniki wszystkich operacji lądują w buforach pośrednich bowiem nie wolno
jeszcze przecież niczego zmieniać w świecie poza procesorem (zapis do pamięci wywo
łany sekwencją programu, która nigdy nie miała być wykonana miałby przecież kata
strofalne skutki).
Rysunek 1.5
Struktura tablicy
BTB Branch Target Buffer InstrukqaJ
s
1
InstrukqaJ
ln$trukcja_3 (skok)
Instrukcjajł
InstrukcjaJ5
Instrukcjaji
InstrukqaJ
lnstrukcja_8
\ lnstrukcja_9 (skok)
. . .
InstrukqaJ 0 Ą —
InstrukqaJ 1
InstrukqaJ 2
InstrukqaJ 3
InstrukqaJ 4
4 Idea wcielona w życie w niektórych modelach procesorów IBM (na przykład 3033).
Komunikacja procesora z innymi elementami architektury komputera 25
. .
Metoda statyczna
Stosowany jest zwykle jeden bit a jego ustawienie odbywa się stosunkowo wcześnie bo
jeszcze w fazie kompilacji. Faktyczny przebieg programu nie jest w stanie już nic zmie
nić. Metoda szybka, tania i mało skuteczna.
Metody dynamiczne
Metody tej grupy operują na jednym lub dwóch bitach, którymi manipuluje się w fazie
wykonywania programu. Jednym z możliwych punktów podejścia jest przyjęcie założe
nia o powtarzalności przebiegu. Każdemu rozgałęzieniu towarzyszy jeden bit informa
cyjny, który podlega ustawieniu na 1 jeśli nastąpił skok. Proste przejście przez rozwid
lenie (do kolejnej w szeregu instrukcji) kwitowane jest wyzerowaniem tego bitu. Jeśli
w wyniku dalszego wykonywania programu znajdziemy się ponownie w tym samym
punkcie, system przewidywania typuje wynik zgodny z poprzednio utrwalonym zacho
waniem. Stan taki utrzymuje się do czasu pierwszego błędu w przepowiedni (typowe
wyjście z wielokrotnej pętli po spełnieniu określonego warunku), co powoduje zmianę
wartości bitu kontrolnego.
Sygnatura Opis
00 Mocne założenie o braku skoku
01 Słabe założenie o braku skoku
10 Słabe założenie o skoku
11 Mocne założenie o skoku
z przepowiednią (brak skoku) nie modyfikuje sygnatury i nadal zakłada się iż stan ten
utrzyma się do następnego razu. Jak długo rozgałęzienie istotnie nie nastąpi, układ typuje
prawidłowo. Jeżeli jednak dojdzie do skoku, mamy pierwsze niepowodzenie. W odpo
wiedzi na nie system zmienia stan sygnatury na „01” ale nadał zakłada, że kolejne skoki
nie będą miały miejsca. Następna ocena odbywa się w trakcie kolejnego przejścia. Jeśli
skok istotnie się nie powtórzył, następuje powrót do stanu „00”. W przeciwnym razie
instrukcja opatrywana jest sygnaturą „11”. Układ pozostaje w tym stanie tak długo, jak
długo skoki istotnie mają miejsce. Gdy po raz pierwszy nastąpi pomyłka modyfikuje się
sygnaturę do postaci „10”. System przepowiadania nadal jest zdania, iż następnym razem
skok będzie jednak miał miejsce i taką też odpowiedź zwraca. Gdy przewidywanie było
słuszne następuje powrót do postaci „11” z mocnym przekonaniem o dalszych skokach,
jeżeli jednak system pomylił się powtórnie, sygnatura przechodzi do stanu „00”.
Optymalizacja kodu
Jeżeli zna się dobrze szczegóły konstrukcyjne konkretnego procesora można próbować
tak pisać program (już w fazie doboru algorytmu i podejścia do problemu a potem na
etapie kompilacji) by wykorzystać dobre strony konstrukcji a ominąć punkty słabe.
Optymalizacja kodu jest konieczna w przypadku Intel-Pentium, gdyż nie radzi on sobie
(potoki synchroniczne) z doborem parowanych instrukcji. Procesor ten pobiera po prostu
kolejne instrukcje z sekwencji programowej i (jeśli spełniają tylko pewne warunki wstęp
ne) rozsyła je na chybił trafił do potoków U i V. Powstające uzależnienia nie są neutrali
zowane poprzez podmianę rejestrów i jeden z potoków po prostu czeka na zakończenie
pracy (ew. udostępnienie wyników) w drugim.
Dostęp do pamięci
Zadaniem procesora jest przetwarzanie danych w złożonych w pamięci; tam też znajduje
się kod realizowanego programu. CPU bardzo intensywnie współpracuje z układami
pamięciowymi i bez nich nie może się obejść. Wykonywane operacje mają charakter
dwukierunkowy: zapis lub odczyt. Przy zapisie procesor wystawia słowo na magistralę
danych a stosowny adres na magistralę adresową. Podczas odczytu końcówki adresowe
CPU definiują punkt odniesienia w pamięci a zawartość tej właśnie komórki zdejmowa
na jest przez procesor z magistrali danych. Nad sprawnym przebiegiem takich operacji
czuwają oczywiście różne układy towarzyszące, których rytm pracy wyznaczają sygnały
kontrolno-sterujące wytwarzane przez sam procesor. Kilka poniższych uwag ma pomóc
Czytelnikowi w wyjaśnienie zachodzących przy tym zjawisk. Mają one kluczowe zna
czenie dla zrozumienia działania CPU.
Warto w tym miejscu wspomnieć o tzw. adresie liniowym . Stanowi on również efekt
działania mechanizmu segmentacji w trakcie przetwarzania adresu logicznego. Adres
jest liniowy dlatego, ponieważ bezpośredni system adresowania segmentu (w rejestrze
segmentowym zawarty jest adres segmentu) gwarantuje, iż segment o adresie wyższym
znajduje się fizycznie wyżej w pamięci. Jeśli omawiany w dalszej części rozdziału me
chanizm stronicowania jest wyłączony (i pamięć wirtualna nieaktywna), adres liniowy
odwzorowywany jest wprost w adres fizyczny: 20, 24 lub 32 bitowy, zależnie od szero
kości magistrali. Aktywacja przestrzeni wirtualnej powoduje, iż mechanizm stronicowa
nia odwzorowuje adres liniowy w adres fizyczny.
• Tryb wirtualny procesora 8086 ( Virtual 8086 Mode). Tryb dostępny jest w ukła
dach rodziny Intel począwszy od modelu 80386. Koncepcja trybu wirtualnego
stanowi kombinację dwóch wcześniej omówionych trybów. System operacyjny
wykorzystujący tą możliwość pracy stawia do dyspozycji wykonywanych pro
gramów bardzo interesujące środowisko. Każdy z programów użytkowych widzi
swój własny procesor 8086 pracujący w trybie rzeczywistym. System jako całość
dysponuje jednak zaczerpniętymi z trybu chronionego mechanizmami gwaran-
tującymi odpowiedni dobór praw dostępu do zasobów i uniemożliwiającymi
wzajemne kolizje pomiędzy współ-uczestniczącymi zadaniami.
Adresowanie
Znana z trybu rzeczywistego prosta projekcja zawartości rejestrów segmentowych i prze
sunięcia na adres fizyczny zatraca się wyraźnie w chronionych trybach pracy. Wspomnia
ne rejestry są od siebie całkowicie odseparowane i chociaż nadal dostępne programowo,
interpretacja ich zawartości jest zupełnie inna.
Rejestr segmentowy stanowi teraz selektor segmentu a nie wprost jego adres. 13 najstar
szych pozycji tego rejestru stanowi wskaźnik do 8-bajtowej struktury opisującej dany
segment (Segment Descriptor). Z pozostałych trzech bitów dwa poświęcone zostały na
implementację czteropoziomowego systemu praw dostępu do segmentu a jeden określa
czy wspomniany powyżej wskaźnik odnosi się do tzw. tablicy lokalnej czy globalnej.
Rekordami w tych tablicach są właśnie deskryptory segmentów. Każdy z nich zawiera
jednoznaczną informację o lokalizacji segmentu w pamięci i jego rozmiarach. W ten
sposób definiowany jest spójny obszar o adresie początkowym wyznaczanym liczbą 32-
bitową. Na liczbę określającą rozmiar takiego bloku przeznaczone zostało pole 20-bito-
we. Istnieją dwie możliwości interpretowania liczby w tym polu. W trybie 1:1 (granu
lacja 1 B) rozmiar maksymalny wynosi po prostu 220=1 MB. Gdyba jednak przyjąć jed-
f 20 12 32
nostkę 4 kB (granulacja 4 kB), rozmiar segmentu może sięgać do 2 x2 - 2 = 4 GB,
Informacja o tym, która z konwencji jest aktualnie obowiązująca zawarta jest w des-
kryptorze.
Adres logiczny do którego odwołuje się procesor 32-bitowy budowany jest ze złożenia
zawartości 16-bitowego rejestru segmentowego i 32-bitowego rejestru przesunięcia.
W przypadku granulacji 4 kB maksymalny wymiar segmentu wynosi 4 GB. Liczba
możliwych segmentów wynosi 2 14 (2 13 deskryptorów lokalnych i tyle samo globalnych)
| Ą ^ A
Stronicowanie
Stronicowanie ( Paging) stanowi specyficzną funkcję odwzorowującą ogrom przestrzeni
wirtualnej na stosunkowo wąskie pole pamięci RAM plus obszar udostępniany przez
pamięć masową. Odwzorowanie to odbywa się za pośrednictwem małych porcji zwa
nych stronami ( Pages). Rozmiar stron jest stały i wynosi 4 kB. W przypadku omawia
nego tutaj modelu 80386, wielkość ta jest „zaszyta” we wnętrzu CPU i nie może być
zmieniana. Niektóre procesory najnowszej generacji (na przykład Pentium) pozwalają
na pewne odstępstwa od tej reguły. Można w nich wybrać jeden z dwóch rozmiarów
stron: standardowy 4 kB lub rozszerzony 4 MB.
Procesor może ale nie musi korzystać z mechanizmu stronicowania. Odpowiedni „wy
łącznik” zamontowany jest w jednym z rejestrów konfiguracyjnych (bit PG w rejestrze
CRO). Samo ustawienie PG oznacza jedynie inną interpretację adresów i jeszcze niczego
nie załatwia. To system operacyjny musi brać na siebie obsługę całego związanego z tym
mechanizmu. Jeśli stronicowanie jest aktywne, adres logiczny podlega dwustopniowym
przekształceniom (rysunek 1.6).
ü z * a a j 2 8 nn ł ł n u ' i u *it m
* 1 1 1 2 1 1 i
1 1 f| > l T e « i i Adres
" T " - r
:
, v f u ~ i
Díñ;: T 'w r ^
■ ¡« iifS IS m a
■ T , r Y Y r | j f - r r r , T - r Y - liniowy
j
Q
e« ï
Page Directory Page Table
I 11 ■t i
io
Page i> — i —► fram e q 'c
c
i t i • ■« e
«
Page Frame
«I «
.Adres
B IB
fizyczny
W pierwszej fazie odbywa się opisany wcześniej proces segmentacji. 16-bitowy selektor
segmentu wskazuje na rekord adresowy w tablicy deskryptorów. Do uzyskanego w ten
sposób adresu podstawy dodaje się 32-bitowe przesunięcie. Dopiero generowany w po
wyższy sposób adres liniowy (rysunek 1.7) podlega transformacji na fizyczny adres
obiektu. Transformacja ta stanowi sedno mechanizmu stronicowania a jej istota rzeczy
polega na innej interpretacji adresu liniowego (rysunek 1.8).
Rysunek 1.7.
32-bitowy
adres liniowy 31 30 29 28 27 26 25 24 23 22 21 20 19 16 17 16 Í5 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Komunikacja procesora z innymi elementami architektury komputera 31
Rysunek 1.8.
Interpretacja
32-bitowego
adresu liniowego
o
«fe*
3
O
ú>
U)
£
Page 1023
Page 1022
Page 2047
Page 2046
Page 3071
Page 3070
Page 123903 O PagB 1048575
Paga 1046674
<A
JE
Page 123756 co
* ■■ .......<»
€0
32-bitowe słowo adresowe podzielone jest na trzy grupy. W pierwszych dziesięciu naj
starszych bitach przechowywany jest numer rekordu w katalogu stron (Page Directory).
Katalog zawiera 1 024 takich rekordów a każdy z nich wskazuje na tablicę stron {Page
Tables). Pierwszy rekord w katalogu stron wskazuje adres bazowy tablicy stron o nume
rach 0 - 1 023, drugi dotyczy tablicy 1 024 - 2 047 a ostatni odnosi się do stron o nu
merach 1 047 552 - 1 048 575. 10 kolejnych bitów adresu liniowego {Page) wskazuje na
jeden z 1 024 rekordów w danej tablicy. Same rekordy w tablicach stron stanowią
z kolei wskaźniki do stron, z których każda ma wymiar 4 kB.
Adresowany obiekt ulokowany jest w obrębie danej strony. Jego dokładna pozycja usta
lana jest na podstawie pola Offset, tj. dwunastu najmłodszych bitów adresu liniowego
(2 12 = 4 kB).
Caching
Coraz szybciej taktowane procesory wymagają coraz szybszych układów pamięci. Czas
przetwarzania prostego rozkazu nie jest zwykle dłuższy od pojedynczego cyklu zegaro
wego (5 ns przy częstotliwości 200 MHz). Pamięć operacyjna współczesnych kompu
terów PC zbudowana jest z układów scalonych DRAM, które cechuje czas dostępu
większy o rząd wielkości. Na cóż zdać się może procesor pracujący z tak dużą prędkoś
cią, jeśli czas oczekiwania na kolejną porcję danych wynosi w najlepszym razie 50 ns.
Istnieją oczywiście typy pamięci (SRAM - Static RAM) mogące sprostać takim wyma
ganiom, ale ze względów ekonomicznych (są kilkanaście razy droższe) nie można z nich
zbudować całej pamięci operacyjnej.
32 Anatomia PC
Dla zlikwidowania tego wąskiego gardła wprowadzona została pamięć podręczna stano
wiąca bufor o krótkim czasie dostępu (poniżej 10 ns). Rozwiązanie to jest ekonomicznie
uzasadnionym kompromisem: duża i tania pamięć główna wspierana jest przez małą,
szybką i nie aż tak drogą pamięć podręczną {Cache).
Rysunek 1.9.
Pamięć podręczna
wspomaga pamięć Pamięć Cache
główną •s ✓
• ’S
È
•% ..I
.‘‘w 1--*** , * 'k i
." " I
: o, 'i, a T > o p p t p fp c i c l p
i u Oo Q o o w t.- k f\ k ‘
i ------
°o3cc V *. - ' « ‘w
Ë ,4Hrm
cJio;:o i?
°0DC'C‘
w
oo CPU Kontroler Cache r>
_ ._ L ^ V ¥ M |
' O O
• m i • nrT J
Ü
O n
. .j. ¿Ja
U ■H'.-'y- '.-yvr •
•ł
-rrrrrr 111J"IfT
• *i
O 'J r/t)
,( s> , y * e..J
\ j
• i .•**/ • li.* S i v
r * \
Pamięć
Rozwiązanie takie nie było by możliwe, gdyby nie jedna cenna właściwość przetwarza
nego przez komputery PC kodu: jest on stosunkowo spójny. Procesor „porusza się” przez
dłuższy czas w tym samym rejonie pamięci a nie skacze chaotycznie po całym obszarze.
Analizowane rozkazy ułożone są w pamięci sekwencyjnie (nie licząc oczywiście rozga
łęzień i skoków) a bloki danych też nie są świadomie rozpraszane po całej przestrzeni
adresowej. Rozważania teoretyczne i symulacje doprowadziły do wyznaczenia przybli
żonych rozmiarów takiego obszaru. Można przyjąć z prawdopodobieństwem równym
0,9 iż większość odwołać do pamięci będzie się mieścić w bloku nie przekraczającym
16 kB. Tabela 1.4 prezentuje rozmiary pamięci podręcznej stosowanej w aktualnie pro
dukowanych procesorach.
Tabela 1.4.
Rozmiar pamięci podręcznej stosowanej w aktualnie produkowanych procesorach
Wspólny dla kodu i danych, ponadto 256 bajtów Instruction Line Cache
Komunikacja procesora z innymi elementami architektury komputera 33
5
S
Topologie
Buforowe działanie pamięci podręcznej osiąga się umieszczając ją „po drodze” lub „przy
drodze” do pamięci głównej. Niezależnie od różnic w strategii dostępu oraz realizo- j
wanych algorytmach, w chwili obecnej występują w świecie PC trzy podstawowe
układy topologiczne.
•l
i
Rysunek 1.10.
Układ
konwencjonalny
(Look-Aside)
podłączenia
pamięci podręcznej
Drugi sposób podłączenia przedstawiony na rysunku 1.11 określany jest mianem Look-
Through lub Inline Cache. Procesor, zanim sięgnie do pamięci głównej, napotyka układ
pamięci podręcznej. Ta z kolei, sprzężona jest z pamięcią główną poprzez właściwą
magistralę pamięciową. Cache może więc być taktowany z prędkością większą niż sama
magistrala pamięciowa, na przykład dwa razy szybciej - takie rozwiązanie zastosowano
w procesorze Pentium II.
Rysunek 1.11.
Układ Look-
Through
podłączenia
pamięci podręcznej
Rysunek 1.12.
Układ Backside
podłączenia
pamięci podręcznej
34 Anatomia PC
Rysunek 1. 13.
O c O O C
Mapowanie co STRONA co co STRONA CO ■■8 co STRONA -kCO: Pamięć
Jić
bezpośrednie
M
*
er G
*
*
0 C a
■
1 c
m
m
*
główna
_l U _l
O d
co 5 III 2 Pamięć
G c c
t m
podręczna
*
-J
m
11]
W linijce 0 pamięci podręcznej znajduje się zawsze jakaś linijka 0 pewnej strony pamięci
RAM. Prostota konstrukcji i szybkość odszukiwania informacji (wystarczy przepro
wadzić tylko jedną operację porównania) są jedynymi zaletami takiego systemu. Układ
cechuje niestety brak elastyczności i mała efektywność, szczególnie jeśli dochodzi do
częstych skoków poza granicami stron. Jeżeli pamięć podręczna przechowuje linijkę n
jakiejś strony a system żąda dostarczenia linijki n strony następnej, kontroler musi usu
nąć ją z pamięci, chociaż jest prawie pewne iż w chwilę potem system odwoła się do
niej ponownie.
Rysunek 1.14.
O C\J d
Peina asocjacja ca 5
II■
ca Pamięć
główna
%
*
a -E c d
1j — i _l 1
____________
O d
ca
i? ■I 1 $ Pamięć
podręczna
p m
■ *
* ^^^b
d 'E
M ^^^B ■
d
Rysunek 1.15.
O d O d O d
Asocjacja ca STRONA ca ca STRONA ca
asa
ca STRONA ca Pamięć
zespołowa główna
» 11 •
"d 0 d b
d 1 d m d
ft ^^^B
1J 13 31
o d O er
ca
J2 p ^ ^ b^ ^
J2
p
2 JS
p tu p
Pamięć
podręczna
■
p pwwp P ^^^B » ^^^B
d c
»
d d
P ^B ^l #c: pd
-J 33 _l —J
Kanał-0 Kanał-1
....... . . . . . . . . .. . bl • i Id
Wymiar strony w pamięci RAM odpowiada rozmiarowi kanału w pamięci cache. Każdy
z kanałów administrowany jest zgodnie z regułami obowiązującymi dla organizacji typu
„mapowanie bezpośrednie”. System kontroli trafień {Hit/Miss) ogranicza się do prze
prowadzenia dwóch (2-Way-Sef) lub maksymalnie czterech ( 4-Way-Set) porównań:
linijka o określonym numerze może znajdować się tylko w jednej z dwóch (czterech)
dopuszczalnych lokalizacji.
Cykle zapisu do pamięci mogą uwzględniać na swej drodze obecność pamięci cache
{Write Back) lub ją omijać ( Write Through).
36 Anatomia PC
Write Through
Implementacja tego typu powoduje, iż zapis wyzwala zawsze cykl dostępu do pamięci
głównej, niezależnie od tego, czy dana linijka obecna jest w cache czy nie. W razie tra
fienia (Cache Hit) odbywa się oczywiście również i aktualizacja.
Write Back
Pamięć podręczna pracująca w tym trybie zbiera wszystkie cykle zapisu i aktualizuje
swoją zawartość ale nie zawartość pamięci głównej. Dzieje się to dopiero na konkretne
żądanie wyrażone przez instrukcję programową (rozkaz WBINVO: Write Back and
Invalid Data Cache), sygnał sprzętowy na linii -FLUSH lub w wyniku braku trafienia
w fazie odczytu. Zapis do pamięci ma miejsce w czasie gdy wolna jest szyna systemo
wa (a procesor przetwarza kod zawarty np. w pamięci podręcznej poziomu pierwszego).
Metoda taka gwarantuje oczywiście dużą wydajność ale jednocześnie komplikuje układ.
pamięci cache
B31 - B 12 : Tag
B n - B, : Set
B .- B o : Byte
Rysunek 1.17.
32-bitowy adres
lokalizacji 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3
w pamięci
Na pełnowartościowy wpis do pamięci podręcznej składają się dwa ściśle ze sobą po
wiązane komponenty:
Komunikacja procesora z innymi elementami architektury komputera 37
Katalog jest strukturą informacyjną, przy pomocy której kontroler zarządza danymi w pa
mięci podręcznej. Każda 16-bajtowa linijka stanowi elementarny obiekt opisany przez
powiązany z nią rekord. Rekord zawiera w sobie 20-bitowy adres TAG oraz kilka do
datkowych pól bitowych służących dla celów organizacyjnych.
Rysunek 1.18.
Rekord w katalogu
pamięci podręcznej
20 bitów (adres TAG) 3 bity (LRU)
Sam katalog zlokalizowany jest (fizycznie) we wnętrzu kontrolera, który oddaje na ten
cel fragment pamięci SRAM. Uwaga ta dotyczy oczywiście pamięci L-l {Level One
Cache) zintegrowanej w strukturze CPU. Na pamięć podręczną poziomu drugiego L-2
(Level Two Cache), która umieszczana jest na płycie głównej, składa się większa liczba
układów scalonych niż wynikało by to z prostego rachunku „pamięć całkowita L-2/
pamięć pojedynczego układu”. Obowiązek prowadzenie katalogu (TAG-RAM) pociąga
za sobą oczywiście konieczność instalacji kilku ponadplanowych układów SDRAM.
Katalog pamięci podręcznej procesora 80386 (rysunek 1.19) jest czterokanałowy (WayO
- Way3). Każdy z kanałów stanowi tabelę o 256 wierszach i 22 kolumnach. Wiersze ta
beli przechowują adres TAG odpowiadający danej 16-bajtowej linijce. Cztery tabele
opisują w sumie 16 kB pamięci cache (4 Ways x 256 Sets x 16 Byte). Dodatkowy bit
WP ( Write Protect) implementuje mechanizm blokady zapisu a pole VAL {Valid) określa
aktualność danych.
CO
t/y
0>
<
T Set 255
Pozycja wiersza w tabelach WayO —Way3 wyznaczana jest przez bity A l 1 - A4 słowa
adresowego {Set-Address). Adres TAG stanowi centralny fragment mechanizmu umoż
liwiającego jednoznaczne określenie trafienia {Cache Hit). Mechanizm blokady zapisu
(WP) uruchamiany jest na czas trwania operacji wypełniania linijki {Cache Line Fili),
tak by procesor nie mógł zamazywać przedwcześnie jej zawartości.
38 Anatomia PC
Określenie trafienia
Procesor sięga do żądanej lokalizacji w pamięci wystawiając 32-bitowy adres na swoją
szynę adresową. Adres ten przejmowany jest przez kontroler cache i rozkładany na trzy
omówione wcześniej elementy: TAG, SET i BYTE. Składnik TAG przekazywany jest
natychmiast do komparatora adresowego TAG natomiast 8-bitowa część A l i - A4
skierowana zostaje do katalogu (Cache Directory) powodując uaktywnienie wszystkich
czterech kanałów (Way-0 - Way-3).
Określenie £
ą
fsl
trafienia
nr
ą
$NI
o
CU
Bufor / Selektor
Komparator Trafienie ?
(bity A2-A3 wybierają z linijki 128 bitowej
20 bitowy jeden z czterech DW)
Kontroler cache procesora 80386 posługuje się trzema bitami LRU (Last Recently Used),
które przechowywane są w połączeniu z rekordami katalogu TAG. Częstotliwość dos
tępu do informacji każdego z kanałów rejestrowana jest podczas ciągłej pracy układu:
• Jeżeli ostatni dostęp do kanału Way-0 lub Way-1 okazał się trafieniem, usta
wiany jest bit LRU-B q.
• Jeżeli wybrany został kanał Way-0 ustawia się bit LRU-B], a dla Way-1 bit ten
ulega wyzerowaniu.
• Jeżeli trafienie miało miejsce w kanale Way-2 lub Way-3, bit LRU-B0 zostaje
wyzerowany.
• Trafienie w kanale Way-2 oznaczane jest ustawieniem, a trafienie w kanale
Way-3 wyzerowaniem bitu LRU-B2.
Bity LRU aktualizowane są w następstwie każdego cyklu dostępu. Reset (lub Start)
powoduje wyzerowanie wszystkich bitów LRU. Gdy kontroler stwierdzi brak trafienia,
linijka zawierająca żądaną informację sprowadzana jest do pamięci podręcznej w miej
sce określane przez algorytm pracujący według schematu przedstawionego na rysunku
1. 21 .
Jeśli brak jest wolnych pól w pamięci podręcznej, analizowane są bity LRU przynależne
do danego adresu SET. Algorytm przesuwa się wzdłuż naszkicowanego powyżej drzewa
logicznego i oznacza jedną z linijek jako przeznaczoną do usunięcia. W tak przygoto
wane miejsce sprowadzana jest z pamięci głównej żądana informacja (Cache Line Fili).
Inną drogą poszli twórcy procesora AMD-K5 implementując prosty algorytm opiera
jący się na losowym wyborze wolnego miejsca (.Pseudo Random Replacement Policy).
Badania statystyczne i symulacje wykazały, iż skuteczność działania takich metod nie
odbiega znacznie od wyników uzyskiwanych przy pracy z LRU. Do niewątpliwych
zalet układów tego typu należy zaliczyć szybkość działania i prostotę (eliminuje się bity
LRU i cały mechanizm związany z ich zarządzaniem).
40 Anatomia PC
sprowadzania
linijki do pamięci
cache
Wymienić Śnię
o statusie VAL=0
TAK
TAK
TAK TAK
Z faktu tego warto zdawać sobie sprawę planując rozbudowę komputera. Obszar pokry
wany przez CPU (wraz z LI) nie ma zwykle większego znaczenia, gdyż ograniczenie
stanowi kontroler L2 zlokalizowany we wnętrzu układów sterujących na płycie głów
nej. Obecność pewnej liczby podstawek SIMM lub DIMM nie gwarantuje automa
tycznie, iż umieszczone w nich moduły pamięci o rozmiarze dopuszczonym przez
dokumentację będą spełniały należycie swe funkcje. Również procesory Pentium II
(wyposażone w cache drugiego poziomu) mają określone ograniczenia. Rozszerzenie
pamięci powyżej bariery pokrywanej przez cache objawia się spowolnieniem kompu
tera i ma skutek odwrotny od zamierzonego.
Płyty główne z podstawką typu „7” (Pentium, Pentium MMX itp.) bazują zwykle na
jednym z zestawów ( Chip-Set) firmy Intel. Będące już na wymarciu układy typu TX
obejmują przestrzeń do 64 MB. Prawie całkowicie znikły już modele bazujące na ukła
dach HX, które gwarantowały (po umieszczeniu dodatkowego układu TAG-RAM) po
krycie obszaru do 512 MB.
Komunikacja procesora z innymi elementami architektury komputera 41
Tabela 1.5.
Maksymalny rozmiar pamięci cacheowany przez chipsety współpracujące z procesorem Pentium
Procesor Pentium II (wraz ze swym LI) jest w stanie pokryć obszar do 64 GB. Zinte
growany z procesorem kontroler pamięci podręcznej L2 ogranicza ten obszar (zależnie
od modelu) do 512 MB lub 4 GB. Do grupy pierwszej zaliczane są wszystkie procesory
poniżej 300 MHz i pewna część modeli taktowanych zegarem 333 MHz. Procesory
Pentium 11/333 oznaczone numerami SL2QH i SL2S5 oraz wszystkie wersje 350 MHz
i 400 MHz należą do grupy drugiej.
Nie mniej ważną rolę odgrywa architektura wewnętrzna układów płyty głównej, gdyż to
one właśnie realizują dostęp procesora do pamięci operacyjnej (tabela 1.6).
Tabela 1.6.
Maksymalny rozmiar pamięci cacheowany przez chipsety współpracujące z procesorem Pentium II
Rozkazy maszynowe odwołujące się do pamięci (np. MOV mem, reg) operują w pier
wszym z tych obszarów. Dwa specjalne rozkazy odwołań do portów (IN i out) obsłu
gują drugi z nich. Warto dodać, że rozkazy IN i OUT operują wyłącznie za pośrednic
twem akumulatorów, tj. nie można przesłać zawartości pamięci bezpośrednio do portu
lub skierować zawartość portu do pamięci. Przestrzeń adresowa pamięci nie ma jak
wiadomo takich ograniczeń. Podczas operacji na portach ignorowane są ponadto stany
42 Anatomia PC
rejestrów segmentowych. Przestrzeń I/O można więc sobie wyobrazić jako oddzielny
segment 64 kB, do którego można się zwracać wyłącznie za pośrednictwem instrukcji
I N i OUT.
Procesor 8086
Zapis i odczyt portów nie różni się zasadniczo od analogicznych cykli dostępu do pamięci.
Procesor sygnalizuje potrzebę sięgnięcia do portu poprzez specyficzny stan sygnałów
sterujących ~S2, -S I i ~S0.
~S2 SI ~so
Odczyt portu 0 0 1
Zapis do portu 0 1 0
Procesor 8086 może zaadresować 65 536 (64 K) portów, tak więc cztery najwyższe linie
adresowe (A J9 - A )6) są zawsze równe zero. W komputerach PC-kompatybilnych
używa się ponadto wyłącznie pierwszych 1 024 portów (0x000h —0x3ffh).
M/MO
Odwołanie do pamięci 1
Odwołanie do ł/O 0
W/~R
Zapis do portu 1
Odczyt portu 0
Ze względu na wymóg kompatybilności „w dół” (486 —> 386 —> 286) procesor 80486
blokuje adresy portów 0xf8h - 0xffh używane we wcześniejszych modelach jako kanał
komunikacyjny CPU-MPU (koprocesor). Dostęp do przestrzeni I/O odbywa się z pomi
nięciem pamięci podręcznej (zarówno zapis jak i odczyt portów). W trakcie pisania do
portów nie korzysta się z buforów zapisu procesora.
Pentium
Zakres przestrzeni I/O zgodna jest z procesorem 80486 (64 K portów 8-bitowych lub
ekwiwalent). Na uwagę zasługuje jedynie fakt, iż w cyklach dostępu do portów bierze
udział w najlepszym razie połowa szerokości 64-bitowej magistrali danych. Cykle takie
omijają również pamięć podręczną oraz wszelkie bufory zapisu.
BIST
BIST (Built In S elf Test) stanowi zestaw testów wewnętrznych obejmujących między
innymi układy logiczne, wewnętrzną pamięć ROM procesora oraz częściowo pamięć
podręczną i TLB.
Czas trwania testu wynosi około 220 cykli zegara. Wynik testu odkładany jest w re
jestrze EAX. Ocena 0x00000000b wskazuje na wynik bezbłędny, każda inna wartość
dyskwalifikuje procesor.
Kontrola TLB
Funkcja służy kontroli układu TLB i wprowadzona została po raz pierwszy w modelu
80386. Interfejs sterujący zbudowany jest w oparciu o rejestry TR6 i TR7. Kontrola po
lega na zapisie rekordu do TLB i odczycie kontrolnym z porównaniem ( TLB-Lookup ).
JTAG
JTAG (nazywany też Boundary Scan Test) stanowi potężny system diagnostyczny uży
wany głównie w fazie projektowania i testowania układów otoczenia procesora. Warto
podkreślić, iż omawiany tu mechanizm ma znaczenie wyłącznie dla producentów sprzętu.
Chociaż użytkownik komputera nie ma najmniejszej potrzeby uciekania się do funkcji
oferowanych przez ten system, wyjaśnimy w tym punkcie jego elementarne cechy.
JTAG wprowadzony został po raz pierwszy do modelu 80486-50 pracującym wtedy
jeszcze bez wewnętrznego podwajacza częstotliwości. Wszystkie późniejsze wersje tego
procesora (DX2-50, SX-xx i wzwyż) oraz ich następcy miały już zaimplementowany
JTAG.
System pozwala widzieć procesor jako „czarną skrzynkę” z pewną ilością wyprowa
dzeń. Istota rzeczy polega na tym, że stan dowolnej końcówki można nie tylko ustawić
(oddziaływanie procesora na układy otaczające) ale i odczytać (ocena działania układów
zewnętrznych).
Rysunek 1.22.
(::--:. l; ef - f ;v A - WVfvfiAfio . . o
Procesor • S H\
w obudowie :
O '
r1 O
:> o n
'jT i'
^ r
O. C'
s . O
■4^
* i,
k. \■' \
' ¿ . u
- 4 V .
Końcówki zewnętrzne
s
c v :c
>•i
f ■o r vi,'i '
Hi«'s
, I f)
* . ; r
{wyprowadzenia}
• V -,
- J- f * o
J* \
•. y *
l •'
/ •i r , / ^
. s • , \ * - - A
f ' < )
*
ł
.
•'
ł
.■
i
k.y . ; O
■.i , - u r • ii
■■ * f . .a-.o.y
r.,-:> iv?;Ł¿ir?
Z '. />
> ' kv - -
\ .y v V.* w :'44 'o' 'V4 4yc 4 "y bvb Jd "b
Aby umożliwić taki tryb pracy należy odseparować „właściwą” strukturę procesora od
świata zewnętrznego. W istocie rzeczy, każde wyprowadzenie obudowy nie jest bezpo
średnio połączone ze swym logicznym punktem docelowym lecz przebiega przez pole
komórek BST.
Rysunek 1.23.
Każde
wyprowadzeńie
przechodzi prze:
pole BST
Koncowki
zewnętrzne
CPU
>
s "
Dla zapewnienia efektywnej kontroli nad polem komórek BST zostały one połączone
w jeden szereg, a pracę całego systemu nadzoruje specjalny kontroler TAP {Test Access
Port). Dostęp do kontrolera odbywa się za pośrednictwem czterech końcówek; TMS,
TDI, TDO i TCK.
46 Anatomia PC
\o o o c S \ ir '\ z“ ' a r\ r\ (\ %
J-I "n. P*X.
kontrolera TAP Il t
v ; v„..- ( ■
V. V } \ J O O w
umożliwiają
końcówki TMS, I.
TDI, TDO i T C K
STRUKTURA
CPU
I i
V.-
TMS TCK
TDI Test Data Input, końcówka wejściowa. Punkt wejściowy rejestru BST
i kontrolera TAP. Podawana tędy informacja zostaje wprowadzana
synchronicznie z zegarem TCK.
Częstotliwość taktowania
Częstotliwość taktowania procesora leży w ścisłym związku z zegarem magistrali i sta
nowi jego wielokrotność. Wartość mnożnika ustalana jest poprzez stan specjalnych koń
cówek sterujących (BF) procesora. Obecna powszechnie w komputerach PC magistrala
PCI narzuca limit na częstotliwość szyny wewnętrznej wynoszący 66 MHz, połowę tej
częstotliwości stanowi zegar taktujący magistralę PCI (33 MHz). Układy peryferyjne
zgodne ze standardem PCI muszą pracować niezawodnie przy tej częstotliwości.
CPU generacji 586 obarczone są sporą wadą: nie wiedzą jaka jest ich właściwa często
tliwość taktowania. Procesor przyjmuje na swoje wejście pewną częstotliwość zegarową
i powiela ją zgodnie z wartością zakodowaną na końcówkach BF. Liczba takich koń
cówek wynosi zależnie od modelu od jednej do trzech a ich położenie zaznaczone jest
na poniższym rysunku 1.25.
17 19 19 20 21 22 23 24 2526 ŻT 23 29 30 31 12 33 34 » » 37
Rysunek 1.25 C o '•■'i \) o G i> t AN
Położenie i.? O O O o O AM
końcówek BF .- " i
% . O U
'" " 'l
\ J O s .. ci O ( AL
s u o o o o AK
o o o JU
o o AH
o o AQ
o o AF
o o o AE
o o AD
o o o AC
o o Al
u o o AA
Ci G 2
♦ ci o r
BFO
o X
SF1
o • c W
BF2
o o V
o o o u
i) o T
G O O 5
Właściwe ustawienie mnożnika leży w gestii płyty głównej, która dysponuje zwykle
zestawem zwor konfiguracyjnych. Sytuację pogarsza fakt, iż różne typy procesorów
interpretują tą samą kombinację poziomów na wejściach BF na różne sposoby. Usta
wienie BFO = BF1 = 1 oznacza dla klasycznego Pentium współczynnik 1,5 (100 MHz
przy magistrali 66 MHz), a dla Pentium MMX i AMD-K6 wartość 3,5 (233 MHz dla tej
samej częstotliwości magistrali).
Sama obecność końcówki w procesorze to dopiero połowa sukcesu. Musi być również
możliwość sterowania jej poziomem logicznym czyli fizyczne połączenie odpowied
niego styku na podstawce ze zworą. Końcówka „wisząca w powietrzu” zachowuje się
jak logiczna jedynka. Aktualny przykład to rzadko obecne w starszych płytach wypro
wadzenie BF2 niezbędne dla procesora AMD-K6 przewidzianego do pracy z częstotli
wością 266 MHz. Maksymalna wartość mnożnika bez udziału BF2 sięga jedynie do
x3,5 co ogranicza wartość zegara CPU do 233 MHz.
48 Anatomia PC
Tabela 1.7.
Wartości mnożników dla podstawowych typów procesorów
1 0 0 -------- --------
5 --------
0 1 0 -------- --------
4 --------
1 1 0 -------- --------
5,5 --------
Nie tylko procesory ale i układy je otaczające ( Chip-Set) pracują coraz szybciej. Sprzyja
temu rozwój nowych typów pamięci (na przykład SDRAM) oraz modyfikacje standardu
PCI (powyżej 33 MHz). Na rynku pojawiają się coraz częściej płyty główne dopuszcza
jące taktowanie magistrali z prędkościami 75, 83 a ostatnio 100 MHz. Ta mnogość
częstotliwości w połączeniu z szerokim zakresem mnożników daje szerokie pole dla
różnych (nie zawsze rozsądnych) eksperymentów.
Dwie ostatnie opcje należy stanowczo odradzić, chociaż obserwowane wyniki (mierzone
programami typu benchmark) są często imponujące: 10 - 20%. Przyrost mocy oblicze
niowej osiągany na poziomie aplikacji nie jest jednak aż tak znaczący by usprawiedli
wić ryzyko trwałego uszkodzenia procesora lub innych elementów.
Zasilanie
Właściwe napięcie zasilania procesora typu Pentium Pro i Pentium II dobierane jest
przez BIOS automatycznie na podstawie odczytania informacji dostarczanych przez
CPU (kodowanie przy pomocy bloku końcówek konfiguracyjnych). Procesory rodziny
Pentium (włączając w to również odmianę MMX) nie mają mechanizmu automatycznej
konfiguracji napięcia zasilającego i obowiązek ten spoczywa na użytkowniku. W prak
tyce zagadnienie to sprowadza się do odpowiedniego ustawienia zwór konfiguracyjnych
(zgodnie z instrukcją dołączoną do płyty). W obiegu spotkać można trzy rodzaje płyt
głównych dla procesorów zgodnych z Pentium:
Producenci płyt głównych usiłują zapanować nad tym zamętem wyposażając programy
BIOS w coraz to przemyślniejsze algorytmy rozpoznawania typów procesora. Sytuację
ratuje nieco fakt, iż procesory o rozdzielonych obwodach zasilania {Split- Voltage) mel
dują się przy pomocy specjalnej końcówki V c c 2 d e t e c t • Płyta zostaje poinformowana
o konieczności doprowadzenia dwóch różnych napięć, ich wielkość jednak trudna jest
do określenia w sposób automatyczny i leży w gestii użytkownika. Zamieszanie wpro
wadzają „rodzynki” typu AMD-K6/233 opatrzone napisem 3,3VCore/3,3VI/0, które
meldują się jako Split-Voltage. Większość płyt nie jest oczywiście przygotowana na
taką okoliczność, bowiem zakres napięć Y c o r e kończy się w punkcie 3.2V.
Komunikacja procesora z innymi elementami architektury komputera 51
Tabela 1.8.
Typowe napięcia zasilania dla podstawowych typów procesorów
Dobre i uniwersalne płyty potrafią podać (chociaż nie zawsze jest to odnotowane w do-
kumentacji) każde napięcie z przedziału 2,0 - 3,5 V (w odstępach 0,1 V). Sztandarowy
przykład stanowią produkty serii TX97 firmy ASUS (rysunek 1.26).
konfiguracyjne
na płycie ASUS
m. " . W .K T . m. m. m Wm
serii TX97 § 9 o
> > >
umożliwiają
3.1 V 3.0V 2.9V 2.8V
ustawienie napięć
zasilających
z dokładnością
do OJ V Q
O TT
Q
CM
O
O TT OJ O
Q
TT OJ
Q Q
O
O
TT
Q
C\J
O
O — Q
> > > > > > > > > > > >
Ilość energii zużywanej przez procesor zależy w dużej mierze od jego aktywności.
Szczytowe obciążenie występuje podczas przetwarzania materiału MPEG a minimalne
w stanie oczekiwania na reakcję użytkownika. Ponieważ bieg jałowy jest różnie imple
mentowany przez różne systemy operacyjne, pobór prądu w oczekiwaniu na komendę
52 Anatomia PC
(System Prompt) jest dużo mniejszy w NT i OS/2 niż w Windows 95. Istotne różnice
zaobserwować można również po zamianie typu procesora.
NT4-Prompt DOS-Prompt
Intel-MMX 233 MHz 4.9A 5.2A
AMD-K6 233 MHz 7.2A 1.9A
Obciążenie linii V I/0 jest oczywiście dużo mniejsze niż źródła Y core* Typowy rozkład
wartości przedstawia poniższe porównanie.
Obniżanie napięcia zasilania CPU prowadzi zwykle do niestabilnej pracy ale nie szkodzi
procesorowi i warto z pewnością pokusić się o taką próbę. Niektóre modele procesorów
bardzo dobrze znoszą takie zabiegi (na przykład AMD-K6-233, CPUID Stepping 2
opisany jako V c o r e ~ 3,2V). Redukcja poziomu napięcia do wartości 2,8V pozwala na
ograniczenie poboru mocy z 34W do 27W. Operacja przynosi efektywny spadek tempe
ratury mierzonej na powierzchni obudowy o 5°C.
• IBM/Cyrix (M l i M2)
Procesory AMD
Rodzina K5
Procesor AM5K86 (K5) jest pierwszym niezależnym projektem AMD. Poprzednie mo
dele z serii 386 i 486 kopiowały w mniejszym lub większym stopniu oryginały Intela.
Jądro procesora K5 opiera się na superskalamej architekturze RISC. Napływający
strumień rozkazów x86 analizowany jest przez dekoder i tłumaczony na ciąg elemen
tarnych operacji (mikrorozkazów) w wewnętrznym kodzie procesora. W terminologii
AMD takie elementarne rozkazy RISC noszą miano ROP (RISC Operations). Rozkazy
proste tłumaczone są przez dekoder pracujący w szybkim trybie (Fast Path ), a rozkazy
bardziej skomplikowane wymagają odwołania się do sekwencera rozwijającego odpo
wiednią sekwencję ROP z pamięci stałej EPROM. Niezależnie od sposobu kodowania
cegiełki ROP mają zawsze stałą długość.
Byte Queue
Dane
jk v w
^ } w
64
Decoder
a>
o .c
r t
-g
JZ .
-8
_e
e j
-s
.c
’S
(D
"O
co o_
s
8
e
o
Q_
+++
V?
ta
8
9
U <3
8
£
y
CL
ro
8
£
O
u . 2 U p 3 U - 3 U - 5
CD
cn
Sterowanie
< ► tn
RS RS RS RS RS
Store Store
Branch & & ALU-1 ALU-2 FP
Load Load
Zegar
Duża wydajność procesora gwarantowana jest jedynie w sytuacji stałego i pełnego wy
korzystania wszystkich jednostek wykonawczych. W trosce o nieprzerwany dopływ
ROP do tych układów procesor wyposażony został w szereg dodatkowych mechaniz
mów wspomagających. Do głównych z nich zaliczyć należy opisane wcześniej systemy
Register Renaming oraz Data Forwarding. Procesor przetwarza w miarę możliwości
również poza kolejnością {Out o f Order Execution) a zlokalizowany u wylotu potoku
16-stopniowy bufor ROB {Reorder Buffer) troszczy się o ich ponowne uszeregowanie
zgodnie z pozycją zajmowaną w realizowanej sekwencji x86.
Układ sterowania pamięcią podręczną procesora K5 (zarówno dla kodu jak i dla danych)
prowadzi podwójny {Dual Tagged) system katalogów. W jednym z nich przechowy
wane są adresy fizyczne a w drugim adresy liniowe. Osiągane w ten sposób znaczne
przyspieszenie dostępu do pamięci cache okupywane jest koniecznością dodatkowego
rozbudowania układów sterujących dla potrzeb nadzorowania spójności {Cache Tag
Recovery) dwóch systemów adresowania.
Komunikacja procesora z innymi elementami architektury komputera 55
Tabela 1.9.
Podstawowe dane procesorów K5
Vcore m 3.52
ym [V]
Pobór mocy, typ. [W] 12,6 10,6 12,3
Return Stack
Renaming Registers ✓
Performance Monitoring
Time Stamp Counter
Podstawka Socket 7, P54C
System niezgodny z Pentium
Rodzina K6
Projekt tego procesora nie jest w zasadzie dziełem AMD lecz przejęty został wraz z za
kupioną firmą NexGen. Połączenie okazało się niezmiernie korzystne dla obydwu stron.
Rozwijana przez NexGen nowoczesna technologia6 została zaadaptowana dla potrzeb
niezmiernie chłonnego rynku komputerów klasy PC i wypromowana przez firmę, która
wprawdzie zdobyła już pozycję w tym sektorze ale nadal nie dysponowała „okrętem
flagowym” mogącym skutecznie odpierać nieustające ataki konkurencji.
Tak więc zakupiony procesor (wtedy jeszcze o nazwie Nx686) został na tyle przebudo
wany by dać się umieścić w podstawce Socket-7 typowej płyty głównej w miejsce
zwykłego P54C. Uzyskany produkt końcowy otrzymał nazwę handlową K6, co miało
stanowić nawiązanie do sprzedawanego do tej pory przez AMD własnego opracowania
znanego pod symbolem K5.
32
Branch DEKODER
Logic x86 -> RISC
Dane (8192 rek.)
4 RiSC
* 964 W Out-of-Order
■ Execution Engine
ZD ÛC RISC « 3
Brand
Zegar
*
j
i
!
7 Projekt jednostki MMX przejęty został od Intela na mocy wzajemnej umowy licencyjnej.
Koncepcja wyklucza jednoczesną pracę MMX i FPU bowiem obydwa bloki korzystają ze
wspólnych rejestrów.
Komunikacja procesora z innymi elementami architektury komputera 57
Tabela 1.70.
Podstawowe dane procesorów K6
Vuo [V] 3,3 (3,14-3,6) 3,3 (3,14-3,6) 3,3 (3,14-3,6) 3,3 3,3
Pobór mocy, typ. [W] 10 12 17 6 (max. 11,5) 7 (max. 12,5)
Return Stack 16
Renaming Registers 48 (8 + 40)
Performance Monitoring
Time Stamp Counter
Podstawka Socket 7, P55C
Wykonywane w technologii 0,25 gm
58 Anatomia PC
Rodzina K6-2
W połowie roku 1998 na rynku pojawiły się procesory K6 dostosowane do pracy z magi
stralą 100 MHz. Firma AMD rzuciła w ten sposób wyraźne wyzwanie monopolistycznej
polityce Intela ukierunkowanej na rozwój linii Pentium II i uśmiercenie szeroko roz
powszechnionej podstawki typu 7. Ponieważ obowiązująca w tym zakresie specyfikacja
dopuszczała maksymalną częstotliwość szyny wynoszącą 66 MHz, nowy „wynalazek”
propagowany jest jako podstawka Super 7 {Socket Super 7).
Tabela 1.11.
Podstawowe dane procesorów K6-2
266 300
Architektura RISC 86
Zegar CPU [MHz] 266 300
Magistrala [MHz] 100/66 100/66
Mnożnik (BF) 2,5/4,0 3,0/4,5
Ll-Cache (kod) [kB] 32 kB, 2x Associative
Ll-Cache (dane) [kB] 32 kB, 2x Associative, WB
L2-Cache on Chip
Pipe-Lines 7
Pipe-Line Stages 6 (FP: 7)
Out o f Order Execution ✓
Procesory K6-2 mogą współpracować zarówno z magistralą 66 MHz jak i 100 MHz.
Układy sterujące ( Chip-Set) do tych ostatnich pochodzą wyłącznie od producentów
konkurujących z Intelem, bowiem polityka tej firmy nie przewiduje przyszłości dla
magistrali 100 MHz doprowadzanej do podstawki typu 7. Warto zwrócić uwagę, że mo
dele 100 MHz różnią się istotnie od wersji 66 MHz. Nowość (a zarazem pewien pro
blem techniczny) stanowi uniezależnienie częstotliwości szyny głównej od PCI i AGP.
Dotychczas, częstotliwości 33 MHz, taktująca magistralę PCI, uzyskiwana była przez
prosty podział zegara magistrali procesora (66 MHz : 2). Z kolei szyna AGP otrzymy
wała pełny przebieg 66 MHz. Przebiegi były ze sobą wspaniale zsynchronizowane,
bowiem wywodziły się ze wspólnego źródła. Ten prosty mechanizm podziału stoso
wany jest także w przypadku magistrali 75 MHz lub 83 MHz, co znoszą z różnym
szczęściem układy peryferyjne PCI i AGP (gwarancja działania obejmuje zakres do 33
MHz). Na rynku znajduje się duża liczba płyt głównych pozwalających na manipulację
częstotliwościami magistral w zakresie wybiegającym często poza zdrowy rozsądek.
Należy pamiętać, iż podnoszenie ponad miarę częstotliwości magistrali PCI zagraża nie
tylko kartom graficznym i innym urządzeniom PCI ale ma również ujemne skutki dla
kontrolera IDE, co może się objawiać sporadycznymi błędami zapisu i odczytu dysków.
Magistrala 100 MHz nie jest jedyną nowością wprowadzoną do procesorów AMD K6-2.
Drugim istotnym elementem jest rozszerzenie o funkcje określane mianem 3DNOW!.
W trosce o zmniejszenie dystansu dzielącego K6 od Pentium II (zwłaszcza w zakresie
działań na liczbach zmiennoprzecinkowych) zmodyfikowano jednostkę FPU. 3DNOW!
to zestaw dodatkowych rozkazów uzupełniających funkcje MMX. Dopuszczalne jest
mieszanie rozkazów obydwu typów w ramach tej samej aplikacji. Znana z systemu
MMX idea grupowego przetwarzania danych SIMD {Single Instruction Multiple Data)
znalazła tu zastosowanie w odniesieniu do liczb zmiennoprzecinkowych. Lwia część
rozkazów 3DNOW! operuje na rejestrach 64-bitowych, których zawartość interpretowa
na jest według schematu przedstawionego na rysunku 1.29.
60 Anatomia PC
Rysunek 1.29. 31 30 23 22 0 30 23 22
Exponento Mantysa Exponento Mantysa
Sposób
interpretacji 63
rejestrów
64-bitowych
Dla każdej z liczb przeznacza się 32 bity: 1 bit na znak, 23 bity na mantysę i 8 bitów na
eksponentę. Powyższy sposób kodowania pozwala na przetwarzanie liczb z zakresu
1038 do 10'38 z dokładnością 2'24.
Procesory Cyrix
Licznik czasu TSC, chociaż nie stanowi obowiązkowego elementu architektury x86,
jest chętnie wykorzystywany przez różne aplikacje. Jego fizyczna nieobecność w syste
mie może, zależnie od stylu programowania, zaowocować różnymi skutkami ubocz
nymi.
¡Mj>
'
tijft
fi.?
Svsmark NT
« /
Sysmark 95
6 x 8 6 133MHz P-166+ 455 450
Pentium 166MHz 433 464
Warto więc przyjrzeć się dokładniej jakich to sztuczek używa procesor Cyrix, by mimo
mniejszych częstotliwości taktowania osiągać tę samą wydajność co jego główny kon
kurent.
PU
,v
f Główną specjalnością tej architektury jest niewątpliwie jednolita pamięć podręczna dla
I
:s . •
kodu i danych {Unified Cache). Koncepcja ta umożliwia większą elastyczność (a za
I razem i prędkość) w zarządzaniu pamięcią podręczną a niebezpieczeństwo wzajemnego
|
łs
tf
wyrzucania się partii kodu i danych ( Trashing) likwidowane jest poprzez wprowadzenia
|
**: ..
małej, 256 bajtowej pamięci podręcznej {Instruction Line Cache) dedykowanej wyłącz-
j nie dla kodu rozkazów. Dostęp do 16 kB pamięci podręcznej możliwy jest dla obydwu
|
i*
potoków jednocześnie {Dual Ported).
I
km s
Realizacja instrukcji x86 odbywa się w sposób naturalny —jądro procesora pracuje
| w trybie CISC. Przetwarzanie ma miejsce w dwóch równoległych potokach (oznaczanych
I przez Cyrix jako X i Y). Potoki są siedmiostopniowe przy czym w dwóch spośród nich
I (ID - Instruction Decode i AC - Address Calculatioń) wyodrębnia się jeszcze stopnie
I pośrednie (ID1, ID2 oraz AC1 i AC2) taktowane podwójną częstotliwością zegara.
| Pierwszy stopień (IF - Instruction Fetch) jest wspólny dla obydwu potoków i pobiera w
I jednym cyklu zegara 16 bajtów kodu. Jednocześnie sprawdza się, czy w załadowanych
1 właśnie instrukcjach nie występują rozkazy skoków. W przypadku rozgałęzień
I bezwarunkowych pobierany jest również kod z punktu na który wskazuje adres skoku.
I Przepowiadanie rozgałęzień instrukcji warunkowych odbywa się przy pomocy 256
I wierszowej tabeli BTB (plus dwa bity charakteryzujące skok). Aby nie tracić czasu
I w wypadku pomyłki pobiera się również na wszelki wypadek fragment kodu z drugiego
I punktu, odrzuconego przez układ przepowiadania.
fc
¿V
CT 1.
I vr
62 Anatomia PC
128
Dane
IF
o>
Im
ID-1
0 ID-2 ID-2
O1 AC-1 AC-1 FPU
=D AC-2 AC-2
CL
O EX EX
Sterowanie WB WB
L
Zegar
Adres fiz y c z n y / 32
Adres fizyczny^ 32
nyii
"X"
Tabela 1.12.
Podstawowe dane procesorów 6x86 (Ml)
Rodzina M2
Historia współpracy i wzajemnych kontaktów pomiędzy firmami Cyrix i IBM jest bardzo
zawikłana, co znajduje wyraźne odbicie w systemie oznaczeń procesorów. Opracowany
w firmie Cyrix pierwowzór rodziny całej rodziny (6x86) nosił przez pewien czas przy
domek M l. Procesor Cyrix M2 stanowi w zasadzie rozwinięcie modelu 6x86 (M l)
poprzez wzbogacenie o większą pamięć podręczną (64 kB zamiast 16 kB). Producent
pozostał wiemy idei wspólnej pamięci podręcznej dla danych i kodu ( Unified Cache).
Zachowany został również odseparowany wycinek pamięci cache z przeznaczeniem
64 Anatomia PC
Mimo przejęcia firmy Cyrix przez National Semiconductor obowiązuje nadal umowa
partnerska z IBM. To właśnie na liniach produkcyjnych IBM powstają aktualnie proce
sory tej serii. Część produkcji opatrywana jest znakiem firmowym IBM a część wraca
do Cyrixa. Specjaliści od marketingu firmy Cyrix uznali, że używany przez pewien czas
przyrostek M2 (poprzez asocjację z Pentium II) lepiej nadaje się do promocji wyrobów
niż wysłużony przyrostek MX, kojarzący się wyłącznie z wszechobecnym standardem
MMX. Dla zwiększenia efektu zamieniono dodatkowo M2 na M-II i tak powstało aktu
alne oznaczenie M-II-300, pod którym ukrywa się wprawdzie jednostka z rodziny 6x86
ale o mocy obliczeniowej sięgającej (przynajmniej w zakresie aplikacji biurowych) po
ziomu Pentium II taktowanego zegarem 300 MHz. Ten sam procesor (a przynajmniej _ t
jego półprzewodnikowa struktura) trafia na rynek pod znakiem firmowym IBM jako
6x86MX-PR 266. IBM stosuje ponadto inną technikę pakowania chipów do obudów.
Zamiast klasycznej formy łączenia przy pomocy cienkich drutów {Bonding), płytka pół
przewodnikowa osadzana jest na matrycy punktów lutowniczych {Flip Chip9). To skró
cenie wyprowadzeń (zredukowanie indukcyjności i zmniejszenie przesłuchów między-
połączeniowych) pozwala na podniesienie częstotliwości taktowania.
Dane
4. 64 CPU-Core
Sterowanie
T LB 1:16 rekordów
Zegar
TLB 2:384 rekordy
Adres fizyczny / 32
Adres fiz y c z n y / 32
nytt
"X"
Tabela 1.13.
Podstawowe dane procesorów 6x86MX (M2)
Blok przetwarzania rozkazów MMX sprzężony jest bardzo mocno z jednostką zmienno
przecinkową. Koncepcja taka pozwala na lepsze wykorzystanie zasobów i oszczędza
miejsce na strukturze krzemowej. Procesory konkurencyjne (Intel i AMD) mają dobudo
wane układy MMX „na dokładkę” do bloku FPU co nie pozwala na jednoczesne posłu
giwanie się nimi.
Procesory Intel
Dane c
<x>
o PREFETCH
64 co
a>
Sterowanie
< ..... -W
</} BTB DECODE
m
Zegar
Magistrala
Dual-CPU
Przerwania
w systemie L1 Data Cache: 8kB
Dual-CPU APIC
..............................................- .........................................................-> TLB
Tabela 1. 14.
Podstawowe dane procesorów Pentium
Renaming Registers X
1Performance Monitoring
1Time Stamp Counter
Podstawka Socket 7
Cechy architektury pozwalają zaliczyć Pentium do grupy CISC. Jądro procesora jest
superskalame i wyposażone w dwa potoki przetwarzające instrukcje stałoprzecinkowe
oraz jednostkę zmiennoprzecinkową. Jeśli spełnione są wymogi narzucone przez me
chanizm parowania, procesor przetwarza w każdym cyklu zegarowym dwie instrukcje:
każdy z potoków (U i V) kompletuje po jednej z nich. Należy jednak podkreślić iż po
toki są bardzo silnie ze sobą powiązane i pracują wyłącznie w trybie synchronicznym.
Żaden z nich nie może wybiegać naprzód w procesie przetwarzania. Jakiekolwiek
zahamowanie w jednej z linii powoduje natychmiastowe zatrzymanie drugiego potoku.
Pentium MMX
Dalsze rozwinięcie rodziny Pentium stanowią modele z rozszerzeniem multimedialnym
MMX (rysunek 1.33). Procesory tego typu opisane są szczegółowo w drugim rozdziale
tej książki.
Pentium Pro
Procesor zaprezentowany został po raz pierwszy w roku 1995 i chociaż taktowany był
częstotliwością 133 MHz już wtedy osiągał wydajność prawie dwukrotnie większą od
Pentium 133 (ok. 200 SPECint). Ten ogromny przyrost mocy obliczeniowej spowodo
wany został gruntowną przebudową architektury (RISC), w tym sięgnięciem do roz
wiązań stosowanych w dużych komputerach. Pentium Pro dobrze nadaje się do pracy
w systemach multiprocesorowych bowiem dysponuje zestawem sygnałów sterujących
zdolnych do zapewnienia harmonijnej współpracy do czterech procesorów tego samego
typu. Obszar pamięci operacyjnej pokrywany przez L2-Cache {Cacheable Area) prze
kracza barierę 512 MB co pozwala na stosowanie procesora w dużych serwerach.
PREFETCH
Sterowanie
< W
DECODE
Zegar
MMX
Magistrala
i
Dual-CPU
X
9
/FPU
■
Przerwania
w systemie
Dual-CPU
Proces dekodowania odbywa się zawsze zgodnie z kolejnością napływania instrukcji, tj.
taką w jakiej występują one w programie. Większość rozkazów rozwija się do 1 - 4
pOps. Blok dekodera może w sprzyjających warunkach (odpowiednia ilość rozkazów
pobrana została z pamięci i czeka w kolejce rozkazowej) przetworzyć do trzech in
strukcji x86 w jednym cyklu zegarowych: po jednej z każdego z prostych dekoderów
i jednej z dekodera ogólnego przeznaczenia.
Wewnętrzna struktura każdego pOps jest stała. Każdy z nich ma stałą długość równą
118 bitów i składa się z czterech pól o następującym znaczeniu: operator, źródło pier
wsze, źródło drugie, cel.
70 Anatomia PC
Tabela 1.15.
Podstawowe dane procesorów Pentium
1 1 1 5 0
166 200 233
Architektura x86 MMX Native
[ Zegar CPU [MHz] 1 150 166 200 233
Magistrala [MHz] 60 66 66 66
CO
Sterowanie
<- ► CD
Store Load
Addr Addr
Zegar Unit Unit
Jednostki generowania adresów (Load/Store) zużywają tylko jeden cykl zegara, bowiem
wszelkie typy adresowania x86 rozwiązywane są poprzez sprzętowe układy sumatorów.
Jednostki te wytwarzają adresy dla mi kro rozkazów, które komunikują się z pamięcią.
pOps tego rodzaju przesyłane są do MOB (Memory reOrder Buffer), gdzie oczekują na
wolny kanał przesyłowy do pamięci podręcznej L2.
72 Anatomia PC
Tabela 1.16.
Podstawowe dane procesorów Pentium Pro
Potoki przetwarzające Pentium Pro są wielostopniowe. Rozkazy, które nie odwołują się
do pamięci opuszczają potok nie wcześniej jak po 12 cyklach zegara, te które pobierają
z pamięci dane potrzebują sześciu taktów dodatkowych. Wszelkie zakłócenia w pracy
(wystąpienie wyjątku typu dzielenie przez zero, źle przepowiedziane rozgałęzienie itp.)
powodują spore opóźnienia. Cała skomplikowana maszyna obliczeniowa musi zostać
oczyszczona z wyników pośrednich a potoki napełnione nową treścią. Nic więc dziw
nego, że projektanci procesora włożyli sporo wysiłku w wyeliminowanie takich sytu
acji. Pentium Pro wyposażony został w specjalne układy śledzące wykonanie programu.
Technika określana mianem Dynamie Execution obejmuje analizę programu pod kątem
przebiegu i przepływu danych i stara się obrać najbardziej optymalną kolejność wyko
nania instrukcji.
Komunikacja procesora z innymi elementami architektury komputera 73
Żaden z nowoczesnych procesorów nie może się obejść bez pamięci podręcznej. Głów
na siła Pentium Pro to duża i szybka (taktowana z częstotliwością zegara CPU) pamięć
podręczna L2, wspólna dla danych i kodu. Pamięć ta zorganizowana jest w linijki
o rozmiarze 32 bajtów (poczwórna asocjacja). Napełnienie linijki odbywa się w trakcie
4 cykli zegarowych bowiem szerokość magistrali wynosi 64 bity.
Na pamięć poziomu pierwszego składają się dwa niezależne bloki LI: dla danych i dla
kodu. Rozmiary obydwu z nich wynoszą po 8kB a każdy pracuje w oparciu o linijki 32
bajtowe. LI dla danych zorganizowana jest w formie dwóch banków (podwójna aso
cjacja) o dostępie 64 bitowym. Pamięć podręczna dla kodu (poczwórna asocjacja) pra
cuje w oparciu o jeden bank dostępny poprzez magistralę 128 bitową.
Pentium II
Pentium II stanowi następcę procesora Pentium Pro i jako pierwszy przełamuje barierę
200 MHz. Początkowo wprowadzone na rynek zostają modele taktowane zegarem 233
MHz, w ślad za nim postępują egzemplarze 266 i 300 MHz. Linia Pentium II ma być
rozwijana co najmniej do częstotliwości 450 MHz. Nowe opracowanie przewyższa pod
wieloma względami swoich poprzedników, ale też nie stanowi szczytu wykorzystania
aktualnych możliwości technicznych.
Usytuowanie pamięci podręcznej L2 tak blisko CPU podyktowane było również wymo
gami szybkiej wymiany danych w systemach z wieloma procesorami. Pentium II może
być wykorzystywany w systemach multiprocesorowych ale co najwyżej typu dual (dużo.
11 Wykonywane przez automaty połączenia (zwykle złotym drutem) między polami na płytce
krzemowej a wewnętrznymi stykami obudowy układu scalonego. Operacja stanowi jedną
z najniebezpieczniejszych faz procesu produkcyjnego, w której powstaje najwięcej odpadów.
74 Anatomia PC
Rysunek 1.35.
lu m m u m tftn tm .m u m n im u m u u .
Wygląd modułu
procesora C-1 C-2
Pentium II TTTlTTUWm gW Iffr
Jądro procesora Pentium II przejęte zostało w dużym stopniu z Pentium Pro a ponadto
wzbogacone o rozszerzenia multimedialne przeniesione z procesora Pentium MMX.
Pamięć podręczna pierwszego poziomu ma wymiar 32 kB (po 16 kB dla kodu programu i
dla danych). Wewnętrzna magistrala procesora ma szerokość 300 bitów. Procesor może
działać w przestrzeni adresowej do 64 GB (wirtualnie do 64 TB). Struktura krzemowa
pierwszej generacji procesorów wykonana jest w technologii 0,35 pm i zawiera 7,5
miliona tranzystorów (nazwa robocza Klamath). Zasilanie odbywa się z pojedynczego
źródła 2,8 V przy poborze prądu około 13 A, a maksymalna częstotliwość zegarowa sięga
300 MHz. Opanowanie technologii 0,25 pm pozwala na podniesienie częstotliwości
roboczej powyżej granicy 333 MHz. Struktury tego typu określane są mianem Des
chutes. Model 333 pracuje jeszcze z szyną 66 MHz a następne (od 350 wzwyż) przy
stosowane są do pracy z magistralą 100 MHz.
Twórcy architektury Pentium Pro skupiali się na optymalizacji pracy w środowisku 64-
bitowym. Procesor ten jest co prawda kompatybilny z kodem x86 ale w środowisku 16-
bitowym wolniejszy od zwykłego Pentium. Pentium Pro pracuje nad wykonaniem
rozkazu LES DI, [memory] przez 20 taktów zegara. Dla Pentium II potrzeba w naj
gorszym razie 11 taktów a w razie trafienia w cache wystarczy nawet jeden takt. Intel
chciał oczywiście sprzedawać swój nowy procesor także użytkownikom Windows 3.x,
których w momencie wprowadzenia na rynek Pentium II, było jeszcze całkiem sporo.
Dla pozyskania większej ich rzeszy, Pentium II wyposażony zostaje w pamięć pod
ręczną dla rejestrów segmentowych (Segment Register Cache).
Tabela 1.17.
Podstawowe dane procesorów Pentium II (Klamath)
Performance Monitoring V
Tabela 1.18.
Podstawowe dane procesorów Pentium II (Deschutes)
333 450
Architektura RISC
Technologia 0,25 (im
| Zegar CPU [MHz] 1 233 350 400 450
Magistrala [MHz] 1 66 100 100 100
| Mnożnik (BF) 1 5,0 3,5 4 4,5
LI-Cache (kod) [kB] 16 kB, 4x Associative
LI-Cache (Data) [kB] 16 kB, 4x Associative, WB
L2-Cache (1/2 CPU-Cłock)
Pipe-Lines 1
Pipe-Line Stages 12 (FP: 16)
Out o f Order Execution
Branch History Table 512
Branch Target Buffer 512
Vu [V] 1 3,3 3,3 3,3 3,3
I VC O R E [V] [ 2,0 2,0 2,0 2,0
Fetch
Dane Decode
64
Instruction
<D Pool
O
(O
a>
Sterowanie Retire
co Execute
Unit
m
Load Store
L2 Cache
Architektura Pentium II jest bardzo podobna do Pentium Pro, obydwa procesory należą
przecież do tej samej rodziny P6. Przetwarzanie odbywa się w trzech równoległych
dwunastostopniowych potokach. Jądro procesora pracuje w klasycznym układzie typu
RISC: instrukcje IA rozkładane są na proste mikrooperacje i grupowane w centralnym
zbiorniku instrukcji (Instruction Pool). Mocno zarysowany w architekturach innego typu
podział na fazy pobierania (Fetch) i wykonywania (Execute) nie ma tutaj miejsca.
Dzięki istnieniu zbiornika instrukcji, pobieranie kolejnych kodów x86 z pamięci opera-
cyjnej jest niezależne od ich wykonywania. Ważne jest jedynie by zbiornik był stale
napełniony. Czuwa nad tym zestaw bardzo wydajnych dekoderów rozkładających kody
IA na wewnętrzne mikrokody RISC. W trakcie przebywania w zbiorniku kompletowane
są argumenty instrukcji oraz przydzielane rejestry zastępcze, jeśli stwierdzono uzależ
nienia.
Celeron
CPU o tej nazwie jest odmianą Pentium II wykonywaną w nowoczesnej technologii
0.25pm (Deschutes). Ponieważ przeznaczony jest na rynek powszechnego użytkownika
(Low End) stał się ofiarą różnych zabiegów oszczędnościowych. Do najpoważniejszych
z nich należy zaliczyć pozbawienie procesora modułu pamięci podręcznej L-2. Osz
czędności dotyczą również konstrukcji mechanicznej (brak obudowy, prowadnic i zmo
dyfikowany radiator).
Aby cały rachunek ekonomiczny nie uległ zachwianiu, do taniego (stosunkowo) proc
esora opracowano odpowiednio dobrany cenowo zestaw układów otoczenia ( Chip-Set)
oznaczany jako 440EX, który zgodny jest na poziomie końcówek z klasycznym zesta
wem 440LX. Lista wprowadzonych oszczędności jest jeszcze bogatsza niż w przypadku
samego procesora:
• Maksymalna liczba gniazd PCI zredukowana do 3 (440LX może ich mieć 5).
• Maksymalna liczba możliwych do zainstalowania podstawek DIMM wynosi 2.
• Brak możliwości pracy wieloprocesorowej (tryb Single)
Stopień w jakim odczuwalny jest brak pamięci podręcznej L2 zależy w dużej mierze od
wykonywanej aplikacji. Nowoczesne programy budowane są w sposób niezmiernie
kompleksowy i zawierają rozległe partie kodu, które z pewnością nie mieszczą się
w pamięci podręcznej L I. Celeron nie ma w tym wypadku szansy w pojedynku z pełno
wymiarowym Pentium II. Klasyczne aplikacje biurowe nie potrzebują jednak aż takiej
mocy obliczeniowej i wykonują się tak samo szybko na procesorze AMD czy IBM ale
za to za pół ceny. Tutaj nie jest wymagany ani Celeron ani tym bardziej Pentium II.
bolesny. Jednak i w tej dziedzinie obserwuje się trend w kierunku komplikacji i roz
rostów. Pomiary współczynnika trafienia w LI przeprowadzane na grach „starszej
generacji” (np. Quake) wykazują jeszcze dużą zwięzłość kodu (liczba trafień 99%), Ten
sam pomiar wykonany w trakcie przebiegu G-Police wykazuje już 95%. Współczynnik
spada aż do 88% podczas demonstracji bogatej w szczegóły scenerii X-Demo. Prze
waga szybkiego jądra procesora Celeron będzie więc stopniowo maleć.
Tabela 1.19.
Podstawowe dane procesorów Pentium ÏI (Celeron)
266 300
Architektura RISC
Technologia 0,25 gm
Zegar CPU [MHz] 266 300
Magistrala [MHz] 66 66
Mnożnik (BF) 4,0 4,5
LI-Cache (kod) [kB] 16 kB, 4x Associative
Ll-Cache (dane) [kB] 16 kB, 4x Associative, WB
L2 -Cache 0
Pipe-Lines 7
Pipe-Line Stages 12 (FP: 16)
Out o f Order Execution
Branch History Table 512
Branch Target Buffer 512
VcORE [V ] 2,0 2,0
XE0N
Procesor oznaczany tym kryptonimem wprowadzony został na rynek równo w połowie
1998. Przeznaczony jest dla serwerów i wysokowydajnych stacji roboczych. Jądro pro
cesora stanowi wprawdzie struktura Deschutes ale całość poddana całemu szeregowi
zabiegów unowocześniających:
80 Anatomia PC
• Xeon (jako pierwszy produkt Intela) wyposażony został w dwie kostki EPROM
zawierające pamięć konfiguracyjną przechowującą dane charakterystyczne pro
cesora tj. między innymi: typ, takt, numer seryjny. Ma to utrudnić (bo chyba
przecież nie uniemożliwić; kostki EPROM można wylutować) pracę fałszerzom
procesorów.
Nowe bloki CS RAM są tak duże, że trzeba było znacznie zwiększyć rozmiary całego
modułu hybrydowego: produkt finalny jest dwa razy większy i cięższy od Pentium II.
Drugi z proponowanych przez Intel zestawów nazwany został 450NX. Jego twórcy
położyli zdecydowanie większy nacisk na pracę procesorów Xeon w charakterze wy-
sokowydajnych serwerów sieciowych. Pełna wersja systemu (Fuli Kit) może obsłu
giwać dwie niezależne 64-bitowe szyny PCI (lub jedną 64-bitową i dwie 32-bitowe).
Rysunek 1.37.
Algorytm
rozpoznawania
typu procesora
±
Pentium
Do sprawdzenia, czy procesor jest zgodny z procesorem 80286 lub lepszym można wy
korzystać następujący ciąg instrukcji:
xor ax,ax *
r wyzerowanie rejestru ax
push ax t umieszczenie rejestru ax na stosie
popf m
Instrukcja shr przesuwa zawartość argl w prawo, o liczbę bitów określoną przez arg2.
Począwszy od procesora 80186/88 wartość arg2 jest maskowana do 5 bitów - liczba
bitów, o jaką można przesunąć argl mieści się w przedziale domkniętym <0, 31>.
W procesorach 8086/88 nie było tego ograniczenia
Zatem aby odróżnić procesor 8086/88 od 80186/88 należy sprawdzić, czy możliwe jest
przesunięcie argl o więcej niż 31 bitów.
Zastanówmy się, co się stanie, gdy argl równy Offh (11111111) przesuniemy o 021h
(00100001). Procesor 80186/88 zamaskuje wartość arg2 do 5 bitów i dokona jednokrot
nego przesunięcia w prawo - po wykonaniu instrukcji argl będzie miał wartość 07fh
(01111111). Z kolei procesor 8086/88 dokona trzydziestotrzykrotnego przesunięcia
w prawo - argl będzie równy 0.
Procesor 80286
Do odróżnienia procesora 80286 od jego następców można ponownie wykorzystać
rejestr stanu - bity 12-15 mają zawsze wartość 0.
Procesor 80386
Począwszy od procesora 80386 rejestr stanu został rozszerzony do 32 bitów. Do rozpo
znania procesora 80386 można wykorzystać fakt, że w rejestrze stanu procesora 80386
bit 18 ma wartość 0, podczas gdy w procesorach 486 i lepszych zdefiniowany został
znacznik sprawdzania wyrównywania. Zatem jeżeli wartość 18 bitu w rejestrze stanu ma
wartość 0 i nie można jej zmienić, to znaczy, że badany procesor jest układem 80386.
Rozpoznawanie kolejnych generacji procesorów nie powinno już sprawiać takich trud
ności, gdyż - począwszy od procesora Pentium - lista rozkazów została wzbogacona
o instrukcję cpuid, przeznaczoną do identyfikacji typu procesora (ustawiony znacznik
identyfikacji oznacza, że procesor może tę instrukcję wykonać).
Oczywiście układ procesor 80x86-koprocesor 80x87 jest zgodny w górę - program na
pisany dla układów 8086/8087 będzie działał na 80386/80387, pomimo tego, że za
równo architektura koprocesorów, jak i zasada współdziałania z procesorem ulegała
nieznacznym zmianom.
W czasie gdy procesor i koprocesor pracują równolegle, trzeba się zabezpieczyć przed:
• modyfikacją argumentów, z których korzysta koprocesor;
• wykonaniem kolejnej instrukcji esc przed zakończeniem działania koprocesora.
Koprocesor 8087
Koprocesor 8087 przeznaczony jest do współpracy z procesorami 8086/88. Jego wew
nętrzna struktura składa się z dwóch mogących pracować niezależnie bloków:
Koprocesor 8087 —jako jedyny w rodzinie układów 80x87 —ma możliwość genero
wania żądania przerwania w przypadku wystąpienia nie zamaskowanego błędu. Z tego
powodu programy tworzone dla systemu 8086/8087 mogą wymagać zmiany obsługi
błędów numerycznych w przypadku przenoszenia ich do systemów 80286/80287 i lep
szych.
Koprocesor 80287
Koprocesor 80287 przeznaczony jest w zasadzie do współpracy z procesorem 80286
(może pracować w trybie rzeczywistym i chronionym —zmianę trybu pracy umożliwia
port Oflh). Jednak w praktyce można również natknąć się na systemy 80386/80287.
Komunikacja procesora z innymi elementami architektury komputera 85
Koprocesor 80287, podobnie jak jego poprzednik, składa się z dwóch mogących
pracować niezależnie bloków:
Począwszy od procesora 80287 zmieniły się nieco zasady współpracy procesora z ko
procesorem. Procesory 80286 i lepsze automatycznie testują stan wyprowadzenia TEST
po napotkaniu instrukcji esc - nie trzeba zatem programowo blokować możliwości
wykonania kolejnej instrukcji koprocesora przed zakończeniem poprzedniej. W dalszym
ciągu trzeba jednak dbać o to, by procesor i koprocesor nie żądały dostępu w tym
samym czasie do tych samych danych.
Zmienił się również sposób pobierania danych. Procesor umieszcza argumenty w por
tach koprocesora (0f8h, Ofah, Ofch) - koprocesor 8087 pobierał dane z magistrali.
Koprocesor 80387
Koprocesor 80387 przeznaczony jest do współpracy z procesorem 80386. Tryb pracy
procesora (rzeczywisty, chroniony, wirtualny 8086) nie ma wpływu na działanie kopro
cesora, gdyż koprocesor operuje na rozkazach i danych przekazanych przez procesor.
Struktura koprocesora 80387 jest znacznie bardziej skomplikowana niż struktura wcześ
niejszych koprocesorów. W układzie 80387 można wyróżnić trzy mogące pracować
niezależnie bloki:
ÿ
p
Koprocesor i487SX
Coraz większe uzależnienie koprocesora od procesora doprowadziło do ich połączenia
w jednym układzie - procesory począwszy od i486 mają wbudowany koprocesor. Wy
jątkiem jest układ i486SX, w którym działanie koprocesora zostało zablokowane (odpo
wiadający mu koprocesor i487SX jest pełnowartościowym układem 486DX).
Rysunek 1,38.
Algorytm Czypoinicjalizacji
koprocesora biły 0-7
rozpoznawania słowa stanu
Ni e— brak koprocesora
T a k -> [ 8087 ]
— i ---------------------.
80387 tub lepszy |
Komunikacja procesora z innymi elementami architektury komputera 87
Koprocesor 8087
Do identyfikacji koprocesora 8087 można wykorzystać znacznik maski przerwań (bit 7
w słowie sterującym). Decyduje on o tym, czy po wystąpieniu niezamaskowanego błędu
ma być generowane przerwanie. Ponieważ koprocesory 80287 i lepsze nie generują
w takiej sytuacji przerwania, jest on w nich zawsze równy 0 i nie można go zmienić.
Zatem aby rozpoznać koprocesor 8087, wystarczy sprawdzić, czy można ustawić bit 7
w słowie sterującym.
Rysunek 1.39. 15 0
Sposób tworzenia rejestr p segment
F F F FFFFh
adresu fizycznego segmentowy
(np. CS) adres
i,5 0 logiczny
rejestr offset
0 0 0 0 OOOOh
przesunięcia
(np. IP)
9 ó FFFFOh
F F F F 0 dwudziestobitowy
adres logiczny
Procesor 8086 może zaadresować 65536 portów jednobajtowych lub 32768 portów
dwubajtowych (albo ich kombinację nie przekraczającą łącznie rozmiarów segmentu,
tj. 64 kB). Układy dekoderów adresowych płyty głównej ograniczają jednak ten obszar
do 1024 bajtów, tj. adresów 000h-3FFh, przy zachowaniu możliwości koegzystencji
portów 8- i 16-bitowych.
Porty przestrzeni adresowej wejścia-wyjścia stanowią swego rodzaju bramy, przez które
procesor widzi rejestry wewnętrzne różnych urządzeń. Urządzenia te to na ogół wyspec
jalizowane sterowniki (ang. controller), posiadające mniej lub bardziej rozbudowaną
listę poleceń przyjmowanych przez jeden z portów. Stan, w jakim znajduje się dany ste
rownik, obrazowany jest zwykle poprzez zawartość tzw. rejestru statusowego (dostęp
nego też przez jeden z portów). Transport danych do i z urządzenia również odbywa się
poprzez porty.
i
1 7 p * * * * * *
Nie wszystkie rejestry procesora 8086 mogą być użyte do adresowania pamięci. Nie da się
w tym celu wykorzystać rejestrów AX, CX i DX.
90 Anatomia PC
S3 S4 S5 S6 Rejestr segł
0 0 IE 0 ES
1 0 IE 0 SS
0 1 IE 0 CS
1 1 IE 0 DS
BHE/S7 ( Bus High Enable) - sygnał używany przez procesor w operacjach
bajtowych. Niezależnie od tego, czy przedmiotem operacji są
pojedyncze bajty czy też dwubajtowe słowa, wykorzystywana jest
ta sama 16-bitowa magistrala danych. Skutkiem tego, zależnie od
parzystości lub nieparzystości adresu obiektu w przestrzeni
adresowej, żądany bajt zajmie na magistrali jedną z dwóch
możliwych pozycji. Biorąc pod uwagę stan bitu AO (informujący
o parzystości adresu) otrzymujemy następujące kombinacje:
S7 AO Znaczenie
0 0 przekazywane jest słowo 16-bitowe
0 1 bajt leży na liniach D15-D8 (lokalizacja
nieparzysta)
1 0 bajt leży na liniach D 7-D 0 (lokalizacja parzysta)
1 1 stan zabroniony - kombinacja wykluczona
RD (Read) - aktywny stan tego wyjścia (odpowiadający poziomowi
zera logicznego) informuje o żądaniu odczytu danych (z pamięci
lub przestrzeni wejścia-wyjścia) przez procesor;
READY wejście wprowadzające procesor w stan oczekiwania. W stanie
tym generowane są tzw. cykle oczekiwania (ang. wait State),
a procesor czeka na zgłoszenie gotowości urządzenia wejścia-
wyjścia lub pamięci. Dotyczy to obydwu kierunków wymiany
danych, tzn. procesor może czekać zarówno na wystawienie
danych na magistralę, jak i na ich zdjęcie. W rzeczywistości
procesor otrzymuje tzw. synchronizowany sygnał READY, który
niezależnie od asynchronicznego źródła przypada zawsze na
zboczu impulsu taktującego CLK;
INTR {Interrupt) - wejście zbierające zgłoszenia przerwań
pochodzących od sprzętu. W rzeczywistości jest to „punkt
wejścia” kontrolera przerwań;
92 Anatomia PC
TEST stan tego wejścia badany jest instrukcją wait. W stanie wysokim
procesor wprowadzany jest w swego rodzaju „bieg jałowy”
i utrzymywany w nim tak długo, jak długo sygnał na tej końcówce
utrzymuje się na wysokim poziomie logicznym;
NM I (Nonmaskahle Interrupt) - wejście przerwań niemaskowalnych.
W chwili zgłoszenia takiego przerwania procesor kończy
rozpoczęty rozkaz i zapamiętawszy swój stan przechodzi do
wykonania procedury obsługi przerwania INT 2;
RESET wejście wymuszające inicjalizację procesora (powrót do stanu
wyjściowego), oznaczającą załadowanie rejestrów wewnętrznych
procesora ściśle określonymi wartościami oraz podjęcie
wykonywania programu od adresu F000:FFF0h. W celu wywołania
procedury inicjalizacji sygnał RESET musi utrzymać się w wysokim
stanie logicznym przez co najmniej 4 cykle zegara taktującego CPU
(ma to na celu uodpornienie wejścia na zakłócenia);
CLK sygnał taktujący dla procesora;
-SO, - S I , sygnały sterujące dla kontrolera magistrali 8288 (tylko w trybie
—S2 maksymalnym). Możliwe są następujące kombinacje:
$2 SI SO Znaczenie
INTA, sygnał przyjęcia zgłoszenia przerwania
0 0 0
(ang. IRQ - Interrupt Request)
Procesor 8088
Procesor 8088 jest oszczędnościową wersją układu 8086. Nie chodzi tu bynajmniej
o oszczędności przy produkcji samego procesora, lecz o cenę 8-bitowych układów pery
feryjnych z nim współpracujących.
W zakresie zestawu rozkazów i trybów adresowania oba układy są w pełni zgodne. Oba
przetwarzają dane 16-bitowe, z tą jednak różnicą, że układ 8088 posiada wyprowadzone
jedynie osiem bitów swojej 16-bitowej magistrali danych. Każda operacja dostępu do
dwubajtowego słowa wykonywana jest w dwóch etapach. Przykładowe polecenie
przesłania 16-bitowego słowa z pamięci do akumulatora AX „rozpisywane” jest przez
sprzęt w niewidoczny dla oprogramowania sposób na dwie elementarne operacje
jednobajtowe na rejestrach AH i AL, niezależnie od tego, czy dotyczy ono parzystego,
czy nieparzystego adresu w pamięci.
Kontroler 8288
Układ scalony 8288 spełnia rolę pośrednika między samym procesorem a systemową
magistralą sterującą. Jego głównym zadaniem jest dekodowanie sygnałów S0-S2
procesora 8086 (pracującego w trybie maksymalnym; jak wiemy, w trybie minimalnym
niezbędne sygnały sterujące magistralami wytwarza sam procesor) i przetwarzanie ich
na właściwe sygnały składowe magistrali sterującej, tj. IOWC, IORC, MWTC, MRDC,
ł 'l
Rysunek 1.41.
Rozkład
wyprowadzeń MB 1 20 I Vnn
układu 8288 CLK 2 19 SO
S1 3 18 d l S2
D T/R 4 17 l M CE
ALE 5 16 I DEN
AEN f i
8288 15 __ I CEN
M RDC 7 14 I INTA
AMW C I d 8 13 d l IORC
M W TC 9 1? A IOW C
GND 10 11 IO W C
Rysunek 1.42.
Schemat blokowy
komputera XT Procesor Magistrala lokalna
O
Zegar systemowy Kontroler magistrali K Pamięć
(8284) (8288) Y ROM
Kontroler DMA
Karta graficzna
(8237A)
A
Kontroler przerwań
ca
sprzętowych d
£
(8259A) ar
cd d
cd 5
aM>
Vi 13
ca ca
Interfejs to
cn
ca
programowalny
(8255)
14
(ang. Synchronous Data Link Contro i), standard łącza synchronicznego firmy IBM.
98 Anatomia PC
Powyższe układy peryferyjne zlokalizowane na płycie głównej oraz te, które umiesz
czone są na kartach rozszerzenia, tj. sterowniki dysków, łącz szeregowych, równoległych
itd., mają ściśle określone obszary adresowe w przestrzeni wejścia-wyjścia, w której
widoczne są ich rejestry sterujące. Zestawienie tych adresów podano w tabeli 1.20.
Tabela 1.20:
Podział przestrzeni adresowej wejścia-wyjścia w komputerze PC/XT
Rysunek 1.43.
Gniazdo GND tył o b u d o w y
8-bitowej RESET
rv i
+5V
magistrali ¡RQ2
zewnętrznej -5V
DRQ2
-12V
NC
+12V
GND
MEMW
MEMR
IOW
IOR
DACK3
DRQ3
DACK1
DRQ1
DACKO
CLK
SBG7
IRQ6
IRQ5
IRG4
IRQ3
DACK2
T/C
ALE
+5V
OSC
GND
Architektura komputera AT
Na płycie głównej komputera model AT można ostatnio prócz procesora znaleźć tylko
kilka układów scalonych wysokiej skali integracji. Nie oznacza to bynajmniej, że
nastąpiły jakieś gruntowne zmiany w stosunku do pierwowzoru, w którym można było
jednoznacznie zlokalizować wszystkie charakterystyczne układy scalone Intel serii
Snnn. Wysoka skala integracji układów scalonych nie narusza w żaden sposób pełnej
zgodności funkcjonalnej elementów systemu, przydziału adresów itd.
Tabela 1.21.
Podział przestrzeni adresowej wejścia-wyjścia w komputerze PC/A T
Procesor 80286
Pod względem budowy wewnętrznej procesor 80286 nie różni się w istotny sposób od
swego poprzednika. Nowością jest jedynie wprowadzenie tzw. chronionego trybu pracy
(ang. protected mode ). Jego istota polega na sprzętowej realizacji mechanizmu kontroli
dostępu do określonych obszarów pamięci- Mechanizmy te znajdują zastosowanie
w pracy wielozadaniowych systemów operacyjnych, takich jak OS/2 czy Windows NT.
Komunikacja procesora z innymi elementami architektury komputera 105
Płyta główna modelu AT posiada na ogół, oprócz złącz 16-bitowych, również jedno lub
dwa gniazda 8-bitowe. Obowiązują tutaj te same uwagi jak w przypadku modeli XT.
Nie należy jednak umieszczać kart 16-bitowych (tzw. długich) w „krótkich” złączach,
choć jest to fizycznie możliwe. Tak umieszczone karty (na przykład VGA) w większości
przypadków mogą pracować poprawnie, ale nie zostaną w pełni wykorzystane ich
możliwości.
Poniżej omówione zostaną tylko linie nie występujące w 8-bitowej magistrali XT.
Znaczenie pozostałych sygnałów jest takie samo, jak podano przy opisie magistrali XT.
106 Anatomia PC
Rysunek 1.44.
Gniazdo GND B1I A1 l/OCHK tył obudow y
16-bitowej RESET D7
magistrali +5V D6
In D5
zewnętrznej -5V D4
DRQ2 D3
-12V D2
OWS D1
+ 12V DO
GND B10 A10 l/O CHRDY
SMEMW AEN
SMEMR A19
IOW A 18
IOR A 17
DACK3 A16
DRQ3 A15
•
DACK1 A14
DRQ1 A13
REF A12
CLK B20 IA20 A11
IRQ7 A10
IRQ6 A9
IRQ5 A8
IRQ4 A7
IRQ3 A6
DACK2 A5
T /C A4
ALE A3
+5V A2
ose A1
GND B31 A31 AO
MEM W (Memory Write) - stan aktywny tej linii (niski poziom logiczny)
oznacza żądanie odczytu przez procesor lub kontroler DMA
danych z pamięci w zakresie 0-16 MB. Sygnał -SMEMW
w 8-bitowej części złącza generowany jest wyłącznie przy
odczytach w przestrzeni adresowej 0-1 MB, zaś przy próbie
dostępu do pamięci powyżej 1 MB pozostaje nieaktywny
(wysoki poziom logiczny)
IRQ 10-12, (Interrupt Request) - linie zgłoszeń przerwań sprzętowych do
IRQ14-15 datkowego w architekturze AT kontrolera przerwań 8259A
(Slave). Linia IRQ 13, przypisana standardowo obsłudze
znajdującego się na płycie głównej koprocesora arytmetycznego,
nie jest wyprowadzona;
DRQ0, (DMA Request - DMA Acknowledge) - wolny, 8-bitowy kanał
-DACK0 obsługi DMA powstały po zlikwidowaniu mechanizmu
odświeżania pamięci kanałem 0 DMA, pochodzącym
z architektury XT;
DRQ5-7, 16-bitowe kanały DMA udostępniane przez dodatkowy układ
-D A C K 5-7 kontrolera DMA 8237A (Slave)\
MASTER sygnał umożliwiający przejęcie sterowania systemem przez
procesor znajdujący się na karcie rozszerzenia. Układowi takiemu
należy wpierw przyporządkować jeden z kanałów DMA.
Kontroler DMA przeprowadza rutynowo proces odłączania
procesora zainstalowanego na płycie głównej (sekwencja
sygnałów HRQ i HLDA) przed wysłaniem sygnału -DACK do
chcącego zawładnąć magistralami procesora. Ten reaguje
uaktywnieniem linii -MASTER (tj. sprowadzeniem jej do
poziomu zera logicznego) i przejmuje sterowanie systemem.
Rozwiązanie tych problemów w ramach architektury AT nie jest możliwe. Z tego też
względu powstało wiele konkurencyjnych standardów, z których tylko nieliczne ugrun
towały swą pozycję na rynku. Oznacza to naturalnie, że istnieją nie tylko płyty główne
innych standardów, ale - co nie mniej ważne - dostosowane do nich karty rozszerzające
obsługujące te same urządzenia zewnętrzne, jak monitory, dyski itp.
Rysunek 145.
Rozwój
architektury
komputerów PC
Wprowadzone w stosunku do standardu ISA zmiany nie mają więc charakteru rewo
lucyjnego, a raczej poważnej operacji kosmetycznej. Dotyczą one kilku obszarów.
Wieioprocesorowość
Dowolny kontroler (procesor) umieszczony na jednej z kart rozszerzających EISA ma
nieograniczone możliwości sterowania magistralą systemową. Oznacza to, że w syste
mie mogą „współżyć” różne procesory mające dostęp do tych samych zasobów kompu
tera, takich jak dyski, pamięć itp. System przydziału magistral kolejnym procesorom
jest dosyć rozbudowany i umożliwia hierarchiczno-priorytetowy sposób dostępu.
Magistrala zewnętrzna
Karty rozszerzające EISA mają do dyspozycji, oprócz wielu sygnałów sterujących,
32 bity systemowej szyny adresowej i 32 bity systemowej szyny danych. Na magistralę
Komunikacja procesora z innymi elementami architektury komputera 111
zewnętrzną EISA składa się 98 sygnałów standardu ISA oraz 90 nowych linii. Nie
wszystkie nowe sygnały są jednoznacznie zdefiniowane - pozostawiono tu miejsce na
specyficzne rozwiązania producentów wysoce specjalizowanych kart.
Aby zachować wymóg zgodności z kartami ISA, gniazda EISA mają szczególną
konstrukcję. Styki gniazd ułożone są na dwóch poziomach. Poziom górny dostarcza
wszystkich sygnałów standardu ISA, natomiast w dolnym, położonym w głębi gniazda,
rozlokowane są końcówki EISA. Normalna karta ISA nie może być wsunięta tak
głęboko, by sięgnąć linii dodatkowych styków - uniemożliwiają to poprzeczne zapory.
Nie są one jednak przeszkodą dla kart EISA, posiadających w odpowiednich miejscach
wycięcia.
Kontroler DMA
Bardzo istotne zmiany wprowadzono w systemie DMA. Nie ma już znanych ze standar
du ISA ograniczeń objętości przesyłanych danych do bloków po 64 kB (128 kB w ka
nałach 16-bitowych). Wykorzystywane są pełne zdolności 32-bitowej szyny adresowej,
tzn. teoretycznie możliwe są transfery bloków o wielkości do 4 GB. Aby zachować
zdolność obsługi kart ISA, stosowany w architekturze EISA nowoczesny, 32-bitowy
kontroler DMA ma możliwość pracy w trybie układu 8237A. Każdy z siedmiu kanałów
DMA może więc obsługiwać urządzenia 8-, 16-, i 32-bitowe.
Kontroler magistral
Wszystkie magistrale EISA są 32-bitowe. Procesory 80386 i 80486 mająpoza tym moż
liwość użytkowania magistral w tzw. trybie burst, co oznacza dostęp do adresowanego
obiektu w jednym takcie zegarowym. Dla porównania, magistrala AT potrzebuje w naj
lepszym razie (bez cykli oczekiwania) czterech taktów zegara. Ze względu na zacho
wanie kompatybilności magistrala zewnętrzna EISA pracuje z maksymalną prędkością
8.33 MHz, natomiast dostęp do pamięci odbywa się już z pełną częstotliwością zegara
CPU.
112 Anatomia PC
Pamięć konfiguracji
64 bajty pamięci konfiguracji znane z architektury AT zastąpione zostały 4 kB w stan
dardzie EISA. Pamięć ta przechowuje nie tylko informacje o konfiguracji płyty głów
nej, ale i o zainstalowanych kartach. W systemie EISA nie ma żadnych przełączników
konfigurujących (DIP) ani zwór; konfigurowanie systemu odbywa się całkowicie pro
gramowo.
Centralny procesor na płycie głównej (ang. host CPU) może być wspomagany przez 16
dodatkowych mikroprocesorów umieszczonych na kartach rozszerzających. Dla potrzeb
wzajemnej komunikacji między procesorami, uwzględnienia ich priorytetów, przydziału
odcinków czasowych dla dysponowania magistralami itd. dedykowano specjalną
4-bitową szynę sterującą.
Karty rozszerzające systemu MCA nie są już anonimowe. Każda z nich ma swój
niepowtarzalny numer identyfikacyjny - produktom innych wytwórców nadawane są
numery uzgadniane centralnie z IBM. System ten umożliwia jednoznaczną identyfikację
rodzaju karty. Jej konfiguracja odbywa się wyłącznie w drodze dialogu z programem
instalacyjnym. Na karcie brak jest jakichkolwiek zwór i przełączników. Informacja
o konfiguracji karty przechowywana jest w systemowej pamięci CMOS.
Pod nazwą VESA (lub VLB, VESA Local Bus) kryje się system 32-bitowej szyny
lokalnej dedykowanej w zasadzie obsłudze tylko dwóch urządzeń - karty sterownika
monitora i kontrolera dysków.
Rysunek 1.46.
Architektura
komputera
z magistralą VESA
15 Oficjalna specyfikacja standardu VESA 1.0 została opublikowana we wrześniu 1992 roku.
Większość obecnie produkowanego osprzętu VLB odpowiada tej specyfikacji. Oficjalna
specyfikacja standardu VES A 1.0 została opublikowana we wrześniu 1992 roku. Większość
obecnie produkowanego osprzętu VLB odpowiada tej specyfikacji.
Komunikacja procesora z innymi elementami architektury komputera 115
Struktura magistrali VESA jest bardzo mocno związana ze sprzętem, ponieważ jest ona
bezpośrednio połączona z magistralą lokalną procesora i486. Rozwiązanie takie
sprawia, że koszt umieszczenia magistrali VESA w systemie 386/486 jest bardzo niski.
Z drugiej jednak strony, tak silne związanie sprawi, że magistrala VESA umrze śmiercią
naturalną wtedy, gdy systemy 386/486 wyjdą z użycia.
Rozwiązanie to jest swego rodzaju dodatkiem do architektury ISA, gdyż - nie narusza
jąc cech standardu - wymaga dobudowania na zwykłej płycie AT od jednego do trzech
32-bitowych złącz YESA.
Rysunek 147:
Gniazdo magistrali DAT01
DAT03
VESA GND
DAT05
DAT07
DAT09
DAT11
DAT13
DAT15
GND
DAT17
Vcc
DAT19
DAT21
55 DAT22
DAT25
f i GND
-Î5
o> DAT27
ca DAT29
£ DAT31
ADR30
ADR28
c
CD ADR26
GND
ADR24
ADR22
Vcc
ADR20
ADR18
ADR16
ADR14
ADR12
ADR10
ADR08
GND
ADR06
ADR04
WBACK#
BEO#
Vcc
BE1#
BE2#
GND
c2/>
D BE3#
CO ADS#
key
8 key
LRDY#
LDEV<X>#
p5 LREQ<X>#
& GND
i.52 LGNT<X>#
Vcc
o>
ca ID2
£ ID3
o 1D4
K
.55 l LKEN#
LEADS#
<§
< 4 ►
116 Anatomia PC
Płyta główna standardu VESA jest tańsza od EISA, zważywszy prostotę jej budowy.
Również karty rozszerzenia pracujące w tym systemie są bardziej dostępne dla kieszeni
zwykłego użytkownika. Karty graficzne standardu VLB są 2-3 razy szybsze od swoich
klasycznych konkurentek. Dodatkowy wzrost wydajności karty w środowisku Windows
gwarantują specjalnie opracowane procesory graficzne (między innymi Weitek W5086,
S3 86C911, C&T 82C453), które jednak podczas pracy w środowisku DOS nie dają
żadnych korzyści.
Inaczej wygląda sprawa kontrolerów dysków VLB. Żaden układ nie jest w stanie po
prawić parametrów samego dysku. Powszechnie stosowane dyski twarde typu IDE mają
przecież zintegrowany w sobie sterownik, więc jeżeli przepustowość danych na odcinku
głowice-sterownik jest mała, to magistrala nic tu nie pomoże. Jeżeli natomiast dysk
dysponuje obszernym własnym buforem (onboard cache), to zalety szybkiej, 32-
bitowej magistrali VESA można z powodzeniem wykorzystać.
Rysunek 1.48.
Architektura
komputera
z magistralą PCI
Pamięć
A —
----------------------------------- / podręczna
Sterownik ukadów
pamięci / interfejs
magistrali PCI
Zasada działania magistrali PCI jest bardzo prosta: do magistrali mogą być podłączone
dwa rodzaje urządzeń: inicjatory - mogące przejmować kontrolę nad magistralą, slave -
mogące tylko transmitować dane. Transmisja danych może przebiegać między dwoma
inicjatorami lub inicjatorem i slavem.
118 Anatomia PC
Rysunek 1.49.
Typowy przebieg
transmisji Inicjator rozpoczyna
transmisję
wystawiając sygnał
-FRAME, adres
i rozkaz PC! Inicjator kończy
wystawiać sygnał
Urządzenie docelowe ~FRAME, informując
dekoduje adres w ten sposób
i komendę urządzenie docelowe
o transmisji ostatniej
Inicjator kończy danej
wystawiać adres
i oczekuje na
zgłoszenie się
urządzenia slave
Inicjator kończy
wystawiać rozkaz PCI Inicjator zwalnia
i wystawia sygnał magistralę
-Byte Enable______
Urządzenie docelowe
jest gotowe do Urządzenie docelowe
wymiany danych - kończy transmisję
wystawia sygnał
~DEVSEL
DEVSEL
Gdy urządzenie slave rozpozna, że transmisja danych skierowana jest do niego, wystawia
na magistrali sygnał -DEVSEL {Device Select) —jeżeli sygnał -DEVSEL nie zostanie
wystawiony w odpowiednim czasie, transmisja zostanie zaniechana. Wystawienie przez
urządzenie slave sygnału -DEVSEL kończy nawiązywanie połączenia (fazę adresową)
pomiędzy inicjatorem i urządzeniem slave. W następnym etapie (fazie przesyłania
danych) rozpoczyna się przesyłanie danych (sygnały AD — Data). Liczbę bajtów
przesyłanych danych określają sygnały C/~BE {Byte Eanble) ustawiane przez inicjator.
Transfer danych powinien przebiegać w trakcie jednego cyklu zegara. Inicjator i urzą
dzenie docelowe wystawiają sygnały -IRDY {Initiator Ready) i ~TRDY {Terminator
Ready) informujące o tym, że są gotowe do przekazywania danych. Jeżeli z jakichś
względów inicjator bądź urządzenie docelowe nie są w stanie przekazywać danych, to
zmieniają ustawienie sygnałów ~IRDY lub -TRDY w celu wprowadzenia dodatkowych
cykli oczekiwania (ang. wait states).
Komunikacja procesora z innymi elementami architektury komputera 119
Dwa dodatkowe sygnały (-REQ i -GNT) umożliwiają arbitraż w sytuacji, gdy kilka
inicjatorów próbuje równocześnie przejąć kontrolę nad magistralą. Wystawienie przez
inicjator sygnału ~REQ (Request) oznacza żądanie dostępu do magistrali, zaś sygnał
~GNT (Grant) oznacza przyznanie przez układ arbitrażu kontroli nad magistralą
określonemu inicjatorowi. Para sygnałów -REQ i ~GNT doprowadzana jest osobno od
arbitera do każdego inicjatora. Specyfikacja PCI nie definiuje sposobu arbitrażu.
Zwykle arbiter umieszczony jest w układzie sprzęgającym magistralę lokalną procesora
z magistralą PCI.
Rysunek 1.50.
Przykładowy
przebieg arbitrażu
A wycofuje
żądanie dostępu
Inicjatory A i B
do magistrali
żądają równocześnie
dostępu do magistrali
B wycofuje
żądanie dostępu
Arbiter przyznaje
do magistrali
magistralę inicjatorowi
A
Arbiter przyznaje
magistralę inicjatorowi
B, inicjator B czeka
na zwolnienie
magistrali_________
Arbiter ponownie
przyznaje magistralę
inicjatorowi A,
inicjator A czeka na
zwolnienie magistrali
Inicjator A rozpoczyna
pierwszą transmisję
Inicjator B rozpoczyna
transmisję
Inicjator A rozpoczyna
drugą transmisję
-DEVSEL
120 Anatomia PC
i
Komunikacja procesora z innymi elementami architektury komputera 123
Magistrala zewnętrzna
Sygnały magistrali PCI wyprowadzone są do gniazd, w których można umieszczać
karty rozszerzające. Gniazda te odbiegają kształtem od gniazd magistral ISA i VESA
Local Bus, co uniemożliwia umieszczenie karty PCI w niewłaściwym gnieździe (i vice
versa).
Gniazda magistrali PCI mogą mieć kilka wariantów (rysunek 1.52). Klucz uniemożli
wiający włożenie niewłaściwego typu karty jest umieszczony w różnych miejscach -
zależnie od poziomu napięcia zasilającego magistralę (3,3 V lub 5 V). Gniazdo 64-
bitowej magistrali PCI wygląda jak gniazdo magistrali 32-bitowej, do którego dodano
jedną sekcję.
~ PRSNT1 -PRSNT2
brak karty rozszerzającej 1 1
karta o maksymalnym poborze mocy do 25 W 0 1
karta o maksymalnym poborze mocy do 15 W 1 0
karta o maksymalnym poborze mocy do 7,5 W 0 0
Rysunek 1.52a.
-1 2 V A1 BI -TRST •12V Al BI -TRST
Gniazdo magistrali TCK +12V TCK +12V
GND GND TWS
PCI (3.3 V) TDO TOS TDO TD1
+5V +5V +5V +5V
+5V HNTA +5V -INTA
-N TB HNTC -N 7B -INTC Tył obudowy
-« T O +5V -WTD +SV
-PRSNT1 ret -PRSNT1 ret
res A1C B10 +3.3V res A10 B10 +3,3V
-PRSNT2 rea -PRSNT2 re*
key key key
key key key key
res res rea res
GND ~RST GND -RST
CLK +3,3V CLK +3.3V
GND -GNT GND -GNT
-REO GND -REQ GND
+3.3V res +3,37 fea
AD[31] A2G B20 AD[30] A0[31] A20 B20 ADJ30]
AD[29] +3,3V AD[29j +3.3V
ONO AD [28] GND AD[28]
AD[27] AD [26] AD[27] AD[26]
AD[25] GND AD[25] GND
+33V AD [24] +33V AD[24]
~ G flE [3 ] DSEL 'C6EJ3] 0SEL
AD[23] +3*3V AD[23] +3.3V
GND AD [22] GND ADJ22]
AD[21] AD[20] A0[21] AD[20]
AD[t9] A3C 830 GND AD[19: A30 B30 GND
+33V AD[1B] +3,3V AD [18]
AD[17] AD [16] AD[17] AD[16]
-GSE12] +3,3V -CBE[2] +3.3V
GND -FRAME GND “PRAME
HRDY GND -tRDY GND
+3,3V -TRDY +3,3V *TflDY
'OEVSEL GND -DEVSEL GND
GND -STOP GND -STOP
-LO C K +3,3V -LOCK +3,3V
-PERR A40 B40 SDONE -PERR A40 B40 SDONE
-S 9 0
+3,3V -SBQ +33V
-SERR GND -SERR GND
+3.3V PAR +3t3V PAR
-aBEiu AD [15] -C6E[1] AD[15]
+3.3V
AD [14] +3,3V AD[14]
GND AD [13] GND AD[13]
AD [12] AD[11j AD[12] AD[11]
A0I10] GND AD[10; GND
GND AD [09] GND AD[09J
GND A5G B50 GND GND ASO B50 GND
GND GND GND GND
AD(08) ~C/BE[0] AD [08] ~C;BE[0]
AD|07] +3.3W AD [07] +3.3V
+3f3V AD [06] +3.3V AD [06]
AD(05) AD [04] AD [05] AD [04]
AD[03] GND AD [03] GND
GND AD[02] GND AD [02]
AD|01] AD [00] A0[01] AD [00]
+3.3V +3.3V +3.3V +3.3V
-A C K 64 ASO B60 -RE064 -ACK64 A60 BSO -RE064
+5V +5V +5V +5V
+5V +5V +5V +5V
Key tey
key key
res A63 B63 GND
GND -C «E [7]
-CBE[6] “C/BĘ5]
-C6E[4l +3*3V
GND PAR64
AD[63] AD[62]
ADF611 GND
+3,3V A70 B70 AD 60]
AD[59] AD 56]
AD[57] GND
GND AD 56]
AD[55] AD 54]
AD[53] +3.3V
GND AD[52{
AD[51] AD[50]
AD[49] GND
+3*3V AD[40]
AD[47] A60 B80 AD[46]
AD [45] GND
GND AD[44]
AD[43] AD[42{
AD[41] +3.3V
GND AD[40]
AD [39! AD[3B]
AD[37] GND
+3,3V AD[36]
AD [35] AD[34]
AD [33 A90 B90 GND
GND AD[32J
rea FM
rea GND
GND rea
130 Anatomia PC
Rysunek 1.52b. BI
-12V Al BI -TRST 12V Al -TRST
Gniazdo magistrali TCK +12V TCK +12V
GND IM S GND IMS
PCI ID O TDI TDO TDI
+5V +5V 45V +5V
(5V) +5V -INTA 45V -1NTA
-JNTB -INTC -« T B HNTC Tył obudowy
-« T D +5V -« T U +5V
-PRSNT1 res -PRSNT1 res
ros A10 B10 +5V ras A1Q 810 +5V
-PR SN T2 res -PRSNT2 res
GND GND GND GND
GND GND GND GND
ros res res ret
GND -RST GND “RST
CLK +5V CLK +5V
GND -GNT GND -GNT
-REO GND -REG GND
ras
+5V res 45V
AD[31] A20 B20 AD[30] ADJ31] A20 B20 ADpO]
AD[29] A 3V AD¡29] +3P3V
GND AD[2S] GND AD[26]
AD[27] AD[26] AO[27] AD[26]
AD[25] GND AD [25] GND
+3P3V AD[241 *3 t3V AD[24j
-C /BE[3] ÜSEL ~C.-BE[3] IDSEL
AD[23] 43,3V ADf23] +3.3V
GND AD[22| GND AD(22]
AD[21 AD[20) AD[21] AD[20J
A0[19 A30 B30 GND AD [19] A30 B30 GND
+3,3V AD[tet +3,3V ADfIBI
AD1171 AD[16] AD[ł7] AD[16]
^C/B£[2} +3.3V -C 3E [2I +3P3V
GND -FRAME GND -FRAME
*IRDY GND -IRDY GND
-TfiDY
+3t3V -TRDY +3.3V
-D E V 5E L GND -DEV5EL GND
GND -STOP GND -STOP
-LOCK A 3V -LOCK +3,3V
-P E R R A40 B40 SDONE -PERR A40 B40 SDONE
43(3V -SBQ 433V -S0O
GND
-S E R B GND -SERR
+3P3V PAR 43p3V PAR
^C/0E[1] AD[t5J AD[15|
AD|14] +3t3V AD [14] +3,3V
GND AD[13] GND AD [13]
AD[12] AD{11] AD[12| AD[11]
AD[10] GND AD [10] GND
GND ADfOS] GND AD(09]
key A50 B50 key key A50 B50 key
key key key key
ADfOBJ CBE#[Q] AD[08] CiSE-tO]
AD [07) 43,3V AD¡07] +3P3V
*3.3V A0[QG] 43f3V AD[Q6|
AD[05] AD[04] AD [05] AD [04]
AD [03] GND AD [03} GND
GND AD[02) GND AD [02]
AD[01] AD[00] AD[01] AD [00]
+5V +5V 4&V +5V
-ACK64 A60 B60 -REQ64 -ACK64 A60 B60 -REG64
*5V 45V 45V +5V
45V 45V +5V +5V
key key
key key
ras A63 B63 GND
GND <mn
-G 8E[5]
-C/BE(6]
-C«E[4] +5V
GND PAR64
AD [53] AD [62]
AD [61] GND
+5V A70 B70 AD[60]
AD [59] AD[SB]
AD [57] GND
GND AD[56]
AD (55] AD[54)
AD [53] +5V
GND AD[52fJ
AD[51] AD[50]
AD [49} GND
4&V AD(46J
AD [47] A80 B80 AD[46]
AD (45] GND
GND AD [44]
ADJ43] AD[42]
AD[4ł] *5V
GND AD[40]
AD [39} AD(36]
A0[37| GND
45V ADJ36]
AD (35) AD[34]
AD [33] A9Ú m GND
GND AD[32]
ras ras
ras GND
GND ras
Komunikacja procesora z innymi elementami architektury komputera 131
Adres bazowy 0 04
Adres bazowy 1 05
Adres bazowy 2 06
Adres bazowy 3 07
Adres bazowy 4 08
Adres bazowy 5 09
Zarezerwowane 13
Zarezerwowane 14
Długość
Częstość Linia INT Linia IRQ 15
transmisji
bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
bity 15-0 identyfikator producenta, wartość bitów określana jest przez PCI
SIG (PCI Special Interest Group) i jednoznacznie identyfikuje
producenta urządzenia. Wartość FFFFh jest zastrzeżona, i jest
zwracana przez sterownik magistrali PCI podczas próby odczytu
identyfikatora producenta urządzenia, którego nie ma w systemie.
bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO
Komunikacja procesora z innymi elementami architektury komputera 133
bity 15-0 typ urządzenia, wartość bitów określana jest przez producenta.
X X X X X X bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
Tabela 1.22.
Klasyfikacja urządzeń PCI
Tabela 123:
Kody interfejsu kontrolera IDE
Bit Opis
7-4 zarezerwowane (0)
3 1 - drugi (secondary) kontroler dysków może pracować w dwóch trybach
0 - drugi (secondary) kontroler dysków może pracować tylko w trybie
określonym przez bit 2
2 tryb pracy drugiego (secondary) kontrolera dysków:
0 - zgodny z ISA (rejestr danych 170h, rejestr stanu 376h, IRQ 15)
1 - zgodny z PCI (rejestr danych: przesunięcie 0x18h, rejestr stanu:
przesunięcie 0x1 Ch)
1 1 - pierwszy (primary) kontroler dysków może pracować w dwóch trybach
0 - pierwszy (primary) kontroler dysków może pracować tylko w trybie
określonym przez bit 0
0 tryb pracy pierwszego (primary) kontrolera dysków:
0 - zgodny z ISA (rejestr danych łFOh, rejestr stanu 3F6h, IRQ 14)
1 - zgodny z PCI (rejestr danych: przesunięcie 0xl0h, rejestr stanu:
przesunięcie 0x14h)
Minimalny czas transmisji określa minimalny czas, na który inicjator ma prawo przejąć
kontrolę nad magistralą. Po przejęciu kontroli nad magistralą zawartość tego rejestru
jest dekrementowana po każdym cyklu zegara.
Rejestr ten zabezpiecza inicjator przed odebraniem mu kontroli nad magistralą przed
upływem minimalnego czasu potrzebnego na przeprowadzenie transmisji danych. Gdy
układ arbitrażowy odbierze inicjatorowi prawo do kontrolowania magistrali, inicjator
może kontynuować transmisję dopóki rejestr ten nie jest wyzerowany.
bit 7 0 0 0 0 0 0 0
wpisać
bazowego wartość
bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit 0
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
bity 31-4 rozmiar bloku pamięci operacyjnej (jeżeli adres może być
umieszczony w 64-bitowej przestrzeni adresowej, rozmiar bloku
kodowany jest w bitach 63-4 - wykorzystywane są dwa kolejne
rejestry);
bit 3 1 - blok pamięci nie może być cache’owany,
0 - blok pamięci może być cache’owany;
bity 2-1 11 zarezerwowane,
-
bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit 1
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Rozmiar bloku pamięci określany jest przez pierwszy ustawiony bit w obszarze bloku
pamięci (na przykład ustawiony bit 8 oznacza blok 256-bajtowy). Najmniejszy możliwy
do określenia blok pamięci wynosi 4 bajty w przestrzeni wejścia-wyjścia i 16 bajtów
w pamięci operacyjnej.
0 bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit
30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Te dwa rejestry mają za zadanie umożliwienie rozróżnienia tych samych urządzeń PCI
(mających taki sam identyfikator producenta, identyfikator urządzenia i kod klasy urzą
dzenia) umieszczonych na płycie głównej i różnych kartach rozszerzających. Oprogra
mowanie konfigurujące system wykorzystuje te rejestry do jednoznacznej identyfikacji
urządzeń.
Przydzielenie adresu składa się z dwóch etapów. W pierwszym określany jest rozmiar
bloku pamięci ROM, w drugim przydzielany jest adres bazowy.
Aby określić rozmiar pamięci ROM, należy wpisać do rejestru adresu bazowego
pamięci ROM wartość FFFFFFFEh, a następnie odczytać i zdekodować jego zawartość.
bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit 0
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Rozmiar pamięci ROM określany jest przez pierwszy ustawiony bit w obszarze
rozmiaru rozszerzenia pamięci ROM (na przykład ustawiony bit 14 oznacza 16 kB
pamięci ROM). Najmniejszy rozmiar rozszerzenia pamięci ROM wynosi 2 kB.
Częstość (Max_Laf)
PCI BIOS
Do pamięci konfiguracyjnej urządzeń PCI można się również dostać przez procedury
BIOS. Specyfikacja PCI 2.1 wprowadziła funkcję B lh do przerwania 1NT lAh. Pod-
funkcje tej funkcji umożliwiają:
Odwołanie do PCI BIOS może nastąpić przez wywołanie funkcji B lh przerwania lAh
(systemy pracujące w trybie 16-bitowym) lub bezpośrednie odwołanie do adresu
OOOFFEóEh (systemy pracujące w trybie 32-bitowym).
Magistrala AGP
Pomimo niezmiernie dynamicznego rozwoju akceleratorów graficznych w które wypo
saża się komputery klasy PC, systemy zbudowane na bazie architektury tego typu długo
jeszcze nie będą w stanie konkurować ze stacjami graficznymi. W ostatnim czasie czyni
się bardzo wiele w celu zmniejszenia dystansu dzielącego te dwa światy. Nie jest to
148 Anatomia PC
łatwe zadanie jeśli wziąć pod uwagę konieczność zachowania rozsądnych wskaźników
ekonomicznych. Komputer klasy PC ma przecież w niedalekiej przyszłości znaleźć się
w każdym gospodarstwie domowym i nie może być zbyt drogi.
Wytwarzany strumień danych już teraz mieści się z trudem w ramach oferowanych przez
specyfikację magistrali PCI a wymagania rosną z dnia na dzień. Aby sprostać tym nowym
wyzwaniom powołany został w roku 1996 z inicjatywy firmy Intel komitet w skład
którego wchodzili przedstawiciele producentów kontrolerów graficznych i płyt głów
nych. Efektem wspólnej pracy tego gremium jest opracowanie nowoczesnej magistrali
określanej mianem AGP {Accelercitecł Graphics Port). Integracja AGP w architekturze
PC przedstawiona została w sposób schematyczny na rysunku 1.55.
Rysunek 1.55.
Architektura CPU
komputera Monitor
z magistralą AGP
1x: 264MB/?
(32bity/66MHz)
2x: 532MB/S
(32bity/133MHz) Chip Set
4x: 1.04GB/S (np. 440LX lub 440B)Q
(32bity/266MHz} a> 526MB/S
O) (64bity/66MHz)
Akcelerator 32 Core Logic
graficzny f f l
3D o. 800MB/S
O (64ixty/100MHz)
<
PCI Bridge
ok, 80QMB/S
Pamięć
lokalna pa
PCI to ISA PCI PCI
HDD Brkfge
ISA
Komunikacja procesora z innymi elementami architektury komputera 149
Mimo iż nie widać tego na pierwszy rzut oka, AGP stanowi jedynie pewne przedłużenie
magistrali PCI i nie jest magistralą jako taką. Nie ma i nie będzie płyt głównych z wie
loma gniazdami AGP bowiem jedynym urządzeniem umieszczanym w takim gnieździe
może być akcelerator 3D. Magistrala AGP nie przyspiesza operacji graficznych, nato
miast pozwala na bardziej wydajną pracę procesora graficznego. Sprawuje on jako
Master wyłączną władzę nad magistralą i kieruje swe żądania w stronę pamięci opera
cyjnej (Target).
oddziaływanie
DRAM i SDRAM
pamięci graficzne SGRAM nadal nie są zbyt tanie. Karty wyposażone w 24 MB pamięci
lokalnej jeszcze długo nie będą dominowały na rynku zwykłego konsumenta. Dzięki
technice AGP kontroler graficzny „widzi” znacznie więcej pamięci lokalnej niż jest jej
zainstalowanej. W ten sposób dła celów graficznych używana jest tania pamięć opera
cyjna.
pewnym
przesunięciem wynikającym z innych rozmiarów kart AGP (rysunek 1.56).
PCI
AGP
(3.3V)
ISA
Dominujący bardzo długo standard PCI w wersji 2.0 ograniczał częstotliwość takto
wania magistrali do 33 MHz. AGP bazuje na specyfikacji PCI w wersji 2.1 (zegar 66
MHz), która nie zdobyła nigdy nadmiernej popularności, jako że przytłaczająca więk
szość wyprodukowanych dotychczas kart gwarantowała niezawodne funkcjonowanie
jedynie w zakresie do 33MHz. AGP rozszerza standard bazowy (PCI 2.1) o dodatkowe
funkcje, zmienia znaczenie niektórych dotychczasowych sygnałów oraz wprowadza
szereg nowych. Mnogość sygnałów zmusza konstruktorów do opracowania nowego
złącza krawędziowego o stosunkowo wysokiej gęstości pól kontaktowych (raster 1 mm).
Karty AGP posiadają dwustronną listwę połączeniową (rysunek 1.57) o 132 kontaktach
(po 66 z każdej strony).
150 Anatomia PC
Rysunek 1.57.
Schemat
rozmieszczenia
styków
w złączu A GP
Transfer zgodny z normą PCI odbywa się w rytmie zegara pracującego z częstotliwością
33 MHz. Przy szerokości magistrali równej 32 bity (4 bajty) otrzymujemy cytowaną
często wartość 132 MB/s.
16 Dokładna wartość częstotliwości zegara leży nieco powyżej 66 MHz. Wielkość 132 jest
wynikiem zaokrąglenia w dół.
Komunikacja procesora z innymi elementami architektury komputera 151
Specyfikacja dopuszcza istnienie uniwersalnego gniazda AGP, które jest w stanie roz
różniać i obsługiwać karty obydwu standardów: zarówno 3,3 V jak i 1,5 V. Wszystkie
trzy typy złącz AGP przedstawione zostały na rysunku 1.58, a znaczenie poszcze
gólnych końcówek zebrane zostało w tabeli 1.24.
o
_o AGP/1.5V
o
A1 A66
o
■o
3 AGP/Uni
-O
O
Tabela 1,24.
Rozmieszczenie złącz w gnieździe A GP
Szyna AD
AD[31“ 0] 32 linie magistrali AGP (używane również w transakcjach PCI).
154 Anatomia PC
Sygnały PCI
C/~BE[3-0] ( Command/Byte Enable) Mają nieco inne znaczenie niż przy PCI.
Podczas transakcji AGP linie te sterowane są przez stronę Master.
Ą W trakcie przesyłania komendy (kolejkowania żądań) przy użyciu
sygnału -PIPE szyną tą przekazywany jest typ rozkazu.
-REQ (Request) Sygnalizuje chęć dostępu do magistrali.
-R ST (Reset) Znaczenie identyczne z PCI, powoduje inicjalizację wszystkich
podłączonych do magistrali urządzeń.
-G N T (Grant) Znaczenie takie jak przy PCI z rozszerzeniem o informacje
przekazywane przez magistralę statusową.
-LOCK Magistrala AGP nie korzysta z tego sygnału. Nie ma on zastosowania ani
w trakcie cykli AGP ani PCI.
PAR (Parity) Sygnał parzystości, jakkolwiek nie jest oceniany w ramach
protokołu, musi być generowany przez urządzenie mające w posiadaniu
magistralę AGP.
-FRAME (Cycle Frame) Sygnał nie ma zastosowania w klasycznych cyklach AGP
i używany jest wyłącznie w trybie FW (Fast Write).
-TRDY (Target Ready) Sygnalizuje gotowość jednostki Target do dostarczenie
żądanych danych (w całości łub ich fragmentu). Jednorazowy transfer
całości nie może trwać dłużej niż cztery cykle zegarowe. Przekazy
fragmentaryczne mogą być natomiast uzupełniane cyklami oczekiwania
( Wait States ).
-IR D Y (Initiator Ready) Sygnalizuje gotowość jednostki Master do
przeprowadzenia aktualnej transakcji. Wszystkie przewidziane do
wysłania dane są gotowe. Master, który aktywował sygnał -IRDY
w trakcie operacji zapisu nie może już wprowadzać cykli oczekiwania.
-STOP Sygnał nie znajduje zastosowania w kolejkowanych transakcjach AGP.
Używany jest jedynie w trybie FW dla sygnalizowania pewnych stanów
wyjątkowych.
-DEVSEL (Device Select) Używany w trybie FW do wskazywania błędu. Nie ma
zastosowania w kolejkowanych transakcjach AGP.
IDSEL (Initialization Device Select) Wewnętrzny sygnał generowany przez
interfejs graficzny, nie należy do linii złącza AGP.
-PERR (Parity Error) Sygnał nie jest respektowany w transakcjach AGP.
-SERR (System Error) Znaczenie takie samo jak w przypadku PCI: błąd
krytyczny inny niż parzystość danych. Prowadzi do wygenerowania
przerwania niemaskowalnego (NMI).
-INTA(B) (Interrupt Request) Znaczenie identyczne z PCI.
Komunikacja procesora z innymi elementami architektury komputera 155
Status
~ST[2-0] Linie ST2, ST1 i STO stanowią szynę statusową (Status) sterowaną
wyłącznie przez jednostkę Target, tj. układy stowarzyszone z płytą
główną (Chip-Set Corelogic), Dostarcza ona informacji pomocniczych
identyfikujących fazę w jakiej znajduje się magistrala AGP. Stan
magistrali statusowej odczytywany jest przez stronę Master w oknie
czasowym wyznaczanym aktywnością sygnału ~GNT. Możliwe są
następujące kombinacje:
ST2-ST1-ST0 Znaczenie
0-0-0 Target przesyła do strony Master (uprzednio żądane)
dane typu LP (Low Priority)
0-0-1 Target przesyła do strony Master (uprzednio żądane)
dane typu HP (High Priority)
0-1 -0 Master jest w trakcie przesyłania danych typu LP,
zgodnie z umieszczonym w kolejce żądaniem zapisu do
jednostki Target.
0-1-1 Master jest w trakcie przesyłania danych typu HP,
zgodnie z umieszczonym w kolejce żądaniem zapisu do
jednostki Target.
1-0-0 Zarezerwowane
1-0-1 Zarezerwowane
156 Anatomia PC
ST2-ST1-ST0 Znaczenie
1-1-0 Zarezerwowane
1-1-1 Master uzyskał zezwolenie od układu arbitrażu
(regulującego dostęp do magistrali AGP) do
przeprowadzenia transakcji. Może więc umieścić kolejne
żądanie w jednej z kolejek (aktywując sygnał -PIPĘ) lub
rozpocząć cykl PCI (korzystając z linii -FRAME).
Sygnały kluczujące
CLK Podstawowy sygnał kluczujący magistral AGP i PCI.
AD STBO (AD Bus Strobę 0) Sygnał kluczujący magistrali AGP pracującej w trybie
2x. Odnosi się do linii AD15...AD0.
-A D S T B 0 Stanowi odwrócenie sygnału AD_STB0. Para sygnałów -A D S T B O /
ADSTBO kluczuje transfer AGP w trybie 4x (w odniesieniu do linii
AD15-AD0).
AD_STB1 (AD Bus Strobę 1) Sygnał kluczujący magistrali AGP pracującej w trybie
2x dla linii AD31-AD16.
-ADSTBl Stanowi odwrócenie sygnału A D S T B l . Para sygnałów - A D S T B l /
AD_STB1 kluczuje transfer AGP w trybie 4x na liniach AD31-AD16.
SB STB (Side Band Strobę) Sygnał taktujący 8-bitowej magistrali pomocniczej
(SBA) pracującej w trybie 2x. Źródłem sygnału jest zawsze strona
Master. Transfer w trybie lx korzysta wyłącznie z zegara CLK.
SBSTB Stanowi odwrócenie przebiegu na linii SB STB. Para sygnałów
-S B STB/SB STB steruje magistralą SBA pracującą w trybie 4x.
Sygnały USB
U SB+/U SB- Para sygnałów tworząca magistralę USB (Universal Serial Bus).
Zagadnieniom związanym z USB poświęcony jest rozdział piętnasty.
-OVRCNT Wyprowadzenie czujnika prądowego (Overcurrent Indicator) źródła
napięcia +5V. W warunkach normalnych sygnał ten utrzymuje się na
wysokim poziomie.
Sygnały specjalne
-TYPEDET (Type Detect) Sygnalizuje wysokość poziomów napięć jakie
wykorzystuje dany typ interfejsu AGP (1,5 V lub 3,3 V).
I
Komunikacja procesora z innymi elementami architektury komputera 157
AGP w teorii
Wersja 1.0 specyfikacji AGP dopuszczała inicjowanie transferów w trybie 2x jedynie
przez inicjator AGP (określany też często mianem Master ), tj. sterownik karty graficz
nej. Szybkie kopiowanie danych z pamięci operacyjnej komputera do pamięci lokalnej
sterownika graficznego odbywało się dotychczas w dwóch etapach. W pierwszym z nich
procesor pisał dane do pamięci RAM i powiadamiał inicjator. Etap drugi obejmował po
branie danych przez sterownik karty, przy czym sama transmisja odbywała się pod dyk
tando inicjatora. Oczywiście nic nie stoi na przeszkodzie by transfery tego typu (RAM
->VGA) przebiegały w sposób klasyczny z wykorzystaniem magistrali i protokołu PCI
jako podzbiorów funkcji AGP.
Kolejkowanie
Magistrala AGP jest uniwersalnym środkiem transportu. Mogą nią być przesyłane nie
tylko strumieniowe przekazy AGP ale i klasyczne, znane z protokołu PCI, sekwencje
typu Adres-Przerw a~Dane. Transfer PCI obarczony jest z natury rzeczy cyklami oczeki
wania, choćby spowodowanymi czasem odpowiedzi pamięci. W przerwach tych szyna
PCI stoi niewykorzystana, co oczywiście zmniejsza jej wydajność.
Dzięki zespoleniu idei potoku z zasadą kolejkowania (AGP Queuing ) możliwe jest pra
wie stuprocentowe wykorzystanie teoretycznej przepustowości. Pojedyncza transakcja
AGP zawiera nadal fragment określający typ żądania i adres. Napływające w ślad za
tym żądaniem dane są jednak wyraźnie oddzielone od fazy „adresowo-rozkazowej”.
158 Anatomia PC
Stroną inicjującą transakcję (AGP Master) jest kontroler graficzny a układy sterujące
płyty głównej (Core Logic) pełnią funkcję podrzędną (AGP Target). Master wysyła
kolejne żądania (na przykład „prześlij dane znajdujące się pod adresem...”), które są
zbierane przez Target w kolejce rozkazowej (Request Queue). Kolejka ta rozróżnia dwa
typy zgłoszeń: o niskim i wysokim priorytecie (Low/High Priority) a ich obsługa odbywa
się z uwzględnieniem stopnia ważności. Układy sterujące płyty głównej sięgają do
określonych w żądaniach lokalizacji i sprowadzają potrzebne dane umieszczając je
w specjalnej kolejce zwrotnej (Read Data Return Queue). Stąd ekspediowane są one
w kierunku inicjatora. Zamawiane dane przejmuje specjalny bufor zlokalizowany w bloku
interfejsu AGP,
Możliwy jest również odwrotny kierunek transmisji, w którym Master wyraża żądanie
zapisu do pamięci. Dane takie przygotowywane są w kolejce zapisu (Write Data Queue)
i podawane na magistralę AGP w ślad za rozkazem „zapisz dane pod adres...”. Target
odbiera przesyłkę i umieszcza ją w swej kolejce zapisu. Układy sterujące płyty głównej
przejmują dalszy fragment transakcji umieszczając dane w wyznaczonym miejscu w pa
mięci.
Jakkolwiek cały system AGP jest dość złożony, ilość możliwych do przeprowadzenia
operacji zamyka się w kilku prostych poleceniach definiujących kierunek przesyłania
danych. Magistrala AGP w odróżnieniu od szyny PCI umożliwia dostęp wyłącznie do
pamięci operacyjnej (w przypadku PCI zakres dostępu obejmuje pamięć operacyjną,
przestrzeń wejścia/wyjścia oraz własną pamięć konfiguracyjną). Przekazywanie poleceń
może się odbywać za pośrednictwem magistrali pomocniczej SBA lub bez jej udziału,
tj. wprost poprzez szynę AGP. Jeśli nie wykorzystuje się SBA, 29 najstarszych bitów
magistrali AGP (AD31-AD3) niesie adres początkowy obszaru a linie ADO do AD3
jego wymiar (w jednostkach Q-Word). Maksymalna długość bloku wynosi więc 64
bajty. Kod operacji podawany jest w tym wypadku poprzez linie C/~BE3-C/~BE0.
Magistrala SBA
SBA {Sideband Addressing) jest 8-bitową magistralą pomocniczą służącą do przekazy
wania adresów i rozkazów (do płyty głównej). Jeśli kontroler graficzny korzysta z tej
możliwości, całe pasmo przenoszenia 32-bitowej magistrali AGP wykorzystywane jest
do transportu danych a ruch dodatkowy kierowany jest na szynę SBA. Posługiwanie się
SBA nie jest obowiązkowe i zarówno komendy jak i adresy mogą być przesyłane
magistralą główną. Koncepcja AGP jest bardzo elastyczna i dopuszcza nawet sytuacje,
w których kolejkowane sekwencje AGP mogą być przeplatane klasycznymi cyklami
160 Anatomia PC
PCI. Nie jest natomiast możliwe mieszanie stylu przesyłania komend: albo stosuje się
magistralę SBA albo AGP. Decyzja musi być podjęta w fazie inicjowania systemu
f F * *
Cykl PCI
R/A: Rozkaz / Adres (magistrala SBA)
Ad«, / Danero: Cykl PCI (magistrala AGP)
Rysunek 1.62. .C LK
Praca magistrali
(1X)
SBA w trybie l x
-A SBA
O*
Rysunek 1 M CLK
Praca magistrali
SBA w trybie 4 x
~s b STB i . . r u i n n i T T i r i i T A .
SB S T B îJ Ïl li U Ï lÍ
(4X)
SBA
GART
Pamięć AGP musi być dostępna zarówno dla procesora jak i akceleratora graficznego.
Jednolity tryb dostępu gwarantowany jest dzięki istnieniu tablicy GART {Graphics
Address Remapping Table), Tablica ta wkomponowana jest w układy scalone płyty
głównej (rozwiązanie sprzętowe) lub realizowana jako nakładka uzupełniająca system
przydziału pamięci (rozwiązanie programowe). Obecność GART powoduje przeadreso-
wanie pewnego wąskiego fragmentu przestrzeni adresowej. Jakiekolwiek odwołania do
tego zakresu kierowane są w inne miejsce. Obszar wejściowy GART lokalizowany jest
tuż obok pamięci lokalnej kontrolera graficznego oznaczonej na rysunku 1.65 jako LFB
{Local Frame Buffer). Przestrzeń adresowa kontrolera składa się z dwóch okien: przez
jedno widoczna jest własna pamięć lokalna a przez drugie tablica GART.
ffysunefr 1.65, \
L o k a li z a c ja
/ \ \
* 1
o b s z a r u .....t . _______
wejściowego GART
RAM •ii GART LFB ■mm BIOS
Fizyczna przestrzeń
r adresowa
0 Spójny obszar pamięci
widziany przez
akcelerator 3D
DIME
Każdy punkt składowy prezentowanego na ekranie obiektu 3D może podlegać cienio
waniu lub mapowaniu. Cieniowanie jest stosunkowo prostą operacją polegającą na
uśrednieniu parametrów barwnych danego punktu w oparciu o stan punktów z jego
otoczenia. W dużym przybliżeniu można nawet przyjąć, iż pewien rozległy obszar bryły
składa się z punktów o jednolitej barwie (na przykład cała ściana prostopadłościanu).
162 Anatomia PC
Taki prymitywny model nie uwzględnia nawet oświetlenia obiektów a już na pewno nie
bierze pod uwagę skomplikowanych niuansów typu odbicia, połysk, zamglenia itp., to
znaczy tego wszystkiego co decyduje o naturalnym wyglądzie.
Nadawanie obiektom bardziej naturalnego wyglądu możliwe jest dzięki technice mapo
wania, czyli nakładania na powierzchnię bryły pewnego płaskiego obrazu nazywanego
teksturą. Projekcja tekstury zmienia wartości początkowe punktów leżących „pod teks
turą”. W zależności od stopnia komplikacji i doskonałości modelu proces mapowania
stanowi szereg skomplikowanych obliczeń biorących za punkt wyjścia zarówno punkty
pokrywane jak i nakładane. Wspomniane obliczenia przeprowadzane są przez akcelera
tor graficzny 3D. Ponieważ mapy bitowe tekstur przechowywane są na dysku twardym,
konieczne jest ich sprowadzenie do pamięci lokalnej karty graficznej. Schemat przepły
wu tekstur w komputerze wyposażonym w magistralę PCI przedstawiony jest na rysun
ku 1.66. Model taki określany jest często mianem Local Texturing .
Rysunek 1.66.
Schemat przepływu
tekstur
w komputerze
wyposażonym
w magistralą PCI Pamięć
operacyjna
r . . i ^ . ........... i f i i— — ^
j j ___ : ^ __________ ______________
f. W
■ T e k s tu ra
Pamięć
lokalna
W powyższych operacjach CPU korzysta zwykle z kanału DMA lub posługuje się
wielokrotnie instrukcjami I/O. Niezależnie jednak od tego, system dysponuje dwoma
kopiami tej samej tekstury: jedną w pamięci głównej i drugą w lokalnej. Proszę też
zwrócić uwagę na stosunkowo duże obciążenie magistrali PCI.
Architektura AGP oferuje technikę określaną mianem DIME {Direct Memory Execute).
Dzięki niej, akcelerator graficzny może operować na teksturach bez potrzeby sprowa
dzania ich do swej pamięci lokalnej {AGP Texturing).
Rysunek 1.67.
Schemat przepływu CPU
tekstur Monitor
w komputerze
wyposażonym
w magistralę AGP . .w
i
,
Pamięć
operacyjna
4X O)
'
o> Core Logic
Akcelerator L
■o P M
V
graficzny •W
CD
3D 1 Ol
O
<
PCI Bridge
.v .r. v .v T r / s f ö ' t , w , : / , - ,
.V. . .1% W
• V i" i" iV r V r V iV r*
• • '.'V > S '.V 'V ,. , .
, ‘.Vwv.-. :• . v.«; ,s V ,S', V , Y.' ,
Komputer dysponujący szyną AGP nie zawsze musi robić użytek z funkcji DIME. Już
sam transport tekstur szybką magistralą AGP przynosi pewne korzyści. Transakcje mają
jednak charakter długich sekwencyjnych przekazów w odróżnieniu od krótkich spora
dycznych cykli dostępu do tekstury przetwarzanej zdalnie w pamięci operacyjnej.
Mimo niewątpliwych zalet oferowanych przez mechanizm DIME szybkość z jaką osią
gane są tekstury zlokalizowane w pamięci lokalnej kontrolera jest większa niż poprzez
AGP. Akcelerator graficzny może uzyskać lepszą wydajność przechowując „pod ręką”
często używane mapy bitowe. Produkty przeznaczone dla użytkownika o najwyższych
wymaganiach {High-End) konstruowane są więc często z wykorzystaniem obu technik:
164 Anatomia PC
lokalnej ł AGP. System taki nosi nazwę DIMEL (Direct Memory Execute and Local).
Pamięć lokalna sięga w tym przypadku rozmiarów nawet 32 MB.
AGP w praktyce
AGP stanowi rozwinięcie specyfikacji PCI w wersji 2.1 co oznacza pełną zgodność
„w dół”. Protokół AGP zawiera w sobie wszystkie funkcje PCI a urządzenie tkwiące
w gnieździe AGP można zawsze uznać za odpowiadające standardowi PCI. Pełna zgod
ność od strony sprzętowej nie oznacza bynajmniej tego samego na polu oprogramowa
nia. W pracach nad pierwotnymi wersjami Windows 95 i NT nie uwzględniano bowiem
obecności żadnych tworów typu AGP. Podobny los spotkał uzgodniony zbyt późno
standard USB. Uznanie przez system operacyjny urządzeń tego typu możliwe jest dzięki
wprowadzeniu różnych nakładek programowych i uzupełnień. Pełna integracja AGP
przewidziana jest dopiero w funkcjach DirectDraw systemów operacyjnych Windows
98 i Windows NT w wersji 5,
Póki co AGP wzbogaca system o jedno dodatkowe złącze. Klasyczne płyty główne wy
posażane są zwykle w trzy (rzadziej w cztery) gniazda PCI a karta graficzna nie musi
już blokować jednego z nich przez co wszystkie pozostają wolne dla innych kart. To
samo odnosi się do samej magistrali PCI. Do dyspozycji systemu stoi jej pełna przepus
towość, nie ograniczana przez przepływ sekwencji wideo i strumienia danych towarzy
szących grafice 3D.
Karta graficzna AGP funkcjonować będzie poprawnie w każdej płycie głównej wyposa
żonej w to złącze i to bez konieczności instalowania jakichkolwiek sterowników
(poprawnie, czyli tak jak zwykłe urządzenie PCI). Aby wykorzystać możliwości ofero
wane przez AGP potrzeba znacznie więcej:
• Windows 95 we właściwej wersji. Pełne wykorzystanie funkcji oferowanych
przez AGP możliwe jest pod kontrolą systemu operacyjnego Windows 95 OSR
2.1 lub nowszej. W celu sprawdzenia numeru wersji Windows 95 należy wy
wołać panel sterujący, uruchomić program System i wybrać opcję głównych
parametrów. Poniżej nagłówka System można odczytać numer wersji:
Dla AGP decydująca jest obecność pakietu USB Supplement to OSR2 , który
występuje począwszy od wersji SR-2.1. Jeśli był pierwotnie zainstalowany wi
doczny jest na liście programów w panelu sterującym. Usunięcie z wersji OSR
2.5 pakietu USB powoduje iż system zgłasza się jako 4.00.950B
Omawiane uzupełnienie wzbogaca Windows 95 o sterownik VGARTD.VXD,
który programuje tablicę GART. W ten sposób system operacyjny ma możliwość
jednolitych odwołać do pamięci graficznej, niezależnie od tego czy jest ona lo
kalna czy udostępniana przez AGP. Na potrzeby akceleratora graficznego symu
luje się ponadto ciągłość pamięci lokalnej i AGP.
Windows NT w wersji 4.0 nie jest szczególnie dogodną platformą do gier kom
puterowych i animacji 3D. Decyduje o tym generalny brak wsparcia dla funkcji
Direct3D. Wraz z pakietem Service Pack 3 (SR-3) instalowane są jedynie imple
mentacje typu DirectDraw.
Kontrola działania
Obecność magistrali AGP w komputerze przeznaczonym głównie do celów biurowych
jest trudna do zauważenia. Na pewno nie można stwierdzić żadnego wzrostu szybkości
działania standardowych aplikacji. Pierwsza generacja kart graficznych ze złączem
AGP nie różniła się wcale od modeli PCI. Scalone układy akceleratorów graficznych
3D wzbogacone zostały jedynie o tzw. combo-interface , pasujący zarówno do PCI jak
i AGP. Karty tego typu pracują w podstawowym trybie lx. Firma ATI rozpoczęła jako
pierwsza produkcję układów pracujących w trybie 2x (Rage-II-Pro).
Aby wydobyć na światło dzienne zalety magistrali AGP komputer trzeba poddać testom
bazującym w głównej mierze na operacjach graficznych w przestrzeni 3D. Najlepsze do
tego celu są gry komputerowe korzystające ze scenerii złożonych z dużej liczby tekstu-
rowych obiektów. Im większe są rozmiary tekstur, tym wyniki pomiarów porównaw
czych AGP/PCI przechylają się na korzyść AGP. Zauważalne różnice można stwierdzić
dopiero wówczas, gdy sceneria operuje tak dużymi teksturami (lub tak dużą ich liczbą)
iż nie mieszczą się one w pamięci lokalnej kontrolera graficznego.
Warto zdawać sobie sprawę, iż dana karta graficzna (bez względu na to jaki ma typ
interfejsu) dysponuje tym samym akceleratorem 3D, który dokonuje obliczeń paramet
rów punktów w przestrzeni (rendering). Nie ma i nie może być różnicy w samej szyb
kości przetwarzania (budowania obrazu) a co najwyżej w szybkości przesyłania danych
1 rozkazów do samej karty. Prawdziwą eksplozję wydajności wiąże się więc dopiero
z jednoczesnym zastosowaniem magistrali AGP i akceleratorów graficznych dysponują
cych własnym koprocesorem geometrycznym (Geometry Engine) całkowicie odciążają
cym CPU. Obecna generacja układów scalonych przekazuje nadal znaczną część
obliczeń do procesora wykonując jedynie operacje wstępne {Setup Engine).
Koncepcja AGP ma bardzo istotną cechę: aplikacje nie muszą wiedzieć o istnieniu tego
mechanizmu. Pamięć wideo akceleratora 3D jest większa od rzeczywiście zainstalowa
nej na karcie. Jeżeli w trakcie budowy scenerii lokalna pamięć tekstur ulega wyczer
paniu, sterownik graficzny czerpie z dodatkowych zasobów emulowanych przez AGP.
Systemy multiprocesorowe
W pogoni za coraz to większą mocą obliczeniową komputerów poszukuje się stale
nowych rozwiązań. Jednym z nich jest rozdział ogólnych zadań całego systemu pomię
dzy pewną liczbę współpracujących ze sobą procesorów.
17 Jako standard w tej dziedzinie przyjęły się dwa protokoły: MPI (Message Passing Interface)
i PVM (Paket Parallel Virtual Machine).
168 Anatomia PC
Architektura MPP
Model z pamięcią rozproszoną ma wiele zalet. Pozwala między innymi na łączenie ze
sobą dowolnie wielu bloków procesorowych18 (rysunek 1.68). Stąd też wywodzi się
określenie dobrze charakteryzujące ten styl podejścia do systemów multiprocesoro-
wych: Massive Parallel Processing (MPP). Poszczególne moduły połączone są ze sobą
przez specjalne magistrale (np. GTL+) lub adaptowane do tego celu rozwiązania
sieciowe.
-.I?.* T r T f- T ,
Rysunek 1.68.
Architektura MPP
systemu
multiprocesorowego
Magistrala połączeniowa
I/O
Cały proces obliczeniowy musi więc być rozpisany na wątki operujące na niezależnych
danych. Nie każda aplikacja poddaje się takim zabiegom. Już sama specyfika danego
zagadnienia może wykluczyć taką możliwość. Pierwsza z brzegu duża baza danych jest
tego najlepszym przykładem. Decyduje tu czas dostępu do ogromnych plików dysko
wych, którego nie zmniejszy wzbogacenie systemu o kolejnych 100 procesorów. Samo
przetwarzanie rekordu jest zwykle ułamkiem tego czasu. Dobrym materiałem do prze
twarzania równoległego są natomiast numeryczne obliczenia inżynierskie i naukowe,
gdzie występuje zwykle bardzo intensywne przetwarzanie małej liczby danych.
Architektura UMA
U podstaw architektury UMA ( Uniform Memory Access) leży idea wspólnej pamięci
globalnej, którą może adresować w całym zakresie każdy z procesorów.
f .*5-. w ^ » m » m
Rysunek 1.69, iI
\ .........
* w
Architektura UMA CPU 4 CPU m*
*
i : mt
systemu I Bi i
i m *
*
4
CACHE w*
CACHE
-
multiprocesorowego t:4;i
4-
m.i
m
m$$i
i
«
Komunikacja z pamięcią
Systemy oparte na architekturze UMA bardzo szybko osiągają nasycenie mocy obli
czeniowej mimo dodawania kolejnych procesorów19. Wspólna magistrala pamięciowa
staje się wąskim gardłem skutecznie tamującym wymianę danych. Jak zawsze w takim
przypadku, pewne rozładowanie przynosi zastosowanie pamięci podręcznej ( Cache). W
małą pamięć podręczną tzw. poziomu pierwszego (Ll-Cache) wyposażone są wszystkie
współczesne procesory. Istotną rolę odgrywa jednak w tym przypadku pamięć cache
wyższego poziomu.
Rysunek 1,70,
Pentium Pentium Pentium
System
multiprocesorowy L1-CACHE L1-CACHE L1-CACHE
korzystający
ze wspólnej pamięci
podręcznej drugiego
poziomu Magistrala wewnętrzna
L2-Cache
l/O
Magistrala zewnętrzna
Wspólny bufor L2, który muszą dzielić między sobą poszczególne jednostki stawia pod
poważnym znakiem zapytania możliwość profesjonalnego zastosowania tego typu CPU
w systemach multiprocesorowych. Maksymalna częstotliwość taktowania pamięci bufo
rowej L2 sięga (w zależności od typu CPU) 66 MHz.
Następna generacja procesorów (Pentium Pro oraz Pentium II) jest już pozbawiona tej
wady (rysunek 1.71). Każdy z nich ma do swojej dyspozycji własny bufor L2 co
zdecydowanie przemawia za ich stosowaniem w omawianych systemach.
.
Ł -r >>^
Magistrala zewnętrzna
20 Pod szeroko rozumianym pojęciem dane rozumie się tutaj zarówno dane używane przez
program jak i sam kod programu. Te dwie grupy informacji zwykło się separować jedynie
w oddzielnych obszarach pamięci Cache poziomu LI (zintegrowanej we wnętrzu CPU).
Pamięci buforowe poziomów wyższych nie rozróżniająjuż danych od kodu.
172 Anatomia PC
21 Pod pojęciem buforowania rozumie się począwszy od tego miejsca zagadnienia odnoszące
się do Cache poziomu drugiego (L2) jako że zjawiska zachodzące w LI mają zupełnie inny
charakter. Bufor LI jest w pełni niewidzialny dla oprogramowania a jego obecność jest
znaczenie bardziej istotna dla wnętrza CPU niż dla spełniania funkcji multiprocesorowych.
22 W literaturze angielskojęzycznej używa się tu pojęcia Page (strona), czego nie należy jednak
mylić ze stronami pamięci w systemach adresowania lub też dostępu do pamięci w trybie
nakładania się stron.
Komunikacja procesora z innymi elementami architektury komputera 173
Podział dostępnych zasobów L-2 na mniejsze jednostki ( Ways) pozwala już na pewną
dozę elastyczności. Strony stają się mniejsze a bufor może operować na rozłącznych
obszarach pamięci. Maksymalny stopień swobody zapewnia naturalnie całkowita rezy
gnacja ze stron i przejście na organizację w formie linijek (Fully Associative Cache).
Każda z nich może wtedy pokrywać dowolny adres. W miarę wzrostu swobody w ope
rowaniu buforami rośnie niezbędny nakład na administrowanie tak skomplikowaną
strukturą. W praktyce spotyka się różne kompromisowe rozwiązania mieszane.
Żądania dostępu do pamięci filtrowane są przez układ kontrolera Cache. Jeżeli potrzeb
na informacja znajduje się w buforze przekazuje się ją procesorowi. Brak informacji lub
jej nieaktualność powoduje uruchomienie magistrali pamięciowej w celu sięgnięcia do
odpowiedniego adresu. W pierwszym przypadku mowa jest o tzw. trafieniu ( Cache-
Hit). Stan przeciwny stanowi Cache-Miss.
Sytuacja komplikuje się znacznie, jeżeli w systemie operuje kilka procesorów (lub
innych układów mających prawo zapisu do pamięci). Aktualność przechowywanej
w buforze informacji zależy już nie tylko od gospodarza danego L-2 . Dla zachowania
zbieżności ze stanem pamięci należy przedsięwziąć pewne działania dodatkowe. W tym
celu wszystkie zainteresowane strony stale podsłuchują (Snooping) co dzieje się na
magistrali pamięciowej. Analizie podlegają adresy odwołań do pamięci, które porów
nuje się ze stanem posiadania w buforze L-2. Każda z linijek otrzymuje dodatkową
etykietę zgodnie z tzw. protokołem MESI.
Protokół MESI jest zbiorem reguł odnoszących się do statusu poszczególnych linijek
pamięci cache. Opracowany został pod względem optymalizacji dostępu do pamięci,
tzn. bezpośredni i czasochłonny zapis lub odczyt z/do pamięci opóźnia się tak długo jak
tylko jest to jeszcze możliwe bez utraty koherencji (zbieżności). Protokół bierze swoją
nazwę od pierwszych liter możliwych stanów: Modified , Exclusive , Shared , Invalid.
• Exclusive . Linijka o tym statusie obecna jest tylko w tym jednym buforze cache
i nie powtarza się w żadnym innym. Jej zawartość jest w pełni zgodna z buforo
wanymi komórkami pamięci. Jeżeli procesor żąda danych z zakresu pokrywa
nego przez linijkę opatrzoną statusem E nie wyzwala to cyklu odczytu z pamięci
- dane pobierane są z bufora cache. Zapis danych do obszaru objętego tą linijką
również nie powoduje aktywowania magistrali ale zmienia się status linijki z E
na M (Modified).
• Modified. Statusem tym oznaczana jest linijka, która podobnie jak w przypadku
E nie wystęuje w żadnym innym buforze. Jej zawartość jednak została zmo
dyfikowana i nie jest już zgodna ze stanem pamięci. Ponieważ jednak ostatnia
modyfikacja tego adresu odbyła się w buforze cache, on to właśnie (a nie pamięć)
zawiera bardziej aktualną informację. Tak więc zapis jak i odczyt z tego obszaru
stanowi trafienie (Hit) i nie wywołuje pobudzenia magistrali pamięciowej.
• Shared. Stan ten odzwierciedla sytuację dublowania się danych w różnych bufo
rach cache. Dochodzi do niej w przypadku sięgania przez różne procesory do tego
OA
samego obszaru pamięci. Odczyt z dowolnej z linijek opatrzonej statusem S
stanowi naturalnie trafienie i nie uruchamia magistrali. Sytuacja komplikuje się
w momencie zapisu pod jeden z buforowanych przez nią adresów. Jest to nadal
trafienie ale powstaje niebezpieczny stan rozbieżności. Eliminuje się go poprzez
natychmiastowy zapis aktualnej wartości linijki do pamięci (pracuje magistrala)
a status wszystkich innych z nią związanych zostaje przestawiony na I (Invalid).
Odczyt Zapis
Invalid O Read Miss O Write Miss
© Line Fili (pobudzenie © Write-Through (pobudzenie magistrali
magistrali pamięciowej, cykl pamięciowej, cykl zapisu do pamięci)
odczytu z pamięci) ©I-» I
© I^ E
Shared O Read Hit, brak aktywności O Write Hit
magistrali pamięciowej © Write-Through (wywołanie cyklu
©S-»S zapisu do pamięci)
© S E
O . - ^ I w linijkach innych pamięci cache
(Invalidation)
Exclusive O Read Hit, brak aktywności O Write Hit, brak aktywności magistrali
magistrali pamięciowej pamięciowej
© E E ©E-»M
M odified O Read Hit, brak aktywności O Write Hit, brak aktywności magistrali
magistrali pamięciowej pamięciowej
© M M ©M M
24 Zawartość wszystkich linijek o statusie S (odnoszących się do tego samego adresu) jest
naturalnie ta sama.
Komunikacja procesora z innymi elementami architektury komputera 175
Rysunek 1.73,,
CPU i - CPU CPU CPU
Architektura
■■■
komputera CACHE CACHE CACHE CACHE
zgodnego ze
specyfikacją MP
Magistrala wewnętrzna
\
-
l
<0
Magistrala zewnętrzna Magistrala zewnętrzna
Droga rozwoju procesorów Intela dość długo przebiegała w kierunku systemów jedno
procesorowych. Stała konieczność zachowania zgodności w dół zmuszała projektantów
do dublowania pewnych anachronizmów, nawet w rodzinach procesorów najnowszej
generacji. Zintegrowanie takich wybitnie jednoprocesorowych struktur w ramach
nowoczesnej architektury multiprocesorowej nie jest łatwe. Szczególnie mało podatny
na przeróbki okazał się panujący w niezmiennej formie od czasu pierwszego komputera
AT system obsługi przerwań sprzętowych.
Rozruch systemu
Przyjęte wcześniej założenie o pełnej symetrii nie obowiązuje w momencie rozruchu
całego układu. Na ten krótki czas jeden z procesorów wyróżniony zostaje mianem BSP
(Bootstrap Processor). W tym kontekście pozostałe CPU nazywane są jednostkami AP
(Application Processor).
26 Specjalna rodzina procesorów Pentium wyposażona jest w APIC lokalny. Należą do niej
modele oznaczane symbolami: 735/90, 815/100, 1000/120 i 1110/133. Zintegrowany APIC
ma również cała obecna seria CPU z rozszerzeniem MMX.
27 Jest to trój przewodowa magistrala (linie PICD0, PICD1, PICCLK) taktowana zegarem
16.67 MHz
28 Zgodnie z omawianą tu specyfikacją MP, kompatybilność z architekturą AT może być
zachowana na drodze przejścia do trybu PIC Mode lub Virtual Wire Mode. W książce tej
omówiony zostaje jedynie pierwszy z tych trybów.
Komunikacja procesora z innymi elementami architektury komputera_________ 177
^1*gb.'^»;^*' : ł"L 3 5 - T ^ l i ^ KK*
■ i •x^:
WM- xX r^xx.v.;:;:;^:;:*
•xXxx x ; / 'X \ W * X
i-::-. :'
**
“* •
¡;^;:|v-;!'X’ .•.v.v
^ f ......./
•;y ^/CyySt\,\:ix-
..................•
........%v.
...
||1 D v jL i
r
•1».•^.
IMCR CPU 1
i j v . v . v ’v
i
.x--x i v K # :* :
rozruchu systemu s x x x v
i*
H:J;:
.
,: v ,j
■i...XV X . £ s ix ?
.•Xvl-I-X-Ii1
S&fS*:
••X<s
ł* kv -4* •
NMJ mm
T
t l b VM 4
f H 1
:■•/•
ir tv iw iV i^ :••/ j,yw y ,y _ v
;:<:
x*
i ,<•
•r
<
. «. -T'
LOCAL APiC
t r
■►
!f.;
T.
ł!
* !* ■
*.*.*.* . . / . T
X :-:
.•.“«• ' '
.*:
I i-:
• «- w w
\ \
/>,•*, aK4bl i*j%a<bifa'A Jb
«X
’*•!■!
UNTIN 1
s 4 ś « 4 a « b t4 e a r H a e ia 4 4 f i m 44
a a a +*44 n a■ '44 ■ 4444*44* r4r44frr4fr#P+4B##444* 4 4 14 I ł b »4 ■
UNTINO sa
FtEśef ’• + -
b
<
ICC BUS
NM! ... ,1
PIC
■4 4 b4-b 14 1 4 4 4 4 4 4 4 4 4 4 4 * 4
8259A
(Master
&
Slave) *? . v
Sygnały przerwań
•.•. '...y .!
Wymuszenie tego trybu odbywa się za pośrednictwem bitu bO rejestru IMCR. Dostęp
do niego możliwy jest poprzez dwa porty I/O: 0x22 (adres) i 0x23 (sterowanie):
mov al , 0x70 ;
out 0x22 , al ;selekcja IMCR
mov al , 0x00
out 0x23 , al ;wymuszenie trybu PIC
Tym razem dezaktywowany zostaje kontroler 8259A Jego linie wejściowe zostają .
albo zamaskowane albo zmuszone do pracy równoległej z układem I/O APIC. Skiero
wanie źródeł przerwań do układów I/O APIC oraz odblokowanie procesorów AP uzys
kuje się poprzez ustawienie bO w rejestrze sterującym IMCR:
mov al 0x70 ,
29 PC/AT posiada właściwie dwa takie kontrolery połączone w kaskadę. Szczegóły na ten temat
znajdzie Czytelnik w rozdziale o przerwaniach sprzętowych.
178 Anatomia PC
NZ .1 /^ . . .
1 1 A A i:
V3£**
,Zł
-I. •i - -
UNiTlNI
LlfJTlW - i •- 4--> -
RESET \
•—
ICC BUS
NMI
PIC
i
Sygnały przerwań -• y«
I/O
APIC
Żaden z procesorów nie jest w jakikolwiek sposób wyróżniony. Obydwa muszą być
jednakowego typu (albo z serii ze scalonym Local-APIC albo MMX) i dostosowane do
taktowania tym samym zegarem. Jedyny stan asymetrii pojawia się w momencie
aktywowania linii INIT (reset systemu). Wtedy to procesor AP przechodzi w stan
zawieszenia HALT i pozostaje w tym trybie aż do otrzymania od systemu operacyjnego
polecenia STARTUP IPI30.
k
I
IMTH / LINTO
NM
I NMI / L1NT1
INfT (Reset) IN !T ( R e s e t)
S M I SM
!
ICC BUS
IRQ10- J M a a r d b u fto r fu l
IR02O Tm * (8254) 3
/<
A
í/'e
fleelCbs*
A i/O
IR06O . J
" t
/ ..
APIC
/10
/«
IRQ130 F P E u a p tfo n
u M
Aï
0
1
t 2 PIC
A 3 8259A
A 4
5 (Master)
/
Ś/i
i
6
7
0
1
PIC
8259A
(Slave)
12
ENTAO IRQ-Router
INTBa
I N T C O 3-7,9-11,14.15
fNTDO
IMCR
E0
INTIN3 IRQ3
INTIN4 IRQ4
INTIN5 IRQ5
INTIN6 IRQ6
180 Anatomia PC
INTIN9 IRQ9
INTIN10 IRQ 10
INTIN11 IRQ 11
INTIN 12 IRQ 12
INTIN 14 IRQ 14
INTIN 15 IRQ 15
Tabela konfiguracji MP
System operacyjny musi mieć dostęp do informacji określających konfigurację układu
multiprocesorowego. Zgodnie ze specyfikacją MP niezbędne dane zebrane są w tabeli
31
zwanej tablicą konfiguracji {MP Configuration Table) .
31 Specyfikacja MP przewiduje uproszczoną formę przekazu jeśli konfiguracja systemu daje się
sprowadzić do jednego z predefiniowanych uproszczonych modeli. Aktualna wersja
specyfikacji określa do 255 takich typów przy czym definiuje tylko 8 (pozostałe
zarezerwowane do późniejszego wykorzystania). Zgodnie z tym opisem układ Dual-Pentium /
ISA / PCI stanowi typ nr. 5. Praktyczne wykorzystanie tej możliwości jest znikome, bowiem
zdefiniowane typy standardowe są bardzo nieelastyczne. Wspomniany model numer 5 wymaga
Komunikacja procesora z innymi elementami architektury komputera 181
31 24 23 16 15 8 7
Ryaunek 1.77. *
Struktura tabeli
konfiguracji ■1
i
^ ŁU
cg
u*
z
o
o 0x2 c
CL
NAGŁÓWEK 0 STAŁEJ DŁUGOŚCI
(12słów4-bajtowych)
0x00 v
31 24 23 16 15 8 7
CC BAJT ROZSZERZENIA BAJT ROZSZERZENIA BAJT ROZSZERZENIA ra. ! CC BAJT ROZSZERZENIA
Qx0c
LU (MP Feature Byle 5)0x00 (MP Feature Byte 4)=0x00 (MP Featue Byte 3}«OxOO (MP Feature Byte 2)
UJ
cc BAJT ROZSZERZENIA WERSJA SPECYFIKACJI DŁUGOŚĆ w paragrafach
SUMA KONTRaNA 0x08
(MP Feature Byle 1) (SPEC_REV, 0x04- Ver.1.4) «0x01 (16 bajtów)
Sama obecność znacznika jest sygnałem, że dany system spełnia wymogi określane
przez specyfikację MP. Dwunasty bajt {MP Feature Byte 1) daje odpowiedź na pytanie,
czy dany system daje się sprowadzić do jednej z konfiguracji standardowych, a jeśli tak,
zawiera jej numer. Wyzerowanie wszystkich bitów tego baj tu wskazuje na obecność
tablicy konfiguracji. Sama tablica lokowana jest w jednym z wymienionych powyżej
32
obszarów, a jej dokładny adres odłożony jest w bajtach 0x04“ 0x07 znacznika . Suma
kontrolna w bajcie 0x0a musi być tak dobrana, by po zsumowaniu wszystkich 16
bajtów znacznika (wraz z bajtem 0x0a) otrzymać wartość zero. Bit 7 w bajcie 0x0c {MP
Feature Byte 2) odnosi się do konfiguracji APIC w momencie rozruchu systemu:
1 oznacza implementację formy PIC-Mode, 0 wskazuje na tryb Virtual Wire.
v ' •
•f ‘
i
• •
*t •
’
*i
stałej obecności dwóch procesorów i nie nadaje się do opisu konfiguracji dla płyty z dwoma
podstawkami i zmienną liczbą CPU: jeden lub dwa.
PC. •
i pobór mocy) było sprawą problematyczną. Rozwiązaniem tego problemu okazało się
złącze, opracowane w 1989 roku, przez Personal Computer Memory Card International
Association (PCMCIA), określane jako złącze PCMCIA,
Złącze PCMCIA
Idea złącza jest prosta: sterownik złącza PCMCIA, karta rozszerzająca (wielkości karty
kredytowej) i oprogramowanie tworząjedno urządzenie podłączone do magistrali syste
mowej. Urządzenie takie może pełnić różne funkcje, zależne od włożonej karty roz
szerzającej. Oprogramowanie systemowe musi śledzić funkcje takiego urządzenia, gdyż
konstrukcja złącza umożliwia wymianę kart rozszerzających podczas pracy komputera
(jako ostatnie rozłączane są styki masy).
W chwili obecnej można spotkać się z 16- i 32-bitowymi kartami PCMCIA typu I, II
i III (typ karty określa grubość karty - odpowiednio: 3,3, 5,0 i 10,5 mm - nie ma wpły
wu na złącze jako takie). Warunki kompatybilności zapewniają, że nowszy sterownik
powinien współpracować ze starszymi typami kart, natomiast nowsze typy kart nie
muszą współpracować ze starszymi typami sterowników.
Anatomía PC
Procesor z rozszerzeniem MMX 185
Idea leżąca u podstaw MMX nie jest nowa i stanowi krok w kierunku przetwarzania
równoległego. W tym wypadku nie chodzi jednak o równoległe wykonywanie dowol
nych rozkazów ale o grupowanie danych w większe grupy. Zamiast kolejnego przetwa
rzania pojedynczych jednostek informacji (bajtów, słów itd) szybciej jest brać po kilka
porcji na raz i załatwiać sprawę jednym rozkazem maszynowym takim jak a d d , SUB,
OR, AND itd. Technika taka nosi miano SIMD {Single Instruction Multiple Data).
186 Anatomia PC
Intel jako pierwszy upowszechnia SIMD dla potrzeb zwykłego użytkownika. Inne firmy
też stosują ten sposób przetwarzania danych ale w dużych komputerach. W oparciu
o instrukcje tego typu pracują procesory RISC używane w systemie PA-8000 firmy HP
a specjalnie dobrany do potrzeb grafiki wektorowej zestaw instrukcji VIS (Visual
Instruction Set) przetwarzają procesory firmy Sun.
Warto wspomnieć, iż rozkazy tego typu można zrealizować również bez gruntownych
zmian w architekturze CPU. Nic nie stoi na przeszkodzie by jeden z 32-bitowych
rejestrów potraktować jako złożenie czterech bajtów i wykonać operację jednoczesnej
inkrementacji:
ADD OlOlOlOlh
Problem pojawi się w momencie gdy jeden z bajtów miał przed operacją wartość Oxff,
bowiem bit przepełnienia przeleje się na sąsiadujący wyższy bajt. Najistotniejszą
modyfikacją architektury nowych procesorów stanowi właśnie odmienne niż dotychczas
traktowanie stanu przepełnienia podczas operacji SIMD.
Przy okazji kuracji odmładzającej nowy procesor (oficjalna nazwa P55C w odróżnieniu
do klasycznego Pentium P54C) wyposażony został w dodatkowe układy sprzętowe nie
mające bezpośredniego związku z technologią MMX:
• Pamięć podręczną (first level cache). W procesorach MMX pamięć podręczna
zarówno dla danych jak i rozkazów została zwiększona do 16 kB i pracuje
z poczwórną asocjacją (P54C 8/8 kB i podwójna asocjacja). Każdy z dwóch
potoków przetwarzających rozkazy może więc wystąpić jednocześnie z dwoma
żądaniami dostępu do pamięci i obydwa będą buforowane.
• Bufor zapisu. P55C wyposażony zostaje w dwukrotnie większy w porównaniu
z P54C bufor zapisu: 4 zamiast 2 słów.
• Nową jednostkę BPU (Branche Prediction Unit). Nowy układ przewidywania
dla instrukcji rozgałęzień zapożyczony został w dużej części od starszego brata,
Pentium-Pro. Jego zastosowanie zwiększa prawdopodobieństwo zapełniania
potoków tymi instrukcjami, które będą faktycznie wykonywane. Błędne
przewidywanie skutków rozgałęzienia powoduje, że jeden z potoków musi (po
dojściu do newralgicznego punktu) wstrzymać przetwarzanie. W okresie
niezbędnym do ponownego załadowania, drugi z potoków znajduje się w stanie
oczekiwania i traci czas.
• Dłuższe potoki przetwarzania instrukcji (Pipe Lines). Długość rozkazów maszy
nowych jest zmienna i waha się w przedziale od 1 do 15 bajtów. Fakt ten stanowi
jedną z bolączek procesorów P54C, bowiem żmudne określanie adresu następ
nego rozkazu (w celu przekazania go dekoderowi instrukcji) zajmuje stosunkowo
Procesor z rozszerzeniem MMX 187 i
>
dużo czasu. Sam dekoder byłby w stanie przyjmować do dwóch instrukcji w jed- ;
nym cyklu zegarowym. Dla pokonania tego wąskiego gardła obie linie przetwa
rzania zostały wydłużone o brakujący stopień zlokalizowany pomiędzy punktem
pobierania {Prefetch) a dekoderem.
Trzeba dodać, że obydwa potoki pracują nadal synchronicznie. Wypełnione roz
kazami o różnym czasie trwania blokują się wzajemnie. Odnoga, która szybciej
zostanie opróżniona musi czekać na zakończenie przetwarzania w drugiej.
• Możliwość równoległego wykonywania rozkazów. Pentium MMX może w sprzy
jających warunkach wykonywać równolegle 2 polecenia. W szczególności paro
wane mogą być nowe rozkazy z grupy MMX, jeżeli odnoszą się do różnych
rejestrów MM.
• Stos powrotu {Return Stack). Dla procesorów Cyrix nic nowego, dla Intela istot
na zmiana. Procesory MMX wyposażone zostały w wewnętrzny stos powrotów.
Przy przejściu do wykonywania podprogramu zapamiętywany jest adres powrotu j
- adres rozkazu następnego po c a l l . Przyspieszane jest wykonywanie kodu
bogatego w krótkie procedury, dla których odległość między instrukcjami c a l l
i RET jest stosunkowo niewielka. Cały mechanizm działa do czterech poziomów
w głąb (procedura może bowiem wywoływać procedurę a ta następną itd...).
Zysk czasu szacowany jest na 20%.
/
logii 0,28 pm (dla porównania 0,35 jum dla P54C) zawierają jednak blisko 40%
więcej tranzystorów (P54C: 3.3 miliona, P55C: 4,5 miliona). Dla ograniczenia
wydzielania ciepła obniżono napięcie zasilające samą jednostkę centralną {Core)
do 2,8 V. Układy wejścia/wyjścia zasilane są nadal standardowym napięciem;
w zależności od grupy selekcyjnej 3.3 V - 3,5 V. Nie obeszło się więc bez
zmiany kolejnego numeru wersji u producentów płyt głównych. Dla tych, którzy
ze swoją płytą rozstać się nie chcą przewidziano moduł typu overdrive z proce
sorem MMX i regulatorem napięcia zadowalający się standardową podstawką
typu 5 lub 7.
Te energooszczędne zabiegi prowadzą do pozytywnego bilansu: model MMX
200MHz rozprasza na ciepło jedynie 0,2 W więcej od taktowanego takim samym
zegarem normalnego P54C.
t
l s
1 Nie każdy procesor zna rozkaz CPUID (386, wczesne 486), trzeba najpierw sprawdzić, czy
należy on do zestawu instrukcji.
188 Anatomia PC
Potrzebna informacja zawarta jest w bicie 23. Jeżeli jest on ustawiony, w systemie
mamy procesor P55C:
mov EAX, 1
CPUID
test EDX, OG80QOOOh ; gdy (bit 23=1) jest MMX
jnz Kod_MMX
Kod_Standard:
Przy okazji, nieco na uboczu, pojawia się probierń zgodności z nowym kodem. W uży
ciu są bowiem jednocześnie dwa rodzaje programów i dwa rodzaje procesorów. Stare
programy szyte na miarę P54C nic nie wiedzą o MMX i nie są w stanie wykorzystać
jego zalet. Problem załatwia wypuszczenie nowej wersji aplikacji. Z drugiej jednak
strony, aplikacje pod P55C mogą napotkać na swej drodze procesory bez rozszerzenia.
O ile zagadnienie poprawnej identyfikacji Intela MMX jest jednoznacznie zdefiniowa
ne, to sedno sprawy stanowi konieczność dublowania procedur wywołujących rozkazy
MMX. Każda z nich musi mieć w rezerwie swój odpowiednik dostosowany do klasycz
nego procesora bez rozszerzeń. Zależnie od wyników testu typu zainstalowanego
w systemie CPU, sterowanie przekazywane jest do właściwej gałęzi. Programowanie
ułatwia posługiwanie się jedną z gotowych bibliotek dostarczanych przez Intel.
Newralgiczne partie kodu są tu automatycznie dublowane przez emulator MMX.
Nowe rejestry
Wydajne przetwarzanie danych w myśl założeń SIMD wymaga pogrupowania ich
w porcje o możliwie dużej długości. Procesory Intel-MMX mogą pracować na blokach
64-bitowych. Do dyspozycji nowych rozkazów stoi osiem nowych rejestrów wewnętrz
nych oznaczanych symbolami mmO - mm7, każdy o szerokości 64 bitów.
63 0
Rysunek 2.1.
MM7
Nowe rejejestry
procesora M M X MM6
MM5
MM4
MM3
MM2
MM1
MMO
Istotną barierą stojącą przed twórcami nowego procesora było pokonanie nieśmiertel
nego problemu „kompatybilności w dół“ - zgodności z poprzednimi wersjami. Samo
wprowadzenie nowych rozkazów i rejestrów nie stanowi żadnego zagrożenia: stare
programy i systemy nic nie wiedzą o ich obecności, żaden kompilator nie generuje kodu
z ich udziałem. W spisie symboli operacji ( Opcodes) wywodzącym się jeszcze z czasów
procesorów bazowych x86 jest dużo wolnego miejsca dla nowych rozkazów bez obawy
pomieszania ich z dotychczas znanymi.
Procesor z rozszerzeniem MMX 189
Dla procesora MMX pisze się nowe programy posługujące się nowymi instrukcjami, na
nowych typach danych i nowych rejestrach. Jak długo nasz nowy P55C przetwarza
wyłącznie taki program wszystko jest w porządku. Katastrofa nastąpi gdy do akcji
wkroczy jeden z nowoczesnych systemów operacyjnych, który przydziela czas proce
sora różnym zadaniom (systemy wielozadaniowe). Każde takie przełączenie wymaga
zapamiętania aktualnego stanu CPU, tak by później móc podjąć przerwany wątek w tym
samym miejscu. Zapamiętać trzeba wiele rzeczy, a w szczególności rejestry wewnętrz-
ne. Dla procesorów rodziny x86 są to między innymi rejestry AX, BX itd. Żaden ze
współczesnych systemów operacyjnych nie ma pojęcia, że trzeba też zapamiętać
i odtworzyć rejestry MMX, bo nic nie wie o ich istnieniu.
Na szczęście występuje dodatkowa grupa rejestrów, o które troszczą się systemy opera
cyjne. Mowa tu o ośmiu 80-bitowych rejestrach koprocesora arytmetycznego (FPU). Na
reprezentację liczb zmiennoprzecinkowych w pamięci komputera składa się jeden bit
znaku, 15-bitowa eksponenta i 64-bitowa mantysa. Każdorazowe przejście CPU do
nowego kontekstu poprzedzane jest między innymi instrukcją f s a v e , która odkłada
rejestry FPU w specjalnie do tego celu zarezerwowanym bloku . Wywołanie instrukcji
FRSTOR po powrocie gwarantuje przywrócenie stanu FPU.
Rejestry MMX podszywają się pod fragmenty rejestrów FPU (część przeznaczona na
mantysę) i w ten sposób gwarantują sobie obsługę ze strony systemów operacyjnych
(rysunek 2.2).
FPTag o
Rysunek 2.2. 78 64 63
Sposób dostępu
•
ST7
do rejestrów ST6
1
urn
. •
— - ■ " • —^ 1»!■! II ■ 11■■■ IMM • ai ia •■ |
1
ST5
przez system ST4 1
operacyjny 1
ST3
ST2
1
ST1 i
STO
FPTag 63
MM7
j
MM6
MM5
MM4
•
MM3
MM2
•
1 MM1
MMO
Rejestry MMX można przecież jeśli to konieczne czyścić przed użyciem szybkimi
instrukcjami typu:
Każdy blok MMX zakończany jest specjalną instrukcją EMMS (Empty Multimedia
State). Jej działanie sprowadza się do ustawienia flag informujących jednostkę FPU, że
przejmowane przez rejestry ST dane są nieważne4 i nie podlegają interpretacji. Czas
wykonywania EMMS wynosi jak na razie nie mało bo aż 57 taktów zegarowych. Intel
planuje usunięcie tego mankamentu w kolejnych wersjach procesora i zredukowanie
czasu przełączenia do trzech taktów.
kod_FP_blok_l:
* » *
* ł •
3 W przypadku szczególnie korzystnym, gdy dane znajdują się w pamięci podręcznej (cache
hit). W praktyce stan taki ma rzadko miejsce co prowadzi do zwielokrotnienia podanych
czasów.
4 Zastanie w rejestrze eksponenty wartości Oxffff zostanie zinterpretowane jako nieskończoność
i koprocesor generuje przerwanie.
Procesor z rozszerzeniem MMX 191
kod MMX
• i
EMMS
kod FP blok 2:
63 56 55 48 47 40 39 32 31 24 23 16 15 8 7 0
Rysunek 2.3. Packed bytes
( 8 x 8 bitów)
Typy danych
MMX 63 48 47 32 31 16 15
Packed word
(4x16 bitów)
63 32 31
Packed doublewords
(2 x 32 bity)
63
Quadword
(64 bity)
Nowe rozkazy
nowy procesor w towarzystwie 57 nowych
w istocie, ale nie aż tyle. Rozkazy MMX operują generalnie na trzech typach danych,
niektóre na dwóch a niektóre tylko na jednym. Jeżeli uwzględnić dodatkowo odmienne
traktowanie przeniesienia i znaku można uzyskać wspomnianą liczbę mutacji równą 57.
Sam rozkaz a d d może się poszczycić siedmioma różnymi odmianami.
• Przedrostek {Prefix)
Litera P, jeżeli poprzedza kod operacji oznacza Packed
• Kod operacji
Określa działanie, np. ADD, SUB, CMP
192 Anatomia PC
Tabela 2.1
Rozkazy M M X
1 EMMS 29 PSHIMD jako PSRAD ze stalą
2 MOVD rej.->pam./rcj. 30 PSHIMD jako PSRLD ze stałą
3 MOVD pam./rej./->pam. 31 PSHIMQ jako PSLLQ ze stałą
4 MOVQ rej.->pam./rej. 32 PSHIMQ jako PSRLQ ze stałą
5 MOVQ pam./rej./->pam. 33 PSHIMW jako PSLLW ze stałą
6 PACKSSDW 34 PSHIMW jako PSRAW ze stałą
7 PACKSSWB 35 PSHIMW jako PSRLW ze stałą
8 PACKUSWB 36 PSLLD
9 PADDB 37 PSLLQ
10 PADDD 39 PSRAD
11 PADDSB 40 PSRAW
12 PADDSW 41 PSRLD
13 PADDUSB 42 PSRLQ
14 PADDUSW 43 PSRLW
15 PADDW 44 PSUBB
16 PAND 45 PSUBD
17 PANDN 46 PSUBSB
18 PCMPEQB 47 PSUBSW
19 PCMPEQD 48 PSUBUSB
20 PCMPEQW 49 PSUBUSW
21 PCMPGTB 50 PSUBW
22 PCMPGTD 51 PUNPCKHBW
23 PCMPGTW 52 PUNPCKHDQ
24 PMADDWQ 53 PUNPCHWD
25 PMULHW 54 PUNPCKLBW
26 PMULLW 55 PUNPCKLDQ
27 POR 56 PUNPCKLWD
28 PSHIMD jako PSLLD ze stałą 57 PXOR
• Przyrostek ( Suffix )
Możliwe oznaczenia to:
• US Unsigned Saturation (Nasycenie bez znaku)
• s Signed Saturation (Nasycenie z uwzględnieniem znaku)
• B Typ danych: Packed Byte
• W Typ danych: Packed Word
• D Typ danych: Packed Doubleword
• Q Typ danych: Quadword
Tabela 2.2.
Podział rozkazów MMX na klasy
Tabela 2.3.
Zakresy typów danych z uwzględnieniem mechanizmu nasycenia
Typ Zakres
Signed Byte 0x80... 0x7f (-128...+127)
Występowanie nasycenia wielkości fizycznej takiej jak jaskrawość, kontrast, siła i bar
wa dźwięku jest z pewnością bliższe naturalnemu podejściu do zjawisk fizycznych ze
świata multimediów. Analogowy regulator siły głosu nie kręci się przecież w kółko ale
ma swoje położenia graniczne.
k o d _ in s tr u k c ji o p e ra n d _ 2 r o p e ra n d _ l
US z n a sy c e n ie m b ez u w zg lęd n ien ia zn ak u
wb s ło w a n a b a jty
Dla lokalizacja 64-bitowego obszaru w pamięci przyjęta została następująca umowa (na
przykładzie adresu początkowego 0x1500):
Procesor z rozszerzeniem MMX 195
63 56 55 48 47 40 39 32 31 24 23 16 15 87 0
operand2 1 operand_2
iii
operand_2
63 48 47 32 31 16 15
1 0111111100111000 operand_2
+ + •^i +
63 48 47 32 31 16 15
.... j.
63 48 47 32 31 16 15 0
1 »1*110000000000 0111111111111111I operand_2
................... . s
Instrukcja PADDSW dodaje 16-bitowe słowa (traktując je jako liczby ze znakiem) wska
zane przez operand_1 i oper and_2. Jeżeli wynik jest mniejszy od najmniejszej liczby
z zakresu przewidzianego dla typu Signed Word, następuje ograniczenie do wartości
0x8000. W przypadku wyjścia poza zakres od drugiej strony wartość nasycenia wynosi
0x7fff.
Przykłady zastosowań
Rozszerzenia MMX dobrane zostały pod kątem aplikacji multimedialnych. Główny
zakres zastosowań to filtry cyfrowe przetwarzające dane audio i video oraz dekodery
MPEG, dotychczas domena specjalnie projektowanych do tego celu układów DSP.
Optymalizacji MMX poddają się najchętniej algorytmy mające następujące wspólne
cechy:
• dane w formacie Integer, maksymalnie jedno lub dwubajtowe,
• krótkie i często wywoływane pętle programowe,
• częste operacje dodawania i mnożenia,
• algorytmy bardzo czasochłonne,
• możliwość realizacji równoległej.
Procesor z rozszerzeniem MMX 197
Tajemnica sukcesu (kilkunastokrotne skrócenie czasu pracy) nie leży zwykle w nowym,
rewolucyjnym podejściu do tematu. O wiele istotniejsze jest sprytne rozdzielenie zmien
nych, tak by wykorzystać możliwości wspomnianego przetwarzania równoległego.
Blue-Box i
Skuteczność działania rozkazów MMX na danych typu video można najłatwiej za
demonstrować na przykładzie tzw. Chroma Keying. W telewizji stosowany jest często
mikser trickowy zwany Blue-Box, dzięki któremu prezenter przedstawiany jest na tle
mapy pogody. W rzeczywistości postać prezentera występuje na tle jednorodnej planszy
(najczęściej w kolorze niebieskim, stąd nazwa miksera).
s X\ \ \
\ V \ V \
X X X ''' N R X \ \ \
L
\
/
Maska
Tak uzyskana maska jest produktem pośrednim, i służy do dwóch kolejnych operacji:
instrukcją p a n d wycina się otwór w obrazie drugoplanowym (w naszym przykładzie
mapa pogody) a rozkaz p a n d n izoluje samą postać prezentera. Te dwie części składowe
montowane są w jedną całość przy pomocy instrukcji POR.
198 Anatomia PC
Zapis do sekwencji
wyjściowej
Filtr nie może działać ślepo i bez ograniczenia. Oddziaływanie na określone partie
sekwencji wejściowej doprowadzi z pewnością do przekroczenia analogowych wartości
granicznych co objawi się odczuwalnymi zniekształceniami. Poprzez wbudowany
w instrukcje MMX mechanizm nasycenia algorytm może czuć się zwolniony z koniecz
ności stałej kontroli. Przekroczenie limitu kosztuje dla każdego słowa co najmniej 3
operacje (porównanie, skok, ładowanie). Dodatkowy zysk na czasie wynika z faktu, iż
7
7 Rzeczywisty zysk na czasie można osiągnąć jeśli rozkazy MMX wykonywane są możliwie
szybko, najlepiej w jednam cyklu zegarowym CPU. Warunek ten spełniony jest dla
wszystkich instrukcji za wyjątkiem p m a d d w d (dodawanie z mnożeniem), która potrzebuje
3 taktów.
System obsługi przerwań sprzętowych 199
Najbardziej aktywnym elementem komputera jest sam procesor (CPU). Niektóre z blo
ków funkcjonalnych, które składają się na jego otoczenie, wykonują operacje rozciąga
jące się w czasie na wiele cykli zegarowych. Urządzenia te nie wymagają udziału pro
cesora dla wykonania zleconych im zadań. Są to zwykle mniej lub bardziej niezależne
kontrolery, często wyposażone we własny procesor. Na ogół wystarczy, by procesor
zaprogramował rejestry sterujące tego urządzenia, wydając tym samym polecenie wy
konania operacji (odebranie znaku przez łącze szeregowe, zapisanie sektora na dysku).
Zainicjowana przez CPU operacja, jakkolwiek może trwać tysiące cykli zegarowych
procesora, musi się kiedyś zakończyć (choćby błędem). Musi więc istnieć sposób poin
formowania procesora o tym fakcie. Istnieją tutaj zasadniczo dwie możliwości:
Metoda opisana w punkcie pierwszym znana jest też pod nazwą polling i nie znajduje
praktycznego zastosowania w komputerach PC. W drugim przypadku mówimy, że
wystąpiło przerwanie (ang. interrupt) sprzętowe (gdyż pochodzące od urządzenia, a nie
będące instrukcją programu). Ta forma sterowania przepływem danych jest w PC
szeroko wykorzystywana. Znajduje ona zastosowanie w obsłudze urządzeń intensywnie
wymieniających dane z pamięcią operacyjną, a więc przede wszystkim łącz szerego
wych i równoległych, kontrolerów dysków (twardych i elastycznych), kart sieciowych
oraz urządzeń, które dostarczają dane w sposób nieregularny —klasycznym przykładem
jest tutaj klawiatura komputera. Trudno sobie wyobrazić bardziej rozsądne podejście do
obsługi klawiatury, niż reagowanie na naciśnięcie klawisza za pomocą obsługi przerwa
nia pochodzącego od sterownika klawiatury. W praktycznych zastosowaniach kompu
tera (szczególnie wyposażonego w myszkę) klawiatura może przecież godzinami nie
wysyłać żadnego znaku.
Jak widać, kandydatów do tej formy obsługi mamy wielu. Procesor posiada jednak
zwykle tylko jedno wejście INT sygnalizujące przerwanie sprzętowe. Ponadto archi
tektura PC zakłada, że każde przerwanie ma pewien priorytet, tzn. obsługa zgłoszeń
uwzględnia nie tyle moment ich nadejścia, co raczej stopień ich ważności. Już samo to
założenie wymaga rozróżniania zgłoszeń poprzez przyporządkowanie każdemu z urzą
dzeń oddzielnego kanału wejściowego.
Konieczne stało się więc zastosowanie specjalizowanego układu zajmującego się wy
łącznie ich obsługą. Funkcję kontrolera przerwań w komputerze XT pełni układ 8259A,
zaś w modelach AT i PS/2 - dwa takie układy. W nowszych rozwiązaniach płyt głów
nych komputerów AT nie znajdziemy ich jako samodzielnych układów scalonych, gdyż
wchodzą one przeważnie w skład jednego z układów wysokiej skali integracji, tworzą
cych „obudowę” procesora (ang. chipset). Ze względu jednak na konieczność zacho
wania zgodności architektury można się odwoływać do ich rejestrów.
Rysunek 3.1.
Rozkład w
wyprowadzeń
CS 1 28 _ i vcc
układu 8259A WR l= 2 27 = i A0
RD 1= 3 26 = i IN T A
D7 cz 4 25 =□ IR 7
o
CO
1= 5 24 = i IR 6
D5 a 6 23 i IR 5
D4 7 22 ZZ2 IR 4
D3
¡= =
8 8259A 21 IR 3
D2 c= 9 20 IR 2
D1 i 10 19 ZD IR1
DO \zz 11 18 =1 IR0
CAS0 EZ 12 17 =□ IN T
CAS1 1 13 16 =□ S P /E N
GND 14 15 Z3 CAS2
■=
do CPU
Rysunek 3.2. —► INT
Blok sterujący
Schemat blokowy INTA
<
O)
układu 8259A LO
CM
00
n
- o
_c0
i?
cO A
■M
CO
oco> V
E
co
c
N
-• - i
Wybrany przez układ oceny priorytetu bit rejestru IRR przekazywany jest teraz do
rejestru ISR {Interrupt Service Register). Oznacza to, że w tym momencie obsługiwane
jest przerwanie z linii o numerze odpowiadającym ustawionej pozycji bitowej rejestru
ISR.
X- •
&■'
Procesor wysyła teraz drugi impuls ~INTA. Kontroler przerwań odpowiada na niego
wystawieniem na szynę danych D 7-D 0 wektora przerwań o następującej budowie:
;. j
,‘s
. v
: t*
bity 7—3 bity te, stanowiące tzw. offset, można ustalić na etapie
programowania kontrolera;
t-y
Procesor traktuje ten bajt jako numer procedury obsługi przerwania, do wykonania
której teraz przejdzie.
•v .
-'/r ;
' I*
**
k
i**
V ."
s. ••
4w
,-r
. •*
*
i
!*•
f .
i.
t\ •
.!«. :
>. .
. r •
•Âs
204 Anatomia PC
Kaskadowe łączenie
kontrolerów przerwań
Dla zwielokrotnienia liczby wejść układy 8259A dają się łączyć w grupy. Teoretycznie
możliwe jest połączenie 9 układów (jeden Master + 8 układów Slave) i uzyskanie
8x8=64 linii przerwań. W modelach AT i PS/2 zastosowano kaskadowe połączenie
dwóch kontrolerów uzyskując tym samym 8+7=15 wejść, bowiem jedno z wejść układu
Master „zużywamy” na dołączenie układu Slave. Należy nadmienić, że połączenie takie
prowadzi do przegrupowania priorytetów wejść; w naszym przypadku wejścia IR8-15
(układu Slave) otrzymują wyższy priorytet niż wejścia IR3-7 układu Master.
Układy połączone są między sobą trzema liniami adresowymi CAS0-CAS2, które dla
kontrolera Master są wyjściami, a dla Slave wejściami. Każdy z kontrolerów rozpoznaje
swoją rolę {Master łub Slave) badając poziom sygnału na wejściu -SP/EN. Zero logicz
ne na tym wejściu konfiguruje układ jako Slave , a jedynka logiczna jako Master .
S y s te m o w a S y s te m o w a S y s te m o w a
Rysunek 3.3, szyna s zyn a szyna
danych a d re s o w a sterująca
Schemat
kaskadowego
INT ■* IR Q 7
połączenia INTA ■o IR Q 6
dwóch układów ■o IR Q 5
8259 A ■o IR Q 4
8259A M aste r
-o IR Q 3
IR 2
- o I R Q 1
AO ■ o I R Q 0
CS S P /E N
V.C C
CASO CAS1 CAS2
u CS S P /E N
GND
System obsługi przerwań sprzętowych 205
Obsługa zgłaszanych przerwań przez tak połączone układy nieco się komplikuje.
Przerwania nadchodzące bezpośrednio do układu Master , tj. pojawiające się na liniach
IRQ0-IRQ1 i IRQ3-IRQ7 obsługiwane są tak, jak to opisano wcześniej. Odebranie
zgłoszenia na linii n układu Slave (IRQ8-IRQ15) powoduje wyzwolenie reakcji
opisanej poniżej.
Tabela 3. 1.
Przyporządkowanie urządzeń liniom IRQ w modelach XT, A T i PS/2
Linia Linia
Urządzenie Wektor Urządzenie Wektor
IRQ IRQ
model X T
0 zegar systemowy 08h 4 COMI Och
1 klawiatura 09h 5 kontroler dysku Odh
twardego
2 zarezerwowane Oah 6 kontroler dyskietek Oeh
3 COM2 Obh 7 LPT1 Ofh
modele A T i PS/2
0 zegar systemowy 08h 8 zegar czasu 7 Oh
rzeczywistego
1 klawiatura 09h 9 wywołuj e 71 h
przerwanie IRQ2
2 wyjście kaskadowe Oah 10 zarezerwowane 72h
do układu Slave
3 COM2 Obh 11 zarezerwowane 73h
4 COM1 Och 12 zarezerwowane 74h
5 LPT2 Odh 13 koprocesor 75h
arytmetyczny
6 kontroler napędu Oeh 14 kontroler dysku 76h
dysków elastycznych twardego
7 LPT1 Ofh 15 zarezerwowane 77h
Wektor oznacza numer indeksu wskazującego adres procedury obsługi danego
przerwania, umieszczony w tzw. tablicy wektorów przerwań. Tablica ta znajduje
się w pamięci w obszarze OOOOOh—003ffh i zawiera czterobajtowe pozycje
reprezentujące kolejne adresy.
• Drugi impuls -INTA wygenerowany przez CPU nakazuje układowi Slave wysta
wienie na szynę danych (D7-D0) bajtu danych - wektora przerwań, traktowa
nego jako numer procedury obsługi przerwania zgłoszonego na linii n.
• W trybie AEOI zerowane są rejestry ISR (bit n w układzie Slave i bit 2 w ukła
dzie Master), W trybie EOI procedura obsługi przerwania wysyła dwa sygnały
EOI: jeden do układu Master i drugi do układu Slave.
Tryb pracy układu 8259A ustalany jest programowo. Układ otrzymuje w fazie progra
mowania 2—4 bajty konfiguracyjne ICW1-ICW4 ( Initialization Command Word), które
decydują o późniejszym zachowaniu systemu obsługi przerwań. Programując układy
8259A, procesor komunikuje się z nimi przez następujące porty.
Model XT
Adres portu Dostępne rejestry Tryb dostępu
020h IRR, ISR, wektor przerwań do odczytu
ICW1, OCW2, OCW3 do zapisu
021h IMR do odczytu
ICW2, ICW3, ICW4, OCW1 do zapisu
Model AT
Adres portu Dostępne rejestry Tryb dostępu
020h dla linii IRR, ISR, wektor przerwań do odczytu
IRQ0-IRQ7 ICW1, OCW2, OCW3 do zapisu
OAOh dla linii IRR, ISR, wektor przerwań do odczytu
IRQ8-IRQ15 ICW1, OCW2, OCW3 do zapisu
02 lh dla linii IMR do odczytu
IRQ0-IRQ7 ICW2, ICW3, ICW4, OCW1 do zapisu
OAlh dla linii IMR do odczytu
IRQ8-IRQ15 ICW2, ICW3, ICW4, OCW1 do zapisu
System obsługi przerwań sprzętowych 207
Procesor przekazuje przez port 02 łh {Master) lub OAlh {Slave) drugi bajt
inicjujący ICW2.
Bajt ICW2:
bity 7 -3 00000;
208 Anatomia PC
Istnieją też rozkazy, które można przekazywać kontrolerowi podczas jego pracy
modyfikując tym samym dynamicznie system obsługi przerwań stosownie do bieżących
potrzeb. Układ 8259A rozpoznaje trzy rozkazy OCW1-OCW3 (Operation Control
Word), które zostaną pokrótce omówione poniżej.
• Rozkaz OCW1 podawany jest przez port 0 2 lh (dla układu Master) lub OAlh
(Slave):
bit 7 0,
bity 6-5 10 = wyzerowanie maski specjalnej,
11 = ustawienie maski specjalnej,
pozostałe kombinacje bitów 6-5 są ignorowane; e
bit 2 1 = polling; [
bity 1-0 10 = rozkaz odczytu rejestru IRR; kontroler wystawia do portu |
020h (Master) lub OAOh (Slave) zawartość rejestruIRR, |
E
5
210 Anatomia PC
Uwaga:
Dostęp do rejestru IMR odbywa się poprzez port 02 lh (dla układu Master) lub OAlh
(Slave) :
Można też zamaskować dowolny z kanałów, np. kanał 0 (co powoduje zatrzymanie
procesu odmierzania czasu systemowego). Oto prosty przykład w języku Turbo C:
#include <dos.h>
#include Cconio.h>
void zegar(void);
void main(void)
{
clrscr () ;
zegar();
outp(0x21,0x01); /* zamaskowany kanał 0 -> zatrzymaj zegar */
zegar () ;
outp(0x21,0x00); /* uruchom zegar */
zegar();
}
void zegar(void)
/* pokazuje czas i czeka na naciśnięcie klawisza */
{
struct time czas;
while(!kbhit())
{
gettime(&czas);
gotoxy(10,10);
printf ("%02i;%02i:%02i",czas.ti_hour,czas.ti_min,czas.ti_sec);
}
getchO; /* opróżnij bufor klawiatury */
}
Wyjaśnienia wymaga pojęcie maski specjalnej. Jak wiemy, bit rejestru ISR aktualnie
obsługiwanego kanału jest po przekazaniu CPU wektora przerwań zerowany automa
tycznie tylko w trybie AEOI. W trybie EOI ten sam bit może być wyzerowany dopiero
przez samą procedurę obsługi przerwania, nie jest jednak wcale określone, kiedy to
nastąpi. W przedziale czasowym, w którym układ kontrolera przerwań oczekuje na
jawny rozkaz EOI, mogą być obsługiwane tylko zgłoszenia o priorytecie wyższym od
aktualnie obsługiwanego. Zgłoszenia na liniach o niższym priorytecie są ignorowane.
Rolling
Gwoli ścisłości należy nadmienić, że istnieje też inna forma przekazywania informacji
pomiędzy kontrolerem przerwań a procesorem - tzw. polling . Końcówka -INTA
układu 8259A nie może być wtedy połączona z wyjściem -INT A procesora (ściślej,
kontrolera magistrali 8288), można więc to wejście wykorzystać inaczej. Wysłanie
przez procesor rozkazu OCW3 z ustawionym bitem 2 oznacza skierowanie zapytania do
kontrolera (polling). Układ 8259A odpowiada wystawieniem do tego samego portu,
z którego otrzymał rozkaz OCW3, bajtu danych o następującej strukturze:
Każdy rozkaz odczytu portu jest traktowany jako sygnał uzgodnienia (odpowiednik
sprzętowego sygnału -INT A) od procesora.
Przerwanie niemaskowalne, jak zaraz zobaczymy, nie jest „absolutnie nie do zamasko
wania”. Rozpatrzmy moment włączenia komputera i uruchomienia procedur inicjalizu
jących BIOS-u. Jednym z ich zadań jest budowa tablicy wektorów przerwań, tj. stałego
miejsca w „niskim” obszarze pamięci operacyjnej, w którym umieszczane są czterobaj
towe adresy punktów wejścia do procedur obsługi wszystkich przerwań. Jednocześnie
inicjalizowane są wszystkie inne rejestry systemu. Własną inicjalizację przeprowadzają
układy obsługi pamięci dynamicznej. Może się zdarzyć, że układ kontroli parzystości
RAM stwierdzi błąd i wywoła tym samym procedurę obsługi przerwania INT 2. Adres
punktu wejścia do tej procedury może jednak nie być jeszcze ustawiony i wskazywać
przypadkowe miejsce w pamięci. Procesor, podejmując wykonanie programu od tego
miejsca, najprawdopodobniej zawiesi się.
Jedną z pierwszych operacji, jakie musi wykonać BIOS uruchamiając komputer, jest
więc zamaskowanie przerwania NMI. Odpowiada to ustawieniu bitu 7 portu o adresie
OAOh (w XT) lub 07Oh (w AT). Manipulując samodzielnie tym bitem należy zachować
szczególną ostrożność - port ten bowiem steruje również pracą pamięci konfiguracji
CMOS-RAM.
i=inp^0x70) ;
i=i & 0x7f; /* wyzeruj bit 1 , NMI aktywne */
outp(0x70,i);
« I I
i-inp(0x70);
i=i I 0x80; /* ustaw bit 7, NMI zablokowane */
outp(0x70,i);
Kontroler DMA 213
Rozdział 4.
Kontroler DMA
DMA jest skrótem od angielskiego określenia Direct Memory Access , oznaczającego
bezpośredni dostęp do pamięci. Mowa tu oczywiście o dostępie do pamięci dla urzą
dzeń peryferyjnych, gdyż kontaktu z nią procesora nie należy już w żaden sposób
usprawniać. Ten stosunkowo skąpo opisany element architektury komputera IBM PC
wymaga wyjaśnień.
Rysunek 4. 1.
Idea
bezpośredniej
komunikacji
układów
wejścia-wyjścia
z pamięcią
Każdy z układów 8237A może obsługiwać cztery takie strumienie. Możliwy jest też
kaskadowy sposób łączenia kontrolerów 8237A; jedno z wejść układu głównego
{Master) obsługuje wtedy następny kontroler (Slave) i jest tym samym „stracone”. To
rozwiązanie stosowane jest w IBM PC/AT i udostępnia siedem kanałów DMA.
Ta sama akcja realizowana bez układu DMA składałaby się z kolejnych zapisów i od
czytów portu kontrolera napędu dysków elastycznych. Kolejne etapy to: załadowanie
akumulatora, przesłanie zawartości akumulatora do portu sterującego, odczyt portu
danych do akumulatora, przesłanie zawartości akumulatora do komórki pamięci. To
dopiero jeden bajt. Oczywiście przy każdym z tych kroków procesor ma „pełne ręce
roboty” i nie ma mowy o wielozadaniowości.
Rysunek 4.2 przedstawia wyprowadzenia układu scalonego typu 8237A. Jak wiele
innych układów, jest on obecnie zawarty w jednym z kilku układów scalonych wysokiej
skali integracji, które znajdują się na nowoczesnej płycie głównej. Przykładowo układ
82C206 zawiera programowalne generatory przebiegów czasowych, kontroler DMA,
kontroler przerwań i pamięć nieulotną CMOS. Jednak funkcje i znaczenie poszczegól
nych układów pozostały, ze względu na zachowanie kompatybilności w dół, te same.
Kontroler DMA 215
Rysunek 4.2.
Rozkład c: I A7
IOR 1 40
wyprowadzeń
układu 823 7A IOW 2 39 d A6
M EM R d 3 38 A5
M EM W i 4 37 1 A4
PIN5 d 5 36 d EO P
R EA D Y i 6 35 d l A3
HLDA d 7 34 d l A2
A D STB d 8 33 1 A1
AEN d 9 32 — 1 A0
HRQ d 10 31
8237
P P
CS d 11 30 d l DBO
CLK i 12 29 d l DB1
RESET d 13 28 d l DB2
DACK2 d 14 27 d l DB3
D A C IO d 15 26 dJ DB4
D R EQ 3 d 16 25 d DACKO
DRE02 d 17 l
24 d DACK1
mmmmmm
Rysunek 4.3.
Schemat
kaskadowego
połączenia
dwóch układów
8237A
Kontroler DMA 219
Adresowanie pamięci przez układy DMA odbywa się podobnie jak dla procesora. Dla
pokrycia pełnej przestrzeni adresowej komputera nie wystarcza 16-bitowy rejestr
adresowy. CPU składa swój 20-bitowy adres rzeczywisty z 16-bitowego rejestru seg
mentowego pomnożonego przez 16 i drugiego 16-bitowego rejestru wskazującego
przemieszczenie {offset) w segmencie o wielkości 64 kB. Ponieważ wewnętrzne rejestry
adresowe (dla każdego kanału jeden) układu 8237A są 16-bitowe, można nimi adre
sować obszar o wymiarach do 64 kB (tzw. stronę DMA). Informację o położeniu strony
w przestrzeni adresowej zawiera właśnie rejestr strony. Jakkolwiek należy on logicznie
do struktury kontrolera DMA, fizycznie zlokalizowany jest poza układem 8237A,
w jednym z układów wspomagających umieszczonych na płycie głównej komputera.
Dla każdego kanału DMA istnieje ponadto jeden 16-bitowy rejestr licznika transmisji.
Łączna liczba rejestrów układu 8237A wynosi 27.
W danej chwili może być aktywny tylko jeden kanał DMA, tzn. transmisje nie mogą się
ze sobą „krzyżować”. Ponieważ jednak każdy kanał jest programowany niezależnie,
istnieje para rejestrów wspólna dla całego układu 8237A, przechowująca adresy i licz
nik aktywnej w chwili bieżącej transmisji. Dzięki temu jest możliwe tzw. samoprogra-
mowanie układu do stanu początkowego po zakończeniu transmisji.
Adres Rejestr
OOOh rejestr adresowy kanału 0
OOlh rejestr licznika kanału 0
002h rejestr adresowy kanału 1
003h rejestr licznika kanału 1
004h rejestr adresowy kanału 2
005h rejestr licznika kanału 2
006h rejestr adresowy kanału 3
007h rejestr licznika kanału 3
008h rejestr stanu (odczyt)
008h rejestr rozkazowy (zapis)
009h rejestr żądań
OOAh rejestr maski kanału
OOBh rej estr trybu
OODh rejestr pośredni
OOFh rejestr maskujący
081h rejestr strony kanału 2
082h rej estr strony kanału 3
083h rejestr strony kanału 0 i 1*
087h rejestr strony kanału 0 i 1*
* Odnosi się do tego samego rejestru
co port 087h - jeden wspólny
rejestr strony dla kanałów 1 i 0.
Sztuczność tych portów (zwanych też „ślepymi”) jest często stosowaną metodą
w technice mikroprocesorowej. Umożliwia ona zainicjowanie akcji zewnętrznej przez
procesor. Jakkolwiek w celu odwołania się do nich należy użyć instrukcji języka
Kontroler DMA 221
maszynowego out port, wartość, to druga część instrukcji (wartość) jest ignorowana
i może być dowolna. Przykładowo, wspomniany w wyżej opisanych rozkazach prze-
rzutnik jest niezbędny dla prawidłowego adresowania rejestrów 16-bitowych. Przed roz
poczęciem przekazywania takiej wartości (najpierw bajt mniej znaczący, potem bardziej
znaczący) należy wyzerować przerzutnik. Unika się w ten sposób zamiany bajtów re
jestru 16-bitowego mogącej wystąpić na skutek przypadkowego położenia przerzutnika.
Budowa rejestru maski kanału (port OOAh w PC/XT, OOAh i 0D4h w PC/AT):
Pojedyncze kanały mogą być programowo wyłączone (zamaskowane) i nie reagować na
zgłoszenia. Można to zrealizować ustawiając rejestr maski kanału. Każda operacja
maskowania i odsłaniania jednego kanału wymaga jednorazowego załadowania rejestru.
Przykładowy program
Przytoczony fragment programu w języku Turbo C pokazuje zasadę transmisji danych
przez kanał DMA. Osiem wartości zawartych w zmiennej Tabł ma zostać przeniesio
nych do karty umieszczonej w jednym z gniazd rozszerzenia.
Transmisja wyzwalana jest wysokim poziomem na linii DREQ1, która jest oczywiście
wyprowadzona do gniazd rozszerzenia (końcówka B I 8). Proces może być cyklicznie
inicjowany przez impulsy generowane na karcie rozszerzenia, zaś CPU nie bierze w nim
udziału.
“<
p>*.
m' \ : .
226 Anatomia PC
łinclude <dos.h>
Komputer IBM PC
Komputer PC z procesorem 8088 posiada 8-bitową magistralę danych i 20-bitową
magistralę adresową. Dla pokrycia całej przestrzeni adresowej należy do wewnętrznych
16-bitowych rejestrów adresowych układu 8237A dodać 4-bitowy zewnętrzny rejestr
strony.
Tabela 4.1.
Przyporządkowanie kanałów DMA w modelu PC
Kanał Przyporządkowań ie
0 układ odświeżania pamięci RAM
1 zarezerwowany dla karty SDLC (standard szeregowej transmisji
synchronicznej firmy IBM, który nigdy nie doczekał się
popularności)
2 kontroler napędu dysków elastycznych
3 kontroler dysku twardego
Ten sam problem dotyczy oczywiście również zapisu do pamięci. Podczas transmisji
bloku danych pod kolejne adresy w pamięci urządzenie musi przesuwać co drugi bajt
„na drugą stronę” magistrali danych. Komputer XT posiada jeden kontroler 8237A,
wszystkie kanały są 8-bitowe, a ich przydział jest taki jak w modelu PC.
Tabela 4.2,
Przyporządkowanie kanałów DMA w modelu AT
Kanały 16-bitowe
Dotychczas omawialiśmy transmisje kanałami 8-bitowymi. Wolne kanały 5, 6 i
układu Master przystosowane są do transmisji 16-bitowej.
nym kierunku). Dane przejmowane są bezpośrednio z szyny danych lub z jej części.
Wewnętrzne rejestry adresowe układu 8237A są 16-bitowe. Układ posiada jednak tylko
osiem wyjść adresowych A0-A7. Adres jest oczywiście multipleksowany. Układ wysta
wia na końcówki A 0-A 7 najpierw bardziej znaczącą część adresu i uaktywnia sygnał
ADSTB. Zewnętrzny 8-bitowy rejestr zatrzaskowy przechwytuje ten bajt i wystawia na
szynę adresową systemu jako bity A8-A15. W następnym cyklu zegara układ 8237A
wystawia mniej znaczący bajt adresu, który jest bezpośrednio podawany na szynę adre
sową. Pozostałe osiem bitów, w przypadku 24-bitowej szyny adresowej, doprowadzane
jest z rejestru strony. Obrazuje to rysunek 4.4.
Kontroler DMA 229
Efektywny adres dla transmisji 16-bitowych tworzony jest w następujący sposób: bity
A0-A15, złożone z bardziej znaczącej części adresu przechowywanej w zewnętrznym
rejestrze zatrzaskowym i mniej znaczącej, wystawianej bezpośrednio na liniach A0-A7
układu 8237A, jest przesuwana o jeden bit w lewo tworząc linie adresowe A1-A16. Bit
AO przyjmuje wartość zero. Taki adres musi wskazywać na dwubajtowe słowo, bowiem
pamięć o organizacji 16-bitowej ma słowa rozlokowane na adresach parzystych. Linie
adresowe A17-A23 uzupełniane są zawartością rejestru strony. Strona taka ma więc
wielkość 128 kB (adresowana jest 17 bitami A0-A16), podczas gdy w przypadku kana
łów 8-bitowych wielkość strony wynosi 64 kB.
Głównym celem układu DMA jest, jak wiadomo, realizacja przesłań typu pamięć -
urządzenie wejścia-wyjścia „za plecami” procesora. Transmisje typu pamięć - pamięć
są dużo szybciej realizowane przez sam procesor, tym bardziej, że odpada wtedy
konieczność wewnętrznego buforowania baj tu (lub - co gorsza - słowa) w 8-bitowym
rejestrze pośrednim układu DMA.
Poprzez opisane powyżej przesuwanie adresu można uzyskać adresy dla słów nawet
64-bitowych i większych, ale transmisja musi wtedy obejmować całkowitą liczbę takich
słów. Urządzenie blokowe chcące przesłać np. 1025 bajtów nie będzie więc właściwie
obsłużone.
Układ 8237A może być tak zaprogramowany, że po osiągnięciu zadanej liczby przesłań
(dekrementowany licznik transmisji przechodzi przez stan OOOOh do FFFFh) następuje
ponowne zapisanie rejestrów adresowych i licznika tymi samymi wartościami (patrz bit
4 rejestru trybu).
Rysunek 5,1.
Sposób zapisu Dane 0 1 1 0 0 1 0
informacji
na dyskietce
Bajt o wartości 66h
w standardach
F M iM F M
Zegar
Z D Z D Z Z D Z D Z
FM
Z D D Z D D Z
M FM
T FM
©
t M FM
Obecnie powszechnie stosowaną metodą zapisu danych na dyskietkach stał się konku
rencyjny do systemu FM system MFM (ang. Modified Frequency Modulation). Rysu
nek 5.1. przedstawia schematycznie różnicę między tymi dwoma systemami.
Informacja nie jest zapisywana na dyskietce w postaci jednolitego ciągu bajtów, lecz
zorganizowana jest w tzw. sektory . Każdy sektor zawiera 512 bajtów, co jest jedno
cześnie najmniejszą porcją informacji, jaka może być z dyskietki odczytana. Z punktu
widzenia systemu operacyjnego logiczną strukturę dyskietki tworzą pliki i katalogi, zaś
niektóre informacje (zapisane w ściśle określonym miejscu na dysku) mają specjalne
znaczenie, np. sektor ładujący (ang. boot sector ), katalog (ang. directory). Każdy sektor
należy ponadto do tzw. jednostki alokacji (ang. cluster) o kolejnym numerze logicznym,
a jednocześnie, z fizycznego punktu widzenia, wchodzi w skład ścieżki (ang. track). Na
szczególną uwagę zasługuje tzw. tablica alokacji (ang. FAT - File Allocation Table),
będąca specjalną „łańcuchową” strukturą informującą system, które jednostki alokacji (i
w jakiej kolejności) składają się na dany plik.
Operacja formatowania dyskietki nanosi na nią określoną fizyczną strukturę ścieżek i ich
sektorów. Oprócz znanych nam 512-bajtowych sektorów logicznych, dyskietka zawiera
wiele dodatkowych pól służących kontrolerowi do administracji sektorami (odnajdywa
nia sektorów i przechowywania informacji o ich stanie) oraz pomagających korygować
234 Anatomia PC
Sektor
s D1 ID CRC-1 Z4 S D3 DANE CRC-2 Z5
Pole Zawartość
Z1 80 bajtów o wartości 4Eh
S 12 bajtów o wartości OOh
Z2 4 bajty o wartościach: C2h C2h C2h FCh
Z3 50 bajtów o wartości 4Eh
Dl 4 bajty o wartościach: A lh A lh A lh FEh
Kontroler napędu dysków elastycznych 235
Pole Zawartość
ID metryka adresowa sektora - 4 bajty o następującym
znaczeniu:
bajt 1 = numer ścieżki,
bajt 2 = numer głowicy,
bajt 3 = numer sektora,
bajt 4 - rozmiar sektora kodowany wg klucza
000 = 128 bajtów,
001 = 256 bajtów,
010 = 512 bajtów,
011 = 1 kB,
i *i
111 = 16 kB
CRC-1 16-bitowy kod CRC* zabezpieczający pola D l oraz ID
CRC-2 16-bitowy kod CRC* zabezpieczający pole danych sektora
Z4 22 bajty o wartości 4Eh
D3 4 bajty o wartości: A lh A lh A lh FBh
Z5 80 bajtów o wartości 4Eh
Z6 bajty o wartości 4Eh - znacznik końca ścieżki (EOT)
pojęcie kodu CRC wyjaśnione jest na stronie 64
System operacyjny może mieć wpływ jedynie na zawartość pola ID. Wszystkie funkcje
formatujące ścieżkę muszą przekazać kontrolerowi napędu dysków adres w pamięci,
pod którym znajduje się odpowiednio przygotowana 4-bajtowa struktura opisująca
każdy sektor formatowanej ścieżki oddzielnie. W następnym podrozdziale podam przy
kład formatowania ścieżki za pomocą funkcji 05h przerwania 13h BIOS-u.
Każda dyskietka posiada w pobliżu swego środka mały otwór, który odsłania przy
każdym obrocie fotokomórkę zainstalowaną w napędzie. W ten sposób wytwarzany jest
przebieg prostokątny, który podawany jest linią IDX przewodu połączeniowego do
kontrolera. Stanowi on przybliżoną informację o początku ścieżki. Jeden bajt danych
w przypadku dyskietki HD zajmuje około 16 pm na powierzchni nośnika, tak więc
dokładne zlokalizowanie początku ścieżki za pomocą otworu o średnicy 2 mm nie jest
oczywiście możliwe.
Przerwania 25h i 26h są funkcjami niskiego poziomu, tzn. umożliwiają dostęp do lo
gicznych sektorów DOS. Należy zachować szczególną ostrożność w stosowaniu tych
funkcji, bowiem system nie sprawdza, gdzie i co piszemy na dysk, toteż niezmiernie
łatwo jest uszkodzić logicznie dyskietkę, zamazując np. sektor ładujący. Natomiast
przerwanie 21h jest specyficznym podprogramem, udostępniającym wszystkie funkcje
systemu operacyjnego MS-DOS (PC-DOS) (tzw, function dispatcher ). System „wie”,
co ma robić dzięki odpowiedniemu mechanizmowi przekazywania parametrów. W pier
wszej kolejności do akumulatora ładuje się numer funkcji, a do pozostałych rejestrów
jej parametry, następnie wykonuje się przerwanie 21 h (rozkazem int 21h). Po wykona
niu danej funkcji w akumulatorze zwracany jest symboliczny kod błędu lub poprawnie
zakończonej operacji.
Wszystkie funkcje usługowe DOS posługują się tym samym mechanizmem przekazy
wania parametrów i wyników przez rejestry procesora. Numer wykonywanej funkcji
przekazywany jest w rejestrze AH. Ustawienie bitu CF (ang. Carry Flag —przeniesienie)
rejestru stanu CPU informuje w poniższych funkcjach o wystąpieniu błędu. Symboliczny
kod błędu zwracany jest w rejestrze AX. Znaczenie tych kodów podano poniżej.
Przerwanie 25h
Przerwanie 25h umożliwia wczytanie jednego lub większej liczby sektorów logicznych.
Parametry wejściowe:
AL numer napędu (0 = A, 1 = B, 2 = C itd.);
CX liczba czytanych sektorów;
DX numer pierwszego sektora;
DS:BX adres bufora w pamięci, w którym mają być umieszczone
odczytane dane.
Wartości zwracane:
(po powrocie z przerwania 25h i 26h zawartość rejestru stanu procesora umieszczana
jest również na stosie, skąd należy ją usunąć):
238 Anatomia PC
AX kod błędu;
CF 1 w przypadku wystąpienia błędu.
Przykład:
Przytoczony fragm ent kodu w języ k u Turbo C obrazuje w ykorzystanie funkcji INT 25h
do odczytania sektora 13 dyskietki umieszczonej w napędzie A: i um ieszczenia go w ta
blicy Sektor. (O dczyt sektorów za p o m o cą przerw ania 25h realizuje funkcja biblio
teczna abs r e a d Turbo C).
/* F u n k cja c z y ta s e k t o r lo g ic z n y 13 d y s k i e t k i w s t a c j i A:
używ ając p rz e r w a n ia 25h DOS
i u m ieszcza go w t a b l i c y S e k to r * /
#i n c l u d e < s t d i o . h>
# in c lu d e <dos.h>
u n sig n e d c h a r f a r S e k t o r [512];
unio n REGS RejWej, RejWyj;
s t r u c t SREGS R ejSeg;
v o id C z y t a j S e k t o r I n t _ 2 5 (void)
{
R e jS e g . ds=FP_SEG(Sektor) ; /* a d r e s b u f o r a */
R ejW ej. x . bx=FP^O FF(Sektor);
R ejW ej. h . a l= 0 x 0 0 ; /* napęd A: */
R ejW ej. x . cx=0x01; /* je d e n s e k t o r */
RejWej.x .dx=0x0d; /* pierwszy sektor nr 13 */
int8 6x (0x25, &Re jWe j ,¿¿RejWyj ,&Rej Seg) ;
asm pop ax; /* usuń zbędne słowo ze stosu */
i f ( (RejWyj.x .c f lag & 0x01) == 0x01)
printf ("\n Wystąpił błąd nr: %x\n",RejWyj.x .ax);
}
Przerwanie 26h
Przerwanie 26h um ożliw ia zapisanie jed n eg o lub większej liczby sektorów logicznych.
Wartości zwracane:
AX kod błędu;
CF 1 w przypadku wystąpienia błędu.
Przerwanie 21h
Z m ian a 1565 bajtu w pliku dos5net.txt zapisanym w katalogu c:\bin\dos5\doc za pom o
c ą funkcji IN T 25h i IN T 26h m oże przypraw ić o frustrację. A by to uczynić, należy
w ykonać przedstaw ione poniżej kroki:
• odszukać numer jednostki alokacji dla katalogu \bin. Przy obszernych katalogach
może okazać się konieczne wczytanie sektora tablicy alokacji;
Przytaczam tu tylko przykładowe funkcje przerwania 21h obsługujące dyski, gdyż nie
jest to książka poświęcona programowaniu jako takiemu, a raczej technicznej stronie
budowy komputera.
Funkcja Działanie
3Ch utworzenie pliku
3Dh otwarcie pliku
3Eh zamknięcie pliku
41h usunięcie pliku
39h utworzenie katalogu
3Ah usunięcie katalogu
3Bh przejście do innego katalogu
57h odczyt lub zmiana informacji o dacie i czasie modyfikacji pliku
240 Anatomia PC
Napędy dysków elastycznych obsługiwane są przez funkcje 00h-05h, 08h i 15h przer
wania 13h BIOS. Model AT wyposażony został w dwie dodatkowe funkcje, poświęco
ne kontroli „tożsamości” dyskietki w napędzie.
Po powrocie z przerwania należy sprawdzić bit przeniesienia (CF) rejestru stanu proce
sora. Ustawienie tego bitu świadczy o nieprawidłowym wykonaniu operacji. Symbo
liczny numer błędu umieszcza BIOS w rejestrze AH oraz w obszarze danych BIOS-u
pod adresem 0040:004lh.
Wartość Znaczenie
OOh operacja wykonana bezbłędnie
Olh zły numer funkcj i
02h nie znaleziono znacznika adresu
03 h dyskietka zabezpieczona przed zapisem
04h nie znaleziono sektora
08h błąd DMA
09h przepełnienie strony DMA
lOh błąd odczytu
20h błąd kontrolera
40h nie znaleziono ścieżki
8Oh brak reakcji napędu
Funkcja OOh
Działanie:
Funkcja wykonuje inicjalizację kontrolera, tj. sprowadza wewnętrzne rejestry kontrolera
i napędu do ściśle określonego stanu początkowego. Aktualnie wykonywana operacja
zostaje przerwana. Działanie funkcji nie dotyczy konkretnego napędu, ale kontrolera
i wszystkich do niego przyłączonych napędów.
Parametry wejściowe:
AH OOh;
DL OOh (dla kontrolera napędu dysków elastycznych).
Wartości zwracane:
AH kod błędu;
CF 1 w przypadku wystąpienia błędu.
Przykład:
mov ah,OOh ;funkcja 0
mov dl,OOh ;zawsze dla kontrolera napędu dyskietek
int 13h ;inicjalizacja kontrolera
Funkcja 01h
Działanie:
Funkcja odczytuje status ostatniej operacji. Odtwarza w rejestrze AH bajt statusu opisu
jący ostatnio przeprowadzoną operację bez względu na to, jak dawno się ona zakoń
czyła. Znaczenie kodów statusu podano na str. 164.
Parametry wej ściowe:
AH Olh;
DL OOh (dla kontrolera napędu dysków elastycznych).
Wartości zwracane:
AH kod statusu;
CF I w przypadku wystąpienia błędu.
Funkcja 02h
Działanie:
Odczytuje jeden lub kilka sektorów z dyskietki do bufora w pamięci. Zawartość
wszystkich odczytanych sektorów zapisywana jest do pamięci począwszy od podanego
w rejestrach ES:BX adresu, zamazując ewentualnie inne dane. Do obowiązków progra
misty należy zarezerwowanie odpowiedniej ilości wolnego obszaru pamięci.
Parametry wejściowe:
AH 02h;
AL liczba sektorów do przeczytania;
CH numer ścieżki;
242 Anatomia PC
CL numer sektora;
DH numer głowicy;
DL numer napędu (0 = A, 1 = B itd.);
ES:BX adres bufora na zawartośćprzeczytanych sektorów.
W artości zwracane:
AH kod błędu;
CF I w przypadku wystąpienia błędu.
Przykład:
/* Funkcja czyta sektor 5 ścieżki 0 dyskietki w stacji A
używając funkcji 2 przerwania 13h BIOS
i umieszcza go w tablicy Sektor */
#include <stdio.h>
finclude <dos.h>
Funkcja 03h
Działanie:
Funkcja ta jest dopełnieniem funkcji 02h, zapisującym dane do podanych sektorów
dysku. Należy zwrócić uwagę na to, że jako sektor zapisywane są zawsze pełne 512-
bajtowe bloki pamięci (począwszy od adresu podanego w rejestrach ES:BX) - także
wtedy, gdy nie zawierają one wyłącznie danych umieszczonych tam przez programistę.
Param etry wejściowe:
AH 03 h;
AL liczba sektorów do zapisu;
CH numer ścieżki;
CL numer sektora;
DH numer głowicy;
DL numer napędu (0 = A, 1 = B itd.);
ES:BX adres bufora zawierającego zapisywane dane.
Kontroler napędu dysków elastycznych 243
Wartości zwracane:
AH kod błędu;
CF l w przypadku wystąpienia błędu.
Funkcja 04h
Działanie:
Funkcja ta sprawdza poprawność kodów CRC sektora, przeprowadzając czytanie próbne.
Druga część działania funkcji, polegająca na odczytaniu sektora i porównaniu go z za
wartością obszaru wskazywanego przez ES:BX, jest dziedzictwem z czasów IBM PC
i nie jest obecnie implementowana.
Parametry wejściowe:
AH 04h;
AL liczba sektorów do weryfikacji;
CH numer ścieżki;
CL numer sektora;
DH numer głowicy;
DL numer napędu (0 = A, 1 = B itd.);
ES:BX adres obszaru pamięci zawierającego dane do porównania.
Wartości zwracane:
AH kod błędu;
CF 1 w przypadku wystąpienia błędu.
Funkcja 05h
Działanie:
Funkcja ta służy do formatowania ścieżki. W pamięci należy przygotować odpowiednie
bloki danych, opisujące oddzielnie każdy sektor. Funkcja umieszcza je w polu identyfi
katora (ID) danego sektora. Stanowią one metrykę adresową, umożliwiającą późniejsze
odnalezienie właściwego sektora. Blok danych składa się z czterech bajtów, które ozna
czają kolejno:
bajt 0 numer ścieżki,
bajt 1 numer głowicy,
bajt 2 numer sektora,
bajt 3 liczbę bajtów w sektorze:
0 -1 2 ,
1 - 256,
2 = 512,
3 = 1024.
Parametry wejściowe:
AH 05h;
244 Anatomia PC
#include <stdio.h>
#include <alloc.h>
#include <dos.h>
łdefine dens_256 1
struct BlokForm
{
unsigned char sc; /* ścieżka */
unsigned char st; /* strona */
unsigned char se; /* sektor */
unsigned char dl; /* liczba bajtów/sektor */
In
struct BlokForm far * WskBlokForm;
union REGS RejWej, RejWyj;
struct SREGS RejSeg;
Funkcja 08h
Działanie:
Funkcja zwraca informację o zainstalowanym napędzie, ale zupełnie lekceważy aktu
alnie stosowany nośnik. Oznacza to na przykład, że napęd HD (1.2 MB) z umieszczoną
w nim dyskietką 360 kB melduje się jako typ 2 (tak samo identyfikowany jest napęd
pusty). Elementarne wiadomości o napędzie można odczytać wprost z rejestrów CX
i DX. Dokładne dane znajdują się w obszarze danych DOSpocząwszy od adresu
0050:0022h. Na pełną tablicę danych wskazuje teżpopowrocie zfunkcji 08h para
rejestrów ES:DI.
Parametry wejściowe:
AH 08h;
BH 0.
Wartości zwracane:
BL typ napędu:
0 = dysk twardy,
1 - 360 kB,
2 - 1.2 MB,
3 - 720 kB,
4= 1.44 MB;
CH liczba ścieżek pomniejszona o 1;
CL liczba sektorów na ścieżkę pomniejszona o 1;
DH liczba głowic napędu pomniejszona o 1;
DL numer napędu (0 = A, 1 = B itd.);
ES:DI wskaźnik do tablicy informacyjnej;
CF 1 w przypadku wystąpienia błędu.
Budowa tablicy inform acyjnej:
Bajt 0:
Bajt 1:
Bajt 2:
Bajt 3:
X X X X X X bit 1 bit 0
Bajt 4:
Bajt 5:
Bajt 6:
X X X X X X X X
Bajt 7:
Bajt 8:
Bajt 9:
Bajt 10:
Funkcja 15h
Działanie:
Model AT wyposażono w dwie dodatkowe funkcje, robiące użytek z końcówki 34-tej
przewodu łączącego kontroler z napędem. Można na tej podstawie ustalić, czy od czasu
poprzedniej operacji dyskowej otwierane były drzwiczki napędu. Jeżeli w komputerze
AT wydamy dwa razy pod rząd polecenie dir a: pozostawiając dyskietkę w napędzie,
drugie polecenie odczyta zawartość katalogu z wewnętrznego bufora DOS. Otwarcie
i zamknięcie drzwiczek wymusi powtórne przeczytanie dyskietki - system zakłada, że
nośnik został wymieniony. Nie wszystkie modele napędów wystawiają odpowiedni
sygnał, ponadto nie każdy BIOS obsługuje tę funkcję.
Funkcja 16h
Działanie:
Funkcja informuje, czy od czasu ostatniej operacji dyskowej nastąpiło otwarcie i zam
knięcie drzwiczek napędu. Jeśli tak, to należy zakładać, że wymieniono dyskietkę
w napędzie.
Param etry wejściowe:
AH 16h;
DL numer napędu (0 = A, 1 = B itd.).
W artości zwracane:
AH numer błędu lub następująca informacja:
OOh = nie wymieniono dyskietki,
Olh = nieprawidłowy numer napędu,
06h = wymieniono dyskietkę;
CF 1 w przypadku wystąpienia błędu (AH zawiera numer błędu).
Nazwa „kontroler” jest w tym wypadku w pełni uzasadniona, gdyż układ ten jest małym
komputerem (mikrokontrolerem) wyposażonym we własny procesor (zwykle mPD765
w PC/XT lub 82072 w PC/AT) i wykonującym własny program. Kontroler napędu dys
ków elastycznych pośredniczy między magistralami systemowymi a maksymalnie czte
rema napędami dysków elastycznych. Jest on zwykle montowany na karcie umieszcza
nej w jednym z gniazd rozszerzenia i tym samym ma dostęp do magistral systemowych.
Istnieją również rozwiązania płyt głównych ze zintegrowanym na nich kontrolerem.
Powszechnie stosowana jest metoda zapisu MFM, która, upraszczając zagadnienie, daje
podwójną gęstość zapisu w porównaniu do systemu FM i praktycznie go wyparła.
Skupmy przez chwilę naszą uwagę na operacji zapisu. Do zadań kontrolera należy
wówczas:
Kontroler może być uznany przez system za nadrzędny lub podrzędny. Jeden kontroler
w systemie jest zawsze nadrzędny. Standardowo do przesyłania danych między pamię
cią i kontrolerem wykorzystywany jest kanał 2 DMA (dla obydwu typów konfiguracji).
Kontroler sygnalizuje zakończenie transmisji przerwaniem sprzętowym IRQ6. Przerwa
nie to obsługiwane jest standardowo przez procedurę obsługi przerwania OEh BIOS-u.
Rejestr wyjściowy
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO
Tabela 5. t
Porty udostępniające rejestry kontrolera napędu dysków elastycznych
Rejestr stanu
bit 7 X X X X X X X
X X X X X X bit 1 bitO
Napędy dysków o wysokiej gęstości {HD - High Density) 1,2 MB i1,44 MB mają
podwyższoną do 360 obr/min prędkość obrotową. Zwykła dyskietka360 kB w swoim
rodzimym napędzie obraca się z prędkością 300 obr/min. Przy efektywnej długości
sektora i szczeliny międzyscktorowej wynoszącej około 800 bajtów daje to prędkość
transmisji 250 kbit/s. Ta sama dyskietka umieszczona w napędzie 1,2 MB jest odczyty
wana z prędkością 300 kbit/s. Podobne zjawiska występują w napędach 3.5-calowych
(1,44 MB). Dla prawidłowej pracy kontrolera należy zawsze, testując rodzaj napędu
i aktualnego w nim nośnika, zapisywać właściwe wartości w rejestrze konfiguracyjnym.
Bajt 1:
Bajt 2:
Bajt 3:
Bajt 4:
X X X X X X X bitO
Bajt 6:
011 = 1 kB,
• t •
111 - 16 kB.
Bajt 7:
Bajt 8:
bity 7-0 długość szczeliny Z5. Zwykle bajt zawiera sygnaturę 01000110,
oznaczającą szczelinę 80-bajtową.
Bajt 9:
Faza końcowa
Kontroler dysponuje czterema rejestrami statusowymi STATUS-O-STATUS-3 (nie
mylić z rejestrem stanu dostępnym przez port 3F4h/374h), które dostępne są do wglądu
dla procesora w fazie końcowej. Zależnie od rodzaju zrealizowanego rozkazu niosą one
też inne informacje.
Bajt 1 STATUS-0
Bajt 2 STATUS-1
Bajt 3 STATUS-2
Bajt 4 ŚCIEŻKA
Bajt 5 GŁOWICA
Bajt 6 SEKTOR
Bajt 7 ROZMIAR
W naszym przykładzie przez port danych zwracany jest ciąg siedmiu bajtów niosących
informacje o zakończonej operacji. Bez względu na ich ewentualne wykorzystanie do
obsługi mogących wystąpić sytuacji wyjątkowych, należy odebrać z portu danych
wszystkie 7 bajtów. Standardowa procedura obsługi przerwania IRQ6 po każdej ope
racji dyskowej odbiera automatycznie z portu danych do siedmiu bajtów i umieszcza je
w obszarze informacyjnym BIOS-u począwszy od adresu 0040:0042h.
W poniższym opisie objaśnienie znaczenia danej pozycji bitowej rejestrów odnosi się
do stanu, w którym jest ona ustawiona (ma wartość logicznej jedynki). Zero logiczne na
danej pozycji oznacza sytuację odwrotną, chyba że podano inne wyjaśnienie.
Bajt 1: STATUS-0
Bajt 2: STATUS-1
Bajt 3: STATUS-2
Bajt STATUS-3, nieobecny w fazie końcowej rozkazu RS, występuje w fazach końco
wych innych rozkazów. Odzwierciedla on stan niektórych linii przewodu połączenio
wego napęd-kontroler.
Bajt STATUS-3
bit 7 linia FSIG (Fault), istotna tylko dla kontrolera mPD765, poza tym
stale 0;
bit 6 linia WP (Write Protected) - dyskietka zabezpieczona przed
zapisem;
bit 5 linia RDY (Ready) - gotowość napędu, istotna tylko dla kontrolera
mPD765, poza tym stale 1;
bit 4 linia TRKO (Track 0), 1 = osiągnięto ścieżkę zerową;
bit 3 linia DSLW (Double Side), 1 = napęd jest dwustronny;
bit 2 lima IIDSEL (HeadSelect):
I —wybrano głowicę nr 1,
0 = wybrano głowicę nr 0;
bity 1-0 linie D S1 i DSO (Drive Select) - wybór napędu:
00 = A,
01 = B ,
10 = C,
II = D .
Bajt 4: Ścieżka
Bajt 5: Głowica
X X X X X X X bitO
Bajt 6: Sektor
111 = 16 kB.
Obecność bajtu w porcie danych (przy odczycie danych z dysku) lub żądanie umiesz
czenia tam bajtu (przy zapisie danych na dysk) wyzwala przerwanie sprzętowe IRQ6,
nie pobudzając jednocześnie linii DREQ2 kontrolera DMA. Procedura obsługi przer
wania IRQ6 musi umieć obsłużyć żądanie kontrolera (przesłać bajt danych z portu do
pamięci lub odwrotnie). Zakończenie tak zmodyfikowanej fazy przekazywania danych
również powoduje wygenerowanie przerwania IRQ6, sygnalizującego obecność w por
cie danych ciągu rejestrów statusowych (oraz innych) i kończącego rozkaz.
• odczytania bajtu, gdy bit 6 rejestru stanu jest ustawiony (żądany kierunek
transmisji kontroler —» CPU);
• zapisania bajtu, gdy bit 6 rejestru stanu jest wyzerowany (żądany kierunek
transmisji CPU —> kontroler).
Rozkaz STOD
Bajt 1:
0 0 0 0 0 0 1 1
Bajt 2:
Bajt 3:
Najprostszą, ale i najmniej efektywną metodą kontroli jest tzw. kontrola parzystości.
Każdy bajt danych otrzymuje dodatkowy, dziewiąty bit informujący o tym, czy liczba
jedynek w bajcie jest parzysta lub nieparzysta (w zależności od umowy). Łatwo zauwa
żyć, że w najbardziej niesprzyjających warunkach można, bazując jedynie na informacji
o parzystości, cały zanegowany bajt (przekłamanie na wszystkich pozycjach) uznać za
poprawny. Podobnie ma się sprawa z przekłamaniem każdej parzystej liczby jedynek.
W związku z tym opracowano wiele innych, bardziej efektywnych sposobów rozwiąza
nia tego problemu.
Magnetyczne systemy cyfrowego zapisu informacji posługują się generalnie tzw. koda
mi CRC (ang. Cyclic Redundancy Check).
Tak samo można postępować z liczbami w systemie binarnym. Nie musimy tu obliczać
częściowych ilorazów - wyniki mogą być tylko dwa: dzielna jest większa od dzielnika i
częściowy iloraz równa się 1, lub też dzielnik jest większy od dzielnej, a iloraz wynosi
zero (dzielenie jest tu zastąpione przez porównywanie).
Przykład:
324d : 19d = lOlOOOlOOb: 1001 l b= 17d= 10001b, reszta 1
000010
00000
00101
00000
01010
00000
10100
10011
X y x XOR y
0 0 0
0 i 1
1 0 1
1 1 0
001110
000000
11101
10011
011100
10011
011110
10011
Otrzymane wyniki będą się naturalnie różnić, ale nie należy zapominać, że operujemy
inną arytmetyką. Kody kontrolne CRC wykorzystują właśnie reszty z takiego dzielenia.
Ilorazy nadają się do tego celu gorzej, gdyż ich długość jest zmienna i silnie zależy od
długości dzielnej. Reszta musi krótsza od dzielnika - gdyby była większa, można
byłoby przecież podzielić jeszcze raz i zwiększyć iloraz.
Pod pojęciem sumy kontrolnej danego ciągu danych w kodzie CRC rozumiemy więc
resztę z dzielenia tego ciągu przez pewien określony dzielnik. Oczywiste jest, że układy
wytwarzające sumę kontrolną CRC podczas zapisu posługują się takim samym dziel
nikiem, jaki będzie później użyty przez układy odczytujące do kontroli poprawności
danych.
264 Anatomia PC
Dowolnie długi ciąg danych zabezpieczanych przy użyciu kodu CRC traktuje się jako
dzielną. Ustalony z góry dzielnik binarny nazywany jest też generatorem kodu. Reszta
z powyższego dzielenia (iloraz jest ignorowany) jest właśnie poszukiwanym kodem
CRC, a dokładniej mówiąc - sumą kontrolną w kodzie CRC.
512-bajtowy blok danych sektora dyskietki zabezpieczany jest przez dopisanie w polu
CRC-2 dwóch bajtów zawierających 16-bitowy kod CRC tego bloku. Kontroler odczy
tując tak zapisaną informację korzysta z właściwości arytmetyki modulo 2 - zamiast
obliczać sumę kontrolną dla bloku danych i porównywać ją z zawartością pola CRC-2,
oblicza sumę kontrolną dla całych 514 bajtów (dane + CRC). Jeżeli nie nastąpiło
przekłamanie w polu danych, spodziewany jest wynik równy zero. Metoda ta jest
szybsza, a technicznie łatwiejsza w realizacji.
Obsługa dysku twardego 265
Można śmiało powiedzieć, że udział dysku twardego w pracy całego systemu jest nie
mniejszy od wkładu, jaki wnosi sam procesor. Pakiety oprogramowania o monstrual
nych rozmiarach tylko dlatego mogą znaleźć nabywców, że od czasów wprowadzenia
na rynek pierwszego dysku twardego o pojemności 10 MB (w cenie 4000 dolarów)
wiele się w tej dziedzinie zmieniło.
Przez wiele lat dominował standard ST412/506, którego nazwa wywodziła się od pier
wszych modeli tego systemu. W miarę upływu czasu i wzrostu wymagań stawianych
dyskom twardym, zwłaszcza w dziedzinie zastosowań profesjonalnych, opracowane zo
stały nowocześniejsze systemy (IDE, ESDI, SCSI). Jednemu z nich - standardowi IDE,
nazywanemu również AT-BUS - udało się zdominować również rynek komputerów
powszechnego użytku. Wszystko wskazuje na to, że został on wyparty przez standard
Enhanced IDE (EIDE), który stanowi jego rozwinięcie.
wdowa kontrolera
W obudowie klasycznego dysku twardego zintegrowane są jedynie układy bardzo ściśle
współpracujące z elementami wykonawczymi sterowania części ruchomych napędu
dysku, jak silniki krokowe i liniowe, oraz systemy bezpośrednio związane z głowicami
odczytująco-zapisującymi. Skomplikowane zadanie sterowania tymi elementami i ob
róbkę danych przejmuje kontroler dysku. Jest to układ podobny do kontrolera napędu
dysków elastycznych.
Każdy kontroler zawiera dodatkowo pamięć mogącą pomieścić dane jednego pełnego
sektora wraz z tzw. kodami ECC (ang. Error Correction Code), nazywaną buforem
sektora. Systemy kontroli i korekcji ECC są również rozwiązaniami sprzętowymi.
T M FM
0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0
KOD
RLL 2,7
ZEGAR
RLL 2,7
DANE
RLL 2,7
\ RLL 2,7
Na ciąg wyjściowych impulsów w systemie MFM (3) składała się, jak pamiętamy z roz
działu 5, suma impulsów zegarowych Z (2) oraz impulsów D, pochodzących od stru
mienia danych (1). Obowiązywała przy tym zasada, że składowe D reprezentowały
ustawione bity danych, a składowe Z - tylko te impulsy zegara, które wypadają po
między dwoma kolejnymi wyzerowanymi bitami danych.
$
268 Anatomia PC
Tabela 6.f.
Tablica przekodowań systemu RLL(2,7)
Rysunek 6.2.
Idea przeplotu
270 Anatomia PC
Położenie partycji na dysku fizycznym określone jest jednoznacznie przez podanie jej
cylindra początkowego oraz liczby cylindrów, na które się rozciąga. Tego rodzaju dane,
obejmujące wszystkie zadeklarowane partycje, przechowywane są w tablicy partycji
(ang, partition table). Program format.com korzysta z tej tablicy, ale nie tworzy jej ani
nie modyfikuje. Musi ona być zapisana na dysku przed przystąpieniem do
formatowania wysokiego poziomu. Tablicę partycji generuje np. program fdisk.com.
Proszę zwrócić uwagę na fakt, że powtórne formatowanie dysku twardego (celowe lub
niezamierzone) nie niszczy zapisanej na nim informacji, a jedynie jej logiczną strukturę.
Nie oznacza to bynajmniej, że odzyskanie danych jest sprawą banalną, szczególnie gdy
były one rozproszone na całym dysku. Niszczona jest informacja o strukturze danych
zawarta w FAT, dlatego przechowywanie „rezerwowej” kopii FAT w dodatkowym
miejscu dysku1pozwala odzyskać dane po formatowaniu.
Sektor
D2
S D3 ID ECC-1 Z2 S D4 DANE ECC-2 Z3
Z porównania rysunków 5.2 i 6.3 wynika, że ścieżka dysku twardego zbudowana jest
podobnie do ścieżki dyskietki. Uwagę zwraca jedynie kilka szczegółów. Znacznemu
zmniejszeniu uległy rozmiary odstępów (szczelin) między elementami ścieżki (sekto-
rami i znacznikami EOT i BOT). Szczeliny te miały za zadanie kompensację wahań
prędkości obrotowej dyskietki. Redukcja ich wielkości stała się możliwa dzięki lepszej
stabilizacji prędkości wirowania dysku, co z kolei ma swoje „uzasadnienie” w elektro
nicznej regulacji obrotów silnika oraz braku tarcia między głowicami a powierzchnią
nośnika magnetycznego. Kolejną różnicę widać wyraźnie w czwartym bajcie metryki
adresowej ID, oznaczonym przez Z. Stanowi on tzw. znacznik sektora, a jego rola omó-
wiona zostanie w następnym punkcie tego rozdziału.
272 Anatomia PC
Tabela 6.2.
Organizacja danych na ścieżce dysku twardego
Fizycznym nośnikiem informacji w dysku twardym jest, jak wiadomo, zespół koncen
trycznie osadzonych krążków (płyt) pokrytych warstwą magnetyczną. Pomimo wyra
finowanej technologii produkcji tej części napędu, do dnia dzisiejszego nie jest możliwe
uzyskanie absolutnie idealnych właściwości magnetycznych materiału pokrycia. Już
mikroskopijnej wielkości defekt niszczy jeden bit informacji, co z kolei eliminuje cały
sektor.
T
Tak więc ustawienie bitu 0 znacznika sygnalizuje uszkodzenie danego sektora. Jeżeli
uszkodzona jest cała ścieżka, a kontroler nie był w stanie przydzielić dla niej „zastępst
wa”, ustawiany jest bit 1. Odpowiednio duża przestrzeń rezerwowa dysku pozwala kon
trolerowi zastąpić całą uszkodzoną ścieżkę. Sektory uszkodzonej ścieżki mają wtedy
ustawiony bit 2 znacznika, a pierwsze trzy bajty pola ID wskazują nie na ścieżkę aktu
alną, lecz na zapasową. Ścieżka uznana za zastępczą posiada ustawiony bit 3 znacznika
Z.
oznaczenie go jako zły stanowi nieco gorszą alternatywę, gdyż zmniejsza pojemność
dysku. Niektóre kontrolery „profilaktycznie” formatują w tym celu o jeden sektor wię
cej na każdej ze ścieżek (zwykle 18 zamiast 17 lub 27 zamiast 26). Dodatkowe sektory
nie są w normalnych warunkach wykorzystywane i oczekują w rezerwie. Pozwala to na
eliminację pojedynczych sektorów ścieżki bez utraty pojemności.
Widzimy więc, że niewielkie błędy mogą być stosunkowo łatwo likwidowane przez
kontroler. Uszkodzenia obejmujące więcej niż jeden sektor nie mogą być skompenso
wane w ramach tej samej ścieżki. Kontroler oznacza w takim przypadku całą ścieżkę
jako uszkodzoną, a jako zastępczą wyznacza najwyższą z pozostałych dostępnych ście
żek. Jej metryki adresowe (cylinder-głowica-sektor-znacznik) odkładane są we wszy
stkich polach ID ścieżki uszkodzonej, przy czym ustawiony zostaje bit 2 znacznika.
t
Znany jest też powszechnie efekt stopniowego zaniku namagnesowania sektorów pod
dawanych wyłącznie odczytowi. Najbardziej klasycznym tego przykładem jest sektor
ładujący, dla którego już po kilku latach mogą wystąpić pojedyncze błędy odczytu.
ścieżki. Korekcyjne właściwości kodu ECC nie są brane pod uwagę. W ten spo
sób mogą być zlikwidowane błędy wywołane zmianą wymiarów powierzchni
dysku pod wpływem różnicy temperatur w stosunku do momentu formatowania;
• krok szósty: kontroler realizuje osiem kolejnych prób odczytu z wykorzystaniem
strategii mikrokroków, a odczyt odbywa się z udziałem kodów ECC.
Realizacja powyższego algorytmu jest naturalnie przerywana, jeśli tylko uda się od
czytać dane z sektora.
Metodyka korekcji błędów pozycjonowania nie jest aż tak rozbudowana, jak w powyż
szym opisie. Proszę zauważyć, że błędem pozycjonowania w rozumieniu kontrolera
może być zarówno brak pod głowicą jakiejkolwiek metryki adresowej, jak i odczytanie
metryki niezgodnej z oczekiwaną. W pierwszym przypadku przyczyną jest przeważnie
ustawienie głowic w położeniu międzyścieżkowym, które likwiduje pojedyncza kalibra
cja napędu. W drugim przypadku kontroler przeprowadza zwykle kilkakrotną kalibrację
i ponawia próbę odczytu.
Standard AT-BUS
Panujący powszechnie jeszcze kilka lat temu standard ST412/506 został wyparty przez
nowy model złącza, tj. AT-BUS (inaczej IDE).
dził wreszcie do sytuacji, że opłacalnym stało się wyposażanie każdego dysku twardego
we własny, ściśle do niego dopasowany kontroler. Efektem ubocznym jest skrócenie
drogi wszystkich sygnałów.
Parametry dysków tego nowego systemu mieszczą się pomiędzy ST412/506 a mode
lami SCSI i ESDI. Ceny napędów IDE/AT kształtują się natomiast poniżej grupy SCSI
i wykazują stałą tendencję spadkową, a różnorodność oferowanych modeli pozwala
zaspokoić wszelkie gusty.
Stosunkowo mało popularny system ESDI stosuje rozwiązanie pośrednie, tzn. separator
danych montowany jest w obudowie napędu, a reszta sterownika na dodatkowej karcie.
AT-BUS jako złącze jest strukturą logiczną. Standard IDE wywodzi się od ST412/506
i w pełni odwzorowuje jego rejestry sterujące. Akceptowane są więc wszelkie polecenia
wysokiego poziomu typu formatuj ścieżkę lub pisz sektor.
To, co w systemach ST412/506 i ESDI określane było mianem złącza, tj. fizyczne
połączenie kontrolera i napędu wraz z określeniem znaczenia poszczególnych linii, tutaj
nie istnieje z logicznego punktu widzenia. Praktycznie każdy model dysku IDE ma inne
parametry, do których dostosowany jest inny kontroler i nie może być mowy o jakim
kolwiek standardzie na tym odcinku.
Niektóre płyty główne wyposażone są już w ten układ. Jedyne co należy wtedy zrobić,
to połączyć 40-żyłowym przewodem dysk twardy z odpowiednim gniazdem na płycie.
W pozostałych przypadkach stosuje się Host-Adapter w formie karty rozszerzającej,
pełniącej zwykle inne dodatkowe funkcje jak np. kontrolera dyskietek lub portów
szeregowych i równoległych (Karta Multi I/O).
Standard IDE dopuszcza obsługę dwóch dysków twardych. Jeden z nich musi być
wtedy oznaczony jako Master, a drugi jako Slave. Ustaleń tych dokonuje się za pomocą
zwór konfiguracyjnych, którymi powinien dysponować każdy dysk IDE.
278 Anatomia PC
Rysunek 6.4. DO - D7
Połączenie
dysku IDE A 0-A 2
z szynami PC
IOR BUFORY
IOW (IN W E R T E R Y )
l/O C H R D Y DYSK TW ARDY
A T - BUS
"host adapter”
D8 - D16
DACK/7
DROn
IRQ
l/O CS16
Master Slave
Rysunek 6.6.
M/S [• • M/S
Rozmieszczen ia M/S • • M/S
linii w złączu key key
dysk-Host -RESET • • GND -RESET • • GND
DD7 • • DD8 DD7 • • DD8
Adapter
DD6 • * DD9 DD6 • • DD9
DD5 • • DD10 DD5 • • DD10
DD4 • • DD11 DD4 • • DD11
DD3 • 9 DD12 DD3 * * DD12
DD2 9 9 DD13 DD2 • • DD13
DD1 9 9 DD14 DD1 • • DD14
DDO 9 9 DD15 DDO • • DD15
GND 9 key GND • key
DMARQ 9 9 GND DMARQ • • GND
-DIOW 9 9 GND -DIOW • • GND
-DIOR 9 9 GND -DIOR • • GND
IORDY 9 9 SPSYNC IORDY 9 9 SPSYNC
-DMACK 9 9 GND -DMACK 9 9 GND
INTRQ 9 9 -IOSC16 INTRQ 9 9 -10SC16
DA1 9 9 -PD1AG DA1 9 9 -PDIAG
DAO 9 9 DA2 DAO 9 9 DA2
-CS t Fx 9 9 -CS3F* -CS1FX 9 9 -CS3FX
-DASP 9 9 GND -DASP 9 9 GND
+5V (logie) 9 9 +5V (motor)
GND 9 9
Tabela 6.3:
Znaczenie linii w złączu dysk-host adapter
Jak widać, większość linii stanowi przedłużenie magistrali zewnętrznej PC, Zaślepiona
końcówka 20 ma stanowić blokadę uniemożliwiającą omyłkowe odwrócenie wtyku.
Obsługa dysku twardego 281
• DASP i PDIAG: obie linie służą wzajemnej komunikacji między Masteri i Slave,
ale jedynie podczas inicjalizacji. Również te sygnały nie są niezbędnie konieczne
i nie zawsze występują.
Rejestry kontrolera AT-BUS skupiają się wokół adresów bazowych: lFOh i 3F6h. CPU
może osiągnąć każdy z nich programując stan linii adresowych ADO, AD2 oraz selek
cyjnych C Slfx, CS3fx. Dane dotyczące poszczególnych rejestrów grupy AT-TASK-
FILE zebrane zostały w tabeli 6,4.
282 Anatomia PC
Tabela 6.4,.
Rejestry sterujące standardu IDE
n
Zawartość tych rejestrów jest modyfikowana przez kontroler zgodnie z aktualnym poło
żeniem głowic i może być odczytywana przez CPU.
bit 7 równy 1;
bity 6-5 rozmiar sektora, 512B jest zakodowane jako 01;
bit 4 adres napędu:
1 = Slave,
0 = Master;
bity 3-0 kodowany binarnie numer głowicy:
0000 = głowica 0;
0001 = głowica 1;
■ • ■
bit 7 1 - sygnał zajętości (BSY, Busy); jak długo bit ten jest ustawiony,
Host nie ma dostępu do żadnego z rejestrów grupy Task-Fiłe;
Obsługa dysku twardego 285
Tabela 6.5.
Rozkazy systemu IDE
Recalibrate 0 0 0 1 X X X X — — — —
DRV
sRead Sector PIOR 0 0 1 0 0 0 I_J R — • • • 9
t •
[Seek 0 1 1 1 X X X X —
m • 9
286 Anatomia PC
Write PIOW 1 0 0 0 1 0 1
Multiple
Właściwości tych nie posiada alternatywny rejestr stanu. Jego odczytanie nie ma wpły
wu na żądanie obsługi IRQ.
Y
Ustawienie bitu 2 wprowadza podłączone napędy w stan tzw. Software-Reset. W stanie
b
tym nie mogą być wykonywane żadne polecenia (napędy nie reagują). Dopiero wyzero
wanie tego bitu przywraca stan gotowości napędów.
fazę końcową. Ustawienie bitu 1 blokuje mechanizm przerwań; jedyną formą komu
nikacji staje się wówczas polling, tj. CPU odpytuje w pewnych odstępach czasowych
rejestr stanu.
bit 7 nieokreślony;
bit 6 bramka zapisu: O = otwarta (zapis trwa), 1 = zamknięta;
bity 5-2 aktualnie pracująca głowica [15 - numer głowicy]:
0000 - głowica 15,
0001 = głowica 14,
0010 = głowica 13,
1111= głowica 0;
bit 1 napęd 1:
0 = aktywny,
1 = oczekuje;
bitO napęd 0:
0 = aktywny,
1 = oczekuje.
-IOW
min. 40ns
DATA 0-DATA 7
min. 10ns
Rysunek 6.8.
£
KrCPU odbiera
dane
od kontrolera
•s J
dysku IDE
Rysunek 6.9.
L
C.A
CPU wysyła
J-
dane
do kontrolera
dysku IDE
:v
M-
<%
*S
-L
• ¿s
V.
Faza końcowa
Kontroler melduje o zakończeniu operacji zgłoszeniem przerwania IRQ 14. Do dyspo
zycji CPU stoją również dane dodatkowe(umieszczone w rejestrach stanu i błędów)
informujące o przebiegu realizacji ostatniego rozkazu.
290 Anatomia PC
Rysunek 6.10.
CPU odczytuje
rejestr grupy
ADR0-ADR2
X
Task-File
~CS1fx,~CS3fx
HOR
DATA0-DATA7
typ. 55ns |* min. 20ns
Wymiana danych kanałem DMA miała miejsce w dyskach modeli XT, PC-AT posługuje
się przerwaniami. Dane sektora (z wyjątkiem kodów ECC) przesyłane są w porcjach po
2 bajty, bowiem port danych jest 16-bitowy. Wyjątek stanowią kody ECC transporto
wane bajt po bajcie poprzez młodszą połowę portu danych.
Procedura INT 76h obsługująca to przerwanie musi umieć odróżnić, czy kontroler dys
ponuje danymi, czy też na nie czeka lub czy chodzi tu o fazę końcową rozkazu. Infor
macja zawarta w rejestrach stanu i błędów kontrolera pozwala na jednoznaczną diagno
zę. Odczyt rejestru stanu (lf7h) automatycznie kasuje żądanie przerwania. Jeżeli jakieś
względy dyktują utrzymanie w mocy zgłoszenia, należy posłużyć się alternatywnym
rejestrem stanu (3f6h).
Jeżeli zaprogramowany został odczyt większej liczby sektorów, ustawiany jest ponow
nie bit 7, a zerowany bit 3 i cykl powtarza się.
Ustawienie bitu 1 w kodzie rozkazu (patrz poniżej) oznacza tzw. długi odczyt. Oprócz
512 bajtów z pola danych, do portu lFOh wyprowadzane są również bajty kodu ECC.
Kontroler nie przeprowadza w tym przypadku ani kontroli, ani korekcji danych sektora.
Dane przekazywane są w formie 2-bajtowych słów (port lFOh jest 16-bitowy), a kody
ECC po jednym bajcie, młodszą połową portu.
Faza końcowa
Kontroler umieszcza w swoich rejestrach następujące informacje:
• Rejestr błędów (1F 1h):
Tabela 6.6.
Struktura bloku danych o dysku
49 7-0 zarezerwowane
50 4 1 zarezerwowane
15-8 czas trwania cyklu przesyłania danych w trybie PIO [ns] - wartość 0180h
5 1
oznacza, że dysk może pracować w trybie PIO 3 (patrz rysunek 6.14. - T0)
7-0 zarezerwowane
5 1
52 15-8 czas trwania cyklu przesyłania danych w trybie DMA [ns] (patrz rysunek
6 .1 5 .- T 0)
52 7-0 zarezerwowane
53 15-2 zarezerwowane
53 1 1 - dane zawarte w słowach 64—65 są dostępne
53 0 1 - dane zawarte w słowach 54-58 są dostępne
54 bieżąca liczba cylindrów ustawiona komendą Initialize Drive Parameters
(jeżeli nie jest używana domyślna geometria napędu powinien być ustawiony
bit 0 w słowie 53)
55 bieżąca liczba głowic ustawiona komendą Initialize Drive Parameters (jeżeli
nie jest używana domyślna geometria napędu powinien być ustawiony bit 0
w słowie 53)
56 bieżąca liczba sektorów na ścieżkę ustawiona komendą Initialize Drive
Parameters (jeżeli nie jest używana domyślna geometria napędu powinien
być ustawiony bit 0 w słowie 53)
57-58 bieżąca pojemność dysku w sektorach (jeżeli nie jest używana domyślna
geometria napędu powinien być ustawiony bit 0 w słowie 53)
59f 15-9 zarezerwowane
59 1 - komendy Read/Write Multiple są zaimplementowane
8
Faza końcowa
Kontroler umieszcza w swoich rejestrach następujące informacje:
Funkcje oszczędnościowe
Nowsze modele dysków twardych standardu IDE (AT-BUS) wyposażane są w układy
ograniczające zużycie mocy. Dotyczy to w szczególności dysków małych rozmiarów
(1" i 2.5") przeznaczonych do przenośnych komputerów, gdzie wysokość poboru prądu
z akumulatorów odgrywa kluczową rolę.
System automatyczny
Mechanizm automatycznej redukcji mocy jest trójpoziomowy i zawiera:
• poziom Idle 1;
• poziom Idle 2.
Jednostka dyskowa, która kończy wykonywanie rozkazu (a żaden nowy jeszcze nie
nadszedł) wpada automatycznie w stan Idle. Jeżeli w przeciągu kolejnych 20-50 ms
Host (PC) nadal nie przesyła żadnego polecenia, dysk przechodzi automatycznie w tryb
I d le l. Wysokość tego pierwszego opóźnienia wynika z czasu wykonania przez pro
cesor kontrolera fragmentu mikrokodu dotyczącego operacji przełączenia.
Po wejściu w fazę Idle l uruchamiany jest licznik czasu (Idle 2 Timer). Zwykle nasta
wiony jest on na 2 sekundy, ale wartość tą można zmienić modyfikując odpowiednią
pozycję w sektorze konfiguracyjnym dysku. Jeżeli upłynął ten czas, a Host nadal nie
wysłał rozkazu, układ przesuwany jest na poziom Idle_2.
Poziom Idle l oznacza przełączenie niektórych układów w stan niskiego poboru mocy.
W stanie tym dysk zdolny jest do natychmiastowej reakcji na rozkazy.
Zysk energii osiągany przez ten trójpoziomowy system automatycznej redukcji obcią
żenia zależy od przyjętej wartości czasu Idle 2 Timer oraz od stopnia wykorzystania
napędu. Jeżeli rozkazy nadchodzą częściej niż co 2 s - dysk w ogóle nie zdąży wejść
w fazę Idle_2.
Rozkazy specjalne
Poniższe rozkazy mogą wprowadzać dysk w jeden z opisanych powyżej poziomów
jałowych (Idle), ale i także w dodatkowe stany: czuwania (Stand By) i uśpienia (Sleep
Power Mode).
Stan uśpienia napędu można osiągnąć jedynie przez rozkazy specjalne. Dysk uśpiony
zatrzymuje silnik i blokuje swój interfejs, czyli nie reaguje na żadne rozkazy. Wyjście
z tego trybu osiągnąć można jedynie poprzez wywołanie jednej z form funkcji Reset:
• Software Reset,
• AT-Bus Reset,
• Power On Reset.
Tabela 6.7.
Rozkazy specjalne IDE
Jeżeli licznik nastawiony został na zero, dysk wchodzi natychmiast w fazę Stand By
Power Mode. Realizowany więc jest de facto rozkaz 0xE0.
Dysk wejdzie oczywiście również w ten tryb jeżeli upłynie czas zadeklarowany w licz
niku. Czas odliczany jest od momentu zakończenia wykonywania ostatniego z rozka
zów, który pozostawił dysk w trybie Idle Power Mode.
Dysk wchodzi w stan Idle i przebywa w nim tak długo aż minie czas nastawiony w SCR.
Wówczas dysk przechodzi w stan Stand By. Czas odliczany jest od momentu wydania
rozkazu 0xE3 lub każdego innego rozkazu, który pozostawił dysk w trybie Idle Power
Mode.
W rejestrze CLR 1) odczytać można też stan licznika czasu. Jeżeli zwracana jest war
tość zero, timer nie jest aktywny.
Rozkaz Sleep
Kod rozkazu IDE: 0xE6 lub 0x99.
Jeżeli licznik nastawiony został na zero, dysk wchodzi natychmiast w fazę Stand By
Power Mode. Realizowany więc jest de facto rozkaz 0xE0.
Dysk wejdzie oczywiście również w ten tryb jeżeli upłynie czas zadeklarowany w licz
niku. Czas odliczany jest od momentu zakończenia wykonywania ostatniego z rozka
zów, który pozostawił dysk w trybie Idle Power Mode.
Standard El DE
Standard AT-BUS zdominował w ciągu kilku ostatnich lat rynek komputerów klasy PC.
Jednak, w miarę rozwoju technologii, coraz dotkliwiej dają znać o sobie ograniczenia
tego systemu:
• ograniczona pojemność dysków (do 504 MB),
przy tym zgodność ze standardem IDE (dyski IDE powinny współpracować z Host
Adapterem EIDE, zaś urządzenia EIDE powinny współdziałać z Host Adapterem IDE).
Pojemność dysku
System operacyjny MS-DOS realizuje operacje dyskowe za pośrednictwem przerwania
INT13h. Jest to po prostu kanał komunikacyjny łączący DOS ze specjalizowanymi pro
cedurami BIOS-u. To właśnie one są bezpośrednimi wykonawcami operacji zleconych
przez DOS.
| G3 G2 G1 GO
• Sektorów: 63 (1...63)
Maksymalna liczba sektorów, która da się w ten sposób zaadresować wynosi więc:
Rysunek 6:11,
Adresowanie / / • ¿ w j w a v J '• y
r
j >: £ < &
z %i v
k
.
r
iM i i fi i i?i ! # s 1 13 y •.
/
V r
, k
rL '
JjJviv.
kontroler G2 : G1 GO
systemu IDE ii
0x1f3:
>ro ^ i*:*:*:■
i:¡:¿ ¿i viíiíSi t
ííiS
:•:'•>:• S
::!^
V .V /A V W /. v,
.!.:l:i:Ss,:;:i>: y y+yAo>£3#
I v ^ X Í Í ................................^ ••
A 'A V .W .1
CH: CYL9CYL8SEK5SEK4SEK3SEK2SEK'SEKd CL
--
• ’ ,V .%
v*, v /// rA v / ;AVfVAy
V . V . V . V . V . '. V . V . V . V . ' .
■^AV.^AWA^1
. -A W ^A V A .
Tabela 6.8.
Ograniczenia pojemności dysków
U w a g a 1:
Jeżeli BIOS komputera nie obsługuje trybu adresowania liniowego, ani rozszerzonego
modelu CHS, to potrzebny jest adapter EIDE z odpowiednim BlOS-em lub sterow
nikiem programowym.
U w a g a 2:
Przekroczenie granicy 504 MB zależy tylko od posiadanego oprogramowania. Dlatego
dysponując adapterem IDE i odpowiednim oprogramowaniem można zarządzać dys
kami EIDE o pojemności powyżej 504 MB.
Numer sektora
1 -255
~CS1 Fx
Rysunek 6.14. -CS3FX
Zależności DA2 - DAO
czasowe
w trybach PIO
DIOR
DIOW
Zaps
DD0-DD15
DD0-DD7
Odczyt
DD0-DD15
DD0-DD7
-IOCS16
Ï 5 Te
Ï7 Ï3 Î4
Ti T2 Ta Te
To
Tryby DMA
Komputery klasy XT do komunikacji z dyskiem wykorzystywały kanał DMA. Ze
względu na kompatybilność moduł DMA modelu XT znalazł się w modelu AT.
Przewaga trybów DMA nad PIO sprowadza się do wyłączenia transferu spod bezpo
średniej kontroli procesora —może on pracować zamiast nadzorować transmisję danych.
Niestety, w typowych komputerach klasy PC brakuje podstawowego ogniwa umożli
wiającego transmisję kanałami DMA - szybkiego, nowoczesnego kontrolera DMA.
Obsługa dysku twardego 307
• "l
Rysunek 6.15a. DMARQ
Zależności
czasowe
w trybach
-DMACK
Singleword-DMA
i*. 5.
-DIOR
-DIOW
&
i..*
' 't '
. -
Odczyt __
DD0-DD15
J ,
Zapis __
f i t
DD0-DD15
i
Te Tf
Tc Tg Th
^ ►*
Ti Td Tj
ns
*•*
y j
To
k W każdym kanale można włączyć dwa urządzenia IDE, które pracują jako Master lub
Slave. Jeżeli rozpatrzymy konfigurację przedstawioną na rysunku 6.16 (oczywiście
wszystkie urządzenia mogą być dyskami twardymi), otrzymamy następującą kolejność:
Anatomia PC
~IOR
-IOW
Odczyt __
DDO * DD15
Zapis
DD0-DD15
H
T
T D [ns] 215 - 80 -
Tj [ns] 20 5 -
Te [ns] *
150 -
60 T kt [ns] 50 V
50 ■
Tg [ns] 100 - 30 -
l u [ns] - 120 - 40
TH[ns] 20 - 15 -
Tlw [ns] - 40 •
40
TrybO Tryb 1
Transfer [MB/s] 4,16 13,33
\ r
Secondary Master Secondary Slave
i
Obsługa dysku twardego 309
Standard SDX
Czytniki płyt CD-ROM podłącza się dziś zwykle jako jednostkę Slave do magistrali
IDE (rysunek 6.17). Standard ten znalazł dzięki swej prostocie szerokie poparcie wśród
użytkowników i wyparł w międzyczasie systemy oparte o dodatkowe karty rozszerza
jące. Powoli znikają karty dźwiękowe z portem CD-ROM, a czytniki z interfejsem SCSI
nie cieszą się nadmierną popularnością.
Rysunek 6.1 Z
Tradycyjny HDD \ CD-ROM
sposób PC EIDE
(Master) EIDE / (Slave)
podłączenia
CD-ROMu
Mimo tej dominacji, bezpośrednie podłączanie urządzeń tego typu do magistrali EIDE
nie jest najlepszym rozwiązaniem. Obsługa CD-ROMu stanowi pokaźne obciążenie dla
CPU. Faktyczne zapotrzebowanie na pamięć podręczną przewyższa znacznie możłi-
wości statystycznego PC (optymalna wartość leży powyżej 64MB). Do tej samej magi
strali podłączone są dwa różne urządzenia: szybki dysk twardy i wolniejszy o rząd wiel-
kości napęd CD-ROM. Trudno tu mówić o harmonijnej współpracy.
310 Anatomia PC
Rysunek 6.18. t i
HDD« I Ifui
, . : P 2 «
Podłączenie Ou Si?
CD-ROMu PC EIDE
(Master) EIDE /Ot, <.- .k V
•fc
*
i t ’
przez magistralą
SDX
SDX
CD-ROM
SDX
i
j
312 Anatomia PC
Tabela 6.9.
Porównanie wydajności urządzeń A TAPI i SDX
W złącze SDX wyposażane mają być stopniowo wszystkie dyski twarde produkowane
przez firmę Western Digital. W chwili pisania tej książki na rynku pojawiają się już
pierwsze modele przygotowane do przejęcia nowych funkcji. Na listwie przyłącze
niowej występuje już wyraźnie wyodrębnione złącze SDX (na razie wykorzystywane
jako blok dla zwor konfiguracyjnych) - rysunek 6.19.
WDAĆ 34000
— i
5 Mechanizm daje duży efekt przyspieszający. Stosowany jest również w systemie DMA/33.
Obsługa dysku twardego 313
Nowy standard, mimo niewątpliwych zalet, próbuje zburzyć pewien ustalony porządek.
Czy ma szansę na przebicie się, pokaże czas. Praktyczne korzyści płynące z jego
ewentualnego upowszechnienia też są ograniczone. Dobrze napisane aplikacje
pracujące z CD dostosowane są do specyfiki tego medium i osiągają bardzo dobre
wyniki poprzez właściwe rozlokowanie danych na powierzchni płytki. Użytkownik
sięgający po cyfrową encyklopedię lub słownik w celu odszukania konkretnego hasła
nie może odczuć zbawczego działania pamięci cache, bowiem w chwili początkowej
jest ona przecież pusta. Wzrost szybkości działania będzie można zaobserwować
podczas uruchamiania obszernych programów instalacyjnych, które z natury rzeczy
sięgają wielokrotnie do danych rozproszonych po całym nośniku. Tylko kto codziennie
instaluje Windows NT?
Standard SCSI
Ogólny opis systemu
Magistrala SCSI (Smali Computer System Interface) stanowi ogólną koncepcję 8-bito-
wej szyny równoległej łączącej do 8 urządzeń, które mogą wymieniać między sobą
dane. Pojęcia SCSI nie należy utożsamiać wyłącznie z dyskami twardymi - system ten
może łączyć ze sobą bardzo różnorodne urządzenia: oprócz dysków twardych napędy
jednostek taśmowych (streamer), napędy CD-ROM, dyski WORM, skanery i wiele
innych.
Magistrala SCSI w swej dzisiejszej formie egzystuje w zasadzie od 1982. Od 1986 roku
uznana została jako standard przez ANSI (American National Standards Institute - Amery
kański Komitet Normalizacyjny) i wydana w formie dokumentu ANSI X 3.131-1986.
W ostatnich latach świat komputerów klasy PC odkrył dla siebie zalety tego systemu
i rozpoczęto niezbędne modyfikacje. Ponieważ działania komitetu normalizacyjnego
przebiegały opieszale, wielu producentów zaczęło wprowadzać na własną rękę swoje
„pseudo-standardy”. Doprowadziło to do sytuacji, że na rynku pojawiły się kontrolery
i urządzenia, które mimo iż reprezentowały „standard SCSI” nie mogły się ze sobą
porozumieć.
Kolejna próba normalizacji tego trudnego zagadnienia ujęta została w zespole doku
mentów X3T9.2/86-109 (szkic) i X3T9.2/85-52 (zestaw rozkazów), które stanowią de
facto (choć są jedynie tzw. propozycjami) od dawna oczekiwany standard S CS 1-2.
Należy jednak od razu dodać, że różni producenci skwapliwie wykorzystują fakt, że nie
wszystkie standardowe rozkazy muszą być implementowane. Tak więc mamy znowu
urządzenia, które - niby zgodne z normą SCSI-2 (w zakresie tych rozkazów, które im
plementują) - nie mogą współpracować z innymi, które zakładają szerszą gamę poleceń.
W opracowaniu znajduje się projekt kolejnej normy, SCSI-3. Magistrala tego nowego
standardu będzie miała prawdopodobnie szereg dodatkowych możliwości:
• nowe rozkazy,
• obsługa większej liczby urządzeń (SCSI-2 tylko 8),
• dłuższe dopuszczalne przewody połączeniowe,
• dodatkowe, opcjonalnie wyjście na światłowód.
W tabeli 6.10. zebrane zostały rozkazy systemu SCSI. Według oryginalnej specyfikacji
tworzą one tzw. grupy. Podstawą podziału grupowego jest stan pierwszych trzech bitów
kodu operacyjnego.
Oprócz tego większość z nich posiada cały szereg wariantów zależnych od parametrów
(Rozkaz MODE SELECT ponad 70!). Z tej szerokiej gamy możliwych poleceń wyko
rzystywanych jest praktycznie niewiele. Dyski twarde posługują się przy tym uprosz
czonym zestawem, w skład którego wchodzi nie więcej niż 10 rozkazów.
Ograniczenia ze strony samego DOS znikają przy przejściu na jeden z systemów opera
cyjnych nowszej generacji (OS/2, UNIX itp.), w których procesor pracuje w trybie
chronionym (Protected Mode). Znikają te ale za to pojawiają się inne polegające na
niezgodnościach w ramach procedur BIOS. Procedury te bowiem adresują często
pamięć w trybie rzeczywistym (Real Mode).
Obsługa dysku twardego 315
Tabela 6.10.
Pełny zestaw rozkazów systemu SCSI
Jeżeli mowa jest o prostym systemie typu serwer plików (File Server) wyposażonym
w dwa dyski twarde należałoby zasugerować pozostanie przy dyskach AT-BUS, tym
bardziej że ich szybkość (w modelach nowej generacji) jest bardzo duża. Przemawiają
za tym również względy ekonomiczne: dyski SCSI są jednak nieco droższe od swych
odpowiedników AT-BUS, kontrolery SCSI natomiast dużo droższe.
Wyższa cena urządzeń peryferyjnych SCSI jest w pełni usprawiedliwiona stopniem ich
komplikacji. Muszą one realizować złożony protokół komunikacyjny SCSI i umieć się
zachowywać w inteligentny sposób stosownie do zaistniałych sytuacji. Dysk twardy
SCSI (a właściwie jego kontroler) musi stawiać do dyspozycji innych użytkowników
szyny (tj. praktycznie Host Adaptera), tzw. logiczne bloki danych. Nikt nie jest zainte
resowany strukturą wewnętrzną dysku: cylindrami, ścieżkami i sektorami. Cała proce
dura formatowania odbywa się w odpowiedzi na pojedynczy rozkaz. Podobnie admini
stracja powierzchnią dodatkową i jej stosowny przydział w wypadku uszkodzeń sekto
rów leży w gestii samego kontrolera dysku.
Jak widać z tego krótkiego przeglądu, urządzenia SCSI są układami o bardzo wysokim
stopniu komplikacji.
Realizacja magistrali
Na system SCSI składa się sama magistrala oraz protokół określający zasady korzysta
nia z niej.
Î J - " .
Obsługa dysku twardego 317
Interfejs asymetryczny
W najprostszym przypadku (rysunek 6.20) połączenia kontrolera magistrali i poje
dynczego dysku rezystory zamykające znajdują się w pobliżu gniazd doprowadzających
magistralę do układów.
W-
Spotykana jest też konfiguracja magistral SCSI wyposażonych w dwa kontrolery. Jeżeli
h ::-
są one załączone jako urządzenia końcowe, tak jak to przedstawia rysunek 6.22, muszą
być również wyposażone w rezystory obciążające. Wszystkie inne jednostki pośrednie
muszą być takich rezystorów pozbawione.
INNE
% URZĄDZENIE
318 Anatomia PC
Interfejs symetryczny
W tym przypadku obowiązują nieco inne zasady, bowiem urządzenia wyposażane w ten
interfejs nie mają możliwości instalacji rezystorów. Ponieważ jednak wymóg obciążania
końców magistrali musi być bezwzględnie spełniony, rezystory umieszcza się bez
pośrednio na jej końcach jako „pseudo-urządzeń ia”. Symboliczną realizację takich
połączeń przedstawia rysunek 6.23.
Jak już wspomniałem, magistrala może łączyć ze sobą maksymalnie osiem jednostek.
Każda z nich może nawiązywać kontakt (i wymieniać dane) z dowolną inną, ale w da
nym momencie aktywne mogą być wyłącznie dwie. Jednostki aktywne, które są ze sobą
połączone, spełniają (na czas tego połączenia, mówimy też sesji) ściśle określone przez
protokół role i nie są równouprawnione. Jedna z nich określana jest mianem inicjatora
(w skrócie INIT), a druga jest jednostką docelową (TARG od ang. Target). To, jaka rola
przypada danemu urządzeniu w sesji, wynika ze stanu linii sterujących. Niezależnie od
ilości urządzeń dołączonych do magistrali można ją zawsze sprowadzić na czas trwania
danej sesji do uproszczonego logicznego połączenia inicjatora i jednostki docelowej. To
symboliczne połączenie przedstawione jest na rysunku 6.24.
Rysunek 6.24,
Połączenie DBP PARITY (1 linia)
inicjatora DB7-DB0 DATA BUS (8 linii)
zjednostką
docelową
BUSY (1 linia)
RESET (1 linia)
SELECT (1 linia)
•y
rJ
<
,K
v-
•r
-WÏ
V
Î
-ii:
K\
<•
?*<
Ił •
Sr':
M-
-v ’
• '.K -
Dla pozostałych jednostek mamy jeszcze do dyspozycji sześć adresów SCSI-ID. Mogą
nimi być dyski, zestawy dysków, taśmy, skanery, czytniki CD-ROM, pamięci magneto
optyczne. Jednym słowem wszystko co ma interfejs SCSI.
& Konfiguracja tego typu jest dosyć rzadko spotykana, ale możliwa. Przedstawia ją
*
rysunek 6.25.
320 Anatomia PC
Rysunek 6.25. R,
Rozbudowana
konfiguracja Dysk
Twardy
magistrali SCSI Magistrala PC-1 #0 LUN-0
HOST
ADAPTER
\ Dysk
Twardy
#7 V #1 LUN-0
Kontroler
r ~ h Dysków
#2 LUN-0 LU N .1 LU N -7
MAGISTRALA
scsT Kontroler
Magistrala PC-2
Taśm
#3
HOST
ADAPTER Kontroler
#6 CD-ROM
#4
Kontroler
Skanera
#5
R0
r RD
Rysunek 6.26.
Przykład
uproszczonej
Kontroler
konfiguracji Dysków
Magistrala PC
magistrali SCSI
HOST
ADAPTER
j Kontroler
I CD-ROM
MAGISTRALA
SCSI
R
Rysunki 6.25 i 6.26 wyrażają logiczny obraz połączeń. Niezbędne rezystory obciążenia
magistrali znajdują się na jej fizycznych końcach, którymi są konkretne urządzenia.
Układ oznaczony jako Host Adapter nie może ograniczać się jedynie do połączenia
szyn PC z magistralą SCSI. Jego rola jest znacznie bardziej złożona, musi bowiem być
pełnoprawnym urządzeniem SCSI. W przedstawionej powyżej konfiguracji stanowi
również jedyny inicjator w systemie.
PC może zgłaszać żądania odnoszące się do urządzeń SCSI nie troszcząc się o ich dalsze
wykonanie. Wymianę danych zgodną z protokołem magistrali, jak również komunikację
z pamięcią operacyjną PC załatwia kontroler. Zazwyczaj na karcie kontrolera SCSI
umieszcza się również sterownik napędu dyskietek, aby nie blokować dodatkowych
gniazd płyty głównej.
Obsługa dysku twardego 321
Stacja dyskietek
Rysunek 6.27.
Praktyczna HI
realizacja Karta kontrolera
konfiguracji scs
z rysunku 6.26
Magistrala
zewn. PC
Dyski twarde
(gniazda rozszerzeń)
LUN~0 LUN*1
CD-ROM
Platforma fizyczna
Fizyczne połączenie jednostek SCSI odbywa się za pośrednictwem 50-żyłowego prze
wodu płaskiego. Spotykane są też przewody stanowiące 25 par skrętek i to zarówno
wtedy, gdy jeden z przewodów pary połączony jest z masą (wykonanie asymetryczne),
jak i wtedy, kiedy magistrala pracuje na symetrycznych poziomach napięć.
Wersja asymetryczna
Jest to najczęściej spotykana, przeznaczona do podstawowych zastosowań forma wyko
nania magistrali SCSI. Wersja ta dopuszcza maksymalną długość przewodów linii
równą 6 m. Tabela 6.11. przedstawia schemat przyporządkowania sygnałów poszcze
gólnym końcówkom.
322 Anatomia PC
Tabela 6.11.
Asymetryczny interfejs SCSI
Rysunek 6.28.
Schemat
obciążenia n a
i
i32n
asymetrycznej
linii sygnałowej Ü T
Wersja symetryczna
Jest to rzadko występująca wersja magistrali, przeznaczona do zastosowań specjalnych. |
Dzięki dużemu tłumieniu zakłóceń wersja ta dopuszcza długość przewodów linii aż do
25 m. Tabela 6.12 przedstawia przyporządkowanie sygnałów końcówkom.
Tabela 6.12.
Symetryczny interfejs SCSI
W tym przypadku każda para przewodów sygnałowych zakończona jest zestawem rezy
storów pokazanym na rysunku 6.29. Po uproszczeniu połączeń równoległych i szerego
wych otrzymać można wypadkowe obciążenie linii wynoszące około 122 Q.
o +5V lub
Rysunek 6,29,
Schemat I TERMPWR
obciążenia
3 3 0 0
I
symetrycznej
•SYGNAŁ *
I CO
co 1
1500 1220
linii sygnałowej 1 5 0 0
+SYGNAŁ*
i 3 3 0 0
gco
co
T
GND
- i
Dyski twarde dopuszczają na ogół różne warianty konfiguracji sposobu zasilania linii
TERMPWR. Przykładem najbardziej uniwersalnego rozwiązania może być system sto
sowany w dyskach rodziny M269xE(S/H) firmy Fujitsu. Rysunek 6.31. prezentuje
układ konfiguracji modelu ES z interfejsem asymetrycznym, a rysunek 6.32. ten sam
dysk w wykonaniu symetrycznym (model EH).
ł
w dysku Bszp,
i Pin 26
z interfejsem KI-
TERMPWR
asymetrycznym
Sygnały
PAKIET
REZYSTORÓW
OBCIĄŻENIA
GND
Pakiet rezystorów zakończenia linii nie jest zasilany ani poprzez źródło napięcia na
dysku, ani przez linię TERMPWR. W tej sytuacji pakiet należałoby usunąć. Linia
TERMPWR nie otrzymuje zasilania od strony dysku. (J-02 Open, J-03 Open)
Pakiet rezystorów zakończenia linii jest zasilany przez źródło napięcia na dysku. Linia
TERMPWR nie otrzymuje zasilania od strony dysku. (J-02 Close, J-03 Open)
r
> Źródło zasilania dysku połączone jest zarówno z linią TERMPWR, jak i z pakietem
rezystorów zakończających. (J-02 Close, J-02 Close)
**?:
fi* .
i ! '..*
326 Anatomia PC
>
w dysku Pin 26
z interfejsem TERMPWR
symetrycznym
TERMPWR
Pin 25
Rysunek 6.33. IW
J fflf
Detektor rodzaju GNIAZDOPRZYLĄCZEN ¡OWE
DYSKU SCSI
magistrali +5V
ikft
Połączerie symetryczne
Pin21=HIGH
X-
Pin 21 \
>..... * Driver Enable
74LSD6
Połączerie asymetryczne
Pin 21 =LOV
¥
Proszę zwrócić uwagę na obsadę końcówki 21 w wersjach symetrycznych i asyme
trycznych. Poziom napięcia na tej linii dostarcza podłączanym urządzeniom informacji
o typie interfejsu. Układy kontrolne nie pozwolą na aktywowanie nadajników i odbior
ników linii jeżeli nie ma zgodności typu.
Obsługa dysku twardego 327
Tabela 6.13.
Fizyczna realizacja stanów logicznych sygnałów magistrali
• szyna wolna,
• współzawodnictwo,
i
328 Anatomia PC
• selekcja,
• reselekcja;
• fazy informacyjne:
• rozkazowa,
• danych,
• statusu,
• wiadomości;
• stany nadzwyczajne:
• zerowanie,
• uwaga.
Sygnały sterujące nie są ogólnie dostępne dla wszystkich urządzeń w dowolnej z faz.
Niektóre linie natomiast (zależnie od fazy) mogą być sterowane przez wiele urządzeń
jednocześnie co realizuje funkcję logiczną OR.
Tabela 6.14.
Uprawnienia urządzeń do linii magistrali
Linia
Faza
BSY SEL I/O C/D MSG REQ ACK DB, P ATN RST
«
Bus Free Z Ż ż Z Z Ż Ż Ż Ż D
Arbitration D w ż Ż Ż Ż Ż ID Ż D
w
Selection I/T I Z ż ż ż Ż I I rD
• ł ■
Reselection I/T T T z ż Z Z T I D
rp
Command T Ż T I I I D
B
Data In T z T T T T I T I D
«
Data Out T z T T T I I I D
Status T Ż T T T T I T I D
Message In T Ż T T T T I T I D
Message Out T Ż T T T 1 I I D
D — linia może być sterowana przez dowolne z urządzeń lub nawet wiele z nich;
I - prawo do sterowania ma tylko urządzenie INT;
ID — każde z urządzeń ubiegających się o przydział magistrali SCSI (biorących
udział w fazie Arbitration) wystawia na stosowną linię szyny danych (DBO~
DB7) swój identyfikator adresowy SCSI-ID;
I/T - INT lub TARG, albo INT i TARG jednocześnie mogą sterować linią;
T - prawo do sterowania ma tylko urządzenie TARG;
W - prawo do sterowania ma tylko to urządzenie, które wygrało w fazie
Arbitration;
Ż - linia nie jest sterowana przez żadne z urządzeń. Rezystory zakończenia linii
(terminators) utrzymująjąna poziomie logicznym 0, co odpowiada napięciu
+5 V.
Bus Clear Delay [max. 800ns] - maksymalny dopuszczalny okres czasu pomiędzy (jednym
z trzech):
• wykryciem fazy BUS FREE (tj. BSY=0, SEL-0) lub
• stwierdzeniem, że współzawodnictwo wygrał ktoś inny (tj. został aktywowany sygnał SEL
w fazie ARBITRATION) lub
• wykryciem stanu RESET,
a momentem, gdy urządzenie przestaje sterować jakimkolwiek z sygnałów magistrali SCSI.
Bus Settle Delay [min. 400 ns] - minimalny okres czasu (liczony od ostatniej zmiany dowolnego
z sygnałów sterujących), po którym stan magistrali musi się ustabilizować (tj. dać jednoznacznie
określić) niezależnie od tego, jakie zmiany sygnałów sterujących go poprzedzały.
Jeżeli INIT wykryje niespodziewane wejście w fazę BUS FREE, powinien żądać od
TARG podania szczegółowych przyczyn wysyłając polecenie REQUEST SENSE.
BSY-
\ y \ przegrywa
DB(1) y
X
SEL-
Ts
Tf
przegrywa ¡ 9
BSY-
DB(3>
SEL
Mirt. 2 ,4 jiS
(Arbitration Delay) H
Tf Max. 800 ns
(Bus Clear Delay)
BSY-
DB{7) /
SEL
Min. 1,2 us
Porównywania priorytetów (Bue Clear Delay «■Bus Settle Delay)
Ts Max. 1800 ns
Tf Min. 800 ns
Wykrywania lazy BUS FREE
t przez każde z urządzeń
Arbitration Delay [min. 2,4 ps] - minimalny okres oczekiwania na ocenę priorytetów na szynie
danych, liczony przez urządzenie od momentu aktywowania sygnału BSY. Urządzenie takie
wchodzi w fazę Arbitration aktywując sygnał BSY i jednocześnie wystawiając swój SCSI-ID
na szynę danych.
Bus Clear Delay [max. 800 ns] - maksymalny dopuszczalny okres czasu pomiędzy (jednym
z trzech):
• wykryciem fazy BUS FREE (tj. BSY=0, SEL-0) lub
• stwierdzeniem, że współzawodnictwo wygrał ktoś inny (tj. został aktywowany sygnał
SEL w fazie ARBITRATION) lub
• wykryciem stanu RESET
a momentem, gdy urządzenie przestaje sterować jakimkolwiek z sygnałów magistrali SCSI.
Bus Free Delay [min. 800 ns] - minimalny okres czasu, który musi odczekać każde urządzenie
chcąc aktywować linię BSY (tj. pragnące wejść w fazę Arbitration) od momentu wykrycia stanu
Bus Free.
Bus Set Delay [max. 1,8 ps] - maksymalny dopuszczalny okres czasu, który może upłynąć
od momentu wykrycia fazy Bus Free do wejścia w fazę Arbitration (tj. aktywowania linii BSY
i wystawienia SCSI-ID na szynę danych).
Bus Settle Delay [min. 400 ns] - minimalny okres czasu (liczony od ostatniej zmiany dowolnego
z sygnałów sterujących), po którym stan magistrali musi się ustabilizować (tj. dać jednoznacznie
określić) niezależnie od tego, jakie zmiany sygnałów sterujących go poprzedzały.
332 Anatomia PC
DB7
DB6
DBS
DB4
l~DB3
ÍB2
DB1
SCSUD #7
> SCSUD #6
»SOSHD #5
»SCSUD #4
■»SCSHD #3
£N <5*
»
♦SCSł-ID #2
*SCSHD #1
tŁ
»SCSUD#0
W przypadku (a) urządzenie czuje się uprawnione do przejęcia kontroli nad magistralą
i daje o tym znać aktywując linię SEL.
Sytuacja z punktu (b) daje się sprowadzić do tej z punktu (a), z tym, że przegrywa jed
nostka o niższym priorytecie. Na rysunku 6.32 urządzenie o adresie ID = 1 przegrywa
z tym o adresie ID = 3, a w chwilę potem ID = 3 przegrywa z ID = 7.
Jeżeli jednostka napotyka stan z punktu (c) ma obowiązek wycofać się z konkurencji
zwalniając sygnał BSY.
Obsługa dysku twardego 333
Uwaga:
Urządzenie wystawiające swój SCSI-ID na szynę danych steruje wyłącznie linią odpo
wiadającego sobie bitu DBx. Sterowanie to oznacza sprowadzanie tej linii do wyso
kiego poziomu logicznego, co w przyjętej konwencji równa się wymuszeniu napięcia
0V. Inne z linii szyny danych muszą pozostać nietknięte. W przypadku linii kontroli
parzystości DBP standard przewiduje:
Rysunek 6,37.
BUS FREE Faza SELECTION
Bezpośrednie min. 800 ns
*
f
(Bus Settle Delay)
wejście BSY- \
urządzenia J C TARG
min. 800 ns (Bus Clear Delay)
wfazą Selection
DB WIT wystawia na szynę danych
identyfikatory SCSI-ID: swój oraz TARG
SEL-
min. 90 ns min. 90 ns
(2*Deskew Delay) (^Deskew Delay)
Bus Clear Delay [max. 800 ns] - maksymalny dopuszczalny okres czasu pomiędzy (jednym
z trzech):
• wykryciem fazy BUS FREE (tj. BSY=0, SEL-0) lub
• stwierdzeniem, że współzawodnictwo wygrał ktoś inny (tj. został aktywowany sygnał
SEL w fazie ARBITRATION) lub
• wykryciem stanu RESET
a momentem, gdy urządzenie przestaje sterować jakimkolwiek z sygnałów magistrali SCSI.
Bus Settle Delay [min. 400 ns] - minimalny okres czasu (liczony od ostatniej zmiany dowolnego
z sygnałów sterujących), po którym stan magistrali musi się ustabilizować (tj. dać jednoznacznie
określić) niezależnie od tego, jakie zmiany sygnałów sterujących go poprzedzały.
Deskew Delay [min. 45 ns] - Czas przeznaczony na kompensację różnic w czasach propagacji
sygnałów pomiędzy różnymi urządzeniami.
334 Anatomia PC
• INIT wystawia na szynę danych dwa identyfikatory SCSI-ID: swój oraz jed
nostki TARG. Stan szyny danych w tym momencie przedstawia rysunek 6.38.
. Stan
Rysunek 6.38. nieokreślony
Szyna danych
magistrali SCSI
w fazie Selection
DBP (parzystość)
I DB7
j DB6
DBS
W
DB3
QB2
DB1
<3Z
SCSHD #7 cc
< ir
—
SCSI-ID #6
1
fr
_
%
o
♦ SCSI-ID #5
— a>
♦ SCSI-ID #4
'S Ï
■«Br S
♦ SCSI-ID #3
NX (D
«N
c l
♦ SCSI-1D #2 3>*.£2
♦ SCSI-ID #1 V)
£ >
♦ SCSI-ID #0 3 «
* r
Uwaga:
W systemach, w których jest tylko jeden INIT (brak fazy reselekcji) wystarczy
dla uproszczenia aktywować w tym momencie jedynie adres jednostki wybie
ranej (TARG).
• Po odczekaniu co najmniej 90 ns INIT aktywuje sygnał SEL i oczekuje odpo
wiedzi (w postaci sygnału na linii BSY) od wywoływanej jednostki docelowej
TARG.
Rysunek 6.39.
Faza ARBITRATION Faza SELECTION
Faza Arbitration
poprzedza min. 90 ns
{¿‘ Deskew Delay)
*r BSY-
wejście INIT URG/
urządzenia
wfazę Selection
MIT wysławia na szyna danych
Idanłyfikałory SCSI-S: sw6j oraz TARG
Bus Clear Delay [max. 800 ns] - maksymalny dopuszczalny okres czasu pomiędzy (jednym
z trzech):
• wykryciem fazy BUS FREE (tj. BSY=0, SEL=0) lub
• stwierdzeniem, że współzawodnictwo wygrał ktoś inny (tj. został aktywowany sygnał
SEL w fazie ARBITRATION) lub
• wykryciem stanu RESET
a momentem, gdy urządzenie przestaje sterować jakimkolwiek z sygnałów magistrali SCSI.
Bus Settle Delay [min. 400 ns] - minimalny okres czasu (liczony od ostatniej zmiany dowolnego
z sygnałów sterujących), po którym stan magistrali musi się ustabilizować (tj. dać jednoznacznie
określić) niezależnie od tego, jakie zmiany sygnałów sterujących go poprzedzały.
O d p o w ie d ź :
P r z e k r o c z e n ie c z a s u o c z e k iw a n ia n a o d p o w ie d ź :
Dzięki takiemu rozwiązaniu tworzą się kanały logiczne łączące różne pary urządzeń. W
danym momencie magistrala może łączyć tylko jedną parę; inne w tym czasie mogą
przetwarzać rozkazy (np. pozycjonować głowice, przewijać taśmę, dokonywać kom
presji danych itp.).
Operacja odczytu sektora dysku trwa stosunkowo długo. Sumując wszystkie nieunik
nione opóźnienia otrzymuje się wysoce prawdopodobną realistyczną wartość 20 ps,
zanim 512 bajtów danych gotowych jest do przesłania do pamięci.
Średnio wydajna magistrala SCSI (transfer 5 MB/s) może w tym czasie przetranspor
tować ok. 100 kB różnych informacji. Stopień wykorzystania magistrali wynosiłby więc
tylko 0.5% gdyby urządzenia blokowały się nawzajem.
Tak więc TARG nawiązuje kontakt z INIT dopiero wtedy, gdy gotów jest do przekazy
wania danych. Urządzenie pragnące wejść w fazę RESELECTION musi przejść przez
ARBITRATION aby uzyskać dostęp do szyny. Cechą charakterystyczną odróżniającą
tę fazę od SELECTION jest aktywny sygnał I/O.
Rysunek 6,40.
Faza ARBITRATION Faza RESELECTiON
Magistrala SCSI
wfazie res elekcji Szyna SCSI
\ >-
TARG co
m
INIT
min. 90 ns
i2*Deskew Delay)
Dane (DB)
JARG wystawia na szynę danych
Identyfikatory SCSHD: swój oraz łNtT
SEL
I/O
-i r
min. 1,2 n * mln. 90 ns
(Bus Clear Deaiy + Bus Settle Delay) (2*Deskew Delay)
Bus Clear Delay [max. 800 ns] ~ maksymalny dopuszczalny okres czasu pomiędzy (jednym
z trzech):
• wykryciem fazy BUS FREE (tj. BSY=0, SEL-0) lub
• stwierdzeniem, że współzawodnictwo wygrał ktoś inny (tj. został aktywowany sygnał
SEL w fazie ARBITRATION) lub
• wykryciem stanu RESET
a momentem, gdy urządzenie przestaje sterować jakimkolwiek z sygnałów magistrali SCSI.
Bus Settle Delay [min. 400 ns] - minimalny okres czasu (liczony od ostatniej zmiany dowolnego
z sygnałów sterujących), po którym stan magistrali musi się ustabilizować (tj. dać jednoznacznie
określić) niezależnie od tego, jakie zmiany sygnałów sterujących go poprzedzały.
Deskew Delay [min. 45 ns] - Czas przeznaczony na kompensację różnic w czasach propagacji
sygnałów pomiędzy różnymi urządzeniami.
Uw aga:
Faza reselekcji może być używana wyłącznie w tych systemach, które mają zaimple
mentowaną fazę rozstrzygania.
W e jś c ie w fa z ę :
• TARG musi uzyskać kontrolę nad szyną przechodząc przez fazę ARBITRA-
TION (patrz uwaga powyżej) i wychodzi z niej z aktywnym sygnałem SEL;
DBP (parzystoffi
H >B7
TkmP
DB5
OBi
DB3
m
dbT
D80
SCSMD #7
O
♦ SCSHD «6 3
— *
a
♦ SCSMD «5 tr c
5 “g
♦ SCSHD #4 • c 1
S
♦ SCSMD #3
a
♦ SCSMD #2 sc
>?J£
tn
♦ SCSMD *1 ę> >s
♦ SCSMD «0 •o
*1
O d p o w ie d ź :
Urządzenie uznaje, że jest wywoływane w fazie reselekcji (tzn. jako INIT), jeżeli:
Jednostka adresowana w fazie reselekcji (INIT) musi również zbadać stan całej szyny
danych, aby zidentyfikować urządzenie, które jest inicjatorem tej fazy (TARG).
Warto dodać, że w fazie reselekcji może brać udział linia DBP (kontrola parzystości
szyny danych DB0-DB7). Obowiązuje tu generalna zasada odnosząca się do magistrali
SCSI jako całości wraz z wszystkimi współpracującymi jednostkami. Urządzenia te
mają w zasadzie możliwość wyboru (za pomocą zwor konfiguracyjnych) w jakim trybie
Obsługa dysku twardego 339
pracują: z kontrolą parzystości czy bez. Należy zawsze tak konfigurować system aby
każde urządzenie korzystało z tej samej opcji: albo wszystkie kontrolują parzystość (i ją
również wytwarzają), albo żadne z nich. Zależnie więc od konfiguracji, INIT może nie
odpowiedzieć wywołanie w fazie reselekcji jeżeli stwierdzi błąd kontroli parzystości.
P r z e k r o c z e n ie c z a s u o c z e k iw a n ia n a o d p o w ie d ź :
Jeżeli jednostka wywołująca nie otrzymuje oczekiwanej odpowiedzi w czasie 250 ps,
następuje tzw. przekroczenie czasu (ang. Time Out). Rozpoczyna się następująca sek
wencja:
• TARG aktywuje linię RST, aby wywołać stan RESET;
• przez okres czasu 200 ps oczekiwana jest odpowiedź od INIT. Jeżeli odpowiedź
mimo tego nie nadchodzi, TARG zwalnia SEL i pozwala wejść magistrali w fazę
BUS FREE;
Fazy informacyjne
To, co opisano powyżej, odnosi się do samych mechanizmów dostępu urządzeń do
magistrali SCSI. Głównym jej zadaniem jest przecież jednak transmisja informacji. Pod
tym pojęciem rozumie się tu nie tylko „czyste” dane, tj. na przykład zawartość bloku
danych sektora dysku, ale i też szereg innych dodatkowych informacji, które wymie
niają między sobą połączone magistralą urządzenia. Wszelkie informacje transmitowane
są przez szynę danych w jednej z tak zwanych faz informacyjnych.
min. 400 na
(Bus Settle Delay)
C/D
r/o
MSG t
REQ
ACK
DB Bajł-1
>
Bus Settle Delay [min. 400 ns] - minimalny okres czasu (liczony od ostatniej zmiany dowolnego
z sygnałów sterujących), po którym stan magistrali musi się ustabilizować (tj. dać jednoznacznie
określić) niezależnie od tego, jakie zmiany sygnałów sterujących go poprzedzały.
Oprócz rozkazów, danych i raportu urządzenia wymieniają między sobą tzw. wiado
mości (MESSAGES), które nie stanowią danych z punktu widzenia użytkownika, ale są
niezbędne dla utrzymania poprawnej komunikacji i obsługi błędów. Wiadomości te
mogą również przepływać w obydwu kierunkach. Stosownie do tego istnieje faza
MESSAGE IN (wiadomości napływają do INIT) oraz MESSAGE OUT (wiadomości są
przez INIT wysyłane).
Rodzaj fazy jest dokładnie określony przez kombinację trzech sygnałów sterujących
magistrali: C/D, I/O i MSG. Z ośmiu możliwych stanów dwa są zabronione, tak jak
przedstawiono to w tabeli 6.15.
Prawo do posługiwania się tymi trzema sygnałami ma jedynie jednostka uznana jako
TARG (zacieniowany obszar w tabeli 6.16). Wynika z tego jasno, że tylko TARG
decyduje o rodzaju fazy informacyjnej.
Obsługa dysku twardego 341
Tabela 6.15.
Kodowanie fa z informacyjnych
Linia C/D Linia I/O Linia MSG Na szynie danych Kierunek Nazwa cyklu
0 0 0 Dane (Data) INIT -> TARG DATA OUT
0 1 0 Dane (Data) TARG -> INIT DATA IN
1 0 0 Rozkazy (Command) INIT -» TARG COMMAND
1 1 0 Status (Status) TARG INIT STATUS
0 0 1 stan zabroniony
0 1 1 stan zabroniony
1 0 1 Wiadomość (Message) INIT TARG MESSAGE OUT
1
L
l tWiadomość (Message) \ TARG INIT MESSAGE IN
L . ...i
...........................
Tabela 5.15.
Zakres uprawnień w fazach informacyjnych
Sama informacja, jakiejkolwiek by nie była postaci, płynie szyną danych DB0-DB7,
DBP pod ewentualną kontrolą bajtu parzystości. Pojedyncze bajty tego strumienia
przesyłane są pomiędzy TARG i INIT w sposób określony często mianem Hardware
Hand-Shake (z ang. uścisk dłoni). Rolę tego potwierdzającego uścisku (dla każdego z
bajtów oddzielnie lub też dla ich grupy) pełni odpowiednia sekwencja impulsów na
liniach ACK i REQ, tak jak to przedstawiono na rysunku 6.42. W zależności od
sposobu wysyłania impulsu REQ i sprawdzania odpowiedzi ACK zdefiniowane są dwa
typy przekazu danych: asynchroniczny i synchroniczny.
Podczas trwania faz informacyjnych TARG musi utrzymywać sygnał BSY w stanie
aktywnym. Linia SEL natomiast musi pozostawać zwolniona.
342 Anatomia PC
TARG musi ponadto, mając do dyspozycji trójkę sygnałów kontrolnych (C/D, 1/0
i MSG), ustanowić określony rodzaj fazy informacyjnej najpóźniej na 400 ns przed wy
słaniem pierwszego impulsu REQ. Ten pierwszy impuls inicjuje właściwą transmisję.
Tryb asynchroniczny
Asynchroniczny tryb wymiany informacji opiera się na wzajemnej kontroli (poprzez
INIT i TARG) kolejnych par impulsów REQ i ACK. Ten tryb transmisji może być
stosowany we wszystkich sześciu fazach informacyjnych (patrz tabela 6.15). Dozwolo
ne jest więc zarówno TARG -» INIT, jak i INIT -» TARG. Kierunek przepływu danych
ustala urządzenie TARG sterując linią I/O. Przykłady transmisji w obydwu kierunkach
przedstawione są na rysunku 6.43.
• Transmisja w kierunku INIT TARG. Jeżeli sygnał i/O jest zwolniony, prze
pływ informacji od INIT do TARG odbywa się zgodnie z następującym sche
matem:
• TARG aktywuje sygnał REQ co oznacza wezwanie dla INIT do wysy
łania danych;
Obsługa dysku twardego 343
/
Rysunek 6.43. REG X s.
Wymiana danych
ACG X X
w trybie min. 10ns min.10ns
^mln. 0, Typ. 50ns^ 4-----------------------------------
asynchronicznym
t/O /
REG \ /
ACK- \ /
DB X X X Valid
m ia Ons
min. SSns
Deskew Delay + Cable Skew Delay
I/O
\
REG / /
ACK- X \ X
DB X X Valid
mln. Ons
min. 55ns
Deskew Delay + Cable Skew Delay
Deskew Delay [min. 45 ns] - czas przeznaczony na kompensację różnic w czasach propagacji
sygnałów pomiędzy różnymi urządzeniami.
Cable Skew Delay [max. 10 ns] - maksymalna dopuszczalna różnica czasów propagacji
dowolnego z sygnałów wzdłuż magistrali SCSI pomiędzy dowolną parą urządzeń.
Rysunek 6.44. / \
REQ y
Pojedyncza para
impulsów
REQ/ACK
ACK
«— n—
i i
/
T ( 7 1 + 7 2 + 50)
W tabeli 6.16 zebrane zostały wyniki obliczeń dla kilku przykładowych długości prze
wodów magistrali.
Tabela 6.16.
Prędkości transmisji asynchronicznej w funkcji długości magistrali
Tryb synchroniczny
W trybie synchronicznym następuje pewne uproszczenie mechanizmu Hand-Shake.
Rezygnuje się mianowicie z każdorazowego potwierdzania pojedynczego baj tu danych
przy użyciu sekwencji impulsów REQ/ACK. Sygnał ACK służy tu do potwierdzania
pewnej większej grupy bajtów. Transfer tego typu dopuszczalny jest wyłącznie w fa
zach informacyjnych DATA IN i DATA OUT. Ponadto nie wszystkie urządzenia SCSI
dostosowane są do pracy w tym stylu.
Standardowym trybem pracy magistrali w fazach informacyjnych jest tryb asynchro
niczny. Synchroniczna wymiana danych wymaga wcześniejszego uzgodnienia między
Obsługa dysku twardego 345
Uwaga:
Zarówno moment włączenia napięcia zasilania, jak i wywołanie funkcji RESET wpro
wadza magistralę w tryb asynchroniczny.
Po stosownym uzgodnieniu parametrów TARG może wysłać więcej niż jeden impuls
REQ (każdemu towarzyszy oczywiście jeden bajt danych) zanim nie otrzyma potwier
dzenia w postaci przedniego zbocza impulsu ACK. Liczba takich wysłanych i niepo
twierdzonych impulsów musi zawierać się w zakresie zdefiniowanym jako parametr
RAO. W szczególności może też być od niego mniejsza. Tak więc jeżeli różnica między
liczbą wysłanych impulsów REQ a liczbą odebranych ACK osiągnie RAO, TARG musi
przerwać nadawanie do czasu nadejścia potwierdzenia ACK.
Drugie ograniczenie wynika z parametru TP. Okres trwania przebiegu na liniach ACK
i REQ, tj. odstęp pomiędzy kolejnymi najbliższymi zboczami tego samego rodzaju (na
rastającymi lub opadającymi) nie może być krótszy niż uzgodnione TP. Nakłada to
automatycznie ograniczenie na maksymalną dopuszczalną częstotliwość pracy „pseudo-
zegara” transmisji synchronicznej.
Min=Transfer Period
Rysunek 6.45. i
Assertion Period Negation Period
Synchroniczna (min. 90ns)
i -------------- -
(min. 90ns)'
m
transmisja
danych REQ X X Jr \
\
ACQ X \
Assertion Period Negation Period
(tran. 90ns) (młn. 90ns)
I/O X
REQ \
ACK X
DB >< Valid y < X X
min. 55ns
t mln. 100 ns
I/O
REQ X \ X \
ACK X \ X
DB X Valid Valid
Deskew Delay +
Deskew Delay+ cable Skew Delay *
Cable Skew Delay Ho)d
Assertion Period [min. 90 ns] - minimalna szerokość impulsu ACK (wysyłanego przez INIT)
i sygnału REQ (wysyłanego przez TARG) niezbędne do utrzymania synchronicznej wymiany
danych.
Negation Period [min. 90 ns] - w synchronicznym trybie wymiany danych minimalny czas
liczony od tylnego zbocza impulsu REQ (lub ACK) do przedniego zbocza następnego impulsu
REQ (lub ACK).
Transfer Period - w synchronicznym trybie wymiany danych minimalny czas (minimalny czas
repetycji) liczony od przedniego zbocza impulsu REQ (łub ACK) do przedniego zbocza
następnego impulsu REQ (lub ACK). Aktualna wartość tego parametru uzgadniana jest
pomiędzy INIT i TARG za pomocą wymiany wiadomości SYNCHRONOUS DATA
TRANSFER REQUEST.
Deskew Delay [min. 45 ns] - czas przeznaczony na kompensację różnic w czasach propagacji
sygnałów pomiędzy różnymi urządzeniami.
Cable Skew Delay [max. 10 ns] - maksymalna dopuszczalna różnica czasów propagacji
dowolnego z sygnałów wzdłuż magistrali SCSI pomiędzy dowolną parą urządzeń.
Hold Time [min. 45 ns] - w synchronicznym trybie wymiany danych, minimalny czas liczony oc
przedniego zbocza ACK, przez który należy utrzymywać niezmienny stan szyny danych (Data
Byte).
Obsługa dysku twardego 347
\J
• z zachowaniem zależności czasowych przedstawionych na rysunku 6.45 jS
ma miejsce powtórzenie poprzedniego punktu tyle razy, by nie przekro
czyć uzgodnionej wartości parametru RAO; 5
i
Uwaga: j
I
i
Dla poprawnego zakończenia fazy DATA IN lub DATA OUT wymagane jest, by cal- !
kowita liczba wysłanych impulsów REQ była równa sumarycznej liczbie odebranych j
impulsów ACK. |S
i
s
i
Sam mechanizm przesyłania danych nie różni się od opisanego powyżej; inne są tylko |
zależności czasowe. Przedstawia to rysunek 6.46. j
i
i
t
Uzgodnienie to ma miejsce (jeżeli do niego dochodzi; nie każde urządzenie jest do tej i
formy przekazu zdolne) w fazie informacyjnej MESSAGE. INIT wysyła do TARG j
wiadomość SYNCHRONOUS DATA TRANSFER REQUEST. Wiadomość ta zawiera j
w sobie dwa parametry transmisji: REQ/ACK Offset (RAO) i TRANSFER PERIOD ;
(TP). W tabeli 6.18 przedstawiony jest wyciąg z listy parametrów akceptowanych przez |
>
większość dysków twardych (oczywiście tych, które w ogóle zdolne są do trybu syn- ;
chronicznego). i
1i
f
<
i
f \
Średnia prędkość transmisji ADTR (Average Data Transfer Rate) jest funkcją uzgod- j
nionych parametrów oraz rzeczywistych właściwości linii przesyłowych magistrali i
(długości, pojemności). [
|
Prędkość średnią można oszacować w następujący sposób: j
j
5
• jeżeli (RAO * TP) < (T + 260), to ADTR = (RAO * 1000) / (T + 260) [MB/s]. [
i
a
gdzie: j
T średni czas dzielący przednie zbocze i-tego impulsu REQ i przednie zbocze j
odpowiadającego mu i-tego impulsu ACK, mierzony na końcówkach TARG j
(tj.dysku) [ns] |
348 Anatomia PC
Transfer Period
Rysunek 6.46. I-
Assertion Period Negation Period
Transmisja (min. 30ns) (mln. 30ns)
N
synchroniczna x
typu fast REQ XI \ X
\J
ACQ x \
Assertion Period Negation Period
{min. 30ns) (mln. 30ns)
Transfer Period
I/O
REQ X \ X \
ACK ________X
/
\ X
DB X Valid
mln. 35ns
Valid
min. 25ns
Transfer Period - w synchronicznym trybie wymiany danych minimalny czas (minimalny czas
repetycji) liczony od przedniego zbocza impulsu REQ (lub ACK) do przedniego zbocza
następnego impulsu REQ (lub ACK). Aktualna wartość tego parametru uzgadniana jest
pomiędzy INIT i TARG za pomocą wymiany wiadomości SYNCHRONOUS DATA
TRANSFER REQUEST.
Fast Assertion Period [min. 30 ns] - w trybie synchronicznym fast minimalna szerokość impulsu
ACK (wysyłanego przez INIT) i sygnału REQ (wysyłanego przez TARG) niezbędne do
utrzymania synchronicznej wymiany danych.
Fast Negation Period [min. 30 ns] - w synchronicznym trybie wymiany danych fast minimalny
czas liczony od tylnego zbocza impulsu REQ (lub ACK) do przedniego zbocza następnego
impulsu REQ (lub ACK).
Fast Deskew Delay [min. 20 ns] - czas przeznaczony na kompensację różnic w czasach
propagacji sygnałów pomiędzy różnymi urządzeniami podczas pracy w trybie fast.
Fast Cable Skew Delay [max. 5 ns] - maksymalna dopuszczalna różnica czasów propagacji
dowolnego z sygnałów wzdłuż magistrali SCSI pomiędzy dowolną parą urządzeń podczas pracy
w trybie fast.
Fast Hold Time [min. 10 ns] - w trybie synchronicznym fast wymiany danych, minimalny czas
liczony od przedniego zbocza ACK, przez który należy utrzymywać niezmienny stan szyny
danych (Data Byte).
Obsługa dysku twardego 349
Tabela 6.18.
Typowe wartości parametrów transmisji w trybie synchronicznym
--------------------
RAO jest liczbą całkowitą z przedziału 2-15. Parametr TP mniejszy od 200 ns oznacza
transmisję synchroniczną typu FAST (szybką). Oczywiście nie każde urządzenie może
godzić się na proponowaną transmisję typu FAST; musi być przecież do tego zdolne.
Dyski, które uzgadniają wymianę danych w tym trybie stanowią jednak jeszcze dosyć
małą podgrupę urządzeń mogących pracować synchronicznie. Są to na ogół jednostki
o pojemnościach przekraczających znacznie granicę 1GB. Wartości TP z przedziału
200-800 ns powinny być obsługiwane prawidłowo przez każde pracujące synchro
nicznie urządzenie.
350 Anatomia PC
• sygnały RST i ATN mogą być wprawdzie aktywowane, ale nie tak długo by
zostały zinterpretowane jako wywołanie określonej funkcji;
• stan sygnałów sterujących C/D, I/O i MSG:
• przy zmianie kierunku z OUT na IN (tj. z TARG —» INIT na INIT ->
TARG) TARG może zacząć sterowanie linii DB (szyny danych) nie
wcześniej niż 800ns po aktywowaniu I/O. INIT musi zwolnić szynę da
nych nie później niż 400 ns od wykrycia aktywności na linii I/O;
• przy zmianie kierunku z IN na OUT (tj. z INIT -» TARG na TARG -»
INIT) TARG musi przestać sterować linie DB (szynę danych) w prze
ciągu 45 ns od zwolnienia I/O.
Rysunek 6.48.
Zmiana kierunku
przepływu
danych
Data Release Delay [max. 400 ns] - maksymalny dopuszczalny czas, liczony od momentu
wykrycia zmiany 0 —» 1 sygnału I/O, po którym inicjator zwalnia szynę danych (Data Bus).
Bus Settle Delay [min. 400 ns] - minimalny okres czasu (liczony od ostatniej zmiany dowolnego
z sygnałów sterujących), po którym stan magistrali musi się ustabilizować (tj. dać jednoznacznie
określić) niezależnie od tego, jakie zmiany sygnałów sterujących poprzedzały go.
Deskew Delay [min. 45 ns] - czas przeznaczony na kompensację różnic w czasach propagacji
sygnałów pomiędzy różnymi urządzeniami.
Sytuacje wyjątkowe
Oprócz sygnałów sterujących I/O, MSG, C/D oraz BSY i SEL identyfikujących jedno
znacznie fazy pracy magistrali mamy jeszcze do dyspozycji dwie linie specjalnego prze
znaczenia: RST i ATN. Obie służą do wymuszania określonych przejść między-
fazowych, innych niż by to wynikało z sekwencji aktualnie realizowanych operacji.
Obsługa dysku twardego 351
Attention
Należy przypomnieć, że w fazach informacyjnych jedyną jednostką uprawnioną do
sterowania liniami I/O, C/D i MSG jest TARG. INIT pełni rolę wykonawcy i nie ma
możliwości zwrócenia na siebie uwagi, chyba że inicjatywa wychodzi ze strony TARG.
Rysunek 6.49.
Realizacja
funkcji Attention
Deskew Delay [min. 45 ns] - czas przeznaczony na kompensację różnic w czasach propagacji
sygnałów pomiędzy różnymi urządzeniami.
W y w o ła n ie f u n k c j i
Wykorzystanie linii ATN, tj. moment aktywowania i zwolnienia leży w gestii inicjatc
ATN
ATN
ATN
ATN
więc między aktywowaniem REQ a otrzymaniem potwierdzenia ACK.
352________ Anatomia PC________________________________________________
R e a k c ja T A R G
Reset
RESET jest funkcją o działaniu globalnym i natychmiastowym, a zasięgiem swym obej
muje zarówno TARG, jak i INIT. Funkcja ta dotyczy wszystkich urządzeń dołączonych
do magistrali, a jej wykonanie jest niezależne od fazy, w jakiej magistrala się znajduje.
Można też powiedzieć, że jest to funkcja o najwyższym priorytecie.
W y w o ła n ie fu n k c ji
Rysunek 6.50.
Stan magistrali
po wywołaniu
Junkcji Reset RST
Inne
max. 800 na
(Bus Clear Delay)
Bus Clear Delay [max. 800 ns] - maksymalny dopuszczalny okres czasu pomiędzy (jednym
z trzech):
• wykryciem fazy BUS FREE (tj. BSY=0, SEL=0) lub
• stwierdzeniem, że współzawodnictwo wygrał ktoś inny (tj. został aktywowany sygnał
SEL w fazie ARBITRATION) lub
• wykryciem stanu RESET
a momentem, gdy urządzenie przestaje sterować jakimkolwiek z sygnałów magistrali SCSI.
Reset Hold Time [min. 25ps] - minimalny okres, podczas którego musi pozostać aktywny sygnał
na linii RST, aby wywołać stan RESET.
Obsługa dysku twardego 353
R e a k c ja u rz ą d z e ń
Urządzenie, które wykryło aktywny sygnał RST ma obowiązek zwolnić wszystkie linie
(deaktywować wszystkie używane sygnały) w przeciągu maksymalnie 800 ns.
Konsekwencją przeprowadzenia tej funkcji jest więc odłączenie się wszystkich urzą
dzeń i wejście magistrali w fazę BUS FREE.
Rozkazy systemowe \
Rozkazy SCSI stanowią kilkubajtowe bloki (CDB, Command Data Block) niosące
w sobie oprócz kodu identyfikującego również niezbędne parametry. Wszystkie CDB
zbudowane są według tego samego schematu:
Bajt 1: Kod rozkazu
Bajt 2: ...
Bajt 3: ...
ł **
Długość rozkazu może wynosić 6, 10 lub 12 bajtów. Rozkazy 10- i 12-bajtowe określa
ne są mianem extended (rozszerzone).
Przedstawiony na rysunku 6.51 kod rozkazu (pierwszy bajt) składa się z 3-bitowego
pola grupowego i 5-bitowego pola identyfikacji. W ramach jednej grupy mogą więc być
zrealizowane 32 rozkazy.
Rysunek 6.51. 7 6 5 4 3 2 1 0
Kod rozkazu Kod grupowy Kod operacji
systemu SCSI ±
2, 3, 4: zarezerwowane;
5; rozkazy 12-bajtowe;
6,7: zarezerwowane.
Teoretycznie możliwe jest więc zakodowanie 256 różnych poleceń. Większość kontro
lerów SCSI realizuje jednak wyłącznie wybrane rozkazy 6- i 10-bajtowe. Zestawienie
tych najczęściej implementowanych zawarte jest w tabeli 6.19. Ogólna konstrukcja tych
poleceń przedstawiona jest na rysunkach 6.52 i 6.53.
Tabela 6. 19.
Zestawienie najczęściej stosowanych rozkazów SCSI
Kod Nazwa rozkazu Znaczenie
00 Test Unit Ready Sprawdzenie gotowości urządzenia
01 Rezero Unit Ustawienie głowicy nad cylindrem 0
03 Rwquest Sense Żądanie przesłania dodatkowego bloku informacyjnego
04 Format Unit Formatowanie dysku
07 Reasign Blocks Przesunięcie zawartości uszkodzonych bloków
08 Read Pobieranie danych od jednostki INT
Oa Write Wysyłanie danych do jednostki INT
Ob Seek Poszukiwanie bloku logicznego
12 Inquiry Wysyłanie listy identyfikacyjnej
15 Mode Select Ustanowienie trybu pracy
16 Reserve Unit Rezerwacja jednostki logicznej (LUN)
17 Reíase Unit Zwolnienie jednostki logicznej (LUN)
la Mode Sense Przesłanie do inicjatora parametrów urządzenia
Zablokowanie/odblokowanie realizowania kolejnych rozkazów
lb Start/Stop Unit
lc Receive Diagnostic Przesłanie wyników samokontroli
Results
ld Send Diagnostic Przeprowadzenie samokontroli
25 Read Capacity Określenie pojemności
28 Read Extended Pobranie danych od inicjatora (transmisja w trybie extended)
2a Write Extended Wysłanie danych do inicjatora (transmisja w trybie extended)
2b Seek Extended Poszukiwanie bloku logicznego (tryb extended)
2e Write & Verify Zapisywanie danych z weryfikacją
2f Verify Weryfikacja przesłanych danych
37 Read Defect Data Czytaj listę błędów
3b Write Buffer Zapis bufora
3c Read Buffer Odczyt bufora
3e Read Long Czytaj blok 512 bajtów
3f Write Long Zapisz blok 512 bajtów
Obsługa dysku twardego 355
0 0 0 0 0 0 0 0 BAJT 6
Adres bloku logicznego (LBA, Logical Błock Address) ma wymiar 21 bitów w roz
kazach 6-bajtowych, a 32 bity w rozkazach 10-bajtowych. Identyfikuje on logiczny
blok danych, do którego odnosi się rozkaz. Jeżeli rozkaz dotyczy większej liczby takich
bloków, LBA oznacza oczywiście początek obszaru. Rozkazy 6-bajtowe mogą adre
sować 2M bloków, natomiast 10-bajtowe aż 4G bloków. Dla dysków o typowej organi
zacji s e k t o r ó w (512 B na sektor) odpowiada to 1 GB obejmowanej pojemności już przy
rozkazach 6-bajtowych, co na ogół wystarcza.
Jeżeli ustawiony jest bit REL (wyłącznie w rozkazach 10-bajtowych), adres LBA
liczony jest względem ostatniego z wyspecyfikowanych bloków. Większość twardych
dysków nie korzysta z możliwości adresowania względnego.
356 Anatomia PC
Długość transmitowanych danych (TDL, Transfer Data Lenght) oznacza zwykle ilość
bloków logicznych, choć są rozkazy, w których pola te rozumiane są jako rozmiar
danych w bajtach. Magistralą SCSI można więc jednorazowo przetransportować:
CDB 6-bajtowe: 256 bloków (TDL = 0 oznacza 256)
CDB 10-bajtowe: 65535 bloków (TDL = 0 oznacza 0)
65535 bloków po 512 bajtów to prawie 32MB! Obrazuje to potężne możliwości tkwiące
w koncepcji magistrali SCSI. Trzeba przy tym podkreślić, że transport tak dużego bloku
danych odbywa się bez angażowania CPU. To, czy można to rozsądnie wykorzystać
leży już jednak nie w gestii samej magistrali SCSI, a raczej architektury komputera.
Procesor bowiem - aby nie blokować magistral PC - może przetwarzać jedynie dane
zgromadzone w swej pamięci podręcznej. Z pamięcią operacyjną w PC nie mogą się
jednocześnie kontaktować dwa różne urządzenia, w szczególności CPU i kontroler
SCSI.
Każdy rozkaz SCSI zamykany jest przez bajt kontrolny przedstawiony na rysunku 6.54.
Rysunek 6.54. 7 6 5 4 3 2 1 0
Bajt kontrolny VND 0 0 0 0 FLG LNK
------------ 1------------
(ostatni bait
CDB)
Bity 7 i 6 stoją do dyspozycji producenta (Vendor Unique) kontrolera i są ignorowane
przez TARG. Pola bitowe 5 - 2 muszą być ustawione na zero.
Bit 1 (FLG) jest tzw. flagą, a bit 0 (LNK) oznacza link. Oba związane są ściśle z możli
wością łańcuchowego przekazywania rozkazów. Polega ono na potokowym przesyłaniu
kolejnych CDB. TARG nie rozłącza się przy tym po każdym pojedynczym rozkazie by,
przez kolejne fazy BUS FREE, ARBITRATION itd. ponownie nawiązywać kontakt.
Inicjator przekazuje (a TARG odbiera) kolejne CDB tak długo, jak długo ustawiony jest
LNK. Rozkaz zamykający łańcuch ma wyzerowany bit LNK.
FLG pozostaje w związku z LNK. Jeżeli wyzerowany jest link, flaga też musi być wy
zerowana. Flaga ustawiona (oczywiście przy ustawionym linku) powoduje, iż po zre
alizowaniu całego łańcucha rozkazów przekazana zostanie tylko jedna wiadomość:
LINKED COMMAND COMPLETE WITH FLAG. W przeciwnym razie (FLG = 0)
TARG wysyła po każdym rozkazie cząstkowym wiadomość LINKED COMMAND
COMPLETE.
Z d o ln o ś ć d o k o le j k o w a n i a r o z k a z ó w
Mechanizm ten realizowany jest jedynie przez nieliczne z urządzeń SCSI, ale zostanie
pokrótce omówiony dla podkreślenia szerokich możliwości systemu.
Implementacja kolejkowania odbywa się pod kontrolą konkretnej jednostki TARG i jest
. prowadzona wyłącznie na jego użytek. Z magistrali mogą korzystać zarówno urządzenia
w kolejkowanie wyposażone jak i te, które nie są. Inicjator może kontaktować się
Obsługa dysku twardego 357
TARG organizując kolejkę nie wiąże jej z określonym inicjatorem. W kolejce mogą
oczekiwać rozkazy pochodzące od różnych inicjatorów. Każdy napływający do TARG
rozkaz, który będzie kolejkowany, powołuje do życia tzw. proces I/O. Każdy z takich
procesów otrzymuje unikalny numer będący 8-bitową liczbą całkowitą bez znaku. Jest
to kolejkowy oznacznik procesu (Queue Tag). Liczbę taką można przydzielić powtórnie
dopiero po zakończeniu stowarzyszonego z nią aktualnie procesu.
Skoro tylko inicjator połączy się z jednostką TARG (faza selekcji), wysyłana jest wia
domość IDENTIFY. W ślad za nią może teraz podążać jedna z wiadomości 0x20-0x22,
by określić oznacznik stowarzyszony z tym procesem. W jednej sesji (połączeniu) może
być ustanowiony tylko jeden oznacznik. Jeżeli nie wysłana została żadna z wiadomości
0x20-0x22, proces nie jest kolejkowany.
Informacja statusowa
W fazie STATUS urządzenie TARG przekazuje jeden bajt informujący INIT o zakoń
V
czeniu wykonywania rozkazu. Bajt ten niesie w sobie jednocześnie krótką wiadomość
o sposobie zakończenia.
s •, •
f-
7.2
358 Anatomia PC
Rysunek 6.55.
Bajt statusowy
0 0 0 0 0 Status GOOD
0 0 0 0 1 Status CHECK CONDITION
0 0 1 0 0 Status BUSY
0 1 0 0 0 Status INTERMEDIATE/GOOD
0 1 1 0 0 Status RESERVATION CONFLICT
1 0 1 0 Status QUEUE FULL
0
BIT: 5 4 3 2 1
• STATUS QUEUE FULL: kolejka grupująca rozkazy jest pełna. I tym razem
odczekanie powinno prowadzić do rozwiązania problemu.
Komunikaty
Standard SCSI przewiduje cały rozbudowany system informacyjny, który wspomaga
właściwą wymianę danych. Komunikaty zwane też wiadomościami (MESSAGES) słu
żą więc usprawnieniu połączeń pomiędzy jednostkami SCSI oraz do przekazywania in
formacji statusowych, które wskazują na stan (stopień zaawansowania, wynik) aktyw
nych rozkazów (będących w trakcie realizacji).
Rysunek 6.56. 0
Schemat KOD
Wiadomość jednobajtowa
konstrukcji WIADOMOŚCI
wiadomości
0 1
KOD
PARAMETR Wiadomość dwubajtowa
WIADOMOŚCI
0 1 2 3 n+1
/ r
Tabela 6.20,
Zestaw wiadomości systemu SCSI
Grupa wiadomości dwubajtowych nie jest w ogóle używana przez dyski twarde.
Obsługa dysku twardego 361
Poniższe zestawienie stanowi krótki opis wiadomości systemu SCSI, które mogą być
używane przez dyski twarde.
0 x 0 0 : C O M M A N D C O M P L E T E ( z a k o ń c z o n o w y k o n a n ie r o z k a z u )
0 x 0 2 : S A V E D A T A P O I N T E R S ( z a c h o w a j z e s ta w w s k a ź n ik ó w )
0 x 0 3 : R E S T O R E P O I N T E R S ( p r z y w r ó ć z e s t a w w s k a ź n ik ó w )
Obie wiadomości dotyczą tzw. wskaźników, które omówione zostaną w dalszej części
tego rozdziału.
0 x 0 4 : D I S C O N N E C T ( r o z łą c z e n ie )
0 x 0 5 : I N I T I A T O R D E T E C T E D E R R O R ( w y k r y t o n i e n a t u r a l n e z a c h o w a n ie
in ic ja to r a )
0 x 0 6 : A B O R T ( p r z e r w i j n a t y c h m ia s t )
Inicjator poleca przerwać wykonywanie aktualnej operacji. TARG zeruje swoje bufory
i znaczniki, unieważnia odczytane już dane i informacje statusowe i wchodzi w fazę
BUS FREE.
0 x 0 7 : M E S S A G E R E J E C T ( o d m o w a p r z y j ę c i a w ia d o m o ś c i)
Zarówno INIT jak i TARG mogą użyć tego komunikatu aby zasygnalizować, że nie mogą
zinterpretować odebranej wiadomości: jest błędna lub niezaimplementowana przez
adresata.
0 x 0 8 : N O O P E R A T I O N (w ia d o m o ś ć p u s t a )
Wiadomość nie niesie w sobie żadnych informacji ani nie powoduje żadnych działań.
0 x 0 9 : M E S S A G E P A R I T Y E R R O R ( w y k r y t o b ł ą d p a r z y s t o ś c i)
O xO a: L I N K E D C O M M A N D C O M P L E T E ( z a k o ń c z o n o r o z k a z c z ą s t k o w y )
0 x 0 b : L I N K E D C O M M A N D C O M P L E T E W I T H F L A G ( j . w p lu s f la g a )
Tak jak OxOa, ale dotyczy rozkazów które miały ustawiony bit FLG w bajcie kontrol
nym CDB. Proszę porównać z opisem bajtu kontrolnego i rysunkiem 6.38.
O xO c: B U S D E V I C E R E S E T ( w y z e r o w a n ie )
O xO d : A B O R T T A G ( p o r z u ć w y k o n a n ie p r o c e s u )
O xO e: C L E A R Q U E U E (w y c z y ś ć k o le jk ę p r o c e s ó w )
0 x 2 0 : S I M P L E Q U E U E T A G (u m ie ś ć w k o le jc e )
0 x 2 1 : H E A D O F Q U E U E T A G (u m ie ś ć n a s z c z y c ie )
0 x 2 2 : O R D E R E D Q U E U E T A G (u m ie ś ć n a k o ń c u )
Znaczenie pola Queue Tag omówione jest dokładniej w części tego rozdziału poświęco
nej rozkazom systemowym.
0x12: C O N T IN U E I/O P R O C E S S
0 x 1 3 : T A R G E T T R A N S F E R D IS A B L E
Wiadomość 0x12 wywołuje właśnie takie odpytanie. Inicjator spełnia tutaj rolę jedno
stki docelowej w zainicjowaniu fazy reselekcji.
0 x 8 0 - 0 x f f : I D E N T I F Y ( i d e n t y f i k a c j a je d n o s t k i L U N )
Rysunek 6.58. 1 6 5 4 3 2 1 0
Baji wiadomości 1 DIS 0 0 0 LUN
J______ L
IDENTIFY
Bit 6 (DIS) może być ustawiony jedynie przez inicjator w relacji INIT —> TARG i ozna
cza wtedy, że INIT wyraża zgodę na przeprowadzanie operacji rozłączania jednostek
przez TARG (Disconnect). W przeciwnym razie TARG nie może stosować wiadomości
o kodzie 0x04 i w konsekwencji prowokować rozłączenia. Jeżeli TARG wysyła wiado
mość INDENTIFY, musi zawsze wyzerować bit 6.
Bity 2 -0 adresują jednostkę logiczną (LUN, Logical Unit Number) podległą danemu
urządzeniu. W przypadku dysków twardych LUN musi być zawsze równy zero; nieza
leżnie od fizycznej organizacji (większa liczba dysków) jest tylko jedna jednostka LUN,
a sektory ewentualnych dodatkowych dysków stanowią bloki o kolejnych numerach.
0 x 0 1 : S Y N C H R O N O U S D A T A T R A N S F E R R E Q U E S T ( u z g o d n ie n ie R A O i T P )
Rvsiinek fi fiQ
^ "■ m "■ ™ ™ m m
7 6 5 4 3 2 1 0
Wiadomość 0 0 0 0 0 0 0 1 BAJT 0 (Sygnatura 0x01)
uzgadniająca
0 0 0 0 0 0 1 1 BAJT 1 (Sygnatura 0x03)
parametry trybu
synchroniczn ego 0 0 0 0 0 0 0 1 BAJT 2 (Sygnatura 0x01)
1/4 TP (Transfet Period/ 4) [ns] BAJT 3
1 1 JI .. Il 1 1
RAO (REQ/ACK Offset) BAJT 4
i i i i i ~i— i -
364 Anatomia PC
Uw aga:
Jeżeli RAO równy jest zero, domniemana jest transmisja w trybie asynchronicznym.
RAO = Oxff oznacza natomiast nieograniczoną ilość niepotwierdzonych impulsów
REQ.
P r o c e d u r a u z g a d n ia n ia
Uzgodnione muszą być takie parametry, które umożliwiają prawidłową pracę obydwu
partnerów, nawet gdy ich możliwości techniczne nie są jednakowe. Oznacza to oczy
wiście „równanie do gorszego”.
• Nadawca. Urządzenie wysyłające tę wiadomość po raz pierwszy musi zawrzeć
w niej takie graniczne wartości parametrów transmisji, które gwarantują jeszcze
jego poprawne działanie.
• Odbiorca. Urządzenie otrzymuje omawianą wiadomość. Możliwe są dwie sytu
acje:
• nadesłane parametry umożliwiają jego prawidłowe funkcjonowanie.
Następuje odesłanie wiadomości w tym samym stanie;
• nie jest możliwe zapewnienie poprawnej pracy przy nadesłanych paramet
rach. Wiadomość zostaje odesłana i zawiera graniczne parametry dopusz
czalne dla odbiornika.
System wskaźników
Zgodnie ze specyfikacją SCSI każdy inicjator posiada dwa zestawy tzw. wskaźników:
zestaw bieżący i zestaw zachowany (zapamiętany).
Zestaw bieżący wskazuje na następny bajt (danych, rozkazów lub statusowy), który po
winien być przekazany do TARG. Zestaw ten wykorzystywany jest przez tę z (możliwie
wielu) jednostek TARG, która ma aktualne połączenie z inicjatorem.
_ WSKAŹNIK ZACHOWANY
c *1 X, iii
iii
D Yt
iii
S *1 Z, Z*
TARG
LUNO
LUN 1
TARG
LUNO
Jeżeli TARG przekazał informację Restore Data Pointer, inicjator odszukuje odpowied
ni zestaw wskaźników i umieszcza go w miejscu wskaźników bieżących.
366 Anatomia PC
Rysunek 6.61a.
BUS FREE ARBITRATION, SELEKTION MESSAGE OUT
Przykład
realizacji odczytu
danych z dysku ts © GD
BSY
\ X
SEL
\
ATN
\
RST
C/D X X
l/O X
\
MSG X X
REÛ / \
ACK / \
DB X X SC SI-ID SCSHD (TARG & INIT) < IDENTIFY
>
368 Anatomia PC
Rysunek 6.61b.
Przykład
realizacji odczytu
COMMAND
< MESSAGE IN
danych z dysku CE
BSY SS
SEL
SS
ATN
SS
RST «
C/D
SS \
I/O
SS
M SG ~V
/~
SS
REQ \
ACK X X \ X \
DB < CDB, Bajt-1 ------- (_CDB, Bajl-n y < DISCONECT >
Rysunek 6.61c. M E S S A G E IN
C B U S F R E E > A r b i t r a t i o n ) < ^ R E S E L E K T IO N ^
Przykład NI V N T ----------I X N IX " IX
realizacji odczytu
C E C E C D □ D
danych z dysku
BSY” N
V _ _________ /
/
SEL
ww
------------ SS—
X N
ATN rr
y>
nor rr
>>
C/D ~ ^
s— ss —
X
I/O ^
s— ss —
X
M S G ^
' — s s ------------
X
REQ
— ss- WW
X \
ACK
— ss- / V
DB — ( SCSI-JD j ^SCSMD (TARG &INIT)) ( IDENTIFY )
---------- SS---------- '
Obsługa dysku twardego 369
<
'.|s.
S?:'
ffysu/rcir 6L5id.
RESELECTION
i>
À••
Przykład
realizacji odczytu
>
i
danych z dysku
& BSY
ft
/•? : •••
SEL
ft
-Pi
ATN
ft
RST «
Is s
C/D
ii
i/o ft
MSG
ft
REQ
/ \ / \ i! \
ACK
/ \ / \ ft / \
V
DB
i.
"‘i x
•\ :
/
.
Dane, B a j t - l y -
< Dane>Bajl-2 > Dane, Ba|t-n ^
Rysunek 6.61e.
:>•
¡> K
/.■U
*<
y.
ATN
0 /,
r• •»
Ł* J
RST
;
C/D N
7 ., •
\
I/O \
!C" •«
s
MSG y \
=.* •••
• y •
REQ / \
.V- •
ACK / \
DB Status > ^ COMMAND COMPLETE ^
370 Anatomia PC
Karta takiego układu jest 8-bitowa (tzw. krótka) i może być teoretycznie zainstalowana
w modelu PC/XT. Mówię teoretycznie, bowiem celowość łączenia wysokowydajnej
magistrali SCSI z archaiczną i powolną architekturą XT jest co najmniej problema
tyczna.
Rysunek 6.62.
Płytka kontrolera G> J2
STOI firm y
Seagate 1
W5
W1
W3
W2
AB
CD
• blokW l (BiosArea);
Tabela 6.21.
Możliwości lokalizacji ROM-BIOS STOI w przestrzeni adresowej PC (wersja 8kB)
CA000-CB7FF C B800-
CB87F
C8000-C97FF C9800-C987F
CD
sĘĘĘĘĘsmmmmmmML
CE000-CF7FF CF800-CF87F
CD
ifw jy S V j; i / / / / /
* U>W - £ * - 1 - ••
DF000-DF7FF DF800-DF87F
CD
Kontroler SCSI nadzoruje stan linii magistrali. W razie stwierdzenia aktywności sygna
łu SEL (ma to miejsce np. w fazie reselekcji, gdy dysk wywołuje kontroler) wyzwalane
jest przerwanie sprzętowe. W3 służy do wyboru kanału IRQ, który będzie aktywowany
w tej sytuacji. Do dyspozycji mamy IRQ3 lub IRQ5. Wybór wektorów wskazuje na
wyraźne dziedzictwo architektury XT, w której IRQ3 przyporządkowane było złączu
szeregowemu COM, a IRQ5 twardemu dyskowi (wtedy jeszcze ST412/506). W PC/AT
IRQ3 przypisane jest do COM2, a IRQ5 do LPT2.
ROM BIOS zawiera odpowiednie procedury obsługi przerwania INT13h oraz programy
diagnostyczne i inicjujące. 128-bajtowa pamięć RAM używana jest przez procedury
BIOS.
W górnym obszarze 8kB bloku pamięci znajduje się 1024-bajtowy bufor danych odbie
ranych z magistrali i wysyłanych na nią.
Kilka słów wyjaśnienia wymaga przyjęta tu metoda dostępu do rejestrów układu. Kon
trolery STOI i ST02 stosują mianowicie tzw. Memory Mapped I/O (wejście/wyjście
odwzorowane na przestrzeń pamięciową). W tym trybie adresy portów komunikacyj
nych umieszcza się w zwykłej przestrzeni adresowej PC - w PC przyjęło się umieszcza-
372 Anatomia PC
8kB
Obszar wolny
C987F
512E
Pamięć RAM
Sm .
C97FF
C8000
U w aga:
Jakkolwiek adresy powyżej C9800 leżą w zakresie pokrywanym przez ROM (i jako
takie są przez pewne programy diagnostyczne identyfikowane), nie wolno przepisywać
tego zakresu do pamięci RAM komputera (tzw. Shadowing). Rejestry STOI znajdują się
bowiem fizycznie pod tymi właśnie adresami. Jeżeli Shadowing przeadresuje ten obszar
na jakiś fragment RAM PC, naszych rejestrów już tam nie będzie.
STOI posiada dwa porty: rejestr sterujący i rejestr stanu. Dzięki przyjętej technice adre
sowania zapis dowolnej komórki pamięci z przedziału c9a000-c9bff oznacza wpis do
rejestru sterującego układu. Analogicznie pobranie zawartości dowolnej komórki z tego
zakresu oznacza odczyt rejestru stanu. Techniczna realizacja tego nietypowego zacho
wania układu oparta jest na braku dekodowania ostatnich 9 bitów adresowych.
Rejestr sterujący
Rejestr sterujący STOI (zapis pod dowolny adres w zakresie C9A00-C9BFF)
Rejestr stanu 4
Szyna danych
Bufor danych STOI (zapis lub odczyt pod dowolny adre^w zakresie C9C00—CA000)
ł segment ROM-BIOS do AX
MOV es, ax t* segment w rejestrze ES
MOV di, lcOOh c800:lc00 to początek bloku cBcOO.bfff
MOV si, offset my sector
*
MOV C K , 200h ; 200 {hex} = 512(dec) bajtów
CLD rosnący kierunek, naliczania
MOVSB 512 bajtów z my_sector wystawione
na szynę danych magistrali SCSI
Kontroler synchronizuje więc operacje pobrania bajtu z pamięci operacyjnej PC, wysta
wienia go na szynę danych magistrali SCSI, wysłania impulsu REQ i oczekiwania z na
stępnym cyklem do czasu nadejścia potwierdzenia od TARG (impuls ACK).
Funkcje DOS pozwalają na dostęp do tzw. sektorów logicznych dysku w obrębie par
tycji DOS. Osiągalny jest więc zarówno sektor ładujący (boot sektor), jak i tablica przy
działów (FAT). Poza zasięgiem leży natomiast tablica partycji oraz każda inna partycja.
376 Anatomia PC
P r z y k ła d :
Przytoczony fragment kodu obrazuje wykorzystanie funkcji INT 25h do odczytania
sektora 13 dysku C: i umieszczenia go w tablicy ’Sektor'. Język Turbo-C.
/*
Funkcja czyta sektor logiczny 13 dysku C:
używając przerwania INT25h DOS
i umieszcza go w tablicy Sektor
*/
#include stdio.h
#include dos.h
Jeżeli ustawiona jest flaga Carry, obie funkcje zwracają w rejestrze AX następujące
kody błędów:
K od błędu Znaczenie
Olh nieprawidłowy rozkaz
02h niewłaściwa metryka ID
04h nie znaleziono sektora
08h przepełnienie DMA
lOh błąd CRC lub ECC
20h błąd kontrolera
40h błąd pozycjonowania
8Oh brak reakcji dysku (napędu)
Wraz z wprowadzeniem wersji 4.00 MS-DOS pojawiła się możliwość obejścia tego
ograniczenia. Odpowiednio do tego zmodyfikowane zostały funkcje 25h i 26h. Posze
rzony tryb adresowania sektorów sygnalizowany jest ustawieniem rejestru CX na ffffh.
Przerwanie INT21hDOS
Na szczęście oprócz wyżej opisanych funkcji, które ukierunkowane są na logiczne sek
tory dysku, istnieje funkcja INT 21h, której można przekazywać nazwy plików w trady
cyjnie przyjętej formie NAPĘD:\ŚCIEŻKA\NAZWA.ROZSZERZENIE. Operacje zapi
su i odczytu pojedynczych bajtów definiuje się w odniesieniu do początku pliku lub
miejsca ostatniej operacji.
Przerwanie INT21h jest punktem wejścia do bardzo wielu funkcji, które udostępnia
system operacyjny. Przytaczam tutaj tylko niektóre przykładowe funkcje i to wyłącznie
w odniesieniu do obsługi dysków, gdyż nie jest to książka poświęcona programowaniu
jako takiemu, a raczej opisowi technicznej strony budowy komputera. Dokładniejsze
informacje na temat sposobu użycia przerwania INT21h znajdzie Czytelnik w każdym
podręczniku, który wgłębia się choć trochę w system operacyjny MS-DOS.
Funkcja Działanie
3ch utworzyć plik
3dh otworzyć plik
3eh zamknąć plik
41h usunąć plik
39h utworzyć katalog
3ah usunąć katalog
3bh przejść do innego katalogu
57h odczytać/zmienić informację data/czas pliku
Funkcje BIOS-u
BIOS oferuje szeroki zestaw funkcji gwarantujących bezpieczną (w sensie pewności
działanie na różnym sprzęcie) realizację podstawowych operacji związanych z obsługą
dysków twardych.
Punktem wejścia do tych funkcji jest przerwanie INT13h. Korzystając z nich należy
zwrócić uwagę na kilka szczegółów wynikających z przyjętej tu konwencji numeracji
i adresowania.
380 Anatomia PC
Numeracja cylindrów
Do numeracji cylindrów wykorzystywana jest część rejestru CX
CH CL
bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Bity 7 i 6 rejestru CL tworzą wraz z rejestrem CH 10-bitowy numer cylindra, przy czym
zawartość rejestru CH odpowiada odpowiada bitom 7-0, zaś bity rejestru CL tworzą
bity 8 i 9 numeru. Pozostałe pozycje bitowe rejestru CL adresują zwykle sektor na
ścieżce.
10-bitowy numer cylindra oznacza oczywiście, że BIOS jest w stanie obsługiwać nie
więcej niż 1024 (0-1023) cylindry. Dyski o większej liczbie cylindrów dokonują tzw.
translacji, tj. prezentują na zewnątrz inny rozkład liczby cylindrów, głowic i sektorów
niż mają faktycznie, przy czym zachowana jest całkowita pojemność dysku. >
Numeracja dysków
BIOS identyfikuje dyski twarde poprzez kolejne numery poczynając od 80h. Tak więc
C: —> 80h, D: -> 81h itd. Dla porównania, DOS oznacza napędy począwszy od zera.
Kody błędów
Wszystkie podane funkcje zwracają w rejestrze AH kod błędu, który jest umieszczany
jednocześnie w obszarze danych BIOS-u pod adresem 040h:074h.
Poniżej podaję listę błędów, które mogą się odnosić do dysków twardych. Proszę
zwrócić uwagę, że nie wszystkie kody ze zwracanych w ogólności przez funkcje pracu
jące na korzyść zarówno dyskietek, jak i dysków twardych mają sens w tym drugim
przypadku (np. dysk zabezpieczony przed zapisem).
Funkcja OOh
D z ia ła n ie :
Funkcja sprowadza wewnętrzne rejestry kontrolera do ściśle określonego stanu po
czątkowego. Aktualnie wykonywana operacja zostaje przerwana!
Tabela 6.22.
Lista błędów odnosząca się do dysków twardych
Przykład:
mov ah,00h ; funkcja 0
mov dl,81h ; dysk D:
int 13h ; inicjalizacja kontrolera
Funkcja 01h i
i
D z ia ła n ie : j
Funkcja odczytuje status ostatniejoperacji.Odtwarza w rejestrzeAH bajt statusu taki j
sam jak po ostatnioprzeprowadzonejoperacji bezwzględu na to jak dawno się j
i
zakończyła. |
i
i
i i
>
?
382 Anatomia PC
Funkcja 02h
D z ia ła n ie :
Funkcja czyta jeden lub kilka sektorów z dysku do bufora w pamięci operacyjnej.
Wszystkie przeczytane sektory lokowane są w pamięci począwszy od adresu podanego
w ES:BX, zamazując ewentualnie inne dane. Do obowiązków programisty należy
zarezerwowanie odpowiedniej ilości wolnego obszaru.
Funkcja 03h
D z ia ła n ie :
Funkcja ta jest komplementarnym odpowiednikiem funkcji 02h. Należy tylko zwrócić
uwagę, że jako sektor zapisywane są zawsze pełne 512-bajtowe bloki pamięci (począ
wszy od adresu ES:BX) nawet wtedy, gdy nie zawierają one wyłącznie danych umiesz
czonych tam przez programistę.
Funkcja 04h
D z i a ła n ie :
Funkcja sprawdza poprawność kodów ECC sektora przeprowadzając czytanie próbne.
Funkcja 05h
D z ia ła n ie :
Funkcja formatuje sektory ścieżki lub cylindra. W pamięci należy przygotować odpo
wiednie bloki danych, dla każdego sektora oddzielnie. Blok taki składa się z czterech
bajtów które oznaczają kolejno:
bajt 0 numer ścieżki;
bajt 1 numer głowicy;
bajt 2 numer sektora;
bajt 3 liczba bajtów w sektorze:
0 = 128,
1 = 256,
2 = 512,
3 = 1024.
Uw aga:
Nie wolno stosować tej funkcji w odniesieniu do dysków posługujących się tłumacze
niem (translating) lub posiadających własny zintegrowany kontroler (np. IDE).
Funkcja 06h
D z ia ła n ie :
Ścieżka zawierająca więcej niż jeden uszkodzony sektor jest znakowana jako zła, co
uniemożliwia na niej zapis danych. Funkcja obsługuje poprawnie wyłącznie kontroler
dysku twardego modelu XT.
U w aga:
Nie wolno stosować tej funkcji w odniesieniu do dysków posługujących się tłumacze
niem (translating) lub posiadających własny zintegrowany kontroler (np. IDE).
Funkcja 07h
D z i a ła n ie :
Funkcja formatuje cały dysk począwszy od podanego cylindra. Poprawnie obsługiwany
jest wyłącznie kontroler dysku twardego modelu XT.
Uw aga:
Nie wolno stosować tej funkcji w odniesieniu do dysków posługujących się tłumacze
niem (translating) lub posiadających własny zintegrowany kontroler (np. IDE).
Funkcja 08h
Działanie:
Funkcja dostarcza informacji o parametrach geometrycznych napędu
l&
t
Tabela 6.23.
*V: Budowa tablicy parametrów (system XT)
jf i":
.*Obh czas oczekiwania na wynik samokontroli (**) bajt
•?ł.-
•C
Js
Tabela 6.24.
Budowa tablicy parametrów (system A T)
Tabela 6.25.
Budowa tablicy parametrów (system EIDE)
Tabela 6.26.
Budowa rozszerzonej tablicy parametrów (system EIDE)
Funkcja 09h
D z i a ła n ie :
Funkcja dopasowuje parametry geometryczne napędu.
Jeżeli dany dysk twardy nie odpowiada pod względem parametrów geometrycznych
żadnemu z modeli zdefiniowanych na stałe w programie Setup mamy zwykle możli
wość wyboru typu dodatkowego, najczęściej 47, co pozwala na swobodne określenie
geometrii naszego napędu. Wprowadzone przez użytkownika dane wędrują do dwóch
16-bajtowych tablic (oddzielnie dla pierwszego i drugiego dysku systemowego).
Funkcja Oah
D z ia ła n ie :
Funkcja czyta od jednego do 127 sektorów (wraz z towarzyszącymi bajtami ECC)
i umieszcza je w określonym buforze w pamięci operacyjnej. Nie jest przeprowadzana
żadna korekcja przez system ECC kontrolera, tzn. wszystkie dane z każdego sektora
transmitowane są w niezmienionym stanie.
CL sektor początkowy
DL numer dysku
DH numer głowicy
ES:BX Adres bufora odczytu w pamięci operacyjnej
Carry ustawiany gdy błąd
Funkcja Obh
D z ia ła n ie :
Funkcja zapisuje od jednego do 127 sektorów (wraz z towarzyszącymi bajtami ECC)
pobierając je z określonego bufora w pamięci operacyjnej. Nie jest przeprowadzana
żadna korekcja przez system ECC kontrolera, tzn. wszystkie dane z pamięci transmito
wane są w niezmienionym stanie.
Funkcja daje znakomitą okazję do sprawdzenia działania układów ECC. W tym celu
wystarczy zapisać dowolny sektor wraz z celowo zafałszowanymi bajtami kontrolnymi,
a następnie poddać go próbie odczytu.
Uwaga:
W buforze zapisu należy przygotować 516 bajtów/sektor (512 bajtów danych + 4 bajty
ECC).
390 Anatomia PC
Funkcja Och
D z i a ła n ie :
Funkcja aktywuje określoną głowicę i ustawia ją nad zadanym cylindrem.
Funkcja Odh
D z i a ła n ie :
Inicjalizacja (reset) napędu.
Funkcja Oeh
D z i a ła n ie :
Funkcja transmituje aktualną zawartość 512-bajtowego bufora kontrolera (bufor sekto
ra) do wskazanego obszaru w pamięci operacyjnej. Z dysku nie są czytane żadne dane,
a funkcja służy w pierwszej linii kontroli przepływu informacji między kontrolerem
a pamięcią.
Funkcja Ofh
D z ia ła n ie :
Funkcja transmituje 512 bajtów ze wskazanego obszaru pamięci do bufora kontrolera
(bufor sektora). Na dysk nie są zapisywane żadne dane, a funkcja służy w pierwszej linii
kontroli przepływu informacji między kontrolerem a pamięcią.
Obsługa dysku twardego 391
^<
:’
•'
'H
Rejestr Parametr Zwracana wartość
AH Ofh kod błędu
DL numer dysku
ES:BX Adres obszaru pamięci
k-!*•
Carry ustawiany gdy błąd
Funkcja 10h
D z ia ła n ie :
Funkcja sprawdza gotowość dysku do wykonywania poleceń
S’ •
Vi*.-
..1 ?•.
DL numer dysku
* *
t-
Funkcja 11h
D z ia ła n ie :
Funkcja ustawia głowice nad ścieżką zerową (kalibracja)
&•.
& Rejestr Parametr Zwracana wartość
£•
>•
iV.
AH llh kod błędu
DL numer dysku
&
• Carry ustawiany gdy błąd
Funkcja 12h
.S.J
D z ia ła n ie :
Funkcja sprawdza pamięć RAM kontrolera dysku twardego.
**•:
U w aga:
Nie każdy wariant BIOS-u ma zaimplementowaną tę funkcję
392 Anatomia PC
Funkcja 13h
D z ia ła n ie :
Kontroler przeprowadza obszerny test napędu i zwraca kod ewentualnego błędu. Usta'
wioną flaga Carry i kod błędu OOh oznacza również pomyślne zakończenie.
U w aga:
Nie każdy wariant BIOS'u ma zaimplementowaną tę funkcję.
Funkcja 19h
D z ia ła n ie :
Funkcja przesuwa głowice dysku twardego nad cylinder określany jako pozycja bez
pieczna, co ma chronić zarówno głowice jak i powierzchnię magnetyczną przed uszko
dzeniami spowodowanymi wstrząsami. Funkcja jest szczególnie użyteczna w razie
konieczności transportu napędu, który nie jest wyposażony w mechanizm samo
czynnego parkowania głowic po wyłączeniu napięcia zasilającego.
Funkcja 41h
D z ia ła n ie :
Funkcja sprawdza, czy dysk jest zgodny ze specyfikacją EIDE.
Uwaga:
Nie wszystkie wersje BIOS-u mają zaimplementowaną tę funkcję.
Funkcja 48h
Działanie:
Funkcja odczytuje parametry dysku twardego EIDE.
Uwaga:
Nie wszystkie wersje BIOS-u mają zaimplementowaną tę funkcję.
W odpowiedzi na sterownik Hercules, firma IBM (która nigdy de facto nie uznała tego
standardu) opracowała sterownik EGA (.Enhanced Graphics Adapter ), o rozdzielczości
640 na 350 punktów i możliwości jednoczesnego wyświetlenia 16 kolorów z pośród 64
możliwych. Potomkiem karty EGA w prostej linii jest sterownik VGA (Video Graphics
Array) i jako taki jest zgodny ze swoimi poprzednikami. Jest to jego ogromną zaletą
gdyż większość programów działających ze sterownikami MD A i CG A będzie działała
poprawnie ze sterownikiem VGA.
W pewnych przypadkach może on podwoić liczbę wierszy tekstu do 50, ale dzieje się to
kosztem zmniejszenia rozmiarów znaku do 8 na 8 punktów. Można także zwiększyć
liczbę wyświetlanych kolumn.
W miarę rozwoju technologii parametry standardowego VGA stały się nie wystarczają
ce i wielu producentów zaczęło swoje produkty wyposażać w dodatkowe opcje. Rozbu
dowa obejmuje głównie zwiększenie pamięci karty graficznej (standardowy sterownik
VGA posiada 256 KB pamięci VRAM - VIDEO RAM) oraz dodanie nowych trybów
graficznych (1024 x 768, 800 x 600, 2048 x 1024). Oprócz rozdzielczości zwiększeniu
uległa także liczba jednocześnie wyświetlanych kolorów; obecnie istnieją karty umożli
wiające wyświetlenie jednocześnie 32768, 65536 kolorów lub każdego punktu w innym
kolorze, wybieranym z palety ponad 16 milionów odcieni (224 odcieni).
h .'
Niestety, jak dotąd nie powstał jednolity standard kart SVGA (Super VGA - tak nazy
wane są karty VGA posiadające rozbudowane możliwości). Główni producenci proce
sorów graficznych kart SVGA (ATI Technologies, Chips and Technologies, Genoa Sys
tems, Paradise/Westem Digital, Trident, Tseng Labs i Video 7/Headland Technologies)
prześcigali się w dodawaniu nowych możliwości do swoich produktów - niestandardo
we tryby pracy, w zależności od użytego procesora graficznego, mają różne numery,
pamięć zorganizowana jest w różny sposób i różne są adresy niestandardowych rejes
trów. Jako przykład niech posłuży tabela 7.1, ukazująca numery niestandardowych
trybów graficznych sterowników różnych producentów.
x..:
Tabela 7.1.
Rodzina procesorów Intel 80x86
Liczba Liczba
Nr trybu Rozdzielczość Nr trybu Rozdzielczość
kolorów kolorów
ATI Technology Paradise/Western Digital
53 800 X 600 16 54 924 X 387 16
54 800 X 600 16 54 multisync 1056 x 387 16
55 1024 x 768 16 55 924 x 400 16
61 640 X 400 256 55 multisync 1056 x 400 16
62 640 X 480 256 56 924 x 387 14
63 800 X 600 256 56 multisync 1056 x 387 14
65 1024 X 768 16 57 924 x 400 14
Chips and Technologies 57 multisync 1056 x 400 14
25 640 X 480 16 Trident
6A 800 X 600 16 5B 800 x 600 16
70 800 X 600 16 5C 640 x 400 256
71 960 X 720 16 5D 640 x 480 256
72 1024 X 768 16 5E 800 x 600 256
78 640 X 400 256 5F 1024 x 768 16
79 640 X 480 256 61 portrait 768x 1024 16
7A 768 X 576 256 62 1 0 2 4 x 768 256
1C 800 X 600 256 Tseng Labs
7E 1024x768 256 25 640 x 480 16
Genoa Systems 29 800 x 600 16
59 7 2 0 X 512 16 2D 640 x 350 256
5B 640 X 350 256 2E 640 x 480 256
5C 640 X 480 256 2F 640 x 400 256
5D 7 2 0 X 512 256 30 800 x 600 256
5E 800 X 600 256 37 1024x768 16
5F 1 0 2 4 X 768 16 38 1024x768 256
6A 800 X 600 16 Video 7/Headland Technologies
6C 800 X 600 256 60 752 x 4 1 0 16
73 640 X 480 16 I61 720 x 540 16
79 800 X 600 16 800 x 600 16
62
1C 512x512 16 63 1024x768 2
ID 512x512 256 \64 1024x768 4
7E 640 X 400 256 I65 1024x768 16
7F 1024x768 4 66 640 x 400 256
A ,
N N+l O
ii w
CD
~D
CD
¿i ]
i
pamięć obrazu
Dla kart EGA i VGA podstawową metodą odwzorowania ekranu jest metoda płatowa
(ang. planar, bit mapped). Pamięć obrazu dzielona jest na 4 płaty (błoki) po 64 KB
każdy (patrz rysunek 7.2). W każdym bloku jednemu bitowi odpowiada jeden punkt -
dzięki takiej strukturze 256 KB pamięci obrazu zajmuje 64 KB przestrzeni adresowej.
Konsekwencją przyjętej organizacji pamięci jest utrudniony dostęp do danych. Zapis
lub odczyt wymaga dodatkowo programowania rejestrów układu graficznego.
N N+l-
Karty graficzne 401
Rysunek 7.3. p a m ię ć k a r t y
Stronicowanie
pamięci techniką
pojedynczego
okna
Rysunek 7A p a m ię ć k a r t y
Stronicowanie
pamięci techniką
dwóch
nakładających
się okien
402 Anatomia PC
Rysunek 7.5. p a m ię ć k a r t y
Stronicowanie
O
pamięci techniką
p rze s trze ń
dwóch nie
a d re s o w a CPU
n okładających
się okien AOOOOh
kB
A8000h
AFFFFh
1M B
Tryby tekstowe
W trybach tekstowych pamięć obrazu sterowników EGA, VGA i SVGA zorganizowana
jest tak samo jak w sterowniku MDA i CGA. Z tego powodu została zachowana całko
wita zgodność pomiędzy poszczególnymi rodzajami kart graficznych.
Każdy znak reprezentowany jest przez dwa bajty pamięci obrazu. Pierwszy z nich za
wiera kod ASCII wyświetlanego znaku, drugi zaś określa jego atrybut. Wyświetlanie
znaków odbywa się bardzo szybko, gdyż do zapisania jednego znaku wymagane jest
przesłanie tylko dwóch bajtów. W pamięci obrazu kody znaków zapisane są na prze
mian z atrybutami, dlatego do wyświetlania znaków można wykorzystać instrukcję
asemblera rep movsx.
W trybie tekstowym znak w lewym górnym rogu ekranu znajduje się w zerowym wier
szu i zerowej kolumnie.
Karty graficzne 403
Tabela 7.2:
Tekstowe tryby pracy kart graficznych
Adres początku
Numer trybu Rozdzielczość Liczba kolorów Karta graficzna
pamięci obrazu
Oh 40x25 16/8 szarości CGA, EGA, VGA B8000h
lh 40x25 16/8 CGA, EGA, VGA B8000h
2h 80 x 25 16/8 szarości CGA, EGA, VGA B8000h
3h 80x25 16/8 CGA, EGA, VGA B8000h
7h ^ 80 x 25 3 MDA, EGA, VGA B0000h
rozmiar matrycy znaku zależy od karty graficznej:
tryby 0-3: CGA 8 x 8 , EGA 8 x 14, VGA 9 x 1 6
tryb 7: MDA 9 x 14, EGA 9 x 1 4 VGA 9 x 1 6
Tryby graficzne
W zależności od trybu graficznego zmienia się organizacja pamięci obrazu. Jednak we
wszystkich trybach graficznych kolejne komórki pamięci obrazu reprezentują kolejne
punkty położone w kolejnych liniach poziomych, odczytywane z lewa na prawo i od
góry do dołu. W trybach dwukolorowych pojedynczy punkt opisywany jest przez jeden
bit. Osiem kolejnych punktów opisywanych jest przez, jeden bajt pamięci obrazu, przy
czym najbardziej znaczący bit znajduje się z lewej strony, zaś najmniej znaczący z pra
wej. W trybach czterokolorowych pojedynczy punkt opisywany jest dwoma bitami, a w
trybach szesnastokolorowych - czterema. W specyficznym 256-kolorowym trybie 13h
pojedynczy punkt opisywany jest jednym bajtem. Większość gier korzysta z tego trybu
mimo stosunkowo niskiej rozdzielczości (320 x 200), gdyż do umieszczenia punktu na
ekranie nie trzeba wykonywać żadnych złożonych operacji - wystarczy policzyć prze
sunięcie względem początku pamięci obrazu.
Tabela 7,3.
Graficzne tryby pracy kart graficznych
Sterowniki SVGA oferują dodatkowe tryby graficzne, na przykład tryb 640 x 480 w 256
kolorów, 800 x 600 w 16 i 256 kolorach lub tryb 1024 x 768 w 16 i 256 kolorach.
W trybach graficznych o płatowej organizacji pamięci obrazu, odczyt lub zapis komó
rek pamięci może być różnie zinterpretowany przez poszczególne układy karty. Z tego
powodu wprowadzone zostały cztery tryby zapisu i dwa tryby odczytu.
0. tryb zapisu
W zerowym trybie zapisu dane przesyłane przez procesor zapisywane są bezpośrednio
w pamięci obrazu. Zapisywany bajt może być poddany operacji przesunięcia cyklicz
nego, możliwe jest także zamaskowanie poszczególnych bitów zapisywanego bajtu. Ta
operacja wymaga wykonania cyklu odczyt-modyfikacja-zapis. Podczas odczytu cztery
bajty z poszczególnych płatów pamięci obrazu zapisywane są w rejestrach zatrzasko
wych.
Przed zapisem bajtu mogą być na nim wykonane operacje logiczne AND, OR lub XOR>
których drugim argumentem jest zawartość rejestrów zatrzaskowych.
Karty graficzne 405
Dane mogą być zapisywane osobno do poszczególnych płatów; jedną instrukcją mov
można zapisać cztery bajty pamięci obrazu, po jednym bajcie na płat.
1. tryb zapisu
Korzystając z zawartości rejestrów zatrzaskowych pojedynczą instrukcją mov można
modyfikować wszystkie cztery płaty pamięci obrazu. Rejestry zatrzaskowe ładowane są
podczas odczytu pamięci obrazu przez procesor. Pierwszy tryb zapisu umożliwia bardzo
szybkie kopiowanie obszarów pamięci obrazu.
2. tryb zapisu
W tym trybie wszystkie cztery płaty mogą być modyfikowane przez cztery najbardziej
znaczące bity przesyłanego bajtu. Zerowy bit jest ośmiokrotnie kopiowany i
zapisywany do komórki płatu zerowego. Pierwszy bit jest ośmiokrotnie kopiowany i
zapisywany do komórki płatu pierwszego. Podobnie dzieje się z bitami drugim i
trzecim, które powielone zapisywane są odpowiednio do drugiego i trzeciego płatu
pamięci obrazu. Do określenia, które z ośmiu bitów faktycznie mają zostać zapisane do
pamięci obrazu służy rejestr modyfikacji bitów {bit mask register).
3. tryb zapisu
Trzeci tryb zapisu dostępny jest wyłącznie w sterowniku VGA i jest bardziej skompli
kowany. Dane zapisywane do pamięci obrazu pobierane są z rejestru ustawiania/zero
wania (set/reset register). Każdy z czterech najmniej znaczących bitów rejestru jest po
wielany osiem razy i zapisywany do odpowiednich płatów pamięci obrazu. Zapisywane
bity mogą być maskowane operacją AND z przesuniętym cyklicznie bajtem wysłanym
przez procesor. Bity o wartości 0 są kopiowane do pamięci z rejestrów zatrzaskowych,
zaś bity o wartości 1 są albo kopiowane z rejestru ustawiania/zerowania lub podlegają
operacji logicznej na bitach tego rejestru i odpowiednich bitach rejestrów zatrzasko
wych. Możliwe jest także zablokowanie dostępu do poszczególnych płatów pamięci
przez wpisacie odpowiedniej wartości do rejestru blokowania pamięci. Tryb ten jest
szczególnie przydatny przy wyświetlaniu na ekranie jednokolorowych wzorów.
0. tryb odczytu
W tym trybie odczytu przesyłane bajty pobierane są z pamięci obrazu. Podczas
pojedynczego odczytu dostępny jest tylko jeden, aktywny płat pamięci. Jeśli
poszczególne punkty są reprezentowane przez poszczególne bity na wszystkich płatach
pamięci, operacja jednego odczytu może zwrócić bity ośmiu sąsiadujących punktów.
1-tryb odczytu
W pierwszym trybie odczytu jako rezultat operacji zwracana jest wartość wynikająca
z porównania zawartości pamięci z rejestrem porównania kolorów (color compare
register). Poszczególne bity rejestru są uwzględnianie na podstawie zawartości rejestru
opuszczania kolorów {color don 7 care register). W porównaniu uczestniczą wszystkie
406 Anatomia PC
niezablokowane płaty pamięci. Odczytany bajt zawiera rezultat ośmiu równoległych po
równań, po jednym dla każdego z ośmiu sąsiadujących poziomo punktów reprezento
wanych przez pojedynczy bajt.
Standard VESA
Standard VESA ukazywał się w kilku edycjach. Do chwili obecnej opublikowano wska
zania techniczne dotyczące:
• parametrów monitorów przeznaczonych do współpracy z kartami SVGA;
• numeracji i rozdzielczości trybów graficznych i znakowych;
Kolejne uzupełnienie (VESA BIOS 1.1) wprowadziło nowe tryby tekstowe oraz dwie
kolejne funkcje, przeznaczone do wyboru wyświetlanego na ekranie obszaru pamięci.
Tabela 7A
Tryby graficzne i tekstowe wprowadzone w standardzie VESA
Rejestry sterownika EGA służą tylko do zapisu, niemożliwe jest odczytanie ich zawar
tości. Jeżeli chcemy zachować wpisane wartości, musimy w pamięci RAM zachować
ich kopie.
b it 7 b it 6 b it 5 X b it 3 b it 2 b it 1 b it 0
Zapis do rejestru odbywa się przez podanie adresu 3C2h, a odczyt przez podanie adresu
3CCh.
Karty graficzne 409
Pierwszy rejestr stanu (input status register one) - adres 3BAh (3dah)
Różne informacje o sterowniku.
Rejestr adresowy układu graficznego (graphics 1 and 2 address registei) - adres 3CEh
Rejestr adresowy układu graficznego wiąże rejestr informacyjny z rejestrami wewnętrz
nymi układu.
Karty graficzne 413
Zawartość rejestru brana jest pod uwagę tylko w pierwszym trybie odczytu. Jeśli numer
koloru punktu jest zgodny z numerem zapisanym w rejestrze, wartości bitów odczyta
nych z pamięci obrazu będą równe 1, w przeciwnym przypadku - 0.
Rejestr przesunięcia i wyboru funkcji (data rotate/function select registei) - indeks 03h
Rejestr przesunięcia i wyboru funkcji służy do określenia działań wykonywanych na da
nych zapisywanych do pamięci obrazu. Określa, o ile bitów ma zostać przesunięty bajt
przesyłany do pamięci obrazu i czy na tym bajcie będzie wykonywana operacja logicz
na z zawartością rejestru zatrzaskowego.
Rejestr wyboru płatu do odczytu (read map select registei) - indeks 04h
Rejestr wyboru płatu do odczytu służy do określenia numeru płatu pamięci, z którego
zostanie odczytany następny bajt.
Zawartość tego rejestru jest brana pod uwagę tylko w zerowym trybie odczytu.
Karty graficzne 415
Nie używ. bit 6 bit5 bit 4 bit 3 Nie używ. bit 1 bitO
bit 7 me używany;
bit 6 dotyczy trybu 256-kolorowego:
0 - bity z pamięci obrazu są przepisywane do rejestrów
przesuwających,
1 - podczas zapisu do pamięci obrazu bajt jest zamieniany
na cztery dwubitowe wartości wysyłane do rejestru sterowania
atrybutem;
bit 5 sposób ładowania rejestrów przesuwających:
0 —bity z pamięci obrazu są przepisywane do rejestrów
przesuwających,
1 - nieparzyste bity każdego bajtu pamięci obrazu są umieszczane
w rejestrach przesuwających nieparzystych płatów pamięci;
bity parzyste bajtów pamięci obrazu są umieszczane
w rejestrach przesuwających parzystych płatów pamięci.
Pozwala to na emulacje trybu czterokolorowego karty CGA ;
bit 4 adresowanie przemienne:
0 —standardowy sposób adresowania,
1 —komórki o parzystych adresach położone na parzystych płatach
pamięci mają adresy parzyste; komórki nieparzyste
na nieparzystych płatach mają adresy nieparzyste. Pozwala to
na podwojenie rozmiaru przestrzeni adresowej;
bit 3 numer trybu odczytu:
0 - zerowy tryb odczytu,
1 - pierwszy tryb odczytu;
bit 2 nie używany;
bity 1-0 tryb zapisu:
00 - zerowy tryb zapisu,
01 —pierwszy tryb zapisu,
10 —drugi tryb zapisu,
11 - trzeci tryb zapisu.
Jeśli pamięć obrazu rozpoczyna się od adresu A000:0000 i ma rozmiar 128 kB, wystę
puje konflikt adresów pomiędzy sterownikami zainstalowanymi w systemie.
Standardowym kolorem krawędzi ekranu we wszystkich trybach pracy jest kolor o nu
merze 0 (zwykle czarny). Dla niektórych sterowników nie jest możliwe określenie kolo
ru brzegu ekranu innego niż czarny.
Rejestr uwzględnianych płatów pamięci (color piane enable register) - indeks 12h
Rejestr uwzględnianych płatów pamięci służy do określenia płatów pamięci, które będą
brane pod uwagę podczas wyświetlania punktów. Pominięte płaty są traktowane tak,
jakby były wypełnione zerami.
tryby graficzne
tryby tekstowe
256-kolorowe 16-kolorowe
0000 1 0 0
0001 2 1
0010 3 1 2
0011 4 3
0100 5 2 4
0101 6 5
0110 7 3 6
0111 8 7
1000 0
Po każdej zmianie trybu pracy do rejestru ograniczającego jest wpisywana wartość FFh.
Rejestr adresowy odczytu przetwornika {PEL address read mode registei) - adres 3C7h
Rejestr adresowy odczytu przetwornika służy do rozpoczęcia cyklu odczytu zawartości
rejestrów wzorców kolorów.
Pomiędzy dwoma odczytami rejestru informacyjnego powinno upłynąć co najmniej 240 ns.
Rejestr adresowy zapisu przetwornika (PEL address write mode register) - adres 3C8h
Rejestr adresowy zapisu przetwornika służy do rozpoczęcia cyklu zapisu do rejestrów
wzorców kolorów.
Pomiędzy dwoma zapisami rejestru informacyjnego powinno upłynąć co najmniej 240 ns.
Każdy cykl zapisu/odczytu wzorca koloru składa się z trzech operacji zapisu/odczytu
6-bitowych wartości odpowiadających kolejno składowej czerwonej, zielonej i niebies
kiej wzorca koloru.
Pierwszy cykl zapisu musi być poprzedzony wpisaniem do rejestru adresowego zapisu
przetwornika (adres 3C8h) numeru pierwszego modyfikowanego wzorca koloru.
Pierwszy cykl odczytu musi być poprzedzony wpisaniem do rejestru adresowego
odczytu przetwornika (adres 3C7h) numeru pierwszego odczytywanego wzorca koloru.
Rejestr całkowitego czasu wyświetlania linii (horizontal total registei) - indeks OOh
Rejestr całkowitego czasu wyświetlania linii służy do określenia czasu trwania cyklu
wyświetlania poziomej linii obrazu.
Na czas wyświetlania linii składa się czas wyświetlania punktów obrazu, czas wyświet
lenia prawej krawędzi obrazu, czas powrotu pionowego i czas wyświetlania lewej kra
wędzi obrazu.
Wyświetlanie poziome kończy się w momencie osiągnięcia przez licznik znaków war
tości zawartej w rejestrze + 1.
Rejestr początku wygaszania poziomego (start horizontal blanking register) - indeks 02h
Wartość zawarta w rejestrze początku wygaszania poziomego określa moment rozpo
częcia wyświetlania prawego brzegu ekranu i wygaszenie plamki.
Rejestr końca wygaszania poziomego (end horizontal blanking registei) - indeks 03h
wyświetlania
czenia wygaszania poziomego.
W rejestrze znajduje się pięć najmniej znaczących bitów wartości określającej koniec
wygaszania poziomego. Bit 5 znajduje się w rejestrze końca powrotu poziomego, a bity
7-6 są równe dwóm najbardziej znaczącym bitom rejestru początku wygaszania pozio
mego.
Rejestr początku powrotu poziomego (start horizontal retrace registei) - indeks 04h
Wartość zawarta w rejestrze początku powrotu poziomego określa moment rozpoczęcia
powrotu poziomego.
Rejestr końca powrotu poziomego (end horizontal retrace registei) - Indeks 05h
Wartość zawarta w rejestrze końca powrotu poziomego określa moment zakończenia
powrotu poziomego.
Rejestr zawiera pięć mniej znaczących bitów wartości określającej koniec powrotu po
ziomego. Bity bardziej znaczące są równe najstarszym bitom rejestru początku powrotu
poziomego.
Rejestr całkowitego czasu wyświetlania obrazu (vertical total registei) - indeks 06h
Wartość zawarta w rejestrze całkowitego czasu wyświetlania obrazu odpowiada ośmiu
najmniej znaczącym bitom wartości określającej całkowity czas wyświetlania obrazu.
Bity ósmy i dziewiąty znajdują się w rejestrze przepełnień układu sterowania wyświet
laczem.
Jednostką czasu jest czas wyświetlania pojedynczej linii. Cykl wyświetlania obrazu
rozpoczyna się od wyświetlenia pamięci obrazu, następnie wyświetlany jest dolny brzeg
ekranu, następuje powrót pionowy, po czym wyświetlany jest górny brzeg obrazu.
•JS i
Rejestr położenia pierwszej linii (preset scan linę registei) - indeks 08h
Rejestr położenia pierwszej linii zawiera numer linii, od której wyświetlana jest pier
wsza linia znaków.
-.y
Rejestr ostatniej linii znaku (max scan line registei) - indeks 09h
Rejestr ostatniej linii znaku służy do określenia wysokości wyświetlanych znaków
À ' w punktach.
u?-
Rejestr pierwszej linii kursora (cursor start registei) - indeks OAh
Rejestr pierwszej linii kursora określa odległość górnej linii kursora od górnej krawędzi
znaku.
£
-,ys
* '•’. 4 *
•V-;
428 Anatomia PC
Bardziej znacząca część adresu znajduje się w rejestrze o indeksie OCh, mniej znacząca
- w rejestrze o indeksie ODh. Zmiana zawartości tych rejestrów powoduje przesunięcie
początku wyświetlanego okna.
bity 7-0 bardziej i mniej znacząca część adresu znaku zawiającego kursor.
Karty graficzne 429
Bardziej znacząca część adresu zawarta jest w rejestrze o indeksie OEh, mniej znacząca
- w rejestrze o indeksie OFh.
Rejestr końca wyświetlania pionowego ( vertical display end registei) - indeks 12h
Rejestr końca wyświetlania pionowego zawiera osiem mniej znaczących bitów wartości
określającej moment końca wyświetlania zawartości pamięci obrazu.
Nie używ. bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 ... .
Rejestr początku wygaszania pionowego (start vertical blanking registei) - indeks 15h
Rejestr początku wygaszania pionowego zawiera osiem mniej znaczących bitów war
tości określającej moment rozpoczęcia wygaszania pionowego.
Ósmy bit wartości początku wygaszania pionowego znajduje się w rejestrze przepeł
nień, a bit dziewiąty znajduje się w rejestrze wysokości znaku.
Rejestr końca wygaszania pionowego (end vertical blanking registei) - indeks 16h
W rejestrze końca wygaszania pionowego znajduje się osiem mniej znaczących bitów
wartości określającej moment zakończenia wygaszania pionowego.
Rejestr porównania linii zawiera osiem mniej znaczących bitów numeru linii dzielącej
obraz. Bit ósmy znajduje się w rejestrze przepełnień, a bit dziewiąty znajduje się
w rejestrze wysokości znaku.
Adres pierwszego wyświetlanego znaku dla górnego obszaru wynika z zawartości re
jestrów adresowych, a adres początku dolnego obszaru zawsze wynosi zero.
Do wszystkich funkcji BIOS-u sterownika można odwołać się poprzez przerwanie pro
gramowe INT lOh. Parametry wejściowe i wyjściowe przekazywane są w rejestrach
procesora oraz poprzez wydzielone obszary pamięci. Numer funkcji i podfunkcji prze
kazywany jest zawsze w rejestrach AH i AL lub BL.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Lewy górny róg ekranu ma pozycję 0,0. W trybach 04h do 06h i l l h do 13h istnieje
tyłko jedna strona graficzna o numerze 0.
P a r a m e t r y w e jś c io w e :
AH 03h;
BH numer strony.
W y jś c ie :
CH numer górnej linii kursora;
CL numer dolnej linii kursora;
Karty graficzne 435
P a r a m e t r y w e jś c io w e :
AH 06h;
AL wartość przesunięcia w wierszach;
BH atrybut spacji wypełniających puste linie;
CH numer wiersza lewego górnego rogu obszaru;
CL numer kolumny lewego górnego rogu obszaru;
DH numer wiersza prawego dolnego rogu obszaru;
DL numer kolumny prawego dolnego rogu obszaru.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Wiersze przewinięte za dolną krawędź obszaru zostają utracone. Podanie wartości
przesunięcia równej 0 (AL = 0) powoduje wypełnienie spacjami (wymazanie) całego
podanego obszaru. Pozycja kursora pozostaje bez zmian.
P a r a m e t r y w e jś c io w e :
AH OFh.
W y jś c ie :
AH liczba wyświetlanych kolumn;
AL numer trybu pracy;
BH numer wyświetlanej strony.
P a r a m e t r y w e jś c io w e :
AH 08h;
BH numer strony.
W y jś c ie :
AH atrybut znaku;
AL kod ASCII znaku
U w a g i d o d a tk o w e :
W trybach graficznych zawartość rejestru AL powinna zostać zignorowana
Karty graficzne 437
iC’
t
s BL w tekstowych trybach pracy - atrybut znaku, w graficznych
trybach pracy - numer koloru;
CX ilość kopii znaku.
U w a g i d o d a tk o w e :
i*.
Pozycja kursora nie ulega zmianie; znaki sterujące nie są brane pod uwagę, lecz są
wyświetlane tak jak normalne znaki.
AH OAh;
AL kod ASCII znaku;
W
W
:V:
BH numer strony;
BL kolor (numer koloru) w graficznych trybach pracy;
CX liczba kopii znaku w AL.
•V*
i :
z!*
.*•
5
> . ••
W y jś c ie :
y-:
brak
ą- i*
U w a g i d o d a tk o w e :
%
V A*>
P a r a m e t r y w e jś c io w e :
AH OBh;
BH OOh;
BL numer koloru.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
W tekstowych trybach pracy numer koloru musi zawierać się w przedziale 0-31.
W graficznych trybach pracy numer koloru musi zawierać się w przedziale 0-15.
CX numer kolumny;
DX numer linii.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Ustawienie najbardziej znaczącego bitu rejestru BL (bit 7 = 1 ) powoduje wykonanie
funkcji XOR pomiędzy kolorem w rejestrze AL a kolorem na ekranie.
Przy dużej liczbie punktów użycie tej funkcji znacznie spowalnia działanie programu.
Bezpośredni dostęp do pamięci obrazu trwa o wiele krócej.
Funkcja ODh - Odczytanie koloru punktu (piksela) w graficznych trybach pracy (EGA/VGA)
Funkcja służy do pobrania koloru punktu w określonym miejscu ekranu.
P a r a m e t r y w e jś c io w e :
AH ODh;
BH numer strony;
CX numer kolumny;
DX numer linii.
W y jś c ie :
AL kolor (numer koloru) punktu.
U w a g i d o d a tk o w e :
Przy dużej liczbie punktów użycie tej funkcji znacznie spowalnia działanie programu
Bezpośredni dostęp do pamięci obrazu trwa o wiele krócej.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Funkcja działa zarówno w trybach graficznych jak i tekstowych. Brane są pod uwagę
niektóre kody sterujące: 07h - sygnał dźwiękowy BEL, 08h — cofnięcie kursora BS,
ODh — powrót na początek linii CR i OAh — przejście do nowej linii LF, natomiast
pozostałe kody sterujące wyświetlane sąjak normalne znaki.
440 Anatomia PC
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Zwracana informacja jest odczytywana z kolejnych rejestrów palety oraz rejestru koloru
krawędzi ekranu i umieszczana we wskazanym obszarze pamięci. Pierwsze szesnaście
bajtów zawiera numery kolejnych wzorców kolorów (0-15), a bajt o adresie ES:DX +
16 zawiera numer wzorca koloru krawędzi ekranu.
U w a g i d o d a tk o w e :
Kolejne rejestry wzorców kolorów w bloku są wypełniane wartościami ze wskazanego
obszaru, który powinien zawierać kolejno: składową czerwoną, składową zieloną i skła
dową niebieską pierwszego koloru, składową czerwoną, składową zieloną, składową
niebieską drugiego koloru itd.
Wpisywane składowe powinny zawierać się w przedziale 0-63, wartości większe
w standardowym sterowniku VGA zostaną obcięte do 6 bitów. Jeśli zostało włączone
przeliczanie barw do odcieni szarości (podfunkcja lBh funkcji lOh), to wzorzec koloru
zostanie przeliczony do odpowiedniego odcienia szarości, wybranego z 64 poziomów.
— brak —
U w a g i d o d a tk o w e :
Funkcja nie może być stosowana w trybie pracy 13h (256-ko loro wy).
Funkcja służy do określenia bloku wzorców kolorów, z którego będą pobierane infor
macje w 16-kolorowych trybach pracy.
P a r a m e t r y w e jś c io w e :
AH 1Oh;
AL 13h;
BL Olh;
BH numer domyślnego bloku wzorców kolorów.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Funkcja nie może być stosowana w trybie pracy 13h (256-kolorowy).
Karty graficzne 445
W y jś c ie :
DH składowa czerwona koloru;
CH składowa zielona koloru;
CL składowa niebieska koloru.
U w a g i d o d a tk o w e :
Pobrana informacja jest odczytywana z 18-bitowego rejestru wzorca koloru.
W y jś c ie :
BH numer aktywnego bloku wzorców koloru;
BL 1 - bloki wzorców kolorów zgrupowane są w 16 bloków
po 16 wzorców,
0 - bloki wzorców kolorów zgrupowane są w 4 bloki
po 64 wzorce.
U w a g i d o d a tk o w e :
— brak —
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Liczba bajtów opisujących pojedynczy znak waha się w zależności od trybu od 8 do 16,
numer zastępowanego zbioru znaków należy do przedziału 0—7. Podczas wywołania
funkcji może nastąpić zmiana trybu pracy sterownika, jednak zawartość pamięci obrazu
pozostaje nienaruszona,
I
1
448 Anatomia PC
1 —14 wierszy,
2 - 2 5 wierszy,
3 - 4 3 wiersze;
cx liczba bajtów opisujących pojedynczy znak;
DL dla rejestru BL = 0 zawiera liczbę wierszy na ekranie;
ES:BP adres obszaru zawierającego opis znaków.
W y jś c ie :
brak
U w a g i d o d a tk o w e :
Adres wskazywany przez rejestry ES:BP jest zapisywany w tablicy wektorów przerwań
jako wektor 43h. Podfunkcja powinna być wywołana zaraz po ustanowieniu graficz
& nego trybu pracy.
W y jś c ie :
brak
; *• •
■S
"Ci
K ;
U w a g i d o d a tk o w e :
Adres zestawu znaków 8 x 14 jest zapisywany w tablicy wektorów przerwań jako wek
tor 43h. Podfunkcja powinna być wywołana zaraz po ustanowieniu graficznego trybu
pracy.
P a r a m e t r y w e jś c io w e :
AH llh;
AL 23h;
v.
452 Anatomia PC
P a r a m e t r y w e jś c io w e :
AH llh ;
AL 30h;
BH zbiór znaków:
0 - zbiór znaków o adresie wskazywanym przez wektor
przerwania lFh,
Karty graficzne 453
0 - 6 4 kB,
V
1 - 128 kB,
2 - 192 kB,
3 - 256 kB i więcej;
A\\
CH wartość odczytana z rejestru złącza krawędziowego.
U w a g i d o d a tk o w e :
Sterownik VGA zawsze zakłada obecność monitora kolorowego
kV-
.• • »
.
454 Anatomia PC
P a r a m e t r y w e jś c io w e :
AH 12h;
BL 20h.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
BIOS sterownika obsługuje drukowanie zawartości ekranu tylko w tekstowych trybach
pracy. Do drukowania zawartości ekranu w trybach graficznych należy posłużyć się
programem DOS-a GRAPHICS.COM.
nych efektów.
U w a g i d o d a tk o w e :
W tekstowych trybach pracy 00h-03h emulacja polega na zmianie górnej i dolnej linii
kursora.
W y jś c ie :
Jeżeli podano poprawne parametry wejściowe, to AL = 1 2 h .
U w a g i d o d a tk o w e :
Podfunkcja jest używana głównie w programach posiadających funkcję zapobiegania
wypalaniu luminoforu (screen saver).
Karty graficzne 457
Funkcje uzupełniające
Funkcja 13h - wypisanie ciągu znaków (EGA/VGA)
Funkcja służy do wypisania ciągu znaków z uwzględnieniem znaków sterujących CR -
ODh, LF - OAh, BS - 08h i BEL - 07h. Pozostałe kody sterujące wyświetlane są jak
inne znaki.
&' AH 13h;
Hr
AL OOh;
BH numer strony ;
BL atrybut wyświetlanych znaków;
CX liczba znaków w wyświetlanym ciągu;
DH numer wiersza;
DL numer początkowej kolumny;
ES:BP adres początku ciągu znaków.
W y jś c ie :
brak
lH .
U w a g i d o d a tk o w e :
fc>;
Podany ciąg musi zawierać tylko kody ASCII znaków. Użycie atrybutów jest niedo
puszczalne.
AH 13h;
w AL Olh;
in.' BH numer strony;
m- BL atrybut wyświetlanych znaków;
CX liczba znaków w wyświetlanym ciągu;
DH numer wiersza;
DL numer początkowej kolumny;
ES:BP adres początku ciągu znaków.
458 Anatomia PC
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Podany ciąg musi zawierać tylko kody ASCII znaków. Użycie atrybutów jest niedo
puszczalne.
DH numer wiersza;
DL numer początkowej kolumny;
ES:BP adres początku ciągu par,
W y jś c ie :
— brak —
P a r a m e t r y w e jś c io w e :
AH lAh;
AL Olh;
BL typ sterownika aktywnego;
*r.’
BH typ sterownika nieaktywnego.
•i*. *
•\s
v\
460 Anatomia PC
W y jś c ie :
AL lAh.
U w a g i d o d a tk o w e :
Rodzaje sterowników podano przy opisie podfunkcji OOh.
Ilość Zawartość
Przesunięcie
bajtów
OOh 4 adres obszaru zawierającego informacje o funkcjach sterownika
04h 1 aktualny tryb pracy
05h 2 liczba wyświetlanych kolumn
07h 2 rozmiar aktualnie wykorzystanej pamięci obrazu w bajtach
09h 2 adres lewego górnego rogu obrazu względem początku pamięci
obrazu
OBh 2 pozycja kursora na stronie 0 (wiersz, kolumna)
ODh 2 pozycja kursora na stronie 1 (wiersz, kolumna)
OFh 2 pozycja kursora na stronie 2 (wiersz, kolumna)
llh 2 pozycja kursora na stronie 3 (wiersz, kolumna)
13h 2 pozycja kursora na stronie 4 (wiersz, kolumna)
15h 2 pozycja kursora na stronie 5 (wiersz, kolumna)
17h 2 pozycja kursora na stronie 6 (wiersz, kolumna)
19h 2 pozycja kursora na stronie 7 (wiersz, kolumna)
lBh 1 numer górnej linii kursora
ICh 1 numer dolnej linii kursora
łD h 1 numer wyświetlanej strony obrazu
lEh 2 adres rejestru indeksowego układu sterowania wyświetlaczem
Karty graficzne 461
Ilość
Przesunięcie Zawartość
bajtów
20h numer aktualnego trybu pracy
2łh numer aktualnej palety kolorów w trybach 04-05h
22h liczba wyświetlanych wierszy
23h 2 wysokość wyświetlanych znaków (w punktach)
25h rodzaj aktywnego sterownika (patrz podfunkcja OOh funkcji 1Ah)
26h rodzaj nieaktywnego sterownika (patrz podfunkcja OOh funkcji 1Ah)
27h 2 maksymalna liczba jednocześnie wyświetlanych kolorów
29h liczba stron pamięci obrazu
2Ah rozdzielczość pionowa:
0-200 linii,
1-350 linii,
2-400 linii,
3-480 linii
2Bh 1 numer zbioru znaków pierwszej połowy 512 znakowego zbioru
2Ch 1 numer zbioru znaków drugiej połowy 512 znakowego zbioru
2Dh 1 informacje dodatkowe
2Eh 3 zarezerwowane
31h 1 rozmiar pamięci obrazu:
0 - 6 4 kB,
1- 128 kB,
2 - 1 9 2 kB,
3 - 256 kB i więcej
32h 1 informacja o zawartości tablic wskaźników (głównej i doda
bit 5 —1 —zmieniono rodzaj zainstalowanych sterowników
bit 4 - 1 - zmieniono zestaw standardowych kolorów i wzc
bit 3 = 1 —zdefiniowano znaki dla graficznego trybu pracy
bit 2 = 1 - zdefiniowano znaki dla tekstowego trybu pracy
3it 1 = 1 —zmieniono zestaw standardowych kolorów
i>it 0 - 1 - używany jest zbiór 512-znakowy
33h 13 zarezerwowane
P a r a m e t r y w e jś c io w e :
AH ICh;
AL OOh;
CX rodzaj informacji do zachowania:
bit 2 = 1 —informacja o wzorcach koloru,
bit 1 = 1 - informacja o stanie zapisana w obszarze danych BIOS-u,
bit 0 = 1 - informacja o stanie karty graficznej.
W y jś c ie :
AL ICh;
BX rozmiar bufora
U w a g i d o d a tk o w e :
Zwracany rozmiar obszaru podawany jest w blokach po 64 bajty
U w a g i d o d a tk o w e :
Po wywołaniu tej podfunkcji ulegają zmianie niektóre parametry sterownika. Stan przed
wywołaniem podfunkcji można odtworzyć wywołując podfunkcję 02h.
¥
464 Anatomia PC
P a r a m e t r y w e jś c io w e :
ES:DI wskaźnik do bufora danych.
W y jś c ie :
AH wynik wykonania funkcj i:
OOh - wykonanie poprawne,
Olh - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany).
U w a g i d o d a tk o w e :
Zwraca 256-bajtowy blok danych opisujący parametry karty SYGA i środowiska.
Karty graficzne 465
P a r a m e t r y w e jś c io w e :
CX numer trybu;
ES:DI wskaźnik do bufora danych.
W y jś c ie :
AH wynik wykonania funkcji:
OOh - wykonanie poprawne,
Olh - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany).
U w a g i d o d a tk o w e :
Zwraca 256-bajtowy blok danych zawierający informację o sposobie przełączania ban
ków (liczba, rozmiar, adresy, możliwość czytania i zapisu, odstęp pomiędzy bankami)
oraz szerokość ekranu wirtualnego (logicznego) dla zadanego trybu. Funkcja ta powin
na zwracać informacje zarówno dla trybów VESA, jak i dla trybów
charakterystycznych dla danej karty.
k-
Wyjście
AH wynik wykonania funkcji:
OOh - wykonanie poprawne,
Olh - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany).
Uwagi dodatkowe:
Numer trybu jest 16-bitowy.
s*’
Parametry wejściowe:
brak
Wyjście
ii BX bity 14-0 - numer trybu VESA (bez bitu zerowania pamięci
obrazu);
AH wynik wykonania funkcji:
OOh - wykonanie poprawne,
O lh - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany).
Uwagi dodatkowe:
t .
.»|S
V ,/
ES:BX wskaźnik do bufora stanu dla podfunkcji 1 i 2;
"i
"k .* .
:
CX określa rodzaj zapisywanych lub odtwarzanych parametrów:
bit 3 —stan wszystkich parametrów charakterystycznych
dla SVGA,
468 Anatomia PC
W yjście:
AH wynik wykonania funkcji:
OOh - wykonanie poprawne,
Olh - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany);
BX liczba bajtów przypadających na jedną poziomą linię ekranu
wirtualnego;
CX szerokość ekranu wirtualnego w punktach;
DX maksymalna liczba linii ekranu wirtualnego.
Parametry wejściowe:
BH OOh - wartość zarezerwowana;
BL wybór podfunkcj i:
OOh - ustawienie położenia ekranu rzeczywistego względem
ekranu wirtualnego,
Olh - odczyt położenia ekranu rzeczywistego względem ekranu
wirtualnego;
CX numer pierwszej wyświetlanej kolumny(współrzędna X lewej
krawędzi ekranu dla podfunkcji 0);
DX numer pierwszej wyświetlanej linii (współrzędna Y górnej
krawędzi ekranu dla podfunkcji 0).
Wyjście
AH wynik wykonania funkcji:
OOh —wykonanie poprawne,
O lh - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany);
CX numer pierwszej wyświetlanej kolumny (dla podfunkcji 1);
DX numer pierwszego wyświetlanego wiersza (dla podfunkcji 1).
Parametry wejściowe:
BH żądana liczba bitów na składową koloru (R, G lub B dla
podfunkcji 0);
BL wybór podfunkcji:
OOh - ustawienie szerokości palety,
O lh - odczyt szerokości palety.
470 Anatomia PC
Wyjście:
AH wynik wykonania funkcji:
OOh - wykonanie poprawne,
Olh - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany);
BH odczytana liczba bitów na składową koloru (R, G lub B dla
podfunkcji 0) - dla karty VGA wynosi 6.
podaj_typ_sterownika endp
Kod Sterownik
OOh brak sterownika (dla sterownika nieaktywnego)
Olh MDA
02h CGA
04h EGA kolor
05h EGA mono
06h PGC
Karty graficzne 471
Kod Sterownik
07h VGA mono
08h VGA kolor
OAh MCGA z cyfrowym monitorem kolorowym
OBh MCGA z analogowym monitorem monochromatycznym
OCh MCGA z analogowym monitorem kolorowym
OFFh sterownik nie rozpoznany
rozmiar__pamięci endp
Parametry wejściowe:
— brak —
Wyjście:
BL kod rozmiaru pamięci obrazu:
0 - 6 4 kB,
1 - 128 kB,
2 - 1 9 2 kB,
3 - 256 kB i więcej.
push es
push bp
. s
mov ax, cs
V
mov es,ax
mov bp,offset dane ; załadowanie adresu opisu znaku do ES :BP
mov ah,llh ; numer funkcji BIOS-u sterownika
mov al,OOh ; numer podfunkcji - definiowanie
; zbioru znaków
<’ mov bh,08h ; jeden znak
ri '
r*-"
mov bl, 0 ; zestaw znaków nr 0
'¿y mov cx, 1 ; podmieniamy 1 znak
mov dx,word ptr '@ 1 ; podmieniamy znak 1@ 1
472 Anatomia PC
int lOh
pop bp
pop es
ret
dane db 60,126,219,255,255,189,165,36
zmiana_znaku endp
Wygląd znaku:
60
126
219
255
255
189
165
36
Grafika PC w dobie multimediów 473
W epoce bujnego rozkwitu technik multimedialnych komputer PC, który nie jest w sta
nie pokazać na swoim monitorze sekwencji video lub wirtualnych obiektów trój
wymiarowych wydaje się być niekompletny. Odbiorcy przyzwyczajeni do jakości obra
zów telewizyjnych oczekują tego samego na ekranie PC.
Na horyzoncie pojawiają się już nowe rewolucyjne projekty takie jak AGP czy Talis-
man. Ich rewolucyjność polega niestety między innymi na tym, iż nie są w pełni kom
patybilne z dotychczasową architekturą sprzętową i fakt ten może zadecydować o ich
niepowodzeniu.
474 Anatomia PC
Dla pokonania powyższych barier nie wystarczy zwykłe zwiększenie mocy oblicze
niowej CPU. Natura problemu jest złożona i dotyczy wąskich gardeł tkwiących do dziś
w architekturze PC. Dane video, ze względu na swoją specyfikę, niechętnie poddają się
przetwarzaniu przy pomocy klasycznych rozkazów maszynowych procesorów x86. Do
akcji wkroczyć muszą wyspecjalizowane układy koprocesorów (zwanych też akcelera
torami), które zwalniają jednostkę centralną PC z wykonywania zadań, do których w za
sadzie nie została powołana. Lokalne przetwarzanie danych w obrębie akceleratora
wpływa korzystnie na zmniejszenie ruchu na magistralach systemowych, których prze
pustowość jaka by nie była i tak zawsze jest za mała.
1 Mc va o czasie rzeczywistym
Grafika PC w dobie multimediów 475
Rysunek 8.1.
Podział mocy
obliczeniowej
pomiędzy
poszczególne Skalowanie
Wydzielenie ze Konwersja z w kierunku x i y
etapy procesu Zdekodowanie
-►j strumienia danych 3-------
> sygnału video przestrzeni YUV ►
informacji video do przestrzeni RGB Filtrowanie
dekodowania w kierunku x i y
obrazu video
Jeszcze przed erą MPEG pojawiły się pierwsze karty, prekursorzy dzisiejszych akcele
ratorów, które uwalniały PC ze zmory video w formacie znaczka pocztowego. Zastoso
wane w nich rozwiązania sprzętowe rozciągały obraz na cały ekran (skalowanie w kie
runku x i y). Niektóre brały na siebie obliczenia związane z konwersją RGB/YUV.
Pamięć obrazu
Rysunek 8.2.
Sprzętowa OknoVUn
I
realizacja
procesu Kontroler graficzny
+ Monitor
dekodowania RGB
-►
Przetwornik YUV/RGB Przetwornik
........................................
+ RAM DAC
sygnału video V V V 1 Układy skalujące x/y
U V u vu V U V
+
1 •**
Filtry x/y
V V Y Y
i
i
i
YUV
u v u j v u jv UiVI ■ < - ....................................
R = Y + 1,140 V
G = Y -0 ,3 9 5 U -0 ,5 8 1 V
B - Y + 2,032 U
Istnieją mniej lub bardziej szczęśliwe próby opanowania tego zjawiska. Najprostsze
kontrolery wstawiają po prostu powielone linie oryginału. Rozciągnięta linia ukośna
staje się dzięki takiemu zabiegowi zębata. Dużo lepsze efekty przynosi interpolacja
między liniowa (wyliczana i wstawiana jest linia średnia dzieląca dwa oryginały) ale
wymaga dodatkowego bufora liniowego. W kierunku poziomym interpoluje się zwykle
z kilku sąsiadujących punktów.
Typowe chipy interpolujące zarówno w pionie jak i w poziomie to: Vision868 i 968
(S3), Alliance Promotion 3210 (Miro), ALG2302/ALG1301 (dawna Spea) i ARK2000
(Hercules).
Interfejs programowy
Dla potrzeb aplikacji pracujących pod kontrolą systemu Windows 3.x stworzone zostało
złącze programowe GDI (Graphics Device Interface). Składa się ono z dostępnych dla
programisty zestawów funkcji, które rysują na ekranie okna, paski przewijania, wszel
kie elementy kontrolne i sterujące, napisy i różnorodne obiekty graficzne. Funkcje te
biorą na siebie przydzielanie i zwalnianie pamięci, generują i odbierają komunikaty
użytkownika, jednym słowem troszczą się o sprawne funkcjonowanie szaty graficznej
Windows, bez konieczności głębokiego wnikania w jego wnętrze.
System ten nie zna jednak pojęcia „sekwencja video“. W początkowej fazie rozwoju tej
formy wyrazu treści graficznej programiści byli zmuszeni do przetwarzania każdej
klatki obrazu filmowego na mapę bitową i przesyłania jej do GDI. Ta z kolei transporto
wała ją do sterownika programowego karty graficznej.
Rysunek 8.3.
Tworzenie grafiki
w Windows 3.x
A-
surface) lub do obszaru niewyświetlanego {offscreen surface) gdzie odbywa się właści
we budowanie obrazu oraz operacje pomocnicze. Gdy obraz jest gotów, następuje
przełączenie płatów {flipp): przestawiany zostaje wskaźnik adresowy układów odczytu
jących na nowy obszar, od tej chwili uznany jako widzialny.
Z systemu DCI mogą czerpać korzyści nawet zwykłe karty graficzne, bez sprzętowego
wspomagania funkcji video (o ile producent dostarcza odpowiedni sterownik DCI),
bowiem strumień video przesyła się do pamięci karty drogą bezpośrednią a nie okrężną
poprzez GDI. Konwersja RGB/Y U V realizowana jest jednak w tym przypadku kon
wencjonalnie - wszystkie obliczenia musi wykonać jednostka centralna komputera.
W pewnej fazie rozwoju DCI doszło do sporu pomiędzy firmami Intel i Microsoft na tle
praw autorskich i zastrzeżeń patentowych. Wraz z pojawieniem się na rynku systemu
Windows 95 Microsoft wprowadził więc nowy model programowego interfejsu video
oznaczany mianem DirectDraw4. Ze względu na niekompatybilność z funkcjami swego
poprzednika wiele wysiłku, włożonego w rozwój złącza DCI, musi pójść na marne.
Aktualnie standard propagowany przez Microsoft nosi miano DirectX i jest jednolity dla
Windows 95 i Windows NT. DirectX jest pojęciem ogólnym pod którym ukrywają się
następujące interfejsy programowe (API):
4 Inne systemy operacyjne też mają swoje własne złącza programowe i tak dla potrzeb OS/2
oprr owany został interfejs DIVE (Direct Interface Video Extensions).
Grafika PC w dobie multimediów 479
Mapowanie
Opisana w tym punkcie technika mapowania (a szczególnie ta w czasie rzeczywistym)
była jeszcze do niedawna wyłączną domeną drogich i profesjonalnych systemów gra
ficznych wykorzystywanych w symulacjach i projektowaniu CAD. Moc obliczeniowa
zwykłego komputera klasy PC sięgnęła jednak w międzyczasie tak wysoko, że można
się pokusić o przeniesienie tych technik na jego platformę.
Należy na wstępie podkreślić, że mapowanie nie służy niczemu innemu jak oszukaniu
zmysłu wzroku i ułatwieniu życia ludziom projektującym obiekty trójwymiarowe. Nie
ma tu mowy o wzroście dokładności lub wierności przedstawienia modelu. Stanowi
natomiast ostateczny i bardzo efektowny szlif nadawany wymodelowanym bryłom.
Mapowanie związane jest nierozerwalnie z pojęciem tekstury. Tekstura jest zwykłą mapą
bitową (zeskanowaną, sfotografowaną lub wytworzoną sztucznie) naklejaną elektro
nicznie na wybrane miejsca obiektu 3D. W ten oto prosty sposób jednorodny prosto
padłościan staje się klocem lub drewnianą deską, a statuetka może być w szybkim
tempie przerobiona z marmurowej na pokrytą błyszczącym chromem.
Komputer operuje również stosunkowo małą, jak na ten stopień skomplikowania obiek
tu ilością danych. W pamięci przechowywane są współrzędne dwunastu trójkątów na
które rozbite zostają płaszczyzny prostopadłościanu i kilka dodatkowych danych o spo
sobie „nalepiania” tekstury, fen sam obiekt traktowany „na poważnie“ musiałby zostać
zamodelowany milionami trójkątów elementarnych.
nego efektu. Oko ludzkie dostrzega „szlify“ na powierzchni. Dla zwiększenia złudzenia,
iż mamy do czynienia z równomiernie zakrzywioną powierzchnią manipuluje się dodat
kowo składowymi kolorów dla poszczególnych punktów każdego z trójkątów elemen-
7 •
taraych. Specjalny algorytm cieniowania Gouranda zwany też interpolacją bilineamą
dokonuje uśrednienia kolorów wnętrza trójkątów biorąc za punkt wyjścia barwy zdefi
niowane dla trzech narożników.
Rysunek 8.4. 0 0 0 O O O O O O O
Schemat o o o O O O O o o o
cieniowania 0 0 0 0 0 o o o
Gouranda
0 0 0 0 0 o o o
0 0 0 0 0 o o o
O O O O o o o
O O O O o o o
O O O O o o o
O O O o o o
o o o o o
0 0 0 o o o
o o o o o
o o o o o
o 0 0 0 0 0 0 0 |b o o
Trójkąt skanowany jest linia po linii. Najpierw określa się kolor wypadkowy punktów
przecięcia P| i P2 linii skanowania z ramionami trójkąta. Wypadkową stanowi średnia
ważona barwy wierzchołków:
Obliczenia Ix (Rxi, BXi i GXi) wykonuje się oczywiście dla każdego punktu oddzielnie.
Ponieważ mnożenie zajmuje nieporównywalnie więcej czasu od kilku operacji doda
wania, algorytmy omijają powyższe równanie i zamiast tego dodaje się (określane tylko
jeden raz dla danej linii) przyrosty A j:
I x i+ i = I x i + A j
gdzie:
Barwy wierzchołków pojawiają się jako wynik obliczeń oświetlenia obiektu. Nie wolno
przecież zapominać, że widzimy tylko to co jest oświetlone. Jest to zagadnienie o kapi
talnym znaczeniu jeśli chcemy by nasz wirtualny obiekt 3D przypominał coś w miarę
rzeczywistego. Dokładne odwzorowanie rzeczywistości jest z matematycznego punktu
widzenia stosunkowo skomplikowane. Dla uproszczenia obliczeń zwykło posługiwać
się jednym z upraszczających zagadnienie modeli (lub ich mieszaniną):
• Modulacja. Najprostszy i najczęściej stosowany z modeli.Zakłada, iżtrójwymia
rowa bryła przed oklejeniem jejteksturą była idealniebiała - odbijałaby całko
wicie padające na nią światło. W takim razie każdy z barwnych elementów teks
tury stanowi filtr tłumiący światło odbite w tym kolorze.
Przykład:
Jeden z narożników idealnie białego trójkąta oświetlony zostaje zielonym świa
tłem. Punkt ten ma teraz parametry RGB (0,1 ; 0,9 ; 0,1). Naklejona w tym miej
scu tekstura ma zabarwienie RGB (0,2 ; 0,3 ; 0,4). Jako barwa wynikowa przy
jęta zostanie:
R = 0,1 * 0,2 = 0,02
G = 0,9 * 0,3 = 0,27
B = 0,1 * 0,4 = 0,04
• Przesłanianie. Zamiast prostego mnożenia składników RGB dla podłoża i teks
tury można przyjąć bardziej elastyczne rozwiązanie. Dla każdej ze składowych
wynikowych wprowadza się funkcję postaci:
Cx = a*Px + (l-a)*Tx
gdzie:
Cxjest składnikiem wynikowym (CR , CG lub Cb )
Px - składnik koloru podłoża
Tx - składnik koloru tekstury
a - (0... 1) współczynnik przesłaniania
Model ten pozwala na swobodne określenie stopnia dominacji nakładających się
na siebie barw: jeśli a=0 tekstura przesłania całkowicie podłoże; dla a=l widzi
my tylko podłoże a tekstura jest przeźroczysta. Liczby z przedziału 0...1 wyobra
żają wszelkie stany pośrednie.
Grafika PC w dobie multimediów 483
Tekstury jak już wspomniano są obiektami płaskimi. Obraz taki łatwo jest nakleić na
ścianę prostopadłościanu gdyż jest ona płaska. Co jednak zrobić w przypadku kuli?
Przed problemem tym stanęła już dawno kartografia: jak odwzorować mapę ziemi na
globusie? Przy takim odwzorowaniu płaska mapa tekstury musi nieuchronnie zostać
zniekształcona. Należy tylko jednoznacznie zdefiniować w jaki sposób.
Jeżeli mapa bitowa o rozmiarach 180 x 360 umieszczona zostanie w układzie współ
rzędnych prostokątnych to mamy poszukiwane odwzorowanie dla narożników każdego
z trójkątów elementarnych.9
Każdy z punktów wewnętrznych też chce mieć swój punkt odniesienia w teksturze. Te
brakujące współrzędne oblicza się przy pomocy uśrednień takich jak przy cieniowaniu
Gouranda.
Bryłą opisującą może być w ogólności walec {cylindrical mapping ), sześcian {cubic
mapping) lub nawet inna bryła nieregularna. W ten sposób można tworzyć różne efekty
specjalne.
Skrót perspektywy
Problem rodzi się w momencie rzutu oklejonego obiektu 3D na dwuwymiarową
płaszczyznę ekranu. Na skutek działania skrótu perspektywicznego idealnie dobrane
przyporządkowanie piksli obrazu pikselom tekstury ulega zachwianiu.
Rysunek 8.5. 1
Zjawisko skrótu r l
perspektywicznego \ textura (u,v) j
i Odwzorowanie
Obraz kreślony jest linia po linii a w obrębie jednej linii, punkt po punkcie. Algorytm
skanera posuwa się co prawda równymi krokami po obiekcie 3D a nie jego odwzoro
waniu na płaszczyźnie. Na skutek wspomnianego zniekształcenia odczyt kolejnych
punktów mapy bitowej tekstury odbywa się po linii ukośnej. Prostokątna mapa bitowa
musi zostać rozciągnięta od strony obserwatora i zciśnięta w miarę posuwania się w głąb
przestrzeni 3D. W ogólnym przypadku, tylko nieliczne piksle tekstury nie ulegają prze
sunięciu. Kolejne kroki skanera dobierającego dla każdego piksla obrazu stosowną parę
współrzędnych (u, v) z przestrzeni tekstury mogą więc trafić w puste miejsce.
Dla tych punktów, które nie mają dokładnego pokrycia w teksturze trzeba jednak przy
jąć jakąś wartość. W praktyce przyjęły się dwie formy aproksymacji, obie bazujące na
ocenie sąsiedztwa rozpatrywanego punktu:
w
1
Rysunek 8.6. 1
V
Odwzorowanie
przyporządkowa
nia najbliższego
punktu
f .
iii
W układzie współrzędnych tekstury analogiczna linia przechodzi przez punkty (u0, v0)
i (u,, V ,) jednak na skutek zniekształcenia perspektywy jest linią ukośną. Algorytm
przemierza przestrzeń (U, V) poruszając się równymi krokami od punktu (uj, Vj) do
"h
punktu (ui+i, vi+1):
Uj+i = Uj + du
V j + i = Vj + dv
I.
Powierzchnia obiektu pokrytego tą techniką może sprawiać wrażenie „gruboziarniste“,
szczególnie gdy leży ona blisko obserwatora (silne powiększenie). Dużo lepsze efekty
k."' osiąga się stosując bardziej złożone algorytmy.
VI'
I. J •
:‘i - :
Rozważmy przypadek ogólny. Na skutek zniekształcenia odwzorowania przestrzeni (X,
Y) na (U, V) dla dowolnego punktu obrazu A(x, y) otrzymujemy parę współrzędnych
(U.u, V.v) lokalizującą punkt w przestrzeni tekstury. Punkt ten, niezależnie od swego
położenia otoczony jest czterema sąsiadami:
Punkt_ 1 (U, V)
łT>.
- I.
■<
,•
i.
<
Punkt_2 (U +1, V)
Punkt_3 (U +1, V +1)
Punkt_4 (U, V + l)
Składowe ułamkowe O.u i 0.v współrzędnych punktu (U.u, V.v) reprezentują właśnie
położenie we wnętrzu kwadratu ograniczonego punktami 1 - 4.
486 Anatomia PC
*
4
k
|
d t
d i
W praktyce spotkać można również różne formy pośrednie filtracji bilinearnej, wprowa
dzane zwykle ze względów oszczędnościowych. I tak np. kontroler graficzny z akcele
ratorem 3D typu GD5464 firmy Cirrus Logic uśrednia na podstawie sąsiedztwa dwóch
punktów a nie czterech. Generalnie obowiązuje zasada, że im więcej nakładów ponie
sionych na filtrowanie tym lepiej prezentują się obiekty na ekranie a przejścia między
nimi są miękkie.
Korekcja perspektywy
Zagadnienie skrótów perspektywicznych doczekało się bardzo dokładnego opisu mate
matycznego. Głębsza analiza problemu wykazuje, że dla zniwelowania skutków znie
kształceń tekstur, którymi pokrywane są obiekty 3D nie wystarczy interpolacja liniowa
i trzeba uwzględnić składniki wyższego rzędu. Nie wdając się w zbędne szczegóły wy
starczy wspomnieć, iż do obliczenia każdego pikesla wymagane są po dwie operacje
dzielenia (pojawia się składnik l/w). Właśnie te działania komplikują nie tyle algorytm
Grafika PC w dobie multimediów 487
Vi+1 = V i + d v j
• ««
Kosztem pewnego uproszczenia mamy tu więc jedynie dwie dodatkowe operacje doda
wania na piksel.
Mipmapping
W samym sposobie definiowania mapy tekstury tkwi z założenia pewna niekonsekwen
cja, Tekstury są jak już wspomniano mapami bitowymi o jednoznacznie zdefiniowanej
rozdzielczości (na przykład 256x256) a co za tym idzie ich rozmiar jest stały. Z drugiej
strony jednak, poddawane mapowaniu obiekty 3D mogą mieć różne rozmiary.
W drugim skrajnym przykładzie wyobrazić sobie można wzór etykiety w formie mapy
bitowej 500x500. Jak postąpić w scenie przedstawiającej butelkę o wysokości 50 piksli
z nalepioną tą właśnie etykietą?
Powyższy problem rozwiązuje się przygotowując dla każdej tekstury obszerny zestaw11
map bitowych o różnych stopniach rozdzielczości. Przechowywane mapy (nazywane
też mipami) mają rozmiary będące kolejnymi potęgami 2. Lista zamykana jest zwykle
w okolicach 500, gdyż potrzeba mapowania tak dużych obiektów w standardowych
ekranowych trybach rozdzielczości jest znikoma. Do dyspozycji stoją więc mapy o roz
miarach;
W najprostszym modelu pobiera się tylko jeden z mipów. Użyta zostanie ta z map, dla
której stosunek powierzchni piksel/teksel leży możliwie blisko jedności. Bardziej
rozbudowane modele uwzględniają również inne czynniki. Na skutek działania skrótu
perspektywicznego może się zdarzyć, iż różne punkty obrazu pasują lepiej do różnych
i
mipów. Lepsze algorytmy budują mieszaną mapę pośrednią lub odwołują się do
różnych mipów w obrębie tego samego obiektu.
Ciekawe efekty oferuje chip akceleratora graficznego Nvidia (NV1). Binarna mapa tek-
strury może być naciągnięta na bryłę w taki sposób, by przebiegała przez zadaną liczbę
punktów kontrolnych. Możliwe jest również mapowanie sekwencją video projektowaną
na powierzchnie walcowe i kuliste.
Akceleratory 3D
Akceleratory 2D ograniczały się głównie do wyzwalanego jednym rozkazem CPU prze
suwania i wypełniania obrazów prostokątnych.
- -----------
Lepsze i droższe systemy graficzne odciążają CPU poprzez wprowadzenie do akcji do
datkowego koprocesora geometrycznego. Układ taki pracuje na liczbach zmiennoprze
cinkowych, co zdecydowanie podnosi dokładność obliczeń. Do zadań koprocesora geo
metrycznego należy zaliczyć:
• obliczanie współrzędnych obiektów podlegających przemieszczeniom, takim jak
obrót, przesunięcie itp,
• przeskalowywanie obiektów, których rozmiary zmieniają się w trakcie ruchu,
Rysunek 8.8.
Piramida zakresu
widzialności
Pod pojęciem rasteringu rozumie się wyznaczenie potrzebnych parametrów dla punktów
rastra (piksli) będących wnętrzem trójkąta. Obliczone piksle umieszczane są kolejno
w pamięci graficznej karty a w momencie skompletowania całego obrazu (z pominię
ciem obiektów przesłoniętych) wyświetlane na ekranie.
Ilość niezbędnych obliczeń jakie musi wykonać program rastrujący jest ogromna. Dla
każdego z punktów potrzeba wyznaczyć blisko 20 różnych stałych. Sytuację pogarsza
fakt, że skaner pracuje na liczbach stałoprzecinkowych a dane otrzymuje w formacie
zmiennoprzecinkowym. Sama transformacja formatu zajmuje stosunkowo dużo czasu:
Pentium 90 pracowałby nad każdą z nich przez co najmniej 15 taktów zegara. Widać tu
wyraźnie miejsce dla układów akceleratorów odciążających jednostkę centralną.
13 3 narożniki, każdy po 10 parametrów (xyz, uvw, rgba) * 4 bajty (najprostrzy format float) =
120 bajtów.
Grafika PC w dobie multimediów 491
Warto pokusić się o szacunkowe obliczenie. Karta o wydajności 200 ktps (200 000 tps)
może budować i wyświetlać obraz 3D z prędkością 10 fps (10 klatek na sekundę) tylko
pod warunkiem ograniczonego stopnia komplikacji sceny: tutaj nie więcej niż 20 000
trójkątów.
Kres możliwości magistrali PCI leży jak wiadomo w okolicach 132 MB/s. Oddając całą
przepustowość szyny na potrzeby grafiki 3D, można przesłać około 1.1 miliona trój
kątów ale oczywiście przy założeniu, że ilość taką jest w stanie przetworzyć CPU. Moc
obliczeniowa procesora Pentium-200 jest wystarczająca do tej ilości przekształceń geo
metrycznych pod warunkiem pominięcia zagadnień związanych z oświetleniem.
Nowoczesny koprocesor graficzny 3D (na przykład Voodoo) rysuje przy włączonej fil
tracji bilinearnej 45 Mtex/s (45 milionów teksturowanych pikseli na sekundę). Z ogra
niczeń magistrali PCI wynika maksymalny rozmiar kreślonego trójkąta:
45 milionów /1.1 miliona = 41 pikseli/trójkąt
Zadanie CPU polega już tylko na obliczeniu i przekazaniu samych współrzędnych (x, y,
z) narożników trójkąta. Jednak i ta funkcja może zostać przejęta przez akcelerator
wzbogacony o koprocesor geometryczny (Geometrie Engine): pierwsze modele chipów
pracujących według tej zasady zaprezentowane zostały przez firmę Trident na targach
Cebif 97.
Bufor Z
Obiekty trójwymiarowe zawieszone są w przestrzeni 3D. Położenie każdego punktu jest
jednoznacznie zdefiniowane przez trójkę liczb (x, y, z) będących jego współrzędnymi.
W końcowej fazie przetwarzanie trójwymiarowy obraz rzucany jest na płaską powierz
chnię ekranu. Mogło by się wydawać, że w tym momencie trzecia współrzędna (z) re
prezentująca odległość punktu od ekranu14 staje się zbędna. Tak jednak nie jest, bowiem
skutkiem projekcji na ekran trójwymiarowe elementy przedstawianej scenerii mogą się
wzajemnie przesłaniać.
Na ekranie kreślone będą tylko te punkty bryły, które są widoczne dla obserwatora. O tym
czy punkt jest widoczny decyduje jego współrzędna z. W tym celu utworzony zostaje
w pamięci karty graficznej bufor Z. Stanowi on tablicę Z[x,y] o rozmiarach ekranu
1C
i elementach dwubajtowych .
Dalszym czynnikiem pogarszającym już i tak złą sytuację jest konieczność odwoływa
nia się do map bitowych tekstur rezydujących też przecież gdzieś w pamięci graficznej.
Dostęp do tekstur
•«
.
Jednym z czynników najbardziej obciążających magistralę pamięciową jest dostęp do
tekstur. Są to co prawda wyłącznie cykle odczytu ale za to w dużej liczbie: przy filtracji
>
trilineamej trzeba zciągnąć 8 parametrów na każdy piksel obrazu.
Spotyka się też rozwiązania oparte o pamięć pośrednią typu Cache, w której przecho
wuje się spory fragment aktualnie przetwarzanej mapy bitowej. Duże oszczędności
przynosi organizacja danych, na przykład przejście z przestrzeni RGB na YUV. W zale
żności od wymaganej jakości możliwe jest też ograniczenie formatu danych: RGB-
56517, RGBA-4444, lub odwołania poprzez indeks do tabeli kolorów o zmiennej szero
kości.
17 RGB-565 oznacza rozpisanie na składniki 16-bitowej komórki pamięci obrazu: dla składnika
zielonego 6 bitów a dla składników czerwonego i niebieskiego po 5 bitów.
494 Anatomia PC
PowerVR 26 194 90
Permedia+Delta 19 265 —
Verite/Rendition 7 235 16
Mystique 9 82 22
3D Xpression/ATI 5 72 12
Virge/S3 4 65 11
i
m
2M B
SVGA 2M B
Do monitora
Magistrala PCI
Tandem tego typu spotkać można na kartach różnych producentów, na przykład Elsa
Gloria-M, Spea Fire GL 2000. Szybka pamięć obrazu typu V-RAM (standardowo 4 MB,
maksymalnie 8MB) umożliwia jednoczesny dostęp dla sterownika graficznego i kon
wertera RAMDAC budującego obraz. Dodatkowe bloki pamięci lokalnej typu D-RAM
(maksymalne rozszerzenia do 16 MB) służą do realizacji bufora Z oraz obsługi funkcji
obcinania niewidocznych fragmentów obrazu (Window-Clipping).
A' -■
496 Anatomia PC
Rysunek 8.10.
Sterownik Glint " i J ----------- !
Multiplex ^ RAMDAC
s 4-8 MB I
3 >
1
VRAM 1
f
VGA r«-
4-16 UB
Parrtitf
DRAM j"
obrazu VGA
1 MB BIOS
DRAM
Magistrala PCI
Układ PowerVR
Omienna koncepcja tkwi w układach PowerVR będących wspólnym opracowaniem
firm NEC i VideoLogic. Akcelerator nie zastępuje tu karty SVGA ale ją wspomaga.
Może nią być dowolny układ wyposażony w sterownik DirectDraw. Wymiana danych
odbywa się poprzez magistralę PCI. Akcelerator oblicza całe ramki 3D i przesyła je
wprost do pamięci obrazu.
Pamięć układu stanowią dwa bloki SDRAM, każdy po 2 MB. PowerVR stanowi stałe
obciążenie dla magistrali PCI (20 - 30 MB/s). Praca systemu może więc zostać zakłóco
na poprzez intensywne cykle dostępu do twardego dysku lub innych peryferiów o ile
odbywają się poprzez PCI.
Grafika PC w dobie multimediów 497
Rysunek 8.11.
2x2MB SDRAM J RAM ëa
Sterownik i Pomieć obrazu n DAC o
A
; i
1 I
PowerVR ‘X Power VR
32 bity Konfroier SVGA
Karta graficzna
SVGA
junuwnuMununí
7 \
V"
/ Magistrala PCI (\
j
Rozwiązania high-end
y .'
:ik
Rozwój techniczny w dziedzinie akceleratorów 3D jest niesłychanie burzliwy a jego
%
¿ efektem są coraz to wymyślniejsze konstrukcje o często astronomicznej mocy oblicze
niowej, której jednak nie sposób rozsądnie wykorzystać. Szczyt piramidy przechodzi
z rąk do rąk a w momencie pisania ostatniego wydania tej książki opanowany został
przez następujące opracowania:
• Produkt o nazwie Merlin 4000 firmy Datapath integrujący cztery proce
P
*•
'> *
sory typu Glint 500TX (rozbudowanego następcy omawianego wcześniej
układu Glint 300SX).
• System złożony z dwóch równolegle pracujących zestawów Voodoo
3Dfx (nazwa handlowa Obsidian SLI2). Każdy z zestawów dysponuje
jednym procesorem pikseli, dwoma procesorami tekstur, 8 MB pamięci
EDO-RAM na tekstury i 4 MB pamięci obrazu typu EDO-RAM.
V.. ' • •
Interfejs programisty
Aplikacje pracujące na obiektach 3D odwołują się do sprzętu najczęściej poprzez zestaw
mniej lub bardziej znormalizowanych funkcji ujętych w biblioteki (3D-Kemels). Na
• <
5
wstępie przyjmuje się pewne uzgodnienia odnośnie formatu danych i metod prowadzą
cych do zmian przedstawianych scenerii (jak na przykład obroty lub przesunięcia obiek
■*•
tów i ich grup) oraz zagadnienia związane z wizualizacją (oświetlenia, cieniowania).
i'-':
&' Zestaw tych reguł i funkcji stanowi interfejs API (Application Programming Interface)
oszczędzający programistom znaczną część pracy. Odsunięcie spraw sprzętowych od
:X programowych sprzyja swobodzie myślenia. Producent karty graficznej (akceleratora)
wyposaża ją w biblioteki. Są one dostępne dla różnych platform sprzętowych i umożli
wiają przez to łatwe przenoszenie oprogramowania.
j
I
iI
i
i
1 ¡
i ..........
i
5
DirectDraw Direct3D
— i ___________________________________________
-4........... ■ ;
j
I
Następnym etapem w rozwoju tej linii ma być złącze DirectX5, które ma mieć
opanowane sortowanie wielokątów (pomysł zaczerpnięty z PowerVR, eliminuje
bufor Z). Oblicza się więc tylko to co będzie widoczne co znakomicie podnosi
wydajność.
Grafika PC w dobie multimediów 499
• Inne biblioteki. Do grupy tej zaliczyć można opracowania innych firm mocno
zaangażowanych w zastosowania 3D. Pod dachem Autodesku powstała
biblioteka HOOPS (Hierarchical Object Oriented Picture System). Również Spea
stworzyła swój własny standard nazwany SP3D. Nowością jest też
opracowywany wspólnie przez SGI i Sun biblioteka CosmoGL (głównie dla
potrzeb 3D-Web)
Format MPEG
Format MPEG (Motion Pictures Expert Group) opracowany został przez grupę nieza
leżnych ekspertów i w krótkim czasie stał się standardem w dziedzinie cyfrowego prze
syłania i przechowywania obrazów ruchomych. MPEG wyprzedza wszystkie poprzed
nio stosowane formaty (Indeo, Cinepak, QuickTime) zarówno pod względem jakości
jak i współczynnika kompresji. Jakość obrazu porównywalna jest poziomem osiąganym
przez magnetowid standardu VHS a towarzyszący dźwięk sprawia wrażenie jakby
pochodził z płyty kompaktowej.
Istota kompresji polega na zapamiętywaniu nie tyle samego obrazu ile zachodzących
w nim zmian. Algorytm przeszukuje sekwencje filmu i dzieli je na partie, w obrębie
których zmiany w obrazie są stosunkowo niewielkie. Na ekranie pozostają przecież na
ogół te same obiekty, co najwyżej przesunięte lub o lekko zmienionych wymiarach.
Zapamiętywane są więc tylko te zmiany a nie stale ta sama powtarzająca się baza. Algo
rytm nosi przez to miano „kompresji delta”, - bazującej na małych różnicach pomiędzy
kolejnymi klatkami.
Wiele korzyści przynosi jednak zapamiętywanie co pewien czas całej kompletnej sceny
—ramki kluczowej (Key Frame). W technice cyfrowej obróbki materiału video noszą
one również nazwę I-Frames. Odtwarzanie tak zakodowanego sygnału niekoniecznie
musi rozpoczynać się od początku (na przykład montaż filmu). Wówczas obecność
ramek kluczowych przyspiesza rozkodowanie i obróbkę.
500 Anatomia PC
Jądro systemu kodowania bazuje (podobnie jak JPEG i wiele innych standardów) na
dyskretnej transformacji kosinusowej (DCT). Zgodnie z teorią Fouriera każdy przebieg
można przedstawić jako sumę nakładających się na siebie fal sinusoidalnych o różnych
częstotliwościach, amplitudach i fazach. Rozkład przestrzenny punktów świetlnych
w obrazie (pikseli) znajduje naturalnie odbicie w takiej analizie Fouriera: duże jedno
rodne powierzchnie produkują składniki o małej częstotliwości a drobne skompliko
wane detale odpowiedzialne są za przebiegi wysokoczęstotliwościowe. Przeważająca
większość informacji wizualnej zwykłego równomiernie rozłożonego19 obrazu rozło
żona jest w zakresie składników o małej i średniej częstotliwości. Okazuje się, że poz
bawienie obrazu składników Fouriera o najwyższych częstotliwościach tylko w nie
wielkim stopniu wpływa na pogorszenie jego jakości (ocenianej okiem ludzkim).
Kolejnym krokiem w redukcji ilości informacji zawartej w obrazie jest pewne okrojenie
go z barwy szczegółów. Znów przychodzi z pomocą fizjologiczna strona zagadnienia:
zmysł wzroku bardziej jest wrażliwy na bodźce typu kontrast/jaskrawość niż na szcze
gółową strukturę barwną. Można więc uśrednić kolor dwóch sąsiadujących ze sobą
punktów i nadać im pewien kolor wypadkowy. Potrzebna do zapamiętania ilość infor
macji maleje po takiej operacji, a jakość obrazu cierpi na tym nieznacznie.
19 Szczególnie złośliwym przypadkiem są tutaj wszelkie twory abstrakcyjne takie jak fraktale
oraz drobne rastry punktowe.
20 MPEG-I dopasowany był do wydajności prostego odtwarzacza CD-ROM, w dalszym rozwoju
systemu powstała wersja MPEG-II pracująca na strumieniu 500 kB/s.
21 W systemie NTSC obowiązuje 352x240 i 30 fps.
22 Analogicznie: dla NTSC 176x 120 i 30 fps.
Grafika PC w dobie multimediów 501
Dekodowanie
Dekodowanie sygnału MPEG jest sprawą stosunkowo prostą. Występujące na rynku
w chwili obecnej produkty można zaliczyć do jednej z trzech klas:
91
Najczęściej spotkać można program o nazwie Xing.
502 Anatomia PC
DAC
Magistrala PCI s
Sygnał MPEG
(
ransfer: 170kB/s
30 fps)
CPU CD-ROM Transfer: 6MB/s
Powiększanie oryginalnego okna video lub wręcz rozciąganie na cały ekran jest również
wspomagane sprzętowo. Metody dorabiania brakujących linii i pikseli są, podobnie jak
w przypadku rozwiązań sprzętowych, różne. W zależności od nakładów można ocze
kiwać zróżnicowanych efektów. Proste chipy typu S3-Tio dublują kolejne linii przez co
ukośne krawędzie obiektów wzbogacane są o charakterystyczne uzębienie. Interpolacja
budująca linie pośrednie na bazie sąsiadów daje wspaniałe efekty ale podnosi koszty
scalonych kontrolerów.
%
Kodowanie
Tworzenie pliku MPEG jest procesem znacznie bardziej skomplikowanych niż jego
rozkodowanie. Najczęściej materiałem wejściowym jest jakaś produkcja video z kamery
lub innego podobnego źródła. Musimy więc dysponować kartą graficzną ze złączem
video, która zapisze na dysku ten materiał (digitalizacja), na razie w klasycznej (nie-
skompresowanej) choć już cyfrowej postaci. Plik taki może być przejęty przez program
kodujący do postaci MPEG.
Warto zdawać sobie sprawę, że kodowanie MPEG bez wspomagania sprzętowego jest
niezmiernie czasochłonne i zajmuje około 40 - 80 s czasu komputera (Pentium 166) na
jedną sekundę produktu końcowego.
Kodery akceptują też często pojedyncze obrazy w formie map bitowych (na przykład
PCX lub GIF). Podać je należy wtedy w formie kolejno ponumerowanych plików lub
umieścić ich nazwy w specjalnym skrypcie. Rozmiary map bitowych muszą na ogół
spełniać pewne wymagania; na przykład nie mogą przekraczać rozmiarów 768x576.
Format MPEG integruje obrazy kolorowe w trybie 24 bitów na kolor. Niektóre kodery
wyposażone są w funkcje regulacji strumienia wyjściowego. Można więc zarządać by
produkt wyjściowy rozpakowywał się do strumienia o określonej szerokości, nieko
niecznie 150 kB/s. Typowe oferowane szerokości leżą w przedziale 5 - 500 kB/s24.
4
Towarzyszący dźwięk, o ile nie jest już wkomponowany w plik źródłowy można podać
w formie dodatkowego pliku WAV. MPEG nie gwarantuje jednak w tym wypadku
automatycznej synchronizacji obrazu i dźwięku chociaż zwykle jest możliwa ręczna
korekta ustanawiająca zbieżność. Większość koderów dopuszcza wszelkie manipulacje
na ścieżkach dźwiękowych: mono, stereo, dwa kanały niezależne, zamiana kanałów itp.
Wybierając wielkość poniżej 150 kB/s, decydujemy się na znaczne obniżenie jakości.
Grafika PC w dobie multimediów 505
Kombinacja monitor-karta graficzna stanowi o jakości z jaką prezentuje się cały kom
puter wraz ze swoją mocą obliczeniową. Zakup karty graficznej powinien być poprze
dzony solidnym namysłem. Decyzja jest trudna, a wybór ogromny.
Rzadko kto nie musi uwzględniać czynników ekonomicznych, ale nawet ktoś mogący
sobie pozwolić na wszystko powinien zdawać sobie sprawę z tego co dany produkt
może mu zaoferować i czy jest w ogóle w stanie wykorzystać jego zalety.
Użytkownik PC, który posługuje się komputerem jako rozbudowaną maszyną do pisa
nia nie zauważy różnicy między drogą kartą Matrox Millenium 8 MB a tanim pro
duktem „No-Name“ z obsadą 2 MB RAM, jeśli tylko częstotliwość odświeżania obrazu
przewyższa nieco 70 Hz. Rozsądnym kompromisem na codzień jest kompatybilność
SVGA, a w miarę potrzeb akcelerator 2D lub 3D.
Najważniejsze parametry karty graficznej skupiają się nadal w obrębie pamięci gra
ficznej: jej rozmiaru, typu i szybkości. Czynniki te decydują o rozdzielczości, ilości
odtwarzanych barw oraz częstotliwości odświeżania obrazu.
Należy podkreślić, iż nie ma jak na razie idealnej karty, skupiającej w sobie wszystkie
nowinki i w najwyższej osiągalnej jakości. Wszystko odbywa się kosztem różnych
kompromisów i warto się dobrze zastanowić na czym nam na prawdę zależy.
Walka o stały przyrost prędkości odczytu odbywa się na wielu frontach jednocześnie:
opracowywane są stale nowe typy pamięci taktowane coraz to szybszymi zegarami,
stałej modernizacji podlega organizacja bloków pamięciowych a do każdego typu pa
mięci tworzone są ściśle dopasowane układy sterujące.
25 Za dolną granicę postrzegania takich drgań przyjmuje się (nie wnikając w obowiązujące w tej
dziedzinie przeróżne normy instytucji ochrony pracy) w praktyce 72 - 75 Hz. Ocena jest często
mocno subiektywna, zależy od treści obrazu i konkretnego człowieka. Jeszcze większe
rozbieżności panują przy określaniu górnej granicy. Twierdzenie, że im więcej tym lepiej
w ostatnim czasie poddawane jest ostrej krytyce.
Grafika PC w dobie multimediów 507
Organizacja pamięci
Typowy dla Windows 16-bitowy (216 barw) obraz kolorowy w formacie 1024x768
zajmuje około 1.6 MB pamięci graficznej. Aby go kompletnie odnowić w stosunkowo
krótkim czasie, na przykład 1/10 s, procesor musi przesłać strumień danych 16 MB/s.
Nie stanowi to jeszcze przeciążenia dla magistrali PCI. Lepsze karty graficzne mogą
przejąć z magistrali do 60 MB/s. Ponadto w praktyce prawie nigdy nie odbudowuje się
całego obrazu a jedynie pewne jego fragmenty (np. przesłonięte lub przesunięte okna).
W toku rozwoju kart graficznych projektanci już dawno stanęli przed problemem
ograniczeń w paśmie (dla standardowego trybu VGA mamy około 10 MB/s). Pierwszy
poważny przyrost zapotrzebowania z 10 na 55 MB/s był możliwy do zaspokojenia
początkowo jedynie poprzez zastosowanie drogich układów pamięci V-RAM.
Niestety nie wszystkie produkty przyozdobione naklejkami „128” i „64” mogą w istocie
rzeczy poszczycić się adekwatnymi parametrami. W zaciszu kolorowych pudełek
czekają na użytkownika często niemiłe niespodzianki. Ich przyczyna leży w konfi
guracji z niepełną obsadą pamięci. Względy ekonomiczne decydują o tym, iż szerokość
portu danych pojedynczych chipów pamięciowych wynosi zwykle 16 bitów. W zależ
ności od szerokości magistrali wewnętrznej sterownika i aktualnej obsady pamięci może
wystąpić następująca sytuacja przedstawiona na rysunku 8.15.
Cztery układy pamięci, każdy po 512 kB, tworzą wprawdzie w sumie blok 2 MB ale
dostęp do pamięci odbywa się w trybie 64-bitowym. Jeśli nawet kontroler wyprowadza
szynę podwójnej szerokości, nie może ona być w pełni wykorzystana. Produkt w tej
konfiguracji nie powinien być reklamowany jako 128-bitowy. Dopiero uzupełnienie do
4 MB uprawnia do posługiwania się takim określeniem.
RGB Monitor
Przetwornic
/
\
tóigisłmfcL wwretrzna
Szarotośc : 12fibłtów
Kontroler graficzny
128bitów
►
RAMDAC
>-
N 3C 3C 3C
Nawet pozornie duża ilość zainstalowanej na karcie pamięci niekoniecznie musi spro
stać pokładanym w niej zadaniom. Łatwo obliczyć, że w trybie True Color (32 bity na
piksel) i rozdzielczości 1280x1024 nawet 8 MB nie wystarcza do realizacji funkcji
Grafika PC w dobie multimediów 509
podwójnego buforowania: na karcie mieści się tylko jedna strona obrazu (5 MB). Kon
troler Glint radzi sobie w tym wypadku zrzucając drugi bufor do pamięci operacyjnej
PC co skutecznie blokuje magistralę PCI.
Powstanie tego typu pamięci jest wynikiem inwestycji w szybkość przy zacho
waniu niskiej ceny. Obserwuje się wyraźne tendencje w kierunku rozwoju szyb
kich układów właśnie tego typu (40 ns). Prace prowadzone są głównie przez fir
my Spea/Diamond i Hercules.
• RDRAM. Mianem tym określana jest pamięć Rambus. Zapewnia ona szybki
transfer (po 500 MB/s na każdy chip) zawdzięczany taktowaniu zegarem 250
Grafika PC w dobie multimediów 511
MHz. Dane przenoszone są podczas obydwu zboczy zegara. Tak szybka technika
stwarza oczywiście szereg problemów. Rosną wymagania odnośnie stosowanych
materiałów i precyzji wykonania.
Szerokość magistrali pojedynczego chipu ograniczona została do 8 bitów, co nie
ułatwia integracji w strukturach aktualnie rozwijanych sterowników. RDRAM
wymaga specjalnego sterownika pamięci (Memory Controller) co naturalnie
podnosi koszty produktów.
Pamięć tego typu znaleźć można na karcie Laguna II/3D firmy Cirrus Logic.
Kontrolę nad nią sprawuje specjalnie opracowany układ GD5464. Laguna może
się poszczycić ergonomicznym (85 Hz) trybem pracy (1600x1200 i 256 barw).
W opracowaniu znajduje się następny model kontrolera RDRAM oznaczony
symbolem GD5465, którego wprowadzenie udostępni pasmo transmisji o szero
kości 667 MB/s. Dwa połączone kanały tego typu pozwolą na przełamanie po
raz pierwszy bariery 1 GB/s.
• V-RAM. Specjalny typ pamięci opracowany przez firmę Texas Instruments.
Skrót V-RAM (Video RAM) nie oddaje istoty sprawy. Z punktu widzenia kon
trolera graficznego chipy pamięci V-RAM zachowują się jak normalne pamięci
DRAM. Osiągane pasmo przenoszenia przy zapisie magistralą 64-bitową nie
przekracza 200 MB/s. Cechą szczególną jest niezależny port27 wyjściowy pro
wadzący do przetwornika RAM-DAC. Transfer na tym odcinku sięga 360 MB/s
a kontroler nie musi tracić cykli zegarowych na wytworzenie sygnału dla moni
tora. Nie występuje tu, charakterystyczne dla wszystkich innych typów pamięci
zjawisko stopniowego blokowania ograniczonego przecież pasma przepusto
wego magistrali, w miarę wzrostu rozdzielczości i ilości odtwarzanych kolorów.
Można więc zachować wysoką (lub co najmniej ergonomiczną) częstotliwość
odświeżania ekranu przy pracy w trybach o wysokiej rozdzielczości rzędu
1600x1280.
Wbrew powszechnie panującej opinii, pobór danych z portu wyjściowego nie
jest całkowicie niezależny od cykli zapisu. Odczyt pamięci V-RAM przebiega
według następującego algorytmu:
• Cykl inicjowany jest przez kontroler, który adresuje punkt początkowy
żądanego obszaru
• Chip V-RAM wyprowadza automatycznie bit po bicie zawartość kolej
nych komórek tego obszaru do specjalnego rejestru przesuwnego
• Dane znajdujące się w tym rejestrze mogą być pobierane przez przetwor
nik RAM-DAC
• Do wyczerpania zawartości rejestru pamięć może być zapisywana. W tym
sensie możliwy jest jednoczesny zapis i odczyt.
Pamięci V-RAM obciążone są opłatami licencyjnymi na rzecz wynalazcy, firmy
Texas Intstruments, przez co są zbyt drogie dla rynku powszechnego konsu
menta.
Stąd też pochodzi bardziej precyzyjna nazwa tego typu pamięci: Dual Ported RAM.
512 Anatomia PC
W zastosowaniach DTP i podobnych sięgnąć trzeba jeszcze wyżej. Praca w trybie True
Color przy rozdzielczości 1280x1024 lub ergonomiczne 1600x1200 w High Color wy
maga sięgnięcia po obsadę 4 MB (VRAM lub WRAM) przy współudziale przetwornika
RAMDAC 220 MHz. Osiągnięcie częstotliwości odświeżania powyżej 69 Hz w obec
ności przetwornika klasy 175 MHz nie jest w tych trybach możliwe.
Dzisiaj już prawie każda karta VGA ma wbudowane funkcje akceleratora video, tzn.
jest zdolna do odtwarzania video-clipów z dysku kompaktowego lub twardego i prezen
towania ich na ekranie monitora z całkiem przyzwoitą ilością klatek na sekundę (tego
typu przyspieszanie funkcji video nie ma nic wspólnego z digitalizacją lub obróbką
materiału filmowego przejmowanego ze źródeł zewnętrznych). Sekwencje video
(video-clipy) w formacie AVI nie stanowią nadmiernego obciążenia dla komputera
klasy PC. Z kolei MPEG-I, szyty na miarę procesora Pentium-100, nawet przy pracy
pełnoekranowej nie wymaga specjalnej karty graficznej. Większość znajdujących się na
rynku produktów osiągnęła pewien stosunkowo wysoki poziom rozwoju a niewielkie
między nimi różnice wychwycić można jedynie przy pomocy specjalnych programów
testujących. Jeśli zadowala nas projekcja z prędkością 10 fps przy niezbyt wyszukanej
jakości dźwięku, wystarczy nawet maszyna klasy 486 i odtwarzacz software’owy Xing.
MPEG-I wspomagany sprzętowo gwarantuje pełne 25 fps i stereofoniczny dźwięk
nawet na komputerze 486.
Jeden bajt daje możliwość rozróżnienia 256 kolorów. Dwa bajty mogą zakodować do
2 16 różnych możliwych kolorów (tryb High Color, w zależności od przyjętej umowy
oznacza 32768 lub 65535 barw). Praca w trybie True Color wymaga poświęcenia trzech
bajtów na piksel. Pozwala to na przedstawienie ponad 16 milionów barw. 24-bitowe
cykle dostępu do pamięci graficznej nie są najmocniejszą stroną kontrolerów graficz-
522 Anatomia PC
nych z architekturą 64-bitową. Niektóre z nich poświęcają więc 4 bajty pamięci w celu
przyspieszenia dostępu. Tryb 3-bajtowy można niekiedy wymusić, możliwość ta ukry
wa się w programach konfiguracyjnych pod nazwą Packed Pixel Mode. Bez tego nie
"70
było by możliwe korzystanie z rozdzielczości 1280x1024 i True Color mając do dys
pozycji nawet 4 MB pamięci graficznej.
Powyższa kalkulacja traci sens w przypadku akceleratora 3D, który bardzo intensywnie
korzysta z pamięci graficznej. Już w trybie 640x480 i High Color może powstać deficyt
nawet przy obsadzie 4 MB. Na samą pamięć obrazu przypada zgodnie z powyższymi
obliczeniami około 600 kB. Drugie tyle trzeba przeznaczyć na dodatkowy bufor (Back
Buffer) w którym przygotowywany jest obraz i jeszcze raz tyle samo na potrzeby bufora
Z. Razem już prawie 2 MB. Do tego doliczyć musimy pamięć tekstur. Jeśli włączona
jest filtracja trilineama w pamięci schronienie musi znaleźć cała rodzina map bitowych:
oryginał 256x256 plus pomniejszenia 128x128, 64x64, aż do 1x1. Na całość potrzeba
zarezerwować prawie 90 kB, a to dopiero jedna tekstura i to w bardzo oszczędnym
1-bajtowym trybie kolorowym. Jakość tekstur też zależy od ilości zakodowanych barw:
standardowy 1-bajtowy PCX ma ich 256 ale lepsze wyniki osiąga się oczywiście
w PCX-High. Znowu dodatkowa pamięć (ponad 170 kB na rodzinę Mip-Mapów).
•
p
RAMDAC
Układ RAMDAC30 (Random Acces Memory - Digital/Analog Converter) stanowi sto
pień wyjściowy karty graficznej i przetwarza zakodowany cyfrowo obraz w pamięci na
analogowe sygnały RGB sterujące tor wizyjny monitora.
Prędkość maksymalna z jaką może przebiegać ta konwersja (Pixel Clock) leży obecnie
w zakresie od 135 (produkty powszechnego użytku) do 250 MHz (Matrox Millenium
II). Stopniowo ucieka się od konwencji realizacji szybkich przetworników (powyżej
200 MHz) jako niezależnych układów scalonych. W chwili obecnej panuje tendencja
integracji nawet najszybszych konwerterów RAMDAC w chipie kontrolera. Wymagana
częstotliwość taktowania przetwornika wynika z aktualnie ustawionej rozdzielczości
i częstotliwości odświeżania obrazu a nie zależy od ilości dostępnych w danym trybie
barw. Sam fakt obecności na karcie przetwornika klasy 220 MHz nie oznacza, że pra
cuje on stale z tą częstotliwością. Może się zdarzyć, że ze względu na posiadany
monitor nigdy nie wykorzystamy pełnych możliwości oferowanych przez RAMDAC.
Aktualna częstotliwość pracy wynika z następującego obliczenia:
fRAMDAC = k * p * 1* fH
gdzie:
k - współczynnik bezpieczeństwa, zapewnia rezerwę na okresy powrotów linii
i ramki.
p - ilość punktów w linii
Można obliczyć do czego naprawdę potrzebny jest RAMDAC klasy 220 MHz. W trybie
1024x768 przy 75 Hz wystarczy przecież częstotliwość 79 MHz. Dopiero dla rozdziel
czości 1600x1200 i 85 Hz zegar taktujący musi przełączyć się na najwyższe obroty.
prostokątny
0t7V
ao
CQ
.O
S
CO
aov
trwania
impulsu. Prawa fizyki ograniczają niestety stromość zboczy. Sygnał nie może narastać
nieskończenie szybko, mamy wyraźnie zaznaczone fazy narastania i opadania. Faza
pełnej jasności trwa nieco krócej niż szerokość impulsu mierzona u podstawy (rysunek
8.17).
Czas trwania
Rysunek 8.17. 1 piksla (7,4ns)
Rzeczywisty
sygnał
generowany
przez układ
RAMDAC
0,7V
0,0V
Rdzeń ferrytowy
Rysunek & 18;
Filtr pomiędzy RAMDAC I--------t - t f H - ł ------ o '
układem
UMDAC
a monitorem
Jakość monitora
Poziom techniczny obrazu na ekranie zależy nie tylko od klasy monitora ale również od
czystości sygnału wytwarzanego przez kartę. Podobnie jak większość elementów skła
dowych systemu PC ich jakość może być różna. Uważać należy szczególnie przy za
kupie zestawów komputerowych. Ostra konkurencja cenowa zwiększa szansę trafienia
na oba składniki o stosunkowo niskiej jakości.
Będące w powszechnym użyciu monitory dają się zaliczyć do jednej z grup. Podstawą
do takiej klasyfikacji jest dopuszczalna częstotliwość odchylania poziomego. Aby mo
nitor mógł pracować w określonym trybie musi sprostać wymogom częstotliwości od
chylania poziomego. Ergonomiczna częstotliwość odświeżania leży nieco powyżej 72
Hz i ten warunek spełnia prawie każdy monitor. Program konfiguracyjny sterownika
karty graficznej proponuje często w wysokich trybach pracy częstotliwości odchylania
dochodzące do 200 Hz. Zawsze jednak można zarządać redukcji do 75 Hz, z korzyścią
dla zmniejszenia obciążenia magistrali pamięciowej karty.
Dany tryb pracy nakłada określone wymogi na pasmo toru wizyjnego zainstalowanego
monitora. Wartości minimalne zebrane zostały w poniższej tabeli.
Wykroczenie poza pasmo toru wizyjnego nie stanowi żadnego zagrożenia. Po prostu sy
gnał wysokiej jakości nie będzie poprawnie odtwarzany (nieostry obraz).
Programy instalacyjne
Procedury konfiguracyjne dołączane do karty graficznej próbują wydobyć to co najlep
sze z oferowanych zasobów. Dobre programy instalacyjne potrafią rozpoznać monitor,
jeśli naturalnie jest to możliwe (DDC). Często typ monitora można wyłowić z bazy
danych programu. Jeśli nie można go tam znaleźć, pozostaje przestudiowanie instrukcji
obsługi i ręczne wprowadzanie danych.
Ilość możliwych do ustawiania opcji jest różna. Mało który z programów prezentuje ich
tak wiele jak instalator produktów Elsa (rysunek 8.19). Nieumiejętne posługiwanie się
tak potężnym narzędziem może spowodować uszkodzenie mało odpornych monitorów.
Grafika PC w dobie multimediów 527
Rozbudowane
możliwości
konfiguracji
oferowane przez
program obsługi
karty Elsa
Układ 8253/8254
Klasyczna architektura komputera PC/XT i PC/AT zawiera jeden programowalny gene
rator typu 8253 łub 8254. Ten drugi różni się minimalnie od pierwszego posiadaniem
dodatkowego rozkazu Read-Back. Nowoczesne modele AT, zwłaszcza 386 i 486,
dysponują niekiedy dwoma takimi generatorami. Uproszczony schemat blokowy układu
8253 przedstawiony jest na rysunku 9.1.
530 Anatomia PC
8253/8254
Na układ ten składają się trzy w pełni niezależne generatory oznaczone numerami 0, 1 i 2.
Każdy z bloków generacyjnych zawiera niezależne wejścia GATE i CLK oraz wyjście
OUT. Dła potrzeb programowania generatory połączone są wewnętrzną 8-bitową magi
stralą. Zestaw dodatkowych sygnałów sterujących umożliwia procesorowi dwukierun
kowy dostęp do rejestrów sterujących każdego z nich.
Rysunek 9.2.
Zestaw rejestrów D7 1 1 24 _J v cc
procesorów
D6 d 2 23 !□ WR
80x86
dostępnych D5 d 3 22 ZD RD
dla programisty D4 d 4 21 H I CS
D3 d 5 8253 20 Z3 A1
D2 d 6 19 ZU A0
D1 d 7 (8254) 18 Z3 CLK2
DO d 8 17 ZU OUT2
CLKO d 9 16 ZZ GATE2
OUTO d 10 15 I CLK1
GATEO d 11 14 Z Z GATE1
GND 12 13 I Z OUT1
AG Al A dresowany rej es tr
0 0 licznik CEO
1 0 licznik CE1
0 1 licznik CE2
1 1 rejestr stanu
TrybO.
W stanie początkowym wyjście OUT znajduje się w stanie 0. Po załadowaniu do wy
branego licznika CE wartości N (oznaczającej liczbę zliczanych impulsów taktujących)
następuje odliczanie impulsów podawanych na wejście CLK do chwili wyzerowania
licznika CE, co powoduje pojawienie się na wyjściu OUT stanu 1. Stan ten utrzymywać
się będzie aż do nadejścia następnego słowa sterującego, programującego generator do
pracy w trybie 0. Odliczanie impulsów taktujących ma miejsce tylko wtedy, gdy na
wejście GATE podany jest wysoki poziom logiczny.
T ry b l
W stanie początkowym wyjście OUT jest w stanie 1. Pierwszy impuls podany na
wejście CLK powoduje pojawienie się na wyjściu OUT stanu 0, który utrzymuje się do
końca zliczania impulsów taktujących. Pierwszy impuls pojawiający się na wejściu
CLK po przejściu licznika CE przez stan 0000, powoduje ponownie wystawienie na
wyjściu OUT logicznej jedynki. Układ wytwarza więc pojedynczy impuls niskiego
poziomu logicznego o czasie trwania A*T clk, gdzie A jest pierwotną zawartością licz
nika CE, a TClk jest okresem przebiegu taktującego podawanego na wejście CLK.
Stan sygnału GATE musi być utrzymany na poziomie logicznej jedynki przez cały cykl
zliczania. Jeżeli sygnał GATE zmieni swój poziom na zero, jego powrót do poziomu
wysokiego spowoduje ponowne załadowanie licznika CE wartością N. Możliwe jest
oczywiście zapisanie nowej wartości N w czasie pracy generatora (cyklu zliczania), ale
będzie ona uwzględniona dopiero od następnego impulsu GATE.
Tryb 2.
Działanie trybu 2. jest analogiczne do opisanego wyżej trybu 1. aż do momentu osiąg
nięcia przez licznik CE wartości 0001, tj. tuż przed końcem odliczania. Stan wyjścia
OUT (znajdującego się dotychczas w stanie 1) zostaje wówczas na czas jednego okresu
przebiegu taktującego sprowadzony do niskiego poziomu logicznego. Licznik CE łado
wany jest powtórnie wartością N i cykl powtarza się. Zliczanie ma miejsce tylko dla
GATE^l i jest wstrzymywane na czas, gdy GATE=0. W trybie 2. generowany jest - jak
widać —okresowo impuls szpilkowy o okresie A* Tclk * szerokości Tclk-
Tryb 3.
D z ia ła n ie u k ła d u 8 2 5 3 w t y m tr y b ie je s t id e n ty c z n e z d z ia ła n ie m w t r y b ie 1. a ż do
momentu osiągnięcia przez licznik CE wartości NI2. Następuje wówczas zmiana stanu
wyjścia OUT z 1 na 0. Stan OUT=0 utrzymuje się do momentu wyzerowania licznika
CE, po czym zmienia się na 1. Opisany proces przebiega tylko wtedy, gdy na wejście
GATE podany jest stan 1; w przeciwnym razie na wyjściu OUT utrzymuje się stały wy
soki poziom logiczny.
System odmierzania czasu 533
Tryb 4.
W stanie początkowym wyjście OUT jest w stanic wysokim. Pierwszy impuls podany
na wejście CLK wpisuje do licznika CE zadaną wartość N. W stanie GATE=1 następne
impulsy taktujące powodują zmniejszanie licznika do osiągnięcia wartości 0000. Poziom
na wyjściu OUT opada wówczas do zera na czas TCLK. W trybie 4. mówimy o progra
mowym wyzwalaniu licznika , bowiem moment rozpoczęcia odliczania określony jest
dokonaniem zapisu do rejestru sterującego.
Tryb 5.
W przeciwieństwie do pracy w trybie 4., licznik wyzwalany jest sprzętowo poprzez
zmianę poziomu na wejściu GATE z 0 na 1. Powoduje to zapisanie do licznika CE
wartości N i rozpoczęcie odliczania. Sygnał na wyjściu OUT przyjmuje poziom zera
logicznego po A+l cyklach przebiegu taktującego, począwszy od impulsu wyzwalają
cego GATE. Przedwczesne (przed zakończeniem odliczania), ponowne podanie impul
su GATE powoduje odnowienie wartości N , a więc generowany impuls nigdy nie
będzie krótszy od założonej wartości.
Rysunek 9.3, 8 2 5 3 /8 2 5 4
Przyporządkowań ie
0
-
generatorów układu
Tryb 2 Zegar
8253
1
Tryb 3 RAM
C L K = 1 .19318 M H z
2
Tryb 3 Głośnik
534 Anatomia PC
Adres Rejestr
040h (048h) licznik generatora 0
041h (049h) licznik generatora 1
042h (04Ah) licznik generatora 2
043h (04Bh) rejestr sterujący
W następnej kolejności należy przesłać dane opisujące stan początkowy licznika CE zaad
resowanego bitami 7-6. Rozkazy zapisujące tylko jedną połowę licznika CE uzupełniane
są przez układy sterujące w taki sposób, że pozostała część CE wypełniana jest zerami.
Rozkaz adresowany do określonego generatora jest ważny do czasu wysłania następnego
rozkazu. Oznacza to, że stan dostępnych przez porty 040h-042h liczników 0-2 można
zmieniać „na gorąco” podczas pracy generatora. Obowiązuje jednak sprecyzowane w bi
tach 5—4 znaczenie i ilość akceptowanej przez rejestry informacji. Nie można więc, nie
wysyłając nowego rozkazu, modyfikować wyłącznie bardziej znaczącego bajtu licznika,
jeżeli pierwszy rozkaz ustawiał jego mniej znaczący bajt. Identyczne ograniczenia obo
wiązują przy odczycie stanu licznika.
Aktualny stan licznika CE dowolnego z generatorów można uzyskać przez odczyt odpo
wiedniego portu instrukcją in. Instrukcja ta, skierowana do portu licznika danego genera
tora, nie sięga bezpośrednio do rejestru CE, lecz do rejestrów zatrzaskowych CRL i CRH,
które oddzielają CE od wewnętrznej magistrali układu. Aby umieścić w tych rejestrach
zawartość CE, należy najpierw wysłać do portu 043h słowo rozkazu z wyzerowanymi
bitami 5^1. Bity 7-6 takiego rozkazu identyfikują oczywiście odpowiedni generator, a
bity 3—0 są w tej operacji ignorowane. Dopiero teraz można bezpiecznie zastosować
rozkaz in (odpowiednio raz lub dwa razy) dla odczytania aktualnego stanu licznika CE.
P r z y k ła d :
mov al,OOh ; adresowany generator 0
out 43h,al ; przepisz zawartość CE do CRL i CRH
in al,40h ; odczytaj zawartość CRL do AL
mov al,ah ; przepisz AL do AH
in al,40h ; odczytaj zawartość CRH do AL
xchg al,ah ; zamień połówki rejestru AX -> AX = CE
Nieco skomplikowany sposób odczytu rejestrów CRL i CRH wynika z faktu, że operan-
dem rozkazu in może być jedynie rejestr AL (lub AX), natomiast przez port 040h
dostępny jest najpierw rejestr CRL, a następnie CRH. Zwróćmy również uwagę, że dla
układu 8253 nie ma możliwości odczytania stanu początkowego licznika CE, ustawio
nego trybu pracy ani tego, czy generator programowany był jednym, czy dwoma bajtami.
Niemożliwe jest również sprawdzenie, czy licznik odlicza w kodzie binarnym, czy
BCD.
Zegar systemowy
Rysunek 9.4. przedstawia schematycznie zasadę funkcjonowania zegara systemowego
Następnie sprawdzane jest, czy nowa zawartość licznika nie przekracza 24 godzin
(1573040 impulsów zegara systemowego), a jeżeli tak, to licznik jest zerowany. Licznik
ten jest podstawowym źródłem informacji o upływającym czasie, wykorzystywanym
przez system operacyjny. Zlicza on jednak czas od momentu startu systemu, a zatem nie
pozwala jednoznacznie określić bieżącej daty i czasu. Dane te musimy wprowadzić
podczas startu systemu operacyjnego poleceniami systemu date i time lub za pomocą
innego programu, wpisującego odpowiednie wartości do wspomnianego obszaru pamię
ci. Modele AT wyposażone są standardowo w zegar czasu rzeczywistego (z podtrzy
maniem bateryjnym), którego zawartość jest automatycznie przepisywana do pamięci
komputera w chwili startu systemu.
Pamięć operacyjna komputera jest pamięcią dynamiczną (ang. DRAM - Dynamie Ran
dom Access Memory). Nośnikiem informacji są w niej ładunki elektryczne uwięzione
w krysztale półprzewodnika. Na skutek będących nie do ominięcia właściwości fizycz
nych materiału ładunki te uchodzą do podłoża układu scalonego, tak więc komórka pa
mięci dynamicznej pozostawiona sama sobie ma tendencje do stopniowej utraty infor
macji. Aby temu zapobiec, informację zmagazynowaną w komórce należy co pewien
czas odświeżać. Charakterystyczną cechą tego rodzaju pamięci jest to, że każda ope
racja odczytu komórki pamięci powoduje automatycznie jej odświeżenie.
Układy sterowania pamięcią, tj. dekodery adresu i wzmacniacze odczytu, zostają pobu
dzone do pracy, co powoduje odświeżenie wszystkich komórek wiersza lub kolumny
pamięci. Adresowane przez układ DMA słowo zostaje oczywiście wystawione na magi
stralę danych, jednak żadne z urządzeń wejścia-wyjścia nie czuje się zobligowane do
jego odebrania, toteż znika ono z magistrali w trakcie jej następnego cyklu. Kolejna
transmisja kanałem 0 DMA sięga do następnej komórki i tak po pewnym czasie odświe
żeniem objęty zostaje cały obszar pamięci.
System odmierzania czasu 539
Prostokątny sygnał z wyjścia OUT2 napotyka na swej drodze klucz sterowany stanem
bitu 1 rejestru 61 h (port B układu 8255). Stanem wejścia GATE2 steruje bit 0 tego
rejestru. Wspomniany rejestr należy fizycznie do programowanego układu wejścia-
wyjścia 8255. Układ ten występuje tylko w modelu PC/XT, gdzie ma za zadanie między
innymi obsługę klawiatury, odczytywanie nastaw przełączników konfiguracyjnych i ste
rowanie rejestrem maskowania NMI. Modele AT posługują się przy obsłudze klawiatu
ry i pamięci konfiguracji innymi rozwiązaniami, toteż układ 8255 został z nich
usunięty. Z oczywistych względów znaczenie i adres portu B zostały w architekturze
AT odwzorowane sztucznie.
Po przejściu przez klucz sygnał prostokątny jest wzmacniany i przepuszczany przez filtr
dolnoprzepustowy, który ma ograniczyć wyższe harmoniczne przebiegu prostokątnego
1 przybliżyć przebieg do sinusoidy. Jakości wytwarzanych w ten sposób tonów nie
należy przeceniać, gdyż wzmacniacz, o którym mowa, zawiera zwykle dwie bramki
NAND i tranzystor, a wspomniany filtr to najczęściej dołączony równolegle do głośnika
kondensator o pojemności 100 nF. Głośnik w komputerze PC służy^przede wszystkim
do prostej sygnalizacji, zaś zwolennicy muzyki o wysokiej jakości muszą zaopatrzyć się
w specjalną kartę dźwiękową, np. Sound Blaster lub AdLib. Istnieją też proste rozwią
zania bazujące na łączu równoległym komputera (Covox).
System odmierzania czasu 541
lub
in al,61h
and al,11111110b ; otwórz klucz
out 61h,al
Częstotliwość drgań generatora można dowolnie zmieniać w czasie pracy układu. Zała
dowanie licznika CE nową wartością nie wymaga każdorazowego włączania i wyłą
czania generatora lub klucza. Wystarczy wprowadzić do portu 042h nowy podzielnik N
(w formie LSB i/lub MSB, zależnie od wcześniejszego zaprogramowania generatora),
a najpóźniej w 0.838 ms potem zostanie on przeniesiony do rejestru CE i układ zmieni
swą częstotliwość pracy. Cała ta operacja jest absolutnie niewyczuwalna dla ucha ludz
kiego.
542 Anatomia PC
Teoretycznie może się zdarzyć, że wadliwie działająca aplikacja lub wręcz sam system
operacyjny zablokuje wszystkie przerwania sprzętowe - bądź to rozkazem CLI, bądź
przez rejestr maskujący kontrolera przerwań 8259. Procesor znajduje się wtedy naj
częściej w nieskończonej pętli programowej i nie reaguje na polecenia z klawiatury.
Jedynym sposobem wyjścia z tej pętli jest naciśnięcie przycisku Reset komputera, co
powoduje oczywiście daleko idące konsekwencje, przyjmujące najczęściej postać utraty
przetwarzanych danych. Z pomocą przychodzi w tej sytuacji właśnie dodatkowy gene
rator nazywany fail-safe timer. Na rysunku 9.7. przedstawiono schematycznie wszystkie
możliwe źródła przerwania niemaskowalnego NMI.
Rysunek 9.7.
Źródła
przerwania
niemaskowałneg
oNMl
Koprocesor
arytmetyczny
OUTO
Głośnik
2 CLK2
o CLK
0
-----------------
RAM CLK1
i_
Zegar 0
-----------------
CLKO
o
544 Anatomia PC
Pamięć CMOS-RAM 545
Mówiąc o pamięci CMOS w komputerze PC mamy zwykle na myśli nie tylko komórki
pamięci, lecz również zespół układów z nią stowarzyszonych. Należą do nich zegar
czasu rzeczywistego, rejestry sterujące, port adresowy i port danych. Tak pojmowana
pamięć CMOS przechowuje informacje o konfiguracji sprzętowej komputera oraz
zawiera kalendarz i zegar czasu rzeczywistego.
Układ pamięci CMOS w PC/AT zasilany jest z baterii lub małego akumulatora, doła
dowywanego zwykle z zasilacza sieciowego komputera. Gwarantuje to, w zależności od
jakości baterii, kilkuletnią bezawaryjną pracę - nowoczesne baterie litowe mają trwa
łość około 10 lat. Niekiedy stosowane są też układy scalone zintegrowane z zasilaczem
(DALLAS).
546 Anatomia PC
Funkcję pamięci konfiguracji i zegara czasu rzeczywistego pełni w PC/AT układ sca
lony MC146818. Najistotniejszą część tego układu stanowi 64-komórkowa pamięć
CMOS-RAM. Do każdej 8-bitowej komórki pamięci mamy swobodny dostęp, tzn. od
czyt i zapis nie są poddane żadnym ograniczeniom technicznym.
Czas i data kodowane są do postaci BCD, tzn. w jednym bajcie mieszczą się dwie cyfry
dziesiętne od 0 do 9, każda przedstawiona binarnie na czterech bitach. Format BCD jest
akceptowany przez funkcje BIOS; jeżeli programujemy bezpośrednio rejestry sterujące
i używamy własnych funkcji obsługi zegara, nic nie stoi na przeszkodzie, by stosować
format binarny. Zegar może pracować w trybie 12- łub 24-godzinnym, rozpoznawać
czas letni i zimowy, określać dzień tygodnia i miesiąca. System DOS nie korzysta z tych
wbudowanych w układ możliwości.
Kluczowe znaczenie dla działania całego układu CMOS-RAM mają rejestry kontrolne
oznaczone literami A, B, C, D, E i F.
Wartość podstawy czasu (bity 6—4) generatora odniesienia układu można ewentualnie
zmieniać, co spowoduje przyspieszenie lub opóźnienie pracy zegara. Bity 3^0 określają
częstotliwość sygnału prostokątnego, który jest źródłem tzw. przerwania okresowego.
Dopuszczalnymi wartościami są liczby z przedziału od 3 do 15, co odpowiada fmm = 2
Hz i fmax = 8192 Hz. Wpisanie wartości OOOOh wyłącza generator. Układ inicjalizowany
jest standardowo współczynnikiem równym 6, co odpowiada częstotliwości 1024 Hz.
Wspomniany przebieg prostokątny wyprowadzany jest wprawdzie na wyjście układu
MC146818, ale w architekturze PC/AT nie znajduje on żadnego zastosowania (mowa
o samym przebiegu, nie o generowanym przez niego przerwaniu okresowym).
Bit 7 tego rejestru włącza i wyłącza cykl aktualizowania czasu. Oznacza to, że zegar
można w dowolnej chwili zatrzymać i ponownie uruchomić. Bit 6 otwiera i zamyka
wyjście sygnału przerwań okresowych o częstotliwości definiowanej bitami 3 -0 rejestru
A.
W stanie aktywnym funkcji alarmu (bit 5) czas bieżący porównywany jest podczas
każdego cyklu aktualizacji (co sekundę) z wartościami zapisanymi w komórkach 1, 3 i
5. Pozytywny wynik porównania prowadzi do wygenerowania przerwania.
S
Bit 2 steruje sposobem kodowania liczb reprezentujących czas i datę. Możliwa jest re-
prezentacja binarna (8 bitów może przedstawiać liczby 0-255) lub BCD (dwie czwórki
bitów reprezentują dowolne cyfry dziesiętne, dając liczbę od 00 do 99).
Zegar może pracować w trybie 12- lub 24-godzinnym. W trybie 12-godzinnym czas po
godzinie 12 w południe reprezentowany jest przez ustawienie najbardziej znaczącego
bitu licznika godzin, tzn. godziny popołudniowe (ang. PM) kodowane sąjako 8 Ih—92h.
Rejestr C (OCh)
Procedura obsługi przerwania 70h (4Ah) musi zachować się stosownie do źródła przer
wania. Przyczynę przerwania określa rejestr C. Bit 7 pozwala upewnić się, czy przerwa
nie w ogóle pochodzi od układu MC146818. Jeżeli tak, to bity 6, 5 i 4 precyzują jego
rodzaj. Jednoczesne wystąpienie kilku rodzajów przerwań od układu MC 146818 jest
możliwe pod warunkiem, że zostały one zbiorowo dopuszczone (przez ustawienie bitów
6—4 rejestru B). Procedura obsługi przerwania musi wtedy również zadecydować o ko
lejności ich realizacji.
Rejestr D (ODh)
Rejestr E (OEh)
b it 7 b it 6 b it 5 b it 4 b it 3 b it 2 b it 1 b itO
Jeżeli napięcie baterii zasilającej układ CMOS-RAM spadnie choć na chwilę poniżej
pewnej ustalonej wartości (co grozi uszkodzeniem zawartych w nim danych), układ sam
ustawia bit 7 rejestru D. Stan tego bitu odczytywany jest przez jedną z procedur POST,
a wynik kontroli umieszczany jest w bicie 7 rejestru E.
Bit 6 rejestru E informuje, czy suma kontrolna komórek 10h-2Dh jest prawidłowa. Su
ma ta obliczana jest każdorazowo przez procedury POST i umieszczana w komórkach
2Eh i 2Fh.
Bit 2 informuje, czy aktualny czas zegara spełnia pewne wymagania formalne, tzn. czy
liczby przedstawiające godziny, minuty i sekundy mieszczą się w przeznaczonych dla
siebie przedziałach. Przykładem błędnego (w tym znaczeniu) czasu może być 25:92:70.
Rejestr F (OFh)
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO
Dyski twarde
Numery identyfikacyjne typów zainstalowanych dysków twardych określa bajt 18. Od
powiadają one typom dysków zawartym w bazie danych programu Setup.
Pod wartością 111 l b kryje się cała rzesza dostępnych na rynku dysków twardych. War
tość ta oznacza, że dane dotyczące konkretnego modelu dysku należy pobrać z tablicy
parametrów BIOS, zawierającej oddzielne dla każdego typu dysku zestawy danych.
Numer odpowiedniej pozycji (indeks) tej tablicy znajduje się w komórce 19h (dla dysku
pierwszego) lub lAh (dla dysku drugiego) pamięci CMOS. Układ i znaczenie pozycji
tabeli nie są unormowane i różnią się w zależności od wytwórcy BIOS i komputera.
Pamięć
Rozmiar pamięci podstawowej systemu określony jest zawartością komórek 15h (LSB)
i 16h (MSB) CMOS-RAM. Utworzona z połączenia zawartości tych komórek 16-bitowa
liczba reprezentuje rozmiar pamięci w kilobajtach. Wielkość pamięci dodatkowej (ex
tended memory) deklarowana przez użytkownika w trakcie sesji z programem Setup
umieszczana jest w komórkach 17h (LSB) i 18h (MSB). Rozmiar pamięci dodatkowej
faktycznie obecnej w systemie określany jest przez procedury POST i wprowadzany do
komórek 30h (LSB) i 31h (MSB).
Suma kontrolna
Komórki 10h-2Dh objęte są sumą kontrolną, obliczaną przez BIOS każdorazowo przy
uruchamianiu systemu. Suma ta stanowi 16-bitową liczbę będącą wynikiem zwykłego
dodawania zawartości komórek. Odkładana jest ona w bajtach 2Eh (LSB) i 2Fh (MSB).
Opisane poniżej wybrane funkcje przerwania lAh BIOS-u umożliwiają dostęp zarówno
do kalendarza i zegara czasu rzeczywistego zawartego w pamięci CMOS, jak i zegara
systemowego DOS-u. Funkcje te operują wyłącznie na liczbach w formacie BCD
(z wyjątkiem funkcji OOh i Olh).
Funkcja OOh
i
*
D z ia ła n ie :
Funkcja ta odczytuje stan 32-bitowego licznika impulsów zegara systemowego, zlokali
zowanego pod adresem 0040:006Eh (bardziej znaczące słowo) i 0040:006Ch (mniej
znaczące słowo). Zwracana jest liczba impulsów zliczonych od godziny 00:00. Jeżeli
system pracował dłużej niż 24 godziny, to rejestr AL zawiera wartość różną od zera
(w istocie AL zwraca stan znacznika przepełnienia licznika, umieszczonego pod adre
sem 0040:0070h), Wywołanie funkcji OOh powoduje w takim przypadku również wy
zerowanie rejestru przepełnienia.
556 Anatomia PC
P a r a m e t r y w e jś c io w e :
AH OOh.
W a rto ś c i z w ra c a n e :
AL zawartość znacznika przepełnienia (0040:007Oh);
CX bardziej znaczące słowo licznika impulsów;
DX mniej znaczące słowo licznika impulsów.
Funkcja 01 h
D z i a ła n ie :
Funkcja ta ma działanie odwrotne do funkcji OOh, tzn. wpisuje do licznika zegara sys
temowego zadaną wartość. Umieszczony pod adresem 0040:0070h znacznik przepeł
nienia jest przez tę funkcję zerowany.
P a r a m e t r y w e jś c io w e :
AH Olh;
CX bardziej znaczące słowo licznika impulsów;
DX mniej znaczące słowo licznika impulsów.
Funkcja 02h
D z i a ła n ie :
Funkcja ta odczytuje stan zegara czasu rzeczywistego układu MC 146818.
P a r a m e t r y w e jś c io w e :
AH 02h.
W a rto ś c i z w ra c a n e :
AH OOh;
CL minuty (w kodzie BCD);
CH godziny (w kodzie BCD);
DH sekundy (w kodzie BCD);
CF 1 w przypadku wystąpienia błędu.
Funkcja 03h
D z ia ła n ie :
Funkcja ta ustawia stan zegara czasu rzeczywistego układu MC 146818.
P a r a m e t r y w e jś c io w e :
AH 03h;
Pamięć CMOS-RAM 557
W a rto ś c i z w ra c a n e :
AH OOh;
CF l w przypadku wystąpienia błędu.
P r z y k ła d :
; ustawienie zegara CMOS na 08:30:10
mov ah,03h ; funkcja 03h
mov ch,08h ; godzina 08
mov cl,30h ; minut 30
mov dh,lOh ; sekund 10
mov dl,OOh ; czas normalny
int lah ; wywołaj przerwanie lAh
Funkcja 04h
D z i a ła n ie :
Funkcja ta odczytuje datę z kalendarza układu MC 146818.
P a r a m e t r y w e jś c io w e :
AH 04h.
W a rto ś c i z w ra c a n e :
CL dwie ostatnie cyfry roku (w kodzie BCD);
CH stulecie (w kodzie BCD);
DL dzień (w kodzie BCD);
DH miesiąc (w kodzie BCD);
CF 1 w przypadku wystąpienia błędu.
Funkcja 05h
D z ia ła n ie :
Funkcja ustawia datę w kalendarzu układu MC146818.
P a r a m e t r y w e jś c io w e :
AH 05h;
CL dwie ostatnie cyfry roku (w kodzie BCD);
CH stulecie (w kodzie BCD);
558 Anatomia PC
W a rto ś c i z w ra c a n e :
CF l w przypadku wystąpienia błędu.
Funkcja 06h
D z i a ła n ie :
Funkcja 06h programuje czas alarmu zegara czasu rzeczywistego układu MC146818.
Osiągnięcie przez zegar zadanego czasu alarmu wyzwala przerwanie 4Ah. Standardowa
procedura obsługi tego przerwania zawiera instrukcję iret (natychmiastowy powrót
z przerwania), ale można ją rozbudować stosownie do własnych potrzeb.
P a r a m e t r y w e jś c io w e :
AH 06h;
CL minuta alarmu (w kodzie BCD);
CH godzina alarmu (w kodzie BCD);
DH sekunda alarmu (w kodzie BCD).
W a rto ś c i z w ra c a n e :
CF 1 w przypadku wystąpienia błędu.
Funkcja 07h
D z ia ła n ie :
Funkcja ta powinna poprzedzać wywołanie funkcji 06h, usuwając z rejestrów alarmu
ewentualne wcześniejsze wartości.
P a r a m e t r y w e jś c io w e :
AH 07h.
W a rto ś c i z w ra c a n e :
CF 1 w przypadku wystąpienia błędu.
Każdy z 64 bajtów pamięci CMOS jest dostępny bez ograniczeń, tzn. można go zarów
no odczytać, jak i wpisać do niego dowolną wartość. Oddzielnym zagadnieniem jest,
czy po takiej modyfikacji uda nam się uruchomić system. W normalnych warunkach
wszelkich wpisów do pamięci CMOS dokonuje program Setup , który uwzględnia spe
cyficzne elementy organizacji pamięci konfiguracji. Wszyscy, którzy z jakichkolwiek
względów chcą korzystać w bezpośredni sposób z pamięci CMOS, muszą przestrzegać
zasad podanych poniżej.
• Port 7 Ih jest dwukierunkowym rejestrem danych CMOS.
• Port 70h stanowi rejestr adresowy pamięci CMOS. Rejestr ten nie przynależy
jednak w całości do pamięci CMOS: bit 7 rejestru 7Oh steruje przełącznikiem
blokady przerwania NMI (porównaj rysunek 6.7). Do zaadresowania 64 bajtów
wystarcza sześć najmniej znaczących pozycji bitowych rejestru 70h. Dla zacho
wania bezpieczeństwa należy zawsze stosować schemat działania podobny do
podanego poniżej:
; pobranie baj tu konfiguracji
in al,70h ;wczytaj bajt z portu 70h
and al/llOOOOOOb ; wyzeruj 6 najmłodszych pozycji
; bity 7 i 6 pozostają bez zmian
or al,14h ;adres bajtu konfiguracji sprzętowej (14h)
; bity 7 i 6 pozostają bez zmian
out 70h,al ;ustaw rejestr adresowy CMOS
in al,71h ;pobierz bajt konfiguracji do AL
Na koniec jeszcze jedna uwaga odnośnie programu Setup . Starsze wersje komputerów
AT nie posiadały tego programu w pamięci stałej, dysponując w zamian odpowiednim
programem narzędziowym (s e t u p .e x e lub s e t u p .c o m ) uruchamianym z poziomu sys
temu operacyjnego. Obecnie wszystkie komputery dysponują programami
konfiguracyjnymi (nieraz bardzo rozbudowanymi) zapisanymi w pamięci stałej.
560 Anatomia PC
Łącze równoległe 561
Poruszając się na poziomie systemu operacyjnego DOS możemy odwoływać się do dru
karek przez symbole LPT1-LPT4. Synonimem LPT1 jest PRN - domyślna drukarka
systemu. Symbole te stanowią oznaczenia urządzeń i nie jest powiedziane, że z danym
łączem LPT« musi współpracować drukarka. Jedynie programy obsługujące przerwania
sprzętowe pochodzące od tych łącz (zwykle IRQ5 i IRQ7) ukierunkowane są na specy
fikę obsługi drukarki z łączem równoległym.
Rysunek 11.1.
Rozmieszczenie STR »
sygnałów ALF
DO »
w 25-końcówkowym ËRR
gnieździe łącza D1 °
IN I
równoległego D2 »
DSL
D3 *
D4 *
D5
D6 *
D7 * GND
ACK o
BUSY o
PAP
ONOFo
Tabela 11A.
Oznaczenia linii przewodu Centronics
4 4 D2 w y jś c ie
5 5 D3 w y jś c ie
6 6 D4 wyjście
t *
7 7 D5 w y jś c ie
8 8 D6 w y jś c ie
9 9 D7 w y jś c ie
10 10 ~ACK w e jś c ie
11 11 BUSY w e jś c ie
W ■
12 12 PAP w e jś c ie
13 13 ONOF w e jś c ie
14 14 ALF w y jś c ie
15 32 ERR w ejście
16 31 INI w y jś c ie
17 36 DSL wyjście
18-25 19-30, 33 GND
16 0V
17 obudowa
18 +5 V
34,35 wolne
Warto wspomnieć, że w kwestii oznaczeń linii łącza równoległego panuje pewna do
wolność, na przykład linia ONOF zwana jest czasami ONLINE, linia PAP - PERR,
a linia -D SL — SLCT.
Jak wiadomo, DOS traktuje wszystkie urządzenia na równi z plikami dyskowymi. Pole
cenie copy plik.a plik.b nie różni się od polecenia copy plik.a lpt2. System
operacyjny przegląda listę nazw urządzeń (LPT1, LPT2, LPT3, LPT4, COM1, COM2,
COM3, COM4, AUX, CON, PRN, NUL) i odróżnia plik dyskowy od urządzenia, tak
więc zawartość pliku plik.a zostaje wysłana do programu sterownika (ang. device dri
ver) obsługującego łącze LPT2. Wspomnieć należy również o poleceniu type plik.a
> lpt2 oraz programie rezydentnym print (print plik.a /d:LPT2), które prowa
dzą do tego samego celu.
Dla obsługi drukarki programiści mogą korzystać z dwóch funkcji przerwania 2 lh: 05h
i 40h.
Funkcja 05h
D z ia ła n ie :
Funkcja ta jest reliktem z czasów systemu operacyjnego CP/M i obsługuje transmisję
pojedynczego znaku wyłącznie do łącza LPT1 (PRN).
Łącze równoległe 565
P a r a m e t r y w e jś c io w e :
AH 05h;
DL kod ASCII znaku.
W a rto ś c i z w ra c a n e :
— brak —
P r z y k ła d :
mov ah,05h; numer funkcji
mov dl,Och; znak wysuwu strony (FF - Form F e e d )
int 21h ; wysuw strony w drukarce
Funkcja 40h
D z i a ła n ie :
Funkcja ta w ogólnej postaci obsługuje zapis większej liczby znaków do pliku lub urzą
dzenia. Korzysta ona z koncepcji tzw. uchwytów (ang. handle) definiujących jednorazo
wo i jednoznacznie plik lub urządzenie.
Drukarce PRN (LPT1) przyporządkowany jest standardowo numer uchwytu 4. Urzą
dzenia LPT/i wymagają wcześniejszego otwarcia do zapisu funkcją 3Dh przerwania
21h. Funkcja otwarcia do odczytu (3Fh) nie ma w przypadku drukarki sensu
fizycznego.
P a r a m e t r y w e jś c io w e :
AH 40h;
BX numer uchwytu urządzenia LPTn;
CX liczba przesyłanych znaków;
DS:DX adres bufora zawierającego znaki.
W a rto ś c i z w ra c a n e :
AX liczba faktycznie przesłanych znaków lub kod błędu w przypadku
CF = 1;
CF 1 w przypadku wystąpienia błędu.
P r z y k ła d :
bufor DB 8 DUP(1*') ; osiem 2 naków
mov ah,40h ;numer funkcji
mov bx,04h ;uchwyt urządzenia PRN
mov cx,08h ;przesyłamy 8 znaków
mov dx,OFFSET bufor ; adres (przemieszczenie) bufora
; zakładamy, że DS zawiera
; adres segmentowy bufora
int 2lh ; przerwanie DOS
Funkcja 40h zwraca wprawdzie w rejestrze AX kod błędu, nie mówi natomiast nic
o stanie poszczególnych linii łącza. Informacji tych dostarczają funkcje BIOS-u.
566 Anatomia PC
Funkcja OOh
D z ia ła n ie :
Funkcja ta wysyła jeden znak do dowolnego z zainstalowanych w systemie łącz równo
ległych.
P a r a m e t r y w e jś c io w e :
AH OOh;
AL kod ASCII znaku;
DX numer łącza:
0 = LPT1,
1 = LPT2,
2 - LPT3,
4 = LPT4.
W a rto ś c i z w ra c a n e :
AH bajt statusowy.
P r z y k ła d :
mov ah,00h ;numer funkcji
mov al,'D ;znak "D"
mov dx,03h ;port LPT4
int 17h ;wyprowadź znak "D" na drukarkę LPT4
Funkcja 01 h
D z ia ła n ie ;
Funkcja Olh przeprowadza tzw. sprzętową inicjalizację drukarki i łącza (ang. hardware
reset). Linia -IN I jest aktywowana poprzez wystawienie na niej zera logicznego. Po
dobny efekt uzyskać można wysyłając tzw. sekwencję inicjalizującą (ang. software
reset), na ogół <ESC>'@', przy czym korzystamy wówczas ze wszystkich 8 linii danych
i linii sterujących. Należy jednak pamiętać, że nie każda drukarka reaguje na sygnał
-INI.
P a r a m e t r y w e jś c io w e :
AH Olh;
Łącze równoległe 567
DX numer łącza:
0 = LPTl,
1 = LPT2,
2 = LPT3,
4 = LPT4.
W a rto ś c i z w ra c a n e :
AH bajt statusowy.
P r z y k ła d :
mov ah,01h ; numer funkcji
mov dx,00h ; LPTl
int 17h ; inicjalizuj drukarkę dołączoną do portu LPTl
Funkcja 02h
D z ia ła n ie :
Funkcja ta zwraca w rejestrze AH bajt statusowy, odwzorowujący stan łącza i drukarki.
Nie są wykonywane żadne inne operacje.
P a r a m e t r y w e jś c io w e :
AH 02h;
DX numer łącza:
0 = LPTl,
1 = LPT2,
2 = LPT3,
4 = LPT4.
W a rto ś c i z w ra c a n e :
AH bajt statusowy.
P r z y k ła d :
mov ah,02h ; numer funkcji
mov dx,01h ; LPT2
int 17h ; bajt statusowy znajdzie się w AH
Wymieniany w opisie funkcji OOh, Olh i 02h bajt statusowy zawiera następujące dane:
Adres Znaczenie
0040:0078h limit czasu dla łącza LPT1 (w sekundach)
0040:0079h limit czasu dla łącza LPT2 (w sekundach)
0040:007Ah limit czasu dla łącza LPT3 (w sekundach)
0040:007Bh limit czasu dla łącza LPT4 (w sekundach)
Wartością domyślną przyjmowaną przez BIOS jest 20 sekund. Czas ten można zmienić
na nieskończenie długi (ma to znaczenie przy obsłudze drukarek laserowych) polece
niem DOS-u modę l p t n , , p. Po upływie zdefiniowanego wcześniej czasu oczekiwania
dane będą wysyłane ponownie.
Z rysunku 11.2. widać, że port taki dysponuje siedemnastoma wejściami X l-X 1 7 oraz
dwunastoma wyjściami Y1-Y12. Mamy więc w zasadzie nieograniczone możliwości
sterowania różnorodnych prostych układów automatyki. Mowa tu naturalnie o sterowa
niu typu „włącz-wy łącz”; również informacja dostarczana od zewnętrznych czujników
liniami X nie może mieć charakteru ciągłego - możliwe są tylko dwa stany. Linie da
nych można oczywiście wykorzystać do sterowania prostego przetwornika cyfrowo-
analogowego, uzyskując w ten sposób możliwość regulacji wielostopniowej.
Stan każdej z linii Y może być w każdej chwili zmieniany. Mamy również możliwość
kontroli poziomu logicznego na każdej z linii X.
Łącze równoległe 569
-.V »
X15
X3 o----- Y3
X16 ►Y11
i':;
X4 o----- - o Y4
X17 Y 12
X5 o----- - o Y 5 -*
X6 o----- U o <D
*:v
’w-
Y 6 -*
O
■> -
X7 o----- Y7 *
X8o----- -► o Y8
O
X9 o----- -►© Y9
0
X10o----- -H U
0
X11o-----
0
X12 o-----
X13 o-----1
a
Wartości adresów podane w nawiasach aktualne są w przypadku zainstalowania w sys
temie karty grafiki monochromatycznej z portem drukarki (MGP, Hercules). Procedury
inicjalizujące BIOS-u przeglądają standardowe adresy bazowe i w przypadku wykrycia
tam rejestru przyporządkowują mu kolejny numer LPTn.
74-
Każde łącze równoległe posiada trzy własne rejestry. Ich adresy podaje się w odniesie
niu macierzystego adresu bazowego (tj. jako przemieszczenie - offset). Przemieszczenie
0 oznacza adres bazowy.
570 Anatomia PC
Rejestr danych
Rejestr danych (umieszczony pod przemieszczeniem OOh) umożliwia dostęp do koń
cówek 2 -9 (wejścia X 2-X 9 lub wyjścia Y2-Y9).
Musimy również brać pod uwagę inwersję sygnałów na liniach 1, 11, 14 i 17, dokony
waną przez układy logiczne łącza.
Rejestr stanu
Stan końcówek wejściowych X1Ö-X13 i X15 można odczytać z rejestru stanu zlokali
zowanego pod przemieszczeniem Olh. Rejestr ten można tylko odczytywać.
<1
'
Rejestr sterujący
Łącze równoległe może być źródłem przerwania sprzętowego IRQ5 lub IRQ7, jeżeli
sygnał na linii X I0 (~ACK) zmieni stan z wysokiego na niski. Definiuje to rejestr steru
A
jący umieszczony pod przemieszczeniem 02h.
Rejestr sterujący jest dwukierunkowy w swej mniej znaczącej połowie (bity 3-0), co
umożliwia dostęp do końcówek 1, 14, 16, 17 jako wejść lub wyjść. Dla bitu 4 (gene
racja sygnału IRQ) obowiązuje tylko jeden kierunek - zapis. Odczyt tej pozycji bitowej
dostarcza zawsze ostatnio ustawionej wartości i nie ma sensu fizycznego jako wartość
zwracana. Numer linii IRQ (zwykle 5 lub 7) ustawiany jest przełącznikiem konfigura
cyjnym na karcie łącza równoległego.
Łącze szeregowe 573
k-
H
' i:.
•V
$■
r .r
Rozdział 12.
A' Łącze szeregowe
*
Transmisja synchroniczna
dodatkowymi
przesyłającymi przebieg synchronizujący. Zaletą tego systemu jest umożliwienie dowol-
dostosowuje
oczywiście
Serial Data Unit). Ramka właśnie, a nie pojedynczy bit danych, jest najmniejszą porcją
574 Anatomia PC
przekazywanej jednorazowo przez łącze informacji. Jak widać na rysunku 12.1, na ramkę
składają się, oprócz właściwych bitów danych, znacznik początku ramki (bit startu ), bit
kontroli parzystości i znacznik końca ramki (bit stopu), Czas trwania jednego bitu ramki,
tj. okres wyimaginowanego przebiegu synchronizującego wynika ściśle z uzgodnionej
prędkości transmisji.
______________________________________________________________________________________________________________________
W ogólności ramka może zawierać 5, 6, 7 lub 8 bitów danych. Bit startu jest obowiąz
kowy, a liczba bitów stopu może wynosić 1 lub 2.
Bit kontroli parzystości jest elementarnym i bardzo mało efektywnym sposobem zabez
pieczenia danych przed przekłamaniami w trakcie przekazu. Może on oznaczać parzystą
lub nieparzystą liczbę ustawionych bitów w polu danych, może być ustawiony na stałe
lub na stałe wyzerowany, wreszcie może być w ogóle pominięty.
Bit startu przyjmuje zawsze wartość zero. Linia danych łącza w stanie spoczynku utrzy
mywana jest w stanie logicznym 1. Bit startu jest więc wyraźnie zaznaczonym począt
kiem transmisji. Bit stopu zamyka ramkę i łącze wraca do stanu początkowego lub
realizuje transmisję następnej porcji danych.
Szeregowy strumień informacji jest w swej nie przekształconej formie nie do przyjęcia
przez równoległe magistrale danych komputera. Przetwarzanie danych z postaci szere
gowej na równoległą i odwrotnie dokonywane jest w układzie scalonym określanym
ogólną nazwą UART (ang. Universal Asynchronous Receiver-Transmitter). Skompliko
wana struktura tego układu ma szerokie możliwości programowej adaptacji do różnych
prędkości transmisji, konfiguracji łącza i formatów danych.
Modele PC/XT wyposażone były głównie w układy UART typu 8250. Począwszy od
modelu AT funkcję tę pełnią zmodernizowane wersje UART typu 16450 lub 82450.
Maksymalna prędkość transmisji danych w układzie 8250 wynosi 56000 bodów, zaś dla
16450 — 115200 bodów (bitów na sekundę), tym niemniej funkcje obsługi łącza szere
gowego dostępne przez BIOS dopuszczają prędkości transmisji wyłącznie do górnej
granicy 9600 bodów (19200 bodów w komputerach PS/2). Przyczyn tego zjawiska
należy upatrywać w obszernych procedurach inicjalizujących łącze szeregowe każdo
razowo dla odebrania i wysłania jednego znaku. Pełne możliwości układu 8250 (16450)
można wykorzystać jedynie sięgając bezpośrednio do jego rejestrów.
Schemat wyprowadzeń układu scalonego 8250 zamieszczony jest na rysunku 12.2. Taki
sam rozkład końcówek posiada powszechnie stosowany obecnie układ UART 16450.
Rysunek 12.2.
Rozkład DO 1 40 V.C C
wyprowadzeń D1 2 39 Rl
układu 8250 D2 3 38 R LS D
D3 4 37 DŚR
D4 5 36 CTS
D5 6 35 MR
D6 7 34 OUT1
D7 8 33 DTR
RCLK 9 32 RTS
SIN 10 8250 31 OUT2
11 30
SOUT
CSO 12 (16450) 29 IN T R P T
NC
CS1 13 28 A0
CS2 14 27 A1
BAUDOUT
é
15 26 A2
XTAL1 16 25 ADS
XTAL2 17 24 CSOUT
DOSTR 18 23 DDIS
DOSTR 19 22 D IS TR
GND 20 21 D IS TR
Źródłem częstotliwości odniesienia dla całego układu jest wewnętrzny generator syn
chronizowany rezonatorem kwarcowym o częstotliwości 1,8432 Mhz - dołączonym do
końcówek XTAL1 i XTAL2. Układ UART akceptuje też w miejsce rezonatora kwarco
wego sygnał z zewnętrznego źródła o tej samej częstotliwości. Sygnał o częstotliwości
odniesienia kierowany jest do programowalnego 16-bitowego dzielnika częstotliwości,
którego współczynnik podziału pobierany jest ze specjalnego rejestru dzielnika. Podział
* częstotliwości dla nadajnika odbywa się w dwóch etapach. W pierwszym bierze udział
wspomniany licznik programowalny, który wydziela częstotliwość nadajnika, będącą
16-krotną wielokrotnością zadanej prędkości transmisji. Sygnał ten po zanegowaniu
wyprowadzany jest na zewnątrz wyjściem -BAUDOUT i może (lecz nie musi) być
sygnałem odniesienia dla toru odbiornika. W drugim etapie dokonywany jest podział
przez stały współczynnik 16, co daje właściwy sygnał synchronizujący tor nadawczy.
Jest to ten sam sygnał, który zgodnie z ustaloną prędkością transmisji przetwarza rów
noległą postać danych na ramki (porównaj rysunek 12.1). Każdy impuls tego przebiegu
przetwarza jeden bit danych równoległych na jeden elementarny segment ramki.
Tor odbiorczy układu odbiera z wejścia RCLK sygnał taktujący o częstotliwości 16 razy
większej od przyjętej prędkości transmisji. Tak więc połączenie wejścia RCLK z wyj
ściem ~BAUDOUT powoduje, że oba tory pracują z tą samą prędkością. Ewentualne
wprowadzenie w to miejsce zewnętrznego dzielnika częstotliwości spowodowałoby
obniżenie prędkości pracy toru odbiornika o współczynnik równy stopniowi podziału.
Szeregowy strumień danych na wejściu SIN podlega rozłożeniu na bity danych, startu,
stopu i parzystości. Czynności te realizuje specjalny rejestr przesuwny. W szczególności
dla użytkownika istotne jest wydzielenie z tego strumienia bajtu danych i złożenie go
w rejestrze buforowym odbiornika, skąd może być odebrany przez CPU. Sprawy kom
plikują się nieco przy nietypowych formatach przekazywanych danych, gdy pomiędzy
bitami startu i stopu przesyłanych jest mniej niż 8 bitów danych. Brakujące bardziej
znaczące bity rejestru buforowego odbiornika zawierają wtedy wartości przypadkowe
i należy je zamaskować.
i ..'
musza napięcie -1 2 V. Ponieważ UART nie zmienia fazy sygnałów SIN i SOUT,
wartość 0 transmitowanego bitu reprezentowany jest napięciem +12 V, a wartość 1 jako
-1 2 V, Odwrócenie fazy wynika tu z obecności wzmacniaczy linii.
l i ;
Interfejs RS-232C
RS-232C jest określeniem powstałego w USA standardu przesyłania informacji między
urządzeniami za pośrednictwem łącza szeregowego. Standard ten definiuje parametry
mechaniczne, elektryczne i logiczne łącza.
Standard RS-232C dotyczy wymiany danych pomiędzy tzw. terminalem (ang. DTE ,
Data Terminal Eąuipment) a modemem (ang. DCE, Data Communication Equipment).
Powstał on dla potrzeb ujednolicenia komunikacji między końcówką komputerową
a dużym komputerem (host) przy użyciu łącz telefonicznych i modemów. Pod pojęciem
DTE rozumiemy dziś jednak głównie komputery PC, w przypadku których ma miejsce
implementacja zaleceń standardu CCITT ( Comité Consultatif International Télégraphi
que et Téléphonique - Międzynarodowy Komitet Konsultacyjny Do Spraw Telefonii
i Telegrafii) o nazwie V,24, Nie jest to jednak kompletne złącze V.24, a jedynie jego
część, w której wykorzystywane są tylko niektóre sygnały. Zalecenie CCITT definiuje
na jednym łączu dwa porty szeregowe (dwa wejścia i dwa wyjścia), natomiast w PC
używany jest tylko jeden. Wykorzystana jest tu jedynie ogólna specyfikacja złącza
V.24.
! y\
*
5 t
Poniżej podano zestawienie sygnałów interfejsu RS-232C używanych w komputerach PC.
rt s
!>,
\ f
/•*
a.
580 Anatomia PC
Linie TxD ( Transmitted Data) i RxD {Received Data) są właściwymi przewodami słu
żącymi wymianie danych. Pozostałe są liniami sterującymi, posiadającymi następujące
znaczenie:
RTS {Request To Send) urządzenie DTE (terminal, PC) sygnalizuje tą
linią zamiar przekazywania danych do DCE (modemu). Modem
przygotowuje się do odbioru danych;
CTS {Clear To Send) linią tą przesyłane jest potwierdzenie przyjęcia
sygnału RTS przez DCE (modem) i stwierdzenie gotowości do
odbioru danych od DTE. Komputer może rozpocząć
przekazywanie danych.
Para sygnałów sterujących RTS/CTS może przy półdupleksowym trybie pracy łącza
(takim, w którym dopuszczalna jest niejednoczesna transmisja w obu kierunkach) stero
wać kierunkiem transmisji, przydzielając połączonym korespondentom na przemian
rolę nadawcy i odbiorcy.
DSR {Data Set Ready) - specyfikacja RS-232C określa ten sygnał jako
meldunek urządzenia DCE (zwykle modemu), że zostało
nawiązane połączenie i układ jest gotów do przyjęcia danych
od DTE (zwykle komputera). W praktyce większość modemów
nie wykorzystuje tej linii i jest ona sztucznie utrzymywana
w stanie aktywnym, nie mówiąc nic o istnieniu połączenia
z korespondentem. Po poziomie tego sygnału można co najwyżej
wnioskować, czy modem jest w ogóle włączony;
DTR {Data Terminal Ready) - sygnał ten wskazuje w ogólności na
gotowość urządzenia DTE (komputera). Musi on pozostawać
aktywny przez cały czas trwania połączenia.
Para sygnałów DTR i DSR odpowiada za utrzymanie połączenia, podczas gdy sygnały
RTS i CTS są odpowiedzialne za przekazywanie danych i ewentualne sterowanie kie
runkiem ich przepływu (w trybie półdupleksowym), czyli tzw. handshaking.
Łącze szeregowe 581
'■90
tz
DCD (D<?ta Carrier Detect) - modem (DCE) sygnalizuje tą linią odbiór
< i.
,v
&
ity
cały czas trwania transmisji;
RI (Ring Indicator) - w przypadku połączenia modemów przez sieć
* i.. telefoniczną urządzenie DTE (komputer) informowane jest
» • .
fV
<L>
Rysunek 12.3. g> C
E 0)
Poziom sygnałów o
N
N
O
O
ar
iN
?*
o Faza O
h? trakcie CL przekazywania danych tr
danych łączem D TR
Szeregowym
DSR
RTS
'TL'.
CTS
TxD
Tryb simpleksowy
Łącze skonfigurowane jest na stałe na jeden z możliwych kierunków transmisji: DTE —»
DCE lub DCE -» DTE. Rozpatrzmy dla przykładu pierwszą z tych możliwości. DTE
wykorzystuje wówczas wyłącznie linię TxD, zaś linia RxD nie jest podłączona. Modem
(DCE) nie bierze pod uwagę stanu sygnału RTS, bądź też sygnał ten jest utrzymywany
przez DTE stale w stanie aktywnym. Podobnie, komputer (DTE) nie uwzględnia sygna
łu CTS od modemu (DCE) lub też modem utrzymuje ten sygnał na poziomie aktywnym
582 Anatomia PC
przez cały czas trwania połączenia. Sygnał DCD modemu z założenia nigdy nie może
być aktywny. Sygnał DSR jest albo stałe aktywny, albo aktywowany w momencie na
wiązania kontaktu z korespondentem (drugim modemem). DTE (komputer) może przez
sygnał DTR zgłaszać swoją gotowość modemowi (DCE); w rozwiązaniach praktycz
nych sygnał ten włącza i wyłącza modem. Linia RI z oczywistych względów nie ma
tutaj znaczenia.
Tryb półdupleksowy
W trybie tym zarówno DTE, jak i DCE mogą być stroną nadającą oraz odbierającą,
jednak do dyspozycji jest tylko jeden logiczny kanał danych, który można naprzemien
nie wykorzystywać w obydwu kierunkach. Wyjścia TxD każdego z urządzeń połączone
są z wejściami RxD partnera. Wybór aktualnego kierunku transmisji dokonywany jest
za pomocą sygnałów RTS-CTS, a prawo tego wyboru przysługuje w jednakowym stop
niu obydwu stronom. Przykładowo, DCE (modem) chcąc przesłać dane do DTE (PC)
aktywuje swój sygnał RTS i czeka na potwierdzenie na linii CTS. Uzgodnienie to upo
ważnia w tym przypadku modem do wysyłania danych, a komputer do ich odbioru.
Pozostałe sygnały zachowują swoje naturalne znaczenie, tzn. modem może aktywować
linię DCD chcąc przekazywać dane do komputera, DSR oznacza trwały kontakt z ko
respondentem (drugim modemem), zaś DTR może służyć do włączania i wyłączania
modemu. Urządzenie DCE może też robić użytek z linii RI, sygnalizując nią chęć
nawiązania kontaktu przez partnera modemu znajdującego się po drugiej stronie łącza
(zwykle telefonicznego).
Tryb dupleksowy
Dane mogą być przekazywane pomiędzy DTE i DCE jednocześnie w obydwu kierun
kach. Większość nowoczesnych modemów może pracować w tym trybie. Nie jest wy
magane uzyskiwanie przez żadną ze stron zezwolenia na nadawanie. Kanał logiczny
połączenia otwarty jest stale w obie strony, a sygnały RTS/CTS nie mają znaczenia; są
one albo nie podłączone, albo stale aktywne. Stale aktywna jest też na ogół linia DSR,
chyba że sygnalizuje ona nawiązywanie połączenia z drugim modemem. Sygnał DCD
aktywowany jest w naturalny sposób jako odpowiedź na wykrycie fali nośnej, a linią
DTR można sterować włączaniem i wyłączaniem modemu.
Rysunek 12.4. przedstawia klasyczny układ połączeń łącza szeregowego RS-232 po
między urządzeniem DTE i DCE.
Standard RS-232C powstał dla potrzeb ujednolicenia połączeń typu końcówka kompu-
terowa-modem. W czasach jego opracowywania pod pojęciem końcówki komputerowej
(terminala) rozumiano niewiele więcej niż klawiaturę i ekran, a często wręcz elektrome
chaniczny dalekopis. Standard ten przetrwał jednak do czasów dzisiejszych, a ponieważ
miał ugruntowaną pozycję, został adaptowany do łączenia różnych innych urządzeń.
Klasycznym przykładem jest wykorzystanie łącza szeregowego do realizacji połączenia
z drukarką i ploterem. Sprawy komplikują się tutaj, gdyż chodzi tu o połączenie dwóch
urządzeń klasy DTE, co na pierwszy rzut oka niewiele ma wspólnego ze standardem
RS-232C. Schemat takiego połączenia przedstawia rysunek 12.5.
Łącze szeregowe 583
i DCE
y
’ ’
i :
X\ - .•.
Si.-
>!.s
Si'
•/i.
ł: '
•i
i 5*
584 Anatomia PC
Sygnał RTS pochodzący od komputera połączony jest z jego własnym wejściem CTS,
co imituje natychmiastową zgodę drugiej strony na nadawanie. Drukarka „czuje się”
również urządzeniem klasy DTE i oczekuje, zgodnie ze specyfikacją RS-232C, okreś
lonego zachowania swego partnera (DCE). Osiąga się to łącząc ze sobą jej linie RTS
i CTS oraz wprowadzając własny sygnał DTR drukarki z powrotem na jej wejścia DCD
i DSR. Aktywowanie sygnału DTR powoduje więc natychmiastową (fikcyjną) „odpo
wiedź drugiej strony” na liniach DSR i DCD.
Nawet najszybsza drukarka nie może drukować z prędkością taką, jaką gwarantuje prze
pustowość łącza szeregowego. Drukarka dysponuje na ogół pewnym buforem wejścio
wym, ale i ten zostanie wreszcie zapełniony. Dalsze wysyłane przez komputer znaki
zostałyby w takiej sytuacji zignorowane. Aby temu zapobiec, należy przesłać do kom
putera sygnał nakazujący wstrzymanie transmisji. Do tego celu właśnie stworzona
została linia DSR. Od strony drukarki korzysta się z jednej z linii obsługujących trans
misję synchroniczną (a więc w tym przypadku zbędnych). Końcówka 19 przekazuje
więc sygnał zapełnienia bufora, utrzymując go w stanie aktywnym tak długo, jak długo
drukarka jest w stanie odbierać dane. Przepełnienie bufora prowadzi natomiast w prostej
linii do podania zera logicznego na wejście DSR komputera, a to oznacza wstrzymanie
nadawania.
Funkcje 03h i 04h obsługują wyłącznie urządzenie AUX (synonim portu COM1) i nie
dają dostępu do łącz COM2, COM3 i COM4. Funkcje te są reliktami systemu operacyj
nego CP/M. Podczas transmisji większych grup znaków przez łącze szeregowe system
MS-DOS korzysta z koncepcji uchwytów (handle), tj. jednorazowo nadawanych nume
rów identyfikacyjnych plików dyskowych i urządzeń. Nazwy COM1—COM4 znajdują
się, podobnie jak LPT1-LPT4, CON, PRN, AUX i NUL, na liście nazw zastrzeżonych,
co oznacza, że nie wolno nadawać ich żadnemu plikowi dyskowemu. Symbol AUX jest
synonimem COM1, podobnie jak PRN odpowiada LPT1. Po wydaniu polecenia copy
p l i k . a com2 zawartość pliku o nazwie plik.a przekazywana jest programowi obsługi
(sterownikowi) portu szeregowego COM2. Ogromną zaletą funkcji 3Fh i 40h jest
niewątpliwie możliwość jednoczesnego przesyłania całego łańcucha znaków.
Funkcja 03h
Działanie:
Funkcja 03h odbiera z łącza COM1 (AUX) jeden znak i umieszcza go w rejestrze AL.
Param etry wejściowe:
AH 03h.
Wartości zwracane:
AL odebrany z portu AUX znak.
Funkcja 04h
Działanie:
Funkcja 04h wysyła do łącza COM1 (AUX) jeden znak, przekazywany w rejestrze DL.
Param etry wejściowe:
AH 04h;
DL kod ASCII znaku.
Wartości zwracane:
— brak —
Uwaga:
W przypadku błędu DOS przekazuje sterowanie do procedury obsługi przerwania 24h,
obsługującej błędy sprzętowe (Critical Error Handler).
Funkcja 3Fh
Działanie:
Funkcja ta odbiera znaki z dowolnego łącza COM« i umieszcza je w zadanym buforze.
Numer uchwytu dla łącza COM1 jest definiowany przez system automatycznie i wynosi
3. Innym łączom należy taki uchwyt najpierw przydzielić używając funkcji otwarcia
pliku lub urządzenia 3Dh.
586 Anatomia PC
Funkcja 40h
Działanie:
Funkcja ta przesyła do dowolnego łącza COM>? znaki przygotowane w określonym bu
forze. Numer uchwytu dla łącza COM1 jest definiowany przez system automatycznie
i wynosi 3. Innym łączom należy taki uchwyt najpierw przydzielić używając funkcji
otwarcia pliku lub urządzenia 3Dh.
Param etry wejściowe:
AH 40h;
BX numer uchwytu;
CX liczba bajtów do wysłania;
DS:DX adres bufora przeznaczonego na wysyłane łączem znaki
W artości zwracane:
AX liczba faktycznie przesłanych bajtów lub kod błędu w przypadku
CF = 1;
CF 1 w przypadku wystąpienia błędu.
Przykład:
bufor DB 8 DUP(’* ’) zestaw znaków do wysiania
mov ah,4Oh numer funkcj i
mov b x ,3 uchwyt urządzenia AUX
mov cx,08h wyślij 8 znaków
mov dx,OFFSET bufor DX = adres (przemieszczenie) bufora
zakładamy, że DS zawiera
adres segmentowy bufora
int 21h wywołaj funkcję DOS - wyślij 8 gwiazdek
Łącze szeregowe 587
• 01 h - wysyłanie znaków,
Każda z tych funkcji zwraca w rejestrze AH bajt informujący o aktualnym stanie trans
misji. Postać tego bajtu przedstawiono poniżej.
A dres Znaczenie
0040:007Ch limit czasu dla łącza COM1 (w sekundach)
Czas oczekiwania dla dowolnego łącza COM« można ustawić na nieskończenie długi
poleceniem DOS-u mode corrm,,p.
J..-
bit O 1 = stwierdzono zmianę sygnału CTS.
Bity 7-4 odzwierciedlają bezpośrednio stan odpowiednich wejść sterujących łącza sze
regowego. Mniej znacząca połowa bajtu dostarcza informacji o ewentualnych zmianach
poziomu danego sygnału od czasu ostatniego wywołania funkcji 03h.
Poniżej opisano funkcje przerwania 14h BIOS-u, realizujące obsługę portu szerego
r & t
wego.
.JŁ"
Funkcja OOh
Działanie:
Funkcja OOh inicjalizuje wybrane łącze, ustalając parametry transmisji
Param etry wejściowe:
AH OOh;
ŁV
AL bajt określający parametry transmisji;
DX numer łącza:
0 = COM1 (AUX),
1
. . ..
1 = COM2,
2 = COM3,
3 = COM4.
Wartości zwracane:
AH bajt statusu łącza;
AL bajt statusu linii modemu
011 = 6 0 0 bodów,
100 = 1200 bodów,
101 = 2 4 0 0 bodów,
110 = 4 8 0 0 bodów,
111 = 9 6 0 0 bodów;
bity 4 -3 rodzaj kontroli parzystości
00 = brak kontroli,
01 = parzysta,
10 = brak kontroli,
11 = nieparzysta;
590 Anatomia PC
Uwagi:
Funkcja OOh przerwania 14h umożliwia, jak widać, skonfigurowanie łącza do maksy
malnej prędkości transmisji 9600 bodów. BIOS modeli PS/2 dysponuje funkcją 04h
{Extended Initialize ), która dopuszcza prędkość 19200 bodów jak również ramkę
zawierającą 5 i 6 bitów danych. Pełne możliwości układu UART, tj. prędkość transmisji
115200 bodów można wykorzystać tylko programując bezpośrednio rejestry układu.
Funkcja 01 h
Działanie:
Funkcja ta wysyła jeden znak do wybranego łącza szeregowego.
Param etry wejściowe:
AH Olh;
AL kod ASCII wysyłanego znaku;
DX numer łącza:
0 = COM1 (AUX),
1 = COM2,
2 = COM3,
3 = COM4.
W artości zwracane:
AH bajt statusu łącza.
Funkcja 02h
Działanie
Funkcja ta odbiera jeden znak z wybranego łącza szeregowego.
Param etry wejściowe:
AH 02h;
Łącze szeregowe 591
DX numer łącza:
0 = COM1 (AUX),
1 = COM2,
2 = COM3,
3 = COM4.
Wartości zwracane:
AH bajt statusu łącza;
AL odebrany znak.
Funkcja 03h
Działanie
Funkcja 03h określa status wybranego łącza szeregowego
Param etry wejściowe:
AH 03h;
DX numer łącza:
0 = COM 1 (AUX),
1 = COM2,
2 = COM3,
3 = COM4.
Wartości zwracane:
AH bajt statusu łącza;
AL bajt statusu modemu.
y
Bezpośrednie programowanie
Î:
rejestrów UART
Każdemu z zaakceptowanych przez BIOS łącz szeregowych przydzielany jest fragment
przestrzeni adresowej wejścia-wyjścia. W przydzielonym danemu łączu obszarze wi
dziane są jego rejestry; początek obszaru stanowi adres bazowy. Informacja o przypo
rządkowaniu adresów bazowych łączom szeregowym przechowywana jest w obszarze
danych BIOS-u.
Liczbę zainstalowanych w systemie łącz określają trzy najmniej znaczące bity bajtu
zlokalizowanego pod adresem 0040:001 lh. W bajtach tych kodowana jest binarnie
liczba łącz. Starsze wersje BIOS-u często nie obsługują łącz COM3 i COM4, które nie
są wręcz rozpoznawane przez procedury POST, a ich adresy nie są umieszczane w ob
szarze danych BIOS-u.
Adresy rejestrów danego łącza podaje się zwykle w stosunku do jego adresu bazowego
(jako przemieszczenie - offset). Przemieszczenie równe zero oznacza adres bazowy.
Trzy linie adresowe A 2-A 0 układu 8250 dają możliwość zaadresowania ośmiu portów
(przemieszczenie 0-7), Ponieważ sumaryczna liczba wszystkich rejestrów układu prze
kracza 8, wprowadzona zastała sztuczna, czwarta linia adresowa. Jej funkcję pełni bit 7
(B7) rejestru formatu danych (przemieszczenie 03h), określany często mianem DLAB
(ang. Divisor Latch Access Bit), Bit ten musi być ustawiony, jeżeli adresujemy jedną ze
składowych rejestru podzielnika częstotliwości i wyzerowany przy dostępie do rejestrów
buforowych nadajnika i odbiornika oraz rejestru konfiguracji przerwań (przemiesz
czenie Olh). W obydwu stanach bitu 7 adresy na liniach A 2-A 0 pokrywają się. Przy do
stępie do pozostałych rejestrów układu UART stan bitu B7 nie odgrywa roli.
powoduje automatycznie opróżnienie tego rejestru, który może przyjąć następny ode
brany znak. Analogicznie, zapisanie znaku do rejestru buforowego nadajnika:
mov al,'X1 ;znak ’X 1
mov dx,3f8h ;adres portu COMl
out dx,al ;wyślij znak
Przerwania g e n e ro w a n e p rze z łą c z e s ze re g o w e
Układ UART może być źródłem przerwań sprzętowych, sygnalizując tym samym ko-
nieczność obsługi przez procesor. Metodą alternatywną do stosowania przerwań jest
tzw. polling. Procesor testuje w wybranych przez siebie momentach stan łącza i w przy
padku stwierdzenia obecności znaku w buforze odbiornika zostaje on odczytany. Łatwo
tu zauważyć niebezpieczeństwo „połykania” już odebranych przez łącze znaków, które
nie zostały na czas odczytane z bufora i uległy zamazaniu nowymi wartościami.
Zaistnienie takiego faktu można co prawda stwierdzić badając bit 1 bajtu statusu łącza
(por. funkcje przerwania 14h), ale straconego znaku nie da się już odzyskać.
0 0 0 0 0 b it 2 b it 1 bitO
Bit 0 rejestru identyfikacji umożliwia szybką diagnozę, czy procedura obsługi przerwa
nia ma wkraczać do akcji. Wszystkie przerwania o niższym priorytecie są zablokowane
Łącze szeregowe 595
tak długo, jak długo nie zostanie obsłużone przerwanie o priorytecie wyższym. Proce
dura obsługująca łącze musi więc podjąć stosowne kroki. Dla układu UART obsługa
przerwania oznacza:
b it 7 b it 6 b it 5 b it 4 b it 3 b it 2 b it 1 b it 0
Ustawienie bitu 6 tego rejestru symuluje przerwanie połączenia. Wyjście SOUT prze
chodzi do niskiego poziomu logicznego, a zatem na linii TxD pojawia się napięcie +12
V na skutek odwracającego działania wzmacniaczy linii. Stan ten należy odróżnić od
braku danych w rejestrze przesuwnym nadajnika, kiedy to wyjście SOUT znajduje się
w wysokim stanie logicznym (co odpowiada +5 V) i, stosownie do tego, zanegowane
wyjście TxD ma poziom -1 2 V.
Ramka w formacie 5 bitów danych posiada automatycznie wydłużony o 50% bit stopu.
Prędkość transmisji
Sygnał odniesienia pochodzący z rezonatora kwarcowego lub generatora dołączonego
do wejść XTAL1 i XTAL2 ma częstotliwość 1.8432 MHz. Przebieg ten podlega
dwukrotnemu podziałowi: raz przez programowany dzielnik częstotliwości i drugi raz
przez stały współczynnik 16. Można też powiedzieć, że dzielnik programowany doko
nuje podziału częstotliwości 115200 Hz, gdyż tyle uzyskujemy z podziału 1.8432 MHz
przez 16. Efektywna prędkość transmisji może być więc zawsze określona jako 115200
: podzielnik .
16-bitowy rejestr podzielnika (przemieszczenie OOh dla LSB i 01 h dla MSB) dostępny
jest wyłącznie przy ustawionym bicie 7 rejestru formatu danych LCR. Ponieważ naj
mniejszą akceptowaną przez ten rejestr wartością jest 1, wynika stąd maksymalna
prędkość transmisji UART równa 115200 bodów.
Przykład:
dla 4800 bodów mamy podzielnik 24
mov dx/2fbh adres portu LCK
in al,dx pobierz zawartość rejestru LCR portu COM2
or al,1000000Ob ustaw bit 7
out dx,al zapisz rejestr LCR
mov al,24 LSB = 24
mov dx,2f8h adres portu podzielnika (LSB)
out dx,al wpisz LSB podzielnika
mov al,0 MSB = 0
inc dx DX <- adres portu podzielnika (MSB)
out dx,al wpisz MSB podzielnika
mov dx,2fbh adres portu LCR
in al,dx pobierz zawartość rejestru LCR portu COM2
and al,Olllllllb wyzeruj bit 7
out dx,al zapisz rejestr LCR
Łącze szeregowe 597
• OUT1 RI,
• OUT2 o DCD,
• SIN odłączone.
Warto jeszcze raz zwrócić uwagę, że poziom logiczny wyjściowych sygnałów steru
jących, tj. -O UT1, -OUT2, -RTS i -DTR jest odwracany, tzn. ustawiony bit rejestru
wymusza zero logiczne na danym wyjściu układu scalonego. Sygnały -RTS i -D TR
598 Anatomia PC
Mniej znacząca połowa tego rejestru (bity 3-0) zawiera informację o ewentualnej
zmianie stanu danej linii od czasu ostatniego odczytu rejestru. Wykonanie rozkazu in
zawsze zeruje te bity. Wejściowe sygnały sterujące DCD, RI, DSR i CTS podlegają
inwersji na drodze od rejestru sterującego do końcówek układu UART. W połączeniu
z inwersyjnym działaniem wzmacniaczy linii wysoki poziom logiczny wejścia ustawia
stosowny bit rejestru. Bit wyzerowany oznacza obecność na danej linii napięcia -1 2 V.
bit 7 zawsze 0;
bit 6 1 = bufor odbiornika i rejestr przesuwny nadajnika są puste,
0 = w buforze odbiornika albo w rejestrze przesuwnym nadajnika
znajdują się dane,
bit 5 1 = rejestr przesuwny nadajnika jest pusty;
bit 4 1 - połączenie zostało przerwane (Break);
Łącze szeregowe 599
Opisany rejestr można wykorzystać podczas obsługi łącza szeregowego przez polling.
obsługa łącza nie generującego przerwań
mov dx,2fdh rejestr LSR portu COM2
in al,dx odczytaj rejestr
test al,01h czy bit 0 ustawiony?
jz dalej nie - nic do odebrania
mov dx,2f8h adres bufor odbiornika
in al,dx pobierz baj t danych do AL
....obróbka bajtu
dalej: nic do zrobienia
To poczciwe urządzenie również podlega z biegiem czasu pewnym mniej lub bardziej
widocznym przekształceniom. Stosowane obecnie mikroprzełączniki są coraz lepszej
jakości, a i producenci zaczynają przywiązywać coraz większą wagę do ergonomicz
nego kształtu klawiatury. Należy się spodziewać, że jeszcze przez dłuższy czas zmu
szeni będziemy do korzystania z klawiatury, warto więc zaznajomić się z jej działaniem
i budową.
Wbrew powszechnie panującej opinii, model XT, będący pierwowzorem dla później
szych udoskonaleń, również wyposażony był we własny kontroler klawiatury. Idea
działania klawiatury typu XT przedstawiona jest na rysunku 13.1.
602 Anatomia PC
Rysunek 13.1.
Schemat obsługi
klawiatury typu
XT
Trochę inaczej przedstawia się sytuacja w przypadku klawiatur AT i PS/2. Jak widać
z rysunku 13.2, między klawiaturą a komputerem PC/AT możliwa jest dwukierunkowa
wymiana informacji (w synchronicznym trybie półdupleksowym). Za komunikację tę
odpowiedzialny jest od strony komputera scalony kontroler 8741, 8742 lub 8042, a od
strony klawiatury - mikrokontroler 8049, posiadający odpowiednio rozbudowany w sto
sunku do swego poprzednika mikrokod.
Procesor jest w stanie programować zarówno klawiaturę, jak i jej kontroler (ten od stro
ny komputera). Wprowadzona została cała lista rozkazów, które mogą być przesyłane
do klawiatury. Modele AT i PS/2 wzbogacone zostały również o dodatkowy rejestr
sterujący o adresie 64h. Podstawowa funkcja portu 60h jako rejestru danych została
oczywiście zachowana ze względu na konieczność utrzymania zgodności sprzętowej.
Klawiatura 603
Rysunek 13.2.
Schemat obsługi
klawiatury typu
AT
PC/AT
Mapa klawiatury
Każdemu przyciskowi klawiatury przyporządkowana jest na stałe liczba zwana kodem
klawisza (ang. scan code). Nie ma tu absolutnie znaczenia, jakim znakiem lub funkcją
opisany jest klawisz, ważne jest jedynie jego położenie na klawiaturze. Różnych kodów
może być oczywiście nie więcej niż klawiszy, czyli maksymalnie 102, tak więc do ich
opisania wystarczy 1 bajt. W przypadku pokazanej na rysunku 13.3. klawiatury XT
klawisze zostały po prostu kolejno ponumerowane.
Pojedynczy kod naciśnięcia nie określa niestety w jednoznaczny sposób intencji użyt
kownika. Wiele klawiszy opisanych jest bowiem kilkoma symbolami, nawet zwykłe
litery mogą występować w wersji dużej lub małej. Wybór znaczenia klawisza dokony
wany jest za pomocą klawiszy specjalnych. Procedura obsługi przerwania 09h (zwana
też sterownikiem klawiatury, ang. keyboard handler) musi więc brać pod uwagę stan
całego pola zestyków i odpowiednio go interpretować.
604 Anatomia PC
F3 F4 *™|Q W E R T y [ u I O P t 7 8 9
Enter
]
1
F5 F6 Ctrl A S D F G H J K L j
«
1 4 5 6 +
F7 F 8 ♦ \ C V B N M / * Shift * 1 2 3
S h ift Z X t ft
Przykład:
Sekwencja kodów 42 16 144 170 zostanie zinterpretowana następująco:
F1 F2 •
2 3 4 5 6 7 8 9 0 - = \ JE
h
T^ fa b Q w E R | T V
1 Num Scroll Sys
Esc Lock Lock Rq
F3 F4 ------ H U 10 p [ ] 7 8 9 *
1
F5 F6 Ctrl A s D F G H J |K | L | ; Enter 4 5 6 -
F7 F8 f Shift z X C V B N M > ■ / t Shift 1 2 3
+
F9 F10 Alt S pacja jca p slo ck 0 *
typu PS/2 01 59 60 61 62 63 64 65 66 67 68 87 88 55 70 29
69
cn
O
00
O
CD
41 02 03 04 06¡07 1 2 131 14 82 71 73 69 53 55 74
o
10 11
00
o
29 56 57 I 56 I 29 75 77 82 83
No t Caps Scroti On
Lock Lock Lock Lin«
Print S ctqI
Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Scresn Lock Pause
Enter
♦Shift Z X C V B N M p . / î 1 2 3
Ctrl Alt S pacja Alt Ctrl ł — 0 •
Z jednej strony nowo wprowadzone klawisze muszą się dać odróżnić od już obecnych,
np. prawy klawisz Alt (na klawiaturach innych niż anglosaskie oznaczany jest on często
Alt Gr) ma w połączeniu z klawiszem Ctrl inną funkcję niż lewy. Z drugiej jednak stro
ny obowiązuje zasada kompatybilności w dół, tzn. stare programy, nie znające specyfiki
klawiatury PS/2, muszą prawidłowo rozpoznawać cały zestaw klawiszy, np. blok stero
wania kursorem. Dylemat ten rozwiązano w następujący sposób:
• kody nowych klawiszy są takie same jak już obecnych, np. prawy i lewy Alt
mają te same kody (a więc i te same kody naciśnięcia i zwolnienia);
• kody nowo wprowadzonych klawiszy poprzedza przedrostek EOh lub Elh.
Klawiatura PS/2 symuluje ponadto zachowanie modeli AT. Oznacza to, że klawisze
bloku sterowania kursorem, których odpowiedniki znajdują się również na bloku nume
rycznym, generują inne kody naciśnięcia i zwolnienia, jeżeli aktywna jest funkcja Num
Lock. Użytkownicy klawiatur AT pamiętają zapewne, że przy wyłączonej funkcji Num
Lock klawisze bloku numerycznego sterowały ruchem kursora.
Przykład:
Na klawiaturze AT przy wyłączonej funkcji Num Lock naciśnięcie klawisza —> powo
duje wygenerowanie kodów 77 i 205. Jeżeli jednak funkcja Num Lock]t$X aktywna, to
aby uniknąć wprowadzenia cyfry należy najpierw nacisnąć klawisz Shift, a następnie
odpowiedni klawisz kursora.
Klawiatura 607
W przypadku aktywnej funkcji Num Lock naciśnięcie klawisza —> spowoduje kolejne
wygenerowanie przez klawiaturę AT kodów 42, 77, 205 i 170.
Takie samo zachowanie symuluje właśnie klawiatura PS/2. Oddzielny blok sterowania
kursorem posiada również klawisz — W tym jednak przypadku klawiatura doda do
generowanych kodów wspomniane wcześniej przedrostki EOh (224), identyfikujące
nowe klawisze. Sekwencja wysłanych kodów będzie więc miała postać (224, 77, 224,
205) w przypadku wyłączonej funkcji Num Lock oraz (224, 42, 224, 77, 224, 205, 224,
170) dla funkcji Num Lock włączonej.
225 (Elh) 29 (Ctrl - naciśnięcie) 69 (Pause - naciśnięcie) 225 (Elh) 157 (Pause -
zwolnienie) 197 (Ctrl - zwolnienie)
% u / ? a
( I M + ■' i 9 Num
w układzie *■ 11' - 2
" V |1*3 * Io
|4 * 5 * |6 . 7 ł S' 1 9 10 Ins Home PgUp / *
Lock
-
* < Y X c v. , M M M : 1 : 1 : 1 ♦SUHL t 1 2 3
Ctrl Alt Spacja Alt Ctrl — i — 0 •
Przyciskom typu „Lock” (np. Caps Lock) odpowiadają w klawiaturze PS/2 rzeczywiste
przerzutniki bistabilne. W modelach XT i AT funkcja ta realizowana była programowo
608 Anatomia PC
Położenie bufora klawiatury zdefiniowane jest w obszarze danych BIOS: słowo zapisa
ne pod adresem 0040:0080h definiuje jego początek, a słowo pod adresem 0040:0082h
- koniec. Rozmiar bufora wynosi 32 bajty. Daje to wprawdzie miejsce na 16 znaków,
ale ze względów „organizacyjnych” może się ich tam zmieścić tylko 15. Adres począt
kowy bufora wynosi zwykle 0040:001 Eh, zaś adres pierwszego bajtu poza buforem -
0040h:003Eh. Można też założyć tzw. bufor alternatywny, o innej długości i położeniu,
ale musi się on zawierać w całości w segmencie 0040h.
d
Bufor zorganizowany jest logicznie jako struktura pierścieniowa. Pomagają w tym dwa
dodatkowe wskaźniki zlokalizowane pod adresami 0040:001Ch i 0040h:001Ah. Pier
wszy z nich jest wskaźnikiem zapisu (ang. keyboard buffer taił) i wskazuje zawsze na
wolne miejsce, w którym może być umieszczony kolejny nadchodzący znak. Drugi jest
wskaźnikiem odczytu (ang. keyboard bujfer head) i wskazuje znak, który należy w pier
wszej kolejności przekazać żądającemu go programowi.
Rysunek 13.7 przedstawia stan wyjściowy, w którym w buforze klawiatury nie znajduje
się żaden znak. Stan ten ma miejsce również w momencie pobrania wszystkich zalega
jących bufor znaków. Bufor jest pusty, jeżeli wskaźniki zapisu i odczytu mają jednako
we wartości, tj. wskazują tę samą (obojętnie którą) komórkę.
— W O LNE
¥
— W O LNE ¥
— W O LNE 11
— W O LNE ¥
— W O LNE
¥
— W O LNE
¥
— W O LNE _ _
— W O LNE
a\
¥
— W O LNE
¥ ■
— W O LNE ¥
— W O LNE ¥
— W O LNE
¥
— W O LNE T
0040:001E h
Wskaźnik
zapisu
0040:001C h
Wskaźnik
0 0 4 0 :0 0 1Ah odczytu
BUFOR
Rysunek 13.8. C ZĘŚ C IO W O
Częściowo zajęty ZAJĘTY
W O LNE 16
bufor klawiatury 0 0 4 0 :0 0 3 C h
W O LNE ^
W O LNE 14
KOD KLAWISZA_
KQD ASCII 13
KOD KLAWISZA
" KOD ASCII 12
KOD KLAWISZA
~ KOD ASCII ^
KOD KLAWISZA
“ KOD ASCII 10
KOD KLAWISZA
‘ KOD ASCII g
KOD KLAWISZA
" KOD ASCII "e
KOD KLAWISZA
KOD ASCII 7
KOD KLAWISZA__
KOD ASCII 6
KOD KLAWISZA
KOD ASCII 5
W O LNE -4
— W O LNE
Ü
•*1 *
< K
W O LNE -gi
— W O LNE 1
0040:001E h
Wskaźnik
zapisu
0040:001C h
Wskaźnik
odczytu
0040:001Ah
610 Anatomia PC
Ponieważ, jak już wspomniano, bufor klawiatury jest strukturą pierścieniową, możliwa
również
W O LNE
9
W O LNE 8
W O LNE
W O LNE
6
W O LNE
KOD KLAWISZA
KOD ASCII "4
JÇOD KLAWISZĄ_
KOD ASCII 3
KOD KLAWISZA.
KOD ASCII 2
KOD KLAWISZA.
0040:001E h KOD ASCII 1
W s k a ź n ik
0 0 4 0 :0 0 1Ch zapisu
Wskaźnik
0040:001A h odczytu
Duża prędkość napływu znaków lub nieodbieranie ich przez program musi oczywiście
spowodować przepełnienie bufora (praktycznie „wina” leży zawsze po stronie progra
mu, gdyż prędkość odbierania znaków jest wielokrotnie większa niż ograniczona me
chanicznie prędkość ich generowania). Rozlega się wówczas krótki sygnał dźwiękowy
(.beep), za który odpowiedzialna jest właśnie procedura obsługi przerwania 09h.
Zapełniony bufor K O D K L A W IS Z A
0 0 4 0 :0 0 3 C h ‘ K O D A S C II 16
klawiatury K O D K L A W IS Z A
" K O D A S C II 15
K O D K L A W IS Z A
* K O D A S C II Ï4
K O D K L A W IS Z A
* K O D A S C II i3
— W O LNE ^
K O D K L A W IS Z A
- K O D A S C II ÏÏ
K O D K L A W IS Z A
" K O D A S C II ÏÔ
K O D K L A W IS Z A
‘ K O D A S C II ~§
K O D K L A W IS Z A
" K O D A S C II ~e
K O D K L A W IS Z A
K O D A S C II ~j
K O D K L A W IS Z A
~ K O D A S C II "e
K O D K L A W IS Z A
~ K O D A S C II ~5
K O D K L A W IS Z A
" K O D A S C II "4
K O D K L A W IS Z A
“ K O D A S C II *3
K O D K L A W IS Z A
- K O D A S C II *2
K O D K L A W IS Z A
0040:001E h " K O D A S C II 1
Wskaźnik
zapisu
0040:001C h
Wskaźnik
0 0 4 0 :0 0 1Ah odczytu
Nie każdy naciśnięty klawisz da się zinterpretować jako znak i umieścić przyporząd
kowaną mu parę kodów w buforze klawiatury. Dla pełnej oceny sytuacji panującej na
klawiaturze potrzeba jeszcze informacji o stanie klawiszy specjalnych (Shift, Alt, Ctrl
itp). Dane te umieszcza BIOS w swoim obszarze danych w bajtach o adresach 0040:
0017h i 0040:0018h. Struktura tych bajtów pokazana jest na poniższych rysunkach:
Bajt 0040:0017h
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO
Bajt 0040:0018h
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO
Powyższe dwa bajty opisują stan klawiatur XT i AT. Jednoznaczne opisanie stanu roz
szerzonej klawiatury PS/2 wymagało wprowadzenia dwóch dodatkowych bajtów infor
macyjnych. Znajdują one swoje miejsce pod adresami 0040h:0096h i 0040h:0097h.
Bajt 0040:0096h
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO
Bajt 0040:0097h
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
__________________________________________________ Klawiatura_________613
Nic nie stoi na przeszkodzie, aby operować bezpośrednio na buforze klawiatury lub da
nych z obszaru danych BIOS. Opisane w tym rozdziale funkcje przerwania 16h BIOS-u
nie są być może tak szybkie i uniwersalne, gwarantują za to bezpieczeństwo obsługi.
W przypadku odebrania kodu klawisza funkcyjnego (np. F2), klawisza sterowania kur
sorem lub innego klawisza specjalnego, funkcje BIOS w polu przeznaczonym na kod
ASCII zwracają wartość 0.
Funkcje lOh, llh i 12h, ukierunkowane specjalnie na obsługę klawiatur PS/2, zostały
wprowadzone dopiero pod koniec roku 1985 i we wcześniejszych odmianach BIOS-u
nie występują.
Funkcja OOh
Działanie:
Funkcja OOh odczytuje kolejny znak z bufora i aktualizuje wskaźnik odczytu.
Param etry wejściowe:
AH OOh.
Wartości zwracane:
AH kod klawisza;
AL kod ASCII.
614 Anatomia PC
Przykład:
; naciśnięto klawisz C
mov ah,OOh ; numer funkcj i
int 16h ; wywołaj BIOS
; wynik: AH=47 (kod klawisza),
; AL=99 (kod ASCII znaku "c")
Proszę zauważyć, że zwracany kod ASCII odpowiada małej literze „c”, chociaż naciś
nięto klawisz opisany dużym „C”. Dopiero sterownik klawiatury (program obsługi
przerwania 09h) uwzględnia stan klawisza Shift i stosownie do tego modyfikuje prze
kazywane dalej kody ASCII.
Przykład:
; naciśnięto klawisz <Return> w bloku numerycznym
mov ah,OOh ; numer funkcji
int 16h ; wywołaj BIOS
; wynik: AH=28 (kod klawisza), AL=0
Funkcja 01 h
Działanie:
Funkcja ta bada stan bufora klawiatury w celu stwierdzenia, czy jest tam znak do od
czytu. Wskaźnik odczytu nie jest przy tym aktualizowany. Obecność znaku w buforze
klawiatury sygnalizowana jest wyzerowaniem bitu ZF (Zero) rejestru stanu procesora.
Param etry wejściowe:
AH Olh.
W artości zwracane:
AH kod klawisza;
AL kod ASCII;
ZF 0 = w buforze klawiatury znajduje się znak;
1 = w buforze brak znaku.
Funkcja 02h
Działanie:
Funkcja ta podaje stan klawiszy specjalnych w oparciu o informacje zawarte w bajcie o
adresie 0040:0017h.
Param etry wejściowe
AH 02h.
Klawiatura 615
W artości zwracane:
AL bajt informacyjny o następującej strukturze:
Funkcja 03h
Działanie:
Funkcja ta programuje opóźnienie i częstotliwość powtarzania znaków. Obsługuje ona
klawiatury PS/2 i niektóre AT.
Param etry wejściowe:
AH 03h;
BL prędkość autorepetycji klawiatury, w znakach na sekundę:
OOh = 30, lOh = 7.5,
Olh = 26.7, 1 lh = 6.7,
02h = 24, 12h = 6,
03h = 21.8, 13h = 5.5,
04h - 20, 14h = 5,
05h = 18.5, 15h = 4.6,
06h = 17.1, 16h = 4.3,
07h = 16, 17h = 4,
08h= 15, 18h = 3.7,
09h = 13.3, 19h = 3.3,
0A h= 12, lAh = 3,
O B h- 10.9, IBh = 2.7,
OCh = 10, ICh - 2.5,
ODh = 9.2, lDh = 2.3,
OEh = 8.5, lEh = 2.1,
OFh = 8, lFh = 2;
BH opóźnienie zadziałania autorepetycji, w milisekundach:
00 = 250;
01 = 500;
10 = 750;
11 = 1000.
616 Anatomia PC
Funkcja 05h
Działanie:
Funkcja ta symuluje naciśnięcie klawisza, wpisując określone wartości kodów do bufo
ra klawiatury.
Param etry wejściowe:
AH 05h.
Wartości zwracane:
AL OOh = funkcja wykonana prawidłowo;
Olh = wykonanie funkcji niemożliwe ze względu na zapełnienie
bufora;
CH kod klawisza;
CL kod ASCII.
Uwaga:
Funkcje 03h i 05h nie są zaimplementowane w starszych wersjach BIOS-u,
Funkcja 10h
Działanie:
Funkcja lOh odczytuje znak odebrany z klawiatury PS/2. Dla klawiatury XT i AT fun
kcja ta działa tak samo jak funkcja Olh. Klawisze dodatkowe klawiatury PS/2 zwracają
w rejestrze AL zamiast OOh przedrostek EOh.
Param etry wejściowe:
AH lOh.
W artości zwracane:
AH kod klawisza;
AL kod ASCII.
Funkcja 11h
Działanie:
Funkcja ta bada stan bufora klawiatury PS/2 w celu stwierdzenia, czy znajduje się w nim
tam znak do odczytania. Wskaźnik odczytu nie jest przy tym aktualizowany. Dla kla
wiatury XT i AT funkcja działa tak samo jak funkcja OOh. Klawisze dodatkowe klawia
tury PS/2 zwracają w rejestrze AL zamiast OOh przedrostek EOh, zaś znacznik ZF re
jestru stanu procesora zawiera informację o dostępności znaku.
Param etry wejściowe:
AH 1 lh.
W artości zwracane:
AH kod klawisza;
AL kod ASCII;
Klawiatura 617
Funkcja 12h
Działanie:
Funkcja ta określa stan klawiszy dodatkowych klawiatury PS/2 w oparciu o stan bajtów
zlokalizowanych pod adresami 0040h:0017h i 0040h:0018h obszaru danych BIOS. Od
powiada ona funkcji 02h poszerzonej o informacje dodatkowe.
Param etry wejściowe:
AH 12h.
W artości zwracane:
AH bajt statusu klawiszy specjalnych o następującej strukturze:
Działaniu żadnej z funkcji BIOS obsługujących przerwanie 16h nie poddaje się jedynie
klawisz Pause. Jego kod przechwytywany jest bezpośrednio przez procedurę obsługi
przerwania IRQ1 i przetwarzany na nieskończoną pętlę programową. Dopiero naciśnię
cie dowolnego innego klawisza powoduje wyjście z tej pętli i kontynuację wykonania
przerwanego programu.
618 Anatomia PC
Programista ma do dyspozycji dwa dwukierunkowe porty: port buforowy (60h) oraz port
sterujący (64h). Operacja odczytu portu sterującego (instrukcją in a l , 64h) udostępnia
rejestr stanu kontrolera i dostarcza pewnych informacji o klawiaturze.
Zanim odczytamy bufor wyjściowy rozkazem in al,60h, najpierw należy się upewnić
(badając stan bitów 0 i 5 rejestru stanu), czy oczekiwany bajt znajduje się już w buforze.
Czas oczekiwania na odpowiedź w przypadku niektórych rozkazów (np. autotestu kla
wiatury) może być dosyć długi. Klawiatura nie może rozpocząć przesyłania następnego
bajtu zanim poprzedni bajt nie zostanie odebrany przez procesor z bufora wyjściowego.
Transmisja w odwrotnym kierunku, tj. od CPU do kontrolera, polega na wpisaniu roz
kazem o u t bajtu do portu bufora wejściowego (6Oh). Zanim to nastąpi, należy spraw
dzić stan bitu 1 rejestru stanu kontrolera. Bit wyzerowany oznacza gotowość rejestru do
przyjęcia danych, natomiast ustawiony - sygnalizuje konieczność oczekiwania na zwol
nienie rejestru.
Bit 3 określa, czy ostatnio wysłany przez CPU bajt zawierał rozkaz (wysyłany przez
port 64h), czy dane (wysyłane przez port 60h).
Pod adresem 64h znajduje się nie tylko przeznaczony wyłącznie do odczytywania
rejestr stanu, lecz również rejestr sterujący, który przyjmuje rozkazy dla kontrolera
klawiatury. Oto lista ważniejszych rozkazów:
620 Anatomia PC
Przykład:
et_l:
in al,64h
test al,02h ; testuj bit 1 rejestru stanu kontrolera
jnz et_l ; bufor wejściowy zajęty
mov al Oadh ; rozkaz blokady klawiatury
out 64h,al
et_2 :
in al,64h
test al,02h ; testuj bit 1 rejestru stanu kontrolera
jnz et_2 ; bufor wejściowy zajęty
mov al,Oaeh ; rozkaz odblokowania klawiatury
out 64h,al
Opisane powyżej rozkazy przekazywane są przez rejestr sterujący 64h. Niektóre z nich
anonsują następujący po sobie bajt danych. Bajt ten transmitowany jest jednak poprzez
bufor wejściowy o adresie 60h, przy czym przed zapisaniem bufora należy sprawdzić
jego gotowość do przyjęcia danych (testując bit 1 rejestru stanu).
Przykład:
’> mov al,0dlh
out 64h,al rozkaz zapisu do portu wyjściowego
czekaj:
in al,64h
test al,02h / czy bufor wejściowy wolny?
jnz czekaj
mov al,Olh
out 60h,al ; wyślij bajt Olh do portu wyjściowego
Bufor wejściowy (port 60h) przyjmuje również bezpośrednie rozkazy dla klawiatury. Po
każdym z nich (z wyjątkiem rozkazów Echo i Reset) klawiatura wysyła bajt potwierdze
nia (ACK) równy FAh. Jest on jednak ignorowany przez procedurę obsługi przerwania
09h, która zajmuje się wyłącznie kodami z przedziału 0—127. Niektóre z rozkazów mają
sens wyłącznie w odniesieniu do modeli PS/2.
Klawiatura odpowiada na ten rozkaz odesłaniem z powrotem tego samego bajtu EEh.
Daje to możliwość prostego sprawdzenia połączeń klawiatura-kontroler.
bit 7 zawsze 0;
bity 6—5 opóźnienie zadziałania autorepetycji, w milisekundach:
00 = 250,
01 = 500,
10 = 750,
11=1000;
bity 4 -0 częstotliwość autorepetycji klawiatury, w znakach na sekundę:
OOh = 30, lOh = 7.5,
Olh = 26.7, 1 lh = 6.7,
02h = 24, 12h = 6,
03h = 21.8, 13h = 5.5,
04h = 20, 14h = 5,
05h = 18.5, 15h = 4.6,
06h = 17.1, 16h = 4.3,
07h= 16, 17h = 4,
08h = 15, 18h = 3.7,
09h= 13.3, 19h = 3.3,
0A h= 12, 1Ah = 3,
OBh = 10.9, lBh = 2.7,
OCh = 10, ICh = 2.5,
ODh = 9.2, lDh = 2.3,
OEh = 8.5, lEh = 2.1,
OFh = 8, IFh = 2.
Rozkaz F5h
Przywrócenie standardowych parametrów klawiatury i zablokowanie czytania matrycy
klawiszy.
Rozkaz F6h
Przywrócenie standardowych parametrów klawiatury i odblokowanie czytania matrycy
klawiszy.
Kod Znaczenie
OOh przepełnienie wewnętrznego bufora klawiatury
AAh pozytywny wynik BAT (po rozkazie FFh)
FCh negatywny wynik BAT
EEh Echo (po rozkazie Echo)
FAh potwierdzenie (ACK)
41h+ABh kod identyfikacji (ID) klawiatury PS/2 (po rozkazie
F2h)
01h-5 8h kody naciśnięcia i zwolnienia klawiszy
FFh błąd
void main(void)
{
unsigned char scan_code;
IRQl__OFF; /* zablokuj przerwania */
do
{
buf_wyj(); /* czekaj */
scan_code=inp(0x60); /* pobierz kod */
printf (,,\t%d",scan_code) ; /* wypisz go */
}
while(scan_code!=0x01); /* naciśnięto Esc */
IRQl_ON; /* odblokuj przerwania */
}
void buf_wyj(void)
{
unsigned char rej_stanu;
do
rej_stanu=inp(0x64); /* czekaj aż bufor pusty */
while((rej_stanu & 0x01)!=0x01);
}
Port wejściowy
Odczyt portu wejściowego umożliwia rozkaz COh wysłany poprzez rejestr sterujący
64h. Zawartość tego portu zostaje wówczas przeniesiona przez kontroler do bufora
wyjściowego (port 60h), skąd może być pobrana przez procesor rozkazem in. Znaczenie
bitów portu wejściowego podano poniżej:
Port wyjściowy
Port wyjściowy umożliwia dostęp dwukierunkowy. Odczytu portu dokonuje się przesy
łając rozkaz DOh, a zapisu - rozkazem D lh. Oba rozkazy podawane są poprzez rejestr
sterujący (port 64h) kontrolera. Oto znaczenie bitów portu wyjściowego:
Jak wiadomo, procesory 8088/86 obejmują swymi liniami adresowymi A0-A19 prze
strzeń adresową 1 MB. Programy używają adresów logicznych, na które składają się
adres segmentu —segment —i położenie (przemieszczenie) w segmencie —offset. Obie te
składowe przechowywane są w rejestrach 16-bitowych. Procesor, sięgając do komórki
pamięci, przetwarza adresy logiczne na fizyczne adresy 20-bitowe, dodając do siebie
wartość przemieszczenia w segmencie do pomnożonego przez 16 numeru segmentu. Na
magistralę adresową musi być bowiem zawsze wystawiony pełny adres 20-bitowy.
Adres fizyczny generowany jest więc według wzoru.
adres-fizyczny = 16*adres-segmentu + offset
Klawiatura 627
lOFFEFh = 1 MB + 64 kB
Inaczej postępuje w tej sytuacji procesor 80286, posiadający 24 linie adresowe. Może
on bez trudu położyć na szynie adresowej otrzymany w powyższym przykładzie wynik.
Widać więc, że nawet w trybie rzeczywistym można w tym przypadku nieznacznie
przekroczyć barierę 1 MB. Obszar pamięci, o którym mowa, nazywany jest też często
HMA (ang. High Memory Area), Procesory 80286 pracujące w trybie chronionym (pro
tected mode) używają oczywiście wszystkich swoich linii adresowych, co pozwala im
objąć 16 MB pamięci.
Nie można pogodzić tych trzech różnych sytuacji w ramach tego samego układu. Aby
obejść ten problem nie pozbawiając się możliwości wykorzystania problematycznych
64 kB pamięci w trybie rzeczywistym, wprowadzono sprzętowy mechanizm odcinający
linię A20, nazywany właśnie GATE A20, Bit 0 rejestru wyjściowego kontrolera 8042
służy realizacji funkcji powrotu procesora 80286 do trybu rzeczywistego. Ten typ pro
cesora nie posiada programowej możliwości takiego przejścia; operacja odbywa się na
drodze ściśle sprzętowej poprzez restart (reset) procesora. Ustawienie bitu 0 wymusza
ten właśnie proces. Sterowanie zostaje przekazane do tego samego punktu BIOS-u, skąd
rozpoczyna się zwykłe uruchamianie systemu. Procedury inicjalizujące sprawdzają
jednak na wstępie, badając stan rejestru F pamięci CMOS-RAM, czy chodzi o ponowne
uruchomienie systemu, czy też zwykły powrót procesora do trybu rzeczywistego. W tym
drugim przypadku następuje podjęcie wykonywania programu, który wywołał restart
procesora. Do najbardziej znanych programów korzystających z tej funkcji należą
himem.sys i ramdrive.sys, robiące użytek z pamięci powyżej 1 MB.
Przykład:
mov al,0d0h
out 64h,al ; rozkaz odczytu portu wyjściowego
c
in al,64h ;rejestr stanu
test al,01h ;czy bufor wyjściowy wolny?
jz czekaj
in al,60h ;pobierz stan portu wyjściowego
or al,02h ;otwarcie bramki A20
mov ah,al ;przechowaj AH
mov al,0dlh
out 64h,al ;rozkaz zapisu do portu wyjściowego
mov al,ah ;odtwórz AL
out 60h,al ;baj t danych anonsowany w rozkazie Dlh
628 Anatomia PC
Pozostałe urządzenia wejścia 629
mm ■
Starsze wersje korzystały dodatkowo z przewodu klawiatury, ale wyłącznie dla zasilania
swoich układów elektronicznych. Obecnie technologia CMOS pozwala na zastosowanie
układów pobierających tak małą moc, że możliwe jest zasilanie myszki z wyjść portu
szeregowego (napięciami ±12 V). Konstrukcja znakomitej większości myszek oparta
jest o kulkę wprawianą w ruch poprzez przesuwanie całej myszki po stole (a właściwie
po specjalnym „wybiegu” - równej, lekko chropowatej podkładce, tzw. mouse pad).
Kulka z kolei wprawia w ruch dwie tarcze z otworami, które wraz z układami diod
świecących i fotoełementów tworzą optomechaniczny przetwornik ruchu na impulsy
elektryczne. Każda z tarcz odpowiada za jeden z kierunków: lewo-prawo i góra-dół.
Dzięki zastosowaniu dwóch zespołów: dioda świecąca-fotoelement dla każdej tarczy,
poza wykryciem ruchu tarczy można również określić kierunek jej obrotów. Tarcza, jak
już wyżej wspomniano, ma szereg otworów na obwodzie, które podczas obrotu
zasłaniają i odsłaniają światło z diody świecącej padające na fotoelement. Powoduje to
generowanie ciągu impulsów elektrycznych o długości zależnej od przesunięcia myszki.
Poza układem przeniesienia ruchu ręki myszka posiada jeszcze dwa lub trzy przyciski,
którym zwykle przyporządkowana jest funkcja „klawiaturowa” (lewy przycisk odpo
wiada najczęściej klawiszowi Enter, zaś prawy —klawiszowi Esc).
Programowa obsługa myszki odbywa się poprzez przerwanie 33h (Mouse Support),
Warunkiem działania tego przerwania jest oczywiście załadowanie sterownika myszki.
Oto łista funkcji przerwania 33h.
Funkcja Opis
OOh I inicjalizacja myszki i sprawdzenie obecności jej sterownika______________
Olh I wyświetlenie kursora myszki_________________________________________
Q2h j ukrycie kursora myszki_____________________________________________
03h [ określenie pozycji i stanu przycisków myszki___________________________
Q4h [ przesunięcie kursora________________________________________________
05h I określenie liczby naciśnięć przycisków________________________________
06h [ określenie liczby zwolnień przycisków________________________________
07h I ustawienie zasięgu poziomego________________________________________
08h | ustawienie zasięgu pionowego________________________________________
09h I zdefiniowanie kształtu kursora graficznego myszki______________________
OAh I zdefiniowanie maski kursora tekstowego myszki________________________
OBh I określenie odległości ostatniego przesunięcia___________________________
OCh | instalacja filtru zdarzeń (ang. event handler) generowanych przez myszkę
ODh | włączenie emulacji pióra świetlnego__________________________________
OEh wyłączenie emulacji pióra świetlnego
OFh [ ustawienie prędkości ruchu kursora___________________________________
lOh I ustawienie granic obszaru ukrycia myszki______________________________
13h | ustawienie maksymalnej prędkości ruchu kursora_______________________
14h I zamiana filtru zdarzeń_______________________________________________
15h I określenie rozmiaru bufora statusu myszki_____________________________
16h [ zapamiętanie statusu myszki_________________________________________
17h [ odtworzenie statusu myszki__________________________________________
18h I instalacja dodatkowego filtru zdarzeń (zob. funkcja OCh)__________
19h I określenie adresu dodatkowego filtru zdarzeń___________________________
lAh I ustawienie czułości myszki__________________________________________
lBh I pobranie czułości myszki____________________________________________
ICh ustawienie częstotliwości przerwań pochodzących od myszki (funkcja ta
_______ I stosuje się jedynie do myszek standardu Inport)________________
1Dh I ustawienie wyświetlanej strony pamięci obrazu (zawierającej kursor myszki)
lEh I pobranie numeru strony pamięci obrazu zawierającej kursor myszki___
IFh I zablokowanie sterownika myszki_____________________________________
20h I włączenie sterownika myszki_____________________________________
21h I inicjalizacja sterownika myszki______________________________
22h określenie numeru wersji sterownika myszki i numeru przerwania (IRQ)
632 Anatomia PC
Funkcja OOh
Działanie:
Funkcja ta zwraca informację o zainstalowaniu sterownika myszki i jej typie.
Param etry wejściowe:
AX OOOOh.
W artości zwracane:
AX obecność sterownika myszki:
OOOOh = nieobecny,
FFFFh = zainstalowany;
BX rodzaj myszki:
FFFFh = dwuprzyciskowa,
0003h - trój przycisków a,
OOOOh = inna.
Funkcja 01 h
Działanie:
Funkcja wyświetla kursor myszki.
Param etry wejściowe:
AX OOOlh.
W artości zwracane:
-— brak —
Funkcja 02h
Działanie:
Funkcja ukrywa kursor myszki.
Param etry wejściowe:
AX 0002h.
W artości zwracane:
— brak —
Funkcja 03h
Działanie:
Funkcja ta zwraca informację o współrzędnych kursora myszki i stanie jej przycisków.
Pozostałe urządzenia wejścia 633
Funkcja 04h
Działanie:
Funkcja ustała położenie kursora myszki.
Param etry wejściowe:
AX 0004h;
CX współrzędna X kursora myszki (0-639);
DX współrzędna Y kursora myszki (0-199).
Wartości zwracane:
— brak —
Uwaga:
Wartości współrzędnych zaokrąglane są do rozdzielczości znakowej.
Funkcja 05h
Działanie:
Funkcja ta zwraca informację o naciśnięciu przycisków myszki.
Param etry wejściowe:
AX 0005h;
BX kod przycisku:
OOOOh - lewy,
0001 h - prawy,
0002h - środkowy.
W artości zwracane:
AL bieżący stan przycisków:
634 Anatomia PC
Funkcja 06h
Działanie:
Funkcja ta zwraca informację o zwolnieniu przycisków myszki.
Param etry wejściowe:
AX 0006h;
BX kod przycisku:
OOOOh - lewy,
OOOlh-prawy,
0002h - środkowy.
W artości zwracane:
AL bieżący stan przycisków:
Funkcja OBh
Działanie:
Funkcja ta zwraca stan liczników położenia myszki.
Pozostałe urządzenia wejścia 635
łość myszki (zwykle 1/200 do 1/400 cala). Wartości zwracane w rejestrach CX i DX na
leży traktować jako liczby całkowite ze znakiem. Wartości dodatnie odpowiadają prze
sunięciu myszki w dół i w prawo.
Game port
Manipulator {joystick), podobnie jak myszka, przekazuje ruch dłoni (drążka) do kompu
tera. Wykorzystywany jest przede wszystkim w grach i na tym w zasadzie kończy się
jego zastosowanie praktyczne.
Połączenie joysticka z komputerem odbywa się poprzez tzw. game port . Zwykle jest on
umieszczony na jednej karcie z portami szeregowymi i portem równoległym (karta
Multi I/O). Game port obsługuje dwa niezależne joysticki analogowe (A i B), dołączane
doń przez tzw. „żeńskie” 15-stykowe gniazdo DB-15. Rozkład końcówek gniazda portu
r\
joysticka przedstawia rysunek 14.1.
f t ’. Rysunek 14.1.
Rozmieszczen ie Vcc
sygnałów
m /i
A11
r\
w 15-końcówkowym
gnieździe portu AX
joysticka
GND GND
AY
A2
NC
636 Anatomia PC
Końcówki 2-7 złącza odpowiadają za pierwszy joystick (A), zaś końcówki 10-14 - za
drugi (B). Linie A l, A2, BI, B2 przekazują stan przycisków 1 i 2 joysticków A i B,
natomiast liniami AX, AY, BX i BY przekazywane są sygnały określające położenie
drążka.
Port 2 0 lh służy zarówno do zapisu, jak i odczytu. Określenie położenia drążka odbywa
się poprzez programowy pomiar czasu trwania impulsu generatora monostabilnego.
Zapis do portu 020lh dowolnej wartości powoduje wyzwolenie generatorów. Następnie
mierzony jest czas utrzymywania się jedynki logicznej na wyjściach generatorów.
pętla:
in al,dx ; odczytaj stan portu joysticka
test ał,01h ; sprawdź czy uniwibrator AX w fazie spoczynku
loopnz pętla ; nie - zliczaj dalej
Funkcja 84h
Działanie:
Funkcja ta odczytuje stan joysticka.
Param etry wejściowe:
DX kod podfunkcj i:
0 = odczyt stanu wyłączników,
1 = odczyt położeń X i Y drążka.
W artości zwracane:
dla podfunkcj i 0:
AL stan przycisków joysticków, jeśli DX = 0:
Opisywany układ wejścia może znaleźć zastosowanie nie tylko jako port joysticka, ale
również jako prosty, 8-bitowy przetwornik wartości analogowej (rezystancja) na war
tość cyfrową. Może to być np. rezystancja termometru oporowego itp.
Złącze USB 639
Specyfikacja
Koncepcja złącza USB jest pod wieloma względami niezmiernie elastyczna. Tkwiąca
w samym założeniu uniwersalność wymaga dostosowania do szerokiej gamy urządzeń:
od powolnych klawiatur do szybkich modemów i kamer video. Uczynienie zadość temu
podstawowemu wymaganiu doprowadziło do implementowania kanałów informacyj
nych o różnej przepustowości. W pierwszej fazie realizacji projektu oferowane są kana
ły o małej (Low Speed, do 1,5 MB/s) i średniej (Medium Speed, do 12 MB/s) prędkości
przesyłania. W drugim etapie rozwoju powstać ma wersja High Speed USB transmitu
jąca dane z prędkością 500 Mb/s.
Nic nie stoi na przeszkodzie by korzystać wyłącznie z kanału Medium Speed. Wyodręb
nienie kanału 1,5 MB ma aspekt wyłącznie ekonomiczny - liczna grupa powolnych
urządzeń (mysz, klawiatura itp) musiałaby być wyposażana w szybki interfejs USB.
640 Anatomia PC
Nowej magistrali i tak nie jest łatwo wyprzeć dotychczasowe rozwiązania, każdy wzrost
kosztów zmniejsza dodatkowo szanse na powodzenie całego projektu.
Topologia
USB ma strukturę drzewiastą rozrastającą się z punktu początkowego, który stanowi
umieszczony na płycie PC kontroler USB. Płyty główne z procesorem Pentium bazujące
na układach scalonych firmy Intel mają już taki kontroler wkomponowany w strukturę
mostu PCI2ISA (PIIX3 lub nowszego PI 1X4). Oferuje on dwa gniazda USB.
W miarę rozbudowy sieci od poziomu „0” w dół, do każdego z gniazd podłączać można
dowolne urządzenie końcowe (NODE1) lub kolejny rozdzielacz (HUB) —rysunek 15.1.
Rysunek 15.1.
HOST
Drzewo urządzeń Poziom ”0’ v (Root Hub) y"
podłączonych
do magistrali
Poziom "1 NODE
USB
Poziom "2" VyfiUEh
/ V
\ V •
Dopuszczalna liczba wszystkich urządzeń nie może przekraczać 127. Rozdzielacze sta
nowią układy aktywne wzmacniające sygnały magistrali. Dysponują jednym wyjściem
w kierunku wyższego poziomu ( Up-stream Port) i kilkoma wejściami w stronę pozio
mów niższych (Down-stream Ports). Kolejne rozdzielacze zarysowują wyraźnie pozio
my piramidy, na szczycie której pracuje Host-Kontroler. Na poziomie ostatnim obecne
są już tylko urządzenia końcowe. Funkcja rozdzielaczy nie ogranicza się jedynie do
pomnażania gniazd USB. Zaopatrują one również w napięcie zasilania urządzenia nie
dysponujące własnym źródłem“. Klasyczny przykład stanowi wbudowany w klawiaturę
rozdzielacz aktywny dostarczający energii dla podłączonej do niego myszy.
Okablowanie
Urządzenia pracujące w kanale 12 MB/s posługują się ekranowaną skrętką. Dopuszczal
na długość takiego przewodu wynosi 5 metrów. Dla urządzeń klasy 1,5 MB/s przewi-
g > .
I
Ł v •
dziano prosty czterożylowy i nieekranowany kabel o maksymalnej długości 3 m. Dla
| zminimalizowania szkodliwego promieniowania ograniczono czasy narastania przebie-
I
K i
gów impulsowych do wartości 75 - 300 ns. Maksymalna liczba odcinków łączących po-
| ziomy piramidy wynosi 7. Tak więc najbardziej odległy rozdzielacz nie może znajdować
I się dalej od punktu szczytowego niż 35 m. Ograniczenie to nałożone jest ze względu na
I czas przebiegu pakietów i wyznaczony przez specyfikację minimalny czas reakcji sys-
| temu.
¡•s* ••
i\<
I
[iŻ-
Niezależnie od tego do jakiej klasy prędkości kwalifikuje się dane urządzenie, połączę-
1 nie odbywa się zawsze przy użyciu tego samego wtyku (rysunek 15.2).
p A •
T & *
*•
i Rysunek 15.2.
I Złącze USB
.Si!>
Zróżnicowanie długości końcówek (styki zasilające wystają nieco ponad linię ograni-
\ czenia styków przewodów sygnałowych) stanowi fragment realizacji idei Hot Plugging
| - łączenia na gorąco. Dowolne urządzenie USB może być bez szkody dla sieci i siebie
I samego podłączane i odłączane bez konieczności przestrzegania żadnej specjalnej
| procedury (odłączenie zasilania, reset lub tym podobne).
l Magistrala nie dysponuje linią podającą sygnał taktujący. Sygnał zawarty jest w stru-
^ mieniu danych i z niego odzyskiwany3. Każde logiczne 0 wyzwala zmianę polaryzacji.
| Specjalny algorytm kodowania zapewnia obecność impulsów synchronizujących w do-
E wolnej sekwencji danych, nawet składającej się z samych 1. Najpóźniej po sześciu 1
i wprowadzany jest impuls 0 (Bit Stuffmg). Tak więc każde z urządzeń USB ma moż-
f łiwość zsynchronizowania swojego wewnętrznego zegara co najmniej raz na siedem
f taktów.
3 Procedura znana jest pod nazwą NRZI (Non Return to Zero Invert).
642 Anatomia PC
Protokół
Każdy z podłączonych w danej chwili do magistrali układów musi być jednoznacznie
identyfikowany. Do tego celu służy numer identyfikacyjny ID nadawany przez kon
troler USB (Host Adapter). Tuż po uruchomieniu systemu (załączeniu napięć zasila
jących) każdy z układów ustawia swój ID=0. Kontroler przegląda najpierw całą
magistralę odcinek po odcinku aż do ostatniego poziomu i przydziela każdemu napotka
nemu urządzeniu kolejny numer ID. Na numer ten składa się jeden bajt adresu urzą
dzenia (ADDR) i trzy dodatkowe bity na określenie położenia wewnętrznego w ramach
urządzenia (ENDP, Endpoint).
Wszelkie akcje w sieci USB inicjowane są przez kontroler. Poszczególne urządzenia nie
mają możliwości ani zwrócenia na siebie uwagi (tak jak to się dzieje z udziałem
mechanizmu przerwań) ani wysyłania danych „w ciemno”. Każdy z uczestników musi
czekać, aż kontroler zwróci się do niego z zapytaniem4 o potrzebę obsługi. Tak zde
finiowana procedura likwiduje co prawda konieczność eliminacji kolizji, do których do
chodzi w przypadku jednoczesnego nadawania przez wielu uczestników, pochłania
jednak stosunkowo dużo mocy obliczeniowej na organizację biegu jałowego. Samo
wysyłanie zapytań do wszystkich możliwych 127 uczestników mocno obciąża średnich
rozmiarów procesor i nie może być pozostawione w gestii CPU.
Działalność tą bierze na siebie Host-Adapter USB. On sam musi więc być urządzeniem
porozumiewającym się z PC przy pomocy przerwań. W zależności od producenta płyty
głównej, zajmowana jest linia IRQ10 lub IRQ11. Oprócz tego Host-Adapter obejmuje
w posiadanie część przestrzeni adresowej I/O. W tej sprawie prawie każda płyta ma
swoje zdanie, często powtarza się jednak zakres 0x6000-0x601F lub 0xE400-0xE41F.
Struktura pakietu I I b i l
■
II bl C a i b k b a p b 4 < l E > > * '
’ Tl :rJr!1*j'*!*.v'!.|,': j
C U
: y-:
' ’ J i k i l i l l l M l i i I I I n i i 111 . I
« a
1iJJJ JIj jTj ji TjTjT; \\ MNUhur m ii tYt; t iii; 0 :; 5;:: 1; •:::: n ;: ¿0 r , *».:;i; w-:: ii:-:::::
^ . v r r r r r r r r r r r r i v r i v r r r r ^ i j i j * v i r r r i v r r r r r r i v r r « ' * ■*■ • ■*■ ■■ •*■••*■ * ■ a N ^ K a • a. »A«. ». ’ .
. . «. . . *. . , * : k. . . k. k. . • - f c - • j y V * v
O.
•
-ja*^
ę j 5! 1j j j 5: i*:51<i <! <: <
a-i ,; ■j OOu j Cv . C •. C O .CC U J . *.•.*.
* v V; > x
.!_■> ■■.■>«.’ ■W \W . ’I • 1*4 ■ I ■ 4 • ^ I I • i a i i i i a 4 i i i i i i i i i i i i ' i i i n i i B i i i i i i ' 4 ' ’ i i ’ ' i i ’ i ' ' * i ' ' i * * i ' i ' i r ' i V ' ' ' * r a * P " B " " " " " " " • a*i • j .'.*r
ADDR
Token i f4•<_V•-•' '■X'i1
•
1 -•-»0.* j.*X % .*!.•j
j.*L’.’.*
X .- r . - . V .
•; •;•;<ż -• ;•
. V . - . V . - V . V . V . V . - . - . V . . v . v . * . A k k. i .V . v .'A V .k ^ . kJ ■ . ■ ¿ i ' S y S / . ś ’ .■ ¡ S i .■ .
¿ ‘i v A v x i ^ c i i •; i w
r i w a a a 1 ,1 ' ‘
i ¿ W z ird • v J v V w v a i v V a Ł \ ' . v / i ; ^ ^ ^ V a V V r V - + v - v
, k .* y .> V ^ A r .: .« ¡v !
w j i ii C*I lć
4 Dla określenie tego typu sterowania przyjął sie angielskojęzyczny termin „Polling”.
Złącze USB 643
Struktura pakietu
Handshake
(lub ich odbiór) jest sprawą życia i śmierci. Klasyczne przykłady to mikrofon, głośniki
lub kamera. Przepełnienie (lub wyczerpanie) buforów wewnętrznych narusza ciągłość
przekazu. System przydziału oparty na zapytaniach kontrolera nie zawsze gwarantuje
dojście do głosu na czas. Dla tego typu układów kontroler rezerwuje5 fragment pasma
w regularnych wycinkach czasowych. Przekaz izochroniczny ma priorytet nad trans
misją asynchroniczną. Dla potrzeb innych chętnych stoi w tym czasie do dyspozycji
jedynie reszta pasma.
USB w praktyce
USB oferuje, w porównaniu do stosowanych dotychczas złączy, szereg zalet, które
zestawione w poniższych punktach dają obraz jego potencjalnych możliwości. Czy zo
staną w pełni wykorzystane, trudno jest ocenić już teraz. Reakcja rynku na wprowa
dzane nowości nie była nigdy łatwa do przewidzenia.
• W obrębie całego systemu jest tylko jeden rodzaj gniazda i pasującego do niego
wtyku. Pomylić się nie sposób, bowiem każdy wtyk można podłączyć do pier
wszego napotkanego w okolicy gniazda. Nie należy się natomiast spodziewać
szerokiej obecności rozdzielaczy (NODE) jako samodzielnych układów. Ich
funkcje zostaną zintegrowane w dostosowanych do tego celu urządzeniach USB.
Rozmnażanie gniazd będzie odbywało się tam, gdzie pozwoli na to miejsce: na
ścianach bocznych klawiatur, w podstawach i ścianach tylnych monitorów itp.
Integracja rozdzielaczy w urządzeniach niskiej prędkości nakłada wyższe wymo
gi (ekranowana skrętka) na przewód połączeniowy z kolejną warstwą: dołączone
do rozdzielacza urządzenie USB może być klasy 12 MB/s.
• Sieć USB jest samokonfigurująca i nie wymaga od użytkownika dodatkowych
działań. Nie trzeba się troszczyć o terminatory końców magistrali (jak w przy
padku SCSI), deklaracje Master/Slave, adresy portów I/O, kanałów DMA i nu
mery IRQ ani określać parametrów transmisji (złącze szeregowe). Host-Adapter
bierze na siebie zarówno identyfikację jak i właściwą konfigurację każdego ele
mentu sieci. Samokonfiguracja obejmuje również system „Hot Plugging“, tzn.
dołączane i odłączane w trakcie pracy systemu kolejne urządzenia są automa
tycznie rozpoznawane i adresowane, a niezbędne do ich obsługi sterowniki uru
chamiane6 bez udziału użytkownika.
• Nadrzędną cechą całego systemu jest jego elastyczność i niskie koszty realizacji.
Obsługiwane mogą być jednocześnie urządzenia pracujące z prędkością kilku
kB/s oraz te produkujące strumień do 12 MB/s. Pokrywany jest więc zakres
obejmujący przesyłanie danych w formacie MPEG-II ( 8 - 1 0 MB/s) rzecz bardzo
ważna dla multimedialnej przyszłości całego przedsięwzięcia. Długość kursują
cych w sieci pakietów może być regulowana co podnosi możliwość niezmiernie
5 W specyfikacji USB algorytm przydziału ukrywa się pod nazwą „Enhanced TDM.
y ^
Uwaga:
Wiele starych zasilaczy nie restartowało płyty głównej po ustaleniu napięć zasilających.
Dlatego też, jeżeli po wmontowaniu nowej płyty do starej obudowy komputer nie chce
się uruchomić, warto nacisnąć przycisk Reset, aby sprawdzić, czy przyczyną nie jest
czasem stary zasilacz.
Uwaga:
W Polsce napięcie w sieci wynosi -2 2 0 V, a zasilacze przeznaczone na rynek amery
kański zasilane są napięciem -1 1 0 V. Przed podłączeniem zasilacza do sieci warto
sprawdzić, do jakiego napięcia jest on przystosowany - informacja taka powinna być
umieszczona na obudowie. Wiele zasilaczy posiada przełącznik 110/220. W Polsce
powinien on być ustawiony na zasilanie napięciem 220 V (większość producentów
sprzedających w Polsce komputery blokuje działanie tego przełącznika).
648 Anatomia PC
OGNI
Rysunek 16.1. 0+12V
Schemat O +5V
zasilacza
komputer o w ego
o mocy 150 W
0-12V
O *SV
O TO
Na rysunku 16.2. pokazano złącza zasilające płytę główną. Przy podłączaniu płyty
głównej należy zachować szczególną ostrożność, by nie zamienić złącz miejscami -
odwrotne podłączenie napięć zasilających może spowodować uszkodzenie komputera.
Rysunek 16.2:
Złącza zasilające
płytę główną
Wtyki zasilasza
Gniazdo
p yty 9 ównej
Na rysunku 16.3. pokazano dwa typy złącz przeznaczonych do zasilania stacji dysków,
streamerów, CD-ROM-ów i innych urządzeń. Konstrukcja złącza uniemożliwia niewłaś
ciwe podłączenie.
Zasilacz 649
+ 1 2 V (żółty)
Rysunek 16.3. + 5V ( c z e r w o n y )
G N D (czarny)
G N D (cz
G N D (c z a rn
G N D (czarny)
Złącza zasilające + 1 2 V (żółty) + 5V (czerw ony)
urządzenia
zainstalowane w
komputerze
wyłącznik
Rysunek 16.4.
czarny
Schemat
podłączeń ia brązowy
wyłącznika w
niebieski
zasilacza
biały
650 Anatomia PC
Program Setup 651
Na wstępie jednak wyjaśnienie kilku często przewijających się przez tę tematykę pojęć.
Rysunek A1.
Schemat
tworzenia
sygnałów
taktujących
w komputerze
A T-286
Sygnał taktujący CPU nosi zwykle nazwę CPUCLK lub PROCCLK {Processor Clock)
i może być uzyskiwany w prostej linii z jednego z przebiegów wejściowych: CLK2IN
(najczęściej) lub ATCLK (rzadziej).
Najwięcej możliwości oferowanych jest zwykle dla zegara taktującego magistrali zew
nętrznej (BUSCLK lub BCLK - Bus Clock). Dla dobrych kart rozszerzających można
stosować najszybszą z możliwych nastaw, tj. CLK2IN. Program Setup proponuje stan
dardowo częstotliwość CLK2IN/2, co daje gwarancję bezawaryjnej pracy większości
kart. Opcja ATCLK oznacza asynchroniczny (w stosunku do CPU) tryb pracy, używany
w wyjątkowych sytuacjach, gdy elementy pewnych rozszerzeń sprzętowych nie są
w stanie nadążyć za cyklami magistrali.
Kanał DMA otrzymuje własny sygnał taktujący {DMA Clock) równy SCLK lub SCLK/2.
Program Setup 653
Przy montowaniu pamięci obowiązuje zasada wypełniania całego banku modułami tej
samej wielkości. Zapełnianie banków należy zawsze rozpoczynać od banku o numerze
najniższym. Dla umożliwienia realizacji funkcji przeplotu należy zapełnić co najmniej
dwa banki.
Pamięć dynamiczna RAM zorganizowana jest wewnętrznie w wiersze (ang. row) i ko
lumny (ang. column). Połowa bitów adresujących dowolną komórkę przypada na adres
wiersza, a połowa na adres kolumny. Dla zaadresowania wiersza używa się sygnału
RAS (Row Address Strobe), a kolumny - CAS (Column Address Strobe). Nie wnikając
w technologię układów scalonych pamięci należy przyjąć, że pomiędzy kolejnymi
654 Anatomia PC
Pipelining
Określenie to oznacza płynny dostęp do pamięci i odnosi się do takiego sposobu jej
adresowania, w którym następna komórka adresowana jest jeszcze w trakcie trwania
poprzedniego cyklu. Dekodery pamięci przetwarzają więc kolejny adres, podczas gdy
magistrala danych transportuje wynik poprzedniej operacji.
Shadow RAM
Obszar pamięci pomiędzy 640 kB i 1 MB przewidziany jest, jak wiadomo, dla kart gra
ficznych, dodatkowych pamięci ROM oraz rozszerzeń systemowych. Wiele płyt głów
nych AT-286, w tym płyty oparte o zestawy układów scalonych (ang. chipset) NEAT,
SCAT, Chips&Technologies, a także modele AT-386 (włączając w to 386SX) i wyższe
są w stanie konfigurować wybrane fragmenty tego obszaru jako tzw. Shadow RAM.
Ustalenie takie podejmuje się na etapie dialogu z programem Setup; oznacza ono, że
zawartość dowolnej pamięci typu ROM kopiowana jest do leżącej praktycznie „pod”
nią (w cieniu - ang. shadow) pamięci RAM. Jako że czas dostępu do układu typu RAM
jest znacznie krótszy niż dla układu ROM lub EPROM, rozwiązanie to przynosi znaczne
(blisko czterokrotne) skrócenie czasu dostępu do procedur programowych i jest szcze
gólnie istotne w przypadku procedur BłOS-u systemowego, który jest bardzo często
wywoływany. Znacznie bardziej spektakularny efekt daje zastosowanie tej techniki do
BIOS-u kart EGA i YGA (Yideo-BIOS).
Program Setup 655
Pamięć EMS
EMS jest skrótem określenia Expanded Memory Specification , oznaczającego ściśle
zdefiniowany sposób wykorzystania pamięci położonej powyżej 640 kB. System DOS,
jak powszechnie wiadomo, może zaadresować jedynie 1 MB pamięci, przy czym część
tego obszaru przeznaczona jest dla kart rozszerzających. Do dyspozycji programów po
zostaje więc 640 kB, w którym musi znaleźć miejsce również sam system operacyjny.
Aby aplikacje pracujące pod nadzorem systemu DOS mogły korzystać z dużych obsza
rów pamięci rozszerzonej, firmy Lotus, Intel i Microsoft opracowały tzw. standard LIM
EMS {Lotus-Intel-Microsoft Expanded Memory Specification). Przewiduje on dostęp do
pamięci rozszerzonej poprzez tzw. okno (ang. page frame) o szerokości 64 kB, umiesz
czone logicznie w przestrzeni adresowej DOS pomiędzy 640 kB, a 1 MB. Okno to
podzielone jest na cztery tzw. strony logiczne (ang. page) po 16 kB. Każda z nich może
w danym momencie znajdować się nad dowolnym obszarem pamięci rozszerzonej. Daje
to praktycznie dostęp do całej tej pamięci, chociaż niejednocześnie.
Procesor 80286, w który wyposażono modele AT, jest w stanie zaadresować więcej niż
1 MB pamięci. W związku z tym płyty główne AT zaczęto wzbogacać o dodatkowe
megabajty, noszące nazwę pamięci dodatkowej (ang. extended memory). Komputer
0 klasycznej architekturze AT nie ma niestety bezpośredniej możliwości transformacji
pamięci dodatkowej na rozszerzoną. W maszynach takich pamięć dodatkowa wykorzy
stywana była głównie na potrzeby tzw. dysków wirtualnych (vdisk.sys, ramdrive.sys)
1 programów buforujących dostęp do dysków twardych (tzw. disk cache , np. smartdrv.
sys, pc-cache.exe), które często posługiwały się własnymi, niestandardowymi rozwią
zaniami dostępu do niej. Aby zrealizować dostęp do pamięci EMS należało stosować
specjalne karty rozszerzające spełniające wymogi tego standardu lub posługiwać się
dodatkowymi sterownikami programowymi, które zajmowały cenne miejsce w pamięci
podstawowej. Istnieją jednak modele AT, oparte na specjalizowanych zestawach ukła
dów scalonych (NEAT, SCAT, C&T), które (oprócz posiadanych innych zalet) realizują
sprzętowo transformację zainstalowanej pamięci do postaci EMS. Procesory 80386
i lepsze dysponują standardowo mechanizmami przeadresowywania dowolnych bloków
pamięci i nie potrzebują w tej materii wsparcia układów dodatkowych płyty głównej.
656 Anatomia PC
Aktualnie egzystują dwie wersje standardu LIM EMS: wersja 3.2, dopuszczająca 16 MB
pamięci i zezwalająca na składowanie w pamięci EMS wyłącznie danych oraz wersja 4.0,
mogąca zarządzać do 32 MB pamięci i zezwalająca na umieszczanie tam fragmentów
kodu programów.
Program konfiguracyjny Setup oferuje dwa tryby pracy: podstawowy (tzw. Standard
CMOS Setup) i zaawansowany (tzw. Advanced CMOS Setup).
Tryb podstawowy
Ekran trybu podstawowego przedstawiony jest na rysunku A.2.
Modyfikacja danej pozycji odbywa się przez naciśnięcie klawisza —> lub <—.
Program Setup 657
W trybie tym definiujemy bieżący czas i datę, typy zainstalowanych napędów dysków
twardych i elastycznych, ilość dostępnej pamięci i typ sterownika monitora. System ofe
ruje również krótkie teksty pomocy kontekstowej (odnoszące się do aktualnie wybranej
Łf .
| ‘a .
Tryb zaawansowany
Ekran tego trybu widzimy na rysunku A.3
Rysunek A3. P h o e n ix T e c h n o lo g ie s L td .
C58221 c h ip set F e a tu re c o n tro l
Menu trybu T im e : 0 7 :2 9 :0 2
D a te : Thu Feb 1 1 , 1993
zaawansowan ego
shadow B io s r o m : d 1 s a b le d s h a d o w 1 6 K a t e c OOO: D ls a b l ed
programu Shadow V i d e o ROM: D is a b le d M em ory W a lt S t a t e s : 0 w a it s ta te s
shadow 16K a t C 4000: D is a b le d 640= 1024K R e lo c a tio n : E n a b le d
Setup 286 shadow 1 6 k a t C80QQ: D is a b le d EMS B a s e M e m o r y A d d r e s s : segm ent C800
shadow 16k at CC000: D is a b le d ems Base i / o A d d ress: 2 0 8 h /2 0 9 h
shadow 1 6 k a t DÛQÛ0: Di s a b le d em s PAge 0 R eg. E x te n s io n : 1M t o 2M
shadow 16K a t D4000: D is a b le d em s PAge 1 R eg. E x te n s io n : 1M t o 2M
shadow 16K a t D80Û0: D is a b le d em s PAge 2 R eg. E x te n s io n : 1 M t o 2M
shadow 16K a t DC0Ü0: Di s a b le d EMS P A g e 3 R e g . E x t e n s i o n : 1 M t o 2M
shadow 16K a t EÛ000: Di s a b le d EMS M e m o r y s i z e : 0 . 5M
shadow 16K a t E 4000: D is a b le d ems w a it s ta te s : 0 w a it S ta te s
shadow 16K a t E8QÛ0: D is a b le d em s M em o ry: D ls a b l ed
Są to klasyczne opcje oferowane przez płytę główną typu NEAT, Zasady wyboru i mo
dyfikacji poszczególnych pozycji są identyczne jak poprzednio. Możliwości konfigu
racji systemu opisano poniżej:
• Shadow BIOS RO M (Disable/Enable) - realizacja funkcji Shadow w odniesieniu
do pamięci ROM BIOS-u systemowego.
• Shadow Video RO M (Disable/Enable) - realizacja funkcji Shadow w odniesieniu
do pamięci ROM BIOS-u karty sterownika monitora.
658 Anatomia PC
• Memory Wait States (0, 1, 2, 3, 4 lub 5 Wait States) - opcja ta pozwala na ustale
nie liczby dodatkowych cykli magistrali danych wprowadzanych przez kontroler
magistral w przypadku stosowania modułów pamięci o większych czasach dos
tępu. Zmniejszenie liczby cykli oczekiwania wpływa znacząco na wzrost mocy
obliczeniowej komputera, lecz może powodować zawieszanie się systemu
(zwykle zaraz przy starcie).
• 640-1024K Relocation (Enable/Disable) - opcja ta ma znaczenie tylko przy
obsadzie banków modułami 256 K, co daje 4*256 kB = 1 MB pamięci (B0H+
+B0l+B1h+B1l ). Włączenie tej opcji (Enable ) wyklucza możliwość stosowania
techniki Shadow RAM , ale udostępnia 384 kB pamięci dodatkowej. W każdym
innym przypadku (EMS) opcja ta musi być wyłączona (Disable ).
Rysunek A A
F e a tu re C o n tro l
Menu trybu T im e : 0 7 :2 7 :5 5
D a te : Thu Feb 1 1 , 1993
zaawansowanego
Shadow B IO S ROM: Di s a b l e d Shadow 1 6 K a t E C O G Q : Di s a b le d
(magistrala Shadow v id e o rom : D is a b le d Memory w a i t S t a t e s : 0 w a it s ta te s
Shadow 16K a t C 4 0 0 0 : Di s a b l e d 6 4 0 = 1 0 2 4 K R e lo c a tio n : E n a b le d
taktowana Shadow 16K a t C8Q0Q: D is a b le d Em s B a s e M e m o r y A d d r e s s : segm ent C800
Shadow 16K a t c c 000: D is a b le d ems Base I/O A d d ress: 2 0 8 h /2 0 9 h
sygnałem sh a d o w 16K a t 0 0 0 0 0 : Di s a b l e d EMS P A g e 0 R e g . E x t e n s i o n : 1M t o 2M
sh a d o w 16K a t D 4000: Di s a b l e d EMS P A g e 1 R e g . E x t e n s i o n : 1 M t o 2M
CLK2IN/2) Shadow 16K a t D 8000: oi sa b le d em s PAge 2 Reg. E x te n s io n : 1 M t o 2M
Shadow 16K a t DC000: D is a b le d EMS P A g e 3 R e g . E x t e n s i o n : 1 M t o 2M
Shadow 1 6 K a t EOO0O: Di s a b l e d EMS M e m o r y s i z e : 0 . 5M
shadow 16K a t E 4000: D is a b le d ems w a it s ta te s : 2 w a it S ta te s
sh a d o w 16K a t E 8000: Di s a b l e d em s M em ory: Di s a b le d
bus c lo c k : C L K 2 IN /2 DMA C L O C K : S C L K /2
Prędkość pracy kanału DMA ustalona jest na stałym poziomie SCLK/2 tj. 8 MHz.
Program Setup 659
Rysunek A.5,
E X I T FOR BOOT
Menu główne RUN CMOS SETUP
RUN XCMOS SETUP
programu Setup
386firm y A MI
K eyboard : Not i n s t a l l e d
s c ra tc h RAM o p t i o n : 1
i f r e q u i r e d , B IO S w i l l u s e 2 5 6 b y t e s o f ra m
( 1 ) : u s i n g B io s s t a c k a r e a a t 0 0 3 0 : 0 0 0 0
C 2) : R e d u c in g b a s e m em ory s i z e b y 1 kb
Dużo więcej możliwości oferuje opcja EXTENDED CMOS SETUP. Przed przejściem
do tego punktu system wyświetla komunikat ostrzegawczy przedstawiony na rysunku
A.7. Decyzję o wyborze opcji należy potwierdzić naciśnięciem klawisza Enter lub wy
cofać się z niej klawiszem Esc.
660 Anatomia PC
Komunikat
ostrzegawczy
programu
W A R N IN G — IM P R O P E R USE TO S E T U P MAY C A U S E T H E SYSTEM TO
Setup 386 F A L L NORMAL O P E R A T IO N S !
H I T <£SC> T O S T O P N O W !
H I T <£NTER> T O C O N T I N U E !
Ekran ten zawiera wskazówkę dotyczącą postępowania w razie zawieszenia się systemu
na skutek złej obsługi programu Setup. W takiej sytuacji należy przed ponownym włą
czeniem komputera wcisnąć klawisz Ins i przytrzymać go do chwili, gdy procedury
POST przejdą do testowania pamięci. Do pamięci CMOS załadowane zostaną wówczas
wartości standardowe, gwarantujące w większości przypadków poprawną pracę systemu.
Klawisze kursora umożliwiają wskazanie opcji, a klawisz Enter wybór dowolnej z nich.
Wybierzmy pierwszą z opcji, tj. EASY C&T 386 CHIPSET REGISTER SETUP.
Menu doboru
M em ory C o n f i g u r a t i o n
częstotliwości Bank E n a b le /D is a b le DRAM T y p e w a its ta te
sygnałów 0 ENABLED 1MEG 1 W A IT STATE
1 ENABLED 1MEG 1 W A IT STATE
taktujących 2 D IS A B L E D 1 W A IT STATE
3 D IS A B L E D 1 W A IT STATE
kanału DMA
c lo c k S ou rce
P ro cesso r C lo c k Bus C lo c k DMA C l o c k
PROCESSOR O S C IL L A T O R PROC C L O C K /3 SC L K / 2
Shadow R A M /M e m o ry I n t e r l e a v e SC L K / 2
B io s shadow v id e o shadow M em ory SCLK
FOOQQH, 6 4 K CQQQQH, 1 6 K C400ÜH, 16K I n t er le a v
MOVE B A R - < P g U p /P g D n >
ENABLED ENABLED ENABLED ENABLED C H A N G E W IN D O W S | 1 —
E X IT -< E S C >
Menu doboru
M em ory c o n f i g u r a t i o n
częstotliwości Bank E n a b le /D is a b le D RA M T y p e w a its ta te
PROCESSOR O S C IL L A T O R PROC C L O C K /3 S C L K /2
PROCESSOR C L O C K /3
shadow R A M /M e m o ry i n t e r l e a v e PROCESSOR C L O C K /2
B IO S s h a d o w v id e o shadow M em ory ATCLK
FOOOOH, 6 4 K CQOOGH, 1 6 K C40GQH, 16K In te rle a v
move B A R -< p g u p /p g D n >
ENABLED ENABLED ENABLED ENABLED C H A N G E W IN D O W S t l —
E X IT -< E S C >
System oferuje możliwość realizacji funkcji Shadow RAM w stosunku do BIOS-u syste
mowego i BIOS-u karty sterownika monitora. Znaczne skrócenie czasu dostępu do pa
mięci można uzyskać włączając {Enable) opcję Memory Interleave.
Naciśnięcie klawisza Esc przenosi nas z powrotem do ekranu A.8. Możemy wybrać ko
lejny punkt programu, tzn. ADVANCED C&T 386 CHIPSET REGISTER SETUP.
Menu doboru
M em ory c o n f i g u r a t i o n
częstotliwości Bank E n a b le /D is a b le DRAM T y p e w a its ta te
PROCESSOR O S C IL L A T O R PROC C L O C K /3 5 C L K /2
Menu
B IT S 7 —0 Go t o P r e v /N e x t R e g is t e r - ti
konfiguracji 82C2Û6 01H -> 1 1 0 0 0 0 Û 0 Go t o P r e v /N e x t E n t r y
82C301 04H -> R R R 0 0 0 R R S c r o ll b it v a lu e p g u p /p g o n
układów Û5H -> Û 0 0 Û Û 1 0 1 R e tu rn t o m a in m enu <ESC>
06H -> 0 1 Û 1 0 1 0 0
wspomagaj ących 82C302 08H -> R R R Û 0 0 1 1
09H -> G 0 0 Û Û Û 0 1
procesor OAH -> 0 0 0 0 0 0 0 0 CLOCK AND W A IT STA TE CONTROL
ÛBH -> 0 0 0 0 0 0 0 0
OCH -> 0 0 0 0 0 0 Û 0 X IO R /X IO W W A IT S TA TE S
ÛDH -> 1 1 1 1 1 1 1 1 0 0 - 1 I / O W A IT STA TE
OEH -> 1 1 1 1 1 1 1 1 0 0 = 2 I / O W A IT STA TE
OFH -> 1 1 1 1 1 1 1 1 0 0 = 3 I / O W A IT STATE
1ÛH -> 1 0 0 0 0 0 0 Û 0 0 = 4 I / O W A IT STATE
11H -> 1 1 R R R R R R
12H -> 0 0 1 1 1 1 1 1
13H -> 1 1 R R R R R R
28H -> 0 R R R R R R R
2AH -> R R R R R R R 1
Wyszczególniony w programie Setup rejestr o indeksie Olh (rysunek A. 12) jest rejest
rem konfiguracyjnym (Configuration Register) tego układu. Jego opis podano poniżej.
Jeżeli przy ustawionym bicie 2 tego rejestru przekroczony zostanie określony czas
oczekiwania na sygnał READY pochodzący od układów pamięci, wyzwolone zostanie
również przerwanie NMI. Stan wydłużonego oczekiwania na sygnał READY może
w praktyce oznaczać jedynie uszkodzenie jednego z modułów pamięciowych.
bity 7-6 liczba cykli oczekiwania (Wait States, W/S) przy 32-bitowym
dostępie do pamięci:
00 = 0 W/S,
01 = 1 W/S,
10 = 2 W/S,
1 1 = 3 W/S;
bity 5-4 liczba cykli oczekiwania przy 16-bitowym dostępie do pamięci:
00 = 0 W/S,
01 = 1 W/S,
10 = 2 W/S,
1 1 = 3 W/S;
bity 3-2 liczba cykli oczekiwania przy 8-bitowym dostępie do pamięci:
00 = 2 W/S,
0 1 = 3 W/S,
10 = 4 W/S,
1 1 = 5 W/S;
bity 1—0 częstotliwość pracy magistrali zewnętrznej (Bus Clock, BCLK):
00 = CLK2IN/3,
01 = CLK2IN/2,
10 = CLK2IN,
11 = ATCLK.
• dwa rejestry typu banków (Bank Type Register) - indeksy lOh i 12h;
Rejestry typu banków (indeks 10h dla banku 0/1 i 12h dla banku 2/3)
Definiują one typ modułów pamięciowych, którymi obsadzone są dane banki. Znacze
nie pozycji bitowych obu rejestrów są identyczne.
Rejestry charakterystyk czasowych banków (indeks 11h dla banku 0/1 i 13h dla banku 2/3)
Definiują one charakterystykę czasową modułów pamięciowych, którymi obsadzone są
dane banki. Znaczenia pozycji bitowych obu rejestrów są identyczne.
Jedyny znaczący bit 0 rejestru sterującego o indeksie 2Ah steruje wyzwalaniem procesu
przeładowania systemu /ang. system boot). W normalnych warunkach bit ten musi zaw
sze być ustawiony.
Program Setup 669
Bity oznaczane na rysunku A. 12. jako "R" stanowią pozycje bądź zarezerwowane, bądź
z innych względów niedostępne. Program nie pozwala na ich modyfikację, nie umożli
wiając ich wybrania.
1 = SHADOW E N A B L E
0 = SHADOW D IS A B L E
amm
Powrót do menu nadrzędnego odbywa się po naciśnięciu klawisza Esc. W tym mo
mencie wprowadzone w powyższych punktach zmiany mogą być zapisane do pamięci
CMOS (poleceniem WRITE CMOS REGISTERS AND EXIT) lub też użytkownik
może opuścić program Setup nie dokonując żadnych zmian w konfiguracji (DO NOT
WRITE CMOS AND EXIT). W obu przypadkach następuje restart systemu.
Wybór częstotliwości pracy magistrali zewnętrznej odbywa się tutaj za pomocą zwór
konfiguracyjnych a nie programu Setup . Rozwiązanie to nie jest pozbawione sensu -
szeroka rozpiętość różnych dopuszczalnych częstotliwości taktujących procesor 80486
(25-50 MHz) w połączeniu z dużą skalą możliwych dzielników (1/3, 1/4, 1/5 i 1/6)
mogłaby w najbardziej niekorzystnej sytuacji (50:3-17 MHz), wynikłej z nieumiejętnej
obsługi, spowodować uszkodzenie układów peryferyjnych. Na ogół zakłada się, że oso
ba dokonująca przełączeń zwór konfiguracyjnych wie co robi, co nie zawsze można po
wiedzieć o użytkowniku działającym z poziomu klawiatury. System konfigurowany jest
przez producenta standardowo do pracy magistrali w trybie asynchronicznym z często
tliwością 7.2 MHz, co z jednej strony uniezależnia od możliwych zmian częstotliwości
taktujących różnych wersji CPU, a z drugiej gwarantuje poprawną obsługę wszystkich
typowych kart rozszerzających. Każda karta powinna pracować prawidłowo co najmniej
do częstotliwości magistrali 8.33 MHz. Dzielniki są tak dobrane, że zawsze możliwe
jest ustawienie prędkości nieco poniżej tej granicy.
Płyta posiada dwa banki pamięci o numerach 0 i 1, każdy mogący pomieścić 4 moduły
SIMM. Akceptowane są trzy powszechnie występujące wielkości modułów: 256 kB,
1 MB i 4 MB. Obowiązuje generalna zasada wypełniania w pierwszej kolejności banku
o najniższym numerze (tutaj 0) w całości, i to takimi samymi modułami.
Próba wejścia do jednej z pierwszych trzech opcji (STANDARD CMOS SETUP, AD
VANCED CMOS SETUP, ADVANCED CHIPSET SETUP) poprzedzana jest wyświet
leniem ostrzegawczego komunikatu pokazanego na rysunku A. 15.
ostrzegawczy
programu im p r o p e r u s e o f S e t u p may C a u s e P r o b le m s !!
Setup 486 if system H a n g s, Reboot system an d E n t e r setu p by P re s s in g <d e l > k e y
Można w tym celu nacisnąć klawisz F6 lub F7, ewentualnie wybrać odpowiadające im
opcje AUTO CONFIGURATION WITH BIOS DEFAULTS lub AUTO CONFIGU
RATION WITH POWER-ON DEFAULTS, które dostępne są na ekranie A. 14. Pierwsza
z tych opcji powoduje umieszczenie w CMOS-RAM wartości parametrów uznanych
przez producenta płyty za optymalne (nie zawsze są to wartości optymalne dla całego
systemu, na przykład liczba cykli oczekiwania zależy od czasu dostępu użytych ukła
dów pamięci oraz prędkości zastosowanych kart rozszerzenia). Wybranie drugiej opcji
672 Anatomia PC
6 7 8 9 [ l o f i î 12
13 14 15 16 19
\ 1 7 \ 1 8
Month Jan, F e b , . . . . Dec
D a te 01, 02, 0 3 ,. . 31 20 21 22 23 f n p r 26
Year 1901, 1 9 0 2 ,. .2 0 9 9
27 28 29 30 3
i i i 2
4 5 6 7 8 | 9 101
ESC : E x i t i - f :s e iect F 2 /F 3 :c o lo r P U /P D :M o d ify
Naciśnięcie klawisza Esc cofa nas do poprzedniego punktu (rysunku A. 14). Mamy teraz
możliwość utrwalenia w pamięci CMOS wprowadzonych danych i wyjścia z programu
Setup (klawisz F10) lub wyboru innych opcji. Powtórne naciśnięcie klawisza Esc powo
duje wyświetlenie pytania
Want to Quit Without Saving (Y/N) ?
Uwaga:
Komputer nie dysponuje jeszcze w tym momencie jeszcze żadnym programem obsługi
klawiatury. Klawisz Y odnosi się do klawiatury w układzie QWERTY. Inne odmiany
klawiatur, np. niemiecka, mają w tym miejscu klawisz Z i właśnie tego klawisza należy
użyć.
JL
E S C :E x it 1-1 sei (C t r 1 )P U /P D :M odi f y F l : H e lp F 2 /F 3 :C o lo r
£ F 5 :o ld v a lu e s f 6 : b io s s e tu p D e fa u lts F 7 :P o w e r on D e fa u lts
• Hard Disk Type 47 RAM Area - w zależności od ustawienia tej opcji tablica da
nych dysku twardego typu 47 {User Type) będzie umieszczana w obszarze
zmiennych BIOS {0:300) lub na szczycie pamięci operacyjnej {DOS 1 KB)\
• System Boot Up Sequence — Możliwe są dwa warianty: A :> C: lub C:f A:. Drugi
z nich skraca czas ładowania systemu, nie jest bowiem przeszukiwany powolny
napęd dyskietek. Opcja ta ma znaczenie głównie w systemach wyposażonych
w wymienne dyski twarde, gdzie system operacyjny może być ładowany z dysku
twardego lub dyskietki;
• Non Cache Block 0/1 - pozycje 11-12: opcja ta pozwala zatwierdzić określone
powyżej bloki nie podlegające działaniu pamięci podręcznej;
• System/Video BIOS is Cacheable - pozycje 13-14: opcje te umożliwiają (Ena
bled) wykorzystanie pamięci podręcznej w odniesieniu do BIOS-u systemowego
i BIOS-u sterownika graficznego. Obie opcje powinny być włączone (Enabled).
Naciśnięcie Esc przenosi nas z powrotem do menu głównego (rysunek A. 14.), z którego
możemy jeszcze wybrać opcję CHANGE PASSWORD, umożliwiającą zdefiniowanie
lub zmianę hasła broniącego dostępu do systemu. Zostaje wówczas wyświetlony ekran
pokazany na rysunku A. 19.
Hasłem może być ciąg maksymalnie sześciu znaków ASCII. System wymaga od użyt
kownika dwukrotnego podania tego samego hasła zanim je zaakceptuje. Jeżeli chcemy
zmienić hasło na nowe, należy najpierw podać na żądanie Enter CURRENT Password
hasło dotychczasowe, a następnie dwukrotnie (na polecenia Enter NEW Password i Re-
Enter NEW Password) nowe hasło. Podczas pierwszego wprowadzenia nowego hasła
na żądanie Enter CURRENT Password należy odpowiedzieć podaniem domyślnego
hasła „AM I”. W zależności od stanu opcji Password Checking Option (Setup/A Iways)
określonego w punkcie ADVANCED CMOS SETUP (rysunek A. 14.) podanie hasła
676 Anatomia PC
En ter New P a s s w o r d :
H ard D is c Type can be changed fro m standard cmos setup o p tio n in M a in Menu
H a rd D is k F o rm a t
A u to i n t e r l e a v e
M e d ia A n a ly s is
Setup Pentium
Program Setup komputera Pentium zostanie omówiony na przykładzie płyty JT-586SP6
wyposażonej w Award BIOS produkcji Award Software, Inc.
Na płycie głównej umieszczony jest procesor Pentium taktowany zegarem 100 MHz oraz
zewnętrzna pamięć podręczna (Second Level Cache), zrealizowana w oparciu o układy
statycznych pamięci RAM. First Level Cache oznacza 16 kB wewnętrznej pamięci pod
ręcznej, zawartej w układzie scalonym Pentium.
Płyta posiada trzy banki pamięci o numerach 0, 1 i 2, każdy z nich może pomieścić 2
moduły typu SIMM PS/2 (organizacja pamięci jest 64-bitowa, a nie jak w modelach 386
i 486 32-bitowa, ponieważ procesor Pentium jest 64-bitowy). Akceptowane są pow
szechnie występujące wielkości modułów. Obowiązuje generalna zasada wypełniania
w pierwszej kolejności banku o najniższym numerze (tutaj 0), w całości takimi samymi
modułami. Minimalna pamięć systemu wynosi 2x4 MB = 8 MB. Po wypełnieniu banku
0 można zacząć zapełniać bank 1, ale musi on również zostać zapełniony całkowicie
1 wyłącznie tym samym rodzajem modułów. Wymóg użycia jednakowych modułów
odnosi się do pojedynczych banków, ale nie do całości, tzn. bank 0 może mieć obsadę
2x4 MB, a bank 1 2x8 MB lub odwrotnie.
Płyta główna wyposażona jest w magistralę PCI i ISA, co umożliwia optymalne wyko
rzystanie możliwości procesora. Wybór częstotliwości pracy magistral dokonywany jest
z poziomu programu Setup .
S TA N D A R D CMOS S E T U P PASSWORD S E T T IN G 1
Pentium firm y
B IO S FEATURES SETUP ID E HDD A U TO D E T E C T IO N
A ward Software,
C H IP S E T FEATURES SETUP SAVE & E X IT SETUP
Inc
P O W ER M A M A G E M E N T SETUP E X IT W IT H O U T S A V IN G
PCI C O N F IG U R A T IO N SETUP
Esc : Q u it tJ — : S e le c t Ite m
E10 : Save and E x it s e tu p (s h ift) F2 : change c o lo r
T im e , D ate, H a rd D i s k Type...
konfiguracji
D a te (m m /d d /y y ): Thu, Jan 31 1994
systemu T im e (h h :m m :s s ): 15:23:15
Drive a 1 . 44M 3. 5 in
Dr i v e B None B a s e Memory: 64 OK
E x t e n d e d Memory: 7168K
v id e o EGA/VGA o t h e r Memory: 384K
H a lt on A ll E rro rs
T o ta l M em ory: 8192K
ESC Q u it II —
s e le c t ite m P U /P D /+ /- : M o d ify
F3 : T o g g le c a l e n d a r
FI H e lp (S h ift) F2 Change c o lo r
Naciśnięcie klawisza Esc cofa nas do poprzedniego punktu, znanego już z rysunku
A.21. Mamy teraz możliwość utrwalenia w pamięci CMOS wprowadzonych danych
i wyjścia z programu Setup (klawisz F10) lub wyboru innych opcji. Powtórne naciśnię
cie klawisza Esc powoduje wyświetlenie pytania:
Quit Without Saving (Y/N) ?
Uwaga:
Komputer nie dysponuje w tym momencie jeszcze żadnym programem obsługi klawia
tury. Klawisz Y odnosi się do klawiatury w układzie QWERTY. Inne odmiany klawia
tur, np. niemiecka, mają w tym miejscu klawisz Z i właśnie tego klawisza należy użyć.
esc : Q u it t J— ¡ S e le c t
FI : H e lp P U /P D /+ /“ : M o d ify
F5 : O ld v a lu e (s h ift)F 2 ¡ C o lo r
F6 : Load b io s D e fa u lts
F7 : Load s e t u p D e f a u l t s
• Boot Sequence - możliwe są dwa warianty —A:, C: lub C.\ A:. Drugi z nich skra
ca czas ładowania systemu, nie jest bowiem przeszukiwany powolny napęd dys
kietek. Opcja ta ma znaczenie głównie w systemach wyposażonych w wymienne
dyski twarde gdzie system operacyjny może być ładowany z dysku twardego lub
dyskietki;
• Swap Floppy Drive - opcja ta umożliwia zmianę kolejności napędów dyskietek,
bez zmiany kolejności podłączenia napędów do taśmy informacyjnej. W normal
nych warunkach opcja ta powinna być wyłączona {Disabled)',
• Boot Up Floppy Seek - ustawienie wartości Disabled powoduje zaniechanie prób
uruchamiania napędów dysków elastycznych (charakterystyczne zapalenie lam
pki kontrolnej napędu, uruchomienie silnika i przejazd głowic) przez procedury
diagnostyczne POST. Jest więc możliwe uruchamianie komputera z dowolną
dyskietką włożoną do napędu. Opcja ma na celu ochronę mechaniki i głowic na
pędów przed uszkodzeniem;
680 Anatomia PC
Wyboru wartości oferowanych w ramach każdej z opcji dokonuje się za pomocą klawi
szy PgUp i PgDn. Klawisz funkcyjny F5 {Old Value) powoduje przywrócenie paramet
rów konfiguracyjnych, które obowiązywały w momencie wejścia do programu Setup .
Klawisze F6 i F7 pozwalają na załadowanie zestawów parametrów standardowych,
które mogą być przydatne w próbach wyeliminowania przyczyn tajemniczego zachowy
wania się (czytaj: niesprawności) systemu. Naciśnięcie klawisza Esc cofa nas do ekranu
pokazanego już na rysunku A.21.
Rysunek A.24. przedstawia ekran menu CHIPSET FEATURES SETUP. Każda z po
zycji menu dysponuje krótkim tekstem pomocy, wyświetlanym po naciśnięciu klawisza
FI.
Opcje dla pamięci RAM (DRAM) i Cache (SRAM) - pozycje 2-3 i 6-10.
Proponowane są następujące wartości parametrów:
Opcje External Cache WB/WT i Internal Cache WB/WT określają sposób zapisu
danych do pamięci cache;
Naciśnięcie Esc przenosi nas z powrotem do menu głównego (rysunek A.21.), z którego
możemy wybrać opcję POWER MANAGEMENT SETUP, umożliwiającą kontrolę nad
systemem oszczędzania energii, który jest obecnie implementowany w większości
komputerów. Umożliwia on zmniejszenie poboru mocy poprzez wyłączenie nieaktyw
nych układów.
ESC Q u it tl — S e le c t
Fl H e !p P U /P D /+ /- M o d ify y
F5 o ld v a lu e (s h ift)F 2 c o lo r
F6 L o a d B IO S D e f a u l t s
F7 Load s e tu p D e fa u lts
• Video OFF Method - określa w jaki sposób BIOS ma dezaktywować kartę gra
ficzną (wyświetlanie pustego ekranu, wyłączenie sygnałów synchronizacji pio
nowej i poziomej);
• Doze, Stand by Speed (div by) - kolejne dwie opcje określają ilokrotnie ma
zostać zmniejszona częstotliwość zegara systemowego (CPUCLK) w trybach
oszczędzania energii;
• HDD Power Down — opcja ta umożliwia określenie czasu, po którym może
zostać wyłączony dysk twardy, jeżeli nie jest wykorzystywany;
• Doze, Stand by, Suspend Mode - trzy kolejne opcje umożliwiają określenie
czasów, po których zostaną włączone kolejne tryby oszczędzania energii;
Naciśnięcie Esc przenosi nas z powrotem do menu głównego (rysunek A.21.), z którego
możemy wybrać opcję PCI CONFIGURATION SETUP, umożliwiającą konfigurację
urządzeń podłączonych do magistrali PCI.
konfiguracji s lo t 1 u s in g IN T # :a u t o
s lo t 2 u s in g in t # :a u t o
urządzeń PCI S lo t 3 U s in g IN T # :auto
S lo t 4 U s in g IN T # :auto
1st A v a i l a b l e IR Q 9
2nd A v a i l a b l e IR Q 10
3rd A v a i l a b l e IR Q 11
4 th A v a i l a b l e IR Q 12
PCI IR Q A c t i v e d B y Edge
PCI I D E I R Q Map TO P C I-A U T O
P r im a r y ID E IN T # A
S e c o n d a ry ID E in t # B
Q u it t l — s e le c t
H e lp P U /P D /+ /- M o d ify
o ld v a lu e (s n ift)F 2 c o lo r
Load B io s D e fa u lt s
Load s e tu p D e fa u lts
Naciśnięcie Esc przenosi nas z powrotem do menu głównego (rysunek A.21.), z którego
możemy wybrać opcję PASSWORD SETTING umożliwiającą zablokowanie hasłem
dostępu do komputera.
Hasłem może być ciąg maksymalnie sześciu znaków ASCII. System wymaga od użyt
kownika dwukrotnego podania tego samego hasła, zanim je zaakceptuje. Jeżeli pragnie
my zmienić hasło na nowe, należy najpierw podać na żądanie hasło dotychczasowe,
a następnie dwukrotnie nowe hasło. W zależności od stanu opcji Security Option {Setup/
Always) określonego w punkcie BIOS FEATURES SETUP (rysunek A.23) podanie
hasła wymagane będzie od użytkownika przed wejściem do programu Setup lub/i przed
załadowaniem systemu. Powrót do głównego menu (rysunek A.21.) następuje po na
ciśnięciu klawisza Esc.
Opisane tutaj programy Setup są co prawda reprezentatywne dla ich wytwórców, nie
oznacza to jednak, że wszystkie są jednakowe. Zwykle różne wersje programu Setup nie
posiadają wszystkich możliwości opisanych powyżej. Niekiedy, pomimo istnienia pew
nych opcji, dla danej płyty niemożliwe jest ich ustawienie lub zmiana ich nie powoduje
widocznych efektów, gdyż w rzeczywistości podczas startu komputera jest ona ustalana
przez BIOS niezależnie od ustawienia odpowiedniej opcji programu Setup.
Współpraca z magistralą zewnętrzną 685
Iv..
li-
Dodatek
Współpraca z magistralą
zewnętrzną
Elementarne zasady współpracy układów dodatkowych z magistralą zewnętrzną zobra
zowane zostaną na przykładzie prostej karty rozszerzającej. Schemat układu przed
stawiony jest na rysunku B .l. Jest to podstawowy zestaw elementów niezbędnych do
realizacji 8-bitowego portu jednokierunkowego.
Opis działania
Aby zapisać bajt do portu umieszczonego w przestrzeni adresowej wejścia-wyjścia
(realizacja instrukcji o u t p o r t, al ) system wykonuje następujące czynności:
Rysunek B. 1. 74574
V cc
CS
11
V cc
74245 20 ? 74688
¡22 2 18
A9 Al B1 PO Q 0
A8 1 23 3 17 4|
A 2 B2 P1 Q1
A7 124 4 |16 el
A 3 B3 P2 0 2
A6 1 25 5| |15 8|
A 4 B4 P3 0 3
A5 126 ®1 114 11I
A 5 B5 P4 0 4
A4 | 27 7| 13 13I
A 6 B6 P5 0 5
A3 128 ®1 12 15I
A 7 B7 P6 0 6
A2 129 »1 11 17I
A 8 B8 P7 0 7
DIR CS C P=Q
'A «L 19 7400
A L E 128 VCC ? T
V cc
74245 20 ? 7485
A1 30 2 18 10
A1 B1
AO 31 al A 2 B2
17 12l
IO W
CO
£
1 13 4 A 3 B3
A 4 B4
I15 15I
<< ei 114 ±
A 5 B5
7l
A6 B6
113 2
i<0iW 8l A 7 B7
112 3
fi
9l 4
.
A 8 BS
<> _L
£ (f) DIR C S
1 A 1 9 j_ 10|_
VCC " s
Proszę zwrócić uwagę, że jakkolwiek w systemie może być wiele portów o tym samym
adresie, to fakt ten ma praktyczne znaczenie jedynie w celach diagnostycznych. W szcze
gólności, karta eksperymentalna może mieć adres zgodny z obecnym już w systemie
Współpraca z magistralą zewnętrzną 687
Powyższy układ daje się łatwo obsługiwać np. z poziomu systemu MS-DOS za pomocą
programu D E B U G .C O M . Jeżeli przyjmiemy, że adres karty ustawiony jest na 300h, to
przykładowa sekwencja:
debug
-o 300 ff
-q
spowoduje zapalenie wszystkich ośmiu diod świecących i powrót do systemu operacyj
nego.
A0-A9 (Address)
10 najmniej znaczących linii szyny adresowej pozwala na objęcie przestrzeni 000h-
3FFh. Wyższe adresy urządzeń wejścia-wyjścia nie są wystawiane na magistrali zew
nętrznej PC, tym niemniej można uzyskać do nich dostęp adresując układy karty jako
pamięć. Wymaga to jednak zachowania znacznej ostrożności.
+5V/GND
Napięcie zasilające (Vcc) i masa systemowa.
CS DIR Funkcja
1 X A = Z, B - Z
0 0 bufor B -» A
0 1 bufor A —>B
X - oznacza dowolny stan logiczny.
Współpraca z magistralą zewnętrzną 689
• LI - L2,
• LI > L2,
• L 1<L 2,
czemu daje wyraz stan wyjść P < Q, P - Q i P > Q.
Y Wyjście
0 0 1
0 1 1
1 0 1
1 1 0
i
690 Anatomia PC
•l
CD-ROM dołączony do książki 691
• EZ Macros 1.1
• Hex Workshop v2.20
• InfoSys vl.O
• K/oS X-Setup 2.0
• K/oS Zoomer 2.0
• Memory Watcher
• MSDOS.SYS Editor vl.O
• Multiple Arcade Machine Emulator v0.31
• NBench 2.41
• PC-Sweep v3.86
• PCI Configuration Monitor v 1.1
• Print Screen Deluxe 4.0
• Registry Search + Replace v2.10
• Resour32 v2.7
• Space Chart
• ShutDownNOW! v3.31
• TransMacv2.1
• WinDAC32 vl.33
• WinHacker95 v2.0
• WinXs v3.0
• WPrinter 1.5
• WinZip 6.3
• Programy pracujące w środowisku Windows NT
• 4NT v3.01
• 6x86 configuration, v2.1
• ComSpyNT w/ModemWatchNT SE for Windows NT 4.0
• ExeSpyNT w/ProcessExplorerNT SE for Windows NT 4.0
• FAT32 for Windows NT
• ODBCSpyNT for Windows NT 4.0
• Registry Mon itorNT for Windows NT 4.0
• SetupMonitorNT for Windows NT 4.0
• Service Monitor v3.02
• Tardis v3.0
• Turbo for Windows NT
Krótkie charakterystyki tych programów można znaleźć w plikach info.txt () oraz w pro
gramie inctalacyjnym CD-ROM-u.
CD-ROM dołączony do książki 695
w licencji) bez uiszczania żadnych opłat. Po tym okresie należy program zarejestrować j i