Download as pdf or txt
Download as pdf or txt
You are on page 1of 694

Kolejne wydanie znanej książki będącej całościowym omówieniem architektury komputerów

zgodnych z IBM PC.

W książce omówiono: elementy płyty głównej - procesor, układy wieloprocesorowe, magistralę


systemową; układy obsługi przerwań - układy bezpośredniego dostępu do pamięci, układy
czasowe; pamięci masowe - sterowniki i napędy dysków twardych i elastycznych, techniki zapisu;
komunikację z urządzeniami peryferyjnymi - interfejs równoległy i szeregowy; urządzenia
wejścia - klawiaturę, myszkę, joystick oraz ich obsługę programowania; konfigurację systemu -
program setup. Wydanie czwarte uzupełniono o omówienie złącza AGP.

Projekt okładki: Maciej Pasek, „ARTGRAF”

Copyright © HELION 1998

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.

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu


niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą
kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym
lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

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

Jak rozpoznać typ procesora................................................................................. 80


Czy procesor jest zgodny z układem 80286 lub lepszym........................... 81
Procesor 8086/88 czy 80186/88................. 82
Procesor 80286..................................................................................................82
Procesor 80386................................................ 82
Procesor 486 czy Pentium............................................................................... 82
Koprocesory ................ 83
Koprocesor 8087 .............................................................................................. 84
Koprocesor 80287............................................................................................ 84
Koprocesor 80387............................................................................................ 85
Koprocesor i487SX .......................................................................................... 86
Jak rozpoznać typ koprocesora............................................................................. 86
Czy w systemie jest koprocesor..................................................................... 87
Koprocesor 8 0 8 7 ...............................................................................................87
Koprocesor 80287 czy 80387..........................................................................87
Architektura komputera PC/XT.................................................................................. 88
Dostęp do przestrzeni wejścia-wyjścia................................................................88
Procesory 8086 i 8088 ........................................................................................... 90
Procesor 8086.................................................................................................... 90
Procesor 8088.................................................................................................... 93
Kontroler 8288........................................................................................................ 93
Elementy składowe architektury komputera XT................................................ 95
Ośmiobitowa magistrala zewnętrzna................................................................... 98
Architektura komputera AT....................................................................................... 101
Procesor 80286.......................................................................................................104
Magistrala zewnętrzna (16-bitowa).....................................................................105
Architektura komputerów 386, 486 i Pentium...................................................... 108
EISA (Extended Industry Standard Architecture)........................................... 110
Wieloprocesorowość...................................................................................... 110
Magistrala zewnętrzna.................................................................................... 110
Kontroler D M A ........................................................................................ . 111
Kontroler przerwań sprzętowych................................................................. 111
Kontroler magistral........................................................................................ 111
Pamięć konfiguracji.........................................................................................112
MCA (Micro Channel Architecture)...................................................................112
VESA Local Bus....................................................................................................114
Magistrala PCI (Peripherial Component Interconnect)................................... 116
Magistrala zewnętrzna.................................................................................... 128
Kontroler przerwań sprzętowych ...........................................................128
Pamięć konfiguracyjna urządzeń P C I..........................................................131
Mechanizmy dostępu do pamięci konfiguracyjnej.....................................145
Autokonfiguracja urządzeń PCI....................................................................147
Magistrala A G P ................... 147
Sygnały magistrali AGP.................................................................................153
AGP w teorii.....................................................................................................157
AGP w praktyce................................................................... .........................164
Spis treści 5

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

Dostęp do tekstur................... 493


Przykłady rozwiązań akceleratorów 3 D ......................................................494
Interfejs programisty ................................................................................497
Prezentacje video.............................................................. 499
Format MPEG....................................................................................................... 499
Dekodowanie................................................................................................... 501
Kodowanie...................................................................................................... 503
Właściwa karta graficzna do właściwych zastosowań...........................................505
Pamięć karty graficznej................. 506
Organizacja pamięci.......................................................................................507
Rodzaje stosowanych pamięci............................................... 509
> Przegląd powszechnie stosowanych układów sterowników.......................... 512
Dopasowanie karty do monitora................................... 520
Ile pamięci potrzeba naprawdę..................................................................... 521
RAM DAC........................................................................................................523
Jakość monitora...............................................................................................525
Programy instalacyjne ..... 526
Kanał informacyjny VESA D D C ................................................................. 527

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

Każda z opisanych w tym rozdziale konfiguracji sprzętowych posiada centralny ośrodek


zarządzania, którym jest procesor. Najnowsze osiągnięcia w technologii produkcji
układów scalonych pozwalają na realizację coraz to potężniejszych mikroprocesorów.
Jednak bez względu na szerokość ich magistral, częstotliwość pracy czy wielkość
zintegrowanej w układzie pamięci, pierwotna zasada działania pozostaje —przynajmniej
na razie - bez większych zmian.

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.

Konstrukcja komputera PC podlega również stałej ewolucji, wymuszanej głównie przez


wymagania nakładane ze strony współczesnego oprogramowania. „Pamięciożeme” apli­
kacje i rozszerzenia multimedialne są w stanie zniwelować każdą sprzętową inwestycję.
14 Anatomia PC

Rynek przyjmuje z wdzięcznością nowe opracowania procesorów gdyż częsty brak


kompatybilności z poprzednimi modelami zmusza do wymiany płyt głównych i stanowi
dźwignię napędową do nowych zakupów.

Niezależnie od częstotliwości taktującej i charakterystycznych dla danej firmy rozwiązań


indywidualnych każdy mikroprocesor da się przedstawić jako zespół współpracujących
ze sobą bloków funkcjonalnych (rysunek 1.1).

Rysunek 1.1
Schemat blokowy
procesora
Adres

Dane
BU

Sygnały
kontrolne
i sterujące
< ►

Architektura komputera PC zakłada bardzo silną więź mikroprocesora z pamięcią ope­


racyjną. W niej to bowiem przechowywane są dane i rozkazy, tam też odsyła się wyniki
obliczeń. Za współpracę z pamięcią odpowiada wyizolowany blok komunikacyjny (BU
—Bus Unit). Połączenie realizowane jest zwykle w formie dwóch odseparowanych od
siebie magistral: oddzielnie dla danych (w tym kodu) i adresów. Zarządzanie ruchem na
magistralach gwarantują dodatkowe sygnały sterujące.

Konieczność zapewnienia płynnego funkcjonowania procesora wymaga, by dane do


wykonania (kod programowy) pobierane były w większych porcjach i gromadzone
w kolejce, gdzie oczekują na wykonanie. Każdy ze spoczywających tu bajtów stanowi
pewną zakodowaną informację o koniecznych do wykonania operacjach. Odtworzenie
tej informacji odbywa się w bloku dekodera (IU - Instruction Unit). Praca tego układu
wspomagana jest często przez obszerną podręczną pamięć stałą (ROM), w której zawarty
jest słownik tłumaczący przyjmowane kody rozkazowe na sekwencje ukrywających się
pod nimi operacji.

Rozkodowane instrukcje przekazywane są do właściwego układu wykonawczego (EU -


Execution Unit), gdzie realizowana jest operacja określona danym kodem rozkazowym.
Znaczna część powszechnie używanego kodu pracuje na liczbach stałoprzecinkowych
Komunikacja procesora z innymi elementami architektury komputera 15

{Integer) i podlega obróbce w module ALU (Arithmetic-Logic Unit) sterowanego z bloku


CU {Control Unit). Jeśli jednak rozkaz dotyczył obiektów zmiennoprzecinkowych jego
realizacja w stałoprzecinkowych układach logicznych zajęłaby zbyt wiele czasu. W takim
wypadku przekazuje się go do wyspecjalizowanej jednostki zmiennoprzecinkowej (FPU
—Floating Point Unit).

Rozkazy posługują się zwykle pewnymi argumentami (parametry funkcji, na przykład


składniki przy dodawaniu), które również trzeba pobrać z pamięci operacyjnej. Często
wymaga się, by wynik operacji przesłać pod określony adres. Obsługę tego rodzaju
życzeń bierze na siebie jednostka adresowania (AU - Addressing Unit). Względy natury
technicznej (stronicowanie i segmentacja) powodują, iż dostęp do pamięci operacyjnej
wymaga pewnych dodatkowych nakładów, których realizacji poświęca się jednostkę
zarządzania pamięcią (MMU - Memory Management Unit).

Rozwinięcie przedstawionego powyżej ogólnego schematu blokowego do postaci bar­


dziej szczegółowej nastąpi przy okazji omawiania różnic w konkretnych modelach pro­
cesorów.

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

czasu na tłumaczenie rozkazu. Rozpisanie algorytmu wykonywanego programu, który


przecież składał się z operacji dużo bardziej skomplikowanych niż przepisanie z rejestru
do rejestru, należało do obowiązków kompilatora. Warto zwrócić uwagę, że system taki
wyzwala ogromne obciążenie magistrali pamięciowej - kod przetłumaczony przez kom­
pilator znajduje się przecież w pamięci operacyjnej i każdy z elementarnych „klocków”
musi zostać pobrany przez procesor. Prędkość przetwarzania jest bardzo duża i taka
musi też być przepustowość magistrali. Problem ten rozwiązuje się współcześnie przez
zastosowanie szybkich pamięci podręcznych (LI i L2). Spore uproszczenie konstrukcji
typu RISC zawdzięcza się stałej długości wszystkich mi kro rozkazów. Istnieją jednak
projekty procesorów (na przykład „Thumb” firmy ARM) dopuszczające zmienną długość
instrukcji.

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.

Jakkolwiek oba pojęcia definiowały początkowo kategorie przeciwstawne, to obecnie


coraz trudniej jednoznacznie przypisać dany procesor do jednej nich. Ostry podział na
RISC i CISC ma coraz mniejszy sens. Można co najwyżej mówić o pewnych cechach
architektury a i to wyłącznie w odniesieniu do fragmentów określonej konstrukcji. Kla­
syczny przykład stanowią procesory K6 i Pentium Pro. Chociaż same zaliczają się do
grupy CISC (akceptują przecież na swym wejściu złożone instrukcje x86), wyposażone
są w dekoder tłumaczący na wewnętrzny kod mikroprocesora a więc ich jądro pracuje
w trybie RISC (RISC Kernel). Uznawany za członka rodziny RISC procesor PowerPC
601 może z kolei poszczycić się chyba zbyt nadmierną jak na „zredukowaną” (R -
Reduced) liczbą rozkazów: samych rozgałęzień można naliczyć ponad 150. Łatwiejsze
do sklasyfikowania są typy Pentium oraz M l (podobnie jak ich mutacje z rozszerze­
niami MMX) przetwarzające dostarczany kod w sposób bezpośredni {Native Code).

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.

Przeniesienie powyższej idei na grunt architektury mikroprocesorów odbyło się po raz


pierwszy w roku 1960 podczas prac nad projektem IBM procesora klasy Mainframe
typu 7030; mikroprocesory dołączyły dopiero w 20 lat później. Charakterystyczny jest
Komunikacja procesora z innymi elementami architektury komputera 17

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•

Rozkaz Rozkaz Rozkaz Rozkaz


glsSft+JiiV. “ i Wynik (n-4)
O .v .v .v m w .w -¡"O ? v c * i» S w y>

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

(n+2) (n+1) (n-1) (n-2)

Rozkaz Rozkaz Rozkaz Rozkaz


>* Wynik (n-1)
O (n+3) (n+2) (n+1) ■ ¡■ aa (n-1)

Rozkaz Rozkaz Rozkaz Rozkaz


tn Wynik (n)
(n+4) (n+3) (n+2) (n+1)


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.

Połączenia pomiędzy poszczególnymi stacjami mogą być elastyczne, co pozwala na


zmniejszenie dyscypliny całej taśmy. Czas przebywania rozkazu w poszczególnych
stopniach zależy często od czynników zewnętrznych i ścisłe przestrzeganie reżimu
czasowego nie zawsze jest możliwe. W punktach krytycznych montowane są więc małe
magazyny pośrednie (bufory) nazywane też kolejkami (Queue).

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.

Dla zanalizowania powyższej zależności przeprowadzone zostały różnorodne badania


symulacyjne. Wyniki testów wykazują, iż istnieje wartość optymalna głębokości leżąca
w okolicy liczby 8. Taki też wymiar mają potoki przetwarzające większości procesorów
(tabela 1.1).

Tabela 1.1.
Liczba stopni w potokach współczesnych procesorów

CPU P54C P55C P-Pro P-Il Ml M2 K5 K6



Liczba stopni w potoku 5 6/8 12 12/14* 1 1 1 6
Druga z podanych wartości obowiązuje dla instrukcji MMX

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.

Faza pierwsza: pobranie (Prefetch, PF)


Zakładamy obecność kodu w kolejce rozkazowej procesora. Zapełniane tej kolejki
odbywa się poprzez sięganie do pamięci podręcznej LI. Jeśli rozkaz znajduje się w pa­
mięci operacyjnej uruchamiana jest procedura zapełniania linijki pamięci podręcznej
LI, z ewentualnym uwzględnieniem pośredniej pamięci L2.

Faza druga: dekodowanie (Decode, DE)


W pierwszej części tej fazy analizowany jest kod operacyjny instrukcji i jeśli to ko­
nieczne separuje się przedrostki i argumenty. W drugiej części oblicza się adres efek­
tywny argumentów (jeśli takowe występują).
Komunikacja procesora z innymi elementami architektury komputera 19

Faza trzecia: wykonanie (Execute, EX)


W fazie tej następuje fizyczny dostęp do pamięci w celu pobrania ewentualnych argu­
mentów rozkazu oraz operacje na argumentach określane kodem instrukcji.

Faza czwarta: zakończenie i zapisanie wyników (Write Back, WB)2


Wynik operacji wykonanej w fazie EX umieszczany jest w miejscu określonym w kodzie
rozkazowym (rejestry lub pamięć). Na zakończenie przywracany jest stan początkowy
wewnętrznych (niewidocznych dla użytkownika i programisty) układów procesora oraz
ustawiane są bity sygnalizujące pewne stany charakterystyczne dla zakończonej właśnie
operacji (znaczniki, słowa stanu itp.).

Przyjrzyjmy się bliżej poszczególnym etapom przetwarzania następującego rozkazu:


add ax, [bx] ; dodaj zawartość rejestru AX do zawartości komórki,
; której adres znajdziesz w BX, wynik prześlij do AX

• Faza PF - pobranie kodu instrukcji.

• Faza DE - określenie czynności do wykonania, obliczenie adresu efektywnego


dla drugiego argumentu (16xDS)+BX

• Faza EX - dostęp do komórki pamięci o adresie (16xDS)+BX, operacja doda­


wania do AX,
• Faza WB - umieszczenie wyniku w AX, ustawienie flag.

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­

" Literatura angielskojęzyczna używa też często terminu Retire (spoczynek).


20 Anatomia PC

konania naszpikowany jest wzajemnymi uzależnieniami i pełen punktów rozgałęzień.


Ponadto pracujące równolegle taśmy produkcyjne procesora (potoki) nie stanowią nie­
zależnych obiektów, korzystają bowiem z wielu wspólnych elementów architektury
(choćby rejestrów). Te i inne ograniczenia powodują, iż dołożenie więcej niż jednego
potoku nie wpływa już w istotnej mierze na wzrost wydajności. Zwielokrotniona (przy­
najmniej teoretycznie) moc obliczeniowa procesora konsumowana jest w większości
przez wewnętrzny system komunikacji międzypotokowej.

Zdecydowana większość dominujących obecnie na rynku procesorów posiada więc dwa


równoległe kanały przetwarzające dane typu Integer (określane zwykle symbolami U i
V). Jednostka zmiennoprzecinkowa (FPU - Floating Point Unit) została już stosunkowo
dawno (w czasach 8087) wydzielona z właściwej struktury logicznej i ma swoje własne
życie wewnętrzne. Można śmiało powiedzieć, iż stanowi ona trzeci równoległy potok.

Z napływającego do procesora strumienia rozkazów odławiane są te, które operują na


danych zmiennoprzecinkowych i kierowane do właściwego im potoku. Reszta kodu
podlega przetwarzaniu w sekcji Integer. To, który z rozkazów nich ląduje w ciągu U,
a który w ciągu V stanowi wynik pracy układu rozdzielacza. Istniejące reguły rozdziału
wynikają głównie z drobnych różnic w budowie wewnętrznej U i V oraz z wymogów
synchronizacji potoków. Możliwość niezależnego (asynchronicznego) doprowadzania
do końca instrukcji równocześnie zapoczątkowanych w dwóch potokach (Out o f Order
Completion) nie jest bowiem cechą każdego procesora. Warunki takie ma na przykład
M2 Cyrixa, natomiast architektura Intel-MMX wymaga synchronicznej pracy obu linii.
Jeśli jest to niemożliwe (na przykład oczekiwanie na wyniki pośrednie) drugi potok
zostaje zatrzymany.

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.

Przykładowy ciąg instrukcja asemblera:


mov bx, ax ; -> do potoku U
add ax, cx ; -> do potoku V

prowadzi do powstania uzależnienia od rejestru AX. Przepisanie stanu CX do AX


w drugiej z podanej pary instrukcji nie może być przeprowadzone wcześniej niż zakoń­
czenie realizacji odczytu AX w pierwszej instrukcji pary. Opisana sytuacja stanowi
przykład uzależnienia typu WAR ( Write After R ead—najpierw odczyt, później zapis).
Komunikacja procesora z innymi elementami architektury komputera 21

Rysunek 1.3. '15 bg by >.■b,


Zestaw rejestrów
Akumulator (AX)
procesora b|j ... b8 by ... b|
Rejestr bazowy (BX)

Rejestr licznika (CX) Segment danych


Rejestr danych (DX) Segment kodu

Segment stosu
Wskaźnik stosu
Segment dodatkowy
Wskaźnik bazowy

Indeksowanie źródła Zestaw znaczników


Indeksowanie celu Wskaźnik instrukcji

Dwie następujące kolejno po sobie instrukcje dostępu do rejestru mogą w zależności od


trybu dostępu (zapis/odczyt) prowadzić do czterech stanów zebranych w tabeli 1.2.

Tabela 1.2:
Sekwencje rozkazów , których nie można parować

Typ zależności RAR RAW RAW WAR WAW


(Read (Read (Read After (Write (Write After
After Read) After Write) Write) After Read) Write)
Przykład add bx, ax add ax, bx mov ax, bx mov bx, ax mov ax, [mem]
mov cx, ax mov cx, ax mov [mem], ax add ax, cx add ax, bx

Rozwiązanie Dual Pipe Result Operand Register Register


Access Forwarding Forwarding Renaming Renaming

Pierwsza kolumna symbolizuje dwa następujące po sobie (w kodzie programu) a jedno­


cześnie występujące (w przypadku rozesłania do potoków U i V) cykle odczytu za­
wartości rejestru AX. Nie mamy to do czynienia z hazardem danych a uzależnienie tego
typu jest stosunkowo łatwe do usunięcia poprzez wbudowanie podwójnych portów
odczytu dla rejestrów. Dzięki takiemu usprawnieniu stan każdego z rejestrów może być
pobierany niezależnie i jednocześnie przez U i V.

istotne problemy wywołują sekwencje rozkazów w dalszych kolumnach. Dwie ostatnie


prezentują sytuacje powstałą w wyniku próby jednoczesnego zapisu rejestru genero­
wane przez potoki U i V. Prostym sposobem wyjścia z tej opresji jest tymczasowe pod­
stawienie dodatkowego rejestru pomocniczego (rysunek 1.4), tak by nie zamazywać
wartości zapisanej jako wcześniejsza. Technika ta nazywa się przemianowywaniem
rejestrów (Register Renaming).

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

układ sterowania dokonuje szybkiego podstawienia:


AX *> RegO
BX ^ Regi
CX ^ Reg2

Jeśli teraz dokonać przemianowania


AX ^ Reg3
to można bez trudu wykonać równolegle operacje:
Regi := RegO || Reg3 := Reg2 + RegO

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

CPU P54C P55C P-Pro M l, M2 K5 K6


Liczba przemianowanych rejestrów 8+0 8+0 8 + 32 8 + 24 8+ 8 8 + 40
Komunikacja procesora z innymi elementami architektury komputera 23

Trudności innego typu występują w sytuacjach przedstawionych symbolicznie jako za­


leżności RAW. Nie ma tutaj kolizji przy zapisie do rejestru lecz pojawia się koniecz­
ność oczekiwania na wynik wcześniejszej operacji (obliczenia lub przesłania). Aby tego
uniknąć, potok potencjalnie narażony na stratę czasu sam przeprowadza równolegle tą
samą operację. Jeśli jest to obliczenie, technika nazywana jest Result Forwarding , a jeśli
przesłanie mówimy o Operand Forwarding.

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.

Dodatkowe opóźnienia mogą również powstawać w systemach pobierania rozkazów,


a zwłaszcza w procesorach z jądrem RISC. Dekodery tych procesorów rozkładające
instrukcje x86 na drobne mikrooperacje też muszą pracować z dużą wydajnością. Ocze­
kują więc nieprzerwanego dopływu przetwarzanego materiału od układów współpracy
z pamięcią podręczną i magistralami. Od systemu pobierania kolejnych instrukcji x86,
czy to z przeznaczeniem na rozkład na mikrokroki (RISC) czy też do bezpośredniego
przetworzenia wymaga się więc również orientacji w zamiarach programu.

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).

3 Dla K6 wynosi 1 - 4 cykle zegarowe, M2 karany jest 5 cyklami natomiast Pentium-Pro ze


względu na długość potoku musi czekać aż 15 cykli.
24 Anatomia PC

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).

Współczesne procesory korzystają w większości z techniki przepowiadania biegu pro­


gramu a stopień komplikacji stosowanych systemów odpowiada z grubsza uzyskiwa­
nym wynikom. Podstawową strukturą informacyjną tych układów jest tablica BTB
{Branch Target Buffer) - rysunek 1.5. Jest to szybka podręczna pamięć asocjacyjna
grupująca zwykle 128 - 1024 rekordów. Każdy z wierszy zawiera w sobie informacje
o jednym z punktów rozgałęzienia programu. BTB w najprostszej formie to zestaw ad­
resów instrukcji skoków i adresów tych skoków. Dodatkowo zapamiętywany jest status
danej linijki (V: Valid) oraz omawiane poniżej bity opisujące zachowanie się instrukcji
(H I, H2 : History Bits).

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

W tablicy umieszczane są tylko te instrukcje (w miarę dostępnego w buforze miejsca),


które już się wykonały, innymi słowy takie, których zachowanie zostało zaobserwowane
i udokumentowane. Średnia ilość trafnych przepowiedni pozostaje w ścisłym związku
z rozmiarami tablicy BTB. Statystyczna analiza typowych programów prowadzi do wy­
znaczenia następujących współczynników:

4 Idea wcielona w życie w niektórych modelach procesorów IBM (na przykład 3033).
Komunikacja procesora z innymi elementami architektury komputera 25
. .

Rozmiar BTB 16 32 64 128 256 512 1024 2048


Średnia ilość trafnych
40 50 65 72 78 80 85 87
przepowiedni [%]

System nadzorujący pobieranie kolejnych bajtów rozkazowych może więc w wypadku


napotkania rozgałęzienia zwrócić się do tabeli BTB z zapytaniem o przewidywany dal­
szy bieg programu. Wiarygodność uzyskanej odpowiedzi zależy oczywiście nie tylko
od samych rozmiarów tabeli. Choć istnieje wiele ciekawych sposobów podejścia do
tego zagadnienia tylko kilka z nich znalazło praktyczne zastosowanie. We wszystkich
przypadkach instrukcje rozgałęzień opatruje się dodatkową sygnaturą, zwykle nie
dłuższą od 2 bitów. W nich to próbuje się zawrzeć, w mniej lub bardziej udany sposób
„charakter i osobowość” danego rozgałęzienia. Stosowane algorytmy przepowiadania
różnią się miedzy sobą w sposobie wykorzystania tej niezmiernie ograniczonej porcji
informacji.

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.

Bardziej rozbudowana logika wkomponowana jest w układy dwubitowe.

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

Punktem wyjściowym algorytmu jest przyjęcie założenia, że wszystkie po raz pierwszy


napotkane rozgałęzienia nie prowadzą do skoków. Opatruje się je sygnaturą „00” i przy­
stępuje do wykonywania programu. Pierwsze przejście przez dane rozwidlenie zgodnie
26 Anatomia PC

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.

Procesory 16-bitowe pierwszej generacji (począwszy na modelu 8088 a skończywszy


na układzie 80186) miały 20 końcówek adresowych. Architektura logiczna wyznaczała
podział pamięci na 64 kB segmenty. Mechanizm adresowania składał się z dwóch
rejestrów 16-bitowych: jeden określał początek segmentu (Segment) a drugi odległość
punktu od tego początku (Offset). Para rejestrów Segment i Offset wyznaczała tzw.
adres logiczny. Konieczność dopasowania tej logicznej struktury (16+16) do wymiaru
20-bitowej magistrali adresowej wyznaczyła następujący sposób przeliczenia:
Komunikacja procesora z innymi elementami architektury komputera 27

Adres fizyczny = 16 x Segment + Offset

Generowany według powyższej formuły adres fizyczny (tutaj 20-bitowy) wystawiany


był na magistralę adresową. Operacja mnożenia przez 16 stanowi w dziedzinie liczb bi­
narnych przesunięcie w lewo o 4 pozycje - tak z 16 bitów robi się potrzebne 20. Po­
wstające z prawej strony dodatkowe pozycje wypełnia się zerami a do uzyskanej w ten
sposób liczby 20-bitowej dodaje się zawartość rejestru Offset.

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.

Generacja procesorów 16-bitowych wyposażonych w 20-końcówkową magistralę adre-


0(\
sową operowała w przestrzeni fizycznej o rozmiarze 1 MB (2 ). Wyjątek stanowił
model 80286 dysponujący 24 liniami adresowymi i obejmujący tym samym przestrzeń
16 MB (224). Procesory 32-bitowe (począwszy od 80386DX) mają już 32 końcówki
adresowe co pozwala na pokrycie zakresu 4 GB (2 ).

Architektura nowoczesnych procesorów 32-bitowych ulegała licznym przeobrażeniom


a implementacja nowych, dostosowanych do współczesnych wymogów trybów pracy
spowodowała sporą komplikację w przeliczeniach adresów logicznych, którymi operuje
program, na rzeczywisty stan końcówek adresowych CPU. Wyróżnić należy trzy pod­
stawowe tryby pracy procesora:
• Tryb rzeczywisty (Real Mode). Procesor 32-bitowy przełącza się w stan odwzo­
rowujący zachowanie jednostki 16-bitowej. Zawartość rejestru segmentowego
przesuwana jest o 4 pozycje binarne w lewo i dodawana do zawartości rejestru
przesunięcia (16xSegment + Offset). Wynik stanowi liczbę 20-bitową, która jest
po prostu wystawiana na magistralę adresową. Proszę zwrócić uwagę, iż kon­
strukcja adresu według takiej reguły prowadzi do wieloznaczności. Różne pary
liczb Segment:Offset mogą dawać jednakowy wynik i odwoływać się do tej samej
komórki pamięci. W trybach chronionych jest to z różnych względów wyklu­
czone.
• Tryb chroniony (Protected Mode). Tryb ten wprowadzony został (począwszy od
modelu 80286) w celu ochrony poszczególnych zadań pracujących pod kontrolą
wielozadaniowego (multitasking) systemu operacyjnego. Całość jest zaimplemen­
towana jako czteropoziomowy system uprawnień. Układy sprzętowe wbudowane
w procesor kontrolują odwołania do danych oraz kodu i wydają (lub odmawiają)
zezwolenia na dostęp. Wzrost bezpieczeństwa okupuje się stosunkowo dużą
komplikacją w obliczaniu adresu.
28 Anatomia PC

• 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.

Najbardziej istotną innowacją (oprócz architektury 32-bitowej) wprowadzoną do rodziny


procesorów Intela począwszy od modelu 80386 jest jednak jednostka stronicowania
(Paging Unit). W kolejnej części rozdziału zostaną omówione możliwości jakie oferuje
to rozszerzenie.

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

co daje w sumie astronomiczną objętość 64 TB (2 x2 ). Właściwie już jeden taki seg­


ment stanowi wielkość optymalną: 4 GB przestrzeni adresowej zaspokaja przy obecnym
rozwoju techniki PC najbardziej wygórowane wymagania. Rozwiązanie takie, określane
jako „płaski model pamięci” stosowane jest w systemie Windows NT.
Komunikacja procesora z innymi elementami architektury komputera 29

Segmenty 1 MB (granulacja bajtowa) pozwalają na utworzenie przestrzeni wirtualnej


0 rozmiarze 16 GB (2 i4x220). Utworzenie pamięci operacyjnej o takiej pojemności
w oparciu o półprzewodnikowe układy scalone jest absolutnie nierealne. Samo zasilanie
1 sterowanie zespołu 1 000 układów SIMM (16 MB) nastręczało by zbyt wiele trudności
technicznych, nie mówiąc o kosztach. Jest więc rzeczą oczywistą, iż nie wszystkie
segmenty jednocześnie mogą być przechowywane w pamięci operacyjnej. Część z nich
składuje się więc (Swapping) na znacznie tańszym nośniku magnetycznym (zwykle
dysk twardy). Duża pamięć wirtualna realizowana jest więc jako złożenie małej i szyb­
kiej pamięci RAM i obszernej pamięci masowej.

System operacyjny nadzoruje mechanizm składowania ustawiając odpowiednie znacz­


niki w tabelach deskryptorów. Jeśli procesor żąda dostępu do takiego „odłożonego na
bok1’ segmentu, sprzęt wyzwala tzw. wyjątek {Exception), będący odpowiednikiem
przerwania 0x0b. Wzywany jest podprogram obsługi przerwania, który sprowadza po­
trzebny segment z dysku do pamięci.

Omówione powyżej składowanie segmentów pozwala na wykorzystanie znacznie więk­


szego wycinka logicznej przestrzeni adresowej procesora niż wymiar fizycznie obecnej
pamięci operacyjnej. Mechanizm ten nie jest jednak pozbawiony wad. Proszę zwrócić
uwagę, iż elementarną jednostką wymiany informacji pomiędzy pamięcią RAM a pa­
mięcią masową jest segment. Jego rozmiar niekoniecznie musi odpowiadać strukturze
przetwarzanych obiektów. Obszerne bloki danych typowe dla zagadnień numerycznych,
moduły dużych programów, mapy bitowe i im podobne lokowane są w dużych segmen­
tach. Zwięzłe procedury, bloki danych krótkich programów umieszcza się oczywiście
w dopasowanych do ich rozmiarów mniejszych segmentach.

Potrzeba sprowadzenia do pamięci jednego z dużych segmentów może oznaczać ko­


nieczność zwolnienia miejsca zajmowanego przez szereg mniejszych bloków. Jeśli
przetwarzane zagadnienie wymaga naprzemiennego sięgania do sprowadzanego właśnie
dużego segmentu oraz wyeksportowanych przed chwilą segmentów mniejszych (kla­
syczny przykład: kompaktowy kod obsługi bazy danych i obszerne struktury samych
danych) rozpoczyna się intensywny proces wymiany informacji pomiędzy dyskiem a pa­
mięcią. Operacje takie pochłaniają oczywiście znaczną część mocy obliczeniowej.

Opisany problem staje się szczególnie dotkliwy w komputerach skąpo wyposażonych


w pamięć RAM. Należy przecież pamiętać, iż tylko pewna część pamięci operacyjnej
może być oddana do dyspozycji mechanizmu obsługującego zrzuty na dysk. Wolna
przestrzeń to reszta, która pozostaje po rozlokowaniu kodu i danych systemu operacyj­
nego oraz sterowników i innych niezbędnych elementów. Może się wręcz zdarzyć, iż
segment po który chcemy aktualnie sięgnąć nie mieści się w ogóle w wolnej przestrzeni.
Uruchamiana jest wtedy skomplikowana procedura analizująca stopień wykorzystania
obecnego w pamięci kodu i podejmuje się decyzję, które z jego fragmentów mogą być
odesłane na dysk.

Powyższe względy zadecydowały o konieczności poszukiwania bardziej efektywnej


metody zagospodarowania oferowanej przez nowoczesny procesor wirtualnej prze­
strzeni adresowej. Opracowany system określany jest mianem stronicowania.
30 Anatomia PC

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).

Rysunek 1.6. źttt—J ...... T-i";1 Lir,Vi'¡TTF1,¿1>J^ ,,


Adres
Schemat tworzenia y * 1 1 r A l ' ^ r i * ' ■ r ■ .■ r : logiczny
adresu fizycznego
przy włączonym Descriptor
.AJ
l i i
stronicowaniu Segment Descriptor
CO
"c
ii« 0E>
o>
<D
CO

ü 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
* ■■ .......<»

Page 2 Page 1026 Page 2050 Page 1047554


o
O)
Pagel Page 1025 Page 2049 Page 122681 Page 1047553 (O
Pageû Page 1024 Page 2046 Page 122880
ł Page 1047552
a.

€0

Page Frame Page Frame Page Frame CO


(4096 bajtów (4096 bajtów (4096 bajtów <
OD )
danych lub kodu) danych lub kodu) danych lub kodu) CO
a.

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í v% 'b ' rj : j . j *i ' •

;J"p , l uh. UMhp

' 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

CPU P54C P55C P-Pro P-II Ml M2 K5 K6


ajtr *
L I - k o d [kB] 8 16 8 16 16 64 16 32
L I —dane [kB] 8 16 8 16 8 32
L2 [kB] — — 256/512 256/512 ----- — — —

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

W układzie konwencjonalnym (często określany nazwą Look-Aside) - rysunek 1.10 - i


z którym mamy do czynienia w procesorach x86 i Pentium, pamięć podręczna dołączo­
na jest równolegle do magistrali pamięciowej. Widać wyraźnie, iż procesor odwołuje do
pamięci cache wykorzystując magistralę pamięciową: częstotliwości pracy cache jest
więc taka sama jak pamięci głównej, jedynie czas dostępu może ulec skróceniu.

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

Oddzielenie pamięci podręcznej od magistrali pamięciowej ma miejsce w procesorze


Pentium Pro - architektura tego typu znana jest pod nazwą Backside (rysunek 1.12).
Kontroler pamięci podręcznej osadzony jest na strukturze procesora i ma (poprzez ze­
staw wydzielonych końcówek) bezpośrednie połączenie z pamięcią podręczną. Często­
tliwości taktowania magistral są od siebie absolutnie niezależne.

Rysunek 1.12.
Układ Backside
podłączenia
pamięci podręcznej
34 Anatomia PC

Organizacja pamięci podręcznej


Pamięć podręczna zorganizowana jest w linijki (Cache Lines) o rozmiarach 16 lub 32
bajtów. Jest to najmniejsza porcja informacji, jaką pamięć podręczna wymienia z pa­
mięcią główną. System taki narzucony został dla zwiększenia wydajności. Większość
kontrolerów magistral realizuje zwielokrotniony cykl dostępu (Burst) bardzo szybko.
Pamięć podręczna „widzi” pamięć główną jako zbiór linijek, te z kolei pogrupowane są
w zespoły zwane stronami (Pages ). Informacja o tym, które z linijek RAM znajdują się
aktualnie w pamięci cache przechowywana jest w katalogu pamięci podręcznej TRAM
(TAG-RAM). Sposób odwzorowywania linijek i stron pamięci głównej w bloku pa­
mięci podręcznej może przebiegać na jeden z trzech omówionych poniżej sposobów.

Mapowanie bezpośrednie (Direct Mapped)


Implementacja tego typu jest najprostszą z możliwych i można ją również rozpatrywać
jako przypadek szczególny układu asocjacji zespołowej ( 1-Way-Set). Pamięć główna
podzielona jest na strony zgodne z rozmiarem bloku pamięci podręcznej.

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.

Pełna asocjacja (Fully Associative)


Organizacja z pełną asocjacją (rysunek 1.14) pozwala na składowanie dowolnej linijki
RAM w dowolnym miejscu pamięci podręcznej. W modelu tym nie ma symbolicznego
podziału na strony pamięci a operuje się wyłącznie linijkami.

Ta optymalnie elastyczna organizacja ma jednak dużą wadę: odszukanie informacji w pa­


mięci podręcznej wymaga przeglądnięcia całego katalogu TRAM, bowiem poszuki­
wana linijka może być na dowolnej pozycji. Konstrukcje tego typu mają uzasadnienie
ekonomiczne dla bloków pamięci podręcznej nie przekraczających 4 kB.
Komunikacja procesora z innymi elementami architektury komputera 35

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

Asocjacja zespołowa (Set Associative)


Stanowi kombinację rozwiązań przedstawionych powyżej. Cechą charakterystyczną ar­
chitektury tego typu jest podział pamięci podręcznej na równe porcje, zwykle 2 lub 4
zwane kanałami (Ways) - rysunek 1.15.

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.

Reakcja pamięci podręcznej na żądanie udostępnienia danych zależy od implementacji


oraz od faktu, czy poszukiwane dane są w niej istotnie zawarte. Obecność danych w pa­
mięci cache nazywa się trafieniem (Cache Hit) i nie wymaga sięgania do pamięci głów­
nej. W sytuacji odwrotnej (Cache Miss) uruchamiana jest magistrala pamięciowa i do
pamięci podręcznej sprowadzana jest nowa linijka.

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ęć podręczna procesora 80386


Jako konkretny przykład omawianych zagadnień przedstawiona zostanie konstrukcja
pamięci podręcznej procesora 80386. Model ten wyposażony został w zintegrowany
czterokanałowy kontroler cache (4-Way-Set) obsługujący blok 16 kB pamięci SRAM
zorganizowanej w linijki 16-bajtowe.

DW fDouble Worril = 32 bity


Rysunek 1.16. Li bity A3-A2 adresu wskazują na
Organizacja linijki 16 bajtów jedno z czterech DW

pamięci cache

Generowany we wnętrzu procesora 32-bitowy adres lokalizacji w pamięci (rysunek


1.17) przejmowany jest przez kontroler podręcznej, który dokonuje jego rozkładu na
trzy składniki:

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

• Rekord w pamięci cache (16-bajtowa linijka)

• Rekord w katalogu pamięci cache

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.

Rysunek 1.19. Adres TAG


(bity A31-A12)
Katalog pamięci
podręcznej
procesora 80386 "A" Set
se»o1
<
i
Set 159

CO
t/y
0>
<

T Set 255

Way 0 Way 1 W ay 2 W ay 3 LRU

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).

Rysunek 1.20. Magistrala adresowa (32 bity) ? 4>


C

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)

i Hit / Miss Magistrala danych (32 bity) ?


Odszukany w katalogu adres TAG przekazywany jest do komparatora i porównywany
z fragmentem A31 - A l 2 pobranym z szyny adresowej. Porównanie odbywa się dla
każdego z czterech kanałów oddzielnie. Wycinek A l i - A4 magistrali kierowany jest
równolegle do obwodów pamięci podręcznej przechowującej linijki z danymi. Proces
przebiega przez wszystkie kanały równolegle, stosownie do aktualnej selekcji w kata­
logu. Pamięć wystawia za każdym razem jedną z zaadresowanych w ten sposób linijek.
Informacja ta przejmowana jest tymczasowo przez bufor separujący obwody pamięci
podręcznej od magistrali danych. Jeśli poszukiwana informacja znajduje się w jakimś
kanale, dochodzi do zgodności adresów TAG. Na sygnał z komparatora 32-bitowy
fragment zawartości bufora (jedna czwarta część 16 bajtowej linijki wyizolowana przez
bity A2 - A3) odkładany jest na magistralę a cały układ generuje sygnał trafienia
{Cache Hit). Bity AO - A l nie podlegają ocenie.
Komunikacja procesora z innymi elementami architektury komputera 39

Decyzja o wymianie linijki (LRU)


< 4 -<

Stwierdzenie braku obecności określonej linijki w pamięci podręcznej (Cache Miss)


pociąga za sobą konieczność jej sprowadzenia z pamięci głównej. Kontroler cache musi
przygotować na ten cel jedno wolne miejsce, a jeżeli wszystkie są zajęte, określić która
z obecnych w pamięci podręcznej linijek może zostać usunięta. Algorytm wyboru bazuje
na obserwacji zakresu wykorzystania zmagazynowanej dotychczas informacji. Skutecz­
ność działania takiego aparatu zależy w dużej mierze od stopnia jego rozbudowania.

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).

Opisana tu metoda bazująca na algorytmie LRU stosowana jest w większości oma­


wianych w tej książce procesorów. Dzięki niej usuwana jest ta linijka, która spoczywała
bezużytecznie przez najdłuższy czas.

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

Rysunek 1.21. Zapotrzebowanie


Algorytm na wolną linijkę

sprowadzania
linijki do pamięci
cache
Wymienić Śnię
o statusie VAL=0

TAK

TAK

TAK TAK

Wymienić linijkę Wymienić linijkę Wymienić linijkę Wymienić linijkę


w bloku Way-1 w bloku Way-0 w bloku Way-2 w bloku Wav-3

Zakres pokrywany przez pamięć podręczną


Zlokalizowana we wnętrzu procesora pamięć podręczna LI przyspiesza dostęp do bloków
pamięci poziomu wyższego, który stanowi zależnie od konstrukcji pamięć operacyjna
lub pamięć podręczna drugiego poziomu (L2). Dobroczynne działanie cache polegające
na skróceniu czasu dostępu do kolejnego wyższego bloku w hierarchii możliwe jest do
osiągnięcia tylko w pewnym zakresie adresów. Zarówno rozmiar pamięci podręcznej
jak i szczegóły konstrukcyjne kontrolera ograniczają rozmiar tego obszaru (Cacheable
A rea ).

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

Dla potrzeb nowych procesorów „pentium-podobnych” współpracujących z magistralą


100 MHz stworzona została nowa generacja produktów (tabela 1.5). Zestawy układów
scalonych nie pochodzą w tym wypadku od firmy Intel, która nie jest zainteresowana
rozbudową nurtu 100 MHz na bazie innej niż Pentium II. Układy VIA-MVP3 pozwalają
na pokrycie (zależnie od rozmiarów L2 i trybu pracy WB lub WT) obszaru do 512 MB
a zestawy ALi-V obejmuje przestrzeń 128 MB.

Tabela 1.5.
Maksymalny rozmiar pamięci cacheowany przez chipsety współpracujące z procesorem Pentium

Chip-Set VIA MVP3 VIA MVP3 VIA MVP3 AH V


L2=5I2kB L2=1024kB L2~2048kB L2=5I2/I024kB
Write Back 64 MB 128 MB 256 MB 128 MB
Write Through 128 MB 256 MB 512 MB 128 MB

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

Chip-Set 440E X 440FXt LX, B X 440GX 440NX


Cacheable Area 256 MB 1 GB 2 GB 8 GB

Obsługa przestrzeni adresowej l/O


Przestrzeń adresowa procesorów dzieli się na obszar pamięci oraz na obszar wejścia/
wyjścia (I/O - Input/Output). Różnica widoczna jest zarówno od strony programowej
jak i sprzętowej.

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 dysponuje mechanizmem sygnalizacyjnym jednoznacznie informującym oto­


czenie o tym, czy aktualne odwołanie odnosi się do pamięci czy też do przestrzeni I/O.
Funkcje tę spełniają odpowiednie sygnały sterujące.

W przestrzeni I/O rozmieszczane są zwykle rejestry konfiguracyjne (zestawy przełącz­


ników binarnych) sterujące pracą różnych układów otaczających procesor lub wręcz
samego procesora. Dostęp do tych rejestrów odbywa się za pośrednictwem instrukcji
maszynowych I N oraz o u t , mówimy wówczas o tzw. I/O-mapped I/O . Oczywiście nic
nie stoi na przeszkodzie by te same rejestry umieścić w przestrzeni adresowej procesora
i odwoływać się do nich poprzez rozkazy maszynowe MOV itp. Rozwiązanie tego typu
nosi miano Memory-mapped I/O. Układy logiczne kontrolera magistrali kierują i tak
wszelkie odwołania do właściwej lokalizacji: pamięci lub portów.

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).

Procesory 80386 i 80486


r

Procesory te mogą zaadresować:


65 536 (64 K) portów 8-bitowych o adresach rozpoczynających się od 0, 1, 2 do
65 535
lub:
32 768 (32 K) portów 16-bitowych o adresach rozpoczynających się od 0, 2, 4 do
65 534
lub:
16 384 (16 K) portów 32-bitowych o adresach rozpoczynających się od 0, 4, 8 do
65 532
Komunikacja procesora z innymi elementami architektury komputera 43

Dopuszczalne jest mieszanie portów o różnych wymiarach, ale sumaryczna długość w


przeliczeniu na bajty nie może przekraczać 64 K. Stan końcówki M/-IO sygnalizuje
wybór przestrzeni adresowej:

M/MO
Odwołanie do pamięci 1
Odwołanie do ł/O 0

Kierunek transmisji rozpoznawany jest w klasyczny sposób znany z cykli dostępu do


pamięci:

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.

Funkcje kontrolne i sterujące


Współczesne procesory posiadają szereg wbudowanych funkcji kontrolnych i sterują­
cych. Mechanizmy te należy podzielić na następujące grupy:
• Systemy sterowania. Zaliczamy do nich wszelkie rejestry konfiguracyjne, których
stan określa aktualny tryb pracy procesora i pozwala na wybór różnorodnych
opcji. Liczna grupa tych rejestrów jest wspólna dla większości znanych proceso­
rów, istnieją jednak pewne specyficzne rozwiązania znane tylko w obrębie danego
modelu łub producenta (np. grupa rejestrów obecna jedynie w Pentium Pro).
• Systemy śledzenia i nadzoru. Zestaw funkcji ułatwiających śledzenie ( Debug )
przebiegu wykonywanego programu na poziomie sprzętu. Grupa ta obejmuje
również mechanizmy ułatwiające ocenę wydajności przetwarzania (Performance
Monitoring ) oraz wszelkiego rodzaju stopery i układy pomiaru czasu ( Timers).
44 Anatomia PC

• Systemy diagnostyczne. Stanowią wewnętrzne systemy kontrolne pierwszego


poziomu i ułatwiają wykrywanie błędów w pracy wewnętrznych systemów CPU.
Do grupy tej należy również zaliczyć tryb JTAG (począwszy od 80486 50MHz).
Na systemy kontrolne CPU składają się: ogólny tester wewnętrzny (BIST), sys­
temy kontroli TLB i pamięci podręcznej oraz mechanizm przejścia w stan wyso­
kiej impedancji. Konkretna implementacja danych funkcji zależy od producenta
i wersji procesora, część z nich została wprowadzona dopiero na określonym
etapie rozwoju. Aby nie zaciemniać obrazu, podamy jedynie krótki przegląd tych
układów.

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.

Funkcja aktywuje się w następujących okolicznościach:


• Jeśli wejście AHOLD utrzymywane jest w stanie wysokim przez czas dłuższy od
dwóch cykli zegarowych CLK.
• Po powrocie sygnału RESET do stanu niskiego

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 ).

Kontrola pamięci podręcznej


System kontroli pamięci podręcznej procesora ( On-Chip Cache) sterowany jest grupą
rejestrów kontrolnych TR3 - TR5. Rejestry te stanowią porty umożliwiające bezpośredni
dostęp do pamięci podręcznej. Można dzięki temu przeprowadzić następujące funkcje
kontrolne: zapis i odczyt bufora, zapis i odczyt cache, oczyszczenie pamięci podręcznej
{Cache Flush).

Przejście w stan wysokiej impedancji


Funkcja służy do lokalizowania usterek i przeprowadzania testów układów otoczenia
procesora. Odpowiada w przybliżeniu wyjęciu CPU z podstawki, bowiem wszystkie
końcówki wyjściowe i dwukierunkowe (warunkowe wyjście lub wejście) przechodzą
w stan wysokiej impedancji i nie mają wpływu na stan przyłączonych do nich linii.
Komunikacja procesora z innymi elementami architektury komputera 45

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

Rysunek1.24. Rejestr BST


Koncowki zewnętrzne procesora V
V
Dostąp do ✓

\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

TDI O ' "\


TDO

I i

V.-

TMS TCK

TCK Test Clock, końcówka wejściowa. Wejście zegarowe sygnału taktującego


kontrolera TAP.

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.

TDO Test Data Output, końcówka wyjściowa. Stanowi wylot rejestru


przesuwnego i punkt wyprowadzania danych od kontrolera. Proces
odbywa się synchronicznie z impulsami zegarowymi TCK. Kontrolery
TAP mogą być łączone w szereg, co daje możliwość efektywnego
testowania grupy urządzeń, np. płyt głównych systemów
multiprocesorowych. Wyjście TDO kierowanie jest wówczas na wejście
TDI kolejnego układu kaskady.

TMS Test Mode Select, końcówka wejściowa. Wymuszenie wysokiego stanu


logicznego na tym wejściu powoduje uruchomienie całego układu JTAG.
Przetrzymanie stanu wysokiego przez okres powyżej pięciu cykli
zegarowych procesora oznacza reset dla kontrolera TAP i powrót do
domyślnej konfiguracji.
Komunikacja procesora z innymi elementami architektury komputera 47

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

Warto również wspomnieć o istotnym szczególe konstrukcyjnym różniącym procesory


Pentium i Pentium MMX. Modele standardowe mają wewnętrzne rezystory podciągają­
ce poziom napięcia na wyprowadzeniach BFO i BF1 (Pull-up ). Wraz z pojawieniem się
serii MMX firma Intel zdecydowała się na wprowadzenie zmiany: końcówka BFO
wyposażona została w rezystor sprowadzający do masy (.Pull-down). Poziomowanie linii
BF1 nie uległo przy tym zmianie. Często jedynym ratunkiem dla posiadaczy nieco
starszych płyt głównych borykających się z problemami właściwych mnożników jest
sięgnięcie po multimetr, pomiar napięć na końcówkach BF i ewentualna ingerencja przy
pomocy lutownicy i zewnętrznych rezystorów.

Tabela 1.7.
Wartości mnożników dla podstawowych typów procesorów

BFO BF1 BF2 Pentium


Pentium AM DK6 Cyrix M2
(Pin Y33) (Pin X34) (Pin W35) MMX
0 0 1 2,5 2,5 2,5 2,5
1 0 1 3 3 3 3
0 1 1 2 2 2 2
1 1 1 1.5 3,5 3,5 3,5
0 0 0 -------- --------
4,5 --------

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.

Nominalną częstotliwość taktowania procesora można zwykle osiągnąć na kilka sposo­


bów, na przykład:

Magistrala Mnożnik C P U - 2 0 0 MHz


66 MHz 3 198 MHz (standard)
75 MHz 2,5 187 MHz
83 MHz 2,5 207 MHz

Podobnie można postępować w przypadku modelu 233 MHz. Podniesienie częstotliwości


magistrali należy zawsze przedkładać nad przyspieszeniem zegara samego procesora:
Komunikacja procesora z innymi elementami architektury komputera 49

Magistrala Mnożnik C PU - 2 3 3 MHz


66 MHz 3,5 231 MHz (standard)
75 MHz 3 225 MHz (lepiej)

Niektórym trudno oprzeć się pokusie by wypróbować również następujące kombinacje:

Magistrala Mnożnik Zegar CPU


15 MHz 3 225 MHz (zamiast 200)
83 MHz 2,5 249 MHz (zamiast 233)
75 MHz 3,5 262 MHz (zamiast 233)

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.

Operacjom wymuszania zwiększonej częstotliwości pracy poddają się również procesory


Pentium II, chociaż zważywszy na ich cenę należałoby odradzać wszelkich nierozsąd­
nych eksperymentów. Manipulować można w zasadzie5 zarówno zegarem taktującym
procesor (mnożnik) jak częstotliwością pracy magistrali (66 lub 100 MHz). Szczególna
ostrożność zalecana jest w przypadku procesorów P-II-Celeron. Model 266 MHz ma
trwale ustawiony mnożnik x4 i nie reaguje na ustawienie zwor konfiguracyjnych płyty.
Ponieważ procesory tego typu przewidziane są do współpracy z magistralą 66 MHz, nie
wolno zmuszać ich do współdziałania z szyną taktowaną zegarem 100 MHz bowiem
powstającej nadwyżki (400 zamiast 266 MHz) i tak nie da się skompensować. To samo
odnosi się do modelu Celeron-300 zmuszanego do pracy z szybkością 450 MHz.

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:

• Płyty z podstawką typu 4 (Socket Type 4) przeznaczona do obsługi najstarszej


odmiany Pentium - modeli 60 i 66 MHz.

5 .Niektóre operacje wymagają użycia lutownicy, szczegóły na odpowiednich stronach Internetu.


50 Anatomia PC

• Płyty wyposażone w podstawkę typu 5 {Socket Type 5) skonstruowane dla CPU


drugiej generacji. Procesory tego typu taktowane były do częstotliwości 133 MHz
i zasilane napięciem 3.3 V przy stosunkowo ograniczonym poborze prądu. Stero­
wanie mnożnikiem częstotliwości sprowadzało się do wyboru jednego z dwóch
stanów końcówki BFO (x l,5 lub x2).
• Najszerzej rozpowszechniona jest generacja płyt z podstawką typu 7 {Socket
Type 7), której specyfikacja dopuszcza maksymalną częstotliwość taktowania
równą 266 MHz. Płyty tej grupy występują w trzech wariantach:
• Brak możliwości wymuszenia na stabilizatorze napięcia 2.8 V przy jedno­
czesnym braku podstawki modułu dodatkowego regulatora (VRM).
• Płyta ma wspomniane powyżej gniazdo i brakujące napięcie 2,8 V można
wytworzyć przy użyciu modułu dodatkowego regulatora VRM.
• Oryginalny stabilizator napięcia dysponuje opcją 2,8 V.
Wszystkie płyty z podstawką typu 7 mają już wyprowadzone nie tylko końcówki
BFO ale i BF1 co poszerza zakres możliwych wartości mnożnika częstotliwości
taktowania wnętrza procesora.

Kłopoty związane z mnogością poziomów napięć wynikły z konieczności rozdzielenia


obwodów zasilających jądro procesora (VCOre) od członów współpracujących z magi­
stralami ( VyQ). Nieustający wyścig częstotliwości taktujących powoduje przecież wzrost
energii rozpraszanej na ciepło i wzrost temperatury struktur półprzewodnikowych do
niebezpiecznych wartości. Jeśli tych niekorzystnych zjawisk nie można zahamować na
drodze minimalizowania rozmiarów (przejście do technologii 0.25pm i dalej), trzeba
zmniejszyć prąd pobierany przez obwody procesora. Nie można jednak zmniejszać
poziomów napięć wystawianych na magistralę, gdyż grozi to zachwianiem równowagi
na liniach przesyłowych. Jedynym rozsądnym kompromisem jest rozdzielenie tych ob­
wodów i operowanie poziomami optymalnymi dla każdego z nich. Linia zasilania Vj/o
musi doprowadzać napięcie w zakresie około 3,2 V. Obniżenie poziomu Vcore o kilka­
naście procent (do wysokości około 2,8 V) daje zadowalający efekt w zakresie często­
tliwości do 233 MHz włącznie. Różnica powyżej 1 V (poziom 2,1 V) wymagana jest dla
procesorów osiągających zakres 266 - 300 MHz, Niestety każdy z producentów prefe­
ruje własne, uznane za optymalne, poziomy napięć (tabela 1.8). Zdarza się nawet, że te
same procesory mają nadrukowane różne wartości napięć w zależności od serii, z której
pochodzą.

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

CPU P54C P55C Ml M2 K5 K6


*
3,3 2,8 3.3 2,9 3,52 2,9“
VCORE [V]
(3 ,1 3 5 -3 ,6 ) (2,7 - 2,9) (3 ,1 5 -3 ,6 ) (2,8 - 3,0) (3,45 - 3,6) (2 ,7 5 5 -3 ,0 4 5 )
3,3 3,3 3,3
Vvo [V] (3,135-3,6) (3 ,1 3 5 -3 ,4 6 5 ) (3 ,1 3 5 -3 ,6 )
Podstawka Socket 7 Socket 7 Socket 7 Socket 7 Socket 7 Socket 7
* Wersja STD (Standard): 3,3 V, w wersji VRE 3,45 V
Jądro procesora w wersji 233 MHz zasilane jest napięciem 3,2 V (3,1 - 3,3), natomiast
w modelu 266 MHz napięciem 2,1 V.

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).

Rysunek 1.26. 3.5V/P54C 3.4V/P54C 3.3V 3.2V


Zwory m
w O
.* r.* «■-*

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
> > > > > > > > > > > >

2.7V 2.6V 2.5V 2.4V


o <j): •o te m
o QQ- ?0'
W O :D:t oj :ö' I :
Q
>
o J Z cm
Q O
> >
o
O
>
O
>
s o O
> >
CM
>
O
O >
>
O

2.3V 2.2V 2.1V 2.0V


m
¡0
O 10
CM
o
o Qo TT CM
o O S 9 a
> > > 5 > > > >

Potwierdzenie poprawności danego ustawienia znaleźć można w programie BIOS-Setup


na stronie Power Management w punkcie zatytułowanym VCORE Voltage.

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.

Vcore / i core Vi/o / h/o


Intel-MMX 233 MHz 2,8 V / 6,7 A 3,3V / 0,8A
AMD-K6 233 MHz 3,2 V / 9,5 A 3,3 V / 0,5A

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.

Przegląd architektury procesorów


Wnętrze współczesnego komputera klasy PC zawiera w sobie szereg produktów najróż­
niejszych firm. Oferta jest tak bogata, że w niektórych dziedzinach nie sposób byłoby
nawet wymienić wszystkich znaczących producentów. Nie dotyczy to jednak proceso­
rów. Rynek opanowany jest przez trzy firmy, z których jedna zdominowała w zasadzie
całą resztę.

Można śmiało zaryzykować stwierdzenie, iż zaglądając do statystycznego PC-ta nowej


generacji odkryjemy w nim jeden z opisanych w tym rozdziale procesorów. Krótkie
przedstawienie każdego z nich obejmuje zwięzły opis, schemat blokowy i tabelarycznie
ujęte główne cechy architektury.

Omówione zostaną produkty następujących firm:

• AMD (rodzina K5 i K6)

• IBM/Cyrix (M l i M2)

• Intel (Pentium, Pentium MMX, Pentium Pro, Pentium II)


Komunikacja procesora z innymi elementami architektury komputera 53

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ść.

Rysunek 127\ AMD, K5


Schemat blokowy
Adres
procesora K5
32

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

Wypływający z dekodera strumień ROP kierowany jest do jednostek wykonawczych -


K5 dysponuje sześcioma jednostkami: dwoma arytmetyczno-logicznymi dla liczb całko­
witych, jedną dla zmiennoprzecinkowych, dwoma kanałami dla obsługi operacji typu
Load/Store i jedną do przetwarzania instrukcji rozgałęzień. Nad właściwym rozdziałem
ROP do odpowiednich jednostek czuwa system dystrybucji ( Dispatcher), który jest
54 Anatomia PC

w stanie rozesłać w jednym cyklu zegarowym maksymalnie cztery mikrorozkazy. Jeśli


dana jednostka jest aktualnie zajęta, skierowane do niej mikrokody oczekują w kolejce
RS {Reservation Station). Zdecydowana większość ROP może być kierowana do do­
wolnej z dwóch jednostek ALU a tylko nieliczne z nich wymagają obsługi przez
konkretnąjednostkę.

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.

System przewidywania rozgałęzień zapamiętuje 1 024 adresów skoków i gwarantuje


współczynnik trafienia 75%. Napotkanie rozgałęzienia powoduje iż pobieranie kolej­
nych instrukcji odbywa się w kierunku typowanym przez układ przepowiadania. In­
strukcje są dekodowane i wykonywane ale ich wyniki przechowuje się w buforze ROB
do czasu potwierdzenia słuszności przypuszczalnie wybranej drogi. Jeśli przewidywanie
okaże się fałszywe, procesor traci 3 takty zegara potrzebne na opróżnienie potoków,
rejestrów i buforów.

Pamięć podręczna procesora podzielona jest na wyizolowane bloki obsługujące w nie­


zależny sposób dane i kod. K5 przeznacza dla kodu 16 kB, co stanowi wartość dwu­
krotnie większą niż oferowana przez Pentium. Każdy z zapamiętywanych bajtów opat­
rzony jest dodatkową 5-bitową sygnaturą (Pre-Code Bits) będącą wynikiem pracy układu
dekodowania wstępnego. W ten sposób ulega skróceniu czas przebywania instrukcji
w układzie właściwego dekodera. Pamięć podręczna danych zajmuje 8 kB. System
pamięci cache zorganizowany jest w 32-bajtowe linijki, jednak najmniejszą porcją in­
formacji wymienianej z pamięcią operacyjną stanowią dwie takie linijki. Magistrala
przystosowana jest więc w naturalny sposób do obsługi adresów leżących na granicy
64-bajtów (Q-Word). Próba dostępu do obiektu leżącego „gdzieś pomiędzy” rozkładana
jest przez większość procesorów na dwa cykle. K5 potrafi jednak wygenerować taki
zestaw sygnałów sterujących {Split Line Access) by omawiany problem nie wystąpił.

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

PR-i 00 PR-Î33 PR-166


Architektura RISC
Zegar CPU [MHz] 100 100 116
Magistrala [MHz] 66 66 66
Mnożnik (BF) 1,5 (BF=1) 1,5 (BF1/BF0=10) 1,75 (BF1/BF0=00)
Ll-Cache (kod) 16 kB, 1 bank, 4x Associative, Dual Tags (linear + phys.), Line Cache
32 bajty
Ll-Cache (dane) 8 kB, 4 Banks, 4x Associative, Dual Tags, MESI, WB, Line Cache 32 bajty
L2-Cache Brak wbudowanej pamięci podręcznej drugiego poziomu
Pipe-Lines 6
Pipe-Line Stages 5
Out o f Order Execution X, 16
Branch History Table 1024
Branch Target Buffer 1024

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.

6 Płyta główna zdolna do przyjęcia procesora NexGen bazowała na specjalnie opracowywanych


do tego celu układach scalonych ( Chip-Set). Winę za to ponosiła całkowita niezgodność
z architekturami „Intelopodobnymi”, np. specjalna super szybka magistrala łącząca procesor
z pamięcią podręczną L-2.
56 Anatomia PC

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.

Rysunek 1,28. TLB: 64 rekordy AMD, K6


Schemat blokowy
procesora K6 L1 Code Cache: 32kB
Adres
W } ..

32

Branch DEKODER
Logic x86 -> RISC
Dane (8192 rek.)
4 RiSC
* 964 W Out-of-Order
■ Execution Engine

ZD ÛC RISC « 3

Instruction UJ RISC #22


<3> niSC#21
O Control => RISC #20
CO O
Unit UJ
a> X RISC #2
o RISC#1
RISC#0
V)
c/>
Sterowanie : 1 RISC
M W co

Brand

Zegar
*
j

i
!

“ F L1 Data Cache: 32kB


j
¡
;

i----------------------------- ..
TLB: 128 rekordów

K 6 jest konstrukcją bardzo nowoczesną i pod wieloma względami przewyższa swoich


konkurentów. Jądro procesora pracuje w trybie RISC bowiem operacje w kodzie x86
rozkładane są na krótkie kody wewnętrzne noszące miano RISC86. Układ dekodera jest
niezmiernie wydajny i pobierając 16 bajtów kodu x86 na raz produkuje do 4 mikroin-
strukcji w ramach jednego cyklu zegarowego. Mikroinstrukcje opuszczając dekoder
spływają do zbiornika pośredniego {Scheduler), gdzie oczekują na zwolnienie właściwej
dla danego rozkazu jednostki przetwarzające. Procesor dysponuje sześcioma takim
układami: dwoma dla operacji typu Integer, po jednym dla przesłań do i z pamięci,
zmiennoprzecinkową i MMX. Wszystkie jednostki za wyjątkiem dwóch ostatnich7
mogą przetwarzać mikrokody RISC równolegle i jednocześnie.

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

Wzajemne uzależnienia kodu w strumieniach równoległych rozwiązywane są poprzez


przemianowywanie rejestrów. Do dyspozycji tej funkcji oddano 32 dodatkowe rejestry
32-bitowe. Układ przepowiadania rozgałęzień śledzi zachowanie 8 192 instrukcji rozga­
łęzień przez co cechuje się bardzo dużą dokładnością trafień.

Procesor wyposażony został w 64 kB pamięci podręcznej, po 32 kB dla kodu i danych


co stanowi wartość czterokrotnie większą niż w przypadku Pentium i dwukrotnie większą
niż Pentium MMX. Na uwagę zasługuje również organizacja pamięci pośredniej jed­
nostki MMU. Tablice TLB (Transaction Lookaside Buffer) dla kodu są w stanie zapa­
miętać do 128 rekordów (dla porównania Pentium Pro tylko 32).

Tabela 1.70.
Podstawowe dane procesorów K6

166 200 233 266 300


Architektura RISC 86
Zegar CPU [MHz] 166 200 233 266 300
Magistrala [MHz] 66 66 66 66 66
Mnożnik (BF) 2,5 3,0 3,5 4,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 1
Pipe-Line Stages 6 (FP: 7)
Out o f Order Execution
Branch History Table 8192
Branch Target Buffer 16
VcORE [V] 2,9 (2,76-3,05) 2,9 (2,76-3,05) 3,2 (3,1-3,3) 2,1 2,1

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 ✓

Branch History Table 8192


Branch Target Buffer 16
VcORE [V ] 2,2 2,2
V}/0 [V] 3,3 3,3
Pobór mocy, typ./max. [W] 8,85/14,7 10,35/17,2
Return Stack 16
Renaming Registers 48 (8 + 40)
Performance Monitoring
Time Stamp Counter
Podstawka Socket Super 7

Nie trzeba dodawać, że prawidłowe rozpoznanie i skonfigurowanie procesora AMD


K6-2 wymaga wsparcia ze strony BIOS w jednej z najbardziej aktualnych wersji. Jeśli
nie jest możliwe wgranie nowej wersji (Flash-BIOS) lub ewentualna wymiana pamięci
EPROM można próbować się posłużyć programem konfiguracyjnym SETK6.EXE.
Komunikacja procesora z innymi elementami architektury komputera 59

Na straconej pozycji są posiadacze płyt pozbawionych wyprowadzenia końcówki BF-2


co uniemożliwia ustawienie mnożnika powyżej x3,5. Zwracać też należy uwagę na
dostateczną wydajność źródła prądowego: procesory tej serii czerpią około 10 A.

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.

Poważna trudność powstaje w momencie, gdy częstotliwość przebiegu wyjściowego


(magistrala CPU) wynosi 100 MHz. Z takiego źródła niełatwo uzyskać zsynchronizo­
wane przebiegi 33 MHz i 66 MHz. Stosuje się dwa sposoby podejścia do tego problemu.
Pierwszy z nich to asynchroniczny tryb pracy: magistrala główna i procesor mają własny
zegar 100 MHz, a szyna AGP wyposażona zostaje w generator 66 MHz, z którego sy­
gnał po podziale przez 2 posyła się na magistralę PCI. Rozwiązanie drugie to tzw. tryb
pseudosynchroniczny polegający na przemyślnym wyprowadzaniu (poprzez kolejne
dzielenia i mnożenia) potrzebnych częstotliwości (66 i 33 MHz) z zegara 100 MHz.
Tryb asynchroniczny ma istotną wadę: połączenie i współpraca magistral taktowanych
różnymi częstotliwościami wymaga stosowania buforów pośrednich przechowujących
dane. Skomplikowany na pozór tryb pseudosynchroniczny gwarantuje lepsze sprzężenie,
bowiem mimo nierównomiemości cyklów ich wzajemne przesunięcia są jednoznacznie
zdefiniowane i kontrolery magistral mogą lepiej przewidzieć stosowne momenty dla
wymiany danych.

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.

Platformą łączącą nowe rozkazy 3DNOW! z aplikacjami multimedialnymi (główny


nacisk kładzie się na funkcje 3D) stanowi system DirectX w wersji 6.0. Wyniki osiąga­
ne przez duet K6-2 i Direct3D/6 stanowią poważne zagrożenie dla pozycji zajmowanej
dotychczas przez procesor Pentium II.

Procesory Cyrix

Rodzina 6x86 (M1)


Omawiany w tym punkcie procesor stanowi wspólne dzieło firm Cyrix, IBM i SGS
Thompson. Jako bardzo oryginalny projekt zdołał znaleźć dla siebie miejsce na rynku
PC, głównie ze względu na bardzo konkurencyjną cenę. Całkowita zgodność z Pentium
jest niestety mocno problematyczna. Procesorom Cyrix brak jest funkcji wewnętrznego
stopera TSC (Time Stamp Counter) oraz możliwości nadzoru (Performance Monitoring).

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.

Mocno ograniczone są funkcje śledzenia a praca w systemie multiprocesorowym możliwa


jest wyłącznie zgodnie z koncepcją OpenPIC, która całkowicie nie pasuje do modułu
APIC zintegrowanego z procesorami Pentium. Sporo kłopotów przysparza brak instruk­
cji CPU-ID a właściwie jej zablokowanie. Niektóre aplikacje sprawdzają bowiem przed
przystąpieniem do pracy typ CPU zainstalowanego w systemie. Procesor 6x86 w kon­
figuracji standardowej nie zna kodu tego rozkazu i system zatrzymuje się sygnalizując
błąd, tak jak w przypadku napotkania instrukcji o zabronionym kodzie. Konfigurację
procesora można na szczęście zmienić. Dokonuje się tego np. przy pomocy programu
CX86!8. Ustawiona konfiguracja obowiązuje do następnego restartu systemu. Powyższe
uwagi odnoszą się wyłącznie do procesorów serii 6x86 i nie dotyczą następnej generacji
tj. MX i M2.

Użytkownicy przywykli do jasno zdefiniowanej częstotliwości taktowania procesora


mogą być nieco zagubieni, gdyż produkty IBM/Cyrix znakowane są w odmienny sposób.

8 Wywołanie programu: cx86! mapenO cpuiden


5 «. *

I Komunikacja procesora z innymi elementami architektury komputera 61


if \

¡Mj>
'

tijft

I Na obudowie drukowany jest współczynnik PR {Pentium Rating ), który jest równoważ-


I nikiem mocy obliczeniowej danego CPU w odniesieniu do procesora Pentium. W prze-
| szłości do liczby PR dołączany był często znak „+” mający wskazywać na zależność
| „lepszy lub co najmniej równy”. Wyniki pracy programów testowych typu Benchmark
| potwierdzają na ogół prawo do noszenia stosownej etykiety P-xxx+. Przedstawiciel
| rodziny 6x86 P-166 osiąga istotnie wyniki porównywalne z Pentium 166:
j*ti,

fi.?

Svsmark NT
« /
Sysmark 95
6 x 8 6 133MHz P-166+ 455 450
Pentium 166MHz 433 464

Pomiary przeprowadzone wśród dalszych członków rodziny procesorów prowadzą do


ustanowienia następującego przyporządkowania:

Cyrix 100MHz P-120+ ilOMHz P-133+ 120MHz P-150+ 133MHz P-166+


Intel Pentium 120 MHz Pentium 133 MHz Pentium 150MHz Pentium 166MHz

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

Rysunek 1.30 Cyrix, 6x86 (M1)


Schemat blokowy
procesora Cache Unit
6x86 (Ml)
Adres L1 Unified Cache FFamiêæ Cach
(16kB) dla kodu
+ >(
32
¥\ Adre (256 bajtów)

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"

Potoki równolegle Cyrixa nie są synchronizowane. Bezrobotny potok Y nie czeka


(w przeciwieństwie do Pentium) na ukończenie przetwarzania w X i może wykonywać
inny fragment kodu (poza kolejnością), choćby jeden z przepowiadanych kierunków
biegu programu. Powstające przy tym zależności likwiduje się przy pomocy przemiano-
wywania rejestrów, których jest w sumie 32.

Spore różnice w stosunku do Pentium można odnaleźć w jednostce zarządzania


pamięcią (MMU). Bufor TLB zawiera 128 rekordów (Pentium: 96) a pamięć podręczna
w której przechowywane są katalogi dostępu do stron pamięci {Page Directory Tablé)
daje się programowo aktywować i dezaktywować. Niezmiernie oryginalny jest ośmio-
stopniowy Victim Buffer, forma kosza na śmieci, gdzie lądują usuwane z TLB odwoła­
nia do stron. Rekordy takie dają się szybciej odtworzyć bowiem nie zostały jeszcze
fizycznie skasowane. Cyrix radzi sobie również świetnie ze stronami pamięci o wymia­
rach innych niż Intelowskie 4 kB i 4 MB. Następujące po sobie strony dają się połączyć
w jedną całość, co przynosi ogromne skrócenie czasu dostępu.

Na zakończenie warto wreszcie wspomnieć o łączonych cyklach zapisu {Write Gather­


ing). System dostępu do magistrali jest w stanie łączyć następujące po sobie odwołania
do pamięci. W ten sposób żądania zapisu bajtów, słów i dwusłów grupowane są w poje­
dynczy blok i wykonywane w szybkim trybie 64 bitowym.
Komunikacja procesora z innymi elementami architektury komputera 63

Tabela 1.12.
Podstawowe dane procesorów 6x86 (Ml)

PR ¡50+ PR 166+ PR 200+


Architektura x86 Native
Zegar CPU [MHz] 120 133 150
***
Magistrala [MHz] 60 66 75
Mnożnik (BF) 2 2 2
LI-Cache 16 kB Unified Cache (Code + Data), 4x Associative, 512 Lines. 256 bajtow
Instruction Line Cache (8 Lines)
L2-Cache on Chip
Pipe-Lines 2 ( + FP)
Pipe-Line Stages 1
Out o f Order Execution
Branch History Table 512
Branch Target Buffer 256
VCORE[V] 3,3* (2,8)
yvo m 3,3
Pobór mocy, typ. [W] 16,8 18 21
Return Stack 8
Renaming Registers ✓(8 + 24)
Performance Monitoring
Time Stamp Counter
Podstawka Socket 7
Modele serii Ml wykonywane w technologii 0,65 pm zajm ują394 mm struktury krzemowej (Die)
**
Nowe układy serii M IR charakteryzują się mniejszym poborem mocy i wymagają dwóch napięć
zasilających (Split Voltage). Wykonywane w technologii 0,5 pm (PR-120...PR-166) lub nawet 0,44 pm
(PR-200) zajmują jedynie 204 mm2.
Praca w tym trybie wymaga wsparcia ze strony płyty głównej (standardowa częstotliwość maksymalna
dla magistrali wynosi jedynie 66 MHz)

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

wyłącznie na kod (256 bajtów). Najistotniejsza innowacja to rozszerzenie o zestaw roz­


kazów MMX, których realizacja odbywa się w bloku funkcyjnym zintegrowanym z jed­
nostką zmiennoprzecinkową. Przez pewien czas procesory tej rodziny nosiły nawet
przydomek MX (zamiast M2).

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.

Rysunek 1.31. Cyrix, M2


Schemat blokowy
procesora Dane,
Cache Unit
6x86MX (M2)
Adres L1 Unified Cache Pamięć Cache
(64kB) dla kodu
Adres. (256 bajtów)

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"

9 Techniką tą pakowane są również procesory AMD-K6


Komunikacja procesora z innymi elementami architektury komputera 65

Tabela 1.13.
Podstawowe dane procesorów 6x86MX (M2)

PR-166 PR-200 PR-233 PR-266 M2-333 M2-35Ö


(M2-300)
Architektura x86 MMX Native
Zegar CPU [MHz] 133/150 166 188/200 233/225/208 250 250
Magistrala [MHz] 66/60 75/66 75/66 66/75/83 83 100
Mnożnik (BF) 2 . 0/ 2.5 2.0/2.5 2.5/3.0 3.5/3.0/2.5 3.0 2.5
LI-Cache 64 lcB Unified Cache (Code + Data), 4x Associative, 2048 Lines.
Write Back for Data, 256 bajtów Instruction Line Cache (8 Lines)
L2-Cache on Chip
Pipe-Lines 2 (+1 FPU)
Pipe-Line Stages 1
Out o f Order Execution
Branch History Table 1024
Branch Target Buffer 512
VcORE [V ] 2,9
Vyo [V] 3,3
Pobór mocy, typ. [W] 10,6/11,4 12.1 13,1/13,7 15,7/16,2
Return Stack 8
Renaming Registers S (8 + 24)
Performance Monitoring
Time Stamp Counter
Podstawka Socket 7, P54C Socket Super-7
Planowany na drugą połowę 1998

Architektura M2 uległa oczywiście istotnym modyfikacjom. Wspomnieć należy o prze­


robionej jednostce zarządzania pamięcią (MMU). Bardzo interesująca jest dwustopniowa
architektura TLB ( Transaction Lookaside Buffer ). Pierwszy poziom (LI-TLB) zawiera
16 rekordów z odwołaniami do tablicy drugiego poziomu (L2-TLB) o 384 wierszach.

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.

M2 jest typowym przedstawicielem klasy CISC bowiem przetwarza naturalne rozkazy


x86. Praca odbywa się w dwóch potokach a centralny system sterowania czuwa nad
stałym ich napełnianiem przesyłając partie kodu poza kolejnością ( Out-of-Order Com -
66 Anatomia PC

pletion, Speculative Execution ). Zależności usuwane są poprzez przemianowywanie


rejestrów10 a dodatkowe przyspieszanie osiąga się poprzez wczesne udostępnianie da­
nych (Data Forwarding).

Procesory Intel

Rodzina procesorów Pentium


Procesory tej rodziny stanowią bardzo rozliczną grupę. Pierwsze modele, już od dawna
nieobecne na rynku, osiągały częstotliwość do 66 MFIz i zasilane były napięciem 5 V.
Następna grupa (oznaczana symbolem P54C) zasilana była napięciem 3,3 V a częstotli­
wość taktowania jądra procesora sięgała 200 MHz.

Rysunek 1,32. TLB Intel P-54


Schemat blokowy Adres
procesora Pentium L1 Code Cache: 8kB
32

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

10 Oprócz 8 standardowych rejestrów architektury x 8 6 do dyspozycji stoją 24 dodatkowe rejestry


32 bitowe.
Komunikacja procesora z innymi elementami architektury komputera 67

Tabela 1. 14.
Podstawowe dane procesorów Pentium

1 75 90 100 120 133 | 150 166 200


Architektura x86 Native
1Zegar CPU [MHz] 75 90 100 120 133 150 166 200
Magistrala [MHz] 50 60 66/(50) 60 66 60 66 66
I Mnożnik (BF) 1,5 1,5 1.5/(2) 2 2 2,5 2,5 3
I Ll-Cache (kod) [kB] 8 kB, 4x Associative
| Ll-Cache (dane) [kB] 8 kB, 4x Associative, WB, MESI
L2-Cache on Chip x
Pipe-Lines 2 (+FP)
Pipe-Line Stages 5 (FP: 8)
1Out o f Order Execution X

1Branch Target Buffer 256


VcORE [V] 3,3 3,3 3,3 3,3 3,3 3,3 3,3 3,3
Urn [V]
1Pobór mocy, max. [W] 8,0 9,0 10,1 12,8 11,2 11,6 14,5 15,5
Return Stack X

Renaming Registers X

1Performance Monitoring
1Time Stamp Counter
Podstawka Socket 7

Jakkolwiek dostępne programowo rejestry są 32 bitowe, wewnętrzne ścieżki mają 128 a


nawet 256 bitów szerokości. Przyczynia się to z pewnością do zwiększenia prędkości
wewnętrznych transferów.

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.

Procesor posiada dynamiczny system przepowiadania rozgałęzień. Bufor BTB mieści


256 rekordów i zorganizowany jest w systemie poczwórnej asocjacji. Strata czasu, którą
ponosi procesor w wypadku błędnej przepowiedni wynosi od 3 do 4 cykli zegarowych.
68 Anatomia PC

Pamięć podręczna danych (Data Cache) pracuje w bardzo efektywnym trybie WB


( Write Back) ale dla zachowania zgodności z procesorami 486 może dać się przełączyć
na tryb WT ( Write Through ). W jej skład wchodzi 8 banków, każdy po 32 linijki. Jedna
linijka ma wymiar 32 bajtów. Cache jest dwuportowy i może być udostępniany równo­
legle dla potrzeb U i V, jeśli tylko odwołania odnoszą się do różnych banków. Próba
jednoczesnego dostępu do danych złożonych w tym samym banku kończy się przyzna­
niem pierwszeństwa U. Potok V zmuszony jest do oczekiwania przez czas trwania
jednego cyklu zegarowego.

Pamięć podręczna kodu jest dwudrożna (2-Way Set) i zorganizowana w 8 banków.


Również w tym przypadku rozmiar linijki wynosi 32 bajty.

Pentium przygotowany jest do pracy w systemach multiprocesorowych, w parze z drugim


identycznym procesorem {Dual System). Dla potrzeb takiej konfiguracji dodany został
kontroler APIC {Advanced Programmable Interrupt Controller) oraz kilka dodatkowych
końcówek sterujących, a pamięć podręczna danych sygnalizuje swój stan zgodnie z pro­
tokołem MESI.

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.

Oprócz zmian spowodowanych wprowadzeniem potoku przetwarzającego MMX, po­


większone zostały rozmiary pamięci podręcznych kodu i danych: z 8 do 16 kB. Cechą
charakterystyczną dla procesorów Intel-MMX jest (począwszy od wersji 166) podwójne
napięcie zasilające. Układy odpowiedzialne za współpracę z magistralami (I/O, Input
Output) zasilane są innym napięciem niż sam rdzeń obliczeniowy (Core).

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.

Pentium Pro jest przede wszystkim procesorem superskalarnym zdolnym do finalizowa­


nia więcej niż jednej instrukcji w jednym cyklu zegarowym (w korzystnych warunkach
są to trzy instrukcje). Jądro jego nie przetwarza jednak instrukcji x86 w formie bezpo­
średniej; są one zamieniane w układach dekodera na małe elementy zwane mikroopera-
cjami (pOps).
Komunikacja procesora z innymi elementami architektury komputera 69

Rysunek 1.33. Intel MMX


Schemat blokowy Adres
procesora L1 Code Cache: 16kB
Pentium MMX

PREFETCH

Sterowanie
< W
DECODE

Zegar

MMX

Magistrala
i
Dual-CPU
X
9

/FPU

Przerwania
w systemie
Dual-CPU

Procesor dysponuje czterema obwodami dekodującymi, które uruchamia się w zależ­


ności od stopnia komplikacji materiału wejściowego. Do dyspozycji stoi jeden dekoder
główny ogólnego przeznaczenia (General Decoder ), dwa proste {Simple Decoder) dla
krótkich instrukcji jak np. przesłania międzyrejestrowe oraz jeden sekwencer {pOps
Sequencer) wywoływany w razie napotkania długich i skomplikowanych instrukcji IA
{Intel Architecture , termin zamienny na ciąg instrukcji x86, często występujący w litera­
turze, zwłaszcza czerpiącej swe źródła z firmy Intel).

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

| Mnożnik (BF) 1 2,5 2,5 3,0 1,5


Ll-Cache (kod) [kB] 16 kB, 4x Associative
Ll-Cache (dane) [kB] 16 kB, 4x Associative, WB
L2-Cache on Chip
Pipe-Lines 2
Pipe-Line Stages 6 (FP: 8)
Out o f Order Execution
Branch History Table 256
Branch Target Buffer 256
V CORE [ V ] 1 3’3 2,8 2,8 2,8
v ¡/0 [V] 3,3 3,3 3,3 3,3
Pobór mocy, max. [W] 1 11,6 13,1 15,7 18
Return Stack 4
Renaming Registers
Performance Monitoring
Time Stamp Counter
Podstawka Socket 7

Wytwarzane w dekoderze mikrorozkazy lądują w buforze ROB ( Reorder Buffer).


W jednym cyklu zegarowym może być tam umieszczone do sześciu pOps. W sumie
bufor jest w stanie przyjąć do 40 mikrokodów. ROB stanowi centralny punkt koordy­
nacji dla wszystkich aktualnie przetwarzanych rozkazów {Instruction Pool), również
tych wykonywanych poza kolejnością {Spéculative Execution). Zapamiętywane są więc
wszelkie wyniki pośrednie i towarzyszące im stany rejestrów flagowych procesora.
ROB odpowiedzialny jest również za rozwiązywanie uzależnień instrukcji: do tego celu
służy zestaw 40 rejestrów (RAT, Register Alias Table), które są podstawiane w miejsce
klasycznych rejestrów ogólnego przeznaczenia (RRF, Real Register File). System przy­
działu rejestrów obsługuje w jednym cyklu zegarowym do 3 mikroinstrukcji. Tak w y­
posażone, lądują w specjalnej kolejce {Réservation Station).

Kolejka grupuje do 20 mi kro operacji, które oczekują na skompletowanie swoich ope-


randów. Skoro tylko to nastąpi, system oznacza je jako gotowe i kieruje do realizacji do
właściwej jednostki wykonawczej. Szybkość przetwarzania poszczególnych jednostek
Komunikacja procesora z innymi elementami architektury komputera 71

Rysunek 1.34. TLB: 32 rekordy


Schemat blokowy ............
Intel, P-Pro
procesora v F L1 Code Cache: 8kB
Adres 64
Pentium Pro
Instr. Decoder
Simple Decoder )iOF#33
jiO P ttti
iiO P * 7

► Simple Decoder jtOPm


Dane « la
; 4 pop |iOP#1
> General Decoder ">iOR#0
Instruction
Fetch Unit In-Order ÏT Ï
Section
o
o
ca
Out-of*Order
a> Execution Engine

CO
Sterowanie
<- ► CD

Store Load
Addr Addr
Zegar Unit Unit

Memory Reorder Buffer


(MOB)
3 |.iOP 1HOP
64 (store) (load)

L2 Cache L1 Data Cache: 8kB


256/512kB
TLB: 64 rekordy

jest bardzo zróżnicowana. Bloki operujące na liczbach całkowitych realizują większość


rozkazów w jednym cyklu zegarowym. Mnożenia pochłaniają jednak aż cztery takty
(dla porównania, Pentium: 7 - 14) a dzielenia od 12 do 36 (Pentium 42 - 84). W przy­
padku jednostek zmiennoprzecinkowy różnice nie są aż tak drastyczne: dodawanie
zajmuje 3 takty (tyle co w Pentium) a mnożenie przebiega nawet o dwa takty szybciej.
Dzielenie zajmuje Pentium Pro od 18 do 38 taktów zegara a Pentium 39.

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

166-512 180-256 200-256 200-512


Architektura RISC
Zegar CPU [MHz] 166 180 200 200
Magistrala [MHz] 66 60 66 66
Mnożnik (BF) 2,5 3 3 3
LI-Cache (kod) [kB] 8 kB, 4x Associative
Ll-Cache (dane) [kB] 8 kB, 4x Associative, WB
L2-Cache on Chip I 512 (4x Ass.), 256 (4x Ass.), 256 (4x Ass.), 512 (4x Ass.),
1 CPU Clock CPU Clock CPU Clock CPU Clock
Pipe-Lines 5
Pipe-Line Stages 14 (FP: 16)
Out o f Order Execution Z (40)
Branch Target Buffer 512
Vu [V] 3,3
VCORE [V ] 3,3 3,3 3,3 3,3
Vi/o [V]
Pobór mocy, typ. [W] 27,5 24,8 27,3 32,6
Return Stack 4
Renaming Registers 8 + 32
Performance Monitoring
Time Stamp Counter
Podstawka Socket 8
System niezgodny z Pentium

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

Skomplikowany system przepowiadania rozgałęzień (Branch Prediction Unit) pracuje


w oparciu o 512 wierszową (dwukrotnie więcej niż w Pentium) tablicę BTB (Branch
Target Buffer ). Zapamiętywane są również skomplikowane sekwencje rozgałęzień (pętle
zagnieżdżone). BTB używa odmiany tzw. algorytmu Yeh.
_ p _

Ż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ą.

W pełni zakończone operacje przechodzą do tzw. fazy Retirement co oznacza usunięcie


składników pOps z bufora ROB i ustanowienie nieodwracalnych zmian opisanych przez
instrukcję x86.

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.

Wyizolowanie ze struktury procesora pamięci podręcznej drugiego poziomu (Second


Level Cache) stanowi według powszechnej opinii krok wstecz w rozwoju. Posunięcie
takie podyktowane zostało jednak dobrze przemyślanymi względami ekonomicznymi.
Struktura scalona o tak ogromnym stopniu integracji i komplikacji jak Pentium Pro
(zanurzone w jednej obudowie dwa potężne układy scalone: CPU i blok pamięci pod­
ręcznej, zależnie od wersji 256 kB lub 512 kB) jest niezmiernie podatna na uszkodzenia,
choćby w fazie drutowania11. Duży odrzut niesprawnych jednostek Pentium Pro (czy to
ze względu na błąd w bloku pamięci, czy to na wadliwy procesor) podrażał ogromnie
koszty produkcji poprzednika Pentium II.

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

większa podatność techniki Pentium Pro na pracę środowisku multiprocesorowym - do


czterech procesorów - nie okazała się jednak przeważającym argumentem w środo­
wisku powszechnych użytkowników; procentowa obecność systemów tego rodzaju
pozostała po dziś dzień marginalna).

Całkowite odsunięcie pamięci podręcznej od procesora i jej powrót na płytę główną


byłoby jednak rzeczywiście cofnięciem się zbyt daleko wstecz. Sięgnięto więc po
rozwiązanie kompromisowe i skonstruowano moduł hybrydowy (rysunek 1.35).

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

Procesor rezyduje teraz wraz dwoma układami pamięciowymi na specjalnej karcie.


Kontakt z płytą główną zapewnia listwa o 242 kontaktach. Z płyty głównej procesora
Pentium II znika więc charakterystyczna do tej pory kwadratowa podstawka (Socket 7)
a jej miejsce zajmuje złącze krawędziowe określane mianem Slot L

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).

Osadzona na module hybrydowym procesora Pentium II pamięć L2 zorganizowana jest


w formie czterech chipów typu BSRAM (Burst-Cache) co razem daje 512 kB (W po­
czątkowej fazie sprzedaży wprowadzano do obiegu również wersje procesora z 256 kB
cache). Dodatkowy piąty chip przejmuje funkcje oznacznika (Tag-RAM).
Komunikacja procesora z innymi elementami architektury komputera 75

Tabela 1.17.
Podstawowe dane procesorów Pentium II (Klamath)

233* 266* 300


Architektura RISC
Technologia 0,35 pm
[ Zegar CPU [MHz] 233 266 300
1Magistrala [MHz] 66 66 66
| Mnożnik (BF) 3,5 4,0 4,5
1LI-Cache (kod) [kB] 16 kB, 4x Associative
I Ll-Cache (dane) [kB] 16 kB, 4* Associative, WB
\ L2-Cache (1/2 CPU-Clock) 512 512 512
Pipe-Lines 7
Pipe-Line Stages 12 (FP: 16)
Out o f Order Execution
Branch History Table 512
Branch Target Buffer 512
VL2 [V] 3,3 3,3 3,3
VcORE [V] 2,8 2,8 2,8
Vyo [V] 3,3 3,3 3,3
¡ c o r e typdmax. [A] 6 ,9 /1 1 ,8 7 ,8 /1 2 ,7 8 ,7 /1 4 ,2
Return Stack 4
Renaming Registers 8 + 32
[

Performance Monitoring V

\ Time Stamp Counter


Podstawka Slot 1
W początkowej fazie wprowadzania na rynku były obecne modele wyposażone
zarówno w 256 kB jak i w 512 kB L2-Cache
System niezgodny z Pentium.

Pamięć L2 w Pentium Pro była ze względu na bliskość lokalizacji taktowana wprost


zegarem CPU. Dla zewnętrznej pamięci podręcznej Pentium II tak wysoka prędkość jest
nie do przyjęcia. Dostęp do L2 odbywa się z częstotliwością równą połowie taktu ze­
gara procesora. Szybszy dostęp nie jest możliwy ze względu na fizyczne rozmiary (a co
za tym idzie impedancje własne) ścieżek drukowanych stanowiących doprowadzenia do
modułu L2. Ograniczenie to stanowi bardzo poważny czynnik obniżający wydajność
całego systemu. Lepsza organizacja L2 i jej stosunkowo duży rozmiar mają przynaj­
mniej w pewnym stopniu rekompensować ten wpływ. W porównaniu z częstotliwością
taktowania L2 w klasycznym Pentium (66 MHz niezależnie od odmiany procesora) 150
MHz osiągane w modelu Pentium 11/300 jest i tak nie do pogardzenia.
76 Anatomia PC

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

Vito [V] 1 3,3 3,3 3,3 3,3


\ Ic o re max. [A] 1 9,3 10,8 12,6
Return Stack 4
Renaming Registers 8 + 32
**
Performance Monitoring
Time Stamp Counter
Podstawka Slot 1
Planowany na drugą połowę 1998
**
System niezgodny z Pentium.

W ślad za kolejnymi modelami procesorów Pentium II postępują następne generacje


układów scalonych otoczenia procesora (Chip-Set). W roku 1997 wprowadzono na ry­
nek nowy zestaw układów scalonych oznaczony symbolem 440LX. Został on specjalnie
zaprojektowany dla procesora Pentium II a jego najbardziej charakterystyczną cechą
jest obsługa pamięci typu SDRAM, mimo iż nadal z częstotliwością 66 MHz. Podwyż­
szenie zewnętrznej częstotliwości taktującej do 100 MHz osiąga następna generacja
układów (440BX) dedykowana strukturom krzemowym wykonywanym w technologii
0.25pm (Deschutes).
Komunikacja procesora z innymi elementami architektury komputera 77

Rysunek 1.36. Intel, P-


Schemat blokowy L1 Code Cache: 16kB
procesora
Pentium II Adres

Fetch
Dane Decode

64
Instruction
<D Pool
O
(O
a>
Sterowanie Retire
co Execute
Unit
m
Load Store

Zegar “ '" " " " F


L1 Data Cache: 16kB

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.

W ścisłym związku ze zbiornikiem centralnym pozostaje układ dyspozytora (.Dispatch­


er ), który steruje wypływem kompletnych makroinstrukcji kierując je do właściwych
jednostek wykonawczych (Execute). Kolejność przetwarzania kodów RISC pozostaje
w bardzo luźnym związku z pojawianiem się ich odpowiedników w kodzie programu.
Tylko w ten sposób osiągnąć można ogromną wydajność takiego procesora. Dyspozytor
78 Anatomia PC

kieruje do wykonania te mikrokody, które aktualnie nie czekają na żadne wyniki


pośrednie z innych operacji. Również konieczność oczekiwania na wyniki instrukcji
warunkowych nie hamuje procesu przetwarzania.

Wykonane instrukcje RISC kierowane są z powrotem do zbiornika. Postępowanie takie


jest konieczne bowiem znaczna część z nich wykonywana została jedynie w wyniku
przypuszczalnie przewidywanego biegu programu. Powrót do zbiornika gwarantuje rów­
nież ich ponowne uszeregowanie, zgodne z pozycją zajmowaną w kodzie źródłowym.
Instrukcja uznana za wykonaną opuszcza zbiornik i przechodzi w fazę spoczynkową
(Retire) a wyniki jej działania są utrwalane. Dopiero teraz mają więc miejsce wszelkie
zapisy do pamięci.

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:

• Brak kontrolera cache, co uniemożliwia ewentualne uzupełnienie nawet na płycie


głównej brakującego L2.
• Brak możliwości realizacji trybu kontroli ECC w pamięci operacyjnej.

• 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.

Powyższe proporcje ulegają zmianie w konkurencji gier komputerowych. Aplikacje tego


rodzaju były zawsze pisane (ze względu na szybkość) w formie zwięzłych procedur, tak
iż ich przeważająca część mieści się w pamięci podręcznej LI a brak L2 nie jest aż tak
Komunikacja procesora z innymi elementami architektury komputera 79

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

Vito [V] 3,3 3,3


Pobór mocy, max. [W] 16,8 18,8
Return Stack 4
Renaming Registers 8 + 32
Performance Monitoring y
Time Stamp Counter y
Podstawka Slot 1
System niezgodny z Pentium

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

• Pamięć podręczna L2 zbudowana jest z modułów typu CS RAM (opracowanie


własne Intela), które w odróżnieniu od dotychczasowych układów (PBRAM)
zdołne są do pracy z pełną częstotliwością zegarową procesora. Rozmiary L2
mogą wynosić nie tylko 512 kB ale i również 1 MB lub 2 MB.

• Praca w systemie multiprocesorowym możliwa jest z udziałem czterech CPU.

• Mnogość nowopowstałych sygnałów sterujących zmusiła do skonstruowania po­


jemniejszego złącza krawędziowego nazywanego tu Slot 2.

• 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.

Xeon współpracuje z jednym z nowoopracowanych układów sterujących dla płyt głów­


nych. Pierwszy z nich (przeznaczony do stacji roboczych) to zestaw o nazwie 440GX
stanowiący wzmocnioną wersję znanego już 440BX. Układ ten steruje magistralą 100
MHz oraz szyną AGP w trybie 2x. Pamięć systemu może być rozbudowana do 2 GB
i wykorzystuje szybkie pamięci SDRAM taktowane zegarem 100 MHz (PC-100).

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).

450NX stanowi poprawioną wersję sterownika 450GX-Orion, opracowanego swego


czasu dla potrzeb procesorów Pentium Pro. Pamięć takiego systemu taktowana jest
wprawdzie zegarem 100 MHz ale stosować można wyłącznie moduły EDO (oryginalny
ORION uznawał tylko pamięć Fast Page). 450NX dziedziczy po Orionie jeszcze jedną
cenną właściwość, którą jest możliwość poczwórnego zazębiania się banków pamięci
( Interleave ). System wyposażony w cztery jednakowe moduły EDO-RAM osiąga przez
to bardzo dobre parametry (Burst x -1 -l-l).

Jak rozpoznać typ procesora


Ponieważ procesory rodziny 80x86 nie są zgodne w dół (program napisany specjalnie
dla procesora 486 nie będzie działał na procesorze 8086), może zaistnieć konieczność
rozpoznawania, z jakim procesorem mamy do czynienia. Zaprezentowany algorytm
(rysunek 1.37) bazuje na specyficznych własnościach poszczególnych grup procesorów.
Na jego podstawie można określić, do jakiej grupy należy rozpatrywany procesor
(zgodny z 8086, 80186, 80286, 80386, i486, Pentium), nie można jednak stwierdzić, kto
jest jego producentem.
Komunikacja procesora z innymi elementami architektury komputera 81

Rysunek 1.37.
Algorytm
rozpoznawania
typu procesora

±
Pentium

Czy procesor jest zgodny z układem 80286 lub lepszym


Jak widać, identyfikacja procesorów przebiega w dwóch gałęziach. W pierwszym kroku
określane jest, czy procesor jest zgodny z układem 286 lub lepszym. Można to ustalić
na podstawie rejestru stanu (FLAGS). Znaczenie bitów 12-15 w rejestrze stanu zostało
zdefiniowane począwszy od procesora 80286 (oczywiście znaczenie bitów 0-11 nie
uległo zmianie). W procesorach 8086/88 i 80186/88 bity 12-15 nie są wykorzystywane
— ich wartość jest zawsze równa 1. Zatem testując możliwość zmiany wartości bitów
12-15 w rejestrze stanu można rozpoznać, czy mamy do czynienia z procesorem
8086/88 lub 80186/88, czy 80286 albo lepszym.

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

t i wpisanie jego wartości do rej estru stanu


pushf zapisanie wartości rejestru stanu na stosie
pop ax f i wpisanie jego wartości do rejestru ax
and ax,Of000h ł
m

wyzerowanie wszystkich bitów za wyjątkiem 12 -15


cmp ax,Of000h t sprawdzenie, czy bity 12-15 mają wartość 1
je mniej_286 f jeżeli tak, to procesor 8086/88 lub 80186/88
jne lepiej 286 r jeżeli nie, to procesor 80286 lub lepszy
82 Anatomia PC

Procesor 8086/88 czy 80186/88


Rejestr stanu nie możne być wykorzystany do odróżnienia procesorów 8086/88 od
80186/88. Trzeba znaleźć inną różnicę - na przykład zmiany dokonane w instrukcji
przesunięcia logicznego (shr argl, arg2).

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.

mov al,0ffh wpisanie do rejestru al wartości ffh - argl


mov cl,021h wpisanie do rejestru cl wartości 21h - arg2
shr a ! , c l dokonanie przesunięcia
jz p_8086 czy al jest równy 0? tak, to procesor 8086/88
jnz p 80186 jeżeli nie, to procesor 80186/88

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.

Procesor 486 czy Pentium


W procesorze Pentium został wprowadzony znacznik identyfikacji (21 bit w rejestrze
statusu). W procesorach 486 wartość 21 bitu wynosi 0 i nie można jej zmieniać, dlatego
znacznik identyfikacji można wykorzystać do odróżnienia procesorów 486 od Pentium
—wystarczy sprawdzić, czy można ustawić 21 bit w rejestrze statusu.
Komunikacja procesora z innymi elementami architektury komputera 83

Przedstawiony algorytm nie daje możliwości rozróżnienia procesorów i486DX, i486SX


i i487SX (rozpoznanie procesora i486SX wymaga dodatkowego testu na brak koproce­
sora).

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ć).

Koprocesory wspomagają procesor w obliczeniach numerycznych. Każdy procesor


80x86 jest przystosowany do współpracy z odpowiadającym mu koprocesorem 80x87.
Wyjątkiem jest procesor 80386, który w niektórych systemach może współpracować
z układem 80287, zamiast 80387, oraz procesory 80486 i lepsze, które mają wbudowa­
ny koprocesor.

Z punktu widzenia programisty, obecność w systemie koprocesora powoduje postrzega­


nie układu procesor-koprocesor jako jednego procesora o:
• zwiększonej liczbie rozkazów;

• zwiększonej liczbie rejestrów;


• zwiększonej liczbie typów danych.

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.

Koprocesory 80x87 nie mogą pracować samodzielnie, mogą natomiast pracować


równolegle z procesorem, wspomagając go w obliczeniach numerycznych.

Jeżeli podczas wykonywania programu procesor natknie się na instrukcję przeznaczoną


dla koprocesora, to interpretuje ją jako rozkaz esc - jeśli jest to konieczne, oblicza ad­
res argumentów i wykonuje cykl dostępu do pamięci, jako że koprocesor nie ma układu
umożliwiającego obliczanie adresu (może natomiast realizować transmisję danych,
jeżeli do skompletowania argumentu niezbędne są kolejne bajty z pamięci). Następnie
procesor rozpoczyna wykonywanie kolejnej instrukcji, niezależnie od tego, czy kopro­
cesor zakończył obliczenia.

Koprocesor „obserwuje” wykonywanie kolejnych instrukcji programu. Ignoruje


rozkazy przeznaczone dla procesora. Po napotkaniu instrukcji przeznaczonej dla
koprocesora przystępuje do jej wykonania. Jeżeli rozkaz wymaga dostępu do pamięci,
84 Anatomia PC

pobiera z magistrali adresowej i zapamiętuje adres obliczony wcześniej przez procesor -


umożliwia to skompletowanie całego argumentu*

W trakcie wykonywania obliczeń koprocesor utrzymuje aktywny sygnał na wyprowa­


dzeniu BUSY - umożliwia on synchronizacje pracy procesora i koprocesora.

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.

Do synchronizacji pracy procesora i koprocesora można wykorzystać instrukcję w a it -


powoduje ona wstrzymanie działań procesora do czasu pojawienia się aktywnego syg­
nału na wyprowadzeniu -TEST (wyprowadzenie to jest połączone z wyprowadzeniem
BUSY 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:

• układu sterującego (ang. control unit);


• układu obliczeń numerycznych (ang. numeric execution unit).

Układ sterujący odpowiada za synchronizację pracy koprocesora z procesorem. Do jego


zadań należy: pobieranie i dekodowanie rozkazów, pobieranie danych z pamięci i ich
zapisywanie oraz wykonywanie rozkazów sterujących pracą koprocesora.

Z kolei układ obliczeń numerycznych wykonuje wszystkie rozkazy numeryczne - doda­


wanie, odejmowanie, dzielenie, mnożenie, wartość bezwzględną, zmianę znaku, resztę
z dzielenia, zaokrąglanie, logarytmowanie, obliczanie pierwiastka kwadratowego, itp.
Koprocesor może również generować stałe umożliwiające obliczanie wartości wielu
funkcji - +1.0, + 0 .0 ,7t, log2(e), log2(10), logi0(2), loge(2).

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:

• układu sprzężenia magistrali (ang. bus interface unit);


• układu obliczeń numerycznych (ang. numeric exécution unit).

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.

Kolejna różnica między koprocesorem 8087 a 80287 i 80387 to możliwość generowania


żądania przerwania w razie wystąpienia nie zamaskowanego błędu w trakcie obliczeń.
Koprocesory 80287 i 80387 są tej cechy pozbawione - po wystąpieniu błędu ustawiany
jest sygnał ERROR (~ERROR=0), który oddziaływując bezpośrednio na procesor ;
wymusza wykonanie procedury obsługi błędu.

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:

• układu sterowania magistrali (ang. bus control logie);

• układu sterowania z układem sprzężenia magistral (ang. data interface and


contr ol unit);
• układu obliczeń numerycznych (ang. numeric exécution unit).
i
a
<

Układ sterowania magistrali zapewnia komunikację koprocesora z mikroprocesorem, j


Procesor traktuje ten układ jak układ wejścia-wyjścia o adresach portów 0f0h-0ffh -
koprocesor nie ma bezpośredniego dostępu do pamięci (za dostęp do pamięci odpowia- j
da procesor). Układ sterowania magistrali musi pracować synchronicznie z procesorem.
i
i

ÿ
p

Układ sterowania z układem sprzężenia magistral jest odpowiedzialny za przesyłanie j


danych do i z układu obliczeń numerycznych, pobieranie i dekodowanie rozkazów oraz j
sterowanie ich wykonaniem.
86 Anatomia PC

Układ obliczeń numerycznych został poważnie zmodyfikowany —koprocesory 80386


i lepsze mogą obliczać wartości funkcji trygonometrycznych.

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).

Jak rozpoznać typ koprocesora


Rozpoznawanie typu koprocesora może wydawać się zajęciem nieco archaicznym, gdyż
począwszy od układu i486DX procesory 80x86 mają wbudowany koprocesor. Pracuje
jednak jeszcze niewiele systemów wyposażonych w procesory 80386, które mogą
współpracować z koprocesorem 80287 lub 80387. Dlatego umiejętność rozpoznawania
koprocesorów może się czasami przydać.

Przedstawiony algorytm (rysunek 1.38) umożliwia wykrycie obecności koprocesora


i rozpoznanie jego typu (8087, 80287, 80387). W algorytmie nie został uwzględniony
koprocesor i487SX, gdyż jest to de facto pełnowartościowy układ 486DX — spraw­
dzenie, czy w systemie 486 jest koprocesor sprowadza się zatem do rozpoznania typu
procesora i przeprowadzenia testu na obecność koprocesora (pierwszy krok algorytmu).

Rysunek 1,38.
Algorytm Czypoinicjalizacji
koprocesora biły 0-7
rozpoznawania słowa stanu
Ni e— brak koprocesora

typu koprocesora są zerowane?

T a k -> [ 8087 ]

— i ---------------------.
80387 tub lepszy |
Komunikacja procesora z innymi elementami architektury komputera 87

Czy w systemie jest koprocesor


Obecność koprocesora w systemie można sprawdzić na kilka sposobów. Najprostszy
z nich to sprawdzenie zmiennej systemowej zawierającej listę sprzętu. Zmienna ta ma
adres 0040:0010h (00410h). Jeżeli bit numer 1 jest ustawiony, to znaczy że, w systemie
jest koprocesor.

Inna metoda - znacznie pewniejsza - to próba inicjalizacji koprocesora i sprawdzenie,


czy w słowie stanu koprocesora zostały wyzerowane bity 0-7. Metoda ta jest nieza­
wodna i bezpieczna (komendy koprocesora są ignorowane przez procesor).

finit inicjalizacja koprocesora


mov fpu_stan,5a5ah nadanie fpu__stan wartości różnej od 0
fnstsw fpu_stan zapisanie słowa stanu w fpu_stan
mov ax,fpu__stan skopiowanie fpu_stan do rej estru ax
cmp al,0 sprawdzenie, czy bity 0-7 są równe 0
j z jest_koprocesor tak - w systemie jest koprocesor
jnz bez koprocesora nie - w systemie nie ma koprocesora

Można również sprawdzić, czy po inicjalizacji koprocesora ustawione są bity 8 i 9


w słowie sterującym.

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.

finit inicjalizacja koprocesora


and fpu_ster,Off7fh bit 7 w fpu ster ma wartość 0
fldcw fpu_ster załadowanie fpu__ster do słowa sterującego
fdisi ustawienie bitu 7 w słowie sterującym
fstew fpu_ster skopiowanie słowa kontrolnego do fpu_ster
test fpu_ster,80h sprawdzenie, czy bit 7 jest ustawiony
jne k_8087 tak - koprocesor 8087
je k 80287 nie - koprocesor 80287 lub lepszy

Koprocesor 80287 czy 80387


Aby odróżnić koprocesor 80287 od 80387 i lepszych trzeba wykorzystać fakt, że w pro­
cesorze 80287 nie można zmienić znaku nieskończoności (+oo = -oo).

fini t inicjalizacja koprocesora


fldl umieszeza na stosie stałą +1
fldz umieszcza na stosie stałą +0
fdiv generowanie nieskończoności (1/0)
88 Anatomia PC

fld st powielenie nieskończoności na stosie


fchs i zmienienie znaku
fcompp porównanie + i - nieskończoności
fstsw fpu_stan ; skopiowanie słowa stanu do fpu_stan
mov ax, fpu__stan ; a potem do rejestru ax
sahf skopiowanie rejestru ah do mniej
m

t znaczącego bajtu rejestru stanu


ł odpowiednie znaczniki ze słowa stanu
*

zostaną wstawione do rejestru stanu


jz k_80287 ; czy równe? tak - koprocesor 80287
jnz k_80387 nie - koprocesor 80387 lub lepszy
. . .

Będący pierwowzorem dla modelu XT mikrokomputer IBM PC był konstrukcją ośmio-


bitową, która ma dzisiaj znaczenie wyłącznie historyczne i którą nie będziemy się zaj­
mować. Rozwiązania przyjęte w modelu XT nie różnią się w sposób istotny od stoso­
wanych po dzień dzisiejszy w najnowszych modelach PC/AT. Proces śledzenia etapów
rozwojowych w tej dziedzinie rozpoczniemy więc od modelu XT.

Dostęp do przestrzeni wejścia-wyjścia


Procesory serii 80x86 mogą adresować dwa nakładające się na siebie obszary. Oba
z nich adresowane są poprzez tę samą systemową magistralę adresową, a wymiana
danych między nimi a procesorem odbywa się tą samą systemową magistralą danych.

Pierwszy z omawianych obszarów stanowi pamięć operacyjną. Można się do niego


odwoływać używając przykładowo rozkazu mov x , y (gdzie x i y mogą określać adres
w pamięci lub jeden z rejestrów procesora). Drugi obszar określany jest mianem
przestrzeni wejścia-wyjścia (ang. 1/0 , Input/Output), a zwracać się doń można za pomo­
cą rozkazów in a, port i out port, a (gdzie port symbolizuje lokalizację w prze­
strzeni adresowej wejścia-wyjścia, zaś a jest akumulatorem - jednym z rejestrów proce­
sora). Rozkazy z grupy mov dopuszczają użycie jako argumentu w zasadzie dowolnego
rejestru procesora (z niewielkimi wyjątkami, na przykład niedozwolone są przesłania
pomiędzy rejestrami segmentowymi). W przeciwieństwie do nich, rozkazy in i out
akceptują wyłącznie akumulator - AX dla portów 16-bitowych lub AL dla portów
8-bitowych. O tym, który z tych dwóch obszarów będzie wybrany i jaki będzie kierunek
przekazywania informacji (do czy od CPU) decydują sygnały systemowej magistrali
sterującej:
10WC zapis do przestrzeni wejścia-wyjścia;
IORC odczyt z przestrzeni wejścia-wyjścia;
MRDC odczyt z pamięci;
MWDC zapis do pamięci
Komunikacja procesora z innymi elementami architektury komputera 89

20 linii adresowych procesora 8086 umożliwia dostęp do przestrzeni adresowej o wiel­


kości 1 MB. Zastosowany w 8086 mechanizm adresowania wykorzystuje tzw. segmen­
tację. 20-bitowy adres fizyczny składany jest z 16-bitowego adresu segmentu (ang.
segment address ), zapisanego w jednym z rejestrów segmentowych procesora (CS, DS,
ES lub SS) i 16-bitowego przemieszczenia wewnątrz segmentu (ang. offset address ),
4

zapisanego w jednym z pozostałych rejestrów

Bezpośrednią konsekwencją przyjętego sposobu adresowania jest logiczny podział


pamięci na segmenty o wielkości do 65536 bajtów, natomiast najistotniejszą konsek­
wencją pośrednią —możliwość relokacji kodu z dokładnością do 16 bajtów (minimalna
różnica pomiędzy początkami dwóch różnych segmentów). Sposób tworzenia adresu
fizycznego na podstawie zapisanego w odpowiednich rejestrach adresu logicznego (w
postaci segment:offset) przedstawia rysunek 1.39.

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

Procesor uzyskuje dzięki temu możliwość programowania różnych układów peryferyj­


nych za pomocą instrukcji out. Jest również możliwe sprawdzanie stanu urządzenia przez i

pobranie zawartości jego rejestru statusowego instrukcją in. Przekazywanie danych


między obsługiwanym przez dany sterownik urządzeniem peryferyjnym a pamięcią \
odbywa się (w zależności od kierunku) za pomocą instrukcji in i out. |

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

Procesory 8086 i 8088


Procesor 8086
Dla tego procesora charakterystyczne są dwa tryby pracy: minimalny i maksymalny.

W trybie minimalnym procesor sam wytwarza sygnały sterowania magistralą systemo­


wą. Tryb maksymalny wymaga obecności specjalnego dekodera 8288, który - bazując
na sygnałach statusowych S0-S2 procesora - wytwarza niezbędne sygnały sterujące.
W związku z powyższym końcówki 24-31 układu 8086 zmieniają swoje znaczenie
w zależności od trybu pracy. Schemat wyprowadzeń mikroprocesora 8086 pokazany
jest na rysunku 1.40.

Rysunek 1.40. Tryb "MAX" Tryb "MIN"


Rozkład k_X“
wyprowadzeń G ND CZ 1 40 Vcc
procesora 8086 AD14 I 2 39 Z] AD15
AD13 d 3 38 ZD A16/S3
AD12 cz 4 37 !Z I A 17/S4
AD11 r~ 5 36 =□ A 18/S 5
AD10 i- 6 35 =1 A 19/S 6
AD9 7 34 _l B H E /S 7
AD8 cz 8 33 M N /M X
AD7 cz 9 32 z: RD
AD6 cz 10 31 =□ RO /G TO HO LD
AD5 cz 11 8086 30 Z 3 R Q /G T1 HLDA
AD4 12 29 ZD LO C K WR
AD3 I 13 28 =1 S2 M /IO
AD2 cz 14 27 Z ] S1 D T /R
AD1 d 15 26 =1 SO DEN
ADO cz 16 25 1 — GSO ALE
NMI I— 17 24 =1 QS1 INTA
INTR I— 18 • • 23 ZD TEST
CLK 1 19 22 READY
G ND 20 21 ZD RESET
■=
Oto znaczenie poszczególnych wyprowadzeń:
A D 15-A D 0 16-bitowa magistrala danych procesora oraz jednocześnie
16 mniej znaczących bitów 20-bitowej magistrali adresowej.
W obsłudze magistrali wykorzystany jest proces zwany
multipleks owaniem: końcówki AD 15—ADO są wykorzystane
najpierw do wystawienia adresu, po czym zmieniają swe
znaczenie i obsługują szynę danych;
Komunikacja procesora z innymi elementami architektury komputera 91

A 19-A 16/S6-S3 brakujące cztery najbardziej znaczące bity adresu i jednocześnie


(multipleksowane) cztery iinie statusowe, informujące
o używanym w danej operacji rejestrze segmentowym oraz
o stanie bitu IE (Interrupt Enable) maskującego przerwania:

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)

o 0 1 procesor czyta z przestrzeni wejścia-wyjścia


o 1 0 procesor pisze do przestrzeni wejścia-wyjścia
0 1 1 HALT, procesor w stanie oczekiwania
1 o 0 trwa uzupełnianie podręcznej kolejki rozkazów
1 0 1 procesor czyta z pamięci
1 ł 0 procesor pisze do pamięci
1 1 1 stan pasywny
RQ/GTO, regulują dostęp do szyny lokalnej, którą połączone są układy
RQ/GT1, bezpośredniego dostępu do pamięci (DMA), procesor
LO C K i koprocesor;
QS0-QS1 podają stan podręcznej kolejki rozkazów (Prefetch Queue);
MN/~MX przełącznik trybu pracy MIN/M AX (1 = tryb minimalny, 0 = tryb
maksymalny);
V cc wejście napięcia zasilającego (+5V);
GND masa zasilania.

Modele PC/XT używają procesora 8086 wyłącznie w trybie maksymalnym (wspoma­


ganego kontrolerem magistrali 8288), tak więc nie będziemy się zajmować sygnałami
procesora 8086 pracującego w trybie minimalnym.
Komunikacja procesora z innymi elementami architektury komputera 93

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.

Następną różnicę w stosunku do procesora 8086 stanowi zredukowana do 4 bajtów dłu­


gość kolejki rozkazów. Kolejka ta jest uzupełniana jednocześnie z wykonywaniem roz­
kazu (jeśli aktualnie wykonywany rozkaz nie wymaga dostępu do magistrali) już przy
„ubytku” jednego baj tu (dla porównania, w 8086 począwszy od dwóch bajtów). Czas
dostępu do bajtu pamięci wynosi cztery cykle zegarowe. Może się więc zdarzyć, że ko­
lejka wypełniona rozkazami nie wymagającymi argumentów pobieranych z pamięci (na
przykład clc, ror, sti) wyczerpie się szybciej, niż nastąpi jej uzupełnienie. Stanowi to
dodatkowy „hamulec” w pracy procesora.

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

INTA oraz statusu procesora. Steruje on również pracą rejestrów zatrzaskowych


(ang. latch) buforów magistrali adresowej i danych. Stosowanie tego rodzaju rejestrów
jest niezbędne, bowiem dane i adresy muszą być utrzymywane na szynach tak długo,
jak długo jest to potrzebne dla prawidłowego zakończenia operacji transmisji danych.
W przeciwnym przypadku mogłoby się zdarzyć, że wystawione przez pamięć lub
układy wejścia-wyjścia na szynę danych słowo zniknęłoby z niej, zanim procesor zdą­
żyłby je przejąć. To samo obowiązuje oczywiście przy operacji wysyłania danych przez
procesor.

Rozkład wyprowadzeń układu 8288 przedstawia rysunek 1.41.

13 Są to rejestry przechowujące załadowaną do nich wartość do chwili załadowania następnej.


94 Anatomia PC

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

Poszczególne wyprowadzenia opisano poniżej.


SO — S2 połączone są z wyjściami -SO - ~S2 procesora;
C LK wejście doprowadzające sygnał zegara systemowego z układu 8284;
MB wejście sterujące trybem pracy magistral. Stan 1 (tryb
MULTIBUS) odpowiada powszechnie stosowanemu protokołowi
firmy Intel, 0 wymusza maksymalną prędkość pracy magistral;
-M W TC (Memory Write) - niski poziom logiczny na tym wyjściu ustala
kierunek przesyłania danych na „CPU —> pamięć”;
M RDC (Memory Read) - niski poziom logiczny na tym wyjściu ustala
kierunek przesyłania danych na „pamięć —» CPU”;
IOW C (Input/Output Write) - niski poziom logiczny na tym wyjściu
ustala kierunek przesyłania danych na „CPU —» układ wejścia-
wyjścia
IO RC (Input/Output Read) - niski poziom logiczny na tym wyjściu ustala
kierunek przesyłania danych na „układ wejścia-wyjścia -» CPU”;
DEN (Data Enable) - niski poziom logiczny na tym wyjściu jest
sygnałem dla rejestru zatrzaskowego bufora magistrali danych,
powodującym „zamrożenie” w nim aktualnego stanu tej
magistrali;
A LE (Address Latch Enable) - niski poziom logiczny na tym wyjściu
jest sygnałem dla rejestru zatrzaskowego bufora magistrali danych,
powodującym „zamrożenie” aktualnego stanu tej magistrali;
D T/-R (Data Transmit/Receive) - informuje o aktualnym ogólnym
kierunku pracy szyny; 1 = zapis z procesora, 0 = odczyt przez
procesor;
IN TA sygnał potwierdzenia przyjęcia przerwania sprzętowego przez
procesor;
Komunikacja procesora z innymi elementami architektury komputera 95

~AEN {Address Enable) - podanie na to wejście stanu niskiego powoduje


uaktywnienie wyjść układu 8288 sterujących magistralami;
CEN {CommandEnable ) —podanie na to wejście stanu niskiego ustawia
wszystkie wyjścia sterujące magistralami oraz wyjścia DEN
i -PDEN w stanie nieaktywnym;
M CE /- PD EN (Master Cascade/Peripherial Data Enable) - w zależności od
stanu wejścia MB wyjście to służy do obsługi priorytetu przerwań
łub komunikacji z urządzeniami wejścia-wyjścia. W komputerach
PC XT wyjście to nie jest wykorzystywane;
-AMWC {Advanced Memory Write) - wystawienie sygnału na tym wyjściu
uprzedza układy pamięci o mającej nastąpić operacji zapisu;
-AIOWC {Advanced I/O Write Command) - wystawienie sygnału na tym
wyjściu uprzedza układy wejścia-wyjścia o mającej nastąpić
operacji zapisu;
V
v cc wejście napięcia zasilającego (+5V);
GND masa zasilania.

Elementy składowe architektury komputera XT


Centralną częścią tego modelu jest oczywiście procesor 8086 lub 8088. Płyta główna
XT jest przystosowana do instalacji koprocesora arytmetycznego 8087. W niektórych
nowszych modelach PC/XT stosow ane były procesory V20 i V30 firmy NEC, będące
rozbudowanymi wersjami procesora 8088 i 8086.

Sygnał zegarowy o częstotliwości 14.318180 MHz wytwarzany w układzie 8284, po


podziale przez 3 do wielkości 4.77 MHz, stanowi główny sygnał taktujący. Nowsze
modele XT odbiegają od tego, stosowanego głównie w PC, rozwiązania i posiadają
układ generujący bezpośrednio przebieg taktujący o częstotliwości sięgającej 12 MHz.
Wszystkie pozostałe elementy płyty głównej kontaktują się z procesorem poprzez
magistrale (szyny). W modelu XT wyróżniamy następujące magistrale:

• magistralę lokalną obejmującą 16-bitową szynę danych i 20-bitową szynę


adresową procesora 8086;

• magistralę systemową sprzężoną z magistralą lokalną poprzez rejestry zatrzas­


kowe sterowane sygnałem ALE. Wszystkie 20 bitów adresu oraz 8 bitów syste­
mowej magistrali danych wyprowadzone jest do gniazd rozszerzających. Magi­
strala systemowa dostarcza też zestawu sygnałów sterujących, takich jak -IOR,
-IOW , -MEMR, -MEMW , IRQ«, DRQ«, -DACKn itd.;

• magistralę X, komunikującą się z pamięcią ROM zawierającą systemowy BIOS


(ale nie z rozszerzeniami BIOS na kartach) oraz z portami układów na płycie
głównej;
96 Anatomia PC

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)

• magistralę pamięciową, która łączy szyny systemowe z obwodami pamięci


dynamicznej poprzez układy adresowania wierszy i kolumn pamięci;

• magistralę zewnętrzną, która stanowi wyprowadzenie 20-bitowej systemowej


szyny adresowej, 8-bitowej szyny danych i większości sygnałów systemowej
szyny sterującej.

Oprócz procesora (i ewentualnie wspomagającego go koprocesora) oraz pamięci dyna­


micznej płyta główna w modelu XT zawiera ponadto główne elementy składowe
wymienione poniżej.
• ROM —pamięć stała zawierająca procedury inicjalizujące (wykonywane w mo­
mencie włączenia komputera) oraz BIOS (Basic Input/Output System - zestaw
podstawowych procedur wejścia i wyjścia);
• 8259A - kontroler przerwań sprzętowych. Jego 8 kanałów przyporządkowano
w następujący sposób:
Komunikacja procesora z innymi elementami architektury komputera 97

a IRQ Wektor Urządzenie


0 08h zegar systemowy (kanał 0 generatora 8253)
1 09h klawiatura
2 OAh zarezerwowane
3 OBh COM2
4 OCh COM1
5 ODh kontroler dysku twardego
6 OEh kontroler napędu dysków elastycznych
7 OFh LPT1
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 00000h-003FFh i zawiera czterobajtowe
pozycje reprezentujące kolejne adresy.

Do grupy przerwań sprzętowych należy też przerwanie niemaskowalne (NMI),


nie jest ono jednak obsługiwane przez żaden z kontrolerów 8259A;

8253 - programowany układ czasowy zawierający trzy niezależne liczniki. Mają


one następujące zastosowanie:
Liczn ik Przeznaczeń ie
0 generacja sygnału 1RQ0 (zegar systemowy)
1 obsługa odświeżania pamięci
2 obsługa głośnika

8237A - kontroler DMA. Steruje on szybkim, bezpośrednim przekazywaniem


danych pomiędzy układami wejścia-wyjścia a pamięcią (ang. Direct Memory
Access) i zawiera cztery kanały przedstawione poniżej:
Kanał Przeznaczenie
0 układ odświeżania pamięci
1 łącze synchroniczne SDLC14
2 kontroler napędu dysków elastycznych
3 kontroler dysku twardego

8255 - interfejs programowalny (ang. PPI - Programmable Peripheral Inter­


face), obsługujący następujące urządzenia:
• klawiaturę,
• przełączniki pamięci konfiguracji (ang. configuration switches ),

14
(ang. Synchronous Data Link Contro i), standard łącza synchronicznego firmy IBM.
98 Anatomia PC

• włączanie i wyłączanie głośnika,


• sterowanie napędem pamięci kasetowej (funkcja ta ma znaczenie
historyczne).

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

Zakres Przyporządko wanie Zakres Przyporządkowanie


OOOh-OOFh kontroler DMA 8237A 2F8h-2FFh łącze szeregowe COM2
020h-021h kontroler przerwań 8259A 300h -31Fh karta prototypowa
040h-043h programowalny układ 320h~32Fh sterownik dysku twardego
czasowy 8253
060h-063h interfejs programowalny 378h-37Fh łącze równoległe LPT1
8255
080h-083h rejestry stron DMA 380h-38Fh łącze synchroniczne SDLC
OAOh-OAFh rejestr maskujący NMl 3A0h-3AFh zarezerwowane
OCOh-OCFh zarezerwowane 3B0-3DFh karta graficzna VGA
OEOh-OEFh zarezerwowane 3B0h-3BFh karta monochromatyczna
i łącze równoległe LPT1
100h-lFFh wolne 3C0h-3CFh karta graficzna EGA
200h-20Fh karta gier 3D0h-3DFh kolorowa karta graficzna
(EGA, CGA)
21Oh-217h zarezerwowane 3E0h-3E7h zarezerwowany
220h-24Fh zarezerwowane 3F0h-3F7h sterownik napędu dysków
elastycznych
278h—27Fh łącze równoległe LPT2 3F8h-3FFh łącze szeregowe COM1
2F0h-2F7h zarezerwowane 1

Ośmiobitowa magistrala zewnętrzna


Komputery klasy PC/XT wyposażone są w umieszczone na płycie głównej 62-końców-
kowe gniazda rozszerzenia (ang. expansion slot). Liczba tych gniazd nie jest jedno­
znacznie sprecyzowana i zależy od modelu płyty. W gniazdach można umieszczać karty
8-bitowe (tzw. krótkie). Charakteryzują się one pojedynczym złączem grzebieniowym.
Komunikacja procesora z innymi elementami architektury komputera 99

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

Teoretycznie jest całkowicie obojętne, w którym z gniazd umieszczona zostanie dana


karta, bowiem wyprowadzenia wszystkich gniazd są połączone równolegle - wyjątkiem
jest złącze J8 w starszych modelach XT obsługiwane nieco inaczej niż pozostałe
gniazda. Pewne karty umieszczone w tym gnieździe nie funkcjonują prawidłowo.
W praktyce pewne karty umieszczone zbyt blisko siebie mogą się wzajemnie zakłócać.

Karty rozszerzające są niezmiernie ważnym elementem architektury komputera. Dają


one praktycznie nieograniczoną elastyczność w projektowaniu urządzeń peryferyjnych,
które z punktu widzenia oprogramowania będą się zachowywały tak, jak gdyby znajdo­
wały się na płycie głównej.

Znaczenia sygnałów zewnętrznej magistrali ośmiobitowej podano poniżej.


±5V ,±12V zestaw napięć zasilających, z których mogą korzystać karty
rozszerzenia;
GND masa zasilania;

osc sygnał zegara systemowego 14.318180 MHz; ten sam sygnał,


po podzieleniu częstotliwości przez 3, otrzymuje procesor;
IRQ2-IRQ7 {Interrupt Request) - linie zgłoszeń przerwań sprzętowych.
Kanały 0 (zegar systemowy) i 1 (klawiatura) obsługują
urządzenia zainstalowane na płycie głównej, tak więc nie
zostały wyprowadzone;
Anatomia PC

DRQ1-DRQ3 {DMA Request) - linie zgłoszeń żądania przydziału kanału 1, 2


lub 3 DMA. Kanał 0 DMA jest już zajęty (obsługuje
odświeżanie pamięci), nie jest więc wyprowadzony;
-D A C K l- {DMA Acknowledge) - odpowiadające liniom DRQw linie
-DACK3 potwierdzenia przyjęcia żądania obsługi kanałem DMA;
-DACKO sygnał, który może być wykorzystany przez karty posiadające
własną pamięć dynamiczną dla jej odświeżania. Pojawia się on
równolegle z odbywającymi się z udziałem kanału 0 DMA
cyklami odświeżania pamięci na płycie głównej;
~IOR {I/O Read) - sygnał ten przyjmuje poziom niski (aktywny)
w chwili wystawienia przez procesor lub kontroler DMA żądania
dostępu do przestrzeni adresowej wejścia-wyjścia w celu
odczytu;
-IOW {I/O Write) - sygnał ten przyjmuje poziom niski (aktywny)
w chwili wystawienia przez procesor lub kontroler DMA żądania
dostępu do przestrzeni adresowej wejścia-wyjścia w celu zapisu;
-MEMR {Memory Read) - sygnał ten przyjmuje poziom niski (aktywny)
w chwili wystawienia przez procesor lub kontroler DMA żądania
dostępu do przestrzeni adresowej pamięci w celu odczytu;
-MEMW {Memory Write) - sygnał ten przyjmuje poziom niski (aktywny)
w chwili wystawienia przez procesor lub kontroler DMA żądania
dostępu do przestrzeni adresowej pamięci w cełu zapisu;
RESET przekazuje kartom rozszerzenia sygnał generowany na płycie po
naciśnięciu przycisku RESET;
A 0-A 19 20-bitowa magistrala adresowa komputera. Stan linii A 0-A 19
odzwierciedla stan wyprowadzeń AO—A l 9 procesora 8086/8088
łub jest wytwarzany przez układ kontrolera DMA;
D 7-D 0 dwukierunkowa, ośmiobitowa magistrala danych;
ALE {Address Latch Enable) - sygnał wytwarzany przez kontroler
magistrali 8288; informuje o ustabilizowaniu adresu na
magistrali adresowej, co jest jednocześnie poleceniem dla
układów kart rozszerzenia, że należy podjąć dekodowanie adresu
i próbę „dopasowania go” do własnej przestrzeni adresowej;
I/O CHRDY {I/O Channel Ready) —poziom sygnału na tej linii sprawdzany
jest przez procesor lub kontroler DMA w każdym cyklu dostępu
do urządzeń wejścia-wyjścia. Powolne układy peryferyjne mogą
w ten sposób sygnalizować konieczność wprowadzenia przez
urządzenie żądające dostępu (tj. procesor lub kontroler DMA)
tzw. cykli oczekiwania, czyli dodatkowych, „pustych” cykli
zegarowych (ang. wait state) w oczekiwaniu na dane. Poziom
logicznej 1 oznacza gotowość urządzenia, logiczne 0 wymusza
oczekiwanie;
Komunikacja procesora z innymi elementami architektury komputera 101

I/O CHK (1/0 Channel Check) - układy zamontowane na kartach rozsze­


rzenia mogą tą drogą zgłaszać płycie głównej swoje niedomagania
wykluczające je z dalszej pracy. Sygnał aktywny (tj. zero logiczne)
powoduje wygenerowanie przerwania 2 (INT 2), a więc takiej
samej akcji jak w przypadku błędu parzystości pamięci na płycie
(wyświetlenie odpowiedniego komunikatu i zatrzymanie systemu);
AEN wysoki poziom logiczny na tej linii oznacza, że kontroler DMA
przejął kontrolę nad magistralami systemowymi (końcówki
procesora znajdują się w stanie wysokiej impedancji);
T/C ( Terminal Count) - sygnał generowany przez kontroler DMA,
Wskazuje na zakończenie cyklu dostępu DMA (wykonanie
zaprogramowanej liczby transmisji).

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.

W modelu AT wprowadzono oczywiście pewne unowocześnienia - inaczej nie można


by przecież mówić o nowym modelu. Oto ogólna sylwetka architektury AT, określanej
też mianem ISA (ang. Industry StandardArchitecture):
• procesor otrzymuje sygnał taktujący z układu 82284, następcy 8284, stosowa­
nego dla procesorów 8086/8088. Pierwsze modele AT taktowane były sygnałem
6 MHz. Obecnie na rynku znajdują się układy scalone 80286 produkcji firmy
Harris, dające się taktować zegarem 25 MHz. Na tak wysokie częstotliwości
zegarowe muszą być jednak przygotowane również inne elementy architektury,
a nie tylko sam procesor;
• 24-bitowa magistrala adresowa komputera AT pokrywa przestrzeń adresową do
16 MB, co jednak wymaga oprogramowania wykorzystującego tzw. chroniony
tryb pracy procesora (ang. protected mode). W zgodnym z 8086/8088 trybie
rzeczywistym (ang. real mode) wykorzystanych jest tylko 20 linii adresowych;

• koprocesorem arytmetycznym współpracującym z procesorem 80286 jest układ


80287. Podstawka dla niego znajduje się na płycie głównej;

• w modelu AT możemy wyróżnić następujące magistrale:


102 Anatomia PC

• lokalną, zawierającą 24 linie adresowe i 16 linii danych, połączonych bez­


pośrednio 7 procesorem,
• systemową, która jest ustabilizowaną (poprzez zastosowanie rejestrów
zatrzaskowych), częściową „kopią” magistrali lokalnej. Magistrala syste­
mowa AT zawiera wszystkie linie lokalnej szyny danych oraz linie A 0 -
A19 lokalnej szyny adresowej,
• magistralę X, przez którą realizowana jest komunikacja z ROM-BIOS
(nie z rozszerzeniami BIOS na kartach) oraz z portami układów umiesz­
czonych na płycie głównej,
• pamięciową, łączącą linie magistrali systemowej z obwodami pamięci
dynamicznej poprzez układy adresowania wierszy i kolumn pamięci,
• magistralę L, wyprowadzającą linie A17-A23 magistrali lokalnej do
gniazd rozszerzających (tj. magistrali zewnętrznej),
• magistralę zewnętrzną, która stanowi wyprowadzenie 24-bitowej syste­
mowej szyny adresowej, 16-bitowej szyny danych i większości sygnałów
systemowej szyny sterującej.
Należy wyraźnie zaznaczyć, że jedynymi układami mogącymi przejąć pełną
kontrolę nad magistralami systemowymi (tzn. inicjować transmisję i decydować
ojej kierunku) są procesor i kontroler DMA. Żaden inny procesor zamontowany
na karcie rozszerzającej nie może sterować w bezpośredni sposób magistralami
systemowymi. Na magistrali zewnętrznej wyprowadzany jest co prawda sygnał
MASTER, ale procedura przejęcia sterowania rozpoczyna się od wymiany
sygnałów uzgodnienia z kontrolerem DMA, który to dopiero odłącza procesor
systemowy od magistral;
• dla zwiększenia liczby kanałów IRQ (linii przyjmujących zgłoszenia przerwań
sprzętowych) wprowadzony został drugi układ 8259A (tzw. slave). Jest on pod­
łączony do jednego z wejść układu głównego (master). Komputer AT dysponuje
dzięki temu 15 kanałami IRQ, które zostały przyporządkowane następująco:

la IRQ Urządzeń ie Wektor


0 zegar systemowy 08h
1 klawiatura 09h
2 wyjście kaskadowe do układu Slave OAh
3 COM2 OBh
4 COM1 OCh
5 LPT2 ODh
6 kontroler napędu dysków elastycznych OEh
7 LPT1 OFh
8 zegar czasu rzeczywistego 7 Oh
9 wywołuje przerwanie IRQ2 71h
10 zarezerwowane 72h
11 zarezerwowane 73h
Komunikacja procesora z innymi elementami architektury komputera 103

Linia IRQ Urządzenie Wektor


12 zarezerwowane 74h
13 koprocesor arytmetyczny 75h
14 kontroler dysku twardego 76h
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 00000h-003FFh i zawiera czterobajtowe
pozycje reprezentujące kolejne adresy.
Do grupy przerwań sprzętowych należy też tzw. przerwanie niemaskowalne
(NMI), nie jest ono jednak obsługiwane przez żaden z kontrolerów 8259A;

• system obsługi DMA także otrzymał dodatkowe wsparcie w postaci drugiego


układu scalonego 8237A obsługującego transmisje 16-bitowe. Kanały DMA
zostały przydzielone w następujący sposób:
Kanał Przeznaczenie Szerokość
0 zarezerwowany 8
1 układ transmisji synchronicznej SDLC 8
2 kontroler napędu dysków elastycznych 8
3 zarezerwowany 8
4 kaskada
5 zarezerwowany 16
6 zarezerwowany 16
7 zarezerwowany 16

• programowalny układ czasowy 8253 został zastąpiony unowocześnionym mo­


delem 8254, którego trzy niezależne kanały obsługują następujące urządzenia:
Kanał Przeznaczeń ie
0 generacja sygnału IRQ0 (zegar systemowy)
1 odświeżanie pamięci
2 obsługa głośnika

• zrezygnowano z usług większości mikroprzełączników (DIP) dla ustalania para­


metrów konfiguracyjnych systemu. Ich miejsce zajęła podtrzymywana bateryjnie
pamięć CMOS. W układzie MC 146818, zawierającym pamięć CMOS znalazło
się też miejsce dla zasilanego bateryjnie zegara czasu rzeczywistego, pracującego
również przy wyłączonym komputerze. W modelu XT zegar pracował tylko od
włączenia do wyłączenia komputera;
• magistrala zewnętrzna otrzymała dostęp do wszystkich 16 bitów systemowej
szyny danych oraz wzbogacona została o kilka nowych sygnałów sterujących.
104 Anatomia PC

Do wszystkich układów scalonych stanowiących składowe systemu można się odwo­


ływać przez porty umieszczone w przestrzeni adresowej wejścia-wyjścia (tabela 1.21).

Tabela 1.21.
Podział przestrzeni adresowej wejścia-wyjścia w komputerze PC/A T

Zakres Przyporządko wan ie Zakres Przyporządko wan ie


OOOh-OOFh kontroler DMA 823 7A, Master 278h-27Fh łącze równoległe LPT2
020h-021h kontroler przerwań 8259A, 2C0h-2DFh druga karta EGA
Master
040h-043h programowalny układ czasowy 2F8h-2FFh łącze szeregowe COM2
8254
060h“ 063h kontroler klawiatury 8042 300h-31Fh karta prototypowa
070h-071h zegar czasu rzeczywistego 320h-32Fh wolne
080h~083h rejestry stron DMA 370h-377h drugi kontroler napędu dysków
elastycznych
OAOh-OAFh kontroler przerwań 8259A, 378h-37Fh łącze równoległe LPT1
Slave
OCOh-OCFh kontroler DMA 8237A, Slave 380h-38Fh łącze synchroniczne SDLC
OEOh-OEFh zarezerwowane 3A0h-3AFh zarezerwowane
OFOh-OFFh koprocesor 80287 3B0h-3DFh karta graficzna VGA
100h-lEFh wolne 3B0h-3BFh karta monochromatyczna
i łącze równoległe LPT1
170-177h drugi kontroler dysku twardego 3C0h-3CFh karta graficzna EGA
AT-BUS
lF 0h-lF 7h kontroler dysku twardego AT- 3D0h-3DFh kolorowa karta graficzna
BUS (CGA, EGA)
200h-20Fh karta gier 3E0h-3E7h zarezerwowany
21Oh-217h zarezerwowane 3F0h-3F7h sterownik dysków elastycznych
220h-267h wolne 3F8h-3FFh COMI

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

Układ 80286 dysponuje specjalnym, dodatkowym zestawem rozkazów przeznaczonych


do obsługi tego trybu pracy. Poza nim, w trybie rzeczywistym (real mode) procesor
dysponuje listą rozkazów zgodną z 8086, poszerzoną o pewne nowe. Należy podkreślić,
że ich wykorzystanie w programach użytkowych mających działać na różnych kompu­
terach, wliczając w to modele XT, nie jest możliwe.

Poszerzona do 24 bitów magistrala adresowa pokrywa przestrzeń adresową 16 MB.


Z tak dużej pamięci można jednak korzystać w trybie chronionym procesora. W trybie
rzeczywistym należy się zadowolić adresowalnym obszarem pamięci zgodnym z 8086,
tj. 1 MB, przy czym sposób generacji adresu fizycznego jest identyczny jak w przy­
padku „przodka”. W trybie tym układ 80286 zachowuje się jak szybki 8086. Na zwięk­
szenie prędkości mają wpływ następujące czynniki: zwiększona do 25 MHz maksymal­
na częstotliwość taktująca, poprawki w konstrukcji wewnętrznej procesora, zmodyfiko­
wana poprzez krótsze cykle obsługa magistrali.

Obszar przestrzeni adresowej dla urządzeń wejścia-wyjścia jest zgodny z możliwoś­


ciami procesora 8086, obsługiwane jest 64k portów 8-bitowych o adresach 0-65535,
32k portów 16-bitowych o parzystych adresach 0, 2, 4, ..., 65534 lub ich kombinacje
w zakresie do 64 kB. Podobnie jednak jak w modelu XT, wbudowany w płytę dekoder
adresów wejścia-wyjścia rozpoznaje tylko 1024 z nich - są to porty ulokowane w zakre­
sie 0-1023 (000h-3FFh).

Układ 8086 miał możliwość samodzielnego wytwarzania sygnałów sterowania magi­


stralą, co pozwalało na rezygnację z udziału kontrolera 8288. Procesor 80286 nie ma
takiej możliwości i musi współpracować z odpowiadającym mu kontrolerem magistrali
80288.

Magistrala zewnętrzna (16-bitowa)


Podobnie jak w modelu PC/XT, większa część sygnałów magistrali systemowej wypro­
wadzona jest do gniazd, w których można umieszczać karty rozszerzające. Gniazda te
(rysunek 1.44) podzielone są na dwie grupy: pierwsza, 62-stykowa, jest zgodna (z wy­
jątkiem sygnałów 0WS i REF) z 8-bitową magistralą XT, druga stanowi jej 36-stykowe
uzupełnienie.

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 CS16 D1 C1 SBHE


¡/O CS 16 LA23
IRQ 10 LA22
IRQ11 LA21
IRQ12 LA20
IRQ15 LA 19
IRQ 14 LA 18
DACKO LA 17
DRQO MEMR
DACK5 D10! C10 MEMW
DRQ5 SD08
DACK6 SD09
DRQ6 SD10
DACK7 SD11
DRQ7 SD12
Vcc SD13
MASTER SD14
GND D18 1018 SD15
Komunikacja procesora z innymi elementami architektury komputera 107

~0WS (O Wait States) - wystawiając na tej linii poziom zera logicznego


karta rozszerzenia daje sygnał, że jest dostatecznie szybka, aby być
obsługiwaną bez dodatkowych cykli oczekiwania;
-'REF (Refresh) - sygnał ten informuje, że w danym momencie odbywa
się cykl odświeżania pamięci dynamicznej na płycie głównej. Jego
źródłem nie jest kanał 0 DMA, lecz jeden z generatorów układu
8254 (ang. timer) lub specjalizowane układy obsługujące samą
pamięć;
Vcc napięcie zasilające (+5V);
LA17-LA23 (Large Address) - siedem najbardziej znaczących bitów
24-bitowej szyny adresowej procesora. Linie LA17-LA19
pokrywająsię logicznie z liniami A17-A19 w części 8-bitowej
złącza, z tą różnicą, że adres na liniach LA nn wystawiany jest
wcześniej;
SD 8-SD 15 (System Data) - bardziej znaczący bajt 16-bitowej systemowej
szyny danych AT;
-SBHE (System Bus High Enable) - sygnał ten jest wystawiany przez
procesor lub inny układ przejmujący kontrolę nad magistralami
(na przykład kontroler DMA) podczas procesu przekazywania
danych 16-bitowych z udziałem bardziej znaczącego bajtu
magistrali, tj. SD8-SD15;
~MEM CS 16 sygnał ten generowany jest przez karty rozszerzające, które
gwarantują dostęp do pamięci w trybie 16-bitowym. Karta
16-bitowa, która nie odpowie w odpowiednim momencie
wystawieniem niskiego poziomu logicznego na linii ~MEM CS 16,
będzie obsługiwana tak, jak karta 8-bitowa. Jeżeli karta 8-bitowa
zostanie umieszczona w złączu 16-bitowym, to sygnał ~MEM
CS 16 będzie nieaktywny (na nie podłączonej linii ustala się
wysoki poziom logiczny), co pozwala na automatyczną detekcję
rozmiaru złącza karty;
-I/O CS 16 sygnał ten generowany jest przez karty rozszerzające, które
i.

gwarantują dostęp do przestrzeni wejścia-wyjścia w trybie


16-bitowym. Obowiązują tu te same uwagi co dla sygnału
~MEM CS 16;
-MEMR (Memory Read) —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ł -SMEMR
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);
108 Anatomia PC

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.

Modele AT wyposażone w procesory 80286 należą już do przeszłości. Większość


obecnie używanych komputerów wyposażona jest w procesory 80386, 80486 i Pentium.
Płyty takie cechują 32-bitowe magistrale systemowe (danych i adresowa). Gniazda kart
rozszerzających (magistrala zewnętrzna) mają jednak wyprowadzone w dalszym ciągu
jedynie 16 linii danych i 24 linie adresowe. Odpowiedniego łamania i przesuwania
bajtów dokonują specjalne układy pośredniczące między magistralą systemową a zew­
nętrzną. Pomijając te szczegóły można powiedzieć, że architektonicznie 32-bitowe
modele AT nie różnią się w istocie od swych 16-bitowych pierwowzorów. Wzrost
częstotliwości taktujących, pociągający za sobą w oczywisty sposób przyspieszenie
pracy magistral systemowych, niesie w sobie wzrost mocy obliczeniowej.
Komunikacja procesora z innymi elementami architektury komputera 109

Najwęższym gardłem architektury AT pozostaje po dziś dzień magistrala zewnętrzna.


Decydują o tym dwa główne czynniki: jej szerokość i szybkość pracy. Tak się nieszczę­
śliwie składa, że układy peryferyjne najintensywniej wymieniające dane z pamięcią
montowane są na kartach rozszerzających. Mowa tu w szczególności o kontrolerach
dysków twardych, kartach sieciowych i graficznych. Istnieją wprawdzie nieliczne
wyjątki rozwiązań płyt głównych ze zintegrowanym na nich kontrolerem dysków lub
wręcz kartami sieciowymi Ethernet, ale układy te komunikują się z procesorem nadal
16-bitową szyną danych, chociaż z powodzeniem mogłyby być obsługiwane z wyko­
rzystaniem 32-bitowych strumieni danych. Drugim hamulcem jest częstotliwość takto­
wania magistrali zewnętrznej. Nawet w modelu 486DX-50 MHz magistrala zewnętrzna
taktowana jest w najlepszym razie częstotliwością 12.5 MHz (zwykle 6—8 MHz). Wpro­
wadzony wraz z magistralą AT standard ISA, którego producenci sprzętu muszą prze­
strzegać dla zachowania zgodności sprzętowej, wyznacza maksymalną częstotliwość
pracy magistrali zewnętrznej na 8.33 MHz. Powstaje swego rodzaju błędne koło, gdyż
szybkie układy peryferyjne nie wszędzie mogą być wykorzystane, a podnoszenie często­
tliwości pracy magistrali nie gwarantuje niezawodnej pracy znajdujących się na rynku
kart starszego typu.

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

MCA EISA ISA PCI VESA

Przed przejściem do omówienia cech charakterystycznych standardów magistral kon­


kurencyjnych dla ISA podajmy dla porównania to, co wydaje się być najistotniejsze -
osiąganą w każdym z nich teoretyczną przepustowość magistrali zewnętrznej.
110 Anatomia PC

Standard Przep us to wość magistral i


ISA 8,33 MB/s
EISA 33 MB/s
MCA 20 MB/s
VESA 120 MB/s
PCI 132 MB/s

EISA (Extended Industry Standard Architecture)


Jednym ze standardów, któremu udało się zdobyć rynek, jest niewątpliwie EISA.
System ten stanowi istotny krok na drodze do wykorzystania pełnych możliwości
procesorów 32-bitowych. Architektura EISA jest niezwykle kosztowna ze względu na
swoją komplikację; zachowana zostaje bowiem możliwość współpracy z dotychczas
stosowanymi peryferiami ISA. Kontroler magistrali decyduje każdorazowo, czy pod­
czas bieżącej operacji można „iść” na 32-bitową „całość”, czy też należy symulować
stary, 16-bitowy tryb pracy. To samo dotyczy kontrolera DMA. W razie potrzeby
nowoczesny, 32-bitowy kontroler DMA emuluje pracę swego 8-bitowego poprzednika.

Mimo iż technologia ta nie należy do tanich, ogromna konkurencja na rynku


producentów osprzętu EISA doprowadziła do istotnego spadku cen, a co za tym idzie,
popularyzacji systemu. Sztandarowym hasłem lansowanym przez wytwórców sprzętu
standardu EISA jest kompatybilność (zgodność) z kartami ISA. Spełnienie tego wy­
mogu powoduje, że posiadacz płyty głównej EISA i kart rozszerzających ISA może być
pewien, że wszystko będzie razem doskonale współpracować, tyle tylko, że nic się na
tym nie zyskuje. Dopiero wyposażenie takiej płyty w karty standardu EISA udostępnia
pełne możliwości systemu.

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.

Zmieniono też sposób przydziału kanałów urządzeniom. W miejsce stałych priorytetów


poszczególnych kanałów wprowadzono rotacyjny system ich przydziału. Jest to krok
w stronę systemów wielozadaniowych i wieloprocesorowych, mający uniemożliwić
trwałe blokowanie kanałów przez uprzywilejowane urządzenie.

Kontroler przerwań sprzętowych


System EISA dysponuje, podobnie jak ISA, 15 kanałami IRQ. Istotnym novum jest
natomiast zmiana sposobu wyzwalania przerwań. Standard ISA używał zboczy impulsu,
co jest metodą bardzo podatną na zakłócenia. EISA wymaga od zgłaszającego przerwa­
nie urządzenia utrzymania aktywnego poziomu sygnału, tj. przekroczenia określonego
poziomu napięcia, a nie tylko jego wzrostu.

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

Najbardziej skomplikowaną częścią systemu EISA jest więc niewątpliwie kontroler


magistral. Musi on umieć odróżnić od siebie pojedyncze cykle ISA i EISA, przełączać
szynę w tryb burst oraz przeprowadzać łamanie i składanie bajtów przy dostępie do
obiektów 8- i 16-bitowych.

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.

MCA (Micro Channel Architecture)


Architektura MCA jest wytworem firmy IBM i została po raz pierwszy wprowadzona
w modelach PS/2. Ma w niej miejsce zdecydowany odwrót od tradycji upartego (w celu
zachowania kompatybilności) trzymania się standardu ISA. Dotyczy to zarówno cech
logicznych architektury, jak i nowej geometrii kart i złącz, która wyklucza współpracę
z osprzętem ISA. Polityka koncernu IBM poszła w tym wypadku zupełnie inną drogą.
Wszystkie charakterystyczne cechy systemu zostały opatentowane, a licencje na pro­
dukcję urządzeń w tym standardzie wydawane są dosyć skąpo. Ma to oczywiście na
celu utrzymanie monopolu w tej dziedzinie, co niewątpliwie się udało. Niestety, każdy
kij ma dwa końce, a przyjęta metoda nie wyszła na dobre propagowaniu tej technologii.
Brak konkurencji na rynku producentów utrzymuje stosunkowo wysokie ceny i hamuje
sprzedaż wyrobów. Ponadto dominacja IBM w tym sektorze stała się zalążkiem dla
rozwinięcia konkurencyjnej technologii - tak właśnie, jako obrona rynku producentów
przed monopolem IBM, powstała architektura EISA.

MCA jest ukierunkowana wyraźnie na potrzeby systemów wielozadaniowych typu


OS/2 i 32-bitowych procesorów 80386 i 80486. Mimo ogromnych różnic architekto­
nicznych, programy pracujące na urządzeniach PS/2 pod nadzorem systemu DOS nie
sprawiają żadnych trudności, jeżeli tylko nie sięgają bezpośrednio do rejestrów.

Dla użytkownika poruszającego się na poziomie systemu operacyjnego i aplikacji


jednoznaczne stwierdzenie rodzaju architektury płyty głównej nie jest wcale rzeczą
łatwą (pomijamy tu oczywiście ewidentne różnice wynikające ze wzrostu mocy oblicze­
niowej systemu).

Przepustowość magistrali zewnętrznej MCA sięga 20 MB/s Bardzo szybka, bowiem


pracująca w takt zegara procesora, jest magistrala lokalna łącząca procesor bezpośred­
nio z pamięcią. Magistrala systemowa ma co prawda szerokość 32 bitów (zarówno
w części adresowej, jak i danych), ale taktowana jest zegarem 10 MHz i, co gorsza, na
każdą transmisję przypadają dwa cykle zegarowe (dla porównania: ISA - 4 cykle, EISA
- 1 cykl).
Komunikacja procesora z innymi elementami architektury komputera 113

Gruntownie zmodyfikowany został system DMA. Po pierwsze, w transmisjach DMA


używany jest zawsze pełny, 32-bitowy adres pokrywający całą przestrzeń adresową
systemu. Zrezygnowano z emulowania 8- i 16-bitowego trybu układu 8237A. Po
drugie, co jest absolutnym novum, wszystkie osiem kanałów DMA może być
jednocześnie aktywne. Nie trzeba chyba dodawać, jakie znaczenie ma to dla systemów
wielozadaniowych.

System przerwań sprzętowych, dzięki realizacji idei wyzwalania poziomem (a nie


zboczem, jak to ma miejsce w architekturze ISA) i przydziału jednego kanału wielu
urządzeniom, zapewnia obsługę 255 urządzeń.

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.

Również pojedyncze gniazda magistrali zewnętrznej zaczęły być identyfikowalne


w ramach systemu. Dało to możliwość programowego, a więc bez otwierania obudowy
komputera, odłączania karty tkwiącej fizycznie w złączu, co pozwala na znaczne
uelastycznienie konfiguracji sprzętowej. W systemie mogą być na stałe zamontowane
wykluczające się wzajemnie karty. W stosownym momencie można aktywować jedną
z nich bez potrzeby sięgania po śrubokręt.

System zbudowany w oparciu o architekturę ISA reaguje bardzo stanowczo na stwier­


dzenie błędu działania pamięci podczas jej kontroli po załączeniu. Załadowanie systemu
operacyjnego z pewnością nie nastąpi, jeśli choć jedna komórka w całych 16 MB
pamięci jest niesprawna. System MCA toleruje drobne ubytki w pamięci operacyjnej.
W takim wypadku cała dostępna pamięć powyżej miejsca uszkodzenia ulega logicz­
nemu przeadresowaniu. Segment o długości 64 kB, w którym stwierdzono uszkodzenie,
zostaje przesunięty na koniec przestrzeni adresowej i tam dezaktywowany. Powstała
luka zostaje wypełniona sprawnym segmentem.

Aby nie blokować gniazd magistrali zewnętrznej, niezbędne elementy architektury,


takie jak złącza szeregowe i równoległe czy karta VGA, zostały zintegrowane z płytą
główną. Użytkownik ma oczywiście możliwość ich zablokowania i skorzystania z usług
odpowiednich kart. Należy nadmienić, że konstrukcja złącz MCA umożliwia stoso­
wanie nie tylko kart 32-bitowych, ale i ich uproszczonych wersji o szerokości 8 i 16
bitów.
114 Anatomia PC

VESA Local Bus


Zgodnie z zasadą, że gdzie dwóch się bije tam trzeci korzysta, duże powodzenie zdo­
były różne systemy 32-bitowych szyn lokalnych (ang. local bus). Początkowo każdy
z producentów preferował swój standard. Z czasem, z gromady rozmaitych rozwiązań
(lansowanych między innymi przez firmy Intern, Opti, Elitegroup) na czoło wysunął się
zdecydowanie pseudo-standard VESA, stworzony przez organizację o nazwie Video
Electronics Standards Association, w której główny udział ma firma NEC. „Pseudo”,
gdyż peryferia noszące znamiona VESA wcale nie muszą (do czasu normalizacji15 pra­
cować poprawnie w dowolnej płycie głównej VESA.

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

Magistrala zewnętrzna VESA taktowana jest zegarem procesora, którego częstotliwość


nie może przekraczać 40 MHz. Przepustowość szyny danych dochodzi do 120 MB/s, co
głównych konkurentów (MCA, EISA) pozostawia daleko w tyle. Samo złącze VESA
nie jest niczym innym, jak dodatkowym gniazdem umieszczonym w jednej linii z gniaz­
dem ISA (rysunek 1.47). Daje to możliwość użytkowania w takim gnieździe zarówno
kart nowego standardu, które sięgają swymi stykami do dodatkowego gniazda, jak
i zwyczajnych kart ISA nie czerpiących korzyści z rozszerzenia architektury.

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ć.

Magistrala PCI (Peripherial Component Interconnect)


Magistrala PCI opracowana przez firmę Intel jest najnowszym rozwiązaniem 32-bitowej
szyny lokalnej. Pomimo zbliżonych parametrów, w dość krótkim czasie wyparła magi­
stralę VESA. Stało się tak z bardzo prostej przyczyny: magistrala VESA oparta jest na
magistrali lokalnej procesorów 386 i 486, a co za tym idzie - karty rozszerzeń są
dostosowane do współpracy z tymi procesorami. Magistrala PCI jest niezależna od typu
procesora —dzięki temu wykorzystywana jest również w komputerach opartych na pro­
cesorach PowerPC.

Magistrala PCI daje możliwość tworzenia złożonych systemów. W jednym systemie,


zgodnie ze specyfikacją 2.1 standardu PCI, może^współpracować do 256 magistral PCI,
przy czym każda z nich może obsługiwać do 32 urządzeń PCI, a każde urządzenie może
pełnić do 8 funkcji (zintegrowane urządzenia nie są nowością wprowadzoną przez
standard PCI - na przykład typowa karta ISA Multi I/O zawiera 4 urządzenia: dwa
porty szeregowe, port równoległy i game port). O możliwościach architektury PCI może
świadczyć fakt, że w produkowanych obecnie komputerach klasy PC opartych na
architekturze PCI wykorzystywana jest tylko jedna magistrala PCI, obsługująca około
10 urządzeń.
Komunikacja procesora z innymi elementami architektury komputera 117

Rysunek 1.48.
Architektura
komputera
z magistralą PCI

Pamięć
A —

----------------------------------- / podręczna

Sterownik ukadów
pamięci / interfejs
magistrali PCI

Magistrala PCI może pracować z częstotliwością od 0 do 33 MHz (wersja 2.1 standardu


dopuszcza częstotliwości do 66 MHz), co daje przepustowość w granicach 132 MB/s.
Magistrala PCI pracuje w trybie barst, co oznacza dostęp do adresowanego obiektu
w jednym takcie zegarowym.

Zdefiniowane jest również 64-bitowe rozszerzenie magistrali PCI, które umożliwia


transfer danych z prędkością do 264 MB/s pomiędzy 64-bitowymi urządzeniami PCI.
Wymiana danych pomiędzy urządzeniami 64- i 32-bitowymi jest wolniejsza niż na
32-bitowej magistrali PCI ze względu na wprowadzenie dodatkowego cyklu umożliwia­
jącego rozpoznanie sposobu transmisji danych.

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

Każda transmisja (rysunek 1.49) rozpoczynana jest przez inicjator wystawieniem na


magistralę sygnału -FRAME - jest to sygnał dla pozostałych urządzeń PCI, by
odczytały adres urządzenia docelowego (sygnały AD - Address) i rozkaz określający
sposób transmisji (sygnały C/-BE - Command ). Adres urządzenia docelowego i sposób
transmisji wystawiony jest na magistrali przez jeden cykl zegara.

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

Inicjator informuje o zakończeniu fazy przekazywania danych wycofując sygnał -FRAME.


Zaniknięcie sygnału -DEVSEL informuje inne inicjatory, że magistrala jest wolna.

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

Na rysunku 1.50 przedstawiono przykładowy arbitraż: dwa inicjatory równocześnie


żądają dostępu do magistrali - inicjator A ma do przeprowadzenia dwie transmisje,
a inicjator B jedną. Arbiter przyznaje magistralę na przemian inicjatorowi A i B.

Ponieważ sygnały AD i C/-BE mają różne znaczenie zależne od fazy transmisji,


urządzenia PCI wykorzystują znacznie mniej sygnałów (inicjator 49, slave 47 - sygnały
podstawowe, rysunek 1.51) niż urządzenia korzystające z magistrali VESA Local Bus.

Rysunek 1.51. inicjator Slave


Sygnały magistrali AD[0-31]
PCI C/-BE[0-1]
PAR
-FRAME
o> -TRDY
s HR DY
I"co -STOP
"O
O
Q-
-DEVSEL
iDSEL
nj
c
cn -REQ
>s
CO -GNT
CLK
-RST
-PERR 4
-SERR 4
AD [32-63]
C/-BE[4-7]
PAR64 4
-REQ64
-ACK64
-LOCK
CL)
o
5 -CLKRUN
T3a -SBO
T
O SDONE
■O TDI
cOJ
r a
TDO
c/> TCK
TMS
-TRST
► -INTA 4
► -INTB 4
► -INTC 4
► -INTD 4

Na rysunku 1.51. przedstawiono wszystkie sygnały wykorzystywane przez magistralę


PCI. Do realizacji trzydziestodwubitowej transmisji danych niezbędne są sygnały
podstawowe. Sygnały dodatkowe zwiększają możliwości magistrali PCI. Umożliwiają
one wykorzystanie sześdziesięcioczterobitowej transmisji danych, dostęp do pamięci
cache, testowanie magistrali i zgłaszanie przerwań sprzętowych przez urządzenia
podłączone do magistrali.

Na kolejnych stronach omówione zostało znaczenie sygnałów magistrali PCI.


Komunikacja procesora z innymi elementami architektury komputera 121

AD[31-00] (Addres Data Bus) - sygnały te mają różne znaczenie, zależnie od


fazy transmisji. W fazie adresowej (w pierwszym cyklu zegara po
przyznaniu inicjatorowi kontroli nad magistralą-równocześnie
z wystawieniem sygnału -FRAME) wystawiony jest na nich adres
urządzenia docelowego. W fazie przekazywania danych służą do
przekazywania danych - o sposobie przekazywania danych
decydują sygnały C/~BE[3-0];
C/~BE[3-0] ( Command/Byte Enable) - sygnały te mają różne znaczenie,
zależnie od fazy transmisji: w fazie adresowej przekazują komendę
PCI określającą typ transmisji ( Command ).
~BE3 C/-BE2 C/-BE2 C/-BE1 Komenda
0 0 0 0 Interrupt Acknoweledge
0 0 0 1 Special Cycle
0 0 1 0 I/O Read
0 0 1 1 I/O Write
0 1 0 0 zarezerwowane
0 1 0 1 zarezerwowane
0 1 1 0 Memory Read
0 1 1 1 Memory Write
1 0 0 0 zarezerwowane
1 0 0 1 zarezerwowane
1 0 1 0 Configuration Read
1 0 1 1 Configuration Write
1 1 0 0 Memory Read Multiple
1 1 0 1 Dual-Address Cycle
1 1 1 0 Memory Read Line
1 1 1 1 Memory Write and Invalidate

W fazie przekazywania danych zawierają informację o tym, które linie


danych są wykorzystywane do transmisji danych {Byte Enable).
Ustawienie wartości 0 oznacza, że liniami danych kontrolowanymi
przez sygnał C/-BE będzie transmitowany bajt danych, 1 oznacza,
że dane na określonych liniach nie mają znaczenia.

Sygnał Byte Enable Kontrolowane linie danych


C/-BE3 AD[31-24] - czwarty bajt podwójnego słowa
C/-BE2 AD[23-16] - trzeci bajt podwójnego słowa
C/-BE1 AD[ 15-08] - drugi bajt podwójnego słowa
C/-BE0 AD[00-07] - pierwszy bajt podwójnego słowa
122 Anatomia PC

PAR ( Parity Signal) - sygnał kontroli parzystości linii A D [31-00]


i C/~BE[3-0]. Sygnał ten jest wystawiany przez inicjator po
zakończeniu fazy adresowej.
Urządzenie docelowe, którego adres został wystawiony na
magistrali, oblicza wartość sygnału kontroli parzystości
odebranego adresu i porównuje go z sygnałem wystawionym na
magistrali. Różne wartości oznaczają błąd parzystości adresu.
Urządzenie docelowe, które wykryło błąd parzystości w fazie
adresowej, musi ustawić bit 15 w swoim rejestrze stanu. Dalsza
akcja zależy od stanu bitu 8 w rejestrze komend. Jeżeli bit jest
ustawiony, to urządzenie wystawia sygnał -SERR, co
w konsekwencji prowadzi do wywołania przerwania NMI
i zatrzymania systemu. Jeżeli bit ten jest wyzerowany, urządzenie
docelowe może wystawić sygnał ~DEVSEL i przeprowadzić
transmisję, wystawić sygnał ~DEVSEL, lecz nie wystawiać
sygnału -TRDY, co w konsekwencji doprowadzi do zaniechania
transmisji przez inicjator lub wystawić sygnał -STOP, co
spowoduje zaniechanie transmisji.
W fazie przekazywania danych sygnał parzystości wystawiany jest
przez urządzenie transmitujące dane w cyklu następującym po
zakończeniu transmisji danej. Urządzenie odbierające dane oblicza
wartość tego sygnału na podstawie odczytanych danych i
porównuje go z sygnałem wystawionym na magistrali. Różne
wartości oznaczają błąd parzystości danych. Urządzenie, które
wykryło błąd parzystości, musi ustawić bit 15 w swoim rejestrze
stanu.
Jeżeli błąd parzystości wystąpił podczas zapisu danych, dalsza
akcja zależy od stanu bitu 6 w rejestrze komend urządzenia
docelowego. Jeżeli bit jest ustawiony, to urządzenie wystawia
sygnał -PERR, informujący inicjator o wystąpieniu błędu
parzystości. Jeżeli bit ma wartość zero, transmisja przebiega dalej,
gdyż urządzenie docelowe nie jest w stanie poinformować
inicjatora o wystąpieniu błędu. Inicjator ma obowiązek ustawić bit
8 swoim rejestrze stanu po wykryciu sygnału -PERR.
Jeżeli błąd parzystości wystąpił podczas odczytu danych, dalsza
akcja zależy od stanu bitu 6 w rejestrze komend inicjatora . Jeżeli
bit jest ustawiony, to inicjator wystawia sygnał -PERR, co
w konsekwencji prowadzi do ustawienia bitu 8 w rejestrze stanu
inicjatora.
Zatem jeżeli kontrola parzystości danych jest włączona (ustawiony
jest bit 15 w rejestrze stanu), to wystąpienie błędu parzystości
powoduje ustawienie bitu 8 w rejestrze stanu inicjatora. Reakcja na
wykryty błąd zależy od oprogramowania;
-FRAME (Cycle Frame) - sygnał ten wystawiany jest przez inicjator,
któremu układ arbitrażu przyznał kontrolę nad magistralą
i oznacza przejęcie nad nią kontroli. Przed wystawieniem sygnału

i
Komunikacja procesora z innymi elementami architektury komputera 123

-FRAME inicjator musi sprawdzić, czy sygnały -FRAME


i -DEVSEL są ustawione. Jeżeli są ustawione, to znaczy,
że dokonywana jest transmisja kontrolowana przez inny inicjator,
w przeciwnym przypadku kontroler może wystawić sygnał
-FRAME i przejąć kontrolę nad magistralą.
Inicjator kończy wystawianie sygnału -FRAME, gdy jest gotowy
do transmisji ostatniej danej;
-TRDY {Target Ready) - sygnał ten wystawiany jest przez urządzenie
docelowe, gdy jest ono gotowe do transmisji danych
i wycofywany po zakończeniu transmisji (równocześnie
z wycofaniem sygnału -DEVSEL). Wycofanie tego sygnału
w trakcie przekazywania danych wprowadza cykl oczekiwania
(ang. wait state);
-IRDY {Initiator Ready) - sygnał ten wystawiany jest przez inicjator, gdy
jest on gotowe do transmisji danych i wycofywany po zakończeniu
transmisji (równocześnie z wycofaniem sygnału -DEVSEL).
Wycofanie tego sygnału w trakcie przekazywania danych
wprowadza cykl oczekiwania (ang. wait state);
-STOP {Stop) - sygnał ten wystawiany jest przez urządzenie docelowe,
gdy z jakichś powodów chce ono natychmiast zakończyć
transmisję danych. Po wykryciu sygnału -STOP inicjator kończy
transmisję. Dalsze zachowanie inicjatora zależy od stanu linii
-TRDY i -DEVSEL w chwili ustawienia sygnału -STOP. Sygnał
-STOP jest wycofywany po wycofaniu sygnału -FRAME przez
inicjator.

-STO P -DEVSEL - TRDY Przyczyna Reakcja inicjatora


1 1 1 Urządzenie docelowe jest zajęte Jeżeli inicjator
(nie jest w stanie dokończyć potrzebuje kolejne
wymiany bieżącej danej w ciągu dane, to transmisja
8 cykli zegara magistrali PCI), począwszy od
W trybie burst urządzenie następnej danej może
docelowe nie jest w stanie zostać ponownie
rozpoznać adresu (sekwencja zaaranżowana
sygnałów AD [1-0]
niezrozumiała dla urządzenia
docelowego - zgodna
z późniejszą wersją
specyfikacji).
Kolejna dana wykroczy poza
przestrzeń adresową urządzenia
docelowego.
W trybie burst dane wykroczą
poza rozmiar jednej linii
pamięci cache.
Anatomia PC

-STO P -DEVSEL -T R D Y Przyczyna Reakcja inicjatora


1 1 0 W trybie burst urządzenie Transmisja zostanie
docelowe nie jest w stanie powtórzona
rozpoznać adresu (sekwencja
sygnałów A D [l-0]
niezrozumiała dla urządzenia
docelowego).
Urządzenie docelowe jest zajęte
(nie jest w stanie dokonać
wymiany pierwszej danej w
ciągu 16 cykli zegara magistrali
PCI).
Urządzenie docelowe jest
cache’owane i układ kontroli
cache’a wykrył,
że modyfikowany obszar
pamięci jest oznaczony jako
zmodyfikowany i wymaga
aktuałizacj i.
1 0 0 Wystąpienie błędu krytycznego. Generuje przerwanie
Uszkodzenie urządzenia umożliwiające
docelowego. sterownikom
sprawdzenie rejestru
Błąd parzystości w fazie
stanu inicjatora.
adresowej.
Jeżeli bit 8
Błąd w adresie wejścia-wyjścia.
w rejestrze komend
jest ustawiony,
inicjator wystawia
sygnał -SERR, co
w konsekwencji
prowadzi do
wywołania przer­
wania NMI i zatrzy­
mania systemu.
DEVSEL {Device Select) - sygnał ten wystawiany jest przez urządzenie
docelowe, które rozpoznało swój adres w fazie adresowej.
Wystawienie sygnału -DEVSEL oznacza nawiązanie połączenia
pomiędzy inicjatorem i urządzeniem docelowym. Sygnał jest
wycofywany po zakończeniu transmisji ostatniej danej lub po
wystawieniu sygnału '-STOP. Urządzenie docelowe musi
wystawić sygnał -DEVSEL najpóźniej po dwóch cyklach
oczekiwania od zakończenia fazy adresowej (układy sprzęgające
dwie magistrale PCI po trzech cyklach oczekiwania). Maksymalna
liczba cykli oczekiwania, po której urządzenie docelowe może
wystawić sygnał -DEVSEL, jest przechowywana w bitach 9 i 10
rejestru stanu;
Komunikacja procesora z innymi elementami architektury komputera 125

IDSEL {Initialization Device Select) - sygnał używany podczas


konfigurowania magistrali PCI;
~REQ {Request) - sygnał wystawiany przez inicjator żądający dostępu do
magistrali;
~GNT {Grant) - sygnał wystawiany przez układ arbitrażowy,
przydzielający kontrolę nad magistralą konkretnemu inicjatorowi;
CLK {PCI Clock Signal) - sygnał zegara taktującego magistralę PCI
(0-33 MHz);
~RST {Reset Signal) - wystawienie tego sygnału powoduje inicjalizację
wszystkich urządzeń podłączonych do magistrali PCI;
-PERR {Parrity Error) - sygnał informujący inicjator o wystąpieniu błędu
parzystości danych. Wystawienie sygnału -PERR powoduje
ustawienie bitu 8 w rejestrze stanu inicjatora. Wystawianie sygnału
-PERR może być zablokowane przez ustawienie bitu 8 w rejestrze
komend urządzenia odczytującego dane. Specyfikacja PCI nie
definiuje reakcji inicjatora na wykrycie błędu parzystości danych;
-SERR {System Error) - sygnał oznacza wystąpienie krytycznego błędu
innego niż błąd parzystości danych. Ustawienie tego sygnału
wywołuje niemaskowalne przerwanie (NMI) i w rezultacie
powoduje restart systemu. Urządzenie, które wystawia sygnał
i -SERR musi również ustawić bit 14 w swoim rejestrze stanu.
Wystawienie sygnału -SERR może być zablokowane przez
wyzerowanie bitu 8 w rejestrze komend urządzeń PCI;
AD[63-32] {Data Bus) - sygnały te, będące odpowiednikami sygnałów
A D [31-00], są wykorzystywane w 64-bitowej magistrali PCI.
W fazie przekazywania danych umożliwiają przekazanie czterech
górnych bajtów 64-bitowej danej. O sposobie przekazywania
danych decydują sygnały C/~BE[7^4]. Jeżeli 64-bitowy inicjator
próbuje zapisać dane do 32-bitowego urządzenia docelowego, to
sygnały AD[63-32] wystawione dla pierwszej danej są
automatycznie przenoszone do linii A D [31-00] jako druga dana;
C/~BE[7-4] {Byte Enable) - sygnały te są wykorzystywane w 64-bitowej
magistrali PCI. W fazie przekazywania danych zawierają
informację o tym, które linie danych są wykorzystywane do
transmisji danych {Byte Enable). Ustawienie wartości 0 oznacza,
że liniami danych kontrolowanymi przez sygnał C/-BE będzie
transmitowany bajt danych, 1 oznacza, że dane na określonych
liniach nie mają znaczenia.

Sygnał Byte Enable Kontrolowane linie danych


C/-BE7 AD[63-56] - czwarty bajt drugiego
podwójnego słowa
C/-BE6 AD[55-48] - trzeci bajt drugiego
podwójnego słowa
126 Anatomia PC

Sygnał Byte Enable Kontrolowane linie danych


C/-BE5 AD[47—40] - drugi bajt drugiego
podwójnego słowa
C/-BE4 AD[39-32] - pierwszy bajt drugiego
podwójnego słowa
Jeżeli 64-bitowy inicjator próbuje zapisać dane do 32-bitowego
urządzenia docelowego, to sygnały C/-BE[7-4] wystawione dla
pierwszej danej są automatycznie przenoszone do linii C/~BE[3-
0], kontrolujących przekazywanie drugiej danej;
PAR64 (Parity Signal fo r the upper doubleword ) —sygnał kontroli
parzystości linii AD[63-32] i C/~BE[7^4]. Sygnał ten jest
odpowiednikiem sygnału kontroli parzystości linii AD[31-00]
i C/~BE[3-0] (PAR);
-REQ64 {Request 64-bit Transfer) - sygnał informujący urządzenie
docelowe o próbie przeprowadzenia 64-bitowego transferu
danych. Sygnał ten jest odpowiednikiem sygnału -FRAME
(ma takie same przebiegi czasowe);
-ACK64 (Acknoweledge 64-bit Transfer) - sygnał wystawiany przez
urządzenie docelowe, wyrażający zgodę na przeprowadzenie
64-bitowej transmisji. Sygnał ten jest odpowiednikiem sygnału
-DEVSEL (ma takie same przebiegi czasowe). Urządzenia
32 bitowe nie wystawiają sygnału -ACK64.
64-bitowe inicjatory, które mają do przeprowadzenia transmisję
jednej danej, muszą po fazie adresowej wprowadzić dodatkowe
cykle oczekiwania (utrzymując sygnał -FRAME na wysokim,
a sygnał -IRDY na niskim poziomie), w czasie których monitorują
sygnały -DEVSEL i -ACK64 . Wystawienie obydwu sygnałów
oznacza transmisję jednej 64-bitowej danej (przed rozpoczęciem
transmisji danej inicjator musi wycofać sygnał -FRAME).
Wystawienie tylko sygnału -DEVSEL oznacza transmisje dwóch
32-bitowych danych (sygnał -FRAME musi zostać wycofany po
zakończeniu transmisji pierwszej danej;
-LOCK {Lock) - sygnał ten umożliwia inicjatorowi zablokowanie dostępu
innym inicjatorom do określonego urządzenia docelowego.
Inicjator blokuje urządzenie docelowe ustawiając sygnał -LOCK
i kończąc transmisję. Zablokowane urządzenie nie jest w stanie
nawiązać połączenia z jakimkolwiek inicjatorem, tak długo, jak
długo sygnał -LOCK jest ustawiony - żaden inny inicjator nie jest
w stanie zmienić stanu tego sygnału. Gdy inicjator blokujący
dostęp do urządzenia docelowego próbuje nawiązać z nim
ponownie łączność, usuwa sygnał -LOCK po przejęciu kontroli
nad magistralą.
Komunikacja procesora z innymi elementami architektury komputera 127

Mechanizm blokowania wykorzystywany jest przez inicjatory,


w przypadku, gdy urządzenie docelowe jest cache’owane i układ
kontroli cache’a wykrył, że modyfikowany obszar pamięci jest
oznaczony jako zmodyfikowany i wymaga aktualizacji;
CLKRUN ( Clock Run) - sygnał określa, czy magistrala taktowana jest ze
standardową czy obniżoną częstotliwością. Sygnał ten jest
wykorzystywany w systemach, w których zaimplementowany jest
subsystem oszczędzania energii;
SBO (Snoop Bach Off) - jest jednym z dwóch sygnałów
zabezpieczających inicjator przed zapisem lub odczytem danych
z/do cache’owanego, niezaktualizowanego obszaru pamięci.
Sygnał ustawiony oznacza, że dane są zaktualizowane. Niski
poziom sygnału oznacza, że dane wymagają aktualizacji.
Sygnał -SB O musi być zaimplementowany w systemach
wykorzystujących write-back cache. W systemach opartych
o write-through cache sygnał -SB O ma zawsze wartość 1.
Sygnał -SBO jest ustawiany przez sterownik magistrali PCI;
SDONE (Snoop Done) - jest jednym z dwóch sygnałów zabezpieczających
inicjator przed zapisem lub odczytem danych z/do cache’owanego,
niezaktualizowanego obszaru pamięci. Sygnał ustawiony oznacza,
że sterownik magistrali sprawdził, czy dane są zaktualizowane
(wynik sprawdzenia ustawiony jest na linii -SBO ). Niski poziom
sygnału oznacza, że sterownik magistrali jest w trakcie
sprawdzania cache’owanych obszarów pamięci.

SDONE - SBO Opis Reakcja urządzenia Reakcja inicjatora


docelowego
0 sterownik magistrali wycofuje sygnał czeka
jest w trakcie -TRDY wprowa­
sprawdzania dzając cykle
cache’owanych oczekiwania
obszarów pamięci
1 1 dane w pamięci są ustawia sygnał realizuje transmisje
zaktualizowane -TRDY
1 0 dane w pamięci przerywa połączenie próbuje ponownie
wymagają ustawiający sygnał przeprowadzić
♦ ł

aktualizacji -STOP transmisję

TDI (Test Input) - sygnał testujący;


TDO (Test Output) - sygnał testujący;
TCK (Test Clock) - sygnał testujący;
TMS (Test Mode Select) - sygnał testujący;
TRST (Test Reset) - sygnał testujący;
INT[A-D| (Interrupt Request) - kanały przerwań sprzętowych magistrali PCI.
128 Anatomia PC

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).

Na płytach głównych umieszcza się zwykle 4 gniazda magistrali PCI (standard


dopuszcza 32 gniazda), przy czym na każdej karcie rozszerzającej może być umiesz­
czone do 8 urządzeń PCI. Na ogół, oprócz 32-bitowych złącz PCI, umieszczane są na
płycie dwa lub trzy gniazda 16-bitowej magistrali ISA. Umożliwia to wykorzystanie
kart rozszerzających starszego typu.

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ę.

Do gniazd doprowadzone są wszystkie złącza magistrali PCI (podstawowe i dodatko­


we). Ponadto dodane są dwa sygnały (~PRSNT1 i -PRSNT2) umożliwiające określenie
maksymalnej mocy pobieranej przez karty rozszerzające - sygnały te nie są wyko­
rzystywane przez urządzenia PCI umieszczone na płycie głównej.

~ 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

Kontroler przerwań sprzętowych


System PCI dysponuje tylko czterema kanałami przerwań sprzętowych (-1NTA,
-INTB, ~INTC, ~INTD) - każdy kanał może być dzielony przez kilka urządzeń.
W przypadku zgłoszenia przerwania sprzętowego przez jedno lub kilka urządzeń dzielą­
cych ten sam kanał wykonywane są, zgodnie z założonym przez system priorytetem,
procedury obsługi urządzeń podłączonych do tego kanału (niezależnie od tego, czy
zgłaszają przerwanie, czy nie), tak długo, aż obsłużone zostaną wszystkie urządzenia
zgłaszające przerwanie sprzętowe. W przypadku, gdy urządzenie podłączone do aktyw­
nego kanału nie zgłasza przerwania, procedura obsługi sprowadza się do rozpoznania
tego faktu i przejścia do obsługi następnego urządzenia.

Za prawidłową obsługę przerwań sprzętowych odpowiedzialny jest programowalny


router przerwań, który „przekłada” przerwania sprzętowe magistrali PCI na niewyko­
rzystywane kanały IRQ magistrali ISA (rysunek 1.53).
Komunikacja procesora z innymi elementami architektury komputera_________129

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

Rysunek 1.53. Urządzenia Programowany router Kontrolery przerwań sprzętowych


Typowy układ PCI przerwań sprzętowych magistrali ISA
przerwań
sprzętowych
magistrali PCI

Pamięć konfiguracyjna urządzeń PCI


Urządzenia PCI wyposażone są w 256-bajtową pamięć konfiguracyjną, w której
przechowywane są informacje niezbędne do pracy urządzenia. Pamięć konfiguracyjna
podzielona jest na dwie części:
• pierwsze 64 bajty stanowią nagłówek, którego struktura jest jednakowa dla
wszystkich urządzeń PCI (za wyjątkiem układów sprzęgających dwie magistrale
PCI);
• pozostałe 192 bajty to rejestry specyficzne dla danego urządzenia.

Na rysunku 1.54 przedstawiona jest struktura nagłówka pamięci konfiguracyjnej urzą­


dzenia PCI (struktura nagłówka układu sprzęgającego magistrale PCI nie zostanie omó­
wiona, ponieważ w typowych komputerach klasy PC wykorzystywana jest tylko jedna
magistrala PCI). Czarnym kolorem oznaczone są rejestry, które muszą być predefinio­
wane.

Na kolejnych stronach omówione zostało znaczenie poszczególnych rejestrów nagłów­


ka pamięci konfiguracyjnej.
132 Anatomia PC

Rysunek 154. bajt podwójne


Struktura 3 2 słowo
1 0
nagłówka pamięci
identyfikator Identyfikator
konfiguracyjnej urządzenia producenta 00
urządzenia PCI nie i
i

będącego układem Rejestr stanu Rejestr komend 01


sprzęgającym dwie Numer
magistrale PCI Kod klasy urządzenia 02
wersji
i

Typ Min. czas Rozmiar


BIST 03
nagłówka transmisji linii cache

Adres bazowy 0 04

Adres bazowy 1 05

Adres bazowy 2 06

Adres bazowy 3 07

Adres bazowy 4 08

Adres bazowy 5 09

Wskaźnik CardBus CIS 10


Dodatkowy identyfikator
urządzenia 11

Adres bazowy rozszerzenia ROM 12

Zarezerwowane 13

Zarezerwowane 14
Długość
Częstość Linia INT Linia IRQ 15
transmisji

Identyfikator producenta (Vendor ID)

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.

Identyfikator urządzenia (Device ID)

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.

Rejestr komend (Command Registei)

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

bity 15-10 zarezerwowane;


bit 9 (Fast Back-to-Back Enable) - bit określający, czy inicjator może
inicjować transakcje w trybie fast back-to-back (następujące
kolejno po sobie transmisje, bez cyklu oczekiwania pomiędzy fazą
przesyłania danych pierwszej transmisji i fazą adresową kolejnej).
Jeżeli bit 7 w rejestrach stanu wszystkich urządzeń podłączonych
do magistrali PCI jest ustawiony, oprogramowanie konfigurujące
urządzenia podłączone do magistrali powinno ustawić ten bit. Bit
zaimplementowany jest tylko w inicjatorach;
bit 8 (System Error Enable) - bit określający, czy urządzenie ma
sygnalizować wystąpienie błędu krytycznego (wystawiać sygnał
-SERR). Po inicjalizacji urządzenia bit powinien mieć wartość 0
(brak sygnalizacji błędu krytycznego);
bit 7 (Wait Cycle Enable) - bit określający, czy urządzenie jest w stanie
wystawić adres bądź dane w jednym cyklu zegara, czy też wymaga
dodatkowych cykli oczekiwania przed wystawieniem adresu
i danych (ang. stepping). Urządzenia, które zawsze wykorzystują
stepping, muszą mieć ten bit zawsze ustawiony. W urządzeniach,
które nie mogą pracować w tym trybie, bit ten powinien mieć
zawsze wartość 0. W pozostałych urządzeniach bit powinna być
ustawiany po inicjalizacji urządzenia;
bit 6 (Parity Error Response) - bit określający, czy urządzenie ma
sygnalizować wystąpienie błędu parzystości (wystawiać sygnał
-PERR). Po inicjalizacji urządzenia bit powinien mieć wartość 0
(brak sygnalizacji błędu parzystości);
bit 5 (VGA Palette Snoop enable) - bit umożliwiający jednoczesną
zmianę palet w kilku kartach graficznych podłączonych do jednej
magistrali. Ustawienie tego bitu powoduje, że karta graficzna
podczas zmiany palety barw odczytuje dane z magistrali PCI, nie
wystawiając żadnych sygnałów na magistralę. Zmiana palety barw
w systemach z kilkoma kartami graficznymi jest potencjalnym źró­
dłem konfliktów, gdyż wymaga, aby kilka urządzeń jednocześnie
odczytywało dane z magistrali PCI.
Dlatego na jednej karcie graficznej bit ten powinien mieć wartość
0 (ta karta komunikuje się z procesorem podczas zmiany palety
barw), podczas gdy na pozostałych powinien mieć wartość 1 (te
karty „śledzą” wymianę danych i odpowiednio modyfikują swoje
palety barw).
134 Anatomia PC

Inicjalizacja kart graficznych powoduje ustawienie tego bitu na


kartach innych niż VGA i jego wyzerowanie na kartach zgodnych
ze standardem VGA;
bit 4 (Memory Write and Invalidate Enable) - bit określający, czy
inicjator może wykorzystywać komendę Write and Invalidate
zamiast komendy Write podczas dostępu do cache’owanych
obszarów pamięci. Bit ten nie może być ustawiony, dopóki nie jest
ustawiony rejestr długości linii cache’a. Po inicjalizacji wartość
tego bitu jest zerowana;
bit 3 (Special Cycle Recognition) —bit określający, czy urządzenie ma
monitorować cykl specjalny. Po inicjalizacji wartość tego bitu jest
zerowana;
bit 2 (Master Enable) - bit określający, czy urządzenie może przejmo­
wać kontrolę nad magistralą (czy jest inicjatorem). Po inicjalizacji
wartość tego bitu jest zerowana;
bit 1 (Memory Access Enable) - bit określający, czy urządzenie mające
zaimplementowany dekoder adresów ma dostęp do przestrzeni
adresowej magistrali PCI. Po inicjalizacji wartość tego bitu jest
zerowana;
bit 0 (I/OAccess Enable) - bit określający, czy urządzenie mające
zaimplementowany dekoder adresów wejścia-wyjścia ma dostęp
do przestrzeni adresowej wejścia-wyjścia magistrali PCI. Po
inicjalizacji wartość tego bitu jest zerowana.

Rejestr stanu (Status Registet)


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

bit 15 (Detected Parity Error) ~ bit jest ustawiany, gdy urządzenie


wykryło błąd parzystości (bit ten powinien być ustawiany
niezależnie od tego, czy bit 6 w rejestrze komend jest ustawiony,
czy nie);
bit 14 (Signaled System Error) —bit nie musi być zaimplementowany
w urządzeniach, które nie mogą wystawiać sygnału -SERR. Bit
jest ustawiany, gdy urządzenie wystawiło sygnał -SERR;
bit 13 (Received Master Abort) - bit zaimplementowany tylko
w inicjatorach, jest ustawiany, gdy transmisja danych nie doszła do
skutku w wyniku przekroczenia czasu przez urządzenie docelowe;
bit 12 (Received Target Abort) - bit zaimplementowany tylko
w inicjatorach, jest ustawiany, gdy inicjator wykryje, że transakcja
została przerwana przez urządzenie docelowe w wyniku błędu
krytycznego (wystawiony sygnał -STOP, brak sygnałów -TRDY
i -DEVSEL);
Komunikacja procesora z innymi elementami architektury komputera 135

bit 11 {Signaled Target Abort) - bit ustawiany przez urządzenie


docelowe, które przerwało transmisję w wyniku błędu krytycznego
(ustawiło sygnał -STOP i wycofało sygnały -TRDY
i -DEVSEL);
bity 10-9 {Device Select Timing) - bity tylko do odczytu, określają
najdłuższy czas, po którym urządzenie wystawia sygnał
-DEVSEL:
00 - fast: w cyklu następującym po wystawieniu adresu przez
inicjator,
01 - medium: jeden cykl zwłoki,
10 - slow: dwa cykle zwłoki
11 - zarezerwowane;
bit 8 {Data Parity Reported) - bit zaimplementowany tylko
w inicjatorach (w urządzeniach slave ma zawsze wartość 0), jest
ustawiany, gdy ustawiony jest bit 6 w rejestrze komend i inicjator
wykrył błąd parzystości i ustawił sygnał -PERR lub wykrył, że
urządzenie docelowe wystawiło sygnał -PERR;
bit 7 {Fast Back-to-Back Capable) - bit jest ustawiany jeżeli urządzenie
obsługuje transmisje w trybie fast back-to-back (następujące
kolejno po sobie transmisje, bez cyklu oczekiwania pomiędzy fazą
przesyłania danych pierwszej transmisji i fazą adresową kolejnej);
bit 6 {User Defined Features Supported) —bit jest ustawiany, jeżeli
urządzenie wymaga zdefiniowania niektórych parametrów przez
użytkownika (na przykład numer węzła na karcie sieciowej),
wartości zdefiniowanych parametrów są przechowywane
w plikach o rozszerzeniu .pcf;
bit 5 {66 MHz Capable) - bit jest ustawiany, gdy urządzenie może
współpracować z magistralą taktowaną zegarem do 66 MHz,
wartość 0 oznacza, że urządzenie może współpracować
z magistralą taktowaną zegarem do 33 MHz;
bity 4 -0 zarezerwowane, muszą mieć wartość 0.

Numer wersji urządzenia (Revision ID)

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-0 numer wersji urządzenia określony przez producenta.

Kod klasy urządzenia (Class Code)


bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit bit
23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
136 Anatomia PC

bity 23-16 kod klasy urządzenia;


bity 15-8 kod podklasy urządzenia;
bity 7-0 kod interfejsu.

Kod klasy urządzenia umożliwia jednoznaczne określenie przeznaczenia i właściwości


urządzenia. Tabela 1.22. przedstawia klasyfikację urządzeń PCI.

Tabela 1.22.
Klasyfikacja urządzeń PCI

OOh urządzenia wyprodukowane przed wprowadzeniem specyfikacji PCI 2.0 s


OOh OOh OOh urządzenia inne niż karta graficzna V G A
OOh Olh Olh karta graficzna V G A
Olh kontrolery pamięci masowych
Olh OOh OOh kontroler SCSI
Olh Olh XXh kontroler ID E —opis kodów interfejsu
znajduje się w tabeli 1.23.
Olh 02h OOh kontroler napędu dysków elastycznych
Olh 03h OOh kontroler IP I
Olh 04h OOh kontroler RA ID
Olh 80h OOh kontroler innej pamięci masowej
02h karty sieciowe
02h OOh OOh kontroler Ethernet
02h Olh OOh kontroler Token Ring
02h 02h OOh kontroler FD D I
02h 03h OOh kontroler ATM
02h 80h OOh inna karta sieciowa
03h karty graficzne
03h OOh OOh karta graficzna zgodna z V G A :
adresy portów we-wy: 03B0h—03BBh
pamięci karty graficznej AOOOOh-BOOOOh
03h OOh Olh karta graficzna zgodna z 8514
adresy portów we-wy: 02E8h, 02EAh,
02EFh
03h Olh OOh karta graficzna X G A
03h 80h OOh inna karta graficzna
Komunikacja procesora z innymi elementami architektury komputera 137

Tabela 122. (ciąg dalszy)


Klasyfikacja urządzeń PCI

04h urządzenia multimedialne

04h OOh OOh urządzenie video

04h Olh OOh urządzenie audio

04h 8 Oh OOh inne urządzenie multimedialne

05h kontro lery pamięci


05h OOh OOh kontroler pamięci RAM

05h Olh OOh kontroler pamięci Flash

05h 80h OOh inny kontroler pamięci

06h układy sprzęgające magistrale


06h OOh OOh Host/PCI

06h Olh OOh PCI/ISA

06h 02h OOh PCI/EISA

06h 03 h OOh PCI/MCA

06h 04h OOh PCI/PCI

06h 05h OOh PCI/PCMCIA

06h 06h OOh NuBus

06h 07h OOh CardBus

06h 8 Oh OOh inny układ sprzęgający

07h kontrolery portów komunikacyjnych

07h OOh OOh kontroler portu szeregowego 8250

07h OOh Olh kontroler portu szeregowego 16450

07h OOh 02h kontroler portu szeregowego 16550

07h Olh OOh kontroler portu równoległego

07h Olh Olh kontroler dwukierunkowego portu


równoległego

07h Olh 02h kontroler portu równoległego ECP

07h 8Oh OOh inne urządzenie komunikacyjne


138 Anatomia PC

Tabela 1.22. (ciąg dalszy)


Klasyfikacja urządzeń PCI

08h kontrolery urządzeń peryferyjnych


08h OOh OOh 8259 programowany kontroler przerwań
08h OOh Olh ISA programowany kontroler przerwań
08h OOh 02h E IS A programowany kontroler przerwań
08h Olh OOh 8237 kontroler DMA
08h Olh Olh ISA kontroler DM A
08h Olh 02h E IS A kontroler DMA
08h 02h OOh 8254 układ odmierzania czasu
08h 02h Olh ISA układ odmierzania czasu

08h 02h 02h E IS A układ odmierzania czasu


08h 03h OOh kontroler R TC
08h 03h Olh kontroler ISA R TC
08h 80h OOh inne urządzenie peryferyjne

09h kontrolery urządzeń wejścia-wyjścia


I 09h 00h 00h kontroler klawiatury

I 09h 01h 00h kontroler digitizera


I 09h ] 02h 00h kontroler myszy

I 09h I 80h 00h kontrolery innych urządzeń wejścia-wyjścia


OAh docking stations
1 OAh 1 00h 00h standardowa docking station
1 OAh 1 80h 00h inny typ docking station
OBh procesory
1 OBh 00h 00h 386
1 OBh Olh 00h 486
1 OBh 1 02h OOh Pentium
1 OBh 1 03h OOh Pentium Pro
1 OBh 1 10h OOh Alpha
1 OBh 1 40h OOh koprocesor
Komunikacja procesora z innymi elementami architektury komputera 139

Tabela 122. (ciąg dalszy)


Klasyfikacja urządzeń PCI

Klasa Podklasa Interfejs Opis


OCh kontrolery szeregowych interfejsów cyfrowych
OCh 00h OOh Firewire (IEEE 1394)
OCh Olh OOh ACCESS.bus
OCh 02h OOh SSA
ODh-FEh zarezerwowane
FFh urządzenia, które nie należą do żadnej z powyższych kategorii

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)

Rozmiar linii pamięci cache (Cache Line Size)

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7 -0 rozmiar linii pamięci cache wyrażony w podwójnych słowach.

Urządzenie korzystające z cache’owanego obszaru pamięci powinno mieć ten rejestr


zaimplementowany. Rejestr ten jest wykorzystywany do rozpoznawania, czy w trybie
burst dane wykroczyły poza linie cache.
140 Anatomia PC

Minimalny czas transmisji (Latency Timet)

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-0 minimalny czas trwania transmisji wyrażony w cyklach zegara


magistrali PCI.

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.

Rejestr ten jest zaimplementowany tylko w inicjatorach i powinien być programowalny.

Typ nagłówka (Header Type)

bit 7 0 0 0 0 0 0 0

bit 7 minimalny czas trwania transmisji wyrażony w cyklach zegara


magistrali PCI;
bity 6 -0 typ nagłówka - powinny być wyzerowane.

Na razie zdefiniowane są dwa typy nagłówków:


• 0000000 określający dowolne urządzenie nie będące układem sprzęgającym
dwie magistrale PCI;
• 0000001 określający układ sprzęgający dwie magistrale PCI.

Zależnie od typu nagłówka podwójne słowa 4-15 w nagłówku pamięci konfiguracyjnej


mają różne znaczenie.

BIST (Build-in Self-tesf)

bit 7 bit 6 X X bit 3 bit 2 bit 1 bit 0

bit 7 (BIST Capable) - bit jest ustawiony, gdy urządzenie ma


zaimplementowane procedury testujące;
bit 6 (Start BIST) - ustawienie tego bitu powoduje rozpoczęcie
procedury testującej. Po zakończeniu procedury bit jest zerowany;
bity 5-4 zarezerwowane;
Komunikacja procesora z innymi elementami architektury komputera 141

bity 3 -0 {Completion Code) - pozytywne zakończenie procedury testującej


powoduje wyzerowanie tych bitów. W przeciwnym przypadku
zawierają numer błędu specyficzny dla danego urządzenia.

Rejestr jest zaimplementowany w urządzeniach PCI, wyposażonych w procedury


samotestujące.

Adres bazowy (Base Address)


Rejestry adresów bazowych służą do określenia obszarów pamięci operacyjnej lub
przestrzeni wejścia-wyjścia, wykorzystywanych przez to urządzenie.

Przydzielenie urządzeniu pamięci operacyjnej lub przestrzeni wejścia-wyjścia składa się


z dwóch etapów. W pierwszym określany jest rozmiar bloku pamięci, w drugim przy­
dzielany jest urządzeniu adres bazowy.

wpisać
bazowego wartość

Przydzielenie adresu sprowadza się do wpisania adresu do rejestru adresu bazowego.

Struktura danych odczytanych z rejestru adresu bazowego podczas określania rozmiaru


bloku pamięci zależy od tego, czy adres powinien być umieszczony w pamięci opera­
cyjnej, czy w przestrzeni wejścia-wyjścia.

Zawartość rejestru adresu bazowego zawierającego adres pamięci operacyjnej ma nastę­


pującą strukturę:

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,
-

10 adres umieszczony jest w 64-bitowej przestrzeni adresowej,


-

01 adres umieszczony jest poniżej 1 MB,


-

0 0 - adres umieszczony jest w 32-bitowej przestrzeni adresowej;


bitO 1 - adres umieszczony jest w przestrzeni wejścia-wyjścia,
0 - adres umieszczony jest w pamięci operacyjnej.
142 Anatomia PC

Zawartość rejestru adresu bazowego zawierającego adres pamięci operacyjnej ma nastę­


pującą strukturę:

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

bity 31-2 rozmiar bloku przestrzeni wejścia-wyjścia;


bit 1 zarezerwowany;
bit 0 1 - adres umieszczony jest w przestrzeni wejścia-wyjścia,
0 - adres umieszczony jest w pamięci operacyjnej;

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.

Na przykład wartość FFFFFFOlh odczytana z rejestru adresu bazowego oznacza 256-


bajtowy blok umieszczony w przestrzeni wejścia wyjścia. Z kolei wartość FFFOOOOOh
oznacza blok o rozmiarze 1 MB umieszczony w 32-bitowej przestrzeni adresowej.

Wskaźnik CardBus CIS (CardBus CIS Pointei)

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

bit 31 zarezerwowany, bit ma wartość 0;


bity 30-28 definiują obszar pamięci, w którym umieszczony jest obszar
informacji o karcie (CIS):
111 - rozszerzenie pamięci ROM urządzenia,
110 - obszar pamięci wskazywany przez rejestr adresu bazowego 5,
101 - obszar pamięci wskazywany przez rejestr adresu
bazowego 4,
100 - obszar pamięci wskazywany przez rejestr adresu
bazowego 3,
011 - obszar pamięci wskazywany przez rejestr adresu
bazowego 2,
010 - obszar pamięci wskazywany przez rejestr adresu
bazowego 1,
Komunikacja procesora z innymi elementami architektury komputera 143

001 - obszar pamięci wskazywany przez rejestr adresu


bazowego 0,
000 - pamięć konfiguracyjna karty PCMCIA lub CardBus;
bity 27 -0 przesunięcie (offset) obszaru informacji o karcie względem
początku obszaru pamięci zdefiniowanej przez bity 30-28.

Rejestr ten jest zaimplementowany w sterownikach złącza PCMCIA obsługujących


16-bitowe karty PCMCIA zgodne ze specyfikacją 2.x lub 32-bitowe karty CardBus
zgodne ze specyfikacją CardBus 95. W rejestrze tym przechowywany jest wskaźnik do
obszaru informacji o karcie (CIS - Card Information Structure ), zawierającego
informacje o funkcjach karty i sposobie jej konfiguracji.

Dodatkowy identyfikator producenta (Subsystem Vendor ID)


i dodatkowy identyfikator urządzenia (Subsystem ID)

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7 -0 dodatkowy identyfikator producenta określany przez PCI SIG.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-0 dodatkowy identyfikator urządzenia określony przez producenta.

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ń.

Adres bazowy rozszerzenia ROM (Expansion ROM Base Address)


Rejestr adresu bazowego rozszerzenia pamięci ROM jest zaimplementowany w urzą­
dzeniach wyposażonych we własną pamięć ROM i służy do określenia adresu bazowego
tej pamięci.

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ść.

Przydzielenie adresu sprowadza się do wpisania adresu do rejestru adresu bazowego


pamięci ROM.

Zawartość rejestru adresu bazowego pamięci ROM ma następującą strukturę:


144 Anatomia PC

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-11 rozmiar rozszerzenia pamięci ROM;


bity 10-1 zarezerwowane, mają wartość 0;
bit 0 1 - dekoder adresów pamięci ROM jest włączony,
0 - dekoder adresów pamięci ROM jest wyłączony.

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.

Linia IRQ {Interrupt Line)


bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7 -0 numer linii IRQ przyporządkowanej urządzeniu przez


programowany router przerwań sprzętowych. Wartości 0-15
odpowiadają numerom linii IRQ, wartości 16-254 są
zarezerwowane, wartość 255 oznacza, że urządzeniu nie została
przyporządkowana linia IRQ.

Linia INT (Interrupt Pin)

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7 -0 numer kanału INT przyporządkowany urządzeniu przez


producenta (rejestr tylko do odczytu). Wartość 0 oznacza, że
urządzenie nie ma przyporządkowanego kanału przerwań
sprzętowych. Wartości 1—4 odpowiadają kanałom -IN TA —-INTD.
Wartości 5-255 są zarezerwowane.

Długość transmisji (MinjGnt)

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7 -0 średni okres, na jaki urządzenie przejmuje kontrolę nad magistralą


- czas wyrażony jest jako wielokrotność 250 ns. Rejestr tylko do
odczytu zaimplementowany w inicjatorach.
Komunikacja procesora z innymi elementami architektury komputera 145

Częstość (Max_Laf)

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7 -0 średni odstęp pomiędzy kolejnymi żądaniami dostępu do


magistrali - czas wyrażony jest jako wielokrotność 250 ns.
Wartość 0 oznacza, że urządzenie nie ma konkretnych wymagań.
Rejestr tylko do odczytu zaimplementowany w inicjatorach.

Rejestry długości i częstotliwości transmisji pełnią rolę informacyjną. Określają jak


często i na jak długo powinno urządzenie przejmować kontrolę nad magistralą.
Wartości zapisane w tych rejestrach mają wartości orientacyjne, które mogą być
wykorzystywane przez układ arbitrażowy podczas określania priorytetu dostępu do
magistrali.

Mechanizmy dostępu do pamięci konfiguracyjnej


Procesory serii x86 mogą adresować dwa obszary pamięci: pamięć operacyjną i prze­
strzeń wejścia-wyjścia, natomiast magistrala PCI wykorzystuje trzy obszary pamięci:
pamięć operacyjną, przestrzeń wejścia-wyjścia i pamięć konfiguracyjną.

Pamięć konfiguracyjna nie została umieszczona w przestrzeni wejścia-wyjścia ze względu


na swoje rozmiary - 256 bajtów dla urządzenia może dać do 64 kB pamięci konfigura­
cyjnej. W przestrzeni wejścia-wyjścia oprócz portów magistrali PCI muszą się zmieścić
porty wykorzystywane przez wcześniejsze rozwiązania (ISA, EISA).

Aby zachować zgodność z wcześniejszymi systemami i umożliwić implementację


magistral ISA i EISA w systemach PCI, zostały zdefiniowane dwa mechanizmy dostępu
do pamięci konfiguracyjnej urządzeń PCI, wykorzystujące porty umieszczone w prze­
strzeni wejścia-wyjścia.

Pierwszy mechanizm dostępu do pamięci konfiguracyjnej


Pierwszy, preferowany mechanizm dostępu do pamięci konfiguracyjnej jest bardzo
prosty:
• w pierwszym etapie należy wpisać do 32-bitowego portu 0CF8h numer rejestru
urządzenia PCI;
• w drugim etapie należy wpisać lub odczytać zawartość tego rejestru z 32-bito­
wego portu o adresie OCFCh.

Mechanizm ten umożliwia dostęp do wszystkich rejestrów konfiguracyjnych, wszy­


stkich urządzeń podłączonych do magistrali PCI, ponieważ pierwszy port pozwala na
jednoznaczne zakodowanie numeru podwójnego słowa pamięci konfiguracyjnej wszy­
stkich urządzeń PCI. Z kolei rozmiar drugiego portu odpowiada rozmiarowi zaadreso­
wanego podwójnego słowa.
146 Anatomia PC
%

Sposób kodowania numeru rejestru odpowiada następującemu schematowi:

bit 0 0 0 0 0 0 0 bit bit bit bit bit bit bit bit


31 23 22 21 20 19 18 17 16
bit bit bit bit bit bit bit bit bit bit bit bit bit bit 0 0
15 14 13 12 11 10 9 8 7 6 5 4 3 2

bit 31 określa sposób dostępu do rejestrów konfiguracyjnych. Wartość 1


oznacza transakcję konfiguracyjną, natomiast 0 transakcję I/O;
bity 30-24 zarezerwowane, muszą mieć wartość 0;
bity 23-16 określają numer magistrali PCI, do której dołączone jest
urządzenie (0-255);
bity 15-11 określają numer urządzenia PCI (0-31);
bity 10-8 określają numer funkcji urządzenia PCI (0-7);
bity 7-2 określają numer podwójnego słowa pamięci konfiguracyjnej (0-63);
bity 1-0 zarezerwowane, muszą mieć wartość 0.

Drugi mechanizm dostępu do pamięci konfiguracyjnej


Drugi mechanizm dostępu do pamięci konfiguracyjnej, zdefiniowany został ze względu
na zgodność ze specyfikacją 1.0 standardu PCI. Jest on nieco bardziej skomplikowany:
• w pierwszym etapie należy wpisać do 8-bitowego portu OCFAh numer magistrali
PCI (0-255);
• w drugim etapie należy wpisać do 8-bitowego portu 0CF8h numer funkcji
urządzenia;
• w trzecim etapie należy dokonać zapisu lub odczytu jednego, dwóch lub czterech
bajtów odpowiadających właściwemu rejestrowi konfiguracyjnemu w przestrzeni
wejścia-wyjścia od adresu COOOh do CFFFh.

Sposób kodowania numeru funkcji urządzenia odpowiada następującemu schematowi:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7—4 jeżeli są ustawione, sterownik magistrali może dokonać zmian


w rejestrach konfiguracyjnych urządzeń;
bity 3-1 numer funkcji urządzenia PCI (0-7);
bit 0 jeżeli jest ustawiony, umożliwia sterownikowi magistrali PCI
przeprowadzenie specjalnego cyklu.

Rejestry konfiguracyjne urządzeń PCI umieszczone w przestrzeni wejścia-wyjścia od


adresu COOOh do CFFFh podzielone są na 16 grup (począwszy od COOOh—COFFh,
Komunikacja procesora z innymi elementami architektury komputera 147

skończywszy na CFOOh-CFFFh). Każda grupa odpowiada urządzeniu PCI o numerze


określonym przez trzecią cyfrę w adresie (C7xxh odpowiada urządzeniu o numerze 7).

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ą:

• wykrycie PCI BIOS;


• wykrycie urządzeń PCI;
• odczytanie kodu klasy urządzeń PCI;
• generowanie specjalnego cyklu magistrali PCI;

• odczytanie i zapisanie danych w rejestrach konfiguracyjnych urządzeń PCI;

• odczytanie informacji dotyczących przypisania kanałów przerwań urządzeniom PCI;

• przypisanie kanałów przerwań urządzeniom PCI.

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).

Autokonfiguracja urządzeń PCI


Urządzenia PCI, podobnie do urządzeń EISA i MCA, nie majązwór konfiguracyjnych.
Konfiguracja przebiega automatycznie, przez wpisanie odpowiednich wartości do
rejestrów urządzeń PCI. Możliwość zmiany wartości tych rejestrów umożliwia rekon-
figurację urządzeń po dołączeniu do systemu nowego urządzenia.

Urządzenia podłączone do magistrali PCI są automatycznie wykrywane i konfi­


gurowane przez oprogramowanie systemowe przed rozpoczęciem testów POST (Power
On Self Test). Na podstawie wartości zapisanych w rejestrach urządzeń PCI oprogra­
mowanie systemowe decyduje o przydzieleniu kanałów przerwań, przydzieleniu obsza­
rów pamięci, sposobie arbitrażu. Oprogramowanie systemowe zapewnia konfigurację
umożliwiającą uruchomienie komputera. Po uruchomieniu systemu konfiguracja urzą­
dzeń PCI może być zmieniona przez system operacyjny.

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.

Udział graficznych form wyrazu we współczesnych aplikacjach stale rośnie. Animacje


obiektów trójwymiarowych pochłaniają znaczną część mocy obliczeniowej procesora
i blokują magistrale. Obiekty 3D już dawno przestały być prezentowane na płaskim
ekranie monitora w formie „drucianego szkieletu”. Aby oddać złudzenie realności
szkieletowe modele pokrywa się elektronicznie pięknymi teksturami, które z punktu
widzenia komputera stanowią barwne mapy bitowe. Problem polega na tym, iż stopień
realizmu tak spreparowanych obiektów rośnie wraz z rozmiarami tekstur bowiem ich
powierzchnie są bardziej bogate w szczegóły.

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).

Rysunek 156: Tył obudowy


Gniazdo 5-
magistrali A GP

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.

Magistrala AGP może pracować w jednym z trzech trybów oznaczanych symbolicznie


lx ,2 x i 4x. Oto co kryje się za tymi określeniami:

• Tryb lx. Proste rozszerzenie standardu PCI polegające na przyspieszeniu pracy


magistrali. Osiągane przez podwojenie częstotliwości pracy zegara taktującego
do wysokości 66 MHz. Maksymalny transfer osiąga więc wartość 264 MB/s
(66 MHz x 4 B).
• Tryb 2x. Częstotliwość zegara nie ulega zmianie ale wymiana danych odbywa
się w momentach wyznaczanych przez obydwa zbocza impulsów taktujących.
W efekcie następuje „pozorny” wzrost częstotliwości zegara do wysokości 133.
MHz16. Teoretyczna przepustowość magistrali sięga w tym przypadku 532 MB/s
(133 MHz x 4 B). Obniżenie poziomów napięć z 5 V do 3,3 V łagodzi wymagania
na stromość zboczy coraz to krótszych sygnałów. Transfer zgodny z protokołem
2x inicjowany może być wyłącznie przez kontroler graficzny a płyta główna
musi odpowiadać na żądania wyrażone w tym trybie.
• Tryb 4x. Opcja 4x wprowadzona została przez Intela do specyfikacji AGP
w wersji 2.0 i nie należy jak na razie do obowiązkowego wyposażenia ani kart
graficznych ani płyt głównych. Rozszerzenie należy traktować jako potencjalną
rezerwę tkwiącą w systemie AGP. Tryb 4x pracuje na znacznie obniżonych po­
ziomach napięć (1,5 V). Tak spłaszczone przebiegi mają dostatecznie strome
zbocza by podołać wymogom bardzo szybkiej transmisji. Magistrala przesyła
w porównaniu z trybem 2x podwójną ilość danych bowiem pomiędzy dowol­
nymi dwoma zboczami zegara mają miejsce dwie transakcje. Odpowiada to
teoretycznej przepustowości równej 1064 MB/s (266 MHz x 4 B).

Istnienie dwóch odmiennych standardów poziomów napięć oznacza dla producentów


kart graficznych konieczność rozróżniania wyrobów w wersji 1,5 V od modeli 3,3 V.
Służy temu specjalnie uformowana listwa kontaktowa gwarantująca blokadę mecha­
niczną. Oprócz tego, karty pracujące w trybie 3,3 V pozostawiają sygnał ~TYPEDET
(końcówka A2) na wysokim poziomie podczas gdy modele klasy 1,5 V sprowadzają ten
sygnał do masy.

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.

Rysunek 1,58, A1 A21 A26 A66


Gniazda magistrali
AGP (1,5 V, 3,3 V %
*o
i uniwersalne) 3
_Q AGP/3.3V
O

B1 B21 B26 B66

A1 A41 A46 A66

o
_o AGP/1.5V
o

B1 B41 B46 B66

A1 A66

o
■o
3 AGP/Uni
-O
O

Tabela 1,24.
Rozmieszczenie złącz w gnieździe A GP

Styk Złącze 3,3 V Złącze uniwersalne Złącze 1,5 V


B A B A B A
1 ~OVRCNT 12V ~OVRCNT 12Y -OYRCNT 12V
2 5V -TYPEDET 5V -TYPEDET 5V -TYPEDET
3 5V Zarezerw. 5V Zarezerw. 5V Zarezerw.
4 USB+ USB- USB+ USB- USB+ USB-
5 GND GND GND GND GND GND
6 -INTB -INTA -INTB -INTA -1NTB*

-INTA
7 CLK ~RST CLK ~RST CLK -RST
8 ~REQ GND ~REQ GND ~REQ GND
9 YCC3.3 YCC3.3 YCC3.3 YCC3.3 YCC3.3 YCC3.3
152 Anatomia PC

Tabela 1.24. (ciąg dalszy)


Rozmieszczenie złącz w gnieździć A GP

Styk Złącze 3,3 V Złącze uniwersalne Złącze 1,5 V


B A B A B A
10 STO ST1 STO ST1 STO ST1
11 ST2 Zarezerw ST2 Zarezerw. ST2 Zarezerw.
12 RBF PIPE RBF PIPE -R B F PIPE
13 GND GND GND GND GND GND
14 Zarezerw. Zarezerw Zarezerw. WBF Zarezerw. WBF
15 SBAO SB A l SBAO SB Al SBAO SB A l
16 VCC3.3 VCC3.3 VCC3.3 VCC3.3 VCC3.3 VCC3.3
17 SBA2 SBA3 SBA2 SBA3 SBA2 SBA3
18 SB STB Zarezerw. SB STB SB STB SB STB SB STB
19 GND GND GND GND GND GND
20 SBA4 SBA5 SBA4 SBA5 SBA4 SB A 5
21 SBA6 SBA7 SBA6 SBA7 SBA6 SBA7
22 Klucz Klucz Zarezerw. Zarezerw. Zarezerw. Zarezerw.
23 Klucz Klucz GND GND GND GND
24 Klucz Klucz GND GND GND GND
25 Klucz Klucz VCC3.3 VCC3.3 VCC3.3 VCC3.3
26 AD31 AD30 AD31 AD30 AD31 AD30
27 AD29 AD28 AD29 AD28 AD29 AD28
28 VCC3.3 VCC3.3 VCC3.3 VCC3.3 VCC3.3 VCC3.3
29 AD27 AD26 AD27 AD 26 AD27 AD26
30 AD25 AD24 AD25 AD24 AD25 AD24
31 GND GND GND GND GND GND
32 AD STB1 Zarezerw. AD STB1 AD STB! AD STB1 AD STB1
33 AD23 C/-BE3 AD23 C/-BE3 AD23 C/-BE3
34 VDDQ3.3 VDDQ3.3 VDDQ VDDQ VDDQ1.5 VDDQ1.5
35 AD21 AD22 AD21 AD22 AD21 AD22
36 AD19 AD20 AD19 AD20 AD19 AD20
37 GND GND GND GND GND GND
38 AD17 AD18 AD17 AD 18 AD17 AD18
39 C/-BE2 AD16 C/-BE2 AD16 C/-BE2 AD16
40 VDDQ3.3 VDDQ3.3 VDDQ VDDQ VDDQ1.5 VDDQ1.5
41 -IR D Y FRAME IRDY FRAME IRDY FRAME
Komunikacja procesora z innymi elementami architektury komputera 153

Tabela 1.24. (ciąg dalszy)


Rozmieszczenie złącz w gnieżdzie A GP

Styk Złącze 3,3 V Złącze uniwersalne Złącze 1,5 V


B A B A B A
42 Zarezerw. Zarezerw, Zarezerw. Zarezerw. Klucz Klucz
43 GND GND GND GND Klucz Klucz
44 Zarezerw. Zarezerw, Zarezerw. Zarezerw. Klucz Klucz
45 VCC3.3 VCC3.3 VCC3.3 VCC3.3 Klucz Klucz
46 ~DEVSEL -TRDY ~DEVSEL -TRDY -DEVSEL -TRDY
47 VDDQ3.3 -STOP VDDQ -STOP VDDQ1.5 -STO P
48 -PERR -PM E -PERR -PM E -PERR -PM E
49 GND GND GND GND GND GND
50 -SERR PAR -SERR PAR -SERR PAR
51 C/~B E 1 AD15 C/-BE1 AD 15 C/-BE1 AD15
52 VDDQ3.3 VDDQ3.3 VDDQ VDDQ VDDQ1.5 VDDQ1.5
53 AD14 AD13 AD14 AD 13 AD14 AD13
54 AD 12 AD11 AD 12 AD11 AD12 AD11
55 GND GND GND GND GND GND
56 AD10 AD9 AD 10 AD9 AD10 AD9
57 AD8 C/-BE0 AD8 C/-BE0 AD8 C/-BE0
58 VDDQ3,3 VDDQ3.3 VDDQ VDDQ VDDQ1.5 VDDQ1.5
59 ADSTBO Zarezerw. ADSTBO ~AD__STB0 A D STBO -A D S T B O
60 AD7 AD6 AD7 AD6 AD7 AD 6
61 GND GND GND GND GND GND
62 AD5 AD4 AD 5 AD4 AD 5 AD4
63 AD3 AD2 AD3 AD2 AD3 AD2
64 VDDQ3.3 VDDQ3.3 VDDQ VDDQ VDDQ1.5 VDDQ1.5
65 AD1 ADO AD1 ADO AD1 ADO
*

66 Zarezerw. Zarezerw. Zarezerw. Zarezerw, Zarezerw. Zarezerw.

Sygnały magistrali AGP

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

Sygnały kontroli przepływu


~RBF (Read Buffer Fuli) Sygnał stanowi wskaźnik zajętości bufora dla danych
typu LP (Low Priority) zamawianych przez stronę Master. Dane takie
wolno przesyłać jedynie wtedy, gdy sygnał jest w stanie wysokim.
~WBF ( Write Bujfer Fuli) Sygnalizator zajętości bufora dla danych przesyłanych
przez stronę Target w trybie FW (Fast Write). Transakcja FW może być
zapoczątkowana jedynie w razie stwierdzenia wysokiego poziomu tego
sygnału.

Sygnały obsługi żądań AGP


SBA[7-0] Pomocnicza magistrala 8-bitowa (Side Band Addressport) może być
wykorzystywana do transportu adresów i rozkazów. Sygnały SBA mogą
być sterowane wyłącznie przez stronę Master i wysyłane w kierunku
Target.
-PIPĘ Sygnał aktywowany zostaje przez stronę Master w celu wskazania chęci
umieszczenia żądania w kolejce poleceń oczekujących na dostęp do
magistrali AGP. Master może przesłać cały szereg żądań, jak długo
sygnał -PIPĘ utrzymywany jest na niskim poziomie. Kluczowanie
odbywa się przy pomocy narastających zboczy sygnału ~CLK.

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.

System zarządzania zużyciem energii


-PM E Sygnał ten (Power Management Event) nie jest wykorzystywany przez
protokół AGP, ale znajduje zastosowanie przy obsłudze urządzeń PCI.

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.

W wersji 2.0 specyfikacji (dostępna w Internecie pod adresem www.agpforurn.org) po­


jawia się po raz pierwszy termin Fast Writes oznaczający możliwość uruchamiania
szybkich transferów danych w kierunku kontrolera graficznego również przez CPU
(ewentualnie układy sterujące płyty głównej).

Teoretyczne wartości transferów sięgające 1 GB/s (tryb 4x) możliwe są do osiągnięcia


jedynie dzięki pewnym specjalnym zabiegom modernizacyjnym i uzupełnieniom, którym
poddana została magistrala PCI i jej protokół.

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ść.

Czas odpowiedzi pamięci Czas odpowiedzi pamięci


Rysunek 1,59.
Transfer PCI
PCI Adres 1 Dane 1 Adres 2 Dane 2

Zupełnie inna filozofia przyświecała twórcom protokołu AGP, którzy zaimplemento­


wali magistralę jako potok {AGP Pipelining). W modelu tym nie ma niewykorzystanych
przerw, bowiem czas oczekiwania na reakcję pamięci wypełniony jest przez inne trans­
misje, np. wysyłanie kolejnych adresów.

Czas odpowiedzi pamięci


Rysunek 1 M
Transfer A GP
AGP Adres 1 X Adres 2 X Adres 3 X Adres 4 Dane 1 Dane 2 Dane 3 X Dane 4

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.

C/-BE3 C/-BE2 C/-BE1 C/-BE0 Kod operacji


0 0 0 0 Read LP
0 0 0 1 Read HP
0 0 1 0 reserved
0 0 1 1 reserved
0 1 0 0 Write LP
0 1 0 1 Write HP
0 1 1 0 reserved
0 1 1 1 reserved
1 0 0 0 Long Read LP
1 0 0 1 Long Read HP
1 0 1 0 Flush
1 0 1 1 reserved
Komunikacja procesora z innymi elementami architektury komputera 159

C/-BE3 C/-BE2 C/-BE1 C/-BE0 Kod operacji


1 1 0 0 Fence
1 1 0 1 DAC
1 1 1 0 reserved
1 1 1 1 reserved

Dane przesyłane w wyniku działania komend z przyrostkiem HP {High Priority) mają


wyższy stopień uprzywilejowania i muszą osiągnąć adresata nie później niż w pewnym
określonym przez system czasie. Obowiązek taki nie ciąży na danych przesyłanych
w wyniku realizacji żądań kodowanych przez rozkazy z przedrostkiem LP (Low Priority).

Naprzemienne kolejkowanie komend LP i HP powoduje, iż w buforach danych strony


odbiorczej mogą zalegać bloki przynależne do rozkazów o niskim priorytecie mimo iż
z punktu widzenia jednostki Master operacja zapisu do pamięci dawno się już zakoń­
czyła. Dla oczyszczenia tych kolejek kontroler graficzny wystosowuje co pewien czas
komendę Flush. Polecenie Fence gwarantuje iż nie dojdzie do sytuacji, w której po­
bierane z pamięci rozkazem Read HP dane nie zostały zaktualizowane poprzez wydane
znacznie wcześniej (i zalegające w kolejce) polecenie zapisu o niskim priorytecie. Ko­
mendy Flush i Fence nie mają bezpośredniego wpływu na przepływ danych o wysokim
priorytecie jedynie pozwalają na wzgląd systemu operacyjnego do wewnętrznych
buforów danych magistrali AGP.

DAC {Dual Address Cycle) jest specjalnym modyfikatorem przetwarzającym wszystkie


pozostałe 32-bitowe polecenia w funkcje 64-bitowe. Wystąpienie kodu DAC w żądaniu
oznacza iż następujące po nim polecenie niesie w sobie właściwy kod funkcji (oraz 4
starsze bajty adresu 64-bitowego). Cztery młodsze bajty adresu zawarte są w fazie pier­
wszej opatrzonej kodem DAC.

Rozkazy z przedrostkiem Long stosuje się przy odwołaniach do długich i spójnych


obiektów. W takim przypadku przeskalowaniu ulega współczynnik określający wymiar
transmitowanego bloku. Wartość kodowana przez bity ADO do AD3 interpretowana jest
w jednostkach równych 32 bajtom. Maksymalna długość bloku, który może być prze­
słany przy pomocy jednej komendy Long rośnie więc do 256 bajtów.

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 * *

i później nie można juz nic zmieniać.

Rysunek 1.61. SBA-Bus


R1/A1 R2/A2 R3/A3
Idea działania (8 bitów)
magistrali SBA
*%
AD-Bus
Dane 1 Dane 2
(32 bity)

Cykl PCI
R/A: Rozkaz / Adres (magistrala SBA)
Ad«, / Danero: Cykl PCI (magistrala AGP)

Magistrala SBA pozostaje zawsze w wyłącznym władaniu jednostki Master (kontrolera


graficznego). Format komend AGP transmitowanych szyną SBA nie ulega zmianie, tzn.
są one nadal 32-bitowe. Przed^skierowaniem ich na szynę 8-bitową dokonuje się skom­
plikowanego procesu łamania na trzy lub cztery grupy dwubajtowe. Te z kolei przesyła
się w dwóch częściach: najpierw bajt starszy a potem młodszy. W trybie lx magistrala
taktowana jest wprost sygnałem zegarowym CLK. Przejmowanie danych odbywa się
wraz z pojawieniem się kolejnego narastającego zbocza tego impulsu.

Rysunek 1.62. .C LK
Praca magistrali
(1X)
SBA w trybie l x
-A SBA
O*

Specyfikacja trybu 2x wprowadza dodatkowy sygnał zegarowy S B S T B . Podwojenie


pasma przenoszenia uzyskuje się poprzez prostą sztuczkę polegającą na dwukrotnej
synchronizacji magistrali w ramach jednego okresu zegara. Dane przejmowane są za­
równo przy narastającycfP(młodszy bajt komendy) jak i przy opadających (bajt starszy)
zboczach przebiegu S B S T B . ^

Rysunek 1.63. clk


Praca magistrali
SBA w trybie 2x
SB_STB
(2X)
SBA li

Praca magistrali SBA z prędkością 4x wymaga podwojenia częstotliwości zegarowej


oraz wprowadzenia drugiego przebiegu taktującego. Jego rolę pełni zanegowany sygnał
SB__STB? W trybie tym wykorzystuje się jedynie opadające zbocza sygnałów taktu­
jących: tylne zbocze impulsu SB STB kluczuje starszy bajt komendy a wraz z tylnym
zboczem ~SB_STB transportowany jest bajt młodszy.
Komunikacja procesora z innymi elementami architektury komputera 161

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

Sprzętowy mechanizm stronicowania, w który wyposażony jest procesor przetwarza


wirtualny adres liniowy w adres fizyczny. Pamięć przydzielana jest jednak nie w formie
ciągłej lecz w postaci stron (4 kB), które niekoniecznie muszą przylegać do siebie.
Dzięki pośrednictwu tabeli GART, kontroler graficzny widzi spójny obszar pamięci.
Zarówno kontroler jak i CPU używają tych samych adresów zwracając się do pamięci
AGP (lub do pamięci lokalnej akceleratora). W zakresie okna GART mechanizm stro­
nicowania jest wyłączony i system adresowania CPU pracuje w trybie 1:1 (adres wirtu­
alny jest jednocześnie adresem fizycznym).

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

Oprócz kontrolera graficznego w transfer zaangażowany jest procesor i magistrala PCI,


System musi przeprowadzić następujące operacje:
• Pobranie pliku tekstur z dysku twardego i umieszczenie go w pamięci opera­
cyjnej - ©.
• Wysłanie tekstur do pamięci lokalnej akceleratora 3D - (D, (D,@.

• Kontroler graficzny sięga do swej pamięci i pobiera niezbędne do obliczeń para­


metry punktów - ©. Wyniki zapisywane są —<© - w buforze obrazu (fragment
pamięci lokalnej).
Komunikacja procesora z innymi elementami architektury komputera 163

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.' ,

PCI PCI PCI to ISA


Bridge

Przedstawiona na rysunku 1.67 ścieżka przepływu ulega znacznemu skróceniu:

• Nadal konieczne jest pobranie tekstury z dysku i umieszczenie jej w pamięci


operacyjnej - ® .
• Kontroler „widzi” tekstury w pamięci operacyjnej bowiem dzięki AGP stanowi
ona rozszerzenie jego przestrzeni adresowej. Tam też wykonywane są wszelkie
obliczenia - ®.

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.

Wymagania sprzętowe i programowe


i

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:

Numer wersji Wersja systemu operacyjnego


4.00.950 Windows 95
4.00.950A Windows 95 uaktualniony przez Service Pack 1 lub wersja
OEM na poziomie SR-1
4.00.950B Windows 95 w wersji OEM na poziomie SR-2 (znany jako
OSR 2) lub SR-2.1 (określany mianem OSR 2.1)
4.00.950C Windows 95 w wersji OEM na poziomie SR-2.5 (inna nazwa:
OSR 2.5)
Komunikacja procesora z innymi elementami architektury komputera 165

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.

• Microsoft DirectX w wersji 5 lub nowszej. DirectX stanowi uniwersalną plat­


formę programową pozwalającą na odwołania do zaawansowanych funkcji
oferowanych przez urządzenia multimedialne przy pomocy zestawu ujednolico­
nych procedur.
Cała koncepcja opiera się na konstrukcji dwupoziomowej. W warstwie pierwszej
{DirectX Foundation) zawarte są funkcje „niskiego poziomu” ściśle współpracu­
jące ze sprzętem: sterownikami kart graficznych, przetwornikami dźwięku, my­
szami, joystickami, klawiaturami itp. W wyniku ich działania kreowana jest
abstrakcyjna maszyna multimedialna HAL {Hardware Abstraction Layer), która
niezależnie od swej rzeczywistej konstrukcji, reaguje na zestaw unormowanych
funkcji sterujących. Dla pogłębienia stopnia „iluzji” emuluje się nawet progra­
mowo nieistniejące w naturze fragmenty sprzętu (np, akcelerator 3D).
Górną warstwę systemu stanowią skomplikowane usługi wyższego poziomu
{DirectXMedia Layer), które opierają się na platformie HAL. Funkcje te współ­
pracują bardziej z użytkownikiem i jego oprogramowaniem, (to znaczy jak na
razie głównie grami komputerowymi) niż z samym sprzętem. W warstwie tej
realizowane są animacje obrazów, przetwarzanie i strumieni audio i wideo oraz
funkcje interakcyjne.
DirectX stanowi integralną część systemów operacyjnych Windows 98 i Win­
dows NT 5.0. Posiadacze wersji wcześniejszych muszą doinstalować niezbędne
nakładki. Można je sprowadzić z intemetu (ftp.microsoft.com).

Powyższe wyliczenie sygnalizuje jedynie złożoność problemów na jakie można na­


potkać eksperymentując z AGP i nie ma na bynajmniej na celu odstraszania Czytelnika
od wszelkich prób w tym kierunku. Jeśli któryś z elementów połączonego łańcucha
sprzętowo-programowego nie funkcjonuje poprawnie, system przechodzi w klasyczny
tryb PCI a funkcje AGP po prostu nie są aktywowane.
166 Anatomia PC

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).

To, co jest możliwe do osiągnięcia to bardziej realistyczny wygląd obiektów. Stopień


tego realizmu uzależniony jest w dużej mierze od aktywności tzw. filtrów. Opisana
w rozdziale ósmym technika uśredniania tekstur (Mipmapping) pochłania dodatkowo
sporą część mocy obliczeniowej. W takim właśnie przypadku z pomocą przychodzi
AGP i DIME. Czasochłonne uśredniania tekstur przeprowadzane są bezpośrednio
w pamięci operacyjnej bez potrzeby przesyłania ich do karty graficznej.

Typowa karta graficzna (4 MB pamięci lokalnej) z akceleratorem 3D musi przeznaczyć


2 MB na bufor ramki i bufor-Z. Dla tekstur pozostaje 2 MB co pozwala na konstrukcję
scenerii o średnim stopniu komplikacji i zaprezentowanie jej w rozdzielczości 640x480.
Zwiększenie pojemności pamięci tekstur do wysokości 8 MB dzięki technice AGP po­
woduje wyraźny wzrost urealnienia obiektów 3D a obserwator ma odczucia oglądania
obrazu w dużo wyższej rozdzielczości niż ma to w istocie miejsce. Samo zwiększenie
rozdzielczości obrazu (na przykład do 800x600) przy tym samym stopniu skompliko­
wania scenerii nie podnosi liczby trójkątów elementarnych, które CPU musi przetrans­
portować do akceleratora graficznego. Wraz ze wzrostem rozdzielczości rośnie jedynie
sumaryczna liczba punktów barwnych (piksli) wypełniających coraz to większe trój­
kąty. Każdy taki punkt musi być oddzielnie przeliczony przez akcelerator graficzny a na
szybkość tych obliczeń nie ma wpływu żadna magistrala.
Komunikacja procesora z innymi elementami architektury komputera 167

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.

Aktywność funkcji AGP można stwierdzić na przykład przy pomocy programu


DirectX-Show z zestawu DirectX-SDK firmy Microsoft. Należy wybrać punkt Primary
Display-Adapter/Mem i odczytać wartość parametru Non-Local Vid-Mem. Obecność
w tym miejscu liczby większej od zera jest gwarancją funkcjonowania mechanizmu AGP.
Można też odwołać się do obecnego w panelu sterującym (po udanej instalacji nakładki
DirectX w wersji 5.0) modułu konfiguracyjnego bloku Direct-Draw. Wymiar pamięci
w okienku Video Memory musi przy tym przewyższać faktycznie zainstalowaną pamięć
lokalną na karcie graficznej.

Popularny program testujący 3D-Winbench97 autorstwa grupy Ziff-Davis (ZDLabs)


daje się również zaadaptować do celów diagnostyki funkcji AGP. Należy jedynie za­
ładować specjalną scenerię bazującą na bardzo dużych teksturach o rozmiarach powyżej
6 MB. Skoro tylko przełączymy tryb wideo na wysoką rozdzielczość i dużą liczbę ko­
lorów (od High-Color wzwyż) pamięć lokalna (nawet kart wyposażonych w 8 MB) nie
jest wstanie pomieścić całej tekstury i kontroler zmuszony jest do zrzutów jej frag­
mentów. Porównanie wyników przebiegu 3D-Winbench97 w systemie z i bez AGP
prowadzi do wniosków, iż wzrost prędkości systemu jest tym bardziej zauważalny im
większa jest rozdzielczość obrazu. W trybie 768x1024 wykazywany jest przyrost około
200% podczas gdy przejście do 480x640 nie daje żadnych korzyści.

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.

Architektura tego typu wymaga od projektantów pewnej deklaracji wstępnej, która


rzutuje później na konfigurację całego układu. Mowa tu o sposobie korzystania
z pamięci przez współpracujące jednostki CPU. Wyróżnić należy dwa podstawowe
punkty podejścia do tego zagadnienia:
• Każdy z procesorów stanowi niezależną jednostkę obliczeniową i dysponuje
własną pamięcią operacyjną. Model ten określany jest mianem pamięci rozpro­
szonej {Distributed Memory). Koordynacja pracy poszczególnych podsystemów
17
odbywa się na drodze wymiany wiadomości, najczęściej w formie pakietów .
Czas dostępu do danych może się znacznie wydłużać, jeżeli leżą one w obszarze
zarządzanym przez inny procesor.

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

• Cala pamięć systemowa jest ogólnodostępna i leży w zasięgu działania każdego


z procesorów (Shared' Memory). Czas dostępu do danych jest jednakowy dla
każdej z jednostek, jednakowoż protokół dostępu musi uwzględniać możliwość
występowania kolizji.

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

Równoległe połączenie setek lub nawet tysięcy procesorów prowadzi do osiągnięcia


fenomenalnej mocy obliczeniowej, która może jednak być wykorzystana jedynie w nie­
licznych przypadkach. Stopień w jakim dana aplikacja czerpie korzyści z architektury
MPP zależy w ogromnym stopniu od stylu programowania. Konieczność częstej komu­
nikacji między procesorami pochłania moc obliczeniową i blokuje wspólną magistralę.

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

18 W literaturze angielskojęzycznej używa się w tym miejscu terminu Nodes (węzły).


Komunikacja procesora z innymi elementami architektury komputera 169

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.

Systemy multiprocesorowe w konfiguracji MPP można najczęściej spotkać w centrach


komputerowych ośrodków uniwersyteckich niż w ośrodkach obliczeniowych banków.

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
«

Jeżeli pominąć pewne sytuacje szczególne (moment ładowania i uruchamiania systemu


operacyjnego), architektura tego typu wykazuje cechy symetryczne (SMP, Symmetric
Multi Processing). Każdy z procesorów może wykonywać zarówno dowolny fragment
aplikacji jak i systemu operacyjnego. Podobnie jest z obsługą przerwań: choć zwykle
w systemach wieloprocesorowych deleguje się do tego celu jeden z procesorów, nie jest
to konieczne - każdy z CPU jest równouprawniony.

Niepodważalną zaletą UMA jest łatwość w przenoszeniu programów ze środowiska


jednoprocesorowego. Cały nakład pracy związany z zarządzaniem takim układem
bierze na siebie system operacyjny. Jeśli ma on w sobie zaimplementowaną obsługę
SMP, od aplikacji wykonywanej pod jego kontrolą nie wymaga się już żadnych
dodatkowych działań. Udostępnianie mocy obliczeniowej dla aktualnie realizowanych
procesów odbywa się przy tym już nie na zasadzie przydziału wycinków czasowych
jedynego CPU ale na oddaniu we władanie aplikacji jednego z pełnowartościowych
procesorów systemowych. Również pisanie nowego programu pod system SMP nie
wymaga od programisty żadnych dodatkowych umiejętności: nad sprawiedliwym
przydziałem procesorów czuwa system operacyjny.

Szczególny przypadek stanowią monstrualnych wielkości aplikacje wykonywane jako


jeden proces. Tutaj system operacyjny SMP jest bezsilny. Przełączanie na kolejne
procesory nie może oczywiście przynieść przyspieszenia działania. Kod tego typu musi
zostać zmodyfikowany poprzez rozbicie na mniejsze procesy lub wątki.
170 Anatomia PC

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.

Procesory Pentium korzystają w tym wypadku z zainstalowanej na płycie głównej pa­


mięci L2, w rozmiarze 256-512 kB (rysunek 1.70).

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.

19 W literaturze wymienia się często jako graniczną ilość osiem procesorów.


Komunikacja procesora z innymi elementami architektury komputera 171

Rysunek 1.71. PentiumPro PentiumPro PentiumPro


System
multiprocesorowy LI-CACHE L1-CACHE ■ ■ ■ 11 -CACHE
wyposarzony
wprocesory z własną L2-CACHE L2-CACHE L2-CACHE
pamięcią podręczną
drugiego poziomu
Magistrala wewnętrzna

.
Ł -r >>^

Magistrala zewnętrzna

Buforowa pamięć podręczna (Cache)


Pamięć cache jest formą szybkiej pamięci podręcznej, w której przechowywane są
często używane dane20. Czas dostępu do pamięci operacyjnej waha się w granicach
50-70 ns, Procesor Pentium taktowany zegarem 200 MHz wykonuje większość in­
strukcji w czasie jednego taktu zegarowego (5 ns). Bezpośrednie połączenie szybkiego
procesora z magistralą pamięciową powoduje natychmiastowe uformowanie się wąskie­
go gardła a o wykorzystaniu pełnej mocy obliczeniowej nie może być mowy.

Optymalne wykorzystanie przyspieszających funkcji pamięci pośredniej wymaga zwy­


kle działań wielopoziomowych - pierwszy bufor jest bardzo szybki i stosunkowo mały,
a drugi stopień pośredni już większy lecz nieco wolniejszy. Rozwiązanie takie godzi
interesy ekonomiczne z parametrami technicznymi - szybkie pamięci SRAM są niesły­
chanie drogie i zużywają w stosunku do tanich DRAM niewspółmiernie więcej energii.
Bufor pierwszego poziomu (L-i Caché) o rozmiarze kilku do kilkunastu kilobajtów
osadzany jest wprost na krzemowej strukturze scalonej procesora i pracuje synchronicz­
nie z nim. Architektura i lokalizacja podręcznej pamięci buforowej stopnia drugiego (L-
2 Cache) zależna jest od typu procesora, przy czym wyróżnić można trzy sposoby
podejścia:
• L-2 stanowi odrębną strukturę krzemową zamykniętą we wspólnej obudowie z pro­
cesorem. Połączenia są krótkie co pozwala na taktowanie synchroniczne. Typowym
przedstawicielem architektury tego typu jest procesor Pentium Pro.

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

• Bufor drugiego poziomu zbudowany jest z niezależnych układów scalonych


leżących w bliskim sąsiedztwie CPU ale na tyle daleko, że dostęp przebiega
z połową częstotliwości taktowania procesora, Takie rozwiązanie w stylu hybry­
dowym zastosowano w modelu Pentium II.

• Pamięć L-2 umieszcza się w pobliżu pamięci operacyjnej na płycie głównej


komputera, w otoczniu innych układów scalonych. Cierpi na tym czas dostępu
a zyskuje ekonomika. Rozwiązanie to jest najpowszechniej spotykane i towarzy­
szy w chwili obecnej większości zastosowań procesorów klasy Pentium w kom­
puterach PC. Nawet proste systemy multiprocesorowe (zwykle nie więcej niż
dwa Pentium) dzielą między sobą jeden wspólny Cache poziomu drugiego.
^ i

Sprawne funkcjonowanie systemu buforowania wymaga przyjęcia pewnej organizacji


pamięci. Jest ona dzielona na bloki (strony22) o rozmiarze równym ilości dostępnej pa­
mięci buforowej. Cache L-2 nie stanowi monolitycznej całości. Operuje on jednostkami
przydziału o długości 32 bajtów (rysunek 1.72). Każda jednostka (linijka) stanowi nie­
zależną strukturę opatrzoną własnym adresem oraz dodatkowymi informacjami określa­
jącymi status zawartej w nich danych. Linijka napełniana jest w cyklu czterech następu­
jących po sobie (Burst) operacji odczytu z pamięci (przy 32 bitowej szynie danych).

Rysunek 1.72. PAMIĘĆ


Struktura pamięci
cache

Przyporządkowanie linijek pamięci operacyjnej linijkom pamięci buforowej może


przyjmować różne formy. W najprostrzym przypadku adresy odwzorowuje się w sto­
sunku 1 : 1 - buforowane są kolejne linijki strony w naturalnej kolejności występowania.

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

Mówimy wtedy o odwzorowaniu bezpośrednim {Direct Mapped ). Sprzętowa realizacja


tego modelu nie nastręcza wiele trudności, jest on jednak mało wydajny i nieelastyczny.

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ęć)

23 Nieco inna logika obowiązuje w systemach multiprocesorowych dzielących wspólny Cache


poziomu drugiego.
174 Anatomia PC

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).

• Invalid. Informacja zawarta w linijce o tym statusie jest bezwartościowa i nie


może być wykorzystana. Żądanie odczytu powoduje pobudzenie magistrali pa­
mięciowej i napełnienie linijki a zapis do niej wyzwala cykl zapisu do pamięci.

Algorytm zmian statusu MESI wywołanych określonymi akcjami zebrane zostały


w poniższej tabeli:

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

Obsługa układów peryferyjnych


Wśród wielu koncepcji połączenia współpracujących ze sobą procesorów jedna zasługuje
na szczególną uwagę, bowiem właśnie ona została zastosowana jako rozszerzenie kla­
sycznej architektury AT w płytach głównych powszechnego użytku. U podstaw tego

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

standardu leży opracowana przez firmę Intel specyfikacja MP (MultiProcessor Specifi-


cation). Opracowanie dotyczy oczywiście procesorów produkowanych przez Intel.

Specyfikacja przyjmuje dwa podstawowe założenia wstępne określające pełną symetrię


systemu. W części dotyczącej dostępu do pamięci zdecydowano się na architekturę
UMA. Niezależnie od liczby zainstalowanych procesorów wykonywana jedna i ta sama
kopia każdej aplikacji (a w szczególności również systemu operacyjnego). Każdy z pro­
cesorów jest równouprawniony i identyczny pod względem sprzętowym, może
wykonywać dowolny fragment kodu oraz porozumiewać się z innymi procesorami
(brak uwarunkowań typu Mastar-Slave).

Pełna symetria króluje również w obszarze komunikacji ze światem zewnętrznym.


Każdy z procesorów dysponuje w tym samym stopniu możliwościami dostępu do prze­
strzeni adresowej portów I/O. Mimo iż specyfikacja dopuszcza by dowolny procesor
mógł obsługiwać przerwania z dowolnego źródła, (a nawet za każdym razem z in­
nego) w praktycznych realizacjach MP zwykło się dedykować jeden z CPU wyłącznie
na potrzeby obsługi przerwań i operacji wejścia/wyjścia.

Rysunek 1.73,,
CPU i - CPU CPU CPU
Architektura
■■■
komputera CACHE CACHE CACHE CACHE
zgodnego ze
specyfikacją MP

Magistrala wewnętrzna

\
-
l

Y-U l/O l/O

<0
Magistrala zewnętrzna Magistrala zewnętrzna

Specyfikacja MP stanowi bardzo szerokie opracowanie, integrujące w sobie szereg


najróżnorodniejszych opcji sprzętowych. W przypadku ogólnym możliwe jest jedno­
czesne występowanie w tym samym systemie UMA wielu procesorów i wielu zew­
nętrznych magistral I/O (np. VL-Bus i PCI).

Wszystkie niezbędne parametry takiego złożonego układu multiprocesorowego przeka­


zywane są systemowi operacyjnemu w formie specjalnie zdefiniowanej tablicy kon­
figuracji. Należy podkreślić, iż nawet tak skomplikowana architektura sprzętowa jest

Zagadnieniom przerwań poświęcony jest jeden z kolejnych rozdziałów, którego


przestudiowanie proponuję Czytelnikom nie zaznajomionym jeszcze z tą tematyką.
176 Anatomia PC

w pełni przezroczysta dla klasycznego oprogramowania pisanego pod zwykły komputer


AT. To jedynie system operacyjny poszerzony zostaje o funkcje obsługi MP.

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.

Specyfikacja MP definiuje w tym przypadku pewną nadbudowę do standardu. W tym


miejscu pojawia się pojęcie kontrolera APIC {Advanced Programmable Interrupt Con­
troller). W myśl powyższego, na system obsługi przerwań układu multiprocesorowego
składają się dwa elementy: APIC lokalny i APIC I/O. Tak zdefiniowana rozproszona
architektura kontrolera przerwań daje się łatwo zaadaptować zarówno do procesorów
7i
Intel 486 jak i do CPU wyższej generacji . Układy APIC współpracują naturalnie ze
standardowym kontrolerem 8259A przejętym z architektury AT dla zachowania zgod­
ności na poziomie portów I/O. Dla potrzeb komunikacji pomiędzy układami APIC, sys-
77
tern wyposażony jest w specjalną magistralę ICC {Interrupt Controller Communica­
tions). Przerwanie odbierane jest przez człon I/O po czym przekazywane do obsługi
przez człon Local. Cały ruch związany z obsługą przerwań kierowany jest właśnie na tą
szynę co stanowi znacznie odciążenie dla magistrali pamięciowej.

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).

Obszary zacieniowane na rysunku 1.74 pokrywają układy wyłączone z ruchu. Procesory


AP uaktywniane są dopiero w momencie zakończenia czynności wstępnych związanych
z rozruchem. Do momentu załadowania systemu operacyjnego i przekazania mu stero­
wania, układ stanowi maszynę jednoprocesorową dobrze znaną z architektury kompu­
tera PC/AT. Z punktu widzenia kontrolerów APIC, układ przechodzi do trybu pracy
zwanego PIC-Mode28. Przerwania omijają elementy APIC i kierowane są bezpośrednio
do obsługi przez procesor BSP.

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^:

Rysunek 1.74. 8SP


M-.-:
<-•
<•
AP1 ;V,'x'&-ySy ^.x^x^vxxx^x»:«
•.'.''i-i-
. •.

WM- xX r^xx.v.;:;:;^:;:*
•xXxx x ; / 'X \ W * X
i-::-. :'

Architektura 4*1!' •■'••••i


Y vX vX v.

• V* •' V iv . .•.•••i*. tfSA ’ES


:i5
.•» i i v r r r r r i I'fciii fciixi »“i ,s*y
¡p.

**
“* •
¡;^;:|v-;!'X’ .•.v.v
^ f ......./
•;y ^/CyySt\,\:ix-
..................•
........%v.
...
||1 D v jL i
r
•1».•^.

komputera podczas '


&a v X:::x :
.x>-x"x:*:

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-:

M 1 im J I: .A b!::--. " ---w

• «- w w
\ \
/>,•*, aK4bl i*j%a<bifa'A Jb
«X

V V -ł V V V-** v .w .y .w .w •».».'w *4 ^.y.yia


.;,0 ¡z.;.,. j
x*/:-i* jo/ x x ’J
XvXtt- KXXX. .
^ w sss
*. r.

’*•!■!

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

Przejście do pracy symetrycznej


Załadowanie systemu operacyjnego kończy fazę przygotowawczą i pozwala na przej­
ście do wykonywania aplikacji w trybie multiprocesorowym.
^ Q

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 ,

out 0x22 al , ;selekcja IMCR


mov al 0x01 , ;
out 0x23 al , ;wymuszenie trybu symetrycznego

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

Rysunek 1.75. BSP AP 1 AP2


Architektura
komputera podczas i

pracy w trybie CPU 1 CPU 2 CPU 3


multiprocesorowym m INTO m im NMI «TH
/ \
1
/
/\
1
1

NZ .1 /^ . . .

LOCAL APIC LOCAL APIC LOCAL APIC


1 2 3
L ._
__

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

System Dual-Pentium / PCI


Specyfikacja MP predefiniuje kilka dwuprocesorowych konfiguracji sprzętowych.
Z szerokiego grona mniej lub bardziej egzotycznych zestawów, na dokładniejsze omó­
wienie zasługuje model maszyny z magistralą PCI bazującej na dwóch procesorach typu
Pentium wyposażonych w kontrolery Local-APIC (rysunek 1.76).

Ż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.

Kontroler APIC I/O posiada 16 linii wejściowych, które przyporządkowane zostają


następującym źródłom sygnałów przerwań:

30 STARTUP IPI jest formą ukierunkowanego przerwania niemaskowalnego pobudzającego


określony procesor do wykonania w trybie Real Mode ściśle określonego fragmentu kodu.
Komunikacja procesora z innymi elementami architektury komputera 179

Rysunek 1.76: Pentium CPU-1 Pentium CPU-2


Architektura (BSP) (AP)
komputera Dual-
Pentium/PCI
LOCAL APfC LOCAL APIC

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

IRQ120 PSÆ M OUM

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

Wejście APIC I/O Sygnał Komentarz


INTINO PIC 8259A Wyjście INTR układu Master 8259A

INTIN1 IRQ1 Sygnał przepełnienia bufora klawiatury

INTIN2 IRQ0 Programowany timer 8254

INTIN3 IRQ3

INTIN4 IRQ4

INTIN5 IRQ5

INTIN6 IRQ6
180 Anatomia PC

Wejście APIC I/O Sygnał Komentarz


INTIN7 IRQ7

INTIN8 IRQ8 Zegar czasu rzeczywistego

INTIN9 IRQ9
INTIN10 IRQ 10

INTIN11 IRQ 11

INTIN 12 IRQ 12

INTIN 13 IRQ 13 Przerwanie od koprocesora arytmet.

INTIN 14 IRQ 14

INTIN 15 IRQ 15

Napływające z magistrali PCI przerwania zewnętrzne wpływają do jednego z czterech


kanałów wejściowych: INTA, INTB, INTC i INTD. Specjalny układ programowanego
routera pozwala na przypisanie kanałom PCI odpowiednich linii IRQ.

Układy APIC-Local wyposażone są w dwa wejścia, które w omawianej właśnie kon­


figuracji wykorzystuje się w następujący sposób:

Wejście APIC-Local Sygnał Komentarz

LINTINO PIC 8259A Wyjście INTR układu Master 8259A

LINTIN1 NMI Przerwanie niemaskowalne

Sprzętowe skojarzenie sygnałów INTR i NMI do połączonych równolegle wejść


układów APIC-Local pozwala na bardzo elastyczne sterowanie. Dzięki niemu system
operacyjny może decydować w trakcie pracy (maskując wybrane linie LINTINx), który
z procesorów przejmie obsługę danego przerwania.

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)

WSKAŹNIK NA ADRES TABLICY "MP" 0x04


Sw SYGNATURA: PM
tz! 0x00
_{0x5f) P (0x50) M(0x5f) _ (0xSf)
31 24 23 16 15 8 7

Wskaźnik na adres początkowy wspomnianej tabeli umieszczany jest w obrębie specjal­


nego znacznika {Floating Pointer Structure).

System operacyjny poszukuję sygnatury znacznika (_PM_) kolejno w jednym z poniżej


określonych obszarów przestrzeni adresowej:
• jeśli został zdefiniowany segment EBDA {Extended BIOS Data Area), w pier­
wszym kilobajcie tego segmentu
• jeśli segment EBDA nie jest zdefiniowany, w ostatnim kilobajcie pamięci pod­
stawowej (639^640kB dla systemów wyposażonych w 640 kB)

• lokalizacja rezerwowa to fragment obszaru przyznanego ROM-BIOS: 0xe0000 -


Oxfffff

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. •

32 W przypadku nieobecności tabeli, wszystkie cztery bajty adresu wskaźnika ustawiane są na


zero.
i
182 Anatomia PC

Tablica MP jest konstrukcją o zmiennej długości rozpoczynającą się od nagłówka


o stałym wymiarze 44 bajtów. Po nim następują kolejne bloki informacyjne (rekordy),
których ilość i długość może być różna w zależności od konfiguracji systemu. Pierwszy
bajt rekordu zawiera zawsze informację o jego typie, co z koleji jednoznacznie określa
długość. W ten sposób system operacyjny dochodzi „po łańcuszku“ do analizy kolej­
nych rekordów. W grupie tzw. podstawowej {BASE MP Configuration Table Entries)
specyfikacja MP definiuje następujące bloki informacyjne:
• Processor Entry . Dla każdego z obecnych w systemie procesorów redagowany
jest jeden rekord o długości 20 bajtów.

• Bus Entry. W skomplikowanych systemach wyposażonych w kilka magistral


(np. EISA/PCI) każda z nich identyfikowana jest z własnym rekordem informa­
cyjnym o długości 8 bajtów.

• I/O APIC Entry. Rekord niesie informację o rozmiarze przestrzeni adresowej


okupowanej przez każdy z obecnych w systemie programowanych układów
kontrolera przerwań (I/O APIC). Stanowi strukturę o długości 8 bajtów.
• I/O Interrupt Assignment Entry. Dla każdego z aktywnych wejść każdego układu
I/O APIC umieszczany jest w tablicy MP jest jeden 8-bajtowy rekord. Wszyskie
razem stanowią mapę przyporządkowań zewnętrznych (pochodzących od magi­
stral I/O) źródeł przerwań do końcówek I/O APIC.

• Local Interrupt Assignment Entry. Stanowi zestaw 8-bajtowych rekordów two­


rzących razem mapę przyporządkowań źródeł przerwań do końcówek kontrole­
rów Local-APIC.

Specyfikacja MP przewiduje możliwość dołączania do rekordów grupy podstawowej


(BASE) dodatkowych jednostek informacyjnych objętych wspólną definicją rekordów
rozszerzonych (Extended MP Configuration Table Entries). Zagadnienia z tym związane
(np. hierarchia szyn I/O) wybiegają znacznie poza zakres tej publikacji, a zaintereso-
wanych Czytelników trzeba odesłać do tekstów źródłowych .

Architektura komputerów przenośnych w zasadzie nie różni się od komputerów stacjo­


narnych. Laptopy mogą być wyposażone w magistralę ISA, VESA lub PCI. Podsta­
wowa różnica pomiędzy komputerami przenośnymi i stacjonarnymi sprowadza się do
tego, że dążenie do miniaturyzacji wyeliminowało gniazda rozszerzające magistrali
zewnętrznej - wszystkie niezbędne elementy (karta graficzna, kontroler dysków itd.)
zostały umieszczone na płycie głównej. Pierwsze laptopy utraciły więc podstawową
cechę komputerów PC - możliwość rozbudowy. Nie można było rozbudować pamięci,
dołączyć karty sieciowej, podłączenie modemu zewnętrznego (ze względu na rozmiary

33 Multiprocessor Specification, Version 1.4, Intel, Ord. Nr 242 016 - 004.


Komunikacja procesora z innymi elementami architektury komputera 183

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).

Pierwotnie (specyfikacja 1.0) 16-bitowe złącze PCMCIA było wykorzystywane do


rozszerzania pamięci komputerów przenośnych, gdyż sterownik złącza miał dostęp do
pamięci operacyjnej.

Wzrost popularności kart PCMCIA sprawił, że kolejne specyfikacje (2.x) zdefiniowały


sposób dostępu do przestrzeni wejścia-wyjścia, co umożliwiło umieszczenie na kartach
PCMCIA modemów, kart sieciowych i pamięci masowych (dysków twardych). Jednak
niejednoznaczne sformułowania określające obszar informacji o karcie (CIS - Card
Information Structure) w specyfikacji 2.0 w powiązaniu z dużą liczbą producentów kart
PCMCIA i sterowników złącza PCMCIA doprowadziły do tego, że nie wszystkie ukła­
dy sterownik-karta chciały ze sobą współpracować. Błędy te zostały wyeliminowane w
kolejnych wersjach specyfikacji.

Rozwój architektury komputerów PC, a w szczególności wprowadzenie 32-bitowych


magistral systemowych doprowadziło do powstania kolejnej specyfikacji (CardBus 95),
która zdefiniowała: sposób komunikacji z 32-bitowymi kartami rozszerzającymi, dostęp
do kanałów DMA i zasilanie karty napięciem 3,3 V.

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

MMX (MultiMedia eXtention) jest największą ze zmian w architekturze procesorów


Intela od czasu wprowadzenia na rynek przed ośmiu laty układów serii 386.

Przedsięwzięcie ma na celu umocnienie pozycji firmy Intel na polu błyskawicznie


rozwijających się zastosowań multimedialnych. Obszary te zdominowane są dotychczas
przez szereg mniejszych firm wytwarzających różnego rodzaju kontrolery wyspecjalizo­
wane w szybkim przetwarzaniu grafiki i dźwięku. Jak na razie nowa technologia nie
zabiera chłeba akceleratorom graficznym lecz skupia się na lepszym podziale mocy
obliczeniowej i wykorzystaniu zasobów.

Kluczową rolę w tak postawionym zagadnieniu odgrywa na pewno zapewnienie możli­


wości szybkiej wymiana danych pomiędzy elementami komputera. Kolejny krok przy­
prawiający skrzydeł architekturze Intela stanowić ma upowszechnienie nowej wew­
nętrznej magistrali o nazwie AGP {Accelerated Graphics Port).

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.

Wspomaganie multimediów stanowi jedno z najwdzięczniejszych pól do zastosowania


takiej techniki. Dane reprezentowane są tutaj jako długie ciągi słów ośmio lub szes-
nastobitowych. Operacje na takich danych, to często powtórka tych samych kroków
w odniesieniu do, jeśli nie wszystkich słów na raz (filtr audio), to co najmniej kolejnych
kilkunastu z nich (filtracja bilineama tekstur).

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%.
/

• Zasilanie. Procesory MMX wykonywane są wprawdzie w nowoczesnej techno- i

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

Wszystkie te unowocześnienia razem wzięte gwarantują (bez dotykania samego tematu


MMX) przyrost mocy obliczeniowej o 15 - 20%. Tyle tylko korzystają więc z P55C
aplikacje nie wywołujące rozkazów MMX.
h

l s

Rozpoznanie procesora P55C


Typ procesora Pentium można rozpoznać badając stan rejestru EDX po wywołaniu
instrukcji c p u i d 1.

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

2 W segmentach 16-bitowych rezerwuje się 94 bajty a w 32 bitowych 108 bajtów.


190 Anatomia PC

Jak powszechnie wiadomo, nie ma nic za darmo i to genialnie proste rozwiązanie


pociąga za sobą pewne konsekwencje. Instrukcjom f s a v e / f r s t o r jest z pewnością
obojętne jak należy interpretować przesyłane dane. Jakkolwiek rejestry MM i ST
stanowią fizycznie odrębne jednostki, każdy dostęp do FPU ma swoje odbicie w MMX
i odwrotnie. W obrębie danego zadania (Task), od przełączenia do przełączenia, procesor
pracuje albo w trybie MMX albo w trybie zmiennoprzecinkowym - nigdy w obydwu na
raz. Każda zmiana stanu musi być przeprowadzona z udziałem pary rozkazów FSAVE/
FRSTOR.

Programy wykorzystujące specyfikę rozszerzeń MMX muszą być pisane w przebiegły


sposób. Z jednej strony nie można sobie wyobrazić nowoczesnego algorytmu 3D bez
intensywnej operacji na danych zmiennoprzecinkowych; bazuje na nich cały rachunek
współrzędnych w przestrzeni. Drugą stronę medalu stanowi astronomicznie długi czas
przełączania: FSAVE zajmuje 124 takty zegarowe a f r s t o r trwa 70 taktów3. Częste
stosowanie tych instrukcji obraca w niwecz ideę przyspieszania czegokolwiek.

Jeżeli pominąć momenty przełączania wątków skupić się można na wykonywaniu


programu zawierającego zarówno instrukcje MMX jak i te odwołujące się do jednostki
zmiennoprzecinkowej. Idealnym rozwiązaniem jest grupowanie partii kodu jednego
rodzaju w możliwie duże bloki. Jeżeli każdy z bloków wie, że w newralgicznych
rejestrach zastaje „śmieci” pozostawione tam przez poprzednika operacja przełączania
nie musi być tak czasochłonna.

Rejestry MMX można przecież jeśli to konieczne czyścić przed użyciem szybkimi
instrukcjami typu:

PXOR mmx, mmx ; jeden cykl zegarowy

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.

Fragmenty kodu operujące na liczbach zmiennoprzecinkowych powinny pozostawiać


czysty stos.

kod_FP_blok_l:
* » *

* ł •

... /* zwolniony stos FP */

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:

... /* zwolniony stos FP */

Jednostkę FPU można zainicjować stosunkowo szybkimi rozkazami F N I N I T i FLDCW,


które pochłaniają (w korzystnych warunkach, cache hit) 19 taktów zegara.

Nowe typy danych


Rejestry MMX są 64-bitowe, mogą więc przyjąć 8 bajtów danych. Bajty te można
grupować w słowa 16 i 32 bitowe. Prowadzi to do wyodrębnienie nowych typów
danych, na których operują rozkazy MMX (rysunek 2.3).

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.

Kod mnemoniczny budowany jest według następującego schematu:

• 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

Połączenie rozkazów MMX w klasy z uwzględnieniem wykonywanych funkcji prowa­


dzi do wyodrębnienia grup przedstawionych w tabeli 2.2.'

Mechanizm nasycenia {saturation) oznacza zlekceważenie przepełnienia i ogranicza


wynik operacji do wartości wynikającej z zakresu przejętego dla zmiennej (tabela 2.3).
Procesor z rozszerzeniem MMX 193

Tabela 2.2.
Podział rozkazów MMX na klasy

Klasa Długość Mnemonik Typ Komentarz


opcode rozkazu argumentów
Przesyłanie danych 4 MOV D ,Q Ładowanie lub zapamiętywanie rejestrów
MMX

Pakowanie 1 PACKUS WB Słowa na bajty, z nasyceniem, bez znaku

2 PACKSS WB, DW Słowa na bajty, podwójne słowa na słowa,


z nasyceniem, ze znakiem

Rozpakowywanie 3 PUNPCKS BW, WD, DQ Bajty na słowa, słowa na podwójne słowa,


podwójne słowa na poczwórne słowa, HO5

3 PUNPCKL BW, WD, DQ Bajty na słowa, słowa na podwójne słowa,


podwójne słowa na poczwórne słowa, LO6

Arytmetyczne 3 PADD B, W, D Dodawanie, bez nasycenia

2 PADDS B, W Dodawanie z nasyceniem, ze znakiem

2 PADDUS B, W Dodawanie z nasyceniem, bez znaku

3 PSUB B, W, D Odejmowanie, bez nasycenia

2 PSUBS B, W Odejmowanie z nasyceniem, ze znakiem

2 PSUBUS B, W Odejmowanie z nasyceniem, bez znaku

1 PMULH W Mnożenie, wynik = High word

1 PMULL W Mnożenie, wynik = Low word

1 PMADD WD Mnożenie i dodawanie, wynik = podwójne


słowo

Przesunięcia 6 PSLL W, D ,Q Przesunięcie logiczne w lewo


-

6 PSRL W, D ,Q Przesunięcie logiczne w prawo

4 PSRA W, D Przesunięcie arytmetyczne w prawo

Porównania 3 PCMPEQ B, W, D Jeżeli równe wynik = Oxff, jeżeli nie: wynik


- 0

3 PCMPGT B, W, D Jeżeli większe wynik = Oxff, jeżeli nie:


wynik = 0

Logiczne 1 PAND Bitowe logiczne AND

1 PANDN Bitowe logiczne NAND

1 POR Bitowe logiczne OR


s

1 PXOR Bitowe logiczne XOR

Różne 1 EMMS Opuszczenie stanu MMX

5 HO: High Order.


6 LO: Low Order.
194 Anatomia PC

Tabela 2.3.
Zakresy typów danych z uwzględnieniem mechanizmu nasycenia

Typ Zakres
Signed Byte 0x80... 0x7f (-128...+127)

Signed Word 0x8000 ... 0x7fff (-32768 ... +32767)

Unsigned Byte 0x00 ...Oxff (0 ... 255)

Unsigned Word 0x0000 ...Oxffff (0 ... 65535)

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.

W realizacji klasycznej {wrap-around), dalsza inkrementacja zmiennej, która już osiąg­


nęła wartość Oxff, prowadzi do wyniku 0x00. Zwykłe rozkazy x86 ustawiają w tym
przypadku dodatkowo flagę (carry) informującą o „przekręceniu się licznika“. Bogaty
asortyment instrukcji arytmetycznych MMX daje możliwość wyboru punktu podejścia;
z nasyceniem łub bez.

Większość rozkazów MMX jest dwuargumentowa - przetwarzane są dwa operandy.


Operacja zapisywana jest według klasycznej konwencji:

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

Wynik operacji na operandach określanej przez kod instrukcji umieszczany jest


wyznaczonym

Przykład działania: Rozkaz PACKUSWB


PACK ro zk az p ak o w an ia

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

PACKUSWB operand_2 , operand_l

operand_2 jest jednym z rejestrów MMX (mmO - mm7)


operandki jest adresem 64 bitowego obszaru w pamięci lub rejestrem MMX

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

Byte 7 | Byle 6 Byte 5 j Byte 4 | Byte 3 i Byte 2 i Byte 1 ! Byte 0


A t
ł X
lo
ti |S
;s

Wynik operacji umieszczany jest w rejestrze MMX określonym przez operand_2.


Instrukcja traktuje lokalizację podaną przez opera n d jako zestaw czterech 16-bitowych
słów ze znakiem. Tak samo interpretowany jest drugi z argumentów.

Dla każdego ze stojących w ten sposób do dyspozycji ośmiu 16-bitowych słów


wykonywana jest następująca operacja:
• Jeżeli wartość słowa (z uwzględnieniem znaku) wypada poza zakres 0 -
255 (przyjęty dla typu signed byte) uznaje się wartość graniczną zakresu.
Tak więc wynikiem jest 0x00 jeśli poniżej a 0xff jeśli powyżej zakresu.
• Dla słów, których wartości mieszczą się w zakresie 0 - 255 przepisuje się
po prostu młodszy bajt

operand2 1 operand_2

iii

operand_2

Powyższy rozkaz dokonuje więc istotnie spakowania danych zawartych w ośmiu


słowach 16-bitowych (razem 128 bitów) do kontenera o rozmiarze 64 bity.

Przykład działania: Rozkaz PADDSW


rozkaz dotyczy danych spakowanych
ADD instrukcja dodawania
SW operuje na słowach z uwzględnieniem znaku
PADDSW operand 2 , operand 1

operand_2 jest jednym z rejestrów MMX (mmO - mm7)


operand 1 jest adresem 64 bitowego obszaru w pamięci lub rejestrem MMX
196 Anatomia PC

63 48 47 32 31 16 15

1 0111111100111000 operand_2

+ + •^i +
63 48 47 32 31 16 15
.... j.

1111111111111111 0001011100000111 operandj

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.

Rozkaz przesyłania MOV w zależności od przyrostka (D lub Q) operuje na danych 32 lub


64-bitowych. Jest jedynym środkiem komunikacji pomiędzy klasycznymi rejestrami
(EAX, ERX, ...) a rejestrami MMX. Jednorazowa porcja przesłanej informacji nie może
jednak w takim przypadku przekraczać 32 bitów. Dla załadowania 64-bitowego rejestru
MMX parą rejestrów 32-bitowych trzeba uciekać się do następującej sekwencji:
MOVD MM0, edx ;EDX -> MM0
MOVD MMI, eax ;EAX -> MMI
PSLLQ MM0, 32 ;shift MM0 o 32
POR MMO, MMI ;MMI or MM0

Pomiary wykazują, że P55C potrzebuje na wykonanie powyższej partii kodu trzech


cykli zegarowych. Procesor MMX może istotnie grupować rozkazy, ale nie każdy
z każdym. W tym wypadku połączeniu ulega drugi i trzeci z nich (dotyczą różnych
rejestrów M M X\

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).

Pierwszym zadaniem komputera jest wytworzenie maski stanowiącej obrys postaci


pierwszoplanowej. Przy pomocy maski wycina się we właściwym tle pustą przestrzeń,
w którą wklejany jest obraz prezentera (rysunek 2.4).

Obiekt na tle Obiekt na


Rysunek 2.4. niebieskim Tło docelowe
tle docelowym
Sposób działania
miksera Blue-Box

s X\ \ \
\ V \ V \

X X X ''' N R X \ \ \

L
\
/

Maska

Algorytm przetwarza po cztery piksle jednocześnie (przy kolorach 16-bitowych). Dla


wymodelowania maski wystarczy pojedynczy rozkaz p c m p e q w , który porównuje kolej­
ne punkty obrazu (postać na niebieskim tle) z wzorcem koloru niebieskiego. Produktem
wyjściowym jest dwuwartościowa mapa bitowa: w punktach tła instrukcja porównania
zwraca Oxffff a w pozostałych (postać) 0x0000.

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

Przetwarzanie pliku WAV


Innym klasycznym przykładem zastosowania techniki MMX jest przetwarzanie pliku
w formacie WAV. Plik taki stanowi jednorodny ciąg słów 16 bitowych. Zakodowana
informacja jest dźwiękiem stereofonicznym o jakości zbliżonej od płyty kompaktowej.
Zadaniem programu jest przepuszczenie całej sekwencji przez filtr cyfrowy na przykład
dla uwypuklenia wysokich tonów. Przetwarzanie polega na modyfikacji kolejnych
elementów składowych ciągu.

Rysunek Z 5. Bez rozkazów MMX Techniką MMX


Porównanie Przetwarzana
przetwarzania sekwencja audio
sekwencji audio , i
Słowo w rejestrze Załadowanie
przez procesory 16-bitowym rejestru MMX
wykorzystujące i
Przetwarzanie Przetwarzanie
i nie wykorzystujące
techniki M M X 4-
Jeśli przepełnienie Zapis do sekwencji
min. 3 dodatkowe rozkazy wyjściowej

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

przetwarzane jest 8 bajtów jednocześnie .

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:

• procesor okresowo wysyła zapytanie do urządzenia. Częstotliwość „odpytywa­


nia” jest ustalana przez wykonywany program i sposób stanowi kompromis po­
między szybkością reakcji procesora na zakończenie operacji a spowolnieniem
jego pracy nad zadaniem pierwszoplanowym. Kod procedury odpytywania musi
być zintegrowany z programem, co powiększa jego rozmiar. Zbyt częste odpyty­
wanie hamuje wykonywanie bieżącego programu. Zbyt długie przedziały czaso­
we między kolejnymi odpytywaniami i nierównomiernie napływający strumień
danych mogą spowodować, że część z nich zostanie utracona na skutek przepeł­
nienia nie opróżnianego bufora wewnętrznego obsługiwanego urządzenia;

• urządzenie samo zgłasza wykonanie zadania. W najbliższym dogodnym dla siebie


momencie procesor przerywa realizację aktualnie wykonywanego programu by,
zapamiętawszy stan swoich rejestrów, przejść do realizacji procedury reagującej
na zgłoszenie urządzenia. Kod tej procedury na ogół nie znajduje się w ciele
programu, lecz w pamięci stałej komputera.
200 Anatomia PC

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.

W przypadku konieczności odczytania sektora z twardego dysku czas pozycjonowania


głowic nad żądaną ścieżką i wyszukania żądanego sektora jest o dwa rzędy wielkości
większy niż czas potrzebny na samo przesłanie zawartych w tym sektorze 512 bajtów.
Procesor jest więc zaangażowany w tę operację tylko w jej małym ułamku czasowym.

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.

Kontroler 8259A ma osiem linii wejściowych, które przyjmują sygnały zgłoszeń.


Układy 8259A mogą być łączone w kaskady, powielając tym samym liczbę dostępnych
wejść. Istnieje również (nie wykorzystywana w architekturze PC) możliwość sterowania
zewnętrznym buforem pośredniczącym między układem a silnie obciążonymi magistra­
lami systemowymi. Warto też wspomnieć, że w modelach IBM PC/XT i AT wejścia
IRn reagują na zbocze impulsu przerwania, co stwarza niebezpieczeństwo interpretacji
impulsu zakłócającego jako zgłoszenia przerwania. Inaczej zagadnienie to rozwiązano
w architekturach EISA i MCA, gdzie wyzwalanie przerwań odbywa się poziomem
napięcia. Możliwe jest tutaj dzielenie jednej linii zgłoszeń przez kilka urządzeń (ang.
shared interrupt). System EISA rezygnuje dzięki temu z drugiego kontrolera 8259A.
System obsługi przerwań sprzętowych 201

Układ scalony 8259A


Układ scalony 8259A produkowany jest między innymi przez firmy Intel, AMD i Harris.
Może pracować nie tylko w trybie zgodnym z procesorami 8088/86/286, ale również
z 8080/8085. Został on zaprojektowany przed powstaniem procesora 80286. Rysunek
3.1. przedstawia schemat wyprowadzeń tego układu.

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
■=

Wyprowadzenia układu 8259A opisano poniżej:


IR0-IR7 (.Interrupt Request) - każde z tych wyprowadzeń może być
połączone z co najwyżej jednym urządzeniem, które - wymuszając
wysoki poziom logiczny na przypisanym sobie wejściu - zgłasza
żądanie obsługi przerwania. Wejście IR0 posiada najwyższy, a IR7
najniższy priorytet;
~CS {Chip Select) - wejście umożliwiające procesorowi wprowadzenie
układu w tryb programowania;
~WR (Write) - procesor wymusza niski poziom logiczny na tym
wejściu, chcąc zapisywać dane do wewnętrznych rejestrów układu;
~RD (Read) - procesor wymusza niski poziom logiczny na tym wejściu,
chcąc odczytywać dane z wewnętrznych rejestrów układu;
D 7-D 0 dwukierunkowa magistrala danych, służąca do komunikacji
między procesorem i kontrolerem (zapis i odczyt rejestrów
wewnętrznych) oraz przekazywania procesorowi numeru
przerwania;
202 Anatomia PC

CAS0-CAS2 ( Cascade) - lokalna magistrala adresowa, używana przy


kaskadowym połączeniu układów 8259A. Umożliwia ona
zaadresowanie do 8 takich układów;
-SP/EN (iSlave Program/Enable Buffer) - w buforowanym trybie pracy
pełni rolę wyjścia (EN) sterującego buforem zewnętrznym,
W trybie nie buforowanym jest to wejście (~SP) konfigurujące
układ jako Master (—SP—1) lub Slave (~SP=0);
INT {Interrupt) - wyjście to połączone jest bezpośrednio z wejściem
INTR procesora, jeżeli układ 8259A pracuje jako Master . Układ
pracujący w trybie Slave połączony jest swoim wyjściem INT
z jednym z wejść IR« kontrolera Master:;
-INTA {Interrupt Acknowledge) - wejście to połączone jest z wyjściem
INTA procesora. Przyjmuje ono sygnał potwierdzenia przyjęcia
przerwania przez CPU;
A0 wejście istotne jedynie w trybie programowania,służące do
rozróżniania rozkazów;
Vcc wejście napięcia zasilającego (+5V);
GND masa zasilania.

Cykl przyjęcia zgłoszenia


bitowymi rejestrami: IMR, IRR
dnemu z weiść IR«. Schemata
rysunek 3.2,

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

Rejestr maskujący IMR

Urządzenie połączone z wejściem o numerze n zgłasza przerwanie wymuszając wysoki


poziom logiczny na linii IR«. Ustawiając bit « w rejestrze IMR {Interrupt Mask Regis­
ter) można spowodować ignorowanie wszelkich przerwań nadchodzących tą linią.
A 7 •

-• - i

System obsługi przerwań sprzętowych 203


|.
I'
«
.

Jeżeli wspomniany bit jest wyzerowany, informacja o przerwaniu przekazywana jest


dalej i powoduje ustawienie bitu n w rejestrze IRR {Interrupt Request Register ). Jak już
wspomniano wcześniej, priorytet zgłoszeń na wejściach IR0-IR7 nie jest jednakowy
i maleje ze wzrostem numeru wejścia. Ponieważ jednocześnie mogą nadchodzić zgło­
szenia z wielu linii, układ oceny priorytetu wybiera jednorazowo tylko jeden z nich -
____

ten o najwyższym priorytecie. Jednocześnie aktywowany jest sygnał INT, informujący


procesor o konieczności obsługi przerwania. Jeżeli obsługa przerwań nie jest programo­
wo zablokowana (bit 1E rejestru stanu procesora), ten ostatni reaguje sygnałem potwier­
dzenia na wyjściu -INTA, które jest połączone z wejściem -INTA układu 8259A.

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

bity 2 -0 numer ustawionego w rejestrze ISR bitu.

Procesor traktuje ten bajt jako numer procedury obsługi przerwania, do wykonania
której teraz przejdzie.
•v .

Jeżeli kontroler pracuje w tzw. trybie automatycznym (AEOI - Automatic End O f


Interrupt), w momencie przejścia do wykonywania procedury obsługi przerwania zero­
wany jest odpowiedni bit rejestru ISR. W przeciwnym wypadku (tryb EOI) wyzero­
wania tego bitu dokonuje sama procedura obsługi przerwania wysyłając rozkaz EOI
{End o f Interrupt) do kontrolera. Tryb pracy kontrolera (AEOI/EOI) określany jest
w fazie programowania.

Niezależnie od trybu pracy, moment wyzerowania bitu rejestru ISR odpowiadającego


aktualnie obsługiwanemu kanałowi oznacza gotowość kontrolera do przyjęcia następ­
nego zgłoszenia. Należy tu jeszcze raz podkreślić, że zgłoszenia nie są obsługiwane
w miarę nadchodzenia, istotny natomiast jest ich priorytet. Oznacza to, że przy pełnej
kolejce oczekujących na liniach IR1-7 zgłoszeń (bity 7-1 rejestru IRR ustawione)
zarejestrowanie zgłoszenia na linii IRO spowoduje zrealizowanie go w pierwszej
kolejności, tj. po zakończeniu aktualnie wykonywanego cyklu obsługi.

-'/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 .

Do obydwu kaskadowo połączonych kontrolerów doprowadzony jest z procesora sygnał


-INTA, lecz tylko układ Master łączy się swoim wyjściem INT z wejściem INTR
procesora. Schemat kaskadowego połączenia dwóch układów 8259A w komputerach
AT i PS/2 przedstawia rysunek 3.3.

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

CASO CAS1 CAS2


INT o IR Q 15
INTA o IR Q 14
■o IR Q 13
IR Q 12
8259 A ■o IR Q 11
S la v e
■o IR Q 10
o IR Q 9
AO IR Q 8

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.

Fazy obsługi przerwań od układu Slave


• Zgłoszenie ustawia bit n rejestru IRR w układzie Slave i powoduje, po
opracowaniu priorytetów, wysłanie sygnału INT do układu Master.

• Układ Master otrzymuje zgłoszenie na linii IR2, co powoduje ustawienie bitu 2


w jego rejestrze IRR,
• Układ Master , opracowawszy priorytety własnych zgłoszeń, wysyła sygnał INT
do procesora.
206 Anatomia PC

• Procesor (jeżeli nie zablokowano obsługi przerwań sprzętowych) odpowiada


pierwszym sygnałem ~INTA.
%

• Układ Master adresuje liniami CAS0-CAS2 układ Slave odpowiadający za


obsługę zgłoszonego przerwania.
• W obu układach następuje jednoczesne przesunięcie bitu odpowiadającego
obsługiwanemu kanałowi (bit 2 w układzie Master i bit n w układzie Slave)
z rejestru IRR do rejestru ISR.

• 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

Inicjowanie pracy układu


Procesor przekazuje przez port 02Oh {Master) lub OAOh {Slave) pierwszy bajt
inicjujący ICW1.
Bajt ICW1:

0 0 0 1 bit 3 0 bit 1 bit 0

bity 7-4 0001, sygnatura rozkazu;


bit 3 jedynka oznacza wyzwalanie wejść IRQ poziomem napięcia,
zero - wyzwalanie zboczem (zmianą poziomu sygnału z 0 na 1
- ten tryb pracy jest powszechnie stosowany w PC).
bit 2 0;
bit 1 1 oznacza pojedynczy układ (XT), 0 - obecność kaskady
układów (AT lub PS/2);
bitO 1 oznacza, że będzie wysłany bajt ICW4, 0 oznacza brak bajtu
ICW4.

Procesor przekazuje przez port 02 łh {Master) lub OAlh {Slave) drugi bajt
inicjujący ICW2.
Bajt ICW2:

bit 7 bit 6 bit 5 bit 4 bit 3 0 0 0

bity 7-3 przemieszczenie {offset) wektora przerwań;


bity 2-0 000.
Jeżeli w systemie obecne są dwa układy 8259A (decyduje o tym bit 1 baji
ICW1), procesor wysyła trzeci bajt inicjujący ICW3. Budowa tego bajtu je
różna dla układu Master i Slave .
Bajt ICW3 {Master):

bit 7 bit 6 bit5 bit 4 bit 3 0 0 0

bity 7-0 jedynka na pozycji n oznacza, że wejście n połączone jest


z wyjściem INT układu Slave . Zero na tej pozycji oznacza, że
wejście n jest wolne lub połączone z obsługiwanym
urządzeniem.

Bajt ICW3 (Slave):

0 0 0 0 0 bit 2 bit 1 bit 0

bity 7 -3 00000;
208 Anatomia PC

bity 2 -0 zakodowany dwójkowo numer wejścia układu Master , które


jest połączone z wyjściem INT układu Slave . Nadaje to
układowi Slave numer identyfikacyjny, który jest
porównywany (por. „Fazy obsługi przerwań od układu Slave”)
z adresem ustawianym przez układ Master na liniach CAS0-
CAS2. Uaktywnia się więc tylko adresowany układ. Jest to
rozwiązanie ogólne stosowane w dużych systemach; w PC
adresowany jest i tak tylko jeden układ Slave.
• Kontroler oczekuje teraz bajtu ICW4, jeżeli zostało to zaanonsowane w bajcie
ICW1 (bit 0).
Bajt ICW4

0 0 0 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-5 000;


bit 4 w komputerach PC/XT/AT i PS/2 zawsze zero. Jedynka na tej
pozycji modyfikuje sposób klasyfikacji priorytetów, co ma
zastosowanie w wielokrotnych kaskadowych połączeniach
kontrolerów, spotykanych w dużych systemach;
bit 3 wartość 1 oznacza buforowany tryb pracy; końcówka -SP/EN
układu 8259A przestaje być wtedy wejściem przełączającym
tryb pracy Master!Slave i staje się wyjściem sterującym
zewnętrznym buforem szyn systemowych. Również i ta
możliwość znajduje zastosowanie wyłącznie w dużych
systemach z silnie obciążonymi magistralami systemowymi;
bit 2 1 = Master , 0 - Slave. Bit ten używany jest do programowego
konfigurowania danego układu jako Master lub Slave
w sytuacji gdy ustawiony jest bit 3 (patrz powyżej) i nie ma
możliwości używania do tego celu końcówki -SP/EN;
bit 1 jedynka oznacza tryb AEOI, tj. automatyczne zerowanie odpo­
wiedniego bitu rejestru ISR w momencie przekazania sterowa­
nia do procedury obsługi przerwania. Wartość 0 oznacza,
że procedura obsługi przerwania sama musi się zatroszczyć
o wyzerowanie tego bitu wysyłając rozkaz EOl do kontrolera
(lub kontrolerów, jeżeli przerwanie pochodzi od układu Slave);
bit 0 jedynka oznacza normalny tryb pracy, dostosowany do
procesorów 8086/88; po drugim impulsie ~INTA procesorowi
przekazywany jest 8-bitowy wektor przerwań. Zero na tym
bicie przełącza układ w tryb 16-bitowy, tj. 8259A wysyła
bezpośrednio 16-bitowy adres procedury obsługi przerwania
(a nie 8-bitowy numer, który jest dopiero indeksem w tablicy
adresów) w porcjach po osiem bitów - wystawienie drugiej
połowy adresu wyzwalane jest wtedy trzecim impulsem
-INTA pochodzącym od CPU.
System obsługi przerwań sprzętowych 209 |

Opisane powyżej polecenia zawarte w bajtach ICW1-ICW4 zapewniają konfigurowanie


układu jeszcze przed rozpoczęciem obsługi zgłoszeń. Konfigurację kontrolera przerwań
przeprowadzają procedury inicjalizacyjne BIOS-u wykonywane po włączeniu kompu­
tera jeszcze przed załadowaniem systemu operacyjnego.

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 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-0 jedynka na pozycji bitowej n maskuje (blokuje) linię


zgłoszeń n.
• Rozkaz OCW2 podawany jest przez port 02Oh (dla układu Master) lub OAOh
(Slave) :

bit 7 bit 6 bit 5 0 0 bit 2 bit ł bibO

bity 7-5 001 = nie adresowany rozkaz EOI,


« 011 = adresowany rozkaz EOI; powoduje wyzerowanie
w rejestrze ISR pozycji bitowej adresowanej bitami 2-0,
pozostałe kombinacje bitów 7-5 mają zastosowanie
w dużych systemach, gdzie obsługiwanych jest wiele
urządzeń o jednakowym priorytecie(decyduje wówczas
* kolejność zgłoszeń).
^ Znaczenie tych kombinacji nie
będzie omawiane; *
o
bity 4-3 00, sygnatura rozkazu;
bity 2-0 - zakodowany dwójkowo numer linii, której dotyczy polecenie
EOI.
• Rozkaz OCW3 podawany jest przez port 020h (układ Mas ter) lub OAOh (Slave)
* .

0 bit 6 bit 5 0 1 bit 2 bit 1 bit 0

bit 7 0,
bity 6-5 10 = wyzerowanie maski specjalnej,
11 = ustawienie maski specjalnej,
pozostałe kombinacje bitów 6-5 są ignorowane; e

bity 4-3 01 = sygnatura rozkazu; !


a

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

11 - rozkaz odczytu rejestru ISR; kontroler wystawia do portu


020h {Master) lub OAOh (Slave) zawartość rejestru ISR,
pozostałe kombinacje bitów 1-0 są ignorowane.

Uwaga:
Dostęp do rejestru IMR odbywa się poprzez port 02 lh (dla układu Master) lub OAlh
(Slave) :

in al, 021h ; rejestr IMR (Master) w akumulatorze


in al, Oalh ; rejestr IMR (Slave) w akumulatorze

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.

Maska specjalna powoduje interpretację zawartości rejestru IMR w specyficzny sposób:


ustawiony ńa pozycji n bit tego rejestru blokuje wprawdzie wszelkie zgłoszenia na linii
n, ale jednocześnie oznacza, że wszystkie zgłoszenia na liniach o priorytecie wyższym
i niższym od n będą mogły być obsługiwane w określonym powyżej przedziale czasu.
System obsługi przerwań sprzętowych 211

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:

bit 7 X X X X bit 2 bit 1 bitO

bit 7 1 = istnieje zgłoszenie oczekujące na obsługę,


0 = brak zgłoszeń;
bity 6-3 nie używane;
bity 2 -0 zakodowany binarnie numer linii, na której oczekuje zgłoszenie.

Każdy rozkaz odczytu portu jest traktowany jako sygnał uzgodnienia (odpowiednik
sprzętowego sygnału -INT A) od procesora.

Przerwanie niemaskowalne (NMI)


Przerwanie to również zaliczane jest do grupy przerwań sprzętowych, bowiem nie można
go wygenerować instrukcją kodu maszynowego. W przeciwieństwie do przerwań
odbieranych liniami IRQ, które obsługiwane są przez dedykowany do tego celu
kontroler 8259A, sygnał przerwania NMI kierowany jest bezpośrednio do końcówki
NMI procesora. Wysoki sygnał logiczny na tym wejściu prowadzi, natychmiast po
zakończeniu wykonywania bieżącego rozkazu, do wywołania procedury INT 2.
Przerwanie takie nie może być zamaskowane ani rozkazem c l i procesora, ani przez
operacje na rejestrze IMR kontrolera 8259A. Ma ono najwyższy priorytet ze wszystkich
przerwań sprzętowych.

Wywołanie przerwania NMI w przypadku komputerów PC ma miejsce po stwierdzeniu


błędu parzystości pamięci operacyjnej, co należy uznać za sytuację uniemożliwiającą
dalsze użytkowanie komputera. Procedura obsługi INT 2 wyprowadza na monitor stoso­
wny komunikat (Parity error at...) i wstrzymuje pracę systemu. Jedynym wyjściem
w tym momencie jest ponowny restart systemu w nadziei, że błąd parzystości spowodo­
wany został na przykład chwilową
/
utratą styku lub przegrzaniem modułów RAM, a nie
ich trwałym uszkodzeniem. Źródłem tego przerwania może też być sygnał generowany
przez uszkodzony koprocesor arytmetyczny.
212 Anatomia PC

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.

Bezpiecznie można to zrobić w następujący sposób, pokazany w języku Turbo C:


unąigned char i;
• # •

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ń.

W pierwowzorze nowoczesnych komputerów AT-386 i 486, tj. w IBM PC, zastoso­


wano 8-bitowy kontroler DMA typu 8237A. Stanowiło to w tamtych czasach znaczne
ułatwienie pracy procesorów 8-bitowych przy realizacji cykli dostępu do pamięci,
zdejmując z nich obowiązek bezpośredniej realizacji transmisji między blokowymi
urządzeniami peryferyjnymi a pamięcią oraz przeadresowywania bloków pamięci.
Obecnie nowoczesne procesory 80386 i 80486, dysponujące 32-bitową szyną danych,
stały się tak szybkie, że realizowane w mikrokodzie procesora rozkazy transmisji bloko­
wej typu rep movsw są bardziej wydajne niż transmisje blokowe w cyklu DMA. Co
gorsza, kilka generacji wzwyż od IBM PC, tj. w nowoczesnych AT, doskonała skądinąd
idea DMA napotyka na wąskie gardło 8-bitowych kontrolerów DMA (spowalnianych
dodatkowo stosowaniem zegara 4.77 MHz), które powstały dla potrzeb procesorów
8086/88.

Począwszy od IBM PC/AT dodano drugi kontroler 8237A, co pozwoliło na realizację


obsługi urządzeń 16-bitowych. Dopiero jednak systemy EISA i MCA, o odmiennej filo­
zofii i architekturze, powróciły do stosowania „na poważnie” idei DMA, wykorzystując
szybkie, 32-bitowe układy scalone nowej generacji. Ideę bezpośredniej komunikacji
urządzeń wejścia-wyjścia z pamięcią przedstawia rysunek 4.1.

Urządzeniem wejścia-wyjścia jest kontroler napędu dysków elastycznych (zarówno ten


zainstalowany na płycie głównej jak i ten umieszczony na karcie wkładanej w złącza
rozszerzenia), kontroler jednostki pamięci taśmowej (ang. streamer) lub inne podobne
urządzenie. Każdemu z nich przyporządkowany jest jeden z tzw. kanałów DMA, tj.
logicznych strumieni danych, których przepływ jest inicjowany przez procesor.
214 Anatomia PC

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.

Żądające obsługi urządzenie, stowarzyszone z danym kanałem DMA, wysyła sygnał


DREQ (DMA Request). Układ 8237A reaguje na to przejęciem kontroli nad magistra­
lami systemu i przeprowadzeniem wymaganej transmisji, np. jednego sektora odczyta­
nego z dyskietki do bufora w pamięci operacyjnej (RAM), gdzie odbywa się połączenie
sektorów w plik danych. W tym czasie procesor jest wolny i może, do czasu wystą­
pienia przerwania od kontrolera napędu dysków elastycznych (IRQ 6 - odczytano kolej­
ny sektor), zajmować się obróbką tekstu lub grafiki. Należy tu dodać, że oczywiście nie
zawsze oznacza to dalsze wykonywanie programu. Trzeba bowiem pamiętać, że szyny:
danych i adresowa, są we władaniu kontrolera DMA, a więc procesor może przetwarzać
tylko to, co ma w swoich rejestrach. Wszelkie odwołania do pamięci muszą czekać.
Sytuację ratuje trochę pamięć podręczna procesora (ang. cache memory) - stosowana
w procesorze 80486 wewnętrzna pamięć o wielkości 8 kB. Może w niej być jednak
umieszczany tylko kod programu, a nie dane. Dopiero następca procesora 80486 -
Pentium - posiada podręczną pamięć danych.

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

DREQ1 MMiMBM 18 23 d DB5


DREOO d 19 22 d DB6
GND 20 21 d DB7

Na kolejnych stronach zamieszczono opis końcówek układu scalonego 8237A:


IOR (I/Ó Read) - CPU wymusza na tym wejściu aktywny stan niski,
chcąc odczytać dane z wewnętrznego rejestru kontrolera DMA
(podczas programowania). W czasie transmisji DMA kontroler,
przejąwszy nadzór nad magistralami, sam uaktywnia tę końcówkę,
jeżeli dane transmitowane są z urządzenia wejścia-wyjścia do
pamięci;
IOW {1/0 Write) - CPU wymusza na tym wejściu aktywny stan niski,
chcąc zapisać dane do wewnętrznego rejestru kontrolera DMA.
Podczas transmisji DMA kontroler, przejąwszy nadzór nad
magistralami, sam uaktywnia tę końcówkę, jeżeli dane
transmitowane są z pamięci do urządzenia wejścia-wyjścia;
MEMR {Memory Read) - aktywny (niski) poziom na tej końcówce
wskazuje na ogólny kierunek transmisji z pamięci (do pamięci lub
urządzenia wejścia-wyjścia);
216 Anatomia PC

-MEMW (Memory Write) - aktywny (niski) poziom na tej końcówce


wskazuje na ogólny kierunek transmisji do pamięci (z pamięci lub
urządzenia wejścia-wyjścia);
AEN (Address Enable) - pozwala na rozróżnienie między adresami dla
pamięci i układów wejścia-wyjścia;
READY powolne układy pamięci lub urządzenia, albo też wejścia-wyjścia
mogą, uaktywniając ten sygnał, wymusić opóźnienie cyklu
odczytu lub zapisu DMA;
HLDA (Hold Acknowledge) - podając na to wejście stan logicznej
jedynki, układ, (procesor lub inny kontroler) sprawujący
dotychczas pieczę nad magistralami systemu (adresową i danych),
wyraża zgodę na przejęcie sterowania przez kontroler DMA.
Dotychczasowy kontroler odłącza się od magistral, ustawiając
swoje wyjścia w stan wysokiej impedancji;
ADSTB (Address Strobe) - informuje układy zewnętrzne, że na szynie
adresowej A0-A7 znajduje się bardziej znacząca część adresu;
HRQ (Hold Request) - wystawienie logicznej jedynki na tym wyjściu
jest reakcją układu na nadejście żądania obsługi transmisji DMA
(sprzętowo - przez końcówki DREQ0—3 lub programowo)
i stanowi polecenie „oddania” magistral systemowych skierowane
do CPU lub innego kontrolera magistral;
~CS (Chip Select) - wejście aktywowane przez procesor w trybie
programowania lub odczytu rejestrów wewnętrznych układu
8237A;
CLK wejście sygnału taktującego o częstotliwości 4.77 MHz;
RESET podanie na to wejście logicznej jedynki powoduje inicjalizację
układu 8237A;
DREQtz (DMA Request) - podając sygnał na jedno z tych wejść,
stowarzyszone z nim urządzenie zewnętrzne żąda obsługi.
Polaryzację sygnału aktywnego można zaprogramować, tzn. dla
każdego z wyjść n można ustalić, czy poziom aktywny oznacza
zero, czy jedynkę logiczną;
DACKw (DMA Acknowledge) - kontroler DMA, przejąwszy władzę nad
magistralami (wymiana sygnałów HRQ i HLDA) potwierdza na
odpowiednim wyjściu n przyjęcie żądania. Aktywny poziom tego
sygnału również można zaprogramować;
DB0-DB7 8-bitowa, dwukierunkowa magistrala danych. Tędy też
przekazywany jest bardziej znaczący bajt 16-bitowego adresu;
A0-A3 połowa mniej znaczącego bajtu dwukierunkowej szyny adresowej.
W trybie programowania kontrolera DMA przez procesor służy do
identyfikowania jego wewnętrznych rejestrów, zaś podczas
transmisji zawiera cztery najmniej znaczące bity adresu;
A 4 -A 7 podczas transmisji zawiera pozostałą część adresu. W stanie
spoczynku (i programowania) stan tych linii jest bez znaczenia;
Kontroler DMA 217

-EOP (End o f Process) - poziomem zera logicznego na tej końcówce


(traktowanej jako wyjście) układ 8237A sygnalizuje koniec
transmisji, tj. osiągnięcie zadanej liczby przesłań. Podanie na
końcówkę EOP (traktowaną jako wejście) zera logicznego przez
urządzenie zewnętrzne oznacza przedwczesny koniec transmisji;
Vcc wejście napięcia zasilającego (+5V);
GND masa zasilania.

Tryby pracy kontrolera DMA


Tryb spoczynkowy „I” (Idle)
W stanie spoczynku, podczas każdego cyklu zegara DMA na wejściu CLK testowane są
stany wejść DREQ>? (dotyczy to wejść, które nie są programowo zamaskowane) w celu
wykrycia żądania obsługi. Przyjmując żądanie obsługi, kontroler DMA uaktywnia
wyjście HRQ, żądając od procesora (lub innego układu sprawującego w danej chwili
kontrolę nad magistralami) oddania tych „uprawnień”. Układ taki odpowiada sygnałem
podawanym na wejście HLDA i odłącza się od magistral. W odpowiedzi na to układ
8237A wystawia na odpowiednie wyjście DACIO? stosowny sygnał potwierdzenia
i rozpoczyna transmisję odpowiednio do zawartości ustawionych na tę okoliczność
rejestrów. W każdym cyklu zegara sprawdzany jest ponadto stan wejścia CS. Aktywny
stan tego wejścia (zero logiczne) powoduje przejście układu w stan programowania;
procesor może komunikować się z rejestrami układu 8237A, adresując je wejściami
A0-A3. Dane 8-bitowe podawane są bezpośrednio przez linie DB0-DB7, a 16-bitowe -
porcjami po osiem. Rolę przełącznika spełnia końcówka ADSTB (Address Strobę ). Tak
samo odbywa się czytanie wewnętrznych rejestrów statusu.

Tryb „S” (Single)


W tym trybie pracy dokonywane jest pojedyncze przesłanie. Wewnętrzny licznik
transmisji jest zmniejszany o jeden, a rejestr adresowy, zależnie od zaprogramowania,
o jeden zwiększany lub zmniejszany. Następne przesłanie wymaga ponownego żądania
na linii DRE Qn.

Tryb „B” (Block)


Transmisja trwa nieprzerwanie do momentu wystąpienia zewnętrznego sygnału EOP od
urządzenia lub osiągnięcia przez licznik transmisji wartości FFFFh. Jeżeli np. licznik
transmisji zostanie załadowany wartością 511 (dziesiętnie), to pomniejszany o jeden przy
każdym przesłaniu przejdzie przez stan OOOOh do FFFFh, co spowoduje np. wczytanie
jednego 512-bajtowego sektora dyskietki wprost do określonego miejsca w pamięci.
218 Anatomia PC

Tryb „D” (Demand)


Tryb ten jest podobny do trybu „B”. Różnica polega na tym, że transmisja trwa do czasu
zaniknięcia sygnału DREQ/r, pojawienia się sygnału EOP, wykonania zadanej w licz­
niku transmisji liczby przesłań lub nadejścia żądania obsługi o wyższym priorytecie.
Czasowa dezaktywacja sygnału żądania na wejściu DRE Qn powoduje wstrzymanie (ale
nie zakończenie) transmisji. Tryb ten ma pewne znaczenie dla układów umieszczanych
na kartach rozszerzenia w komputerach PC, bowiem nie jest tam wyprowadzany sygnał
EOP.

Tryb „C” (Cascade)


W trybie tym przekazywane są tylko sygnały sterujące od układu nadrzędnego
{Master). Układ pracujący jako podporządkowany (Slave) nie wystawia na szyny
systemowe adresów ani sygnałów sterujących.

Tryb „V” (lferiffi


Układ pracuje tak, jak przy transmisji, tzn. wytwarza adresy, reaguje na sygnał EOP
i inne sygnały, ale nie generuje sygnałów dostępu do pamięci i urządzeń wejścia-
wyjścia (tj. IOR, IOW, MEMR, MEMW). Tryb ten służy do diagnostyki wewnętrznej
układu i nie ma nic wspólnego z weryfikacją danych.

Kaskadowe łączenie układów 8237A


Począwszy od modelu AT, firma IBM rozpoczęła instalowanie w swoich komputerach
drugiego kontrolera 823 7A. Układy te dają się łączyć w kaskady o dowolnej ilości
elementów. Jeden z układów „wyższego poziomu” (Master) odstępuje jedną parę
wyprowadzeń DREQ/7-DACK« (tj. jeden kanał) następnemu układowi 8237A (Slave),
który dołącza się do niej swoimi wyprowadzeniami HRQ-HLDA. Ponieważ cztery
kanały (0, 1, 2, 3) układu 8237A mają określone priorytety, tj. kolejności obsługiwania
zgłoszeń (kanał 0 ma priorytet najwyższy, kanał 3 — najniższy), wszystkie wejścia
układu Slave mają wyższy priorytet od pozostałych wejść układu Master. Kaskadowe
połączenie kontrolerów DMA obrazuje rysunek 4.3.

Rysunek 4.3.
Schemat
kaskadowego
połączenia
dwóch układów
8237A
Kontroler DMA 219

Programowanie kontrolerów DMA


Zanim przejdziemy do programowania układu 8237A Jeszcze kilka uwag.

W czasach, gdy projektowano komputer IBM PC, ze względów oszczędnościowych


(lub może dlatego, że 40-końcówkowa obudowa wydawała się szczytem luksusu) dwa
z niezbędnych dla pracy układów DMA rejestrów umieszczono poza obudową kostki
8237A. Mowa o rejestrze strony pamięci (stosowany jest tu układ 74LS612 - rejestr
4x4) i rejestrze zatrzaskowym bardziej znaczącego bajtu adresu. Drugim krokiem osz­
czędnościowym było zgrupowanie w komputerze XT rejestrów strony dla kanałów 0 i 1
fizycznie w jednym rejestrze, choć prowadzą do niego dwa porty (83h i 87h). Konsek­
wencją tego faktu jest pozbawienie XT możliwości transferów typu „pamięć-pamięć”
na odległości większe od 64 kB, bowiem transfer tego typu posługuje się wyłącznie
kanałami 0 i 1.

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.

Programowanie układu 8237A, podobnie jak wielu innych kontrolerów w komputerze


PC, odbywa się poprzez zapisywanie przez procesor rejestrów sterujących odpowiednią
wartością. Informacja o stanie kontrolera może być odczytywana przez procesor
z rejestrów statusu. Rejestry te, będące integralną częścią kontrolera, są „widziane”
przez procesor poprzez porty wejścia-wyjścia.
220 Anatomia PC

Adresy portów kontrolerów DMA

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.

„Sztuczne” porty komputera PC/XT


Adres Działanie
OOCh ustawienie przerzutnika w stan początkowy
ODdh programowa inicjalizacja układu - odpowiednik wystawienia
sygnału na końcówce RESET
OOEh wyzerowanie rejestru maski („odsłonięcie” wszystkich kanałów)

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.

Adresy portów kontrolerów DMA


w komputerze IBM PC/AT
Adres Rejestr Uwagi
OOOh rejestr adresowy kanału 0 (Slave)
00 lh rejestr licznika kanału 0 (iSlave)
002h rejestr adresowy kanału 1 (Slave)
003h rejestr licznika kanału 1 (Slave)
004h rejestr adresowy kanału 2 (Slave)
005h rejestr licznika kanału 2 (Slave)
006h rejestr adresowy kanału 3 (Slave)
007h rejestr licznika kanału 3 (Slave)
008h rejestr stanu (do odczytu) (Slave)
008h rejestr rozkazowy (do zapisu) (Slave)
009h rejestr żądań (Slave)
OOAh rejestr maski kanału (Slave)
OOBh rejestr trybu (Slave)
OODh rejestr pośredni (Slave)
OOFh rej estr maskuj ący (Slave)
081h rejestr strony kanału 2 (Slave)
082h rejestr strony kanału 3 (Slave)
083h rejestr strony kanału 1 (Slave)
087h rejestr strony kanału 0 (Slave)
089h rejestr strony kanału 6 (Master)
08Ah rejestr strony kanału 7 (Master)
08Bh rejestr strony kanału 5 (Master)
08Dh rejestr strony kanału 4 (Master - kaskada do Slave)
OCOh rejestr adresowy kanału 4 (Master)
OClh rejestr licznika kanału 4 (Master)
0C2h rejestr adresowy kanału 5 (Master)
222 Anatomia PC

Adres Rejestr Uwagi


0C3h rejestr licznika kanału 5 (Master)
0C4h rejestr adresowy kanału 6 (Master)
0C5h rejestr licznika kanału 6 (Master)
0C6h rejestr adresowy kanału 7 (Master)
0C7h rejestr licznika kanału 7 (Master)
ODOh rejestr stanu (do odczytu) (Master)
ODOh rejestr rozkazowy (do zapisu) (Master)
0D2h rejestr żądań (Master)
0D4h rejestr maski kanału (Master)
0D6h rejestr trybu (Master)
ODAh rejestr pośredni (Master)
ODEh rejestr maskujący (Master)

„Sztuczne” porty komputera PC/AT


Adres i Działanie
0D8h ustawienie przerzutnika w stan początkowy (Master)
ODAh programowa inicjalizacja układu - odpowiednik wystawienia
sygnału na końcówce RESET (Master)
ODCh wyzerowanie rejestru maski („odsłonięcie” wszystkich kanałów)
(Master)
OOCh ustawienie przerzutnika w stan początkowy (Slave)
OODh programowa inicjalizacja układu - odpowiednik wystawienia
sygnału na końcówce RESET (Slave)
OOEh wyzerowanie rejestru maski („odsłonięcie” wszystkich kanałów)
(Slave)

Przykład programowania rejestrów 16-bitowych (kanał 2, adres 6677h, licznik trans­


misji 0400h) w języku asemblera podano poniżej:
mov al,OOh
out Och,al ustaw przerzutnik
mov al,77h
out 04h,al młodszy bajt adresu
mov al,66h
out 04h,al starszy bajt adresu
mov al,OOh
out Och,al ustaw przerzutnik
out 05h,al młodszy bajt licznika
mov al,04h
out 05h,al starszy baji licznika
Kontroler DMA 223

Budowa rejestrów wewnętrznych


W celu zainicjowania transmisji typu „pamięć-pamięć” nie można posłużyć się żadną ze
sprzętowych linii zgłoszeń DRQ«. Pamięć przecież jako urządzenie nie jest podłączona
do żadnej z nich. Musi zatem istnieć programowa metoda wymuszenia transmisji:
umożliwia ją rejestr żądań. Rejestr ten może być tylko zapisywany.

Budowa rejestru żądań (port 009h w PC/XT, 009h i 0D2h w PC/AT):

0 0 0 0 0 bit 2 bit 1 bitO

bity 7-3 zawsze zero;


bit 2 wartość 1 na tym bicie oznacza natychmiastowe uruchomienie
transmisji (gdy kolejka oczekujących zgłoszeń jest pusta) lub
wprowadzenie żądania do kolejki zgodnie z aktualnym systemem
priorytetów. Zero oznacza brak żądania transmisji;
bity 1-0 adres kanału DMA, którego dotyczy żądanie:
00 = kanał pierwszy (0 lub 4),
01 = kanał drugi (1 lub 5),
10 = kanał trzeci (2 lub 6),
11= kanał czwarty (3 lub 7).

Budowa rejestru stanu (port 008h w PC/XT, 008h i ODOh w PC/AT):


Wewnętrzny stan układu 8237A obrazuje rejestr stanu. Można go tylko odczytywać.
Pod tym samym adresem znajduje się rejestr rozkazów , który z kolei można tylko
zapisywać.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7—4 wartość 1 na odpowiednim bicie oznacza wystąpienie zgłoszenia


od kanału 3-0 lub 7—4;
bity 3 -0 wartość 1 na odpowiednim bicie oznacza osiągnięcie zadanej
liczby transmisji dla kanału 3-0 lub 7-4.

Budowa rejestru rozkazów (port 008h w PC/XT, 008h i ODOh w PC/AT):

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bit 7 wartość 1 oznacza, że aktywnym stanem logicznym wyjść DACK t?


jest stan wysoki;
224 Anatomia PC

bit 6 wartość 1 oznacza, że aktywnym stanem logicznym wejść DRQ«


jest stan niski;
bit 5 wartość 1oznacza wydłużony impuls -IOW lub -MEMW. Pełny
cykl DMA trwa normalnie przez cztery okresy zegara taktującego.
Impuls IOW lub MEMW rozpocznie się wtedy w drugim zamiast
w trzecim okresie cyklu;
bit 4 wartość 1oznacza, że kanał 0 ma największy, a kanał 3
najmniejszy priorytet. Zero oznacza obsługiwanie zgłoszeń
w kolejności ich nadchodzenia;
bit 3 wartość 1wymusza przyspieszony cykl pracy (jeden cykl - 3
okresy zegara taktującego);
bit 2 wartość 1oznacza przejście kontrolera w stan programowania.
Kontroler nie reaguje wówczas na zgłoszenia na liniach DREQw;
bit 1 wartość 1 oznacza transfer typu pamięć-pamięć w obrębie jednego
bloku o wielkości do 64 kB. Zero oznacza używanie pełnego
adresu;
bit 0 wartość 1 oznacza przejście do transferu typu pamięć-pamięć.
Kanał 0 określa miejsce źródłowe transferu, a kanał 1 docelowe.

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.

0 0 0 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-3 zawsze zero;


bit 2 wartość 1 powoduje zamaskowanie kanału;
bity 1-0 adres kanału DMA, którego dotyczy żądanie:
00 = kanał pierwszy (0 lub 4),
01 = kanał drugi (1 lub 5),
10 - kanał trzeci (2 lub 6),
11= kanał czwarty (3 lub 7).

To samo można osiągnąć „globalnie”, ustawiając jednocześnie żądaną konfigurację ma­


sek przez zaprogramowanie rejestru maskującego. Rejestr ten służy wyłącznie do zapisu.

Budowa rejestru maskującego (port OOFh w PC/XT, OOFh i ODEh w PC/AT):


0 0 0 0 bit 3 bit 2 bit 1 bit 0

bity 7—4 zawsze zero;


bit 3 wartość 1 na tym bicie maskuje kanał czwarty (3 lub 7);
Kontroler DMA 225

bit 2 wartość 1 na tym bicie maskuje kanał trzeci (2 łub 6);


bit 1 wartość 1 na tym bicie maskuje kanał drugi (1 lub 5);
bit 0 wartość 1 na tym bicie maskuje kanał pierwszy (0 lub 4).

Budowa rejestru trybu (OOBh w PC/XT, OOBh i 0D6h w PC/AT):


Ustawienie trybu pracy każdego z kanałów odbywa się w rejestrze trybu.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 1-6 tryb pracy:


00 = tryb „D” (.Demand ),
01 = tryb „S” {Single),
10 = tryb „B” (Block),
11= tryb „C” ( Cascade);
bit 5 wartość 1 na tym bicie wymusza dekrementację (zmniejszanie
o jeden) licznika adresowego podczas każdego cyklu transmisji.
Zero oznacza inkrementację licznika;
bit 4 wartość 1 powoduje wykonanie samoprogramowania się układu do
stanu początkowego po zliczeniu zadanej liczby przesłań;
bity 3-2 w trybie „C” są bez znaczenia, w przeciwnym razie oznaczają
kierunek transmisji:
00 = tryb „V”,
01 = zapis do pamięci,
10 = odczyt z pamięci,
11= nie używane;
bity 1-0 adres kanału opisanego stanem bitów 3-2:
00 = kanał pierwszy (0 lub 4),
01 = kanał drugi (1 lub 5),
10 = kanał trzeci (2 lub 6),
1 1 = kanał C7wartv lub 7Y

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.

Układy logiczne karty muszą oczywiście identyfikować właściwy adres przestrzeni


adresowej wejścia-wyjścia na podstawie sygnałów AEN, -IOW i -D A C K 1.

“<

p>*.

m' \ : .
226 Anatomia PC

łinclude <dos.h>

#deline Przerzutnik 0x0c


#define LicznAdrKan__l 0x02
#define RejMaskiKan__l 0x0a
#define RejTrybu 0x0b
#define RejStronyKan_1 0x83
#define LicznTransKan_l 0x03
#define RejStanu 0x08

char Tabl[8] = { 11,12,13,14,15,16,17,18 } ;


unsigned int Adres;
unsigned char Strona;
void TestDMA (void)
{
outp (RejMaskiKan_l,0x05);
/* zablokuj kanał 1 na czas programowania */
outp (RejTrybu,0xa9);
/* Tryb "B", licznik adresów dekrementowany, samoprogramowanie
wyłączone, czytanie z pamięci, programowany kanał nr 1 */
Adres” (FP_SEG(Tabl) « 4 + FP_OFF(Tabl)) & Oxffff;
/* ostatnie 16 bitów adresu rzeczywistego obiektu */
Strona=(FP_SEG(Tabl) & 0xf000) >> 12;
/* strona=0000xxxx, gdzie xxxx to pierwsze 4 bity adresu */
outp(RejStronyKan_l,Strona);
outp(Przerzutnik,0xff);
outp(LicznAdrKan_l, (Adres & 0xff)); /* młodszy bajt adresu */
outp(LicznAdrKan_l, (Adres >> 8) & 0xff); /* starszy bajt */
outp (Przerzutnik,0xff);
outp(LicznTransKan_l,0x08); /* młodszy bajt licz. transmisji*/
outp(LicznTransKan_l,0x00); /* starszy bajt */
outp(RejMaskiKan_l, 0x01) ; /* odblokuj kanał nr 1 */
while((inp(RejStanu) & 0x02) == 0);
/* czekaj na koniec transmisji */
}

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.

W PC obsługiwane mogą być wyłącznie 8-bitowe urządzenia wejścia-wyjścia, tj. takie,


których porty komunikacyjne mają szerokość 8 bitów (szerokość magistrali danych
komputera).

Transmisja jednego baj tu z pamięci operacyjnej do urządzenia wejścia-wyjścia prze­


biega następująco:
• urządzenie zgłasza sygnałem na linii DREQ/7 żądanie obsługi;
Kontroler DMA 227

• układ 8237A przejmuje od procesora kontrolę nad magistralą systemową;


• układ 823 7A wystawia na liniach A0-A7 bardziej znaczącą część adresu, która
jest zatrzaskiwana w zewnętrznym rejestrze sygnałem ADSTB. Rejestr strony
programowany jest wcześniej bezpośrednio przez CPU;

• rejestr strony, adres zapisany w rejestrze zatrzaskowym i aktualny adres na liniach


adresowych układu 8237A tworzą 20-bitowy adres na magistrali adresowej
systemu;
• układ 8237A uaktywnia (podając na odpowiednią linię zero logiczne) sygnał
MEMR;
• sterownik pamięci wystawia na magistralę danych zawartość zaadresowanej
komórki pamięci;
• układ 8237A uaktywnia (zero logiczne) sygnał -IOW;

• urządzenie wejścia-wyjścia (identyfikowane za pomocą sygnałów DREQ«,


DACK/z i AEN - układ DMA nie wytwarza adresów dla urządzeń wejścia-
wyjścia!) pobiera bajt z magistrali danych do swojego bufora.

Jak widać, przy transmisjach z udziałem pamięci i urządzenia wejścia-wyjścia nie


występuje konieczność buforowania danych w układzie DMA.

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

Komputer IBM PC/XT


Ten typ komputera posiada już 16-bitową magistralę danych. Nic to jednak nie daje
urządzeniom wejścia-wyjścia na kartach rozszerzenia, których gniazda są i tak 8-bitowe
(16-bitowa jest tylko organizacja pamięci). Oznacza to, że na liniach A 0-A 7 magistrali
danych może wystąpić jedynie bajt o adresie parzystym, a na liniach A8-A15 od­
powiednio bajt o adresie nieparzystym. Dodatkowe układy logiczne muszą kierować
właściwą część 16-bitowej magistrali danych do 8-bitowego urządzenia wejścia-
wyjścia, natomiast druga połowa magistrali musi być ewentualnie odłączona (zależnie
od tego, czy adres urządzenia jest parzysty czy nie). Bajty o parzystych adresach
umieszczane są w „dolnej” połowie magistrali danych.
228 Anatomia PC

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.

Komputer IBM PC/AT


Model ten, w którym zastosowano procesor 80286, posiada również 16-bitową magistra­
lę danych i występuje w nim ten sam problem co w modelu XT. Podczas sekwencyjne­
go dostępu do pamięci należy naprzemiennie używać jednej połowy systemowej szyny
danych. Komputery AT z procesorem 80386 lub 80486 posiadają zwykle 32-bitową
organizację pamięci. Adresowany bajt pojawia się na jednej z czterech części magistrali
danych.

Tabela 4.2,
Przyporządkowanie kanałów DMA w modelu AT

Kanał Przeznaczenie Kanał Przeznaczenie


0 Slave, układ odświeżania pamięci i Master, kaskada do Slave
4

1 Slave, wolny 5 Master, wolny


2 Slave , kontroler napędu dysków 6 Master, wolny
elastycznych
3 Slave, wolny 1 7 Master, wolny
Kanały 5, 6, 7 są 16-bitowe, natomiast kanały 0-3 obsługują transmisje 8-bitowe.

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.

wynika z powyższych opisów, wewnętrzny 8-bitowy


111V ąyivA U U LilM iU TT V J L U i i L j i i i l UJ 1 ilJLI J Ł fT w yjścia
tt j j ^ ^4 w \ ^ v v *

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

Rysunek 4A 24-bitowa szyna adresowa


Schemat
wytwarzania 24- 7 LO\ 7 \co
bitowego adresu <i <1 co
<
o
w transmisji < co
< <
DMA

A0-A7 Rejestr z a trz a s k o w y Rejestr strony DMA


8237A
(DMA) 7 \
ADSTB

U staw iany przez CPU

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.

Podczas transmisji przenoszone są całe słowa 16-bitowe. Na magistrali danych pojawia


się zawsze słowo o adresie parzystym, nie ma więc konieczności naprzemiennego
przełączania bajtów z magistrali danych.

Systemy z procesorem 80386/486 w odniesieniu do swoich 32-bitowych szyn danych


posługują się tą samą logiką co komputer AT w stosunku do magistrali 16-bitowej.

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.

W architekturach odmiennych od AT (np. EISA) kontrolery DMA są 32-bitowe i tym


samym dopasowane do szerokości szyn. Również szybkość zegara DMA przekracza
znacznie początkowe 4.77 MHz pamiętające czasy IBM PC.
230 Anatomia PC

Zasadniczo stosowane są cztery metody odświeżania pamięci dynamicznej RAM:


• przez niezależny (sprzętowy) układ wbudowany w kontroler pamięci;

• przez układ analogiczny do powyższego, ale pobudzany impulsami z licznika


programowalnego 8254;
• przez podprogram wykonywany przez procesor w odpowiedzi na zgłoszenie
przerwania NMI;

• przez kanał 0 DMA, pobudzany impulsami z licznika programowalnego 8254


(metoda ta stosowana jest standardowo w PC/XT, rzadziej w PC/AT).

Programowany licznik nr 1 układu 8254 pracuje jako generator przebiegu prostokątnego


0 częstotliwości około 66 Hz. Wyjście jego połączone jest z końcówką DREQ0 układu
8237A (Slave) i wyzwala żądanie obsługi. Kanał 0 zaprogramowany jest w trybie „S”
(Single) do realizacji pojedynczych transmisji typu pamięć-urządzenie wejścia-wyjścia.
Obsługa żądania polega na odczytaniu (przejęcie kontroli nad magistralami, wystawie­
nie adresu na magistralę adresową, wygenerowanie impulsu -MEMR) komórki pamięci
1przekazaniu go do urządzenia zgłaszającego żądanie (impulsy -IOW i AEN). W rze­
czywistości jednak pobudzone zostają do pracy również wzmacniacze odczytu wiersza/
/kolumny pamięci dynamicznej. Powoduje to automatyczne odświeżenie zawartości nie
tylko danej komórki, ale i wiersza lub kolumny (zależnie od organizacji pamięci).

Na magistrali danych wystawione zostaje oczywiście adresowane słowo, a możliwość


pobrania go przez urządzenie wejścia-wyjścia jest sygnalizowana przez układ kontrolera
DMA niskim poziomem na wyjściu ~IOR. Polecenie to jest oczywiście ignorowane,
gdyż żadne urządzenie nie reaguje na kombinację sygnałów -DACKO, AEN i -IOW.
W następnym cyklu zegara systemowego dane znikają z magistrali.

Każda taka pseudotransmisja powoduje zmniejszenie wewnętrznego licznika transmisji


i zwiększenie licznika adresu o jeden. Następny impuls na wejściu DREQ0 powoduje
wygenerowanie następnego adresu.

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).

Czynności związane z inicjalizacją rejestrów kontrolera DMA zawarte są w proce­


durach inicjalizacyjnych BIOS-u.
Kontroler napędu dysków elastycznych 231

Zapis informacji na dyskietce


Modele IBM PC posługiwały się systemem zapisu magnetycznego określanym mianem
FM (ang. Frequency Modulation). Jest to bardzo prosty i zarazem mało wydajny sposób
kodowania informacji na nośniku magnetycznym. Najstarsze modele jako pamięć
zewnętrzną wykorzystywały magnetofon, ale ma to znaczenie wyłącznie historyczne,
dlatego też nie będzie tutaj omawiane.

Pamiętajmy, że tylko zmiana namagnesowania podłoża magnetycznego dyskietki niesie


z sobą informację. Stałe namagnesowanie nośnika nie wywołuje impulsów w głowicy
napędu. Źródłem impulsów jest zmiana namagnesowania nośnika, przy czym stan po­
czątkowy namagnesowania nie ma absolutnie znaczenia (tzn. symboliczna zmiana
N —>$ i S—>N niesie tę samą informację).

Ideę zapisu magnetycznego FM można wyrazić następującymi regułami:

• na ciąg danych przeznaczonych do zapisywania nakładany jest prostokątny


przebieg zegarowy, którego okres „pokrywa” jeden bit informacji wejściowej;

• każdy impuls zegara powoduje zmianę namagnesowania podłoża (Z);


• jeżeli w danym cyklu zegara ciąg danych wejściowych reprezentuje jedynkę,
pomiędzy impulsami pochodzącymi od zegara wprowadzany jest dodatkowy
impuls (D).

Pokazano to na rysunku 5.1.


232 Anatomia PC

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.

Zapis MFM rządzi się następującymi regułami:


• na ciąg danych przeznaczonych do zapisywania nakładany jest prostokątny
przebieg zegarowy, którego okres „pokrywa” jeden bit informacji wejściowej.
Impuls przemagnesowania dla jednego bitu (impulsu zegara) może pojawić się
tylko raz;
• impuls zegara powoduje zmianę namagnesowania podłoża tylko wtedy, gdy
stowarzyszony z nim bit danych i poprzedni bit danych mają wartość zero (Z);

• jeżeli w danym cyklu zegara ciąg danych wejściowych reprezentuje jedynkę, to


generowany jest impuls do przemagnesowania nośnika (D).

Można to przedstawić następująco:

Ciąg danych Impuls przemagnesowujący


00 tak
01 tak
10 nie
11 tak
Kontroler napędu dysków elastycznych 233

W obydwu metodach kodowania na ciąg impulsów wyjściowych będących źródłem


przemagnesowywania podłoża składają się impulsy pochodzące od zegara (Z) i odkodo-
wanych danych (D).

Widać wyraźnie, że liczba zmian namagnesowania nośnika przypadających na jeden bit


informacji jest większa (teoretycznie dwukrotnie) dla zapisu FM. Materiał magnetycz­
ny, którym pokryta jest dyskietka, wykazuje ziarnistość; istnieje ściśle określona dolna
granica wielkości obszaru, który można indywidualnie przemagnesować. W przypadku
dyskietek HD ta granica to około 2 jum. Na tej samej długości ścieżki można więc w for­
macie MFM zmieścić dwukrotnie więcej informacji.

Do dekodowania impulsów MFM używa się dwóch bramek sterowanych przesuniętymi


o pół okresu przebiegami o częstotliwości zegara. Obie bramki otrzymują też dekodo­
wany sygnał MFM. Jedna z bramek odfiltrowuje składowe Z i kieruje je do układu
synchronizowania zegara, a druga wydziela dekodowane dane. Należy podkreślić, że
przebieg MFM niesie w sobie informację o fazie i częstotliwości sygnału zegarowego
tylko w ograniczonym stopniu. Aby zagwarantować właściwą pracę dekodera, co pe­
wien czas należy wymuszać obecność sygnałów synchronizacyjnych. Dokonuje się tego
wprowadzając pola zawierające same zera —ciąg taki, jak wiemy, powoduje generację
sygnału zegarowego. Szczególnie narażone na rozsynchronizowanie są sektory zawiera­
jące tylko bajty o wartości FFh.

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.

System operacyjny korzysta bardzo intensywnie ze wsparcia kontrolera napędu dysków


elastycznych, któremu powierza się zadanie administrowania fizyczną powierzchnią
dyskietki. To kontroler musi wiedzieć, gdzie odszukać żądany sektor oraz jak radzić
sobie z uszkodzonymi sektorami.

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

niedokładności mechanicznego wykonania napędu i dyskietki, jak również wahania pręd­


kości obrotowej dysku. Dodatkowe pola na ścieżce pomagają w uzyskaniu stabilnego
ciągu impulsów synchronizacyjnych potrzebnych w obróbce danych (szczególnie MFM).

W pierwszym przybliżeniu fizyczna organizacja powierzchni dyskietki składa się z jed­


nakowych, koncentrycznych ścieżek. Każda z nich zawiera znacznik początku ścieżki
(ang. BOT - Beginning o f Track), sektory w liczbie zależnej od rodzaju dyskietki oraz
znacznik końca ścieżki (ang. EOT - End o f Track). Budowę jednej ścieżki dyskietki
obrazuje rysunek 5.2.

Rysunek 5.2. Ścieżka


Organizacja
danych
BOT S e k to r 1 S e k to r 2 :z? zz S e k to r 15 EOT

na ścieżce Znacznik początku ścieżki (BOT)


dyskietki
Z1 S Z2 Z3

Sektor
s D1 ID CRC-1 Z4 S D3 DANE CRC-2 Z5

Znacznik końca ścieżki (EOT)

Kontrolery starszej generacji, wyposażone w mikrokontroler NEC mPD765 lub jego


odpowiednik funkcjonalny Intel 8272, mają zaimplementowaną możliwość przełączenia
w tryb pracy FM (format używany na dyskietkach komputerów IBM PC). Organizacja
zapisu na dyskietce, tj. układ pól dodatkowych i ich znaczenie są takie same dla
formatów FM i MFM. Inne są tylko długości i zawartości pewnych znaczników.
Przykładowo: znacznik synchronizacyjny S (ciąg zer) jest w przypadku formatu FM
skrócony do połowy, bowiem —jak wiemy z poprzedniego podrozdziału —ten rodzaj
zapisu niesie w sobie bezpośrednio impulsy synchronizacji niezależnie od składu
strumienia danych i łatwiej jest utrzymywać generator w stanie zgodności fazowej.
Format FM nie ma w obecnych czasach praktycznego znaczenia i nie będziemy się nim
dalej zajmować.

Poszczególne pola ścieżki formatu MFM mają następującą zawartość:

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.

Dla kontrolera sygnałem początku ścieżki jest napotkanie znacznika Z l. W następnej


kolejności odczytywany jest blok impulsów synchronizacyjnych S, które dopasowują
dokładnie częstotliwość i fazę drgań generatorów potrzebnych do zdekodowania sygnału
MFM. Znacznik S zawiera same zera i powoduje generację czystego sygnału synchro­
nizacyjnego. Zmniejszany jest tym samym do minimum szkodliwy wpływ chwilowych
zmian prędkości obrotowej dysku. Sygnatura Z2 informuje kontroler, że po niej nastę­
pować będą sektory ścieżki. Resztę znacznika początku ścieżki wypełnia „szczelina”
Z3.
236 Anatomia PC

Każdy z następujących teraz sektorów ścieżki ma jednakową budowę i zawiera 10 pól.


Pierwsze z nich to pakiet sygnałów synchronizacyjnych S o budowie i znaczeniu takim,
jak w znaczniku początku ścieżki. Następnym jest 4-bitowa sygnatura D l, informująca
kontrolera, że teraz nastąpi metryka adresowa sektora ID. Pole to jest 4-bajtowym
(ścieżka-głowic a-sektor-rozmi ar) adresem sektora na dysku i stanowi zawartość bloku
formatującego, który należy przygotować w pamięci przed wywołaniem funkcji 05h
przerwania 13h BIOS-u. Metryka adresowa ID i jej sygnatura D l zabezpieczone są
16-bitowym kodem CRC umieszczonym w polu CRC-1.

Następuje teraz ponowne zsynchronizowanie generatora MFM z aktualną prędkością


obrotową dysku (pole S) i pod głowicami pojawia się znacznik początku danych sektora
D3. Pole danych sektora nie musi mieć standardowej długości 512 bajtów, choć jest to
wartość powszechnie używana. Długość sektora określona jest w czwartym bajcie pola
ID. Może ona sięgać teoretycznie nawet 16 kB, jednak w polach danych o długości
większej od 2 kB mogą występować częste przekłamania spowodowane rozsynchroni-
zowywaniem się generatorów MFM. Pole danych zabezpieczane jest własną sumą
kontrolną w kodzie CRC umieszczaną w polu CRC-2. Szczelina Z5 daje kontrolerowi
czas na obliczenie tej sumy i weryfikację wyniku. Pamiętajmy, że kontroler napędu
dysków elastycznych nie posiada bufora ścieżki i wszystkie informacje opracowywane
są w czasie rzeczywistym, tj. w miarę pojawiania się danych pod głowicami napędu.
Szczelina Z5 ma jeszcze dodatkowe znaczenie: jest ona elastycznym buforem między
sektorami. Rzeczywiste długości pola danych sektorów mogą się zmieniać, bowiem
minimalna zmiana tarcia głowicy o powierzchnię dyskietki (i tym samym zmiana pręd­
kości obrotowej) podczas zapisywania danych nie może być kompensowana zmianą
częstotliwości zegara, który jest synchronizowany jedynie polem S. Mogą zatem
powstawać lokalne wahania gęstości zapisu, co prowadzi do zmian długości pól danych
w sektorach. Pole Z5 zmniejsza zatem szanse na nałożenie się danych sektora na na­
stępujące po nich pola.

Całkowita długość sektora, po uwzględnieniu wszystkich pól dodatkowych, wynosi


więc 654 bajty. Ten fakt, a także istnienie znaczników BOT i EOT, stanowi o różnicy
między pojemnością dysku sformatowanego i niesformatowanego.

Koniec ścieżki (brak dalszych danych) sygnalizowany jest znacznikiem Z6.

System operacyjny składa się z podprogramów obsługujących różne funkcje komputera,


m.in. czytanie i zapis na dyskietkę. Dla uproszczenia (skrócenia) wywołania tych pro­
gramów korzysta się ze specyficznych dla procesorów serii 80x86 rozkazów zwanych
przerwaniami programowymi (instrukcja i n t n). DOS udostępnia trzy przerwania pro­
gramowe (21h, 25h i 26h), które tworzą zestaw elementarnych funkcji obsługujących
operacje na dyskach. W tym rozdziale zajmować się będziemy tylko dyskietkami.
Kontroler napędu dysków elastycznych 237

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.

Zawartość rejestru A X Przyczyna błędu


OOh operacja wykonana poprawnie
Olh nieznany kod rozkazu
02h zły adres
04h nie znaleziono sektora
08h przepełnienie strony DMA
lOh błąd kodu CRC lub ECC
20h błąd kontrolera napędu
40h błąd pozycjonowania głowicy
80h brak gotowości napędu (np. otwarte drzwiczki)

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.

Param etry wejściowe:


AL num er napędu (0 = A, 1 = B, 2 = C itd.);
CX liczba czytanych sektorów;
DX num er pierw szego sektora;
D S:B X adres bufora w pamięci, zaw ierającego zapisyw ane dane.

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:

• w czytać funkcją INT 25h sektor zawierający katalog główny;


Kontroler napędu dysków elastycznych 239

• odszukać numer jednostki alokacji dla katalogu \bin. Przy obszernych katalogach
może okazać się konieczne wczytanie sektora tablicy alokacji;

• w sektorze zawierającym katalog \bin odszukać informację o podkatalogu \dos5,


wczytać odpowiedni sektor i postępować dalej w analogiczny sposób aż do
odnalezienia katalogu \doc;

• po określeniu pierwszej jednostki alokacji dla pliku dos5net.txt należy, podążając


łańcuchem jednostek alokacji zapisanych w FAT, określić numer czwartej
jednostki alokacji (1565=3*512+29);

• wczytać odnaleziony sektor funkcją INT 25h i zmodyfikować jego 29 bajt;


• zapisać zmodyfikowany sektor funkcją INT 26h;

• zmodyfikować (ewentualnie) datę i czas utworzenia pliku w zawierającym go


katalogu;
• gdyby zaszła konieczność przedłużenia pliku, dodatkowo odnaleźć wolne
jednostki alokacji w FAT i dowiązać je do opisującego plik łańcucha.

Na szczęście, oprócz wyżej opisanych funkcji, które ukierunkowane są na logiczne


sektory dysku, możliwe jest wykorzystanie funkcji przerwania 21h, dzięki którym
można przekazywać nazwy plików w tradycyjnie przyjętej formie:
napęd:\ścieżka\na^wa.roz3zerzenie

Operacje zapisu bądź odczytu pojedynczych bajtów definiuje się w odniesieniu do


początku pliku lub miejsca ostatniej operacji.

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.

Oto niektóre funkcje przerwania 21h:

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

Piętro niżej w hierarchii wewnętrznych procedur komputera leżą zawarte w pamięci


stałej podprogramy BIOS-u. Jakkolwiek prawie każdy model płyty głównej komputera
posługuje się inną wersją tych procedur, musi być zagwarantowana zgodność punktów
wejścia, realizowana przez wypełnienie obszaru wektorów przerwań odpowiednimi
adresami procedur oraz zgodność realizowanych funkcji. Właśnie z tych procedur ko­
rzysta system operacyjny.

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.

Procedura obsługi przerwania 13h sprawdza poprawność przekazywanych w rejestrach


parametrów (np. czy następuje odwołanie do istniejącego napędu) i ostatecznie wywo­
łuje żądaną funkcję. BIOS numeruje napędy dysków elastycznych następująco:
A - 0, B = 1 itd. Numery dysków twardych rozpoczynają się od 80h, tj. C = 80h,
D = 81hitd.

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.

Kody błędów zwracane przez przerwanie 13h podano niżej.

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

Poniżej opisano funkcje przerwania 13h obsługujące napędy dysków elastycznych.


Kontroler napędu dysków elastycznych 241

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>

unsigned char far Sektor[512];


union REGS RejWej, RejWyj;
struct SREGS RejSeg;

void CzytajSektorInt_13 (void)


{
RejSeg.es=FP_SEG(Sektor) ; /* adres bufora */
RejWej.x .bx=FP_OFF{Sektor);
RejWej.h .ah-0x02; /* funkcja nr 2 INT 13h */
RejWej.h .dl=0x00; /* napęd A: */
RejWej.h.dh=0x00; /* ścieżka 0 */
RejWej.h .cl=0x05; /* sektor 5 */
int86x(0x13,&RejWej,&RejWyj,&RejSeg);
i f ((RejWyj.x .cflag & 0x01) == 0x01)
printf("\n Wystąpił błąd nr: %x\n",RejWyj.h .ah);
}

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

AL liczba sektorów na ścieżce;


CH liczba ścieżek w cylindrze (dotyczy dysku twardego);
CL numer sektora;
DH numer głowicy;
DL numer napędu (0 = A, 1 = B itd.);
ES:BX adres 512-bajtowego bufora zawierającego identyfikatory
kolejnych sektorów (część bufora pozostaje nie wykorzystana).
W artości zwracane:
AH kod błędu;
CF l w przypadku wystąpienia błędu.
Przykład:
/* Funkcja formatuje ścieżkę "Sc" na stronie "Str" formatem
256 bajtów na sektor, 10 sektorów na ścieżkę */

#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;

void FormatSc (int Sc, int Str)


{
int i ;

W s k B l o k F o r m = (struct BlokForm far *)malloc (10*4);


for(i=0;i<10;i++) /* przygotowanie bloku identyfikatorów */
{
WskBlokForm[i 1 .sc=Sc;
WskBlokForm[i].st=Str;
WskBlokForm[i].se=i;
WskBlokForm[i].dl=dens_256;
}
RejSeg.es-FP SEG(WskBlokForm); /* adres bloku identyfikatorów */
RejWej.x .bx~FP O F F (WskBlokForm);
RejWej.h .ah=0xÓ5; /* funkcja nr 5 INT 13h */
RejWej.h.dl=0x01; /* napęd B: */
RejWej.h .dh=Str; /* parametr "strona" */
RejWej.h .ch=Sc; /* parametr "ścieżka" */
RejWej.h.al=0x0a; /* 10 sektorów na ścieżkę */
int86x(0x13,&RejWej,&RejWyj,&RejSeg); /* przerwanie 13h */
i f ((RejWyj.x .cflag & 0x01) -= 0x01)
printf("\n Wystąpił błąd nr: %x\n",RejWyj.h .ah);
free(WskBlokForm);
}
Kontroler napędu dysków elastycznych 245

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:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-4 czas pozycjonowania głowicy;


bity 3-0 opóźnienie podnoszenia głowic (T2). Kontroler napędu
wprowadza to opóźnienie, wykonawszy bieżący rozkaz
i oczekując na następny.

Bajt 1:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-1 opóźnienie opuszczania głowic (Tl);


bit 0 0 = transmisja kanałem DMA,
1 - transmisja bez udziału DMA.
246 Anatomia PC

Bajt 2:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-0 opóźnienie w yłączenia silnika napędu.

Bajt 3:

X X X X X X bit 1 bit 0

bity 7-2 nie używane;


bity 1-0 liczba bajtów w sektorze:
00 = 128,
01 =256,
10 = 512,
11 = 1024.

Bajt 4:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7—0 liczba sektorów na ścieżce:


00001000 = 8,
00001001 = 9 ,
00001111 = 15,
00010010= 18.

Bajt 5:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-0 rozm iar szczeliny {GAP) w bajtach:


lBh dla napędów HD (1.2 MB),
2Ah dla napędów DD (360/720 kB).

Bajt 6:

X X X X X X X X

bity 7-0 nie używane.

Bajt 7:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO


Kontroler napędu dysków elastycznych 247

bity 7-0 rozmiar szczeliny przy formatowaniu:


50h dla napędów DD 360/720 kB,
54h dla napędu HD 1.2 MB,
6Ch dla napędu i ID 1.44 MB.

Bajt 8:

bit 7 bit 6 bit5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-0 wartość bajtu wypełniającego formatowany sektor, zwykle F6h.

Bajt 9:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-0 czas uspokojenia głowic po pozycjonowaniu, w milisekundach.

Bajt 10:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-0 czas rozbiegu silnika w jednostkach równych 0.125 s.

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 15h zwraca rodzaj nośnika (rzeczywistą pojemność dyskietki umieszczonej


w danym napędzie). Funkcja sprawdza też, czy napęd posiada funkcję kontroli zmiany
nośnika.
Param etry wejściowe:
AH 15h;
DL numer napędu (0 = A, 1 = B itd.).
Wartości zwracane:
AH numer błędu lub następująca informacja:
OOh = brak napędu,
248 Anatomia PC

Olh - napęd nie korzysta z linii 34,


02h = napęd korzysta z linii 34,
03h = dysk twardy;
CF 1 w przypadku wystąpienia błędu (AH zawiera numer błędu).

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).

Opisane w poprzednich rozdziałach funkcje nie stanowią najniższego piętra w hierarchii


procedur wewnętrznych komputera. Wcześniej czy później muszą się one odwołać
bezpośrednio do kontrolera napędu dysków elastycznych.

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.

Połączenie kontroler-napęd realizowane jest za pomocą wielożyłowego przewodu


płaskiego, którego wtyki są różne dla różnych typów napędów, ale sygnały i ich pozio­
my ściśle trzymają się do dziś standardu SA-450 opracowanego dla potrzeb modelu
IBM PC przez firmę Shugart Associates.
Kontroler napędu dysków elastycznych 249

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:

• nadzorowanie sygnałów na magistralach systemowych i dekodowanie adresów


własnych portów;
• transformacja równoległego formatu danych na szynie danych na postać szere­
gową;

• wyposażenie uformowanych bloków danych w sumy kontrolne CRC;

• wytwarzanie wszystkich fizycznych elementów sektora zapisywanego na dysk,


tj. znaczników adresowych, synchronizacyjnych, sygnatur itp.;
• generowanie sygnału synchronizującego dla potrzeb formatu MFM;
• nadzorowanie stanu elementów mechanicznych napędu i sterowanie ich poło­
żeniem.

Operacje odczytu wymagają oczywiście wykonania czynności odwrotnych.

Rejestry kontrolera napędu dysków elastycznych


Rozkazy i dane przekazywane są do rejestrów kontrolera, widzianych w przestrzeni
adresowej komputera jako porty (tabela 5.1).

Modele PS/2 mają poszerzoną listę rejestrów i rozkazów. Pomiędzy poszczególnymi


modelami tej serii występują istotne różnice; ich opis zostanie pominięty, aby nie
zaciemniać tematu.

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.

Poniżej podano znaczenie poszczególnych bitów rejestrów:

Rejestr wyjściowy
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 wartość 1 powoduje włączenie silnika napędu D;


bit 6 wartość 1 powoduje włączenie silnika napędu C;
250 Anatomia PC

Tabela 5. t
Porty udostępniające rejestry kontrolera napędu dysków elastycznych

Adres Kontroler Kontroler Kierunek


nadrzędny podrzędny
adres bazowy 3F0h 370h
rejestr wyjściowy 3F2h 372h tylko zapis
rejestr stanu 3F4h 374h tylko odczyt
rejestr danych 3F5h 375h dwukierunkowy
dodatkowe porty dostępne w modelu A T
rejestr wejściowy 3F7h 377h tylko odczyt
rejestr
3F7h 377h tylko zapis
konfiguracji

bit 5 wartość 1 powoduje włączenie silnika napędu B;


bit 4 wartość 1 powoduje włączenie silnika napędu A;
bit 3 wartość 1 włącza mechanizm obsługi kanału 2 DMA i IRQ6;
bit 2 wartość 0 powoduje wyzerowanie (reset) kontrolera;
bity 1-0 wybór napędu:
00 = A,
01 = B,
10 = C,
11 = D .

Rejestr stanu

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 rejestr danych (port 3F5h/375h):


1 = gotowy,
0 ~ niegotowy;
bit 6 kierunek transmisji:
1 = kontroler -» CPU,
0 = CPU —» kontroler;
bit 5 0 = tryb pracy z wykorzystaniem DMA,
1 = bezpośredni zapis/odczyt do portu danych;
bit 4 1 = kontroler jest w trakcie wykonywania rozkazu,
0 = kontroler w stanie oczekiwania;
bit 3 1 = napęd D w trakcie pozycjonowania głowic;
bit 2 1 = napęd C w trakcie pozycjonowania głowic;
bit 1 1 = napęd B w trakcie pozycjonowania głowic;
bit 0 1 = napęd A w trakcie pozycjonowania głowic.
Kontroler napędu dysków elastycznych 251

Rejestr wejściowy (występuje od modelu AT):

bit 7 X X X X X X X

bit 7 informacja o zmianie dysku od czasu ostatniej operacji:


1 - dysk wymieniony,
0 = dysk nie wymieniony;
bity 6 -0 nie używane.

Rejestr konfiguracji (występuje od modelu AT)

X X X X X X bit 1 bitO

bity 7-2 nie używane;


bity 1-0 prędkość transmisji kontroler-napęd:
00 - 500 kbit/s,
01 - 300 kbit/s,
10 = 250 kbit/s,
11 = 1 Mbit/s.

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.

Cykl rozkazowy kontrolera


Faza przygotowawcza
W skład tej fazy wchodzą następujące czynności:

• przygotowanie oprogramowania DMA tak, by po zgłoszeniu przez kontrolera


żądania DRQ2 adres bazowy DMA wskazywał na początek bufora, a licznik
adresowy był inkrementowany;
• zapisanie do rejestru wyjściowego (port 3F2h/372h) następujących danych:
• numeru napędu (bity 1-0),
• aktywacji kontrolera (bit 2),
252 Anatomia PC

• typu transmisji = DMA (bit 3),


• rozkazu uruchomienia silnika stosownego napędu (jeden z bitów 7-4);
kontroler oczekuje teraz rozkazu podawanego przez rejestr danych
(port 3F5h/375h).

Faza przekazywania rozkazu


na każdy z rozkazów może składać się wiele bajtów;
na podstawie pierwszego bajtu rozkazu (zawartej w nim sygnatury) kontroler
rozpoznaje, z ilu bajtów składa się rozkaz;
poszczególne bajty rozkazu są akceptowane tylko wtedy, gdy bit 7 rejestru stanu
jest ustawiony (należy to sprawdzić przed przesłaniem każdego bajtu).

Budowa przykładowego rozkazu - rozkaz RS (Read Sector)


Zajmijmy się przykładową funkcją odczytu sektora. Ponieważ napędy dysków elastycz­
nych mają dwie głowice położone naprzeciw siebie po obu stronach dyskietki, możliwe
jest jednoczesne czytanie naprzeciwległych (leżących po przeciwległych stronach
dyskietki) sektorów.

Faza przekazywania rozkazu


Długość: 9 bajtów.

Bajt 1:

bit 7 bit 6 bit 5 t 0 1 1 0

bit 7 wartość 1 oznacza czytanie obustronne;


bit 6 format zapisu sektora:
1 = MFM,
0 = FM;
bit 5 wartość 1 oznacza brak reakcji na napotkanie skasowanego
znacznika adresu, wartość 0 powoduje w takiej sytuacji
wystąpienie błędu;
bity 4 -0 00110 - sygnatura rozkazu ( opcode ).

Bajt 2:

X X X X X bit 2 bit 1 bitO


Kontroler napędu dysków elastycznych 253

bity 7-3 nie używane;


bit 2 numer głowicy;
bity 1-0 numer napędu:
0 0 - A,
01 - B,
10 = C,
11 = D .

Bajt 3:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-0 numer ścieżki.

Bajt 4:

X X X X X X X bitO

bity 7-1 nie używane;


bitO numer głowicy.
t
Bajt 5:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-0 numer sektora.

Bajt 6:

X X X X X bit 2 bit 1 bitO

bity 7-3 nie używane;


bity 2 -0 wielkość sektora:
000 - 128 bajtów,
001 = 256 bajtów,
010 - 512 bajtów, /

011 = 1 kB,
• t •

111 - 16 kB.

Bajt 7:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO


254 Anatomia PC

bity 7-0 numer ostatniego sektora do przeczytania. Uwaga: gdy czytany


jest tylko jeden sektor, równe wartości z bajtu 5. Inną możliwością
zaprogramowania liczby sektorów do przeczytania jest ustawienie
licznika transmisji kanału DMA; sygnał TC ( Terminal Count)
z kanału DMA przerywa wówczas transmisję po przeczytaniu
zadanej liczby sektorów.

Bajt 8:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-0 długość szczeliny Z5. Zwykle bajt zawiera sygnaturę 01000110,
oznaczającą szczelinę 80-bajtową.

Bajt 9:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-0 w PC zwykle zawierają sygnaturę FFh, co oznacza sektor


512-bajtowy.

Po odebraniu właściwej liczby anonsowanych w pierwszym słowie rozkazu bajtów


kontroler przechodzi do fazy przekazywania danych.

Faza przekazywania danych


• w podanym przykładzie kontroler ustawia głowice nad adresowaną ścieżką
i odczekuje czas Tl (por. opis funkcji 08h przerwania 13h BIOS-u);

• głowice opuszczane są na powierzchnię dyskietki i rozpoczyna się czytanie


metryk adresowych sektorów ścieżki aż do napotkania sektora określonego
w bajcie 5 rozkazu (większość nowoczesnych napędów dyskietek ma głowice
cały czas opuszczone, co przyspiesza operacje dyskowe);
• odczytywany jest blok danych sektora wraz z polem CRC-2, po czym
sprawdzana jest ich suma kontrolna;
• sygnałem DRQ2 uruchamiany jest mechanizm DMA i blok danych przekazywa­
ny jest do pamięci (kontroler napędu dysków elastycznych nie posiada żadnego
mechanizmu buforowania danych!);

• następne sektory odczytywane są do momentu, gdy:


• nadejdzie sygnał TC z kanału DMA
lub
• napotkany zostanie koniec ścieżki
lub
• odczytany zostanie ostatni sektor podany w bajcie 7 rozkazu RS;
Kontroler napędu dysków elastycznych 255

• głowice pozostają jeszcze na powierzchni dyskietki przez czas T2, oczekując na


mogący nadejść kolejny rozkaz (przyspiesza to dostęp do danych);
• głowice są podnoszone;

• wykonanie fazy przekazywania danych kończy się wygenerowaniem przez


kontroler napędu dysków przerwania IRQ6.

Kontroler ma w swoim repertuarze również rozkazy pozbawione fazy przekazywania


danych (np. odpytywanie stanu napędu). Po odebraniu rozkazu przechodzi on wtedy
bezpośrednio do fazy końcowej, jednak i w tym przypadku generowane jest przer­
wanie IRQ6.

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

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-6 kod zwracany po wykonaniu rozkazu:


00 = normalne zakończenie rozkazu,
01 = rozpoczęto wykonanie rozkazu ale go nie dokończono,
256 Anatomia PC

10 = nie podjęto wykonania rozkazu (zły kod),


1 1 - przerwano wykonywanie rozkazu poprzez polling;
bit 5 1 = poszukiwanie ścieżki zakończone prawidłowym
pozycjonowaniem głowic,
0 = poszukiwanie ścieżki trwa;
bit 4 sygnał błędu pozycjonowania. Mimo wysłania 79 impulsów do
mechanizmu silnika krokowego napędzającego ramiona głowic
nie osiągnięto ścieżki zerowej;
bit 3 brak sygnału gotowości napędu;
bit 2 aktualnie pracująca głowica:
1 = głowica nr 1,
0 - głowica nr 0;
bity 1-0 aktualnie wybrany napęd:
00 = A,
01 = B,
10 =c,
11 = D.

Bajt 2: STATUS-1

bit 7 x bit 5 bit 4 x bit 2 bit 1 bit 0

bit 7 osiągnięto koniec ścieżki;


bit 6 nie używany;
bit 5 błąd sumy kontrolnej CRC-1 lub CRC-2;
bit 4 przekroczenie limitu czasu w oczekiwaniu na reakcję ze strony
procesora lub układu DMA (overrun);
bit 3 nie używany;
bit 2 nie znaleziono sektora;
bit 1 dyskietka zabezpieczona przed zapisem;
bit 0 mimo wykonania pełnego obrotu dyskietki (dwa impulsy IDX
z zespołu fotokomórki) nie znaleziono metryki adresowej sektora.

Bajt 3: STATUS-2

X bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 nie używany;


bit 6 podczas odczytu napotkano sektor z metryką adresową usuniętych
danych;
bit 5 błąd sumy kontrolnej CRC-2;
• ’

bit 4 niewłaściwy numer ścieżki;


Kontroler napędu dysków elastycznych 257

bit 3 dane odczytane z sektora w trybie porównania są identyczne


z danymi przesłanymi przez CPU lub kanał DMA;
bit 2 nie znaleziono ścieżki zawierającej dane identyczne z przesłanymi
przez CPU lub kanał DMA;
bit 1 niewłaściwy numer ścieżki;
bit 0 nie znaleziono metryki adresowej sektora.

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

bit7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

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

bit7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7 -0 podają numer ścieżki, na której znajdował się ostatni


z przeczytanych przez kontroler sektorów.

Bajt 5: Głowica

X X X X X X X bitO

bity 7 -1 nie używane;


258 Anatomia PC

bit O numer głowicy, która była aktywna jako ostatnia:


0 = głowica 0,
1 - głowica 1.

Bajt 6: Sektor

bit7 bit 6 bit5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-0 numer ostatniego z przeczytanych sektorów.

Bajt 7: Rozmiar sektora

X X X X X bit2 bitl bitO

bity 7-3 nie używane;


bity 2 -0 rozmiar ostatnio przeczytanego sektora, kodowany następująco:
000 - 128 bajtów,
001 - 256 bajtów,
010 = 512 bajtów,
011 = 1 kB,
# » t

111 = 16 kB.

Alternatywne metody transmisji danych


Transmisja poprzez kanał DMA nie jest oczywiście jedyną możliwością przekazywania
danych między pamięcią a kontrolerem. Ustawienie bitu 3 w rejestrze wyjściowym kon­
trolera oraz wyzerowanie bitu 0 w drugim bajcie rozkazu STOD (inne rozkazy kontro­
lera nie są tu omawiane) wprowadza kontroler w tryb pracy bez udziału DMA.

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.

Wyzerowanie bitu 3 w rejestrze wyjściowym i ustawienie bitu 0 w drugim bajcie rozka­


zu STOD prowadzi do wyłączenia przez kontroler generacji zarówno impulsów DREQ2
jak i IRQ6. Jest to tak zwany tryb pracy polling. Kontroler nie sygnalizuje w żaden
sposób konieczności obsługi, a jedynym sposobem stwierdzenia tej konieczności jest
stałe sprawdzanie stanu bitu 7 rejestru stanu kontrolera. Ustawienie tego bitu świadczy
o konieczności ingerencji w rejestr danych, czyli:
Kontroler napędu dysków elastycznych 259

• 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).

W takiej sytuacji należy programowo rozstrzygnąć, czego oczekuje od nas kontroler i co


czeka na nas w rejestrze: dane, rozkaz czy bajty statusu.

Ta forma obsługi kontrolera nie ma znaczenia praktycznego ze względu na zależności


czasowe. Port danych kontrolera nie może bowiem przetrzymywać w nieskończoność
jakiegoś bajtu i tym samym nie reagować na żadne inne rozkazy.

Jak wiadomo, głowice zapisująco-odczytujące napędu dysków elastycznych muszą mieć


możliwość osiągnięcia każdej ze ścieżek, tj. przemieszczać się nad powierzchnią dys­
kietki. Głowice umieszczone są na wózku napędzanym silnikiem krokowym. Oś tego
silnika nawija taśmę przymocowaną do wózka (stosowane są również inne mechanizmy
np. przekładnia ślimakowa). Cały ten układ ma pewną bezwładność, częstotliwość
rezonansu mechanicznego i inne rzeczywiste właściwości mechaniczne. Każdy rozkaz
dostępu do napędu wymaga wcześniejszego określenia podstawowej charakterystyki
dynamicznej zespołu napędowego głowic.

Możliwości korekcji błędu położenia głowic napędu dyskietek są bardzo ograniczone.


Układ sterowania położeniem wózka z głowicami pracuje w otwartej pętli sprzężenia
zwrotnego, tzn. kontroler wydaje polecenie umieszczenia ustawienia głowic nad żądaną
ścieżką, ale nie otrzymuje informacji o faktycznym położeniu głowic. Jedynym pun­
ktem orientacyjnym jest ścieżka zerowa dysku.

Algorytm działania układu pozycjonowania jest następujący:


• wydawane jest polecenie ustawienia głowic nad ścieżką zerową. Silnik krokowy
otrzymuje impulsy w liczbie równej maksymalnej liczbie ścieżek dla danego
typu nośnika. Osiągnięcie tej pozycji przez głowicę potwierdzane jest sygnałem
z czujnika położenia (najczęściej fotokomórki). Jeżeli sygnał ten nie nadchodzi,
sygnalizowany jest błąd;

• silnik krokowy otrzymuje impulsy w liczbie żądanego numeru ścieżki;

• jeżeli kontroler rozpoznaje inną ścieżkę, mamy do czynienia z błędem pozycjo­


nowania (kalibracji);
260 Anatomia PC

• BIOS inicjuje kilkakrotną próbę zapisu/odczytu. Brak sukcesu oznacza koniecz­


ność powtórnej kalibracji (rozpoczynającej się od najazdu na ścieżkę zerową;
standardowo próba taka wykonywana jest 8 razy).

Szczególnie podatne na błędy są oczywiście operacje, podczas których głowice prze­


mierzają duże odległości np. ze ścieżki 0 na 79. Wszystkie niedokładności mechanizmu
mogą się wtedy nawarstwiać.

Aby zmniejszyć ryzyko błędów pozycjonowania, wprowadzono trzy parametry, które


w pewnym stopniu odzwierciedlają rzeczywiste właściwości mechaniczne napędu.
Kontroler uwzględnia te dane wprowadzając do pracy swoich układów wykonawczych
trzy opóźnienia:
Tl czas opóźnienia opuszczenia głowic - uwzględnia on czas
wygaśnięcia drgań głowic po zakończeniu procesu
pozycjonowania, a przed opuszczeniem ich na powierzchnię
dyskietki;
T2 czas opóźnienia podnoszenia głowic - jego wprowadzenie ułatwia
czytanie całej ścieżki przy realizacji grup rozkazów odwołujących
się do kolejnych sektorów;
T3 okres impulsów silnika krokowego - uwzględnia bezwładność
i czas martwy zespołu silnik-wózek głowic. Zmniejszenie tej
wartości powoduje wprawdzie szybszy dostęp do danych, ale
niesie w sobie niebezpieczeństwo „połykania” impulsów przez
silnik i błędów pozycjonowania.

Powyższe parametry czasowe oraz informacje o wykorzystaniu kanału DMA przekazy­


wane są kontrolerowi rozkazem STOD (Set Type o f Disk ). Na rozkaz ten składają się
trzy bajty, przesyłane, tak jak przy wszystkich innych rozkazach, przez port danych
(3F7h ewentualnie 377h), naturalnie z zachowaniem każdorazowej kontroli bitu 7 re­
jestru stanu (ustawienie tego bitu przez kontroler świadczy o gotowości portu danych).

Rozkaz STOD
Bajt 1:

0 0 0 0 0 0 1 1

bity 7 -0 liczba 03h - sygnatura rozkazu.


a

Bajt 2:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7^4 czas T3 [ms], kodowany w zależności od prędkości transmisji:


Kontroler napędu dysków elastycznych 261

1 Mbit/s 500 kbit/s 300 kbit/s 250 kbit/s


OOh 8.0 16 26.7 32
Olh 7.5 15 25.0 30
•ł ł •#■ ■ ** *••
OFh 0.5 1 1.7 2

bity 3-0 zas T2 [ms], kodowany w zależności od prędkości transmisj

1 Mbit/s 500 kbit/s 300 kbit/s 250 kbit/s


OOh 128 256 426 512
Olh 8 16 26.7 32
02h 16 32 53.5 64
»** #*# ** M m m • ■m m

OEh 112 224 373 448


OFh 120 240 400 480

Bajt 3:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7—1 czas Tl [ms], kodowany w zależności od prędkości transmisji

1 Mbit/s 500 kbit/s 300 kbit/s 250 kb


OOh 128 256 426 512
Olh 1 2 3.3 4
02h 2 4 6.7 8
f•• **# ••i •**
7Eh 126 252 420 504
7Fh 127 254 423 508

bit 0 1 = transmisja kanałem DMA,


0 = transmisja bez udziału kanału DMA.

Zastosowanie kodów CRC


Nieuniknione niedoskonałości wykonania elementów mechanicznych napędu oraz wady
samego nośnika magnetycznego mogą, mimo prób ich wyeliminowania, powodować
przekłamania utrwalanej informacji. Przyjrzyjmy się więc przez chwilę kontroli po­
prawności zapisanych danych.
262 Anatomia PC

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).

Budowa kodu CRC


Rozpatrzmy klasyczne dzielenie dwóch liczb całkowitych. Bez względu na podstawę
systemu (dziesiętny, binarny czy inny) obowiązuje zasada:
dzielna : dzielnik = iloraz + reszta

Przypomnijmy sobie znany ze szkoły podstawowej algorytm wykonywania takiego


dzielenia. Należy ustalić, ile razy mieści się dzielnik w lewostronnej części dzielnej.
Wynik ten jest pierwszą cyfrą ilorazu. Cyfrę tę mnożymy przez dzielnik i uzyskaną
sumę częściową odejmujemy od wspomnianego lewostronnego fragmentu dzielnej. Do
wyniku odejmowania dopisywana jest kolejna cyfra dzielnej i proces powtarza się.

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

101000100 : 10011 = 10001


10011

000010
00000
00101
00000
01010
00000
10100
10011

00001 <r~ reszta


Kontroler napędu dysków elastycznych 263

Do realizacji powtarzających się w tym algorytmie operacji odejmowania używamy


oczywiście zwykłej arytmetyki binarnej, tj. uwzględniamy przeniesienia na sąsiednie
pozycje podczas odejmowania liczby większej od mniejszej. Komplikuje to w istotny
sposób obliczenia, gdyż wynik na danej pozycji bitowej zależy również od pozycji
poprzedniej. Nie jest tak natomiast w tzw. arytmetyce modulo 2. Zastosujmy operację
bitowej różnicy symetrycznej (XOR). Oto tablica prawdy dla tej operacji.

X y x XOR y
0 0 0
0 i 1
1 0 1
1 1 0

Tak zdefiniowane dodawanie i odejmowanie daje ponadto te same wyniki.

Wróćmy do naszego przykładu, zastępując klasyczne odejmowanie nowo zdefiniowa­


nym działaniem.

10X000100 : 10011 = 10111


10011

001110
000000

11101
10011

011100
10011

011110
10011

01101 <— reszta

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.

Intuicyjnie można przewidzieć, że zdolność do wykrywania błędów przez kod CRC


zależy od długości generatora. Dokładna analiza matematyczna, która traktuje powyższe
zagadnienia jako element algebry wielomianów, pozwala wyznaczyć szczególnie opty­
malne generatory. Dla celów zabezpieczenia informacji na nośniku magnetycznym sto­
suje się 17-bitowy generator o postaci 10001000000100001, który produkuje 16-bitową
resztę. Taki kod CRC (nazywany kodem CCITT) pozwala rozpoznać pojedynczy błęd­
ny bit w ciągach dowolnej długości. Można w tym momencie powiedzieć, że to samo
potrafi bit kontroli parzystości. Kod CRC może jednak dużo więcej. Rozpoznaje on
w 100% błędy dowolnej pary sąsiadujących bitów. Przekłamania w szeregu bitów
o długości do 16 pozycji wykrywane są w 100%, a przekłamania w ciągu o dowolnej
długości w 99.9984%.

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.

Z logicznego punktu widzenia kontroler dysku twardego wymienia dane z magistralą


systemową komputera PC tak samo, jak każde inne urządzenie. Procesor wysyła do od­
powiednich rejestrów sterujących dane i rozkazy, a pozostający w kontakcie z dyskiem
266 Anatomia PC

kontroler odpowiada danymi i informacjami dodatkowymi. Sam kontroler składa się


z mikroprocesora otoczonego niezbędnymi układami dodatkowymi, jak pamięci RAM
i ROM, dekodery adresów i specjalistyczne układy obróbki danych.

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.

Spróbujmy prześledzić działanie kontrolera w trakcie realizacji operacji odczytu sektora


dysku.

• Procesor przekazuje kontrolerowi grupę bajtów zawierającą rozkaz odczytu wraz


z niezbędnymi parametrami lokalizującymi żądany sektor.
• Po rozpoznaniu rozkazu mikroprocesor kontrolera przechodzi do wykonywania
odpowiadającego mu fragmentu programu zapisanego w jego pamięci stałej.
• Ze strumienia danych napływających z głowic wyławiane są metryki adresowe
(ID). Pozwala to na określenie aktualnego położenia głowic. Na tej podstawie
obliczana jest liczba impulsów sterujących, które należy przesłać do silnika kro­
kowego ramienia głowic, by znalazły się one nad żądaną ścieżką.

• Jeżeli założymy, że poprzednia operacja została przeprowadzona bezbłędnie (co


nie zawsze musi mieć miejsce), rozpoczyna się oczekiwanie na pojawienie się w
strumieniu danych ścieżki metryki adresowej poszukiwanego sektora.

• W zależności od stosowanego systemu zapisu magnetycznego (MFM, RLE),


dane podlegają różnym przekształceniom do form pośrednich (np. NRZ). W koń­
cowej fazie odseparowany blok danych kontrolowany jest przez system ECC.
Kod ECC spełnia podobną rolę do opisanych w poprzednim rozdziale sum kon­
trolnych CRC. Główna różnica polega na stopniu komplikacji generatora (wielo­
mianu) kodu. Dyski twarde systemu ST412 stosują najczęściej generator 32
stopnia postaci 100010100000010100000010001000110. Wielomian taki produ­
kuje 4-bajtowe kody ECC mające zdolność nie tylko do wykrywania, ale również
- co dużo bardziej interesujące - korekcji błędów. Korygowane mogą być nie
tylko pojedyncze błędy, lecz również błędne ciągi o długości nie przekraczającej
11 bitów.
• Odczytane, sprawdzone i ewentualnie poprawione dane lokowane są w buforze
sektora i mogą być przekazane do pamięci operacyjnej. Kontroler komputera
PC/XT posługuje się kanałem 3 DMA, natomiast modele AT korzystają z przer­
wań. Po odczytaniu sektora kontroler modelu AT wyzwala przerwanie na linii
IRQ 14, Procedura obsługi tego przerwania rozpoczyna, wykorzystując rozkaz
in, żmudną operację przenoszenia krok po kroku wszystkich 512 (a czasem 516,
tj. dane wraz z ECC) bajtów z portu danych kontrolera do pamięci operacyjnej.
Obsługa dysku twardego 267

Systemy kodowania MFM i RLL


Z poprzedniego rozdziału, poświęconego dyskom elastycznym, pamiętamy, że sama
zmiana systemu kodowania danych z FM na MFM przyniosła znaczne zwiększenie
upakowania danych przy tej samej gęstości zapisu magnetycznego. Nic więc dziwnego,
że poszukiwane były nadal metody pozwalające na jeszcze większy wzrost pojemności
tego samego nośnika wyłącznie kosztem komplikacji towarzyszącej mu elektroniki.
Jednym z takich nowych systemów, któremu udało się ugruntować swoją pozycję, jest
standard RLL (ang. Run Length Limited ).

Powróćmy na chwilę do metody MFM. Punktem wyjścia do naszych rozważań będzie


przykładowy bajt danych o wartości 00101110, reprezentowany przez przebieg (1) na
rysunku 6.1.

Rysunek 6:1. BAJT D A N Y C H


Sposób zapisu 1 0 0 1 0 1 1 1 0 0
informacji na
dysku twardym
w standardzie
MFM i RLL ZEGAR
MFM
Z D D D D Z
DANE
MFM

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

Istota kodowania RLL polega na całkowitej rezygnacji ze składowej Z. Układy logiczne


dekodera muszą wtedy obliczać, na podstawie odległości dzielących kolejne impulsy,
liczbę zer przypadających między nimi. System taki może poprawnie funkcjonować
w warunkach rzeczywistych (uwzględniając fluktuacje prędkości obrotowej) jedynie
w pewnych granicach, tzn. gdy liczba następujących po sobie zer strumienia danych nie
jest zbyt duża. Trudno wymagać od zapisywanych danych, by miały określony skład,
a w szczególności by nie zawierały zbyt wielu zer. Można natomiast tak je zakodować,
by spełniały narzucone warunki.

W najbardziej rozpowszechnionym wariancie systemu RLL liczba zer zawiera się


w przedziale od 2 do 7. Stąd wywodzi się też nazwa systemu —RLL(2,7). Wejściowy
strumień danych poddawany jest więc wstępnie takiemu przekodowaniu, które gwaran­
tuje spełnienie tego wymogu.

Proces ten używa następującej tablicy przekodowań:

Tabela 6.f.
Tablica przekodowań systemu RLL(2,7)

Dane wejściowe Dane wyjściowe


000 000100
10 0100
010 100100
0010 00100100
11 1000
011 001000
0011 00001000

Czytelnik zechce sprawdzić, że przedstawiona tablica istotnie spełnia założenia syste­


mu. Dowolne kojarzenie łańcuchów wyjściowych nie może dać ciągu zawierającego
więcej niż 7 lub mniej niż 2 następujące po sobie zera.

Nasz przykładowy bajt danych 00101110 zostaje rozłożony na elementy (0010)+(11)+


(10), a tym z kolei przyporządkowuje się odpowiednie łańcuchy z prawej kolumny
tablicy. Otrzymujemy ciąg 0010010010000100, reprezentowany na rysunku 6.1 przez
przebieg (5). Na nośniku magnetycznym utrwalone zostaną (7) jedynie cztery ustawione
bity tego ciągu, co wywoła namagnesowanie powierzchni zgodnie z przebiegiem (8).

Nietrudno zauważyć, że stosowana tablica kodowa wydłuża ciąg wejściowy o 100%.


Dokładna analiza matematyczna systemu RLL(2,7) dowodzi, że opisane powyżej pomi­
janie składowej Z prowadzi średnio do trzykrotnej redukcji liczby przemagnesowań
nośnika. Efektywna przewaga RLL(2,7) nad MFM wyraża się więc współczynnikiem
1.5. Te dodatkowe 50% jest zyskiem, który owocuje wzrostem pojemności dysku bez
konieczności poprawy parametrów głowic lub warstwy magnetycznej. Ponieważ jednak
nic nie ma za darmo, płaconą za to ceną jest znaczna komplikacja układów kontrolera.
Obsługa dysku twardego 269

Stosunkowo rzadko spotykane są pokrewne warianty systemu RLL(2,7) ukrywające się


pod wspólną nazwą ARLL (Advanced RLL). Do grupy tej należą przykładowo systemy
RLL(1,7) i RLL(3,9). Pozwalają one na blisko 90% (jedna zmiana namagnesowania
koduje średnio 2 bity danych!) wzrost wydajności w stosunku do metody MFM, ale
nakładają dużo ostrzejsze wymagania na precyzję wykonania mechaniki napędu oraz
stabilną pracę układów elektronicznych kontrolera.

Fizyczna organizacja danych


i formatowanie
Fizyczna organizacja danych zapisanych na ścieżce dysku twardego jest analogiczna jak
dla dyskietki. Główna różnica polega na tym, że w obudowie dysku znajduje się nie
jeden, lecz kilka talerzy powleczonych warstwą nośnika magnetycznego i obsługiwa­
nych przez odpowiednie zespoły głowic, poruszane jednym mechanizmem. Z tego też
względu w przypadku dysków twardych nie mówi się o pojedynczych ścieżkach, lecz
tzw. cylindrach, w skład których wchodzą ścieżki o tym samym numerze położone na
kolejnych talerzach pakietu. Logika podziału ścieżek na sektory została oczywiście
zachowana. Dodatkowo, ponieważ prędkość obrotowa dysku twardego jest znacznie
większa niż dyskietki (od 3 do 5 tysięcy obrotów na minutę), ilość informacji odczyty­
wanych przez głowice może przekroczyć przepustowość kontrolera (miało to miejsce
głównie dla starszych kontrolerów MFM). Z tego względu odczyt danych z dysku
realizowany jest z tzw. przeplotem (ang. interleave), który polega na niesekwencyjnym
odczycie kolejnych sektorów.

Rysunek 6.2.
Idea przeplotu
270 Anatomia PC

Ważnym parametrem charakteryzującym zespół dysk-kontroler jest tzw. współczynnik


przeplotu (interleave factor , ILV) określający, co który sektor jest odczytywany podczas
obrotu dysku. Przykładowo, dla współczynnika przeplotu równego 1:3 (patrz rysunek
6.2) odczytywane są sektory 1, 4, 7,..., 2, 5, 8,... itd. Technika ta daje kontrolerowi czas
na przetworzenie odczytanego sektora, ale jednocześnie znacznie spowalnia proces
odczytywania informacji. Z tego też względu dla starszych kontrolerów MFM bardzo
istotne było dobranie właściwego współczynnika przeplotu, objawiające się na zewnątrz
osiągnięciem maksymalnej przepustowości zespołu dysk-kontroler. Obecnie stosowane
kontrolery (głównie IDE) są na tyle szybkie, że pozwalają na pracę z przeplotem 1:1, tj.
odczytują sektory po kolei.

Formatowanie wysokiego poziomu


Tzw. formatowania wysokiego poziomu (ang. high level format) dokonuje wchodzący
w skład systemu operacyjnego MS-DOS program format.com.

W przeciwieństwie do dyskietek, polecenie format odnoszące się do dysku twardego nie


nanosi na jego powierzchnię ścieżek ani sektorów. Program format.com buduje jedynie
logiczną strukturę partycji. Partycją nazywamy wyodrębniony logicznie obszar dysku
twardego, na który składa się pewna liczba przyległych do siebie cylindrów. Obszar taki
może być administrowany tak, jak oddzielny, logiczny napęd dyskowy. Każdy taki
napęd logiczny (w systemie DOS identyfikowany literą - C, D, E itd.) należy poddać
właśnie operacji formatowania wysokiego poziomu, w trakcie którego program format
zapisuje w obszarze partycji sektor ładujący {boot sector ), tablicę alokacji (FAT) i kata­
log główny. Wszystkie pozycje tablicy FAT inicjalizowane są wartością zero, co ozna­
cza, że cała partycja jest wolna.

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.

1 System przechowuje w partycji dwie kopie tablicy FAT, co pozwala na wykrywanie


ewentualnych błędów alokacji, nie umożliwia natomiast odzyskania danych po formatowaniu
wysokiego poziomu. Do utworzenia kopii bezpieczeństwa obszaru zawierające dane
systemowe (FAT, sektor ładujący, katalog główny) należy użyć specjalnego programu, na
przykład mirror.com lub Norton DiskTool.
Obsługa dysku twardego 271

Formatowanie niskiego poziomu


Operacja nanoszenia na powierzchnię dysku ścieżek, sektorów i wszystkich innych pól
dodatkowych nazywana jest formatowaniem niskiego poziomu (ang. low level form at ),
inicjalizacją lub preformatowaniem. Zdecydowana większość produkowanych obecnie
napędów poddawana jest tej operacji jeszcze u producenta i nie należy jej powtarzać.
Kategoryczny zakaz formatowania niskiego poziomu obowiązuje w stosunku do dysków
IDE (AT-BUS), których kontrolery, zgodne na poziomie rejestrów z systemem ST412/
506 bardzo łatwo się tej operacji poddają. Przy dużej dozie szczęścia tak „potrakto­
wany” dysk będzie jeszcze funkcjonował, często pozornie bezbłędnie. Jeżeli przy okazji
formatowania niskiego poziomu została zniszczona jedna z tablic odwzorowania uszko­
dzonych sektorów (ang. bad sector mapping), wcześniej czy później da to o sobie znać.
Najczęściej jednak dostępu do takiego dysku odmawia nawet program fdisk. Z góry
skazane na niepowodzenie są również próby „poprawy” współczynnika przeplotu (ang.
interleave), bowiem bez względu na to, co meldują programy diagnostyczne (a są na
nieszczęście i takie, które dla dysków AT-BUS nie odmawiają działania), współczynnik
przeplotu dysków IDE z reguły wynosi 1:1.

Przyjmijmy więc, że struktura ścieżek i sektorów znajduje się już na dysku, a my


możemy się jej co najwyżej przyjrzeć. Na rysunku 6.3 przedstawiona jest budowa
jednej ścieżki dysku twardego systemu ST412/506. W zależności od systemu kodo­
wania (MFM lub RLL) zmieniają się zawartości niektórych pól, ale ich ogólny układ
pozostaje ten sam.

Rysunek 6.3. Ścieżka


Organizacja
BOT S e k to r 1 S e k to r 2 S e k to r n EO T
danych na
ścieżce dysku Znacznik początku ścieżki (E¡OT)
twardego
s D1 Z1

Sektor
D2
S D3 ID ECC-1 Z2 S D4 DANE ECC-2 Z3

Znacznik końca ścieżki (EOT)

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

Pole System MFM System RLL


S (BOT) 10 bajtów o wartości OOh 11 bajtów o wartości OOh
Dl AlFCh AlFCh
Zł 11 bajtów o wartości 4Eh 12 bajtów o wartości FFh
D2 7 bajtów o wartości 4Eh
S 10 bajtów o wartości OOh 10 bajtów o wartości OOh
D3 AlFEh 5EAlh
ID C:G:N:Z C:G:N:Z
ECC-1 4 bajty kodu ECC 4 bajty kodu ECC
Z2 5 bajtów o wartości OOh 5 bajtów o wartości OOh
S 10 bajtów o wartości OOh 11 bajtów o wartości OOh
D4 AlF8h 5EAlh
Dane 512 bajtów 512 bajtów
ECC-2 4 bajty kodu ECC 4 bajty kodu ECC
Z3 15 bajtów o wartości OOh 3 bajty o wartości OOh + 17 bajtów o
wartości FFh
Z4 ok. 56 bajtów o wartości OOh ok. 93 bajty o wartości OOh
Symbol C:G:N:Z oznacza zakodowaną w polu ID metrykę adresową sektora w postaci
numer cylindra-numer głowicy-numer sektora-znacznik sektora.

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

Dyski twarde, przechodząc kolejne etapy produkcji, poddawane są długotrwałym pró­


bom mającym na celu wykrycie wszystkich takich miejsc na powierzchni. Dla każdego
dysku sporządzana jest lista błędów, której pozycje, określające jednoznacznie uszko­
dzone sektory, definiują dla każdego z nich numer cylindra, głowicy i sektora. Lista
taka dołączana jest często do napędu w formie oddzielnego arkusza lub naklejki na obu­
dowie. Nawet gdy liczba pozycji na niej przekracza kilkadziesiąt, nie stanowi to powo­
du do rozpaczy, gdyż jest to „ryzyko wkalkulowane”, a problem rozwiązywany jest
elegancko przez tzw. system odwzorowania uszkodzonych sektorów (ang. bad sector
mapping).
Obsługa dysku twardego 273

Uważny Czytelnik zwrócił zapewne uwagę, że czterobajtowe pole ID metryki adreso­


wej sektora dysku twardego (zobacz rysunek 6.3) ma nieco inną budowę niż jego
dyskietkowy odpowiednik (porównaj rysunek 5.2). Główna różnica tkwi w ostatnim
bajcie, który w przypadku dysku twardego nie podaje wielkości sektora, lecz stanowi
jego tzw. znacznik.

Postać znacznika sektora Z (bajt 4 metryki adresowej ID):

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

Objaśnienia odnoszą się do sytuacji, w której dany bit jest ustawiony.


bity 7-4 zarezerwowane;
bit 3 oznacza ścieżkę zastępczą;
bit 2 metryka adresowa wskazuje na ścieżkę zastępczą;
bit 1 ścieżka uszkodzona bez przydziału ścieżki zastępczej;
bitO sektor uszkodzony.

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.

Mechanizm odwzorowania uszkodzonych sektorów opiera się na dwóch tablicach prze­


chowywanych na dysku. Pierwszą z nich jest lista błędów wykrytych podczas testo­
wania powierzchni magnetycznej jeszcze u producenta. Umieszczona jest ona zwykle
na ścieżce zerowej i może zawierać maksymalnie 101 pozycji. Poszczególne pozycje
lokalizują uszkodzone miejsce przez podanie numeru cylindra, głowicy i liczby bajtów
zawartych między znacznikiem D3 na początku ścieżki a miejscem uszkodzenia. Drugą
listę tworzy sam kontroler dysku podczas operacji formatowania (automatycznie lub na
życzenie wyrażone odpowiednim rozkazem - aktualizacja listy). Lista ta nosi nazwę
listy znanych błędów (ang. Grown Error List). Pozycje na tej liście, w przeciwieństwie
do listy błędów ustalonej przez producenta, oznaczają uszkodzone miejsca poprzez
podanie sekwencji cylinder-głowica-numer sektora.

W oparciu o przedstawione listy kontroler ma możliwość optymalnego zagospodaro­


wania powierzchni dysku. Niesprawne sektory i ścieżki są logicznie przesuwane lub
zastępowane innymi tak, że dysk „na zewnątrz” prezentuje się nienagannie mimo wielu
uszkodzeń. Zjawiska tego nie należy traktować jako wady dysku. Jeżeli dana ścieżka
posiada tylko jeden zły sektor, kontroler może w trakcie operacji formatowania tak
przesunąć wszystkie sektory, że uszkodzenie trafi w niewykorzystywaną część ścieżki.
Operacja ta określana jest często mianem sector-slipping', jeśli może być przeprowadzo­
na, nie powstaje ubytek pojemności dysku. Wykluczenie uszkodzonego sektora przez
274 Anatomia PC

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

Z kolei w znacznikach sektorów ścieżki rezerwowej ustawiony zostaje bit 3. Ścieżka


taka, adresowana swymi własnymi parametrami, przestaje być dostępna dla normalnych
operacji. Każda próba dostępu do sektorów uszkodzonej ścieżki kierowana jest przez
kontroler do ścieżki rezerwowej. Praktycznie oznacza to dodatkowy manewr najazdu
(pozycjonowania) głowic.

Przydział ścieżki zapasowej powoduje wprawdzie zmniejszenie pojemności dysku, ale


pozostawienie uszkodzonej ścieżki bez przydzielenia „zastępstwa” jest jeszcze gorsze,
oznacza bowiem przerwanie ciągłości w przestrzeni adresowej sektorów. Zarządzanie
takim obszarem jest dla kontrolera zadaniem dużo trudniejszym i sprawność dysku
obniża się. Na szczęście obecny poziom technologii pozwala na minimalizację liczby
uszkodzeń powierzchni dysków do tego stopnia, że na skorygowanie wszystkich błę­
dów pozwala w zasadzie sama technika sector-slipping.

Kontrolery realizujące opisany powyżej mechanizm odwzorowania uszkodzonych sek­


torów rezerwują zwykle dla swoich celów pierwszy cylinder fizyczny dysku i przydzie­
lają mu numer ujemny (-1). Daje to gwarancję, że dostęp do tego cylindra może mieć
wyłącznie sam kontroler, żaden rozkaz nie może bowiem zaadresować sektora położo­
nego na ujemnym cylindrze. W tak zabezpieczonych sektorach kontroler przechowuje
wykorzystywane listy błędów oraz dokładny opis rzeczywistej geometrii dysku (dla
bezpieczeństwa - w kilku kopiach).

Oprócz uszkodzeń powierzchni w dobrze znanych kontrolerowi miejscach występują


sporadycznie również inne problemy. Na skutek niezmiernie wysokiej gęstości zapisu
danych na dyskach twardych pojawiać się mogą często błędy pozycjonowania lub
odczytu. Istnieje kilka znanych źródeł tego rodzaju błędów.

Najbardziej drastycznym przykładem jest zetknięcie się głowic z powierzchnią magne­


tyczną (ang. head crush). W normalnych warunkach pracy głowice utrzymywane są
w odległości około 0.0003 mm od powierzchni nośnika. Dla porównania, średnica wło­
sa ludzkiego wynosi w przybliżeniu 0.01 mm, a więc 30 razy więcej! Mikroskopijnej
wielkości drobiny pyłów lub też raptowny wstrząs mogą więc łatwo doprowadzić do
kolizji, w wyniku której zniszczony zostanie fragment powierzchni magnetycznej (jeśli
nie sama głowica).
Obsługa dysku twardego 275

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.

W początkowej fazie powstawania takich błędów procedury korekcji są w stanie jeszcze


je wyeliminować, ale pewnego (niekoniecznie pięknego) dnia sektor przestaje być
czytelny. Istnieją oczywiście specjalne programy rozpoznające takie słabe punkty dysku
i odświeżające zawartość zagrożonych sektorów.

Najczęstszym źródłem błędów są oczywiście niedokładności pozycjonowania głowic


nad żądaną ścieżką, szczególnie często spotykane wśród dysków wyposażonych w me­
chanizm przesuwu sterowany silnikiem krokowym. Realizując dostęp do określonego
sektora kontroler musi ustawić głowice nad cylindrem, do którego przynależy ścieżka
zawierająca ten sektor. Liczba niezbędnych kroków mechanizmu przesuwu obliczana
jest na podstawie odległości żądanego cylindra od pozycji bieżącej. Jeżeli zapis w polu
ID dowolnego sektora po osiągnięciu celu wskazuje mimo wszystko na inny cylinder,
mamy do czynienia właśnie z błędem pozycjonowania. Ewentualny błąd w polu danych
sektora wykrywany jest natychmiast dzięki obecności kodów ECC. Nie oznacza to
jednak, że kontroler od razu daje za wygraną. W zależności od szczegółowych roz­
wiązań zawartych w pamięci stałej mikroprocesora kontrolera możliwych jest ponad 30
różnych prób odczytu, zanim systemowi operacyjnemu przekazany zostanie meldunek
o niemożności dostępu do sektora.

Ogólny algorytm postępowania wygląda zwykle następująco:


• krok pierwszy: podejmowana jest ośmiokrotnie próba odczytu sektora bez
korzystania z korekcyjnych właściwości kodu ECC. Ta prosta strategia może być
uwieńczona sukcesem, jeżeli przyczyną błędu było chwilowe rozsynchronizowa-
nie spowodowane zachwianiem prędkości obrotowej dysku;
• krok drugi: następuje wymuszenie przejazdu głowicy nad powierzchnią dysku;
składają się nań polecenia powrotu nad ścieżkę zerową, a stamtąd na koniec ob­
szaru danych i ponownie do punktu wyjścia. Manewr taki likwiduje ewentualne
przesunięcie fazy mechanizmu pozycjonowania, który nie lokuje głowic w środ­
kowej części ścieżek, lecz na ich krawędzi, gdzie odczytywany sygnał może być
zbyt słaby;
• krok trzeci: podejmowana jest próba odczytu sektora z wykorzystaniem samo-
korygujących właściwości kodu ECC;
• krok czwarty: kontroler wykonuje próby odczytu sektora z celowo wprowadzo­
nym przesunięciem fazy danych i zegara. Kontroler sprawdza kolejno następują­
ce przesunięcia: +1,5%, +6%, +7,5%, -1,5%, -6%, -7,5%. Tego typu postępo­
wanie likwiduje ewentualne przesunięcia bitów powstałe na skutek braku tzw.
prekompensacji przy zapisie;
• krok piąty: mechanizm pozycjonowania głowic przechodzi do pracy w trybie mi-
krokrokowym. Kontroler realizuje osiem kolejnych prób odczytu, podczas
których głowice przesuwane są kolejno o jeden mikrokrok w poprzek szerokości
276 Anatomia PC

ś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.

Kontrolery dysków realizujące technikę odwzorowania uszkodzonych sektorów kierują


się często swoimi własnymi regułami i może się zdarzyć, że po kolejnej nieudanej
próbie najazdu ścieżka zostanie oznaczona jako zła. Przydział ścieżki zastępczej odby­
wa się wówczas w opisany wcześniej sposób.

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).

IDE jest skrótem od angielskiego Intelligent Drive Electronics co ma podkreślać, że


napędy dysków jako takie zdolne są do samodzielnych (inteligentnych) działań (spoty­
kane jest również tłumaczenie tego skrótu jako Integrated Device Electronics,
oznaczające zintegrowanie układów kontrolera i mechanizmów napędu w jednej obudo­
wie). Elektronika montowana w dyskach dotychczasowych standardów miała za zada­
nie wyłącznie sterowanie pracą części ruchomych i obróbkę sygnału zapisu-odczytu
głowic magnetycznych. Stąd jeszcze daleka droga do przykładowego odczytania okreś­
lonego sektora. Czynności pozycjonowania głowic nad określoną ścieżką, odszukania
metryki sektora, żdekodowania sygnału, oddzielenia danych od zegara i wreszcie prze­
słanie bloku danych do pamięci (że przemilczę całą strategię kontroli i korekcji błędów)
wykonywał układ kontrolera dysku twardego umieszczany na oddzielnej karcie.
Konieczność przesyłania przewodem łączącym kontroler-dysk również zakodowanych
danych zwiększała podatność na zakłócenia i ograniczała prędkość transmisji.

Stale powstające nowe modele dysków o różnorodnych geometriach (ilość głowic,


cylindrów, sektorów itd.) nie mogły być jednocześnie obsługiwane przez ten sam
w gruncie rzeczy kontroler. Drastyczny spadek cen układów elektronicznych do prowa-
Obsługa dysku twardego 277

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.

Przy podejmowaniu decyzji o zakupie określonego modelu dysku twardego i przepro­


wadzaniu kalkulacji nie wolno zapominać o niebagatelnej sumie, którą należy prze­
znaczyć na kontroler SCSI. W przypadku dysku AT-BUS koszty „kontrolera” można
pominąć (mianem „kontrolera” dysku IDE określa się potocznie układ opisanego dalej
host adaptera).

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.

Logiczny opis złącza


\

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.

Dysk IDE komunikuje się z szynami systemowymi za pośrednictwem Host-Adaptera.


Jest to prosty zestaw bramek logicznych realizujących jedynie funkcje dekodowania
adresu i buforowania sygnałów szyn. Rysunek 6.4. przedstawia wykorzystanie sygna­
łów szyn systemowych do sterowania dysku AT-BUS.

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

Rysunek 6.5. Magistrala zewn. PC


Połączenie (gniazda rozszerzeń)
dysków IDE
zHost
Adapterem
Dyski twarde

Master Slave

Złącze fizyczne - Host Adapter


Połączenie Host Adapter z dyskiem twardym (dyskami) odbywa się 40-żyłowym płas­
kim przewodem (wyjątek od reguły stanowią 2,5" i 1,8" dyski stosowane w przenoś­
nych komputerach, które są połączone przewodem 50-żyłowym). Położenie poszcze­
gólnych linii w złączu zostało pokazane na rysunku 6,6, a ich znaczenie przedstawia
tabela 6.3.
Obsługa dysku twardego 279

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

Nr linii Sygnał IDE Znaczen ie Sygn ał m agis trał i zewn.


1 Reset Sprowadzenie do stanu początkowego RESET DRV
2 GND Masa
3 DD07 Dwukierunkowa linia danych, bit 7 SD7
4 DD08 Dwukierunkowa linia danych, bit 8 SD8
5 DD06 Dwukierunkowa linia danych, bit 6 SD6
6 DD09 Dwukierunkowa linia danych, bit 9 SD9
7 DD05 Dwukierunkowa linia danych, bit 5 SD5
8 DD10 Dwukierunkowa linia danych, bit 10 SD10
9 DD04 Dwukierunkowa linia danych, bit 4 SD4
10 DD11 Dwukierunkowa linia danych, bit 11 SD11
11 DD03 Dwukierunkowa linia danych, bit 3 SD3
12 DD12 Dwukierunkowa linia danych, bit 12 SD12
13 DD02 Dwukierunkowa linia danych, bit 2 SD2
14 DD13 Dwukierunkowa linia danych, bit 13 SD 13
15 DD01 Dwukierunkowa linia danych, bit 1 SD1
16 DD14 Dwukierunkowa linia danych, bit 14 SD14
17 DD00 Dwukierunkowa linia danych, bit 0 SDO
280 Anatomia PC

Tabela 6.3. (ciąg dalszy)


Znaczenie linii w złączu dysk-host adapter

Nr linii Sygnał IDE Znaczenie Sygnał magistrali zewn.


18 DD15 Dwukierunkowa linia danych, bit 15 SD 15
19 GND M asa
20 X Znacznik blokady wtyku
2ł(*) DMARQ Żądanie obsługi DMA DRQn
22 GND Masa
23 DIOW Zapis do wej/wyj IOW
24 GND Masa
25 DIOR Odczyt z wej/wyj IOR
26 GND Masa
27(*) IORDY Zakończono dostęp do wej/wyj IO CH RDY
28 SPSYNC Synchonizacja obrotów dysków
29(*) DMACK Potwierdzenie przydziału kanału DMA DACKn
30 GND Masa
31 INTRQ Żądanie przerwania IRQn
32 IOCS16 Możliwość dostępu 16-b. do wej/wyj I/O CS 16
55
33 DA1 Linia adresowa „1 SA1
34 PDIAG Połączenie z napędem Slave
55
35 DAO Linia adresowa „0 SAO
36 DA2 Linia adresowa „2” SA2
37 CSIFx Wybór bazy rejestrów lfOh
38 CS3Fx Wybór bazy rejestrów 3f0h
39 DASP Połączenie z napędem Slave
40 GND Masa
41 +5V (logie) Zasilanie układów logicznych
42 +5V (motor) Zasilanie silnika
43 GND Masa
44
A M/S Master/Slave jumper
B M/S Master/Slave jumper
C M/S Master/Slave jumper
D M/S Master/Slave jumper
(*) Sygnały opcjonalne
Różnica pomiędzy złączem 40- a 50-żyłowym sprowadza się do tego, że przez dodatkowe
styki 41,42 i 43 przekazywane jest zasilanie. Z kolei styki A, B, C i D są wykorzystywane
jako przełączniki Master/Slave. _________

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

Host-Adapter wytwarza 5 sygnałów, które nie mają swoich odpowiedników w szynie


systemowej:

• CSlFx: sygnał selekcji grupy rejestrów o adresie bazowym lfDh;


• CS3Fx: sygnał selekcji grupy rejestrów o adresie bazowym 3f0h;

• SPSYNC: synchronizacja prędkości obrotowej dysków Master i Slave. Synchro­


nizacja taka jest niezbędna w specjalnych trybach pracy połączonych dysków np.
mirroring, tj. dokładne (lustrzane) dublowanie każdej operacji dyskowej - mirro­
ring wykorzystywany jest w serwerach sieci lokalnych dla zwiększenia pewności
ochrony danych. Wiele napędów nie korzysta z tego trybu i końcówka SPSYNC
pozostaje niepodłączona. W niektórych typach napędów końcówka 28 nosi naz­
wę „Cable Select” i służy do selekcji jednostek Master i Slave;

• 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ą.

Końcówka IORDY połączona jest w nowoczesnych (szybkich) napędach z plusem na­


pięcia zasilania, co wymusza stały wysoki poziom logiczny. W przeciwnym razie
sygnał ten służy sygnalizacji konieczności wprowadzenia przez kontroler szyn opóźnień
(Wait States) w danym cyklu dostępu do przestrzeni wejścia/wyjścia.

Modele XT używały kanału DMA do wymiany danych z dyskiem twardym. Architek­


tura AT stosuje na pozór bardziej archaiczną metodę opartą na pojedynczych operacjach
odczytu portu danych do rejestru (instrukcją in) i stąd przesyłania ich do pamięci
(instrukcją mov). Biorąc pod uwagę szybkość klasycznych układów DMA taktowanych
zegarem 4.77 MHz, metoda ta przynosi lepsze efekty. Nowo produkowane PC-AT
wyposażone są często w kontrolery DMA nowszej generacji, których zastosowanie
może przyspieszyć operacje dyskowe. W ślad za tym podążają producenci dysków
twardych, wyposażając pewne modele w możliwość współpracy z kanałem DMA.
Dyski takie robią użytek z linii DMARQ i DMACK.

Dostęp CPU do dysku AT-BUS


CPU komunikuje się z kontrolerem dysku AT-BUS poprzez obszerny zestaw rejestrów
nazywany wspólnym mianem AT-TASK-FILE. Adresy i znaczenia poszczególnych
rejestrów tej grupy odpowiadają w PC-AT (ale nie w XT!) w pełni systemowi ST412/
506. Jest chyba oczywiste, że całkowicie odmienne systemy SCSI i ESDI posługują się
swoimi własnymi rozwiązaniami.

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

Rejestr grupy A T-TASK-FILE


c s 1Fx CSsFx adr2 ADRj ADR0 Adres I/O
Przy zapisie Przy odczycie
Rejestr danych Rejestr danych
0 1 0 0 0 OxlFO
Data Register Data Register
Rejestr błędów Rejestr prekompensacji
0 1 0 0 1 OxlFl
Error Register Features Register
Rejestr liczby sektorów Rejestr liczby sektorów
0 1 0 1 0 0xlF2
Sector Count Register Sector Count Register
Rejestr numeru sektora Rejestr numeru sektora
0 1 0 1 1 0xlF3
Sector Number Register Sector Number Register
Rejestr numeru cylindra Rejestr numeru cylindra
0 1 1 0 0 LSB LSB 0xlF4
Cylinder Low Register Cylinder Low Register
Rejestr numeru cylindra Rejestr numeru cylindra
0 1 1 0 1 MSB MSB OxlFS
Cylinder High Register Cylinder High Register
Rejestr sektor/ dysk/ Rejestr sektor/dysk/
0 1 1 1 0 głowica głowica 0xlF6
SDH Register SDH Register
Rejestr stanu Rejestr rozkazów
0 1 1 1 1 0xlF7
Status Register Command Register
Zastępczy rejestr stanu Rejestr sterujący
1 0 1 1 0 Altemat. Status Register urządzenia 0x3F6
Device Control Register
Rejestr adresu napędu Nie używany
1 0 1 1 1 0x3F7
Drive Address Register Not Used
Brak działania NOP Brak działania NOP
1 1 X X X
No Operation No Operation
Adres zabroniony Adres zabroniony
0 0 X X X
Invalid Address Invalid Address

Poniżej podany jest krótki opis znaczenia poszczególnych rejestrów grupy.

Rejestr danych (1 FOh)


Jest to 16-bitowy dwukierunkowy port służący wymianie danych między CPU i kontro­
lerem AT-BUS. Należy zwrócić uwagę, że wyzerowany bit 3 rejestru stanu oznacza
chwilowy brak dostępu do portu danych (zarówno do odczytu, jak i do zapisu).

Rejestr błędów (1F1h)


Rejestr ten może być wyłącznie odczytywany, a zawarte w nim dane stanowią infor­
mację o błędzie wykonania ostatniego rozkazu jeżeli ustawiony jest bit 0 rejestru stanu.
W przeciwnym przypadku zawartość rejestru błędu jest nieokreślona.
Obsługa dysku twardego 283

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bitO 1 - nie znaleziono znacznika DAM (Data Address Mark)


pomiędzy metryką ID a polem danych sektora;
bit 1 1 - nie znalezione ścieżki „0” (po rozkazie RECALIBRATE);
bit 2 1 - kontroler zaniechał wykonania rozkazu (np. nieznany kod
rozkazu);
bit 3 równy 0;
bit 4 1 - nie znaleziono metryki ID sektora;
bit 2 równy 0;
bit 1 1 - błąd danych niemożliwy do skorygowania przez kontroler
(mimo zastosowania ECC);
bitO 1 - próba zapisu do sektora oznaczonego jako zły (flaga w polu
ID).
Uwaga:
Znaczenie pozycji bitowych tego rejestru po powrocie z rozkazu EXECUTE DIAGNO­
STIC (oraz tuż po załączeniu napięć zasilających jest odmienne. Rejestr błędu może
wtedy przyjąć następujące wartości:
01: brak błędów,
02: nie używany,
03: uszkodzony bufor pamięci RAM,
04: błąd układu kontrolera magistrali AT-BUS,
05: niesprawność pamięci ROM lub RAM mikrokontrolera,
8X: błąd jednostki dyskowej Slave.

Rejestr prekompensacji (1 F1h)


Rejestr ten istnieje wyłącznie dla utrzymania zgodności AT-TASK-FILE z zestawem
rejestrów sterujących systemu ST412/506. Wszystkie przekazywane do tego rejestru
dane są ignorowane, bowiem kontroler reguluje kompensację we własnym zakresie bez
udziału CPU.

Rejestr liczby sektorów (1F2h)


W rejestrze tym ustawiana jest liczba sektorów, która ma być objęta operacją zapisu,
odczytu lub weryfikacji. W miarę wykonywania operacji, zawartość rejestru jest stale
zmniejszana przez kontroler, tak że zawsze wskazywana jest liczba pozostałych sekto­
rów.
Uwaga 1:
Liczba 0 zapisana do tego rejestru oznacza 256 sektorów.
Uwaga 2:
Znaczenie tego rejestru w rozkazie ustawiania parametrów napędu jest inne.
284 Anatomia PC

Rejestr numeru sektora (1F3h)


CPU zapisuje tu numer pierwszego sektora, którego dotyczy rozkaz. Kontroler aktu­
alizuje tę liczbę w miarę postępów w realizacji rozkazu. Odczyt rejestru dostarcza więc
informacji o ostatnio opracowanym sektorze.

Rejestry numeru cylindra - LSB, MSB (1F4h, 1F5h)


Para rejestrów tworząca 10-bitową liczbę określającą numer cylindra. Wykorzystywane
są wszystkie bity rejestru lf4h oraz dwa najmłodsze bity rejestru lf5h. Reszta bitów
rejestru lf5h jest ignorowana. Dopuszczalne są więc cylindry o numerach z przedziału
0-1023. W rzeczywistości wiele napędów AT-BUS posiada więcej fizycznych cylin­
drów, ale układy kontrolera dokonują tzw. translacji tej liczby do właściwego
przedziału kosztem wyimaginowanej modyfikacji liczby sektorów na ścieżkę i innej niż
faktyczna liczby głowic.

Zawartość tych rejestrów jest modyfikowana przez kontroler zgodnie z aktualnym poło­
żeniem głowic i może być odczytywana przez CPU.

Rejestr napęd/głowica (1F6h)


Rejestr pozwalający określić, do którego z napędów adresowany jest bieżący rozkaz.
Numer głowicy odnosi się do początku wykonywania rozkazu.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit ł bitO

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;
■ • ■

1111= głowica 15.

Rejestr stanu (1F7h)


Rejestr ten może być wyłącznie odczytywany i zawiera informacje o ostatnio wykonanym
rozkazie. Kontroler wpisuje tu dane zaraz po zakończeniu rozkazu lub jeśli wystąpił błąd.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

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

bit 6 1 - sygnał gotowości, dysk osiągnął właściwą prędkość obrotową


(RDY, Ready);
bit 5 1 —nienormalne zachowanie się dysku (np. hazard sygnałów
na złączu IDE);
bit 4 1 - zakończono pozycjonowanie głowic;
bit 3 1 - możliwy dostęp do portu danych, dane gotowe do przekazania
do Host;
bit 2 1 - wystąpił błąd danych (możliwy do skorygowania kodem ECC),
który został skorygowany;
bit 1 1 - głowica czyta właśnie znacznik początku ścieżki (IDX, Index);
trwa to ok. 300 ns;
bit 0 1 - błąd, szczegóły w rejestrze błędów.
Uwaga:
Wszystkie bity tego rejestru z wyjątkiem bitu 7 oraz wszystkie inne rejestry grupy AT-
TASK-FILE zawierają nieokreślone dane jak długo ustawiony jest bit 7 tego rejestru, co
oznacza, że kontroler zajęty jest wykonywaniem rozkazu. W stanie tym wolno jednak
zapisywać rejestr sterujący 3F6h.

Rejestr rozkazów (1F7h)


CPU wpisuje do tego rejestru kod operacji (słowo rozkazowe). Lista standardowych
rozkazów (zgodnych z ST412/506) obejmuje 8 pozycji. Standard IDE definiuje dodat­
kowe rozkazy, np. do obsługi funkcji oszczędnościowych.

Kontroler przechodzi do realizacji polecenia natychmiast po zapisaniu tego rejestru,


więc wszystkie inne parametry (rejestry) muszą być ustawione wcześniej. Tabela 6.5
prezentuje rozkazy systemu IDE wraz z wymaganymi przez nie parametrami.

Tabela 6.5.
Rozkazy systemu IDE

Bity słowa rozkazowego Niezbędne parametry


Nazwa Typ
7 6 5 4 3 2 1 0 FR SCR SNR CYL SDH
NOP 0 0 0 0 0 0 0 0 —
— — m

Recalibrate 0 0 0 1 X X X X — — — —

DRV
sRead Sector PIOR 0 0 1 0 0 0 I_J R — • • • 9

t •

; Write Sector PIOW


A*
0 0 1 1 0 0 L R 9 • 9 9

j Write Verify PIOW 0 0 1 1 1 1 0 0 _ • • m 9

jRead Verify PIOR 0 1 0 0 0 0 0 R • • • 9

\Format Track PIOW 0 1 0 1 0 0 0 0 • — • 9

[Seek 0 1 1 1 X X X X —
m • 9
286 Anatomia PC

Tabela 6.5. (ciąg dalszy)


Rozkazy systemu IDE

Bity słowa rozkazowego Niezbędne parametry


Nazwa Typ
7 6 5 4 3 2 1 0 FR SCR SNR CYL SDH
Execute Dri­ 1 0 0 1 0 0 0 o M/S
ve Diagnostic
Initialize Dri­ 1 0 0 1 0 0 0 1
ve Parameters
Read PIOR 1 0 0 0 1 0 0
Multiple

Write PIOW 1 0 0 0 1 0 1
Multiple

Read DMA DMA 1 0 0 1 0 0 R

Write DMA DMA 1 0 0 1 0 1 R

Read Buffer PIOR 1 0 0 1 0 0 DRV

Write Buffer PIOW 1 0 1 0 0 0 DRV

Write Same PIOW 1 0 1 0 0 1

Identify PIOR 1 0 1 1 0 0 DRV


Drive
i

Set Features 1 0 1 1 1 1 DRV

DMA - transfer danych kana em DMA;

PIOR - odczyt w trybie PIO;

PIOW - zapis w trybie PIO;


L 0 - odczytywane lub zapisywane są tylko dane,
1 - odczytywane lub zapisywane są dane + ECC (tak zwany długi rozkaz - Read Long,
Write Long);

R 0 —powtórki dozwolone (Retry Enable),


1 - powtórki zabronione (Rrtry Disable);

X - stan bitu bez znaczenia (0/1);

- - zawartość rejestru jest ignorowana;

- rejestr niezbędny jako parametr;


DRV - w rejestrze SDH istotny jest jedynie numer dysku, reszta jest ignorowana;
M/S —rozkaz jest wykonywany przez oba dyski połączone w układzie Master/ Slave niezależnie
od adresu dysku ustawionego w SDH.
Obsługa dysku twardego 287

Alternatywny rejestr stanu (3F6h)


Rejestr ten zawiera informacje całkowicie zgodne ze stanem rejestru lF7h. Jedyna róż­
nica polega na obsłudze przerwania IRQ14.

Rejestr stanu (lF7h) spełnia dodatkową funkcję w komunikacji między kontrolerem


i PC. Kontroler dysku wyzwala żądanie przerwania IRQ14 przykładowo po odczytaniu
,-.i.
sektora. Sygnałem potwierdzenia przyjęcia tego przerwania przez CPU je st właśnie od­
czytanie rejestru stanu lF7h, co stanowi jednocześnie dla kontrolera polecenie anulo­
wania tego zgłoszenia.

Właściwości tych nie posiada alternatywny rejestr stanu. Jego odczytanie nie ma wpły­
wu na żądanie obsługi IRQ.

Rejestr sterujący (3F6h)


W rejestrze tym CPU może zapisywać dane precyzujące określone zachowanie kontro
lera.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-3 zarezerwowane;


bit 2 1 -r wymuszenie przejścia w stan Software-Reset; stan ten będzie
się utrzymywał aż do wyzerowania tego bitu przez CPU
bit 1 IRQ14:
0 - aktywne,
1 - zablokowane (linia INTRQ na wysokim poziomie logicznym);
bit 0 zarezerwowane.

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.

Wyzerowanie bitu 1 uruchamia system wyzwalania przerwań. Napęd zgłasza przer­


wanie jeżeli wykonanie rozkazu przenosi się na inny sektor oraz przed wejściem w tzw.
f! .*

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.

Rejestr adresu napędu (3F7h)


Odczyt tego rejestru pozwala określić, która z głowic i w którym napędzie jest w danym
momencie aktywna.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0


288 Anatomia PC

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.

Cykl programowania kontrolera


W cyklu programowania zintegrowanego kontrolera dysków twardych AT-BUS można
wyróżnić pewne charakterystyczne fazy:

Faza przekazywania rozkazu


CPU ładuje wszystkie wymagane rejestry pomocnicze i w ostatniej kolejności rejestr
rozkazowy kontrolera.

Rysunek &7. ADR0-ADR2


CPU programuje
rejestr grupy
Task-File
~CS1fx,~CS3fx

-IOW

min. 40ns

DATA 0-DATA 7

min. 10ns

Faza przekazywania danych


W fazie tej odbywa się wymiana informacji między kontrolerem a pamięcią operacyjną.
Oczywiście nie wszystkie rozkazy posiadają tę fazę. Przebieg sygnałów sterujących na
magistrali PC-BUS w trakcie realizacji wymiany danych CPU <-» IDE przedstawiają
wykresy na rysunkach 6.8. i 6.9.
Obsługa dysku twardego 289
^ • 5‘

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.

Sygnał ~IOCS16 generowany jest przez Host-Adapter wyłącznie po wykryciu żądania


dostępu do 16-bitowego portu danych (0x1 FO).

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.

Przerwanie IRQ 14 wyzwalane jest przez kontroler w następujących sytuacjach:

• w rozkazie „Czytaj sektor”, jeżeli został zapełniony bufor sektorowy kontrolera.


W przeciwieństwie do wszystkich innych rozkazów nie jest jednak wyzwalane
przerwanie przy przejściu do fazy końcowej. Można powiedzieć, że liczba
sygnałów IRQ14 odpowiada tu liczbie przeczytanych sektorów;
• w rozkazie „Pisz sektor”, jeżeli kontroler oczekuje danych od CPU. Charakterys­
tyczne jest przy tym, że pierwszy sektor przekazywany jest natychmiast po
załadowaniu rejestru rozkazowego i nie towarzyszy mu żadne przerwanie. Każde
wejście do fazy końcowej tego rozkazu wywołuje również przerwanie. Liczba
impulsów przerwań odpowiada więc i tutaj w pełni ilości zapisanych sektorów;

• we wszystkich innych rozkazach, przy wejściu w fazę końcową.

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).

Przykład realizacji rozkazu CZYTAJ SEKTOR


Rozkaz czyta od 1 do 256 sektorów. Możliwy jest odczyt danych wraz z kodami ECC
lub ich pominięcie. Po przyjęciu rozkazu ustawiany jest bit 7 (kontroler zajęty) rejestru
stanu (lF7h) i kontroler przystępuje do pozycjonowania głowic i odczytu pierwszego
sektora. Po odczytaniu sektora nastąpi ustawienie bitu 3 rejestru stanu (dane gotowe)
oraz zgłoszenie przerwania IRQ14. Procedura obsługi odbiera dane z bufora sektoro­
wego kontrolera.
Obsługa dysku twardego 291

Jeżeli zaprogramowany został odczyt większej liczby sektorów, ustawiany jest ponow­
nie bit 7, a zerowany bit 3 i cykl powtarza się.

Rejestry grupy AT-ASK-FILE podają stale parametry aktualnie przerabianego sektora,


tak więc wystąpienie błędu, który przerwie wykonywanie rozkazu, można zawsze od­
nieść do wskazywanego sektora. Jeżeli błąd w polu danych uda się skorygować za po­
mocą kodów ECC, wykonywanie rozkazu jest kontynuowane i jedynie fakt ustawienia
bitu 2 rejestru stanu sygnalizuje zaistniały problem.

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 przekazywania rozkazu


• Do rejestru lF2h ładowana jest liczba sektorów przeznaczonych do odczytu.
Uwaga: 0 oznacza 256 sektorów.

• Rejestr lF3h ładowany jest numerem pierwszego (ewentualnie jedynego) sektora.

• W rejestrach lF5h (MSB) i lF4h (LSB) ustawiany jest cylinder początkowy.

MSB (lF4h) LSB (lF5h)


bitl bitO bit7 bit6 bit5 bit4 bit3 bit2 bitl bitO

1-0 MSB + bity 7-0 LSB dają 10-bitowy numer cylindra.


• Numer głowicy i adres napędu umieszczany jest w rejestrze lF6h.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-5 sygnatura „101”;


bit 4 napęd:
0 - Master,
1 - Slave;
bity 3—0 numer głowicy (binarnie):
0000 - głowica 0,
0001 - głowica 1,

1111 - głowica 15.

• Jako ostatni ładowany jest rejestr rozkazowy lF7h.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7 - 2 sygnatura rozkazu „001 0 0 0 ” ;


292 Anatomia PC

bit 1 długi odczyt:


1 - dane + ECC,
0 - tylko dane;
bit 0 mechanizm automatycznego powtarzania:
1 - wyłączony,
0 - aktywny.

Faza przekazywania danych


W fazie tej procedura obsługi przerwania IRQ14 odbiera dane od kontrolera.

Faza końcowa
Kontroler umieszcza w swoich rejestrach następujące informacje:
• Rejestr błędów (1F 1h):

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 1 - nie znaleziono znacznika DAM;


bit 6 zarezerwowany;
bit 5 1 —przerwano wykonywanie rozkazu;
bit 4 zarezerwowany;
bit 3 1 - nie znaleziono metryki ID;
bit 2 zarezerwowany;
bit 1 1 “ błąd niemożliwy do skorygowania przez ECC;
bit 0 1 - adresowany sektor jest oznaczony jako zły.

• Rejestr liczby sektorów (lF*2h).


W przypadku przerwania wykonywania rozkazu rejestr ten zawiera liczbę pozosta­
łych jeszcze do odczytu sektorów. W przeciwnym razie równy jest zeru.

• Rejestry lF3h, lF4h, lF5h, lF6h wskazują na ostatnio przeczytany sektor.

• Rejestr stanu (lF7h):

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 1 —napęd zajęty wykonywaniem rozkazu (Busy);


bit 6 1 - napęd gotów (Ready);
bity 5-A zarezerwowane;
bit 3 1 - dane mogą być odebrane od kontrolera;
bit 2 1 - w polu danych wykryto błąd, który zlikwidowano kodem ECC;
bit 1 zarezerwowany;
bit 0 1 - rejestr błędów zawiera informacje dodatkowe.
Obsługa dysku twardego 293

Przykład realizacji rozkazu samoidentyfikacji dysku


Rozkaz odczytuje 512 bajtów informacji o dysku. Po przyjęciu rozkazu ustawiany jest
bit 7 (kontroler zajęty) rejestru stanu (lF7h) i przygotowywana jest transmisja 512
bajtowego bloku danych. Następnie ustawiany jest bit 3 rejestru stanu (dane gotowe)
oraz zgłoszenie przerwania IRQ14. Procedura obsługi odbiera dane z bufora sektoro­
wego kontrolera.

Faza przekazywania rozkazu


• Numer napędu umieszczany jest w rejestrze lF6h.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-5 bez znaczenia;


bit 4 napęd:
0 - Master,
1 - Slave;
bity 3-0 bez znaczenia.

Ładowany jest rejestr rozkazowy lF7h.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-0 sygnatura rozkazu „11101100”.

Faza przekazywania danych


W fazie tej procedura obsługi przerwania IRQ14 odbiera dane od kontrolera. 512-baj-
towy blok danych o dysku ma strukturę przedstawioną w tabeli 6.6.

Tabela 6.6.
Struktura bloku danych o dysku

Słowo Bit Opis


0 15 0 - zarezerwowane dla nośników niemagnetycznych
0 14 1 - między sektorami wymagana jest szczelina kompensująca wahania
prędkości obrotowej dysku
0 13 1 - dysk ma możliwość przydzielania ścieżki zapasowej
0 12 1 - dysk ma możliwość przydzielania zapasowego sektora
0 11 1 - tolerancja prędkości obrotowej powyżej 0,5%
0 10 1 —szybkość transferu danych powyżej 10 Mb/s
0 9 1 - szybkość transferu danych od 5 Mb/s do 10 Mb/s
0 8 1 - szybkość transferu danych poniżej 5 Mb/s

0 7 1 - nośnik magnetyczny wyjmowalny


294 Anatomia PC

Tabela 6.6: (ciąg dalszy)


Struktura bloku danych o dysku

Słowo Bit Opis


0 6 1 —dysk twardy
0 5 1 - zaimplementowana kontrola silnika napędu
0 4 1 —czas pozycjonowania głowic poniżej 15 ms
0 3 1 —system kodowania danych inny niż MFM
0 2 1 —soft sector
0 1 1 —hard sector
0 0 zarezerwowany, powinien mieć wartość 0
1 liczba cylindrów
2 zarezerwowany, powinno być 0
3 liczba głowic
4 liczba bajtów na ścieżkę (dysk nie sformatowany)
5 liczba bajtów na sektor (dysk nie sformatowany)
6 liczba sektorów na ścieżkę
7-9 zarezerwowane
10-19 numer seryjny dysku
20 | | typ bufora:
OOOOh - bufor nie jest określony
000lh - bufor nie może równocześnie transferować danych do/z host
adaptera i dysku
0002h - bufor może równocześnie transferować dane do/z host adaptera i
dysku
0003h - bufor może równocześnie transferować dane do/z host adaptera i
dysku z jednoczesnym cache’owaniem odczytu
0004h—FFFFh - zarezerwowane
21 rozmiar bufora podany w 512-bajtowych blokach
22 liczba bajtów kodu ECC dostępna w „długich” rozkazach
23-26 numer wersji modelu dysku
27-46 nazwa modelu dysku (40 znaków ASCII)
47 15—8 zarezerwowane
47 I 7-0 | OOh - komendy Read/Write Multiple nie są zaimplementowane
xxh - maksymalna liczba sektorów, która może być transferowana podczas
jednego przerwania przez komendy Read/Write Multiple
48 OOOOh - dysk nie może pracować w trybie 32-bitowym
000lh - dysk może pracować w trybie 32-bitowym
49 1 5 -1 2 zarezerwowane
49 11 1 - kontrola przepływu danych sygnałem IORDY jest obsługiwana
49 10 1 - kontrola przepływu danych sygnałem IORDY może być wyłączona
Obsługa dysku twardego 295

Tabela 6.6. (ciąg dalszy)


Struktura bloku danych o dysku

Słowo Bit Opis


49 9 1 - dysk obsługuje tryb LBA
49 1 - dysk może przesyłać dane w trybach DMA
8

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

59 7—0 maksymalna liczba sektorów, która może być transferowana podczas


jednego przerwania przez komendy Read/Write Multiple
60-61 tryb LBA - liczba sektorów na dysku; pozostałe tryby - 0.
62 15-8 numer aktywnego trybu Singleword DMA
62 7-0 numery obsługiwanych przez dysk trybów Singleword DMA (bit 0 - tryb 0,
bit 1 - tryb 1, ...)
63 1 15-8 numer aktywnego trybu Multiword DMA
63 7^0 numery obsługiwanych przez dysk trybów Multiword DMA (bit 0 - tryb 0,
bit 1 - tryb 1,...)
64 dysk może pracować w trybach PIO z kontrolą przepływu danych (tryb PIO
3 i wyższe) - ustawiony bit 0 oznacza, że dysk obsługuje tryb PIO 3
296 Anatomia PC

Tabela 6.6. (ciąg dalszy)


Struktura bloku danych o dysku

Słowo Bit Opis


65 minimalny czas trwania cyklu przesyłania danych w trybie Multiword DMA
[ns] - (patrz rysunek 6.15. - T0)
66 zalecany przez producenta czas trwania cyklu przesyłania danych w trybie
Multiword DMA [ns] - (patrz rysunek 6.15. - T0)
67 minimalny czas trwania cyklu przesyłania danych w trybie PIO bez kontroli
przepływu danych [ns] - (patrz rysunek 6.14. - T0)
68 minimalny czas trwania cyklu przesyłania danych w trybie PIO z kontrolą
przepłwu danych [ns] - (patrz rysunek 6.14. —T0)
69-255 zarezerwowane

Faza końcowa
Kontroler umieszcza w swoich rejestrach następujące informacje:

• Rejestr stanu (lF7h):

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bit 7 1 - napęd zajęty wykonywaniem rozkazu (Busy);


bit 6 1 - napęd gotów (Ready);
bity 5-4 zarezerwowane;
bit 3 1 - dane mogą być odebrane od kontrolera;
bit 2
bit 1 zarezerwowany;
bitO

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ę.

W skład systemu ograniczania (Power Saving) wchodzi warstwa automatyczna (Auto­


matic Power Reduction) oraz zestaw specjalnych rozkazów systemowych, wykonywa­
nych tak, jak każdy inne polecenie zwracające się do rejestrów AT-TASK-FILE.
Obsługa dysku twardego 297

System automatyczny
Mechanizm automatycznej redukcji mocy jest trójpoziomowy i zawiera:

• standardowy poziom Idle;

• 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.

W trybie Idle nie są realizowane żadne funkcje oszczędnościowe. Wszystkie układy


scalone zasilane są w całości, a dysk wiruje z pełną prędkością.

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.

W fazie Idle_2 wykonuje się wszystkie działania z fazy poprzedniej, a dodatkowo


następuje całkowite odcięcie napięcia zasilającego +12 V oraz zablokowanie separatora
danych. Okres powrotu do poziomu Idle (opóźnienie reakcji) wydłuża się w tym
przypadku do czasu potrzebnego na odzyskanie kontroli nad serwomechanizmem, co
wyraża się czasem dostępu do sektora dysku.

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).

W stanie czuwania interfejs dysku jest aktywny i zdolny do przyjęcia i opracowania


każdego z implementowanych przez siebie rozkazów IDE. Na odpowiedź trzeba jednak
czekać ok. 10 s, bowiem tyle potrzeba na ponowne rozpędzenie dysku do obrotów
nominalnych (w stanie czuwania dysk wiruje, ale z mniejszą prędkością).
298 Anatomia PC

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.

Do grupy rozkazów specjalnych zarządzających gospodarką energetyczną dysku zali­


czamy 6 poleceń zebranych w tabeli 6.7.

Tabela 6.7.
Rozkazy specjalne IDE

Nazwa Bity słowa rozkazowego Niezbędne parametry


rozkazu 7 6 5 4 3 2 1 0 FR SCR SNR CYL SDH
Stand By 1 0 0 DRV
0 0 0
Immediate
Idle 0 1 DRV
0 0 0 1
Immediate
Stand By 0 1 1 0 DRV
0 0
With Timer
Idle With 1 1 1 DRV
0 0 0
Timer
Check 1 0 0 0 DRV
0 0
Power Mode
Sleep 0 0 1 0 0 1 DRV
Stand By 0 0 0 0 DRV
1 0
Immediate
Idle 0 0 0 1 DRV
1 0
Immediate
Stand By 0 1 0 DRV
1 0 0
With Timer
Idle With 1 0 0 0 1 1 DRV
Timer
Check 0 1 0 1 DRV
1 0
Power Mode
Sleep 1 0 0 1 1 0 DRV
- zawartość rejestru jest ignorowana;
- rejestr niezbędny jako parametr;
DRV - w rejestrze SDH istotny jest jedynie numer dysku, reszta jest ignorowana
Obsługa dysku twardego 299

Rozkaz Stand By Immediate


Kod rozkazu IDE: 0xE0 lub 0x94.
Argumenty: numer dysku (Master/Slave), bit 4 rejestru SDH1).
Stan innych bitów SDH i rejestrów AT-Task-File: bez znaczenia.
R e a liz a c ja :
• ustawienie bitu BSY 2;
• wejście w tryb Stand By Power Mode;
• wyzerowanie bitu BSY;
• wygenerowanie przerwania IRQ.

Rozkaz Idle Immediate


Kod rozkazu IDE: 0xEl lub 0x95.
Argumenty: numer dysku (Master/Slave), bit 4 rejestru SDH.
Stan innych bitów SDH i rejestrów AT-Task-File: bez znaczenia.
R e a liz a c ja :
• ustawienie bitu BSY;
• wejście w tryb Idle_l Power Mode;

• wyzerowanie bitu BSY;


• wygenerowanie przerwania IRQ.

Rozkaz Stand By With Timer


Kod rozkazu IDE: 0xE2 lub 0x96.
Argumenty: numer dysku (Master/Slave), bit 4 rejestru SDH.
Licznik czasu: w rejestrze SCR1).
Stan innych bitów SDH i rejestrów AT-Task-File: bez znaczenia.
R e a liz a c ja :
• ustawienie bitu BSY;

• wejście w tryb Stand By Power Mode;

• wyzerowanie bitu BSY;

• wygenerowanie przerwania IRQ.

Wartość czasu w rejestrze SCR podawana jest w jednostkach 5-sekundowych. Akcepto­


wane są jednak tylko wartości z przedziału 0x0c - 0xc8, co odpowiada opóźnieniom od
60 s do 17 min.
300 Anatomia PC

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.

Rozkaz Idle With Timer


Kod rozkazu IDE: 0xE3 lub 0x97.
Argumenty: numer dysku (Master/Slave), bit 4 rejestru SDH.
Licznik czasu: w rejestrze SCR.
Stan innych bitów SDH i rejestrów AT-Task-File: bez znaczenia.
R e a li z a c ja :
• ustawienie bitu BSY;

• wejście w tryb Idle 1 Power Mode;

• wyzerowanie bitu BSY;

• wygenerowanie przerwania IRQ.

Wartość czasu w rejestrze SCR podawana jest w jednostkach 5-sekundowych. Akcepto­


wane są jednak tylko wartości z przedziału 0x0ct0xc8, co odpowiada opóźnieniom od
60 s do 17 min. Jeżeli licznik nastawiony został na zero, rozkaz jest ignorowany.

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.

Rozkaz Check Power Mode


Kod rozkazu IDE: 0xE5 lub 0x98.

Argumenty: numer dysku (Master/Slave), bit 4 rejestru SDH.

Stan innych bitów SDH i rejestrów AT-Task-File: bez znaczenia.


R e a li z a c ja :
• jeżeli dysk znajduje się w stanie Stand By:
• ustawienie bitu BSY,
• wyzerowanie rejestru SCR (SCR = 0x00),
• wyzerowanie bitu BSY,
• wygenerowanie przerwania IRQ;
Obsługa dysku twardego 301

• jeżeli dysk znajduje się w stanie Idle:


• ustawienie bitu BSY,
• ustawienie rejestru SCR (SCR - OxFF),
• wyzerowanie bitu BSY,
• wygenerowanie przerwania IRQ.

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.

Argumenty: numer dysku (Master/Slave), bit 4 rejestru SDH.

Stan innych bitów SDH i rejestrów AT-Task-File: bez znaczenia.


Realizacja:
• wyłączenie silnika;

• wyzerowanie bitu BSY;

• wygenerowanie przerwania IRQ;


• dezaktywacja złącza IDE.

Wartość czasu w rejestrze SCR podawana jest w jednostkach 5-sekundowych. Akcepto­


wane są jednak tylko wartości z przedziału 0x0c - 0xc8, co odpowiada opóźnieniom od
60 s do 17 min.

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),

• ograniczona szybkość transmisji danych,


302 Anatomia PC

• możliwość podłączenia dwóch dysków twardych,


• brak możliwości podłączenia innych użądzeń niż dyski twarde.

Warto chyba w tym momencie przypomnieć, że w czasach projektowania architektury


PC pierwsze dyski twarde miały pojemność 5—10 MB, a dane przekazywane magistralą
ISA mogły być transmitowane z szybkością do 8,3 MB/s (co znacznie przewyższało
możliwości dysku). Dzisiaj, gdy sam system operacyjny może zajmować od kilku do
kilkudziesięciu MB, ograniczenia te zaczynają być dotkliwe.

Standard EIDE (Enhanced IDE) ma za zadanie usunięcie tych ograniczeń, zapewniając


i.

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.

Ogólny schemat przekazywania takich poleceń korzystając z przerwania INT13 można


przedstawić w następujący sposób:
• do rejestru AH ładowany jest numer identyfikujący żądaną funkcję, np. OxOA
oznacza czytanie sektorów;

• para rejestrów ES:BX musi zawierać adres przygotowanego wcześniej obszaru


pamięci, który jest niezbędny w niektórych rozkazach, np. tutaj zostaną przesłane
odczytane z dysku dane;
• rejestr AL określa liczbę sektorów, których dotyczy rozkaz;

• w DL trzeba umieścić numer dysku do którego chcemy się zwrócić;


• DH podaje numer głowicy dysku (identyfikacja strony dyskowej);

• para CL-CH określa numer cylindra dyskowego;


• procesor wyzwala teraz przerwanie INT13h i sterowanie przejmuje BIOS, który
w oparciu o przekazane parametry kontaktuje się bezpośrednio z kontrolerem
dysku;
• jeżeli procedury BIOS stwierdziły wystąpienie błędu uniemożliwiającego wyko­
nanie operacji trzeba o tym poinformować MS-DOS. Sygnalizacja błędu odbywa
się poprzez ustawienie flagi CF. Rejestr AH zawiera wtedy jednobajtowy kod
błędu podający bliższe określenie przyczyn (np. AH = 0x04: nie znaleziono
żądanego sektora).
Obsługa dysku twardego 303

Przyjrzyjmy się bliżej fragmentom dotyczącym adresowania sektora.


CH CL
C9 C8 S5 S4 S3 S2 SI SO Cl C6 C5 C4 C3 C2 Cl CO
DH DL 4

| G3 G2 G1 GO

Przyjęty system nakłada więc następujące ograniczenia:


• Cylindrów: 1024 (0...1023)

• Sektorów: 63 (1...63)

• Głowic: 16 (0... 15)

Maksymalna liczba sektorów, która da się w ten sposób zaadresować wynosi więc:

1 024 x 63 x 16= 1 032 192


co przy wymiarach sektora 512 B daje 504 MB maksymalnej dostępnej pojemności
dyskowej, która da się objąć przy pomocy klasycznego BIOS-u i jego funkcji. System
AT-Bus dostosowany jest do tych ograniczeń co znajduje wyraz w organizacji portów
grupy AT-Task-File. Rysunek 6.11. przedstawia mechanizm przejmowania argumentów
z rejestrów CPU do odpowiednich portów.

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.

sektora przez pVf ' / ' * -Vf' -*•V- • J»

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 .

0x1 F4: ..j . ...........................................; .


0x1 F5

Cztery bity rejestru DH przechodzą do portu SDH {SectorZDisc/Head), Numer cylindra


umieszczany jest w parze portów CLR/CHR {Cylinder Low Register/Cylinder High
f e ’•
Register), a sześć młodszych bitów CH przenoszonych jest do rejestru SNR {Sector
Number Register ).
7 •'
Ł .

Standard EIDE przewiduje rozwiązanie tego problemu na dwa sposoby:

• adresowanie liniowe - LBA (Logical Block Address),


• rozszerzony model CHS - XCHS (extended Cylinder Head Sektor),
które gwarantują dostęp do 7,8 GB pamięci dyskowej (ograniczenie to nakłada BIOS,
który jest w stanie obsługiwać dysku o takich rozmiarach - patrz tabela 6.8).
304 Anatomia PC

Tabela 6.8.
Ograniczenia pojemności dysków

I BIOS I EIDE I CHS | LBA/XCHS


liczba sektorów na ścieżce 63 255 63 63 1
liczba głowic 256 16 16 256
liczba cylindrów 1024 65536 1024 1024

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.

Logical Block Address


W trybie LBA każdy sektor ma swój kolejny numer obliczany na podstawie wzoru:

LBA = (numer cylindra x liczba głowic na cylinder + numer głowicy) x liczba


sektorów na ścieżkę + numer sektora - 1

Sektory adresowane są za pomocą 28-bitowej liczby. Poszczególne pozycje bitowe


i

adresu w trybie LBA tworzone są z następujących składowych:

• LBA 0-7 Rejestr numeru sektora (lF3h),


• LBA 8-15 Rejestr numeru cylindra, składowa LSB (1 F5h),

• LBA 16-23 Rejestr numeru cylindra, składowa MSB (lF4h),

• LBA 24-27 Bity 0-3 rejestru napędu/głowicy (lF6h).

Przełączenie z klasycznego trybu adresowania CSH (Cylinder Sektor Head) na tryb


LBA odbywa się poprzez ustawienie bitu 6 w rejestrze napędu/głowicy (lF6h).

Rysunek 6.12. BIOS EIDE


Adresowanie
sektora w trybie
LBA
Obsługa dysku twardego 305

Extended Cylinder Head Sector


Zgodnie z tabelą 6.8. BIOS może zarządzać dyskiem o pojemności 7,8 GB jeżeli można
by było deklarować więcej niż 16 głowic. Z kolei dysk EIDE jest w stanie zaakcep­
tować zwiększoną liczbę sektorów na ścieżce albo cylindrów. W trybie XCHS problem
ten zostaje rozwiązany w następujący sposób: jeżeli jako parametr zostanie przekazane
więcej niż 16 głowic, to liczba głowic zostanie zredukowana do 16, a w zamian za to
zostanie zwiększona liczba cylindrów.

Rysunek 6.13. BIOS EIDE


Adresowanie
sektora w trybie Numer cylindra
0 - 65535
XCHS

Numer głowicy Numer głowicy


Logiczny numer sektora
0-255 0 -1 5

Numer sektora
1 -255

Prędkości transmisji danych


Tryby PIO
Przy przesyłaniu danych z kontrolera do pamięci PC dyski AT-BUS wykorzystują kla­
syczny tryb przekazu z udziałem portu danych (PIO). W kontrolerach IDE wykorzysty­
wany był tryb PIO 0, zapewniający przesłanie w jednym cyklu, trwającym 280 ns, 16
bitów danych (3,33 MB/s).

Ta prędkość transmisji jest z jednej strony znacznie niższa od maksymalnej prędkości


magistrali ISA (8,3 MB/s), a z drugiej strony wyższa niż maksymalna prędkość
transmisji danych z głowicy do kontrolera (dla przykładu dysk wirujący z prędkością
3600 obr/min, który na jednej ścieżce ma 100 sektorów 512-bajtowych, może w ciągu
sekundy przesłać 60 razy po 51200 bajtów, czyli 3 MB/s)

Postęp technologiczny (zwiększenie prędkości obrotowej i liczby sektorów na ścieżce)


sprawił, że prędkość transferu danych z głowicy do kontrolera przekroczyła możliwości
interfejsu IDE. Na przykład dysk 0662A IBM osiąga około 4,8 MB/s przy 5400
obr./min. i 108 sektorach na zewnętrznych ścieżkach. Większość nowoczesnych dys­
ków obraca się na razie z prędkością rzędu 4500 obr./min. i osiąga prędkości w grani­
cach 3,5 MB/s, co nieznacznie przekracza możliwości trybu PIO 0. Aby temu zaradzić
zostały zdefiniowane kolejne tryby PIO 1-3 (patrz rysunek 6.14)

Standard EIDE wykorzystuje tryb PIO 3 zapewniający transfer z prędkością 11,11


MB/s. Ponieważ prędkość transmisji w tym trybie przekracza możliwości magistrali
ISA, adaptery EIDE muszą korzystać z magistrali YESA Local Bus lub PCI.
306 Anatomia PC

~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

Tryb 0 Tryb 1 Tryb 2 Tryb 3 Tryb 0 Tryb 1 Tryb 2 Tryb 3


To [ns] >600 >383 >240 >180 Ts [ns] >50 >35 >20 >20
Ti Ins] >70 >50 >30 >30 Te [ns] >5 >5 >5 >5
16-bit T2 [ns] >165 >125 >100 >80 T? [ns] <90 <50 <40 <30
8-brt T 2 [ns] >290 >290 >290 >80 Ts [ns] <60 <45 <30 <30
T3 [ns] >60 >45 >30 >30 T9 [ns] >20 >15 >10 >10
T4 [ns] >30 >20 >15 >10

TrybO Tryb 1 Tryb 2 Tryb 3


Transfer [MB/s] 3,33 5,22 8,33 11,11

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.

Standard EIDE oferuje bezpośredni dostęp do pamięci w trybie 1 standardu Multi-


word-DMA (rysunek 6.15).

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

TrybO Tryb 1 Tryb 2 TrybO Tryb 1 Tryb 2


To [ns] >960 >480 >240 Tg [ns] >250 >100 >35
Tc [ns] <200 <100 <80 T h [ns] >50 >30 >20
To[ns] >480 >240 >120 Tl [ns] >0 >0 >0
TE[ns] <250 <150 <60 Tj [ns] >0 >0 >0
T f [ns] >5 >5 >5

TrybO Tryb 1 Tryb 2


Transfer [MB/s] 2,08 4,16 8,33

Zwiększenie liczby urządzeń


4!-
M;. Standard EIDE wprowadził oficjalnie drugi adapter IDE do komputera PC (rysunek
6.16). Niestety nie wyspecyfikowano ani adresu portu I/O, ani linii przerwania IRQ.
ti Przemysł wykorzystuje więc IRQ 15 i porty skupione wokół adresów bazowych 170h
i 376h.

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

Rysunek ft 15b. DMARQ


Zależności
czasowe
w trybach
-DMACK
Multiword-DMA

~IOR
-IOW

Odczyt __
DDO * DD15

Zapis
DD0-DD15

H
T

TrybO Tryb 1 TrybO Tryb 1


min max min max min max min max
To[ns] 480 - 150 *
Tt [ns] 0 w
0 -

T D [ns] 215 - 80 -
Tj [ns] 20 5 -

Te [ns] *
150 -
60 T kt [ns] 50 V
50 ■

T e [ns] 5 20 5 25 T kw [ns] 215 - 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

Rysunek ft 16. Host adaptery (pri mary/se condaty)


zintegrowane na jednej karcie
Połączenie
dysków EIDE Magistrala zewn. PC
z Host- Urządzenia ATAPI
(gniazda rozszerzeń)
Adapterem

Primary Master Primary Slave

\ r
Secondary Master Secondary Slave

i
Obsługa dysku twardego 309

dysk Master adaptera pierwotnego,


dysk Slave adaptera pierwotnego,

CD-ROM Master adaptera wtórnego,


streamer Slave adaptera wtórnego.

Większość producentów adapterów EIDE postępuje według najtańszej metody dopusz- ;


czonej przez specyfikację - jedynie kanał pierwotny jest sprzężony z magistralą VL lub
PCI, natomiast kanał wtórny sprzężony jest z magistralą ISA. Podejście tego typu jest
o tyle uzasadnione, że drugi kanał pomyślany jest do podłączania wolniejszych urzą­
dzeń zewnętrznych, takich jak CD-ROM-y czy streamery, które jak na razie nie osiągają
szybkości transmisji powyżej 1 MB/s.

Poszerzenie oferty urządzeń IDE


Standard ATAPI (AT Attachment Packet Interface) określa parametry techniczne, jakie
muszą spełnić urządzenia (CD-ROM-y i stramery) podłączane do adaptera EIDE.
W praktyce urządzenia takie można również podłączać do adaptera IDE.

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

Będące obecnie w użyciu napędy CD-ROM pracują przeważnie w systemie CLV


(Constant Linear Velocity). Wymóg stałej prędkości liniowej niezależnie od promienia
aktualnie czytanej ścieżki stwarza konieczność stałego manipulowania prędkością obro­
tową napędu. W przypadku czytnika 8X prędkość waha się między 500 a 4000 obr/min.
Bezwładność elementów mechanicznych wymaga pewnego czasu na ustabilizowanie
się prędkości na nowym poziomie. W tym czasie napęd nie może czytać, bo płytka
wiruje za szybko lub za wolno2. Efektywna prędkość jest więc zawsze mniejsza od
maksymalnie deklarowanej dla danego napędu liczby X. Rozproszenie danych po dysku
wzmacnia dodatkowo ten szkodliwy efekt.

Próby wyeliminowania tych szkodliwych zjawisk znalazły wyraz w zaproponowanym


3 * ? +
przez firmę Western Digital nowym standardzie określanym mianem SDX (Storage
Data Acceleration). Firma ta zadbała już o kilka rewolucji w przemyśle komputerowym.
W roku 1984 wraz z Compaą wprowadziła na rynek standard IDE, a dziewięć lat póź­
niej przeforsowała rozszerzenie do niego. W skład EIDE wchodzi po dziś dzień szeroko
wykorzystywany protokół ATAPI (AT Packet Interface).

Specyfikacja nie ogranicza wykorzystania SDX wyłącznie przez czytniki CD-ROM,


Kierowana jest w stronę wszelkich napędów o wymiennych mediach takich jak DVD,
MO czy CD-RW. Czas dostępu do takich urządzeń jest z samej natury rzeczy dużo
większy od dysku twardego. SDX obiecuje skrócenie czasu dostępu i znaczne podnie­
sienie szybkości przesyłania danych.

Urządzenia standardu SDX nie współpracują bezpośrednio z magistralą EIDE. Miejsce


40-żyłowego przewodu połączeniowego zajmuje 10-żyłowy kabel SDX łączący urzą­
dzenie z dyskiem twardym (rysunek 6.18). By sięgnąć po zalety nowej technologii,
trzeba przebudować zarówno dyski jak i CD-ROMy.

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

2 Niektóre napędy wykorzystują zakres prędkości mniejszy od nominalnej do czytania w trybie


obniżonym, choćby 1X lub 2X co zawsze przynosi pewien zysk na czasie.
3 Do prac prowadzonych nad SDX przyłączyły się następujące firmy: Matsuhita, Toshiba,
Teac, Sanyo, Samsung, Acer, Motorola, SGS Thompson.
Obsługa dysku twardego 311

Odpowiednio dostosowany kontroler dysku twardego bierze na siebie odpowiedzialność


za komunikację jednostki SDX z magistralą EIDE a co za tym idzie z komputerem. PC
nie widzi ani magistrali SDX ani podłączonego do niej urządzenia. BIOS dysku twar­
dego skutecznie maskuje istnienie nowej magistrali. CPU zwraca się do urządzenia
SDX tak jak do obecnej na szynie EIDE jednostki Slave. Dysk twardy zachowuje się
jako Master gdy PC zwraca się do niego, a jako Slave gdy żądanie dostępu dotyczy CD-
ROMu.

Cechy charakterystyczne nowej techniki można zebrać w poniższych punktach:


• Nieznaczne podniesienie kosztów produkcji HDD daje istotną obniżkę ceny
CD-ROMu (przy lepszych parametrach). Do BIOS-u dysku twardego należy do­
dać protokół ATAPI, zwiększyć ilość pamięci RAM a całość wyposażyć w inter­
fejs SDX. Może się okazać konieczne podniesienie częstotliwości taktowania
procesora kontrolera. W zamian za to uzyskuje się poważne odchudzenie CD- j
ROMu. Kilkanaście elementarnych rozkazów systemu SDX można zaimplemen­
tować przy użyciu skromnego BIOS-u, wystarczy na ten cel przeznaczyć 8 kB
pamięci ROM. Drogie układy pamięci buforowej RAM można praktycznie
całkowicie usunąć.
• Szybki transfer danych z jednostki SDX zawdzięcza się bardziej wydajniejszemu
systemowi pamięci buforowej (cache), który nie odbywa się ani kosztem CPU
ani szyny PCI ani pamięci PC. Sterownik SDX realizuje ponadto buforowanie
dwupoziomowe. Operacje buforowane są w pierwszej kolejności przez pamięć
RAM a na drugim poziomie (w razie zajęcia RAM) przez część dysku twardego.
Przy dzisiejszych pojemnościach rzędu kilku gigabajtów, oddelegowanie 100 —
200 MB na pamięć buforową SDX nie stanowi dużej straty.

• Nieustanne podnoszenie liczby X w celu dogonienia konkurencji i sprostania stale


rosnącym wymaganiom aplikacji ma swój górny pułap. Kres rozwoju mechaniki
napędu leży w okolicach liczby 20 i został już w zasadzie osiągnięty. SDX
oferuje możliwość dalszego podnoszenia współczynnika X na drodze elektro­
nicznej, nie naruszając mechaniki i nie eksploatując jej na granicy wytrzymałoś­
ci. Napęd 8X-SDX ma parametry klasycznego czytnika 20X. Znika tym samym
konieczności stałej gonitwy za nowymi produktami. Opóźnienie śmierci tech­
nicznej danego wyrobu oznacza dłuższy czas wytwarzania opanowanej już tech­
niki co pozwala z kolei na obniżkę ceny.
i
i

• SDX gwarantuje zgodność z istniejącym oprogramowaniem. Nie potrzeba zmian


ani w programach BIOS, ani w sterownikach, ani w kodach aplikacji. Zapewnia­
ne jest jedynie przyspieszenie działania.
i

Pierwszym producentem mogącym dostarczyć czytnik CD-ROM standardu SDX jest;


współpracująca bardzo ściśle z Western Digital firma Sanyo. Wyniki pierwszych testów l
porównawczych prototypowych urządzeń SDX zostały zebrane w tabeli 6.94.

4 Pomiary wykonane programem Ziff-Davis WinBench 97 Ver. 1.0 w następującym środowisku


sprzętowym: Intel Pentium 200, 16 MB RAM, 256 kB cache, HDD WDAC22500. System
operacyjny MS-DOS 7.10 / Windows 95 OEM SR-2.

i
j
312 Anatomia PC

Tabela 6.9.
Porównanie wydajności urządzeń A TAPI i SDX

CD-ROM 8X A T API CD-ROM 8X SD X


Sony CDU311 Sanyo SDX 8X CLV

CD- Winmark 9 7 [kB/s] 743 1280

Czytanie liniowe [kB/s] 1220 3400

Czytanie losowo [kB/s] 87.5 134

Czas dostępu [msj 170 115

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.

Rysunek 6.19. Złącze SDX


Złącze SD X
na dyskach o o o o o OOOOOOOOOQ 0 0 0 0 0 0 0 0 0 0
oooO o o o oo OGOOOOOOCł O OODOOOOÜOO
Western Digital

WDAĆ 34000
— i

Wstępne zmiany na płytce drukowanej przewidują miejsce na dodatkowy układ scalo­


nego interfejsu ale całość nie jest jeszcze aktywowana. Do zakresu niezbędnych zmian
zaliczyć należy planowaną rozbudowę pamięci RAM (z 128 na 256 kB) i uzupełnienia
BIOS-u kontrolera.

Kabel połączeniowy standardu SDX tworzy 10 przewodów: 7 linii sygnałowych i 3


masy. Transmisja ma charakter synchroniczny (takt podawany jest przez CD-ROM),
przekazywane są równolegle dwa bity. System daje do wyboru dwie prędkości: w trybie
wolnym pracuje się z szybkością 5 MB/s a w trybie szybkim dopuszczalne jest 8,6
MB/s. Taktowanie odbywa się obydwoma zboczami5 generowanego przez CD-ROM
sygnału zegarowego. Minimalny czas cyklu równy 58 ns stawia wysokie wymagania co
do przewodów połączeniowych, których długość musi być przez to ograniczona do 30
cm (w oryginale specyfikacji 12”).

Praca z szybkością 8,6 MB/s odpowiada strumieniowi danych płynącemu z wirtualnej


jednostki CD-ROM obracającej dysk z prędkością 10.000 obr/min (32X). Przy
obecnym stanie rozwoju układów mechanicznych czytników, niewyważonych płytek
CD i braku ochrony pyłowej parametry takie nie są możliwe do osiągnięcia.

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.

Początkowo system powstał dla potrzeb obsługi komunikacji w obrębie stacji


roboczych i minikomputerów. Pierwowzór ten nosił nazwę SASI (Shugart Associates
System Interface) i opracowany został w firmie Seagate.

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ć.

Doprowadzona wreszcie do szczęśliwego finału procedura normalizacyjna spowodo­


wała powstanie tzw. standardu SCSI-1. Norma ta przewidywała jednak pewne furtki
wbudowane w celu uelastycznienia systemu i aby nie wiązać rąk producentom. Ta
nadmierna elastyczność doprowadziła do tego, że norma normą być przestała.
314 Anatomia PC

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 roku 1990 niektóre z rozkazów SCSI (wraz z rozlicznymi towarzyszącymi im para­


metrami) zebrane zostały w ramach normy (a nie propozycji) SCSI-2, co pozwala żywić
nadzieję na ostateczne rozwiązanie problemu.

Do głównych cech, które odróżniają SCSI-1 od SCSI-2, należy zaliczyć:


• ujednolicony i poszerzony zestaw rozkazów,
• możliwość pracy w trybie fast (szybkim), tj.zwiększenieprzepustowości magi­
strali do 10 MB/s (zamiast 5 MB/s),
• możliwość pracy w trybie wide (szerokim), tj.poszerzenie szyny danych magi­
strali do 16 lub 32 bitów (zamiast 8),
• kombinacja trybów fast-wide pozwala uzyskać teoretycznie prędkości transmisji
do 40 MB/s. Wymagane są tu już jednak rozszerzenia sprzętowe, tj. dodatkowy
68-żyłowy przewód połączeniowy.

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

Rozkazy grupy 0 Rozkazy grupy 1 Rozkazy grupy 2 Rozkazy grupy 6


Test Unit Ready Search Block High Change Definition Diagnostic Write Data
Rezero Unit Search Block Equal Write Same Diagnostic Read Data
Request Log Search Block Low Log Select Format ID
Request Sense Read Capacity Log Sense Space ID & Read Data
Format Unit Partial Medium Mode Select Extended Displaced ID
Indicator
Read Defect List Prevent/Allow Mode Sense Extended Read ID
Medium Removal
Reasign Blocks Read Extended Diagnostic Format ID
Read Write Extended Diagnostic Read ID
Write Seek Extended Write RAM
Seek Write & Werify Read RAM
No Operation Verify Recover Data
Set File Mask Search Data High Recover ID
Inquiry Search Data Equal
Read Device Search Data Low
Characteristic
Priority Reserve Set Limits
Mode Select Pre-Fetch
Reserve Unit Synchronize Cache
Relase Unit Lock/Unlock Cache
Copy Read Defect Data
Mode Sense Compare
Start/Stop Unit Copy & Werify
Receive Diagnostic Write Buffer
Results
Send Diagnostic Read Buffer
Prevent/Allow Read Long
Medium Removal
Write Long

Trzeba również pamiętać, że wielu producentów gwarantuje poprawną pracę swoich


wyrobów (dysków) jedynie w połączeniu z własnym Host Adapterem, do którego
dołączany jest zestaw odpowiednich sterowników programowych {drivers). Idea SCSI
z natury rzeczy służyć ma łączeniu ze sobą wielu różnych urządzeń, co jest w świetle
powyższego źródłem potencjalnych problemów (niekompatybilność). Nie można też
przecież zdawać się na jednego producenta dla wszystkich różnorodnych urządzeń
peryferyjnych w całym rozbudowanym układzie.
316 Anatomia PC

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.

Każdy z współużytkowników (nazywanych urządzeniami lub jednostkami) identyfikuje


się przez unikalny adres SCSI-ID. Adres ten, zwany też identyfikatorem, przypisywany
jest urządzeniu przed uruchomieniem magistrali. Nadanie identyfikatorów odbywa się
za pomocą zwor konfiguracyjnych. Chociaż do kodowania adresów używa się 8-bitowej
magistrali danych, przyjęty sposób kodowania pozwala na tworzenie maksymalnie
ośmiu adresów; nie ma tu miejsce kodowanie binarne lecz każda z ośmiu linii szyny
danych oznacza jeden adres 0-7. Jednostka odczytuje przydzielony sobie adres w trak­
cie realizacji swoich procedur samo kontrolnych i inicjujących, które wykonuje po do­
prowadzeniu zasilania. Od tej pory urządzenie reaguje wyłącznie na rozkazy do siebie
adresowane. Ważne jest by nie doprowadzić do konfliktu adresowego, który ma miejsce
jeżeli jeden z identyfikatorów nadany zostanie dwukrotnie. Magistrala nie została wypo­
sażona w możliwości korekcji takiej sytuacji. Jedyną jej odpowiedzią są permanentnie
występujące błędy.

Poszczególne linie sygnałowe mogą stanowić łącza symetryczne lub asymetryczne.


System asymetryczny jest droższy ale pozwala na łączenie ze sobą układów oddalonych
od siebie do 25 m. Wersja asymetryczna dopuszcza Jedynie” 6 m, co jednak w porów­
naniu z szyną AT-BUS (max. 50 cm) stanowi milowy krok naprzód. Odpowiednio do
rodzaju połączenia mówi się wtedy o interfejsie symetrycznym lub asymetrycznym.
Oba fizyczne końce magistrali muszą być jednak w obydwu przypadkach obciążone
specjalnie dobranymi układami rezystorów. W zależności od technicznej realizacji
połączenia rezystory zlokalizowane są na jednym z urządzeń lub poza nimi.
w . - '

Î 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.

Rysunek 6.20. Rezystory


Obciążenie
końców
asymetrycznej
magistrali SCSI
( 1/ 3)
HOST DYSK
ADAPTER TWARDY

Bardziej rozbudowaną konfigurację prezentuje układ na rysunku 6.21. Mamy tutaj


oprócz kontrolera dwa dyski twarde oraz dodatkowe urządzenie SCSI (może nim być
np. czytnik CD-ROM). W tym przypadku rezystory zainstalowane na obydwu dyskach
należy usunąć. Obciążony pozostaje koniec wychodzący od kontrolera oraz ten, który
zasila dodatkowe urządzenie.

Rysunek 6.21. HOST DYSK


W- • Obciążenie ADAPTER TWARDY 1
końców
asymetrycznej
DYSK
magistrali SCSI
i * / TWARDY 2
(2/ 3)
Rezystory
zakończenia linii INNE
URZĄDZENIE
p /;”

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.

Rysunek 6.22: HOST DYSK


Obciążenie ADAPTER TWARDY 1
końców
asymetrycznej
magistrali SCSI DYSK
TWARDY 2
(3/ 3)
ił* •

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.

Rysunek 6.23. HOST X DYSK


Obciążenie ADAPTER L. TWARDY
końców
symetrycznej
Rezystory r^j Rezystory
magistrali SCSI
4
zakończenia linii J
P zakończenia linii

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.

Magistrala stawia do dyspozycji łączących się urządzeń 18 linii sygnałowych, w tym 9


sterujących i 9 linii danych:
*
• 8-bitowa szyna danych DB0-DB7 która objęta jest kontrolą parzystości. Sygnał
kontroli parzystości przekazywany jest linią DBP;

• sygnał zajętości BSY ( Busy);


• sygnał wybierania SEL {Selection)',

• identyfikator danych C/D {Control/Datd)\


• sterownik kierunku I/O {Input/Output)’,
• identyfikator wiadomości MSG {Message)',

• para sygnałów do przesyłania z potwierdzeniem REQ i ACK {Request i


Acknowledge)',
• dwa sygnały specjalne ATN i RST {Attention i Reset).
Obsługa dysku twardego 319

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)

C/D CONTROUDATA (1 linia)


l/O INPUT/OUTPUT (1 linia)
MSG MESSAGE (1 fi nia)

•y

rJ
<
,K

REQ REQUEST (1 linia)


N
I*.
&

v-

ACK ACKNOWLEDGE (1 linia)


£
«•

•r

ATN ATTENTION (1 linia)

-WÏ

V
Î
-ii:
K\
<•

?*<
Ił •

Sr':
M-
-v ’

SCSI a komputery klasy PC


Magistrala SCSI może - jak już wiemy obsługiwać nie więcej niż 8 urządzeń. Jeżeli
mowa jest o połączeniu ze światem PC, co najmniej jedno z nich musi być układem
sprzęgającym z komputerem PC. Nic jednak nie stoi na przeszkodzie, by były dwa takie
układy. Tworzy się pewnego rodzaju sieć komputerowa o ciekawych właściwościach.

• '.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

Znacznie częściej spotyka się konfiguracje uproszczone, wyposażone w jeden kontroler


i dwa urządzenia SCSI. Magistralę taką przedstawia rysunek 6.26.
9

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

Omawiana konfiguracja przedstawiona została na rysunku 6.27.

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ęć.

Fizyczne zakończenia magistrali muszą być obciążone specjalnie dobranymi rezysto­


rami. Wartość ich zbliżona jest do impedancji falowej przewodów wiązki. Przy pręd­
kościach transmisji rzędu 6-7 MB/s i długości impulsów poniżej 50 ns zaczynają
odgrywać rolę zachodzące w magistrali zjawiska falowe: odbicia, fale stojące itd.
Obciążenie obydwu końców linii rezystorami o oporności falowej redukuje szkodliwy
wpływ tych zjawisk. Przebiegi są ostrzejsze i mają lepsze zbocza.

Rezystory obciążające spełniają również dodatkową rolę. Utrzymują mianowicie prze­


wody magistrali na poziomie zbliżonym do +5 V, co w przyjętej konwencji (wszystkie
sygnały są zanegowane, stanowi aktywnemu odpowiada napięcie 0 V) oznacza brak
aktywności sygnału.

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

Numer końcówki Sygnał Sygnał Numer końcówki


01 GND ~DB0 02
03 GND ~DB1 04
05 GND -D B 2 06
07 GND ~DB3 08
09 GND ~DB4 10
11 GND ~DB5 12
13 GND -D B 6 14
15 GND ~DB7 16
17 GND -DBP 18
19 GND GND 20
21 GND GND 22
23 zarezerwowane zarezerwowane 24
25 brak połączenia TERMPWR 26
27 zarezerwowane zarezerwowane 28
29 GND GND 30
31 GND ~ATN 32
33 GND GND 34
35 GND ~BSY 36
37 GND ~ACK 38
39 GND ~RST 40
41 GND ~MSG 42
43 GND ~SEL 44
45 GND -C /D 46
47 GND ~REQ 48
49 GND -I/O 50

Każdy z przewodów sygnałowych (zarówno steruj ących j ak i danych) posiada towarzy­


szącą mu linię masy. Wyjątek stanowi linia 26 (TERMPWR), której wrażliwość na
zakłócenia jest pomijalna.

W płaskim przewodzie połączeniowym linie masy oddzielają od siebie linie sygnałowe.

Każdy z przewodów sygnałowych zakończony jest zestawem rezystorów pokazanym na


rysunku 6.28. Po uproszczeniu połączeń równoległych widać, że obciążenie linii wynosi
około 132 fi.
Obsługa dysku twardego 323

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

Numer końcówki Sygnał Sygnał Numer końcówki


01 GND GND 02
03 +DB0 -D B 0 04
05 +DB1 -DB1 06
07 +DB2 -D B 2 08
09 +DB3 -D B 3 10
11 , +DB4 -D B 4 12
13 +DB5 -D B 5 14
15 +DB6 -D B 6 16
17 +DB7 -D B 7 18
19 +DBP -DBP 20
21 D1FFSENS GND 22
23 zarezerwowane zarezerwowane 24
25 TERMPWR TERMPWR 26
27 zarezerwowane zarezerwowane 28
29 +ATN -A TN 30
31 GND GND 32
33 +BSY -B SY 34
35 +ACK -ACK 36
37 +RST -RST 38
39 +MSG -M SG 40
41 +SEL -SEL 42
43 +C/D -C /D 44
45 +REQ -REQ 46
47 +1/0 -I/O 48
49 GND GND 50
324 Anatomia PC

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

Praktyczna realizacja obciążenia końców linii


Praktyczna realizacja obowiązku obciążenia końców linii realizowana jest na różne
sposoby. Wytwórca danego urządzenia SCSI nie jest w stanie przewidzieć, jakie miej­
sce na magistrali (końcowe czy pośrednie) przypadnie w udziale jego produktowi. Musi
istnieć możliwość elastycznej konfiguracji w ramach potrzeb konkretnego systemu.

Sytuację komplikuje dodatkowo fakt, iż dyski z interfejsem symetrycznym nie są


wyposażane w rezystory obciążające. Rezystory takie umieszcza się w tym przypadku
jako pseudo-urządzenia na fizycznych końcach magistrali SCSI. Muszą one jednak być
jakoś zasilane!

Rozwiązaniu tego problemu służy wkomponowana w magistralę linia TERMPWR,


która może dostarczać zasilanie dla pakietów obciążających. O dużej elastyczności
takiego rozwiązania decyduje fakt, iż źródło zasilania i jego odbiornik (pakiet), łączone
linią TERMPWR, mogą się znajdować na różnych urządzeniach. Źródło zasilania może
być oczywiście dowolnie wybrane, ale tylko jedno.
i

W dyskach z interfejsem asymetrycznym pakiety rezystorów wykonane są w formie


wtykanych modułów i umieszczane w podstawkach, skąd mogą być w razie potrzeby
usunięte. Najczęściej spotykane wykonania tych modułów przedstawia rysunek 6.30.

Rysunek 6,30, OBUDOWA DiL-20 OBUDOWA SiL-9


Typowe obudowy
pakietów
zakończenia linii

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).
ł

Obsługa dysku twardego 325

Możliwości konfiguracji - interfejs asymetryczny


Rysunek 6.31. J-03 J-02
Przykład
konfiguracji GNIAZDO MAGISTRALI
+5V
linii TERMPWR SCSTASYMETR.
V ,r

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 na dysku nie jest wykorzystywane. Pakiet rezystorów zakończających


linię zasilany jest z zewnątrz przez linię TERMPWR. (J-02 Open, J-03 Close)
f

> Ź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)

Możliwości konfiguracji - interfejs symetryczny

Końcówki 25 i 26 (TERMPWR) nie są zasilane od strony dysku. (J-02 Open)

Źródło napięcia na dysku zasila końcówki 25 i 26 (TERMPWR). (J-02 Close)

Większość spotykanych dysków i kontrolerów dostępna jest jedynie w wersji asyme­


trycznej. Rodzaj interfejsu zakodowany jest najczęściej w ostatniej literze oznaczenia,
ale nie jest to regułą. Duże i szybkie nowoczesne dyski są coraz częściej wykonywane
w dwóch wersjach. Zdarzyć się więc może, że skojarzone zostaną ze sobą urządzenia
o odmiennych interfejsach. Na szczęście projektanci systemu SCSI wyposażyli go
w prosty mechanizm kontrolny, którego idea przedstawiona jest na rysunku 6.33.

**?:

fi* .
i ! '..*
326 Anatomia PC

Rysunek 6.32. J-02


Przykład
konfiguracji GNiAZDO MAGISTRALI
SCSI-SYMETR. +5V
linii TERMPWR ■■■i
d ^

>

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

Organizacja pracy magistrali SCSI


Konwencja oznaczania sygnałów
Wszystkie sygnały magistrali SCSI (zarówno sterujące, jak i danych) są zanegowane
i przyjęło się zapisywanie ich jako ~SYGNAŁ. Oznacza to, że interpretacja fizyczna
(poziomy napięć) jest odwróceniem stanów logicznych 0 i 1. Dla takich sygnałów obo­
wiązuje notacja przedstawiona w tabeli 6.13. W tej publikacji posługiwać się będziemy
dla uproszczenia zapisem SYGNAŁ, mając jednak stale na uwadze jego negację. Wszy­
stkie rysunki przebiegów opierać się będą na przyjęciu zasady, że obrazuje się stan
logiczny sygnału, a nie jego napięcie.

Tabela 6.13.
Fizyczna realizacja stanów logicznych sygnałów magistrali

Stan Realizacja fizyczna


logiczny Asymetryczna Różn icowa
1 (prawda) poziom niski (< 0,8 V) Linia + —» Linia -
0 (fałsz) poziom wysoki (> 2,4 V) Linia — >Linia +

W klasycznej i najczęściej stosowanej asymetrycznej magistrali SCSI poziomy napięć


utrzymują się w przedziale logiki TTL, tj. od zera do +5 V. Wymuszenie logicznej
jedynki czy też mówiąc inaczej stanu „prawdy” nazywać będziemy też aktywowaniem
danego sygnału. W przeciwnym razie sygnał będzie określany często mianem dezakty-
wowanego, a odpowiadająca mu linia mianem zwolnionej. Oznacza to, że jeżeli wykres
sygnału przebiega po osi OX (wartość logiczna 0), towarzyszy temu wysoki poziom
napięcia (zbliżony do +5 V). Wszystkie przewody magistrali są „podciągnięte” do
napięcia +5 V za pomocą rezystorów zakończenia linii. Tak więc sama magistrala (bez
urządzeń) utrzymuje swoje linie na tym poziomie. Urządzenie, które chce aktywować
dany sygnał, sprowadza potencjał odpowiadającej mu linii do poziomu bliskiego 0 V.
Proszę jednak zauważyć, że zwolnienie linii nie oznacza bynajmniej, iż musi ona się
„podnieść” do poziomu +5 V; inne urządzenie, które też ma dostęp do magistrali, może
przecież w tym czasie również aktywować ten sygnał. Zjawisko to nazywane jest często
„sumowaniem po drucie”, dla podkreślenia realizowanej tu funkcji sumy logicznej bez
udziału elementów aktywnych (np. bramek logicznych).

Fazy pracy magistrali


Faza w jakiej znajduje się magistrala daje się zawsze - a mówiąc dokładniej nie później
niż po czasie 400 ns (Bus Settle Delay), który należy uwzględnić na ustabilizowanie się
stanu sygnałów - jednoznacznie określić jako funkcja stanu sygnałów sterujących.

Standard SCSI definiuje następujące fazy:

• szyna wolna,

• współzawodnictwo,

i
328 Anatomia PC

• selekcja,

• reselekcja;

• fazy informacyjne:
• rozkazowa,
• danych,
• statusu,
• wiadomości;

• stany nadzwyczajne:
• zerowanie,
• uwaga.

O wyborze rodzaju fazy informacyjnej decyduje urządzenie TARG sterujące liniami


C/D, I/O i MSG tak jak to przedstawione jest w tabeli 6.15. TARG jest jedynym
uprawnionym do posługiwania się tymi sygnałami w fazach informacyjnych.

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.

Linia sygnału "S"

Punkt podłączenia urządzenia 1 >►


Punkt podłączenia urządzenia 2 >►

Urządzenie l Urządzenie_2 Stan logiczny sygnału „ S ”


zwalnia sygnał S zwalnia sygnał S 0
zwalnia sygnał S aktywuje sygnał S 1
aktywuje sygnał S zwalnia sygnał S 1
aktywuje sygnał S aktywuje sygnał S 1

Z sygnału dodatkowego RST może skorzystać każde urządzenie w dowolnym momen­


cie. Funkcja ATN natomiast może być wywołana tylko w ściśle określonym kontekście.

Prawa dostępu urządzeń do sygnałów sterujących i szyny danych w poszczególnych


fazach pracy magistrali SCSI zebrane są w tabeli 6.14.

Szyna wolna (ang. Bu$ Free)


W fazie BUS FREE (szyna wolna) żadne z urządzeń nie korzysta z magistrali SCSI.
Z drugiej strony jednak każde urządzenie może przystąpić do próby zawładnięcia magi­
stralą. Stan sygnałów kontrolnych przedstawiony jest na rysunku 6.34.
Obsługa dysku twardego 329

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.

Urządzenia wykrywają tę fazę na podstawie oceny poziomów sygnałów sterujących


SEL i BSY. Jeżeli oba te sygnały utrzymują się w stanie logicznego zera (czyli są
nieaktywne - odpowiada to wysokiemu poziomowi napięcia) przez czas co najmniej
400 ns, szyna jest w stanie Bus Free.

Urządzenie które wykryło tę fazę, ma obowiązek zwolnić wszystkie linie w maksy­


malnym czasie 800 ns. Innymi słowy można przyjąć, że najpóźniej po czasie 1.2 ps od
momentu ustanowienia BSY=SEL=0 wszystkie urządzenia odłączyły się od magistrali.

Faza BUS FREE ma miejsce w następujących sytuacjach:


• TARG zwalnia linię BSY w przypadku gdy:
• wykryto stan RESET,
• TARG odebrał wiadomość ABORT lub BUS DEVICE RESET,
330 Anatomia PC

Rysunek 6.34. Min. 400 ns (Bí/sSettle Delaÿl


Magistrala SCSI
w fazie Bus Free

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.

• TARG stwierdził nienormalne (nie ujęte w protokole) zachowanie magi­


strali;
• INIT zwalnia linię SEL w przypadku niepomyślnego zakończenia fazy
SELECTION lub RESELECTION (np. przekroczenie czasu oczekiwania na
odpowiedź).

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.

Faza współzawodnictwa (ang. Arbitration Phase)

W fazie współzawodnictwa następuje próba przejęcia szyny przez jedno z urządzeń.


Ponieważ może się zdarzyć, że próbę taką podejmuje jednocześnie kilka z nich, ko­
nieczne jest jednoczesne rozstrzyganie, które z nich takie współzawodnictwo wygrało.
Niezbędne zależności czasowe przedstawia rysunek 6.35.

Procedura rozstrzygania posługuje się następującym algorytmem:

• punktem wyjścia jest faza BUS FREE, tj. BSY = SEL - 0


• urządzenie wchodzące do współzawodnictwa aktywuje sygnał BSY (tj. wymusza
na nim niski poziom napięcia), a na szynie danych (DB0-DB7) magistrali kła­
dzie swój identyfikator SCSI-ID. Stan ten przedstawia rysunek 6.36;
Obsługa dysku twardego 331

Rysunek 6.35. Min. 400 ne \ABUS FREEM X Faza ARBITRATION


Magistrala SCSI (Bus Settle Delay
V \
BSY- 4
wfazie
Arbitration
SEL
Min. 2,4 ps
/
Tf (Arbitration Delay)

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

Rysunek 6.36. »Stan


nieokreślony
Szyna danych
magistrali SCSI
w fazie
Arbitration
DBP (parzystość)

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

»SCSUD#0

• wspomniane wyżej urządzenie odczekuje pewien okres czasu (Arbitration Delay)


i przechodzi do analizy stanu linii DB0-DB7. Możliwe są następujące przypadki:
• jedyną aktywną linią jest bit własnego identyfikatora,
• aktywna jest również jedna z linii o niższym adresie,
• aktywna jest również jedna z lini o wyższym adresie.

Waga dowolnego z bitów szyny danych ma tu wymiar liczby określającej priorytet


danego urządzenia (o tym właśnie adresie SCSI-ID). Priorytet ten rośnie wraz ze wzros­
tem tego adresu, tzn. najwyższy priorytet ma jednostka identyfikowana przez ID=7.

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:

• albo zakaz sterowania tą linią,

• albo sterowanie do poziomu logicznej jedynki (0V),

W fazie ARBITRATION stan tej linii jest więc całkowicie nieokreślony.

Wybór (ang. Selection Phase)


W fazie tej urządzenie które uzyskało dostęp do magistrali, staje się jednostką inicjującą
(INIT) przebieg dalszych działań i dokonuje selekcji jednostki docelowej (TARG), do
której będzie się zwracać. Taką wybieraną jednostką może być np. twardy dysk,
któremu będzie się zlecać wykonanie określonej funkcji, choćby czytanie bloku danych.
Charakterystyczny dla tej fazy jest brak aktywności sygnału sterującego I/O, co stanowi
podstawę do odróżnienia od opisywanej w następnym punkcie fazy reselekcji.

W prostych systemach, w których nie jest implementowana faza rozstrzygania, możliwe


jest bezpośrednie wejście (z fazy BUS FREE) urządzenia INIT do fazy wyboru. Sytu­
ację taką przedstawia rysunek 6.37.

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

Mamy tutaj następujący przebieg wydarzeń:


• INIT odczekuje co najmniej 800 ns od momentu wykrycia fazy BUS FREE;

• 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.

W systemach bardziej rozbudowanych wejście w fazę wyboru musi poprzedzać faza


rozstrzygania (ARBITRATION). Sytuację taką przedstawia rysunek 6.39.
Obsługa dysku twardego 335

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

min. 1200 ns mln. 90 ns


(Bus Clear Delay + 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. 4 5 n s ]-C z a s przeznaczony na kompensację różnic w czasach propagacji


sygnałów pomiędzy różnymi urządzeniami.

Podobnie i w tym przypadku:


• INIT odczekuje co najmniej 1.2 ps liczone od momentu aktywowania SEL (po­
zostałość po wygranej fazie ARBITRATION);
• INIT wystawia na szynę danych dwa identyfikatory SCSI-ID: swój oraz jed­
nostki TARG. Stan szyny danych jest w tym momencie taki, jak to już przedsta­
wiono na rysunku 6.38.
Uwaga:
W systemach, w których jest tyłko jeden INIT (brak fazy reselekcji) wystarczy
aktywować
ranej (TARG).
• INIT zwalnia linię BSY po odczekaniu co najmniej 90 ns. INIT musi teraz
odczekać co najmniej 400 ns zanim może spodziewać się odpowiedzi(w postaci
sygnału na linii BSY) od TARG.

Zarówno w prostych, jak i złożonych systemach urządzenie TARG ma prawo uważać


się za wybrane, gdy spełnione są następujące warunki:

• urządzenie wykrywa swój adres SCSI-ID na szynie danych;

• sygnał SEL jest aktywny;

sygnały BSY i I/O pozostają nieaktywne w czasie co najmniej 400 ns


336 Anatomia PC

O d p o w ie d ź :

Urządzenie które stwierdzi, że zostało wybrane powinno odpowiedzieć w przeciągu 200


ps aktywując linię BSY. Najpóźniej w 90 ns po uzyskaniu takiego potwierdzenia jed­
nostka wybierająca (INIT) musi zwolnić sygnał SEL. Dopiero w tym momencie do­
puszczalne są jakiekolwiek zmiany na szynie danych magistrali.

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 wybierająca nie otrzymuje oczekiwanej odpowiedzi w czasie250 ps


następuje tzw. przekroczenie czasu (ang. Time Out). Rozpoczyna się następująca sek­
wencja:
• INIT aktywuje linię RST, aby wywołać stan RESET;
• INIT steruje sygnał SEL i zwalnia szynę danych (obydwa SCSI-ID);
• przez okres czasu 200 ms oczekiwana jest odpowiedź od TARG. Jeżeli odpo­
wiedź mimo tego nie nadchodzi, INIT zwalnia SEL i pozwala wejść magistrali
w fazę BUS FREE;

• jeżeli odpowiedź nadejdzie w powyżej określonym czasie INIT uznaje, że faza


SELECTION zakończyła się pomyślnie.

Reselekcja (ang. Reselection)


W fazie tej następuje ponowne nawiązanie kontaktu między INIT i TARG, przy czym
tym razem inicjatywa wychodzi ze strony TARG. System taki pozwala na natychmias­
towe zwolnienie magistrali (tuż po przekazaniu rozkazu) i oddaniu jej do dyspozycji
innych urządzeń.

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.

Stan magistrali SCSI w fazie RESELECTION przedstawiony jest na rysunku 6.40.


Obsługa dysku twardego 337

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;

• TARG musi odczekać 1.2 ps od momentu w którym aktywował SEL;

• TARG wystawia na szynę danych DB0-DB7, DBP identyfikatory SCSI-ID


swoje i tej jednostki INIT, z którą zamierza się powtórnie połączyć. Stan szyny
danych w tym momencie przedstawiony jest na rysunku 6.41.
y

Po wystawieniu identyfikatorów adresowych aktywowany jest sygnał sterujący I/O.

• TARG odczekuje 90 ns i zwalnia sygnał BSY;

• TARG odczekuje co najmniej 400 ns na odpowiedź (BSY) od jednostki INIT.


338 Anatomia PC

Rysunek 6.41. ♦Parzystość może być


kontrolowana
Stan szyny
danych w fazie
reselekcji

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:

• sygnały SEL i I/O są aktywne;

• sygnał BSY jest wyłączony przez co najmniej 400 ns;

• na szynie danych znajduje się własny adres SCSI-ID.

Wywołane urządzenie udziela odpowiedzi w postaci sygnału BSY. Odpowiedzi należy


udzielić w czasie krótszym od 200 ps.

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.

Jeżeli organizator fazy RE SELECTION (tzn. TARG) otrzyma odpowiedź od inicjatora


w postaci wspomnianego impulsu na linii BSY zwalnia sygnał SEL (po czasie max. 90
ns). Inicjator upewniwszy się, że SEL został zwolniony, zwalnia w odpowiedzi na to
sygnał BSY.

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;

• TARG steruje sygnał SEL i zwalnia szynę danych (obydwa SCSI-ID);

• 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;

• jeżeli odpowiedź nadejdzie w powyżej określonym czasie TARG uznaje, że faza


RESELECTION zakończyła się pomyślnie.

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.

Do grupy faz informacyjnych zaliczane są:


• faza rozkazowa (COMMAND),
• faza danych (DATA),
• zwrot statusu (STATUS),
• przekazywanie wiadomości (MESSAGE).

Obraz przebiegów na magistrali w czasie realizacji powyższych faz informacyjnych


przedstawia rysunek 6.42.

W fazie COMMAND przekazywane są rozkazy do jednostki TARG.


340 Anatomia PC

Rysunek 6.42. Linia Linia Linia Na szynie


danych (DB)
Kierunek Nazwa cyklu
C/D I/O MSG
Magistrala SCSI
0 0 0 Dane {DATA) INIT -> TARG DATA OUT
w fazach 0 1 0 Dane (DATA) TARG -> INIT DATA IN
Rozkazy {COMMANty
informacyjnych 1
1
0
1
0
Status {STATUS}
INIT -> TARG
TARG -► INIT
COMMAND
STATUS
0
0 0 1 — Vw stan zabroniony
0 1 1 —
stan zabroniony
1 0 1 Wiadomość (Message) INIT TARG MESSAGE OUT
1 1 1 Wiadomość (Message) TARG -> INIT MESSAGE IN

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.

Dane mogą być oczywiście przesyłane w obydwu kierunkach: zarówno od TARG do


INIT, jak i od INIT do TARG. Z tego względu faza DATA może przyjąć jedną z dwóch
postaci: dane wychodzące (do INIT), czyli DATA OUT i napływające (do INIT), czyli
DATA IN.

W fazie statusowej jednostka TARG składa krótki raport z wyników przeprowadzonej


operacj i.

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ę.

Zestaw sygnałów sterujących musi pozostać niezmieniony co najmniej przez czas


trwania cyklu przekazu jednego bajtu, tzn. do nadejścia tylnego zbocza impulsu po­
twierdzającego ACK. W tym momencie jednak TARG jest już upoważniony do zmiany
kombinacji trójki I/O-C/D-MSG w celu wywołania innej fazy informacyjnej (stosownie
do kontekstu). Te trzy sygnały sterujące mogą się zmieniać jednocześnie lub niezależ­
nie, ale nowa, określona przez nie faza rozpocznie się dopiero w momencie wystąpienia
impulsu na linii REQ (a ściśle jego przedniego zbocza).

Transfer danych w fazach informacyjnych

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 TARG -» INIT. TARG ustanawia ten kierunek transmisji


aktywując sygnał sterujący I/O. Kolejne bajty informacyjne przepływają szyną
danych DB0-DB7, DBP według następującego schematu:
• TARG kładzie na liniach DB0-DB7, DBP bajt danych i aktywuje REQ.
Obraz szyny danych nie może ulegać zmianom aż do czasu nadejścia do
TARG potwierdzenia, którym jest przednie zbocze impulsu ACK;
• INIT zdejmuje bajt danych linii DB0-DB7, DBP (tzn. zatrzaskuje go
w swoim buforze) po tym jak stwierdzi aktywność sygnału REQ. W od­
powiedzi na ten impuls aktywowany jest (przez INIT) sygnał ACK;
• TARG przyjąwszy potwierdzenie w postaci ACK zwalnia z kolei linię
REQ. Teraz można już zmienić obraz szyny danych (przesyłając ewentu­
alnie następny bajt);
• INIT zwalnia ACK po rozpoznaniu zwolnienia REQ;
• powyższy cykl może się powtarzać; zostanie przekazany następny bajt.

• 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ń.

INIT wystawia na linie DB0-DB7, DBP bajt danych i aktywuje ACK.


Stan szyny danych należy utrzymać do czasu stwierdzenia (przez INIT),
że zwolniony został REQ;
TARG zdejmuje bajt z szyny danych po wykryciu aktywności ACK, po
czym zwalnia REQ dla potwierdzenia odbioru;
INIT stwierdza zwolnienie REQ i zwalnia ACK. Dopiero w tym momen­
cie stan szyny danych może ulec zmianie;
TARG przystępuje do wyzwolenia akcji przesłania następnego bajtu, gdy
stwierdzi zwolnienie ACK;
cykl może się powtarzać. TARG aktywuje REQ i jesteśmy na początku
cyklu.

Prędkość transmisji danych


Na prędkość przesyłania danych magistralą SCSI w trybie asynchronicznym składa się
kilka czynników. Są one przedstawione na rysunku 6.44.
344 Anatomia PC

Rysunek 6.44. / \
REQ y
Pojedyncza para
impulsów
REQ/ACK
ACK

«— n—

Składowe Tl i T2 reprezentująnastępujące elementy:


Tl = Tl* + 2a
T2 = T2' + 2a
gdzie:
T l'—opóźnienie między aktywowaniem impulsu REQ, a stwierdzeniem aktywności
ACK, mierzone na końcówkach INIT; przyjmuje się lOOns.
T2'—opóźnienie między zwolnieniem linii REQ, a stwierdzeniem zwolnienia linii
ACK, mierzone na końcówkach INIT; przyjmuje się 150ns.
a -opóźnienie sygnału na jednostkę długości przewodu; zakłada się 15 ns/m.

Zgodnie z rysunkiem 6.44 częstotliwość z jaką transportowane są poszczególne bajty


danych wyraża się następującą formułą:

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

Długość magistrali [m] 1 2 3 4 5 6

Prędkość transmisji [MB/s] 2,78 2,38 2,09 1,85 1,67 1.52

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

mającymi ją stosować urządzeniami. Odbywa się to na drodze wymiany wiadomości


Synchronous Data Transfer Request. Wymiana ta stanowi uzgodnienie tzw. parametrów
transmisji synchronicznej:
• RAO - liczbę impulsów REQ, które może wysłać TARG zanim otrzyma sygnał
potwierdzający ACK tj. REQ/ACK Offset;
• TP - minimalna długość okresu sygnału REQ (i ACK), ty Transfer Period.

Uwaga:
Zarówno moment włączenia napięcia zasilania, jak i wywołanie funkcji RESET wpro­
wadza magistralę w tryb asynchroniczny.

Przebiegi sygnałów podczas synchronicznego trybu transmisji danych prezentuje rysu­


nek 6.45.

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.

Jak wspomniałem wcześniej tryb synchroniczny jest dozwolony w fazach DATA IN


oraz DATA OUT. Mamy więc przypadki transmisji w dwóch kierunkach, oba przed­
stawione na rysunku 6.45,
• Kierunek TARG -> INIT. TARG ustanawia powyższy kierunek transmisji po­
przez aktywowanie linii I/O. Wymiana danych przebiega według następującego
algorytmu:
• TARG wystawia bajt na szynę danych i wysyła impuls REQ;
• z zachowaniem zależności czasowych przedstawionych na rysunku 6.39
ma miejsce powtórzenie punktu (a) tyle razy, by nie przekroczyć uzgod­
nionej wartości parametru RAO;
• INIT odbiera dane w takt nadchodzących do niego impulsów REQ;
• INIT wysyła tyle impulsów ACK, ile odebrał bajtów danych.
• Kierunek TARG INIT. TARG ustanawia powyższy kierunek transmisji po­
przez zwolnienie linii I/O. Wymiana danych przebiega teraz według następują­
cego algorytmu:
• TARG wysyła impuls REQ czym pobudza INIT do wystawienia bajtu na
szynę danych. Po wystawieniu bajtu INIT wysyła impuls ACK;
346 Anatomia PC

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

Deskew Delay + Deskew Delay t


Cable Skew M a y Cable Skew Delay +
Herid Time

I/O

REQ X \ X \
ACK X \ X
DB X Valid Valid

mln. 55ns mln. 100ns

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

• TARG odbiera dane w takt nadchodzących do niego impulsów ACK. |


i
e
>

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

Tryb synchroniczny „fast” j


Tryb ten jest przyspieszoną odmianą trybu synchronicznego i ma miejsce, gdy urzą­
dzenia uzgadniają parametr TP krótszy od 200 ns. Najmniejsza dopuszczalna wartość
tego parametru wynosi 100 ns. Tak więc tryb fast leży w zakresie 100 < TP < 200.
!
f

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

Prędkość transmisji danych i


t
s
'/

Schemat przebiegu transmisji danych w trybie synchronicznym, rozważany pod kątem j


osiąganej prędkości przedstawia rysunek 6.47. Parametry transmisji synchronicznej j
muszą być uzgadniane między INIT i TARG przed rozpoczęciem przekazywania [
danych. j
5
<

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 = 1000 / TP [MB/s];

• 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

Fast Deskew Delay + Fast Deskew Delay +


Fast Cable Skew Delay Fast Cable Skew Delay +
Fast Hold Time

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
--------------------

Parametr Wartość Max prędkość [MB/s]


. Uwagi
Offset REQ/ACK 2-15
0x19 10 Odpowiada TP 100-

ns, (TP < 200; FAST)


0xlf 8 Odpowiada TP = 125
ns, (TP < 200; FAST)
Minimalny okres 0x25 6,7 Odpowiada TP 150-

impulsu REQ ns, (TP < 200; FAST)


(Transfer Period) 0x2b 5,7 Odpowiada TP = 175
ns, (TP < 200; FAST)
0x32 5 TP = 200 ns
0x38 4,4 TP - 225 ns
m ■ m • ■ »

0xcl 1,3 TP - 775 ns


0xc8 1,2 TP - 800 ns

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

Zmiana kierunku transmisji


O rodzaju fazy informacyjnej, a tym samym o kierunku przepływu informacji szyną
danych decyduje wyłącznie TARG. Z aktualnego kontekstu może oczywiście wynikać
przejście międzyfazowe, w którym zmianie ulega kierunek przepływu informacji (np.
DATA IN na MESSAGE OUT). W przedziale czasu dzielącym takie dwie fazy,
sygnały sterujące magistrali muszą spełniać określone warunki:
• linie BSY, SEL oraz REQ i ACK nie mogą się zmieniać;

• 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.

Omówione warunki czasowe zobrazowane zostały na rysunku 6.48.

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.

Dzięki istnieniu funkcji ATTENTION inicjator może natomiast zasygnalizować, że ma


do przekazania wiadomość (MESSAGE) dla TARG. Stan sygnałów sterujących magi­
strali SCSI w trakcie realizacji tej funkcji oraz towarzyszące jej uzależnienia czasowe
przedstawiają wykresy na rysunku 6.49.

Rysunek 6.49.
Realizacja
funkcji Attention

INIT w fazie MESSAGE OUT przekazuje


3 bajty danych, będących wiadomością dla TARG

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

• Aktywowanie ATN. Inicjator wywołuje funkcję ATTENTION aktywując linię


ATN w dowolnym momencie, za wyjątkiem trwania faz ARBITRATION lub
BUS FREE.
W fazach informacyjnych inicjator powinien informować TARG o zamiarze wy­
wołania tej funkcji zanim TARG przejdzie do następnej fazy, czyli na co
najmniej 90 ns przed tylnym zboczem impulsu ACK potwierdzającego ostatni
bajt bieżącej fazy. Jeżeli warunek ten nie zostanie spełniony, TARG może
przyjąć zgłoszenie ATN dopiero pod koniec kolejnej fazy, co niekoniecznie musi
być zgodne za zamierzeniami INIT.

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

W odpowiedzi na wywołanie funkcji ATTENTION TARG musi wejść w fazę MES-


SAGE OUT. Dokładny moment wejścia zależny jest od bieżącej sytuacji i określany
następująco:

• w fazie COMMAND: natychmiast po dokończeniu cyklu przesłania dowolnego


z bajtów składowych CDB, niezależnie od tego, czy był to już bajt ostatni.
• w fazie DATA: po dokończeniu bieżącej fazy.

• w fazie STATUS: po dokończeniu przesłania baj tu statusowego.


• w fazie MESSAGE: po zakończeniu przekazu bieżącej wiadomości.

• w fazie SELECTION: natychmiast po zakończeniu fazy.

• w fazie RESET: po zakończeniu przesłania wiadomości IDENTIFY

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

Funkcję RESET może wywołać każde z podłączonych do magistrali urządzeń, jeżeli


aktywuje linię RST na czas dłuższy od 25 ms. Stan wszystkich innych linii magistrali
jest w tym przedziale czasowym (tzn. gdy RST jest aktywne) nieokreślony. Przebieg
realizacji tej funkcji przedstawia rysunek 6.50.

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.

Dyski twarde nie mają zaimplementowanej możliwości wywoływania tej funkcji;


muszą ją natomiast obsługiwać. Obsługa taka obejmuje oprócz obowiązkowego zwol­
nienia linii magistrali następujące punkty:
• przerwanie wykonywania aktualnego rozkazu;
• usunięcie rozkazów oczekujących w kolejce (Queue);
• przestają obowiązywać uzgodnione parametry transmisji w trybie synchronicz­
nym i przywracany jest tryb asynchroniczny;
• niszczony jest blok poszerzonych danych statusowych (Sense Data);
• unieważnione zostają dane w buforze dysku, które odczytane zostały w ramach
akcji „czytania z wyprzedzeniem” (Read A head).

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: ...
ł **

Bajt ostatni: Bajt kontrolny

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 ±

Pole grupowe może przyjąć jedną z następujących wartości:


0: rozkazy 6-bajtowe;
1: rozkazy 10-bajtowe;
354 Anatomia PC

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

Rysunek 6.52, BIT: 7 6 5 4 3 2 1 0


Format rozkazów Kod operacji BAJTO
i i
6-bajtowych
LUN Adres bloku logicznego (MSB) BAJT 1
i ..... 1 f ł I 1

A<Ires bloku logicznego BAJT 2


t i i

Adres bloku logicznego (LSB) BAJT 3


i_._ i i t -i i i
t l i l i I I
Długość transmitowanych danych BAJT 4

Bajt kontrolny BAJT 5


----- 11-----------------------1
... ------ ----------------- i------- ....... .------ 1L
L ii .........---------- >'----------------- ^ 1
-----------------------■L. .......—
----------------------
m

Rysunek 6.53. BIT: 7 6 5 4 3 2 1 0


i i i
Format rozkazów Kod operacji BAJT 0
10-bajtowych
LUN 0 0 0 0 REL BAJT 1
T“ .........
Adres bloku logicznego (MSB) BAJT 2
T 1---------j—
Adres bloku logicznego BAJT 3
i---------- 1-------- 1—
Adres bloku logicznego BAJT 4
T 1---------- 1-------- r T
Adres bloku logicznego (LSB) BAJT 5

0 0 0 0 0 0 0 0 BAJT 6

Długość transmitowanych danych (MSB) BAJT 7


1--------- j--------- 1--------- 1--------- 1--------- r T
Długość transmitowanych danych (LSB) BAJT 8
i T ^--------- 1--------- r r

Bajt kontrolny BAJT 9

Ze względu na kompatybilność zachowane jest 3-bitowe pole LUN, które identyfikuje


logiczny numer podrzędnej jednostki będącej pod opieką tego samego urządzenia
TARG; standard dopuszcza istnienie do 8 takich jednostek. Obecnie, nawet jeśli tak
jest, są one administrowane logicznie jako kolejne bloki danych i obowiązuje usta­
wienie LUN = 0.

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

w jednej sesji z urządzeniem kolejkującym po czym przejść do urządzenia, które nie


kolejkuje. Pod tym względem istnieje duża elastyczność. Kolejkowanie jest pewną
funkcją luksusową, która nie jest niezbędna.

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.

W kierunku przeciwnym, podczas kolejnych połączeń TARG z inicjatorem (fazy


reselekcji) odpowiednia wiadomość wysyłana jest w ślad za obowiązkową IDENTIFY.
Wspomniane wiadomości umożliwiają realizację elementarnych operacji wprowadzania
nowego procesu na stos rozkazów:
• umieść na szczycie stosu (0x21, Head o f queue tag). Wiadomość nakazuje umie­
szczenie procesu jako pierwszego w kolejce. Umieszczanie odbywa się zgodnie
z porządkiem LIFO (Last-In-First-Out, Wszedł jako ostatni, a wyszedł jako pier­
wszy). Nie ma to wpływu na proces aktualnie realizowany. Nowy proces zosta­
nie wykonany natychmiast po zakończeniu bieżącego, chyba że w międzyczasie
nadejdzie kolejna taka wiadomość;
• umieść na bieżącej pozycji (0x22, Ordered queue tag). Inicjator nakazuje wpro-
chronologią wydarzeń
napłynął jako
wykonany
wcześniejszymi;
• umieść w kolejce (0x20, Simple queue tag). W dokładnym tłumaczeniu: umieść
po prostu w kolejce. Inicjator nie precyzuje tu żądanej pozycji pozostawiając tę
decyzję w gestii TARG.

Inicjator może zażądać przerwania wykonywania aktualnego procesu (wiadomość 0x0d,


Abort Tag). Powoduje to przejście do następnego oczekującego w kolejce. Można też
postąpić bardziej radykalnie i zlikwidować całą kolejkę (wiadomość 0x0e, Clear
Queue). Przedtem jednak zostanie zatrzymany również bieżący proces.

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

Status przekazywany jest na zakończenie każdego rozkazu, chyba że zaistnieje jedna


z poniższych okoliczności:

• odebrano wiadomość ABORT lub BUS DEVICE RESET;


• wykonywanie rozkazu przerwało wywołanie funkcji RESET;

• zostało wymuszone nienaturalne wejście magistrali w fazę BUS FREE;

Konstrukcja bajtu statusowego przedstawiona jest na rysunku 6.55.

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

W bajcie tym mogą być zakodowane następujące stany:


• STATUS GOOD: wykonanie rozkazu zostało zakończone pomyślnie;

• STATUS CHECK CONDITION: w trakcie wykonywania rozkazu wystąpił błąd,


rozkaz jest niemożliwy do wykonania, wystąpił stan wyjątkowy lub nienormalne
zakończenie. INIT powinien w tej sytuacji użyć rozkazu REQUEST SENSE dla
zbadania przyczyn nienormalnego zachowania się systemu. TARG przygotowuje
na tę okoliczność specjalny zestaw danych informacyjnych, tzw. SENSE DATA;
• STATUS BUSY: oznacza, że TARG jest zajęty wykonywaniem aktualnego roz­
kazu i do czasu zakończenia nie może przyjąć nowego. Przyczyną takiego stanu
rzeczy może być (w przypadku twardego dysku):
• rozkazy nie są kolejkowane, a bieżący jest właśnie wykonywany,
• rozkazy są kolejkowane ale kolejka jest przepełniona,
• kontroler dysku jest w trakcie przeprowadzania procesu samokontroli,
kalibracji termicznej itp.
INIT może ponowić próbę wysłania bieżącego rozkazu po odczekaniu pewnego
czasu.
• STATUS INTERMEDIATE GOOD: pozytywne zakończenie realizacji każdego
z cząstkowych rozkazów pewnego rozkazu łańcuchowego (LINKED COM­
MAND), za wyjątkiem ostatniego w łańcuchu;
Obsługa dysku twardego 359

• STATUS RESERVATION CONFLICT: może wystąpić w systemach, w których


pracuje więcej niż jedno urządzenie mogące pełnić rolę inicjatora (INIT). TARG
może być chwilowo związany z innym inicjatorem niż ten, który się aktualnie do
niego zwraca. INIT ma możliwość ponowienia próby przekazania rozkazu po
pewnym czasie;

• STATUS QUEUE FULL: kolejka grupująca rozkazy jest pełna. I tym razem
odczekanie powinno prowadzić do rozwiązania problemu.

Po wysłaniu baj tu statusowego TARG przekazuje zwykle wiadomość COMMAND


COMPLETE (ewentualnie LINKED COMMAND COMPLETE).

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).

Tabela 6.20 przedstawia kompletny zbiór wiadomości zdefiniowanych przez standard.


Tylko nieliczne z nich są wykorzystywane przez twarde dyski. Protokół SCSI wymaga
jednak od każdego urządzenia implementacji co najmniej jednej podstawowej wiado­
mości: COMMAND COMPLETE.

Powróćmy na chwilę do fazy SELECTION. W fazie tej ma miejsce aktywowanie SEL i


zwolnienie BSY. Pierwszą wiadomością jaką musi przekazać INIT do TARG po fazie
SELECTION jest IDENTIFY (patrz rysunek 6.61a). Jest to jednocześnie pierwsza
wiadomość przekazywana po wyjściu z fazy RESELECTION (rysunek 6.6 Ic).

Wszystkie wiadomości zbudowane są według tego samego schematu przedstawionego


na rysunku 6.56. Mogą one być wielobajtowe, ale bajt pierwszy jest zawsze kodem
wiadomości.

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

SYGNATURA „n" DLUGOSC KOD LISTA


Wiadomość rozszerzona
00000001 I WIADOMOŚCI I OPERACJI i PARAMETRÓW
360 Anatomia PC

Tabela 6.20,
Zestaw wiadomości systemu SCSI

| Kod | Wiadomość Kierunek transmisji ATN


1 Wiadomości jednobajtowe
loo | Command Complete TARG -» INIT
02 | Save Data Pointers TARG -» INIT
03 | Restore Pointers TARG -> INIT
04 1Disconnect TARG INIT
05 | Initiator Detected Error TARG -> INIT *
106 | Abort TARG <r- INIT *
07 | Message Reject TARG o INIT *
08 1No Operation TARG <- INIT *
I 09 | Message Parity Error TARG <- INIT *
1Oa Linked Command Complete TARG -» INIT
Ob | Linked Command Complete With Flag TARG -> INIT
Oc | Bus Device Reset TARG INIT *

Od | Abort Tag TARG <- INIT *

Oe | Clear Queue TARG <- INIT


| Continue I/O Process TARG -> INIT
12
| Target Transfer Disable TARG -» INIT
13
180:ff Identify TARG o INIT
| Wiadomości dwubajtowe
I 20 Simple Queue Tag TARG INIT *

Head o f Queue Tag TARG <- INIT *


21
| 22 Ordered Queue Tag TARG <- INIT *

I Wiadomość poszerzona (5 bajtów)


|01 Synchronous Data Transfer Request TARG o INIT *

Z grupy wiadomości jednobajtowych wymagana jest implementacja kodu 0x00, co gwa­


rantuje poprawne przeprowadzenia standardowych operacji wejścia/wyjścia. Inne wia­
domości są nieobowiązkowe. Jeżeli jednak w systemie pracuje jakieś urządzenie, które
implementuje dodatkowe wiadomości, musi istnieć możliwość ich odrzucania przez
urządzenia wyposażone jedynie w 0x00h. Służy temu wiadomość MESSAGE REJECT.

Jeżeli ponadto magistrala pracuje z kontrolą parzystości wymagane jest implemento­


wanie wiadomości MESSAGE PARITY ERROR dla obsługi ewentualnie wykrytych
błędów.

Grupa wiadomości dwubajtowych nie jest w ogóle używana przez dyski twarde.
Obsługa dysku twardego 361

Kod 0x01 wprowadza wiadomości wielobajtowe o długości określonej w drugim bajcie


(maksymalna długość 256 bajtów, dla n = 0).

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 )

Wiadomość ta przekazywana jest inicjatorowi w fazie MESSAGE IN. Oznacza ona, że


wydany rozkaz (pojedynczy lub ostatni z grupy połączonych) został zakończony
(niekoniecznie sukcesem). Dokładniejsze informacje otrzyma INIT w następującej zaraz
po tym fazie STATUS.

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 )

TARG informuje inicjator, że będzie się odłączał od magistrali. Rozłączenie to polega


na zwolnieniu sygnału BSY, co wprowadza szynę w stan BUS FREE. Dla ponownego
połączenia urządzeń i dokończenia wymiany danych konieczna jest faza resełekcji.

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 )

TARG informuje, że zachowanie inicjatora jest niezgodne z protokołem komunika­


cyjnym.

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)

Inicjator informuje TARG o wystąpieniu błędu parzystości.


362 Anatomia PC

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 )

Zakończono wykonywanie rozkazu będącego składową łańcuchowej grupy rozkazów.


Szczegóły w fazie STATUS.

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 )

Inicjator poleca jednostce TARG przeprowadzenie wyzerowania. Zakres przeprowadza­


nych czynności zależy od rodzaju urządzenia i obejmuje przywrócenie pewnych stan­
dardowych wartości parametrów i sprowadzenie elementów do określonego stanu po­
czątkowego.

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 )

Wiadomość ta umożliwia przerwanie pracy bieżącego polecenia i przejście do realizacji


następnego. Dotyczy mechanizmu kolejkowania rozkazów.

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 )

Wiadomość ta umożliwia przerwanie pracy bieżącego polecenia i usunięcie z kolejki


wszystkich oczekujących jeszcze procesów. Dotyczy mechanizmu kolejkowania
rozkazó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 )

Wiadomości określają różne sposoby umieszczania rozkazów w kolejce. Wszystkie trzy


są dwubajtowymi wiadomościami zbudowanymi według tego samego schematu przed­
stawionego na rysunku 6.57.

Rysunek 6.57. BIT: 7 6 5 4 3 2 1 0


1r.......... i--------------------------1 i-------------1---------- i
Format Kod wiadomości (0x20,0x21 lub 0x22) BAJTO
1 1 I 1 1
wiadomości 0 0 BAJT 1
Queue Tag
0x20-0x22 i i —i-------------1-------------1-------------

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ści te nie są implementowane przez większość dysków SCSI. Realizują me­


chanizm zamiany ról inicjatora i jednostki docelowej. Kod 0x13 powoduje, że w następ­
nej fazie resełekcji TARG nie będzie występował z żądaniem połączenia z INIT.
Obsługa dysku twardego 363

Jednostka docelowa musi wtedy czekać, aż inicjatywa powtórnego połączenia wyjdzie


od inicjatora. Nasuwa się tu nieodparcie analogia z metodą nazywaną polling, zgodnie
z którą CPU odpytuje pewne urządzenia zewnętrzne.
t

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 )

Identyfikowanie jednostki LUN konieczne jest dla ustanowienia „ścieżki logicznej”


prowadzącej od urządzenia jako całości (TARG lub INIT) do podległej mu
elementarnej jednostki składowej. Wiadomość ta przekazywana jest przez INIT po
wyjściu z fazy selekcji, a przez TARG po zakończeniu fazy reselekcji. Jest ona
zachowana jedynie ze względów historycznych, a dla dysków twardych w ogóle nie ma
żadnego znaczenia. Konstrukcja jednobajtowej wiadomości IDENTIFY przedstawiona
jest na rysunku 6.58.

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 )

Wiadomość ta, wymieniana pomiędzy dwoma urządzeniami służy uzgodnieniu para­


metrów transmisji synchronicznej: RAO (REQ/ACK Offset) i TP (Transfer Period). Ry­
sunek 6.59. przedstawia konstrukcję i znaczenie poszczególnych bajtów tej wiadomości.

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.

W obydwu przypadkach następuje uzgodnienie wartości parametrów zawartych w od­


powiedzi. W trakcie następującej po uzgodnieniu wymiany danych żadne z urządzeń
nie może przekroczyć granicznych wartości zadeklarowanych przez drugą stronę.
Dozwolone jest więc nadawanie z parametrami TP i RAO spełniającymi warunki:
TP > TPa
RAO < RAOa
gdzie:
TPa i RAOa są uzgodnionymi parametrami transmisji synchronicznej.

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.

Ze względu na stosowanie mechanizmu selekcji i reselekcji (różne urządzenia łączą się


ze sobą po czym rozłączają zwalniając szynę) istnieje konieczność zabezpieczania
zestawu wskaźników aktualnych w celu ich późniejszego wykorzystania (w kolejnej
fazie reselekcji). W tym czasie ich miejsce zajmuje inny przywołany z pamięci zestaw,
który odpowiada aktualnemu połączeniu. Dla każdego aktywnego, tj. będącego w trakcie
Obsługa dysku twardego 365

realizacji rozkazu istnieje zestaw wskaźników i to niezależnie od tego, czy połączenie


między jednostkami TARG i INIT ma aktualnie miejsce. Omawiana tu organizacja sys­
temu wskaźników przedstawiona jest na rysunku 6.60.

Rysunek 6.60. INIT

Konfiguracja _ WSKAŹNIK BIEŻĄCY PAMIĘĆ


wskaźników
SCSII

_ WSKAŹNIK ZACHOWANY

c *1 X, iii
iii
D Yt
iii
S *1 Z, Z*

TARG

LUNO

LUN 1

TARG
LUNO

Dowolny z inicjatorów może pozostawać w kontakcie z wieloma jednostkami logicz­


nymi będącymi pod opieką różnych urządzeń TARG. W wydzielonym obszarze prze­
znaczonym przez INIT na wskaźniki zachowane znajdują się trójki wektorów, z których
każda przynależy do jednego z urządzeń logicznych. Poszczególne wektory takiej trójki
mają następujące znaczenie:
C- wskaźnik na blok rozkazowy,
D - wskaźnik na blok danych,
j

S- wskaźnik na blok statusowy.

Na początku cyklu realizacji każdego rozkazu poszczególne składowe zestawu zacho­


wanego wskazują na określone przynależne sobie bloki w pamięci do chwili odebrania
przez INIT wiadomości Save Data Pointer. W tym momencie następuje przepisanie
składowych zestawu bieżącego do odpowiadających sobie pól w obszarze wskaźników
zachowanych.

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

Przykładowa wymiana danych


Mechanizm przejść magistrali w kolejne fazy odbywa się według ściśle określonego
algorytmu, którego nie będę tu przytaczał ze względu na stopień jego komplikacji.
Wystarczy wspomnieć, że poza nielicznymi wyjątkami, bazującymi na wykorzystaniu
funkcji RESET i ATTENTION, nie jest możliwe przejście z każdej fazy do dowolnej
innej. Przytoczę tu tylko prosty przykład przebiegu realizacji konkretnej operacji:
odczytu bloku danych z dysku. Rolę inicjatora (INIT) pełni kontroler magistrali SCSI,
a jednostką docelową (TARG) jest dysk twardy.

Oto krótkie wyjaśnienia zjawisk zachodzących na magistrali w przedziałach czasowych


oznaczonych literami A -N :
A- zwolnienie linii BSY w sytuacji gdy SEL = 0 wprowadza magistralę
w stan BUS FREE. Wszystkie urządzenia zaprzestały sterowania
jakichkolwiek sygnałów;
B- INIT zdobywa dostęp do magistrali przechodząc jako zwycięzca (Winner)
przez fazę rozstrzygania (ARBITRATION);
C- INIT wywołuje funkcję ATTENTION w fazie SELECTION. Na szynie
danych znajdują się identyfikatory SCSI-ID kontrolera i dysku;
D- TARG wykrywa funkcję ATTENTION i odpowiada na nią wejściem
w fazę informacyjną MESSAGE OUT aktywując kombinację I/O = 0,
C/D = MSG = 1. Pojedyncza sekwencja REQ/ACK powoduje przesłanie
jednego bajtu od INIT do TARG. Jest to wiadomość IDENTIFY;
E- nowa kombinacja sygnałów sterujących I/O = MSG = 0, C/D = 1 oznacza
fazę informacyjną COMMAND. W stanie tym dysk odbiera od kontrolera
rozkaz określony grupą bajtów CDB (Command Descriptor Block). Bajty
te przesyłane są szyną danych w trybie asynchronicznym. W tym
przykładzie zakładamy, że jest to rozkaz READ;
F- dysk po otrzymaniu rozkazu przystępuje do jego realizacji. Wiadomo jest,
że do uformowania kompletnego bloku logicznego w pamięci buforowej
dysku potrzeba stosunkowo dużo czasu. TARG postanawia więc oddać
szynę dla potrzeb innych urządzeń (o ile takie istnieją). Kombinacja MSG
= I/O ~ C/D = 1 powoduje wejście w fazę informacyjną MESSAGE IN
(wysyłam wiadomość do INIT). Treścią tej jednobajtowej wiadomości
jest DISCONNECT czyli postanowienie rozłączenia;
G- magistrala wchodzi w stan BUS FREE i pozostaje w nim do czasu, gdy
jedno z urządzeń wejdzie w fazę ARBITRATION;
H- TARG (dysk) jest już gotów do przekazywania danych, więc stara się
uzyskać dostęp do magistrali (konieczna jest ewentualnie faza
ARBITRATION);
I- TARG inicjuje fazę RESELECTION (na szynie danych identyfikatory
adresowe SCSI dysku i kontrolera ale I/O = 1 w odróżnieniu od fazy
SELECTION), by wznowić kontakt z inicjatorem (kontrolerem SCSI)
nawiązany w punkcie C;
Obsługa dysku twardego 367

J- TARG zarządza wejście w fazę MESSAGE IN i wysyła do kontrolera


wiadomość IDENTIFY zawierającą numer jednostki logicznej LUN
żądającej połączenia. Numer ten w przypadku dysków twardych jest i tak
zawsze równy zero, ale procedura ta jest przeprowadzana dla zachowania
zgodności z protokołem;
K- TARG wprowadza szynę w fazę DATA IN (C/D = MSG = 0 , 1/O = 1)
i przystępuje do przekazywania danych. Liczba bajtów, które zostaną
przesłane, określona została w punkcie E w ramach rozkazu READ.
Każdy przekazany bajt potwierdzany jest parą impulsów REQ/ACK.
Ma tu miejsce asynchroniczny tryb przekazywania danych; brak było
wcześniejszego uzgodnienia parametrów trybu synchronicznego;
L- Zakończeniu przesyłania danych towarzyszy wejście w fazę STATUS
(TARG steruje w tym celu MSG = 0, C/D = I/O = 1). Para impulsów
REQ/ACK przenosi jeden bajt informacji statusowej od TARG do 1NIT;
M- TARG przełącza magistralę w stan MESSAGE IN (I/O = C/D = MSG)
aby wysłać wiadomość COMMAND COMPLETE do kontrolera;
N- Po zakończeniu operacji TARG zwalnia sygnał BSY co wprowadza
magistralę w stan BUS FREE.

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

STATUS MESSAGE IN BUS FREE


Przykład
realizacji odczytu
danych z dysku CD CD
BSY
\
*v SEL
&■’>
ÿr..’.

*<

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

Przykład prostego kontrolera SCSI


Rodzina kontrolerów ST01/ST02 autorstwa firmy Seagate może posłużyć za prosty
przykład realizacji elementarnych zasad programowego dostępu do magistrali SCSI.
Model STOI to uboższy krewny ST02 i jest pozbawiony zintegrowanego kontrolera
stacji dysków elastycznych. Ponadto oba modele mogą być wyposażone w 8 lub 16 kB
pamięci ROM (w rzeczywistości pamięci ROM jest nieco mniej, bowiem w zakresie 8
lub 16 kB mieści się jeszcze pamięć RAM i przestrzeń I/O). Istnieje również odmiana
ST01(2)-E50 posiadająca dodatkowe wyjście (oprócz tego na karcie) na zewnętrzną
magistralę SCSI, co pozwala na podłączanie dodatkowych urządzeń. Dla potrzeb tego
rozdziału wybrany został najprostszy model STOI z obsadą 8 kB.

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.

Nieliczne elementy konfiguracyjne płytki kontrolera pokazane są na rysunku 6.62.

Rysunek 6.62.
Płytka kontrolera G> J2
STOI firm y
Seagate 1

W5

W1
W3
W2

AB

CD

Gniazdo J2 jest 50-końcówkowym wyjściem na magistralę SCSI, a blok W5 umożliwia


podłączenie diody kontrolnej LED monitorującej aktywność magistrali. Układ posiada
minimalną liczbę elementów konfiguracyjnych, do których należą:

• blokW l (BiosArea);

• blok W2 (Zero Wait States);


• blok W3 (IRQ Enabłe).
Obsługa dysku twardego 371

Zestaw zwór W1 pozwala na właściwą lokalizację układów pamięciowych kontrolera


w przestrzeni adresowej komputera. Możliwe konfiguracje przedstawione są w tabeli
6.21. Obszar zakreskowany oznacza typowy zestaw parametrów. ROM-BIOS twardego
dysku zaczyna się bowiem zwykle od segmentu C800.

Tabela 6.21.
Możliwości lokalizacji ROM-BIOS STOI w przestrzeni adresowej PC (wersja 8kB)

Adres RO M Adres RAM

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.

CPU kontaktuje się z kontrolerem za pomocą dwóch rejestrów. Oba umieszczone są


(przy przyjętej konfiguracji W l) w zakresie C9A00-C9BFF. Obszar C8000-C97FF sta­
nowi pamięć ROM, a w zakresie C9800-C987F leży pamięć RAM.

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ą.

Pełną mapę pamięci kontrolera STOI (przy założonej konfiguracji W l) przedstawia


rysunek 6.63.

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

Rysunek 6.63. CAO00


CBFF
Mapa pamięci
STOI dla
konfiguracji Bufor danych SCSI 1kB
zaznaczonej
w tabeli 6.21 C9CÖ0
C9BFF

Rejestr sterujący i rejestr stanu 512E

8kB
Obszar wolny
C987F
512E
Pamięć RAM
Sm .
C97FF

Pamięć ROM 6kE

C8000

nie portów komunikacyjnych (rejestrów sterujących) w przestrzeni I/O, czego konsek­


wencją jest zwracanie się do nich przez instrukcje in oraz o u t - co pociąga za sobą
możliwość zwracania się do nich przy pomocy instrukcji dostępu do pamięci:
MOV adres_w_pamięci , AL ; zapis do portu
MOV AL , adres w pamięci ; odczyt portu

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.

Obszar C9C00-CBFFF ma podobne właściwości. Zapis bajtu danych do dowolnej ko­


mórki tego zakresu jednoznaczny jest z wystawienim tego bajtu na szynę danych magi­
strali DB0-DB7. Operacji zdjęcia bajtu z szyny odpowiada odczyt dowolnej z komórek
bufora. Dla pokrycia całego zakresu okna C9C00-CBFFF niezmiennym adresem odłą­
cza się w tym przypadku 10 najmłodszych linii adresowych.
Obsługa dysku twardego 373

Rejestr sterujący
Rejestr sterujący STOI (zapis pod dowolny adres w zakresie C9A00-C9BFF)

ENB IRQ PAR ARB ANT BSY SEL RST

Bit 7: sprzężenie kontrolera z magistralą SCSI:


0 = STOI odłączony od magistrali,
1 = STOI połączony;
Bit 6: wyzwalanie IRQ:
0 - zablokowane,
ł = przy wykryciu aktywności SEL;
Bit 5: sygnał parzystość:
0 = brak kontroli i wytwarzania,
1 = kontrola i wytwarzanie;
Bit 4: faza ARBITRATION:
1 ==wejście w fazę ARBITRATION jako INIT;
Bit 3: sterowanie linią ATN:
0 = zwolnić (+5V),
ł = aktywować (0V);
Bit 2: sterowanie linią BSY:
0 = zwolnić (+5V),
1 = aktywować (0V);
Bit 1: sterowanie linią SEL:
0 - zwolnić (+5V),
1 = aktywować (0V);
Bit 0: sterowanie linią RST:
0 = zwolnić (+5V),
1 = aktywować (0V)

Przykład dostępu do rejestru sterującego:


MOV ax , c800h ; segment ROM-BIOS do AX
MOV es , ax ; segment w rejestrze ES
MOV ES:[laff], 08h ; c800:laff to środek obszaru c 9 a Q Q ś c 9 b f f
; aktywacja linii ATN

Rejestr stanu 4

Rejestr stanu STOI (odczyt dowolnego adresu w zakresie C9A00-C9BFF)

ARB PAR SEL REQ C/D I/O MSG RST

Bit 7: wynik fazy ARBITRATION:


0 = STO I przegrał,
1 = STOI wygrał i przejął kontrolę nad magistralą;
374 Anatomia PC

Bit 6: wynik kontroli parzystości:


0 = poprawna,
1 = wykryto błąd;
Bit 5: stan linii SEL:
0 = zwolniona (+5V),
1 = aktywna (0V):
Bit 4: stan linii REQ:
0 = zwolniona (+5V),
1 —aktywna (0V);
Bit 3: stan linii C/D:
0 = zwolniona (+5V),
1 = aktywna (0V);
Bit 2: stan linii I/O:
0 = zwolniona (+5V),
1 = aktywna (0V);
Bit 1: stan linii MSG:
0 " zwolniona (+5V),
1 = aktywna (0V);
Bit 0: stan linii RST:
0 = zwolniona (+5V),
1 = aktywna (0V).

Przykład dostępu do rejestru stanu:


MOV ax ,c800h ;segment ROM-BIOS do AX
MOV es ,ax ;segment w rejestrze ES
MOV al ,ES:[laff] ;c800:laff to środek obszaru c9a00,c9bff
; rejestr stanu w AL

Szyna danych
Bufor danych STOI (zapis lub odczyt pod dowolny adre^w zakresie C9C00—CA000)

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DBO

Bit 7: linia DB7 magistrali SCSI;


Bit 6: linia DB6 magistrali SCSI;
Bit 5: linia DB5 magistrali SCSI;
Bit 4: linia DB4 magistrali SCSI;
Bit 3: linia DB3 magistrali SCSI;
Bit 2: linia DB2 magistrali SCSI;
Bit 1: linia DB1 magistrali SCSI;
Bit 0: linia DBO magistrali SCSI.
Obsługa dysku twardego 375

Przykład dostępu do bufora danych:


my sector DB 512 dup(?) rezerwacja miejsca na własne dane
f
/ odpowiednia inicjalizacja
MOV ax, c800h ■

ł 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

STOI przetwarza niezbędne w fazach informacyjnych sekwencje REQ/ACK. Aby prze­


słać do jednostki docelowej 512-bajtowy blok danych, wystarczy wielokrotne powta­
rzanie rozkazu pisania pod adres z przedziału c9c00-ca000. Układy logiczne kontrolera
wytwarzają również niezbędne dla kontaktów z PC sygnały kontrolne magistrali zew­
nętrznej: MEMW, MEMR, a nawet 1/0 CHRDY i OWS dla wprowadzenia cykli oczeki­
wania.

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).

Brak kodowania ostatnich 10 linii adresowych w obszarze bufora danych pozwala na


stosowanie rozkazów łańcuchowych, np. MOYSB z przedrostkiem REP.

System operacyjny MS-DOS


Programowanie operacji dyskowych za pośrednictwem funkcji DOS nie wykorzystuje
wprawdzie pełnych możliwości danego złącza, ale za to daje gwarancję bezpieczeństwa.
Programy, które mają poprawnie pracować zarówno na staruszku XT z dyskiem ST506,
jak i na AT-486 wyposażonym w kontroler SCSI, muszą orientować się niestety w pier­
wszej linii na najstarszy model z tego szeregu. Omawiane w tym punkcie funkcje 25h,
26h, 41h i 46h korzystają głównie z przerwania INT13h BIOS, które stanowi kolejny
stopień na drodze do bezpośredniego programowania kontrolera.

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

Przerwanie INT25H DOS - czytaj sektor logiczny


Rejestr Parametr Wartość zwracana
AL numer dysku
AX kod błędu
CX liczba sektorów
DX pierwszy sektor
BX.DS adres bufora odczytu
Carry ustawiany gdy błąd

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

unsigned char far Sektor[512] ;


union REGS RejWej, RejWyj ;
struct SREGS RejSeg ;

void CzytSektLogInt_25 (void) {


RejSeg.ds = FP_SEG (Sektor) ; /* adres bufora */
RejWej.x.bx - FP_OFF (Sektor) ;
RejWej.h.al = 0x02 ; /* napęd C: */
RejWej.x.cx = 0x01 ; /* jeden sektor */
RejWej.x.dx = OxOd ; /* pierwszy "13" */
int86x ( 0x25,&RejWej,&RejWyj,&RejSeg ) ;
if (( RejWyj.x .cflag & 0x01 ) == 0x01 ) {
printf ("\n Wystąpił błąd nr: %x\n",RejWyj.x .ax) ;
}
}

Przerwanie INT 26h DOS - pisz sektor logiczny


Rejestr Parametr Wartość zwracana
AL numer dysku
AX kod błędu
CX liczba sektorów
DX pierwszy sektor
BX:DS adres bufora zapisu
Carry ustawiany gdy błąd
Obsługa dysku twardego 377

W rejestrze AL przekazywany jest numer dysku:


• napęd A: numer "0",

• napęd B: numer "l",

• dysk C: numer "2",

• dysk D: numer "3" itd.

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)

Proszę zwrócić uwagę, że przedstawione powyżej funkcje w swej podstawowej formie


są w stanie operować w obszarze 0-65535 sektorów (rejestr DX jest bowiem 16-
bitowy) co wyznacza maksymalny rozmiar partycji na 32MB (jeden sektor zajmuje 512
bajtów).

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 INT 25h DOS - czytaj sektor logiczny, tryb poszerzony


Rejestr Parametr Wartość zwracana
AL numer dysku
AX kod błędu
CX ffffh
BX:DS adres tablicy dodatkowej
Carry ustawiany gdy błąd
378 Anatomia PC

Przerwanie INT 26h DOS - pisz sektor logiczny, tryb poszerzony


Rejestr Parametr Wartość zwracana
AL numer dysku
AX kod błędu
CX ffffh
BX:DS adres tablicy dodatkowej
Carry ustawiany gdy błąd

Tablica dodatkowych parametrów przekazywanych w trybie poszerzonym funkcjom


25h i 26h składa się z 10 bajtów.

Bajty tablicy Znaczenie


0-3 numer pierwszego sektora (4 bajty !)
4 -5 ilość sektorów objętych działaniem funkcji
6-9 adres bufora (zapisu 26h ew. odczytu 25h)

Łatwo obliczyć, że tak zmodyfikowane funkcje mogą operować teoretycznie w ramach


partycji rozciągającej się na 2TB.

Powyższe funkcje nie są szczególnie przyjazne, jeżeli operujemy na plikach dysko­


wych, a nie na sektorach. Przykładowa zmiana bajtu 1256 w pliku dos5net.txt w kata­
logu C:\BIN\DOS5\DOC przy wykorzystaniu funkcji INT 25h i INT 26h może przy­
prawić o frustrację. Oto plan koniecznych działań:

• wczytać funkcją INT 25h sektor zawierający katalog główny;


• odszukać numer jednostki przydziału (Cluster) dla katalogu \BIN, może się oka­
zać konieczne wczytanie sektora tablicy przydziału (FAT) przy obszernych kata­
logach;
• w sektorze zawierającym katalog \BIN odszukać wpis o podkatalogu \DOS5,
wczytanie tego sektora i tak dalej aż do katalogu \DOC;
• znając pierwszą jednostkę przydziału dla pliku dos5net.txt należy podążając łań­
cuchem jednostek przydziału z (FAT) określić numer czwartej jednostki przy­
działu (3x512 + 29 - 1565);
• wczytanie funkcją INT 25h odnalezionego sektora, modyfikacja bajtu 29;

• zapis zmodyfikowanego sektora funkcją INT 26h;


• modyfikacja wpisu data/czas w katalogu pliku;
• gdyby zaszła konieczność przedłużenia pliku, dodatkowe poszukiwanie wolnych
jednostek przydziału w FAT i dowiązanie ich do łańcucha.
Obsługa dysku twardego 379

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.

Oto niektóre funkcje przerwania INT 21 h:

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

Pizerwanie INT41H i INT46h


Wektory odpowiadające tym przerwaniom wskazują na tablice parametrów dysków
twardych o numerach 0 i 1. Budowa tablicy parametrów dysku twardego zależy od mo­
delu komputera (XT, AT) i iest omówiona w punkcie poświęconym funkcji 08h przer­
wania INT 13h BIOS-u.

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).

Funkcje przerwania 13h

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!

Rejestr Parametr Zwracana wartość


AH OOh kod błędu
DL numer dysku
Carry ustawiany gdy błąd
Obsługa dysku twardego 381

Tabela 6.22.
Lista błędów odnosząca się do dysków twardych

Kod błędu Znaczenie


OOh bezbłędnie
Olh zły numer funkcji
02h nie znaleziono znacznika adresu
04h nie znaleziono sektora
05h nieudany Reset
07h błędna inicjalizacja
08h błąd DMA
09h przepełnienie strony DMA
OAh niewłaściwy znacznik sektora
OBh niewłaściwy numer cylindra
ODh nielegalny numer sektora
lOh błąd odczytu
llh dane mimo błędu odczytane z pomocą kodu ECC
20h błąd kontrolera
40h nie znaleziono ścieżki
80h brak reakcji napędu
AAh brak gotowości dysku
BBh błąd BIOS-u
CCh błąd zapisu
EOh błąd statusu
FFh inny nieznany błąd

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

Rejestr Parametr Zwracana wartość


AH Olh kod błędu
DL numer dysku
Carry ustawiany gdy błąd

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.

Rejestr Parametr Zwracana wartość


AH 02h kod błędu
AL liczba sektorów do przeczytania
CH numer ścieżki
CL numer sektora
DH numer głowicy
DL numer dysku
ES:BX adres w pamięci, gdzie mają być umieszczone
przeczytane sektory
Carry ustawiany gdy błąd

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ę.

Rejestr Parametr Zwracana wartość


AH 03h kod błędu
AL liczba sektorów do przeczytania
CH numer ścieżki
CL numer sektora
DH numer głowicy
DL numer dysku
ES:BX adres w pamięci skąd mają być pobrane dane
Carry ustawiany gdy błąd
Obsługa dysku twardego 383

Funkcja 04h
D z i a ła n ie :
Funkcja sprawdza poprawność kodów ECC sektora przeprowadzając czytanie próbne.

Rejestr Parametr Zwracana wartość


AH 04h kod błędu
AL liczba sektorów do sprawdzenia
CH numer ścieżki
CL numer sektora
DH numer głowicy
DL numer dysku
Carry ustawiany gdy błąd

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).

Rejestr Parametr Zwracana wartość


AH 05h kod błędu
AL ilość sektorów na ścieżce
CH ilość ścieżek na cylindrze (twardy dysk)
CL numer sektora
DH numer głowicy
DL numer dysku
ES:BX adres bloku danych
Carry ustawiany gdy błąd
384 Anatomia PC

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).

Rejestr Parametr Zwracana wartość


AH 06h kod błędu
AL współczynnik przeplotu
CH cylinder
CL sektor
DH głowica
DL numer dysku
Carry ustawiany gdy błąd

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).

Rejestr Parametr Zwracana wartość


AH 07h kod błędu
AL współczynnik przeplotu
CH cylinder
CL sektor
DH głowica
DL numer dysku
Carry ustawiany gdy błąd
Obsługa dysku twardego 385
£&•

Funkcja 08h
Działanie:
Funkcja dostarcza informacji o parametrach geometrycznych napędu
l&
t

i! Rejestr Parametr Zwracana wartość


AH 08h kod błędu
AL
4;.
CH liczba cylindrów - 1
CL liczba sektorów/ścieżkę - 1
&
DH liczba głowic - 1
DL numer dysku liczba dysków
DH numer głowicy
ES:DI adres tablicy parametrów
Carry ustawiany gdy błąd

Tabela 6.23.
*V: Budowa tablicy parametrów (system XT)

Adres w tablicy Znaczenie Rozmiar parametru


ii: 00h-01h liczba cylindrów słowo
v
i . 1*
02h liczba głowic bajt
ł -

03h-04h cylinder początkowy słowo


iy \

05h-06h cylinder początkowy prekompensacji słowo


T"’- 07h maksymalna liczba błędów korygowanych przez ECC bajt
(zwykle 11)
-V:

08h bajt sterujący(*) bajt


09h wartość standardowa czasu oczekiwania (**) bajt
0.
& Oah czas oczekiwania przy formatowaniu (**) bajt
fi
a;*

jf i":
.*Obh czas oczekiwania na wynik samokontroli (**) bajt
•?ł.-
•C

Och—Ofh zarezerwowane 2 słowa


^ :

Js

(*) bajt sterujący:


bit 7 deaktywacja powtórnych prób dostępu;
Ir
bit 6 deaktywacja systemu powtórnych prób ECC;
bity 5-3 zarezerwowane;
bity 2-0 opcje napędu.
ił.K,
i- ;*
(**) czas mierzony w jednostkach Timer'a
386 Anatomia PC

Tabela 6.24.
Budowa tablicy parametrów (system A T)

Adres w tablicy Znaczenie Rozmiar parametru


OOh-Olh liczba cylindrów słowo
02h liczba głowic bajt
03h-04h zarezerwowane słowo
05h-06h cylinder początkowy słowo
prekompensacji
07h zarezerwowany bajt
08h bajt sterujący(*) bajt
09h-0bh zarezerwowane 3 bajty
Och-Odii strefa parkowania słowo
Oeh liczba sektorów na ścieżkę bajt
Ofh zarezerwowane bajt
(*) bajt sterujący:
bit 7 deaktywacja powtórnych prób dostępu;
bit 6 deaktywacja systemu powtórnych prób ECC;
bit 5 1 = lista defektów zapisana na cylindrze o numerze
[liczba cylindrów - 1];
bit 4 zarezerwowany;
bit 3 1 = dysk posiada więcej niż 8 głowic;
bity 2-0 zarezerwowane.

Tabela 6.25.
Budowa tablicy parametrów (system EIDE)

Adres w tablicy Znaczen ie Rozmiar parametru


0 0 h -0 1h logiczna liczba cylindrów słowo
02h logiczna liczba głowic bajt
03h wskaźnik do rozszerzonej tablicy parametrów bajt
04h liczba sektorów na ścieżkę bajt
05h-06h cylinder początkowy prekompensacji słowo
07h zarezerwowany bajt
08h bajt sterujący(*) bajt
09h-0ah liczba cylindrów słowo
Obh liczba głowic bajt
Och-Odh strefa parkowania słowo
Obsługa dysku twardego 387

Tabela 6.25. (ciąg dalszy)


Budowa tablicy parametrów (system EIDE)

Adres w tablicy Znaczenie Rozmiar parametru


Oeh logiczna liczba sektorów na ścieżkę bajt
Ofh suma kontrolna bajt
(*) bajt sterujący V

bit 7 deaktywacja powtórnych prób dostępu;


bit 6 deaktywacja systemu powtórnych prób ECC;
bit 5 1 = lista defektów zapisana na cylindrze o numerze
[liczba_cylindrów- 1];
bit 4 zarezerwowany;
bit 3 1 = dysk posiada więcej niż 8 głowic;
bity 2 -0 zarezerwowane.

Tabela 6.26.
Budowa rozszerzonej tablicy parametrów (system EIDE)

Adres w tablicy Znaczenie Rozmiar parametru


00h -01h bazowy adres wejścia-wyjścia słowo
02h-03h adres portu sterującego słowo
04h bit 7 zarezerwowany (1) bajt
bit 6 LBA Enabled (1)
bit 5 zarezerwowany (1)
bit 4 0=Master, l=SIave
bit 3-0 zarezerwowane (0)
05 h zerezerwowany (0) bajt
06h bajt 7-4 zarezerwowany (0) bajt
bajt 3 -0 numer przerwania IRQ
07h rozmiar bloku danych w sektorach bajt
08h bit 7—4 numer trybu DMA podczas bajt
przesyłania danych kanałem DMA:
Q§00 - Multiword DMA Mode 0
0001 - Multiword DMA Mode 1
bit 3-0 numer kanału DMA
09h bit 7—4 zarezerwowane (0) bajt
bit 3-0 numer trybu DMA podczas
przesyłania danych kanałem DMA:
0000 - PIO Mode 0
0001 - PIO Mode 1
0 0 1 0 -P IO Mode 2
0011 - PIO Mode 3
388 Anatomia PC

Tabela 6.26. (ciąg dalszy)


Budowa rozszerzonej tablicy parametrów (system E l DE)

Adres w tablicy Znaczenie Rozmiar parametru


Oah-Obh bity 15-8 zarezerwowane (0) słowo
bit 7 32-bitowy dostęp do dysku (1)
bit 6 CD-ROM (1)
bit 5 nośnik wymienny (1)
bit 4 tryb LBA (1)
bit 3 tryb C H S (l)
bit 2 transfer bloków danych, o
rozmiarze określonym w bajcie 7, w
trybie PIO (1)
bit 1 transfer danych w trybie DMA,
określonym w bajcie 8(1)
bit 0 transfer danych w trybie PIO,
określonym w bajcie 9(1)
Och-Odh zarezerwowany (0) słowo
Oeh numer specyfikacji EIDE bajt
Ofh suma kontrolna bajt

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).

Pozycje 41 h i 46h tablicy wektorów przerwań traktowane są nieco odmiennie od reszty,


gdyż nie wskazują na żadną z procedur obsługi przerwań, lecz ustawiane są na adresy
początkowe tych właśnie tablic z parametrami dysków. Struktura tych tablic jest iden­
tyczna ze zwracaną przez funkcję 08h. Działanie funkcji 09h sprowadza się więc do od­
szukania (przy udziale wskaźników INT 41 h i INT 46h) tablic z parametrami geomet­
rycznymi i przedstawienia ich zawartości do dyspozycji BIOS-u.

Rejestr Parametr Zwracana wartość


AH 09h kod błędu
DL numer dysku ilość dysków
Carry ustawiany gdy błąd
Obsługa dysku twardego 389

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.

Rejestr Parametr Zwracana wartość


AH Oah kod błędu
AL liczba sektorów do odczytania
CH numer cylindra ....

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.

Rejestr Parametr Zwracana wartość


AH Obh kod błędu
AL liczba sektorów do zapisania
CH numer cylindra
CL sektor początkowy
DL numer dysku
DH numer głowicy
ES:BX Adres bufora zapisu w pamięci operacyjnej
Carry ustawiany gdy błąd

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.

Rejestr Parametr Zwracana wartość


AH Och kod błędu
CX cylinder
DH głowica
DL numer dysku
Carry ustawiany gdy błąd

Funkcja Odh
D z i a ła n ie :
Inicjalizacja (reset) napędu.

Rejestr Parametr Zwracana wartość


AH Odh kod błędu
DL numer dysku
Carry ustawiany gdy błąd

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ą.

Rejestr Parametr Zwracana wartość


AH Oeh kod błędu
DL numer dysku
ES:BX Adres obszaru pamięci
Carry ustawiany gdy błąd

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

Funkcja ta jest komplementarna wobec funkcji OEh


\J* V

^<
:’
•'
'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*.-

Rejestr Parametr Zwracana wartość


Kr
V*
*! .
. :
AH lOh kod błędu
< •

..1 ?•.

DL numer dysku
* *

t-

Carry ustawiany gdy błąd


/'Sś.

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.
**•:

Rejestr Parametr Zwracana wartość


•łc

AH 12h kod błędu


DL numer dysku
Carry ustawiany gdy błąd

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.

Rejestr Parametr Zwracana wartość


AH 13h kod błędu
DL numer dysku
Carry ustawiany gdy błąd

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.

Rejestr Parametr Zwracana wartość


AH 19h kod błędu
DL numer dysku
Carry ustawiany gdy błąd

Funkcja 41h
D z ia ła n ie :
Funkcja sprawdza, czy dysk jest zgodny ze specyfikacją EIDE.

Rejestr Parametr Zwracana wartość


AH 41h bazowy numer wersji rozszerzenia (20h),
informujący, czy dostępna jest rozszerzona
tablica parametrów
BX 55AAh AA55h
cx bit 2 wskazuje, że dla dysku dostępna jest
rozszerzona tablica parametrów
DL numer dysku
DH numer wersji rozszerzenia
Carry ustawiany gdy rozszerzenie jest niedostępne
Obsługa dysku twardego 393

Uwaga:
Nie wszystkie wersje BIOS-u mają zaimplementowaną tę funkcję.

Funkcja 48h
Działanie:
Funkcja odczytuje parametry dysku twardego EIDE.

Rejestr Parametr Zwracana wartość


AH 48h kod błędu
DL numer dysku
ES:BX Adres bufora danych o dysku w
pamięci operacyjnej
, Carry ustawiany gdy błąd

Uwaga:
Nie wszystkie wersje BIOS-u mają zaimplementowaną tę funkcję.

W buforze danych o dysku umieszczone są następujące informacje:


• rozmiar bufora,
• rejestr sterujący,
• liczba cylindrów,
• liczba głowic,
• liczba sektorów na ścieżkę,
• liczba sektorów na dysku,
• liczba bajtów na sektor,
• wskaźnik do rozszerzonej tablicy parametrów.
394 Anatomia PC
Karty graficzne 395

Chociaż na wydajność systemu komputerowego wpływa głównie procesor oraz elemen­


ty płyty głównej, to o komforcie pracy decyduje monitor wraz ze sterownikiem graficz­
nym. Od rodzaju sterownika zależy typ użytego monitora.

W czasie kilkunastoletniego rozwoju komputerów typu IBM PC powstało kilka kon­


strukcji sterowników graficznych pozwalających na osiągnięcie obrazu o coraz lepszych
parametrach.

Pierwszym sterownikiem instalowanym w oryginalnych komputerach IBM PC był ste­


rownik MDA (Monochrome Display Adapter ), który pracował wyłącznie w trybie
tekstowym, umożliwiając wyświetlenie 80 znaków w 25 wierszach w dwóch kolorach:
czarnym i białym (właściwie w czarnym i jasnozielonym, gdyż taki luminofor posiadały
ówczesne monitory). Później pojawił się - opracowany przez firmę IBM - sterownik
CG A (Co lor Graphics Adapter ), pozwalający na wyświetlanie obrazu o rozdzielczości
320 na 200 punktów w czterech kolorach lub obrazu o rozdzielczości 640 na 200
punktów w dwóch kolorach. Mimo „oszałamiającej” grafiki sterownik został nisko oce­
niony, gdyż w trybie tekstowym znaki miały rozmiar tylko 8 na 8 punktów. Wkrótce na
rynku pojawił się sterownik o lepszych parametrach graficznych - Hercules. W trybie
tekstowym posiadał te same parametry co sterownik MDA, ale umożliwiał także wy­
świetlanie dwukolorowego obrazu graficznego o rozdzielczości 720 na 350 punktów.
Dzięki niskiej cenie i wysokich jak na owe czasy parametrach zdobył on ogromną
popularność i przez długi czas był stosowany wszędzie tam, gdzie kolorowy obraz nie
był konieczny.
396 Anatomia PC

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.

Sterowniki VGA niektórych producentów umożliwiają także emulację karty Hercules,


ale nie jest to opcja występująca w standardzie VGA.

Oprócz wymienionych sterowników opracowano kilka innych kart graficznych, miedzy


innymi przeznaczony dla systemu OS/2 sterownik MCGA {Multi-Color Graphics
Array) oraz sterownik PGA {Professional Graphics Adapter ), stanowiący ogniwo po­
średnie pomiędzy kartą EGA a VGA.

Standardowy sterownik VGA umożliwia wyświetlenie na ekranie 25 wierszy znaków


w 80 kolumnach. W tym trybie znaki mają rozmiar 9 na 16 punktów. Znak może być
wyświetlony w jednym z 16 kolorów, niezależnie od koloru tła, które dla każdego zna­
ku może być dobrane oddzielnie. Przy wykorzystaniu wszystkich kolorów znaków i tła
oraz ustawieniu różnych atrybutów (rozjaśnienie, migotanie) można jednocześnie wy­
świetlić 256 kombinacji znak-tło.

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 trybie graficznym standardowy sterownik VGA umożliwia wyświetlenie 640 pun­


któw w 480 liniach przy 16 dostępnych kolorach (w jednym ze standardowych trybów
możliwe jest wyświetlenie jednocześnie 256 kolorów, ale przy rozdzielczości 320 na
200). Jeśli sterownik posiada odpowiednio dużo pamięci, przez odpowiednie ustawienie
rejestrów można uzyskać rozdzielczość nawet 1024 punktów w 768 liniach (przy
odpowiedniej ilości pamięci nawet w 256 kolorach jednocześnie). Niezależnie od trybu
graficznego wszystkie wyświetlane kolory mogą być wybrane z palety 262 144 barw.

Jednym z elementów różniących sterownik VGA od poprzedników jest sposób genero­


wania sygnału wyjściowego. Sterownik VGA generuje sygnał analogowy, dzięki czemu
do standardowej karty VGA można podłączyć zarówno monitor kolorowy jak i mono­
chromatyczny, który zamiast kolorów będzie wyświetlał 64 poziomy szarości.

Istotną cechą sterownika VGA jest możliwość zamontowania go w jednym komputerze


razem ze sterownikiem monochromatycznym, na przykład kartą Hercules. Tworzy się
w ten sposób tak zwany system dual-monitor, bez którego bardzo trudno tworzyć pro-
Karty graficzne 397

gramy korzystające ze skomplikowanej grafiki. Obecnie większość oprogramowania


narzędziowego i graficznego pozwala na korzystanie z dwóch monitorów jednocześnie
(na przykład środowiska programowe Borlanda lub pakiet graficzny AutoCAD).

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.

Próby zapanowania nad tym bałaganem doprowadziły do powstania stowarzyszenia


producentów urządzeń graficznych o nazwie VESA ( Video Elestronics Standards Asso­
ciation). Stowarzyszenie to postawiło sobie za cel opracowywanie norm umożliwia­
jących standaryzację:
• parametrów monitorów współpracujących z kartami SVGA;

• numeracji rozszerzonych trybów graficznych;

• interfejsu programowego (dodatkowych funkcji BIOS-u).

Nowoczesne sterowniki SVGA coraz częściej sprzętowo obsługują założenia standardu


VESA - dla starszych typów konieczne jest stosowanie programowych emulatorów,
opracowanych specjalnie dla danej karty.
,r*

x..:

Jednym z głównych zastosowań kart SVGA jest praca z aplikacjami graficznymi


w Windows, gdyż oprogramowanie dostarczane przez producenta karty przeznaczone
jest głównie dla tego systemu. Niektóre karty SVGA posiadają także sprzętowe akce­
leratory zaprojektowane specjalnie do współpracy z Windows; karty takie sprzętowo
wypełniają prostokąty, rysują linie i operują prostokątnymi obszarami obrazu.
398 Anatomia PC

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

I67 640 x 480 256


p8 720 x 540 256
|69 800 x 600 256
Karty graficzne 399

EGA, VGA i SVGA


Sterownik EGA składa się z czterech głównych elementów funkcjonalnych:
• układu sekwencyjnego (sekwensera) - odpowiadającego za generowanie sygnału
zegarowego, przesyłanie danych pomiędzy pamięcią obrazu, układem graficz­
nym i układem określania atrybutu oraz za lokalizację wyświetlanego zbioru
znaków;

• układu graficznego - odpowiadającego za przekazywanie danych pomiędzy


pamięcią obrazu a procesorem i układem określania atrybutu;
• układu sterowania atrybutem - służącego do zmiany kolorów zapisanych w pa­
mięci obrazu na indeksy kolorów zdefiniowanych w rejestrach wzorców kolo­
rów;

• układu sterowania wyświetlaczem (kontrolera CRT) - odpowiadającego za za­


chowanie zależności czasowych podczas wyświetlania obrazu oraz wyświetlają­
cego kursor.

Karta VGA posiada piąty element: przetwornik cyfrowo-analogowy, przetwarzający


wzorce cyfrowe na sygnał analogowy przesyłany do monitora.

Powyższe układy zawierają od kilkudziesięciu (karta EGA) do kilkuset (karta VGA)


programowalnych rejestrów sterujących.

Z punktu widzenia procesora, karta graficzna to zbiór portów wejścia-wyjścia i obszar


pamięci obrazu - programowanie sterownika sprowadza się zatem do zapisu oraz od­
czytu do i z pamięci oraz portów wejścia-wyjścia. Pamięć obrazu jest odwzorowana
bezpośrednio w przestrzeni adresowej procesora, pomiędzy adresami AOOO.OOOOh
a B000:FFFFh, pozwalając na wykorzystanie do zapisu lub odczytu instrukcji mov lub
movs.

Na pamięć obrazu przeznaczone jest -128 KB przestrzeni adresowej procesora. Była to


ilość wystarczająca dla kart CGA. Standardowy sterownik VGA posiada 256 KB pa­
mięci RAM, a karta SVGA co najmniej 512 KB. Z tego powodu pamięć obrazu zorga­
nizowana jest na różne sposoby, w zależności od trybu pracy sterownika.

W trybach odziedziczonych po kartach CGA wykorzystywana jest spakowana (ang.


packed) metoda odwzorowania pamięci - w jednym bloku pamięci RAM każdemu pun­
ktowi na ekranie odpowiada fragment bajtu zawierający numer koloru tego punktu (ry­
sunek 7.1). Pole odpowiadające jednemu punktowi wynosi zwykle 1, 2, 4 lub 8 - co
odpowiada 2, 4, 16 lub 256 kolorom obrazu.
400 Anatomia PC

Rysunek 7.1. piksel N


Odwzoro wan ie piksel N + l
obrazu w
pamięci
stosowane w
trybie CGA /J <d

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.

Rysunek 7.2. pamięć obrazu


Odwzorowanie
piksel N
obrazu
w pamięci rA płat 0 A płat 1 A płat 2
stosowane A płat 3
w trybie EGA
lilól |op1 1 |bm fifó]
i VGA
>t i 1
J
piksel N + l

N N+l-
Karty graficzne 401

Karty SVGA umożliwiają współpracę z co najmniej 512 KB pamięcią obrazu. Ponie­


waż na pamięć obrazu zarezerwowane jest 128 KB przestrzeni adresowej procesora, do
dostępu do pamięci karty SVGA wykorzystują technikę stronicowania - polegającą na
kojarzeniu z niewielkim obszarem pamięci (oknem) w przestrzeni adresowej różnych
fragmentów większego obszaru pamięci (stron lub banków). Zapis lub odczyt adresu
położonego wewnątrz okna powoduje zapis lub odczyt odpowiadającego mu bajtu
w banku. Rozmiar banku i okna wynosi zwykle 64 KB. Aby uzyskać dostęp do pamięci
położonej poza obrębem bieżącego banku, należy zmienić zawartość rejestru sterują­
cego położeniem banku (przeważnie nosi on nazwę Bank Start Address).

Stronicowanie pamięci wykorzystuje jedną z następujących technik:

• pojedyncze okno (rysunek 7.3);

Rysunek 7.3. p a m ię ć k a r t y
Stronicowanie
pamięci techniką
pojedynczego
okna

dwa nakładające się okna (rysunek 7.4);

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

• dwa nie nakładające się okna (rysunek 7.5).

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

We wszystkich metodach stronicowania ważnym parametrem jest odstęp pomiędzy


początkami kolejnych banków (granularity) - może być on mniejszy niż rozmiar
banku, co oznacza, że kolejne banki mają część wspólną.

W trybach graficznych SVGA w obrębie banku odwzorowanie pamięci obrazu jest


identyczne jak w analogicznych trybach VGA.

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 pamięci obrazu można przechowywać do ośmiu stron tekstu, w zależności od ilości


zainstalowanej pamięci i trybu pracy. Dostępne tekstowe tryby pracy podaje tabela 7.2.

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

Sterowniki graficzne posiadają zdefiniowane standardowe zestawy znaków zapisane


w pamięci stałej. W przypadku sterowników EGA, VGA i SVGA możliwa jest zmiana
miejsca w pamięci, z którego pobierane będą wyświetlane znaki. Po przygotowaniu
tzw. matrycy znaków można wskazać ją sterownikowi graficznemu korzystając z
funkcji 1 lh (podfunkcje OOh i lOh) BIOS-u sterownika. W ten sposób, aby otrzymać na
przykład polskie znaki diakrytyczne, nie trzeba dokonywać żadnych przeróbek
sprzętowych, tak jak miało to miejsce w przypadku karty Hercules (do uzyskania
polskich znaków trzeba było zmienić zawartość pamięci EPROM).

Sterowniki SVGA posiadają dodatkowe tryby tekstowe. Przykładowe tekstowe tryby


pracy sterowników SVGA to 80 x 30, 80 x 43, 80 x 60, 132 x 25, 132 x 30, 132 x 43,
132 x 60, wszystkie w 16 kolorach.

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.

Dostępne tryby graficzne sterowników EGA i VGA przedstawia tabela 7.3.


404 Anatomia PC

Tabela 7,3.
Graficzne tryby pracy kart graficznych

Numer Rozdzielczość Ilość kolorów Rozmiar Segment pamięci Zgodny ze


trybu znaku obrazu sterownikiem
04h 320 x 200 4 8x8 B800 CGA, EGA
05h 320 x 200 4 (szarości) 8x8 B800 CGA, EGA
06h 640 x 200 2 8x8 B800 CGA, EGA
ODh 320 x 200 16 8x8 A000 EGA, VGA
OEh 640 x 200 16 8x8 A000 EGA, VGA
OFh 640 x 350 3 8 x 14 A000 EGA, VGA
lOh 640 x 350 4 8 x 14 A000 EGA, VGA
llh 640 x 480 2 8 x 16 A000 VGA
12h 640 x 480 16 8 x 16 A000 VGA
13h 320 x 200 256 8 x 16 A000 VGA

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.

Tryby zapisu i odczytu pamięci obrazu


W trybach graficznych o spakowanej organizacji pamięci obrazu pamięć karty widziana
jest jako ciągły obszar pamięci RAM. Z tego powodu zapis lub odczyt danych nie powi­
nien sprawiać kłopotów.

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;

• interfejsu programowego (dodatkowych funkcji przerwania lOh BIOS-u);

• magistrali lokalnej (Local Bus) do komunikacji ze sterownikiem graficznym.

Każda edycja wnosiła rozszerzenia w stosunku do poprzedniej. Pierwsza norma, ogło­


szona w kwietniu 1989, zalecała tylko jeden rozszerzony tryb - 800 x 600 punktów
w 16 kolorach - przypisując mu 1-bajtowy numer 6Ah. Przełączanie miało następować
przy użyciu tej samej funkcji (OOh) przerwania lOh, co zwykły tryb VGA. Niestety, stało
się to o wiele za późno, gdy producenci opracowali i rozpoczęli produkcję własnych
rozwiązań (16-kolorowe tryby o wyższej rozdzielczości i tryby 256-kolorowe).

W październiku 1989 standard VESA wprowadził 16-bitowe numery identyfikujące try­


by oraz zdefiniował sześć nowych funkcji przerwania lOh do ich obsługi. Funkcje te
pozwalają na stwierdzenie obecności w systemie oprogramowania VESA, dostarczają
informacji o dostępnych trybach oraz umożliwiają przełączanie banków pamięci. Spe­
cyfikację rozszerzonego w ten sposób BIOS-u oznaczono jako wersję 1.0.

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.

Obecnie najczęściej spotykane na rynku sterowniki VESA są zgodne z wersją 1.2,


Oznacza to możliwość obsługi trybów wielobarwnych (15, 16 lub 24 bity na piksel) pod
warunkiem, że karta SVGA wyposażona jest w specjalny układ przetworników C/A.
Tabela 7.4 zawiera spis dodatkowych trybów graficznych i tekstowych, które zostały
uznane za standardowe.

Zapisu i odczytu rejestrów sterowników graficznych dokonuje się za pomocą instrukcji


o u t i in procesora. Większość dostępnych rejestrów zgrupowana jest w pary, gdzie
pierwszy rejestr jest rejestrem indeksowym, a drugi - indeksem informacyjnym.
Karty graficzne 407

Tabela 7A
Tryby graficzne i tekstowe wprowadzone w standardzie VESA

Wersja BIOS-u Numer trybu Rodzaj trybu Rozdzielczość Liczba kolorów


1.0 lOOh graficzny 640 x 400 256
1.0 lOlh graficzny 640 x 480 256
1.0 102h graficzny 800 x 600 16
1.0 103h graficzny 800 x 600 256
1.0 104h graficzny 1024 x 768 16
1.0 105h graficzny 1024x 768 256
1.0 106h graficzny 1280x 1024 16
1.0 107h graficzny 1280x 1024 256
1.1 108h tekstowy 80x60 16
1.1 109h tekstowy 132x25 16
1.1 lOAh tekstowy 132x43 16
1.1 lOBh tekstowy 132x50 16
1.1 lOCh tekstowy 132x60 16
1.2 lODh graficzny 320 x 200 32 768
1.2 lOEh graficzny 320 x 200 65 536
1.2 lOFh graficzny 320 x 200 16 777 216
1.2 llOh graficzny 640 x 480 32 768
1.2 lllh graficzny 640 x 480 65 536
1.2 112h graficzny 640 x 480 16 777 216
1.2 113h graficzny 800 x 600 32 768
1.2 114h graficzny 800 x 600 65 536
1.2 115h graficzny 800 x 600 16 777 216
1.2 116h graficzny 1024 x 768 32 768
1.2 117h graficzny 1024x 768 65 536
1.2 118h graficzny 1024x 768 16 777 216
1.2 119h graficzny 1280x 1024 32 768
1.2 IlAh graficzny 1280x 1024 65 536
1.2 l l Bh graficzny 1 2 8 0 x 1024 16 777 216

Przykładowy zapis wartości do rejestru może wyglądać następująco:


mov dx,adres rejestru
mov al,index rejestru
out dx, al
mov al,wartość
inc dx
out dx, al
408 Anatomia PC

Przykładowy odczyt zawartości rejestru:


mov dx, adres__re jestru
mov al,index_rejestru
out dx,al
inc dx
in al,dx ; rejestr AL zawiera odczytana wartość.

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.

Przed modyfikowaniem zawartości rejestrów należy zablokować przyjmowanie przer­


wań rozkazem c l i , a po zapisie do rejestru odblokować je rozkazem s t i . Do dobrego
tonu programowania należy odtworzenie wartości wszystkich modyfikowanych
rejestrów przed wyjściem z programu.

Rejestry zewnętrzne (external/general registers)


Pomocniczy rejestr wyjściowy (miscellaneous output registei) - adres 3C2h/3CCh
Opisuje podstawowe parametry pracy sterownika.

b it 7 b it 6 b it 5 X b it 3 b it 2 b it 1 b it 0

bity 7-6 rozdzielczość pionowa:


01 - 3 5 0 linii,
1 0 - 4 0 0 linii,
11 - 4 8 0 linii;
bit 5 selekcja połówki pamięci obrazu przy adresowaniu przemiennym
0 - pierwsze 64 KB,
1 - drugie 64 KB;
bity 3-2 częstotliwość taktowania przy wyświetlaniu punktów:
00 - częstotliwość 25.175 Mhz,
01 - częstotliwość 28.322 Mhz,
10 - zegar zewnętrzny podłączony przez złącze krawędziowe;
bit 1 udostępnienie pamięci obrazu procesorowi:
0 —pamięć[AJ2] nieudostępniona,
1 - pamięć udostępniona (standardowy tryb pracy);
bit 0 wybór adresów I/O dla rejestru urządzeń zewnętrznych, rejestru
stanu i rejestrów sterowania wyświetlaczem:
0 - adresy 3B4h, 3B5h, 3bah,
1 - adresy 3D4h, 3D5h, 3DAh.

Zapis do rejestru odbywa się przez podanie adresu 3C2h, a odczyt przez podanie adresu
3CCh.
Karty graficzne 409

Rejestr urządzeń zewnętrznych (feature control registei) - adres 3BAh/3CAh

Zarezerwowane bit 3 Zarezerwowane

bity 7—4 zarezerwowane;


bit 3 musi mieć wartość zero;
bity 2 -0 zarezerwowane.

Zerowy rejestr stanu (input status register zero) - adres 3C2h


Informacja o wygenerowaniu przerwania przy powrocie pionowym.

bit 7 informacja o wygenerowaniu przerwania IRQ2:


0 - przerwanie IRQ2 nie zostało wygenerowane lub zostało
wygenerowane przez inne urządzenie,
1 - przerwanie IRQ2 zostało wygenerowane po powrocie
pionowym.
Procedura obsługi przerwania musi wyzerować ten bit
modyfikując zawartość rejestru końca powrotu pionowego
w układzie sterowania wyświetlaczem;
bity 6 -0 zarezerwowane.

Pierwszy rejestr stanu (input status register one) - adres 3BAh (3dah)
Różne informacje o sterowniku.

Nie używ. bit 5 bit 4 bit 3 Zarezerw. bit 0

bity 7-6 zarezerwowane;


bity 5—4 bity diagnostyczne układu określenia atrybutu;
bit 3 powrót pionowy:
0 - poza powrotem pionowym,
1 - następuje powrót pionowy lub inne urządzenie wygenerowało
przerwanie IRQ2;
bity 2-1 zarezerwowane;
bit 0 faza wyświetlania obrazu:
0 —powrót poziomy lub pionowy,
1 - odczyt pamięci obrazu (wyświetlanie informacji).
410 Anatomia PC

Rejestr odłączenia sterownika (video subsystem enable registei) - adres 3C3h


Modyfikacja zawartości tego rejestru pozwala na programowe odłączenie i dołączenie
sterownika.

bity 7-1 zarezerwowane;


bit 0 dołączenie/odłączenie sterownika:
0 - odłączenie sterownika,
1 - dołączenie sterownika.

Układ sekwencyjny (sequencei)


Układ sekwencyjny odpowiada za generowanie sygnału zegarowego, przesyłanie da­
nych pomiędzy pamięcią obrazu, układem graficznym i układem określania atrybutu
oraz lokalizację wyświetlanego zbioru znaków.

Rejestr adresowy układu sekwencyjnego (sequencer address registei) - adres 3C4h


Wpisanie wartości do rejestru adresowego określa rejestr wewnętrzny, do którego chce­
my się odwołać.

Rejestr informacyjny układu sekwencyjnego - adres 3C5h


Poprzez rejestr informacyjny następuje zapis/odczyt informacji do/z rejestru wskaza­
nego przez rejestr adresowy.

Rejestr zerowania (resef registei) - indeks OOh


Rejestr zerowania pozwala na zatrzymanie działania układu sekwencyjnego oraz usta­
wienie jego wyjść w stan wysokiej impedancji.

bity 2-7 zarezerwowane;


bit 1 zerowanie synchroniczne:
0 - zatrzymanie układu sekwencyjnego,
1 - standardowa praca układu;
bitO zerowanie asynchroniczne:
0 - natychmiastowe zatrzymanie pracy układu sekwencyjnego
(dane zostają utracone),
1 —standardowa praca układu.
Karty graficzne 411

Rejestr trybu taktowania (clocking modę register) - indeks 01 h


Rejestr trybu taktowania określa większość parametrów zegara sterownika

Nie używane bit 5 bit 4 bit 3 bit 2 nie używany bitO

bity 7—6 nie używane;


bit 5 wygaszenie ekranu:
0 - standardowe wyświetlanie obrazu,
1 - odłączenie monitora przy dalszej pracy sterownika;
bit 4 tryb ładowania rejestrów przesuwających:
0 - bajty pobierane są z czterech płatów pamięci,
1 - bajty ze wszystkich płatów pamięci są łączone w grupy
po cztery, co powoduje zmniejszenie do 1/4 liczby kolorów,
ale umożliwia wykorzystanie przestrzeni adresowej
o poczwórnym rozmiarze;
bit 3 częstotliwość wyświetlania punktów:
0 - standardowa częstotliwość wyświetlania punktów,
1 - częstotliwość wyświetlania podzielona przez 2 (dla trybów
320 x 200 i 40 kolumn);
bit 2 tryb ładowania rejestrów przesuwających:
0 - bajty pobierane są z czterech płatów pamięci,
1 —bajty z dwóch płatów pamięci są łączone w pary, co powoduje
zmniejszenie liczby kolorów, ale umożliwia wykorzystanie
podwojonej przestrzeni adresowej;
bit 1 nie używany;
bitO szerokość znaków:
0 - znaki o szerokości 9 punktów (w tekstowych trybach pracy
bez CGA i EGA),
1 - znaki o szerokości 8 punktów.

Rejestr blokowania pamięci (map mask registei) - indeks 02h


Rejestr blokowania pamięci umożliwia zezwolenie na modyfikację poszczególnych
płatów pamięci.

Nie używane bit 3 bit 2 bit 1 bit 0

bity 7-4 nie używane.


bit 3 trzeci płat pamięci - analogicznie do płatu 0;
bit 2 drugi płat pamięci - analogicznie do płatu 0 ;
bit 1 pierwszy płat pamięci - analogicznie do płatu 0 ;
bitO zerowy płat pamięci:
0 - brak zezwolenia na modyfikację,
1 - zezwolenie na modyfikację.
412 Anatomia PC

Rejestr zbioru znaków (character map register) - indeks 03h


Rejestr służy do określenia numeru zbioru znaków wyświetlanych w trybie tekstowym.

Nie używane bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 6-7 nie używane;


bity 5 ,3 ,2 numer drugiego zestawu znaków;
bity 4, 1, 0 numer pierwszego zestawu znaków

Rejestr trybu dostępu do pamięci (memory mode register) - indeks 04h


Rejestr trybu dostępu do pamięci służy do informowania układu sekwencyjnego o stru­
kturze pamięci obrazu.

Nie używane bit 3 bit 2 1 0

bity 4-7 me używane;


bit 3 adresowanie modulo 4:
0 - standardowy dostęp do pamięci obrazu,
1 - komórki płatu zerowego mają adresy podzielne przez 4;
komórki płatu pierwszego mają adresy podzielne przez 4
z resztą 1 itd. W ten sposób czterokrotnie wzrasta rozmiar
dostępnej przestrzeni adresowej;
bit 2 adresowanie przemienne:
0 - parzyste komórki na parzystych płatach pamięci obrazu
mają adresy parzyste, komórki nieparzyste na płatach
nieparzystych mają adresy nieparzyste,
1 - standardowy dostęp do pamięci obrazu;
b it 1 musi być równy 1;
b itO musi być równy 0.

Układ graficzny (graphics controIlei)


Układ graficzny odpowiada za przekazywanie danych pomiędzy pamięcią obrazu a pro­
cesorem oraz układem określania atrybutu.

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

Rejestr informacyjny układu graficznego - adres 3CFh


Poprzez rejestr informacyjny następuje zapis/odczyt informacji do/z rejestru wskazane­
go przez rejestr adresowy:

Rejestr ustawiania/zerowania (set/reset register) - indeks OOh


Rejestr ustawiania/zerowania służy do określenia bitów, które będą ustawiane lub zero­
wane i poddawane operacjom logicznym - za jego pomocą ustawia się więc kolor,
który zostanie nadany punktom podczas zapisu do pamięci. Wykonywana operacja
logiczna wybierana jest przez zapis do rejestru przesunięcia i wyboru funkcji.

Nie używane bit 3 bit 2 bit 1 bit 0

bity 7—4 zarezerwowane;


bit 3 analogicznie dla trzeciego płatu pamięci;
bit 2 analogicznie dla drugiego płatu pamięci;
bit 1 analogicznie dla pierwszego płatu pamięci;
bit 0 tryb modyfikacji zerowego płatu pamięci:
0 - zerowanie (lub operacja logiczna z 0),
1 —ustawianie (lub operacja logiczna z 1).

Rejestr zezwolenia na ustawiania/zerowania (enable set/reset registei) - indeks 01 h


Rejestr służy do zezwolenia na modyfikację płatów pamięci zgodnie z zawartością re­
jestru ustawiania/zerowania.

Nie używane bit 3 bit 2 bit 1 bit 0

bity 7—4 zarezerwowane;


bit 3 analogicznie dla trzeciego płatu pamięci;
bit 2 analogicznie dla drugiego płatu pamięci;
bit 1 analogicznie dla pierwszego płatu pamięci;
bit 0 modyfikacja zerowego płatu zgodnie z zawartością rejestru
ustawiania/zerowania:
0 - brak zezwolenia na modyfikację,
1 - zezwolenie na modyfikację.

Zawartość tego rejestru jest uwzględniana tylko w zerowym trybie zapisu.

Rejestr porównania kolorów (color compare registei) - indeks 02h


Rejestr służy do określenia numeru koloru, z którym porównywane są punkty podczas
odczytu pamięci obrazu.
414 Anatomia PC

Nie używane bit 3 bit 2 bit 1 bit 0

bity 7-4 nie używane;


bity 3 -0 numer porównywanego koloru.

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.

Nie używane bit 4 bit 3 bit 2 bit 1 bitO

bity 7-5 nie używane;


bity 4-3 wykonywana funkcja logiczna:
00 - zapis bez wykonywania operacji logicznej,
01 - operacja logiczna AND,
10 - operacja logiczna OR,
11 - operacja logiczna XOR;
bity 2 -0 wielkość przesunięcia w prawo (przesunięcie jest przesunięciem
cyklicznym).

Przesunięcie bajtu ma priorytet wyższy od funkcji logicznej i dlatego przeprowadzane


jest jako pierwsze. Przesunięcie wykonywane jest tylko w zerowym i trzecim trybie za­
pisu. Przesunięcie wykonywane jest wyłącznie na bajtach zapisywanych przez procesor.

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.

bity 7-2 nie używane;


bity 1-0 numer płatu pamięci przeznaczonego do odczytu.

Zawartość tego rejestru jest brana pod uwagę tylko w zerowym trybie odczytu.
Karty graficzne 415

Rejestr trybu dostępu do pamięci (modę registei) - indeks 05h


Rejestr trybu dostępu do pamięci określa sposób zapisywania i odczytywania informacji
z pamięci obrazu. Razem z rejestrem dodatkowym służy do określenia trybu adresowa-
nia pamięci przez układ graficzny.

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.

Rejestr dodatkowy (miscellaneous registei) - indeks 06h


Rejestr dodatkowy układu graficznego służy do określenia trybu pracy sterownika i po­
czątku pamięci obrazu. Razem z rejestrem trybu dostępu do pamięci służy do określenia
trybu adresowania pamięci przez układ graficzny.
416 Anatomia PC

Nie używane bit 3 bit 2 bit 1 bitO

bity 7-4 nie używane;


bity 3-2 adres początku pamięci obrazu oraz jej rozmiar:
00 - początek: A000:0000, rozmiar 128 kB,
01 - początek: AOOO.OOOO, rozmiar 64 kB,
10 - początek: B000:0000, rozmiar 32 kB,
11 - początek: B 800:0000, rozmiar 32 kB;
bit 1 tryb adresowania:
0 - adresowanie standardowe,
1 - podczas zapisu/odczytu bajtu zerowany jest najmłodszy bit
adresu, przez co nie są dostępne bajty o nieparzystych adresach;
bit O tryb pracy:
0 - tryb tekstowy,
1 - tryb graficzny.

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.

Rejestr pominięcia koloru (colordon’t care register) - indeks 07h


Rejestr pominięcia koloru służy do określenia płatów pamięci obrazu pomijanych pod­
czas porównywania z zawartością rejestru porównywania kolorów.

Nie używane bit 3 bit 2 bit 1 bitO

bity 7-^ł me używane;


bit 3 podobnie dla trzeciego płatu pamięci;
bit 2 podobnie dla drugiego płatu pamięci;
bit 1 podobnie dla pierwszego płatu pamięci;
bitO pominięcie zerowego płatu pamięci:
0 - wartość bitu odczytanego z zerowego płatu pamięci jest
zgodna z wartością bitu w rejestrze porównywania kołorów,
1 - wartość bitu odczytanego z zerowego bitu pamięci jest zgodna
z wartością bitu w rejestrze porównywania kolorów wtedy,
gdy oba bity są takie same.

Wpisanie do rejestru wartości OOh spowoduje zgodność wszystkich kolorów z numerem


koloru zapisanym w porównywaniu kolorów.

Rejestr modyfikacji bitów {bit mask register) - indeks 08h


Rejestr modyfikacji bitów służy do określenia bitów, które nie będą modyfikowane
podczas zapisu do pamięci obrazu.
Karty graficzne 417

bit 7 bit 6 bit 5 | bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-1 analogicznie dla bitów 1-7 komórki pamięci obrazu;


bit 0 modyfikacja zerowego bitu pamięci obrazu:
0 - bit nie będzie modyfikowany,
1 - podczas zapisu bit zostanie zmodyfikowany.

W zerowym trybie zapisu zawartość rejestru nie jest uwzględniana.

Układ sterowania atrybutem (ałtribute controllef)


Układ sterowania atrybutem służy do zamiany kolorów zapisanych w pamięci obrazu na
indeksy kolorów zdefiniowanych w rejestrach wzorców kolorów. Układ sterowania
atrybutem odpowiada także za kolor krawędzi ekranu.

Rejestr adresowy układu sterowania atrybutem


(igraphics 1 and 2 address registef) - adres 3C0h
Rejestr adresowy układu sterowania atrybutem wiąże rejestr informacyjny z rejestrami
wewnętrznymi układu. Jest także rejestrem informacyjnym tego układu. Zawartość reje­
strów wewnętrznych układu może być także odczytana pod adresem wejścia-wyjścia
3C lh.

Nie używane b it5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-6 nie używane;


bit 5 dostęp do rejestrów palety:
0 - zabronienie dostępu dorejestrów palety,
1 - udostępnienie rejestrów palety;
bity 4—0 indeks wewnętrznego rejestru układu sterowania atrybutem.

Powiązanie adresu informacyjnego z rejestrem wewnętrznym musi być poprzedzone


odczytaniem zawartości pierwszego rejestru stanu o adresie 3BAh (3DAh).
P r z y k ła d :
cli ; zablokowanie przerwań
mov dx,3dah
in al,dx ; skojarzenie rej.
; indeksowego z adresem 3C0h
mov al,indeks rej wewnetrz
mov dx,3C0h
out dx, al ; wybór rej estru wewn.
nop ; zwłoka na zmianę stanu
nop ; sterownika
mov al,wartość
out dx, al ; zapis wartości do rej estru
; wewnętrznego
418 Anatomia PC

Rejestr informacyjny układu sterowania atrybutem - adres 3C0h/3C1h


Poprzez rejestr informacyjny następuje zapis/odczyt informacji do/z rejestru wskaza­
nego poprzez rejestr adresowy. Z powodu wspólnego adresu z rejestrem indeksowym,
przed dostępem do wewnętrznych rejestrów należy dokonać odczytu zawartości pier­
wszego rejestru stanu o adresie 3BAh (3DAh).

Zmiana zawartości rejestrów układu sterowania atrybutem powinna być dokonywana


podczas powrotu pionowego; w przeciwnym przypadku na ekranie można zaobserwo­
wać efekt „śnieżenia”.

Rejestry palety {palette registers) - indeksy OOh-OFh


Rejestry palety służą do przyporządkowania numerom koloru odpowiednich wzorców
kolorów, przechowywanych w rejestrach wzorców kolorów przetwornika cyfrowo-
analogowego.

Nie używane bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7—6 nie używane;


bity 5 -0 numer rejestru wzorca koloru zawierającego 18-bitowy wzorzec
koloru.

W trybach 256-kolorowych nie są uwzględniane rejestry palety. Indeksem rejestru


wzorca koloru staje się wtedy 8-bitowa wartość zapisana w pamięci obrazu.

Rejestr sterowania trybem pracy (mode contro! registei) - indeks 10h


Rejestr sterowania trybem pracy służy do określenia trybu działania układu sterowania
atrybutem.

bit 7 bit 6 bit 5 Nie używ. bit 3 bit 2 bit 1 bitO

bit 7 tryb podziału wzorców kolorów na bloki:


0 - cztery bloki po 64 wzorce kolorów,
1 —szesnaście bloków po 16 wzorców kolorów;
bit 6 liczba bitów opisujących kolor punktu:
0 - cztery bity na punkt (tryb 16-kołorowy),
1 - osiem bitów na punkt (tryb 256-kolorowy);
bit 5 ograniczenie przesunięcia poziomego w trybie split screen :
0 —jednoczesne przesunięcie obu obszarów,
1 - przesunięcie tylko górnego obszaru;
bit 4 nie używany;
Karty graficzne 419

bit 3 tryb interpretacji bajtu atrybutu:


0 - bity 4-7 atrybutu określają kolor tła znaku,
1 - bity 6-4 atrybutu określają kolor tła znaku; bit 7 równy 1
oznacza migotanie znaku;
bit 2 tryb wyświetlania znaków o szerokości 9 punktów:
0 - dziewiąty punkt znaku przybiera kolor tła poprzedniego znaku,
1 - dla znaków o kodach COh-DFh dziewiąty punkt ma taki sam
kolor jak punkt ósmy; dla pozostałych znaków dziewiąty punkt
ma kolor tła;
bit 1 rodzaj monitora:
0 - monitor kolorowy,
1 - monitor monochromatyczny;
bit 0 tryb pracy sterownika:
0 —tryb tekstowy,
1 - tryb graficzny.

Rejestr krawędzi ekranu (overscan registei) - indeks 11h


Rejestr krawędzi ekranu służy do określenia koloru (numeru wzorca koloru) brzegu
ekranu.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-0 numer wzorca koloru krawędzi ekranu.

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.

Nie używane bit 5 bit 4 bit 3 | bit 2 bit 1 bitO

bity 7-6 nie używane;


bity 5—4 wybór bitów diagnostycznych układu sterowania atrybutem, które
mogą być odczytane z bitów 4 i 5 pierwszego rejestru stanu
o adresie 3DAh (3bah):
00 - bity 2 i 0,
01 - bity 5 i 4,
1 0 - b ity 3 i 1,
11 - bity 7 i 6;
420 Anatomia PC

bit 3 analogicznie dla trzeciego płatu;


bit 2 analogicznie dla drugiego płatu;
bit 1 analogicznie dla pierwszego płatu;
bit 0 uwzględnienie zerowego płatu pamięci podczas wyświetlania:
0 - zerowy płat pamięci nie jest uwzględniany,
1 - zerowy płat pamięci jest uwzględniany.

Rejestr przesunięcia poziomego (horizontal pel panning register) - indeks 13h


Rejestr przesunięcia poziomego służy do określenia przesunięcia obrazu w lewo.

Nie używane bit 3 bit 2 bit 1 bit 0

bity 7—4 nie używane;


bity 3-0 wielkość przesunięcia poziomego w punktach:

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

Zawartość rejestru jest uwzględniana w tekstowych i graficznych trybach pracy.

Rejestr wyboru koloru (coiorselect registei) - indeks 14h


Rejestr wyboru koloru służy do wybrania bloku wzorców kolorów (grupy rejestrów
przetwornika cyfrowo-analogowego).

Nie używane bit 3 bit 2 bit 1 bit 0

dla siódmego bitu rejestru sterowania trybem równego 1:


bity 7-4 nie używane;
bity 3 -0 numer jednego z szesnastu bloków wzorców kolorów;
Karty graficzne 421

dla siódmego bitu rejestru sterowania trybem równego 0 :


bity 7-4 nie używane.
bity 3-2 numer jednego z czterech bloków wzorców kolorów;
bity 1-0 nie używane;

Zawartość rejestru nie ma znaczenia w 256-kolorowych trybach pracy.

Przetwornik cyfrowo-analogowy (digital to analog convertei)


Rolą przetwornika cyfrowo-analogowego jest przetworzenie wzorców kolorów zawar­
tych w rejestrach wzorców kolorów na sygnał analogowy wysyłany do monitora. Wzor­
ce kolorów są zapisane w 256 18-bitowych rejestrach. Wartość 18-bitowa pozwala na
wyświetlenie 262144 odcieni, choć sterownik VGA pozwala na jednoczesne wyświet­
lenie tylko 256 kolorów. Sterowniki SVGA pozwalają na uzyskanie większej ilości od­
cieni (nawet ponad 16 milionów) i jednoczesne wyświetlenie większej liczby kolorów
na ekranie.

Dla zachowania zgodności pierwsze 16 kolorów sterownika VGA odpowiada szesnastu


kolorom sterownika EGA. Kolejnym numerom odpowiadają następujące kolory:

Numer rejestru Kolor


0 czarny (black)
1 niebieski (blue)
2 zielony (green)
3 siny (cyan)
4 czerwony (red)
5 fioletowy (magenta)
6 brązowy (brown)
7 jasnoszary (łight gray)
8 szary (gray)
9 jasnoniebieski (light blue)
10 jasnozielony (light green)
11 jasnosiny (light cyan)
12 jasnoczerwony (light red)
13 różowy (pink)
14 żółty (yellow)
15 biały (white)

Kolejne 16 kolorów odpowiada odcieniom szarości tych kolorów.


422 Anatomia PC

Rejestr ograniczenia koloru (PEL mask register) - adres 3C6h


Rejestr ograniczenia koloru służy do ograniczenia liczby wzorców kolorów używanych
podczas wyświetlania punktów na ekranie. Wartość wysyłana przez układ sterowania
atrybutem oraz zawartość rejestru ograniczającego są argumentami funkcji AND, która
jako wynik zwraca numer wzorca koloru.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

Po każdej zmianie trybu pracy do rejestru ograniczającego jest wpisywana wartość FFh.

Rejestr stanu przetwornika (DAC status register) - adres 3C7h


Rejestr stanu przetwornika cyfrowo-analogowego jest używany do odczytania stanu
wzorców kolorów.

bity 7-2 nie używane;


bity 1-0 stan rejestrów wzorców kolorów:
00 - rejestry wzorców kolorów są aktualnie odczytywane,
11 —rejestry wzorców kolorów są aktualnie zapisywane.

Rejestr jest przeznaczony wyłącznie do odczytu.

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.

bit 7 bit 6 bit5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7—0 numer pierwszego rejestru wzorca koloru przeznaczonego do


odczytu.

Po wpisaniu wartości do rejestru powinien nastąpić cykl odczytów zawartości rejestrów


wzorców kolorów. Cykl odczytu wzorca koloru polega na pobraniu trzech 6-bitowych
wartości odpowiadających kolejno składowej czerwonej, zielonej i niebieskiej wzorca
koloru. Jeden cykl odczytu wzorca wymaga trzech odczytów rejestru formacyjnego
przetwornika o adresie 3C9h. Po każdym cyklu odczytu zawartość rejestru adresowego
jest automatycznie zwiększana o jeden i może zostać rozpoczęty kolejny cykl odczytu
wzorca koloru.

Pomiędzy dwoma odczytami rejestru informacyjnego powinno upłynąć co najmniej 240 ns.

Rejestr jest przeznaczony wyłącznie do zapisu


Karty graficzne 423

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.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-0 numer pierwszego rejestru wzorca koloru przeznaczonego do zapisu.

Po wpisaniu wartości do rejestru powinien nastąpić cykl zapisów do rejestrów wzorców


kolorów. Cykl zapisu wzorca koloru polega na wpisaniu trzech 6-bitowych wartości
odpowiadających kolejno składowej czerwonej, zielonej i niebieskiej wzorca koloru.
Jeden cykl zapisu wzorca wymaga trzech zapisów rejestru informacyjnego przetwornika
o adresie 3C9h. Po każdym cyklu zapisu zawartość rejestru adresowego jest automatycz­
nie zwiększana o jeden i może zostać rozpoczęty kolejny cykl zapisu wzorca koloru.

Pomiędzy dwoma zapisami rejestru informacyjnego powinno upłynąć co najmniej 240 ns.

Rejestr jest przeznaczony wyłącznie do zapisu.

Rejestr informacyjny przetwornika (PEL data registei) - adres 3C9h


Rejestr informacyjny przetwornika służy do zapisu i odczytu informacji o wzorcach
kolorów.

Nie używany bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-6 nie używane.


bity 5-0 wartość jednej z trzech składowych wzorca koloru;

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.

Pomiędzy dwoma operacjami zapisu/odczytu powinno upłynąć co najmniej 240 ns.

Układ sterowania wyświetlaczem (CRTcontrollei)


Układ sterowania wyświetlaczem odpowiada za zachowanie zależności czasowych przy
wyświetlaniu obrazu. Rejestry układu sterowania określają także kształt kursora i jego
położenie, wysokość podkreślenia, wysokość znaków, poziomy podział obrazu oraz
położenie wyświetlanej strony w pamięci obrazu.
424 Anatomia PC

Rejestr indeksowy układu sterowania wyświetlaczem


(CRTC address registe?) - adres 3B4h (3D4h)
Rejestr adresowy układu graficznego wiąże rejestr informacyjny z rejestrami wewnętrz­
nymi układu.

Rejestr informacyjny układu sterowania wyświetlaczem - adres 3B5h (3D5h)


Poprzez rejestr informacyjny następuje zapis/odczyt informacji do/z rejestru wskaza­
nego przez rejestr indeksowy.

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.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-0 całkowity czas wyświetlania linii.

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.

Rejestr końca wyświetlania poziomego (horizontal display end registei) - indeks 01 h


Wartość zawarta w rejestrze końca wyświetlania poziomego określa moment zakoń­
czenia wyświetlania linii obrazu.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-0 szerokość obrazu w znakach.

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.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-0 wartość licznika znaków, przy której następuje wygaszenie


plamki.
Karty graficzne 425

Rejestr końca wygaszania poziomego (end horizontal blanking registei) - indeks 03h
wyświetlania
czenia wygaszania poziomego.

1 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bit 7 zawsze równy jeden;


bity 6-5 opóźnienie rozpoczęcia następnego cyklu:
00 - bez opóźnienia,
01 - jeden znak opóźnienia,
10 - dwa znaki opóźnienia,
11 - trzy znaki opóźnienia;
bity 4 -0 mniej znaczące bity wartości określającej koniec 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.

Bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-0 wartość określająca początek 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.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 bit piąty wartości określającej koniec wygaszania poziomego;


bity 6-5 opóźnienie początku powrotu poziomego:
00 - bez opóźnienia,
01 - je d e n znak opóźnienia,
10 - dwa znaki opóźnienia,
11 - trzy znaki opóźnienia;
426 Anatomia PC

bity 4 -0 mniej znaczące bity wartości określającej koniec 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.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-0 najmniej znaczące bity wartości określającej całkowity czas


wyświetlania obrazu.

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.

Rejestr przepełnień układu sterowania wyświetlaczem (overflow registei) - indeks 07h


Rejestr przepełnień zawiera bardziej znaczące bity wartości zawartych w innych re­
jestrach.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 dziewiąty bit wartości określającej początek powrotu pionowego;


bit 6 dziewiąty bit wartości określającej koniec wyświetlania
pionowego;
bit 5 dziewiąty bit wartości określającej całkowity czas wyświetlania
obrazu;
bit 4 ósmy bit rejestru porównania linii;
bit 3 ósmy bit wartości określającej początek wygaszania pionowego;
bit 2 ósmy bit wartości określającej początek powrotu pionowego;
bit 1 ósmy bit wartości określającej koniec wyświetlania pionowego;
bit 0 ósmy bit wartości określającej całkowity czas wyświetlania
obrazu.
Karty graficzne 427
&•'

•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.

Nie używane bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

h:- bit 7 nie używany;


W
bity 6-5 dodatkowe bity rejestru przesunięcia poziomego;
• i
•N .
bity 4-0 numer pierwszej wyświetlanej linii obrazu.

-.y

W trybach graficznych przesuwanie obrazu wykonywane jest za pomocą zmiany zawar­


tości rejestru adresowego (indeks OCh i ODh).

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.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bit 7 jakość obrazu przy rozdzielczości pionowej 200 linii:


0 - pojedyncze wyświetlanie linii,
1 - podwójne wyświetlanie linii;
bit 6 dziewiąty bit rejestru porównania linii;
r-
T ’.

bit 5 dziewiąty bit wartości określającej początek wygaszania


lir pionowego;
bity 4-0 wysokość znaku pomniejszona o jeden.

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.

Nie używane bit 5 bit 4 bit 3 bit 2 bit 1 bitO


&
bity 7-6 nie używane;
bit 5 schowanie kursora:
0 - kursor widoczny,
1 —kursor schowany;
bity 4 -0 numer górnej linii kursora pomniejszony o 1.
•K
•ï .
ff '

Pierwsza linia od góry ma numer 0.

£
-,ys

* '•’. 4 *

•V-;
428 Anatomia PC

Rejestr ostatniej linii kursora {cursor end register) - indeks OBh


Rejestr ostatniej linii kursora określa odległość dolnej linii kursora od górnej krawędzi
znaku.

Nie używane bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bit 7 nie używany;


bity 6-5 opóźnienie wyświetlania kursora:
00 - brak opóźnienia,
01 - jeden znak opóźnienia,
10 - dwa znaki opóźnienia,
11 - trzy znaki opóźnienia;
bity 4 -0 numer dolnej linii kursora pomniejszony;

Pierwsza linia od góry ma numer 0.

Rejestry adresowe (start address high register,


start address Iow register) - indeksy OCh i ODh
Rejestry adresowe zawierają adres pierwszego wyświetlanego znaku (w trybach teksto­
wych) lub punktu (w trybach graficznych).

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7 -0 bardziej i mniej znacząca część adresu pierwszego wyświetlanego


punktu lub znaku.

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.

Rejestry pozycji kursora (cursor location high register,


cursor location Iow register) - indeksy OEh i OFh
Rejestry pozycji kursora mają adres znaku zawierającego kursor (w trybach teksto­
wych).

bit 7 bit 6 b it5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 bit 6 b it5 bit 4 bit 3 bit 2 bit 1 bitO

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 początku powrotu pionowego (verticalretrace start) - indeks 10h


W rejestrze początku powrotu pionowego znajduje się osiem mniej znaczących bitów
wartości określającej moment początku powrotu pionowego. Bity ósmy i dziewiąty
wartości określającej rozpoczęcie powrotu pionowego znajdują się w rejestrze przepeł­
nień.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-0 mniej znaczące bity wartości określającej rozpoczęcie powrotu


pionowego.

Rejestr końca powrotu pionowego ( vertical retrace end) - indeks 11h


Rejestr końca powrotu pionowego zawiera cztery mniej znaczące bity wartości określa­
jącej moment zakończenia powrotu pionowego.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bit 7 zabezpieczenie przed zapisem rejestrów o indeksach OOh—07h:


0 - zezwolenie na modyfikację,
1 - brak zezwolenia na modyfikację;
bit 6 liczba cykli odświeżania pamięci RAM sterownika:
0 - trzy cykle odświeżania na jedną linię,
1 - pięć cykli odświeżania na jedną linię;
bit 5 zezwolenie na przerwanie powrotu pionowego:
0 - zezwolenie na generowanie przerwania,
1 - brak zezwolenia na generowanie przerwania;
bit 4 potwierdzenie przyjęcia przerwania powrotu pionowego:
0 - przyjęcie żądania obsługi przerwania,
1 - zakończenie obsługi przerwania;
bity 3-0 mniej znaczące bity wartości określającej moment końca powrotu
pionowego.
Wystąpienie przerwania powrotu pionowego jest sygnalizowane zmianą stanu linii IRQ
2. Standardowy sterownik VGA nie generuje przerwania powrotu pionowego.

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.

bit 7 bit 6 b it5 bit 4 bit 3 bit 2 bit 1 bit 0


430 Anatomia PC

bity 7-0 mniej znaczące bity wartości określającej moment końca


wyświetlania pionowego —1.

Bity ósmy i dziewiąty wartości określającej moment końca wyświetlania pionowego


znajdują się w rejestrze przepełnień.

Rejestr długości linii (offset registei) - indeks 13h


Rejestr długości linii zawiera wartość określającą długość jednej linii wyświetlanego
obrazu w bajtach, słowach lub podwójnych słowach w zależności od zawartości rejestru
trybu adresowania.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7—0 rozmiar jednej linii wyświetlanego obrazu w bajtach.

Rejestr pozycji podkreślenia (underline location register) - indeks 14h


Rejestr pozycji podkreślenia zawiera numer linii, w której będzie wyświetlane podkreś­
lenie.

Nie używ. bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 ... .

bit 7 nie używany;


bit 6 tryb adresowania pamięci obrazu:
0 - tryb jest określany przez szósty bit rejestru trybu adresowania,
ł - tryb podwójnych słów (tryb 256-kolorowy - interpretowana
jest co czwarta komórka pamięci obrazu);
bit 5 dzielnik licznika znaków:
0 —przejście do następnej komórki pamięci po zwiększeniu
licznika o 1,
1 - przejście do następnej komórki pamięci po zwiększeniu
licznika o 4;
bity 4 -0 numer linii, w której będzie wyświetlane podkreślenie.

Rejestr pozycji podkreślenia zawiera także informację uzupełniającą o trybach adreso­


wania stosowanych przez sterownik.

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.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0


Karty graficzne 431

bity 7-0 mniej znaczące bity wartości określającej moment początku


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.

bit 7 bit 6 bit5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-0 mniej znaczące bity wartości określającej moment końca


wygaszania pionowego.

Bity ósmy i dziewiąty wartości określającej koniec wygaszania pionowego są takie


same jak bity ósmy i dziewiąty wartości początku wygaszania pionowego.

Rejestr trybu adresowania (mode contro! registei) - indeks 17h


Rejestr trybu adresowania razem z rejestrem pozycji podkreślenia określa sposób
adresowania pamięci obrazu.

bit 7 bit 6 bit 5 nie używ. bit 3 bit 2 bit 1 bitO

bit 7 zerowanie układu:


0 - brak zezwolenia na wykonanie powrotu pionowego
i poziomego,
1 - standardowa praca;
bit 6 tryb adresowania pamięci obrazu:
0 —tryb bajtów (interpretowana jest każda komórka pamięci),
1 - tryb słów (interpretowana jest co druga komórka pamięci);
bit 5 bit używany, jeśli wyzerowany bit szósty:
0 - podczas interpretowania pamięci obrazu zerowy bit adresu
jest zastępowany bitem trzynastym,
1 - podczas interpretowania pamięci obrazu zerowy bit adresu
jest zastępowany bitem piętnastym;
bit 4 nie używany;
bit 3 dzielnik licznika znaków:
0 - przejście do następnego adresu, gdy licznik znaków zwiększa
się o 1,
1 - przejście do następnego adresu, gdy licznik znaków zwiększa
się o 2 ;
432 Anatomia PC

bit 2 sposób zwiększania licznika linii:


0 - licznik linii jest zwiększany po każdym powrocie poziomym,
1 - licznik linii jest zwiększany co drugi powrót poziomy;
bit 1 przesunięcie o 16 kB:
0 - pamięć obrazu podzielona jest na część zawierającą linie
o numerach, których reszta z dzielenia przez 4 wynosi 0 lub 1
(16 kB) i na część zawierającą linie o numerach, których reszta
z dzielenia przez 4 wynosi 2 lub 3 (16 kB),
1 - linie parzyste i nieparzyste występują na przemian;
bit 0 zgodność z CGA:
0 - pamięć obrazu podzielona jest na część zawierającą linie
parzyste (8 kB) i część zawierającą linie nieparzyste (8 kB),
1 - linie parzyste i nieparzyste występują na przemian.

Rejestr porównania linii (linę compare register) - indeks 18h


Rejestr porównania linii umożliwia poziome podzielenie ekranu na dwa, w dużym stop­
niu niezależne obszary.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-0 numer linii podziału ekranu.

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.

Funkcje konieczne do obsługi sterowników VGA i EGA zawarte są w BlOS-ach tych


sterowników. BIOS sterownika VGA obejmuje wszystkie funkcje BIOS-u sterownika
EGA; przy opisie podamy ewentualne różnice i dostępność danej funkcji.

Funkcje BIOS-u sterownika można podzielić tematycznie na:


• funkcje określające tryb pracy i ogólne parametry sterownika (00h-07h oraz
OFh);
• funkcje dostępu do ekranu (08h-0Eh);
• funkcje służące do definiowania kolorów (łOh);
• funkcje generatora znaków (1 lh);
Karty graficzne 433

• funkcje konfigurujące sterownik ( 12h);


• funkcje uzupełniające (13h, lA h -lC h ).

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.

Funkcje określające tryb pracy i ogólne parametry sterownika


Funkcja OOh - wybór trybu pracy sterownika (EGAA/GA)
Funkcja służy do wyboru trybu pracy sterownika.
P a r a m e t r y w e jś c io w e :
AH OOh;
AL bit 7= 1 zawartość pamięciobrazu pozostanie bez zmian,
bit 7^ 0 przy zmianie trybu pamięć zostanie wyzerowana,
bity 0-6 numer trybu.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Tryby pracy standardowego sterownika VGA:

Numer Liczba Tryb Emulacja


Rozdzielczość
trybu kolorów graficzny/ teks towy sterownika
OOh 40x25 16 tekstowy CGA
Olh 40x25 16 tekstowy CGA
02h 80x25 16 tekstowy CGA
03h 80x25 16 tekstowy CGA
04h 320 x 200 4 graficzny CGA
05h 320 x 200 4 graficzny CGA
06h 640 x 200 2 graficzny CGA
07h 80x25 2 tekstowy MDA
ODh 320 x 200 16 graficzny EGA
OEh 640 x 200 16 graficzny EGA
OFh 640 x 350 2 graficzny EGA mono
lOh 640 x 350 16 graficzny EGA
llh 640 x 480 2 graficzny MCGA
12h 640 x 480 16 graficzny VGA
13h 320 x 200 256 graficzny MCGA
434 Anatomia PC

Funkcja 01 h - określenie postaci kursora (EGA/VGA)


Funkcja służy do określenia wysokości i położenia wewnątrz znaku migającego prosto­
kąta wyróżniającego znak na ekranie.
P a r a m e t r y w e jś c io w e :
AH Olh;
CH bit 5= 1 kursor schowany;
bit 5= 0 kursor wyświetlany,
bity 4-0 numer górnej linii kursora,
CL bity 0-4 numer dolnej linii kursora.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Najwyższa linia ma numer 0. Ustawienie numeru górnej linii mniejszego lub równego 3
i ustawienie numeru dolnej linii większego lub równego 4 powoduje wyświetlenie linii
zawartych pomiędzy czterema liniami górnymi i dolnymi.

Funkcja 02h - ustawienie pozycji kursora (EGA/VGA)


Funkcja służy do ustawienia kursora na ekranie.
P a r a m e t r y w e jś c io w e :
AH 02h;
BH numer strony;
DH numer wiersza;
DL numer kolumny.

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.

Funkcja 03h - pobranie pozycji i postaci kursora (EGA/VGA)


F u n k c ja s łu ż y d o o d c z y ta n ia b ie ż ą c e g o k s z ta łtu i p o ło ż e n ia k u rs o ra .

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

DH numer bieżącego wiersza;


DL numer bieżącej kolumny.
U w a g i d o d a tk o w e :
Lewy górny róg ekranu ma pozycję 0,0.

Funkcja 05h - ustawienie numeru wyświetlanej strony (EGA/VGA)


Funkcja służy do wyboru wyświetlanej strony.
P a r a m e t r y w e jś c io w e :
AH 05h;
AL numer strony.
U w a g i d o d a tk o w e :
W różnych trybach pracy występuje różna ilość stron. Dla trybów 04h-06h oraz 1lh —
13h istnieje tylko strona 0, dla trybów 0Fh-10h istnieją strony O i l , dla trybu OEh
istnieją strony 0-3, a dla trybów 00h-03h, 07h i ODh istnieją strony 0-7. Wywołanie
funkcji nie zmienia zawartości pamięci obrazu.

Funkcja 06h - przew inięcie tekstu w górę (EGA/VGA)


Funkcja służy do przewinięcia w górę podanego obszaru ekranu. Wiersze pozostające
u dołu obszaru wypełnione będą spacjami z podanym atrybutem.
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 górną 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.

Funkcja 07h - przewinięcie tekstu w dół (EGA/VGA)


Funkcja służy do przewinięcia w dół podanego obszaru ekranu. Wiersze pozostające
u góry obszaru wypełnione będą spacjami z podanym atrybutem.
436 Anatomia PC

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.

Funkcja OFh - pobranie numeru trybu pracy sterownika (EGA/VGA)


F u n k c ja s łu ż y d o o d c z y tu n u m e r u tr y b u p r a c y s te r o w n ik a .

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.

Funkcje dostępu do ekranu


Funkcja 08h - pobranie kodu i atrybutu znaku,
znajdującego się w miejscu wskazywanym przez kursor (EGA/VGA)

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

Funkcja 09h - ustawienie atrybutu i wypisanie znaku


w pozycji wskazywanej przez kursor (EGA/VGA)
V"
Funkcja służy do wypisania znaku (lub znaku i podanej liczby jego kopii) w miejscu
wskazywanym przez kursor. Ustawiane są także atrybuty wypisywanych znaków.
P a r a m e t r y w e jś c io w e :
H:
AH 09h;
AL kod ASCII znaku;
BH numer strony;
t

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.

Funkcja OAh - wypisanie znaku w pozycji wskazywanej przez kursor (EGA/VGA)


Funkcja służy do wypisania znaku (lub kilku jego kopii) w miejscu wskazywanym
przez kursor. Atrybuty wypisywanych znaków zależą od atrybutów ekranu.
P a r a m e t r y w e jś c io w e :
.Y *1

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 :
%

Atrybuty wyświetlanych kopii znaku pobierane są z kolejnych pozycji na ekranie. Pozy­


cja kursora nie ulega zmianie, gdyż kody sterujące nie są interpretowane, lecz wyświet­
lane tak jak normalne znaki.
% \\ >.•

V A*>

Funkcja OBh - wybranie koloru tła i krawędzi ekranu/wybranie palety kolorów

Podfunkcja OOh - wybór koloru tła i krawędzi ekranu (EGA/VGA)


•> .
W graficznych trybach pracy podfunkcja służy do określenia koloru tła i koloru kra­
wędzi ekranu, natomiast w trybach tekstowych służy tylko do wyboru koloru krawędzi
ekranu.
438 Anatomia PC

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.

Podfunkcja 01 h - wybór palety kolorów (EGA/VGA)


Podfunkcja służy do wyboru palety kolorów wykorzystywanej w graficznych trybach
pracy.
P a r a m e t r y w e jś c io w e :
AH OBh;
BH Olh;
BL numer palety.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Funkcja może być używana tylko w trybach pracy odpowiadających karcie CGA.
W innych trybach do zmiany palety służą podfunkcje OOh i 02h funkcji lOh.
Numer palety kolorów musi zawierać się w przedziale 0-127. Palety kolorów i od­
powiadające im barwy przedstawia tabela:

Palety o numerach parzystych Palety o numerach nieparzystych


Numer koloru Barwa Numer koloru Barwa
0 kolor tła 0 kolor tła
1 zielony (GREEN) 1 siny (CYAN)
2 czerwony (RED) 2 fioletowy (MAGENTA)
3 niebieski (BLUE) 3 biały (WHITE)

Funkcja OCh - Wyświetlenie punktu (piksela) w graficznych trybach pracy (EGA/VGA)


Funkcja służy do wyświetlenia punktu w określonym miejscu i w podanym kolorze.
P a r a m e t r y w e jś c io w e :
AH OCh;
AL kolor (numer koloru) punktu;
BH numer strony;
Karty graficzne 439

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.

Funkcja OEh - wyświetlenie znaku z przemieszczeniem kursora (EGA/VGA)


Funkcja służy do wyświetlenia znaku oraz przesunięcia kursora na następną pozycję.
P a r a m e t r y w e jś c io w e :
AH OEh;
AL kod ASCII znaku;
BH numer strony;
BL w graficznych trybach pracy numer koloru znaku.

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

Funkcje służące do definiowania kolorów


Funkcja 10h - operacje na palecie kolorów

Podfunkcja OOh - ustawienie jednego koloru palety (VGA)


Podfunkcja służy do określenia pojedynczego koloru palety.
P a r a m e t r y w e jś c io w e :
AH lOh;
AL OOh;
BH numer wzorca koloru;
BL numer koloru w palecie.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Zmiana koloru następuje przez wpisanie numeru wzorca koloru do określonego rejestru
palety.

Podfunkcja 01 h - zmiana koloru krawędzi ekranu (EGA/VGA)


Podfunkcja służy do ustawienia koloru obrzeża ekranu.
P a r a m e t r y w e jś c io w e :
AH 1Oh;
AL Olh;
BH numer wzorca koloru.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Zmiana koloru następuje przez wpisanie numeru wzorca koloru do określonego rejestru
palety.

Podfunkcja 02h - zmiana kolorów palety i krawędzi ekranu (VGA)


Podfunkcja służy do jednoczesnego ustawienia wszystkich kolorów palety oraz koloru
krawędzi ekranu.
P a r a m e t r y w e jś c io w e :
AH łOh;
AL 02h;
Karty graficzne 441

ES:DX adres obszaru zawierającego tablicę kolorów (17 bajtów = 16


kolorów + krawędzi).
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Zmiana kolorów następuje przez wpisanie numeru wzorca kolorów do kolejnych re­
jestrów palety oraz do rejestru koloru krawędzi ekranu. Pierwsze 16 bajtów wskazy­
wanego obszaru powinno zawierać numery kolejnych wzorców kolorów (0-15), a bajt
o adresie ES:DX + 16 powinien zawierać numer wzorca koloru krawędzi ekranu.
Standardowe kolory w trybach 16-kolorowych pokazuje poniższa tabela:

Numer koloru Kolor


0 czarny (black )
1 niebieski (blue )
2 zielony (green )
3 siny (cyan)
4 czerwony (red)
5 fioletowy (magenta)
6 brązowy (brown)
7 jasnoszary (light gray)
8 szary (dark gray)
9 jasnoniebieski (light blue)
10 jasnozielony (light green)
11 jasnosiny (light cyan)
12 jasnoczerwony (light red)
13 różowy (pink)
14 żółty (yellow)
15 biały (white)

Podfunkcja 03h - ustawienie sposobu interpretacji atrybutu znaku (EGA/VGA)


P o d fu n k c ja s łu ż y d o o k r e ś le n ia w j a k i s p o s ó b b ę d z ie in te r p r e to w a n y n a js ta rs z y b it
atrybutu znaku.
P a r a m e t r y w e jś c io w e :
AH lOh;
AL 03h;
BH sposób interpretacji bitów atrybutu:
1 bit 7=1 - znak będzie migotał,
bit 7=0 - znak nie będzie migotał,
bity 6-4 - numer koloru tła (0-7),
bity 3-0 - numer koloru znaku (0-15),
442 Anatomia PC

0 bity 4-7 - numer koloru tła (0-15),


bity 0-3 - numer koloru znaku (0-15).
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Użycie funkcji ma sens tylko w trybach tekstowych.

Podfunkcja 07h - pobranie pojedynczego koloru palety (VGA)


Podfunkcja służy do odczytu numeru wzorca koloru podanego rejestru palety.
P a r a m e t r y w e jś c io w e :
AH lOh;
AL 07h;
BL numer koloru w palecie.
W y jś c ie :
BH numer wzorca koloru.
U w a g i d o d a tk o w e :
Zwracana informacja jest odczytywana z odpowiedniego rejestru palety.

Podfunkcja 08h - pobranie koloru krawędzi ekranu (VGA)


Podfunkcja służy do odczytu numeru wzorca koloru krawędzi ekranu.
P a r a m e t r y w e jś c io w e :
AH lOh;
AL 08h.
W y jś c ie :
BH numer wzorca koloru krawędzi ekranu.
U w a g i d o d a tk o w e :
Zwracana informacja jest odczytywana z rejestru koloru krawędzi ekranu.

Podfunkcja 09h - pobranie kolorów palety i krawędzi ekranu (VGA)


Podfunkcja służy do jednoczesnego odczytu numerów wzorców kolorów całej palety
i krawędzi brzegu ekranu.
P a r a m e t r y w e jś c io w e :
AH lOh;
AL 09h;
ES:DX adres obszaru pamięci do przechowania informacji o kolorach
(17 bajtów).
Karty graficzne 443

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.

Podfunkcja 10h - określenie pojedynczego wzorca koloru (VGA)


Podfunkcja służy do określenia wzorca koloru poprzez podanie trzech składowych
koloru składających się na 18-bitowy wzorzec.
P a r a m e t r y w e jś c io w e :
AH lOh;
AL lOh;
BX numer wzorca koloru (0-255);
DH składowa czerwona koloru (0-63);
CH składowa zielona koloru (0-63);
CL składowa niebieska koloru (0-63).
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
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.

Podfunkcja 12h - określenie bloku wzorców kolorów (VGA)


Podfunkcja służy do określenia wzorców kolorów poprzez podanie trzech składowych
koloru dla każdego koloru w podanym bloku.
P a r a m e t r y w e jś c io w e :
AH 1Oh;
AL 12h;
BX numer pierwszego wzorca koloru w bloku (0-255);
CX liczba ustawianych wzorców;
ES:DX adres obszaru zawierającego kolejne wzorce kolorów.
W y jś c ie :
— brak —
444 Anatomia PC

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.

Podfunkcja 13h/00h - ustawienie liczby bloków wzorców kolorów (VGA)


F u n k c ja s łu ż y d o o k r e ś le n ia lic z b y i r o z m ia r u b lo k ó w w z o r c ó w k o lo r ó w w 1 6 -k o lo r o -
wych trybach pracy.
P a r a m e t r y w e jś c io w e :
AH lOh;
AL 13h;
BL OOh;
BH 1 - 1 6 bloków po 16 wzorców kolorów,
*
0 - 4 bloki po 64 wzorce kolorów.
W y jś c ie : r

— 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).

Podfunkcja 13h/01h - ustawienie domyślnego bloku wzorców kolorów (VGA)


i

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

Podfunkcja 15h - pobranie pojedynczego wzorca koloru (VGA)


Podfunkcja służy do pobrania składowych koloru pojedynczego wzorca.
P a r a m e t r y w e jś c io w e :
AH lOh;
AL 15h;
BX num er w zorca koloru (0—255).

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.

Podfunkcja 17h - pobranie bloku wzorców kolorów (VGA)


Podfunkcja służy do odczytania składowych wzorców kolorów w podanym bloku.
P a r a m e t r y w e jś c io w e :
AH lOh;
AL 15h;
BX numer pierwszego pobieranego wzorca koloru;
CX liczba pobieranych wzorców koloru;
ES:DX adres obszaru pamięci, w którym zapisane zostaną składowe
kolorów.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Informacja o składowych odczytywana jest z odpowiednich 18-bitowych rejestrów
wzorców kolorów bloku. Po wykonaniu funkcji obszar wskazywany przez ES:DX za­
wiera trzybajtowe wzorce kolorów kolejno dla wszystkich kolorów we wskazanym
bloku. Następne trzy bajty zawierają 6-bitową czerwoną składową, 6-bitową zieloną
składową i 6-bitową składową niebieską koloru.

Podfunkcja 1Ah - pobranie informacji o blokach wzorców kolorów (VGA)


Funkcja służy do pobrania informacji o numerze aktywnego bloku i typie bloków wzor­
ców kolorów.
P a r a m e t r y w e jś c io w e :
AH lOh;
AL 1Ah.
446 Anatomia PC

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 —

Podfunkcja 1Bh - przekształcenie do poziomów szarości (VGA)


Podfunkcja służy do przeliczenia wzorców kolorów w podanym bloku do odpowiada­
jących im poziomów szarości.
P a r a m e t r y w e jś c io w e :
AH 1Oh;
AL lBh;
BX numer pierwszego przeliczanego wzorca koloru;
CX liczba przeliczanych wzorców kolorów.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Dla wszystkich wzorców w bloku zostaje policzona wartość poziomu szarości. Każda
barwa składowa zastępowana jest sumą ważoną trzech barw, składającą się z 0.30 skła­
dowej czerwonej, 0.59 składowej zielonej i 0.11 składowej niebieskiej koloru. Pierwo­
tne wartości składowych zostają utracone.

Funkcje generatora znaków


Funkcja 11h - działania na generatorze znaków

Podfunkcja OOh - definiowanie znaków tekstowego trybu pracy (EGA/VGA)


Podfunkcja służy do zastąpienia zbioru znaków lub jego części znakami zdefiniowa­
nymi przez użytkownika.
P a r a m e t r y w e jś c io w e :
AH l l h;
AL OOh;
BH liczba bajtów opisujących pojedynczy znak;
BL numer zastępowanego zbioru znaków;
Karty graficzne 447

CX liczba zastępowanych znaków;


DX kod ASCII pierwszego zmienianego znaku;
ES:BP adres obszaru zawierającego definicje znaków użytkownika.
7 • r i

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,

Podfunkcja 01 h - załadowanie znaków standardowych 8x14 (EGA/VGA)


Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem
znaków 8 x 1 4 zapisanym w pamięci ROM sterownika VGA.
P a r a m e t r y w e jś c io w e :
AH l l h;
AL Olh;
BL numer zbioru znaków.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Podczas wywołania funkcji może nastąpić zmiana trybu pracy sterownika, jednak
zawartość pamięci obrazu pozostaje nienaruszona.

Podfunkcja 02h - załadowanie znaków standardowych 8 x 8 (EGA/VGA)


Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem
znaków 8 x 8 zapisanym w pamięci ROM sterownika VGA.
P a r a m e t r y w e jś c io w e :
AH llh;
AL 02h;
BL numer zbioru znaków.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Podczas wywołania funkcji może nastąpić zmiana trybu pracy sterownika, jednak za­
wartość pamięci obrazu pozostaje nienaruszona.

I
1
448 Anatomia PC

Podfunkcja 03h - ustawianie domyślnego zbioru znaków (EGA/VGA)


Podfunkcja służy do wyboru znaków, które będą wyświetlane na ekranie w tekstowych
trybach pracy.
P a r a m e t r y w e jś c io w e :
AH l l h;
AL 03h;
BL bity 4, 1 , 0 - numer pierwszego zbioru znaków,
bity 5, 3, 2 - numer drugiego zbioru znaków.
V I T » f «
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Wybrany zbiór musi zostać przedtem załadowany podfunkcjami OOh, Olh, 02h, 1Oh,
1lh, 12h lub 14h funkcji 1 lh.
W tekstowych trybach pracy można stosować zbiory 256-znakowe lub 512-znakowe.
Dla zbioru 256-znakowego numery pierwszego i drugiego zestawu znaków muszą być
takie same. W zbiorach 512-znakowych pierwsze 256 znaków zostanie wybrane, gdy
trzeci bit atrybutu wynosi 0, a pozostałe 256 znaków - gdy trzeci bit atrybutu wynosi 1.

Podfunkcja 04h - załadowanie znaków standardowych 8x16 (VGA)


Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem
znaków 8 x 1 6 zapisanym w pamięci ROM sterownika VGA.
P a r a m e t r y w e jś c io w e :
AH l l h;
AL 04h;
BL numer zbioru znaków.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Podczas wywołania funkcji może nastąpić zmiana trybu pracy sterownika, jednak za­
wartość pamięci obrazu pozostaje nienaruszona.

Podfunkcja 10h - definicja znaków dla tekstowych trybów pracy (EGA/VGA)


Podfunkcja służy do zastąpienia zbioru znaków lub jego części znakami zdefiniowa­
nymi przez użytkownika.
P a r a m e t r y w e jś c io w e :
AH llh;
AL lOh;
*

BH liczba bajtów opisujących pojedynczy znak;


Karty graficzne 449

BL numer modyfikowanego zbioru znaków;


CX liczba zastępowanych znaków;
DX kod ASCII pierwszego zastępowanego znaku;
ES:BP adres obszaru pamięci zawierającego definicję znaków.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Podfunkcja lOh służy do modyfikowania zestawów znaków o różnych wymiarach (w od­
różnieniu od podfunkcji OOh). Powinna być wywołana zaraz po ustawieniu tekstowego
trybu pracy i podczas wyświetlania strony zerowej.

Podfunkcja 11h - załadowanie znaków standardowych 8x14 (EGA/VGA)


Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem
znaków 8 x 1 4 zapisanym w pamięci ROM sterownika VGA.
P a r a m e t r y w e jś c io w e :
AH l l h;
AL l l h;
BL numer zbioru znaków.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Załadowany zbiór znaków odpowiada rozmiarami zbiorowi znaków sterownika MDA,
ale może on zastąpić zbiory znaków o innych wymiarach. Podfunkcja powinna być wy­
wołana zaraz po ustanowieniu tekstowego trybu pracy i podczas wyświetlania strony 0.

Podfunkcja 12h - załadowanie znaków standardowych 8 x 8 (EGA/VGA)


Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem
znaków 8 x 8 zapisanym w pamięci ROM sterownika VGA,
P a r a m e t r y w e jś c io w e :
AH llh;
AL 12h;
BL numer zbioru znaków.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Podfunkcja służy do zastąpienia zbioru znaków o wymiarach innych niż 8 x 8. Powinna
być wywołana zaraz po ustanowieniu tekstowego trybu pracy i podczas wyświetlania
strony 0.
450 Anatomia PC

Podfunkcja 14h - załadowanie znaków standardowych 8x16 (VGA)


Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem
znaków 8 x 1 6 zapisanym w pamięci ROM sterownika VGA.
P a r a m e t r y w e jś c io w e :
AH l l h;
AL 14h;
BL numer zbioru znaków.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Podfunkcja służy do zastąpienia zbioru znaków o wymiarach innych niż 8 x 16. Powin­
na być wywołana zaraz po ustanowieniu tekstowego trybu pracy i podczas wyświetlania
strony 0.

Podfunkcja 20h - modyfikowanie zestawu znaków w graficznych trybach pracy (EGA/VGA)


Podfunkcja służy do definiowania przez użytkownika wzorców znaków o kodach wyż­
szych od 127.
P a r a m e t r y w e jś c io w e :
AH l l h;
AL 20h;
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 lFh. Zmodyfikowane znaki są dostępne w graficznych trybach pracy 04h-
06h. Podfunkcja powinna być wywołana zaraz po ustanowieniu graficznego trybu
pracy.

Podfunkcja 21 h - modyfikowanie zestawu znaków w graficznych trybach pracy (EGA/VGA)


Podfunkcja służy do definiowania przez użytkownika wzorców znaków dostępnych w
graficznych trybach pracy.
P a r a m e t r y w e jś c io w e :
AH llh;
AL 21 h;
BL liczba wierszy na ekranie zakodowana następująco:
0 - liczba wierszy podana w rejestrze DL,
Karty graficzne 451

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.

Podfunkcja 22h - załadowanie znaków standardowych 8x14 (EGA/VGA)


ii .- Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem
znaków 8 x 1 4 zapisanym w pamięci ROM sterownika VGA.
W
i '.
P a r a m e t r y w e jś c io w e :
AH llh;
AL 22h;
€ BL liczba wierszy na ekranie zakodowana następująco:
0 - liczba wierszy podana w rejestrze DL,
1 - 1 4 wierszy,
2 - 2 5 wierszy,
3 - 4 3 wiersze;
DL dla rejestru BL = 0 zawiera liczbę wierszy na ekranie
w.

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.

Podfunkcja 23h - załadowanie znaków standardowych 8 x 8 (EGAA/GA)


Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem
znaków 8 x 8 zapisanym w pamięci ROM sterownika VGA.
>v

P a r a m e t r y w e jś c io w e :
AH llh;
AL 23h;
v.
452 Anatomia PC

BL liczba wierszy na ekranie zakodowana następująco:


0 - liczba wierszy podana w rejestrze DL,
1 - 1 4 wierszy,
2 - 25 wierszy,
3 - 4 3 wiersze;
DL dla rejestru BL = 0 zawiera liczbę wierszy na ekranie.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Adres zestawu znaków 8 x 8 jest zapisywany w tablicy wektorów przerwań jako wektor
43h. Podfunkcja powinna być wywołana zaraz po ustanowieniu graficznego trybu
pracy.

Podfunkcja 24h - załadowanie znaków standardowych 8x16 (VGA)


Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem
znaków 8 x 1 6 zapisanym w pamięci ROM sterownika VGA.
P a r a m e t r y w e jś c io w e :
AH llh;
BL liczba wierszy na ekranie zakodowana następująco:
0 - liczba wierszy podana w rejestrze DL,
1 - 1 4 wierszy,
2 - 2 5 wierszy,
3 - 4 3 wiersze;
DL dla rejestru BL = 0 zawiera liczbę wierszy na ekranie.
W y jś c ie :
— brak —
U w a g i d o d a tk o w e :
Adres zestawu znaków 8 x 16 jest zapisywany w tablicy wektorów przerwań jako wek­
tor 43h. Podfunkcja powinna być wywołana zaraz po ustanowieniu graficznego trybu
pracy.

Podfunkcja 30h - pobranie informacji o zestawach znaków (EGA/VGA)


P o d fu n k c ja s łu ż y d o p o b r a n ia in fo r m a c ji o d o s tę p n y c h z b io r a c h z n a k ó w .

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

1 - zbiór znaków o adresie wskazywanym przez wektor


przerwania 43h,
2 - zbiór znaków 8 x 14 z pamięci ROM sterownika,
3 - zbiór znaków 8 x 8 z pamięci ROM sterownika,
4 - zbiór znaków 8 x 8 o kodach powyżej 127 z pamięci ROM
sterownika,
5 - dodatkowy zbiór znaków 8 x 14 z pamięci ROM sterownika,
6 - zbiór znaków 8 x 16 z pamięci ROM sterownika,
7 - dodatkowy zbiór znaków 8 x 16 z pamięci ROM sterownika.
W y jś c ie :
CX liczba bajtów opisujących pojedynczy znak;
DL liczba wierszy możliwych do wyświetlenia na ekranie;
ES:BP adres początku obszaru zawierającego definicje znaków.

Funkcje konfigurujące sterownik


Funkcja 12h - konfiguracja sterownika

Podfunkcja 10h - informacja o konfiguracji aktywnego sterownika (EGA/VGA)


informacj
P a r a m e t r y w e jś c io w e :
AH 12h;
BL lOh.
W y jś c ie :
BH typ monitora:
0 - monitor kolorowy,
1 - monitor monochromatyczny;
BL rozmiar pamięci obrazu:
• i '

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

iPodfunkcja 20h - rozszerzenie operacji drukowania zawartości ekranu (EGA/VGA)


Podfunkcja służy do rozszerzenia zakresu działania standardowej procedury drukowania
zawartości ekranu na tryby tekstowe o różnej ilości wierszy na ekranie.

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.

Podfunkcja 30h - ustawienie rozdzielczości pionowej tekstowych trybów pracy (VGA)


Podfunkcja służy do wybrania rozdzielczości pionowej, która będzie stosowana podczas
najbliższego ustawienia tekstowego trybu pracy funkcją OOh.
P a r a m e t r y w e jś c io w e :
AH 12h;
BL 30h;
AL rozdzielczość pionowa:
O - 200 linii,
1 - 3 5 0 linii,
2 - 400 linii.
r • r *
W y jś c ie :
AL OOh jeżeli aktywnym sterownikiem nie jest VGA, 12h jeżeli
aktywnym sterownikiem jest VGA.
U w a g i d o d a tk o w e :
Wyświetlenie obrazu z większą rozdzielczością pionową pozwala na wyświetlenie
większej ilości wierszy na ekranie.

Podfunkcja 31 h - powrót do standardowych kolorów (VGA)


Podfunkcja służy do określenia, czy podczas przełączania trybów pracy nastąpi przy­
wrócenie standardowej palety kolorów.
P a r a m e t r y w e jś c io w e :
AH 12h;
BL 31 h;
AL 0 - po zmianie trybu pracy nastąpi przywrócenie standardowej
palety,
1 - po zmianie trybu pracy nie nastąpi przywrócenie standardowej
palety.
W yjście:
Jeżeli podano poprawne parametry w ejściow e, to A L = 12h.
Karty graficzne 455

Podfunkcja 32h - odłączenie sterownika (VGA)


Podfunkcja służy do programowego odłączenia sterownika i zablokowania dostępu do
pamięci obrazu i rejestrów.
P a r a m e t r y w e jś c io w e :
AH 12h;
BL 32h;
AL 0 - przyłączenie sterownika,
1 —odłączenie sterownika.
*
W y jś c ie :
Jeżeli podano poprawne parametry wejściowe, to AL = 12h.
U w a g i d o d a tk o w e :
Po odłączeniu sterownika wszelki zapis do rejestrów i pamięci obrazu nie przynosi żad­
S-:.

nych efektów.

Podfunkcja 33h - przełączenie do poziomów szarości (VGA)


Podfunkcja służy do określenia trybu wyświetlania obrazu na ekranie kolorowego
monitora.
P a r a m e t r y w e jś c io w e :
AH 12h;
BL 33h;
fc:
AL 0 - obraz będzie wyświetlany w poziomach szarości,
1 - obraz będzie wyświetlany w kolorach.
W y jś c ie :
Jeżeli podano poprawne parametry wejściowe, to AL = 12h.
U w a g i d o d a tk o w e :
Obraz wyświetlany w poziomach szarości wyświetlany jest jako suma ważona barw
składowych poszczególnych kolorów. Na odcień szarości składa się 30 % barwy czer­
wonej, 59 % barwy zielonej i 11 % barwy niebieskiej. Przy podłączonym monitorze
monochromatycznym następuje domyślne ustawienie zezwolenia na wyświetlanie po­
'- li:
ziomów szarości.

Ifunkcja 34h - zezwolenie na emulację kursora (VGA)


Podfunkcja służy do określenia, czy kursor będzie emulowany programowo
P a r a m e t r y w e jś c io w e :
— brak —
Wyjście:
Jeżeli podano poprawne parametry w ejściow e, to A L = 12h.
456 Anatomia PC

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.

Podfunkcja 35h - wybór aktywnego sterownika (VGA)


Podfunkcja służy do zmiany aktywnego sterownika graficznego (jeżeli w systemie zain­
stalowano więcej niż jeden sterownik).
P a r a m e t r y w e jś c io w e :
AH 12h;
BL 35h;
AL 0- pierwsze odłączenie aktywnego sterownika,
1- pierwsze dołączenie nieaktywnego sterownika,
2- kolejne odłączenie aktywnego sterownika,
3- kolejne dołączenie nieaktywnego sterownika;
ES:DX adres obszaru do przechowania informacji o stanie aktywnego
sterownika (128 bajtów).
W y jś c ie :
Jeżeli podano poprawne parametry wejściowe, to AL = 12h.
U w a g i d o d a tk o w e :
Zmiana sterownika polega na dwukrotnym wywołaniu funkcji, najpierw do odłączenia,
a następnie do podłączenia sterownika. Operacja może być wykonana, gdy oba sterow­
niki można odłączyć za pomocą podfunkcji 32h. Dla każdego sterownika musi być
zarezerwowany osobny 128-bajtowy obszar. Jeżeli adresy sterowników nie kolidują ze
sobą, wywołanie funkcji przestaje być potrzebne.

Podfunkcja 36h - wygaszanie ekranu (VGA)


Podfunkcja służy do wygaszenia ekranu oraz do odtworzenia jego zawartości.
P a r a m e t r y w e jś c io w e :
AH 12h;
BL 36h;
AL 0 - wyświetlanie obrazu,
1 —wygaszenie obrazu.

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.

Podfunkcja OOh — wypisanie ciągu znaków bez przesuwania kursora (EGA/VGA)


Podfunkcja służy do wyświetlenia ciągu znaków z podanym atrybutem bez zmiany
pozycji kursora.
P a r a m e t r y w e jś c io w e :

&' 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.

Podfunkcja 01 h - wypisanie ciągu znaków z przesunięciem kursora (EGA/VGA)


Podfunkcja służy do wyświetlenia ciągu znaków z podanym atrybutem oraz przesunię­
cia pozycji kursora poza ostatni wyświetlony znak.
P a r a m e t r y w e jś c io w e :
w e*

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.

Podfunkcja 02h - wypisanie ciągu znaków z atrybutami


bez przesunięcia kursora (EGA/VGA)
Podfunkcja służy do wyświetlenia znaków w postaci pary „znak-atrybut znaku” bez
przesunięcia pozycji kursora.
P a r a m e t r y w e jś c io w e :
AH 13h;
AL 02h;
BH numer strony;
CX liczba par „znak-atrybut” w wyświetlanym ciągu;
Ą

DH numer wiersza;
DL numer początkowej kolumny;
ES:BP adres początku ciągu par,
W y jś c ie :
— brak —

Podfunkcja 03h - wypisanie ciągu znaków z atrybutami


oraz przesunięcie kursora (EGA/VGA)
Podfunkcja służy do wyświetlenia znaków w postaci pary „znak-atrybut” oraz przesu­
nięcia pozycji kursora poza ostatni wyświetlany znak.
P a r a m e t r y w e jś c io w e :
AH 13h;
AL 03h;
BH numer strony ;
CX liczba par „znak-atrybut” w wyświetlanym ciągu;
DH numer wiersza;
DL numer początkowej kolumny;
ES:BP adres początku ciągu par.
W y jś c ie :
— brak —
Karty graficzne 459

Funkcja 1Ah - pobranie informacji o sterowniku graficznym (VGA)

Podfunkcja OOh - pobranie informacji o rodzaju sterownika graficznego (VGA)


Podfunkcja służy do pobrania informacji o rodzaju występujących w komputerze ste­
rowników.
P a r a m e t r y w e jś c io w e :
AH lAh;
AL OOh.
W y jś c ie :
AL lAh;
BL typ sterownika aktywnego;
BH typ sterownika nieaktywnego,
U w a g i d o d a tk o w e :
Jeśli zainstalowany jest tylko jeden sterownik, to rejestr BH = 0.
Zwracane wartości i odpowiadające im sterowniki:

OOh brak sterownika


Olh sterownik MD A
02h sterownik CGA
04h sterownik EGA kolor
05h sterownik EGA monochromatycznym
06h sterownik PGA
07h sterownik VGA kolor
08h sterownik VGA monochromatycznym
OAh sterownik MCGA z cyfrowym monitorem kolorowym
OBh sterownik MCGA z analogowym monitorem monochromatycznym
OCh sterownik MCGA z analogowym monitorem kolorowym
OFFh sterownik nie rozpoznany

Podfunkcja 01h - wybranie rodzaju sterownika (VGA)


Podfunkcja służy do określenia zainstalowanych sterowników graficznych.
(*

1

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.

Funkcja 1Bh - informacja o stanie i funkcjach aktywnego sterownika (VGA)


Funkcja służy do odczytania stanu aktywnego sterownika.
P a r a m e t r y w e jś c io w e :
AH lBh;
BX 0;
ES:DI adres obszaru przeznaczonego do zapisania informacji (64 bajty).
W y jś c ie :
AL lBh.
U w a g i d o d a tk o w e :
Informacje o sterowniku podzielone są na dwie części: informacje o stanie sterownika
oraz informacje o dostępnych funkcjach. Adres obszaru informacji o funkcjach
sterownika zajmuje pierwsze cztery bajty obszaru informacji o stanie sterownika.
Struktura obszaru informacji o stanie sterownika:

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

Struktura obszaru zawierającego informacje o funkcjach sterownika:


j •
*
f
Ilość
Przesunięcie Opis znaczenia bitów (funkcje są dostępne dla bitów = l)
bajtów
ć:

OOh 1 0 dostępny tryb pracy OOh


1 dostępny tryb pracy 01 h
K
2 dostępny tryb pracy 02h
3 dostępny tryb pracy 03h
4 dostępny tryb pracy 04h
i 5 dostępny tryb pracy 05h
ś
V 6 dostępny tryb pracy 06h
(' •

7 dostępny tryb pracy 07h


462 Anatomia PC

Przesunięcie | I (9/7is znaczenia bitów (funkcje są dostępne dla bitów - 1)

Olh [1 | 0 dostępny tryb pracy 08h


1 dostępny tryb pracy 09h
2 dostępny tryb pracy OAh
3 dostępny tryb pracy OBh
4 dostępny tryb pracy OCh
5 dostępny tryb pracy ODh
6 dostępny tryb pracy OEh
7 dostępny tryb pracy OFh
02h I1 | 0 dostępny tryb pracy 1Oh
1 dostępny tryb pracy 11 h
2 dostępny tryb pracy 12h
3 dostępny tryb pracy 13h
03h 4 zarezerwowane
07h 1 0 dostępna rozdzielczość pionowa 200 linii
1 dostępna rozdzielczość pionowa 350 linii
2 dostępna rozdzielczość pionowa 400 linii_____________________
08h_______ [ j ______ | liczba dostępnych zbiorów znaków w trybach tekstowych_________
09h_______ l i ______ | maksymalna liczba jednocześnie wyświetlanych zbiorów znaków
OAh I1 I o p e ra c je w y k o n y w a n e p rz e z BIOS k a rty g ra fic z n e j:
0 możliwe są wszystkie tryby pracy
1 możliwe jest uzyskanie odcieni szarości
2 możliwe jest zastąpienie zbioru znaków
3 możliwy jest powrót do standardowych kolorów po zmianie trybu
4 możliwa jest emulacja kursora
5 możliwe jest użycie 64-kolorowej palety sterownika EGA
6 możliwa jest zmiana wzorców kolorów
7 możliwe jest określenie liczby bloków wzorców kolorów
OBh I1 I operacje wykonywane przez BIOS karty graficznej (c.d.):
0 możliwa jest obsługa pióra świetlnego (dla sterownika VGA równe 0)
1 możliwe jest zachowanie/odtworzenie stanu sterownika
2 możliwa jest zmiana interpretacji atrybutu (migotanie/tło)
3 możliwe jest uzyskanie informacji o stanie sterownika
OCh 2 zarezerwowane
OEh |1 | informacja o głównej i dodatkowej tablicy wskaźników:
0 możliwe jest używanie 512-znakowych zbiorów
1 możliwe jest zdefiniowanie tablicy kolorów
2 możliwa jest zmiana standardowego zbioru znaków w trybach
tekstowych
3 możliwa jest zmiana standardowego zbioru znaków w trybach
graficznych
4 możliwa jest zmiana standardowych kolorów i wzorców kolorów
5 możliwa jest zmiana dozwolonej kombinacji sterowników
graficznych_______________________________________________
OFh I1 I zarezerw ow ane
Karty graficzne 463

Funkcja 1Ch - zachowanie/odtworzenie stanu sterownika (VGA)

Podfunkcja OOh - pobranie koniecznego rozmiaru obszaru pamięci


do zapisania danych o stanie sterownika (VGA)

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

Podfunkcja 01 h - zachowanie stanu sterownika (VGA)


Podfunkcja służy do zapamiętania stanu sterownika w podanym obszarze pamięci
P a r a m e t r y w e jś c io w e :
AH ICh;
AL Olh;
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;
ES:BX adres obszaru pamięci przeznaczonego do zapamiętania informacji
V..
'K o stanie.
A- W y jś c ie :
AL IC h

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

Podfunkcja 02h - odtworzenie stanu sterownika (VGA)


Podfunkcja służy do odtworzenia stanu sterownika zachowanego podfunkcją Olh.
P a r a m e t r y w e jś c io w e :
AH ICh;
AL 02h;
CX rodzaj informacji o sterowniku:
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;
ES:BX adres obszaru pamięci zawierającego informację o stanie
sterownika.
W y jś c ie :
AL ICh.

Dodatkowe funkcje obsługiwane przez VESA-BIOS


Producenci większości kart SVGA wyposażają swoje sterowniki w VESA-BIOS. Doda­
je on kilka funkcji przerwania INT lOh do BIOS-u sterownika VGA.

Dodatkowe funkcje BIOS-u można podzielić zgodnie ze specyfikacjami VESA, które je


wprowadziły:

• funkcje wprowadzone przez specyfikację VESA 1.0 (4F00h-4F06h),

• funkcje wprowadzone przez specyfikację VESA 1.1 (4F07h-^4F08h),

• funkcje wprowadzone przez specyfikację VESA 1.2 (4F08h).

Funkcja 4F00h - informacja o karcie SVGA

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

Przem ieszczen ie Rozmiar pola Opis


OOh 4 bajty sygnatura - napis „VESA”
04h 1 słowo numer wersji standardu VESA
06h 2 słowa wskaźnik do napisu firmowego,
umieszczonego w pamięci ROM
przez producenta
OAh 4 bajty miejsce na dodatkową informację
o środowisku, zwykle wypełnione
bajtami o wartości 0
OEh 2 słowa wskaźnik do listy trybów pracy
zakończonej słowem o wartości
FFFFh
12h 238 bajtów obszar zarezerwowany

Funkcja 4F01h - informacja o trybach karty SVGA

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.

Przemieszczenie Rozmiar pola Opis


OOh 1 słowo atrybuty trybu:
bit 4 = 1 —tryb graficzny,
bit 4 = 0 - tryb tekstowy,
bit 3 = 1 - tryb monochromatyczny,
bit 3 = 0 —tryb kolorowy,
bit 2 = 1 - można korzystać z funkcji wyprowadzania
znaku, kreślenia piksela i przewijania okna
nierozszerzonego BIOS-u,
bit 1 = 1 - dostępna jest informacja dodatkowa,
bit 0 = 1 - tryb jest dostępny
466 Anatomia PC

| Przemieszczenie Rozmiar pola Opis


1 02h 1 bajt atrybuty okna A
bity 7-3 - zarezerwowane,
bit 2 = 1 —okno umożliwia zapis do banku,
bit 1 = 1 —okno umożliwia odczyt z banku,
bit 0 = 1 —okno istnieje
03h 1 bajt atrybuty okna B
bity 7-3 - zarezerwowane,
bit 2 = 1 —okno umożliwia zapis do banku,
bit 1 = 1 - okno umożliwia odczyt z banku,
bit 0 = 1 —okno istnieje
04h 1 słowo minimalny odstęp między początkami dwu banków
pamięci granularity, wyrażony w kB
06h 1 słowo rozmiar okna w kB
08h 1 słowo część segmentowa adresu okna A w przestrzeni
adresowej komputera
OAh 1 słowo część segmentowa adresu okna B w przestrzeni
adresowej komputera
OCh 2 słowa daleki wskaźnik do funkcji przełączającej banki
lOh 1 słowo liczba bajtów, z których złożona jest jedna linia
logiczna - linia logiczna może być dłuższa lub równa
linii fizycznej (wyświetlanej na ekranie)
Poniższe dane są opcjonalne dla trybów VESA, lecz niezbędne dla trybów
zdefiniowanych przez producenta karty:
12h 1 słowo szerokość ekranu w punktach
14h 1 słowo wysokość ekranu w punktach
p 16h 1 bajt szerokość matrycy znaku w punktach
17h 1 bajt wysokość matrycy znaku w punktach
18h 1 bajt liczba płatów pamięci
19h 1 bajt liczba bitów przypadająca na jeden piksel
lAh 1 bajt liczba banków
lBh 1 bajt organizacja pamięci obrazu:
1*
OOh - tekstowa,
Olh - jak w trybach graficznych CGA,
02h - 16-kolorowa, 4-płatowa,
04h - spakowana,
05h-0Fh - zarezerwowane dla przyszłego
wykorzystania w standardzie VESA,
lOh-FFh - do użytku producentów kart graficznych
r ic h 1 bajt rozmiar banku w kB
lDh 1 bajt liczba stron (pełnych ekranów)
L 1 E h
1 bajt zarezerwowane
Karty graficzne 467
r

Funkcja 4F02h - przełączanie trybów VESA

Param etry wejściowe:


t-i
BX bit 15:
o*
0 - przełączenie trybu powoduje wyzerowanie pamięci
■ i
obrazu,
1 - przełączenie trybu bez zerowania pamięci obrazu,
bity 14-0 - numer trybu VESA.

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*’

Funkcja 4F03h - odczyt bieżącego trybu pracy


v. V

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 .

Numer trybu jest 16-bitowy

Funkcja 4F04h - zapamiętanie lub odtwarzanie parametrów karty


.:V
Parametry wejściowe:
¿ •;
.
DL numer podfunkcji:
'ty
ł - ’.

.»|S

OOh - wyznaczenie rozmiaru pamięci potrzebnej na bufor stanu,


Olh - zapamiętanie stanu sterownika,
02h - odtworzenie stanu sterownika;
:<

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

bit 2 - stan rejestrów koloru i rejestrów DAC,


bit 1 - stan obszarów danych Video-BIOS,
bit 0 - stan rejestrów układów odchylania i taktowania.
W yjście:
BX wielkość wymaganego bufora stanu w blokach po 64 bajty (dla
podfunkcji 1);
AH wynik wykonania funkcji:
OOh —wykonanie poprawne,
01 h - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany).
Uwagi dodatkowe:
Funkcja zapamiętuje lub odtwarza zawartość rejestrów karty i obszaru komunikacyj­
nego BIOS-u.

Funkcja 4F05h - podłączenie banku pamięci obrazu


lub odczyt numeru podłączonego banku

Param etry wejściowe:


BH wybór podfunkcji:
OOh —podłączenie banku do okna,
Olh - odczyt numeru banku podłączonego do okna;
BL wybór okna:
OOh - okno A,
O lh -o k n o B;
DX numer banku (liczba i numeracja banków zależy od odstępu
między nimi).
W yjście
DX numer banku;
AH wynik wykonania funkcji:
OOh - wykonanie poprawne,
Olh - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany)

Funkcja 4F06h - ustawienie lub odczyt szerokości ekranu wirtualnego

Param etry wejściowe:


BL wybór podfunkcji:
OOh - ustawienie szerokości ekranu wirtualnego,
Olh - odczyt szerokości ekranu wirtualnego;
CX szerokość ekranu wirtualnego w punktach.
Karty graficzne 469

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.

Funkcja 4F07h - ustawienie/odczyt lewego górnego rogu ekranu rzeczywistego


względem 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).

Funkcja 4F08h - ustawienie/odczyt liczby bitów


odpowiadających barwom podstawowym (w układzie RGB) w tablicy LUT

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.

Przykłady zastosowania funkcji BIOS-u


kart graficznych
Rozpoznanie typu karty graficznej
Podprogram rozpoznaje typ karty graficznej.
podaj_typ_sterownika proc

mov ah,lah ; numer funkcj i BIOS-u sterownika


mov al,OOh ; odczyt kombinacji sterowników
int lOh
ret ; rejestr BL zawiera kod aktywnegosterownika
; rejestr BH zawiera kod nieaktywnego sterownika

podaj_typ_sterownika endp

Param etry wejściowe:


— brak —
1Y t *r ♦
W yjście:
AL jeśli AL ^ 1Ah, to funkcja nie jest zaimplementowana,
w przeciwnym przypadku (AL = 1Ah);
BL kod aktywnego sterownika (patrz poniższa tabela);
BH kod nieaktywnego sterownika (patrz poniższa tabela).

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

Sprawdzenie ilości pamięci zainstalowanej na karcie graficznej


Podprogram zwraca ilość pamięci zainstalowanej na karcie graficznej.
rozmiar_joamięci proc

mov ah,12h ; numer funkcji BIOS-u sterownika


mov bl/lOh ; numer podfunkcji - pobranie rozmiaru pamięci
int lOh
ret ; rejestr BL zawiera kod rozmiaru pamięci

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.

Zmiana wyglądu znaku


Podprogram zmienia wygląd znaku f@' standardowego zestawu znaków 8 x 8
zmiana znaku proc

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

Param etry wejściowe:


— brak —
W yjście:
— brak —

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.

Wymyślne nazwy handlowe przeróżnych akceleratorów graficznych mają zachęcić


potencjalnych klientów do ich kupna.

Same parametry techniczne nowych opracowań nie decydują o powodzeniu produktu na


rynku. Konieczne jest uwzględnienie również aspektów ekonomicznych co znajduje
naturalnie swoje odbicie w cenie. Mimo iż aktualny stan rozwoju technicznego w danej
dziedzinie leży często znacznie wyżej, producenci zmuszeni są do wprowadzania różno­
rodnych ograniczeń i wybierania kompromisów. Część z tych uproszczeń nie ma w isto­
cie dużego wpływu na jakość postrzeganych obrazów bowiem zmysł wzroku człowieka
nie jest kamerą cyfrową i reaguje na barwne obrazy w bardzo specyficzny sposób.
Istniejące naturalne bariery (szczególnie te dotyczące szybkości obróbki i prezentacji
obiektów trójwymiarowych) stanowią nadal gwarancję, iż komputer klasy PC długo
jeszcze nie będzie roboczą stacją graficzną.

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

Przetwarzanie obrazów video należy do jednego z ostatnich bastionów, który do tej


pory opierał się przed komputerem PC. Najskuteczniejszą barierę stanowi objętość prze­
twarzanych danych: jedna sekunda pełnowartościowego sygnału video poddana digitali­
zacji zajmuje około 20 MB pamięci. Mimo obserwowanego w ostatnich latach szalo­
nego przyrostu pojemności twardych dysków, taka ilość informacji nie może być prze­
twarzana1przez komputer klasy PC.

Analizując stronę fizjologiczną zagadnienia, można (podobnie jak w profesjonalnych


systemach telewizyjnych) pominąć znaczną część informacji. Z szerokiego pasma syg­
nału video usuwa się te składowe, których obecność w sygnale video i tak nie jest do­
strzegana przez oko ludzkie. W drugim etapie do akcji wkraczają przemyślne metody
kompresji (Indeo i Cinepak). Wszystkie te zabiegi pozwalały, zachowując przyzwoitą
jakość obrazu, na ograniczenie strumienia danych do rozmiarów 500 kB/s. Mimo tak
wielkiego stopnia kompresji, technika PC dopiero niedawno dorosła do ruchomych
obrazów, a i to nie od razu na całym ekranie. Pierwsze kroki stawiane były w małych
okienkach 352 x 288 piksli przy szybkości odtwarzania 25 obrazów/s. Ogromną zaletą
stosowanych technik kompresji obrazu są stosunkowo proste algorytmy dekompresji:
nawet 486 radzi sobie z tym problemem.

Z nastaniem płyty kompaktowej i rozpowszechnieniem popularnych odtwarzaczy pro­


pagatorzy techniki video na platformie PC poczuli nowy wiatr w żaglach. Nareszcie
powstał tani nośnik informacji, na którym można upakować dobre kilkadziesiąt minut
filmu nie wspominając o towarzyszącym dźwięku wysokiej jakości. Zapały studziła
skutecznie prędkość pierwszych odtwarzaczy CD: średnio 150 kB/s. Ale i na to znalazło
się lekarstwo. Opracowana została nowa technika kompresji (MPEG), która zadowala
się tą mizerną prędkością transmisji. I jakkolwiek rozkodowywanie takiego sygnału jest
i tak o niebo łatwiejsze od algorytmów kompresji, to tym razem problem przerósł
możliwości PC: Pentium radzi sobie z nim z trudem, a 486 wcale. Mowa tu oczywiście
o krytycznym czynniku - czasie przetwarzania. Do wywołania wrażenia płynnego
obrazu trzeba bowiem wyświetlać pewną minimalną ilość klatek na sekundę.

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

Sprzętowe wspomaganie funkcji video


Pod pojęciem akceleratorów video należy rozumieć karty graficzne SVGA wzbogacone
o dodatkowe modły sprzętowe. Układy takie lokalizuje się (w odróżnieniu od koproce­
sora arytmetycznego) nie w rejonie procesora ale blisko przetwarzanych danych (pa­
mięci obrazu) - na karcie graficznej. Biorą one na siebie fragment procesu dekodowania
obrazu video, przez co zwalniają jednostkę centralną (CPU) z ogromnej ilości operacji.
Odzyskana moc obliczeniowa stawiana jest do dyspozycji systemu operacyjnego a od­
ciążone magistrale systemowe umożliwiają szybszy dostęp do zasobów: pamięci RAM,
dysków i peryferii.

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

5% '"! 45% (MPEG-80%) 25% j 25%


i mocy obliczeniowej mocy obliczeniowej mocy obliczeniowej ; mocy obliczeniowej

Sama idea przekazywania coraz to większych uprawnień do sterownika graficznego nie


jest nowa. Już od dawna proste formy geometryczne (prostokąty, elipsy itp) kreślą i ko­
lorują sterowniki graficzne a jednostka centralna inicjuje jedynie ten proces zadając
niezbędne wartości początkowe .

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.

Podobnie zbudowane są dzisiejsze akceleratory. Podczas odtwarzania sekwencji video


(na przykład pliku w formacie avi z dysku lub płyty kompaktowej) dwa ostatnie etapy
procesu dekodowania (konwersja modelu kolorów i skalowanie) przenoszone są do
kontrolera graficznego albo do układu scalonego zawierającego RAMDAC.

Konwersja RGB/YUV zapożyczona została z techniki telewizyjnej. Dla jednoznacznego


zdefiniowania barwy punktu nietrzeba przekazywać wartości trzech składowych R, G
i B, gdyż istnieją inne układy współrzędnych. W układzie YUV składnik Y reprezentuje
luminację punktu a informacja o barwie zawarta jest w elementach U i V. Każdy punkt
kolorowy można w każdej chwili przenieść z jednej przestrzeni do drugiej, na przykład
z YUV do RGB:

2 Karty SYGA pracujące w tym trybie noszą miano akceleratorów 2D.


476 Anatomia PC

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

Dla oka ludzkiego większe znaczenie odgrywa szczegółowa informacja o luminancji


punktów niż o ich barwie. Jeżeli składnik Y zostanie wyizolowany z informacji o kolo-
rach, to można sobie pozwolić na pewną redukcję reszty. W modelu 4:1:1 składniki U
oraz V zajmują jedynie połowę miejsca przewidzianego na Y. Tak więc 4 punkty
obrazu w modelu RGB zajmują 16 bajtów a po przeniesieniu do YUV jedynie 6. Taki
kompaktowy schemat pamięci obrazu redukuje w dużym stopniu ruch na odcinku kon­
troler graficzny-pamięć obrazu (średnio o 50%). Uzyskana tą drogą oszczędność mocy
obliczeniowej pozwala na podniesienie rozdzielczości z 160x120 do 320x240 punktów.

Jak już wcześniej wspomniano, powiększanie (zoom) odtwarzanego obrazu video do


oryginalnych rozmiarów (native size) realizowane jest w akceleratorach poprzez układy
sprzętowe. W zależności od stopnia komplikacji i nakładów uzyskuje się różne efekty.

Trzeba zdawać sobie sprawę, że operacja skalowania z założenia musi prowadzić do


pogorszenia jakości obrazu, bowiem wprowadza do oryginalnego obrazu informacje,
których nigdy tam nie było. W kierunku pionowym powstają nowe linie, które trzeba
równomiernie rozmieścić na ekranie i w dodatku wypełnić jakąś treścią. Każda linia
oryginału musi ponadto przyjąć szereg dodatkowych piksli (skalowanie w kierunku x)
o nieobojętnej poniekąd barwie.

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).

3 Częstotliwość próbkowania sygnałów U i V stanowi 1/4 częstotliwości próbkowania sygnału


luminancji Y. W modelu oznaczanym 4:2:0 wspomniany stosunek częstotliwości wynosi 1/2 ,
za to przy kwantyzacji informacji o barwie pomijana jest co druga linia.
Grafika PC w dobie multimediów 477

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.

Droga do wspomagania funkcji video została otworzona dopiero dzięki porozumieniu


firm Intel i Microsoft, które uzgodniły standard DCI (Display Control Interface).
Interfejs stworzony został dla potrzeb Windows 3.1x i w zasadzie tylko tam znalazł swe
zastosowanie.

Rysunek 8.3.
Tworzenie grafiki
w Windows 3.x

Na system ten składają się dwa elementy:


L,*. • Współpracujący bezpośrednio ze sprzętem (kartą z akceleratorem graficznym)
programowy sterownik DCI (DCI-Provider)
a

A-

• Niezależny od sprzętu zarządca DCI (DCI-Manager)


•i
Opracowanie sterownika DCI należy do obowiązków producenta karty graficznej. Fun­
& kcje udostępniane przez sterownik wykorzystuje wyższa warstwa modelu: DCI-Client.
Dzięki takiej hierarchii aplikacja video zyskuje bezpośredni dostęp do poszczególnych
płatów (surfaces) pamięci karty. Płaty te mogą należeć do zakresu widzialnego (primary
Anatomia PC

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.

Największe przyspieszenie operacji video osiąga się w przypadku obróbki sygnału,


którego schemat kodowania pokrywa się z organizacją pamięci karty (YUV w trybie
4:1:1). Wówczas to zdekodowane ramki video przesyłane są bez zbędnych opóźnień
bezpośrednio do okna video w pamięci.

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):

• DirectDraw. Przyspiesza grafikę 2D poprzez udostępnienie całej pamięci sterow­


nika graficznego bądź to dla bezpośredniego dostępu do okna video, bądź dla
zrealizowania funkcji manipulowania powierzchniami.
• Direct3D. Jest klasycznym zestawem funkcji akceleratora 3D.
• Directlnput. Stanowi bibliotekę funkcji obsługujących obce dla klasycznego PC
multimedialne urządzenia wejściowe takie jak: cyfrowe i analogowe drążki ste­
rujące (joystick), organy sterowania wszelkich symulatorów (lotniczych, samo­
chodowych itp.), pedały, wolanty, hełmy i rękawice systemów przestrzeni wirtu­
alnych (Virtual Reality) itd.

• DirectSound. Dostęp i ewentualne przyspieszanie pracy kart dźwiękowych, mik­


serów i wszelkich instrumentów muzycznych.

• DirectPlay. Oferuje aplikacjom dostęp do modemów i środowisk sieciowych.

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

Możliwość podziwiania na ekranie monitora obiektów w formie 3D była do niedawna


zarezerwowana wyłącznie dla użytkowników programów typu CAD uruchamianych na
stacjach graficznych. Potrzeba symulacji płynnego ruchu nie jest w tym przypadku zbyt
paląca: dla potrzeb CAD wystarczy jeśli obiekt można dowolnie obracać. Częstotliwość
projekcji leży w zakresie 5 klatek na sekundę. Dużo ważniejsza jest natomiast wysoka
dokładność, na potrzeby której przeznaczana jest znaczna część mocy obliczeniowej.
Bryły 3D przedstawiane są jako modele siatkowe, co potęguje wrażenie 3D, Powierz­
chnia zewnętrzna jest jednorodna. Stare wersje programów nie zawsze uwzględniały
oświetlenie5.

Dotychczasowe próby przeniesienia tych aplikacji na platformę PC oznaczały w najlep­


szym razie inwestycje w kartę graficzną droższą od reszty zestawu. Szalone postępy
w rozwoju akceleratorów graficznych i stała modernizacja architektury PC pozwalają
jednak na różowe spojrzenie w przyszłość. Ogromny rynek użytkowników gier kom­
puterowych stanowi motor postępu w tej dziedzinie. Ostatnio dołączają do nich nie­
śmiałe adaptacje profesjonalnych symulatorów osadzające użytkownika w mniej lub
bardziej wiarygodnym sztucznym świecie (Virtual Reality). Tutaj jednak wymagana jest
już większa prędkość przetwarzania. Budowane w głowie odbiorcy uczucie płynności
projekcji zanika poniżej 15 klatek na sekundę.

Tworzenie i przechowywanie obiektów 3D


Obiekty 3D stanowią pewien fragment przestrzeni ograniczonej powierzchniami o róż­
nym stopniu komplikacji. Chociaż każda taka powierzchnia da się jednoznacznie zde­
finiować przy pomocy równań matematycznych, to ich przetwarzanie pochłonęło by
całą dostępną moc obliczeniową.

Zagadnienie 3D można w ogromnym stopniu uprościć rozkładając każdą z takich po­


wierzchni na odpowiednio dużą (zależną od stopnia dokładności) liczbę wielokątów
płaskich. Najprostszym z wielokątów jest oczywiście trójkąt i ten jest na ogół używany
do wspomnianej aproksymacji.

Dowolnie skomplikowana bryła da się zawsze6 rozłożyć na takie trójkąty. W zależności


od stopnia komplikacji i wymaganej dokładności trójkątów takich jest mniej lub więcej:
sześcian ma ich 12 a średnio skomplikowany obiekt w grach komputerowych 50000.

5 Aktualne wersje oszałamiają użytkownika bogactwem funkcji: cieniowanie, mapowanie, różne


modele oświetlenia.
6 Jeśli pominąć powierzchnie fraktalne.
480 Anatomia PC

Przedstawienie takie ma ogromną zaletę: każdy wierzchołków trójkąta jest jedno­


znacznie zawieszony w przestrzeni 3D przy pomocy trzech współrzędnych (x, y, z).
Cały obiekt 3D przechowywany jest w spójnym fragmencie pamięci a operacje na nim
(przemieszczenie, obrót, skalowanie itp.) sprowadzają się do rachunku macierzowego.
Algorytm przesunięcia takiej bryły da się zapisać w kilku linijkach kodu maszynowego.

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.

Proszę zwrócić uwagę na niewspółmiernie mały nakład pracy potrzebnej do zamodelo-


wania prostopadłościanu i pokrycia go teksturą: te sam obiekt składa się w rzeczywis­
tości z nierównomiernie zachodzących na siebie warstw drewna (słojów i poziomic),
które należałoby oddzielnie modelować i łączyć.

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.

Pojedyncze punkty graficzne mapy bitowej tekstury nazywane są tekslami. Grafika


komputerowa operuje w zasadzie dwoma rodzajami tekstur: 2D i 3D. Tekstura 3D nie
jest płaskim obrazem ale przestrzenią. Zagadnienia związane z teksturami trójwymia­
rowymi wybiegają znacznie poza zakres tej książki a ich praktyczne wykorzystanie
w PC jest (jak na razie) znikome i dlatego omówione zostanie jedynie mapowanie tek­
sturami płaskimi.

W poprzednim punkcie przedstawiony został pokrótce sposób wizualizacji obiektów


trójwymiarowych. Tch zakrzywione powierzchnie aproksymowane są odpowiednio dużą
liczbą płaskich trójkątów. Samo rozbicie na dużą liczbę trójkątów nie daje jednak ideał-
Grafika PC w dobie multimediów 481

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:

• Dla PI wynik uśrednia się na podstawie A i C:

Ipi = v*IA + (l-v ) * Ic v e { 0 ...1 }


• Barwa P2 zależna jest od B i C:

Ip2 = t*IB + ( l- t ) * I c t e {0...1}

Zmienna I reprezentuje barwę punktu ale z uwzględnieniem rozbicia na składowe ele­


mentarne. Oznacza to, że każde obliczenie przeprowadza się trzykrotnie dla wyodręb­
nienia składowych R, G i B. Współczynniki v i t stanowią odpowiednio wagi średniej,
odzwierciedlają stopień oddalenia punktów P| i P2 od wierzchołków (im większy dla Pi
tym mniejszy dla P2). Dla każdego z punktów X aktualnie skanowanej linijkiinterpoluje
się barwę wypadkową w sposób bardzo podobny. Budowana jest średnia ważona
rozpinana pomiędzy punktami P| i P2 :

Ix = u*Ip, + (1-u) * Ip2 u e {0...1}

7 Henri Gourand: Continous Shading of Curved Surfaces, IEEE Transactions on Computers,


C-20(6): 623-628, Juni 1971.
482 Anatomia PC

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:

Aj= Ip 2 - Ip i / (n-1) n e { l...n -l}

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

Z punktu widzenia komputera obliczenia przesłaniania są bardziej pracochłonne


od modulacji. Oprócz niezbędnych w pierwszym modelu trzech mnożeń trzeba
jeszcze przeprowadzić trzy dodawania. Sprawę można uprościć, jeżeli współ­
czynnik przenikania a jest stały8 w ramach całej tekstury. Dla wiernego odtwo­
rzenia rzeczywistości założenie to nie zawsze jednak może być przyjęte.

• Modele specjalne. Do grupy tej można zaliczyć tekstury uwzględniające częścio­


wą przezroczystość obiektów (na przykład wiarygodne przedstawianie chmur)
a także odbicia lustrzane otoczenia na powierzchni bryły 3D.

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.

Z pomocą przychodzi znowu wspomniana już wielokrotnie aproksymacja powierzchni


bryły przez trójkąty elementarne. Jakkolwiek kula jako taka płaska nie jest, to płaskie są
przybliżające ją trójkąty. Reszta to znowu matematyka.

Najpierw odwzorowuje się narożniki mapowanego trójkąta na odpowiadające im trzy


punkty tekstury. Tylko które na które? W omawianym tu przypadku kuli najprostszą
funkcją przekształcającą jest transformacja dwóch współrzędnych kulistych (długość
i szerokość geograficzna) na współrzędne (x,y) płaskiej mapy. Dla każdego punktu
położonego na kuli można przecież podać parę liczb:
x (0...360)
y (-90 ... +90) lub po prostej zmianie (0...180)

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.

Istnieją oczywiście bardziej skomplikowane bryły nieregularne (choćby zwykły karto­


fel), dla których znalezienie odwzorowania tekstury na obiekt nie zawsze jest takie
proste. Jednym z możliwych rozwiązań jest opisanie takiej bryły kulą (spherical map-
ping). Środek kuli znajduje się gdzieś we wnętrzu bryły10. Każdy z poprowadzonych
promieni odwzorowuje wtedy punkt powierzchni bryły na sferze opisanej kuli. Jeżeli
kula pokryta została wcześniej teksturą, mamy gotowe rozwiązanie.

8 Jeżeli a jest zmienne to przechowywane jest wraz z mapą bitową tekstury,


9 Odwzorowanie nie jest jednoznaczne na biegunach; tutaj dla jednej szerokości geograficznej
mamy nieskończenie dużo długości geograficznych.
10 Rozważamy bryły wypukłe.
484 Anatomia PC

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

Dla zobrazowania drabiny z równymi szczeblami wymagane jest przecież nakreślenie


trapezowatego obiektu o coraz krótszych, w miarę oddalania się od obserwatora, szcze­
blach.

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

• Pobranie parametrów następuje z punktu tekstury leżącego najbliżej {peak near-


est)
• Analizie podlega otoczenie punktu. Parametry uśrednia się w oparciu o czterech
sąsiadów przy czym budowana wartość średnia ważona jest stopniem oddalenia
od centrum. Piksie leżące bliżej mają większy wpływ na wynik.

Przyporządkowanie najbliższego punktu (Peak Nearest)


Ten prosty algorytm pobiera parametry tekstury z punktu leżącego najbliżej. Linia
skanowania w płaszczyźnie ekranu przebiega od punktu (x0, yo) do punktu (xj, yO
Grafika PC w dobie multimediów 485

1
Rysunek 8.6. 1
V

Odwzorowanie
przyporządkowa
nia najbliższego
punktu
f .

iii

ń; ekran (x,y) textura {u,v)


••V •

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

Elementarne przyrosty w kierunku u i v wynikają z następującego wzoru:


du = (ur uo) / (x,-x0)
Ji

dv = (vr v0) / (x,-x0)

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.

Filtracja bilinearna (Bilinear Interpolation)


Ten bardziej rozbudowany algorytm stanowi rozsądny kompromis pomiędzy osiągany­
mi wynikami a stopniem komplikacji i dlatego jest najczęściej implementowany w ak
celeratorach 3D.
yv.
*.• ,

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

Rysunek 8.7. Mapa tekstury


2x2
Odwzorowanie Wagi
filtracji Punkl_1 (0,0) Punkt_2(1,0)
bilinearnej
d

*
4

k
|

d t
d i

Punkt_4 (0,1) Punkł_3 (1,1)

Każdy z narożnych punktów ma jasno zdefiniowane parametry R, G, B (Rb Gh B b R2,


G2, B2 ...)* Poszukiwane składniki barwy dla punktu A stanowią wypadkową kolorów
punktów 1 — 4 ale z uwzględnieniem ich odległości od punktu. Im bliżej narożnika
usytuowany jest punkt A tym większy jest jego wpływ na kolor wypadkowy. Budowana
jest średnia ważona a współczynniki wagowe di —d4 odpowiadają powierzchni prosto­
kątów zaznaczonych na rysunku 8.7:
d] - (1 - O.u) * (1 - 0.v)
d2 = O.u * (1 - 0.v)
d3 - O.u * 0.v
d4 = (1 - O.u) * 0.v

Teraz można już wyznaczyć parametry R, G, B punktu A:


R = dj*Ri + d2*R2 + d3*R3 + d4*R4
G = d^Gj + d2*G2 + d3*G3 + d4*G4
B = dj*Bi + d2*B2 + d3*B3 + d4*B4

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

ile sposób jego realizacji, bowiem dzielenie liczb (i to zmiennoprzecinkowych o wyso­


kiej precyzji) należy do najbardziej czasochłonnych operacji, Każda z nich zajmuje do
kilkudziesięciu cykli zegarowych. Newralgiczny czynnik l/w aproksymuje się składo­
wymi wyższego rzędu (ddu i ddv):
U j+1 = Uj + d u j

Vi+1 = V i + d v j

• ««

du,+] = duj + ddu


dvi+1 = dvj + ddv

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.

Weźmy za przykład dowolną grę wykorzystującą naturalną scenerię powierzchni ziemi.


Obszar podzielony jest na kwadraty 1x1 km, z których każdy przechowywany jest jako
mapa bitowa 1000x1000 punktów. Obraz taki widziany z kabiny symulatora lotniczego
ma rozdzielczość graniczną lm 2. Jeśli akcja przeniesie się na ziemię, gracz nie rozróż­
nia szczegółów poniżej lm.

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ą?

W obydwu przypadkach rodzi się problem skalowania tekstury, tak by dopasować ją do


rzeczywistach rozmiarów mapowanej powierzchni. Punktem wyjścia do zrozumienia
przedstawianych zagadnień jest fakt, iż zarówno piksel (element obrazu) jak i teksel
(element tekstury) to powierzchnie a nie punkty bez powierzchni. Optymalne dopaso­
wanie tekstury do obiektu następuje oczywiście wtedy, gdy teksie mają powierzchnie
takie jak piksle pokrywanego obiektu.

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;

11 Stąd nazwa Mip-Mapping (Mip = Multum in parwo, dużo w jednym).


488 Anatomia PC

l x l , 2x2, 4x4, 8x8, 16x16,... 512x512

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.

Najlepsze wyniki i najwięcej mocy obliczeniowej pochłania filtracja trilineama, która


stanowi kombinację filtracji bilineamej i średniej ważonej dwóch sąsiednich mipów.

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.

Komplikacja zagadnień związanych z przedstawianiem obiektów 3D przewyższa do


dnia dzisiejszego stopień rozwoju techniki komputerowej. Sprzętowe wspomaganie
jednostki centralnej przy wykonywaniu funkcji graficznej stało się nieodzowne. 3D
w czasie rzeczywistym oznacza, przy obecnym stanie rozwoju kart graficznych i mimo
stosowania rozbudowanych akceleratorów graficznych, stosunkowo duże obciążenie dla
CPU.

Skuteczność działania procesorów wspomagających zależy oczywiście w dużej mierze


od obranej strategii działania, - określenia grupy zadań przejmowanych od CPU. Nie
mniej ważne okazują się problemy komunikacyjne. Kluczową rolę pełni dopasowanie
mocy obliczeniowej CPU i akceleratora, z uwzględnieniem przepustowości magistrali
łączącej te dwa podsystemy.

Przygotowanie trójkąta (Triangle Setup)


Wirtualny świat poskładany z elementarnych trójkątów musi zostać usytuowany na
właściwym miejscu (obliczenie współrzędnych) i rzucony na dwuwymiarową płasz­
czyznę ekranu. Obliczenia te wykonuje w klasycznym przypadku jednostka centralna
bowiem prosty akcelerator 3D troszczy się jedynie o rastering pojedynczych trójkątów
i umieszczenie ich w pamięci karty graficznej. CPU musi w tym przypadku przygoto­
wać współrzędne każdego z wierzchołków i przekazać je do akceleratora.

- -----------

12 OpenGL przewiduje możliwość mieszania dwóch mipów.


Grafika PC w dobie multimediów 489

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,

• obliczenia barw obiektów oświetlanych (barwa wypadkowa zależy od barwy


własnej podłoża i od barwy światła padającego na nią),
• usuwanie (clipping) fragmentów brył niewidocznych dla obserwatora,

• projekcja obrazu wypadkowego na płaszczyznę 2D.

Większość z tych obliczeń opiera się na rachunku wektorowym bądź macierzowym.


W przypadku obiektów oświetlanych, dokładne określanie barwy wypadkowej dla
każdego piksła oddzielnie pochłaniałoby zbyt wiele mocy obliczeniowej. Zamiast tego
oblicza się jedynie składowe kolorów dla narożników trójkątów. Dalsze uproszczenie
zagadnienia wnosi zwykle posługiwanie się prostym modelem oświetleniowym zde­
finiowanym przez Phong’a.

Fragmenty trójkątów elementarnych, które wykraczają poza przestrzeń ograniczoną


piramidą zakresu widzialności muszą zostać usunięte (rysunek 8.8).

Rysunek 8.8.
Piramida zakresu
widzialności

W tym celu koprocesor oblicza najpierw współrzędne punktów przecięcia trójkąta ze


ścianami piramidy. Atrybuty tych nowych punktów (tekstura, kolor) przejmowane są
dla uproszczenia od starych wierzchołków, leżących już poza piramidą widzialności.
Mamy teraz do czynienia ze złożonym wielokątem (rozpiętym conajmniej pomiędzy
czterema punktami), który musi zostać rozłożony na trójkąty elementarne.
490 Anatomia PC

Gdy te wszystkie kroki zostały przeprowadzone, algorytm przechodzi do projekcji trój­


wymiarowej przestrzeni na płaszczyznę dwuwymiarową. Uwzględniane są przy tym
niezbędne skróty perspektywiczne oraz rozmiary obrazu na ekranie.

Podstawową funkcją akceleratora 3D jest rastering elementarnych trójkątów. Punktem


wyjściowym do tej operacji jest zestaw parametrów przypisywany każdemu z wierz­
chołków trójkąta:
• współrzędne położenia w przestrzeni trójwymiarowej x , y, z , gdzie z oznacza od­
ległość punktu od płaszczyzny obserwacji, mierzoną w kierunku od obserwatora,
• odniesienie do współrzędnych tekstury u, v, której wzór ma pokrywać trójkąt,
• barwa punktu rozpisana na elementy składowe R, G, B,
• współczynnik alfa a informujący o stopniu przezroczystości powierzchni.

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ą.

Podział mocy obliczeniowej


Akcelerator 3D jest wyspecjalizowanym procesorem przetwarzającym podsuwane mu
dane. Pełne wykorzystanie potencjału obliczeniowego takiego podsystemu możliwe jest
jedynie w warunkach gwarantujących stały dopływ materiału wejściowego. Ten opty­
malny stan rzadko ma miejsce i ograniczany jest zarówno przez wydajność CPU jak
i przepustowość magistrali wewnętrznej.

Specyfikacja dominującej magistrali PCI dopuszcza szczytową prędkość przesyłania da­


nych 132 MB/s. Będący w opracowaniu nowy standard AGP (Accełerated Grapics Port)
określa maksymalny transfer do 532 MB/s. Póki co, przy zapotrzebowaniu 40 - 60
MB/s magistrala PCI nie stanowi istotnego ograniczenia.

CPU posługując się arytmetyką zmiennoprzecinkową, przygotowuje parametry trój­


kątów (współrzędne w przestrzeni, kolor, tekstura, współczynnik alfa) i przekazuje je do
akceleratora 3D. Jeśli przyjąć, że każdy trójkąt definiowany jest przy pomocy 120
ł1
bajtów , średnio skomplikowana sceneria rozłożona na 10000 trójkątów stanowi blok
danych o rozmiarach 1.2 MB.

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

Miarą wydajności akceleratorów 3D (często określanych w tym kontekście jako 3D-


Engine) jest naturalnie zdolność do przetwarzania pewnej liczby trójkątów w jednostce
czasu. Wielkość tą wyraża się w jednostkach tps (triangles per second). Podawane przez
producentów liczby towarzyszące oferowanym na rynku produktom należy przyjmować
z dystansem. Stanowią one zwykle szczytowe możliwości samego akceleratora (peak
performance), trudny do osiągnięcia w realnych warunkach uwzględniających szereg
czynników tłumiących. Już samo rozciągnięcie okna na cały ekran może położyć kres
optymistycznej kalkulacji.

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

Scenerie typowych gier zbudowane są z dużo większych trójkątów, tak że czynnikiem


hamującym jest akcelerator 3D a nie CPU. Przedstawiona kalkulacja dowodzi, że
wąskie gardło na linii wymiany danych CPU-akcelerator może się przemieszczać w za­
leżności od stopnia komplikacji sceny. Przy dużych trójkątach, czeka CPU, przy małych
akcelerator.

Spotykane obecnie scalone układy akceleratorów 3D można podzielić na dwie grupy.


Do pierwszej zaliczamy większość powszechnie stosowanych chipów, które oczekują
pełny zestaw parametrów trójkąta: Matrox-Mystique, S3, ATI, Cirrus. Układy drugiej
grupy przeznaczone są do sprzętu wyższej klasy i wyposażone we własny preprocesor
(Setup Engine). Typowi przedstawiciele tej grupy to: Trident 3DImage975, Vérité
i Permedia,

Zintegrowany we wnętrzu Vérité V-1000E system wstępnego przygotowywanie para­


metrów jest już sam w sobie maszyną o solidnej mocy obliczeniowej. Stanowi on pro­
cesor RISC taktowany zegarem 50 MHz o wydajności 100 Mops. Wyjściowy strumień
danych przejmowany jest przez następny element łańcucha przetwarzania: procesor
pikseli (Pixel Engine). Jego zadaniem jest pokrycie przekazanego trójkąta teksturą,
uwzględnienie skrótów perspektywicznych, rozbicie na pojedyncze piksle i umiesz­
czenie ich w pamięci obrazu.
492 Anatomia PC

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 .

W miarę budowania trójwymiarowej scenerii rozpisanej na elementarne trójkąty, rozpa­


truje się współrzędne z dla każdego z aktualnie obliczanych punktów składowych
i porównuje je z dotychczasową wartością16 w buforze Z. Punkt o współrzędnych (x, y t
z) zostaje uznany za widoczny jeśli spełnia warunek:
z < Z[x,y]

W takim wypadku jego współrzędna z zamazuje napotkaną w buforze wartość:


Z[x,y]=z

Tak zmodyfikowany element tablicy Z pozostaje niezmieniony do momentu przetwa­


rzania punktu obiektu leżącego jeszcze bliżej obserwatora.

Dostęp do pamięci obrazu


Pamięć akceleratora 3D podzielona jest w zależności od stopnia komplikacji układu na
kilka bloków. Oprócz omówionego poprzednio bufora Z występuje oczywiście pamięć
obrazu, do której zapisywane są obliczone składowe kolorów kolejnych punktów ekra­
nu (w reprezentacji RGB lub YUV). Biorąc pod uwagę uzależnienia czasowe związane

14 Oś z przebiega w kierunku od płaszczyzny ekranu wgłąb przestrzeni 3D. Im dalej od


obserwatora, tym większa współrzędna z.
15 16 bitów przeznaczonych na współrzędną z stanowi rozsądny kompromis między zużyciem
pamięci a dokładnością prezentacji. Modele klasy High-End oferują na ten cel 32 bity.
16 Wartość początkowa dla każdego Z[x,y] ustawiana jest na Oxffff co odpowiada +°o na osi z
(w ramach zakresu liczb 0 - 216 ).
Grafika PC w dobie multimediów 493

z koniecznością częstego odświeżania treści obrazu (dla zachowania płynności ani­


macji, kilkadziesiąt razy na sekundę) łatwo można dojść do wniosku, że jedna pamięć
obrazu nie wystarczy. Do dyspozycji kontrolera graficznego stawia się dwa jednakowe
bufory pamięci. Na ekranie pokazywany jest zawsze tylko jeden blok podczas gdy
w drugim (niewidocznym) trwa proces wypełniania treścią.

Technika podwójnego buforowania (Double Buffering) umożliwia wprawdzie płynną


prezentacje obrazu ale stanowi dodatkowe obciążenie magistrali pamięciowej (prze­
platające się cykle zapisu i odczytu). Dodatkowe obciążenie generuje konieczność
komunikacji z buforem Z: cykle odczytu (dla porównania) oraz ewentualne cykle zapisu
(modyfikacja Z[x,y]). Każde zamknięcie okresu budowania ramki to dodatkowe cykle
zapisu: zerowanie bloku obrazowego i inicjowanie bufora Z wartością +00.

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.

Przy założeniu określonej przepustowości magistrali śmiało można mówić o ogranicze­


niu stopnia złożoności przedstawianych scen. Wyjście z impasu oferują (przynajmniej
na jakiś czas) nowe i coraz to szybsze typy pamięci oraz oszczędna nią gospodarka.

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.

Spore rezerwy drzemią w organizacji pamięci. Tekstury ułożone są w pamięci w po­


zornie nielogicznej formie, która gwarantuje jednak szybszy dostęp do kolejnych pikseli
bez konieczności zmiany wiersza. Duże, kwadratowe obszary tekstury składające się
z większej liczby logicznych linii, złożone są fizycznie w jednym wierszu pamięci. Cykl
dostępu ulega znacznemu skróceniu bowiem przygotowanie adresu obejmuje jedynie
modyfikację kolumny.

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.

Aspekty ekonomiczne zadecydowały o tym, iż powszechnie stosowane akceleratory 3D


wyposażone zostały w 64-bitową szynę komunikacyjną. Zwykle połowa szerokości
przeznaczana jest na pamięć obrazu a reszta łączy kontroler z pamięcią tekstur. Układy
wysokiej klasy posiadają dwie niezależne magistrale pamięciowe o szerokości 64 bitów.

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

Przykłady rozwiązań akceleratorów 3D


Wydajność akceleratorów 3D różnych typów można oczywiście mierzyć i porównywać.
Podane tutaj liczby należy interpretować jako orientacyjne wskaźniki, które zostały
przytoczone nie tyle w celu wyłonienia zwycięzców ile dla unaocznienia skali ich
możliwości. Platformę sprzętową stanowił procesor Intel Pentium-133 na płycie wypo­
sażonej w 256 kB PB-Cache. Opcje filtrowania tekstur zostały we wszystkich trzech
testach wyłączone.

A kcelerator Test-1 [ MTex/s] Test-2 [kPoi/s] Test-3 [fps]


Voodoo / 3Dfx Interactive 24 223 6018

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

CPU, bez akceleratora 1 167 1,5


Test-l:Texel Fill Rate (D3DTEST/Microsoft)
Test-2: Polygon Throughput (D3DTEST/Microsoft)
Test-3: Symulacja tunelu 3D (DirectX-SDK)

Przedostatni wiersz tabeli świetnie obrazuje wspomniany wcześniej problem wąskiego


gardła na linii procesor-akcelerator. Stąd właśnie bierze się paradoksalna słabość kon­
trolera typu Virge: duża liczba małych trójkątów wymaga pompowanie przez magistralę
PCI ogromnej ilości parametrów. Może się więc zdarzyć, że CPU sam upora się z kom­
pletem obliczeń (szczególnie gdy większość danych ma w pamięci podręcznej) zanim
zestaw parametrów osiągnie akcelerator i zostaną one przetworzone.

Większość spotykanych na co dzień akceleratorów 3D to układy kombinowane, integru­


jące w sobie również funkcje SVGA. Ich instalacja wymaga wymontowania sterownika
graficznego i umieszczenia w jego miejscu karty akceleratora. Zajmują więc nadal
jedno złącze magistrali (Single-Slot).

Bardziej rozbudowane układy współpracują z napotkaną kartą. Systemy takie okupują


więc dwa złącza (Dual-Slot). Poniżej przedstawiono kilka takich rozwiązań.

18 Chin ma ograniczenie wewnętrzne do 60 fps


Grafika PC w dobie multimediów 495

Układ Voodoo (3Dfx)


Przykładem nowoczesnego akceleratora 3D jest sterownik Voodoo firmy 3Dfx. Układ
montowany jest na kartach przez różnych producentów. Pomijając drobne różnice wy­
stępujące w dołączanych sterownikach programowych, moc obliczeniowa Voodoo
utrzymuje się na stałym poziomie.

Sterownik ten jest „czystym“ akceleratorem 3D (nie dysponuje klasycznymi funkcjami


VGA) przez co musi współpracować z jakąś kartą graficzną, która wyświetla obraz.
Obie karty łączą się ze sobą przy pomocy zewnętrznej pętli (Analog Loop Through).

Sygnał wyjściowy karty graficznej jest albo podawany w niezmienionej formie do


monitora albo też zastępowany sygnałem wytwarzanym przez układ Voodoo. Rolę
przełącznika analogowego pełnią zwykle klucze elektroniczne, choć spotyka się i roz­
wiązania z przekaźnikami elektromechanicznymi.

Rysunek 8.9. Twtei *

Sterownik Pomięć obrazu ► R A M O A C


P n c M o r
E D O -H A M P o m ię ć t e k s t u r

i
m
2M B

Voodoo kontroler graficzny . . r ------------------


I____
R a s te r
P ro c e s o r
Karta graficzna P o m ie ć o b r a z u
MMy E D O -R A M
+ b u to r Z

SVGA 2M B

Do monitora

Magistrala PCI

System Voodoo integruje w sobie dwa procesory graficzne co w szerokim zakresie


rozwiązuje problem ograniczonego pasma przepustowości magistrali pamięci. Procesor
tekstur posiada własną pamięć i przeprowadza filtracje oraz korekcje perspektywy
mogąc wykorzystywać dla swoich potrzeb pełne pasmo 400 MB/s. Drugi z procesorów
przejmuje obliczone tekstury, przeprowadza porównanie współrzędnej Z i wypełnia
pamięć obrazu i wyzwala cykle odczytu dla wytworzenia sygnału dla monitora.

Układy rodziny Glint


Firma 3Dlabs jest autorem opracowania układów serii Glint. Właściwy akcelerator gra­
ficzny 3D wspomagany jest przez koprocesor Delta będący zmiennoprzecinkową jed­
nostką obliczeniową o mocy 80 MFLOPS.

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.

To co najbardziej nowatorskie w PowerVR, to sposób podejścia do obiektów 3D. Po


pierwsze układ pracuje bez bufora Z. Decyzja o tym czy element obrazu jest widoczny
zapada stosunkowo wcześnie, jeszcze przed przystąpieniem do innych obliczeń. W po­
dejściu klasycznym traci się znaczną część mocy obliczeniowej na cieniowanie niewi­
docznych płaszczyzn, które i tak zostaną wyeliminowane przez porównania z buforem
Z.

Interpretacja obiektów 3D w wydaniu PowerVR nie bazuje na rozkładzie na elemen­


tarne wielokąty co stanowi drugą bardzo interesującą właściwość tego systemu. Obraz
przetwarzany jest małymi porcjami ale za to z dużą prędkością. Na wstępie przepro­
wadza się podział na płatki, o rozmiarach 64x64 lub 32x32 piksle. Dla każdego płatka
generowana jest posortowana lista występujących na nim obiektów (rozmiar listy 12 kB).
Wszystkie listy zostają złożone w pamięci podręcznej kontrolera po czym układ przy­
stępuje do ich przetwarzania metodą śledzenia promienia (Raytracing).

Przez każdy z punktów ekranu prowadzony jest wyimaginowany promień biegnący do


oka obserwatora. Metoda ta przynosi oczywiście natychmiastowe rozstrzygnięcie co jest
widoczne a co będzie przesłonięte. Dla widocznych punktów przestrzeni 3D obliczane
są stosowne parametry: oświetlenie, tekstura, współczynnik alfa. Dla tekstur przewi­
dziano odrębną pamięć podręczną: 1 - 2 MB SDRAM.

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.

• GKS (Grafisches Kemsystem). Wprowadzona do norm ISO i DIN w roku 1986,


zaprojektowana początkowo dla potrzeb obiektów 2D została poszerzona o fun­
kcje trójwymiarowe (GKS-3D)

• PHIGS (Programmers Hierarchical Interactive Graphics System). Stanowi rozwi­


nięcie GKS o interakcyjne funkcje GUI. W dalszym etapie uzupełniona do pos­
taci PHIGS-PLUS (PHIGS-Plus Lumiere und Surfaces) oferuje optymalizację
cieniowania.
498 Anatomia PC

GL (Grahics Library). Niezależnie od rozwoju europejskiego rynku w USA


została opracowana biblioteka GL dla potrzeb najpopularniejszych tam silnych
stacji graficznych (Silicon Graphics Workstations). Zalety tej biblioteki zostały
docenione również przez wyznawców innych platform sprzętowych co doprowa­
dziło do uzgodnienia szerszego standardu OpenGL (obecnie już wkomponowany
w struktury Windows NT). W ślad za tym rozwinęły się dodatkowe narzędzia
wspomagające (Openlnventory) wraz z własnym językiem programowania
VRML (Virtual Reality Modeling Language). W chwili obecnej sterowniki bazu­
jące na interfejsie Open Inventor Library dołączane są przeważnie do wysokiej
klasy akceleratorów 3D.
W Internecie język VRML stał się nieformalnym standardem w dziedzinie prze­
kazu ruchomych obiektów 3D.
SGL biblioteka graficzna PowerVR, dopasowana do układów PowerVR. Opiera
się na modelu matematycznym określanym mianem „infinite planes” (obiekty
modeluje się jako wycinki przestrzeni ograniczone półprzestrzeniami i płasz­
czyznami).

Direct3D Microsoft Windows 95. Stanowi część ogólnego systemu DirectX.


Direct3D jest złączem opracowanym dla gier 3D w Windows 95. W środowis­
kach programistów słyszy się ostatnio dużo krytyki, że biblioteka ta jest źle
udokumentowana i uciążliwa w obsłudze. Niejednoznaczne wywołania funkcji
zmuszają do wielokrotnego odpytywania aplikacji.

Rysunek 8.12. Aplikacja Windows


Struktura
i
U l U l i U Ł Z ł U
............. T ........ V i
1 p
__________________ * _______________
i------ * ---------------------------

j
I

DirectX Video for !


GDI Windows !
i

i Reality Lab OpenGL


i
I

iI
i
i
1 ¡

i ..........
i
5

DirectDraw Direct3D

— i ___________________________________________

DirectDraw Direct3D ! : Częśćzależna


GDI Driver Driver Driver od sprzętu
¡ 4

-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)

W chwili obecnej rośnie zapotrzebowanie na systemy umożliwiające szybkie i tanie


rozpowszechnianie sekwencji obrazów ruchomych generowanych bądź przez komputer
bądź przez klasyczny sprzęt video. Każdy kto choć trochę otarł się o te zagadnienia
zetknął się z masą przeróżnych formatów i systemów.

W punkcie tym omówiony zostanie format MPEG, bowiem zdaniem autora ma on


największe szanse na przeobrażenie się w dominujący standard w tej dziedzinie. Wiele
poruszonych przy tym zagadnień ma charakter uniwersalny i odnosić się może również
do innych formatów.

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.

W swej klasycznej formie strumień MPEG charakteryzuje się następującymi danymi:

• Format klasyczny SIF: 352x288 punktów przy 25 fps (w systemie PAL)21.


Jednostka fp s oznacza frames per second (obrazy na sekundę)
22
• Format uproszczony QSIF: 176x144 punktów przy 25 fps

Format MPEG jest optymalny dla producentów materiałów edukacyjnych, prezentacji


itp. Chociaż wnosi on pewne straty do jakości materiału źródłowego opiera się na nim
standard Video-CD oraz wiele istniejących już systemów informacyjnych. W swej
zwartej formie zawierać może średniej długości Video-Clip wraz z towarzyszącym
dźwiękiem o wysokiej jakości. Warto nadmienić, iż algorytm kompresji ma wbudowane
mechanizmy gwarantujące synchronizację obrazu i towarzyszącego mu dźwięku.
Sprawa bynajmniej nie oczywista w przypadku wielu innych formatów. Małe rozmiary
plików predystynują go do zastosowań w obrębie sieci (Internet) i systemów typu Mail-
Box, gdzie czas przesyłania ma aspekt ekonomiczny. Warto również nadmienić o szero­
kim polu zastosowań przy archiwizacji danych.

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:

• Rozwiązanie czysto programowe. Dzisiejsze komputery PC bazujące na proceso­


rach klasy Pentium odtwarzają pliki w tym formacie bez konieczności angażo-
wania dodatkowego sprzętu; na ogół wystarcza MPEG-Player wchodzący
w skład zestawu oprogramowania zwykłej karty graficznej. Jakość uzyskiwane­
go tą drogą obrazu jest ograniczona a brak nadwyżki mocy obliczeniowej może
powodować nieregulamość projekcji (Frame Jitter). Liczba odtwarzanych ramek
jest wprawdzie stosunkowo wysoka (rzędu 25 fps) ale nierównomierna w czasie.
Szczególnie daje się we znaki jednoczesne dekodowanie dźwięku w trybie ste­
reo. Sekwencje z „ciszą na planie” odtwarzane są w lepszej jakości.
Często obciążenie ponad miarę stanowi rozciągnięcie okna video na cały ekran.
Sytuacja tak oznacza konieczność wyznaczania dodatkowych, nie istniejących
w oryginale pikseli metodą ekstrapolacji. Metody uśredniania są przeróżne: od
dublowania piksli do rozległych średnich z otoczenia, mogą działać zarówno
w pionie jak i w poziomie. Procedury uśredniające nazywane są też często filtra­
mi. Im więcej złożonych funkcji filtrujących ma włączony odtwarzacz tym
bardziej spada częstotliwość projekcji.
Odnosi się to wyłącznie do dekodowania strumienia MPEG-I. Lawina danych
płynąca strumieniem MPEG-II kładzie jak na razie na kolana każdy odtwarzacz
programowy. Sprzętowy dekoder MPEG-II połączony ze standardowym akce­
leratorem graficznym typu Virge pracować może tylko w skalowanym oknie,
o pracy pełnoekranowej można póki co zapomnieć. Stan ten wynika z niekom-
patybilności układów Virge pierwszej generacji z parametrami systemu MPEG-
II. Przyczyna leży w rozmiarach używanego do ekstrapolacji bufora liniowego.
Dopiero następna generacja układów (Trio64V2, Virge/DX, RageII+) dysponuje
buforem o wymaganej długości 720 pikseli.
Nowe wyzwanie stawiają przed systemami odtwarzania na bazie PC dyski DVD.
W obecnym stadium rozwoju, mimo zaprzęgnięcia do pracy procesorów z roz­
szerzeniami MMX nie udaje się uzyskać więcej niż 16 klatek na sekundę. Pewną
poprawę tego stanu rzeczy obiecuje nowa technika dekodowania, chociaż trudno
ją zaliczyć do rozwiązań czysto programowych. Zakłada ona bowiem, w więk­
szym niż dotychczas stopniu, włączenie układu kontrolera grafiki w proces deko­
dowania. Przyjmuje się, iż kontroler przejmie funkcję odławiania ze strumienia
danych MPEG ramek I, zlokalizowanych co 8 - 16 klatek. W ramkach tych
zawarte są pełne kadry sekwencji. Pomiędzy ramkami I zapisywane są jedynie
zmiany dynamiczne obrazu (ramki B i P). Pentium oblicza i dostarcza kontrole­
rowi te właśnie dane w formie wektorów różnicowych. Wbudowany w układ
kontrolera system regeneracji (Motion Compensation) sumuje ramki I z wekto­
rami różnicowymi i buduje na tej podstawie kolejne pełne klatki obrazu.

91
Najczęściej spotkać można program o nazwie Xing.
502 Anatomia PC

Opisana technika znalazła zastosowanie w układach Rage-II (ATI) i pozwala na


projekcję sekwencji DVD z prędkością 20 fps, przy czym stopień obciążenia
CPU jest dużo mniejszy niż w dotychczasowych rozwiązaniach. Podobne
podejście prezentują kontrolery Trident typu 3D-Image 975 i 985.
Koprocesor montowany na karcie SVGA. Układ akceleratora znajduje się na
dodatkowym module, który wtyka się do dostosowanej do tego karty graficznej.
Modół taki dysponuje najczęściej gniazdem wyprowadzającym sygnały Audio/
Video do odbiornika telewizyjnego. System taki jest szczególnie przydatny dla
zwolenników odtwarzania płyt kompaktowych CD-VIDEO.
Na rynku znajduje się wiele tego typu rozwiązań. Bazują one na jednym z dos­
tępnych zestawów układów scalonych. Najczęściej można spotkać tandem S3
składający się z chipów Trio64V+ (86C769) i Scenic/MX2 (86C445). Pierwszy
z nich integruje w sobie oprócz klasycznych funkcji karty SVGA również akce­
lerator graficzny i przetwornik RAM-DAC.
Firma Trident opracowała również swój układ scalony dekodera oznaczony sym­
bolem TMVP9550, który zawiera sprzętowy zoom (dla odtwarzania sygnału
MPEG na całym ekranie) wraz z towarzyszącymi mu filtrami i przetwornikami
skalującymi. S3 umiejscowiła te elementy w części graficznej duetu.

Wyspecjalizowane karty wspomagające. PC zostaje wyposażony w dodatkową


kartę wspomagającą. Zdekodowany sygnał wyjściowy może być przy tym wpro­
wadzany do karty SVGA bądź poprzez złącze rozszerzające (Feature Connector)
bądź przepuszczany do monitora (Analog Loop Thru). Oprogramowanie dołą­
czone do takiego systemu otwiera na ekranie oddzielne okno, w którym prezen­
towany jest zdekodowany obraz. Nie jest to najszczęśliwsze rozwiązanie, gdyż
ogranicza tryb pracy monitora. Jeżeli nawet zestaw monitor - VGA mogą współ­
pracować w rozdzielczości 1280x1024 przy częstotliwości 80 Hz to dekoder
wymusza tryb 800x600 przy 72 Hz.

Rysunek 8.13. Pomięć obrazu


Audio
Schemat ^ I ! Okno-Slf k - - - ------------- -----

DAC

działania karty Audio


DAC
mû4 Dekoder
MPEG YUV -> RGB
t
wspomagającej Skalowania
FiHry I Karta graficzna
dekodowanie SVGA
danych MPEG

Magistrala PCI s

Sygnał MPEG
(
ransfer: 170kB/s

30 fps)
CPU CD-ROM Transfer: 6MB/s

PCM 44.1kHz stereo)


Transfer: 170kB/s
Grafika PC w dobie multimediów 503

Istnieje na szczęście metoda ominięcia tego dylematu - dekoder przesyła wyniki


swej pracy do karty SVGA magistralą PCI,
Stosowana karta graficzna musi przy tym spełniać (w zależności od rozmiarów
okna, ilości kolorów i rozdzielczości) pewne wymagania, między innymi od­
nośnie szybkości. Im większe okno (w szczególności pełny ekran) i wyższy tryb
kolorowy, tym większe obciążenie dla pamięci karty. Może się więc zdarzyć, że
system nie jest w stanie nadążyć w tempie 25 obrazów na sekundę i pojawiają się
charakterystyczne nieciągłości.
Rozwiązania sprzętowe zainstalowane nawet na komputerze klasy 486DX 100
gwarantują w zasadzie odtwarzanie obrazu w tempie 25 klatek na sekundę przy
zachowaniu maksymalnej jakości dźwięku.

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.

W zastosowaniach multimedialnych posługujemy się najczęściej formatem MPEG-I,


który przy maksymalnej rozdzielczości 352x288 punktów pompuje strumień danych
w tempie 170 kB/s (120 - 140 kB/s dla obrazu i 30 kB/s dla dźwięku). Strumień taki
dostarczy bez trudu każdy prosty czytnik płyt CD-ROM.
ą

Dla potrzeb bardziej wymagających zastosowań zdefiniowany został format MPEG-2


pracujący na strumieniu od 500 kB/s wzwyż. Jakość obrazu sięga w tym przypadku
zakresu leżącego w przedziale między S-VHS a HDTV,

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.

Należy również zwrócić uwagę na duże zapotrzebowanie na wolną przestrzeń na dysku


twardym (rysunek 8.14).
504 Anatomia PC

Rysunek 8.14. Ekstrakcja Wytworzenie pliku


M-JPEG sygnału audio Wytworzenie pliku MPEG
Zapo trzebowanie 20 min do pliku WAV MPEG - Video (Audio + Video)
na wolną
przestrzeń na
dysku podczas
kompensacji
MPEG

1GB 1 GB + 200MB 1 GB + 400MB 1 GB + 600MB

Programy kodujące oczekują materiału wyjściowego najczęściej w formie pliku AVI


lub M-JPEG. Pliki takie generują karty do obróbki sygnału video (Video Grabber) oraz
wiele programów. Warto w tym miejscu nadmienić o pewnej drobnej kolizji wymiarów
rastrów punktowych. Większość kart typu Video Grabber przetwarza obraz w formacie
PAL do rozmiaru 384x288 punktów. Standard MPEG przewiduje jednak 352x288.
Programy kodujące radzą sobie z tą różnicą 32 punktów na przeróżne sposoby:
• przeskalowanie obrazu zmienia naturalny stosunek wysokości do szero­
kości, okręgi stają się elipsami a postacie przechodzą kurację odchudza­
jącą
• przeskalowanie obrazu z zachowaniem stosunku wysokości do szerokości
powoduje pojawienie się czarnych pasków na górze i dole ekranu
• skalowanie symetryczne z naruszeniem szerokości i wysokości prowadzi
do wytworzenia czarnej ramki wokół obrazu
• obustronne, symetryczne obcięcie nadmiarowych 16 punktów wydaje się
być optymalnym rozwiązaniem; niestety często aktywacja tej funkcji
(Cropping) powoduje obcięcie jednostronne o 32 punkty.

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

Dużo szybciej i bardziej komfortowo przebiega proces kompresji z zastosowaniem


specjalistycznych układów współpracujących z magistralą PCI. Karty tego typu na ogół
nie wymagają jakiegokolwiek połączenia z kartą VGA (transport danych magistralą PCI
w trybie BUS-MASTER, do tego w końcu została opracowana) i dysponują bezpo­
średnim wejściem dla sygnału dźwiękowego oraz Video (S-Video. FBAS). Przebieg
procesu kompresji może być na bieżąco kontrolowany; system dostarcza wyrywkowo
w oddzielnym oknie (Preview Window) próbki obrazu (na przykład jedną na 10 klatek)
a dźwięk może być doprowadzony do zainstalowanej w PC karty dźwiękowej.

W przeciwieństwie do opisywanych wcześniej koderów software’owych zapotrzebo­


wanie na dodatkową pamięć dyskową jest niewielkie. Systemy tego typu przetwarzają
wejściowy plik AVI znacznie szybciej niż rozwiązania czysto programowe ale też nie
w czasie rzeczywistym. Na jedną sekundę materiału wejściowego trzeba liczyć 2 - 3
sekund czasu przetwarzania (Pentium 166). Maksymalny strumień osiągać może 1,25
MB/s ale nie należy przesadzać z „podkręcaniem śruby” bowiem produkcja końcowa
będzie czytelna jedynie przez odtwarzacze CD-ROM 20-krotne, których nie ma jeszcze
zbyt dużo.

Interesujące zastosowanie dla takiego akceleratora stanowi skojarzenie (poprzez sterow­


niki programowe) wyjścia jakiegoś programu generującego pliki w formacie AVI (na
przykład Adobe Premiere) z wejściem kodera.

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.

Niech za przykład posłuży mocno nadużywany ostatnio slogan „akcelerator video”.


Zakładając nawet, że jest on poprawnie używany, z pewnością nie jest rozumiany przez
zwykłego użytkownika. Z powszechnym rozumieniem tego pojęcia nie ma przecież nic
wspólnego. Karta taka nie może przecież na ogół ani digitalizować sygnału video ani
przesyłać go do urządzenia innego niż standardowy monitor. Jedyne o co została wzbo­
gacona w stosunku do SVGA to przeniesienie do sprzętu kilku procedur obliczenio­
wych realizowanych dotychczas na drodze programowej.
506 Anatomia PC

Miłośnicy gier komputerowych z pewnością nie potrzebują drogich zestawów opraco­


wanych dla potrzeb CAD. Surowy i co najwyżej cieniowany obraz jest nie do zaak­
ceptowania, tu oczekuje się realizmu w możliwie najwyższej formie a nie precyzji
modeli siatkowych.

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.

W toku rozwoju technik multimedialnych do grupy powyższych parametrów dołączyły


inne związane ściśle z nowymi zastosowaniami. Zaliczyć do nich trzeba głównie zdol­
ność do odtwarzania różnego typu zdigitalizowanych i skompresowanych sekwencji
video. Mile widziane stały się wejścia i wyjścia video, tunery telewizyjne (często ze
zdalnym sterowaniem), dekodery teletekstu.

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.

Pamięć karty graficznej


Na wstępie rozważań o pamięciach sterowników graficznych trzeba zwrócić uwagę na
jeden istotny i często pomijany szczegół. Mit szybkiej pamięci graficznej niekoniecznie
odnosi się do prędkości zapisu. Dużo ważniejsza jest szybkość z jaką dane można od­
czytywać, co jest wykładnikiem częstotliwości odświeżania obrazu. Na nic przecież nie
zda się tryb pracy w wysokiej rozdzielczości z ogromną ilością dostępnych barw, jeżeli
obraz na ekranie drga i oczy odmawiają posłuszeństwa.

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).

Problem rodzi się w momencie wyprowadzania danych na monitor. Chcąc zachować


ergonomiczną częstotliwość odświeżania należy przesłać w ciągu jednej sekundy 75
bloków danych po 1,6 MB. Wymagana szerokość pasma wynosi w takim wypadku 120
MB/s. Podobne obliczenie przeprowadzone dla rozdzielczości 1280x1024 da wynik 200
MB/s a w formacie 1600x1200 aż 288 MB/s. Sytuację można trochę podratować redu­
kując liczbę kolorów: 1024x768 przy 256 kolorach i 70 Hz daje już tylko 55 MB/s.

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.

Brak innych rozwiązań spowodowany był dodatkowo małą szerokością magistral


systemowych. Architektura ISA zadowalała się przez długie lata szynami 16-bitowymi,
nawet w obrębie sterowników graficznych. Przyrost szerokości tych magistral umoż­
liwił zaspokojenie głodu pasma już przy użyciu tanich układów pamięci. Bardzo szybko
dokonał się skok z 16 na 32 bity, coraz częściej spotykamy 64, a pojawiają się już
modele wyposażone w szyny 128-bitowe26.

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.

26 Jeszcze raz warto podkreślić, że mowa o wewnętrznych magistralach kart graficznych,


łączących ich procesory z blokami pamięci. Komunikacja sterownika ze światem zewnętrznym
przebiega nadal poprzez 32-bitową szynę PCI.
508 Anatomia PC

Rysunek 8. 15. Pamięć obrazu: 2MB


Magistrala 128 bitów
Niepełna obsada Dostęp do pamięci: 64-bitowy
pamięci może
powodować RAM-512kB
(16bil)
RAM-513cB
(16bi!)
RAM-5i2kfl
(IBM}
RAM-512KB
(16bit)
zawężenie Sygnał

szerokości Magistrala wewrętrzna


3E Kontroler graficzny
RGB
liW Przetwomk
Monitor
Szerokość: 12ibitów 128bitów RAMDAC
magistrali

Pamięć obrazu: 4MB


Magistrala 128 bitów
Dostęp do pamięd: 128-bitowy

RAM-51M RAM-512kB RAM-512kB RAM-512kB


0G brt) (18W) (1ÖM) (16bh)
Sygnał
M
rv

RGB Monitor
Przetwornic
/
\
tóigisłmfcL wwretrzna
Szarotośc : 12fibłtów
Kontroler graficzny
128bitów

RAMDAC
>-
N 3C 3C 3C

RAM-512K8 RAM-51&B RAM-S12k8 RAM-512kB


(1 Sbrt) (16bit) (iew) (I6brt)

Redukcja obciążenia magistrali pamięciowej karty graficznej możliwa jest do osiąg­


nięcia na drodze obniżenia częstotliwości odchylania pionowego. Większość ludzi za­
dowoli się z pewnością częstotliwością 75 Hz i nie zauważy różnicy między 90 a 120
Hz. Sporą część populacji odbiera wręcz negatywnie częstotliwości powyżej 100 Hz.

Wzrost zapotrzebowania na szybką pamięć graficzną i konieczność racjonalnego zagos­


podarowania pasma przepustowego wynika z wielu dodatkowych powodów. Techniki
multimedialne narzucają nowe wymagania i stanowią dodatkowe obciążenia. Pamięć
graficzna służy przecież nie tylko jako prosta matryca pikseli, z których buduje się
obraz. Jest również miejscem przechowywania bitowych map tekstur oraz buforem Z.
Głębokość buforu Z jest różna i waha się w granicach 16 (Matrox Millennium) do 32
bitów (Spea Fire GL). Filtracja bilineama tekstur pracuje zwykle w trybie uśredniania
z czterech otaczających punktów (cztery cykle odczytu). Jeszcze gorszy bilans pre­
zentuje Mip-Mapping. W średnią zaangażowane są dwie mapy bitowe o różnej roz­
dzielczości (8 cykli odczytu). Skalowanie w pionie to często ekstrapolacja z dwóch linii.
W trybie pracy z przełączanymi buforami (Double Buffering) zarządza się ponadto
dwoma blokami obrazowymi jednocześnie.

Realizacja powyższych funkcji mnoży ogromną ilość dodatkowych cykli dostępu -


przeznaczony na nią czas pozostaje bez zmian. Kontrolery graficzne profesjonalnych
systemów multimedialnych (na przykład symulatorów) wyposaża się więc w oddzielne
szyny pamięciowe kierowane do niezależnych bloków. Jednej z magistral przydziela się
część pamięci dla potrzeb bufora Z i tekstur, a druga obsługuje blok pamięci obrazu.

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.

Przydział pamięci na kartach z akceleratorami 3D przedstawia poniższa tabela.

Pamięć Bufory obrazowe Bufor „ Z “ Pamięć


na karcie Rozdzielczość Kolory (Front/Back) (16-bitowy) dla textur
[MB] [MB] [MB] [MB]
1 320x200 2 16 0,12/0,12 0,12 0,63
2 640x480 2 16 0,59/0,59 0,59 0,24
2 800x600 2* 0,46/0,46 0,92 0,17
4 640x480 2 16 0,59/0,59 0,59 2,24
4 800x600 2 16 0,92/0,92 0,92 1,25

Rodzaje stosowanych pamięci


• DRAM. Elementarna komórka pamięci realizowana jest za pomocą pary złożo­
nej z jednego tranzystora i kondensatora. Komórki zgrupowane są w pola a dostęp
do pojedynczego bitu odbywa się poprzez wybranie adresu wiersza i kolumny.
W trybie przyspieszonym (Fast Page Mo de) wystarczy podawać adresy kolumn
przy niezmiennym adresie wiersza co daje skrócony o połowę czas dostępu
w stosunku do pełnego adresowania.
DRAM jest typem-prekursorem w grupie pamięci dynamicznych i wywodzi się
z czasów pierwszych komputerów PC. Stosowana (z małymi modyfikacjami) do
dnia dzisiejszego jako pamięć operacyjna o czym decydują jednak inne kryteria.
Ten standardowy typ pamięci nie jest obecnie w stanie sprostać wymaganiom
zastosowań multimedialnych.

• EDO i BEDO DRAM. Stanowi odmianę pamięci DRAM udostępniająca pasmo


nieco powyżej 200 MB/s. Podczas odczytu dane utrzymywane są na wyjściu aż
do momentu gdy pole pamięci gotowe jest do przekazania następnego słowa.
W ten sposób kontroler graficzny może przygotowywać się do następnego cyklu
odczytu będąc jeszcze w trakcie przejmowania danych z cyklu poprzedniego.
Zachodzenie na siebie kolejnych cykli (technika pipeline) jest podstawą pracy
w trybie burst (stąd wywodzi się nazwa Burst EDO, BEDO-DRAM). Dopiero
ten zysk na czasie pozwolił na taktowanie pamięci bez cykli oczekiwania, każdy
cykl zegara pamięci wyzwala 1 cykl odczytu.

Cztery równolegle połączone układy pamięci (pracujące w konfiguracji 4x16=64


bity) taktowane zegarem 50 MHz osiągają maksymalny transfer 400 MB/s
(8x50). Średnia prędkość transmisji jest naturalnie mniejsza, bowiem kontroler
musi kiedyś zmieniać adres wiersza i opuścić tryb Fast-Page.
510 Anatomia PC

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.

• SDRAM. Synchroniczna odmiana pamięci DRAM wytwarzana obecnie przez


licznych producentów (między innymi Hitachi, NEC). Typowa częstotliwość
taktowania wynosi 100 MHz. Szybkie odmiany tego typu przystosowane są do
zegara 125 MHz co daje transfer 640 MB/s (przy szerokości magistrali 64 bity).
W przeciwieństwie do klasycznych układów pamięciowych DRAM, które wy-
magają precyzyjnie uformowanych sygnałów RAS i CAS (Row Address Strobe,
Column Address Strobe) pamięci synchroniczne mają własny kontroler przetwa­
rzający impulsy zegarowe na niezbędne sygnały sterujące. Metoda taka zmniej­
sza wymogi nakładane na dokładność wykonania ścieżek na płytkach druko­
wanych i podniesienie prędkości taktowania.
Bloki pamięciowe SDRAM i SGRAM organizowane są zwykle w dwa banki
obsługiwane naprzemiennie (technika interleave) co pozwala na nakładanie się
w czasie kolejnych cykli dostępu.
• SGRAM. Odmiana synchronicznej pamięci SDRAM cechująca się dodatkowym
trybem pracy blokowej przy zapisie (Block-Write). Pojedyncze chipy pamięci
mają szerokość 32 bitów co stanowi korzystny czynnik przy obsadzie 2 - 4 MB.
Częstotliwość zegara taktującego osiąga 100 MHz (układ S3 Virge/GX2).

• MDRAM. Multibank-DRAM, należy do grupy pamięci synchronicznych DRAM.


W odróżnieniu od SDRAM i SGRAM (w trybie burst współpracują ze sobą 2
banki) mamy tu do czynienia z przypadkiem nakładania się na siebie 8 banków.
Pamięć tego typu wytwarzana jest aktualnie jedynie przez firmę Mosys. Bazuje na
logicznych jednostkach pamięci 256 KB, każda po 8 banków 32 KB. Na rynku
powszechny jest chip 1 MB integrujący w sobie cztery jednostki pamięci.
Obecny rozwój tej technologii umożliwia w skali laboratoryjnej taktowanie ze­
garem 100 - 125 MHz ale rozrzut parametrów i niedoskonałość wykonania
elementów w produkcji masowej ogranicza częstotliwość taktowania do 75 - 85
MHz. Z pamięcią MDRAM współpracuje kontroler ET-6000 będący najnow­
szym produktem firmy Tseng.
Fizyczna szerokość magistrali wewnętrznej kontrolera ET-6000 wynosi w za­
sadzie 32 bity ale jej organizacja jest dość nietypowa. Sterownik wymienia dane
z pamięcią poprzez jeden z dwóch portów o szerokości 16 bitów. Każdy z nich
wyprowadza multipleksowaną szynę komunikacyjną, którą przesyłane są adresy
i dane. Szyny taktowane są sygnałem zegarowym pamięci (około 100 MHz)
a przesyłanie odbywa się zarówno podczas narastającego jak i opadającego zbo­
cza zegara. Szczytowa przepustowość takiej szyny sięga więc (w przeliczeniu na
jeden chip MDRAM) około 400 MB/s. Dwa bloki pamięci cechują się więc
wydajnością wykraczającą poza parametry typowe dla pamięci V-RAM.

• 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

• WRAM. WRAM (Window RAM) stanowi wariant V-RAM poszerzony o pewne


dodatkowe, realizowane sprzętowo funkcje blokowe (Aligned Move i Fill).
Chipy tego typu wytwarzane są jak na razie jedynie przez firmę Samsung a mon­
towane na kartach Matrox/Millenium.

• 3D-RAM. Pamięć z grupy High-End będąca opracowaniem firma Mitsubishi.


Znajduje zastosowanie w systemach przyspieszających dostęp do tekstur poprzez
wspomaganie pamięcią podręczną typu cache (C-RAM). Chipy tego typu mon­
towane są na karcie Diamond Fire GL-4000. Sterowanie realizowane jest przez
specjalnie do tego celu zaprojektowany zestaw układów scalonych firmy Evans
& Sutherland.

Przegląd powszechnie stosowanych układów sterowników


Typ kontrolera I Przykładowe zastosowanie Rodzaj RA MDAC Współpraca Uwagi dodatkowe
(Producent) I Producent: Nazwa z pamięcią
254-VT ATI: Video 135 MHz 2 MB DRAM True Color max.
(ATI) Xpression Video 60 ns 800x600
ALG2546 Gala Multimedia: 2D 135 MHz 2 MB EDO VESA BIOS 1.2
(Advance Gala Vision 64 60 ns True Color max.
Logic) 640x480
ARK 2000 Hercules: Video 135 MHz 2 MB EDO True Color max
(Ark Logic) Stingray 64 Video 800x600
AT3D Hercules: 2D+3D 175 MHz 2MB EDO VESA BIOS 1.2
(Aliance Stingray 128/3D filtra cja 40n s/Tekstury True Color max.
Promotion) trilinearna, 4MB EDO 1280x1024 / 60Hz
+ Mip-Map, 35 ns/Obraz 1600x1200/2 5 6 c o l/
Voodoo-Rush interpolacja Zegar 60 MHz 70 Hz
X/Y Magistrala
(3Dfx)
pamięci szer.
64 bity (128
w nazwie
to chwyt
marketingowy)
Cirrus Laguna 1 STB: 3D RDRAM
II/3D I
Atlanta 3D
Dynamie Dynamie Pictures: 2D+3D 16 MB VRAM Interfejs graficzny
Pictures OpenGL
V192
(Windows NT)
ET6000 Cardex: Challenger EV Video 135 MHz 2,25 (max. 4,5) VESA BIOS 2.0
(Tseng Labs) MB MDRAM True Color max.
1024x768
Hercules: Video 135 MHz 2 (max. 4) MB VESA BIOS 2.0
Dynamite 128 Video MDRAM True Color max.
Zegar 100 1280x1024
MHz
Grafika PC w dobie multimediów 513

Typ kontrolera | Przykładowe zastosowanie Rodzaj RAMDAC Współpraca Uwagi dodatkowe


(Producent) I Producent: Nazwa z pamięcią
ET6000 I STB: Video 135 MHz 2,25 MB VESA BIOS 2.0
(Tseng Labs) Lightspeed Í28 Video MDRAM Złącze S3-Scenic
Zegar 100 True Color max.
MHz 1024x768
VideoLogic: Video 135 MHz 2 (max. 4) MB VESA BIOS 2.0
GrafixStar 600 MDRAM True Color max.
Zegar 100 1024x768
MHz Tryby dodatkowe:
1600x1200/256 kol./
ÓOHz
GD5462 1 Creative Labs: Graphics 2D 135 MHz 2MB RDRAM VESA BIOS 1.2
(Cirrus Logic) I Blaster MA302 Zegar 250 max. 1024x768 / 256
MHz kol.
GD5464 I Chaintech: Laguna 3D 3D 230 MHz 4MB RDRAM 1600x1200/256 k o l./
(Cirrus Logic) Zegar 250 85Hz
MHz
Glint 300SX I Omnicomp: tyiko 3D, bez 4MB VRAM Tylko w PCI-Slot
(3Dlabs) I 3 Demon funkcji SVGA gwarantującym Bus
Master
Interfejs graficzny
OpenGL
(Windows NT)
Spea: 2D~ision968 8 MB VRAM Interfejs graficzny
Fire GL 3D=Glint300 sx 8 MB DRAM OpenGL
(Windows NT)
Elsa: 2D-Vision968 8 MB VRAM Interfejs graficzny
Gloria-8 3D=Glint300sx 8 MB DRAM OpenGL
(Windows NT)
Glint 500TX Fire GL 3000 3D dod, 32 MB
dla 32-
bitowego
bufora z i alfa
Imagine 128 #9: 3D 220 MHz 4 MB EDO VESA BIOS 1.2
SU DRAM Imagine 128 Series Ile (brak 50ns True Color max.
mapowania 1024x768
tekstur) Tryby dodatkowe:
1600x1200/256 ko l./
81 Hz
Imagine 128 I #9: 3D 220 MHz 4 (max. 8) MB True Color max.
Sil I Imagine 128 Series II (brak VRAM 1280x1024
mapowania 1600x 1200 (przy 8 MB)
tekstur)
Tieket-2-Ride-Il| #9: 3D max. 16 MB Open GL
(#9) I Revolution IV AGP 2X SGRAM
514 Anatomia PC

Typ kontrolera Przykładowe zastosowanie Rodzaj RA MDAC Współpraca Uwagi dodatkowe


(Producent) Producent: Nazwa z pamięcią
1740 Diamond: Video + 2D 190 MHz max. 8 MB True Color max.
(Intel) Stealth II G460 + 3D SDRAM / 1024x768
Asus: Filtr, bilineama SGRAM 1600x1200/75 H z/
AGP-V2740 Alpha blending szyna 64 bity 256 kol.
Real 3D: zegar 100
Starfighter MHz
Chaintech:
Tornado 1-7000
MG A -1064SG Matrox: 3D 158 MHz 2 (max. 4) MB VESA BIOS 2.0
(Matrox) Mystique SGRAM True Color max.
(od maja 1997: 1280x1024 (przy 4
max. 8MB) MB)
Tryb dodatkowy:
1600x1200/256 kol./
62 Hz
Modół dodatkowy
Rainbow Runner:
MPEG, wej./wyj.
Video, Video Capture
JPEG 50fps
MGA-2064W Matrox: 3D 220 MHz 2 (max. 8) MB True Color max.
(Matrox) Millennium WRAM 40 ns 800x600
Tryb dodatkowy:
1600x1200/256 kol./
78Hz
MediaXL Connector
M GA-2164 W Matrox: 2D + 3D 220 MHz max. 16 MB VESA BIOS 2.0
(Matrox) Millennium II 250 MHz WRAM True Color max.
1024x768
1600x 1200 / TrueColor,
/ 85Hz
1800x1440/65H z
Tryby dodatkowe 16:9
i 16:10: 1920x1080,
1920x1200
MGA-GlOO Matrox: 2D + 3D 230 MHz max. 8 MB Direct3 D
Twister Productiva G 100 AGP Setup engine SGRAM 10 ns w ograniczonym
(Matrox) Filtr, bilineama zakresie.
Fogging True Color max.
1600x1200
Tryby dodatkowe 16:9
i 16:10
Rozszerzenia:
I .Video OUT (Maven)
2. LCD OUT (Power
Link)
3. DVD
4. Rainbow Ranner „G”
Grafika PC w dobie multimediów 515

Typ kontrolera Przykładowe zastosowanie Rodzaj RAMDAC Współpraca Uwagi dodatkowe


(Producent) Producent : Nazwa z pamięcią
MGA-G200 Matrox: 2D+3D 230/250 max. 16 MB Direct3D w pełnym
(Matrox) Productiva G200 AGP Setup engine MHz SGRAM 7 ns zakresie.
Filtr. 2 równoległe True Color max.
trilineama szyny 1920x1200
Fogging pamięciowe Tryby dodatkowe 16:9
Antialiasing 64-bity i 16:10.
Alpha blending zegar 143MHz Rozszerzenia:
AGP 2X 1.Video OUT (Maven)
2. LCD OUT (Power
Link)
3. DVD
4. Rainbow Ranner „G”
5. Tuner TV
NV1-STG Diamond/Spea: 3D 170 MHz 2 MB VRAM max. 256 kol.
2000 Edge 3D 60 ns Tryby dodatkowe:
(Nvidia) 1600x1200/256 k o l./
60 Hz
Wej./Wyj. Audio Stereo
NV3-STG SGS / nVidia 2D+3D 205 MHz 4 MB SGRAM 1600x1200 /75H z
3000 Riva 128 Filtr. Magistrala True Color max,
Riva 128 PCI / AGP trilineama 128bitów 1152x864/ 120 Hz
(Nvidia) Zegar 100
MHz
Riva 128ZX AGP 2X 2D+3D 250 MHz 8 MB SGRAM Rozdz. 3D: 1280x1024
(Nvidia) Filtr. Magistrala True Color max.
trilineama 128bitów 1600x1200/85 Hz
Zegar 100
MHz

Permedia Diamond: Video + 3D 220 MHz max. 8 MB VESA 2.0


(3Dlabs) Fire GL 1000 (zawiera SGRAM True Color max.
lub funkcje część pamięci 1152x864
Elsa: SVGA) obrazu jako 16
Gloria - S Koprocesor bitowy bufor Z
DELTA
Permedia 2 Diamond:
(3Dlabs) Fire GL 1000 Pro
Power VR VideoLogic: Koprocesor 3D, 4 MB SDRAM Brak bufora Z,
PCX1 Apocalypse 3D (brak funkcj i Zegar 60 MHz koprocesor oblicza
(NEC/Video SVGA), Pamięć tekstur współrzędną z z
Logic) pracuje jako max. 4 MB dokładnością do 32
dodatkowa SDRAM bitów.
karta PCI Połączenie z kartą
SVGA poprzez szynę
PCI (Slot Bus-Master)
Power VR VideoLogic: Koprocesor 3D, 4 MB SDRAM Brak bufora Z,
PCX2 Apocalypse 3Dx bez funkcji Zegar 66 MHz koncepcja „Infinite
(NEC/Video- SVGA, Pamięć tekstur Planes”
Logic) bilineama max. 4 MB Połączenie z kartą
filtracja tekstur SDRAM SVGA poprzez szynę
PCI (Slot Bus-Master)
516 Anatomia PC

Typ kontrolera I Przykładowe zastosowanie Rodzaj RA MDA C Współpraca Uwagi dodatkowe


(Producent) I Producent: Nazwa z pamięcią
Power VR2 VideoLogic: Video + 2D 250 MHz 2 - 16 MB True Color max.
Highlander Apocalypse 3Dx + 3D SDRAM 1600x1200/75H z
(VideoLogic) Filtr. Zegar 100
trilineama MHz
Bump- Magistrala 64
Mapping bity
AGP 2X
Antialiasing
Rage-1 ATI: 3D 135 MHz 2 MB EDO VESA BIOS 2.0
(ATI) 3D Xpression 45 ns True Color max.
800x600
Rage-2 ATI: 3D 220 MHz 4 (max. 8) MB True Color max.
(ATI) 3D Pro Turbo PC2TV SGRAM 1280x1024 (przy 8 MB)
Zegar 83 MHz Wyjście PAL-TV
ATI: 3D 220 MHz 2 (max. 4) MB True Color max.
3D Xpression +PC2TV SGRAM 1280x1024/75 Hz
Wyjście PAL-TV
Rage 3D PRO ATI: Video + 2D 230 MHz max. 8 MB True Color max.
(ATI) Xpert@Play/Work + 3D SGRAM 1280x1024/90 Hz
All-In-Wonder (MPEG)
Trio64V+ #9: Video 135 MHz 2 MB EDO Złącze S3 Scenic
(S3) 9FX Motion 331 70 ns True Color max.
800x600
Cardex: Video 135 MHz 2 MB EDO Złącze S3-Scenic
Genesis EV 2MB 60 ns True Color max.
800x600
Diamond/Spea: Video 135 MHz 2 MB EDO Złącze S3-Scenic
Mirage Video/TV 40 ns True Color max.
800x600
Tryby dodatkowe:
1600x1200/256 kol./
48 Hz (int)
Tuner TV, Wej. FBAS
i S-Video

Elsa: Video 135 MHz 2MB EDO Złącze S3-Scenic


Winner 1000 Trio/V 60 ns True Color max.
800x600
Hercules: Video 135 MHz 2MB EDO Złącze S3-Scenic
Terminator 64V/Video 40 ns True Color max.
800x600
Miro: Video 135 MHz 2 MB EDO True Color max.
Video SD22PD 60 ns 800x600
Tryb dodatkowy:
1408x1024/256 kol./
70 Hz
Grafika PC w dobie multimediów 517

Typ kontrolera Przykładowe zastosowanie Rodzaj RAMDAC Współpraca Uwagi dodatkowe


(Producent) Producent : Nazwa z pamięcią
Tri0Ó4V+ VideoLogic: Video 135 MHz 2 MB EDO Złącze S3 Scenie
(S3) GrafixStar 400 60 ns True Color max.
800x600
Tryb dodatkowy:
1600x1200/256 k o l./
60 Hz
Trio64V + Miro: Video 135 MHz 2 MB EDO True Color max.
MPEG Midia View 40 ns 800x600
(S3) TV upgrade
Wyj. video
Trio3D Hercules: 3D 230 MHz 8 MB SDRAM 1600x1200/ 256 kol. /
(S3) Terminatorl28/3D AGP Filtr. 85 Hz
trilineama Direct3D
OpenGL
Vérité 1000L Miro: 3D 135 MHz 4 MB EDO VESA BIOS 2.0
(Rendition) Miro Crystal VRX 40 ns True Color max.
1024x768/70 Hz
Tryby dodatkowe:
1152x864/256 k o l./
90 Hz
1408x1024/3 2 K k o l./
70 Hz
Vérité Creative Labs: 3D 135 MHz 4 MB EDO VESA BIOS 2.0
V-1000E 3D Blaster 50 ns True Color max.
(Rendition) 800x600/ 100 Hz
Tryby dodatkowe:
1152x864/3 2 K k o l./
85 Hz
Vente 2200 Jazz Multimedia 3D 230 MHz 4 - 8 MB True Color max
(Rendition) Outlaw 3D Triangle setup SGRAM 1152x864
Hercules: RISC Zegar: Video OUT
Thriller 3D Filtr. 125MHz
trilineama
Virge #9: 3D 135 MHz 2 MB EDO VESA BIOS 1.2
(S3) 9FX Reality 332 50 ns Złącze S3-Scenic
True Color max.
800x600
Cardex: 3D 135 MHz 2 (max. 4) MB VESA BIOS 1.2
Genesis SV EDO 50 ns Złącze S3-Scenic
True Color max.
800x600
Diamond: 3D 135 MHz 2 MB EDO VESA BIOS 1.2
Stealth 3D 2000 40 ns Złącze S3-Scenic
True Color max.
800x600
Tryb dodatkowy:
1600x1200/256 k o l./
43 Hz int.
518 Anatomia PC

Typ kontrolera Przykładowe zastosowanie Rodzaj RAMDAC Współpraca Uwagi dodatkowe


(Producent) Producent : Nazwa z pamięcią
Virge Elsa: 3D 135 MHz 2 (max. 4) MB VESA BIOS 2.0
(S3) Victory 3D EDO 40 ns Złącze S3-Scenic
True Color max.
800x600
Tryby dodatkowe:
1600x1200/256 kol./
57 Hz
1536x1152 /2 5 6 kol./
62 Hz
ExpertColor: 3D 135 MHz 2 MB EDO VESA BIOS 1.2
DSV 3325 60 ns Złącze S3-Scenic
True Color max.
800x600
Hercules: 3D 135 MHz 2 (max. 4) MB VESA BIOS 1.2
Terminator 64 3D EDO 40 ns Złącze S3-Scenic
True Color max.
800x600
Tryb dodatkowy:
1600x12 0 0 /2 5 6 kol./
43 Hz int
Miro: 3D 135 MHz 2 MB EDO VESA BIOS 1.2
Miro Video 3D 40 ns Złącze S3-Scenic
True Color max.
800x600
Tryby dodatkowe:
768x576/256 kol./
100 Hz
768x576/6 5 K kol./
100 Hz
768x576/T rue C ol/
75 Hz
1408x1024/256 kol./
70 Hz
Orchid: 3D 135 MHz 2 MB EDO VESA BIOS 1.2
Fahrenheit Video 3D 50 ns Złącze S3-Scenic
True Color max.
800x600
Virge/DX Diamond: 2D/3D 4M B True Color max.
(S3) Stealth 3D 2000 1024x768/90 Hz
Tryby dodatkowe:
1152x864 /3 2 K kol./
85 Hz
Elsa: 2D/3D 4M B True Color max.
Victory 3DX 1024x768/90 Hz
Tryby dodatkowe:
1152x864/3 2 K kol./
85 Hz
Hercules: 2D/3D 4M B True Color max.
Terminator 3D/DX 1024x768/90 Hz
Tryby dodatkowe:
1152x864/3 2 K kol./
85 Hz
Grafika PC w dobie multimediów 519

Typ kontrolera Przykładowe zastosowanie Rodzaj RA MDAC Współpraca Uwagi dodatkowe


(Producent) Producent: Nazwa z pamięcią
Virge/VX #9: 3D 220 MHz 2 (max. 4) MB True Color max.
(S3) 9FX 772 VRAM 1280x1024
Diamond: 3D 220 MHz 2 (max. 4) MB True Color max.
Stealth 3D 3000 VRAM 1280x1024
Elsa: 3D 220 MHz 2 (max. 4) MB True Color max
Winner 2000AV1/3D VRAM 1280x1024
Elsa: 3D 220 MHz 2 (max. 4) MB True Color max
Winner 3000S/M/L VRAM 1280x1024
miro: 3D 220 MHz 2 (max. 4) MB Wyjście S-VHS
Crystal2000/4000VR VRAM True Color max.
1280x1024
Vision868 Elsa: Video 135 MHz 2 MB True Color max
(S3) Winner 1000AVI EDORAM 800x600
Vision968 Genoa: Video 175 MHz 4 MB VRAM True Color max.
(S3) Video Blitz IIIAV 1024x768
Voodoo Diamond/Spea: tylko 3D, brak Pamięć obrazu Wydajność 3D:
(3Dfx) Monster 3D funkcji SVGA i bufor Z: 45 MTexel/s
Orchid: 2MB EDO 500KPolygons/s (50
Righteous 3D 45 ns pixel)
Pamięć tekstur: Rozdzielczość 3D:
2 - 4 MB EDO 640x480
45 ns
(szyna pam.
50 - 60 MHz)
Voodoo-2 Diamond: tylko 3D, brak Pamięć obrazu Rozdzielczość 3D:
(3Dfx) Monster 3D-II funkcji SVGA i bufor Z: 800x600
Creative Labs: Bump- 4MB EDO Glide, Direct3D
3DBlasterVoodoo2 Mapping 28 ns
Jazz Multimedia; Filtr. Pamięć tekstur:
Renegate 3D trilineama 4 - 8 MB EDO
Datapath: 4xTriangle 40 ns
S-12 AGP Setup
2xProc. tekstur
2xVoodoo-2 Quantum3D: tylko 3D, brak Pamięć obrazu Rozdzielczość 3D;
połączenie Obsidian 100SB-4400 funkcji SVGA i bufor Z: 1024x768
równoległe Datapath: Bump- 2x4 MB EDO Glide, Direct3D
złączem SLI X -16 PCI Mapping Pamięć tekstur:
(3Dfx) Filtr. 2x2 MB EDO
trilineama (Obsidian)
4xTriangle 2x4 MB EDO
Setup (X -16)
(Po jednym
procesorze
tekstur na
każdej karcie)
520 Anatomia PC

Dopasowanie karty do monitora


Ostatnim ogniwem w łańcuchu przetwarzania informacji w formie graficznej jest mo­
nitor. Pada on najczęściej ofiarą cięć oszczędnościowych, szczególnie przy zakupie
kompletnych systemów przez początkujących niedoświadczonych użytkowników. Pub­
likowane dane statystyczne potwierdzają smutną prawdę, że dużo łatwiej przekonać jest
klienta do zakupu doskonałej karty graficznej niż doinwestowania do monitora. Tym­
czasem dopasowanie parametrów zainstalowanej graficznej do posiadanego monitora
pełni kluczową rolę w optymalnym wykorzystaniu całości dostępnych zasobów.

Przy obecnej sytuacji cenowej stanowczo należy odradzić nabywanie jakichkolwiek


kart z pamięcią 1 MB. Są one tylko minimalnie tańsze od obsady 2 MB ale za to
skutecznie hamują pracę kontrolera graficznego.

2 MB EDO-RAM w zupełności wystarczy do zwykłych zastosowań komputera klasy


PC pracującego pod kontrolą systemu operacyjnego z interfejsem graficznym. Karty tej
klasy obrazują tekst, tabele i proste rysunki przy rozdzielczości 800x600 w trybie True
Color. Zakres High Color pokrywany jest do rozmiarów 1024x768 a jeśli zadowala nas
256 kolorów można sięgnąć po raster 1280x1024 z jeszcze ergonomiczną częstotliwoś­
cią odchylania 75 Hz. Cieszący się dużą popularnością ze względu na lepsze proporcje
format 1152x1024 nakłada ostrzejsze wymagania na monitor i nie zawsze jest wspoma­
gany przez sterowniki graficzne. Praca w trybach powyżej 800x600 może być uciążliwa
jeśli przewody połączeniowe nie są dobrej jakości (uwaga na wszelkie przełączniki
i przedłużacze) - często zmusza to do wyboru czcionki ekranowej o większych wymia­
rach.

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

28 Ze względu na omawianą wcześniej redukcję pasma przepustowego magistrali.


Grafika PC w dobie multimediów 521

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.

To co w istotny sposób odróżnia od siebie poszczególne chipy graficzne to podejście do


skalowania okna video (zoom). Kontroler typu Virge interpoluje w poziomie (wytwarza
dodatkowe piksle w obrębie linii), w pionie natomiast dubluje ślepo linie, na czym
cierpi jakość obrazu.

Przeznaczone na masowy rynek karty z akceleratorami 3D mają opanowane tryby o sto­


sunkowo niskiej rozdzielczości i ich zastosowanie ma sens jedynie do gier. Do CAD się
nie nadają (nie są do tego przewidziane).

Karty z wyjściem TV (SCART, S-Video), często wyposażone jeszcze w modulator HF,


są przeznaczone raczej do prezentacji obrazów niż do ich opracowywania i tworzenie.
Czcionki ekranowe w tym formacie są trudno czytelne. Ograniczenia techniczne wbu­
dowane w standardy telewizyjne (pasmo toru wizji i zależności czasowe toru odchyla­
nia) nie pozwalają na wyjście poza rozdzielczość 800x600.

Tuner telewizyjny realizowany jest najczęściej w formie dodatkowego modułu nasadza­


nego na przystosowaną do tego celu kartę graficzną. Połączenie odbywa się własną nie­
standardową magistralą lub ujednoliconym złączem „Scenie Highway” wprowadzonym
przez firmę S3. Komputer PC wyposażony w tuner z dekoderem teletekstu ma szerokie
pole do popisu przy automatycznym przetwarzaniu szerokich strumieni informacji, np.
notowań giełdowych. Wybrane strony można wiązać w sekwencje i zapisywać do pli­
ków w formacie AVI (na przykład 320x240 / 25 fps).

Ile pamięci potrzeba naprawdę


Faktyczne zapotrzebowanie na pamięć graficzną wynika z aktualnego trybu pracy ste­
rownika. Pełna strona obrazu zajmuje:
P = p * 1* c
gdzie:
P - ilość pamięci w bajtach
p - ilość punktów w linii
1- ilość linii na ekranie (/?x/ opisuje rozdzielczość obrazu w pikslach, na przykład
800x600)
c - tryb kolorowy - liczba bajtów opisujących barwę piksela

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.

Zgodnie z powyższym praca z rozdzielczością 1024x768 punktów w trybie High Color


(16 bitów na piksel, c=2) zużywa 1024x768x2=1 572 864 bajty pamięci. Ponieważ
karty graficzne dysponują obsadą pamięci 1, 2, 4 lub 8 MB najbliższa spełniająca to
wymaganie to 2 MB.

Możliwe do osiągnięcia tryby pracy zebrane zostały w poniższej tabeli:

Ilość pamięci [MB] RAMDA C [MHz] Maksymalnie możliwy tryb


1 135 1280 x 1024/ 1 6 co l./7 5 H z
1 0 2 4 x 7 6 8 /2 5 6 co l./7 5 H z
800 x 600 / HiColor / 75Hz
2 135 1280 x 1024 / 256 col. / 75Hz
1152 x 864 / HiColor / 80Hz
1024 x 768 / HiColor / 80Hz
800 x 600 / TrueColor / 75Hz
4 175 1280 x 1024 / TrueColor / 75Hz
1600 x 1200 / HiColor / 65Hz
4 220 1280 x 1024 / HiColor / 80Hz

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

Widać wyraźnie, że funkcje 3D są niezmiernie pamięciożeme. Nawet 4 MB pamięci


graficznej karty można bardzo szybko spożytkować.

29 1280 x 1024x4 = 5 MB.


Grafika PC w dobie multimediów 523

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

1- ilość linii na ekranie (pxl opisuje rozdzielczość obrazu w pikselach, na


przykład 800x600)
fH- częstotliwość odświeżania obrazu

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.

Generowane wówczas przebiegi muszą być impulsami szpilkowymi o bardzo stromych


zboczach. Stopień wyjściowy przetwornika to 3 źródła prądowe (dla każdego z kolorów
^1 *
RGB oddzielnie) tak dobrane, by wytwarzały na rezystancji 37,5 Q następujące po­
ziom napięcia:

W zasadzie są to trzy niezależne przetworniki, po jednym dla każdego z kolorów R, G, B.


Czasami można spotkać bardziej rozbudowane rozwiązania, jak np. te z wyjściami na dwa
monitory. Karta posiada wtedy 2 niezależne zestawy po 3 przetworniki RAMDAC tak jak
w modelu Duo-View z kontrolerem S3 typu Virge/GX-2.
31 Wartość stanowi wypadkową otrzymaną z równoległego połączenia impedancji obciążenia
obydwu końców linii: dwa razy po 75 D. Niedopasowanie impedancji może być przyczyną
szkodliwych zjawisk o charakterze falowym (odbicia i interferencje). Ich obecność objawia się
na ekranie w formie uciążliwych efektów (mory, zwielokrotnianie krawędzi) psujących jakość
obrazu i męczących oczy.
524 Anatomia PC

0 V dla punktu czarnego


0,7 V dla punktu o maksymalnej jaskrawości (biały kolor gdy R=G=B=0,7 V).

W stanie idealnym, przetwornik wytwarza przebieg prostokątny o tak wąskich impul­


sach by można było zapalać i gasić nawet pojedyncze piksele ekranu (rysunek 8.16).

Rysunek 8.16. 1 piksel


na ekranie
Idealny przebieg *
i

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

Na ekranie o wysokiej rozdzielczości pojedynczy biały punkt na czarnym tle w pier­


wszej połowie swego życia znajduje się w fazie między czarnym a białym chociaż taka
barwa wcale nie jest pożądana. To samo ma miejsce przy gaszeniu piksela. W trybie
1280 i częstotliwości RAMDAC 135 MHz czas życie punktu można określić na 7,4 ns
(1/135 MHz). Firma S3 wymienia na liście parametrów dla swoich zintegrowanych
przetworników czasy narastania i opadania 3ns mierzone na poziomach 10 i 90%.
Grafika PC w dobie multimediów 525

Powyższe liczby unaoczniają obecność fizycznych granic ostrości obrazu. Dodatkowo


sytuację pogarsza fakt stosowania filtrów wyjściowych typu n instalowanych w celu
ograniczenia skutków szkodliwego promieniowania.

Strome zbocza produkują przebiegi harmoniczne sięgające zakresu GHz. Promienio­


wanie tego typu trzeba wyeliminować, tak by produkty mogły uzyskać stosowne
certyfikaty (w Europie CE, w USA FCC). W tyle nie pozostają również producenci
monitorów, którzy w trosce o redukcję zakłóceń emitowanych przez swoje wyroby,
zaopatrują wszelkie przewody sygnałowe w opaski z pierścieni ferrytowych (rysunek
8.18).

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.

Optymalne dopasowanie parametrów monitora i karty odgrywa kluczową rolę. Słaby


monitor nie wykorzysta trybów wysokiej rozdzielczości oferowanych przez sterownik.
Dobry monitor marnuje się współpracując z kartą o marnej jakości. W łańcuchu połą­
czonych ze sobą elementów decyduje najsłabsze ogniwo.

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.

fn max [kHz] Ergonomiczne tryby pracy


38 640 x 480 / 72 Hz
48 800 x 600 / 72 Hz
64 1024x 7 6 8 /8 0 Hz
1152 x 8 6 4 /7 1 Hz
526 Anatomia PC

fu max [kHz] Ergonomiczne tryby pracy


78 800 x 6 0 0 / 124 Hz
1024x 7 6 8 /9 7 Hz
1280 x 1 0 2 4 /7 3 Hz
1152 x 8 6 4 /8 6 Hz
85 1024 x 768 / 106 Hz
1 1 5 2 x 8 6 4 /9 4 Hz
1280 x 1 0 2 4 /8 0 Hz
1536 x 1152/71 Hz
102 1280 x 1 0 2 4 /9 4 Hz
1536 x 1 1 5 2 /8 3 Hz
1600x x 200 / 80 Hz

Dany tryb pracy nakłada określone wymogi na pasmo toru wizyjnego zainstalowanego
monitora. Wartości minimalne zebrane zostały w poniższej tabeli.

Rozdzielczość f v[Hz] fu [kHz] Pasmo video [MHz]


640 x 480 75 38 2 5 -3 0
800 x 600 75 48 4 5 -5 0
1024 x 768 75 62 7 0 -8 0
1280 x 1024 75 80 1 2 0 -1 3 5
1600 x 1200 75 95 200 - 220

Przekroczenie określonej dla danego monitora maksymalnej częstotliwości odchylania


poziomego o więcej niż 5% stanowi w pierwszej mierze niebezpieczeństwo zerwania
synchronizacji a teoretycznie nawet i uszkodzenia, chociaż nowe modele bronią się
przed takim traktowaniem przy pomocy wbudowanych mechanizmów ograniczających.

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

Rysunek 5.19. E ig e n sc h a fte n von A n zeig e

Rozbudowane
możliwości
konfiguracji
oferowane przez
program obsługi
karty Elsa

Kanał informacyjny VESA DDC


DDC (Display Data Channel) jest znormalizowanym przez VESA złączem komunika­
cyjnym pomiędzy monitorem a kartą graficzną. Wymiana danych na tym odcinku
umożliwia wprowadzenie w życie ideii Plug&Play w stosunku do monitora, który może
wreszcie przekazać swoje preferencje sterownikowi graficznemu.

Twórcom systemu przyświecał na szczęście cel nadrzędny jakim było maksymalne


uproszczenie całego przedsięwzięcia, między innymi poprzez wykorzystanie istnie­
jącego okablowania. Typowy przewód łączący analogowy monitor ze sterownikiem
VGA nie jest bowiem w pełni wykorzystany . Kanał DDC posługuje się liniami 12 i 15
standardowego złącza (rysunek 8.20).

32 Uwaga na tanie przedłużacze i przełączniki (Switch-Boxy) z niepełną obsadą kontaktów


528 Anatomia PC

Rysunek 8.20. 1■R 6 » Masa


Rozm ieszczen ie ™■_ © 2 = G 7 = Masa
sygnałów © 3 = B 8 = Masa
®
o złączu © © 5 = Masa
komun ikacyjnym © 9 = +5V (opcjonalnie)
® (W)
monitor - karta © 13 = Hsync 14 = Vsync
graficzna © © 10 = Masa dla H/Vsync
©
© © 12 = ID-Bit_2
15 = ID-Bit 1

W zależności od znaczenia linii wyróżniamy trzy odmiany systemu:

• DDC1 - jest typowym kanałem jednokierunkowym, w którym to jedynie monitor


przekazuje informacje do karty sterownika. Transmisja ma charakter synchro­
niczny odbywa się linią 12. Sygnał zegarowy pobierany jest z końcówki 14 (syn­
chronizacja pozioma).
W każdym takcie zegara monitor wysyła 128 bitowy blok informacyjny EDID
(Extended Display Identification). Blok taki zawiera oprócz funkcji identyfika­
cyjnych (typ urządzenia, producent, wymiar przekątnej ekranu itp) istotne dane
techniczne takie jak maksymalnie dozwolone częstotliwości odchylania, zalecane
parametry czasowe i amplitudowe przebiegów synchronizujących oraz poziomy
sygnałów video. Monitor może też przekazać współczynnik nieliniowości swo­
jego toru video (funkcja Gamma) oraz uznane przez siebie tryby DPMS. Znajo­
mość funkcji Gamma monitora upraszcza czasochłonny proces kalibracji barw.

• DDC2B - jest w przeciwieństwie do szeregowego przekazu złączem DDC1


magistralą pracującą w oparciu o protokół I C. Kanał tego typu umożliwia obu­
stronną wymianę informacji. Potrzebny jest jednak drugi przewód łączący. Linia
12 przejmuje funkcję sygnału SGL a impulsy SDA przesyłane są końcówką 15.
DDC2B ma okrojoną listę dostępnych operacji. Sterownik może zarządać od
monitora przesłania bloku EDID lub obszernego zestawu danych skupiony w
bloku VDIF (Vesa Display Interface File)

• DDC2AB - jest rozszerzeniem DDC2B o funkcje znane z systemu Acces.Bus.


Możliwe jest więc przekazywanie rozkazów sterujących do monitora, na przy­
kład w celu skorygowania położenia obrazu lub regulacji jaskrawości.

Obecnie na rynku dostępne są urządzenia zgodne ze standardem DDC1 i DDC2B. Nie


brak jest jednak innych rozwiązań, choćby z zastosowaniem złącza szeregowego RS-
232, magistrali Acces.Bus, a ostatnio nawet ponownie odkrytego USB.
System odmierzania czasu 529

Możliwość precyzyjnego odmierzania odcinków czasowych ma istotne znaczenie w pra­


cy systemu. Oto przykładowe operacje wymagające dokładnego określenia czasu:
• czas wykonywania pewnych fragmentów programu musi być niezależny od obec­
nego w danym systemie procesora i szybkości jego taktowania. Wiele programów,
w tym gry, wymaga wbudowanych opóźnień lub kontroli upływu czasu rzeczy­
wistego. Czas wykonania klasycznej pętli programowej fo r w bardzo dużym
stopniu zależy od sprzętu;

• w oparciu o zegar czasu rzeczywistego system operacyjny prowadzi ewidencję


plików dyskowych i katalogów, posługując się między innymi datą i czasem ich
założenia lub modyfikacji. Jest to jedyny sposób ustalenia, który z plików zawiera
aktualne dane;
• wiele funkcji systemowych, np. odświeżanie pamięci dynamicznej, wymaga okre­
sowego wykonywania z dokładnie określoną częstotliwością;
• mechanizmy napędowe stacji dysków elastycznych wymagają podawania bardzo
precyzyjnych impulsów.

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

Rysunek 9.1. BUFOR rt A fi

Schemat blokowy DANYCH o M ł


D0- i UKŁADY ° WH
układu STERO­ .... .....HU
czasowego WANIA ° CS

8253/8254

Magistrala wewnętrzna układu


f 3

OUTO OUT1 OUT2


CLKO C LK1* CLK2o-
GATEOo GATE1& GATE2 o

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.

Centralnym elementem każdego z generatorów jest programowany licznik CE ( Coun-


ting Element), którego ustawiona wstępnie w fazie programowania zawartość może być
- zależnie od trybu pracy - na różne sposoby zmniejszana. 16-bitowa liczba przezna­
czona do zapisania w rejestrze CE danego generatora dostarczana jest (w porcjach po 8
bitów) magistralą wewnętrzną układu do dwóch stowarzyszonych z danym rejestrem
CE rejestrów pośrednich CWH i CWL. Tam oczekuje na przepisanie do CE pierwszym
impulsem na wejściu CLK, który nadejdzie po zaprogramowaniu danego generatora.
W podobny sposób, tj. poprzez jednobajtowe rejestry pośrednie CRh i CRL, odbywa się
transport zawartości rejestru CE w rozkazach sprawdzających jego stan.

Oryginalny generator 8253 umieszczony jest w obudowie 24-końcówkowej, obecnie


jednak jego struktura zintegrowana jest zwykle w jednym z układów scalonych wyso­
kiej skali integracji tworzących „obudowę” procesora. Wyprowadzenia układu w wersji
DIL 24 przedstawione są na rysunku 9.2.

Opis znaczenia końcówek układu 8253 podano poniżej.


GATE0-GATE2 ( Gate) - wejścia sygnałów aktywujących (bramkujących)
generatory 0-2;
CLK0-CLK2 ( Clock) - wejścia sygnałów taktujących dla generatorów 0-2;
OUTO-OUT2 ( Output) - wyjścia generatorów 0-2;
D 0-D 7 8-bitowa, dwukierunkowa magistrala danych. Kierunek transmisji
ustalany jest sygnałami ~WR i ~RD;
System odmierzania czasu 531

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

CS (Chip Select) - niski poziom logiczny na tym wejściu wprowadza


układ 8253 w stan programowania. Poziom logiczny na wejściu
-C S nie ma wpływu na pracę generatorów;
WR (Write) - procesor wymusza niski poziom logiczny na tym
wejściu, chcąc zapisywać dane do wewnętrznych rejestrów
generatorów;
RD (Read) - procesor wymusza niski poziom logiczny na tym wejściu,
chcąc odczytywać dane z wewnętrznych rejestrów generatorów;
A0-A1 wejścia adresujące w trybie programowania jeden z generatorów
0-2 lub rejestr stanu układu. Możliwe są następujące kombinacje
linii adresowych:

AG Al A dresowany rej es tr
0 0 licznik CEO
1 0 licznik CE1
0 1 licznik CE2
1 1 rejestr stanu

Vcc wejście napięcia zasilającego (+5V);


GND masa zasilania.

Każdy z trzech generatorów układu 8253 może być niezależnie zaprogramowany do


pracy w jednym z sześciu trybów. Tylko dwa z nich znajdują zastosowanie w PC, ale
nie zapominajmy, że układ ten nie tylko tam jest stosowany. Cechą wspólną wszystkich
trybów jest odliczanie „w dół” od ustawionej wartości początkowej 16-bitowego licz­
nika CE. Generator rozpoczyna pracę w danym trybie natychmiast po załadowaniu re­
jestru sterującego. Moment ten będziemy nazywać stanem początkowym .
532 Anatomia PC i

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

„Zewnętrznie” działanie układu 8253 w trybie 3. sprowadza się do generacji przebiegu


prostokątnego o okresie A*TClk- Układy wewnętrzne pracują jednak nieco inaczej, nie
odliczają bowiem impulsów taktujących do osiągnięcia przez licznik wartości NI2. Za­
miast tego odbywa się dwukrotnie zliczanie impulsów po dwa, co nakłada ograniczenie
na dokładność określenia długości generowanych impulsów. Kwantem odmierzanego
czasu jest okres przebiegu taktującego TClk i nie można przy nieparzystych N żądać
jego podziału na pół. Przy N parzystych generowany jest przebieg prostokątny o współ­
czynniku wypełnienia (stosunku czasu trwania stanu wysokiego do czasu trwania stanu
niskiego w ramach jednego okresu) równym 1/2. W przypadku nieparzystej wartości N
układy sterowania ładują liczniki CE wartością N - l . Powoduje to, że faza wysokiego
poziomu logicznego trwa (7V+1)*TClk/2, natomiast faza poziomu niskiego (/V-1)*TClk/2.
Generowany jest więc przebieg prostokątny o współczynniku wypełnienia nieznacznie
większym od 1/2. Z oczywistych względów N musi być co najmniej równe 2.

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.

Wszystkie generatory układu scalonego 8253/8254 zainstalowanego w komputerze


PC/XT lub AT taktowane są tą samą częstotliwością zegarową, równą 1.19318 MHz.
Sygnał CLK wytwarzany jest w oddzielnym układzie generacyjnym w sposób niezależ­
ny od procesora. Przyporządkowanie generatorów układu obrazuje rysunek 9.3.

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

Poszczególne generatory układu dostępne są programowo poprzez poniższe porty.

Adres Rejestr
040h (048h) licznik generatora 0
041h (049h) licznik generatora 1
042h (04Ah) licznik generatora 2
043h (04Bh) rejestr sterujący

Rejestry liczników CE można zapisywać i odczytywać. Rejestr sterujący (wspólny dla


całego układu scalonego) może być tylko zapisywany. Numery portów podane w na­
wiasach dotyczą drugiego układu 8254, instalowanego w niektórych komputerach AT-
386 i 486; konfiguracja dodatkowego układu opisana jest w punkcie Drugi układ 8254
i jego zastosowanie.

Układ 8253 zostaje wprowadzony w tryb programowania po przesłaniu do rejestru


sterującego (port 043h) rozkazu o następującej budowie:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-6 wybór generatora:


00 = generator 0,
01 = generator 1,
10 = generator 2,
11 = dla układu 8253 kombinacja zabroniona, dla 8254 rozkaz
Read-Back\
bity 5-4 rodzaj operacji:
00 = przepisanie zawartości licznika CE do rejestrów CRh i CRl,
01 = zapis lub odczyt tylko mniej znaczącego bajtu licznika
CE (LSB),
10 = zapis lub odczyt tylko bardziej znaczącego bajtu licznika
CE (MSB),
11 = zapis lub odczyt obydwu bajtów licznika CE;
bity 3-1 tryb pracy generatora:
000 = tryb 0,
001 = tryb 1,
010 = tryb 2,
011 = tryb 3,
100 = tryb 4,
101 = tryb 5;
bit 0 sposób odliczania:
0 = zliczanie w kodzie binarnym (16-bitowym); FFFFh-OOOOh
lub 65535d-0 ,
1 = zliczanie w kodzie BCD; 9999d-0 .
System odmierzania czasu 535

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.

W ramach obowiązywania jednego rozkazu można odczytywać tylko tę część licznika,


która została tym rozkazem zapisana; w szczególności może to być zawartość całego
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.

Możliwościami uzyskania tych danych dysponuje natomiast, dzięki wbudowanemu


rozkazowi Read-Back , układ 8254. W odpowiedzi na ten rozkaz układ zwraca bajt bę­
dący źródłem informacji o sposobie zaprogramowania generatora. Rozkaz ten udostęp­
nia również alternatywną metodę odczytania aktualnego stanu licznika CE.

Rozkaz Read-Back przekazywany jest przez port rejestru sterującego 043h.

1 1 bit 5 bit 4 bit 3 bit 2 bit 1 0


536 Anatomia PC

bity 7-6 11= sygnatura rozkazu;


bit 5 0 = rozkaz podania stanu licznika CE;
bit 4 0 = rozkaz podania statusu;
bit 3 1 = wybór licznika 2;
bit 2 1 = wybór licznika 1;
bit 1 1 = wybór licznika 0;
bitO zawsze 0.

Widzimy, że jednym rozkazem Read-Back można odwołać się do kilku generatorów


jednocześnie.

Układ 8254 reaguje na rozkaz podania stanu licznika CE zwracając (w zależności od


sposobu zaprogramowania) jeden lub dwa bajty w porcie odpowiadającym danemu ge­
neratorowi.

Rozkaz określenia statusu (ustawiony bit 4 bajtu rozkazu Read-Back) wyprowadza do


portu wybranego generatora następujący bajt statusowy:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 stan wyjścia OUT:


1 = wyjście w stanie wysokim,
0 = wyjście w stanie niskim;
bit 6 0 - licznik CE został załadowany i może być odczytany,
1 = CE jeszcze nie jest załadowany;
bity 5^1 tryb programowania licznika CE:
00 = kombinacja zabroniona,
01 = zapis lub odczyt tylko mniej znaczącego bajtu CE,
10 = zapis lub odczyt tylko bardziej znaczącego bajtu CE,
11 = zapis lub odczyt obydwu bajtów CE;
bity 3-1 tryb pracy generatora:
000 = tryb 0,
001 = tryb 1,
010 = tryb 2,
01 1 = tryb 3,
100 = tryb 4,
101 = tryb 5;
bit 0 sposób odliczania:
0 = zliczanie w kodzie binarnym (16-bitowym); FFFFh-OOOOh
lub 65535d-0 ,
1 = zliczanie w kodzie BCD; 9999d-0 .
System odmierzania czasu 537

Zegar systemowy
Rysunek 9.4. przedstawia schematycznie zasadę funkcjonowania zegara systemowego

CLK 1.19318 MHz


Rysunek 9A TX LTLT
Zasada działania O
zegara RAM
systemowego
8253/54
CLK1 OUTO
L ic z n ik IRO --------------------- ► INTR
GATEO 0 1 40:70h
V CC 2o- 40:6Fh
CLK1 40:6Eh
L ic z n ik 3
GATE1 1 OUT 1 4 o- 8259 CPU 1 /
40:6Dh
5o- 40;6Ch
C LK 2
L ic z n ik 6o-
G ATE2 2 O UT2 7

Generator O zaprogramowany jest do pracy w trybie 2. i pobiera przebieg taktujący CLK


o częstotliwości 1.19318 MHz. Licznik CE tego generatora ustawiany jest na wartość
FFFFh, co daje współczynnik podziału 65536. W wyniku tego, krótkimi impulsami
o częstotliwości 18.2065 Hz wyzwalane jest przerwanie sprzętowe na linii IRQO. Pro­
wadzi to do periodycznego wywoływania procedury INT 08h, obsługującej to przerwa­
nie. Procedura ta inkrementuje każdorazowo stan 32-bitowego licznika
zlokalizowanego w obszarze danych BIOS począwszy od adresu 0040:006Ch.

Adres Szerokość Znaczenie


0040h:006Ch słowo mniej znaczące słowo licznika
0040h:006Eh słowo bardziej znaczące słowo licznika
0040h:0070h bajt wskaźnik przepełnienia licznika

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.

W przypadku modelu XT podtrzymywany bateryjnie zegar czasu rzeczywistego znaj­


duje się na ogół na wielofunkcyjnej karcie rozszerzenia Multi I/O , zaś aktualizacją czasu
i daty zajmuje się dostarczany wraz z kartą dedykowany program (na przykład
CLOCK.COM), uruchamiany zwykle w pliku poleceń AUTOEXEC.BAT.
538 Anatomia PC

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.

Poszczególne komórki pamięci zorganizowane są w wiersze i kolumny. Organizacja


taka sprawia, że odczyt dowolnej z komórek powoduje jednoczesne aktywowanie
(odświeżenie) całego wiersza lub kolumny, zależnie od organizacji bloku DRAM.
Schemat blokowy mechanizmu odświeżania pamięci przedstawiony jest na rysunku 9.5.

Rysunek 9.5. CLK 1,19318 MHz


Schemat -TLTLTL
o magistrala
blokowy
działania
8253 systemowa
mechanizmu
CLKO
o---► --oOUTO
odświeżania oGATEQ 0
pamięci
CLK1 0UT1
w GATE1 1
Vcc°---►
CLK2
0---► --o0UT2
GATE
o---►2 2

Projektanci komputera PC zarezerwowali dla potrzeb układu odświeżania pamięci


dynamicznej generator numer 1. Licznik CE tego generatora otrzymuje wartość
początkową 18 (12h) - programowany jest tylko mniej znaczący bajt. Generator pracuje
w trybie 3., a na wejście CLK podawany jest sygnał taktujący o częstotliwości 1.19318
MHz. Generowany jest więc przebieg prostokątny o współczynniku wypełnienia 1/2
(N=18 jest parzyste) i częstotliwości 1.19318 MHz/18 = 66.288 kHz. Sygnał ten
kierowany jest do kanału 0 układu DMA, a jego narastające zbocze wywołuje
regularnie co 15 ms żądanie obsługi. Kanał 0 DMA jest zaprogramowany do normalnej
transmisji typu pamięć-urządzenie wejścia-wyjścia.

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

Współczynnik podziału równy 18 dostosowany był do układów pamięci znajdujących


się na rynku w czasach powstawania modelu PC. W ostatnich latach nastąpił ogromny
postęp w technologii produkcji układów scalonych. Nowoczesne układy pamięci nie
wymagają już tak częstego odświeżania. Zbyt częste, zbędne dostępy do pamięci powo­
dują naturalnie spowolnienie pracy całego systemu. Dla każdego modelu komputera
można indywidualnie poeksperymentować, zmniejszając częstotliwość pracy układu od­
świeżania. Zbyt duże przerwy czasowe objawiają się błędami pamięci, które sygna­
lizowane są przez układy kontroli parzystości. Generowane jest wówczas przerwanie
NMI, co powoduje wyświetlenie komunikatu i zatrzymanie systemu. Wprowadzane
przez nas zmiany w częstotliwości pracy układu odświeżania nie mają oczywiście
charakteru trwałego; ponowne załadowanie systemu przywraca wartości początkowe.

Przykładowy program w języku Turbo C pozwoli na kilka doświadczeń na tym polu:


#include <stdlib.h>
#include <dos.h>

/* program REFR reguluje częstotliwość odświeżania pamięci */

int main (int argc , char *argv[])


{
int refr ;
if(argc < 2) /* nie podano częstotliwości odświeżania! */
{
printf("\n Brak parametru!\n Wywołanie: refr <licznik>\n ");
return (1);
}
refr = atoi(argv[1j);
if(refr < 2 || refr > 255) /* podano złą częstotliwość */
i
printf("\n Zły parametr! licznik = 0...255\n");
return(2);
}
outp(0x43,0x56); /* wyślij słowo sterujące 01010110 */
outp (0x41, refr) /* zaprogramuj kanał 1 generatora*/
/* wartością refr */
printf("Nowy licznik = %d\n",refr);
return (0);
}

Wartość parametru programu REFR jest współczynnikiem podziału N licznika CE. Im


większe N , tym większe będą przerwy pomiędzy kolejnymi cyklami odświeżania pa­
mięci.

W testowanym przez autora komputerze AT-386 taktowanym zegarem 40 MHz, pro­


gram SI.EXE (System Info) z pakietu Norton Utilities 6.0 podał w punkcie CPU Speed
współczynnik 29 dla N -2 i 41 dla N=255, można więc istotnie zaobserwować wzrost
mocy obliczeniowej. Jeżeli N będzie zbyt duże, należy liczyć się z możliwością zawie­
szenia się systemu w najmniej oczekiwanym momencie wraz ze wszystkimi tego kon­
sekwencjami (np. niezapisaniem plików dyskowych). Zachowanie się systemu z pod­
niesionym współczynnikiem N należy gruntownie przetestować. Od jakości użytych
modułów pamięci RAM zależy, jak wysokie N zniesie nasz komputer zanim wystąpi
błąd parzystości. Należy wreszcie pamiętać, że nie wszystkie nowoczesne płyty główne
„poddają się” operacji zmiany częstotliwości odświeżania pamięci, dlatego też może się
zdarzyć, że wykonanie programu REFR nie przyniesie żadnych efektów.
540 Anatomia PC

Schemat blokowy zespołu współpracującego z głośnikiem przedstawiony jest na rysun­


ku 9.6.

Rysunek 9,6, 8 2 5 5 port B


Schemat blokowy (061h)
zespołu
współpracującego
z głośnikiem
8253/54
CLK0
L ic z n ik
GATEO 0 OUTO
CLK1
L ic z n ik
GATE1 1 OUT1
CLK2
►o- L ic z n ik
u u -u -C L K GATE2 2 OUT2
1.19318 MHZ
■►o

Do obsługi wbudowanego w komputer PC głośnika przeznaczony został generator 2.


Dla wytwarzania przebiegu okresowego do sterowania głośnika przydatny jest tylko
tryb 3., jako jedyny pozwalający na generację przebiegu okresowego o współczynniku
wypełnienia zbliżonym do 1/2. Również tryb 2. wytwarza przebieg okresowy, ale
0 współczynniku wypełnienia bliskim jedności (szerokość impulsu wynosi 0.838 ms).
Bezpośrednie sterowanie głośnika takim przebiegiem wytwarzałoby ton praktycznie
niesłyszalny, ze względu na bezwładność membrany i dużą zawartość harmonicznych

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

Jak wynika ze schematu blokowego przedstawionego na rysunku 9.6, aby pobudzić do


drgań membranę głośnika, należy spełnić następujące warunki:

• generator 2 musi zostać zaprogramowany do pracy w trybie 3.;

• podzielnik N należy ustawić zgodnie z żądaną częstotliwością, uwzględniając


możliwości akustyczne głośnika;
• należy ustawić bit 0 portu B układu 8255 (port 0 6 lh), podając stan 1 na wejście
GATE2 i uruchamiając generator;

• ustawieniem bitu 1 portu 06lh należy włączyć klucz.


Przykład:
Niech żądana częstotliwość drgań równa się 1000 Hz. Współczynnik podziału wyniesie
1193180 Hz : 1000 Hz = 1193 = 4*256 + 169
MSB = 4 (00000100b) (bardziej znaczący bajt)
LSB = 169 (10101001 b) (mniej znaczący bajt)
mov al,10110110b ; generator 2, ustawienie obu bajtów
/licznika, tryb "3",licznik binarny
out 43h,al ; wyślij rozkaz do rejestru
; sterującego 8253/8254
mov al,169 ; LSB
out 42h,al ; ustaw mniej znaczącą część CE
mov al, 4 ; MSB
out 42h,al ; ustaw bardziej znaczącą część CE
in al,61h ; wczytaj zawartość portu B 8255
or al,OOOOOOllb ; ustaw bity 0 i 1, reszta bez zmian
out 61h,al ; odeślij zawartość z powrotem do portu

Powyższa sekwencja powoduje włączenie głośnika. Przebieg akustyczny o częstotli­


wości 1 kHz będzie od tej chwili aż do jego wyłączenia, bez udziału procesora. Wyłą­
czenie głośnika można osiągnąć podając na wejście GATE2 zero logiczne lub otwie­
rając klucz łączący wzmacniacz i generator:
in al,61h
and al,llllllOlb ; GATE2 = 0
out 61h,al

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

Opisana w tym rozdziale metoda umożliwia sterowanie głośnikiem w sposób całko­


wicie niezależny od procesora. Ten ostatni musi ingerować wyłącznie (nie licząc jedno­
razowego zaprogramowania rejestru sterującego 043h) w momentach zmiany często­
tliwości tonu, włączenia i wyłączenia głośnika.

Należy też wspomnieć tutaj o alternatywnej metodzie wytwarzania dźwięku. Korzysta


się w niej z faktu, że wyjście OUT2 niezaprogramowanego generatora 2 znajduje się
niewątpliwie w jednym ze stanów logicznych 0 lub 1. Wywołując okresowe zamykanie
i otwieranie klucza łączącego wyjście generatora ze wzmacniaczem uzyskamy taki sam
efekt, jak w przypadku obecności przebiegu prostokątnego na wyjściu OUT2 i zam­
kniętego na stałe klucza. Metoda ta wymaga jednak dwukrotnej ingerencji procesora
w każdym cyklu generowanych drgań i tym samym nie nadaje się do generacji dźwięku
„w tle”. Niewątpliwą wadą tego rozwiązania jest też oczywista zależność częstotliwości
wytwarzanych tonów od typu procesora i szybkości jego taktowania.

Drugi układ 8254 i jego zastosowanie


Niektóre modele AT, szczególnie przeznaczone do pracy pod kontrolą wielozadanio­
wych systemów operacyjnych, wyposażone są w drugi układ 8254. Wykorzystywany
jest tylko jeden generator tego układu, pełniący rolę swego rodzaju systemowego
zaworu bezpieczeństwa.

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.

Wspomniany generator wyzwala okresowo przerwanie NMI. Procedura obsługi tego


przerwania musi być na tyle inteligentna, by zidentyfikować jego faktyczną przyczynę.
Zgodnie z rysunkiem 9.7, mogą być cztery takie przyczyny: przerwanie NMI może
pochodzić od kart rozszerzających, układów kontroli parzystości RAM, koprocesora
arytmetycznego i właśnie od drugiego generatora 8254. Pierwsze trzy przyczyny
powodują przejście do standardowej obsługi przerwania, tj. wypisania komunikatu na
ekranie monitora i zatrzymania systemu. Ostatnia przywraca reakcję procesora na przer­
wania sprzętowe, a użytkownik odzyskuje kontrolę nad systemem.
System odmierzania czasu 543

Rysunek 9.7.
Źródła
przerwania
niemaskowałneg
oNMl

Koprocesor
arytmetyczny

Drugi układ 8254


1011I2 I3 I4 I5 I6 I7 I
Port OAOh (070h)

OUTO

Pierwszy układ 8254

Głośnik
2 CLK2
o CLK
0
-----------------
RAM CLK1
i_
Zegar 0
-----------------

CLKO
o
544 Anatomia PC
Pamięć CMOS-RAM 545

Oprócz pamięci operacyjnej (RAM) i stałej (ROM), w komputerze PC/AT występuje


trzeci rodzaj pamięci, a mianowicie CMOS-RAM, zwany też NVR (ang. Non- Volatile
R A M - pamięć nieulotna o swobodnym dostępie). Pamięć ta charakteryzuje się stosun­
kowo dużym czasem dostępu (co w tym przypadku nie odgrywa żadnej roli) i bardzo
małym poborem prądu. W przeciwieństwie do pamięci RAM, nie wymaga ona odświe­
żania, a jedynie stałego zasilania napięciem rzędu kilku woltów.

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.

W skład danych o konfiguracji sprzętowej systemu wchodzą między innymi informacje


o liczbie i rodzaju zainstalowanych napędów dysków elastycznych, sterowników moni­
torów, parametry dysków twardych (liczba głowic, ścieżek, sektorów itd.) oraz dane
o wielkości zainstalowanej pamięci i jej konfiguracji. W modelach PC/XT wszystkie te
informacje były kodowane licznymi przełącznikami i zworami konfiguracyjnymi. Po
każdorazowym załadowaniu systemu konieczne było ponadto inicjalizowanie liczników
daty i czasu (poleceniami d a te i tim e DOS-u lub za pomocą specjalnych programów
obsługujących zegar czasu rzeczywistego), w przeciwnym bowiem razie ustawiały się
one zawsze na godzinie 00:00 dnia 1 stycznia 1980 roku.

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

Zegar czasu rzeczywistego modeli AT pracuje w sposób całkowicie niezależny od


innych elementów architektury. Zapamiętane dane o konfiguracji systemu pozostają
w pamięci CMOS dowolnie długo - jeżeli oczywiście pominąć przykry efekt uboczny
w postaci rozładowanego akumulatora lub zmiany w systemie dokonanej przez program
Setup. W instrukcji obsługi towarzyszącej niektórym systemom można było jeszcze do
niedawna znaleźć uwagę o konieczności uruchamiania komputera nie rzadziej niż co
dwa tygodnie.

Zapisane w pamięci konfiguracyjnej dane o zainstalowanych elementach systemu od­


czytywane są każdorazowo podczas startu systemu przez zapisanie w pamięci ROM
procedury diagnostycznej POST (ang. Power On S elf Test) i porównywane ze stanem
faktycznym, tzn. sprawdzane jest istnienie określonych układów. Na podstawie infor­
macji zawartej w pamięci CMOS inicjalizowany jest również zegar systemowy DOS-u.

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.

Organizacja pamięci CMOS


Komórka Adres Zawartość
0 OOh licznik sekund zegara (BCD)
1 Olh wartość sekund alarmu (BCD)
2 02h licznik minut zegara (BCD)
3 03h wartość minut alarmu (BCD)
4 04h licznik godzin zegara (BCD)
5 05h wartość godzin alarmu (BCD)
6 06h dzień tygodnia (BCD)
7 07h dzień miesiąca (BCD)
8 08h miesiąc (BCD)
9 09h dwie ostatnie cyfry roku (BCD)
10 OAh rejestr A
lł OBh rejestr B
12 OCh rejestr C
13 ODh rejestr D
14 OEh rejestr E
15 ODh rejestr F
Pamięć CMOS-RAM 547

Komórka Adres Zawartość


16 10h typy napędów dysków elastycznych
17 llh zarezerwowany
18 12h typy dysków twardych*
19 13h zarezerwowany
20 14h bajt konfiguracji sprzętowej
21 15h rozmiar pamięci podstawowej w kB (LSB)
22 16h rozmiar pamięci podstawowej w kB (MSB)
23 17h rozmiar pamięci dodatkowej (ang. Extended
Memory) zgodnie z danymi z programu
Setuu . w kB flLSBl
24 18h rozmiar pamięci dodatkowej zgodnie z
danymi z programu Setup , w kB (MSB)
25 19h bajt dodatkowych informacji dotyczących
pierwszego dysku twardego**
26 1Ah bajt dodatkowych informacji dotyczących
drugiego dysku twardego**
27-31 1Bh-1 Fh zarezerwowane
32-39 20h-27h blok danych dysku twardego typu 47
40-45 28h-2Dh zarezerwowane
46 2 Eh suma kontrolna (LSB)
47 2Fh suma kontrolna (MSB)
48 3 Oh rozmiar pamięci dodatkowej określony przez
procedury POST, w kB (LSB)
49 31 h rozmiar pamięci dodatkowej określony przez
procedury POST, w kB (LSB)
50 32h stulecie (BCD)
51 33h dane programu Setup
52 34h zarezerwowane
53-60 35h-3Ch blok danych dysku twardego typu 48
61—63 3 Dh-3 Fh zarezerwowane
w przypadku numerów dysków twardych 1-15
w przypadku numerów dysków twardych 15-49

Pierwsze dziesięć bajtów (00h-09h) przeznaczonych jest na dane zegara i kalendarza,


następne sześć (OAh-OFh) to specjalne rejestry stanu, a pozostałe przechowują różne
parametry konfiguracyjne. Niektóre modele komputerów posiadają bardziej rozbudo­
waną (więcej niż standardowe 64 komórki) pamięć CMOS-RAM. O ile znaczenie pier­
wszych 64 bajtów jest ściśle określone, o tyle postać informacji zapisywanych powyżej
adresu 3Fh nie jest znormalizowana. W zależności od producenta, w obszarze tym składo­
wane są różne informacje rozszerzonego programu konfiguracyjnego {Extended Setup),
548 Anatomia PC

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.

Rejestr A (przemieszczenie OAh)

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 1 = pola informacyjne daty/czasu w fazie aktualizacji,


0 = pola daty/czasu dostępne;
bity 6 -4 podstawa czasu. Standardowo zapisana jest tu wartość 010,
odpowiadająca 32768 Hz;
bity 3^0 współczynnik podziału T. Standardowo T= 0 1 10b = 6d, co daje
jednostkę czasu 65536/21 = 1024 Hz.

Komórki 0, 2, 4, 6, 7, 8, 9 i 10 aktualizowane są co sekundę (dokładnie z częstotliwością


1024 Hz). Na czas trwania aktualizacji ustawiany jest bit 7 rejestru A, co ma sygnalizo­
wać, że wartości tych bajtów mogą być nieustabilizowane. W takim momencie odczyt
którejkolwiek z właśnie modyfikowanych komórek mógłby dostarczyć wartości pozba­
wionych sensu. Wszystkie funkcje BIOS-u odmawiają w takiej sytuacji działania i po­
wracają do wywołującego programu z ustawionym znacznikiem CF rejestru stanu
procesora.

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).

Rejestr B (przemieszczenie OBh)

bit 7 bit 6 bit5 bit 4 bit 3 bit 2 bit 1 bitO


Pamięć CMOS-RAM 549

bit 7 cykle aktualizowania:


1 = zablokowane,
0 = aktywne (wartość domyślna);
bit 6 generacja przerwania okresowego:
1 = aktywna,
0 = zablokowana (wartość domyślna);
bit 5 generacja przerwania od alarmu:
1 = aktywna,
0 = zablokowana (wartość domyślna);
bit 4 generacja przerwania od cyklu aktualizowania:
1 = aktywna,
0 = zablokowana (wartość domyślna);
bit 3 generacja sygnału prostokątnego:
1 = aktywna,
0 = zablokowana (wartość domyślna);
bit 2 kodowanie liczb:
1 = BCD (wartość domyślna),
0 = binarne;
bit 1 tryb pracy zegara:
1 = 24-godzinny (wartość domyślna),
0 = 12-godzinny;
bit 0 funkcja czasu letniego:
1 = aktywna,
0 = wyłączona (wartość domyślna).

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.

Ustawienie bitu 4 powoduje wywołanie przerwania każdorazowo po przeprowadzeniu


aktualizacji czasu.

Wspólne wyjście sygnałów przerwań wszystkich trzech rodzajów (okresowe, od alarmu


i od aktualizacji) kierowane jest do wejścia IR8 drugiego kontrolera przerwań 8259A
(Slave). Przerwanie to obsługiwane jest przez procedurę wskazywaną wektorem INT
70h, która w swej końcowej fazie wywołuje przerwanie 4Ah. Standardowa procedura
obsługi przerwania 4Ah składa się z samej instrukcji IRET. Możliwe jest zainstalowanie
własnego programu rezydentnego, podejmującego określoną akcję na przykład w mo­
mencie zrównania się czasu rzeczywistego z nastawą alarmu. Program taki musi za
każdym razem badać bit 5 rejestru B.
550 Anatomia PC

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)

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bit 7 żądanie IRQ od MC 146818?


1 - tak,
0 = nie;
bit 6 źródłem IRQ jest przerwanie okresowe?
1 = tak,
0 - nie;
bit 5 źródłem IRQ jest przerwanie od cyklu aktualizacji?
1 = tak,
0 = nie;
bit 4 źródłem IRQ jest przerwanie od alarmu?
1 - tak,
0 - nie;
bity 3 -0 zarezerwowane.

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)

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 bit wiarygodności danych:


1 = poziom napięcia baterii prawidłowy, dane wiarygodne,
0 = zbyt niski poziom napięcia baterii, dane niewiarygodne;
bity 6 - 0 zarezerw ow ane.
Pamięć CMOS-RAM 551

Układ MC146818 ma wbudowaną funkcję stałej kontroli poziomu napięcia zewnętrznej


baterii, podtrzymującej jego zawartość przy wyłączonym napięciu zasilania. Spadek na­
pięcia poniżej określonej wartości oznacza wysokie prawdopodobieństwo częściowej
utraty danych. Układ ustawia wówczas bit 7 rejestru D, sygnalizując procedurom
POST, że nie należy polegać na zapisanych w nim danych o konfiguracji.

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

bit 7 stan napięcia zasilającego układ MC 146818:


1 = zasilanie ciągłe,
0 = nastąpiła przerwa w zasilaniu;
bit 6 suma kontrolna danych przechowywanych w układzie:
1 = prawidłowa,
0 - nieprawidłowa;
bit 5 rzeczywisty stan konfiguracji:
1 = niezgodny z zawartością pamięci CMOS,
0 - zgodny z zawartością pamięci CMOS;
bit 4 rzeczywisty rozmiar pamięci:
1 - inny niż zadeklarowano w pamięci CMOS,
0 = zgodny z zadeklarowanym w pamięci CMOS;
bit 3 wynik inicjalizacji dysku twardego:
1 = błąd kontrolera lub dysku,
0 = inicjalizacja prawidłowa;
bit 2 czas zegara CMOS:
1 = wiarygodny,
0 = błędny;
bity 1-0 zarezerwowane.

Procedury POST, które każdorazowo po włączeniu napięcia zasilania kontrolują wy­


brane elementy systemu, odkładają w tym rejestrze wyniki przeprowadzonych testów.

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.

POST sprawdza również, czy zadeklarowaneelementy konfiguracji systemu faktycznie


występują i czy wielkość zainstalowanej w systemie pamięci zgodna jest z zadekla­
rowaną. Wyniki tych porównań wprowadzane są do bitów 5 i 4 rejestru E.
552 Anatomia PC

Procedury POST czynią próby zainicjowania każdego z obecnych w systemie kontro­


lerów. Wynik tej próby w odniesieniu do kontrolera dysków twardych umieszczany jest
w bicie 3.

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

bity 7-0 przyczyna restartu systemu:


OOh = „gorący” restart przez naciśnięcie klawiszy Ctrl-Alt-Del,
Olh = restart programowy po wyznaczeniu rozmiaru pamięci,
02h = restart programowy po wykonaniu testu pamięci,
03h = restart po błędzie parzystości pamięci,
04h = restart programowy przez skok do adresu FFFFOh,
05h = restart po zgłoszeniu sygnału EOI do kontrolera przerwań,
wyzerowanie klawiatury i daleki skok pod adres wskazany
wektorem 0040:0067h,
06h = restart po poprawnym wykonaniu testu trybu chronionego,
07h = restart po błędzie testu trybu chronionego,
08h = jak 07h,
09h - restart po przemieszczeniu bloku pamięci dodatkowej
funkcją 87h przerwania 15h,
OAh = daleki skok pod adres wskazany wektorem 0040:0067h
bez sygnału EOI,
OBh = wykonanie instrukcji IR E T z adresem powrotu danym
w wektorze 0040:0067h,
OCh = w y k o n a n ie instrukcji RET F z ad resem p o w ro tu d an ym
w wektorze 0040:0067h.

Rejestr F zawiera informacje o przyczynach przeprowadzenia restartu systemu (CPU


res et). Dane te wykorzystuje BIOS przy ponownym uruchamianiu systemu. Najczęściej
występuje jedna z dwóch sytuacji:
• naciśnięcie przez użytkownika klawiszy Ctrl-Alt-Del (status OOh);
• powrót procesora 80286 z trybu chronionego (protected mode) do rzeczywistego
{real mode). O ile realizacja przejścia do trybu chronionego (funkcja 87h przer­
wania 15h BIOS-u) jest stosunkowo prosta, o tyle powrót z niego jest kłopotliwy
i wymaga wyzerowania procesora (reset) - procesory 80386 i 80486 zapewniają
znacznie usprawnioną obsługę przełączania trybów. Z trybu chronionego korzys­
tają programy operujące na pamięci dodatkowej {extended memory ), na przykład
Pamięć CMOS-RAM 553

lub S M A R T D R V .E X E . Każdorazowy dostęp do bloku pamięci do­


R A M D R IV E .S Y S
datkowej (położonego powyżej granicy 1 MB, a więc niedostępnego w trybie
rzeczywistym) wymaga przejścia CPU w tryb chroniony, z którego powrót od­
bywa się właśnie w ten specyficzny sposób.

Napędy dysków elastycznych


W komórce lOh CMOS-RAM umieszczane są informacje o zainstalowanych napędach
dysków elastycznych.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-4 typ pierwszego napędu dysków elastycznych (zwykle A:):


0000 = brak napędu,
0001 - 5.25” 360 kB,
0010 = 5.25" 1.2 MB,
0011 =3.5", 720 kB,
0100 = 3.5", 1.44 MB,
inne kombinacje są zarezerwowane dla przyszłych formatów;
bity 3 -0 typ drugiego napędu dysków elastycznych (zwykle B:), kodowany
jak powyżej.

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.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-4 typ pierwszego dysku twardego (zwykle C:):


0000 = nie jest zainstalowany,
0001-1110 = kodowane binarnie typy 1-14,
1111= typy 15-255. Numer typu znajduje się w komórce 19h;
bity 4—0 typ drugiego dysku twardego (zwykle D:), kodowany analogicznie
jak poprzednio (numer typu większego od 15 zapisany jest
w komórce lAh).

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.

Różnorodność parametrów fizycznych i logicznych produkowanych dysków znacznie


wykracza poza liczbę 256, zaś dane stale powstających nowych rozwiązań nie mogą być
na czas wprowadzane do każdego BIOS-u. Problem ten rozwiązano dopuszczając moż-
554 Anatomia PC

liwość definiowania parametrów dysku. Do tego celu przeznaczone są na ogół typy 47


i 48 (praktycznie we wszystkich sprzedawanych obecnie komputerach PC dyski twarde
są definiowane jako typ 47). Każdy z nich dysponuje jednakowym 8-bajtowym obsza­
rem w pamięci CMOS-RAM, rozpoczynającym się pod adresem 20h (typ 47) lub 35h
(typ 48). Poszczególne komórki tych bloków mają następujące znaczenia:

Numer komórki Znaczenie


0 liczba cylindrów (LSB)
1 liczba cylindrów (MSB)
2 liczba głowic
3 początek strefy prekompensacji zapisu (LSB)
4 początek strefy prekompensacji zapisu (MSB)
5 numer cylindra parkowania (LSB)
6 numer cylindra parkowania (MSB)
7 liczba sektorów na ścieżkę

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).

W pozostałych, nie objętych standardem komórkach zapisywane są takie informacje, jak


szybkości zegarów taktujących, szerokości magistral, specyficzne funkcje pamięci (sha­
dowing, caching, paging).

Z zarezerwowanych bajtów i bitów różni wytwórcy sprzętu korzystają w różny sposób.


Na ogół nie należy używać tych komórek do własnych celów.

Bajt konfiguracji sprzętowej


W komórce 14h składowane są informacje o liczbie zainstalowanych napędów dysków
elastycznych, o podstawowym sterowniku monitora (ang. primary display) i ewentualnej
obecności koprocesora arytmetycznego.
Pamięć CMOS-RAM 555

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-6 liczba zainstalowanych napędów dysków elastycznych (gdy bit 0 = 1 ):


00 = jeden napęd,
0 1 = dwa napędy;
bity 5-4 sterownik monitora:
00 = sterownik wyposażony we własny BIOS (EGA, VGA itp.),
01 = sterownik CGA pracujący w trybie 40 znaków/wiersz,
10 = sterownik CGA pracujący w trybie 80 znaków/wiersz,
11 = monochromatyczny sterownik monitora (MDA, Hercules);
bity 3-2 zarezerwowane;
bit 1 koprocesor arytmetyczny 80x87:
1 = obecny,
0 = brak;
bit 0 obecność napędu dysków elastycznych:
1 = obecny co najmniej jeden napęd,
0 = brak napędów.

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).

Jeżeli próba dostępu do pamięci CMOS miała miejsce w momencie aktualizacji,


operacja zapisu nie dochodzi do skutku, a wyniki zwracane w rejestrach procesora poz­
bawione są sensu. W takiej sytuacji ustawiany jest wskaźnik CF rejestru stanu procesora
i operację należy powtórzyć.

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

CL minuty (w kodzie BCD);


CH godziny (w kodzie BCD);
DH sekundy (w kodzie BCD);
DL wartość 1 aktywuje funkcję czasu letniego, wartość 0 jądezaktywuje;
DH sekundy (BCD).

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

DL dzień (w kodzie BCD);


DH miesiąc (w kodzie BCD).

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.

Dostęp do pamięci CMOS zorganizowany jest w bardzo naturalny sposób. Do dyspozy­


cji programisty stoi rejestr adresowy, za pomocą którego lokalizuje się żądaną komórkę
oraz dwukierunkowy rejestr danych umożliwiający zapis lub odczyt jej zawartości.
Pamięć CMOS-RAM 559

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

• Zapis nowej wartości do którejkolwiek z komórek lOh^tDh wymaga korekcji


sumy kontrolnej zapisanej w bajtach 4Eh (LSB) i 4Fh (MSB). Suma ta stanowi
16-bitowy wynik zwykłego dodawania zawartości wszystkich bajtów w obszarze
komórek lOh^łDh. Obliczana jest ona przez BIOS przy uruchamianiu systemu
i porównywana z sumą odłożoną w komórkach 4Eh i 4Fh. W przypadku stwier­
dzenia niezgodności proces ładowania systemu nie odbędzie się. BIOS zażąda od
użytkownika przeprowadzenia ponownej sesji z programem Setup , wyświetlając
zwykle komunikat „CMOS checksum mismatch

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

Podstawowym zadaniem łącza równoległego, wynikającym z przyjętej architektury sys­


temu, jest obsługa drukarki. Również klasyczna drukarka posiada łącze typu równo­
ległego (zwane także Centronics). Nie jest to oczywiście jedyna możliwość; drukarka
może też być dołączona do jednego z łącz szeregowych. Coraz częściej pojawiają się
drukarki wyposażone bądź to w oba rodzaje łącz, bądź posiadające możliwość wymiany
modułu obsługującego łącze (interfejsu). Warto też zwrócić uwagę, że niektóre drukarki
wykraczają poza rolę biernego odbiorcy poleceń i danych i dysponują zdolnością dwu­
stronnej komunikacji z obsługującym je komputerem (elementarne możliwości komu­
nikacji dwustronnej przez uaktywnienie linii BUSY ma każda drukarka), wysyłając np.
- w zamian za lakoniczny komunikat o braku papieru - precyzyjną informację o zaist­
niałym podczas pracy błędzie.

Maksymalna liczba łącz równoległych, a tym samym akceptowanych przez BIOS


i DOS drukarek, wynosi cztery. System operacyjny identyfikuje je oznaczeniami LPT1,
LPT2, LPT3 i LPT4. Każde z tych łącz musi być zidentyfikowane przez BIOS w trakcie
ładowania systemu. Informacja o liczbie łącz równoległych w systemie przechowywana
jest w obszarze danych BIOS-u, w bitach 7. i 6. bajtu o adresie 0040:001 lh. Niektóre
starsze odmiany BIOS-u ignorują łącza LPT3 i LPT4.

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.

Niewątpliwą przewagą łącza równoległego nad szeregowym jest szybkość transmisji


danych, większa średnio 9 razy. Do wad należy zaliczyć ograniczoną do 5 m długość
przewodu połączeniowego (specyfikacja łącza szeregowego dopuszcza transmisję danych
na odległość do 200 m).
562 Anatomia PC

Obsługa drukarki z łączem równoległym


Łącze równoległe drukarki może być wykonane jako samodzielna karta rozszerzenia
(zawsze 8-bitowa, nawet w standardzie EISA) lub być zintegrowane z innymi układami
peryferyjnymi. Najczęściej łącze to wchodzi w skład karty grafiki monochromatycznej
(jest wówczas elementem układu wielkiej skali integracji zawierającego cały sterow­
nik), ewentualnie karty Multi I/Oy na której realizowane jest zwykle za pomocą układu
scalonego UM82C11. Może ono być skonfigurowane (za pomocą mikroprzełączników
lub zwór) jako LPT1-3, rzadziej LPT4. Zwykle mamy też możliwość wyboru linii przer­
wań IRQ7 (standardowo) lub IRQ5. Karta taka dekoduje linie adresowe A 0-A 9 oraz
sygnały ~IOR i -IOW magistrali zewnętrznej, rozpoznając w ten sposób odwołania pro­
cesora do jej rejestrów. Sygnały wyjściowe i wejściowe karty skupione są w tzw.
„żeńskim” 25-końcówkowym gnieździe typu DB-25. Rozmieszczenie tych sygnałów
przedstawia rysunek 11.1.

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

Połączenie pomiędzy gniazdem łącza równoległego a drukarką realizowane jest prze­


wodem typu Centronics, który od strony drukarki zakończony jest charakterystycznym
36-końcówkowym wtykiem o tej samej nazwie.

Oznaczenia linii przewodu Centronics zebrane są w tabeli 11.1. Znak - symbolizuje


negację, tzn. stanem aktywnym sygnału jest poziom zera logicznego, odpowiadający
napięciu około 0 V.
Łącze równoległe 563

Tabela 11A.
Oznaczenia linii przewodu Centronics

Końcówka wtyku Końcówka wtyku Kierunek transmisji


Sygnał
DB-25 Centronics-3 6 (wzglądem komputera)
* /
1 1 STR w y jś c ie
2 2 DO wyjście
3 3 Dl w y jś c ie
* f

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

Wymienione sygnały sterujące mają następujące znaczenie:


STR (Strobę) niski poziom logiczny tej linii nakazuje drukarce
odebranie bajtu z linii danych D0-D7;
ACK (Acknowledge) niskim poziomem logicznym na tej linii drukarka
potwierdza odebranie bajtu i gotowość do przyjęcia następnego;
BUSY (Busy) wysoki poziom logiczny tego sygnału może oznaczać jeden
z następujących faktów:
■ drukarka jest w stanie off-line (jest logicznie odłączona
od komputera),
■ wewnętrzny bufor drukarki jest pełny,
■ drukarka odbiera właśnie znak,
* trwa inicjalizacja drukarki,
■ wystąpił błąd w pracy drukarki;
564 Anatomia PC

PAP {Paper) wysoki poziom logiczny na tej linii sygnalizuje


wyczerpanie się zapasu papieru;
ONOF {On-line/Off-line) wysoki poziom logiczny oznacza, że drukarka
jest w stanie on-line , tj. jest logicznie połączona z komputerem;
-ALF {Auto Line Feed) niski poziom logiczny na tej linii poleca drukarce
automatyczne dołączanie znaków wysuwu wiersza (LF) po
odebraniu znaku powrotu karetki (CR);
-ERR {Error) przyczyną niskiego poziomu logicznego na tej linii może
być:
■ brak papieru,
■ przejście drukarki w stan off-line,
■ inny błąd (np. wyłączenie drukarki);
-INI {Initialization) niski poziom logiczny na tej linii uruchamia
w pewnych typach drukarek procedurę inicjalizującą;
-D SL {Device Select) niski poziom logiczny powoduje wybranie
drukarki. Zwykle linia ta jest na stałe połączona z masą, tzn.
drukarka jest stale wybrana.

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

Dostęp do łącza równoległego


poprzez funkcje BIOS
BIOS udostępnia trzy funkcje przerwania 17h obsługujące łącze równoległe. Funkcja
OOh wysyła jeden znak do łącza, funkcja Olh inicjalizuje łącze i drukarkę, natomiast
funkcja 02h określa aktualny stan łącza.

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:

bit 7 bit ó bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 stan linii BUSY;


1 = drukarka zajęta,
0 = drukarka wolna;
bit 6 stan linii -ACK;
1 = nadszedł sygnał potwierdzenia,
0 = łącze oczekuje na sygnał potwierdzenia;
bit 5 stan linii PAP;
1 = w drukarce brak papieru;
568 Anatomia PC

bit 4 stan linii ONOF;


1 - drukarka w stanie on-line,
0 = drukarka w stanie off-line;
bit 3 stan linii ERR;
1 - drukarka zajęta, off-line lub inny błąd, np. drukarka wyłączona;
bity 2-1 zarezerwowane (zwykle równe 1);
bitO przekroczenie limitu czasu (ang. time-out) w oczekiwaniu na
reakcję drukarki.

Maksymalne czasy oczekiwania systemu na reakcję drukarki definiowane są przez


BIOS i przechowywane w jego obszarze danych.

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.

Ogólne zastosowanie łącza równoległego


dostęp do portów
Zastosowanie łącza równoległego jako portu drukarki wykorzystuje w niewielkim stop­
niu jego możliwości. Zapomnijmy na chwilę o drukarce i potraktujmy 25-końcówkowe
gniazdo LPTn jako programowalny port dwukierunkowy.

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 »

Rysunek 11.2. WEJŚCIA WYJŚCIA


Rozmieszczenie
*f f I
wejsc i wyjsc
w gnieździe łącza X1o----- Y1
X14 ►Y10
równoległego X2 o----- H I Y2
'. y

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

Początek obszaru przestrzeni adresowej przeznaczonej na rejestry sterujące poszcze­


gólnych (zaakceptowanych przez BIOS w fazie ładowania systemu) łącz równoległych
(tzw. adres bazowy) definiowany jest w obszarze danych BIOS-u:

Szerokość Znaczenie Standardowy adres bazowy


Adres
(port)
0040:0008h słowo adresu bazowy łącza LPT1 378h (3BCh)
0040:000Ah słowo adresu bazowy łącza LPT2 278h (378h)
0040:000Ch słowo adresu bazowy łącza LPT3 3BCh (278h)
0040:000Eh słowo adresu bazowy łącza LPT4 2BCh (2BCh)

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).

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 poziom sygnału na końcówce 9:


0 - niski,
1 = wysoki;
bit 6 poziom sygnału na końcówce 8:
0 - niski,
1 - wysoki;
bit 5 poziom sygnału na końcówce 7:
0 = niski,
1 = wysoki;
bit 4 poziom sygnału na końcówce 6:
0 = niski,
1 = wysoki;
bit 3 poziom sygnału na końcówce 5:
0 = niski,
1 = wysoki;
bit 2 poziom sygnału na końcówce 4:
0 = niski,
1 = wysoki;
bit 1 poziom sygnału na końcówce 3:
0 = niski,
1 = wysoki;
bit 0 poziom sygnału na końcówce 2:
0 = niski,
1 = wysoki.

Ustawienie dowolnego bitu tego rejestru powoduje pojawienie się napięcia +5 V na


stowarzyszonej z nim końcówce skonfigurowanej jako Y (wyjście). Trochę inaczej wy­
gląda sprawa odczytu stanu końcówki. Rejestr danych jest rejestrem dwukierunkowym,
a dane zapisane do niego (np. rozkazem out rejestr, al) są w nim „zatrzaskiwane”.
Odczyt z tego rejestru (np. rozkazem in a l , rejestr) powoduje w efekcie przeczy­
tanie tych samych danych, które były uprzednio tam zapisane. Mechanizm ten został
wprowadzony w celu umożliwienia wykrywania przekłamań spowodowanych np. zwar­
ciami na magistrali danych portu równoległego. Niektóre karty, zgodne ze standardem
firmy IBM, wyposażone są również w bufor wejściowy (zestaw bramek trój stanowych,
nie rejestr zatrzaskowy!), umożliwiający transmisję danych w kierunku do komputera.
Bajt danych, który pojawi się na liniach X 2-X 9, jest wówczas dostępny w porcie
danych drukarki. Karty niezgodne ze standardem IBM na ogół nie umożliwiają trans­
misji dwukierunkowej. Po starcie komputera w rejestrze danych znajduje się wartość
OOh.
Łącze równoległe 571

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
'

bit 7 (zanegowany!), poziom napięcia na końcówce XI I :


1 = niski,
0 = wysoki;
ł.
K
bit 6 poziom napięcia na końcówce X10:
0 = niski,
1 = wysoki;
bit 5 poziom napięcia na końcówce X12:
0 = niski,
1 = wysoki;
bit 4 poziom napięcia na końcówce X I 3:
0 = niski,
1 - wysoki;
bit 3 poziom napięcia na końcówce X I 5:
0 = niski,
1 = wysoki;
bity 2 -0 bez znaczenia, zwykle równe 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.

X X X bit 4 bit 3 bit 2 bit 1 bitO

bity 7-5 bez znaczenia;


bit 4 generacja sygnałów IRQ:
1 = dozwolona,
0 = zabroniona;
835, bit 3 (zanegowany!), poziom napięcia na końcówce 17
1 - niski,
0 - wysoki;
tiv\ bit 2 poziom napięcia na końcówce 16:
•$
0 = niski,
1 = wysoki;
572 Anatomia PC

bit 1 (zanegowany!), poziom napięcia na końcówce 14:


1 = niski,
0 = wysoki;
bit 0 (zanegowany!), poziom napięcia na końcówce 1:
1 = niski,
0 = wysoki.

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
*

Wymiana informacji między urządzeniami może mieć w ogólności charakter transmisji


formą wymiany
danych. Może ona być synchroniczna lub asynchroniczna.

Transmisja synchroniczna
dodatkowymi
przesyłającymi przebieg synchronizujący. Zaletą tego systemu jest umożliwienie dowol-
dostosowuje
oczywiście

Transmisją,asynch ron iczna


r

Strumień danych musi nieść w sobie informację o częstotliwości synchronizującej.


Naturalnie nadajnik i odbiornik muszą pracować stale z tą samą, uzgodnioną wcześniej
prędkością. Ceną którą płacimy za zredukowaną w tym trybie pracy liczbę linii łączą­
cych korespondentów, jest komplikacja protokołu komunikacyjnego.
&

Asynchroniczna transmisja szeregowa


i ramka danych
wyposażane
formie
otrzymują pewien rodzaj „opakowania” - tzw. ramki (ang.frame), zwanej też SDU (ang.
Li?

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.

Rysunek 12.1. początek koniec


Struktura ramki I 1
danych cisza start pole danych
bit
lparzy-1 bity stopu cisza
1stości1

______________________________________________________________________________________________________________________

11 bit | 7 |ub 8 bitów | 1 bit | 1 lub 2 bity |

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.

Wszystkie te charakterystyczne cechy ramki, tj. czas trwania (odpowiadający prędkości


transmisji), liczba bitów danych, liczba bitów stopu i tryb kontroli parzystości są uzgad­
niane między nadajnikiem i odbiornikiem jako format przekazywanych danych jeszcze
przed nawiązaniem połączenia (ponieważ parametry transmisji nie są wówczas ustalone,
uzgodnienia należy na ogół dokonać „ręcznie”, za pomocą programów konfigurują­
cych). Tylko w ten sposób możliwe jest prawidłowe odczytanie napływających do od­
biornika informacji. Generator odbiornika pracuje więc z założenia z taką samą często­
tliwością, z jaką pracował generator nadawczy, formujący dane do postaci szeregowej.
Pozostaje jedynie synchronizacja fazy, tzn. uruchomienie układu dekodującego odbior­
nika precyzyjnie na początku ramki.

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.

W warunkach rzeczywistych nie występują oczywiście tak wyidealizowane przebiegi


prostokątne jak przedstawione na rysunku 12.1. Przy dużych prędkościach transmisji
zaczynają odgrywać rolę pojemności przewodów łączących. Odległość dzieląca nadaj­
nik i odbiornik może dochodzić do 200 metrów, i to w warunkach przemysłowych.
Wszystko to powoduje zniekształcenia zboczy sygnałów oraz nakładanie się na nie
dodatkowych przebiegów zakłócających.
Łącze szeregowe 575

Przetwarzanie szeregowego strumienia danych napływających do odbiornika musi więc


odbywać się w sposób bardziej skomplikowany, Odbiornik pracuje z częstotliwością
16-krotnie większą, niż wynikałoby to z ustalonej szybkości pracy łącza, a każdy bit
ramki jest badany (próbkowany) 16 razy. Wynik pobrania tych 16 próbek jest uśrednia­
ny, a na podstawie tej operacji zapada decyzja, czy badanemu wycinkowi czasowemu
przyporządkować niski czy wysoki poziom logiczny. Metoda ta podnosi znacznie od­
porność łącza na zakłócenia impulsowe i eliminuje niekorzystny wpływ zniekształ­
conych zboczy.

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.

Oto znaczenie poszczególnych wyprowadzeń UART:

~CTS (Clear To Send) - wejście odpowiadające stanowi linii sterującej


CTS interfejsu RS-232 (opis standardu RS-232 zawarto
w podrozdziale Interfejs RS-232C ), stanem aktywnym jest poziom
niski;
~DSR (Data Set Ready) - wejście odpowiadające stanowi linii sterującej
DSR, stanem aktywnym jest poziom niski;
~RLSD (Received Line Signal Detect) - wejście odpowiadające stanowi
linii sterującej DCD, stanem aktywnym jest poziom niski;
~RI (Ring Indicator) - wejście odpowiadające stanowi linii sterującej
RI, stanem aktywnym jest poziom niski;
576 Anatomia PC

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

~RTS (Request To Send) - wyjście sterujące stanem linii sterującej RTS,


stanem aktywnym jest poziom niski. Wyjście to jest dostępne
bezpośrednio przez bit 1 rejestru wyjściowych sygnałów
sterujących UART (rejestr układu o adresie 04h);
~DTR (Data Terminal Ready) - wyjście sterujące stanem linii sterującej
DTR, stanem aktywnym jest poziom niski. Wyjście to jest
dostępne bezpośrednio przez bit 0 rejestru wyjściowych sygnałów
sterujących UART (rejestr 04h);
~MR (Master Reset) - podanie na to wejście logicznej jedynki powoduje
inicjalizację wszystkich rejestrów wewnętrznych UART, z w y­
jątkiem buforów odbiornika i nadajnika oraz rejestru podzielnika;
-OUT1, wyjścia, które mogą być swobodnie programowane. Wyjście OUT2
-OUT2 steruje w komputerach PC kluczem blokującym przerwania
pochodzące od UART.
INTRPT (Interrupt) - wysokim poziomem napięcia na tym wyjściu UART
sygnalizuje spełnienie warunków wywołania przerwania,
określonych maską rejestru przerwań (rejestr Olh);
A 2 -A 0 linie adresujące wewnętrzne rejestry UART, umożliwiające dostęp
do nich procesorowi. Trzema liniami można zaadresować 8
rejestrów. Ponieważ ich faktyczna liczba jest większa, rolę
czwartej, sztucznej linii adresowej pełni bit 7 rejestru formatu
danych (rejestr 03h);
Łącze szeregowe 577

ADS (Address Strobe) - sygnał ten w stanie aktywnym (niski poziom


logiczny) oznacza, że adres na liniach A 2-A 0 jest ustawiony
i może być dekodowany przez UART;
CSOUT (Chip Select Out) - wyjście to jest aktywowane przez UART,
jeżeli został on wybrany przez CPU liniami CSO, CS1 i -CS2;
DDIS (Driver Disable) - sygnał ten przyjmuje wartość zera logicznego
w trakcie operacji odczytu wewnętrznych rejestrów UART przez
procesor;
DISTR, (Data In Strobe) - wejściowy sygnał sterujący, umożliwiający
-DISTR w stanie aktywnym (DISTR=1 lub ~DISTR=0) odczyt
wewnętrznych rejestrów UART;
DOSTR, (Data Out Strobe) - wejściowy sygnał sterujący, umożliwiający
-DOSTR wstanie aktywnym (DOSTR=l lub ~DOSTR=0) zapis
wewnętrznych rejestrów UART;
SOUT (Serial Output) - wyjście toru nadawczego UART;
SIN (Serial Input) - wejście toru odbiorczego UART;
CSO, (Chip Select) - stan CSO = 1, CS1 = 1 i -C S2 = 0 oznacza
CS1,~CS2 wybranie układu UART przez procesor w celu dokonania zapisu
lub odczytu jednego z jego rejestrów;
RCLK (Receiver Clock) - wejście sygnału synchronizującego tor
odbiorczy, o częstotliwości 16 razy większej od zadanej
prędkością transmisji;
BAUDOUT wyjście sygnału synchronizującego tor nadawczy, o częstotliwości
16 razy większej od zadanej prędkością transmisji. Jeżeli
końcówki -BAUDOUT i RCLK zostaną połączone (co w PC
rzeczywiście ma miejsce), to nadajnik i odbiornik pracują z tą
samą prędkością.;
XTAL 1, końcówki dla przyłączenia zewnętrznego rezonatora kwarcowego;
XTAL2 układ akceptuje też w tym miejscu zewnętrznie wytwarzany sygnał
synchronizujący;
D0-D7 dwukierunkowa, 8-bitowa magistrala danych, służąca
przekazywaniu danych, rozkazów i bajtów statusowych pomiędzy
procesorem i UART;
Vcc wejście napięcia zasilającego (+5V);
GND masa zasilania.

Budowa wewnętrzna układu UART - zważywszy na różnorodność spełnianych przez


niego funkcji - jest dosyć skomplikowana. Układ posiada niezależny tor nadawczy i od­
biorczy. Teoretycznie nadajnik i odbiornik nie muszą pracować z tą samą prędkością.
Pomijając bardzo specjalistyczne zastosowania układu, wejście częstotliwości synchro­
nizującej odbiornik RCLK praktycznie zawsze połączone jest z wyjściem częstotliwości
synchronizującej nadajnik BAUDOUT, tak więc zgodność prędkości ma faktycznie
miejsce.
578 Anatomia
m PC
-

Ź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ć.

Po stronie nadawczej pracuje podobny rejestr przesuwny, pobierający dane równoległe


z rejestru buforowego nadajnika. Dane do tego bufora dostarczane są przez procesor.
Układy logiczne dodają, stosownie do formatu, bity startu, stopu i parzystości, po czym
całość ekspediowana jest zgodnie z ustaloną prędkością transmisji do wyjścia SOUT.
Chwilowy brak danych w buforze nadajnika powoduje, po ostatnim opróżnieniu
rejestru przesuwnego, wstrzymanie dalszego przetwarzania i wyjście SOUT przyjmuje
stan wysoki.

Niezależnie od procedury przetwarzania szeregowo-równoległego obsługiwane są sy­


gnały sterujące interfejsu RS-232C. Poziom tych sygnałów na wyjściu układu scalonego
zmienia się w granicach 0 do +5 V, gdyż takie jest napięcie zasilające. Specyfikacja
łącza RS-232C definiuje poziomy sygnałów na -1 2 V do +12 V. Dostosowanie pozio­
mu sygnałów odbywa się za pośrednictwem specjalnych bramek-wzmacniaczy (układy
MC 1488 i MC 1489), zwanych odpowiednio nadajnikami i odbiornikami linii. Odwra­
cają one fazę sygnału, ale ponieważ wewnętrzne układy logiczne również odwracają
fazę sygnałów sterujących, w efekcie ustawienie bitu rejestru sterującego odpowiada
poziomowi napięcia +12 V na odpowiednim wyjściu sterującym. Wyzerowany bit wy-
i. .

i ..'

Łącze szeregowe 579


K
X •

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 ;

Rozbudowany jest mechanizm wyzwalania przerwań sprzętowych. Układy logiczne


UART kontrolują zmiany poziomów na liniach sterujących RS-232C, stan rejestrów
buforowych nadajnika i odbiornika, stan linii danych i jakość połączenia z korespon­
dentem (uwzględniając błędy transmisji). Zależnie od zaprogramowania maski rejestru
przerwań, zaistnienie określonej sytuacji wywołuje przerwanie sprzętowe, tj. dodatni
impuls na wyjściu INTRPT. Dokładną przyczynę przerwania można odczytać z rejestru
identyfikacji przerwań (rejestr 02h).

W komputerach PC/XT/AT programowalne wyjście OUT2 układu UART pełni rolę


klucza blokującego globalnie (bez konieczności modyfikacji pojedynczych pozycji
rejestru przerwań) przepływ sygnału IRQ od UART do kontrolera przerwań. Stanem
wyjścia OUT2 zarządza bit 3 rejestru wyjściowych sygnałów sterujących.

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\

Połączenie interfejsów RS-232C od strony mechanicznej stanowi 25-żyłowy przewód


zakończony zdefiniowanymi przez standard wtykami. Większość z 25 linii przeznaczo­
na została dla potrzeb szeregowej transmisji synchronicznej. W standardzie IBM PC
wykorzystywane jest tylko 9 z tych sygnałów, dlatego też często zamiast wtyku 25-koń-
cówkowego (DB-25) stosuje się wtyk 9-końcówkowy DB-9. Ta liczba linii w zupeł­
ności wystarcza do obsłużenia transmisji asynchronicznej w standardzie RS-232C.

*
5 t
Poniżej podano zestawienie sygnałów interfejsu RS-232C używanych w komputerach PC.
rt s

!>,

\ f

/•*
a.
580 Anatomia PC

Wtyk DB-25 Wtyk DB-9 Sygnał Kierunek transmisji


1
2 3 TxD DTE -> DCE
3 2 RxD DCE -> DTE
4 7 RTS DTE -> DCE
5 8 CTS DCE -» DTE
6 6 DSR DCE DTE
7 5 masa
8 1 DCD DCE -> DTE
20 4 DTR DTE -> DCE
22 9 RI DCE -> DTE
23 DSRD DCE <-> DTE

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

fali nośnej, co oznacza, że druga strona jest w trakcie


nawiązywania połączenia. Sygnał DCD pozostaje aktywny przez
•s": ••

&
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
» • .

o odebraniu sygnału odpowiadającego wywołaniu abonenta


(dzwonieniu);
'f/'

DSRD (Data Signal Rate Detector) - linia ta występuje tylko w 25


końcówkowej wersji łącza. Umożliwia dostosowanie się
korespondentów do jednej z dwóch możliwych prędkości
transmisji. Z sygnału tego mogą korzystać obie strony połączenia.
•K*
Sr .

fV

Rysunek 12.3. przedstawia zachowanie się sygnałów sterujących interfejsu w trakcie


uruchamiania urządzeń DTE i DCE, nawiązywania połączenia, w czasie jego trwania
oraz rozłączenia.
.r<*

<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

Łącze szeregowe może teoretycznie pracować w jednym z trzech trybów: simplekso­


wym, półdupleksowym i dupleksowym.

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

Rysunek 12.4. PC (DTE) MODEM (DCE)


JMad połączeń
i"-między
25-końcówko wym i
gniazdami łącz
szeregowych
urządzeń D TE
/fi"

i DCE
y
’ ’

i :

X\ - .•.
Si.-

>!.s

Si'

•/i.

ł: '
•i

Rysunek 12.5. PC (DTE) DRUKARKA (DTE)


f Układpołączeń
między
25-końcó wkowym i
gniazdami łącz
szeregowych
urządzeń DTE

i 5*
584 Anatomia PC

Jest to klasyczny przykład simpleksowego trybu pracy, bowiem dane przekazywane są


tylko w jednym kierunku. Jest rzeczą oczywistą, że drukarka szeregowa znacznie różni
się zachowaniem od modemu, niemniej jednak znaczenie pewnych sygnałów sterujących
można zmienić i połączyć linie ze sobą tak, że patrząc na łącze od strony komputera
będziemy widzieć „coś”, co zachowuje się jak DCE.

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.

Użytkownik systemu operacyjnego może modyfikować parametry łącza szeregowego


posługując się poleceniem zewnętrznym mode, które odwołuje się do przerwania 14h
BIOS-u. Bezpośredni dostęp do łącza z poziomu systemu operacyjnego jest bardzo
ograniczony. Przerwanie 21 h DOS-u nie umożliwia nawet zainicjalizowania łącza przez
określenie prędkości transmisji i formatu danych.

Programiści mogą korzystać z następujących czterech funkcji przerwania 21 h DOS:

• 03h - odbiór jednego znaku ze łącza AUX (COM1),

• 04h - wysłanie jednego znaku do łącza AUX (COM1),


• 3Fh —odczyt znaków z pliku lub urządzenia,

• 40h - zapis znaków do pliku lub urządzenia.


Łącze szeregowe 585

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

Param etry wejściowe


AH 3Fh;
BX numer uchwytu;
CX liczba bajtów do odczytania;
DS:DX adres bufora przeznaczonego na pobrane z łącza znaki.
Wartości zwracane:
AX liczba faktycznie odczytanych bajtów lub kod błędu w przypadku
CF = 1;
CF 1 w przypadku wystąpienia błędu.

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

Funkcje DOS-u ograniczają się praktycznie do przesyłania znaków między pamięcią


operacyjną i łączem. Dużo więcej możliwości dają funkcje przerwania 14h BiOS-u.
Mamy tu następujące możliwości:

• OOh - inicjalizacja łącza, tj. określenie formatu danych i prędkości transmisji,

• 01 h - wysyłanie znaków,

• 02h - odbiór znaków,

• 03h - określenie statusu łącza.

Każda z tych funkcji zwraca w rejestrze AH bajt informujący o aktualnym stanie trans­
misji. Postać tego bajtu przedstawiono poniżej.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 1 = nastąpiło przekroczenie czasu oczekiwania (Time Out);


bit 6 1= rejestr przesuwny nadajnika jest pusty;
bit 5 1= rejestr buforowy nadajnika jest pusty;
bit 4 1= połączenie zostało przerwane (Break);
bit 3 1= wystąpił błąd protokołu (Frame Error);
bit 2 1= stwierdzono błąd parzystości (Parity Error);
bit 1 1= nastąpił błąd przepełnienia bufora odbiornika (Overrun Error);
bit 0 1= bufor odbiornika zawiera nie odczytany przez CPU znak.

Przekroczenie czasu {Time Out)


Standardowy czas oczekiwania BIOS-u na reakcję korespondenta przy próbie nawią­
zania połączenia, wysłania lub odbioru znaku łączem szeregowym wynosi 20 sekund.
Po przekroczeniu tego czasu ustawiany jest bit 7 statusu (Time Out). Wartości czasów
oczekiwania dla każdego z łącz przechowywane są w obszarze danych BIOS-u.

A dres Znaczenie
0040:007Ch limit czasu dla łącza COM1 (w sekundach)

0040:007Dh limit czasu dla łącza COM2 (w sekundach)

0040:007Eh limit czasu dla łącza COM3 (w sekundach)

0040:007Fh limit czasu dla łącza COM4 (w sekundach)


588 Anatomia PC

Czas oczekiwania dla dowolnego łącza COM« można ustawić na nieskończenie długi
poleceniem DOS-u mode corrm,,p.

Przerwanie połączenia (Break)


Stan ten sygnalizowany jest w momencie, gdy końcówka wejściowa RxD odbiornika
znajduje się w niskim stanie logicznym przez czas dłuższy od czasu trwania jednej
ramki. Oznacza to przerwanie linii danych, ewentualnie uszkodzenie nadajnika. Linia
danych łącza w stanie spoczynku (nie przekazującego danych) utrzymywana jest przez
nadajnik w wysokim stanie logicznym.

Błąd protokołu (Frame Er roi)


Ma on miejsce, gdy oczekiwany przez odbiornik bit stopu nadejdzie za wcześnie lub zbyt
późno. Oznacza to, że długość ramki jest inna od uzgodnionej, co może wskazywać na
niewłaściwą liczbę bitów stopu, parzystości, danych lub odmienną od deklarowanej
prędkość transmisji.

Błąd parzystości (Parity Erroi)


Może on oznaczać przekłamanie bitu (bitów) w bajcie danych na drodze między odbior­
nikiem a nadajnikiem, ewentualnie niezgodność sposobu kontroli parzystości po obu
stronach łącza.

Błąd przepełnienia (Overrun Erroi)


Błąd ten wystąpi, jeżeli dane napływają do łącza szybciej, niż mogą być pobierane z bu­
fora wejściowego odbiornika przez program obsługi łącza. Skompletowany w buforze
odbiornika bajt zostanie w takiej sytuacji zamazany przez następną porcję danych.

Bajt statusu modemu


Funkcje OOh i 03h przerwania 14h zwracają dodatkowo w rejestrze AL tzw. bajt statusu
modemu , obrazujący stan linii sterujących łącza RS-232C.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 1 = aktywny sygnał DCD {Data Carrier Detect);


bit 6 1 = aktywny sygnał RI {Ring Indicator );
bit 5 1 —aktywny sygnał DTR {Data Terminal Ready);
bit 4 1 - aktywny sygnał CTS {Clear to Send);
bit 3 1 = stwierdzono zmianę sygnału DCD;
bit 2 1 = stwierdzono zmianę sygnału RI;
bit 1 1 = stwierdzono zmianę sygnału DTR;
Łącze szeregowe 589
:fk

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

Format danych przekazywanych w rejestrze AL (bajt parametrów transmisji) ma


następującą budowę:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-5 prędkość transmisji:


000 = 1 1 0 bodów,
001 = 150 bodów,
0 1 0 = 3 0 0 bodów,
6

;

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

bit 2 liczba bitów stopu:


0 = jeden bit stopu,
1 = dwa bity stopu;
bity 1-0 liczba bitów danych:
10 = 7 bitów danych,
1 1 = 8 bitów danych.
Przykład:
inicjalizacja portu COM3 na 2400 bodów,
1 bit stopu, 8 bitów danych,
bez kontroli parzystości 2400-8-N-l
mov ah,OOh numer funkcji
mov al,lOlOOQllb baj t parametrów
mov dx,02h COM3
int 14h inicjalizuj łącze

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.

Adres Wielkość Zawartość Wartość standardowa


0040:0000h słowo adres bazowy łącza COM 1 3F8h
0040:0002h słowo adres bazowy łącza COM2 2F8h
•W

0040:0004h słowo adres bazowy łącza COM3 3E8h


0040:0006h słowo adres bazowy łącza COM4 2E8h
592 Anatomia PC

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.

Standardową linią przerwań sprzętowych stowarzyszoną z łączami COMI i COM3 jest


IRQ4. Łącza COM2 i COM4 dołączane są zwykle do linii IRQ3. Przerwania nie są
jedyną możliwością obsługi łącza szeregowego - drugą z nich jest polling. Szczegóły
znajdzie Czytelnik w dalszej części tego rozdział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.

Rejestr UART Przem ieszez en ie DLAB A2 Al A0


Bufor odbiornika (RBR - Receiver OOh 0 0 0 0
Buffer Register )
Bufor nadajnika ( THR - Transmitter OOh 0 0 0 0
Holding Register)
Rejestr konfiguracji przerwań (IMR - Olh 0 0 0 1
Interrupt Mask Register)
Mniej znacząca (LSB) część OOh 1 0 0 0
podzielnika
Bardziej znacząca (MSB) część Olh 1 0 0 1
podzielnika
Rejestr identyfikacji przerwania (IIR - 02h 0 1 0
Interrupt Identification Register)
Rejestr formatu danych (LCR - Line 03h 0 1 i
Control Register)
Rejestr wyjściowych sygnałów 04 h 1 0 0
sterujących RS-232C ( MCR - Modem
Control Register)
Rejestr stanu transmisji (.LSR - Line 05h 1 0 1
Status Register)
Łącze szeregowe 593

Rejestr UART Przem ieszczen ie DLAB A2 Al A0


Rejestr wejściowych sygnałów 06h 1 1 0
sterujących RS 232C (MSR - Modem
Status Register)
Rejestr dodatkowy (tylko w układzie 07h 1 1 1
16450)

Napływający do łącza szeregowy strumień danych przetwarzany jest na postać równo­


ległą i składany w rejestrze buforowym odbiornika (przemieszczenie 0). Bit danych,
który nadejdzie jako pierwszy, zajmuje w bajcie pozycję najmniej znaczącą. Należy
pamiętać, że formaty ramki o 5, 6 i 7 bitach danych wymagają zamaskowania braku­
jących, bardziej znaczących pozycji bitowych, które są nieokreślone. Rozkaz in odczy­
tuje zawsze pełny bajt.

Odczytanie zawartości rejestru buforowego odbiornika, np.:


mov dx,2f8h ;adres portu COM2
in al,dx ; pobierz znak

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

spowoduje załadowanie rejestru przesuwnego nadajnika i wysłanie linią SOUT bajtu


przetworzonego do postaci szeregowej (zgodnie z obowiązującym aktualnie formatem
danych). Najmniej znaczący bit będzie wysłany jako pierwszy.

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ć.

Rejestr k o n fig u ra c ji p rze rw a ń


Warunki, w których UART będzie generował przerwanie sprzętowe (tj. dodatni impuls
na wyjściu INTRPT) można określić programując rejestr konfiguracji przerwań IMR
(przemieszczenie Olh).

X X X X bit 3 bit 2 bit 1 bitO


594 Anatomia PC

bity 7 -4 bez znaczenia;


bit 3 1 = przerwanie generowane jest w wyniku zmiany stanu jednego
z wejściowych sygnałów sterujących łącza RS-232C (CTS,
DSR, DCD, RI);
bit 2 1 = przerwanie generowane jest w wyniku błędu parzystości,
protokołu, przepełnienia lub zerwania połączenia;
bit 1 1 = przerwanie generowane jest na skutek opróżnienia rejestru
przesuwnego nadajnika (ang. THRE - Transmitter Holding
Register Empty);
bit 0 1 = przerwanie generowane jest, gdy w rejestrze buforowym
odbiornika znajduje się odebrany bajt danych.

Rejestr identyfikacji przerwań


Dokładną przyczynę przerwania można określić analizując rejestr identyfikacji przer­
wań IIR (przemieszczenie 02h), którego budowę pokazano poniżej.

0 0 0 0 0 b it 2 b it 1 bitO

bity 7-3 00000;


bity 2-1 kod identyfikacyjny przerwania;
bit 0 stan przerwania:
0 = przerwanie oczekuje na obsługę,
1 = brak przerwań.

Przyczynę przerwania określa kod identyfikacyjny:

Bit 2 Bit 1 Przyczyna przerwania Priorytet


0 0 zmiana stanu jednego z sygnałów sterujących łącza najniższy (3)
RS-232C (CTS, DSR, RI, DCD)
0 1 bufor nadajnika jest pusty 2
1 0 w buforze odbiornika znajduje się nie odebrany bajt 1
1 1 stwierdzono błąd parzystości, protokołu, przepełnienie najwyższy (0)
bufora odbiornika lub zerwanie łączności

Naturalnie można zidentyfikować tylko te przerwania, które zostały wcześniej dopusz­


czone maską rejestru przerwań IMR (przesunięcie Olh). Jeżeli jednak wyjście INTRPT
układu U ART jest połączone z odpowiednią linią IRQ, a procedura obsługi tego przer­
wania składa się z samej instrukcji i r e t (co oznacza natychmiastowy powrót bez po­
dejmowania żadnych czynności), to mimo istnienia fizycznego połączenia INTR-IRQw
mamy tu do czynienia z pollingiem.

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:

Źródło przerwania Obsługa przerwania


Zmiana stanu jednego z wejść Odczytanie rejestru wejściowych sygnałów
sterujących łącza RS-232C sterujących MSR (przemieszczenie 06h)
Opróżnienie bufora nadajnika Wpisanie bajtu danych do bufora nadajnika łub
odczytanie rejestru identyfikacji przerwań IIR
(przemieszczenie 02h)
W buforze odbiornika znajduje Odczytanie rejestru buforowego odbiornika RBR
się nie odebrany bajt (przemieszczenie 04h)
Błąd transmisji lub przerwanie Odczytanie rejestru stanu transmisji LSR
połączenia (przemieszczenie 05h)

Wykonanie stosownych czynności w stosunku do przerwania o wyższym priorytecie (tj.


niższym numerze!) otwiera drogę ewentualnym zgłoszeniom o priorytecie niższym,
które również muszą być obsłużone, aby układ UART mógł być źródłem kolejnych
przerwań.

Rejestr formatu danych


Pod przemieszczeniem 03h zlokalizowany jest rejestr formatu danych LCR. Określa on
format ramki oraz steruje dostępem do rejestru podzielnika generatora synchronizują­
cego. Jego postać jest następująca:

b it 7 b it 6 b it 5 b it 4 b it 3 b it 2 b it 1 b it 0

bit 7 czwarta linia adresowa (DLAB):


1 = udostępnienie rejestru podzielnika,
0 = udostępnienie buforów nadajnika, odbiornika i rejestru
konfiguracji IRQ;
bit 6 1 = przerwanie połączenia (Break) przez wymuszenie stanu 0
na wyjściu SOUT;
bity 5-3 tryb kontroli parzystości:
000 = brak kontroli,
001 = nieparzysta (sumaryczna liczba jedynek pola danych i bitu
parzystości jest nieparzysta),
0 1 1 = parzysta (sumaryczna liczba jedynek pola danych i bitu
parzystości jest parzysta),
100 = tzw. kontrola typu “mark” (bit parzystości stale równy 1,
niezależnie od danych),
111= tzw. kontrola typu “space” (bit parzystości zawsze równy 0,
niezależnie od danych);
596 Anatomia PC

bit 2 liczba bitów stopu:


1 “ 2 bity stopu,
0 = 1 bit stopu;
bity 1-0 liczba bitów danych:
00 = 5 bitów danych,
0 1 = 6 bitów danych,
10 = 7 bitów danych,
1 1 = 8 bitów danych.

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

Rejestr wyjściowych sygnałów sterujących łącza RS-232C


Na stan linii RTS i DTR łącza mamy wpływ poprzez rejestr wyjściowych sygnałów ste­
rujących RS-232C (MCR - przemieszczenie 04h). Rejestr ten daje też możliwość swo­
bodnej manipulacji stanem końcówek OUT1 i OUT2. Jak wspomniano wcześniej,
wyjście OUT2 służy sprzętowemu blokowaniu wszelkich sygnałów przerwań pocho­
dzących od UART.

Postać rejestru MCR jest następująca.

X X X bit 4 bit 3 bit 2 bit 1 bitO

bity 7-5 bez znaczenia;


bit 4 1 = połączenie wyjścia SOUT układu UART z wejściem SIN;
bit 3 1 = aktywowanie sygnału OUT2;
bit 2 1 = aktywowanie sygnału OUT1;
bit 1 1 = aktywowanie sygnału -RTS;
bit 0 1 = aktywowanie sygnału -DTR.

Układ 8250/16450 posiada wbudowany mechanizm diagnostyczny, uruchamiany przez


ustawienie bitu 4 powyższego rejestru. Sygnały sterujące łącza RS-232C łączone są
wówczas wewnątrz układu w następujący sposób:

• RTS <-» CTS,


• DTR <-» DSR,

• OUT1 RI,
• OUT2 o DCD,

• SOUT = 1 (wysoki stan logiczny),

• SIN odłączone.

Ponadto wyjście rejestru przesuwnego nadajnika, które normalnie dołączone jest do


wyjścia SOUT, kierowane jest na wejście rejestru przesuwnego odbiornika. Ponieważ
wejście SIN nie doprowadza w tym stanie żadnego sygnału zewnętrznego, tryb ten
umożliwia gruntowne przetestowanie układów logicznych UART. Należy pamiętać, że
przeprowadzona w ten sposób diagnostyka dotyczy samego układu UART i nie obej­
muje wzmacniaczy linii, które znacznie częściej narażone są na uszkodzenia z zewnątrz
- technika ta jest określana w języku angielskim mianem internal loopback testing.
W celach diagnostycznych można również połączyć odpowiednie końcówki gniazda
interfejsu szeregowego (external loopback testing ), co pozwala na testowanie wzmac­
niaczy linii.

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

przechodzą jednak przez odwracające fazę wzmacniacze linii (dla dopasowania


poziomów napięcia 5 V na 12 V) i zgodność poziomów logicznych w gnieździe łącza
jest przywrócona.

Rejestr wejściowych sygnałów sterujących łącza RS-232C


Zawartość rejestru wejściowych sygnałów sterujących MSR (przemieszczenie 06h)
odzwierciedla stan wejściowych linii sterujących łącza.

Postać tego rejestru przedstawiono poniżej.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 1 = sygnał DCD jest aktywny (0 = nieaktywny);


bit 6 1 = sygnał RI jest aktywny (0 = nieaktywny);
bit 5 1= sygnał DSR jest aktywny (0 = nieaktywny);
bit 4 1= sygnał CTS jest aktywny, (0 = nieaktywny);
bit 3 1 = stwierdzono zmianę poziomu sygnału DCD;
bit 2 1 - stwierdzono zmianę poziomu sygnału RI;
bit 1 1 - stwierdzono zmianę poziomu sygnału DSR;
bit 0 1 = stwierdzono zmianę poziomu sygnału CTS.

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.

Rejestr stanu transmisji


Stan, w jakim znajdują się w danym momencie część odbiorcza i nadawcza układu
UART można odczytać z rejestru stanu transmisji LSR (przemieszczenie 05h). Jego
postać przedstawiono poniżej.

0 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

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

bit 3 1 = błąd protokołu (Frame Error - niezgodny format danych


łub prędkość transmisji);
bit 2 1 = błąd parzystości (Parity Error);
bit 1 1 = błąd przepełnienia bufora odbiornika (Overrun Error);
bitO 1 = odebrany bajt spoczywa w rejestrze buforowym odbiornika,
0 = bufor odbiornika pusty.

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

Specyfika układu UART 16450


Układ 16450 dysponuje dodatkowym rejestrem zlokalizowanym pod przemieszczeniem
07h. Może on być wykorzystywany jako dodatkowy bufor nadajnika lub odbiornika,
jeżeli z jakichkolwiek względów nie chcemy do tego celu używać pamięci operacyjnej.
Stan tego rejestru nie wpływa w żaden sposób na pracę układu. Jego obecność jest
jednocześnie gwarancją, że układ nie jest typu 8250 i może być programowany do pręd­
kości 115200 bodów.
600 Anatomia PC
_____________________________________________________________ Klawiatura________ 601

W ostatnim okresie nastąpił gwałtowny zalew rynku nowoczesnymi urządzeniami prze­


znaczonymi do wprowadzania danych i ułatwiającymi kontakt użytkownika z kompu­
terem. Mowa tu o różnych wymyślnych modelach myszek, skanerach czy wręcz sys­
temach rozpoznawania mowy. Mimo tego wszystkiego trudno sobie w dalszym ciągu
wyobrazić obsługę komputera bez użycia klawiatury.

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ą.

Klawiatura komputera, a zwłaszcza nowoczesne modele PS/2 (oznaczenie PS/2 odnosi


się do modelu klawiatury 101- lub 102-klawiszowej, wprowadzonego na rynek przez
firmę IBM w modelach IBM PC/RT i PS/2 - klawiatura ta znana jest też pod nazwą
Enhanced A T lub MF-II, a żargonowo nazywana jest „klawiaturą 101”), stanowi układ
dużo bardziej skomplikowany, niż mogłoby się to wydawać na pierwszy rzut oka.

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

Mikrokomputer jednoukładowy (mikrokontroler) 8048 nadzoruje siatkę połączeń X i Y,


w której węzłach umieszczone są poszczególne klawisze. Układ kontroluje odpowiednio
często stan tej siatki, wysyłając impulsy kolejno wszystkimi liniami X i badając, czy nie
pojawiły się one na którejś z linii Y. W ten sposób można w dowolnym momencie
określić, które z klawiszy zostały wciśnięte i ewentualnie zwolnione. Informacja ta prze­
kazywana jest w formie szeregowego strumienia danych przewodem połączeniowym do
komputera. Dane przesyłane są w sposób synchroniczny (dodatkową linią transmitowa­
ny jest przebieg zegarowy), a ramka danych ma stałą budowę i zawiera jeden bit startu,
osiem bitów danych, jeden bit kontroli parzystości (typu nieparzystego) i jeden bit stopu.
Bit startu jest zawsze równy zero, zaś bit stopu - jeden. Przewód połączeniowy klawia­
tura - komputer jest pięciożyłowy i oprócz linii danych, synchronizacji i masy dostarcza
napięcia zasilającego +5 V dla układów sterujących klawiatury oraz posiada nie zawsze
wykorzystywaną linię Reset.

Napływające z klawiatury dane opracowywane są w komputerze PC/XT przez układ


8255, a odebranie kompletnego znaku sygnalizowane jest przerwaniem IRQ1. Znak ten
stoi do dyspozycji w porcie B układu 8255 (rejestr o adresie 60h).

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.

Naciśnięcie dowolnego klawisza powoduje przesłanie do komputera tzw. kodu naciś­


nięcia (ang. make code), który równy jest kodowi naciśniętego klawisza. Kod ten mieści
się w całości w 11-bitowej ramce, za pomocą której transportowany jest do komputera.
Nadejście dowolnego bajtu danych z klawiatury wyzwala przerwanie sprzętowe na linii
IRQ1. Obsługująca to przerwanie procedura (wskazywana przez wektor 09h) przejmuje
odebrany znak. Dalszy sposób postępowania procedury INT 09h zależy od tego, czy
naciśnięto klawisz funkcyjny (np. F2), specjalny (np. Alt, Shift), czy klawisz ze zwy­
kłym znakiem (np. B),

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

Rysunek 13.3. K law iatura P C /X T


Mapa klawiatury
typu X T
59 60 01 02 Ï 03 04 05 06 0 7 08 0 9 10 11 12 13 14 69 70
61 62 15 16 17 18 19 20 21 2 2 2GÏ 24 2E>2<3 2 7 71 7 2 73(74
28
63 64 2 9 30 31 ;32 33 ;34 3 5 :36i 3 7 38I3 9 ¿ 10 41 75 76 77
78
6 5 66 4 2 42i 4 4 4 5 4 6 47 4 8 49 5 0 51 52 53 5 4 5 5 7 9 8 0 81
6 7 68 56 57 58 82 83

F1 F2 Esc 1 2 3 4 5 6 7 8 I 9 0 83 Num SLcroll


ock
- = Lock

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

F9 F10 Alt Spacja CapsLock 0 9

Przykład interpretacji kodów naciśnięcia (klawiatura AT):

Naciśnięte Przekazywane Interpretacja


klawisze kody naciśnięcia
Q 16 znak „q”
Shift-Q 24 16 znak „Q”
Ctrl-[ 29 26 znak „Esc”

Każda klawiatura posiada wbudowaną funkcję tzw. autorepetycji, tj. samoczynnego


powtarzania wysyłania znaku odpowiadającego przytrzymywanemu dłużej klawiszowi,
co zwalnia użytkownika z wielokrotnego naciskania tego samego klawisza. Modele AT
i PS/2 pozwalają na regulację (w pewnych granicach) szybkości tego powtarzania oraz
opóźnienia załączenia funkcji autorepetycji. Model XT ma ustaloną stałą prędkość auto­
repetycji równą 10 znaków/s.

Zwolnienie klawisza również prowadzi do wywołania przerwania IRQ1, ale progra­


mowi obsługi klawiatury przekazywany jest tym razem tzw. kod zwolnienia ( break
code), który równy jest dla danego klawisza jego kodowi z ustawionym bitem 7. Innymi
słowy kod zwolnienia — kod wciśnięcia + 128. Analiza sekwencji kodów wciśnięcia
i zwolnienia pozwala na jednoznaczne określenie, które z klawiszy są w danym momen­
cie wciśnięte.

Przykład:
Sekwencja kodów 42 16 144 170 zostanie zinterpretowana następująco:

• wciśnięto klawisz Shift;


Klawiatura 605

• wciśnięto klawisz Q (klawisz Shift pozostaje wciśnięty);


• zwolniono klawisz Q (144 = 128 + 16);

• zwolniono klawisz Shift (170 - 128 + 42).

Pokazana na rysunku 13.4 klawiatura AT różni się od opisanego modelu XT jedynie


przesunięciem bloku numerycznego i wprowadzeniem dodatkowego klawisza SysReą
0 kodzie naciśnięcia równym 84. Wyodrębniono w niej również elementy sygnalizacyjne
w postaci diod świecących (L1-L3). Określają one stan funkcji Num Lock , Scroll Lock
1 Caps Lock (w niektórych klawiaturach XT diody takie były zabudowane w odpowied­
nich klawiszach).

Rysunek 13A K law iatura AT


Mapa klawiatury
L1 » L2»|L3*
typu AT
59 60 41 02|03 04 05 06 ()7 08 09 10 11 12 13 43 14 01 69 70 84
61 62 15 16 17 18 19 20 21 22 23I 2**25 26¡27) 71 72 73 55
¿o
63 64 29 30 ;31 32; 33 3'* 3 5 : 36 37 c18:39 40 75 76 77 74
65 66 42 |44 4 5 4 6 47|48|49 5051 52 53| 54 79 80 81
78
67 68 56 57 | 58 82 83

............. ................................ "


N u m C a p s S c ro ll
L o c k L o ck Lock
L1 • L2 • IL 3 •

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 *

Sprawy komplikują się jednak w przypadku powszechnie stosowanej obecnie klawia­


tury PS/2, przedstawionej na rysunku 13.5. Klawiatura ta posiada nie tylko zmieniony
układ znanych już klawiszy (klawisze funkcyjne umieszczone są na górze, a nie z boku,
zmieniono położenie klawiszy Alt, Ctrl, Caps Lock), ale również została poszerzona
o nowe (na przykład oddzielny blok klawiszy sterowania kursorem). Dodane zostały
także dwa nowe klawisze funkcyjne F il i FI 2, zdublowano klawisze Alt i Ctrl oraz wy­
dzielono klawisze PrtScr i Pause. Niezależny blok sterowania kursorem podnosi kom­
fort obsługi, likwidując konieczność ciągłego przełączania trybu Num Lock przy pracy
na bloku numerycznym. Część klawiatur PS/2 wyposażono dodatkowo w czwartą diodę
świecącą (L4), oznaczoną zwykle On Line i pełniącą rolę kontrolki zasilania. Warto
wspomnieć, że w przypadku klawiatur PS/2 wśród producentów panuje znaczna dowol­
ność w kwestii rozłożenia klawiszy, abstrahując od różnic w wersjach narodowościo­
wych. Przykładowo, firma BTC wyposaża swoje klawiatury w obsługiwany przez
specjalne programy klawisz o nazwie Macro, zaś firma Northgate oferuje klawiatury
o nazwie OmniKey , dysponujące podwójnym zestawem klawiszy funkcyjnych i progra­
mowalnymi klawiszami Ctrl, Alt i Caps Lock.
606 Anatomia PC

Rysunek 13.5. K law iatura P S /2 (Enhanced A T, MF-II, RT)


Mapa klawiatury L1 L2 L3 L4

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

15 16 M' 18 19 2 0 | 2 1 22|23[24|2fi 26|27| 28 83 79 81 71 72 73


78
58 |30 :n ;32Î 33 34;35.3 6 ;37;38 39 -40 43 75 76 77
42 -44 45 46|47|48 4 9 5 0 51 52 53 54 72 79 80 81
28

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

1 2 3 4 5 6 7 8 9 0 BS Ins Hone PgUp


Num
/
Lock * -
ł*Tab
Q W E Fi I T I Y I U I i [O P [ i "Q> Del End PgDn 8 9
c +
CapsLock A S D F G H J K L \ L U
4 5 6

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.

Przedrostek Elh ma zastosowanie wyłącznie do poprzedzenia kodów naciśnięcia i zwol­


nienia klawisza Pause. Kody wszystkich innych nowych klawiszy uzupełniane są przed­
rostkiem EOh.

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.

Osobnego omówienia wymaga klawisz Pause. Na klawiaturze AT jego funkcję pełnił


zlokalizowany nad blokiem numerycznym klawisz Num Lock (o kodzie 69) w
połączeniu z klawiszem Ctrl. Naciśnięcie kombinacji Ctrl-Num Lock powodowało
wstrzymanie wykonywania programu do czasu wciśnięcia dowolnego innego klawisza
(tę samą funkcję, obsługiwaną jednak przez system operacyjny, pełni także kombinacja
klawiszy Ctrl-S, funkcja ta dostępna jest też w innych systemach, np. CP/M, VMS). Dla
zachowania zgodności klawiatura PS/2 generuje następującą sekwencję kodów:

225 (Elh) 29 (Ctrl - naciśnięcie) 69 (Pause - naciśnięcie) 225 (Elh) 157 (Pause -
zwolnienie) 197 (Ctrl - zwolnienie)

Zadanie przyporządkowania określonych znaków różnorodnym sekwencjom kodów


bierze na siebie procedura obsługi przerwania IRQ1. W celu umożliwienia niestandar­
dowej obsługi klawiatury jest ona najczęściej modyfikowana przez zamianę wektora;
klasycznym tego przykładem jest powszechnie znany sterownik keyb.com. Program ten,
posługując się wewnętrznymi tabelami, jest w stanie dopasować topografię dowolnej
klawiatury (np. polskiej, niemieckiej czy francuskiej) do kodów ASCII generowanych
przez nią znaków. Należy bowiem pamiętać, że dany klawisz generuje zawsze ten sam
zestaw kodów naciśnięcia i zwolnienia, bez względu na to, jakim symbolem jest opisa­
ny, a dopiero program sterownika przetwarza jego kod na odpowiedni znak. Ponieważ
polskie wersje Windows 3.1x i Windows 95 podczas domyślnej instalacji zmieniają
obsługę przerwania IRQ1, zakładając, że do komputera dołączona jest polska klawiatura
w układzie maszynistki (QWERTZ zamiast angielskiej QWERTY), warto przypomnieć
rozkład klawiszy na polskiej klawiaturze w układzie maszynistki (rysunek 13.6).

Rysunek 13.6. Nurr Cap? Scrol


Lock Lock Lock
Mapa polskiej fT |F 21 F3ÏF4] IF 51F61F7[F8l [F9[F10|F11[F12 Print Scrol Paus«
Esc S:r*en Lock
klawiatury n

% 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
-

maszynistki HjTab: Q W E | R [ T | Z Del End PgDn 7 8 9


u h l o l P l i i M * +
F
CapsLock) A |Sd |°0 I "i J K L S îJ î à 4 5 6
> h
Enter

* < 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

przez sterownik klawiatury. Wysłanie do klawiatury rozkazu Reset ustawia wszystkie


przerzutniki w określonym stanie, co pozwala na ich zsynchronizowanie z programo­
wymi odpowiednikami w sterowniku, Położenie przerzutników sygnalizowane jest za­
paleniem diod świecących L1-L3 (rysunek 13.5). Ich zapalanie może się odbywać nie­
zależnie od stanu przerzutników, realizowane jest bowiem oddzielnym rozkazem.

Każde naciśnięcie dowolnego klawisza wywołuje przerwanie sprzętowe na linii IRQ1.


Do obsługi tego przerwania wywoływana jest procedura INT 09h, która w oparciu
o swoje wewnętrzne tabele kodów przyporządkowuje odebranemu kodowi klawisza kod
znaku ASCII. Obydwa kody odkładane są przez BIOS w specjalnym buforze. Każdy
odebrany znak reprezentowany jest więc przez dwa bajty: kod ASCII i kod klawisza.

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ę.

Kolejne nadchodzące znaki umieszczane są sukcesywnie w buforze; za każdym razem


wskaźnik zapisu przesuwa się (o słowo) w stronę wyższych adresów. Jednocześnie
przebiega proces pobierania znaków z komórek, które pokazuje wskaźnik odczytu.
Należy przy tym pamiętać, że umieszczanie znaków w buforze klawiatury inicjowane
jest sprzętowo, natomiast zadanie ich odbierania spoczywa w całości na wykonującym
się w danej chwili programie aplikacyjnym (w szczególności może nim być system
operacyjny). Jeżeli oba procesy (napływu i odbioru znaków) przebiegają z przybliżoną
prędkością, stabilizuje się stan zbliżony do pokazanego na rysunku 13,8.
Klawiatura 609

Rysunek 13.7. BUFOR PUSTY


- ^ — -

Stan wyjściowy — W O LNE


0 0 4 0 :0 0 3 C h ¥
bufora
— W O LNE ¥
klawiatury
— W O LNE 1 4

— 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ż

Rysunek 13.9. BUFOR


ZAW INIĘTY
Częściowo KOD KLAWISZA.
0 0 4 0 :0 0 3 C h KOD ASCII 16
zajęty, zawinięty _|<OD KLAWISZA^
KOD ASCII 15
bufor klawiatury J<OD KLAWISZĄ„
KOD ASCII 14
KOD KLAWISZA^
KOD ASCII 13
KOD KLAWISZA.
KOD ASCII 12
_KOD KLAWISZA.
KOD ASCII 11
W O LNE
10

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

Kolejne napływające z klawiatury znaki umieszczane są pod coraz to wyższymi


adresami, ale tylko do wartości 0040:003 Ch. Następny znak może być zapisany wyłącz­
nie na początku bufora, tj. pod adresem 0040:001 Eh. Podczas gdy wskaźnik odczytu
„oczyszcza” kolejne komórki posuwając się ku szczytowi rejestru, nowo napływające
znaki umieszczane są w buforze począwszy od jego podstawy.

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.

Bufor klawiatury, aczkolwiek posiadający pojemność 32 bajtów (16 zestawów kodów)


pozwala na pomieszczenie maksymalnie 15 znaków. Przyjrzyjmy się rysunkowi 13.10,
który pokazuje bufor w stanie przepełnienia. Przyjęcie w wolne miejsce kolejnej pary
kodów doprowadziłoby do zrównania wskaźników zapisu i odczytu. Stan taki identy­
fikuje jednak przecież bufor pusty (porównaj rysunek 13.7)! Dla uniknięcia dwuznacz­
ności należy więc zadowolić się ograniczoną pojemnością bufora. System rozpoznaje
przepełnienie bufora, jeżeli wskaźnik zapisu odnosi się do znaku bezpośrednio poprze­
dzającego wskaźnik odczytu.
Klawiatura 611

Rysunek 13.10. BUFOR PEŁNY

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

Funkcja odczytania znaku z bufora pierścieniowego nie powoduje oczywiście niczego


prócz przekazania wywołującemu ją programowi pary kodów wskazywanej przez
wskaźnik odczytu i zwiększenia tego ostatniego o jedną pozycję (dwa bajty). Po tej
operacji przekazana para kodów w dalszym ciągu istnieje w buforze, chociaż miejsce
przez nią zajmowane uznane jest za wolne. Programy operujące bezpośrednio na zawar­
tości bufora klawiatury mogą sobie pozwolić na wstawianie w miejsce poprzedzające
wskaźnik odczytu dowolnej pary kodów, co po przesunięciu wskaźnika o jeden wstecz
spowoduje symulację naciśnięcia określonego klawisza. Konieczne jest jednak prze­
strzeganie ograniczeń wartości wskaźników zapisu i 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

bit 7 aktywny jest tryb Insert ;


bit 6 aktywny jest tryb Caps Lock ;
bit 5 aktywny jest tryb Num Lock ;
612 Anatomia PC

bit 4 aktywny jest tryb Scroll Lock;


bit 3 naciśnięto klawisz Alt (lewy lub prawy);
bit 2 naciśnięto klawisz Ctrl (lewy lub prawy);
bit 1 naciśnięto lewy klawisz Shift;
bit 0 naciśnięto prawy klawisz Shift.

Bajt 0040:0018h
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 naciśnięto klawisz Ins;


bit 6 naciśnięto klawisz Caps Lock;
bit 5 naciśnięto klawisz Num Lock;
bit 4 naciśnięto klawisz Scroll Lock;
bit 3 aktywny jest tryb Pause ;
bit 2 naciśnięto klawisz SysReq;
bit 1 naciśnięto lewy klawisz Alt;
bitO naciśnięto lewy klawisz Ctrl.

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

bit 7 trwa odczyt kodu identyfikacyjnego;


bit 6 ostatnim odebranym znakiem był kod identyfikacyjny;
bit5 przy odczycie kodu identyfikacyjnego i kodu rozszerzonego
należy włączyć tryb Num Lock\
bit 4 w systemie obecna jest klawiatura PS/2;
bit 3 naciśnięto prawy klawisz Alt;
bit 2 naciśnięto prawy klawisz Ctrl;
bit 1 ostatnio odebranym znakiem był przedrostek EOh;
bit 0 ostatnio odebranym znakiem był przedrostek Elh.

Bajt 0040:0097h
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
__________________________________________________ Klawiatura_________613

bit 7 błąd danych;


bit 6 trwa aktualizacja stanu diod świecących;
bit 5 wysłano znak potwierdzenia (ang. ACK - acknowledge) do
klawiatury;
bit 4 odebrano znak potwierdzenia ACK z klawiatury;
bit 3 zarezerwowany;
bit 2 stan sygnalizatora LED trybu Caps Lock:
1 = załączony,
0 = wyłączony;
bit 1 stan sygnalizatora LED trybu Num Lock :
1 = załączony,
0 = wyłączony;
bit 0 stan sygnalizatora LED trybu Scroll Lock :
1 = załączony,
0 = wyłączony.

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

Do tego samego wyniku prowadziłoby naciśnięcie „starego” klawisza Return w części


alfanumerycznej klawiatury. Funkcja OOh, jak widać, nie pozwala wyróżnić nowych
klawiszy klawiatury PS/2. Możliwości takie oferuje dopiero funkcja lOh.

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:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 aktywny jest tryb Insert,


bit 6 aktywny jest tryb Caps Lock ,
bit 5 aktywny jest tryb Num Lock ,
bit 4 aktywny jest tryb Scroll Lock ,
bit 3 naciśnięto klawisz Alt (lewy lub prawy),
bit 2 naciśnięto klawisz Ctrl (lewy lub prawy),
bit 1 naciśnięto lewy klawisz Shift,
bitO naciśnięto prawy klawisz Shift.

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

ZF O = w buforze klawiatury znajduje się znak;


I = w buforze brak znaku.

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:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bit 7 naciśnięto klawisz SysReą,


bit 6 naciśnięto klawisz Caps Lock,
bit 5 naciśnięto lewy klawisz Num Lock,
bit 4 naciśnięto prawy klawisz Scroll Lock,
bit 3 naciśnięto prawy klawisz Alt,
bit 2 naciśnięto prawy klawisz Ctrl,
bit 1 naciśnięto lewy klawisz Alt,
bit 0 naciśnięto lewy klawisz Ctrl;
AL bajt informacyjny o następującej strukturze:

bit 7 bit 6 bit5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 aktywny jest tryb Insert,


bit 6 aktywny jest tryb Caps Lock,
bit 5 aktywny jest tryb Num Lock,
bit 4 aktywny jest tryb Scroll Lock,
bit 3 naciśnięto klawisz Alt (lewy lub prawy),
bit 2 naciśnięto klawisz Ctrl (lewy lub prawy),
bit 1 naciśnięto lewy klawisz Shift,
bit 0 naciśnięto prawy klawisz Shift.

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

Bezpośrednie programowanie klawiatury


Klawiatury AT i PS/2 mogą być programowane podobnie jak inne urządzenia peryferyj­
ne, gdyż łącze szeregowe obsługujące klawiaturę może pracować w dwóch kierunkach,
transportując naprzemiennie dane i rozkazy.

Wersje klawiatur XT przystosowane są jedynie do przekazywania kodów klawiszy do


komputera. Wywołanie przerwania na linii IRQ1 sygnalizuje, że przesłany bajt kodu jest
gotów do odebrania w porcie klawiatury pod adresem 60h. Inaczej wygląda sytuacja
w przypadku klawiatur AT i PS/2. Schemat blokowy współpracującego z nimi kontro­
lera przedstawiony jest na rysunku 13.11.

Rysunek 13.11. Kontroler klawiatury


Schemat blokowy
kontrolera
klawiatur A T
i PS/2

Porty wejściowy i wyjściowy stanowią nie tylko połączenie z klawiaturą (a w przypad­


ku systemu PS/2 także z myszką), ale sterują również innymi urządzeniami. Zwróćmy
uwagę, że dostęp do nich możliwy jest tylko pośrednio poprzez adresy 60h i 64h.

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.

Oto struktura rejestru stanu (port 64h):

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bit 7 błąd parzystości ramki (tylko w modelach PS/2):


1 = ostatni kod przesłano z błędem,
0 = ostatni kod przesłano bez błędu;
Klawiatura 619

bit 6 czas oczekiwania na nadesłanie danych:


1 = przekroczony,
0 = OK;
bit 5 stan bufora wyjściowego klawiatury:
1 = bufor zawiera dane od jednostki dodatkowej (tylko w PS/2),
0 = bufor zawiera dane od klawiatury;
bit 4 stan blokady klawiatury:
1 = otwarta,
0 - zamknięta (klawiatura zablokowana);
bit 3 zawartość przesyłanego bajtu:
1 = bajt rozkazowy wysłany przez port 64h,
0 = bajt danych wysłany przez port 60h;
bit 2 wynik autotestu klawiatury:
1 = test bezbłędny,
0 = błąd;
bit 1 stan bufora wejściowego:
1 = dane przesłane przez procesor znajdują się jeszcze w buforze,
0 = bufor jest pusty;
bit 0 stan bufora wyjściowego:
1 = dane przesłane przez kontroler klawiatury znajdują się jeszcze
w buforze,
0 = bufor jest pusty.

Jednostką dodatkową w systemie PS/2 jest najczęściej myszka, która w odróżnieniu od


modeli XT i AT obsługiwana jest przez kontroler klawiatury. Pobranie bajtu danych
z bufora wyjściowego (60h) zeruje automatycznie bit 5 lub 0 rejestru stanu (zależnie od
tego, skąd bajt ten pochodził).

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

Kod rozkazu Znaczenie


A 7h odłącza jednostkę dodatkow ą (tylko PS/2)
A8h uaktywnia jednostkę dodatkową (tylko PS/2)
A9h | kontroluje łącze jednostki dodatkowej (tylko PS/2) i zwraca w buforze
wyjściowym (port 60h) następujące wyniki:
OOh - wynik kontroli pozytywny,
Olh = sygnał zegarowy stale na niskim poziomie logicznym,
02h = sygnał zegarowy stale na wysokim poziomie logicznym,
03h = linia danych stale na niskim poziomie logicznym,
04h = linia danych stale na wysokim poziomie logicznym,
FFh = brak jednostki dodatkowej
AAh | klawiatura przeprowadza obszerny test swoich układów i zwraca
w buforze wyjściowym (port 60h) bajt o wartości 55h w przypadku
pomyślnego zakończenia
ABh kontroler przeprowadza test łącza klawiatury i zwraca w buforze
wyjściowym (port 60h) bajt o znaczeniu takim samym jak dla rozkazu
A9h, z wyjątkiem wartości FFh, odpowiadającej błędnemu działaniu
łącza
ADh | blokuje klawiaturę_____________________________________________
AEh | odblokowuje klawiaturę_________________________________________
COh | umieszcza zawartość portu wejściowego w buforze wyjściowym (port
60h)
C lh | czyta bity 3-0 portu wejściowego i przenosi je na pozycje 7-4 rejestru
stanu (port 64h). Operacja ta powtarzana jest tak długo, aż bit 1 rejestru
stanu zostanie ustawiony_________________________________________
C2h | czyta bity 7-4 portu wejściowego i przenosi je na pozycje 7-4 rejestru
stanu (port 64h), Operacja ta powtarzana jest tak długo, aż bit 1 rejestru
stanu zostanie ustawiony
DOh | umieszcza zawartość portu wyjściowego w buforze wyjściowym (port
60h)___________________________________________________________
D lh | zapisuje następujący po sobie bajt danych do portu wyjściowego_______
D2h | zapisuje następujący po sobie bajt danych do bufora wyjściowego
i zeruje bit 5 (bajt przeznaczony dla klawiatury) rejestru stanu (port 64h)
D3h | zapisuje następujący po sobie bajt danych do bufora wyjściowego
i ustawia bit 5 (bajt przeznaczony dla jednostki dodatkowej) rejestru
stanu (port 64h)

Podane powyżej zestawienie nie obejmuje „egzotycznych” rozkazów kontrolera 8042


(np. grupy rozkazów A4h-A6h, związanych z instalacją hasła). Programowanie układu
8042 jest obszernym i dość złożonym zagadnieniem, wykraczającym poza ramy tego
rozdziału. Nie będzie ono tu szerzej omawiane.
Klawiatura

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

; ...w tym fragmencie programu klawiatura jest zablokowana

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.

Oto lista dostępnych rozkazów:

Rozkaz EDh - sterowanie diodami świecącymi


Klawiatura reaguje na ten rozkaz wysłaniem sygnału potwierdzenia ACK. Proces ana­
lizy matrycy X-Y zostaje wstrzymany i klawiatura przechodzi w stan oczekiwania na
bajt definiujący stan diod LED, podawany również przez bufor wejściowy (60h). Bajt
ten opisany jest poniżej:
! •> ’

0 0 0 0 0 bit 2 bit 1 bitO

bity 7 -3 zaw sze 0;


622 Anatomia PC

bit 2 stan diody „Caps Lock”:


1 = zapalona,
0 = zgaszona;
bit 1 stan diody „Num Lock”:
1 = zapalona,
0 = zgaszona;
bitO stan diody „Scroll Lock”
1 = zapalona,
0 = zgaszona.
Przykład:
mov al,Oedh
out 60h,al ; kod rozkazu zapalenia diod LED
czekaj:
in al,64h ; rejestr stanu
test al,02h ; czy bufor wejściowy wolny?
jnz czekaj
mov al,07h
out 60h,al ; zapal wszystkie diody

Rozkaz EEh - Echo


t

Klawiatura odpowiada na ten rozkaz odesłaniem z powrotem tego samego bajtu EEh.
Daje to możliwość prostego sprawdzenia połączeń klawiatura-kontroler.

Rozkaz FOh - wybór zestawu kodów klawiszy


Klawiatura PS/2 dysponuje trzema zestawami kodów klawiszy, oznaczonych numerami
01, 02 i 03. Standardowo używanym zestawem jest 02. Po odebraniu rozkazu FOh
klawiatura wysyła sygnał ACK i oczekuje na bajt danych. Jeżeli jest nim numer zestawu
(Olh, 02h lub 03h), to nastąpi przełączenie, a jeżeli OOh - klawiatura odpowiada nume­
rem aktualnego zestawu.

Rozkaz F2h - identyfikacja klawiatury (ID)


Rozkaz ten służy rozpoznawaniu typu podłączonej klawiatury. Model AT odpowiada
samym sygnałem ACK, natomiast typ PS/2 wysyła sekwencję ACK, ABh, 41h. Kla­
wiatura XT nie jest w stanie przyjąć tego (ani żadnego innego) rozkazu, toteż wystąpi
jedynie błąd przekroczenia limitu czasu przeznaczonego na odpowiedź ( time-out).

Rozkaz F3h - opóźnienie i prędkość autorepetycji


Rozkaz ten umożliwia programowanie czasu opóźnienia i prędkości powtarzania zna­
ków. Klawiatura potwierdza przyjęcie rozkazu wysłaniem sygnału ACK i oczekuje na
bajt definiujący wyżej wspomniane parametry. Postać tego bajtu opisano poniżej.
Klawiatura 623

0 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

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 F4h - odblokowanie klawiatury


Rozkaz F4h odblokowuje klawiaturę zablokowaną rozkazem F5h.

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.

Rozkaz FEh - żądanie powtórzenia transmisji


W przypadku wystąpienia błędu transmisji rozkazem tym można zażądać powtórzenia
ostatnio wysłanego przez klawiaturę kodu.
624 Anatomia PC

Rozkaz FFh - diagnostyka klawiatury


Rozkaz ten powoduje uruchomienie tzw. procedury BAT (ang. Basic Assurance Test),
diagnozującej wewnętrzne układy klawiatury. Potwierdzeniem otrzymania rozkazu jest
sygnał ACK, a wynikiem testu może być AAh (wynik poprawny) albo FCh (błąd).

Klawiatura, do której nie wysłano żadnego rozkazu, zwraca w normalnych warunkach


wyłącznie sekwencje kodów naciśnięcia i zwolnienia, stosownie do naciskanych i zwal­
nianych przez użytkownika klawiszy. Kody te mieszczą się w przedziale 01h-58h.

W klawiaturze zainstalowana jest zwykle mała pamięć buforowa, mogąca pomieścić


około 20 bajtów. W zależności od tego, jaki klawisz został naciśnięty, bufor ten może
zmieścić mniej lub więcej naciśnięć. „Zwykły” znak generuje bowiem dwa bajty kodu
(kod naciśnięcia i zwolnienia), ale są i klawisze wysyłające wielobajtowe sekwencje.

Przepełnienie wewnętrznego bufora klawiatury sygnalizowane jest przesłaniem do


kontrolera bajtu o wartości OOh. Każdy inny błąd stwierdzony przez wewnętrzne układy
sterujące powoduje wysłanie wartości Ffh.

Reasumując, klawiatura może więc zwracać następujące kody:

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

Przedstawiony poniżej krótki program w języku Turbo C pozwala obserwować pełne


sekwencje kodów wytwarzane przez klawiaturę. Zamaskowanie przerwania IRQ1
uniemożliwia przekazanie sterowania do procedury obsługi przerwania 09h. Aby za­
kończyć wykonywanie programu, należy nacisnąć klawisz Esc.
#include <dos.h>
#include <stdio.h>

#define IRQl_OFF outp(0x21,0x02)


#define IRQl_ON outp(0x21,0x00)

void buf w y j (void);


Klawiatura 625

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 i port wyjściowy


Widoczne na rysunku 13.10. dwa porty, chociaż należą do kontrolera klawiatury, sterują
również pracą innych elementów PC. Dostęp do wspomnianych portów możliwy jest
jednak wyłącznie przez rejestry kontrolera klawiatury.

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:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bit 7 blokada klawiatury:


1 = klawiatura odblokowana,
0 = klawiatura zablokowana;
bit 6 zainstalowana w systemie karta sterownikamonitora:
1 = monochromatyczna (MDA),
0 = kolorowa;
bit 5 obecność przełącznika konfigurującego:
1 = nie zainstalowany,
0 = zainstalowany;
bit 4 dostęp do drugiego banku 256 kB RAM płyty głównej:
1 = dozwolony,
0 = zabroniony;
626 Anatomia PC

bity 3-2 zarezerwowane;


bit 1 stan linii danych wejściowych od jednostki dodatkowej (tylko
PS/2);
bit 0 stan linii danych wejściowych od klawiatury.

Bit 6 odzwierciedla położenie przełącznika konfiguracyjnego rodzaju karty graficznej,


umieszczonego na płycie głównej. Nowsze modele są tego przełącznika pozbawione,
a konfiguracja odbywa się wyłącznie poprzez program Setup. Stan bitu 6 odpowiada
wówczas stosownemu zapisowi w pamięci CMOS-RAM.

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:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bit 7 dane wyjściowe dla klawiatury;


bit 6 stan linii synchronizacji (zegara) łącza szeregowego klawiatury;
bit 5 opróżnienie bufora wejściowego jednostki dodatkowej (tylko
PS/2);
bit 4 przepełnienie bufora wyjściowego klawiatury;
bit 3 stan linii synchronizacji (zegara) łącza szeregowego jednostki
dodatkowej (tylko PS/2);
bit 2 dane wyjściowe do jednostki dodatkowej;
bit 1 stan sygnału GA TE A20:
1 = bramka otwarta (linia A20 aktywna),
0 = bramka zamknięta (adresy A0-A19);
bit 0 połączony z linią RESET CPU. Stan wysoki wymusza restart
procesora.

Oprócz funkcji sterowania liniami danych i zegarowymi łącz klawiatury i myszki


(w PS/2), port wyjściowy odpowiedzialny jest za stan tzw. bramki A20 (GATE A20).

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

Ponieważ poruszamy się w dziedzinie liczb binarnych, mnożenie przez 16 równoważne


jest przesunięciu w lewo o cztery pozycje bitowe. Rozważmy sytuację, gdy oba adresy
składowe (segment i przemieszczenie) przyjmują wartości maksymalne, tj. FFFFh.
OFFFFOh (segment* 16)
+00 FFFFh (przemieszczenie)

lOFFEFh = 1 MB + 64 kB

Zauważmy, że najbardziej znaczący bit wyniku znajduje się na pozycji odpowiadającej


21 linii adresowej (A20). Procesor 8088/86 ignoruje ten bit, ponieważ nie posiada takiej
końcówki. Adresowany obszar znajduje się więc fizycznie w najniższym segmencie pa­
mięci (w pierwszych 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 ■

Na zakończenie omówione zostaną jeszcze dwa urządzenia wejściowe, które - chociaż


niezdolne zastąpić klawiaturę - są wykorzystywane przez użytkowników. Mowa tu
o myszce i manipulatorze, zwanym popularnie joystickiem. Urządzenia te dołączane są
na ogół do gniazd wielofunkcyjnej karty Multi 1/0 , zawierającej porty szeregowe (wy­
korzystywane przez myszkę) i tzw. game port , będący w istocie prostym przetwor­
nikiem analogowo-cyfrowym.

Chociaż klawiatura w dalszym ciągu jest podstawowym narzędziem do wprowadzania


danych tekstowych i liczbowych, pojawienie się na rynku nowej klasy oprogramowania
- programów sterowanych z poziomu menu (ang. menu-driven software) - dało szansę
innemu urządzeniu wejścia — myszce. Pozwala ona na sterowanie komputerem prak­
tycznie bez użycia klawiatury, a w wielu środowiskach programowych (np. Windows)
jest wręcz warunkiem koniecznym. Myszka przekazuje ruch ręki do komputera, służąc
zwykle do sterowania widocznym na ekranie kursorem i uruchamiania wskazywanych
przezeń funkcji. Filozofia ta wykorzystywana jest obecnie w każdym „szanującym się”
programie i radykalnie upraszcza obsługę komputera.

Myszka komunikuje się z komputerem za pomocą portu szeregowego. Znane są co


prawda myszki współpracujące z kartą dedykowaną do ich obsługi (jest to raczej roz­
wiązanie archaiczne), ewentualnie z kartami sterowników graficznych (rozwiązanie
firmy ATI), jednak przeważająca większość „zwierzątek” używa portu szeregowego.
630 Anatomia PC

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.

Za dekodowanie impulsów z czterech fotoełementów odpowiedzialny jest mikrokontro­


ler, którym zwykle jest układ Intel 80C48. Przetwarza on uprzednio wzmocnione sygna­
ły z fotoełementów na postać cyfrową, którą następnie przesyła do komputera poprzez
port szeregowy. Wykorzystywana jest wyłącznie linia danych tego portu, a pozostałe
połączenia slużąjedynie do zasilania układów 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).

Obsługa programowa większości myszek jest podobna. Możliwe jest wykorzystanie


standardowego sterownika - programu obsługi (ang, driver) myszki, dostarczanego
razem z systemem operacyjnym. Rozróżnia się zasadniczo dwa podstawowe standardy
myszek: pierwszy nosi nazwę Mouse Systems Mouse (myszka trójklawiszowa), zaś
drugi Microsoft Mouse (myszka dwuklawiszowa); jest on zgodny, jak sama nazwa
wskazuje, z założeniami firmy Microsoft. Istnieją jeszcze rozwiązania niezgodne z po­
wyższymi standardami, ale są one coraz rzadziej stosowane. Należy tu jeszcze oddać
honor szwajcarskiej firmie Logitech, która jest jednym z większych producentów my­
szy. Są one w zasadzie zgodne ze standardem Microsoft Mouse, aczkolwiek zgodność
ta nie jest pełna. Do obsługi myszki należy raczej stosować programy dostarczane
razem z nią ewentualnie zgodne z jej standardem. Niemniej jednak, niezależnie od
samego sprzętu i sposobu porozumiewania się myszki z „pracującym dla niej” sterow­
nikiem, sposób jej obsługi programowej jest identyczny (sterownik myszki pełni rolę
taką jak BIOS - pośredniczy pomiędzy różnymi rozwiązaniami sprzętowymi a progra­
mami). Ponieważ większość myszek komunikuje się ze sterownikiem w taki sam spo­
sób, może być obsługiwana przez taki sam sterownik. Większość z nich może również
pracować w obu standardach. Przykładowo, MS-Windows 3 .łx podczas instalacji pyta
o typ zainstalowanej myszki, umożliwiając wybór rodzaju myszki: rzadko spotykanych
Hewlett Packard i Olivetti oraz Microsoft, Logitech, Mouse Systems i Genius Mouse.
Ten ostatni typ jest zasadniczo zgodny z Mouse Systems Mouse, ale płynność i dyna­
mika ruchu jest lepiej dopasowana dla myszy danego producenta. Możliwe jest oczy­
wiście zainstalowanie innego (dostarczanego wraz z myszką) sterownika, a także, co
jednak nie jest zalecane, pominięcie instalacji myszki.
Pozostałe urządzenia wejścia 631

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

Poniżej zostaną omówione ważniejsze funkcje przerwania 33h, umożliwiające


realizację elementarnej obsługi myszki.

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

Param etry wejściowe:


AX 0003h.
W artości zwracane:
BL stan przycisków myszki

X X X X X bit 2 bit 1 bitO

bity 7-3 nie wykorzystane,


bit 2 1 = naciśnięty środkowy przycisk,
bit 1 1 = naciśnięty prawy przycisk,
bit 0 1 = naciśnięty lewy przycisk;
CX współrzędna X kursora myszki (0..639);
DX współrzędna Y kursora myszki (0.. 199).

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

X X X X X bit 2 bit 2 bit 2

bity 7-3 nie wykorzystane,


bit 2 1 = naciśnięty środkowy przycisk,
bit 1 1 = naciśnięty prawy przycisk,
bit 0 ł = naciśnięty lewy przycisk;
BX liczba naciśnięć danego przycisku od ostatniego wywołania
funkcji 05h;
CX współrzędna X kursora myszki w chwili naciśnięcia danego
przycisku;
DX współrzędna Y kursora myszki w chwili naciśnięcia danego
przycisku.

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:

X X X X X bit2 bitl bitO

bity 7-3 niewykorzystane,


bit 2 1 = naciśnięty środkowy przycisk,
bit 1 1 = naciśnięty prawy przycisk,
bit 0 1 = naciśnięty lewy przycisk;
BX liczba zwolnień danego przycisku od ostatniego wywołania funkcji
05h;
CX współrzędna X kursora myszki w chwili zwolnienia danego
przycisku;
DX współrzędna Y kursora myszki w chwili zwolnienia danego
przycisku.

Funkcja OBh
Działanie:
Funkcja ta zwraca stan liczników położenia myszki.
Pozostałe urządzenia wejścia 635

Param etry wejściowe:


f •
i- .y
AX OOOBh;
W artości zwracane:
CX liczba jednostek, o które przesunięto myszkę w poziomie od
ostatniego wywołania funkcji OBh;
DX liczba jednostek, o które przesunięto myszkę w pionie od
& ostatniego wywołania funkcji OBh.
Uwaga:
Jednostką (ang. mickey) jest najmniejsza odległość, na określenie której pozwala czu­
6 '

ł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.

Jest to zaledwie skrótowy opis dostępnych funkcji obsługujących myszkę. Większość


języków programowania dysponuje bibliotekami zawierającymi gotowe procedury ob­
sługi myszki na znacznie wyższym poziomie.

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.

Mechaniczne rozwiązania poszczególnych typów joysticków są bardzo różne, natomiast


elektrycznie składają się one z czterech potencjometrów (dwa główne i dwa kalibrujące)
oraz dwóch niezależnych przycisków. Każda para potencjometrów odpowiada za prze­
kazanie położenia drążka w kierunku lewo-prawo (X) i góra-dół (Y). Potencjometry
kalibracyjne służą do usytuowania kursora (ewentualnie ustawienia innej funkcji pro­
gramu sterowanego przez joystick) w położeniu neutralnym dla środkowego położenia
drążka. Oczywiście konstrukcja mechaniczna joysticka jest taka, by ruch drążka powo­
dował zmianę rezystancji odpowiedniego potencjometru.

Zespół potencjometr główny-potencjometr kalibracyjny jest włączony w obwód


umieszczonego na karcie generatora monostabilnego (un iwibratora), zbudowanego w
oparciu o popularny układ czasowy NE555. Dokładnie rzecz biorąc, karta zawiera
zwykle jeden układ scalony NE556 (lub jego odpowiednik), zawierający cztery
identyczne uniwibratory odpowiadające układowi 555. Do obsługi joysticka przewi­
dziano port o adresie 20 lh.

Znaczenie bitów tego portu jest następujące:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 stan drugiego wyłącznika joysticka B (B2);


bit 6 stan pierwszego wyłącznika joysticka B (BI);
bit 5 stan drugiego wyłącznika joysticka A (A2);
bit 4 stan pierwszego wyłącznika joysticka A (Al);
bit 3 stan wyjścia Y (BY) joysticka B (góra-dół);
bit 2 stan wyjścia X (BX) joysticka B (lewo-prawo);
bit 1 stan wyjścia Y (AY) joysticka A (góra-dół);
bit 0 stan wyjścia X (AX) joysticka A (lewo-prawo).

Wartość 1 na jednym z bitów 7-4 oznacza rozwarcie (zwolnienie) przycisku. Jedynka


na bicie 3—0 sygnalizuje pracę uniwibratora (tj. fazę trwania impulsu).

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.

Pomiar taki można wykonać przykładową pętlą programową:


mov dx,0201h ; adres portu joysticka
out dx,al ; uruchom uniwibratory
xor cx,cx ; inicjalizuj licznik
Pozostałe urządzenia wejścia 637

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

Stan rejestru CX po wyjściu z programu jest oczywiście zależny od szybkości proce­


sora, trybu jego pracy, obsługiwanych w międzyczasie przerwań, odświeżania pamięci
itp. Aby uniezależnić się od typu komputera i wyżej wymienionych „zakłóceń”, nale­
żałoby do odmierzania czasu użyć sprzętowego zegara czasu rzeczywistego. Określenie
stanu wyłączników odbywa się poprzez odczytanie czterech bardziej znaczących bitów
portu 020Ih.

W BIOS-ie komputera AT pojawiła się funkcja przeznaczona specjalnie do obsługi


joysticka, upraszczająca znacznie odczyt jego stanu. Jest to funkcja 84h przerwania pro­
gramowego 15h (tzw. A T Extended Services). Funkcja ta pozwala na określenie położe­
nia drążków i stanu wyłączników. Funkcja 84h posiada dwie podfunkcje, przekazywane
przez rejestr DX.

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:

bit 7 bit 6 bit 5 bit 4 X X X X

bit 7 stan drugiego przycisku joysticka B (B2),


bit 6 stan pierwszego przycisku joysticka B (BI),
bit 5 stan drugiego przycisku joysticka A (A2),
bit 4 stan pierwszego przycisku joysticka A (A l),
bity 3-0 nie wykorzystane;
dlapodfunkcji 1:
AX współrzędna X drążka joysticka A,
BX współrzędna Y drążka joysticka A,
CX współrzędna X drążka joysticka B,
DX współrzędna Y drążka joysticka B.
638 Anatomia PC

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

Współczesny komputer PC otacza się coraz gęstszą siecią układów peryferyjnych.


Kilkanaście lat burzliwego rozwoju tej gałęzi techniki doprowadziło do wypracowania
wspaniałego chaosu. Lista urządzeń, które można podłączyć do komputera stale rośnie
a początkujący użytkownicy poruszają się z coraz to większym trudem w gąszczu naj­
różniejszych wtyczek i gniazdek. Nawet najbardziej doświadczeni narażeni są na omył­
kowe zamiany kabli.

Próby doprowadzenia do jednolitego standardu prowadzone są od dłuższego czasu


w zespole powołanym do życia przez grupę firm założycielskich: Compaq, DEC, IBM,
Intel, Microsoft, NEC i Northern Telecom. Wspólnie rozwijany projekt nosi nazwę
USB (Universal Serial Bus) i obiecuje możliwość podłączenia szerokiego zakresu
peryferiów PC do jednolitej, prostej i taniej magistrali.

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

Poziom "3" HUB (H U B j) NODE NODE

/ V
\ V •

Poziom "4" NODE NODE NODE NODE

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-

1 We wcześniejszych wersjach specyfikacji USB można spotkać używany zamiennie termin


function.
2 Dopuszczalny pobór prądu poprzez magistralę USB wynosi 500 mA.
m ' -

I Złącze USB 641


Eft: •

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).

r Patrząc na złącze USB od strony sygnałów elektrycznych należy je zaliczać do grupy


| magistral szeregowych prowadzonych od punktu do punktu. Dane przesyłane są w ruchu
dwukierunkowym przy pomocy pary przewodów sygnałowych D+ i D -. Pozostałe dwie
linie doprowadzają napięcie zasilające (+5 V i masa). Modulowanie końcówek D+ i D -
sygnałem różnicowym zwiększa odporność linii na zakłócenia zewnętrzne. Wzmacnia­
cze wejściowe urządzeń USB nastawione są na wydzielenie różnicy sygnałów. Prze­
biegi szkodliwe nakładają się w jednakowym stopniu na obie linie D+ i D - i dlatego
łatwo je wyeliminować. Poziom dla nadawanych sygnałów wyznaczony został na około
1 V (napięcie różnicowe 2 V). Odbiornik musi jednak w sposób pewny odławiać róż-
! nicę 0,2 V (margines bezpieczeństwa). W stanie spoczynku linie utrzymywane są na
f poziomie D+ = +3 V i D - = 0 V.
■i .
r

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).

Oprócz konfigurowalnego programowo ID układy peryferyjne USB wyposażane są


w zaszyty na stałe w swej pamięci 5-baj towy numer sprzętowy: dwa bajty stanowią
oznaczenie producenta, dwa nazwę układu i jeden numer wersji. Dodatkowe informacje
zawarte są w 3-bajtowym identyfikatorze klasy: po jednym bajcie na klasę, podklasę
i typ protokołu.

W trakcie wstępnego przeglądania sieci napotkane urządzenia informują kontroler o ty­


pie przetwarzanych przez siebie danych i o pożądanej szerokości pasma przesyłowego,
które potrzebują do dyspozycji. Kontroler gromadzi te informacje, by je później wyko­
rzystać do rozdziału pasma pomiędzy wszystkich chętnych.
i

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.

Kontroler rozsyła w regularnych odstępach czasu specjalne pakiety (Token) z zapyta­


niami do kolejnych urządzeń (rysunek 15.3).

Rysunek 15.3. 8 bitów 8 bitów 3 bity 5 bitów

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

Pakiety zabezpieczane są sumami kontrolnymi CRC. Stosowane kody umożliwiają nie


tylko wykrywanie błędów ale również ich korekcję (do dwóch uszkodzonych bitów
w chronionym obszarze).

Urządzenie żądające dostępu do magistrali odsyła odpowiedź pozytywną. W oparciu


o zapamiętane w fazie inicjalizacji parametry kontroler sprawdza najpierw czy dyspo­
nuje wolnym pasmem o niezbędnym wymiarze a jeśli tak, rezerwuje je (pod uwagę
brane są przy tym planowane transmisje izochroniczne). Po przyjęciu niezbędnych
uzgodnień dochodzi do utworzenia kanału wirtualnego (Pipę) i wymiany danych w pa­
kietach o ustalonej wcześniej strukturze (rysunek 15.4).

Rysunek 15.4. 8 bitów 0 ... N bitów 16 bitów


Struktura pakietu
Data

Poszczególne fazy komunikacyjne kwitowane są przy pomocy specjalnych pakietów


potwierdzających (rysunek 15.5).

Rysunek 15.5. 8 bitów

Struktura pakietu
Handshake

Odmienne struktury nagłówków PID pozwalają na jednoznaczną identyfikację typu


pakietu. Gdy wszystkie zaplanowane pakiety zostaną przesłane, kanał jest likwidowany
a jego pasmo oddawane do dyspozycji kontrolera.

Sumaryczna przepustowość magistrali rozdzielana jest w miarę potrzeb i możliwości.


Kontroler tworzy przy tym wirtualne kanały przesyłowe (Pipes) o różnej szerokości
i różnym kierunku przepływu informacji, które stawia do dyspozycji wyznaczonym
przez siebie urządzeniom. Uwzględnienie istniejących priorytetów może się odbywać
wyłącznie na drodze zaburzenia równomierności rozsyłania pakietów Token, Prośba
o dostęp do magistrali może zostać przez kontroler zignorowana jeśli rezerwy pasma nie
są wystarczające. Żadna z trwających właśnie transmisji nie jest przerywana na korzyść
innej. Asynchroniczny charakter przesyłania danych nie wymaga natomiast od uczest­
ników trzymania się jakiejkolwiek określonej prędkości, w szczególności maksymalnie
wyznaczonej dla danego strumienia.

Dużą rolę w sprawnym funkcjonowaniu sieci USB odgrywa buforowanie danych i to


zarówno przez urządzenia oczekujące na dostęp jak i przez kontroler. Czas oczekiwania
na obsługę może być różny a urządzenie nie jest w stanie go przewidzieć. Rozmiary
buforów lokalnych muszą być dobrane z dużym zapasem, tym większym im większy
strumień danych produkuje układ.

Specyfikacja USB przewiduje oprócz zwykłej transmisji asynchronicznej również


przekaz izochroniczny. Ten typ przesyłania stworzony został dla potrzeb zastosowań
multimedialnych. Istnieją bowiem urządzenia, dla których zaopatrzenie na czas w dane
644 Anatomia PC

(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.

6 Automatyka wbudowana w system operacyjny sięga zakresu Hot-Plugging. Dla urządzeń


odłączonych od sieci usuwa się również „na gorąco” ich sterowniki.
Złącze USB 645

racjonalnego wykorzystania jej zasobów. USB integruje w sobie ponadto funkcje


lokalnej sieci telefonicznej . W skład specyfikacji wchodzi specjalny protokół
TAPI (Telephony Application Programming Interface). Oferowane są następu­
jące usługi: fax, modem oraz mała centrala telefoniczna. Gniazdo USB może być
też używane do podłączenia innego komputera, na przykład laptopa w celu
szybkiej wymiany danych z maszyną macierzystą.

• Na zakończenie kilka uwag o wadach USB. Stopień integracji mechanizmów


USB w stosowanych obecnie systemach operacyjnych jest delikatnie mówiąc
niewielki. Obecność blaszki slotu z gniazdami USB na tylnej ściance komputera
PC to jeszcze nie wszystko. Samo rozpoznanie i obsługa wchodzącego w skład
PIIX3 kontrolera USB wymaga zdobycia sterownika programowego. Dla Win-
8
dows 95 odpowiedni plik znaleźć można na płytce CD oznaczonej symbolem
Service Pack 3 (w katalogu \OSR2\USB_SUPP) zawierającej poprawki i uzupeł­
nienia do systemu operacyjnego. Poprawna instalacja tego sterownika to jeszcze
za mało by cieszyć się USB. System operacyjny wie już co prawda o obecności
kontrolera ale nie wie nic o podłączonych do sieci urządzeniach. Samo ich zdo­
bycie nie będzie sprawą łatwą. Oprócz kilku pokazywanych jedynie na targach
i dostępnych w prospektach monitorów9, klawiatur i myszy trudno jest o szeroki
materiał porównawczy. Każde z tych urządzeń wymaga własnego sterownika
programowego10 a te są w chwili obecnej nieosiągalne. Pełna integracja USB
w strukturach systemów operacyjnych ma nastąpić wraz z wejściem na rynek
systemów Windows 97 i Windows NT 5.0

Sam pomysł USB i stowarzyszone z nim rozwiązania są niezwykle nowoczesne i przy­


jazne dla użytkownika. Nowa magistrala, jak każda nowa idea, która zamierza przynaj­
mniej częściowo zrewolucjonizować świat, rodzi się z trudem a i dzieciństwo też ma
niełatwe. Krążące tu i ówdzie złośliwe tłumaczenie skrótu USB jako „Useless Serial
Bus“ (Nieużyteczna Magistrala Szeregowa) nie jest niestety całkowicie pozbawione
sensu.

y ^

Skutkiem obecności w grupie firm założycielskich kanadyjskiego koncernu Northern


Telecom.

8 Funkcjonuje tylko w wersji 95Ob.

9 W przypadku monitorów, USB można rozpatrywać jedynie w charakterze magistrali kontrolnej


(regulacja, zarządzanie systemem poboru m ocy). Strumień danych video (ponad 1 Gb/s)
przewyższa znacznie m ożliw ości tego systemu.

10 Znormalizowane funkcje elementarne (choćby te do pierwszego kontaktu z kontrolerem)


nie wym agają żadnych specjalnych sterowników. Dopiero działania specyficzne dla danego
urządzenia wspomagane są przez specjalne programy obsługi.
646 Anatomia PC
Zasilacz 647

Zasilacz wytwarza cztery poziomy napięć: +5 V, +12 V, -5 V i -1 2 V, niezbędne do


pracy komputera. Jak łatwo zauważyć, nie jest wytwarzane napięcie +3,3 V, konieczne
do zasilania procesorów serii SL, 486DX4, Pentium i lepszych. Komputery wyposażone
w tego typu procesory powinny mieć na płycie głównej układ przetwarzający napięcie
+5 V na +3,3 V. Montowanie tego typu procesorów na płytach bez takiego konwertera
spowoduje ich uszkodzenie.

Większość zasilaczy komputerowych jest zasilaczami impulsowymi. Oznacza to, że pra-


cują tylko wtedy, gdy podłączone jest jakieś obciążenie - wystarczającym obciążeniem
do prawidłowej pracy zasilacza komputerowego powinna być płyta główna.

Przykładowy schemat zasilacza przedstawiono na rysunku 16.1. Jak widać na schema­


cie, zasilacz, zasilany z sieci -2 2 0 V, wytwarza napięcia +5 V, +12 V, -5 V i —12 V.
Dodatkowy sygnał PG {Power Good) powoduje resetart płyty głównej po ustabilizowa­
niu się napięć zasilających.

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 rynku dostępne są zasilacze o różnych mocach, począwszy od 100 W, przez 135 W,


150 W, 200 W do 250 W, a czasem 300 W. Od mocy zasilacza zależy liczba urządzeń,
które można podłączyć do komputera. Problem doboru mocy zasilacza do konkretnej
konfiguracji komputera został rozwiązany przez producentów obudów do komputerów
- do określonego typu obudowy montowany jest taki zasilacz, który zapewni prawid­
łowe działanie komputera po zamontowaniu maksymalnej liczby urządzeń, która może
zmieścić się w obudowie.

Z zasilacza wyprowadzone są złącza przeznaczone do zasilania płyty głównej i urzą­


dzeń zamontowanych w komputerze oraz kabel przeznaczony do podłączenia wyłącz­
nika.

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

Z kolei rysunek 16.4. przedstawia schemat podłączenia wyłącznika zasilacza

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

W rozdziale tym znajdzie Czytelnik opis czterech przykładowych programów Setup , po


jednym dla każdego z modeli AT: 286, 386, 486 i Pentium. Program Setup służy do kon­
figurowania komputera (zapis, odczyt i modyfikacja danych w CMOS-RAM) i umiesz­
czony jest wraz z procedurami BIOS-u w pamięci stałej komputera. Starsze modele AT,
nie dysponujące programem Setup zapisanym w pamięci stałej, wymagały uruchomienia
z poziomu systemu operacyjnego specjalnego programu narzędziowego (setup.com lub
setup.exe), dostarczanego wraz z komputerem. Obecnie fakt ten ma znaczenie wyłącznie
historyczne.

Rynek producentów programów BIOS zdominowany został przez trzech wytwórców:


American Megatrends, Inc. (AMI), Award Software i Phoenix Technologies. Pomimo
mnogości obecnych na rynku różnorodnych modeli PC/AT ukształtowały się w miarę
jednorodne linie programów Setup. Wybrane przez autora przykłady reprezentują jego
zdaniem najczęściej spotykane rozwiązania.

Na wstępie jednak wyjaśnienie kilku często przewijających się przez tę tematykę pojęć.

Częstotliwości taktujące (Clock)


Dla poprawnego funkcjonowania różnych elementów architektury PC potrzeba wielu
częstotliwości taktujących. Rysunek A .l. przedstawia schematycznie zasadę wytwarza­
nia tych częstotliwości w modelu AT-286.

Schemat ten obowiązuje w zasadzie również w stosunku do modeli AT-386 i 486SX.


Płyty z procesorem 486DX i Pentium nie posiadają zwykle pierwszego dzielnika często­
tliwości i zegar taktujący CPU (oznaczany w tym przypadku jako SYS) równy jest
wprost częstotliwości f l generatora 0SC1.
652 Anatomia PC

Rysunek A1.
Schemat
tworzenia
sygnałów
taktujących
w komputerze
A T-286

W dziedzinie oznaczeń częstotliwości, ich symboliki i znaczenia panuje spore zamie­


szanie, toteż może się zdarzyć, że Czytelnik spotka się z systemem gdzie znaczenie
skrótów CLK2 i CPUCLK (często oznaczanego też PROCCLK) należy rozumieć wręcz
odwrotnie, niż opisano w niniejszym punkcie.

Główne źródło odniesienia stanowi generator kwarcowy XTAL1 o częstotliwości pracy


f i . System dysponuje zwykle dwoma takimi generatorami o różnych częstotliwościach,
co pozwala łatwo zrealizować funkcję przełączania prędkości pracy {Turbo). Genera­
tory te wykonane są w formie metalowych modułów i umieszczane w podstawce. Daje to
możność łatwej wymiany kompletu CPU-generator, co często stosują producenci sprzętu.

Częstotliwość f l podlega prawie zawsze (z wyjątkiem modeli 486DX i Pentium) wstęp­


nemu podziałowi przez 2, co zapewnia współczynnik wypełnienia przebiegu CLK2IN
równy 1/2. Widoczny na rysunku A .l. sygnał ATCLK wytwarzany jest przez rezonator
kwarcowy współpracujący z bramkami logicznymi. Sygnały ATCLK i CLK2IN prze­
chodzą na ogół przez różnego rodzaju dzielniki i kierowane są do różnych urządzeń.
Oto kombinacje najczęściej spotykane w modelach PC/AT:

Zegar CPU Magistrala zewnętrzna Kanał DMA


CLK2IN CLK2IN/2 SYSCLK/2
BUSCLK CLK21N SYSCLK
ATCLK

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

Tryb stronicowy (Page Mode)


Określenie to dotyczy fizycznej realizacji obsługi układów pamięci RAM i nie ma nic
wspólnego z techniką stronicowania (ang. paging), stosowaną w procesorach 386 i lep­
szych do odwzorowania pamięci logicznej w fizycznie dostępną RAM. Tryb stronicowy
oznacza taki tryb adresowania pamięci dynamicznej, w którym sygnał wyboru wiersza
(ang. RAS - Row Address Strobe) utrzymywany jest przez dłuższy czas w stanie aktyw­
nym. Oznacza to, że część adresu definiująca wiersz komórki pozostaje niezmienna, a co
za tym idzie, sygnałem wyboru kolumny (ang. CAS - Column Address Strobe) adreso­
wane są tylko komórki jednego wiersza. Niezbędne czasy regeneracji pomiędzy kolej­
nymi cyklami dostępu „wbudowane są” w impulsy CAS, co wymaga akceptacji od
układów pamięci. Dostępne obecnie na rynku układy scalone dostosowane są w więk­
szości do tego trybu pracy.

Dostęp do pamięci ma na ogół charakter sekwencyjny i istnieje duże prawdopodobień­


stwo, że znaczna część komórek może być w ten sposób osiągnięta (bez konieczności
zmiany sygnału RAS). Oczywiście impuls RAS nie może być dowolnie długi; ponadto
należy uwzględniać cykle odświeżania pamięci, które również przerywają dostęp do
pamięci w tym trybie.

Stronicowanie (Page Mode) i nakładanie lub przeplot (Memory Interleave) występują


zwykle w połączeniu, przyczyniając się do znacznego skrócenia czasu oczekiwania
procesora na pobierane z pamięci dane.

Przeplot banków (Memory Interleave)


Termin ten oznacza przyspieszony tryb adresowania układów pamięciowych płyty
głównej.

Pamięć ta podzielona jest na grupy zwane bankami, zawierające, zależnie od organizacji


-jed n ą, dwie lub cztery podstawki na moduły pamięciowe. Pojedyncze układy scalone
pamięci (potocznie, acz niesłusznie zwane DRAM) wyszły już z użycia, a ich miejsce
zajęły moduły SIPP (ang. Single In-line Pin Package) i SIMM (ang. Single In-line Me­
mory Module ), o rozmiarach 256 kB, 1 MB, 4 MB. Istnieją również rozwiązania płyt
akceptujące zarówno pojedyncze układy jak i mieszankę różnych modułów. Nowe mo­
dele oparte są o moduły pamięciowe typu SIMM PS/2 (32-bitowe) o rozmiarach 1 MB,
4 MB, 8 MB i 16 MB.

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

impulsami RAS musi występować pewna przerwa czasowa przeznaczona na regene­


rację układu. W tej szczelinie czasowej można więc umieścić sygnał RAS drugiego
banku, nie czekając na zakończenie cyklu dostępu do banku pierwszego. To nakładanie
się (ang. interleave) cykli dostępu ma szczególne znaczenie i sens, jeżeli kolejne
(logiczne) komórki pamięci ulokowane są naprzemiennie w obydwu bankach (przy
organizacji 16-bitowej pamięci):
słowo 0 bank 0
słowo 1 bank 1
słowo 2 bank 0
słowo 3 bank 1
słowo 4 bank 0

Idea ta niekoniecznie musi być stosowana w odniesieniu do dwóch banków. Systemem


tym można objąć również 4 lub 8 banków pamięci, i to niezależnie od jej organizacji
(8-, 16- czy 32-bitowa).

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.

Technika ta możliwa jest do zastosowania w procesorach 80286 i wyższych. Procesor


typu 8086, na skutek multipleksowania (podwójnego wykorzystania) końcówek szyn
adresowych i danych nie może pracować w tym trybie. Procesory 80386, 80486 i Pen­
tium dysponują dodatkowym wyprowadzeniem NA, pozwalającym na bardzo elastycz­
ne (oddzielnie dla każdego cyklu szyny) wykorzystywanie tej możliwości.

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

Modele PC/XT i AT nie wyposażone w odpowiedni zestaw układów scalonych mogły


posługiwać się tą techniką wyłącznie w sposób programowy, tj. przy użyciu specjalnych
sterowników zajmujących dodatkowo miejsce w pamięci*

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.

Dla rozwiązania tego problemu w architekturze XT zastosowano dodatkowe karty roz­


szerzenia pamięci. Ponieważ procesor 8086 nie jest w stanie zaadresować fizycznie
więcej niż 1 MB pamięci, kart takie były wyposażane w specjalne układy realizujące
tzw. przełączanie banków. Istota tego rozwiązania polega na sprzętowym udostępnieniu
dla procesora (poprzez magistralę zewnętrzną) fragmentu większego obszaru pamięci
zainstalowanej na karcie - tzw. banku. Specjalne układy dekoderów pozwalają CPU
„widzieć” bank w segmencie położonym między 640 kB a 1 MB. Oczywiście implikuje
to możliwość jednoczesnego dostępu tylko do fragmentu pamięci rozszerzonej - inne
fragmenty (banki) są widoczne dopiero po odpowiednim przełączeniu. Tak zorganizo­
wana pamięć nosi nazwę pamięci rozszerzonej (ang. expanded memory).

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.

Zdominowanie sprzętu PC przez procesory mogące bez wysiłku zaadresować praktycz­


nie całą zainstalowaną fizycznie w komputerze pamięć uwidoczniło sztuczność standardu
EMS. Standard ten, aczkolwiek w dalszym ciągu popularny ze względu na dużą liczbę
posługujących się nim aplikacji (Lotus 1-2-3, WordPerfect, Turbo Pascal), powoli
ustępuje znacznie nowocześniejszej normie XMS (ang. Extended Memory Specificat­
ion ), opracowanej przez firmy Lotus, Intel, Microsoft i AST Research. Rozwiązania
standardu XMS bazują na wykorzystaniu trybu chronionego procesora 80286 i lepszych,
w związku z czym jest on niedostępny dla komputerów PC/XT. W zamian za to zniesio­
ne zostało ograniczenie rozmiaru dostępnej jednorazowo pamięci do okna o wielkości
64 kB, a realizacja dostępu do pamięci powyżej 1 MB odbywa się w sposób „natural­
niejszy” i szybszy.

Program Setup systemu AT-286 przedstawiony zostanie na przykładzie Phoenix-BIOS


w wersji 4.03.00, obsługującego płytę główną JAM-2301 taktowaną zegarem 16 MHz.
Zastosowany na niej zestaw układów scalonych CS8221 realizuje standardowe funkcje
NEAT: pamięć EMS według specyfikacji LIM 4.0, Shadow-RAM, przeplot ( interleave)
i tryb stronicowy {paging). Płyta wyposażona jest również w zintegrowany sterownik
dysków twardych i elastycznych, port równoległy i dwa porty szeregowe.

Wywołanie programu Setup możliwe jest w każdym momencie poprzez naciśnięcie


kombinacji klawiszy Ctrl-Alt-S (jest to typowy sposób wywołania przyjęty w BIOS-ach
firmy Phoenix). Program ten zgłasza się również samoczynnie po włączeniu komputera,
jeżeli stwierdzone zostały niezgodności zadeklarowanej w pamięci CMOS-RAM konfi­
guracji sprzętowej z konfiguracją rzeczywistą.

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.

Użytkownik ma możliwość wyboru opcji za pomocą klawiszy kursora T i >k

Modyfikacja danej pozycji odbywa się przez naciśnięcie klawisza —> lub <—.
Program Setup 657

Rysunek A.2. s y s te m C o n fig u ra tio n s e tu p 4 .0 3 00


T im e : 0 7 :2 7 :2 6
Menu D a te : Thu Feb 11, 1993

konfiguracji D is k e tte a : Not In s ta lle d


D is k e tte 8: Not in s ta lle d Hd p re LZ sec s1ze
systemu H ard D is c 1 : Not in s ta lle d 615 4 300 615 17 20
H ard D is c 2: Not in s ta lle d
programu B ase M em ory: 6 4 0 K6
E x te n d e d M em ory: 384 K8
Setup 286 D is p la y : M O NO
K eyb o ard : In s ta lle d
firmy Phoenix
co p ro ceso r: Not in s ta lle d

D is k k e tte a : Not in s ta lle d

PgUp f o r C S 8 2 2 1 o p t i o n s . u p /D o w n A rro w to s e le c t L e ft/R ig h t A rro w to change.


F I f o r h e l p . ESC t o r e b o o t

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 .

kursorem pozycji), wywoływane klawiszem FI.

Naciśnięcie klawisza PgUp przenosi nas w tryb zaawansowany.

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

bus c lo c k : AT clock DMA c lo c k : S C L K /2

PgUp f o r m a in m enu. u p /D o w n A rro w to s e le c t. L e ft/R ig h t A rro w to change


F l f o r h e lp , esc to reb o o t

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

• Shadow 16K at nnnnn (Enable/Disable) - konfiguracja obszaru C4000h-F0000h


jako Shadow-RAM , w blokach po 16 kB. Znajduje to zastosowanie w przypadku
obecności w systemie specjalnych kart rozszerzających (np. kart sieciowych,
sterowników SCSI itp.) posiadających własny BIOS, w stosunku do którego
można wówczas zastosować funkcję Shadow .

• 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 ).

• E M S ... - szczegółowe definicje parametrów pamięci EMS.

Prędkość zegara taktującego magistrali zewnętrznej może przyjmować dwie wartości:


AT CLOCK lub CLK2IN/2. Jest to prędkość, z jaką system komunikuje się z kartami
umieszczanymi w gniazdach rozszerzających. Obie możliwości pokazane są na rysun­
kach A.3. i A.4.

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

PgUp f o r m a in menu. Up/Down A r r o w t o s e le c t. L e ft/ R ig h t A rrow t o change


F l f o r h e l p . ES C t o reb oot

Opcja AT CLOCK oznacza asynchroniczną (w stosunku do zegara CPU) pracę magi­


strali zewnętrznej i znajduje zastosowanie w obsłudze wolnych kart rozszerzeń. Często­
tliwość CLK2IN/2 stanowi połowę częstotliwości zegara taktującego CPU, a magistrala
pracuje wówczas synchronicznie z procesorem. Prędkość pracy nie jest w tym przypad­
ku jednoznacznie określona, zależy bowiem od zegara CPU (wersje AT-286-20 MHz
dają przykładowo 10 MHz). Jeżeli jedna z kart nie akceptuje tak wysokiej częstotli­
wości, co objawiać się może przeróżnymi błędami występującymi w nieregularnych
odstępach czasu, należy obniżyć prędkość do poziomu AT CLOCK.

Prędkość pracy kanału DMA ustalona jest na stałym poziomie SCLK/2 tj. 8 MHz.
Program Setup 659

Konfiguracja komputera AT-386 przedstawiona zostanie na przykładzie modelu C&T


80386-25 MHz wyposażonego w AMI BIOS w wersji 1.53.

System umożliwia wejście do programu Setup po pomyślnym przejściu testów pamięci.


Wyświetlany jest wówczas komunikat:
Press <DEL> key if you want to run SETUP

Zignorowanie tego komunikatu powoduje przejście do ładowania systemu operacyj­


nego, natomiast naciśnięcie klawisza Del uruchamia program Setup , który zgłasza się
w sposób pokazany na rysunku A.5.

Rysunek A.5,
E X I T FOR BOOT
Menu główne RUN CMOS SETUP
RUN XCMOS SETUP
programu Setup
386firm y A MI

Wybranie opcji RUN CMOS SETUP uruchamia podstawową część programu. Na


rysunku A.6. przedstawiony jest ekran, z którego może korzystać użytkownik programu
CMOS SETUP.

Rysunek A6. CMOS s e t u p ( c ) c o p y r i g h t 1 9 8 5 -1 9 9 0 , A m e r i c a n M e g a t r e n d s . ,


Menu
, ÏÉflÇl1
1

D a te (m n /d a te /y e a r) : W ed, Dun 0 9 1 9 9 3 B a s e memory s i z e 6 4 0 KB


T im e (h o u r/m in /s e c ): 1 1 : 56 20 E x t . memory s i z e 3 0 7 2 KB
konfiguracji F lo p p y d riv e A: : 1 . 4 4 MB, 3 . 2 5 " N u m e r ic p r o c e s s o r Not i n s t a l l e d
F lo p p y d r i v e B: : Not in s ta lle d
systemu c y ln Head WPcom L z o n e s e c t s iz e
H ard d is k c: ty p e : 4 7 = USER TY P E 936 16 0 0 17 1 2 4 MB
programu H ard d is k d : ty p e : Not i n s t a l l e d

Setup 386 P rim a ry d is p la y VGA o r EGA

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

esc = E x it, t I * - S e le c t, P g u p /P g D n = M o d ify | 4

Mamy możność ustalenia podstawowych elementów konfiguracyjnych (bieżącego


czasu i daty, parametrów zainstalowanych napędów dysków i sterownika monitora).
Typ 47 dysku twardego umożliwia zadeklarowanie parametrów dysku o dowolnej
geometrii. Obszar przeznaczony na te dane może być umieszczony przez BIOS w jego
obszarze danych (segment 0030h) lub na szczycie pamięci operacyjnej.

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

Rysunek A.7. e x te n d e d CMOS s e t u p p ro g ram ver A . I . 53 (c)199Q A m e ric a n M e g a tre n d s in c .

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 !

IF T H E SYSTEM F A I L S , PR ESS AND HOLD < I N S > KEY


AND TURN TH E M A C H IN E O F F AND TH E N ON!

RELASE THE < IN S > KEY A FTE R MEMORY T E S T STARTS!

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.

Rysunek A.8. przedstawia dostępne opcje programu Extended CMOS Setup .

Rysunek A.8. EXTENDED CMOS s e t u p p ro g ra m ver A .1.53 CO1990 A m e r i c a n M e g a t r e n d s i n c . I


------- '
Menu trybu
zaawansowan ego
programu
Setup 386
C&T 386 C H IP S E T SETUP PROGRAM
EASY C&T 386 C H IP S E T R E G IS T E R SETUP
ADVANCED C&T 386 C H I P S E T R E G IS T E R SETUP
E N A B L E / D IS A B L E V ID EO AND MAIN B IO S SHADOW
W RITE CMOS R E G IS T E R S AND E X I T
DO NOT W RITE CMOS R E G IS T E R S AND E X I T

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.

Opcja ta realizuje uproszczoną formę dostępu do rejestrów sterujących układów płyty


głównej. Dła każdego z czterech banków pamięci (B0H, B0L, B1H, B1L) można określić
typ zainstalowanego modułu pamięci (jego wielkość i czas dostępu wyrażony w cyklach
oczekiwania). Na rysunku A.9. widzimy zestaw dopuszczalnych częstotliwości taktują­
cych dla kanału DMA.

Obraz przedstawiony na rysunku A. 10. prezentuje możliwości wyboru szybkości pracy


magistrali zewnętrznej.
Program Setup 661

Rysunek A.9. E X T E N D E D CMOS setup program ver - 1 .5 3 (0 1 9 9 0 A m e ric a n M e g a tre n d s m 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 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 >

Rysunek A.10. E X T E N D E D CMOS S E T U P p ro g ram ver - 1 .5 3 (c )1 9 9 0 A m e ric a n M e g a tre n d s in 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

sygnałów Û ENABLED I M EG 1 W A IT STATE

taktujących 1 ENABLED I M EG 1 W A IT STATE


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
magistrali
c lo c k so urce
zewnętrznej P ro cesso r c lo c k Bus c l o 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 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 >

Wartością standardową jest PROCESSOR CLOCK/2, co daje w naszym przypadku 25


MHz:2 = 12.5 MHz. Prędkość tę można zmniejszyć, stosując podzielnik 1/3 (25 MHz:3
= 8 MHz), jeżeli częstotliwość pracy magistrali okaże się zbyt wysoka dla którejkol­
wiek z kart. Oferowany jest również asynchroniczny (w stosunku do CPU) tryb pracy
szyny (ATCLK) z prędkością 7.2 Mhz.

Częstotliwość taktowania CPU może być określona jako PROCESSOR OSCILLATOR


lub SYSCLKx2, co widać na rysunku A. 11.

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.

Ekran odpowiadający tej opcji pokazany jest na rysunku A .12.


662 Anatomia PC

Rysunek A. 11. E X T E N D E D CMOS SETU P PROGRAM V e r - 1 .5 3 (c )1 9 9 0 A m e ric a n M eg atren d s In 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 DRAM T y p e w a its ta te

sygnału 0 ENABLED 1MEG 1 W A IT STATE


1 ENABLED lM E G 1 W A IT STATE
taktującego 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
procesor
C lo c k S ou rce
P ro cesso r c lo c k BUS C l o 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 5 C L K /2

Shadow RAM/Memory i n t e r l e a v e PROCESSOR O S C IL L A T O R


B i o s sh a d o w v i d e o sh ad o w Memory SYSCLKX2
FOOOOH, 6 4 K COOQQH, 1 6 K C4000H , 16K interleav
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 \ | —
E X IT -< E S C >

Rysunek A. 12. E X TE N D E D CMOS S E T U P PROGRAM v e r A . I . 53 (C )1 9 9 0 A m e ric a n M e g a tre n d s in c .

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

Widzimy tu klasyczny zestaw rejestrów sterujących układów scalonych płyty głównej,


zintegrowanych w kilku układach scalonych wielkiej skali integracji (tzw, chipset). Po­
niżej podano krótki opis poszczególnych układów i znaczenie ich rejestrów.

Układ scalony 82C206 i jego rejestry


Układ ten zastępuje następujące tradycyjne komponenty komputera PC:

• dwa kontrolery przerwań 8259,

• dwa kontrolery DMA 8237,


• układ czasowy 8254,

• układ CMOS-RAM MC 146818,


• rejestry strony DMA (układ 74LS612),

• układy dopasowania do magistrali X.


Program Setup 663

Zintegrowane w układzie 82C206 elementy zachowują pełną zgodność funkcjonalną do


poziomu rejestrów sterujących.

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.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-6 liczba cykli oczekiwania przy dostępie do urządzeń wejścia-


wyj ścia (I/O Wait States ):
00 - 1 W/S (cykl oczekiwania),
01 = 2 W/S,
10 = 3 W/S,
1 1 = 4 W/S.
bity 5-4 liczba cykli oczekiwania przy 16-bitowych transferach DMA
(16-bit DMA Wait States):
00 = 1 W/S,
01 = 2 W/S,
10 = 3 W/S,
11 = 4 W/S.
bity 3-2 liczba cykli oczekiwania przy transferach 8-bitowych (8-bit Wait
States):
00 = 1 W/S,
01 = 2 W/S,
10 = 3 W/S,
1 1 = 4 W/S.
bit 1 funkcja Extended DMA:
0 = wyłączona,
1 = aktywna - sygnały sterujące dla pamięci i urządzeń wejścia-
wyjścia przesunięte o jeden cykl zegara.
bit 0 częstotliwość zegara DMA:
0 = SCLK/2,
1 = SCLK.

Układ scalony 82C301 i jego rejestry


Trzy rejestry tego układu kontrolują głównie zależności czasowe w systemie

Rejestr Proclk (indeks 04h)

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bity 7-5 zarezerwowane;


664 Anatomia PC

bit 4 częstotliwość sygnału taktującego procesor:


0 - CLK2IN,
1 - BCLK;
bit 3 generacja przerwania NMI w przypadku zaniku zasilania {NMI on
Power-Fail):
0 = zablokowana,
1 = aktywna;
bit 2 generacja przerwania NMI w przypadku przekroczenia czasu
oczekiwania na gotowość urządzenia ( Time-Out-NMI on Ready):
0 = zablokowana,
1 = aktywna;
bity 1-0 zarezerwowane.

Funkcja NM I on Power-Fail oznacza możliwość generowania przerwania NMI przez


specjalny układ badający, czy poziom napięcia zasilającego mieści się w określonych
tolerancją granicach. Rozwiązanie takie jest powszechnie stosowane w dużych syste­
mach komputerowych do zabezpieczania znajdujących się w pamięci danych (przez ich
zapisanie na dysku) przed skutkami awarii zasilania. W komputerach PC nie jest ono
praktycznie stosowane.

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.

Rejestr Command-Delay (indeks 05h)

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-6 wartość opóźnienia przy 32-bitowym dostępie do pamięci:


00 = brak opóźnienia,
01 = 1 jednostka,
10 = 2 jednostki,
1 1 = 3 jednostki;
bity wartość opóźnienia przy 16-bitowym dostępie do pamięci:
00 = brak opóźnienia,
01 = 1 jednostka,
10 = 2 jednostki,
11 = 3 jednostki;
bity 3 - 2 wartość opóźnienia przy 8-bitowym dostępie do pamięci:
00 = brak opóźnienia,
01 = 1 jednostka,
10 = 2 jednostki,
11 = 3 jednostki;
Program Setup 665

bity 1-0 wartość opóźnienia przy dostępie do układów wejścia-wyjścia:


00 = brak opóźnienia,
01 = 1 jednostka,
10 = 2 jednostki,
1 1 = 3 jednostki.

Omawiane tu opóźnienie odnosi się do generacji sygnałów sterujących ~IOR, -MEMR,


-IOW i -MEMW. Jednostkę opóźnienia stanowi jeden cykl zegarowy BCLK.

Rejestr Wait-State (indeks 06h)

bit 7 bit 6 bit5 bit 4 bit 3 bit 2 bit 1 bitO

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.

Cykle oczekiwania są dodatkowymi, „pustymi” cyklami magistrali danych, wprowadza­


nymi przez kontroler magistrali.

Układ scalony 82C302 i jego rejestry


Układ ten, określany mianem kontrolera pamięci (Memory Controller), zawiera 14 re­
jestrów:

• rejestr identyfikacji (Identification Register) - indeks 08h;


666 Anatomia PC

• rejestr RAM-ROM (RAM-ROMRegister) - indeks 09h;


• sześć rejestrów odwzorowania adresów (Address Map Register) — indeksy OAh
do OFh;

• dwa rejestry typu banków (Bank Type Register) - indeksy lOh i 12h;

• dwa rejestry charakterystyk czasowych banków (Bank Timing Register) - indeksy


1 lh i 13h;

• rejestr kontroli parzystości (Par ity Check Register) - indeks 28h;


• rejestr sterujący (Control Register) - indeks 2Ah.

Rejestr identyfikacji (indeks 08h)


Rejestr ten używany jest głównie w diagnostyce płyty głównej.

hit 7 hit 6 hit 5 hit 4 hit 3 hit 2 hit 1 hit 0

bity 7-5 zarezerwowane;


bit 4 1 - blokada zapisu do obszaru SPEC-ROM;
bit 3 1 = udostępnienie obszaru SPEC-ROM;
bit 2 testowanie pamięci powyżej 16 MB:
0 - wyłączone,
1 = włączone;
bit 1 testowy tryb pracy z 256 kB pamięci:
0 = dopuszczony,
1 = wyłączony - automatyczne rozpoznanie rozmiaru
zainstalowanej pamięci;
bit 0 wykorzystanie trybu Interleave przy obsadzeniu jednego banku:
0 = tryb Interleave zablokowany - wymagane co najmniej dwa
pełne banki,
1 - tryb Interleave dopuszczony.

Rejestr Configuration in Boot Area, RAM-ROM (indeks 09h)


Rejestr ten określa rozlokowanie bloków pamięci RAM i ROM w obszarze COOOOh-
FFFFFh.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bit 7 1= RAM w obszarze COOOOh-CFFFFh;


bit 6 1= RAM w obszarze DOOOOh-DFFFFh;
bit 5 1- RAM w obszarze EOOOOh-EFFFFh;
bit 4 1= RAM w obszarze FOOOOh-FFFFFh;
Program Setup 667

bit 3 1 - ROM w obszarze COOOOh-CFFFFh (BIOS kart EGA i VGA);


bit 2 1 = ROM w obszarze DOOOOh-DFFFFh;
bit 1 1 = ROM w obszarze EOOOOh-EFFFFh;
bit 0 1 - ROM w obszarze FOOOOh-FFFFFh (BIOS systemowy).

Rejestry odwzorowania adresów


Sześć rejestrów odwzorowania adresów, oznaczonych od A do F (indeksy OAh do OFh),
określa fizyczne rozlokowanie poszczególnych obszarów RAM, tj. czy znajdują się one
na płycie głównej czy na kartach rozszerzających.
• Rejestr A (indeks OAh) określa umiejscowienie obszaru 40000h-5FFFFh.
• Rejestr B (indeks OBh) określa umiejscowienie obszaru 60000h-7FFFFh.

• Rejestr C (indeks OCh) określa umiejscowienie obszaru 80000h-9FFFFh.


• Rejestr D (indeks ODh) określa umiejscowienie obszaru AOOOOh-BFFFFh.

• Rejestr E (indeks OEh) określa umiejscowienie obszaru COOOOh-DFFFFh.

• Rejestr F (indeks OFh) określa umiejscowienie obszaru EOOOOh-FFFFFh.

W przypadku rejestrów A-C ustawiony bit oznacza przynależność danego obszaru do


tzw. On-Board RAM , tj. pamięci zainstalowanej na płycie głównej, a bit wyzerowany —
do pamięci na kartach rozszerzających. Z niewiadomych względów rejestry D-F kierują
się odwrotną logiką. Rozmiar pamięci zainstalowanej na płycie głównej, odpowiadający
ustawieniu bitów opisanych rejestrów, można ustalić na podstawie poniższej tabeli.

Rejestr Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


A 3Ó8K 352K 336K 320K 304K 288K 272K 256K
B 496K 480K 464K 448K 432K 416K 400K 384K
C 624K 608K 592K 576K 560K 544K 528K 512K
D 752K 736K 720K 704K 688K 672K 656K 64 OK
E 880K 864K 848K 832K 816K 800K 784K 768K
F 1008K 992K 976K 960K 944K 928K 912K 896K

Widoczny na rysunku A. 12 układ rejestrów A-F:


00000000
00000000
00000000
11111111
11111111
11111111
oznacza, że cała dostępna pamięć zainstalowana jest na płycie głównej.
668 Anatomia PC

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.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bity 7-6 typ modułów RAM:


00 = bank nie obsadzony,
01 = moduły SIMM/SIPP po 256 kB,
10 = moduły SIMM/SIPP po 1 MB,
11 = zarezerwowane;
bity 5-0 adres początkowy banku, zwykle wynoszący 000000.

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.

bit 7 bit 6 bit5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 czas trwania cyklu RAS:


0 = 3 takty zegara CPU,
1 = 5 taktów zegara CPU;
bit 6 liczba cykli oczekiwania (wait States, W/S):
0 = 0 W/S,
1 = 1 W/S;
bity 5-0 zarezerwowane.

Rejestr kontroli parzystości (indeks 28h)


Funkcję kontroli parzystości pamięci można włączyć lub wyłączyć za pomocą rejestru
kontroli parzystości.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bitO

bit 7 kontrola parzystości:


0 = włączona,
1 = wyłączona.
bity 6-0 zarezerwowane.

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.

Zmiany wprowadzane bezpośrednio w rejestrach rzadko kiedy przynoszą znaczny


wzrost mocy obliczeniowej systemu, a raczej mogą się przyczynić do jego dziwnego
zachowania. Ingerencję użytkownika w tym punkcie na ogół należy uznać za zbędną.
Powrót do menu nadrzędnego odbywa się poprzez naciśnięcie klawisza Esc.

Wywołanie opcji ENABLE/DISABLE VIDEO AND MAIN BIOS SHADOW powo­


duje wyświetlenie ekranu pokazanego na rysunku A. 13.

Rysunek A 13. EXTENDED CMOS s e t u p p ro g ra m v e r a . 1 . 5 3 (c )1 9 9 0 A m e r i c a n M e g a t r e n d s I n c .


Menu
konfiguracji SETUP S H A D O W R AM F O R 302 Go t o P r e v /N e x t R e g is t e r - Ü
Go t o P r e v /N e x t E n t r y
M A IN B IO S SHADOW A T F Û Û Û 0 H , 6 4 K ~>1 s c r o ll b it v a lu e p g u p /p g o n
pamięci V ID E O B IO S SHADOW A T C Û 0 0 0 H , 1 6 K -> 1 R e t u r n t o M A IN MENU <ESC>
[v id e o B IO S SHADOW A T C 4 0 0 Û H , 1 6 K
Shadow RAM -> i
M A IN B IO S SHADOW A T F 0 0 Q 0 H ,6 4 K -> 1

1 = SHADOW E N A B L E
0 = SHADOW D IS A B L E
amm

Przedstawione tu funkcje operują bezpośrednio na tych bitach rejestrów układu 82C302,


które sterują funkcją Shadow RAM dla wybranych obszarów. Jedynka na danej pozycji
bitowej oznacza wykorzystanie danego bloku jako pamięci Shadow , zaś zero wyłącza tę
funkcję.

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.

Setup komputera AT-486 opisany zostanie na przykładzie systemu CONTAQ-486


wyposażonego w AMI-BIOS produkcji American Megatrends, Inc. Płyta główna
dysponuje procesorem 80486 taktowanym zegarem 33 MHz. Na płycie zainstalowana
jest zewnętrzna pamięć podręczna (ang. Second Level Cache), zrealizowana w oparciu
o układy statycznych pamięci RAM. Pod pojęciem First Level Cache kryje się 8 kB
wewnętrznej pamięci podręcznej, zawartej w układzie scalonym 80486.
670 Anatomia PC

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.

Częstotliwość taktowania Częstotliwość pracy


Dzielnik
CPU magistrali
25 MHz 1/3 8.3 MHz
33 MHz 1/4 8.2 MHz
50 MHz 1/6 8.3 MHz
Asynchronicznie 7.2 MHz

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.

Minimalna pamięć systemu wynosi więc 4x256 kB = 1 MB. Po wypełnieniu banku 0


można zacząć zapełniać bank 1, ale musi on również zostać zapełniony całkowicie i 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ę 4x256
kB a bank 1 4x4 MB lub odwrotnie. Maksymalna ilość pamięci, którą można umieścić
na płycie wynosi więc 2x4x4 MB - 32 MB.

Uruchomienie programu Setup następuje po naciśnięciu klawisza Del w momencie


ukazania się na ekranie komunikatu
Hit <DEL> if you want to run SETUP

Komunikat ten wyprowadzany jest przez system po pomyślnym zakończeniu pierwszej


fazy procedur testujących POST i przejściu do testów pamięci.

Rysunek A. 14. przedstawia czołówkę omawianego programu Setup . Program pracuje


w kolorze, a komfort jego obsługi podnosi możliwość zmiany zestawu barw klawiszami
F2 i F3. Klawisze kursora T i 'l pozwalają na wybór opcji programu.
Program Setup 671

Rysunek A 14, B IO S SETU P PROGRAM - A M IB IQ S SETUP U T I L I T I E S


Cc) 1 9 9 1 A m e r i c a n M e g a t r e n d s i n c . , A l l R i g h t s R e s e r v e d
Menu główne
programu Setup STANDARD COMS SETUP
ADVANCED CMOS SETUP
486firm y A MI ADVANCED C H I P S E T SETUP
AUTO CONFIGURATION WITH POWER-QN D EFAU LTS
CHANGE PASSWORD
HARD D IS C U T I L I T I E S
W RITE TO CMOS AND E X I T
DO NOT W RITE TO CMOS AND E X I T

S t a n d a r d CMOS s e t u p f o r c h a n g i n g T im e , D ate, H a rd D i s k Type, etc.

E S C :E x it 1-}: sel F 2 /F 3 :C o lo r F 10:save & E x it

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.

Rysunek A. 15. B IO S SETUP PROGRAM - WARNING INFORMATION


(c ) 1 9 9 1 A m e rica n M eg atren d s I n c . , A l l R ig h t s R e s e r v e d
Komunikat ■■ ■ 1
■— — ^ M L> JJ^ _ ^ > u „ ,

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

d o any of th e fo llo w in g A fte r E n te rin g setu p


( ij A f t e r o p tio n s t o m ake s y s te m w o rk
(ii) L o a d B IO S s e t u p D e f a u l t s
( H i ) L o a d P o w e r-O n D e f a u l t s

H it <ESC> t o S t o p now, Any o t h e r Key to C o n tin u e

W ten sposób system przypomina, że niewłaściwe korzystanie z programu Setup może


spowodować zawieszenie komputera. W takiej sytuacji należy zrestartować system i:

• próbować przywrócić poprzednie nastawy, przy których system funkcjonował,

• zastosować jeden z proponowanych przez BIOS zestawów parametrów konfigu­


racyjnych.

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

powoduje załadowanie do CMOS-RAM zestawu parametrów gwarantujących poprawne


zachowanie systemu w najgorszych warunkach (ang. worst-case defaults). Odpowiednie
tablice wartości umieszczone są na stałe w pamięci ROM.

Rysunek A. 16. przedstawia ekran po wybraniu opcji STANDARD CMOS SETUP.


Umożliwia ona wprowadzenie elementarnych informacji konfiguracyjnych jak data, czas,
rodzaje zainstalowanych napędów dysków twardych i elastycznych oraz typ sterownika
monitora.

Rysunek A 16. B I O S S E T U P PROGRAM - S TA N D A R D CMOS S E T U P


(c ) 1991 A m e r i c a n M e g a t r e n d s I n c . , A l l R i g h t s R e s e r v e d
Menu
konfiguracji D a te wed, Jun 02 1993 B a s e memory : 6 4 0 KB
T im e (h o u r/m in /s e c 07 : 50 : 57 E x t . memory : 3 3 2 8 KB
systemu cyln Head wpcom L z o n e s e c t S iz e
H a rd d is k C: ty p e 4 7 = USER TY P E 989 12 0 0 35 2 0 3 MB
programu H a rd d is k D: ty p e Not in s ta lle d
F lo p p y d r iv e A: 1 . 4 4 MB, 3 . 5 "
Setup 486 F lo p p y d r iv e B: Not i n s t a l l e d Mon Tue Wed [ T h u jjF r i sat
F "
P rim a ry d is p la y V G A /P G A /E G A
K eybo ard i n s t a l 1 ed 30 31 1 2 5
3 4

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

Rozmiar dostępnej pamięci rozpoznawany jest przez system automatycznie. Typ 47


dysku twardego (User Type) umożliwia zdefiniowanie parametrów napędu o dowolnej
geometrii. Wybranie opcji KEYBOARD: NOT INSTALLED nie oznacza bynajmniej,
że system pozbawiony jest klawiatury, a jedynie to, że procedury POST omijać będą jej
diagnostykę.

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) ?

Odpowiedź twierdząca (naciśnięcie klawisza Y) powoduje opuszczenie programu Setup


bez zmiany zawartości pamięci CMOS-RAM.

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ć.

Po wejściu do menu ADVANCED CMOS SETUP mamy do dyspozycji ekran pokazany


na rysunku A. 17.
Program Setup 673

Rysunek A 17. B I O S S E T U P PROGRAM - A D V A N C E D CMOS S E T U P


(c ) 1 9 9 1 A m e ric a n M e g a tre n d s i n c . , A l l R ig h ts R e s e rv e d
Menu
T y p e m a tic R a te p ro g ra m m in g E n a b le d
dodatkowych T y p e m a tic R a te D e la y (m s e c ) 250
T y p e m a tic R a te (c h a r s /s e c ) 30
parametrów H ard D is c T yp e 4 7 ram A re a 0 :3 0 0
S y s t e m B o o t u p Num L o c k on
konfiguracyj nych w e ite k P ro ce sso r A bsent
F lo p p y D riv e seek A t Boot D is a b le d
programu S ys tem s o o t up s e q u e n c e c : , A:
E x t e r n a l C a c h e M em o ry E n a b le d
Setup 486 P assw o rd c h e c k in g o p tio n s s e tu p
shadow ram o p tio n B o th
M a in M em ory R e lo c a t io n E n a b le d

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

Każda z dostępnych tu opcji posiada niewielki tekst pomocy wywoływany klawiszem


F l. Teksty te wyświetlane są w prawej połowie ekranu.

A oto znaczenie poszczególnych opcji:

• Typematic Rate Programming —dopuszczenie tej możliwości {Enabled) pozwala


na zaprogramowanie opóźnienia i prędkości powtarzania znaków generowanych
przez klawiaturę, określanych w punkcie 2 i 3;

• Typematic Rate Delay - czas opóźnienia autorepetycji klawisza;


• Typematic Rate - prędkość powtarzania znaków przy stale naciśniętym klawiszu.
Powszechnie stosuje się szybką klawiaturę, tzn. minimalne opóźnienie równe
250 ms i maksymalną prędkość powtarzania równą 30 znaków na sekundę;

• 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 Num Lock — wybranie wartości ON powoduje inicjalizowanie


klawiatury do pracy w trybie Num Lock (niezbędny rozkaz przekazywany jest do
klawiatury tuż przed przekazaniem sterowania do procedury ładującej system
operacyjny), co zwalnia użytkownika z naciskania tego klawisza po załadowaniu
systemu. W trybie Num Lock klawisze bloku numerycznego nie pełnią funkcji
sterowania kursorem;
• Weitek Processor - opcja ta umożliwia zablokowanie {Disabled) koprocesora
arytmetycznego Weitek 3167 bez konieczności wyjmowania go z podstawki;

• Floppy Drive Seek At Boot —ustawienie wartości Disabled powoduje zaniecha­


nie prób uruchamiania napędów dysków elastycznych (charakterystyczne zapale­
nie lampki kontrolnej napędu, uruchomienie silnika i przejazd głowic) przez pro­
cedury diagnostyczne POST (możliwe jest uruchamianie komputera z dowolną
dyskietką włożoną do napędu). Opcja ma ogólnie na celu ochronę mechaniki
i głowic napędów przed uszkodzeniem;
674 Anatomia PC

• 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;

• External Cache Memory - dla celów diagnostycznych można wyłączyć działanie


pamięci podręcznej {Second Level Cache) zainstalowanej na płycie głównej.
W normalnych warunkach należy tu wybrać wartość Enabled , która pozwala na
znaczne przyspieszenie pracy systemu. Zwykle na płycie głównej zainstalowana
jest pamięć podręczna o wielkości 64 kB, 128 kB lub 256 kB;
• Password Checking Option - opcja ta pozwala na ustalenie, czy podanie hasła
ma być wymagane każdorazowo przy ładowaniu systemu {Always) czy tylko
przy próbach wejścia do programu Setup ;
• Shadow RAM Option - zawartość pamięci ROM przechowującej BIOS syste­
mowi i/lub BIOS karty graficznej może być skopiowana do pamięci RAM. Daje
to blisko czterokrotne przyspieszenie wykonywania procedur tych programów;

• Main Memory Relocation - należy stosować zawsze wartość Enabled , chyba że


system ma pełną obsadę pamięci, tj. 32 MB.

Wyboru wartości oferowanych w ramach każdej z opcji dokonuje się za pomocą


klawiszy PgUp i PgDn. Klawisz funkcyjny F5 {Old Values) powoduje przywrócenie
parametró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 standar­
dowych, które mogą być przydatne w próbach wyeliminowania przyczyn tajemniczego
zachowywania się (czytaj: niesprawności) systemu. Naciśnięcie klawisza Esc cofa nas
do ekranu pokazanego już na rysunku A. 14.

Rysunek A. 18. przedstawia ekran po przejściu do menu ADVANCED CHIPSET


SETUP. Wcześniej pojawia się wspomniany już tekst ostrzegawczy (patrz rysunek
A. 15), który należy zatwierdzić naciśnięciem dowolnego klawisza z wyjątkiem Esc.

Rysunek A. 18. B I O S S E T U P PROGRAM - A D V A N C E D C H I P S E T S E T U P


(O 1 9 9 1 A m e ric a n M e g a tre n d s i n c . , A l l R ig h ts R e s e rv e d
Menu
auto c o n fig F u n c tio n : E n a b le d
konfiguracji sram w r it e w a it s ta te s 1 W /S
SRAM R ead B u r s t c o n t r o l 3222S1ow
pamięci dram w r it e w a it s ta te 1 W /S
D RA M R e a d W a i t S t a t e 1 w /s 1
r a s p r e c h a r g e T im e 3 S y s c lk I
N o n -c a c h e a b te B lo c k -0 s iz e 6 4 KB
N o n -c a c h e a b le B lo c k -0 Base 6 4 0 KB
N o n -c a c h e a b le B lo c k -1 S iz e 6 4 KB 8
N o n -C a c h e a b le B lo c k -1 B ase 6 4 0 KB
Non C a c h e B lo c k 0 D is a b le d
Non C a c h e B lo c k 1 D is a b le d
S ys tem b io s i s c a c h e a b le E n a b le d
v id e o b io s is c a c h e a b le E n a b le d

( ESC: E x it I- t ( C t r l ) pu/ pd : M o d ify F l i H e l p E 2 /F 3 :c o lo r


F 5 :o ld v a lu e s F 6 ;B IO S se tu p D e f a u lt s F 7 :P o w e r on D e fa u lts
Program Setup 675

Każdy z punktów menu dysponuje krótkim tekstem pomocy, wyświetlanym w prawej


połowie ekranu po naciśnięciu klawisza F I.

Znaczenie poszczególnych opcji menu opisano poniżej:

• Auto Config Funciion -je ż e li opcja ta ma wartość Enabled, nastawy punktów 2—


6 tego ekranu są bez znaczenia, bowiem system dobiera automatycznie stosowne
parametry, bazując na własnych danych o zainstalowanym sprzęcie. W przeciw­
nym razie (Disabled) wymienione punkty muszą zawierać dane odpowiadające
ściśle parametrom obecnych w systemie komponentów i częstotliwości takto­
wania CPU;
• opcje dla pamięci RAM (DRAM) i Cache (SRAM) - pozycje 2-6.
Proponowane są następujące wartości parametrów:

Parametr/ CP U-Clock 20/25 MHz 33 MHz 50 MHz


SRAM Wait States 0 w /s 0 W/S 1 W/S
Burst Mode 2111 2111 3222
DRAM Write Wait States 0 w /s 1 W/S 1 W/S
DRAM Read Wait States 2 W/S 2 W/S 3 W/S
RAS Precharge Time 2 Sysclk 2 Sysclk 3 Sysclk

• N on-Cacheable Block (0/1) Size/Base - pozycje 7-10: opcja ta pozwala zdefinio­


wać dwa obszary pamięci, które nie będą podlegały działaniu pamięci podręcz­
nej (Cache);

• 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

Rysunek A. 19. B I O S S E T U P PROGRAM - C H A N G E PASSWORD


(c ) 1991 A m e ric a n M e g a tre n d s i n c . , A l l R ig h ts R e s e rv e d
Wprowadzań ie
hasła

En ter New P a s s w o r d :

u s e Maximum 6 a s c i i ch aracters, esc : E x it

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. 14.) następuje po naciś­
nięciu klawisza Esc.

Opisywany program Setup dysponuje również zestawem procedur przeznaczonych dla


dysków twardych. Rysunek A.20. przedstawia możliwe opcje tego punktu programu.

Rysunek A20. B I O S S E T U P PROGRAM - HARD D IS C U T IL IT Y


(c ) 1 9 9 1 A m e ric a n M e g a tre n d s In c ., A ll R ig h ts R e s e rv e d
Menu obsługi
c y ln Head wpcom LZone sect s iz e (m b )
dysków twardych H ard D is k C: T y p e : 47=USER TYPE 989 12 0 0 35 203
H ard D is k d : Type : Not in s ta lle 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

esc :Exi t |-t:s e l R 2 /F 3 :c o lo r

Należy przestrzec przed pochopnym użyciem którejkolwiek z tych funkcji. Wykonanie


każdej z nich powoduje nieodwracalne zniszczenie wszystkich obecnych na dysku
danych. Dysk twardy typu AT-BUS (a takie stosowane są obecnie w przeważającej
większości) poddany działaniu którejkolwiek z wyżej wymienionych operacji może się
po jej zakończeniu nie nadawać do użytku. Dyski tego typu współpracują bardzo ściśle
ze swoim zintegrowanym kontrolerem i żaden program nie jest w stanie poprawić ich
parametrów. Optymalny współczynnik przeplotu ( interleave) oraz administracja uszko­
dzonymi sektorami realizowane są przez kontroler danego dysku w sposób całkowicie
niewidoczny (i niemożliwy do zmiany) przez użytkownika.
Program Setup 677

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 .

Uruchomienie programu Setup następuje po naciśnięciu klawisza Del w momencie


ukazania się na ekranie komunikatu:
Press DEL to enter SETUP

Komunikat ten wyprowadzany jest przez system po pomyślnym zakończeniu pierwszej


fazy procedur testujących POST i przejściu do testów pamięci.

Rysunek A.21. przedstawia czołówkę omawianego programu Setup. Program pracuje


w kolorze, a komfort jego obsługi podnosi możliwość zmiany zestawu barw klawiszami
(Shift) F2. Klawisze kursora T, X, -» i pozwalają na wybór opcji programu.

Rysunek A.22. przedstawia ekran po wybraniu opcji STANDARD CMOS SETUP -


umożliwia ona wprowadzenie elementarnych informacji konfiguracyjnych jak data,
czas, rodzaje zainstalowanych napędów dysków twardych i elastycznych oraz typ
sterownika monitora.

Rozmiar dostępnej pamięci rozpoznawany jest przez system automatycznie. Typ 47


dysku twardego (User Define Type) umożliwia zdefiniowanie parametrów napędu o do­
wolnej geometrii. Z kolei typ dysku Auto sprawia, że podczas startu system automa­
tycznie rozpozna parametry podłączonych dysków twardych (wykorzysta do tego celu
rozkaz samoidentyfikacji dysku).
678 Anatomia PC

Rysunek A.21. ROM P C I / I S A B I O S ( 2 A 5 I A J 6 1 ) 1


CMOS S E T U P U T I L I T Y 1
Menu główne AWARD S O F T W A R E , I N C . i
............. .......... ........ ........................ ............ ...... .......
programu Setup - ---------------------------------------- 1 ----------------------- 1

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

LOAD SETUP DEFAULTS

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...

Rysunek A.22. ROM P C I / I S A B I O S ( 2 A 5 I A J 6 1 )


S T A N D A R D CMOS S E T U P
Menu AWARD S O F T W A R E , I N C .

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

programu TYPE C Y L S . HEADS PRECOMP LANDZONE SECTORS MODE


P R IM . MASTER ( OMb) A U tO 0 0 0 0 0 AUTO
Setup Pentium P R IM . SLAVE ( 0Mb) A U tO 0 0 0 0 0 AUTO
SEC. MASTER ( 0M b) A U tO 0 0 0 0 0 AUTO
SEC. SLAVE ( 0Mb) A U tO 0 0 0 0 0 AUTO

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) ?

Odpowiedź twierdząca (naciśnięcie klawisza Y) powoduje opuszczenie programu Setup


bez zmiany zawartości pamięci CMOS-RAM.

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ć.

Po wejściu do menu BIOS FEATURES SETUP mamy do dyspozycji ekran pokazany


na rysunku A.23. Każda z dostępnych tu opcji posiada niewielki tekst pomocy wywoły­
wany klawiszem F I.
Program Setup 679

Rysunek A.23. ROM P C I / I S A B IO S ( 2 A 5 IA I6 1 )


B IO S FEATURES SETUP
Menu AWARD SOFTWARE, IN C .
dodatkowych V i r u s w a rn in g :D i s a b le d v id e o B io s shadow ¡E n a b le d
CPU i n t e r n a l c a c h e :E n a b le d C 80Û Û --C B F F F F s h a d o w ¡D is a b le d
parametrów Extern al cache : E n a b le d C C O O Û -- C F F F F F s h a d o w ¡D is a b le d
Q u i c k Power on s e l f T e s t :E n a b le d DÛÔÛÛ-- D 3 F F F F S h a d o w ¡D is a b le d
konfiguracyj nych Boot S e q u e n c e :C , A D 40Û Û --D 7 F F F F S h a d o w ¡D is a b le d
swap F l o p p y D r i v e ¡D is a b le d D 8Û Û Û --D B F F F F s h a d o w ¡D is a b le d
programu B o o t up F l o p p y s e e k ¡E n a b le d DCÛQQ-- D F F F F F s h a d o w ¡D is a b le d
B o o t up NurrtLock S t a t u s ¡o n
Setup Pentium B o o t up S y s t e m s p e e d ¡H ig h
Memory P a r i t y c h e c k ¡E n a b le d
s e c u r i t y O p tio n :s e tu p

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

A oto znaczenie poszczególnych opcji:


• Virus Warning —włączenie tej opcji ( Enabled) uniemożliwia zapis danych w boot-
sektorze dysku twardego i dyskietek, dzięki czemu uniemożliwiona jest infekcja
większości wirusów dyskowych;
• CPU Internal Cache — opcja ta umożliwia wyłączenie pamięci cache umiesz­
czonej w procesorze Pentium. W normalnych warunkach opcja ta powinna być
włączona {Enabled), gdyż wielokrotnie przyspiesza działanie systemu;

• External Cache - dla celów diagnostycznych można wyłączyć działanie pamięci


podręcznej {Second Level Cache) zainstalowanej na płycie głównej. W normal­
nych warunkach należy tu wybrać wartość Enabled , która pozwala na znaczne
przyspieszenie pracy systemu. Na płycie głównej może być zainstalowana
pamięć podręczna o wielkości 256 kB, 512 kB lub 1 MB;
• Quick Power On S elf Test - włączenie tej opcji ( Enabled) powoduje pominięcie
niektórych testów podczas startu systemu, dzięki czemu skraca się czas startu
systemu. Opcję tę warto jest wyłączyć podczas testowania systemu;

• 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

• Boot Up Num Lock Status - wybranie wartości On powoduje inicjalizowanie


klawiatury do pracy w trybie Num Lock (niezbędny rozkaz przekazywany jest do
klawiatury tuż przed przekazaniem sterowania do procedury ładującej system
operacyjny), co zwalnia użytkownika z naciskania tego klawisza po załadowaniu
systemu. W trybie Num Lock klawisze bloku numerycznego nie pełnią funkcji
sterowania kursorem;
• Boot Up System Speed - wybranie wartości High powoduje, że po uruchomieniu
komputer pracuje w trybie Turbo;

• Memory Parity Check - wyłączenie tej opcji (Disabled) powoduje wyłączenie


kontroli parzystości przez BIOS. Opcja ta powinna być włączona przy korzysta­
niu z 36-bitowych modułów SIMM PS/2 (32 bity + 4 bity parzystości), a wyłą­
czona podczas korzystania z 32-bitowych modułów pamięci;
• Security Option - opcja ta pozwala na ustalenie, czy podanie hasła ma być wy­
magane każdorazowo przy ładowaniu systemu {Always) czy tylko przy próbach
wejścia do programu Setup ;
• Video BIOS Shadow - zawartość pamięci ROM BIOS karty graficznej może być
skopiowana do pamięci RAM. Daje to blisko czterokrotne przyspieszenie wy­
konywania jego procedur;

• C80Q0-DFFFF Shadow - zawartość pamięci ROM przechowującej BIOS dodat­


kowych kart rozszerzających możliwości systemu może być skopiowana do pa­
mięci RAM. Daje to blisko czterokrotne przyspieszenie wykonywania procedur
tych programów.

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.

Znaczenie poszczególnych opcji menu opisano poniżej:

• Auto Configuration - jeżeli opcja ta ma wartość Enabled , nastawy punktów 2-6


tego ekranu są bez znaczenia, bowiem system dobiera automatycznie stosowne
parametry, bazując na własnych danych o zainstalowanym sprzęcie. W przeciw­
nym razie {Disabled) wymienione punkty muszą zawierać dane odpowiadające
ściśle parametrom obecnych w systemie komponentów i częstotliwości takto­
wania CPU;
Program Setup 681

Rysunek A.24. ROM P C I / I S A B I O S ( 2 A 5 I A J 6 1 )


CMOS S E T U P U T I L I T Y
Menu C H IP S E T FEATURES SETUP

konfiguracji A u to c o rtf I g u ra tio n ¡E n a b le d L a te n c y fro m A D S # s ta tu s :2 T


pci c lo c k Freq u en cy ¡C P U C L K /2
pamięci D RA M R e a d w a i t s t a t e s :3 T Max. B u rs ta b le Range :0.5Kb
D RA M w r i t e w a i t s t a t e s :2 T c pu / p c i B u r s t Mem. w r i t e ¡D is a b le d
E x te rn a l c a c h e wb/ wt : wt c pu / p c i P o s t Mem. w r i t e :D is a b le d
i n t e r n a l c a c h e wb/ wt :WB
DRAM R e l o c a t e ( 2 , 4 & 8 m ) :D is a b le d N o n -c a c h e a b le B lo c k l ¡D is a b le d
SRAM s p e e d o p t i o n ¡F a s te r B lo c k 1 s t a r t ADDRESS :05Û Q Ô Û Û h
B u rst cach e r/ w c y c le :2 T B lo c k 1 s i z e ¡ 6 4 KB
B u r s t SRAM B u r s t C y c l e :4—
1—1—
1
s lo t R e fre s h ( 1 : 4 ) ¡D is a b le d
S ys tem b io s c a c h e a b le ¡D is a b le d
v id e o b io s c a c h e a b le ¡D is a b le d
Esc Q u it t J— s e l ect
Fl Help P U /P D /+ /- M o d ify
F5 o ld v a lu e (s h ift)F 2 C o l or
F6 Load b io s D e fa u lts
F7 Load S e tu p D e fa u lts

Opcje dla pamięci RAM (DRAM) i Cache (SRAM) - pozycje 2-3 i 6-10.
Proponowane są następujące wartości parametrów:

CPU-Clock 75 MHz 90 MHz 100 MHz


DRAM Read Wait Status 2T 3T 4T
DRAM Write Wait Status 2T 3T 3T
SRAM Speed Options Faster Faster Slower
Burst Cache R/W Cycle IT 2T 3T
Burst SRAM Burst Cycle 3-1-1-1 4-1-1-1 4-1-1-1

Opcje External Cache WB/WT i Internal Cache WB/WT określają sposób zapisu
danych do pamięci cache;

System/Video BIOS Cacheable - pozycje 11-12: opcje te umożliwiają {Enabled)


wykorzystanie pamięci podręcznej w odniesieniu do BIOS-u systemowego
i BIOS-u sterownika graficznego. Obie opcje powinny być włączone (.Enabled );
opcje dla magistral PCI i ISA - pozycje 13-18: opcje te umożliwiają ustalenie
częstotliwości i trybu pracy magistrali PCI i częstotliwości pracy magistrali ISA.
Na niektórych typach płyt parametry te są ustalane przy pomocy zwór, w celu
uniknięcia ingerencji przez niepowołane osoby, gdyż częstotliwości pracy magi­
stral mają duży wpływ na stabilne działanie systemu;

Non-Cacheable Block 1 - pozycje 19—21: opcja ta pozwala zdefiniować obszar


pamięci, który nie będzie podlegał działaniu pamięci podręcznej {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.

Po wybraniu tej opcji zostaje wyświetlony ekran pokazany na rysunku A.25.


682 Anatomia PC

Rysunek Æ25. ROM P C I / I S A B I O S ( 2 A 5 I A J 6 1 )


CMOS S E T U P U T I L I T Y
Zarządzanie P O W ER M A N A G E M E N T S E T U P

systemem Power M anagem ent :M a x s a v i n g Ï


**P M T im e r * *
pm c o n tr o l By apm :Yes IR Q l-1 5 A c t i v i t y : E n a b le
oszczędzania v id e o o ff o p tio n :S u s p ,s tb y -> Q F F VGA A c t i v i t y ¡D is a b le
v id e o o f f M e th o d : B la n k S c re e n M o n ito r IR Q 5 ¡E n a b le
energii Doze Speed ( d iv b y ) :2 M o n it o r I R Q 7 ¡E n a b le
s ta n d b y speed (d iv by) ¡3 M o n it o r IR Q 9 ¡E n a b le
M o n i t o r IR Q 1 Û ¡E n a b le
* * pm T im e r * * M o n ito r IR Q ll ¡E n a b le
HDD P o w e r D ow n D is a b le M o n i t o r IR Q 1 5 ¡E n a b le
D oze Mode 20 sec
S ta n d b y Mode 20 sec
S u sp en d Mode 20 sec

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

Poniżej opisano znaczenie poszczególnych opcji:

• Power Management - opcja ta umożliwia wybranie trybu pracy układu oszczę­


dzania energii;

• P M Control by A P M - wybranie Yes sprawia, że układ oszczędzania energii za­


rządzany jest przez APM (Adaptor Power Management);
• Video Option OFF - opcja ta, umożliwia określenie, w których trybach oszczę­
dzania energii karta graficzna ma być wyłączona;

• 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;

• grupa opcji oznaczona **PM Event** umożliwia wykluczenie poszczególnych


urządzeń spod kontroli systemu 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.

Po wybraniu tej opcji zostaje wyświetlony ekran pokazany na rysunku A.26.


Program Setup 683

Rysunek A.26. ROM P C X / I S A B I O S ( 2 A 5 I A J 6 1 )


P C I C O N F IG U R A T IO N SETUP
Menu AWARD S O F T W A R E , I N C .

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

Znaczenie poszczególnych opcji opisano poniżej:


• grupa opcji Slot # Using INT # - umożliwia przypisanie przerwań magistrali PCI
urządzeniom podłączonym do określonych gniazd magistrali PCI. Wybranie
wartości AUTO sprawi, że podczas uruchamiania komputera system automatycz­
nie przypisze urządzeniom odpowiednie przerwania;
• grupa opcji # Avilahle IRQ określa numery przerwań magistrali ISA, które mogą
być wykorzystane do mapowania przerwań magistrali PCI;
• PC IIRQ Actived By - określa sposób wywoływania przerwania PCI.
• PCI IDE IRQ Map To - wybranie opcji PCI-AUTO sprawi, że system automa­
tycznie dokona mapowania przerwań kontrolerów dysków twardych;

• Primary/Secondary IDE IN T # - określa przerwania PCI przypisane kontrolerom


dysków twardych.

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.

Opisywany program Setup dysponuje również zestawem procedur do wykrywania para­


metrów zainstalowanych dysków twardych IDE (IDE HDD AUTO DETECTION).
Opcja ta nie jest niezbędna, gdyż dubluje możliwość automatycznego wykrywania
dysków podczas restartu systemu (Typ dysku Auto w STANDARD CMOS SETUP).
684 Anatomia PC

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:

• wystawia adres portu na magistrali adresowej,

• wystawia zawartość akumulatora na magistrali danych,


• aktywuje sygnał -IOW,

• aktywuje sygnał ALE.

Dekodery adresowe współpracujące z portami muszą więc podczas każdego aktywo­


wania sygnału ALE porównywać własny adres z aktualnym stanem szyny adresowej.
W naszym przykładzie dekodowane są linie A 0-A 9, co ogranicza przestrzeń adresową
do obszaru 000h-3FFh. Osiem bardziej znaczących linii tego zestawu (A 2-A 9) obsługi­
wanych jest przez 8-bitowy komparator 74688, a 4-bitowy komparator 7485 porównuje
stan pozostałych dwóch linii (A0-A1).
3
686 Anatomia PC

Rysunek B. 1. 74574
V cc

Schemat 8x7406 8 x 2700


2 2
eksperym en talnej D7 DO Q 0 P R Z Y K Ł A D K O D O W A N IA
3 3|
karty D6 4 4
D1 Q1 ADRESU KARTY
D5 D2 Q 2 S! S2 S3 S4 S5 S6 S7 S8 S9 SIO
rozszerzającej D4
5 5
D3 Q 3 A9 A8 A7 A6 A5 A4 A3 A2 A1 AO
6 e|
D3 D4 Q 4
HEX: 3 0 0
7 7|
02 8 8
D5 0 5 B IN ; 1 1 0 0 0 0 0 0 0 0
D1 06 0 6
S1-S10: OFF OFF ON ON ON ON ON ON ON ON
9 9|
DO 07 0 7

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

Ponieważ nasz przykładowy port jest jednokierunkowy (realizowana jest wyłącznie


instrukcja out port, AL), musi reagować jedynie na aktywny (równy zero) sygnał
~IOW. Dla uproszczenia układu porównanie to realizowane jest na jednym z dwóch
pozostałych wolnych wejść komparatora 7485.
i

Widoczny na rysunku B .l. zestaw przełączników S I-S I O umożliwia nastawienie dowol­


nego adresu z obszaru 000h~3FFh i obrazuje ideę wyboru adresu portu. W praktycz­
nych zastosowaniach połączenia takie dokonywane są na stałe lub co najwyżej mody­
fikowane są najmniej znaczące bity - daje to pewne niewielkie pole manewru.

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

innym urządzeniem wejścia-wyjścia. W ten sposób można niezależnie od jakiegokol­


wiek oprogramowania nadzorować np. stan portu szeregowego o adresie 3F8h,

Ze względów bezpieczeństwa magistrala adresowa odseparowana jest od układów do­


datkowych za pomocą bramek 74245.

Sygnały wyjściowe z komparatorów adresu (oraz -IOW ) składane są za pomocą dwóch


bramek NAND i tworzą sygnał wyzwalający zespół przerzutników zatrzaskowych
74574. Aktualny stan szyny danych zostaje zapamiętany (zatrzaśnięty) w przerzutni-
kach. Ponieważ do każdego z bitów rejestru istnieje niezależny dostęp, można tu mówić
o prostym układzie sterowania 8-kanałowego. Sygnał wyjściowy z bramek 7406 może
wysterować małe odbiorniki, np, diody świecące lub czułe przekaźniki.

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.

Wykorzystywane sygnały magistrali


D0-D7 (Data)
8-bitowa magistrala danych. W analogiczny sposób można konstruować układy portów
16-bitowych wyprowadzając linie D8-D15 i odpowiednio poszerzając ilość przerzutni­
ków portu.

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.

ALE (Address Latch Enable)


Wysoki poziom logiczny tego sygnału informuje, że stan szyny adresowej jest ustab­
ilizowany (zawiera ważny adres). Jest to dla wszystkich podłączonych do magistrali
urządzeń hasłem do rozpoczęcia dekodowania adresu i próby dopasowania go do
adresów swoich rejestrów.
688 Anatomia PC

-IOW (Input/Output Write)


Sygnał ten informuje o dostępie procesora do przestrzeni wejścia-wyjścia w celu zapisu.
Stanowi aktywnemu odpowiada niski poziom logiczny.

+5V/GND
Napięcie zasilające (Vcc) i masa systemowa.

Zastosowane układy scalone


Opis zastosowanych układów scalonych odnosi się do serii 74xxx. W praktycznych za­
stosowaniach należy się posługiwać nowocześniejszymi układami grupy 74LSxxx lub
74ALSxxx, które zachowują pełną zgodność na poziomie logicznym i wyprowadzeń,
ale pobierają znacznie mniej prądu i - co ważniejsze - w mniejszym stopniu obciążają
magistralę swoimi wejściami. Układy ALS są ponadto szybsze.

74688 (Komparator 8-bitowy)


Układ ten porównuje dwie liczby ośmiobitowe LI i L2. Liczba LI doprowadzana jest
do wejść P0-P7 a liczba L2 do wejść Q0-Q7. Jeżeli wszystkie odpowiadające sobie po­
zycje bitowe LI i L2 są sobie równe, tzn. PO = Q0, PI = Q l, ..., P7 = Q7 oraz wejście
sterujące -COMP = 0, to wyjście ~P = ~Q znajduje się na niskim poziomie logicznym.

74245 (Ośmiokrotny nadajnik-odbiornik linii - transceiver)


Układ ten jest zestawem ośmiu trójstanowych buforów dwukierunkowych (nadajników-
odbiomików linii). Bufory A1B1-A8B8 mogą pracować w kierunku A—>B, B—»A lub
też ich końcówki mogą znajdować się w stanie wysokiej impedancji (tzw. trzecim stanie
logicznym, Z), co praktycznie równoważne jest przerwie na liniach A;Bj {i - 1...8).
Wejście DIR {Direction) steruje kierunkiem pracy buforów, a wejście ~CS {Chip
Select) wprowadza układ w stan wysokiej impedancji (Z).

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

74574 (Ośmiokrotny przerzutnik D)


Układ stanowi zestaw 8 przerzutników typu D ze wspólnym wejściem zegarowym.
Podanie na końcówkę sterującą -C S logicznej jedynki wprowadza cały zespół w stan
wysokiej impedancji (Z). Jeżeli ~CS = 0, narastające zbocze impulsu zegarowego C
przepisuje stan wejść Di do odpowiednich wyjść Qi (/ = 0 ... 7). Do czasu nadejścia
następnego impulsu zegarowego poziom wyjść Q\ nie będzie się zmieniał, niezależnie od
stanu wejść Dj. Można też powiedzieć, że dane zostały zatrzaśnięte (ang. latek) w re­
jestrze.

7485 (Komparator 4-bitowy)


Układ porównuje dwie liczby czterobitowe LI i L2 doprowadzone do wejść P0-P3
i Q0-Q3. Możliwa jest jedna z trzech sytuacji:

• LI - L2,
• LI > L2,

• L 1<L 2,
czemu daje wyraz stan wyjść P < Q, P - Q i P > Q.

Układy 7485 często łączone są kaskadowo dla uzyskania możliwości porównywania


liczb o długości większej od 4 bitów. W tym celu komparator 7485 wyposażony jest
w wejścia sygnałów przeniesienia P < Q , P = Q i P > Q o d układu wyższego poziomu.

W naszym prostym przykładzie wykorzystywane jest jedynie porównywanie typu P=Q.


Równie dobrze można tu zastosować część 8-bitowego komparatora 74688 lub inne
rozwiązanie.

7400 (4 bramki NAND)


Układ zawiera cztery dwuwejściowe bramki typu NAND. Wyjście bramki NAND znaj­
duje się na niskim poziomie logicznym wtedy i tylko wtedy, gdy wszystkie wejścia po­
siadają wysoki poziom logiczny.

Y Wyjście
0 0 1
0 1 1
1 0 1
1 1 0

7406 (Sześciokrotny inwerter O/C)


Zestaw odwracających fazę bramek z tzw. otwartym kolektorem (ang. Open Collector,
O/C). Bramka taka nadaje się do sterowania diod LED lub małych przekaźników;
wymaga ona dodatkowego rezystora „podciągającego”.

i
690 Anatomia PC

•l
CD-ROM dołączony do książki 691

Do książki dołączony jest CD-ROM zawierająca ciekawe programy freeware, shareware


i Public Domain umożliwiające kontrolę podzespołów komputera, lepsze poznanie zasad
jego działania i ułatwiające wykorzystanie jego możliwości.

Materiały te podzielone są na następujące grupy:


• Dokumentacja
• Dane procesora AMD K5 w formacie PDF
• Dane procesora AMD K6
• Opis różnic między wyprowadzeniami procesora Cyrix 6x86 a Pentium
(P54C) w formacie PDF
• Lista procesorów Aada Offermana w formacie PDF
• Programy pracujące w środowisku DOS
• AMIDIAG PC Diagnostic Software v5.20f
• AMI Setup v2.99
• ATAINF Version 1.3
• BRiNDYS CAT v2.60
• CACHECHK v4
• CD Index
• CPCEmu v l.5
• CPE v5.2
• CyrixID Sample Code v2.01
692 Anatomia PC

• DR. HARDWARE SYSINFO v4.0e


• Fellow V0.3.2a
• HWiNFO v3.0.7
• Multiple Arcade Machine Emulator v0.31
• Parallel Port Information System v 1,45
• UAE
• VICE vO. 14.2
• Programy pracujące w środowisku Windows 3,x
• ComSpy3x for Windows 3,x
• ExeSpy3x for Windows 3,x
• Hex Workshop v2.20
• Memory Monitor vl .0
• Tardisv3.0
• Tavultesoft Keyboard Manager v3.2
• WinZip 6.3
• Yet Another Windows Program Installer 2.3
• Programy pracujące w środowisku Windows 3.x i Windows 95
• 4DOS v6.01
• ComSpeed v2.15
• Keys 2.1
• SafePC v4.1
• Setkey
• System Messenger
• Programy pracujące w środowisku Windows 3.x, Windows 95 i Windows NT
• 32bit Fax
• Calculus 2.0
• Chiefs Installer Pro v3.60
• CPUInfo v l.l
• Nokia Monitor Test v 1.0a
• OEM_ANSI v4.01
• ScanBinv5.0
• Programy pracujące w środowisku Windows 95
• 95 Multi Booter v3.0
• A C s Backup for Win95 v 1.9.2
• BCM Diagnostics vl .01.02
• Bench32 v l bcta3
• ConCat V2.0
CD-ROM dołączony do książki 693

• CPU Load V 1.0


• CPUMeter
• ComSpy 98 forWindows 98 and Windows 95
• ExeSpy98 for Windows 98 and Windows 95
• EASTem InfoPro v2.0
• MegaLoad 2.0
• MemoryMonitor98 PRO for Windows 98 and Windows 95
• MemoryMonitor98 STD for Windows 98 and Windows 95
• ODBCSpy98 for Windows 98 and Windows 95
• ProcessExplorer98 for Windows 98 and Windows 95
• RegistryMonitor98 for Windows 98 and Windows 95
• SetupMonitor98 for Windows 98 and Windows 95
• Rosenthal Utilities
• SiSoft Sandra 98
• System Information v2.0
• Syslnfo 1.0
• System Information v l .5
• Tardis v4.0
• TechFacts 95 v l.3 0
• TEXTDOW 2.2
• TrayMeter V 1.00
• Programy pracujące w środowisku Windows 95 i Windows NT
• Accent Composer v 1.01
• AddLinkvl.01
• AIM Key v 1.2
• ASSISTBAR 98 VERSION 2.1
• Audiotools v 1.21
• Beyond Compare v 1.6c
• B u zofvl.44
• Cabinet Manager 97a vl.5.25
• CDCOPY V4.500
• CliBench Mk II vl.0.0
• Clip'nSave v2.1
• CPUMon
• CPU Indicator v 1.1
• Disk Usage v l . 2
• EasyCOM vl.O
694 Anatomia PC

• 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

Ponadto na CD-ROM-ie znajdują się wersje demonstracyjne pakietów Norton Utilities


3.0 for Windows 95 i Norton Antivirus, oraz przeglądarki internetowe: Microsoft Inter-!
net Explorer 4 (wraz z Service Packiem 3 dla Windows NT 4PL) i Netscape Navigator j
4.05. !
« c
4

I jeszcze przypomnienie. Shareware nie oznacza darmowego programu - to tylko forma j


jego dystrybucji. Program shareware można testować przez ściśle określony czas (podany | s

w licencji) bez uiszczania żadnych opłat. Po tym okresie należy program zarejestrować j i

(płacąc producentowi programu niewielką opłatę licencyjną) lub zdeinstalować. !

You might also like