Helion Rozbudowa i naprawa komputera, rozdział 7




Helion - "Rozbudowa i naprawa komputera", rozdział 7






Rozdział z książki "Rozbudowa i naprawa
komputerów PC". © 1999 Wydawnictwo
Helion








Rozdział 7.Pamięć
Scott Mueller



W tym rozdziale zostanie omówiona pamięć, zarówno od strony
budowy, jak i wykorzystania przez komputer. Na początku zdefiniujemy, czym jest
pamięć, jakie zajmuje miejsce w architekturze komputerów PC oraz w jaki sposób
działa. Omówimy różne typy, szybkości oraz obudowy układów pamięci, które możesz
kupić i zainstalować w komputerze.
Zostanie również omówiona logiczna organizacja pamięci,
zdefiniowane różne jej obszary oraz ich wykorzystanie z punktu widzenia systemu.
Ponieważ logiczna organizacja pamięci i jej zastosowania znajdują się w "umyśle"
procesora, jest ona, wraz z mapowaniem pamięci, jednym z najtrudniejszych do
zrozumienia pojęć w świecie pecetów. Rozdział ten zawiera użyteczne informacje
zdejmujące towarzyszącą pamięci zasłonę
tajemniczości.
Podstawowe wiadomości o pamięci


Pamięć jest tymczasowym nośnikiem danych, muszą się w niej
znajdować wszystkie programy i dane przetwarzane w danej chwili przez procesor
komputera. Pamięć jest nośnikiem tymczasowym, ponieważ wszystkie dane i programy
pozostaną w niej tylko do momentu wyłączenia lub zresetowania systemu. Dlatego
właśnie przed zresetowaniem lub wyłączeniem komputera powinno się zapisać na
trwalszy nośnik (najczęściej twardy dysk) wszystkie zmiany, by w przyszłości
można je było odtworzyć.
Pamięć często określa się mianem RAM, co jest skrótem od Random
Access Memory (pamięć o losowym dostępie). Nazywa się ją tak dlatego, iż można
losowo (i szybko) uzyskać dostęp do każdej pozycji w pamięci. Gdy mówimy o
pamięci komputera, najczęściej mamy na myśli systemową pamięć RAM,
przechowującą uruchomione programy i dane przetwarzane przez procesor.
Skrótem RAM można określać zarówno same kości pamięci, jak i
jej logiczną organizację oraz mapowanie w systemie. Pod pojęciami mapowania i
logicznej organizacji pamięci kryje się sposób, w jaki są mapowane adresy
pamięci w zainstalowanych układach oraz rozmieszczenie różnych typów informacji
systemowych w określonych adresach.
Początkujący użytkownicy komputerów często mylą pamięć z
pojemnościami dysków, ponieważ pojemność zarówno pamięci, jak i dysków wyraża
się w megabajtach i gigabajtach. Najlepszą analogią wyjaśniającą zależności
między pamięcią a dyskami, jaką znalazłem, jest porównanie ich do małego biura z
biurkiem i kartoteką.
W tej popularnej analogii kartoteka reprezentuje twardy dysk, w
którym zarówno programy, jak i dane są przechowywane przez dłuższy czas. Biurko
przedstawia pamięć systemową, dzięki której pracująca przy biurku osoba
(działająca jak procesor) ma bezpośredni dostęp do każdej położonej na nim
teczki (pliku). Każda teczka, zanim rozpocznie się nad nią pracę, musi zostać
przeniesiona z kartoteki na biurko. Jeśli biurko jest wystarczająco duże, można
będzie otworzyć na nim w tym samym czasie wiele teczek; podobnie jest z
komputerem
jeśli ma więcej pamięci, będzie można na nim uruchomić więcej lub
większe programy.
Zwiększenie pojemności twardego dysku w komputerze jest tym
samym, co zaopatrzenie biura w większą kartotekę
będzie można przechowywać
przez dłuższy czas więcej plików (teczek). Zwiększenie pojemności pamięci jest
podobne do wymienienia biurka na większe
będziesz mógł pracować w tym samym
czasie z większą liczbą programów i danych.
Istnieje jednak poważna różnica pomiędzy pracą biura a tym, co
w rzeczywistości dzieje się z danymi w komputerze
w przeciwieństwie do biura,
dane umieszczane w pamięci komputera są tylko kopiami, podczas gdy
oryginalne pliki nadal pozostają na twardym dysku. Zwróć uwagę, że z powodu
tymczasowej natury pamięci, wszystkie zmienione pliki muszą być ponownie
zachowane na dysku, zanim zostaną utracone w wyniku wyłączenia lub
zrestartowania komputera. Jeśli nie zapiszesz zmian dokonanych na pliku
pozostającym w pamięci, oryginalny plik na twardym dysku pozostanie
niezmieniony. To jest tak, jakby w chwili zamknięcia biura wyrzucano wszystkie
pozostałe na biurku teczki, podczas gdy oryginały nadal pozostają w
kartotece.
Pamięć tymczasowo przechowuje uruchomione programy oraz
wykorzystywane przez nie dane. Kości RAM czasem są również nazywane pamięcią
ulotną, ponieważ gdy wyłączysz komputer lub gdy nastąpi przerwa w dostawie
energii, wszystko, co przechowuje RAM, zostanie utracone, z wyjątkiem tego, co
zostało zachowane na dysku. Z powodu ulotnej natury pamięci RAM, wielu
użytkowników komputerów ma zwyczaj częstego zapisywania swojej pracy (niektóre
programy potrafią robić to automatycznie w zdefiniowanych przez użytkownika
odstępach czasu).
Uruchamiając program komputerowy, powodujesz przekopiowanie go
do pamięci, w której pozostaje aż do zakończenia działania. Procesor
wykonuje znajdujące się w RAM-ie instrukcje; w pamięci RAM przechowywane są
również wyniki. Gdy korzystasz z edytora tekstu, dane o naciśniętych przez
ciebie klawiszach przechowywane są w pamięci RAM, podobnie liczby wykorzystywane
do obliczeń. Gdy wybierasz opcje zachowania danych, informujesz program, że
chcesz zapisać zawartość RAM-u w postaci pliku na twardym dysku.
Z fizycznego punktu widzenia, RAM jest zbiorem układów lub
modułów zawierających kości pamięci, które umieszcza się w gniazdach na płycie
głównej. Te układy lub moduły różnią się od siebie zarówno zasilaniem, jak i
wymiarami i aby poprawnie funkcjonowały, muszą być kompatybilne z systemem, w
którym mają zostać zainstalowane. W tym rozdziale omówimy różne typy pamięci
instalowane w komputerach.
Pamięć, zaraz po procesorze, może być jednym z najdroższych
elementów nowoczesnego komputera PC, mimo iż w ciągu ostatnich lat znacznie
spadły jej ceny. Nawet mimo spadku cen, nadal musisz wydać na pamięć do dwóch
razy więcej niż na płytę główną. Zanim w połowie 1996 r. gwałtownie spadły ceny,
pamięć przez wiele lat sprzedawano po stałej cenie około 160 zł za megabajt. 16
MB (w tym okresie typowa ilość pamięci w komputerze domowym) kosztowało ponad
2400 zł. Pamięć była wówczas droższa od swej wagi w złocie. Tak wysokie ceny
przyciągały uwagę przestępców, co zaowocowało wieloma dużymi napadami z użyciem
broni. Kradzieże te były w równym stopniu wywołane wysokimi cenami pamięci, jak
i dużym na nie popytem oraz praktycznie rzecz ujmując, brakiem możliwości
śledzenia skradzionych układów czy modułów. Po serii napadów z użyciem broni i
innych kradzieżach, producenci układów pamięci zaczęli zatrudniać uzbrojoną
ochronę i wprowadzili dodatkowe procedury bezpieczeństwa.
Pod koniec 1996 r. ceny pamięci ustabilizowały się na poziomie
około 16 zł za megabajt; czyli na przestrzeni niecałego roku cena 1 MB pamięci
spadła dziesięciokrotnie. Po początkowym gwałtownym załamaniu się, ceny pamięci
nadal opadały i ostatnio wynoszą około 6 zł za MB lub około 400 zł za 64 MB,
typową ilość pamięci w dzisiejszych komputerach domowych. W obecnie kupowanych
komputerach instalujemy około czterech razy więcej pamięci niż w komputerach
będących standardem kilka lat temu i wydajemy na nią około 1/6 tego, ile
musielibyśmy zapłacić, zanim załamały się ceny.
Pamięć kosztuje co prawda znacznie mniej niż kilka lat temu,
ale okres jej użyteczności uległ znacznemu skróceniu. Szybciej niż kiedykolwiek
wcześniej ukazują się na rynku nowe układy pamięci i o wiele bardziej
prawdopodobne jest, że w nowym komputerze będzie należało instalować inne kości
niż w komputerze już posiadanym. Oznacza to, że jeśli naprawa lub
zmodernizowanie komputera wymaga wymiany płyty głównej, może się okazać, że
musisz wymienić również układy pamięci. Szansa na wykorzystanie w nowej
płycie głównej zainstalowanych w posiadanym już komputerze pamięci jest znikoma.
W przyszłości sytuacja prawdopodobnie nie ulegnie zmianie i płyta główna, którą
kupisz za rok, będzie musiała być obsadzana innymi od stosowanych dzisiaj
układami pamięci.
Z tego powodu ważnym jest, byś poznał wszystkie typy aktualnie
sprzedawanych pamięci, dzięki czemu łatwiej będzie ci zdecydować, jakiego
rodzaju pamięci wymaga dany komputer, z większą łatwością będziesz mógł również
planować przyszłe modernizacje i naprawy.
Typy pamięci


Aby lepiej zrozumieć pamięć, należy poznać role, jakie
spełniają jej różne typy w systemie. W nowoczesnych komputerach PC stosuje się
przede wszystkim trzy typy pamięci:

ROM. Read Only Memory (Pamięć tylko do odczytu)

DRAM. Dynamic Random Access Memory (Dynamiczna pamięć o losowym
dostępie)

SRAM. Static RAM (Statyczna pamięć RAM)

ROM


ROM jest typem pamięci, która może stale przechowywać dane.
Pamięć ROM jest nazywana pamięcią tylko do odczytu, ponieważ zmiana zawartych w
niej danych jest albo bardzo trudna, albo niemożliwa. ROM jest również nazywana
pamięcią nieulotną, ponieważ wszystkie znajdujące się w niej dane nie ulegną
wymazaniu nawet po wyłączeniu komputera. Z tego powodu ROM jest idealny do
przechowywania instrukcji wykonywanych przy uruchamianiu się systemu.
Zauważ, że ROM i RAM, pomimo opinii niektórych ludzi, nie są
swoimi przeciwieństwami. W rzeczywistości ROM stanowi część pamięci systemowej.
Innymi słowy, część adresów pamięci RAM jest mapowana (czytaj: przypisana) na
jeden lub więcej układów ROM. Bez tego komputer nie mógłby się uruchomić,
ponieważ po włączeniu zasilania procesor nie miałby w pamięci żadnego programu,
który mógłby wykonać.



>> Patrz "Proces uruchamiania komputera", str.
1238


Po uruchomieniu komputera PC, procesor automatycznie wykonuje
skok do adresu FFFF0h, spodziewając się odnaleĄć pod tym adresem instrukcję, co
ma robić dalej. Adres ten mieści się dokładnie 16 bajtów od końca pierwszego MB
pamięci RAM i końca ROM. Gdyby był mapowany na zwykłe układy pamięci, wszystkie
znajdujące się w nich dane zniknęłyby po wyłączeniu komputera i po ponownym
jego włączeniu procesor nie byłby w stanie znaleĄć instrukcji informujących go,
co ma zrobić dalej. Dzięki umieszczeniu pod tym adresem układów ROM, zapisany w
nich program uruchamiania się komputera będzie dostępny przy każdym jego
włączeniu.
Więcej informacji o dynamicznej pamięci RAM można znaleĄć w
sekcji "DRAM".
Pamięć ROM rozpoczyna się zazwyczaj od znajdującego się 64 kB
przed końcem pierwszego megabajta adresu F0000h. Ponieważ układy ROM mają
zazwyczaj pojemność 64 kB, zawarte w nich programy zajmują całe ostatnie 64 kB
pierwszego megabajta, łącznie z najważniejszym adresem FFFF0h, zawierającym
instrukcję startu.
To, że komputery PC rozpoczynają wykonywanie instrukcji 16
bajtów przed końcem pamięci ROM, może wydawać się dziwne, ale zostało to
zaprojektowane celowo. Wszystkie programatory ROM-ów umieszczają pod tym adresem
instrukcję skoku (JMP), wskazującą aktualny adres początku ROM-u
najczęściej
jest nim znajdujący się o około 64 kB wcześniej adres F0000h. To tak, jakby
zdecydować się na czytanie każdej książki od 16 strony od końca i umówić się z
wydawcami, by umieszczali na tej stronie instrukcję, o ile stron należy się
cofnąć, by znaleĄć się na początku książki. Dzięki temu rozwiązaniu, Intel
umożliwił stosowanie układów pamięci ROM o różnych rozmiarach.
BIOS komputera jest zapisany w układzie pamięci ROM znajdującym
się na płycie głównej, ale oprócz niego istnieją również BIOS-y umieszczone na
poszczególnych kartach rozszerzeń. W BIOS-ach kart rozszerzeń znajdują się
pomocnicze procedury i sterowniki BIOS-u wymagane przez daną kartę; są one
szczególnie potrzebne na przykład kartom graficznym, które muszą być aktywne już
na wczesnym etapie uruchamiania się systemu. Karty, które nie muszą być aktywne
podczas uruchamiania się komputera, zazwyczaj nie posiadają ROM-u, ponieważ ich
sterowniki mogą być załadowane póĄniej z twardego dysku.
ROM płyty głównej w większości komputerów zawiera cztery główne
programy, którymi są:

POST. Power-On Self Test. Seria procedur testujących sprawność
poszczególnych komponentów komputera.

CMOS Setup. Program umożliwiający zmianę parametrów konfiguracji
systemu, ustawienie zabezpieczeń oraz preferencji.

Bootstrap loader. Procedura szukająca możliwego do załadowania
systemu operacyjnego najpierw na dyskietce w stacji dysków, a póĄniej na
twardym dysku.

BIOS. Basic Input/Output System. Zbiór sterowników stanowiący
standardowy interfejs podstawowych urządzeń komputera, szczególnie tych, które
muszą być aktywne podczas uruchamiania się systemu.
Ponieważ BIOS stanowi większość kodu znajdującego się w ROM-ie,
często określamy ROM nazwą ROM BIOS. W starszych komputerach PC, ROM BIOS płyty
głównej mógł się składać nawet z pięciu lub sześciu układów, jednak już od wielu
lat stosuje się tylko jeden układ. Więcej informacji o znajdującym się na płycie
głównej ROM-ie możesz znaleĄć w rozdziale 4. "Płyty główne".
Pamięci ROM znajdują się również w kartach rozszerzeń, których
sterowniki muszą być już aktywne podczas uruchamiania się systemu. Do takich
kart należą karty graficzne, większość kart SCSI (Small Computer System
Interface), karty kontrolerów EIDE (Enhanced IDE) oraz niektóre karty sieciowe.
Znajdujące się w tych kartach układy ROM zawierają sterowniki i programy
startowe, które podczas uruchamiania się systemu zostaną wywołane przez BIOS
płyty głównej. Właśnie dzięki temu karta graficzna może zostać rozpoznana i
zainicjowana, nawet jeśli w ROM BIOS-ie nie ma dedykowanych jej sterowników.
Trudno byłoby wgrać sterowniki inicjujące kartę VGA z dysku, ponieważ do momentu
inicjacji karty graficznej ekran monitora pozostawałby ciemny. Podczas
uruchamiania się systemu, BIOS płyty głównej skanuje specjalny obszar pamięci
RAM zajmowany przez ROM-y kart rozszerzeń (adresy C0000-DFFFFh) w poszukiwaniu
oznaczającego początek ROM-u dwubajtowego podpisu 55AAh. ROM BIOS automatycznie
uruchamia wszystkie odnalezione podczas skanowania ROM-y kart rozszerzeń. Proces
ten widać w większości komputerów, gdy
podczas wykonywania procedur POST-u

inicjowany jest BIOS karty graficznej.
Układy ROM są z natury bardzo wolne, czas dostępu do nich
wynosi zazwyczaj około 150 ns (więcej informacji na ten temat znajduje się w
sekcji Częstotliwości pamięci, w dalszej części tego rozdziału), podczas
gdy czas dostępu pamięci DRAM mieści się w granicach 60 ns. W związku z
tym, w wielu systemach pamięci ROM są cieniowane (ROM shadowing).
Cieniowanie polega na przekopiowaniu podczas uruchamiania się systemu pamięci
ROM do RAM, co podczas póĄniejszej pracy komputera znacznie przyśpiesza dostęp
do zawartych w niej informacji. Po zakończeniu kopiowania, procedura cieniowania
przypisuje kopii adres oryginału. Dzięki temu komputer pracuje tak, jakby
posiadał pamięć ROM o dostępie równie szybkim jak posiadana pamięć RAM, ponieważ
od tego momentu pamięć ROM nie jest już wykorzystywana. Uzyskany za pomocą
cieniowania wzrost wydajności jest jednak często nieznaczny, a w dodatku
niepoprawnie skonfigurowane cieniowanie może być Ąródłem problemów. Dlatego
zazwyczaj najlepiej jest cieniować tylko BIOS płyty głównej i, być może, karty
graficznej, a wszystkie inne BIOS-y pozostawić bez zmian.
Przede wszystkim, cieniowanie jest użyteczne tylko, jeśli
pracujesz z 16-bitowym systemem operacyjnym, jak na przykład z DOS-em czy
Windows 3.x. Jeśli pracujesz w 32-bitowym środowisku, jak Windows 95,
Windows 98 czy Windows NT, cieniowanie jest właściwie bezużyteczne, ponieważ te
systemy operacyjne nie korzystają z 16-bitowego kodu zawartego w ROM-ach.
Zamiast tego, wczytują do pamięci własne, 32-bitowe sterowniki, które zastępują
wykorzystywany tylko przy uruchamianiu się komputera 16-bitowy kod ROM-u.
Ustawienia cieniowania znajdują się w zawartym w pamięci CMOS programie
konfiguracyjnym.
Istnieją cztery różne typy układów ROM:

ROM. Pamięć tylko do odczytu

PROM. Programowalny ROM

EPROM. Wymazywalny PROM

EEPROM. Elektrycznie wymazywalny PROM, nazywany również pamięcią
flash lub flash ROM.
Bez względu na to, jakiego układu pamięci ROM użyjesz, zawarte
w nim dane nie będą ulotne i pozostaną bez zmian, o ile celowo się ich nie
usunie lub nie nadpisze.
W tabeli 7.1 zostały wypisane początki numerów identyfikacyjnych
różnych typów pamięci ROM.

Tabela 7.1. Numery identyfikacyjne układów ROM



Typ układu
ROM
Numer
Inne

ROM
Nie są już wykorzystywane
 

PROM
27nnnn
 

EPROM
27nnnn
Przezroczysta kwarcowa szybka

EEPROM
28xxxx lub
 

 
29xxxx
 

Odwzorowywane pamięci ROM [Mask ROM]


Początkowo większość ROM-ów produkowano z naniesionymi lub
zintegrowanymi w matrycy zerami i jedynkami. Matryca przedstawiała
rzeczywisty krzemowy układ wraz z zapisanymi danymi. Układy te były nazywane
odwzorowywanymi pamięciami ROM, ponieważ dane były formowane we wzór, z której
tworzono matrycę ROM-u. Ten sposób produkcji jest ekonomiczny, jeśli tworzysz
setki tysięcy ROM-ów zawierających dokładnie te same dane. Chcąc jednak zmienić
choć jeden bit, trzeba było utworzyć nowy wzór, co pociągało za sobą duże
koszty. Obecnie nikt już nie korzysta z odwzorowywanych pamięci ROM z powodu ich
małej elastyczności i wysokich kosztów produkcji.
PROM


Pamięci PROM nie zawierają żadnych danych po wyprodukowaniu i
zanim zacznie się z nich korzystać, muszą zostać zaprogramowane. PROM został
wynaleziony w póĄnych latach 70. przez firmę Texas Instruments i jest
produkowany w wielu pojemnościach, od 1 kB (8 kb) do 2 MB (16 Mb) i większych.
Pojemność może zostać określona za pomocą czterech ostatnich cyfr numeru
identyfikacyjnego, w którym pierwsze dwie cyfry (27) oznaczają PROM firmy TI, a
cztery kolejne
pojemność układu w kb (kilobitach). Przykładowo, w większości
wykorzystujących PROM-y komputerów PC umieszcza się układy 27512 lub 271000,
czyli o pojemności 512 kb (64 kB) lub 1 Mb (128 kB).




W znajdującym się
w moim samochodzie Pontiac Turbo Trans Am komputerze część systemu
operacyjnego oraz wszystkie tabele danych, opisujące wyprzedzenie zapłonu
[spark advance], dostarczanie paliwa [fuel delivery], a także inne
parametry pracy pojazdu i silnika, umieszczono w 32-kilobitowym (4 kB)
układzie PROM 2732. Systemy operacyjne wielu urządzeń ze zintegrowanymi
komputerami przechowywane są w PROM-ach.


Choć wcześniej napisałem, iż pamięci PROM po wyprodukowaniu są
puste, to z technicznego punktu widzenia są one zapełnione binarnymi jedynkami.
Innymi słowy, wykorzystywany w nowoczesnych komputerach 1-megabitowy układ ROM
posiada milion (dokładnie 1048576) pozycji zawierających binarną jedynkę. Pusty
PROM może zostać zaprogramowany poprzez zapisanie na nim danych. Do zapisania
danych wymagane jest zazwyczaj specjalne urządzenie, noszące nazwę programatora
ROM (rysunek 7.1). Często mówi się o programowaniu ROM-ów jako o ich
"wypalaniu", ponieważ jest to dość trafne technicznie określenie tego procesu. O
każdej binarnej wartości jeden możesz myśleć jako o nienaruszonym bezpieczniku.
Większość układów pracuje z napięciem zasilania wynoszącym 5 V. Podczas
programowania, pod różne adresy układu zostaje skierowane napięcie dużo wyższe
(najczęściej 12 V), które przepala znajdujące się tam bezpieczniki, przełączając
logiczny stan jedynki na zero. Choć możemy zamienić 1 na 0, z pewnością
zauważyłeś już, że proces ten jest nieodwracalny; czyli nie możemy zamienić 0 na
1. Programator analizuje program, który chcesz wprowadzić do układu,
a następnie w wymaganych miejscach zamienia wartości 1 na 0. Układy PROM
często są z tego powodu nazywane układami jednorazowego programowania OTP (One
Time Programmable). Mogą one zostać zaprogramowane tylko raz i naniesionych
zmian nie da się już usunąć. Większość PROM-ów jest niedroga, cena typowego,
wykorzystywanego w płytach głównych PROM-u wynosi około 12 zł, więc jeśli chcesz
zmienić znajdujący się w nim program, po prostu zastępujesz go nowym
zaprogramowanym układem, a układ poprzedni wyrzucasz.
Programowanie pamięci PROM w zależności od pojemności układu i
algorytmu wykorzystywanego przez programator trwa od kilku sekund do kilku
minut. Na rysunku 7.1 został przedstawiony typowy, kilkugniazdowy programator
układów PROM. Programatory tego typu nazywane są programatorami grupowymi (ang.
gang-programmer), ponieważ mogą programować wiele układów jednocześnie, co jest
szczególnie przydatne, gdy musisz umieścić ten sam program w wielu PROM-ach.
Tańsze programatory mają tylko jedno gniazdo, co jest zupełnie wystarczające do
większości domowych i serwisowych zastosowań.



Rysunek
7.1.
Typowy grupowy, posiadający kilka gniazd
programator układów PROM



Osobiście korzystam (i zalecam to innym) z naprawdę niedrogiego
programatora firmy Andromeda Research. Jest on nie tylko ekonomiczny, ale i
można go podłączyć do portu równoległego komputera, dzięki czemu łatwo i szybko
przesyła się pliki między nim a komputerem. Urządzenie to jest w dodatku
zamknięte w łatwej do przenoszenia obudowie. Programator kontroluje się za
pomocą okienkowego programu konfiguracyjnego, który należy zainstalować na
komputerze, do którego jest podłączony. Program konfiguracyjny ma wiele
użytecznych możliwości, łącznie z funkcjami umożliwiającymi zgranie znajdujących
się w układzie PROM danych do pliku na twardym dysku, zaprogramowanie układu
PROM danymi z pliku, porównanie zawartości układu z plikiem w komputerze
oraz sprawdzenie przed rozpoczęciem programowania, czy umieszczony w
programatorze układ jest pusty.




Za pomocą
programatora PROM-ów przeprogramowałem nawet PROM w swoim samochodzie,
zmieniając fabryczne ustawienia ograniczeń szybkości i obrotów silnika,
turbosprężarki, kąta wyprzedzenia zapłonu, dostarczania paliwa i jeszcze
wielu innych parametrów! Zamontowałem również przełącznik umożliwiający mi
wybór jednego z czterech różnych układów podczas jazdy samochodem. Jeden z
zaprogramowanych przeze mnie układów odcinał dopływ paliwa po
przekroczeniu 36 mil na godzinę i wznawiał, gdy samochód zwalniał do 35.
Taka modyfikacja mogłaby być szczególnie przydatna, gdybyś chciał na
przykład ograniczyć prędkość, z jaką maksymalnie może jeĄdzić twoje
nastoletnie dziecko. Inny stworzony przeze mnie ze względów bezpieczeństwa
układ odcinał dopływ paliwa do silnika, gdy zasygnalizowałem, że samochód
jest zaparkowany. Bez znaczenia, jak pomysłowy byłby złodziej, nie mógłby
ukraść auta, chyba że wziąłby je na hol. Jeśli jesteś zainteresowany
urządzeniem zmieniającym układy lub też samymi układami PROM do samochodów
Turbo Trans Am lub Buick Grand National, skontaktuj się z firmą Casperłs
Electronics. Gdy zainstalowałem układ Superchips w samochodzie Ford
Explorer, natychmiast zauważyłem olbrzymią różnicę w pracy silnika i
wydajności pojazdu.
EPROM


Pamięci EPROM są popularną odmianą pamięci PROM. Nie są one
niczym innym jak pamięciami PROM, ale z możliwością wymazania zaprogramowanych
danych. Układ EPROM można bardzo łatwo rozpoznać, ponieważ w obudowie
bezpośrednio nad matrycą znajduje się przezroczysta kwarcowa szybka, przez którą
możesz zobaczyć matrycę. Pamięci EPROM mają taki sam jak PROM-y prefiks numerów
identyfikacyjnych (27xxxx) i nie licząc kwarcowej szybki, są fizycznie oraz
funkcjonalnie takie same.
Dzięki znajdującej w obudowie układu szybce, do matrycy może
się dostać promieniowanie ultrafioletowe, którym są wymazywane układy EPROM.
Szybka jest wykonana z kwarcu, ponieważ zwykłe szkło blokuje promieniowanie
UV. Nie można się opalić przez szybę! Konieczność zastosowania kwarcowej szybki
spowodowała, że układy EPROM są droższe od układów PROM. Jeśli jednak możliwość
wymazywania nie ma dla ciebie znaczenia, nie musisz ich kupować.
Promieniowanie UV wywołuje reakcję chemiczną, w której ponownie
stapiają się ze sobą znajdujące się w układzie bezpieczniki, dzięki czemu
zostają wymazane wszystkie znajdujące się w nim dane. W wywołanej przez
promieniowanie UV reakcji wszystkie binarne zera znów stają się jedynkami i
układ zostaje przywrócony do stanu sprzed programowania. Aby zaszła reakcja
chemiczna, promieniowanie UV musi mieć określoną długość (2537 angstremów),
odpowiednią intensywność (12000 uw/cm2), a także
musi działać z niewielkiej odległości (2
3 cm) przez około 5 do 15 minut. W
urządzeniu do szybkiego wymazywania EPROM-ów (patrz rysunek 7.2) Ąródło
promieniowania UV (najczęściej specjalna żarówka) znajduje się nad uszczelnioną
szufladką, w której umieszczasz jeden lub więcej układów
EPROM.



Rysunek
7.2.
Profesjonalne urządzenie do wymazywania
EPROM-ów



Na rysunku 7.2 zostało przedstawione profesjonalne urządzenie
do wymazywania EPROM-ów, które jednorazowo może wymazywać do 50 układów. Ja
korzystam ze znacznie mniejszego i tańszego urządzenia firmy Walling Co. o
nazwie DataRase. Urządzenie to wymazuje jednorazowo do czterech układów
i jest ekonomiczne, jak również przenośne.
Kwarcowa szybka znajdująca się w obudowach układów EPROM jest
zazwyczaj zabezpieczona za pomocą taśmy przed przypadkowym wystawieniem na
promieniowanie ultrafioletowe. Promieniowanie UV występuje nie tylko w świetle
słonecznym, ale i nawet w zwykłym oświetleniu pokojowym, w związku z czym
dane zawarte w układzie wystawionym na bezpośrednie światło szybko mogłyby ulec
uszkodzeniu. Dlatego dobrym nawykiem jest zabezpieczanie za pomocą naklejki
zaprogramowanych układów.
EEPROM/Flash ROM


EEPROM jest nowszym typem ROM-u, jego nazwa jest skrótem od
"Elektrycznie wymazywalny PROM" (ang. Electrically Erasable PROM). Układy te są
również nazywane pamięcią Flash lub po prostu Flash ROM; ich najważniejszą cechą
jest możliwość wymazania i ponownego zaprogramowania bez żadnych dodatkowych
urządzeń. Dzięki pamięciom Flash stało się możliwe wymazanie i przeprogramowanie
ROM-u komputera PC bez wyjmowania układu z podstawki na płycie głównej, a nawet
bez zdejmowania obudowy! Gdy korzystasz z pamięci Flash, do jej ponownego
zaprogramowania nie potrzebujesz ani programatora, ani urządzenia wymazującego.
Pamięci Flash są wykorzystywane nie tylko we wszystkich właściwie płytach
głównych wyprodukowanych po 1994 roku, ale i w większości zbudowanych od tego
czasu samochodach. Na przykład mój Chevy Impala SS z 1994 r. posiada PCM
(Powertrain Control Module) ze zintegrowaną pamięcią Flash.
Pamięci EEPROM można zidentyfikować po numerze
identyfikacyjnym, który jest zgodny ze wzorem 28xxxx lub 29xxxx, oraz po braku
kwarcowej szybki w obudowie. Jeśli w twoim komputerze zastosowano pamięci Flash,
będziesz mógł łatwo uaktualnić ROM płyty głównej bez konieczności wymiany
posiadanych układów. Zazwyczaj po prostu zgrywasz ze strony WWW producenta
uaktualniony ROM i uruchamiasz dołączony program, który zastępuje stare dane
nowymi. Procedura ta została bardziej szczegółowo opisana w rozdziale czwartym.




>> Patrz "Instalacja w komputerze nowszej wersji ROM
BIOS", str. 479 i 485


Częste sprawdzanie, czy na stronie WWW producenta płyty głównej
nie pojawił się uaktualniony BIOS, jest bardzo dobrym nawykiem. Uaktualniony
BIOS może już nie zawierać błędów oraz posiadać niedostępne wcześniej
możliwości. Na przykład w nowym BIOS-ie może się znajdować poprawka niwelująca
ewentualny problem roku 2000 oraz nowe sterowniki umożliwiające uruchomienie
komputera ze 120-megabajtowej stacji dysków LS-120.



>> Patrz "Napędy Floptical LS-120 (120MB)", str.
817


Obecnie w wielu zintegrowanych z różnymi urządzeniami
komputerach stosuje się pamięci flash. Być może już w najbliższej przyszłości
będziesz poszukiwał uaktualnionego ROM-u do, na przykład, swojego tostera! W
rozdziale czwartym został dokładnie opisany sposób poszukiwania i uaktualniania
pamięci flash ROM płyt głównych komputerów PC. Inne urządzenia również mogą
posiadać pamięci flash
ostatnio na przykład uaktualniłem ROM swojego modemu
ISDN Motoroli oraz cyfrowej kamery Kodaka. Uaktualnienie pamięci flash było
bardzo łatwe do przeprowadzenia (wystarczyło zgrać uaktualniony ROM ze strony
WWW producenta i uruchomić dołączony do niego program), a wyeliminowało wiele
różnych dziwactw obu urządzeń. Pamięci flash wykorzystuje się również do
zwiększania możliwości sprzętu znajdującego się już na rynku oraz do
przystosowywania go do najnowszych standardów. Przykładem może tu być
uaktualnienie standardu komunikowania się modemu z X2 lub Kflex do
V.90.




Jeśli masz
samochód z wbudowanym komputerem, również możesz zaktualizować znajdujący
się w nim BIOS, o ile tylko producent samochodu zaprojektował uaktualnioną
wersję. Uaktualnienie ROM-u jest obecnie tak łatwe i tanie, iż często się
zdarza, że producenci samochodów udostępniają nową wersję ROM-u, która
zawiera poprawki usprawniające pracę samochodu lub po prostu usuwające
problemy wynikające z poprzedniej wersji ROM-u. Nowe ROM-y są zazwyczaj
dostępne u dealera danego samochodu, jego więc musisz zapytać, czy
producent zaprojektował uaktualnioną wersję. Jeśli posiadasz samochód GM,
firma ta ma swoją stronę WWW, na której umieszcza informacje o nowych
wersjach BIOS-u dostępnych dla ich samochodów. Strona ta znajduje się pod
poniższym adresem:

http://207.74.147.14/vci
Gdy wprowadzisz swój VIN (numer identyfikacyjny pojazdu), na stronie
ukaże się historia kalibracji samochodu, która jest listą wszystkich
uaktualnień ROM-u (kalibracji) zaprojektowanych od chwili powstania
pojazdu. Gdy na przykład wprowadziłem numer identyfikacyjny mojego Impala
z 1994 r., okazało się, że od momentu powstania samochodu producent
zaprojektował już pięć kalibracji pamięci Flash, a w moim samochodzie
znajdowała się tylko druga wersja. Oznaczało to, że powstały już trzy
wersje nowsze od tej, którą wtedy posiadałem! Uzbrojony w tę informację
udałem się do dealera, który podłączył do mojego samochodu swój komputer
diagnostyczny i zaprogramował PCM nowym oprogramowaniem, co w moim
przypadku poprawiło wiele mniejszych i większych niedociągnięć, łącznie z
występującą w pewnych okolicznościach nierówną pracą silnika.
Zastosowanie w samochodzie pamięci Flash dało mi możliwość
eksperymentowania z kalibracjami przeznaczonymi do innych samochodów,
dzięki czemu w pamięci Flash mojego samochodu znajduje się obecnie
zmodyfikowany ROM przeznaczony do samochodu Camaro. W zaprojektowanej dla
Camaro kalibracji ustawiono znacznie bardziej agresywne parametry krzywej
wyprzedzenia zapłonu oraz dostarczania paliwa, jak również zmian biegów i
wielu innych cech. Jeśli jesteś zainteresowany posiadaniem innego programu
w pamięci Flash twojego samochodu, skontaktuj się z firmą Wright
Automotive lub Evergreen Performance.
DRAM


W nowoczesnych komputerach najczęściej wykorzystuje się
dynamiczne pamięci RAM. Największą przewagą DRAM nad innymi pamięciami jest jej
duża gęstość, dzięki której w jednym niewielkim układzie można umieścić znacznie
więcej bitów, oraz bardzo niska cena, umożliwiająca produkcję układów pamięci o
dużej pojemności.
Komórki pamięci DRAM są niewielkimi kondensatorami
przechowującymi ładunki oznaczające bity. Problemem jest tu dynamiczność DRAM

pamięci te muszą być stale odświeżane, ponieważ przy braku odświeżania
zanikłyby przechowywane w poszczególnych komórkach ładunki elektryczne, co
spowodowałoby utratę zgromadzonych w nich danych. Odświeżanie następuje,
gdy systemowy kontroler pamięci zarządza małą przerwę, podczas której odczytuje
wszystkie dane zawarte w poszczególnych komórkach. Kontroler pamięci (zazwyczaj
wbudowany w chipset płyty głównej) jest w większości systemów ustawiony
zgodnie z wynoszącym 15ms (mikrosekund) fabrycznym
standardem częstotliwości odświeżania. Dostęp do pamięci jest zorganizowany
w taki sposób, że po dokładnie 128 cyklach zostaną odczytane wszystkie
wiersze pamięci. Czyli inaczej mówiąc, odświeżenie danych następuje po każdych
1,92 ms (milisekundy lub 128*15ms).



>> Patrz "Chipsety", str.
345


Niestety, odświeżanie pamięci zabiera procesorowi wiele cykli.
W starszych komputerach cykle odświeżania mogły zająć nawet 10 lub więcej
procent czasu procesora. Na szczęście, w obecnie produkowanych systemach, w
których procesory pracują z częstotliwościami rzędu setek megaherców,
odświeżanie zajmuje najczęściej nie więcej niż 1% czasu procesora. W BIOS-ach
niektórych komputerów masz możliwość zwiększenia czasu pomiędzy kolejnymi
odświeżeniami pamięci, co przyśpiesza działanie komputera, ale i zarazem może
prowadzić do losowego występowania tzw. miękkich błędów pamięci. Miękki błąd
jest błędem danych, który nie został spowodowany przez uszkodzony układ pamięci.
Dlatego lepiej zazwyczaj pozostać przy zalecanych lub standardowych ustawieniach
odświeżania pamięci. Tym bardziej zresztą, że w nowoczesnych komputerach
odświeżanie zabiera tylko około 1% całkowitej wydajności systemu, czyli siłą
rzeczy, zwiększanie czasu odświeżania będzie miało bardzo niewielki wpływ na
osiągi komputera.
W pamięciach DRAM bit jest tylko jedną parą tranzystora i
kondensatora, dzięki czemu pamięci te mają bardzo dużą gęstość. Dzięki takiemu
rozwiązaniu, można produkować układy DRAM o pojemności większej, niż było to
możliwe z innymi układami pamięci. Istnieją już układy DRAM o pojemności ponad
256 Mb. Kości o tej pojemności zawierają co najmniej 256 milionów tranzystorów!
W porównaniu z tym, nieszczególnie wypadają nawet procesory Pentium II, które
przecież posiadają ich tylko 7,5 miliona. Różnica polega na tym, iż pary
tranzystorów i kondensatorów w pamięciach są ułożone w prosty (zazwyczaj
kwadratowy), powtarzający się układ, podczas gdy struktury znajdujące się w
procesorze są nie tylko znacznie bardziej różnorodne i skomplikowane, ale i w
równie skomplikowany sposób ze sobą połączone. Co najmniej jeden z producentów
pracuje obecnie nad pamięciami wykonywanymi w technologii 0,05 mikrona, o
gęstości 256 gigabitów, które mają trafić do seryjnej produkcji około roku
2001
2002. Oznacza to, iż pojemności pamięci nadal będą rosły w tempie równym
temu, w jakim wzrastały do dzisiaj.
Pamięci DRAM wykorzystuje się w komputerach PC z powodu ich
niskiej ceny oraz możliwości gęstego upakowania kości, dzięki czemu na niedużej
przestrzeni można zgromadzić dużą pojemność pamięci. Niestety, układy DRAM są
również wolne, zazwyczaj dużo wolniejsze od procesora. Z tego powodu powstało
wiele różnych architektur pamięci DRAM, zaprojektowanych z myślą o poprawie
wydajności.
Szybkość pamięci


Szybkość i wydajność pamięci jest dość mylącym zagadnieniem,
ponieważ najczęściej wyraża się ją w ns (nanosekundach), podczas gdy szybkość
(częstotliwość pracy) procesora jest wyrażana w megahercach.
Nanosekunda jest jedną miliardową częścią sekundy
to naprawdę
bardzo niewiele. By ujrzeć to we właściwej perspektywie, wystarczy uzmysłowić
sobie, iż światło przemieszczające się w próżni, którego szybkość poruszania się
wynosi 299792 km na sekundę, w czasie jednej nanosekundy przemieści się tylko o
29,98 cm, czyli o mniej niż długość przeciętnej linijki!
Szybkość (częstotliwość) pracy systemu i układów wyrażana jest
w megahercach (MHz), czyli milionach cykli na sekundę. Już obecnie można się
spotkać z procesorami pracującymi z częstotliwościami rzędu 500 MHz; procesory
pracujące z częstotliwościami gigaherców (GHz lub miliardów cykli na sekundę)
pojawią się na rynku w ciągu najbliższych kilku lat.
Ponieważ mówienie o szybkości w różnych jednostkach jest dość
mylące, pomyślałem, iż porównanie ich może być bardzo interesujące. W tabeli 7.2
zostały pokazane zależności pomiędzy nanosekundami (ns) a megahercami (MHz).
Jak wynika z tabeli, w miarę zwiększania się częstotliwości
pracy zegara maleje czas cyklu pamięci. Jeśli dokładniej przyjrzysz się tabeli,
z całą pewnością zauważysz, iż szybkość pamięci DRAM zupełnie nie przystaje do
szybkości obecnych procesorów, pracujących z częstotliwościami nawet powyżej 400
MHz. Jeszcze do niedawna większość wykorzystywanych w komputerach PC pamięci
DRAM miała czas dostępu rzędu 60 ns, co odpowiada wartości około 16,7 MHz!
Różnica pomiędzy wydajnością pamięci a procesora jest szczególnie widoczna, gdy
tak wolne pamięci są instalowane w komputerze, którego procesor pracuje z
częstotliwością 300 lub więcej megaherców.
Taktowanie pamięci jest jednak rzeczą bardziej skomplikowaną od
prostego przeliczania nanosekund na megaherce. Ponieważ tranzystory bitów
pamięci pracują najbardziej efektywnie, gdy są ułożone w siatkę, dostęp do
każdego z nich odbywa się za pomocą schematu wiersza i kolumny. Przed każdym
odczytaniem lub zapisaniem danych, należy podać adres wiersza i kolumny komórki
pamięci, która ma zostać odczytana lub w której mają się znaleĄć dane.
Początkowy etap transferu danych z pamięci i do niej, w którym wybiera się
adresy wierszy i kolumn, przyjęło się nazywać opóĄnieniem (latency). Czas
dostępu do pamięci jest sumą czasu cyklu oraz opóĄnienia. Na przykład pamięć o
dostępie 60 ns ma zazwyczaj opóĄnienie rzędu 25 ns, a czas cyklu wynoszący około
35 ns. W związku z tym, rzeczywista częstotliwość taktowania 60-nanosekundowej
pamięci wynosi 28,5 MHz (35 ns = 28,5 MHz). Jednak nawet wtedy każdy
transfer pamięci będzie nadal wymagał pełnych 60 ns i z powodu dodawanego
opóĄnienia częstotliwość kolejnych transferów będzie wynosić tylko 16,7 MHz
(60 ns).

Tabela 7.2. Zależności pomiędzy częstotliwościami zegara w megahercach (MHz) a czasem
cykli w nanosekundach (ns)



Częstotliwość
zegara
Czas
cyklu
Częstotliwość
zegara
Czas
cyklu

6 MHz
166 ns
120 MHz
8,3 ns

8 MHz
125 ns
133 MHz
7,5 ns

10 MHz
100 ns
150 MHz
6,6 ns

12 MHz
83 ns
166 MHz
6,0 ns

16 MHz
62 ns
180 MHz
5,5 ns

20 MHz
50 ns
200 MHz
5,0 ns

25 MHz
40 ns
233 MHz
4,2 ns

33 MHz
30 ns
250 MHz
4,0 ns

40 MHz
25 ns
300 MHz
3,3 ns

50 MHz
20 ns
333 MHz
3,0 ns

60 MHz
16 ns
350 MHz
2,8 ns

66 MHz
15 ns
400 MHz
2,5 ns

75 MHz
13 ns
450 MHz
2,2 ns

80 MHz
12 ns
500 MHz
2,0 ns

100 MHz
10 ns
550 MHz
1,8 ns



Co następuje, gdy pracujący z częstotliwością 300 MHz procesor
usiłuje odczytać wiele bajtów danych z 16-megahercowej pamięci? OdpowiedĄ łatwo
przewidzieć
mnóstwo cykli oczekiwania (ang. wait states). Cykl
oczekiwania jest dodatkowym cyklem, w którym procesor nie wypełnia żadnej
instrukcji, a który musi wykonać podczas oczekiwania na dane. Jeśli każdy cykl
pamięci trwa 60 ns (16 MHz), a cykl procesora
3 ns (300 MHz), procesor
czekając na dane będzie musiał wykonać około 19 cykli oczekiwania! Dodawanie w
ten sposób cykli oczekiwania dość skutecznie zwalnia szybkość przetwarzania do
szybkości pamięci, czyli w tym wypadku 16 MHz. Z tego powodu powstało wiele
szybszych pamięci systemowych i podręcznych, mających zredukować liczbę cykli
oczekiwania. W tym rozdziale zostanie omówiona każda z
nich.
FPM (Fast Page Mode) DRAM


Dostęp do standardowych pamięci DRAM odbywa się poprzez
stronicowanie (ang. paging). Zwykłe odczyty i zapisy danych w pamięci
wymagają wybrania wiersza i kolumny, co zabiera trochę czasu. Stronicowanie
polega na udostępnianiu komórek z tego samego wiersza, dzięki czemu należy
zmieniać tylko adres kolumny. Wykorzystująca ten sposób dostępu pamięć jest
nazywana PM (Page Mode) lub FPM (Fast Page Mode). Istnieją również
inne wersje pamięci FPM, nazywane pamięcią SC (Static Column) lub pamięcią NM
(Nibble Mode).
Stronicowanie jest prostym sposobem zwiększenia
wydajności pamięci, poprzez podzielenie jej na strony mające długość od 512
bajtów do kilku kilobajtów. Dostęp do wszystkich komórek wewnątrz strony jest
dzięki mechanizmom stronicowania szybszy o wiele cykli oczekiwania. Jeśli
docelowa komórka pamięci znajduje się poza aktualnie wybraną stroną, procesor
musi odczekać kilka dodatkowych cykli, aż do chwili gdy system wybierze nową
stronę.
W miarę upływu czasu wymyślano coraz to nowe sposoby
uzyskiwania szybszego dostępu do pamięci DRAM. Jedną z najbardziej znaczących
zmian była implementacja w procesorach 486 i póĄniejszych seryjnego trybu
dostępu (ang. burst mode). W seryjnym taktowaniu pamięci wykorzystano fakt, iż
kolejne dostępy do niej dotyczą najczęściej komórek położonych blisko siebie.
Dzięki wykorzystaniu trybu seryjnego, po ustaleniu wiersza i kolumny komórki
pamięci, można bez żadnych dodatkowych cykli oczekiwania czy opóĄnień uzyskać
dostęp do komórek sąsiednich. Dostęp seryjny jest zazwyczaj ograniczony do
czterech kolejnych odczytów/zapisów. Dlatego taktowanie opisuje się często
liczbami cykli potrzebnymi na uzyskanie kolejnych dostępów. Typowe taktowanie
pamięci DRAM w trybie seryjnym jest zazwyczaj wyrażane w postaci x-y-y-y, gdzie
x jest czasem pierwszego dostępu (sumy opóĄnienia i czasu cyklu), a y liczbą
cykli potrzebnych do uzyskania każdego z kolejnych dostępów.
Standardowe, 60-nanosekundowe pamięci DRAM są w trybie seryjnym
taktowane zgodnie ze schematem 5-3-3-3. Oznacza to, że uzyskanie pierwszego
dostępu do pamięci zajmie w sumie pięć cykli (przy 66-megahercowej magistrali
systemowej czas uzyskania pierwszego dostępu wyniesie około 75 ns lub inaczej
pięciu cykli po 15 ns), a każdy kolejny dostęp serii zajmie po trzy
cykle (3 15 ns = 45 ns). Jak widać, uzyskane czasy dostępu do pamięci są
niższe, niż wynikałoby to z samej specyfikacji pamięci. Zwróć jednak uwagę, że
bez wykorzystania trybu seryjnego dostęp do pamięci odbywałby się zgodnie ze
schematem 5-5-5-5, ponieważ przy przeprowadzaniu każdego transferu do i z
pamięci występowałoby pełne opóĄnienie. Układy DRAM obsługujące stronicowanie i
dostęp seryjny są nazywane pamięcią FPM (Fast Page Mode). Nazwa ta wynika
z tego, że w trybie seryjnym dostępy do znajdujących się na tej samej stronie
pamięci danych są uzyskiwane z mniejszym opóĄnieniem. W większości komputerów
486 i nowszych wykorzystano układy FPM; w starszych komputerach stosowano
standardowe pamięci DRAM.
Innym sposobem na przyśpieszenie pamięci FPM jest
przeplatanie (ang. interleaving). W trybie dostępu przeplatanego, dwa
osobne banki pamięci są odczytywane naprzemiennie. Gdy w jednym z banków trwa
odczyt lub zapis danych, w drugim wybiera się w tym samym czasie wiersz i
kolumnę komórki. Dzięki temu, gdy pierwszy bank kończy przekazywanie danych,
drugi zakończył już okres opóĄnienia i jest gotowy do kolejnego transferu. W
czasie gdy w drugim banku trwa przesyłanie danych, w pierwszym banku wybierany
jest wiersz i kolumna komórki pamięci, od której rozpocznie się kolejny dostęp.
Jedynym problemem jest to, że aby skorzystać z dostępu przeplatanego, musisz
obsadzić dokładnie takimi samymi kośćmi dwa banki na płycie głównej. Było to
bardzo popularne rozwiązanie w systemach z 32-bitową pamięcią i procesorami 486,
ale szybko straciło uznanie po ukazaniu się komputerów z procesorami Pentium,
które posiadały pamięci 64-bitowe. By móc skorzystać z techniki przeplatania w
komputerach Pentium, musiałbyś zainstalować jednocześnie 128 bitów pamięci,
czyli albo cztery 72-końcówkowe pamięci SIMM, albo dwa moduły
DIMM.
EDO RAM


W 1995r pojawił się nowy typ pamięci dla systemów z procesorami
Pentium, nazwany EDO (Extended Data Out) RAM. Pamięć EDO to zmodyfikowana
pamięć FPM i z tego powodu bywa nazywana również pamięcią HPM (Hyper Page
Mode). Pamięć EDO została wynaleziona i opatentowana przez firmę Micron
Technology, która udzieliła licencji na jej produkcję wielu innym producentom.
EDO składa się ze specjalnie wyprodukowanych układów, które pozwalają na
zazębianie się taktowań pomiędzy udanymi dostępami. Skrót EDO odnosi się przede
wszystkim do tego, iż w przeciwieństwie do pamięci FPM, sterowniki wyjścia
danych na układzie nie są wyłączane, gdy kontroler pamięci usuwa adres kolumny w
celu rozpoczęcia kolejnego cyklu. Dzięki temu kolejny cykl może nastąpić zaraz
za poprzednim, co umożliwia zaoszczędzenie na każdym cyklu około 10 ns.
Ponieważ układy EDO umożliwiają kontrolerowi pamięci
rozpoczęcie instrukcji adresowania nowej kolumny jeszcze podczas odczytywania
danych pod aktualnych adresem, czasy cykli uległy znacznemu skróceniu.
Rozwiązanie to jest bardzo podobne do przeplatania banków w starszych systemach,
ale w przeciwieństwie do przeplatania, by z niego skorzystać, nie musisz
posiadać dwóch identycznie obsadzonych banków pamięci.
EDO RAM w trybie seryjnym umożliwia zastosowanie taktowania
zgodnego ze schematem 5-2-2-2, czyli lepszym od osiąganego przez układy FPM
schematu 5-3-3-3. Oznacza to, że pamięci EDO w ciągu 11 cykli systemowych mogą
wykonać cztery transfery danych, natomiast pamięci FPM do tego samego zadania
potrzebują 14 cykli. Choć czas potrzebny na wykonanie transferów został
zmniejszony o 22%, pamięci EDO zazwyczaj zwiększają ogólną wydajność systemu o
około 5%. Nawet jeśli uzyskany wzrost wydajności wydaje się niewielki, warto
zauważyć, iż pamięci EDO bazują na tym samym podstawowym układzie DRAM co
pamięci FPM, a to oznacza, że koszt ich produkcji praktycznie nie różni się od
kosztu produkcji układów FPM. Dzięki temu układy EDO kosztują niemal tyle samo
co układy FPM, a oferują wyższą wydajność.
Pamięci EDO mogą zostać wykorzystane tylko pod warunkiem, że
obsługuje je chipset płyty głównej. Większość chipsetów powstałych od roku 1995,
kiedy na rynku ukazał się chipset 430FX (Triton), obsługuje układy EDO. Dzięki
porównywalnym z pamięciami FPM kosztom wytwarzania oraz obsługiwaniu przez
chipsety Intela, rynek bardzo szybko całkowicie przerzucił się na kości
EDO.



>> Patrz "Chipsety piątej generacji (P5)", str.
349



>> Patrz "Chipsety szóstej generacji (klasy Pentium
Pro/Pentium II)", str. 363


Układy EDO są idealnym rozwiązaniem dla systemów z magistralą
pracującą do 66 MHz, co do roku 1997 w zupełności zaspokajało potrzeby rynku.
Jednak w 1998 r. na rynku pojawiły się nowsze i szybsze pamięci SDRAM
(Synchronous DRAM), które wkrótce stały się nowym standardem pamięci komputerów
PC.

Burst EDO


Jedną z odmian pamięci EDO są układy BEDO DRAM (Burst
Extended-Data-Out Dynamic Random Access Memory), których specjalny tryb
seryjny umożliwia uzyskanie jeszcze szybszych transferów pamięci. Niestety,
obsługiwał je tylko jeden chipset (Intel 440FX Natoma) i zostały szybko wyparte
przez układy SDRAM, faworyzowane przez projektantów chipsetów i systemów PC.
Pamięci BEDO nie są już produkowane i nie spotyka się ich w obecnie
sprzedawanych komputerach.
SDRAM


SDRAM jest skrótem od Synchronous DRAM, czyli pamięci, która
działa synchronicznie z magistralą. SDRAM przekazuje informacje za pomocą bardzo
szybkiego potoku, wykorzystując szybki, taktowany interfejs. Dzięki zastosowaniu
pamięci SDRAM znacząco zmniejsza się opóĄnienie, ponieważ układy te są już
zsynchronizowane z częstotliwością pracy płyty głównej.
Zanim będziesz mógł zainstalować układy SDRAM w komputerze,
podobnie jak pamięci EDO, muszą być one obsługiwane przez chipset płyty głównej.
Od początku 1997 r. wszystkie chipsety Intela, wraz z chipsetami 430VX i 430TX,
w pełni obsługują SDRAM, co czyni te układy najpopularniejszymi pamięciami na
rynku nowych komputerów. Pamięci SDRAM są przede wszystkim dostosowane do
architektury procesorów Pentium II oraz nowych płyt głównych, na których
można te procesory umieszczać.
Osiągana przez SDRAM wydajność jest o wiele większa od
wydajności pamięci FPM i EDO. Ponieważ SDRAM jest jedną z odmian DRAM,
początkowe opóĄnienie jest takie samo, ale za to całkowite czasy cykli są
znacznie krótsze od wcześniejszych pamięci FPM i EDO. Taktowanie SDRAM podczas
dostępu seryjnego jest zgodne ze schematem 5-1-1-1; czyli 4 transfery pamięci
zakończą się już po 8 cyklach. Pamięci EDO potrzebowały na wykonanie tej samej
operacji 11 cykli, a pamięci FPM aż 14.
SDRAM poza możliwością pracy ze znacznie krótszymi cyklami
obsługuje również 100-megahercowe (10-nanosekundowe) i szybsze magistrale, które
w 1998 roku stały się nowym standardem częstotliwości pracy magistral
systemowych. Dzięki temu, w praktycznie wszystkich sprzedanych w 1998 r.
komputerach wykorzystano właśnie te pamięci i bardzo prawdopodobne jest, iż
układy te utrzymają się na rynku jeszcze do końca roku 2000.
Prawdopodobnie w niedalekiej przyszłości pamięci SDRAM będą
mogły pracować na nawet 200-megahercowych i szybszych magistralach. SDRAM są
sprzedawane w formie DIMM, a ich szybkość często określa się nie w
nanosekundach, lecz w megahercach. Z tego powodu możesz natknąć się na
takie same pamięci sprzedawane jako 66 MHz lub 15 ns, 83 MHz lub 12 ns czy też
100 MHz lub 10 ns. Z powodu bardzo szybkich taktowań pamięci podczas pracy z
częstotliwością 100 MHz, Intel stworzył standard PC/100, w którym zdefiniował
wymagania, jakie muszą spełnić układy pamięci, by pozostawały stabilne przy
częstotliwości taktowania wynoszącej 100 MHz. Większość pamięci z certyfikatem
PC/100 ma w celu zachowania odpowiedniego marginesu błędu czas dostępu 8 ns,
czyli może pracować z częstotliwością 125 MHz. Jednak nawet jeśli układy te
mogą pracować z takimi częstotliwościami, oficjalnie posiadają wyłącznie
certyfikat PC/100. Choć 10-nanosekundowe pamięci również mogłyby działać z
częstotliwością 100 MHz, Intel stwierdził, że z powodu zbyt małego
marginesu błędu mogłyby nie być stabilne.
Pomimo iż SDRAM jest znacząco szybszy od poprzednich typów
pamięci, nie jest od nich dużo droższy, dzięki czemu jeszcze szybciej wzrosła
jego popularność.



>> Patrz "Fizyczna pamięć komputera", str.
396 

Przyszłe technologie pamięci DRAM
RDRAM


RDRAM, nazywany również Rambus DRAM, jest pamięcią opartą na
zupełnie nowych rozwiązaniach, która początkowo, w latach 1999
2000, ma się
znaleĄć tylko w komputerach o największej mocy. RDRAM jest wspierany przez Intel
i będzie bezpośrednio obsługiwany przez wszystkie jego chipsety.
RDRAM, dzięki podwojeniu znajdującej się w układzie magistrali
danych do 16 bitów i zwiększeniu częstotliwości pracy do 800 MHz,
przyśpiesza przepustowość samej pamięci, umożliwiając uzyskanie szczytowo
przepustowości rzędu 1,6 GB/s. Rambus wprowadził również uaktualnienia w
protokole magistrali, dzięki czemu dane nie muszą być mutlipleksowane. Zamiast
tego utworzono niezależną kontrolę, a magistralę adresową podzielono na dwie
grupy końcówek, osobno na polecenia kolumn i osobno na polecenia wierszy. Dane w
tych końcówkach przesyłane są za pośrednictwem 2-bitowych magistral.
Synchronizację osiąga się dzięki wysyłaniu pakietów na opadającej krawędzi
sygnału zegara.
Architektura RDRAM-u obsługuje wielokrotne, jednocześnie
przeplatane transakcje. Wewnętrznie, 64-bitowe urządzenie korzysta z w sumie
128-bitowej ścieżki danych, która pracuje z częstotliwością 100 MHz, i umożliwia
wykonywanie 16-bajtowych transferów z rdzenia i do niego co 10 ms. Ponieważ
układy RDRAM posiadają cztery tryby oszczędzania energii i automatycznie
przełączają się w tryb uśpienia po zakończeniu transakcji, pobierają nieco mniej
energii od układów SDRAM i mniej więcej tyle samo, co pamięci EDO zaprojektowane
z myślą o komputerach przenośnych.
Układy RDRAM będą instalowane w modułach nazywanych RIMM
(Rambus Inline Memory Modules). RIMM (pokazany na rysunku 7.3) ma podobną
wielkość i wygląd do aktualnie używanych DIMM-ów, ale nie jest z nimi
kompatybilny na poziomie wyprowadzeń.



Rysunek
7.3.
128-końcówkowy moduł RIMM



Kontroler pamięci RDRAM z pojedynczym kanałem Rambus obsługuje
do trzech modułów RIMM, które dzięki gęstości 64 Mb na układ umożliwiają
tworzenie RIMM-ów o pojemności 256 MB. Przyszłe wersje układów RIMM będą miały
większe pojemności, nawet powyżej 1 GB. Możliwe będzie również projektowanie
chipsetów obsługujących więcej kanałów Rambus, co umożliwi instalowanie na
płycie większej liczby gniazd RIMM.
Co ciekawe, Rambus nie produkuje ani układów RDRAM, ani modułów
RIMM
to zadanie pozostawia innym firmom. Rambus jest przede wszystkim firmą
projektującą technologie i nie posiada własnych fabryk układów ani hal
produkcyjnych. Firma ta udziela licencji na opracowaną przez siebie technologię
innym firmom, które wytwarzają urządzenia i moduły. Licencję na wytwarzanie
pamięci RDRAM posiada już co najmniej 13 firm: Fujitsu Ltd., Hitachi Ltd.,
Hyundai Electronics Industry Co. Ltd., IBM Microelectronics, LG Semiconductor
Co. Ltd., Micron Technology Inc., Mitsubishi Electric Corp., NEC Corp., Oki
Electric Industry Co. Ltd., Samsung Electronics Corp., Siemens AG oraz Toshiba
Corp. Wszystkie te firmy będą produkować zarówno RDRAM-y, jak i zawierające je
RIMM-y.

DDR SDRAM


Pamięć DDR (Double Data Rate) SDRAM jest rozwinięciem projektu
standardowych układów SDRAM, w którym dane przesyłane są z dwa razy większą
szybkością. Poza zwiększeniem częstotliwości taktowania, pamięci DDR osiągają
podwojenie wydajności dzięki wykonywaniu dwóch transferów podczas jednego taktu
zegara. Pierwszy z transferów jest wykonywany na rosnącym, a drugi
na
opadającym zboczu cyklu. Dzięki temu zostało uzyskane podwojenie szybkości
transferu przy wykorzystaniu tej samej częstotliwości i tych samych
sygnałów.
AMD i Cyrix, jak również producenci chipsetów VIA Technologies,
Ali (Acer Labs, Inc.) i SiS (Silicon integrated Systems) proponują pamięci DDR
jako tanią i wolną od konieczności posiadania licencji alternatywę RDRAM-ów.
Według oficjalnych zapowiedzi, Intel ma zamiar obsługiwać tylko pamięci RDRAM,
pozostawiając układy DDR tańszym i mniej wydajnym komputerom. Ciężar oficjalnej
standaryzacji układów DDR wzięło na siebie DDR Consortium, w którego skład
wchodzi zespół ekspertów firm Fujitsu Ltd., Hitachi Ltd., Hyunday Electronics
Industries Co., Mitsubishi Electric Corp., NEC Corp, Samsung Electronics Co.,
Texas Instruments oraz Toshiba Corp.
Pamięci DDR SDRAM powinny się pojawić na rynku już w tym roku,
przede wszystkim w komputerach z procesorami innych niż Intel producentów.


Pamięć podręczna
SRAM


Pamięć podręczna jest zupełnie innym rodzajem pamięci,
zdecydowanie szybszym od większości odmian układów DRAM. SRAM jest skrótem od
Static RAM, czyli pamięci statycznej, która w przeciwieństwie do układów DRAM
(pamięci dynamicznej) nie wymaga odświeżania. Dzięki rozwiązaniom zastosowanym w
układach SRAM nie tylko została wyeliminowana konieczność cyklicznego
odświeżania, ale i uzyskano znaczne zwiększenie szybkości, dzięki czemu układy
te mogą w pełni dotrzymać kroku nowoczesnym procesorom.
Czasy dostępu pamięci SRAM wynoszą nawet poniżej 2 ns, dzięki
czemu mogą współpracować z procesorami pracującymi z częstotliwościami 500 i
więcej MHz! Tak dobre wyniki osiągnięto dzięki budowie układów SRAM, w których
każda komórka pamięci jest zbudowana z sześciu tranzystorów. Dzięki temu
niepotrzebne stało się odświeżanie pamięci, ponieważ w komórkach nie ma
rozładowujących się z upływem czasu kondensatorów. Pamięci SRAM będą
przechowywały informację tak długo, jak długo będą zasilane. Dlaczego więc,
skoro układy SDRAM są tak dobre, nie stosuje się ich jako pamięci systemowej?
OdpowiedĄ jest prosta:





Typ
Szybkość
Gęstość
Koszt
wytworzenia

DRAM
Wolne
Wysoka
Niski

SDRAM
Szybkie
Niska
Wysoki



SRAM w porównaniu do układów DRAM jest dużo szybsza, ale
równocześnie ma dużo mniejszą gęstość, jest również o wiele droższa. Mniejsza
gęstość oznacza, że układy SRAM mają większe wymiary i w sumie przechowują mniej
komórek pamięci. Duża ilość tranzystorów i grupowa budowa układów oznacza, że
kości SRAM są nie tylko większe, ale i droższe w porównaniu z układami DRAM. Na
przykład moduł SDRAM może zawierać ponad 64 MB RAM, podczas gdy moduł SDRAM o
takim samym rozmiarze będzie miał tylko 2 MB, a koszt jego wytworzenia wyniesie
tyle samo, co 64 MB modułu DRAM. Ogólnie rzecz biorąc, pamięć SRAM jest około 30
razu większa i 30 razy droższa od pamięci DRAM. Z powodu dużych rozmiarów i
kosztów wytwarzania, moduły SRAM nie są stosowane jako pamięć systemowa
komputerów PC.
Choć SRAM jest zbyt droga, by można było ją wykorzystywać jako
pamięć systemową pecetów, projektanci systemów PC znaleĄli sposób, by za jej
pomocą znacząco zwiększyć wydajność komputerów. Zamiast wydawać duże kwoty na
układy SRAM i wykorzystywać je jako pamięć systemową, taniej było wyposażyć
procesor w niewielką ilość bardzo szybkiej pamięci SRAM, nazywanej pamięcią
podręczną (ang. cache memory). Pamięć podręczna pracuje z częstotliwością
zbliżoną lub nawet równą częstotliwości pracy procesora i jest pamięcią, z
której bezpośrednio korzysta procesor. Podczas operacji odczytu dane w szybkiej
pamięci podręcznej są z wyprzedzeniem wymieniane z wolniejszą pamięcią systemową
DRAM.
Do niedawna szybkość pamięci DRAM była ograniczona do około 60
ns (16 MHz). W czasie gdy komputery PC pracowały z częstotliwościami 16 i
mniej MHz, 60-nanosekundowe układy DRAM w pełni dotrzymywały kroku procesorowi i
płycie głównej, przez co nie było potrzeby stosowania pamięci podręcznej. Jednak
od czasu gdy procesory zaczęły być taktowane z częstotliwością wyższą od 16 MHz,
pamięci DRAM przestały wystarczać i projektanci komputerów zwrócili uwagę na
możliwości skryte w układach SRAM. Nastąpiło to na przełomie lat 1987
1988, gdy
na rynku pojawiły się pierwsze procesory 386 taktowane częstotliwościami 16 i 20
MHz. Systemy z tymi procesorami były jednymi z pierwszych systemów posiadających
pamięć podręczną, z której procesor bezpośrednio pobierał dane. Ponieważ pamięć
podręczna może pracować z szybkością procesora, kontroler pamięci podręcznej
przewiduje z wyprzedzeniem, jakich danych będzie potrzebował procesor i kopiuje
je z pamięci systemowej do szybszej pamięci podręcznej. Dzięki temu, gdy
procesor wywoła adres pamięci, zostaną mu dostarczone dane z pamięci
podręcznej.
Efektywność pamięci podręcznej jest wyrażana za pomocą
współczynnika trafień (ang. hit ratio). Jest to stosunek liczby trafień
do sumy wszystkich odczytów pamięci. Trafienie następuje, gdy procesorowi
są potrzebne dane, które zostały już wcześniej umieszczone w pamięci podręcznej,
dzięki czemu procesor nie musi ich odczytywać z pamięci systemowej.
Chybieniem (ang. cache miss) nazywana jest sytuacja, w której kontroler
pamięci podręcznej nie przewidział, iż dane, które chce odczytać procesor, będą
potrzebne, przez co procesor musi je odczytywać z wolniejszej pamięci
systemowej. Za każdym razem, gdy procesor odczytuje dane z pamięci
systemowej, musi czekać, ponieważ pamięć ta działa z niższą od niego
częstotliwością. Jeśli procesor pracuje z częstotliwością 233 MHz, jego
cykl trwa około 4 nanosekund. Pamięć systemowa natomiast może mieć czas dostępu
równy 60 ns, co oznacza, że pracuje z częstotliwością tylko 16 MHz. Z tego
powodu, za każdym razem, gdy procesor odczytuje dane z pamięci systemowej,
praktycznie zwalnia do 16 MHz! Zwolnienie jest osiągane poprzez realizowanie
przez procesor cykli oczekiwania (ang. wait states), podczas których nie
są wykonywane żadne operacje
procesor właściwie zatrzymuje się, oczekując na
dane z pamięci systemowej. Dlatego rozwiązania zastosowane przy projektowaniu
działania pamięci podręcznej mają bardzo duży wpływ na wydajność systemu.
W nowoczesnych komputerach, w celu zminimalizowania sytuacji,
kiedy procesor jest zmuszony do oczekiwania na dane z wolniejszej pamięci
systemowej, stosuje się dwa poziomy pamięci podręcznej: pamięć podręczną L1 i
pamięć podręczną L2. Pamięć podręczna pierwszego poziomu (L1) jest również
nazywana integralną lub wewnętrzną pamięcią podręczną, ponieważ znajduje się
bezpośrednio w procesorze i jest częścią jego matrycy. Z tego powodu L1 zawsze
pracuje z pełną częstotliwością jądra procesora i jest najszybszą pamięcią
podręczną w każdym systemie. Wszystkie procesory 486 i nowsze zawierają
zintegrowaną pamięć podręczną pierwszego poziomu, dzięki czemu są znacząco
szybsze od swoich poprzedników. Pamięć podręczna drugiego poziomu jest nazywana
również zewnętrzną pamięcią podręczną, ponieważ znajduje się poza samym
procesorem. Na początku pamięć ta znajdowała się na płycie głównej; tak było w
przypadku systemów z procesorami 386, 486 i Pentium. W systemach tych pamięć
podręczna L2 pracuje z częstotliwością płyty głównej.
W celu poprawienia wydajności, pamięć podręczna drugiego
poziomu w nowszych procesorach Intela, łącznie z procesorami Pentium Pro i
Pentium II, jest częścią samego procesora. Również nie znajduje się w matrycy
procesora, ale jest umieszczona wewnątrz jego modułu lub układu. Z tego powodu
systemy z procesorami Pentium Pro i Pentium II nie mają żadnej pamięci
podręcznej na płycie głównej
wszystko znajduje się w module lub układzie
procesora.
Kluczem do zrozumienia zarówno pamięci podręcznej, jak i
systemowej jest zrozumienie roli, jaką odgrywa w architekturze komputera.
Na rysunku 7.4 został przedstawiony typowy system z procesorem
Pentium MMX i chipsetem 430TX Intela.
W tabeli 7.3 zostały przedstawione zależności pomiędzy pamięcią
podręcznej pierwszego i drugiego poziomu.

Tabela 7.3. Zależności pomiędzy pamięcią podręczną pierwszego i drugiego
poziomu



Typ
procesora
486
DX4
Pentium
Pentium
Pro
Pentium II
(1997)
Pentium II
(1998)

Typowa częstotliwość pracy
procesora:
100 MHz
233 MHz
200 MHz
300 MHz
400 MHz

Czas dostępu pamięci podręcznej L1:
10 ns (100 MHz)
4 ns (233 MHz)
5 ns (200 MHz)
3 ns (300 MHz)
2 ns (400 MHz)

Czas dostępu pamięci podręcznej L2:
300 ns (33 MHz)
15 ns (66 MHz)
5 ns (200 MHz)
6 ns (150 MHz)
5 ns (200 MHz)

Częstotliwość pracy płyty głónej:
33 MHz
66 MHz
66 MHz
66 MHz
100 MHz

Czasy dostępu układów:
60 ns
60 ns
60 ns
15 ns
10 ns

SIMM/DIMM:
(16 MHz)
(16 MHz)
(16 MHz)
(66 MHz)
(100 MHz)



Początkowo pamięci podręczne były asynchroniczne, czyli
pracowały z częstotliwością różniącą się od częstotliwości magistrali procesora.
W stworzonym w 1995 roku chipsecie 430FX i wszystkich póĄniejszych wprowadzono
nowy typ synchronicznej pamięci podręcznej. Synchroniczny tryb pracy wymagał, by
częstotliwość pracy układów pamięci podręcznej była zsynchronizowana i taka sama
jak częstotliwość magistrali procesora, dzięki czemu znacząco zwiększała się jej
wydajność. W tym czasie dodano również tryb potokowo-seryjny (ang. pipeline
burst mode), który umożliwia dokonanie po każdym pojedynczym odczycie całej ich
serii, co pozwoliło zredukować sumę opóĄnień (cykli oczekiwań). Ponieważ zarówno
synchroniczny tryb pracy, jak i tryb potokowo-seryjny pojawiły się w tym samym
czasie i zostały zastosowane w tych samych układach, obecność jednego z nich
najczęściej jest związana z obecnością drugiego. W sumie dzięki obu trybom pracy
pamięci podręcznej wydajność systemu wzrosła o 20%, co jest już znaczącym
osiągnięciem.



Rysunek
7.4.
Architektura komputera z procesorem Pentium
MMX i chipsetem 430TX Intela



W nowoczesnych systemach kontroler pamięci podręcznej znajduje
się albo w układzie North Bridge (w komputerach z procesorami Pentium i
wcześniejszych), albo w procesorze (w komputerach z procesorami z Pentium Pro/II
i nowszych). Możliwości kontrolera decydują o wydajności i możliwościach pamięci
podręcznej. Warto zauważyć, iż większość kontrolerów pamięci podręcznej potrafi
buforować tylko ograniczoną ilość pamięci. Często limit ten jest dość niewielki,
tak jak to było w komputerach z procesorami Pentium i chipsetem 430TX. Chipset
ten był w stanie buforować tylko 64 MB pamięci systemowej. Jeśli miałeś więcej
pamięci, komputer działał zauważalnie wolniej, ponieważ wszystkie dane poza
pierwszymi 64 MB nigdy nie były buforowane i ich odczyt wiązał się z
koniecznością wykonania wszystkich cykli oczekiwań wymaganych podczas odczytu z
wolniejszych układów DRAM. Zależnie od wykorzystywanego oprogramowania,
spowolnienie to mogło być naprawdę znaczące. Na przykład 32-bitowe systemy
operacyjne, takie jak Windows NT lub 95/98 zapełniają pamięć od końca, czyli
gdybyś posiadał 96 MB pamięci, system operacyjny i aplikacje byłyby załadowane
bezpośrednio do niebuforowanych górnych 32 MB (położonych ponad pierwszymi 64
MB). Spowodowałoby to olbrzymie spowolnienie działania systemu. W tym wypadku
rozwiązaniem zwiększającym wydajność komputera byłoby wyjęcie dodatkowej
pamięci, tak by w systemie było zainstalowane tylko 64 MB. Krótko mówiąc,
nie ma sensu instalować w komputerze więcej pamięci, niż komputer (chipset) może
buforować. Więcej informacji znajdziesz w dokumentacji komputera lub rozdziale o
procesorach i chipsetach.
Fizyczna pamięć komputera


Maksymalną ilość fizycznej pamięci w komputerze determinuje typ
procesora i architektura płyty głównej komputera. Procesory 8088 i 8086 mają 20
linii adresowych i mogą zaadresować do 1 MB (1024 kB) pamięci RAM. Procesory 286
i 386SX mają 24-bitową magistralę adresową i mogą współpracować maksymalnie z 16
MB pamięci. Procesory 386DX, 486, Pentium, Pentium MMX i Pentium Pro mają 32
linie adresowe, dzięki czemu mają dostęp do 4 GB pamięci, natomiast Pentium II z
36 liniami adresowymi może obsłużyć aż 64 GB pamięci!
Procesory 286 i nowsze emulując procesor 8088 (np. wykonując
pojedynczy program systemu DOS) pracują w trybie rzeczywistym (ang. real
mode). Jest to jedyny tryb dostępny w procesorach 8086 i 8088, wykorzystywanych
w komputerach PC i XT. W trybie rzeczywistym wszystkie procesory Intel, łącznie
z "potężnymi" procesorami Pentium, mają przestrzeń adresową ograniczoną do 1 MB

dokładnie tak, jak ich przodkowie 8088 i 8086. 384 kB z tego obszaru są
zainstalowane na potrzeby różnych urządzeń komputera. Jedynie w trybie
chronionym procesory 286 i lepsze mogą w pełni wykorzystać swoje możliwości
adresowania.
Komputery z procesorami Pentium mogą zaadresować do 4 GB
pamięci, a komputery z procesorami Pentium II
do 64 GB pamięci.
Przekładając możliwości adresowania na ceny, koszt 64 GB (65536 MB) wyniósłby
łącznie ok. $100000. Oczywiście, planując zakup tak dużej ilości pamięci
moglibyśmy negocjować ze sprzedawcą korzystniejszą cenę. Nawet gdybyśmy
pozwolili sobie na zakup całej tej pamięci, to obecnie największe dostępne
moduły (168-końcówkowe moduły DIMM) mają pojemność 256 MB. Zainstalowanie takiej
ilości RAM-u wymagałoby użycia 256 takich kości pamięci, a produkowane dziś
płyty główne mają do 8 gniazd przeznaczonych na tę pamięć.
Większość płyt głównych Pentium II może posiadać maksymalnie od
trzech do siedmiu gniazd pamięci DIMM, co pozwala na zainstalowanie od 0,75 do
1,5 GB pamięci przy wypełnionych wszystkich gniazdach. Te ograniczenia wynikają
z chipsetu, nie z procesora. Technicznie rzecz ujmując, procesor Pentium może
zaadresować do 4 GB pamięci, zaś Pentium II
do 64 GB pamięci, jednak na rynku
nie występuje żaden chipset, który by to umożliwiał! Większość z istniejących
obecnie chipsetów PII pozwala zaadresować najwyżej 1 GB pamięci.
Systemy Pentium mają jeszcze większe ograniczenia. Są dostępne
od 1993 roku, lecz jedynie te zbudowane w roku 1997 i póĄniej używają chipsetu
płyty głównej obsługującego pamięci SDRAM DIMM. Nawet płyty używające
najnowszego chipsetu 430TX Intela nie obsługują więcej niż 256 MB całkowitej
pamięci, nie powinny mieć także zainstalowanych więcej niż 64 MB pamięci z
powodu ograniczeń w systemie pamięci podręcznej. Nie instaluj więcej niż 64 MB
pamięci w swoim systemie Pentium, chyba że jesteś pewny, iż płyta główna i
chipset umożliwiają funkcjonowanie pamięci podręcznej drugiego poziomu dla
pamięci głównej powyżej tego rozmiaru. Jeśli chcesz uzyskać więcej informacji na
ten temat, w rozdziale 4. w sekcji dotyczącej chipsetów znajdziesz wyczerpujący
opis ograniczeń pamięci podręcznej na płytach głównych Intela i innych
producentów.
Starsze płyty główne 386 i 486 mogą mieć problemy z
adresowaniem pamięci powyżej 16 MB, a to z powodu problemów z kontrolerem DMA
(Direct Memory Access). Jeśli zainstalujesz kartę ISA używającą kanału DMA (na
przykład kartę busmaster SCSI) i masz więcej niż 16 MB pamięci RAM,
pojawiają się potencjalne problemy, ponieważ magistrala ISA umożliwia transfery
DMA jedynie do granicy 16 MB. Próba transmisji danych poprzez DMA powyżej
granicy 16 MB kończy się załamaniem systemu. W przypadku nowych,
32-bitowych systemów problem znika, podobnie w przypadku 32-bitowych gniazd kart
rozszerzeń, takich jak PCI. 32-bitowe systemy operacyjne automatycznie remapują
transfery DMA magistrali ISA poniżej granicy 16 MB, zaś w przypadku
PCI po prostu nie ma takich ograniczeń.
Pierwotnie pamięć systemów komputerowych była zbudowana z
pojedynczych chipów. Oryginalne maszyny XT i AT firmy IBM posiadały 36 kieszeni
na takie chipy na płycie głównej. Zainstalowanie większej ilości pamięci
wymagało umieszczenia w komputerze specjalnych kart rozszerzających, na które
można by wetknąć dodatkowy RAM.
Poza pracochłonnością obsługi, tego typu rozszerzenia pamięci
miały jeszcze jedną wadę. Mianowicie kości miały tendencję do obluzowywania się
w gniazdach ze względu na cykle temperaturowe, którym były poddane. Każdego
dnia, gdy włączano system, kości się rozgrzewały, a potem
każdego dnia przy
wyłączaniu komputera
studziły się. Na skutek ruchów termicznych mogło się
zdarzyć, że kości traciły dobry styk z gniazdem. Objawiało się to usterkami
w pracy komputera. Jedyną metodą było otwieranie obudowy co jakiś czas i
pracochłonne dociskanie kości do ich gniazd.
Jedyną alternatywą było lutowanie kości pamięci
zamiast
umieszczania ich w gniazdach. Jednak w przypadku awarii pojedynczej kości
pamięci zwykła wymiana uszkodzonego elementu przeradzała się w koszmar
wylutowywania chipów z płyty głównej. Wymagało to wprawy, cierpliwości i wiele
czasu. Jedno i drugie rozwiązanie miało więc wady.
Zatem rozwiązaniem, jakie na producentach wymusili użytkownicy,
była prostota instalacji rozszerzeń pamięci z jednoczesnym zagwarantowaniem
trwałości takiej instalacji. W większości współczesnych komputerów można zamiast
pojedynczych układów pamięci spotkać raczej pamięć w postaci modułów SIMM
(single in-line memory module) albo DIMM (dual in-line memory module). Są to
małe płytki, które umieszczamy w gniazdach na płycie głównej albo na
kartach rozszerzających. Same układy pamięci zostały na stałe przylutowane do
modułów, niemożliwa jest więc wymiana pojedynczych układów. W razie awarii
musimy wymienić cały moduł. Pod tym względem moduły SIMM/DIMM przypominają więc
jedną dużą kość pamięci.
W komputerach kompatybilnych z IBM spotkać można dwa typy
modułów SIMM, różniące się fizycznie: moduły 30-końcówkowe (9-bitowe) i
72-końcówkowe (36-bitowe). Wśród nich spotyka się moduły różniące się
pojemnością pamięci i innymi parametrami. Moduły 30-końcówkowe są mniejsze od
72-końcókowych i mogą mieć przylutowane kostki pamięci z jednej lub z obydwu
stron. SIMM-y 30-końcówkowe wychodzą obecnie z użycia, przede wszystkim ze
względu na rosnącą popularność komputerów 64-bitowych, w których do obsadzenia
jednego banku pamięci potrzeba aż 8 takich modułów. W komputerach z procesorem
Pentium-MMX i Pentium Pro popularność zyskały moduły DIMM
168-końcówkowe
moduły 64-bitowe (bez bitów parzystości) lub 72-bitowe (z bitami
parzystości).
Na rysunkach 7.5, 7.6 i 7.7 przedstawiono typowe 30-końcówkowe
(9-bitowe) i 72-końcówkowe (36-bitowe) moduły SIMM oraz 168-końcówkowe
(64-bitowe) moduły DIMM. Końcówki znajdujące się z obydwu stron płytki
ponumerowano od lewej do prawej. Wszystkie wymiary są podane zarówno w calach,
jak i w milimetrach (w nawiasach).



Rysunek
7.5.
Rozkład wyprowadzeń typowego 30-końcówkowego
(9-bitowego) modułu SIMM


Rysunek
7.6.
Rozkład wyprowadzeń typowego 72-końcówkowego
(36-bitowego) modułu SIMM



Moduły SIPP (single inline pinned packages) są to zwykłe kości
SIMM, z dolutowanymi nóżkami w miejscach blaszek stykowych. Zostały one
wyprodukowane z myślą o gniazdach tańszych do SIMM. Ze względu na ich wady

brak zatrzasku chroniącego przed wysunięciem oraz brak zabezpieczeń przed
wycieraniem się styków
w dzisiejszych czasach prawie się ich nie
używa.



Rysunek
7.7.
Typowy moduł DIMM. Ukazany na rysunku ma
strukturę 72-bitową, jednak wymiarami nie różni się od modułu
64-bitowego
 





Istnieje możliwość
przerobienia modułu SIPP w SIMM
poprzez obcięcie dodatkowych igiełek

lub modułu SIMM w SIPP
poprzez ich dolutowanie. Istnieją także specjalne
przejściówki umożliwiające umieszczenie modułów SIPP w gniazdach
30-stykowych SIMM.


Moduł SIMM w bardzo małych rozmiarach skupia bardzo duży obszar
pamięci. Dostępne są wersje modułów o różnych pojemnościach. Tabela 7.4
przedstawia rozmiar pamięci różnych modułów SIMM (30- i 72-końcówkowych) oraz
DIMM.

Tabela 7.4. Pojemności modułów SIMM i DIMM




SIMM-y 30-końcówkowe

Rozmiar
Moduły z
kontrolą parzystości
Moduły bez
kontroli parzystości

256 kB
256 kb 9
256 kb 8

1 MB
1 Mb 9
1 Mb 8

4 MB
4 Mb 9
4 Mb 8

16 MB
16 Mb 9
16 Mb 8


SIMM-y 72-końcówkowe

Rozmiar
Moduły z
kontrolą parzystości
Moduły bez
kontroli parzystości

1 MB
256 kb 36
256 kb 32

2 MB
512 kb 36
512 kb 32

4 MB
1 Mb 36
1 Mb 32

8 MB
2 Mb 36
2 Mb 32

16 MB
4 Mb 36
4 Mb 32

32 MB
8 Mb 36
8 Mb 32

64 MB
16 Mb 36
16 Mb 32

128 MB/FONT>
32 Mb 36
32 Mb 32


DIMM-y 168-końcówkowe

Rozmiar
Moduły z
kontrolą parzystości
Moduły bez
kontroli parzystości

8 MB
1 Mb 72
1 Mb 62

16 MB
2 Mb 72
2 Mb 64

32 MB
4 Mb 72
4 Mb 64

64 MB
8 Mb 72
8 Mb 64

128 MB
16 Mb 72
16 Mb 64

256 MB
32 Mb 72
32 Mb 64



Moduły SIMM z układami dynamicznej pamięci RAM (DRAM) dla
poszczególnych rozmiarów pamięci są dostępne w wersjach o różnych czasach
dostępu. Szybkość pracy modułów pamięci wyraża się w nanosekundach (miliardowych
częściach sekundy, oznaczanych w skrócie ns). Dostępne moduły SIMM mają różne
czasy dostępu, od 120 ns (najwolniejsze) do 50 ns (najszybsze), a prędkość
modułów DIMM waha się od 60 ns do 7 ns. W większości pierwszych komputerów z
modułami SIMM, ich czas dostępu wynosił 120 ns. Moduły te zostały w niedługim
czasie wyparte przez SIMM-y 100-nanosekundowe i szybsze. Obecnie w handlu są
dostępne moduły SIMM od 70 ns do 60 ns oraz moduły DIMM o czasie dostępu
mniejszym niż 10 ns. Dostępne są również moduły szybsze i wolniejsze od tych,
jednak z powodu ich ograniczonego zastosowania są trudne do zdobycia.
Jeżeli komputer wymaga modułów o określonym czasie dostępu, to
zawsze można zastosować szybsze moduły. Bez problemu można również "mieszać" w
jednym komputerze moduły o różnych czasach dostępu, o ile ich czas dostępu jest
taki sam lub krótszy w porównaniu do wymaganego przez dany komputer. Z
powodu niedużych różnic w cenie pomiędzy modułami o różnych czasach
dostępu, zazwyczaj decyduję się na kupno szybszych modułów, niż wymaga mój
komputer. Szybsze moduły mogą znaleĄć zastosowanie w przyszłości, przy zmianie
komputera na model wymagający modułów o krótszym czasie
dostępu.




Większość modułów
DIMM składa się z układów pamięci SDRAM (Synchronous DRAM),
charakteryzujących się bardzo szybkim transferem danych, synchronicznym do
dostarczonego sygnału zegarowego. Moduły te mogą współpracować z
magistralami przesyłającymi dane z częstotliwością do 100 MHz, a w
przyszłości do 200 MHz.


30-końcówkowe moduły SIMM są dostępne w kilku odmianach, co
może mieć wpływ na ich pracę w konkretnym komputerze (po zainstalowaniu
niektórych modułów komputer może odmówić pracy). Po pierwsze, moduły te
występują w dwóch odmianach różniących się rozkładem wyprowadzeń. W większości
komputerów wykorzystuje się moduły ogólnego przeznaczenia, których rozkład
wyprowadzeń został ustandaryzowany. W wielu starszych komputerach, począwszy od
XT-286, który pojawił się w roku 1986, aż do komputerów PS/2 (modele 25,
30, 50 i 60), wykorzystywano moduły o nieco zmodyfikowanej konfiguracji
końcówek. (tzw. 30-końcówkowe moduły IBM-style SIMMs). Można dopasować
30-końcówkowy moduł SIMM ogólnego przeznaczenia do pracy z komputerem IBM, a
także moduł specyficzny dla IBM do pracy z innymi komputerami, jednak
prostszy będzie zakup modułów o wyprowadzeniach odpowiednich dla danego typu
komputera. Jeżeli potrzebujemy modułów specyficznych dla IBM, to powiedzmy o tym
sprzedawcy przy zakupie.
Inny problem jest związany z SIMM-ami 30-końcówkowymi i odnosi
się do ilości bitów w module. Pojedynczy moduł jest traktowany jak układ pamięci
z 9 bitami danych (w tym bit parzystości), wewnętrzna struktura modułu nie ma
przy tym znaczenia. Starsze moduły składały się z dziewięciu 1-bitowych kości
pamięci, podczas gdy w nowszych modułach znajdują się dwa układy 4-bitowe i
jeden 1-bitowy, pamiętający bity parzystości. Dzięki temu ilość wszystkich
układów modułu została ograniczona do trzech. Zmniejszenie ilości układów modułu
do trzech wymaga modyfikacji pewnych układów na płycie głównej odpowiedzialnych
za odświeżanie pamięci. Wiele starszych płyt głównych nie radzi sobie z modułami
3-układowymi. Większość nowszych płyt automatycznie dopasowuje się do modułów z
trzema lub z dziewięcioma układami. Korzystanie z modułów 3-układowych ma jednak
tę zaletę, że moduły te są bardziej niezawodne, zużywają mniej energii i mniej
kosztują. Większość starszych komputerów również powinna pracować poprawnie z
modułami 3-układowymi, jednak niektóre komputery mogą odmówić pracy. Niestety,
jedyny sposób, aby się o tym przekonać, polega na sprawdzeniu poprawności
działania komputera z danymi modułami. Rozsądniej jest jednak pozostać przy
modułach 9-układowych, aby nie zużywać czasu na zamianę modułów 3-układowych na
9-układowe.
W przypadku SIMM-ów 72-końcówkowych nie ma problemów z
wyprowadzeniami końcówek, jedyne różnice wynikają z różnych pojemności pamięci i
różnych czasów dostępu. Na współpracę modułu z komputerem nie ma wpływu liczba
układów pamięci w module. 72-końcówkowe moduły SIMM są idealnym rozwiązaniem w
przypadku komputerów 32-bitowych, np. z procesorem 486, ponieważ pojedynczy
moduł wystarczy w takim komputerze do obsadzenia całego banku pamięci (32 bity
danych plus cztery bity parzystości). Kiedy zmieniamy ilość pamięci w komputerze
32-bitowym wykorzystującym SIMM-y 76-końcówkowe, możemy dodawać i usuwać
pojedyncze moduły (wyjątek stanowią komputery, w których wprowadzono tzw. pamięć
z przeplotem
ang. interleaved memory
aby uniknąć wstawiania cykli
oczekiwania przy dostępie do pamięci).
W komputerach 64-bitowych, do których zaliczają się komputery z
procesorem Pentium albo nowszym, jeden bank pamięci tworzą dwa 72-końcówkowe
moduły SIMM. Niektórzy producenci płyt głównych oferują płyty "oszczędzające
SIMM-y" przeznaczone dla nowszych procesorów Pentium, które są wyposażone w
gniazda dla SIMM-ów 30- i 72-końcówkowych. Konfiguracja taka nie należy z
pewnością do najbardziej pożądanych, pozwala jednak użytkownikowi na
zagospodarowanie starych modułów 30-końcówkowych. Na jeden bank pamięci może
składać się 8 SIMM-ów 30-końcówkowych. Można również użyć kombinacji czterech
modułów 30-końcówkowych z jednym modułem 72-końcówkowym. Konfiguracja taka na
pewno nie jest optymalną, ponieważ 6 modułów zajmuje dużo miejsca na płycie
głównej.
Inną możliwością są SIMM-y grupowane w "stosy" oraz konwertery
modułów SIMM. Pozwalają one na umieszczanie SIMM-ów 30-końcówkowych w gniazdach
72-końcówkowych, dzięki czemu zagospodarowujemy moduły, które inaczej
wyrzucilibyśmy na śmietnik. Takie sposoby, podobnie jak poprzednie, zabierają
miejsce na płycie głównej, rozważmy więc dobrze sprawę przed ewentualnym
zakupem. Obecnie, gdy ceny modułów SIMM i DIMM nieustannie spadają,
prawdopodobnie lepszym rozwiązaniem będzie pozostanie przy 72-końcówkowych
modułach SIMM i 168-końcówkowych modułach SIMM.
Pamiętajmy przy tym, że w niektórych komputerach z procesorem
486 (np. PS/2 90 i 95) stosuje się w celu zmniejszenia liczby cykli oczekiwania
tzw. pamięć z przeplotem (ang. interleaved memory). W rozwiązaniu tym liczba
SIMM-ów w komputerze musi być wielokrotnością liczby 2, ponieważ idea dostępu do
pamięci z przeplotem polega na naprzemiennym odwoływaniu się procesora do obydwu
modułów, dzięki czemu poprawia się wydajność komputera.




Bank
pamięci jest najmniejszą porcją pamięci, jaka może być jednorazowo
zaadresowana przez procesor. Rozmiar banku z reguły odpowiada szerokości
magistrali danych procesora. W przypadku pamięci z przeplotem wirtualny
bank pamięci może mieć rozmiar dwukrotnie większy od szerokości magistrali
danych procesora.



Nie zawsze możemy zamienić moduł SIMM w komputerze na moduł o
większej pojemności pamięci. Np. komputery IBM PS/2 Model 70-Axx i Bxx
dopuszczają stosowanie 72-końcówkowych modułów SIMM o pojemnościach 1 MB i 2 MB
oraz o czasie dostępu 80 ns lub krótszym. Osiągalne są również SIMM-y o
pojemności 4 MB i czasie dostępu 80 ns, jednak moduły takie nie będą pracowały w
tych komputerach. Natomiast komputery PS/2 Model 50 SX i 65 SX dopuszczają
72-końcówkowe SIMM-y o pojemnościach 1 MB, 2 MB i 4 MB. Moduły SIMM o
większych pojemnościach mogą być stosowane tylko wówczas, gdy na ich stosowanie
pozwala płyta główna. Informacje na temat odpowiedniej dla danego komputera
pojemności pamięci i czasu dostępu modułów SIMM można znaleĄć w dokumentacji
komputera.
Obecnie wszystkie dostępne w sprzedaży komputery wykorzystują
moduły SIMM, a wiele komputerów współpracuje z modułami DIMM. Moduły SIMM i
DIMM spotyka się nawet w komputerach Apple Macintosh. Rozwiązanie SIMM/DIMM nie
jest niczyim rozwiązaniem firmowym, a raczej standardem w branży. Jak już
wspomniałem, niektóre moduły SIMM przy takiej samej pojemności i czasie dostępu
różnią się nieco wyprowadzeniem końcówek, dlatego powinniśmy się zawsze upewnić,
że moduły, które kupujemy, pasują do naszego komputera.

Rozkład końcówek modułów SIMM


W tabelach 7.5 i 7.6 zebrano opisy wyprowadzeń 30-końcówkowych
oraz standardowych 72-końcówekowych modułów SIMM. Dodatkowa tabela opisuje
znaczenie specjalnych końcówek SIMM-ów 72-końcówkowych, wykorzystywa-nych do
wykrywania obecności modułu w gnieĄdzie. Końcówki te służą płycie głównej do
ustalenia rozmiaru i czasu dostępu pamięci RAM modułów SIMM. Końcówek tych są
pozbawione standardowe SIMM-y 30-końcówkowe, jednak firma IBM wyposażyła w tę
funkcję swoje zmodyfikowane SIMM-y 30-końcówkowe.

Tabela 7.5. Rozmieszczenie końcówek w standardowych 30-końcówkowych modułach SIMM
oraz 30-końcówkowych modułach SIMM firmy IBM



Końcówka
Sygnał modułu
standardowego
Sygnał modułu
firmy IBM

1
+5 Vdc
+5 Vdc

2
Sygnał strobe kolumny adresu
Sygnał strobe kolumny adresu

3
Dane
bit 0
Dane
bit 0

4
Adres
bit 0
Adres
bit 0

5
Adres
bit 1
Adres
bit 1

6
Dane
bit 1
Dane
bit 1

7
Adres
bit 2
Adres
bit 2

8
Adres
bit 3
Adres
bit 3

9
Masa
Masa

10
Dane
bit 2
Dane
bit 2

11
Adres
bit 4
Adres
bit 4

12
Adres
bit 5
Adres
bit 5

13
Dane
bit 3
Dane
bit 3

14
Adres
bit 6
Adres
bit 6

15
Adres
bit 7
Adres
bit 7

16
Dane
bit 4
Dane
bit 4

17
Adres
bit 8
Adres
bit 8

18
Adres
bit 9
Adres
bit 9

19
Adres
bit 10
Sygnał strobe wiersza adresu

20
Dane
bit 5
Dane
bit 5

21
WE (Write Enable
zapis do pamięci)
WE (Write Enable
zapis do
pamięci)

22
Masa
Masa

23
Dane
bit 6
Dane
bit 6

24
Nie podłączone
Obecność modułu w gnieĄdzie (masa)

25
Dane
bit 7
Dane
bit 7

26
Dane
bit 8, wejściowy
(parzystości)
Obecność modułu w gnieĄdzie (1 MB =
masa)

27
Sygnał strobe wiersza adresu
Sygnał strobe wiersza adresu

28
Bit parzystości sygnału strobe kolumny
adresu
Nie podłączone

29
Dane - bit 8 (parzystości),
wyjściowy
Dane
bit 8 (parzystości), linia
dwukierunkowa

30
+5 Vdc
+5 Vdc


Tabela 7.6. Rozmieszczenie końcówek w standardowych 72-końcówkowych modułach
SIMM



Końcówka
Sygnał modułu
standardowego
Końcówka
Sygnał modułu
standardowego

1
Masa
37
Parzystość
bit 1

2
Dane
bit 0
38
Parzystość
bit 3

3
Dane
bit 16
39
Masa

4
Dane
bit 1
40
Sygnał strobe kolumny adresu 0

5
Dane
bit 17
41
Sygnał strobe kolumny adresu 2

6
Dane
bit 2
42
Sygnał strobe kolumny adresu 3

7
Dane
bit 18
43
Sygnał strobe kolumny adresu 1

8
Dane
bit 3
44
Sygnał strobe wiersza adresu 0

9
Dane
bit 19
45
Sygnał strobe wiersza adresu 1

10
+5 Vdc
46
Wybór bloku 1

11
Bit parzystości sygnału strobe kolumny
adresu
47
WE (Write Enable
zapis do
pamięci)

12
Adres
bit 0
48
Zarezerwowane

13
Adres
bit 1
49
Dane
bit 8

14
Adres
bit 2
50
Dane
bit 24

15
Adres
bit 3
51
Dane
bit 9

16
Adres
bit 4
52
Dane
bit 25

17
Adres
bit 5
53
Dane
bit 10

18
Adres
bit 6
54
Dane
bit 26

19
Zarezerwowane
55
Dane
bit 11

20
Dane
bit 4
56
Dane
bit 27

21
Dane
bit 20
57
Dane
bit 12

22
Dane
bit 5
58
Dane
bit 28

23
Dane
bit 21
59
+5 Vdc

24
Dane
bit 6
60
Dane
bit 29

25
Dane
bit 22
61
Dane
bit 13

26
Dane
bit 7
62
Dane
bit 30

27
Dane
bit 23
63
Dane
bit 14

28
Adres
bit 7
64
Dane
bit 31

29
Wybór bloku 0
65
Dane
bit 15

30
+5 Vdc
66
Wybór bloku 2

31
Adres
bit 8
67
Obecność modułu w gnieĄdzie
bit
0

32
Adres
bit 9
68
Obecność modułu w gnieĄdzie
bit
1

33
 
69
Obecność modułu w gnieĄdzie
bit
2

34
 
70
Obecność modułu w gnieĄdzie
bit
3

35
Parzystość
bit 2
71
Wybór bloku 3

36
Parzystość
bit 0
72
Masa



Zwróć uwagę, że 72-stykowe SIMM-y wykorzystują zestaw czterech
lub pięciu styków do przekazania płycie głównej informacji o rodzaju SIMM-a. Te
styki obecności są albo podłączone do masy, albo nie podłączone w celu wskazania
typu SIMM-a. Styki obecności muszą być podłączone do masy poprzez zeroomowy
rezystor na płytce SIMM
w celu wysterowania styku w wysoki poziom logiczny,
gdy styk jest otwarty, a w niski poziom logiczny, gdy styk jest połączony z masą
płyty głównej. W ten sposób powstaje cyfrowy sygnał dekodowany przez układy
logiczne płyty głównej. Jeśli płyta główna wykorzystuje sygnały obecności, to
podczas procedury POST (Power-On Self Test) potrafi wyznaczyć rozmiar i szybkość
płytek pamięci SIMM i na tej podstawie automatycznie dobrać sygnały sterowania i
adresowania pamięci. Dzięki temu rozmiar i szybkość pamięci mogą być wykryte
automatycznie.




Cały mechanizm
bardzo przypomina przemysłowy standard kodów DX używanych w nowoczesnych
filmach fotograficznych 35 mm, który wskazuje na wartość ASA (szybkość
naświetlania) filmu. Gdy wkładasz film do aparatu, styki elektryczne łączą
się z metalizowanymi polami na obudowie rolki, tworzącymi ogólnie przyjęty
kod DX.


Tabela 7.7 przedstawia przemysłowy standard JEDEC stosowany do
wykrywania konfiguracji 72-stykowych modułów pamięci z rodziny SIMM. JEDEC to
Joint Electronic Devices Engineering Council, stowarzyszenie amerykańskich
producentów i użytkowników półprzewodników, ustanawiające wymiary i inne
standardy dla kostek i modułów pamięci.

Tabela 7.7. Konfiguracja styków obecności dla 72-stykowych pamięci
SIMM



Rozmiar
Szybkość
Styk
67
Styk
68
Styk
69
Styk
70
Styk
11

1 MB
100 ns
Gnd
-
Gnd
Gnd
-

1 MB
80 ns
Gnd
-
-
Gnd
-

1 MB
70 ns
Gnd
-
Gnd
-
-

1 MB
60 ns
Gnd
-
-
-
-

2 MB
100 ns
-
Gnd
Gnd
Gnd
-

2 MB
80 ns
-
Gnd
-
Gnd
-

2 MB
70 ns
-
Gnd
Gnd
-
-

2 MB
60 ns
-
Gnd
-
-
-

4 MB
100 ns
Gnd
Gnd
Gnd
Gnd
-

4 MB
80 ns
Gnd
Gnd
-
Gnd
-

4 MB
70 ns
Gnd
Gnd
Gnd
-
-

4 MB
60 ns
Gnd
Gnd
-
-
-

8 MB
100 ns
-
-
Gnd
Gnd
-

8 MB
80 ns
-
-
-
Gnd
-

8 MB
70 ns
-
-
Gnd
-
-

8 MB
60 ns
-
-
-
-
-

16 MB
80 ns
Gnd
-
-
Gnd
Gnd

16 MB
70 ns
Gnd
-
Gnd
-
Gnd

16 MB
60 ns
Gnd
-
-
-
Gnd

16 MB
50 ns
Gnd
-
Gnd
Gnd
Gnd

32 MB
80 ns
-
Gnd
-
Gnd
Gnd

32 MB
70 ns
-
Gnd
Gnd
-
Gnd

32 MB
60 ns
-
Gnd
-
-
Gnd

32 MB
50 ns
-
Gnd
Gnd
Gnd
Gnd






-
    
Bez połączenia (otwarte)

Gnd
    
Ground (masa)

Pin 67
    
Presence detect 1 (wykrywanie
obecności)

Pin 68
    
Presence detect 2

Pin 69
    
Presence detect 3

Pin 70
    
Presence detect 4

Pin 11
    
Presence detect 5



Niestety, nie wszyscy producenci dostosowują się do przyjętych
za obowiązujące standardów. Jednym z przykładów jest różnorodność rozwiązań
sygnałów zawiadamiających o obecności różnych modułów pamięci. Compaq, IBM
(głównie w systemach PS/2) i Hewlett-Packard są głównymi producentami
komputerów o takich
niestandardowych
wymaganiach. Wiele z ich systemów,
pomimo iż używają standardowych gniazd SIMM, wymaga specjalnych, dostosowanych
do ich komputerów modułów pamięci. Tabela 7.8 przedstawia połączenia styków
konfiguracji pamięci według firmy IBM.
Właśnie różnorodne wariacje definicji tych styków są powodem,
dla którego przy zamawianiu pamięci SIMM musisz podać, czy chodzi o układy IBM,
Compaq, HP czy moduły standardowe.

Tabela 7.8. Konfiguracja styków obecności dla 72-stykowych pamięci
SIMM



67
68
69
70
Typ
SIMM-a
Numer części
(IBM)

-
-
-
-
Niedozwolona konfiguracja
N/A

Gnd
-
-
-
1 MB 120 ns
N/A

-
Gnd
-
-
2 MB 120 ns
N/A

Gnd
Gnd
-
-
2 MB 70 ns
92F0102

-
-
Gnd
-
8 MB 70 ns
64F3606

Gnd
-
Gnd
-
Zarezerwowane
N/A

-
Gnd
Gnd
-
2 MB 80 ns
92F0103

Gnd
Gnd
Gnd
-
8 MB 80 ns
64F3607

-
-
-
Gnd
Zarezerwowane
N/A

Gnd
-
-
Gnd
1 MB 85 ns
90X8624

-
Gnd
-
Gnd
2 MB 85 ns
92F0104

Gnd
Gnd
-
Gnd
4 MB 70 ns
92F0105

-
-
Gnd
Gnd
4 MB 85 ns
79F1003 (square notch) L40-SX

Gnd
-
Gnd
Gnd
1 MB 100 ns
N/A

Gnd
-
Gnd
Gnd
8 MB 80 ns
79F1004 (square notch) L40-SX

-
Gnd
Gnd
Gnd
2 MB 100 ns
N/A

Gnd
Gnd
Gnd
Gnd
4 MB 80 ns
87F9980

Gnd
Gnd
Gnd
Gnd
2 MB 85 ns
79F1003 (square notch)
L40SX






-
    
Bez połączenia (otwarte)

Gnd
    
Ground (masa)

Pin 67
    
Presence detect 1 (wykrywanie
obecności)

Pin 68
    
Presence detect 2

Pin 69
    
Presence detect 3

Pin 70
    
Presence detect 4



Tabela 7.9 przedstawia rozkład wyprowadzeń standardowych,
niebuforowanych, 168-stykowych pamięci SDRAM DIMM.

Tabela 7.9. Wyprowadzenia 168-stykowej pamięci SDRAM DIMM



Styk
64
Non-Parity
72
Parity/ECC
Styk
64
Non-Parity
72
Parity/ECC

1
Gnd
Gnd
85
Gnd
Gnd

2
Data Bit 0
Data Bit 0
86
Data Bit 32
Data Bit 32

3
Data Bit 1
Data Bit 1
87
Data Bit 33
Data Bit 33

4
Data Bit 2
Data Bit 2
88
Data Bit 34
Data Bit 34

5
Data Bit 3
Data Bit 3
89
Data Bit 35
Data Bit 35

6
+5 V
+5 V
90
+5 V
+5 V

7
Data Bit 4
Data Bit 4
91
Data Bit 36
Data Bit 36

8
Data Bit 5
Data Bit 5
92
Data Bit 37
Data Bit 37

9
Data Bit 6
Data Bit 6
93
Data Bit 38
Data Bit 38

10
Data Bit 7
Data Bit 7
94
Data Bit 39
Data Bit 39

11
Data Bit 8
Data Bit 8
95
Data Bit 40
Data Bit 40

12
Gnd
Gnd
96
Gnd
Gnd

13
Data Bit 9
Data Bit 9
97
Data Bit 41
Data Bit 41

14
Data Bit 10
Data Bit 10
98
Data Bit 42
Data Bit 42

15
Data Bit 11
Data Bit 11
99
Data Bit 43
Data Bit 43

16
Data Bit 12
Data Bit 12
100
Data Bit 44
Data Bit 44

17
Data Bit 13
Data Bit 13
101
Data Bit 45
Data Bit 45

18
+5 V
+5 V
102
+5 V
+5 V

19
Data Bit 14
Data Bit 14
103
Data Bit 46
Data Bit 46

20
Data Bit 15
Data Bit 15
104
Data Bit 47
Data Bit 47

21
-
Check Bit 0
105
-
Check Bit 4

22
-
Check Bit 1
106
-
Check Bit 5

23
Gnd
Gnd
107
Gnd
Gnd

24
-
-
108
-
-

25
-
-
109
-
-

26
+5 V
+5 V
110
+5 V
+5 V

27
Write Enable
Write Enable
111
Column Address Strobe
Column Address Strobe

28
Byte Mask 0
Byte Mask 0
112
Byte Mask 4
Byte Mask 4

29
Byte Mask 1
Byte Mask 1
113
Byte Mask 5
Byte Mask 5

30
S0
S0
114
S1
S1

31
Reserved
Reserved
115
Row Address Strobe
Row Address Strobe

32
Gnd
Gnd
116
Gnd
Gnd

33
Address Bit 0
Address Bit 0
117
Address Bit 1
Address Bit 1

34
Address Bit 2
Address Bit 2
118
Address Bit 3
Address Bit 3

35
Address Bit 4
Address Bit 4
119
Address Bit 5
Address Bit 5

36
Address Bit 6
Address Bit 6
120
Address Bit 7
Address Bit 7

37
Address Bit 8
Address Bit 8
121
Address Bit 9
Address Bit 9

38
Address Bit 10
Address Bit 10
122
Bank Address 0
Bank Address 0

39
Bank Address 1
Bank Address 1
123
Address Bit 11
Address Bit 11

40
+5 V
+5 V
124
+5 V
+5 V

41
+5 V
+5 V
125
Clock 1
Clock 1

42
Clock 0
Clock 0
126
Address Bit 12
Address Bit 12

43
Gnd
Gnd
127
Gnd
Gnd

44
Reserved
Reserved
128
Clock Enable 0
Clock Enable 0

45
S2
S2
129
S3
S3

46
Byte Mask 2
Byte Mask 2
130
Byte Mask 6
Byte Mask 6

47
Byte Mask 3
Byte Mask 3
131
Byte Mask 6
Byte Mask 6

48
Reserved
Reserved
132
Address Bit 13
Address Bit 13

49
+5 V
+5 V
133
+5 V
+5 V

50
-
-
134
-
-

51
-
-
135
-
-

52
-
Check Bit 2
136
-
Check Bit 6

53
-
Check Bit 3
137
-
Check Bit 7

54
Gnd
Gnd
138
Gnd
Gnd

55
Data Bit 16
Data Bit 16
139
Data Bit 48
Data Bit 48

56
Data Bit 17
Data Bit 17
140
Data Bit 49
Data Bit 49

57
Data Bit 18
Data Bit 18
141
Data Bit 50
Data Bit 50

58
Data Bit 19
Data Bit 19
142
Data Bit 51
Data Bit 51

59
+5 V
+5 V
143
+5 V
+5 V

60
Data Bit 20
Data Bit 20
144
Data Bit 52
Data Bit 52

61
-
-
145
-
-

62
Voltage Reference
Voltage Reference
146
Voltage Reference
Voltage Reference

63
Clock Enable 1
Clock Enable 1
147
-
-

64
Gnd
Gnd
148
Gne
Gne

65
Data Bit 21
Data Bit 21
149
Data Bit 53
Data Bit 53

66
Data Bit 22
Data Bit 22
150
Data Bit 54
Data Bit 54

67
Data Bit 23
Data Bit 23
151
Data Bit 55
Data Bit 55

68
Gnd
Gnd
152
Gnd
Gnd

69
Data Bit 24
Data Bit 24
153
Data Bit 56
Data Bit 56

70
Data Bit 25
Data Bit 25
154
Data Bit 57
Data Bit 57

71
Data Bit 26
Data Bit 26
155
Data Bit 58
Data Bit 58

72
Data Bit 27
Data Bit 27
156
Data Bit 59
Data Bit 59

73
+5 V
+5 V
157
+5 V
+5 V

74
Data Bit 28
Data Bit 28
158
Data Bit 60
Data Bit 60

75
Data Bit 29
Data Bit 29
159
Data Bit 61
Data Bit 61

76
Data Bit 30
Data Bit 30
160
Data Bit 62
Data Bit 62

77
Data Bit 31
Data Bit 31
161
Data Bit 63
Data Bit 63

78
Gnd
Gnd
162
Gnd
Gnd

79
Clock 2
Clock 2
163
Clock 3
Clock 3

80
-
-
164
-
-

81
-
 
165
Serial PD Address 0
Serial PD Address 0

82
Serial Data I/O
Serial Data I/O
166
Serial PD Address 1
Serial PD Address 1

83
Serial Clock Input
Serial Clock Input
167
Serial PD Address 2
Serial PD Address 2

84
+5 V
+5 V
168
+5 V
+5 V






-
    
Bez połączenia (otwarte)

Gnd
    
Ground (masa)



Pamięci DIMM używają zupełnie innego mechanizmu wykrywania
obecności, noszącego nazwę SPD (Serial Presence Detect). Składa się on z małej
pamięci EEPROM (Electrically Erasable Programmable Read Only Memory) lub nawet
pamięci flash umieszczonej w module DIMM, zawierającej specjalnie
sformatowane dane opisujące właściwości danego modułu. Te szeregowe dane mogą
zostać odczytane poprzez styki danych szeregowych modułu i umożliwiają płycie
głównej precyzyjne dostosowanie się do zainstalowanego modułu
pamięci.

Zorganizowanie oraz pojemności pamięci RAM


Na płytach głównych komputerów PC można spotkać kilka typów
układów pamięci. W większości są to układy o szerokości magistrali równej 1
bit, o różnych pojemnościach. W poniższej tabeli zebrano spotykane układy RAM i
ich pojemności:





Typ
układu
Pojemność

16 K razy 1 bit
Układy wykorzystywane w oryginalnym komputerze
IBM PC z płytą główną Typu 1.

64 K razy 1 bit
Układy wykorzystywane na standardowej płycie
głównej IBM PC Typ 2. Układy te są również wykorzystywane na wielu kartach
rozszerzających pamięć, np. klasyczna karta AST 6-pack.

128 K razy 1 bit
Układy wykorzystywane na płycie głównej Typ 1
komputera IBM PC AT były osobliwym połączeniem dwóch układów 64 K
umieszczonych i przylutowanych jeden na drugim. Pojedyncze układy były
również wykorzystywane do przechowywania wartości bitu parzystości
w komputerze IBM XT 286.

256 K razy 1 bit(lub 64 K razy 4
bity)
Układy te można było w swoim czasie często
spotkać na wielu popularnych płytach głównych i kartach rozszerzających
pamięć. Były także stosowane na płytach komputerów IBM XT Typ 2 i IBM AT
Typ 2 oraz płytach wielu komputerów kompatybilnych pochodzących
z tamtego okresu.

1 M razy 1 bit(lub 256 K razy 4
bity)
Układy o pojemności 1 Mb były przez szereg lat
bardzo popularne i najczęściej znajdowały zastosowanie w modułach
SIMM o pojemnościach od 256 kB do 9 MB.

4 M razy 1 bit(lub 1 M razy 4
bity)
Układy o pojemności 4 Mb są najczęściej
stosowane w modułach SIMM o pojemnościach od 1 MB do 16 MB. Można je było
spotkać przede wszystkim w modułach SIMM 4 MB i 8 MB. Generalnie nie
były sprzedawane jako osobne układy.

16 M razy 1 bit(lub 4 M razy 4
bity)
Układy o pojemności 16 Mb, wykorzystywane
często w 72-końcówkowych modułach SIMM o pojemnościach od 16 MB do 32
MB.

64 M razy 1 bit(lub 16 M razy 4
bity)
Układy o pojemności 64 Mb, spotykane często w
modułach o pojemnościach 16 MB lub większych, zwłaszcza w komputerach
typu notebook.

256 M razy 1 bit(lub 64 M razy 4
bity)
Układy o pojemności 256 Mb, które pojawiły się
na rynku w ostatnim czasie. Pozwalają na budowę modułów SIMM o pojemności
ponad 128 MB! Z powodu wysokiej ceny i ograniczonej dostępności można je
spotkać jedynie w najdroższych i największych dostępnych obecnie modułach
pamięci.



Rysunek 7.8 przedstawia wygląd typowego układu pamięci RAM.
Każde z oznaczeń na układzie niesie ze sobą jakąś
informację.



Rysunek
7.8.
Oznaczenia na typowym układzie pamięci
RAM



Przyrostek "
10" na układzie określa jego szybkość (czas
dostępu), wyrażoną w nanosekundach (ten układ ma czas dostępu równy 100 ns).
Symbol MB81256 jest numerem identyfikującym układ i zazwyczaj zawiera informację
o pojemności kości pamięci. Cyfry 1256 wskazują na rozmiar 256 K słów
1-bitowych. Aby z takich układów uzyskać bank pamięci o szerokości jednego
bajta, potrzebnych jest dziewięć takich układów. Układ oznaczony symbolem
KM4164B-10 oznacza kość pamięci o pojemności 64 K razy 1 bit o czasie dostępu
100 ns. Poniższa lista przedstawia popularne układy pamięci i ich
oznaczenia.





Symbol
układu
Pojemność
pamięci

4164
64 K razy 1 bit

4464
64 K razy 4 bity

41128
128 K razy 1 bit

44128
128 K razy 4 bity

41256
256 K razy 1 bit

44256
256 K razy 4 bity

41000
1 M razy 1 bit

44000
1 M razy 4
bity


Układy o szerokości słowa większej niż jeden bit są stosowane
do budowy banków składających się z mniejszej liczby układów niż 9, 18 czy 36 (w
zależności od architektury). Np. w komputerze XT-286, który jest 16-bitowym
komputerem AT, ostatnie 128 kB pamięci na płycie głównej jest bankiem
składającym się tylko z sześciu układów; cztery z nich mają szerokość słowa
równą 4 bity, a pozostałe dwa układy z bitami parzystości to układy jednobitowe.
Szerokość słowa jest więc równa 18 bitom.
Litera "F", umieszczona pomiędzy dwoma kreskami na rysunku 7.8,
jest znakiem firmy Fujitsu Microelectronics. Liczba 8609 oznacza datę produkcji
(dziewiąty tydzień 1986 roku), podaną jednak według kalendarza juliańskiego.
Dokładniejszych informacji o oznaczeniu układu może udzielić producent albo
sprzedawca układu.
SIMM-y i DIMM-y również mają numery części, które mogą być
trudne w odcyfrowaniu. Niestety, nie ma ogólnie przyjętego przemysłowego
standardu nazywania takich modułów, więc jeśli chcesz precyzyjnie rozszyfrować
numer części, musisz się skontaktować z producentem. Rysunek 7.9 przedstawia
sposób numerowania modułów SIMM firmy Micron Technology (a także Crucial
Technology).

Banki pamięci


Moduły pamięci (DIP, SIMM, SIPP i DIMM), znajdujące się na
płycie głównej lub na kartach rozszerzających pamięć, są zorganizowane w
banki. Dobrze jest znać rozmiar banku i jego usytuowanie na płycie
głównej komputera, względnie na kartach rozszerzających.
Znajomość rozmiaru banku jest potrzebna przy rozszerzaniu
pamięci komputera. Ponadto programy diagnostyczne informując o błędzie pamięci
podają adres błędnej komórki jako adres w bajtach i numer bitu w komórce. Do
użytkownika należy zidentyfikowanie na podstawie tej informacji błędnego banku
pamięci.




Rysunek
7.9.
Typowa numeracja pamięci SIMM firmy Micron
(Crucial Technology)



Rozmiar banku jest zazwyczaj związany z rozmiarem magistrali
mikroprocesora. W tabeli 7.10 podano szerokości banków w zależności od typu
komputera PC.
Odpowiednia liczba bitów, stanowiąca szerokość słowa banku,
może być uzyskana jako zestawienie pojedynczych układów, modułów SIMM albo DIMM.
Np. w komputerze 286 wykorzystującym bank 18-bitowy, pojedynczy bank można
zbudować z 18 osobnych układów, o szerokości słowa 1 bit, albo z czterech
4-bitowych układów składających się na 16-bitowe słowo i dwóch układów
1-bitowych przechowujących bity parzystości.

Tabela 7.10. Rozmiary banków pamięci w zależności od typu komputera



Procesor
Szerokość
magistrali danych
Rozmiar banku
danych (bez bitów parzystości)
Rozmiar banku
danych (z bitami parzystości)
Liczba
30-końcówk. modułów SIMM przypadaj. na jeden bank
Liczba
72-końcówk modułów SIMM przypadaj. na jeden bank
Liczba
168-końcówk. modułów SIMM przypadaj. na jeden bank

1
Gnd
Gnd
85
Gnd
Gnd
Gnd

8088
8-bitowa
8 bitów
9 bitów
1
<1*
<1*

8086
16-bitowa
16 bitów
18 bitów
2
<1*
<1*

286
16-bitowa
16 bitów
18 bitów
2
<1*
<1*

386SX, SL, SLC
16-bitowa
16 bitów
18 bitów
2
<1*
<1*

386DX
32-bitowa
32 bity
32 bity
4
1
<1*

486SLC, SLC2
16-bitowa
16 bitów
18 bitów
2
<1*
<1*

486SX, DX, DX2, DX4
32-bitowa
32 bity
32 bity
4
1
<1*

Pentium, MMX
64-bitowa
64 bity
64 bity
8
2
1

Pentium Pro, Pentium II
64-bitowa
64 bity
64 bity
8
2
1

* Pojedynczy moduł SIMM czy DIMM tworzy więcej
niż jeden bank pamięci.


Do zapełniania banku pamięci w komputerach 486 potrzebne są
cztery 30-końcówkowe SIMM-y lub jeden SIMM 72-końcówkowy. Każdy 72-końcówkowy
moduł SIMM jest 32- lub 36-bitowy, w zależności od tego, czy obsługuje
parzystość. Często możesz się zorientować, czy dany moduł SIMM obsługuje
parzystość, po prostu licząc znajdujące się na nim układy. Do zbudowania
32-bitowego modułu SIMM potrzeba albo 32 osobnych, 1-bitowych układów, albo
ośmiu układów 4-bitowych. Jeśli system obsługuje parzystość, moduł SIMM musi
posiadać cztery dodatkowe bity (w sumie 36 bitów), w związku z czym
znajduje się na nim dodatkowo jeden (4-bitowy) lub cztery (1-bitowe) układy
zawierające bity parzystości.
Jak możesz sobie wyobrazić, 30-końcówkowe pamięci SIMM nie są
zbyt dobre dla systemów 32- i 64-bitowych (na przykład 486 i Pentium), bo każdy
bank trzeba byłoby obsadzać czterema lub ośmioma modułami. Jako że układy te
mają pojemność 1, 4 lub 16 MB, w komputerze Pentium musiałoby się znajdować 8,
32 lub 128 MB pamięci, bez żadnych wartości pośrednich. Ponieważ wykorzystanie
32-końcówkowych SIMM-ów w 32- i 64-bitowych systemach wiąże się ze sztucznymi
ograniczeniami możliwych pojemności pamięci, stosowanie tych układów nie jest
zalecane. W 32-bitowym systemie (na przykład każdym komputerze PC z procesorem
486) wykorzystującym 72-końcówkowe SIMM-y każdy układ jest bankiem i może zostać
wymieniony osobno, a nie
jak to było w przypadku 30-końcówkowych SIMM-ów
w
grupach po cztery układy. Dzięki temu konfiguracja pamięci stała się znacznie
prostsza i bardziej elastyczna. W nowoczesnych 64-bitowych systemach
wykorzystujących 72-końcówkowe SIMM-y w skład każdego banku wchodzą dwa
układy.
Układy DIMM są idealnym rozwiązaniem dla komputerów Pentium i
nowszych, ponieważ tak samo jak magistrala procesora Pentium, są 64-bitowe.
Oznacza to, że każdy moduł DIMM jest osobnym bankiem i może zostać dodany lub
usunięty bez konieczności wyjmowania lub instalowania dodatkowych modułów.
Liczba i położenie gniazd pamięci SIMM i DIMM na płycie głównej zależy od jej
producenta. Bardzo przydatna jest tu dokumentacja dołączona do komputera, dzięki
której możesz szybko się zorientować, jakie i ile gniazd pamięci znajduje się na
płycie głównej.
Czas dostępu układów pamięci RAM


Czas dostępu pamięci RAM jest wyrażany w nanosekundach (ns

nanosekunda jest czasem, w jakim światło przebywa drogę 11,72 cali). W przypadku
pamięci RAM w komputerach PC czas ten waha się do ok. 10 ns do 200 ns.
Kiedy wymieniamy uszkodzony moduł pamięci, musimy go zastąpić modułem takiego
samego typu i o takim samym czasie dostępu. Możemy w miejsce starego modułu
umieścić inny moduł, ale jego czas dostępu musi być mniejszy lub równy czasowi
dostępu starego modułu.
Czasami użytkownikom zdarzają się problemy podczas "mieszania"
ze sobą w komputerze różnych modułów SIMM, ponieważ zastosowane układy nie
spełniają minimalnych wymagań komputera (np. czas odświeżania) bądĄ też są
fizycznie niekompatybilne z płytą pod względem rozmieszczenia końcówek,
wysokości, szerokości czy typu modułu. Czas dostępu modułu zawsze może być
niższy niż wymagany, pod warunkiem, że układy pamięci są odpowiedniego typu i
spełniają wszystkie inne wymagania.
Zamiana układów pamięci na szybsze nie zawsze powoduje wzrost
szybkości komputera, ponieważ płyta główna nadal komunikuje się z pamięcią z
szybkością taką jak poprzednio. W komputerach, w których wymagania czasowe
zostały zbyt "napięte", korzystanie z szybszych układów może przyczynić się
do zwiększenia niezawodności pracy komputera.
To samo odnosi się do sytuacji, w której pamięć w komputerze po
prostu nie działa bądĄ też nie jest wystarczająco szybka. Objawia się to
zazwyczaj błędami parzystości albo zupełnym brakiem działania komputera. Błędy
mogą być również zgłaszane przez program testujący POST. W razie wątpliwości,
jakie układy pamięci są odpowiednie dla konkretnego komputera, skontaktujmy się
z producentem sprzętu albo wiarygodnym dostawcą pamięci.

Złoto i cyna


Wielu ludzi nie docenia znaczenia metalu zastosowanego w
wyprowadzeniach modułów SIMM i DIMM. Zarówno układy SIMM, jak i DIMM są
produkowane w wersjach z końcówkami pokrytymi cyną i złotem. Początkowo wydawało
mi się, iż SIMM-y i DIMM-y z pozłacanymi końcówkami oferują największą
niezawodność w każdym wypadku, ale nie jest to prawdą. By uzyskać najbardziej
niezawodny system, musisz zainstalować pamięci SIMM lub DIMM w gniazdach
pokrytych tym samym metalem, co wyprowadzenia modułów. Jeśli zainstalujesz w
pozłacanych gniazdach moduły z końcówkami pokrytymi cyną, po pewnym czasie
wystąpią błędy pamięci. To samo dotyczy sytuacji odwrotnej
zainstalowania
modułów z pozłacanymi końcówkami w gniazdach z wyprowadzeniami pokrytymi
cyną. Według mojego doświadczenia, błędy zaczynają występować od 6 miesięcy do
roku po instalacji modułów. Na problem ten natknąłem się już wielokrotnie
zarówno w moich komputerach, jak i komputerach, które serwisowałem. Nawet
zostałem poproszony o pomoc przez klienta, który kupił kilkaset komputerów od
ich producenta i po roku od dostarczenia w systemach tych zaczęły się masowo
pojawiać błędy pamięci. Było to spowodowane różnicą metali, którymi były pokryte
wyprowadzenia gniazd i końcówki modułów (w tym wypadku pozłacane SIMM-y w
pokrytych cyną gniazdach). Doszło do procesu, ponieważ producent odmówił
wymienienia SIMM-ów na wersje o końcówkach pokrytych cyną.
W większości płyt głównych pod Pentium i 486 wyprowadzenia
gniazd pamięci 72-końcówkowych modułów SIMM są pokryte cyną i należy w nich
instalować moduły o końcówkach pokrytych tym samym metalem. Intel obecnie
stanowczo odradza łączenie różnych metali w pamięci systemowej. Przeprowadzone
przez producentów gniazd badania wykazały, że gdy cyna styka się bezpośrednio ze
złotem lub jakimkolwiek innym metalem, zachodzi zjawisko nazwane korozją
cierną. Korozja cierna zachodzi wówczas, gdy na powierzchnię złota
przemieszcza się posiadający wysoką oporność tlenek cyny, który utrudnia lub
nawet uniemożliwia przechodzenie ładunków elektrycznych. Zjawisko to występuje
zawsze, bez względu na grubość warstwy złota. W miarę upływu czasu, zależnie od
warunków otoczenia, prędzej czy póĄniej korozja wywoła dużą oporność
w miejscu styku, co zaowocuje błędami pamięci.
Ktoś może w tym momencie pomyśleć, iż problemy wywołane są
łatwym utlenianiem się cyny. Jednak w przypadku gdy stykają się ze sobą mocno
dociśnięte dwie powierzchnie pokryte cyną, utrzymanie styku jest bardzo łatwe,
ponieważ tlenki obu powierzchni wiążą się ze sobą, utrzymując kontakt.
Szczególnie odnosi się to do modułów SIMM i DIMM, gdzie na miejsce styku
przyłożony jest duży nacisk.
Gdy złoto i cyna stykają się ze sobą, jedna z powierzchni jest
twarda, co powoduje, że utlenianie wzmacnia się i z powodu nacisku nie może się
rozproszyć. Zwiększona oporność miejsca styku w pewnym momencie zaczyna
wywoływać błędy pamięci. Dlatego właśnie przy instalacji pamięci nie powinno się
łączyć ze sobą różnych metali.
AMP, producent złącz, opublikował wiele dokumentów omawiających
to zagadnienie. Najważniejsze z nich to Golden Rules: Guidelines for the Use
of Tin on Connector Contacts (Wskazówki na temat wykorzystania złota w złączach
komputerowych) oraz The Tin Commandments: Guidelines for the Use of Tin
on Connector Contacts (Wskazówki na temat wykorzystania cyny w złączach
komputerowych). Oba dokumenty w formie pliku *.PDF można pobrać z witryny
internetowej AMP, znajdującej się pod adresem http://www.ampincorporated.com/. W
dokumencie dotyczącym stosowania cyny jest na przykład napisane (w zaleceniu 7)
"Łączenie wyprowadzeń pokrytych cyną z wyprowadzeniami pokrytymi złotem nie jest
zalecane". Więcej informacji technicznych możesz znaleĄć w polecanych przeze
mnie witrynach internetowych Intela i AMP.
Najlepszym rozwiązaniem jest łączenie złota ze złotem, czyli
umieszczenie w gniazdach z wyprowadzeniami pokrytymi złotem modułów pamięci
z pozłacanymi końcówkami. W ten sposób jest zaprojektowana większość serwerów i
innych cechujących się dużą niezawodnością systemów. Większość systemów
wykorzystujących moduły SDRAM DIMM posiada pozłacane gniazda i w związku z tym
wymaga korzystania z pamięci SDRAM o końcówkach pokrytych tym samym metalem.

Jeśli pamięci są pokryte innym metalem niż gniazda na płycie
głównej, najlepszym rozwiązaniem będzie ich wymiana. Innym, mniej korzystnym
wyjściem z sytuacji, które umożliwi w miarę normalną pracę, jest czekanie, aż
pojawią się błędy (najczęściej od 6 miesięcy do roku). Wówczas należy wyjąć
układy pamięci z gniazd, przeczyścić styki i umieścić je z powrotem w ich
miejscach. Oczywiście czynność tę za jakiś czas znów będzie trzeba powtórzyć.
Rozwiązanie to może być wystarczające dla użytkownika, który ma jeden lub dwa
komputery, ale nie jest wystarczające dla firmy, która montuje setki
systemów. W dodatku, jeśli w twoim komputerze nie ma pamięci z parzystością lub
ECC (a tak jest w większości obecnie sprzedawanych komputerów), nie będziesz w
stanie od razu się zorientować, że błędy (ogólne wyjątki ochrony, zawieszanie
się komputera, uszkodzenia plików i danych itp.) są wywołane problemami z
pamięcią.
Znajdujący się na warstwie złota osad tlenków cyny jest bardzo
trudny do usunięcia i często trzeba go usuwać za pomocą na przykład gumki
lub różu polerskiego. Usuwanie w ten sposób nalotu nigdy nie powinno być robione
na sucho, ponieważ pocieranie powoduje powstanie ładunków elektrostatycznych,
które mogą uszkodzić układ. Lekkie zwilżenie oczyszczanego miejsca zminimalizuje
szansę uszkodzenia pamięci przez ładunki elektrostatyczne.
Są osoby, które zarzucają mi zbytnią ostrożność przy dobieraniu
pamięci do gniazd. Często zdarzało się, że zwracałem pamięci lub płyty główne,
jeśli producent nie wiedząc o problemie umieścił nieodpowiednie moduły w
gniazdach pamięci. Gdy wyjaśniałem problem niektórym ludziom, twierdzili, że
posiadali wiele komputerów PC z pamięciami pokrytymi innym metalem niż gniazda i
komputery te działały prawidłowo przez wiele lat.
Jest to oczywiście bardzo mizerny argument usprawiedliwiający
nieprawidłowe montowanie komputerów. Specyfikacje określają, że długość kabla
drukarki nie może przekraczać 3 metrów, a widziałem wiele dłuższych kabli,
których producenci twierdzili, że są "w porządku". Długość kabelka IDE nie może
przekraczać 46 cm, ale ludzie nie zwracają na to uwagi, uważając że ich dyski
"będą działać prawidłowo". Czasem spotykam się z tanimi zasilaczami, które nie
dość że są głośne i mają nieprawidłowo ustawione poziomy napięć, to jeszcze
przepuszczają do uziemienia napięcie rzędu 69 V
ale oczywiście komputery
zasilane nimi "działają prawidłowo". Widziałem już mnóstwo komputerów bez
odpowiedniego radiatora chłodzącego procesor lub z aktywnym radiatorem, w którym
zablokował się wentylatorek
komputery te, jakżeby inaczej, działały "bez
żadnych problemów". Przypomina mi to wywiad przeprowadzony przez Johnyłego
Carsona ze stuletnim człowiekiem, który stwierdził, iż przez całe życie
codziennie dużo pił i palił i właśnie temu zawdzięcza długowieczność!
Prawdą jest, że często bywam zdumiony, iż tak Ąle
zaprojektowane lub zmontowane komputery jeszcze działają... zazwyczaj.
Sporadyczne zawieszanie się i nieprawidłowe działanie komputera jest traktowane
przez użytkownika w myśl zasady "takie rzeczy przydarzają się wszędzie". Być
może wszędzie, ale nie w moich komputerach. Projektując i składając
moje komputery często stosuję kryteria nawet ostrzejsze, niż wynikałoby
to ze specyfikacji części. Choć zwiększa to koszty produkcji, komputery działają
dzięki temu lepiej.
Innymi słowy, może się zdarzyć, że jakiś komputer będzie
działał prawidłowo, nawet jeśli zostaną w nim zastosowane rozwiązania
przekraczające specyfikację poszczególnych komponentów
jednak nie ma żadnej
gwarancji, że wszystkie, a nawet większość złożonych w ten sposób komputerów
zadziała poprawnie. Dlatego, jeśli sprzedajesz wiele komputerów, które powinny
być jak najmniej zawodne, ponieważ mogą na przykład zostać wykorzystane jako
serwery, metal wykorzystany w wyprowadzeniach gniazd i modułów pamięci ma
znaczenie.
Innym zagadnieniem, które przyciągnęło moją uwagę, jest grubość
warstwy złota na wyprowadzeniach; ludzie często obawiają się, że jest ona zbyt
cienka i zetrze się po jednym czy dwóch wyjęciach modułów pamięci. Z całą
pewnością grubość warstwy złota została dobrana tak, by spełniła wymagania
trwałości związane z zastosowaniem układu, choć oczywiście z powodu wysokich cen
złota, w interesie producenta leży, by warstwa pozłoty była tak mała, jak tylko
jest to możliwe.
W celu zwiększenia trwałości warstwy złota, często dodaje się
do niej niewielkie ilości kobaltu lub niklu. Taka warstwa jest nazywana "twardym
złotem" i jest bardzo odporna na ścieranie. Złącza pokryte twardym złotem
wytrzymują zazwyczaj od kilkuset do kilku tysięcy instalacji. Ich trwałość można
jeszcze polepszyć stosując podwarstwę z twardszego od złota metalu, którym
najczęściej jest nikiel. Trwałość warstwy złota można również zwiększyć stosując
środki zmniejszające tarcie.
Trwałość złącza polepsza również zwiększenie grubości warstwy
twardego złota. Poniższe rezultaty są wynikiem przeprowadzonych przez AMP testów
laboratoryjnych na ścieranie warstwy twardego złota ocieranej o niklową płytkę o
grubości 1,3 mikrona (50 mikrocali). Dane zostały uzyskane dla kuli o średnicy
0,635 cm (0,25 cala) ocieranej podczas każdego cyklu z siłą 100 gramów na
przestrzeni 1,27 cm (0,5 cala).





Grubość warstwy
w mikronach
Grubość warstwy
w mikrocalach
Ilość cykli do
wystąpienia błędu

0,4
15
200

0,8
30
1000

1,3
50
2000



Jak wynika z tabeli, warstwa twardego złota o grubości 0,8
mikrona (30 mikrocali) jest więcej niż wystarczająca i umożliwia wykonanie 1000
cykli wyjęcia i ponownego umieszczenia modułów w gniazdach pamięci. Po
przeanalizowaniu specyfikacji produkowanych przez AMP gniazd SIMM i DIMM
stwierdziłem, że są one w większości pokryte warstwą złota o grubości 0,8
mikrona na mierzącej 1,3 mikrona warstwie niklu w punkcie styku. Na ile mogłem
stwierdzić, w praktycznie wszystkich wyprowadzeniach modułów SIMM i DIMM stosuje
się warstwę o podobnej grubości i trwałości.
AMP posiada również kilka gniazd pamięci w wersji z warstwą
złota o grubości 1,020 mikrocala położoną na warstwie niklu o grubości 1,270
mikrocala. Podejrzewam, że gniazda te były przeznaczone do na przykład urządzeń
testujących układy pamięci, które muszą wytrzymać znacznie więcej instalacji
modułów. Gniazda te można byłoby też stosować w środowiskach o dużej wilgotności
lub w dużym stopniu narażonych na wibrację.
Dla porównania, we wszystkich gniazdach SIMM i DIMM pokrytych
cyną, warstwa tego metalu nie może być mniejsza od 30 mikrocali w miejscu styku,
a warstwa niklu musi wynosić co najmniej 50 mikrocali.
Rozmiar warstwy naniesionego metalu nie ogranicza zastosowań
modułów pamięci. Nie ma on również wpływu na problemy związane ze stykaniem się
cyny ze złotem. Jedyną wadą cieńszej warstwy złota jest to, że zetrze się po
mniejszej liczbie cykli instalacji, przez co znajdujący się pod nią nikiel może
ulec korozji.
Według mnie, problem związany z łączeniem złota z cyną może
mieć jeszcze większe znaczenie w przypadku modułów DIMM. Jest tak z dwóch
powodów. Moduły SIMM mają dwa połączenia dla każdej końcówki (po jednym z każdej
strony modułu), więc jeśli któreś z połączeń ulegnie korozji ciernej, nie będzie
to miało tak dużego znaczenia. Moduły DIMM mają o wiele więcej końcówek (168, a
nie 72), które w dodatku nie mają swoich odpowiedników po drugiej stronie
modułów. Dodatkowo, w większości modułów DIMM zastosowano układy SDRAM, których
taktowanie dla 66- i 100-megahercowych płyt głównych zostało skrócone do
15
10 ns. Przy tych częstotliwościach każda dodatkowa, najmniejsza nawet
oporność w miejscu połączenia wywoła problemy.
Z tych właśnie powodów, w przyszłości będę korzystał wyłącznie
z płyt głównych ze złączami SIMM lub DIMM o wyprowadzeniach pokrytych złotem i,
oczywiście, z modułów pamięci o końcówkach pokrytych tym samym metalem.
Zauważyłem, że na przykład Micron produkuje układy DIMM wyłącznie w wersji z
końcówkami pokrytymi złotem. Również wyprowadzenia wszystkich gniazd DIMM, jakie
do tej pory widziałem, były także pozłacane. W tej chwili nie polecam kupowania
żadnej płyty głównej, w której wyprowadzenia złącz SDRAM DIMM byłyby pokryte
cyną; nie polecam również kupowania pokrytych tym metalem
DIMM-ów.

Niezawodność pamięci


Z naturą pamięci wiążą się nieuchronne błędy. Często wyróżnia
się dwa rodzaje błędów: błędy ciężkie i błędy miękkie.
Najlepiej zbadane i zrozumiane są błędy ciężkie, w których
układ po pewnym okresie działania odmawia dalszej pracy z powodu wad
produkcyjnych, fizycznych uszkodzeń lub z innych przyczyn. Naprawa tego typu
błędu zazwyczaj ogranicza się do wymiany uszkodzonych modułów pamięci. Błędy te
są określane nazwą HER.
Innym, bardziej tajemniczym typem błędu są błędy miękkie.
Miękki błąd jest błędem przejściowym, który może nigdy ponownie nie
nastąpić lub pojawiać się w nieregularnych odstępach czasu. (Miękkie błędy są
skutecznie "naprawiane" poprzez wyłączenie i ponowne włączenie systemu).
Często są one określane skrótem SER.
Około 20 lat temu Intel dokonał odkrycia, które zaszokowało
producentów układów RAM i spowodowało, iż zaczęli zwracać większą uwagę na
miękkie błędy pamięci. Zauważył on bowiem, że bombardowanie cząsteczkami alfa
dostępnych w tym czasie 16-kilobajtowych układów DRAM wywoływało duże
zwiększenie się częstotliwości występowania miękkich błędów. Ponieważ cząsteczki
te mają małą energię i mogą zostać zatrzymane nawet przez coś tak cienkiego i
delikatnego jak kartka papieru, stało się jasne, iż cząsteczki alfa wywołujące
miękkie błędy pamięci w warunkach pozalaboratoryjnych muszą pochodzić z
materiału półprzewodników. Po przeprowadzeniu testów okazało się, że
w plastikowych i ceramicznych materiałach wykorzystywanych w tym czasie do
produkcji obudów układów znajdują się śladowe ilości uranu i toru. Zmusiło to
producentów pamięci do opracowania technologii umożliwiającej produkcję wolnych
od zanieczyszczeń materiałów.
Dzięki temu, że producenci pamięci całkowicie wyeliminowali
miękkie błędy wywoływane cząsteczkami alfa, wielu ludzi uwierzyło, iż kontrola
parzystości stała się zbędna. Argumentem za tym były na przykład wyniki badań, z
których wynikało, że wywołany przez cząsteczki alfa miękki błąd 16-megabajtowego
modułu pamięci przydarza się raz na 16 lat! Niestety, argument ten znalazł
uznanie producentów komputerów, którzy zaczęli usuwać z produkowanych przez
siebie systemów kontrolę parzystości i inne mechanizmy mające na celu wykrywanie
i poprawianie miękkich błędów pamięci. Tymczasem, jak wykazują najnowsze
odkrycia, błędy wywołane cząsteczkami alfa są tylko małym ułamkiem wszystkich
miękkich błędów DRAM!
Po ich wyeliminowaniu, najczęstszą przyczyną występowania
miękkich błędów stało się promieniowanie kosmiczne. Naukowcy firmy IBM
rozpoczęli badania nad możliwością wywoływania miękkich błędów pamięci przez
promieniowanie kosmiczne, podobnie jak analizowali problemy z cząsteczkami alfa.
Promieniowanie kosmiczne różni się od cząsteczek alfa tym, że ma dużo większą
energię i nie może zostać zatrzymane przez kartkę papieru ani inne, bardziej
masywne typy osłon. Badania te prowadził Dr J.F. Ziegel z IBM Watson Research
Center, znajdującym się w Yorktown Heights, w Nowym Jorku. Przeprowadzone przez
niego badania okazały się kamieniem milowym w zrozumieniu wpływu promieniowania
kosmicznego na występowanie miękkich błędów pamięci.
Doskonałym przykładem ilustrującym wagę wpływu tego
promieniowania na występowanie miękkich błędów pamięci, jest jedno z
przeprowadzonych przez niego badań, któremu została poddana próbka modułów DRAM
nie wyprodukowanych przez IBM. Współczynnik miękkich błędów pamięci (SER)
mierzony w warunkach rzeczywistej pracy wyniósł 5950 FIT (błędów w danym
okresie, którym był w tym wypadku miliard godzin pracy) na układ. Oznacza to, że
w przeciętnym systemie, który zazwyczaj posiada w modułach SIMM około 36 układów
pamięci, miękki błąd pojawi się co 6 miesięcy! W systemach z dużymi ilościami
pamięci, na przykład serwerach plików, może to być nawet ponad 1 błąd
miesięcznie. Następnie, taka sama próbka została przeniesiona do schronu
oddzielonego od powierzchni ziemi 15 metrami skały, dzięki czemu całkowicie
wyeliminowano wpływ promieniowania kosmicznego. Po powtórzeniu tej samej
procedury testującej nie wykryto ani jednego miękkiego błędu! To doświadczenie
nie tylko wykazało wagę wpływu promieniowania kosmicznego na moduły pamięci, ale
i udowodniło, że problem błędów wywoływanych przez cząsteczki alfa został w
pełni rozwiązany.
Układy pamięci statycznej SRAM są bardziej podatne na błędy
wywołane promieniowaniem kosmicznym niż układy DRAM, ponieważ ładunek wymagany
do przełączenia stanu komórki pamięci jest w nich znacznie mniejszy.
Promieniowanie kosmiczne jest również groĄniejsze dla układów pamięci o większej
gęstości. W miarę zwiększania się gęstości układu zwiększa się również szansa na
przełączenie stanu bitu pamięci przez zabłąkaną cząsteczkę. Przewiduje się, że
współczynnik występowania miękkich błędów 64-megabajtowych układów DRAM będzie
dwa razy większy niż w układach 16-megabajtowych. Dla 256-megabajtowych układów
DRAM współczynnik ten będzie większy cztery razy.
Niestety, większość producentów komputerów PC nie zwróciła
uwagi na nową przyczynę błędów pamięci. Ponieważ miękkie błędy występują
nieregularnie i w różnych warunkach, winą za nie obarczano wyładowania
elektrostatyczne, skoki zasilania czy też niestabilność oprogramowania,
szczególnie po ukazaniu się nowego systemu operacyjnego lub większych aplikacji.

Badania wykazały, że częstotliwość występowania miękkich błędów
pamięci w komputerach z ECC była około 30 razy większa od częstotliwości
występowania błędów ciężkich. Dla tych, którzy znają wpływ promieniowania
kosmicznego na układy pamięci, taki wynik nie jest niczym zaskakującym. Obecne
dane sugerują, że rozwiązania zastosowane w niektórych 16-megabajtowych układach
pamięci mogą zwiększyć liczbę miękkich błędów do 24000 w ciągu miliarda godzin.
Oznacza to, że w większości dzisiejszych komputerów występowałby jeden miękki
błąd miesięcznie!
Jak możemy sobie poradzić z tymi błędami? Z całą pewnością nie
jest najlepszym pomysłem ich ignorowanie, choć właśnie tak obecnie postępuje
wielu producentów i sprzedawców. Najlepszym sposobem radzenia sobie z nimi
jest zwiększenie odporności komputera na błędy. Jak? Najlepiej poprzez
wprowadzenie do komputerów mechanizmów wykrywających i, jeśli tylko jest to
możliwe, korygujących powstałe błędy. W nowoczesnych komputerach stosuje
się trzy rozwiązania pamięci, charakteryzujące się różną odpornością na
przekłamania bitów. Układy pamięci mogą więc być:

bez parzystości

z parzystością

z kodem korekcji błędów (Error Correcting Code, w skrócie ECC)
Systemy z pamięcią bez kontroli parzystości nie mają żadnej
odporności na błędy. Z układów tych korzysta się tylko dlatego, że są
najtańsze. Ich konstrukcja nie wymaga przeznaczania dodatkowej pamięci na
techniki kodu korekcji błędów lub na bity parzystości. Ponieważ na każdy bajt
pamięci z parzystością przypada 9 bitów, a na tę samą pojemność układu bez
parzystości
tylko 8, układy bez parzystości są tańsze o 12,5 procent.
Uproszczony jest również ich kontroler pamięci, ponieważ nie musi posiadać
dodatkowych bramek logicznych obliczających parzystość lub sprawdzających
kontrolne bity ECC. Systemy przenośne dzięki brakowi kontroli parzystości
zużywają mniej energii, ponieważ moduły pamięci są zbudowane z mniejszej liczby
układów. Odciążona jest również systemowa magistrala pamięci, dzięki czemu można
zmniejszyć rozmiar buforów danych. Statystyczne prawdopodobieństwo wystąpienia
miękkiego błędu pamięci w typowym komputerze domowym i biurowym, w zależności od
wykorzystanych w nim układów, waha się w granicach jednego błędu na kilka
miesięcy.
Taki współczynnik prawdopodobieństwa wystąpienia błędu może być
wystarczający dla niezbyt wydajnych, tanich komputerów, na których nie uruchamia
się spełniających ważne zadania aplikacji. W tym wypadku, rzeczywiście duża
konkurencyjność cen może usprawiedliwiać rezygnację z droższych układów pamięci
z ECC czy też parzystością.
W każdym razie, wielu producentów nie umieszcza w komputerach
mechanizmów umożliwiających rozpoznanie i naprawienie błędów pamięci, ponieważ
uważa, że błędy te są na tyle rzadkie, iż nawet jeśli jakiś błąd się pojawi, to
konsekwencje jego wystąpienia będą niższe od ceny dodatkowych układów wymaganych
do przeprowadzenia korekcji. Oczywiście wcale tak być nie musi
błąd pamięci
może na przykład wywołać pomyłkę w obliczeniach komputera bankowego albo
zawiesić komputer pracujący jako serwer, który pociągnie za sobą wszystkie
połączone z nim systemy. W systemie pozbawionym parzystości lub ECC trudno jest
nawet rozpoznać błąd pamięci
tego problemu nie ma w systemach z parzystością
lub kodem korekcji błędów. Mechanizmy te umożliwiają przynajmniej stwierdzenie,
że błąd został wywołany przez przekłamanie pamięci, oszczędzając czas i koszty
związane z wyjaśnianiem Ąródła problemu,

Kontrola parzystości


Jednym ze standardów, narzuconych branży komputerowej przez
firmę IBM, jest jeden wyróżniony układ wśród dziewięciu układów tworzących bank
pamięci: osiem układów odpowiada ośmiu bitom w bajcie, natomiast bit dziewiątego
układu jest tzw. bitem parzystości (ang. parity bit). Z bitu tego
korzysta układ kontroli pamięci, który obserwuje poprawność pozostałych ośmiu
bitów. Jest to mechanizm kontroli integralności każdego bajta danych pamiętanego
w komputerze. Jeżeli układ kontroli błędów wykryje błąd pamięci, praca komputera
zostaje wstrzymana, a na ekranie zostaje wyświetlony komunikat informujący o
zaistniałej niesprawności. Jeżeli komputer pracuje w nowszym systemie
operacyjnym, takim jak Windows czy OS/2, błąd parzystości objawi się
zawieszeniem komputera. Po ponownym uruchomieniu komputera błąd ten zostanie
wykryty przez BIOS, po czym zostanie wyświetlony odpowiedni komunikat.
Zarówno moduły SIMM, jak i DIMM są dostępne w wersjach z bitami
i bez bitów parzystości. Początkowo układy z kontrolą parzystości stosowano we
wszystkich komputerach PC. W 1994 r. na rynku komputerów PC pojawiła się
niepokojąca tendencja do produkowania i sprzedawania komputerów PC bez żadnych
mechanizmów umożliwiających naprawienie lub chociaż wykrycie błędów pamięci. W
komputerach tych zaczęto stosować układy SIMM pozbawione bitów parzystości,
które były tańsze o około 10
15 procent. Parzystość pamięci nie umożliwia
poprawienia błędu, ale przynajmniej informuje o jego zaistnieniu. Dzięki
niej:

użytkownik jest poinformowany o błędzie obliczeń bazujących na
przekłamanych danych.

od razu wiadomo, że błąd został spowodowany przez pamięć, co ułatwia
serwisowanie komputera.
Komputery PC z łatwością można zaprojektować tak, by działały
zarówno z pamięciami posiadającymi bity parzystości, jak i nie posiadającymi
ich. Właściwie nie ponosi się żadnych dodatkowych kosztów związanych z
dostosowaniem płyty głównej do pracy z układami pamięci posiadającymi
parzystość, a dzięki takiemu rozwiązaniu to użytkownik podejmowałby decyzję, czy
chce wydać o 10
15 procent więcej na układy pamięci i mieć je w wersji z
parzystością, czy też zadowoli się tańszym rozwiązaniem.
Niestety wiele dużych firm zaczęło sprzedawać tańsze systemy,
nie afiszując się z tym, że niższa cena ich komputerów wynika z zastosowania
pamięci bez bitów parzystości. Proces ten rozpoczął się głównie w latach
1994
1995, gdy bardzo niewielu ludzi w pełni zdawało sobie sprawę ze znaczenia
mechanizmów informujących o błędach. Kilku większych producentów dzięki
stosowaniu tańszych układów obniżyło ceny swoich komputerów, co zmusiło inne
firmy, chcące zachować konkurencyjność, do podążenia za nimi.
Ponieważ nikomu nie zależało na rozgłaszaniu tej informacji,
pozostawała ona małym sekretem producentów. W początkowym okresie tego procesu,
mogłeś przy zamawianiu systemu zażądać pamięci z kontrolą parzystości, nawet
jeśli nie była ona wyposażeniem standardowym. Zwiększało to o 10
15 procent cenę
pamięci, ale ci, którym zależało na posiadaniu stabilnego systemu, byli gotowi
tę kwotę zapłacić, o ile oczywiście wiedzieli, o co pytać. I wtedy właśnie na
rynku ukazał się pierwszy chipset, w którym w ogóle nie zaimplementowano
mechanizmów kontroli parzystości! Chipsetem tym był Triton 430FX Intela. Triton
stał się bardzo popularny, były na nim oparte praktycznie wszystkie płyty główne
sprzedane w 1995 roku. To wyznaczyło niepokojący kierunek rozwoju rynku na kilka
kolejnych lat. Nie licząc Tritona II (430HX), wszystkie chipsety Intela
wyprodukowane po ukazaniu się chipsetu 430FX nie obsługiwały pamięci z kontrolą
parzystości. Dobrą nowiną jest natomiast to, że wszystko wskazuje, iż okres ten
dobiegł już końca i producenci płyt głównych zaczęli doceniać znaczenie
mechanizmów kontroli błędów pamięci. Dzięki temu, większość chipsetów Pentium
Pro i Pentium II obsługuje parzystość lub ECC i coraz więcej ludzi stwierdza, że
warto wydać więcej pieniędzy na takie pamięci. Zaprojektowano co prawda również
chipset Pentium II pozbawiony mechanizmów kontroli pamięci, ale jest on
przeznaczony na rynek tanich komputerów, poniżej 3000 zł, w którym nie
niezawodność jest najważniejsza, lecz cena.
Zobaczmy, w jaki sposób działają mechanizmy kontroli
parzystości, a następnie bardziej szczegółowo przyjrzyjmy się jej następcy,
kodowi korekcji błędów, który nie tylko wykrywa, ale i na bieżąco poprawia błędy
pamięci.
Standard kontroli pamięci wprowadzony przez firmę IBM jest tak
naprawdę kontrolą nieparzystości. Istotę kontroli nieparzystości pomoże
wyjaśnić następujące rozumowanie: Kiedy w pamięci zapisywanych jest 8 osobnych
bitów, układ generoowania bitu parzystości, który jest częścią procesora bądĄ
też znajduje się w osobnym układzie na płycie głównej, zlicza ilość jedynek w
bajcie (8 bitach). Jeżeli w bajcie ilość jedynek jest parzysta, generowany jest
bit o wartości 1, który jest następnie zapamiętywany jako 9. bit w układzie
przechowującym bity parzystości. Dzięki temu suma wszystkich 9 bitów jest liczbą
nieparzystą. Jeżeli oryginalna suma ośmiu bitów danych jest liczbą nieparzystą,
generowany jest bit parzystości o wartości 0, a tym samym suma wszystkich
dziewięciu bitów jest nieparzysta. Wartość bitu parzystości jest zawsze
ustawiana tak, że suma wszystkich 9 bitów (8 bitów danych i jeden bit
parzystości) jest liczbą nieparzystą. 8 bitów danych w bajcie jest numerowanych
następująco: 0 1 2 3 4 5 6 7. W zrozumieniu zagadnienia pomogą poniższe
przykłady:Numer bitu danych: 0 1 2 3 4 5 6 7 Bit parzystości
Wartość bitu danych: 1 0 1 1 0 0 1 1 0
W powyższym przykładzie liczba bitów równych jeden jest liczbą
nieparzystą (5), dlatego bit parzystości musi być równy 0, aby suma wszystkich 9
bitów była nieparzysta.
Kolejny przykład:Numer bitu danych: 0 1 2 3 4 5 6 7 Bit parzystości
Wartość bitu danych: 0 0 1 1 0 0 1 1 1
W powyższym przykładzie liczba bitów równych jeden jest liczbą
parzystą (4), dlatego bit parzystości musi być równy 1, aby suma wszystkich 9
bitów była nieparzysta.
Kiedy odczytywana jest zawartość komórki pamięci, komputer
sprawdza informację o parzystości. Jeżeli w bajcie (9 bitów) znajduje się
parzysta ilość jedynek, a bit parzystości ma wartość 1, oznacza to wystąpienie
błędu. Komputer nie potrafi określić, na którym bicie nastąpiło przekłamanie ani
czy zmienił się tylko pojedynczy bit. Np. jeżeli zmieniły się naraz trzy bity,
to bit parzystości będzie nadal wskazywał na pojawienie się błędu, jednak zmiana
dwóch bitów może nie zostać zauważona. Kolejny przykład pokazuje komunikaty o
błędach kontroli parzystości w trzech różnych typach komputerów:IBM PC: PARITY CHECK x
IBM PC XT: PARITY CHECK x yyyyy (z)
IBM PC AT i póĄniejsze modele XT: PARITY CHECK x yyyyy
Gdzie x przyjmuje wartość 1 albo 2:

1 = błąd w odczycie z pamięci płyty głównej

2 = błąd w odczycie z pamięci karty rozszerzającej
yyyyy jest liczbą szesnastkową z zakresu 00000
FFFFF,
wskazującą na bajt pamięci, przy odczycie którego wystąpił błąd parzystości.
x ma postać (S) albo (e)

(S) = błąd parzystości dotyczy jednostki komputera (ang. system unit)

(e) = błąd parzystości dotyczy specjalnych gniazd rozszerzających IBM
(ang. expansion chassis)




Rozwiązanie znane
jako expansion chassis było opcją w oryginalnych komputerach PC i
XT firmy IBM, zwiększającą ilość gniazd rozszerzających w komputerze.
Jednostka komputera składała się z płyty głównej w tzw. formacie backplane
z ośmioma gniazdami, z których jedno zawierało specjalną kartę (ang.
extender/receiver card) połączoną kablem z podobną kartą znajdującą
się w jednostce głównej komputera. Dzięki temu zyskiwało się sześć
dodatkowych gniazd rozszerzających.


W momencie wykrycia błędu parzystości płyta główna komputera
generuje przerwanie niemaskowalne (NMI), które powoduje wstrzymanie
procesora i przekazuje obsługę błędu procesorowi. Następnie wykonywana jest
odpowiednia procedura BIOS-u. Procedura ta czyści ekran i wyświetla komunikat w
lewym górnym rogu. Komunikat ten może mieć różną postać, w zależności od typu
komputera. W przypadku niektórych starszych komputerów IBM procedura obsługi
przerwania powoduje wstrzymanie pracy procesora. Następuje wówczas zawieszenie
się komputera i użytkownik musi ręcznie go zrestartować albo włączyć i wyłączyć
zasilanie. Niestety, powoduje to utratę wszystkich danych, które nie zostały
zapisane na dysku.
W większości komputerów w momencie wykrycia błędu parzystości
nie następuje wstrzymanie pracy procesora. Zamiast tego użytkownik może wybrać,
czy chce zrestartować komputer, czy też kontynuować pracę, tak jakby nic się nie
stało. Ponadto forma i treść komunikatu wyświetlanego przy błędzie parzystości
może się różnić od komunikatu w komputerze IBM, chociaż wyświetlane są te same
informacje. Np. w wielu komputerach wyposażonych w BIOS firmy Phoenix
komunikat ten będzie miał następującą postać:
Memory parity interrupt at xxxx:xxxx
Type (S)shut off NMI, Type (R)eboot or other keys to continue
Lub
I/O card parity interrupt at xxxx:xxxx
Type (S)shut off NMI, Type (R)eboot or other keys to continue
Pierwszy z dwóch komunikatów oznacza błąd parzystości pamięci
na płycie głównej (Perity Check 1), podczas gdy drugi oznacza błąd pamięci na
kartach rozszerzających (Parity Check 2). Zauważmy, że adres komórki pamięci w
komunikacie jest podawany w formacie segment:przesunięcie, a nie jako adres
liniowy, co następuje w komputerze IBM. Format segment:przesunięcie również
określa lokalizację w pamięci z dokładnością do jednego bajta.
Po wyświetleniu na ekranie takiego komunikatu można zrobić trzy
rzeczy:

Nacisnąć klawisz S, co spowoduje wyłączenie kontroli parzystości i wznowi
pracę systemu operacyjnego w miejscu, w którym nastąpiło jego zatrzymanie.

Nacisnąć klawisz R, co wymusi restart komputera i spowoduje utratę nie
zapisanych danych.

Naciśnięcie każdego innego klawisza spowoduje wznowienie pracy komputera z
włączoną kontrolą parzystości.
Jeżeli problem się powtórzy, może ono spowodować kolejne
przerwanie niemaskowalne. W większości przypadków najroztropniejszym wyjściem
będzie naciśnięcie klawisza S, co spowoduje wyłączenie kontroli parzystości i
pozwoli nam na zapisanie danych na dysku. Najlepiej byłoby zapisać efekty naszej
pracy na dyskietce, co pozwoli nam uniknąć utrwalenia błędnych danych na dysku.
Nie powinniśmy również nadpisywać (ang. overwriting) poprzedniej wersji pliku,
gdyż z powodu błędu w pamięci moglibyśmy zapisywać do pliku błędne dane.
Kontrolę parzystości mamy wyłączoną, tak więc operacja zapisu na dysk nie
powinna zostać przerwana. Następnie powinniśmy wyłączyć komputer, włączyć go
ponownie i uruchomić programy diagnostyczne, które mogłyby dokładnie określić
błąd. Czasami może się zdarzyć, że błąd zostanie wykryty w czasie testu POST
przy następnym uruchamianiu komputera, jednak w większości przypadków do
zlokalizowania błędu powinniśmy skorzystać z usług bardziej zaawansowanych
programów diagnostycznych, najlepiej w trybie ciągłym (ang. contionuous
mode).
Jeżeli w komputerze jest BIOS firmy AMI, wyświetlany komunikat
ma następującą postać:
ON BOARD PARITY ERROR ADDR (HEX) = (xxxxx)
lub też
OFF BOARD PARITY ERROR ADDR (HEX) = (xxxxx)
Komunikaty te wskazują na błąd pamięci w czasie wykonywania
testu POST, a adres wskazuje na błędną komórkę pamięci. Pierwszy komunikat
odnosi się do pamięci na płycie głównej, podczas gdy drugi informuje o błędzie
pamięci na karcie rozszerzającej. AMI BIOS wyświetla komunikaty o błędzie
parzystości w następującej postaci:
Memeory Parity Error at xxxxx
albo
I/O Card Parity Error at xxxxx
Komunikaty te mówią, że błąd pamięci nastąpił pod wskazanym
adresem w czasie normalnej pracy. Pierwszy komunikat informuje o błędzie pamięci
na płycie głównej, a drugi o błędzie pamięci na karcie rozszerzającej.
Wiele komputerów ma możliwość kontynuowania pracy po
wystąpieniu błędu, a także możliwość wyłączenia kontroli parzystości. Jednak
kontynuowanie pracy z komputerem po wykryciu błędu może być niebezpieczne.
Przesłanką przemawiającą za pozostawieniem możliwości kontynuacji pracy było
danie użytkownikowi czasu na zapisanie danych na dysku przed przystąpieniem do
ewentualnej naprawy. BądĄmy jednak ostrożni w korzystaniu z tej
możliwości!




Pamiętajmy, że
komunikat o błędzie parzystości oznacza, że pamięć komputera zawiera
błędne dane. Czy chcemy, aby błędne dane z pamięci zostały utrwalone na
dysku? Jasne, że nie! Dlatego należy zachować dane w pliku o innej nazwie.
Jeżeli to możliwe, powinniśmy zachować dane na dyskietce, ponieważ
istnieje nieduże ryzyko uszkodzenia struktury logicznej dysku poprzez
zapisanie na nim zawartości pamięci z błędami.


Po zapisaniu danych przystępujemy do ustalenia przyczyny błędu
parzystości i naprawienia komputera. Pojawia się pokusa całkowitego wyłączenia
kontroli parzystości i dalszej pracy jakby nic się nie stało. Takie
postępowanie można porównać do wykręcenia kontrolki oleju w samochodzie, w
którym wycieka olej, aby swoim świeceniem nie pogarszała nam
samopoczucia.

ECC (Kod korekcji błędów)


ECC w porównaniu do wykrywania błędów pamięci za pomocą
parzystości jest dużym krokiem naprzód. ECC nie tylko wykrywa błąd, ale i
umożliwia poprawienie pojedynczego przekłamanego bitu, dzięki czemu komputer
może kontynuować pracę, bez wstrzymywania systemu i bez uszkodzeń danych.
Zaimplementowany w komputerach PC kod korekcji błędów nie potrafi poprawić
błędów, w których przekłamaniu uległy dwa bity, choć jest w stanie je wykryć.
Ponieważ badania wykazały, że w 98% błędów pamięci przekłamaniu ulegał tylko
jeden bit, najpowszechniej stosowany typ ECC polega na wykorzystaniu
pomocniczego kontrolera pamięci, który wykrywa i poprawia przekłamania
pojedynczego bitu w odczytanym słowie danych (przekłamania dwóch bitów również
są wykrywane, ale nie są poprawiane). Ten typ kodu korekcji błędów jest znany
jako SEC-DED i wymaga stosowania 7 dodatkowych bitów na 32 bity w 4-bajtowym
systemie, a ośmiu dodatkowych bitów w systemie 8-bajtowym. ECC w systemie
4-bajtowym najczęściej zabiera więcej niż parzystość, ale już w systemie
8-bajtowym koszty kodu korekcji błędów i parzystości są dokładnie takie same.

ECC wymaga, by kontroler pamięci obliczał podczas operacji
zapisów wartości dodatkowych bitów, porównywał wynik z odczytaną wartością i w
razie konieczności poprawiał przekłamania. Konieczność zastosowania dodatkowych
układów logicznych ECC w kontrolerze pamięci nie ma już obecnie większego
znaczenia, ale zastosowanie kodu korekcji błędów zmniejsza szybkość zapisów
pamięci. Jest to spowodowane koniecznością oczekiwania na wynik obliczeń
dodatkowych bitów. Przy zapisie części słowa, najpierw musi być odczytane całe
słowo, póĄniej muszą zostać nadpisane zmienione bity, a na koniec obliczona nowa
wartość bitów kontrolnych.
Większość błędów pamięci jest wywołana przekłamaniem
pojedynczego bitu i może zostać poprawiona przez kod korekcji błędów. Dlatego
zastosowanie ECC znacząco zwiększa niezawodność systemu. System wyposażony w kod
korekcji błędów jest szczególnie dobrze przystosowany do pełnienia roli serwera,
stacji roboczej czy też innego komputera, którego stabilna i poprawna praca
usprawiedliwia dodatkowe koszty pamięci. Jeśli cenisz swoje dane i używasz
komputera do ważnych (dla ciebie) zadań, powinieneś skorzystać z pamięci z kodem
korekcji błędów. Projektując system współpracujący zarówno z pamięciami
pozbawionymi parzystości, jak i z pamięciami posiadającymi ją lub wyposażonymi w
kod korekcji błędów, pozostawia się użytkownikowi możliwość wyboru poziomu
ochrony swoich danych i ceny, jaką ma zamiar za to
zapłacić.

Rozszerzanie pamięci komputera


Spośród wszystkich sposobów "unowocześnienia" komputera,
zwiększenie pamięci jest jednym z najbardziej użytecznych, a przy tym jednym z
najtańszych, zwłaszcza gdy weĄmiemy się pod uwagę, jak wzrosną możliwości
systemów Windows 95, Windows NT i OS/2 po rozszerzeniu pamięci. W niektórych
przypadkach podwojenie ilości pamięci dostępnej w komputerze może wręcz podwoić
szybkość komputera.
Układy pamięci są dostępne w różnych formatach i różnych
rozmiarach pamięci, nas jednak będą interesować wyłącznie układy pamięci DRAM
(dynamic random-access memory). Układy te należą do najbardziej
rozpowszechnionych typów pamięci. Pamięci te przyjęło się określać jako
"dynamiczne", ponieważ aby przechowywana w nich informacja nie została utracona,
do układu trzeba kilkaset razy na sekundę dostarczać porcje energii. Jeżeli
wyłączymy zasilanie komputera, to cała informacja jest bezpowrotnie tracona.
W tym podrozdziale omówimy rozszerzanie pamięci komputera, co
obejmuje wybór odpowiednich układów pamięci, instalowanie ich w komputerze oraz
testowanie zainstalowanej pamięci.

Możliwe strategie rozszerzania pamięci


Zwiększanie pamięci jest stosunkowo tanie
w momencie pisania
tej książki cena wynosiła poniżej 1,50 $ za megabajt. Niewielki wydatek może dać
komputerowi spory "zastrzyk" większych możliwości.
W jaki sposób możemy dodawać pamięć do komputera? Mamy trzy
możliwości, uszeregowane według prostoty i kosztów:

Dodanie pamięci w wolne gniazda na płycie głównej.

Zastąpienie pamięci na płycie głównej pamięcią o większej pojemności.

Kupno karty rozszerzającej pamięć (najmniej efektywna i najdroższa metoda
w obecnych czasach).
Dodawanie pamięci EMS w komputerach PC i XT nie jest dobrym
pomysłem, przede wszystkim z powodu ceny
karta rozszerzająca z kilkoma
megabajtami pamięci może kosztować więcej niż wynosi wartość całego komputera.
Pamięć ta nie będzie działać w systemie Windows, komputer klasy PC czy XT
nie może również pracować pod systemem OS/2. Należałoby raczej rozważyć zakup
komputera o większej mocy obliczeniowej, np. niedrogiego zestawu Pentium 100.
Możliwości rozszerzenia konfiguracji tego ostatniego są o wiele większe.
Jeżeli zdecydowaliśmy się na rozszerzenie pamięci w komputerze
nowszym niż PC czy XT, musimy pamiętać, że nie jest możliwe przenoszenie pamięci
z komputera PC czy XT do komputerów nowszych. 8-bitowe karty rozszerzające
pamięć są bezużyteczne w komputerach AT i Micro Channel, a ich szybkość
zazwyczaj jest niedostateczna na potrzeby nowych komputerów. W wielu nowych
komputerach zamiast pojedynczych układów stosuje się szybkie moduły SIMM. Zbiór
pojedynczych układów o czasie dostępu 150 ns i jednostkowej pojemności 64 kB czy
256 kB jest bezużyteczny, jeżeli nasz komputer wykorzystuje pamięć w postaci
modułów SIMM czy innej formie, o czasie krótszym niż 70 ns.
Należy więc pogodzić przyszłe potrzeby zwiększenia mocy
obliczeniowej komputera i chęć pracy w wielozadaniowych systemach
operacyjnych z ilością gotówki, którą bylibyśmy skłonni przeznaczyć na rozbudowę
komputera.
Zanim rozbudujesz pamięć komputera (lub wymienisz uszkodzone
moduły pamięci), musisz określić, jakie układy należy w nim zainstalować.
Potrzebne ci informacje znajdują się w dokumentacji komputera. Jeśli musisz
wymienić uszkodzone moduły SIMM lub DIMM i nie posiadasz żadnej dokumentacji,
możesz stwierdzić, jakie układy są ci potrzebne, sprawdzając te, które znajdują
się już w komputerze. Na każdym module pamięci są naniesione oznaczenia
informujące o jego czasie dostępu i pojemności. Zagadnienia związane z
pojemnością i czasem dostępu pamięci zostały szczegółowo omówione we
wcześniejszej części tego rozdziału.
Jeśli nie posiadasz dokumentacji sytemu, a jego producent nie
oferuje pomocy technicznej, otwórz pokrywę komputera i dokładnie spisz wszystkie
oznaczenia znajdujące się na modułach pamięci. Następnie skontaktuj się z
najbliższym sklepem komputerowym lub serwisem, który powinien ci pomóc w
ustaleniu, jakie moduły pamięci zostały zastosowane w komputerze. Zainstalowanie
w komputerze nieprawidłowych modułów może spowodować jego uszkodzenie lub, jeśli
się uruchomi, niestabilną pracę.




Zanim rozbudujesz
pamięć komputera do ponad 64 MB, sprawdĄ, czy chipset płyty głównej będzie
ją buforował. Jeśli chipset płyty głównej nie będzie mógł buforować
dodanej pamięci, wydajność komputera raczej zmaleje, niż wzrośnie. Więcej
informacji o tym częstym ograniczeniu możesz znaleĄć w sekcji "Pamięć
podręczna
SRAM", wcześniej w tym rozdziale, lub w omówieniu chipsetów w
rozdziale 6.
Wybór i instalacja pojedynczych układów pamięci oraz modułów SIMM i
DIMM


Jeżeli przystępujemy do zwiększenia ilości pamięci na płycie
głównej, to przede wszystkim powinniśmy przestrzegać zaleceń producenta
dotyczących typu układów pamięci. Jak już była mowa wcześniej, fizyczna pamięć
komputera jest dostępna w różnych formach: jako pojedyncze układy w obudowie
typu DIP, moduły SIMM, SIPP czy DIMM. W komputerze wykorzystuje się jedną z tych
odmian albo ich kombinację.
Bez względu na fizyczną formę pamięci komputera, układy pamięci
w komputerze są zgrupowane w banki. Bank pamięci jest zbiorem układów
pamięci, tworzących jednolity blok pamięci. Każdy taki blok może być odczytany
przez procesor w pojedynczym cyklu dostępu do pamięci. Aby bank pamięci mógł
funkcjonować, musi być wypełniony fizycznymi układami pamięci.
Umieszczanie dodatkowej fizycznej pamięci na płycie głównej
komputera jest prostym sposobem zwiększenia pamięci komputera. W większości
komputerów jest przynajmniej jeden nie wykorzystywany bank, w którym będzie
można umieścić w przyszłości dodatkowe moduły i zwiększyć w ten sposób szybkość
komputera.

Zastępowanie modułów SIMM i DIMM modułami o większej
pojemności


Jeśli wszystkie gniazda pamięci płyty głównej są już obsadzone,
najlepszym rozwiązaniem będzie zastąpienie wszystkich modułów pamięci jednego z
banków modułami o większej pojemności. Jeśli na przykład posiadasz komputer
Pentium z 16 MB pamięci w czterech modułach po 4 MB, możesz wymienić wszystkie
4-megabajtowe SIMM-y na moduły o pojemności 8 MB, rozbudowując dzięki temu
pamięć komputera do 32 MB. Możesz również pozostawić dwa z już posiadanych
4-megabajtowych SIMM-ów i obsadzić drugi bank modułami 8-megabajtowymi,
rozbudowując pamięć komputera do 24 MB. Pamiętaj jednak, że zawsze musisz
obsadzać jednocześnie cały bank, który składa się z dwóch modułów pamięci o tej
samej pojemności
nie możesz zainstalować w banku tylko jednego modułu lub
modułów o różnej pojemności. Konieczność instalowania dwóch modułów nie dotyczy
pamięci DIMM, ponieważ każda z nich jest pełnym bankiem.
Istnienie modułów pamięci o większej pojemności, pasujących do
gniazd w twojej płycie głównej, wcale nie oznacza, że pamięci te muszą poprawnie
działać z twoim komputerem. Chipset lub BIOS płyty głównej może ograniczać
możliwości korzystania z układów o większej pojemności. Zanim więc kupisz nowe
moduły pamięci, sprawdĄ w dokumentacji płyty głównej lub komputera, czy będziesz
mógł z nich korzystać.

Typy układów pamięci RAM (pojemność)


Spotykane są układy pamięci RAM o różnych pojemnościach.
Pojemność układu pamięci określa liczbę bitów, jaka może być zapamiętana w
układzie. Np. w oryginalnym komputerze IBM PC układy pamięci RAM przechowywały
16 kilobitów danych i były to układy o najmniejszej ilości pamięci stosowane
kiedykolwiek w komputerach PC. W oryginalnej wersji komputera XT układy RAM
miały pojemność 64 kilobitów. Obecnie układy pamięci RAM, zgrupowane zazwyczaj w
moduły SIMM, w komputerach z procesorem Pentium mają pojemność 4 megabitów lub
16 megabitów.
Zanim dodamy nowe układy pamięci do komputera (albo wymienimy
stare układy na nowe), musimy określić typ układów wymaganych przez nasz
komputer. Informację tę można znaleĄć w dokumentacji komputera.
Jeżeli musimy wymienić uszkodzony układ RAM, a nie mamy
dokumentacji komputera, możemy określić typ układów odpowiedni dla danego
komputera sprawdzając układy obecne już w komputerze. Każdy układ ma na obudowie
napisy, które określają jego pojemność i czas dostępu. Oznaczenia układów o
pojemności 1 M pochodzących od różnych producentów zebrano w
tabelce:





Oznaczenie
Producent

TMS4C1024N/DJ
Texas Instruments

HM511100AP/AJP/AZP
Hitachi

MB81C1000P/PJ/PSZ
Fujitsu


Jeżeli nie mamy dokumentacji komputera i nie jest dostępna
pomoc techniczna producenta, nie pozostaje nam nic innego jak otworzyć obudowę
komputera i uważnie spisać oznaczenia poszczególnych układów. Następnie udajemy
się do najbliższego sklepu komputerowego lub zwracamy się listownie do
sprzedawcy układów z prośbą o dobranie układów RAM odpowiednich do naszego
komputera. Umieszczenie w komputerze niewłaściwych układów spowoduje, że praca
komputera będzie tak zawodna, jakby został pozostawiony w komputerze wadliwy
układ pamięci.
Czas dostępu układów pamięci RAM


Układy RAM różnią się między sobą czasem dostępu. Np. w
starszych komputerach były wykorzystywane układy o czasie 80 ns albo wolniejsze,
a w komputerach 486
układy 70 ns i 60 ns.
Odpowiednią szybkość układów pamięci w komputerze ustala
producent płyty głównej. Np. firma IBM ustala różne szybkości pamięci w
zależności od modelu komputera. W tabeli 7.11 zebrano czasy dostępu i
liczbę cykli oczekiwania, jakich wymagają płyty główne
IBM.

Tabela 7.11. Zależności czasowe płyt głównych firmy IBM



Komputer
Procesor
Częstotliwość
procesora (MHz)
Liczba cykli
oczekiwania
Czas dostępu
(ns)
Uwagi

PC
8088
4,77
1
200
 

XT
8088
4,77
1
200
 

AT
286
6
1
150
 

AT
286
8
1
150
 

XT-286
286
6
0
150
Brak cykli oczekiwania

PS/1
286
10
1
120
 

25
8086
8
0
150
Brak cykli oczekiwania

30
8086
8
0
150
Brak cykli oczekiwania

25-286
286
10
1
120
 

30-286
286
10
1
120
 

35 SX
386SX
20
0
2
85
Stronicowanie pamięci

40 SX
386SX
20
0
2
85
Stronicowanie pamięci

L40
386SX
20
0
2
85
Stronicowanie pamięci

50
286
10
1
150
 

50Z
286
10
0
85
Brak cykli oczekiwania

53486SLC2
486SLC2
10
0
2
70
Pamięć z przeplotem, 16 kB wewnętrznej pamięci
cache

55 SX
386SX
50
0
2
100
Stronicowanie pamięci

56 486SLC3
486SLC3
16
0
2
70
Pamięć z przeplotem, 16 kB wewnętrznej
pamięci cache

57 SX
386SX
75
0
2
70
Stronicowanie pamięci

57 486SLC3
486SLC3
20
0
2
70
Pamięć z przeplotem, 16 kB wewnętrznej
pamięci cache

65
386SX
10
0
2
100
Stronicowanie pamięci

70
386DX
16
0
2
85
Stronicowanie pamięci

70
386DX
16
0
2
85
Stronicowanie pamięci

70
386DX
20
0
5
80
64 kB zewnętrznej pamięci cache

70
486DX
25
0
5
80
8 kB wewnętrznej pamięci cache

P70
386DX
16
0
2
85
Stronicowanie pamięci

P70
386DX
20
0
2
85
Stronicowanie pamięci

P75
486DX
33
0
5
70
8 kB wewnętrznej pamięci cache

76
486DX2
66
0
2
70
Pamięć z przeplotem, 8 kB wewnętrznej
pamięci cache

76
486SX
33
0
2
70
Pamięć z przeplotem, 8 kB wewnętrznej
pamięci cache

76
486DX4
100
0
2
70
Pamięć z przeplotem, 16 kB wewnętrznej
pamięci cache

77
486DX2
66
0
2
70
Pamięć z przeplotem, 8 kB wewnętrznej
pamięci cache

77
486SX
33
0
2
70
Pamięć z przeplotem, 8 kB wewnętrznej
pamięci cache

77
486DX4
100
0
2
70
Pamięć z przeplotem, 16 kB wewnętrznej pamięci
cache

80
386DX
16
0
2
80
Stronicowanie pamięci

80
386DX
20
0
2
80
Stronicowanie pamięci

80
386DX
25
0
5
80
64 kB zewnętrznej pamięci cache

90
486SX
20
0
5
70
Pamięć z przeplotem, 8 kB wewnętrznej
pamięci cache

90
486SX
25
0
5
70
Pamięć z przeplotem, 8 kB wewnętrznej
pamięci cache

90
486DX
25
0
5
70
Pamięć z przeplotem, 8 kB wewnętrznej
pamięci cache, opcjonalnie 64 kB zewnętrznej pamięci cache

90
486DX
33
0
5
70
Pamięć z przeplotem, 8 kB wewnętrznej
pamięci cache, opcjonalnie 64 kB zewnętrznej pamięci cache

90
486DX
50
0
5
70
Pamięć z przeplotem, 8 kB wewnętrznej
pamięci cache, opcjonalnie 64 kB zewnętrznej pamięci cache

95
486SX
20
0
5
70
Pamięć z przeplotem, 8 kB wewnętrznej
pamięci cache

95
486SX
25
0
5
70
Pamięć z przeplotem, 8 kB wewnętrznej
pamięci cache

95
486DX
25
0
5
70
Pamięć z przeplotem, 8 kB wewnętrznej
pamięci cache, opcjonalnie 64 kB zewnętrznej pamięci cache

95
486DX
33
0
5
70
Pamięć z przeplotem, 8 kB wewnętrznej
pamięci cache, opcjonalnie 64 kB zewnętrznej pamięci cache

95
486DX
50
0
5
70
Pamięć z przeplotem, 8 kB wewnętrznej
pamięci cache, opcjonalnie 64 kB zewnętrznej pamięci
cache




Komputery
kompatybilne z IBM powinny generalnie akceptować takie same układy pamięci
jak ich odpowiedniki wymienione w tabelce. Układy wolniejsze niż 70 ns
(60-nanosekundowe są szybsze) nie powinny być wykorzystywane w komputerach
z procesorem Pentium (albo lepszym).


Dozwolone jest zainstalowanie w komputerze szybszych układów
pamięci, niż wymaga płyta główna czy karty rozszerzające
zakup szybszych
układów może okazać się dobrą inwestycją, jeżeli zamierzamy je w przyszłości
wykorzystać w szybszym komputerze. Niestety, szybsza pamięć nie spowoduje
przyśpieszenia pracy komputera, ponieważ architektura komputera przewiduje pracę
z pamięcią o co najwyżej określonym czasie dostępu.
Czas dostępu układów pamięci jest wydrukowany na wierzchu
obudowy układu. Na układach pamięci
bez względu na to, czy są to pojedyncze
układy typu DIP czy moduły SIMM albo SIOPP
można znaleĄć numer
identyfikacyjny. Ostatnie dwie cyfry po myślniku (-) są szczególnie ważne,
ponieważ wskazują na szybkość układu pamięci.
W niektórych komputerach możliwa jest kontrola szybkości pracy
układów pamięci. Komputery z regulacją cykli liczby oczekiwania umożliwiają
osiągnięcie optymalnej wydajności komputera. W tym celu musimy kupić odpowiednio
szybkie układy pamięci. Możemy również wybrać niższą wydajność kupując tańszą
pamięć. Praca komputera bez cykli oczekiwania może wymagać użycia układów o
krótszym czasie dostępu.
Komputery wykorzystujące 72-końcówkowe moduły SIMM mogą
określić szybkość i pojemność pamięci zainstalowanych modułów. Wykorzystują
w tym celu cztery specjalne końcówki
tzw. presence detect pins. Za
pomocą tych wyprowadzeń płyta główna może określić czas dostępu i pojemność
pamięci zainstalowanych modułów, podobnie jak kamera filmowa może określić
właściwą szybkość przesuwu taśmy filmowej, odczytując informację z otworów
perforowanych na filmie. Umieszczenie w komputerze pamięci, która jest zbyt
wolna, może spowodować wyświetlenie komunikatu o błędzie już przy starcie
systemu.

Architektura podzespołu pamięci RAM w komputerze


W celu zmniejszenia ilości cykli oczekiwania opracowano
architektury pamięci, które zwiększają ogólną wydajność komputera i przyczyniają
się do obniżenia kosztów. Najczęściej stosuje się w tym celu następujące
rozwiązania:

Pamięć stronicowaną (ang. paged memory)

Pamięć z przeplotem (ang. interleaved memory)

Pamięć podręczną (ang. memory caching)
Pamięć stronicowana jest prostym sposobem zwiększenia
szybkości operacji angażujących pamięć poprzez podział pamięci na strony o
rozmiarach od 512 bajtów do kilku kilobajtów. Układ stronicowania umożliwia
dostęp do pamięci w obrębie strony bez wstawiania cykli oczekiwania. Jeżeli
adres w pamięci, do którego chcemy się odwołać, znajduje się poza bieżącą
stroną, dodawany jest jeden lub więcej cykli oczekiwania, aby można było dokonać
koniecznego przełączenia strony.
Pamięć z przeplotem pozwala na osiągnięcie większej
wydajności niż pamięć stronicowana. Koncepcja ta polega na połączeniu dwóch
banków pamięci w jeden, w którym znajdują się na przemian bajty parzyste i
nieparzyste. Dzięki temu możliwy jest dostęp procesora do jednego banku w czasie
trwania poprzedniego dostępu do drugiego banku. Poprzez naprzemienne dostępy do
obydwu banków, procesor może zażądać danych z jednego banku, a gdy
realizacja żądania się zbliża, procesor przełącza się na drugi bank i obsługuje
kolejne żądanie. Realizacja pierwszego żądania odbywa się w czasie, gdy drugie
żądanie wciąż oczekuje na realizację, itd. Dzięki mechanizmowi pamięci
z przeplotem możliwe jest podwojenie efektywnej szybkości dostępu do
pamięci, bez konieczności stosowania szybszych układów.
Mechanizm pamięci z przeplotem znalazł zastosowanie w wielu
komputerach i przyczynił się do wzrostu ich wydajności. Niektóre komputery
oferujące ten mechanizm pozwalają na korzystanie z niego jedynie wówczas, gdy
obydwa zainstalowane banki pamięci są takich samych rozmiarów, co oznacza
zazwyczaj jednoczesne dodanie dwóch 36-bitowych modułów SIMM o takiej samej
pojemności. Jeżeli dodany będzie tylko jeden bank albo zostaną dodane banki o
różnych rozmiarach, to komputer będzie działał, jednak przeplot pamięci będzie
wyłączony i nastąpi znaczny spadek wydajności. Więcej informacji na ten temat
można znaleĄć w dokumentacji komputera.
Pamięć podręczna (cache) jest najpopularniejszą i
zazwyczaj najbardziej efektywną techniką podnoszenia wydajności operacji
angażujących pamięć. Technika ta opiera się na wykorzystaniu bardzo szybkiej
pamięci o niewielkich rozmiarach (od 8 kB do 512 kB), tak aby transfer danych z
procesora mógł się odbywać bez konieczności wstawiania cykli oczekiwań. Czas
dostępu do pojedynczego banku pamięci cache wynosi nawet 2 ns. Ponieważ czas ten
jest o wiele krótszy od najkrótszego czasu osiąganego dla pamięci DRAM,
konieczne jest stosowanie specjalnych pamięci
SRAM. Pamięci SRAM, w
odróżnieniu od DRAM, nie wymagają stałej obecności sygnału odświeżającego. Cecha
ta, wraz z innymi właściwościami, daje w efekcie bardzo krótki czas dostępu do
pamięci, lecz także podnosi jej cenę.
Pamięć podręczna


Jak już wspomniałem w poprzednim podrozdziale, stosowanie
pamięci podręcznej jest jednym z najefektywniejszych sposobów na zwiększenie
szybkości operacji angażujących pamięć. Układy pamięci SRAM są, co prawda,
drogie, jednak do zaimplementowania pamięci podręcznej potrzebna jest niewielka
ich ilość. W pamięci SRAM, nadzorowanej przez specjalny układ kontrolera pamięci
cache, przechowywane są kopie danych z tych obszarów pamięci RAM, do
których procesor często się odwoływał. Są w niej także zawartości tych komórek
pamięci, co do których układ kontrolera spodziewa się, że będą wkrótce
wykorzystane. Pamięć cache jest więc rodzajem inteligentnego bufora pomiędzy
procesorem a wolną pamięcią dynamiczną RAM.
Trafienie (ang. cache hit) oznacza, że dane, których
potrzebuje procesor, znajdują się w pamięci cache i do ich pobrania nie
trzeba wstawiać dodatkowych cykli oczekiwania. Brak trafienia (ang.
cache miss) oznacza, że dane, których potrzebuje procesor, nie zostały
załadowane do pamięci cache i do ich pobrania potrzebne są dodatkowe cykle
oczekiwania. Dobry kontroler pamięci cache zapewnia współczynnik trafień rzędu
95 procent, a nawet więcej (oznacza to, że komputer pracuje bez cykli
oczekiwania przez 95 procent swojego czasu). W efekcie komputer z zewnątrz
wygląda tak, jakby prawie przez cały czas była w nim pamięć o czasie dostępu 15
ns lub mniejszym, chociaż większość jego pamięci jest o wiele wolniejsza (i co
za tym idzie, o wiele tańsza).
Komputery z procesorem 486SX, SL i DX mają zintegrowany z
procesorem kontroler pamięci cache wraz z 8 kB wewnętrznej pamięci cache, dzięki
której komputer pracuje dużo szybciej niż poprzednie komputery. Procesor 486SLC
posiada 1 kB wewnętrznej pamięci cache, procesory 486DX mają 16 kB wewnętrznej
pamięci cache, podobnie procesory 486SLC2 i 486SLC3. W komputerach z procesorem
386SX i DX trzeba stosować zewnętrzną pamięć cache wraz z kontrolerem

komputery te są pozbawione wewnętrznej pamięci cache. Procesory Pentium i
Pentium II mają dwa obszary wewnętrznej pamięci cache
jeden dla kodu
instrukcji i jeden dla danych. Architektura ta została również przeniesiona do
procesorów Pentium MMX i Pentium II. Oba te procesory są wyposażone w dwa osobne
obszary pamięci cache o rozmiarze 16 kB dla kodu rozkazów procesora i dla
danych. Pamięć ta jest pamięcią typu write-back, tzn. procesor może z niej
korzystać zarówno do odczytywania, jak i zapisywania danych.
Wewnętrzna pamięć cache procesora jest nazywana pamięcią cache
pierwszego poziomu (ang. Level 1 cache
L1), natomiast zewnętrzna pamięć cache
to pamięć cache drugiego poziomu (ang. Level 2 cache
L2). Zazwyczaj im większy
rozmiar pamięci cache, tym większa wydajność komputera. Większy rozmiar pamięci
L2 cache nie stanowi jednak gwarancji większej wydajności komputera
można
spotkać komputery z mniejszą pamięcią cache, które osiągają lepsze parametry niż
komputery z większą pamięcią cache. Rzeczywiste parametry komputera zależą od
wydajności kontrolera pamięci cache oraz od architektury komputera, np. pamięć
cache zintegrowana z procesorem może zwiększyć wydajność o wiele bardziej niż
zewnętrzna pamięć cache. Dodanie 256 kB pamięci L2 cache w komputerze IBM PS/2
Model 90 czy 95 z procesorem 486DX spowoduje nieznaczny tylko wzrost osiągów
komputera w porównaniu z dodaniem do procesora 486 8 kB wewnętrznej pamięci
cache (L1). Przyczyną tego jest większa wydajność pamięci L1 niż L2. Ponadto
dodanie pamięci cache nie spowoduje proporcjonalnego wzrostu szybkości
komputera. Najlepszą wydajność uzyskamy stosując połowę całkowitego rozmiaru
pamięci cache, jaką komputer może obsłużyć. Komputer PC wyposażony w 256 kB
czy 512 kB pamięci cache drugiego poziomu stanowi rozwiązanie optymalne.
Aby osiągnąć maksimum wydajności i maksimum niezawodności,
najlepiej jest korzystać z pamięci o czasie dostępu zalecanym przez producenta
komputera. Szybsza pamięć będzie działać, jednak nie spowoduje przyrostu
wydajności i z tego powodu jej kupno jest marnotrawstwem pieniędzy.
Minimalny czas dostępu do pamięci na płycie głównej konkretnego
typu komputera można znaleĄć w dokumentacji technicznej. Jeżeli jesteśmy
właścicielem komputera PC bez dokumentacji, to możemy skorzystać z dokumentacji
innego komputera o parametrach podobnych do naszego, ponieważ większość
komputerów kompatybilnych ma takie same parametry. Z powodu różnorodności
rozwiązań spotykanych na rynku powinniśmy jednak pozyskać odpowiednią
dokumentację od producenta sprzętu.

Karty rozszerzające pamięć


Do kart rozszerzających pamięć zazwyczaj uciekamy się w
ostateczności. W wielu komputerach (np. starszych modelach firmy Compaq),
których złącza gniazd rozszerzających są firmowym rozwiązaniem producenta,
jesteśmy zmuszeni do zakupu kart z pamięcią tylko u producenta komputera.
Własne rozwiązania kart z pamięcią stosuje również firma IBM w komputerze PS/2
Model 80. W innych standardowych komputerach, w których nie są stosowane własne
rozwiązania producentów (np. IBM PC, XT i AT) i w większości komputerów
kompatybilnych oraz większości komputerów PS/2, karty rozszerzające pamięć
pasują do standardowych gniazd rozszerzających i możemy się w nie
zaopatrzyć u setek producentów.
Niestety, wszystkie karty rozszerzające pamięć umieszczane w
standardowych gniazdach pracują z częstotliwością magistrali zewnętrznej, a nie
z pełną częstotliwością płyty głównej. Z tego powodu w większości komputerów
umieszcza się obecnie gniazda na moduły SIMM bezpośrednio na płycie głównej,
dzięki czemu pamięć jest połączona bezpośrednio z magistralą procesora.
Korzystanie w takich komputerach z kart rozszerzających pamięć powoduje tylko
ich spowolnienie. W innych komputerach wykorzystuje się firmowe rozwiązania
interfejsu łączącego magistralę lokalną z kartami rozszerzającymi pamięć.
Rozwiązania te mogą jednak sprawiać dodatkowe problemy i być przyczyną
dodatkowych kosztów przy rozszerzaniu czy wymianie pamięci.
W niektórych przypadkach karta rozszerzająca pamięć może
wykorzystywać wolniejsze układy pamięci, niż wymagałaby tego płyta główna (np.
karty komputerów PS/2 Model 50 i 60 używają układów pamięci o czasie dostępu 120
ns). W wielu komputerach gniazda rozszerzające pamięć są taktowane zegarem o
ustalonej, dość niskiej częstotliwości, wynoszącej w większości komputerów z
magistralą ISA 8 MHz, tak aby karty rozszerzające zainstalowane w komputerze
pracowały poprawnie. Z powodu licznych funkcji interfejsu magistrali MCA (Micro
Channel Architecture) karty rozszerzające pamięć w komputerze PS/2 mogą pracować
wolniej niż pamięć zainstalowana na płycie głównej. Asynchroniczna magistrala
MCA umożliwia niezależną od szybkości procesora pracę kart rozszerzających. W
razie potrzeby urządzenia podłączone do magistrali mogą żądać dodatkowych cykli
oczekiwania, aby wolniejsze karty mogły nadążyć z przesyłem
informacji.

Instalowanie pamięci w komputerze


W tym podrozdziale zostanie omówione instalowanie w komputerze
układów pamięci
zwłaszcza nowych układów i modułów pamięci RAM. Opiszemy także
problemy, z jakimi najczęściej styka się użytkownik, i metody ich unikania.
Zamieścimy również informacje o konfiguracji komputera, które są konieczne,
abyśmy mogli w pełni korzystać z dodatkowej pamięci.
Podczas umieszczania w komputerze czy wyjmowania z niego
modułów pamięci użytkownik najczęściej napotyka następujące trudności:

wyładowania elektrostatyczne

złamane lub wygięte nóżki układów

nieodpowiednie ustawienie przełączników i zworek
Aby zapobiec wyładowaniom elektrostatycznym w czasie
umieszczania w komputerze wrażliwych pod tym względem układów pamięci i kart,
nie powinniśmy mieć na sobie odzieży syntetycznej ani butów na skórzanej
podeszwie. Zanim zaczniemy pracę, powinniśmy pozbyć się ładunków
elektrostatycznych przez dotknięcie ręką obudowy komputera. Jeszcze lepiej jest
mieć na nadgarstku pasek uziemiający, zakupiony w tym celu w sklepie. Paski
takie można dostać w sklepach z częściami elektronicznymi lub w sieci
sprzedaży wysyłkowej. Pasek uziemiający składa się z przewodzącej obrączki
uziemionej na drugim końcu przewodem przypiętym do obudowy komputera. W czasie
gdy będziemy pracować, wtyczka kabla zasilającego powinna być włożona do
gniazdka w celu uziemienia komputera, lecz sam komputer musi pozostać
wyłączony.




Należy używać
tylko paska uziemiającego z odpowiednim oznaczeniem, kupionego w sklepie;
nie wolno stosować paska wykonanego samodzielnie. Paski sklepowe są
wyposażone w rezystor o oporze jednego megaoma, który pełni rolę
zabezpieczenia w razie przypadkowego dotknięcia punktu pod napięciem.
Rezystor powoduje, że nasze ciało nie stanie się przewodem o niższej
rezystancji, przez który prąd spłynie do ziemi porażając nas.
Nieodpowiednio wykonany pasek może spowodować przepływ prądu przez nasze
ciało do ziemi, z możliwością śmiertelnego
porażenia.


Innym problemem przy instalowaniu w komputerze układów w
obudowie typu DIP czy modułów SIP są wygięte bądĄ złamane nóżki układów. Czasami
nóżki fabrycznie nowych układów są wygięte w kształcie litery V, przez co stają
się trudne do umieszczenia w podstawce. Jeżeli zauważymy, że układ w obudowie
DIP ma wygięte w ten sposób nóżki, połóżmy układ na stole stroną z wygiętymi
nóżkami w dół i delikatnie naciskając wygnijmy nóżki tak, aby znalazły się pod
kątem 90 stopni w stosunku do obudowy układu. W przypadku modułu SIPP możemy
posłużyć się szczypcami zakończonymi igłą, za pomocą których prostujemy nóżki
modułu, tak aby odstawały od krawędzi w dół, przy zachowaniu jednakowych
odstępów pomiędzy końcówkami. Następnie umieszczamy układy pojedynczo w
gnieĄdzie.




Wyprostowanie
końcówek układów SIPP czy modułów DIPP nie jest zbyt trudne, jednak przy
braku uwagi można łatwo złamać nóżkę, co czyni taki układ czy moduł
bezużytecznym. Przy prostowaniu nóżek powinniśmy być bardzo ostrożni. Aby
wyprostować nóżki i dopasować je do otworów w podstawce, możemy posłużyć
się odpowiednimi narzędziami. Narzędzia takie nie są drogie, a pozwolą nam
zaoszczędzić sporo czasu.


Każdy moduł czy układ pamięci musi być włożony w podstawkę w
odpowiednim kierunku. Każdy układ ma na końcu oznaczenie wskazujące na sposób
umieszczenia go w gnieĄdzie. Może to być nacięcie, okrągłe wgłębienie albo jedno
i drugie. Odpowiednie nacięcie może znajdować się też na podstawce układu. Na
płycie głównej może być również legenda objaśniająca poprawny kierunek układu w
gnieĄdzie. Jeżeli oznaczenia takiego nie ma, to jako wzór mogą nam posłużyć inne
układy. Pozycja nacięcia wskazuje na lokalizację pierwszej końcówki układu.
Poprawne włożenie układu, tak aby nacięcie zgadzało się z pozycją nacięć na
innych układach, uchroni nas przed następstwem włożenia układu na odwrót.
Następnie delikatnie umieszczamy układ na podstawce, pilnując, aby każda
końcówka była dopasowana do swojego otworu. Następnie pewnym ruchem dociskamy
układ kciukami, aż będzie osadzony w podstawce.
Kierunek osadzenia modułów SIMM jest wyznaczony nacięciem na
jednym końcu modułu (przedstawiono na rysunku 7.10). W gnieĄdzie modułu znajduje
się odstający fragment, który musi pasować do nacięcia na końcu modułu.
Wystający fragment uniemożliwia odwrotne włożenie modułu do gniazda; aby to
zrobić, musielibyśmy złamać podstawkę. Rysunek 7.11 przedstawia powiększony
fragment gniazda SIMM decydującego o położeniu modułu. Gniazda modułów SIPP są
pozbawione takiego klucza i do użytkownika należy poprawne umieszczenie modułów
w gnieĄdzie. Jeżeli na płycie głównej nie ma żadnych oznaczeń, pomocna w tym
względzie może być dokumentacja komputera. Jako wzór mogą także posłużyć moduły
SIPP znajdujące się na płycie głównej.



Rysunek
7.10.
Nacięcie na module SIMM widać na lewej końcówce
modułu. Najpierw należy umieścić moduł pod pewnym kątem, a następnie
należy go wyprostować
w gnieĄdzie do pionowej pozycji, aż zatrzasną się
zatrzaski



Moduły DIMM posiadają również nacięcia pozwalające na
jednoznaczne określenie ich pozycji w gnieĄdzie. Ukazano je na rysunku 7.12.
Kiedy moduł jest poprawnie umieszczony w gnieĄdzie (należy go wcisnąć), dĄwignie
znajdujące się z boków modułu powinny się podnieść do góry i zatrzasnąć w
nacięciach z boku modułu. Przy instalacji nie należy używać siły
jeżeli coś
nie pasuje, należy raczej szukać innego rozwiązania niż siłowe. Uszkodzenie
uchwytów może spowodować pojawianie się przypadkowych błędów pamięci. Moduł DIMM
wyjmujemy odchylając dĄwigienki z boku modułu.




Rysunek
7.11.
Zbliżenie ukazuje tylną stronę modułu SIMM
umieszczonego poprawnie w gnieĄdzie. Widać otwór, w który
wchodzi plastikowy bloczek umocowany do gniazda




Rysunek
7.12.
Nacięcia w module DIMM pasujące do kluczy
w gnieĄdzie



Jak wyjaśniono wcześniej w rozdziale, moduły DIMM są dostępne w
kilku wersjach, na przykład: buforowane, niebuforowane, 3,3 V, 5 V. Buforowane
moduły posiadają dodatkowy bufor pośredniczący w wymianie danych pomiędzy płytą
główną a modułem. Niestety, spowalniają one pracę modułu, dlatego nie powinno
się ich wykorzystywać w szybszych płytach głównych. Różnicowanie napięcia
jest proste. Moduł 3,3 V nie pasuje do 5 V
i odwrotnie
z powodu różnic
w konfiguracji kluczy w gnieĄdzie DIMM.
Nowoczesne systemy PC korzystają jedynie z niebuforowanych,
3,3-voltowych modułów DIMM. Komputery Apple oraz systemy niezgodne z PC mogą
korzystać z innych rozwiązań. Klucze są przedstawione na rysunku
7.13.



Rysunek
7.13.
Klucze w gnieĄdzie DIMM



Zanim zainstalujemy w komputerze moduły czy układy pamięci,
upewnijmy się, że zasilanie komputera jest wyłączone. Następnie zdejmujemy
obudowę komputera i wyjmujemy wszystkie obecne w nim karty. Moduły SIMM z
łatwością wkładamy na ich miejsce, jednak z układami SIPP możemy mieć pewne
problemy. Narzędzia do mocowania układów nie są bezwzględnie wymagane, jednak z
ich pomocą umieszczenie układu w gnieĄdzie może być o wiele prostsze. Do
wyjmowania układów z podstawek posłużmy się specjalnym narzędziem albo
śrubokrętem. Nie należy nigdy próbować wyciągać układów palcami, ponieważ możemy
powyginać przy tym końcówki albo skaleczyć się w palec. Moduły SIMM wyjmujemy
zwalniając uprzednio zatrzask i wyciągając moduł z gniazda.
Po umieszczeniu w komputerze nowych układów pamięci i złożeniu
komputera z powrotem w jedną całość, konieczna może się okazać zmiana ustawień
przełączników czy zworek na płycie głównej. W oryginalnym komputerze PC znajdują
się dwa bloki przełączników, po osiem przełączników w każdym. Pozycje od 1 do 4
w drugim bloku przełączników odzwierciedlają rozmiar całej pamięci obecnej w
komputerze. W komputerze XT znajdował się tylko jeden blok przełączników,
oznaczający liczbę banków pamięci na płycie głównej komputera, lecz nie na
kartach rozszerzających pamięć. Komputery IBM AT i kompatybilne są pozbawione
przełączników określających konfigurację pamięci. Zamiast tego trzeba w nich
uruchomić program konfiguracyjny (SETUP), w którym poinformujemy komputer o
całkowitej ilości pamięci w nim obecnej. Komputery kompatybilne z IBM AT mają
zazwyczaj program konfiguracyjny w pamięci ROM BIOS. Program ten musi być
uruchomiony po zainstalowaniu nowej pamięci, aby komputer był właściwie
skonfigurowany.
Po odpowiednim skonfigurowaniu komputera do pracy z nową
pamięcią, powinniśmy uruchomić oprogramowanie diagnostyczne, aby się upewnić, że
nowa pamięć funkcjonuje prawidłowo. Dla wszystkich typów komputerów dostępne są
co najmniej dwa, a czasami trzy takie programy. Oto one (według ilości zwracanej
informacji):

POST (Power-On Self Test)
dysk z zaawansowanym programem diagnostycznym

Dysk z programem diagnostycznym użytkownika
dodatkowe oprogramowanie
diagnostyczne
Program POST jest uruchamiany za każdym razem po włączeniu
komputera; aby uzyskać dostęp do zaawansowanych programów na dysku
diagnostycznym, należy nacisnąć Ctrl+A w menu powitalnym.
Dostępnych jest wiele innych programów diagnostycznych
pochodzących od niezależnych producentów oprogramowania użytkowego. Więcej
informacji na temat takich programów można znaleĄć w rozdziale 21. pt.
"Programowe i sprzętowe narzędzia diagnostyczne".

Organizacja logiczna pamięci komputera


Przestrzeń adresowa oryginalnego komputera PC wynosiła 1 MB, z
czego górne 384 kB było zarezerwowane na potrzeby pamięci ROM BIOS, kart
rozszerzających itp. Zarezerwowanie przez projektantów komputera górnej części
obszaru adresowego procesora (pomiędzy 640 kB a 1024 kB), zamiast obszaru
dolnego (od 0 do 640 kB) doprowadziło do powstania ograniczenia w ilości pamięci
dostępnej dla systemu operacyjnego DOS do 640 kB (ang. convenctional memory
barier). Ciągła presja wywierana na producentów komputerów i urządzeń
peryferyjnych, aby nie zmieniać oryginalnej organizacji pamięci komputera i
dzięki temu utrzymać całkowitą zgodność z poprzednimi komputerami PC,
spowodowała wielki bałagan. W 20 lat po wyprodukowaniu pierwszego komputera PC,
najnowsze komputery z procesorem Pentium II są pod wieloma względami ograniczone
organizacją pamięci, będącą spadkiem po pierwszych komputerach PC.
Użytkownicy, którzy chcieliby lepiej poznać i zrozumieć
działanie swojego komputera, stają w pewnym momencie przed koniecznością
wgłębienia się w problemy związane z organizacją pamięci. Z logicznego
punktu widzenia pamięć komputera składa się z różnej wielkości fragmentów,
z których tylko część może być wykorzystywana przez aplikacje. W tym
podrozdziale omówimy podział logiczny pamięci współczesnego komputera PC. Możemy
wyróżnić następujące obszary pamięci:

Pamięć podstawowa (ang. convenctional memory)

Pamięć górna (ang. Upper Memory Area, UMA)

Pamięć "wysoka" (High Memory Area, HMA)

Pamięć powyżej pierwszego megabajta (ang. extended memory, XMS)

Pamięć rozszerzona (ang. expanded memory, EMS)
rozwiązanie przestarzałe

Pamięć obrazu (ang. Video RAM), umieszczona w przestrzeni adresowej UMA

Pamięci ROM i RAM kart rozszerzających (umieszczone w przestrzeni
adresowej UMA)

Pamięć ROM BIOS płyty głównej (umieszczona w przestrzeni adresowej UMA)

W kolejnych podrozdziałach opiszemy również konflikty
angażujące pamięć oraz zjawisko zachodzenia na siebie różnych obszarów pamięci
(ang. overlap). Omówimy także programy zarządzające pamięcią (ang. memory
managers), pomagające w optymalnym skonfigurowaniu pamięci i lepszym jej
wykorzystaniu. W komputerze AT obszar dostępnej dla procesora pamięci przekracza
granicę 1 MB i osiąga 16 MB w komputerze 286, 4 GB w komputerach z procesorem
386DX (lub lepszym) i 64 GB w komputerze Pentium II. Obszar pamięci powyżej 1 MB
określany jest w języku angielskim jako extended memory (dosł. pamięć
powiększona).
Na rysunku 7.14 przedstawiono mapę pamięci komputera PC. Jeżeli
procesor pracuje w trybie rzeczywistym, to do jego dyspozycji jest tylko
pierwszy megabajt. Procesor pracujący w trybie chronionym ma dostęp do pełnej
przestrzeni adresowej, w zależności od procesora równej 16 MB, 4096 MB lub 65536
MB. Pojedynczy znak na rysunku oznacza 1 kB pamięci, linia albo segment oznacza
64 kB. Przedstawiona mapa pamięci obejmuje dwa pierwsze
megabajty.




Przedstawiona mapa
pamięci kończy się, z braku miejsca, po drugim megabajcie. W
rzeczywistości obejmuje ona całą przestrzeń adresową
komputera.
Pamięć podstawowa


Oryginalny komputer PC/XT mógł wykorzystywać 1 MB pamięci
roboczej, zwanej również pamięcią RAM (Random Access Memory). 1 MB
pamięci RAM komputera dzieli się na kilka bloków, z których każdy jest
przeznaczony do innych zastosowań. System operacyjny DOS może zapisywać i
odczytywać dane w obrębie całego megabajta, jednak programy mogą być ładowane
jedynie do obszaru pamięci podstawowej, która w pierwszym komputerze PC
wynosiła 512 kB. Pozostałe 512 kB zostało zarezerwowane do innych zastosowań,
m.in. na potrzeby płyty głównej i kart rozszerzających.
Po premierze komputera PC firma IBM zdecydowała, że na te cele
wystarczy tylko 384 kB i zaczęła sprzedawać komputer z 640 kB pamięci
operacyjnej. W ten sposób ustalił się standard obszaru pamięci o rozmiarze 640
kB, który może być wykorzystywany przez aplikacje systemu DOS. Po pewnym czasie
dla wielu użytkowników stało się to ograniczeniem (ang. 640K barrier).
Pozostałe 384 kB przestrzeni powyżej 640 kB zostało zarezerwowane na potrzeby
karty graficznej, kart rozszerzających i pamięci ROM BIOS płyty
głównej.

Pamięć górna (ang. Upper Memory Area, UMA)


Pamięć UMA jest zarezerwowanym obszarem pamięci o rozmiarze 384
kB, umieszczonym w górnej części pierwszego megabajta przestrzeni adresowej
komputera PC/XT i PC/AT.



Rysunek
7.14.
Obszar dwóch pierwszych megabajtów przestrzeni
adresowej komputera PC




. = pamięć dostępna dla programów (RAM)
G = pamięć karty graficznej
tryb wysokiej rozdzielczości
M = pamięć karty graficznej
kolorowy tryb tekstowy
C = pamięć karty graficznej
monochromatyczny tryb tekstowy
V = pamięć ROM BIOS karty graficznej (w komputerze PS/2 oznaczona "a")
a = pamięć ROM kart rozszerzających oraz pamięć RAM zarezerwowana do
specjalnych zastosowań (wolne fragmenty w obszarze UMA)
r = dodatkowa pamięć ROM BIOS płyty głównej komputera PS/2 (w
komputerach innych niż PS/2 wolne fragmenty w pamięci UMA)
R = pamięć ROM BIOS płyty głównej komputera
b = w komputerach IBM pamięć ROM zawierająca interpreter języka BASIC
(w komputerach kompatybilnych z IBM oznaczona "R")
h = obszar pamięci wysokiej (HMA), pod warunkiem, że załadowany jest
sterownik HIMEM.SYS

Obszar pamięci podstawowej:

:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



000000:................................................................
010000:................................................................
020000:................................................................
030000:................................................................
040000:................................................................
050000:................................................................
060000:................................................................
070000:................................................................
080000:................................................................
090000:................................................................

Obszar pamięci górnej (UMA):

:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0A0000:GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
0B0000:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0C0000:VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
0D0000:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0E0000:rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
0F0000:RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR

Obszar pamięci powyżej pierwszego megabajta (pamięć HMA):

:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



100000:hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

Pozostała część obszaru powyżej pierwszego megabajta (pamięć XMS)

:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



110000:................................................................
120000:................................................................
130000:................................................................
140000:................................................................
150000:................................................................
160000:................................................................
170000:................................................................
180000:................................................................
190000:................................................................
1A0000:................................................................
1B0000:................................................................
1C0000:................................................................
1D0000:................................................................
1E0000:................................................................
1F0000:................................................................




Obszar pamięci UMA rozciąga się od adresu A0000 do FFFFF. 384
kB pamięci górnej dzieli się na trzy bloki:

Pierwsze 128 kB za obszarem pamięci podstawowej to obszar pamięci
obrazu (ang. Video RAM), zarezerwowanej na potrzeby karty graficznej.
Zawartość tego obszaru pamięci bierze udział w wyświetlaniu na ekranie
monitora grafiki czy tekstu. Pamięć obrazu zajmuje obszar A0000-BFFFF.

Kolejne 128 kB zostało zarezerwowane na potrzeby pamięci ROM BIOS
niektórych kart rozszerzających. Pierwsze 32 kB tego obszaru są wykorzystywane
przez większość kart graficznych VGA na potrzeby pamięci ROM BIOS tych kart.
Pozostała część może być wykorzystywana przez inne karty rozszerzające. Obszar
ten jest również wykorzystywany przez wiele kart sieciowych jako tzw. pamięć
współdzielona (ang. Shared Memory). Pamięć ROM i pamięć RAM kart
rozszerzających zajmują obszar adresowy C0000-DFFFF.

Ostatnie 128 kB zarezerwowano dla potrzeb ROM BIOS płyty głównej
komputera. (BIOS jest zbiorem podstawowych procedur wejścia/wyjścia,
przechowywanych w pamięci RAM tylko do odczytu albo w pamięci ROM). W obszarze
tym umieszczono również procedury testujące POST (Power-On Self Test) oraz
program odpowiedzialny za inicjowanie komputera aż do momentu przejęcia
kontroli nad komputerem przez procedury ładujące system operacyjny (ang.
bootstrap loader). W większości komputerów wykorzystywane są jedynie górne 64
kB tego obszaru, dzięki czemu do dyspozycji zostają pozostałe 64 kB (lub
więcej), pod warunkiem, że skorzystamy z programu zarządzającego pamięcią. W
niektórych komputerach w obszarze tym znajduje się również program
konfiguracyjny (CMOS SETUP) komputera. ROM BIOS zajmuje obszar E0000-FFFFF.

Nie we wszystkich komputerach AT całe 384 kB pamięci górnej są
zawsze wykorzystywane. Zgodnie z założeniem przyjętym przez firmę IBM, obszar
przeznaczony na pamięć obrazu zaczyna się od adresu A0000, który jest górną
granicą obszaru 640 kB pamięci podstawowej. Zazwyczaj pamięć od adresu A0000
jest wykorzystywana w trybie wysokiej rozdzielczości karty graficznych VGA,
podczas gdy w trybie monochromatycznym i kolorowym trybie tekstowym
wykorzystywane są odpowiednio obszary B0000-B7FFF i B8000-BFFFF. Starsze karty
graficzne, inne niż VGA, wykorzystują tylko pamięć z segmentu B0000. Karty
graficzne wykorzystują różne obszary pamięci w zależności od trybu, w jakim
pracują. Jednak bez względu na to, ile pamięci RAM znajduje się na karcie
graficznej, procesor traktuje całe 128 kB jak jeden obszar. Osiągnięto to dzięki
przełączaniu boków pamięci karty graficznej, tak aby w razie potrzeby stawały
się widoczne dla procesora w segmencie A0000-BFFFF.
384 kB pamięci w górnej części pierwszego megabajta miało być w
założeniach obszarem pamięci zarezerwowanej (ang. reserved
memory). Możliwe jest jednak wykorzystanie nieużywanych fragmentów pamięci
do ładowania sterowników urządzeń (ang. device drivers), np. ANSI.SYS, czy
programów rezydentnych, np. MOUSE.COM. Dzięki temu zwolniona zostaje pamięć
podstawowa, którą normalnie zajmowałyby te programy. Obszary wolnej pamięci UMA
różnią się lokalizacją i rozmiarem, w zależności od rodzajów kart
rozszerzających w obecnych komputerze. Np. większość kart adapterów SCSI oraz
kart sieciowych wymaga części tego obszaru na potrzeby modułów pamięci ROM czy
RAM znajdujących się na tych kartach.

Adresacja segment: przesunięcie i adresacja liniowa


Dla niektórych użytkowników mylące bywa rozróżnienie pomiędzy
adresem segmentu a adresem liniowym. Adresowanie pamięci z wykorzystaniem
numerów segmentów wynika z wewnętrznej struktury mikroprocesorów Intel i jest
wykorzystywane głównie w starszych, 16-bitowych systemach operacyjnych. W
adresacji takiej w osobnym rejestrze procesora jest pamiętany adres segmentu
pamięci, a w innym rejestrze tzw. offset, czyli przesunięcie komórki pamięci
liczone względem początku segmentu. Koncepcja ta jest bardzo prosta. Można ją
zilustrować przykładem "hotelowym": załóżmy, że zatrzymaliśmy się w hotelu i
ktoś poprosił nas o podanie numeru naszego pokoju. Hotel ma 10 pięter,
numerowanych od zera do dziewięć, a na każdym piętrze znajduje się 100 pokoi,
numerowanych od 0 do 99. Za segment przyjmijmy dowolną grupę 100 pokoi
o numerach zaczynających się od wielokrotności dziesiątki, numer segmentu
jest liczbą dwucyfrową. Początek segmentu o numerze 54 wskazywałby na pokój nr
540, a przesunięcie od 00 do 99 oznaczałoby jeden ze 100 pokoi w segmencie.
W naszym hotelowym przykładzie każdy segment byłby więc liczbą
dwucyfrową z zakresu od 00 do 99, a w ramach każdego segmentu offset byłby
również liczbą z zakresu od 00 do 99.
Przyjmijmy, że jesteśmy w pokoju 541. Jeżeli ktoś nas teraz
poprosi o podanie numeru pokoju w formacie segment:przesunięcie, a segment i
offset (przesunięcie) są liczbami dwucyfrowymi, to moglibyśmy odpowiedzieć, że
jesteśmy w segmencie 54 (pokój 540), a przesunięcie względem początku
segmentu wynosi 1. Moglibyśmy też powiedzieć, że nasz segment ma numer 50 (pokój
500), a przesunięcie jest równe 41. Możliwe byłyby i inne odpowiedzi, np.
segment 45 (pokój 450) i przesunięcie 91 (450 + 91 = 541). Możliwości te
ilustruje tabelka:





Segment
przesunięcie
wynik

54
01
541

50
41
541

45
91
541


Widać, że pomimo różnych numerów segmentu i przesunięcia, w
wyniku otrzymujemy zawsze taki sam numer pokoju. W podobny sposób jest obliczany
adres komórki pamięci w procesorach Intel x86. Taki schemat adresacji wprowadza
czasami w błąd, szczególnie gdy piszemy programy w języku assemblera.
W taki właśnie sposób działa mechanizm segmentacji pamięci w
procesorach Intel. Zauważmy, że numery segmentu i przesunięcia pokrywają się ze
sobą na wszystkich cyfrach za wyjątkiem cyfry pierwszej i ostatniej. Jeżeli
dodając je do siebie uwzględnimy to przesunięcie, otrzymamy w wyniku pełny adres
liniowy.
W przypadku 32-bitowych systemów operacyjnych nie musimy już
zaprzątać sobie głowy segmentacją. Adres liniowy jest tworzony bez ograniczeń
typu segment:przesunięcie, podobnie jak np. pokój nr 541. Adres taki jest liczbą
i nie jest obliczany na podstawie dwóch oddzielnych wartości. Na przykład karta
adaptera SCSI może być wyposażona w pamięć ROM widoczną w obszarze D4000

D7FFF. Liczby te podane w formacie segment:przesunięcie to odpowiednio D400:0000
i D700:0000. Część adresu odpowiadająca numerowi segmentu jest złożona z
czterech najbardziej znaczących cyfr adresu liniowego, a część odpowiadająca
przesunięciu to cztery najmniej znaczące cyfry adresu liniowego. Segment i
przesunięcie nie zachodzą na siebie tylko na swoich skrajnych cyfrach, dlatego
końcowy adres bloku pamięci ROM mógłby być zapisany na jeden z czterech
możliwych sposobów:

D000:7FFF = D000 segment
+7FFF przesunięcie
---------
D7FFF

D700:0FFF = D700 segment
+0FFF przesunięcie
---------
D7FFF

D7F0:00FF = D7F0 segment
+00FF przesunięcie
---------
D7FFF

D7FF:000F = D7FF segment
+000F przesunięcie
---------
D7FFF



Widać więc, że pomimo różnych wartości segmentu i przesunięcia,
wszystkie one dają w rezultacie ten sam wynik. Możliwe są jeszcze inne
kombinacje segment:przesunięcie, które dadzą w wyniku
D7FF:

D500:2FFF = D500 segment
+2FFF przesunięcie
---------
D7FFF

D6EE:111F = D6EE segment
+111F przesunięcie
---------
D7FFF



Widzimy, że możliwe są różne kombinacje. Poprawną i ogólnie
przyjętą formą zapisu adresu w postaci liniowej jest D7FFF, natomiast większość
osób zapisałaby go w postaci D000:7FFF. Zapisanie czterech mniej znaczących
pozycji segmentu zerami sprawia, że zapis segment:przesunięcie staje się
bardziej przejrzysty, a wynik łatwiejszy do obliczenia. Jeżeli poprawnie
rozumiemy ideę zapisu segment:przesunięcie, to jest już jasne, dlaczego
pięciocyfrowemu adresowi liniowemu odpowiadają czterocyfrowe adresy segmentu i
przesunięcia.
Istotną cechą nowszych 32-bitowych systemów operacyjnych jest
możliwość mapowania obszaru pamięci RAM karty rozszerzającej w przestrzeni
adresowej komputera z wykorzystaniem adresowania liniowego. Nie występuje tu
ograniczenie rozmiaru bloku pamięci do 64 kB, jakie istnieje w przypadku pamięci
UMA.

Pamięć obrazu (ang. Video RAM memory)


Karta graficzna zainstalowana w komputerze wykorzystuje część
pamięci operacyjnej do przechowywania informacji o obrazie wysokiej
rozdzielczości lub tekstowym. Niektóre karty graficzne, np. VGA, są wyposażone w
pamięć ROM BIOS, widoczną w obszarze przeznaczonym specjalnie do tego celu.
Generalnie, im większa jest rozdzielczość obrazu i liczba dostępnych kolorów,
tym więcej karta graficzna wykorzystuje pamięci. Istotne jest to, że większość
kart VGA i SVGA jest wyposażona we własną pamięć RAM, która przechowuje
informację o obrazie wyświetlanym w danej chwili na ekranie. Pamięć ta
przyśpiesza również operacje odświeżania ekranu.
W przypadku standardowej konfiguracji przestrzeni adresowej
komputera, 128 kB pamięci jest zarezerwowane na potrzeby kart graficznych do
przechowywania informacji o obrazie wyświetlanym na ekranie. Blok ten znajduje
się w segmentach A000 i B000. Pamięć ROM karty graficznej wykorzystuje dodatkowy
obszar pamięci UMA w segmencie C000.
Umieszczenie pamięci obrazu w obszarze bloku A000 spowodowało
powstanie ograniczenia pamięci podstawowej dostępnej dla systemu DOS do 640 kB.
DOS może korzystać z dostępnej pamięci w obrębie pierwszego megabajta, aż do
początku obszaru pamięci obrazu. Korzystanie z kart graficznych MDA czy CGA
umożliwia dostęp systemu DOS do większego obszaru niż 640 kB. W przypadku kart
VGA, EGA i MCGA górną granicą jest adres A0000, natomiast karty MDA czy CGA
zadowalają się mniejszym obszarem, dzięki czemu zwolniona pamięć może być
wykorzystywana przez system DOS i aplikacje. Na zamieszczonych rysunkach widać,
że w przypadku karty MDA, DOS ma do dyspozycji dodatkowe 64 kB pamięci (cały
segment A000), w rezultacie czego aplikacje systemu DOS mają do dyspozycji 740
kB. Również karta CGA pozostawia do dyspozycji systemu DOS ciągły obszar pamięci
RAM o rozmiarze 736 kB. Karty EGA, VGA czy MCGA ograniczają obszar pamięci
systemu DOS do 640 kB, ponieważ adresy powyżej tego obszaru są wykorzystywane
jako pamięć obrazu. Z powyższych względów maksymalna pamięć dostępna dla
programów systemu DOS zależy od zainstalowanej w komputerze karty
graficznej. Tabela 7.12 pokazuje, jak maksymalny obszar pamięci dla systemu DOS
zależy od karty graficznej komputera.

Tabela 7.12. Ograniczenie pamięci RAM dostępnej dla systemu DOS w zależności od
stosowanej karty graficznej



Typ karty
graficznej
Maksymalna
ilość pamięci dostępnej w sysemie DOS

MDA (Monochrome Display Adapter)
704 kB

CGA (Color Graphics Adapter)
736 kB

EGA (Enhanced Graphics Adapter)
640 kB

VGA (Video Graphics Adapter)
640 kB

SVGA (Super VGA)
640 kB

XGA (eXtended Graphics Array)
640
kB


Korzystanie z pamięci powiększonej do rozmiaru 736 kB jest
możliwe, zależy jednak od typu karty graficznej, kart rozszerzających pamięć,
zawartości pamięci ROM płyty głównej oraz typu komputera. Korzystanie z części
tej pamięci jest możliwe w komputerze z procesorem 386 lub lepszym. Za
pomocą programu menadżera pamięci, np. EMM386 dostarczanego z systemem DOS,
pracującego w trybie 386+ MMU, możliwe jest takie skonfigurowanie części pamięci
powyżej pierwszego megabajta, aby była ona widoczna w dodatkowym obszarze
powyżej 640 kB.
Kolejne podrozdziały opisują wykorzystanie przestrzeni
adresowej przez karty graficzne. Na rysunkach przedstawiono obszary pamięci
wykorzystywane przez karty monochromatyczne, karty EGA, VGA oraz karty IBM PS/2.
Informacje te mogą być dość istotne, ponieważ może się okazać, że niektóre
obszary pamięci są niewykorzystane, a w wolne miejsce można ładować programy

sterowniki.

Obszar adresowy zajmowany przez monochromatyczną kartę MDA (Monochrome
Display Adapter)


Rysunek 7.15 przedstawia obszary pamięci wykorzystywane przez
oryginalną kartę MDA. Karta ta korzysta tylko z 4 kB zarezerwowanej pamięci RAM
w obszarze B0000-B0FFF. Nie jest przy tym zajmowana żadna przestrzeń w segmencie
C000, ponieważ zawartość pamięci ROM karty znajduje się w rzeczywistości w
pamięci ROM płyty głównej.



Rysunek
7.15.
Mapa pamięci karty MDA




. = wolne obszary
M = pamięć RAM oryginalnej karty MDA
m = dodatkowa pamięć wykorzystywana w monochromatycznym trybie
tekstowym VGA

:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0A0000:GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
0B0000:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM



Zauważmy, że chociaż oryginalna karta MDA wykorzystywała tylko
4 kB pamięci od adresu B0000, karta VGA pracująca w trybie emulującym tryb
monochromatyczny (Mono Text Mode) wykorzystuje ponadto dodatkowe 32 kB.
Rzeczywista karta MDA nie posiada pamięci ROM BIOS, zamiast tego jest
obsługiwana przez sterowniki znajdujące się w pamięci ROM BIOS płyty
głównej.

Obszar adresowy zajmowany przez kartę CGA (Color Graphics
Adapter)


Rysunek 7.16 przedstawia obszary pamięci wykorzystywane przez
kartę CGA. Karta ta zajmuje 16 kB obszaru zarezerwowanej pamięci RAM pomiędzy
adresami B8000 i BBFFF. Nie jest przy tym zajmowana żadna przestrzeń w
segmencie C000, ponieważ zawartość pamięci ROM karty znajduje się w
rzeczywistości w pamięci ROM płyty głównej.
Karta CGA zwalnia obszar A0000-B7FFF, który może być następnie
wykorzystany przez programy zarządzające pamięcią jako dodatkowa pamięć dla
systemu DOS. Wyklucza to jednak korzystanie z programów pracujących w trybie
graficznym, np. Windows.



Rysunek
7.16.
Mapa pamięci karty CGA




. = wolne obszary
M = pamięć RAM wykorzystywana przez oryginalną kartę CGA
m = dodatkowa pamięć wykorzystywana w kolorowym trybie tekstowym VGA

:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0A0000:................................................................
0B0000:................................CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC



Oryginalna karta CGA wymagała jedynie 16 kB obszaru od adresu
B8000, podczas gdy karta VGA pracująca w trybie emulacji karty CGA (kolorowy
tryb tekstowy) może potrzebować 32 kB pamięci od adresu B8000. Oryginalna karta
CGA nie jest wyposażona w pamięć ROM BIOS, zamiast tego jest obsługiwana przez
sterowniki programowe rezydujące w pamięci ROM BIOS płyty
głównej.
Obszar adresowy zajmowany przez kartę EGA (Enhanced Graphics
Adapter)


Rysunek 7.17 przedstawia obszary pamięci wykorzystywane przez
kartę EGA. Karta ta wykorzystuje całe 128 kB pamięci RAM od adresu A0000 do
BFFFF. Pamięć ROM z procedurami odpowiedzialnymi za obsługę karty jest
częścią karty i zajmuje 16 kB przestrzeni adresowej pomiędzy adresami C0000 i
C3FFF.



Rysunek
7.17.
Mapa pamięci karty EGA




. = wolne obszary
G = pamięć RAM wykorzystywana przez kartę w trybie wysokiej
rozdzielczości
M = pamięć RAM wykorzystywana w monochromatycznym trybie tekstowym
C = pamięć RAM wykorzystywana w kolorowym trybie tekstowym
V = ROM BIOS karty EGA
R = ROM BIOS płyty głównej
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0A0000:GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
0B0000:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0C0000:VVVVVVVVVVVVVVVV................................................
0D0000:................................................................
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0E0000:................................................................
0F0000:RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR



Oryginalna karta IBM EGA wykorzystuje tylko 16 kB przestrzeni
adresowej od adresu C0000 na potrzeby swojej pamięci ROM. Modele kart
kompatybilnych mogą wymagać dla swoich pamięci ROM obszaru 32 kB. Interesujące w
przypadku kart EGA (odnosi się to także do kart VGA) jest to, że segmenty
pamięci od adresów A0000 i B0000 nie są wykorzystywane jednocześnie. Np. kiedy
włączony jest tryb wysokiej rozdzielczości, wykorzystywany jest tylko obszar
A0000, podczas gdy pod obszar B000 nie jest mapowana (podłączona) żadna pamięć.
Kiedy programowo przełączymy kartę w kolorowy tryb tekstowy, to natychmiast
zwolni się segment A0000, a pojawi się pamięć drugiej połowy segmentu B0000.
Pamięć RAM monochromatycznego trybu tekstowego we współczesnych komputerach nie
jest właściwie nigdy wykorzystywana, ponieważ bardzo mało programów wymaga
przełączenia karty w ten tryb. Na rysunku 7.17 przedstawiono także obszar
zajmowany standardowo przez ROM BIOS płyty głównej komputera, dzięki czemu
uzyskujemy mapę całego obszaru pamięci UMA.
Karta EGA zyskała pewną popularność, jednak szybko zeszła w
cień karty VGA, która pojawiła się wkrótce po niej. Większość danych
technicznych karty EGA dotyczących zajmowanych obszarów przestrzeni adresowej
odnosi się również do karty VGA, ponieważ jest ona kompatybilna "wstecz" z kartą
EGA.
Obszar adresowy zajmowany przez kartę VGA (Video Graphics
Adapter)


Wszystkie karty kompatybilne z VGA, również karty SVGA (Super
VGA), nie różnią się prawie wcale od karty VGA pod względem zajmowanych obszarów
pamięci. Podobnie jak w przypadku karty EGA, karty te zajmują 128 kB pamięci RAM
jako pamięć obrazu w obszarze A0000-BFFFF, jednak nie całą pamięć naraz.
Podobnie jak poprzednio, pamięć obrazu jest podzielona na trzy różne obszary,
każdy z nich jest wykorzystywany tylko wtedy, kiedy karta pracuje w
odpowiadającym mu trybie. Jedyną różnicą jest to, że właściwie wszystkie karty
VGA wykorzystują w pełni przydzielone im 32 kB obszaru adresowego na potrzeby
swoich pamięci ROM (obszar C0000-C7FFF). Rysunek 7.18 przedstawia mapę pamięci
kart VGA i SVGA.



Rysunek
7.18.
Mapa pamięci karty VGA




. = wolne obszary
G = pamięć RAM wykorzystywana przez kartę w trybie wysokiej
rozdzielczości
M = pamięć RAM wykorzystywana w monochromatycznym trybie tekstowym
C = pamięć RAM wykorzystywana w kolorowym trybie tekstowym
V = ROM BIOS karty VGA
R = ROM BIOS płyty głównej

:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0A0000:GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
0B0000:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F

-
0C0000:VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV................................
0D0000:................................................................
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0E0000:................................................................
0F0000:RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR



Widać, że typowa karta VGA wykorzystuje całe 32 kB obszaru na
potrzeby swojej pamięci ROM, zawierającej programowe sterowniki karty. Niektóre
karty VGA mogą zajmować nieco mniejszy obszar, jednak należy to do rzadkości.
Podobnie jak w przypadku karty EGA, obszar pamięci RAM obrazu uaktywnia się
jedynie wówczas, gdy karta jest w odpowiednim trybie pracy. Karta VGA pracująca
w trybie wysokiej rozdzielczości wykorzystuje tylko segment A0000, a w kolorowym
trybie tekstowym tylko drugą połowę segmentu B0000. Karta VGA prawie nigdy nie
pracuje w monochromatycznym trybie tekstowym, dlatego pierwsza połowa segmentu
B0000 pozostaje niewykorzystana (B0000-B7FFF). Na rysunku 7.18 widać także
obszar zajmowany standardowo przez ROM BIOS płyty głównej, dzięki czemu
uzyskujemy mapę całego obszaru pamięci UMA.
Komputery z płytą główną w formacie LPX (Low Profile),
zamknięte w obudowie typu LPX lub Slimline, mają kartę graficzną wbudowaną w
płytę główną. Pomimo że BIOS karty graficznej i BIOS płyty głównej mogą w tych
komputerach pochodzić od tego samego producenta, podzespół karty graficznej
zawsze emuluje standardową kartę VGA. BIOS karty graficznej jest widoczny w
pierwszej połówce (32 kB) segmentu C0000, tak jakby był to BIOS osobnej karty
VGA włożonej w gniazdo rozszerzające. Wbudowana w płytę główną karta graficzna
może być łatwo wyłączona za pomocą przełącznika lub zworki, co umożliwia
korzystanie z osobnej karty VGA, którą wkłada się do gniazda rozszerzającego.
Odłączenie wewnętrznej karty graficznej, odpowiadającej jednak funkcjonalnie
normalnej karcie VGA, umożliwia używanie osobnej karty, co rozwiązuje problem
ewentualnego braku kompatybilności w przypadku gdy sterowniki karty są częścią
ROM BIOS płyty głównej.
Niektórzy użytkownicy, obecni na rynku komputerowym w roku
1987, pamiętają może, jak wiele czasu zajęło producentom klonów kart graficznych
dokładne skopiowanie karty VGA firmy IBM. Musiały minąć niemal dwa lata (prawie
do roku 1989), zanim stały się dostępne karty VGA niezależnych producentów,
które pracowały poprawnie i bez żadnych problemów z każdym oprogramowaniem
współpracującym z kartą IBM VGA. Niektórzy moi wspólnicy, którzy kupili jedne z
pierwszych modeli tych kart, niechcąco stali się członkami klubu określanego
złośliwie jako "ROM tygodnia". W trakcie ich eksploatacji stale pojawiały się
różne kłopoty; wiele układów ROM tych kart, dostarczonych już jako nowsze
wersje, zostało odesłanych do producenta, bo pojawiły się nowe problemy. Nie
miałem ochoty płacić za przywilej testowania modeli beta kart, które według
zapewnień producentów miały coraz bardziej zbliżać się do VGA, poszedłem więc po
linii najmniejszego oporu i za 596$ stałem się posiadaczem karty IBM VGA (PS/2
Display Adapter). Kwota, którą wówczas zapłaciłem, odpowiada w przybliżeniu
cenie najlepszych dostępnych dziś na rynku kart AGP.
Karta ta sprawowała się bardzo dobrze i nigdy nie miałem
problemów ze współpracą z oprogramowaniem. Po pewnym czasie doświadczyłem
jednak dość zaskakujących problemów z pamięcią wykorzystywaną przez kartę. Było
to moje pierwsze zetknięcie się z tym, co nazwałem pamięcią notatnikową
(ang. scratch pad memory) karty. Odkryłem, że różne rodzaje kart
rozszerzających mogą wykorzystywać niektóre obszary w pamięci UMA jako pamięć
notatnikową do swoich potrzeb. W obszarze tym jest widoczna pamięć RAM obecna na
karcie, która przechowuje status karty, dane konfiguracyjne i pozostałe
informacje o zmiennym charakterze. Większość kart rozszerzających ma taką pamięć
do swoich celów, lecz nie umieszcza jej w przestrzeni adresowej procesora.
Niektóre jednak karty "mapują" swoją pamięć podręczną w przestrzeni adresowej
procesora, aby informacje z niej mogły być wykorzystywane przez sterowniki
programowe. Na rysunku 7.19 przedstawiona jest mapa pamięci karty graficznej
komputera IBM PS/2 (karta IBM VGA).
W zakresie zajmowanego obszaru pamięci obrazu nie ma różnicy
pomiędzy moją kartą a dowolną inną kartą VGA. Jedyną różnicą jest pamięć ROM,
która przechowuje procedury obsługi karty, zajmuje ona 24 kB przestrzeni
adresowej w obszarze C0000-C5FFF. Nietypowa jest również 2-kilobajtowa "dziura"
od adresu C6000 oraz obszar 6 kB pamięci notatnikowej od adresu C68000, a także
dodatkowe 2 kB pamięci notatnikowej od adresu CA000. Zwłaszcza te ostatnie 2 kB
pamięci sprawiły mi pewną niespodziankę, gdy zainstalowałem w komputerze kartę
adaptera SCSI wyposażoną w 16 kB pamięci ROM BIOS o domyślnym adresie startowym
C8000. Natychmiast wystąpił konflikt, który kompletnie sparaliżował pracę całego
komputera. Nie można było wystartować systemu, na monitorze nic nie było widać,
a z głośnika słychać było tylko dĄwięki sygnalizujące błąd karty graficznej. W
pierwszej chwili pomyślałem, że niechybnie spaliłem kartę graficzną, jednak po
wyjęciu adaptera SCSI wszystko działało normalnie.




Rysunek 7.19.
Mapa pamięci karty IBM VGA (ISA,
PS/2 Display Adapter)




. = wolne obszary
G = pamięć RAM wykorzystywana przez kartę VGA w trybie wysokiej
rozdzielczości
M = pamięć RAM wykorzystywana w monochromatycznym trybie tekstowym
C = pamięć RAM wykorzystywana w kolorowym trybie tekstowym
V = ROM BIOS karty IBM VGA
v = pamięć notatnikowa karty IBM VGA
R = ROM BIOS płyty głównej

:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0A0000:GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
0B0000:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0C0000:VVVVVVVVVVVVVVVVVVVVVVVV..vvvvvv........vv......................
0D0000:................................................................
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0E0000:................................................................
0F0000:RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR



Sprawdziłem również działanie komputera z adapterem SCSI i
starszym modelem karty CGA, doszedłem więc do wniosku, że na pewno zaistniał
konflikt. W dokumentacji technicznej karty nie było jednak jasnych informacji na
temat pamięci notatnikowej, musiałem do tego dojść sam metodą prób i błędów.
Jeżeli w komputerze z kartą graficzną IBM VGA pojawią się konflikty współpracy z
innymi kartami, to teraz już wiadomo, co jest przyczyną.
Oczywiście, nie można było w żaden sposób przesunąć
2-kilobajtowego "kawałka" pamięci notatnikowej. Musiałem jednak jakoś sobie
radzić z tym problemem, dopóki miałem w komputerze kartę IBM VGA. Problem z
adapterem SCSI rozwiązałem przesuwając obszar zajmowany przez BIOS karty SCSI
pod inny adres.




Spotkałem również
inne typy kart VGA z pamięcią notatnikową, jednak we wszystkich tych
kartach pamięć ta była ulokowana w 32-kilobajtowym obszarze C0000-C7FFF,
który normalnie jest przydzielony dla pamięci ROM BIOS płyty głównej. Na
komputerze, którego BIOS zajmował 24 kB, mogłem zaobserwować, jak inne
karty wykorzystują pozostałe 8 kB na swoją pamięć notatnikową, jednak w
żadnej z tych kart
oprócz karty IBM VGA
obszar pamięci podręcznej nie
wychodził poza adres C8000.
Pamięć ROM i specjalna pamięć RAM kart rozszerzających


Drugi 128-kilobajtowy blok pamięci górnej (UMA), począwszy od
adresu C0000, zarezerwowano na potrzeby programów lub procedur BIOS (Basic Input
Output System) zaszytych w pamięci kart rozszerzających. Procedury te są
pamiętane w specjalnych układach pamięci "tylko do odczytu" (ang. read-only
memory, ROM). Informacja w pamięci ROM jest pamiętana dzięki trwałym
przepaleniom struktury pamięci, a jej zawartość nie może być zmieniana przez
komputer. Pamięć ROM nadaje się do przechowywania programów, których kod nie
ulega zmianie w czasie pracy komputera, a które zawsze muszą być obecne w
pamięci. Przykładowe karty, które mogą mieć pamięć ROM, to karty graficzne,
kontrolery dysków twardych, urządzenia komunikacyjne czy karty rozszerzające
pamięć komputera.
W komputerach z procesorem 386 (lub lepszym)
programy-sterowniki urządzeń albo programy rezydentne dzięki zastosowaniu tzw.
menadżerów pamięci
np. MS DOS 6.0 MEMMAKER, IBM DOS RAMBOOST czy innych
producentów, np. QMM firmy Quarterdeck
mogą być ładowane w wolne obszary
pamięci UMA. Aby zmienić obszar pamięci RAM przyznany karcie rozszerzającej,
trzeba najpierw zajrzeć do dokumentacji karty. W większości starszych kart
zmiana obszaru adresowego karty polega na przestawieniu niektórych przełączników
czy zworek. Ich znaczenie bez pomocy instrukcji może nie być całkiem oczywiste.
Większość nowych kart, zwłaszcza kart Plug-and-Play, pozwala na programową
zmianę ich ustawień. Odpowiednie programy są dostarczane wraz z kartą albo są to
programy typu Menadżer konfiguracji (Configuration Manager) spotykane w nowszych
systemach operacyjnych, takich jak Windows 95 czy OS/2.

Pamięć ROM BIOS karty graficznej


BIOS karty graficznej zapewnia komunikację pomiędzy układem
kontrolera karty (ang. video chipset) a pamięcią obrazu (video RAM). Na potrzeby
BIOS-u karty graficznej zarezerwowano całe 128 kB pamięci UMA od adresu C000,
jednak popularne karty graficzne w komputerach PC nie wykorzystują całej tej
przestrzeni adresowej. W tabeli 7.13 zebrano dane o zajętości przestrzeni
adresowej przez BIOS popularnych typów kart graficznych.

Tabela 7.13. Obszar pamięci wykorzystywanej w różnych typach kart
graficznych



Typ
karty
Pamięć używana
przez BIOS karty

MDA (Monochrome Display Adapter)
Brak
sterowniki karty w BIOS-ie płyty
głównej

CGA (Color Graphics Adapter)
Brak
sterowniki karty w BIOS-ie płyty
głównej

EGA (Enhanced Graphics Adapter)
16 kB pamięci ROM karty (C0000
C3FFF)

VGA (Video Graphics Adapter)
32 kB pamięci ROM karty
(C0000
C7FFF)

SVGA (Super VGA)
32 kB pamięci ROM karty
(C0000
C7FFF)


Niektóre spośród bardziej zaawansowanych kart graficznych z
tzw. akceleracją wykorzystują większość lub nawet cały obszar 128 kB pamięci
górnej od adresu C000, co pozwala na przyśpieszenie operacji odmalowania obrazu
w systemach operacyjnych Windows, OS/2 i innych systemach wykorzystujących
graficzny interfejs użytkownika (ang. Graphical User Interface
GUI). Karty te
mogą dodatkowo zawierać 4 MB lub więcej własnej pamięci RAM. Dane o aktualnie
wyświetlanym obrazie mogą być dzięki temu szybko pobierane bez udziału
procesora.

BIOS kontrolerów twardego dysku i adapterów SCSI


Adresy w pamięci UMA w obszarze C0000
DFFFF są także
wykorzystywane przez BIOS wielu kart-kontrolerów dysków twardych. Tabela 7.14
przedstawia szczegółowo obszar pamięci i adresy wykorzystywane często przez BIOS
tych kart.
Karty kontrolerów dysku twardego czy adaptera SCSI w
indywidualnych przypadkach mogą wykorzystywać inne niż podane obszary
przestrzeni adresowej, jednak najczęściej wykorzystują one segment od adresu
C800, ponieważ adres ten jest określony w standardzie komputera IBM
PC.

Tabela 7.14. Obszary przestrzeni adresowej wykorzystywane przez różne typy
kart-kontrolerów dysków twardych



Typ
karty
Rozmiar pamięci
ROM BIOS karty
Zakres adresów
wykorzystywanych przez BIOS

IBM XT 10 M Controller
8 kB
C8000
C9FFF

IBM XT 20M Controller
4 kB
C8000
C9FFF

Większość kontrolerów w komputerach
XT
8 kB
C8000
C9FFF

Większość kontrolerów w komputerach
AT
Brak
Sterowniki karty zawiera BIOS płyty
głównej

Większość adapterów IDE
Brak
Sterowniki karty zawiera BIOS płyty
głównej

Większość kontrolerów ESDI
16 kB
C8000
CBFFF

Większość adapterów SCSI
16 kB
C8000
CBFFF



Właściwie wszystkie obecnie spotykane kontrolery dyskowe czy
adaptery SCSI, wyposażone we własny BIOS, umożliwiają łatwą zmianę adresu
startowego BIOS-u w segmentach C000 i D000. Lokalizacje wymienione w tabeli 7.14
są adresami domyślnymi, wykorzystywanymi przez większość kart. Jeżeli jednak
adres jest używany przez inną kartę, to w dokumentacji nowej karty należy
sprawdzić, jak można zmienić domyślny adres startowy BIOS-u karty, aby uniknąć
konfliktu.
Rysunek 7.20 przedstawia przykładową mapę pamięci adaptera SCSI
Adaptec AHA-1542CF.



Rysunek 7.20.
Domyślny obszar adresowy adaptera SCSI Adaptec
AHA-1542CF




. = wolne obszary
G = pamięć RAM wykorzystywana przez kartę VGA w trybie wysokiej
rozdzielczości
M = pamięć RAM wykorzystywana w monochromatycznym trybie tekstowym
C = pamięć RAM wykorzystywana w kolorowym trybie tekstowym
V = ROM BIOS karty IBM VGA
S = ROM BIOS karty adaptera SCSI
R = ROM BIOS płyty głównej

:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0A0000:GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
0B0000:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0C0000:VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV................................
0D0000:................................................SSSSSSSSSSSSSSSS
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0E0000:................................................................
0F0000:RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR



Zwróćmy uwagę, jak zostały rozmieszczone obszary adresowe
adaptera SCSI. W pamięci UMA nie ma teraz konfliktów adresowych, jednak powyższy
przydział pamięci dla BIOS-u urządzenia SCSI spowodował fragmentację wolnej
przestrzeni w pamięci UMA. W większości komputerów w segmencie E000 nie jest
umieszczony żaden BIOS, dlatego 64 kB tego obszaru pozostaje wolne. W powyższym
przykładzie nie ma już innych urządzeń zajmujących przestrzeń adresową
procesora, pojawił się natomiast wolny blok pamięci od adresu C8000 do adresu
DBFFF o rozmiarze 80 kB. Za pomocą programu EMM386, dostarczanego wraz z
systemem DOS, możliwe jest udostępnienie tych dwóch wolnych obszarów, dzięki
czemu pamięć ta może być wykorzystana do ładowania sterowników urządzeń i
programów rezydentnych. Niestety, programy ładowane do pamięci komputera nie
mogą być rozbijane pomiędzy większą ilość fragmentów, dlatego rozmiar
największego programu, jaki można załadować do pamięci UMA, wynosi 80 kB
taki
rozmiar ma największy wolny blok w pamięci UMA. Znacznie lepiej byłoby przesunąć
obszar zajmowany przez BIOS urządzenia SCSI, tak aby znalazł się zaraz za
obszarem ROM BIOS karty VGA, ponieważ zwiększyłoby to obszar wolnego bloku w
pamięci UMA do 144 kB. Korzystanie z pojedynczego bloku 144 kB zamiast
z dwóch bloków 80 kB i 64 kB jest rozwiązaniem znacznie prostszym i
bardziej efektywnym.
Na szczęście, w przypadku omawianego urządzenia SCSI jest
możliwa zmiana adresów zajmowanych przez BIOS urządzenia, jednak wymaga to zmian
ustawień kilku przełączników na karcie. Jedną z zalet sterownika Adaptec jest
naklejka z opisem wszystkich ustawień przełączników znajdująca się na karcie
(lub też napisy są na samej karcie). Oznacza to, że nie trzeba sięgać do
dokumentacji karty, której akurat może nie być pod ręką. Opisywanie kart w ten
sposób to praktyka, której stosowania należałoby życzyć innym producentom.
Po przemieszczeniu obszaru ROM BIOS karty SCSI pod adres C8000,
mapa "zoptymalizowanej" pamięci wyglądałaby tak jak na Rysunku
7.21.



Rysunek 7.21.
Obszar adresowy adaptera SCSI Adaptec AHA-1542CF
po optymalizacji




. = wolne obszary
G = pamięć RAM wykorzystywana przez kartę VGA w trybie wysokiej
rozdzielczości
M = pamięć RAM wykorzystywana w monochromatycznym trybie tekstowym
C = pamięć RAM wykorzystywana w kolorowym trybie tekstowym
V = ROM BIOS karty IBM VGA
S = ROM BIOS karty adaptera SCSI
R = ROM BIOS płyty głównej

:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0A0000:GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
0B0000:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0C0000:VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVSSSSSSSSSSSSSSSS................
0D0000:................................................................
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0E0000:................................................................
0F0000:RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR



Zauważmy, że wolny obszar w pamięci UMA jest teraz ciągłym
blokiem o rozmiarze 144 kB. Taka konfiguracja jest znacznie korzystniejsza w
porównaniu z ustawieniami domyślnymi karty.
Warto zwrócić uwagę na to, że większość kart wyprodukowanych po
roku 1996 są to karty Plug and Play. Do skonfigurowania takiej karty nie trzeba
już używać pracochłonnej techniki "zworkowej". Karty te można konfigurować za
pomocą odpowiedniego oprogramowania
w szczególności Menadżera urządzeń w
Panelu sterowania Windows 9X. Przykładem takiego sterownika jest sterownik SCSI
Adaptec AHA-2940U.

Karty sieciowe


Karty sieciowe także korzystają z segmentów w pamięci UMA,
zaczynających się od adresów C000 i D000. Dokładny rozmiar zajmowanej
przestrzeni oraz adres początkowy dla konkretnego modelu karty zależy od typu
karty i jej producenta. Niektóre karty sieciowe w ogóle nie korzystają z zasobów
adresowych komputera. Zapotrzebowanie karty sieciowej na zasoby adresowe ma dwie
przyczyny:

w pamięci ROM karty rezyduje program inicjujący, tzw. IPL ROM (ang.
Initial Program Load or Boot)

karta korzysta ze współdzielonej pamięć RAM (ang. shared memory)
IPL ROM jest układem pamięci ROM, najczęściej o
rozmiarze 8 kB, zawierający program ładujący (ang. bootstrap loader), który
umożliwia wystartowanie komputera z serwera plików (ang. file server) za
pośrednictwem sieci lokalnej. Rozwiązanie to pozwala na usunięcie z komputera
twardego dysku, dzięki czemu otrzymujemy bezdyskową stację roboczą (ang.
diskless workstation). W takim komputerze nie ma żadnego urządzenia dyskowego
(stacji dyskietek, dysku twardego), z którego mógłby zostać załadowany system
operacyjny. Pamięć IPL ROM udostępnia procedury potrzebne na zlokalizowanie na
serwerze plików obrazu systemu operacyjnego i załadowanie go do pamięci
komputera, tak jakby był on ładowany z wewnętrznego napędu dyskowego komputera.
Jeżeli komputer nie jest wykorzystywany do pracy jako bezdyskowa stacja robocza,
to opłaca się wyłączyć pamięć IPL ROM. Pamiętajmy jednak, że większość kart
sieciowych nie pozwala na wyłączenie IPL ROM, oznacza to, że tracimy 8 kB
przestrzeni adresowej, która mogłaby być wykorzystana przez inne urządzenie,
nawet jeżeli układ IPL ROM zostanie wyjęty z gniazda.
Pamięć współdzielona jest niewielkim obszarem pamięci
RAM karty sieciowej, który jest widoczny w przestrzeni adresowej UMA komputera.
Zamapowany fragment pamięci UMA jest wykorzystywany jako okno, przez które
odbywa się komunikacja komputera z siecią i które zapewnia szybki transfer
danych pomiędzy kartą sieciową a komputerem. Pionierem w tej dziedzinie była
firma IBM, która po raz pierwszy zastosowała pamięć współdzieloną w swoich
kartach sieciowych Token Ring. Obecnie pamięć współdzielona jest powszechnie
stosowana również przez innych producentów kart sieciowych. Firma IBM opracowała
koncepcję pamięci współdzielonej, gdy okazało się, że transfery danych za
pośrednictwem kanałów DMA nie były dostatecznie szybkie w większości komputerów.
Powodem wolnych transferów DMA była architektura kontrolera DMA
i magistrali komputera, dotyczyło to zwłaszcza komputerów z 16-bitową
magistralą ISA. Karty sieciowe, które nie korzystają z pamięci współdzielonej,
przesyłają dane za pośrednictwem DMA albo w tzw. transferach programowanych
(ang. Programmed I/O
PIO).
Pamięć współdzielona w komputerach z magistralą ISA jest
szybszym rozwiązaniem niż kanały DMA czy przesyły PIO, wymaga jednak wolnego
16-kilobajtowego bloku w pamięci UMA. Większość standardowych kart
sieciowych wykorzystuje PIO, ponieważ dzięki temu karty te są prostsze w
konfiguracji i nie potrzebują wolnych adresów w pamięci UMA. Natomiast większość
zaawansowanych kart sieciowych korzysta z pamięci współdzielonej. Pamięć
współdzielona w większości kart ma rozmiar 16 kB i może być umieszczona w
segmentach C000 lub D000 pod adresem wybranym przez użytkownika, który jest
wielokrotnością 4 kB.
Rysunek 7.22 przedstawia obszary zajmowane domyślnie przez
pamięć IPL ROM i pamięć współdzieloną karty sieciowej IBM Token Ring, przy
czym ta mapa pamięci wyglądałaby podobnie także w przypadku innych kart
sieciowych, np. Ethernet.



Rysunek 7.22.
Domyślny obszar adresowy karty
sieciowej




. = wolne obszary
G = pamięć RAM wykorzystywana przez kartę VGA w trybie wysokiej
rozdzielczości
M = pamięć RAM wykorzystywana w monochromatycznym trybie tekstowym
C = pamięć RAM wykorzystywana w kolorowym trybie tekstowym
V = ROM BIOS karty IBM VGA
I = pamięć IPL ROM karty sieciowej Token Ring
N = współdzielona pamięć RAM karty sieciowej Token Ring
R = ROM BIOS płyty głównej

:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0A0000:GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
0B0000:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0C0000:VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV................IIIIIIII........
0D0000:................................NNNNNNNNNNNNNNNN................
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0E0000:................................................................
0F0000:RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR



Na rysunku 7.22 pokazano również obszar zajmowany standardowo
przez BIOS karty VGA, ponieważ karta ta znajduje się w prawie każdym komputerze.
Zauważmy, że domyślny przydział adresów na potrzeby pamięci IPL ROM i pamięci
współdzielonej można łatwo zmienić odpowiednio konfigurując kartę sieciową.
Większość pozostałych typów kart sieciowych przypomina pod względem pamięci
współdzielonej i IPL ROM kartę Token Ring, chociaż rozmiary obszarów
przeznaczonych na te cele w innych kartach i domyślne adresy mogą być inne.
Większość kart z pamięcią IPL ROM umożliwia odłączenie samej pamięci albo jej
gniazda, tak że nie będą już potrzebne dodatkowe zasoby adresowe. Pozwala to na
zaoszczędzenie obszaru UMA i zapobiega ewentualnym przyszłym konfliktom, gdy nie
zamierzamy korzystać z pamięci IPL ROM.
Zauważmy, że urządzenie SCSI wpasowane w wolne obszary na
rysunku 7.22 mogłoby być umieszczone pod domyślnym adresem swojego BIOS-u DC000,
jak również pod optymalną lokalizacją C8000. Domyślne usytuowanie obszaru
pamięci współdzielonej karty Token Ring nie jest optymalne i powoduje powstanie
fragmentacji w obszarze UMA. Modyfikując ten obszar moglibyśmy osiągnąć lepszą
konfigurację. Rysunek 7.23 przedstawia optymalną konfigurację komputera z kartą
sieciową Token Ring i kartą SCSI.
Powyższa konfiguracja pozwala na ładowanie sterowników
programowych do pojedynczego, ciągłego bloku pamięci o rozmiarze 120 kB w
obszarze UMA. Zauważmy, że pamięć IPL ROM została przesunięta pod adres D0000 i
jest ostatnim blokiem pamięci przed początkiem obszaru wolnego. Gdy nie
zamierzamy korzystać z pamięci IPL ROM, możemy ją wyłączyć, a obszar wolnej
pamięci zwiększy się do 128 kB i nadal będzie ciągłym blokiem. Jeżeli
pozostawimy ustawienia domyślne karty sieciowej i adaptera SCSI, to nastąpi
fragmentacja obszaru UMA na trzy części: 16 kB, 40 kB i 64 kB. Pamięć ta będzie
nadal dostępna, jednak takie rozwiązanie byłoby dalekie od
optymalnego.



Rysunek 7.23.
Obszar UMA zajmowany przez kartę SCSI Adaptec
AHA-1542CF oraz kartę sieciową po optym




. = wolne obszary
G = pamięć RAM wykorzystywana przez kartę VGA w trybie wysokiej
rozdzielczości
M = pamięć RAM wykorzystywana w monochromatycznym trybie tekstowym
C = pamięć RAM wykorzystywana w kolorowym trybie tekstowym
V = ROM BIOS karty IBM VGA
S = ROM BIOS karty adaptera SCSI
I = pamięć IPL ROM karty sieciowej Token Ring
N = współdzielona pamięć RAM karty sieciowej Token Ring
R = ROM BIOS płyty głównej

:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0A0000:GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
0B0000:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0C0000:VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVSSSSSSSSSSSSSSSSNNNNNNNNNNNNNNNN
0D0000:IIIIIIII........................................................
:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0E0000:................................................................
0F0000:RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR



Proszę zwrócić uwagę, iż usługa Plug-and-Play w Windows 9X/NT
nie ma na celu optymalizowania użytych adresów, a jedynie zapobieganie
konfliktom. Oczywiście w przypadku sterowników 32-bitowych ich
zlokalizowanie nie wpływa na obszar UMB
są one umieszczone w obszarze pamięci
rozszerzonej.

Inne typy pamięci ROM w obszarze UMA


Oprócz pamięci ROM BIOS kontrolerów dysków twardych, adapterów
SCSI czy kart sieciowych, segmenty C000 i D000 w obszarze UMA są wykorzystywane
przez takie urządzenia jak emulatory terminali (ang. terminal emulators), karty
bezpieczeństwa (ang. security adapters), karty rozszerzające pamięć (ang. memory
boards) i inne karty. Niektóre z tych urządzeń wymagają części obszaru UMA tylko
na potrzeby swoich pamięci ROM BIOS, inne mogą umieszczać w segmentach UMA swoją
pamięć RAM. Informacje dotyczące konkretnego typu karty można znaleĄć w jej
dokumentacji.
Pamięć ROM BIOS płyty głównej


Ostatnie 128 kB pamięci UMA zarezerwowano na potrzeby pamięci
ROM BIOS płyty głównej. Program BIOS, zapisany w pamięci ROM, odpowiada za
obsługę komputera w czasie inicjowania systemu, a w czasie normalnej pracy
komputera przechowuje sterowniki różnych urządzeń. Programy-sterowniki muszą być
dostępne natychmiast, dlatego nie mogą być ładowane z urządzenia zewnętrznego,
takiego jak dysk. Programy zapisane w pamięci ROM płyty głównej pełnią
następujące funkcje:

Przeprowadzanie testu POST (Power-On Self Test), który jest zbiorem
procedur sprawdzających działanie płyty głównej, kontrolerów dyskowych, kart
graficznych, klawiatury i innych komponentów niezbędnych do prawidłowego
funkcjonowania komputera. Procedury te są użyteczne, gdy staramy się
zdiagnozować uszkodzenia czy rozwiązujemy problemy ze sprzętem.

Procedury programu ładującego (ang. bootstrap loader)
inicjują poszukiwanie systemu operacyjnego. Jeżeli na dysku lub dyskietce
zostanie znaleziony system operacyjny, to nastąpi jego załadowanie do pamięci
RAM, a po uruchomieniu system operacyjny przejmie kontrolę nad komputerem.

BIOS jest interfejsem programowym (nadrzędnym programem
nadzorującym) dla wszystkich zasobów sprzętowych komputera. Z jego pomocą
możliwy jest łatwy dostęp do zasobów komputera w aplikacjach poprzez wywołanie
modułu podprogramu rezydującego w BIOS-ie. Alternatywą byłoby bezpośrednie
odwoływanie się do urządzeń.

Program CMOS Setup jest stosowany do zmieniania informacji o
konfiguracji komputera. Najczęściej uruchamia się go odpowiednią kombinacją
klawiszy naciśniętą w czasie startu komputera. Za jego pomocą można zmieniać
podstawowe parametry płyt głównych: zarządzanie energią, opcje chipsetów itp.
Nie wszystkie komputery posiadają ten program w pamięci ROM. Niektóre trzeba
uruchamiać z dysków.
Segmenty E000 i F000 w przestrzeni adresowej procesora są
zarezerwowane na potrzeby pamięci ROM BIOS płyty głównej, jednak tylko niektóre
komputery klasy AT wykorzystują cały ten obszar. Komputery PC/XT wymagają
jedynie segmentu E000. Większość komputerów AT wykorzystuje cały obszar od
adresu F000, może również dekodować (lecz nie wykorzystywać) któryś z segmentów
od adresu E000. Dekodując dany obszar adresowy, płyta główna AT po prostu
przejmuje kontrolę nad jego adresami, co wyklucza przydzielenie tego obszaru dla
innych urządzeń. Nie jest wówczas możliwe zainstalowanie w komputerze kart,
które by korzystały z tego obszaru adresowego. Dlatego większość kart
wykorzystujących przestrzeń adresową procesora nie pozwala na umieszczanie
swoich zasobów adresowych w obrębie segmentu E000. Może się to wydawać
marnowaniem 64 kB przestrzeni adresowej, jednak komputery, począwszy od 386,
mogą korzystać z usług jednostki MMU (Memory Management Unit) procesora, która
dokonuje przesunięcia pamięci RAM z obszaru pamięci powyżej pierwszego megabajta
(ang. extended memory) w tzw. blok pamięci górnej (ang. Upper Memory Block

UMB). Pamięć ta może być wykorzystywana następnie do ładowania programów. Dzięki
temu wygodnemu rozwiązaniu unikamy utraty części przestrzeni adresowej.
W pamięci ROM na płytach głównych komputerów IBM rezyduje
szereg innych programów
interfejsów, jednak ich lokalizacja w przestrzeni
adresowej jest zazwyczaj spójna. Informację o pamięci ROM BIOS komputerów PC/XT
znaleĄć można na płycie CD, zawartej w szóstym wydaniu tej książki.
Rysunek 7.24 przedstawia mapę pamięci ROM BIOS płyty głównej w
większości komputerów klasy AT. Komputery te są pozbawione interpretera języka
BASIC, który można spotkać w komputerach IBM (tzw. IBM Cassette BASIC). Zamiast
interpretera BASIC-a, w pamięci ROM tych komputerów znajduje się program
konfiguracyjny.



Rysunek 7.24.
Obszar UMA zajmowany przez kartę SCSI Adaptec
AHA-1542CF oraz kartę sieciową po optym




. = wolne obszary
R = ROM BIOS płyty głównej

:0


1


2


3


4


5


6


7


8


9


A


B


C


D


E


F



0E0000:................................................................
0F0000:RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR



Zauważmy, że BIOS standardowego komputera AT zajmuje tylko 64
kB obszaru od adresu F000. W większości przypadków pozostała część obszar
zarezerwowanego na potrzeby BIOS-u (segment E000) jest niewykorzystana i może
być użyta jako przestrzeń UMB.

Komunikaty o błędach BIOS-u


Mapa pamięci ROM większości komputerów kompatybilnych z IBM
jest taka sama, jak w oryginalnym komputerze IBM. Wyjątkiem jest obszar
zawierający interpreter języka BASIC (Cassette BASIC, ROM BASIC). Dla
niektórych użytkowników komputerów osobistych może być niespodzianką, że
oryginalny komputer IBM PC miał z tyłu obudowy gniazdko do podłączenia
magnetofonu kasetowego, który był wykorzystywany do ładowania programów i danych
z kaset. Stacje dyskietek były wówczas dość drogie, a dysków twardych w
ogóle nie brano pod uwagę, dlatego stosowano kasety z taśmą magnetyczną. Ceny
stacji dyskietek jednak szybko spadły, a gniazdo magnetofonu kasetowego nie
pojawiło się już w żadnym z póĄniejszych komputerów PC.
Oryginalny komputer PC w podstawowej konfiguracji był
standardowo wyposażony tylko w 16 kB pamięci RAM. Komputery te nie miały stacji
dyskietek, nie można więc było ładować plików z dysku ani zapisywać ich na dysk.
Większość użytkowników komputerów pisała własne programy w języku BASIC
(Beginnerłs All-Purpose Symbolic Instruction Code) lub uruchamiała programy
napisane przez kogoś innego. W pierwszych komputerach IBM interpreter języka
BASIC rezydował w pamięci ROM BIOS i obsługiwał port magnetofonu
kasetowego, znajdujący się z tyłu obudowy.
Najdziwniejszą jednak rzeczą było to, że firma IBM wyposażała
swoje komputery w BASIC przez cały czas, aż do komputerów PS/2. Komputer
przenośny 486 PS/2 (IBM P75 Portable), którego do niedawna używałem, był
standardowo wyposażony w adapter SCSI, a obecnie jest wyposażony w dysk
SCSI 4 GB. Komputer ten wciąż ma wbudowany interpreter języka BASIC, który
zajmuje 32 kB przestrzeni adresowej. Porównałbym go do wyrostka robaczkowego u
człowieka. Pamięć ROM z interpreterem BASIC-a jest właśnie czymś w rodzaju
pozostałości takiego organu, używanym przez prehistorycznych przodków, który
jednak nie ma żadnego teraĄniejszego znaczenia.
Gdy wyłączymy wszystkie napędy dyskowe w komputerze, możemy
zobaczyć migawkę związaną z obecnością interpretera BASIC w komputerze IBM.
Kiedy uruchomimy komputer, to z powodu braku dysku, z którego mógłby wystartować
system operacyjny, większość komputerów IBM bezceremonialnie wyrzuci na ekranie
komunikat pochodzący właśnie od interpretera BASIC:
The IBM Personal Computer Basic
Version C1.10 Copyright IBM Corp 1981
62940K Bytes free
Ok.


Większość użytkowników ogarnia strach na widok takiego ekranu,
ponieważ oznacza on zazwyczaj niewykrycie dysku twardego. Żaden z komputerów
kompatybilnych z IBM nie był nigdy wyposażony w interpreter języka BASIC w
pamięci ROM, dlatego w komputerach tych na ekranie pojawia się inny
komunikat, który jednak oznacza taką samą sytuację jak ta, kiedy komputer IBM
uruchamiałby swój interpreter BASIC-a. Komputery wyposażone w AMI BIOS
sygnalizują ten fakt następującym, kłopotliwym dla użytkownika komunikatem:
NO ROM BASIC
SYSTEM HALTED

Komunikat ten jest komunikatem wyświetlanym przez AMI BIOS w
tych samych sytuacjach, w jakich komputer IBM wywołałby interpreter BASIC-a,
którego nie ma oczywiści w pamięci ROM BIOS firmy AMI (to samo dotyczy
kompatybilnych BIOS-ów innych producentów). Komunikaty te różnią się w
zależności od producenta BIOS-u. Np. BIOS firmy Compaq powoduje wyświetlenie w
opisanym wyżej przypadku następującego komunikatu:
Non-System disk or disk error
replace and strike any key when ready

Taki komunikat może być nieco mylący, ponieważ ten sam (albo
podobny) komunikat o błędzie jest zapisany w sektorze startowym (ang. Boot
Sector) systemu DOS i normalnie zostałby wyświetlony wówczas, gdy brakuje
jakiegoś pliku systemowego lub też jest on uszkodzony.
W takiej samej sytuacji, tzn. kiedy w komputerze IBM
ujrzelibyśmy komunikat pochodzący od interpretera języka BASIC, komputer
wyposażony w BIOS firmy Award wyświetliłby następujący komunikat:
DISK BOOT FAILURE, INSERT SYSTEM DISK AND PRESS ENTER

W komputerze z BIOS-em firmy Phoenix komunikat ten wyglądałby
następująco:
No boot device available

Strike F1 to retry boot, F2 for setup utility

W zależności od tego, jaki w rzeczywistości wystąpiłby błąd, na
ekranie zostanie wyświetlony odpowiednio pierwszy lub drugi komunikat.
Komunikaty o błędzie różnią się w zależności od pochodzenia
BIOS-u, jednak ich przyczyna jest taka sama. Wyświetlenie takiego komunikatu
może nastąpić w wyniku zajścia jednego z dwóch zdarzeń. Zdarzenia te są związane
z wartością pewnych bajtów w nadrzędnym sektorze ładującym dysku (ang.
Master Boot Record, MBR), który jest pierwszym sektorem dysku twardego. Fizyczna
lokalizacja tego sektora odpowiada następującym ustawieniom dysku: cylinder 0,
głowica 0, sektor 1.
Pierwszy z problemów dotyczy dysku, który albo nie został
podzielony na partycje, albo też ma uszkodzony sektor MBR. W czasie procesu
startowego BIOS sprawdza ostatnie dwa bajty sektora MBR (pierwszego sektora
dysku) w poszukiwaniu "sygnatury"
wartości 55AAh. Jeżeli ostatnie dwa bajty
sektora MBR nie mają wartości 55AAh, wywoływane jest przerwanie 18h. W programie
obsługi tego przerwania następuje skok do podprogramu, który powoduje
wyświetlenie omawianego komunikatu (a także innych komunikatów), a w przypadku
komputera IBM wywołuje interpreter BASIC-a.
Informacja w sektorze MBR (wraz z dwoma bajtami sygnatury) jest
zapisywana przez program FDISK, dostarczany z systemem DOS. Po tzw.
niskopoziomowym sformatowaniu twardego dysku wszystkie sektory są zainicjowane
pewnym ciągiem bajtów, a pierwszy sektor nie zawiera wartości 55AAh.
Innymi słowy, komunikaty o błędach wyświetlane przez BIOS pojawiają się wówczas,
gdy próbujemy wystartować komputer z dysku, który został już sformatowany w
sposób niskopoziomowy, nie został jednak podzielony na partycje.
Rozważmy teraz drugą sytuację, która spowodowałaby wyświetlenie
omawianego przez nas komunikatu. Załóżmy, że sygnatura w sektorze MBR ma
poprawną wartość, BIOS wykonuje wówczas kod zawarty w sektorze MBR. Polega to na
sprawdzeniu wartości bajtów zapisanych w każdej z czterech tablic partycji dysku
(ang. Boot Indicator Bytes). Bajty te znajdują się odpowiednio pod adresami 446
(1Beh), 462 (1Ceh), 478 (1Deh) i 494 (1Eeh). Są one używane w celu
określenia jednej z czterech partycji dysku jako tzw. partycji aktywnej
(tzn. takiej, z której nastąpi start systemu operacyjnego). Wartość 80h,
zapisana w jednym z tych bajtów, oznacza, że odpowiadająca temu bajtowi partycja
jest partycją aktywną, natomiast wartości pozostałych bajtów muszą być równe
00h. Jeżeli więcej niż jeden bajt ma wartość 80h (co wskazuje na większą niż 1
liczbę aktywnych partycji) lub też jeżeli któryś z tych czterech bajtów ma
wartość inną niż 80h czy 00h, ujrzymy następujący komunikat:
Invalid partition table

Jeżeli wszystkie cztery bajty mają wartość 00h, co oznacza brak
aktywnej partycji, to na komputerze IBM uruchomi się interpreter języka BASIC, a
na innych komputerach ujrzymy jeden z omawianych uprzednio komunikatów, w
zależności od BIOS-u naszego komputera. Sytuacja taka zaistniałaby wtedy,
gdybyśmy za pomocą programu FDISK usunęli z dysku istniejące partycje, lecz nie
utworzyli nowych partycji bądĄ nie ustawili aktywnej partycji w programie FDISK
przed ponownym uruchomieniem komputera.

Pamięć powyżej pierwszego megabajta (ang. extended memory)


Jak już była mowa wcześniej w tym rozdziale, przestrzeń
adresowa komputera z procesorem 286 lub lepszym może rozciągać się poza granicę
jednego megabajta, która jest ograniczeniem w trybie rzeczywistym procesora. W
komputerach 286 lub 386SX pamięć może mieć maksymalnie 16 MB; w komputerach
386DX, 486, Pentium, Pentium MMX czy Pentium Pro pamięć osiąga granicę 64 GB
(65536 MB).
W komputerze klasy AT, aby możliwe było zaadresowanie pamięci
powyżej pierwszego megabajta, procesor musi pracować w trybie chronionym
(ang. protected mode). Tryb ten jest podstawowym trybem (ang. native mode)
pracy nowszych procesorów Intel. W przypadku procesora 286, z pamięci powyżej
pierwszego megabajta mogą korzystać jedynie programy pracujące w trybie
chronionym. Procesory 386 i lepsze oferują inny tryb, zwany wirtualnym trybem
rzeczywistym (ang. virtual protected mode). Tryb ten umożliwia
podział pamięci powyżej pierwszego megabajta na kawałki o rozmiarze 1 MB. Z
każdym takim obszarem związana jest osobna sesja trybu rzeczywistego. Wirtualny
tryb rzeczywisty pozwala również na jednoczesną pracę kilku takich sesji w
osobnych, chronionych obszarach pamięci. Możliwa jest jednoczesna praca kilku
programów systemu DOS, jednak dla każdego z nich dostępny jest maksymalnie
obszar 640 kB pamięci RAM, ponieważ w każdej sesji jest symulowane środowisko
trybu rzeczywistego, wraz z obszarem BIOS-u i obszarem pamięci UMA. Jednoczesne
uruchamianie kilku programów w wirtualnym trybie rzeczywistym, zwane
wielozadaniowością (ang. multitasking), wymaga oprogramowania, które
mogłoby zarządzać każdym z uruchomionych programów i zabezpieczać programy
przed interferowaniem ze sobą. Wszystkie te cechy zapewniają systemy operacyjne
OS/2, Windows 95 i Windows NT.
Układy 286 i wyższe mogą również pracować w trybie
rzeczywistym (ang. real mode), który zapewnia pełną kompatybilność z
procesorami 8088 znajdującymi się w komputerach PC/XT. Tryb rzeczywisty
umożliwia uruchamianie programów na komputerze AT tak, jakby były one
uruchamiane na komputerze XT, przy czym w danym momencie może być uruchomiony
tylko jeden program. Jednak komputer AT, również z procesorem 386, 486, Pentium,
Pentium Pro czy Pentium II, pracując w trybie rzeczywistym jest tylko nieco
szybszym komputerem turbo PC. Procesory w trybie rzeczywistym emulują układy
8086 i 8088, jednak nie mogą w tym samym czasie pracować w trybie chronionym. Z
tego powodu procesory Intel, począwszy od 386, zostały wyposażone
w wirtualny tryb rzeczywisty, w którym są zapewnione mechanizmy ochrony
pamięci. Dzięki temu możliwe jest wykonywanie programów trybu rzeczywistego po
kontrolą trybu chronionego systemu operacyjnego OS/2 czy Windows
95.




Pamięć rozszerzona
(ang. extended memory) jest obszarem pamięci powyżej pierwszego megabajta,
dostęp do tej pamięci jest możliwy tylko wtedy, gdy procesor pracuje w
trybie chronionym.
Pamięć XMS


Specyfikacja pamięci XMS została opracowana w 1987 roku przez
firmy Microsoft, Intel i AST Corp. oraz Lotus Development jako specyfikacja
wykorzystania przez programy obszaru pamięci powyżej pierwszego megabajta.
Pamięć XMS może funkcjonować na komputerze z procesorem 286 lub lepszym i
pozwala na wykorzystywanie pamięci spoza zasięgu systemu DOS, powyżej pierwszego
megabajta wraz z dodatkowym blokiem pamięci, przez programy trybu rzeczywistego
(przeznaczone do uruchamiania w systemie operacyjnym DOS).
Przed pojawieniem się specyfikacji XMS nie istniała żadna
możliwość współbieżnego wykonywania programów, które dokonywały przełączania
procesora w tryb pracy chronionej i korzystały z pamięci powyżej pierwszego
megabajta. Nie było możliwe sprawdzenie przez działający program, jak pamięć ta
jest wykorzystywana przez inny, działający równolegle program, ponieważ w trybie
rzeczywistym programy nie mogły zaadresować dodatkowej pamięci. Przykładem
programu-arbitra, który sam zajmuje całą pamięć powyżej pierwszego megabajta po
to, aby ją następnie wydzielać innym programom, przestrzegając przy tym reguł
protokołu XMS, jest program HIMEM.SYS. W ten sposób kilka programów
wykorzystujących pamięć XMS może jednocześnie pracować w systemie operacyjnym
DOS. Programy te uzyskują dostęp do pamięci powyżej pierwszego megabajta,
przełączając w razie potrzeby na pewien czas procesor w tryb pracy
chronionej. Reguły protokołu XMS zapobiegają powstaniu sytuacji, w której jeden
program uzyskuje dostęp do pamięci innego programu. System operacyjny Windows
3.x prowadzi zarządzanie pamięcią przełączając okresowo procesor w tryb
chroniony, obsługuje w ten sposób kilka programów jednocześnie i dlatego wymaga
obecności pamięci XMS. System Windows 95 pracuje najczęściej w trybie
chronionym, jednak nadal wiele jego wywołań systemowych, w których uzyskuje
dostęp do różnych komponentów komputera, odbywa się w trybie rzeczywistym.
Systemy operacyjne Windows NT i OS/2 są systemami pracującymi wyłącznie w trybie
chronionym.
Pamięć powyżej jednego megabajta może być dostosowana do
specyfikacji XMS poprzez zainstalowanie odpowiedniego sterownika (ang. device
driver) w pliku CONFIG.SYS. Najczęściej stosowanym sterownikiem jest program
HIMEM.SYS, dostarczany wraz z systemami operacyjnymi Windows 3.x i DOS
począwszy od wersji 4.0. Są dostępne również inne programy, np. QMM, które
dodane do pliku CONFIG.SYS uaktywniają obszar pamięci powyżej pierwszego
megabajta jako pamięć XMS.

Obszar pamięci "wysokiej" (ang. High Memory Area
HMA) i linia adresowa
A20 procesora 286


Obszar pamięci "wysokiej" (HMA) ma rozmiar 64 kB pomniejszony o
16 bajtów i zaczyna się na początku drugiego megabajta pamięci. Obszar ten można
wykorzystać do ładowania sterowników programowych i programów rezydentnych,
dzięki czemu zwolnione obszary pamięci podstawowej mogą być wykorzystywane przez
programy pracujące w trybie rzeczywistym. Do pamięci HMA można w danej
chwili załadować tylko jeden sterownik lub program rezydentny, niezależnie od
jego wielkości. Pierwotnie mógł to być dowolny program, jednak firma Microsoft
zdecydowała, że jako pierwszy będzie tam ładowany system operacyjny i wbudowała
w tym celu odpowiednie mechanizmy w system DOS począwszy od wersji 5.0.
Obszar pamięci HMA ma duże znaczenie w przypadku korzystania z
DOS-a 5.0 lub nowszego, ponieważ od wersji 5.0 system DOS może przenieść w ten
obszar swoje jądro (ang. kernel), liczące około 45 kB kodu. Aby tego dokonać,
należy najpierw załadować do pamięci sterownik obsługujący pamięć XMS (np.
HIMEM.SYS), a następnie dodać do pliku CONFIG.SYS linię DOS=HIGH. Dzięki temu
zwolnione zostanie dodatkowe 45 kB pamięci podstawowej dla programów pracujących
w trybie rzeczywistym. Zasadniczo pamięć powyżej pierwszego megabajta dostępna
jest jedynie w trybie chronionym procesora, jednak okazało się, że "błąd" w
konstrukcji procesora 286 (który szczęśliwie został przeniesiony do nowszych
procesorów firmy Intel, nazwano go przy tym "zaletą") spowodował przez
przypadek, że w trybie rzeczywistym możliwy jest dostęp do prawie całego
pierwszego segmentu pamięci powyżej pierwszego megabajta.
Dostęp do pamięci HMA jest nadzorowany przez sterownik
HIMEM.SYS albo inny sterownik o podobnych funkcjach. Interesujące jest
pochodzenie błędu odpowiedzialnego za całą sprawę, ponieważ dotrwał on aż do
procesora Pentium II.
U Ąródeł problemu tkwi fakt, że adresy w pamięci adresowanej
przez procesor Intel są określane za pomocą adresu segmentu i przesunięcia
względem początku segmentu. Jeżeli adres segmentu zostanie ustawiony na FFFF (co
wskazuje komórkę o adresie FFFF0, znajdującą się 16 bajtów poniżej końca
pierwszego megabajta), a jednocześnie adres przesunięcia będzie równy FFFF,
czyli 64 kB, to uzyskamy następujący adres liniowy:
FFFF segment
+ FFFF przesunięcie
--------
10FFEF suma


Adres ten nie ma racji bytu w komputerach z procesorem 8086 czy
8088, ponieważ procesory te mają tylko 20 linii adresowych i nie mogą
wygenerować tak dużego adresu. Procesory te odrzucają pierwszą cyfrę wyniku i
otrzymują adres 0FEF, który w gruncie rzeczy wskazuje na komórkę zlokalizowaną
16 bajtów przed końcem pierwszego segmentu pierwszego megabajta. Problem z
procesorem 286 i nowszymi polega na tym, że w trybie rzeczywistym procesory te
zachowują się w opisany wyżej sposób
efektywny adres również powinien
wskazywać na komórkę w pierwszym segmencie pierwszego megabajta. Jednak na
skutek błędu 21. linia adresowa procesora (A20) pozostaje wtedy aktywna, dzięki
czemu efektywny adres wskazuje na komórkę pamięci zlokalizowaną 16 bajtów przed
końcem pierwszego segmentu drugiego megabajta pamięci. Pamięć ta w założeniach
miała być dostępna wyłącznie w trybie chronionym, jednak opisany błąd
spowodował, że cały pierwszy segment (bez 16 bajtów) drugiego megabajta stał się
dostępny w trybie rzeczywistym.
Błąd ten spowodował problemy w działaniu wielu programów trybu
rzeczywistego, których prawidłowe działanie było zależne od "zawinięcia"
pamięci. Dlatego inżynierowie firmy IBM przy opracowywaniu komputera AT musieli
zapewnić mechanizm wyłączania linii A20 w czasie pracy w trybie rzeczywistym i
włączania jej ponownie przy przełączaniu w tryb chroniony. Dokonano tego dzięki
wykorzystaniu jednej z niewykorzystanych końcówek kontrolera klawiatury, układu
8042, znajdującego się na płycie głównej. Funkcją układu 8042 było odczytywanie
kodów naciskanych klawiszy i przesyłanie ich do procesora, jednak niektóre
końcówki układu nie brały udziału w tej operacji. Dlatego firma IBM wpadła na
pomysł, aby układ ten wykorzystać do uaktywniania w razie potrzeby linii
A20, zapewniając w ten sposób pełną emulację procesorów 8088 i 8086 przez
"wadliwy" procesor 286 pracujący w trybie rzeczywistym.
Firma Microsoft odkryła, że za pomocą kontrolera 8042 można
uaktywnić linię A20 i wykorzystać "wadę" procesora, dzięki czemu możliwy
stał się dostęp do pierwszych 64 kB pamięci powyżej pierwszego megabajta, bez
konieczności angażowania w to stosunkowo długiego i skomplikowanego procesu
przełączania procesora w tryb chroniony. W ten sposób "narodził się" program
HIMEM.SYS i obszar pamięci HMA. Zadaniem sterownika HIMEM.SYS jest sprawdzanie,
czy linia A20 powinna być w danym momencie wyłączona, przez co zostałaby
utrzymana kompatybilność z procesorami 8086/8088, czy też powinna zostać
uaktywniona w razie żądania dostępu do pamięci HMA lub przy przełączaniu
procesora w tryb chroniony. Podsumowując, program HIMEM.SYS za pośrednictwem
układu 8042 sprawuje kontrolę nad linią A20.

Pamięć EMS (expanded memory
EMS)


Niektóre starsze programy mogą wykorzystywać pamięć EMS
(Expanded Memory Specification). W przeciwieństwie do pamięci podstawowej
(pierwszy megabajt) czy też pamięci XMS (obszar od 2 do 16 lub 4096 megabajtów),
pamięć EMS nie jest adresowana bezpośrednio przez procesor. Zamiast tego
dostęp do niej jest możliwy za pośrednictwem okna o rozmiarze 64 kB oraz 16 kB
stron umieszczonych w obszarze UMA. Specyfikacja EMS została zrealizowana jako
zbiór przełączanych banków pamięci. Na karcie rozszerzającej znajduje się dość
duża ilość 64-kilobajtowych segmentów pamięci wraz z układami dokonującymi
niezbędnego przełączania i mapowania banków pamięci. Wolny segment w pamięci UMA
wykorzystywany jest przy tym jako obszar, przez który procesor uzyskuje dostęp
do pamięci EMS. Kiedy całe 64 kB zostaną zapełnione danymi, karta rozszerzająca
dokonuje przełączenia segmentów, w wyniku czego na miejscu pełnego segmentu
pojawia się nowy, pusty segment. Karta pamięci EMS dokonuje odpowiedniego
przełączania segmentów, tak aby po zapełnieniu się jednego segmentu na jego
miejscu pojawiał się segment pusty. Tylko jeden segment może być w danej chwili
obsługiwany przez procesor, dlatego pamięć EMS jest rozwiązaniem bardzo
niewydajnym w przypadku kodu programów i stosuje się ją tylko dla danych.
Rysunek 7.25 obrazuje sposób, w jaki pamięć EMS jest wpisana w
przestrzeń zajmowaną przez pamięć konwencjonalną i pamięć
EMS.



Rysunek 7.24.
Obszar pamięci podstawowej, XMS i
EMS



Firma Intel opracowała swego czasu kartę pamięci ogólnych
zastosowań, wyposażoną w odpowiednie układy dokonujące przełączania banków
pamięci. Karty te, określane jako Above Boards, były w sprzedaży dobrych
kilkanaście lat temu. Pamięć EMS została opracowana z myślą o komputerach
8-bitowych, w których była szczególnie użyteczna, ponieważ komputery te były
pozbawione możliwości obsługi pamięci XMS. Komputery z procesorami 286 i
nowszymi pozwalały na dodanie do 16 MB lub 4 GB pamięci XMS, która jest znacznie
wydajniejsza od wolnej pamięci EMS. Karty pamięci EMS nie są już produkowane, a
sama pamięć EMS, zarówno pod względem koncepcji, jak i funkcjonalnym, jest
rozwiązaniem przestarzałym.
W przypadku "antycznego" oprogramowania, wymagającego pamięci
EMS, lepiej je zamienić na nowszą wersję, która może się bezpośrednio odwoływać
do pamięci XMS. Dzięki dużym możliwościom jednostki zarządzania pamięcią MMU
procesora 386 jest również możliwa konwersja pamięci powyżej pierwszego
megabajta, tak aby "wyglądała" jak pamięć LIM EMS. Jednak w ten sposób
powinniśmy postąpić dopiero wtedy, kiedy okaże się, że nie można wprost
komunikować się z pamięcią XMS. Programem, który został opracowany z myślą o
zamianie pamięci XMS na EMS, jest EMM386. Obecnie program ten służy raczej do
mapowania pamięci XMS w obszar UMA w celu ładowania tam sterowników
programowych. Sterownik EMM386 jest dostarczany z systemem DOS od wersji
5.0 oraz z systemem Windows. Jeżeli dostępnych jest kilka wersji tego
sterownika, to zawsze używajmy wersji najnowszej.

Zapobieganie konfliktom i nakładaniu się obszarów pamięci ROM
BIOS


Jak już zostało powiedziane w poprzednich podrozdziałach,
obszary zaczynające się od adresów C000 i D000 zostały zarezerwowane na potrzeby
pamięci ROM i RAM kart rozszerzających. Jeżeli obszary adresowe pamięci ROM lub
RAM dwóch kart zachodzą na siebie, to zazwyczaj żadna z kart nie pracuje
poprawnie. Poszczególne karty będą indywidualnie pracowały poprawnie, jednak nie
będą działać razem.
W przypadku wielu kart rozszerzających jest możliwa zmiana
położenia obszaru pamięci karty za pomocą zworek lub przełączników. Zmiana taka
może okazać się konieczna do poprawnej jednoczesnej pracy dwóch kart w
komputerze. Ten typ konfliktu może być trudny do wyeliminowania. W celu jego
rozwiązania powinniśmy przeczytać dokumentację karty i ustalić, jakie obszary
przestrzeni adresowej dana karta zajmuje oraz w jaki sposób można zmienić
adresy, aby umożliwić jednoczesną pracę obydwu kart. Przez większość czasu
poświęconego na rozwiązywanie problemów powinniśmy próbować zmian parametrów
konfiguracyjnych karty lub zworek, zmianę ustawień czy parametrów sterowników
programowych. Umożliwi to współistnienie dwóch kart w komputerze
i niekolidowanie ich ze sobą.
Ponadto trzeba zapewnić, aby karty nie korzystały z tego samego
przerwania IRQ, kanału DMA czy adresów w przestrzeni wejścia/wyjścia. Konfliktów
w dostępie do zasobów takich jak przerwania, kanały DMA czy porty we/wy można
uniknąć sporządzając tabelę konfiguracji komputera, do której wpisujemy te
zasoby, które są wykorzystywane przez komputer. W rezultacie otrzymujemy obraz
wykorzystania wszystkich zasobów w komputerze oraz wzajemne powiązania
pomiędzy kartami rozszerzającymi. Taki sposób postępowania pomaga przewidywać
potencjalne konflikty i zapewnia, że każda nowa karta w komputerze zostanie od
razu poprawnie skonfigurowana. Tabela ta stanowi również ważną dokumentację,
kiedy rozważamy zakup nowych kart rozszerzających. Nowe karty należy tak
konfigurować, aby wykorzystywały dostępne zasoby komputera.
Jeżeli komputer odpowiada specyfikacji Plug-and-Play, a używane
przez nas karty są kartami PnP, to karta sama będzie mogła dokonać koniecznych
przesunięć obszarów pamięci, aby rozwiązać zaistniałe konflikty. Niestety,
procedury te nie są zbyt "inteligentne" i wciąż wymagają interwencji użytkownika

jawnego podania takiej lokalizacji w przestrzeni adresowej, która będzie
najbardziej optymalną dla pamięci karty.

Przepisanie zawartości pamięci ROM do RAM (shadow ROM)


W komputerach zbudowanych w oparciu o procesor 386 lub lepszy,
który komunikuje się z pamięcią za pośrednictwem 32- lub 64-bitowej magistrali,
do komunikacji z pamięcią ROM BIOS wykorzystywana jest często magistrala
16-bitowa. Ponadto karty wyposażone we własny BIOS mogą komunikować się z
pamięcią komputera poprzez magistralę 8-bitową. W zaawansowanych, nowoczesnych
komputerach, 8- czy 16-bitowa magistrala jest "wąskim gardłem", które obniża
wydajność całego systemu. Oprócz ograniczeń w szerokości magistrali, w przypadku
większości układów pamięci ROM czas dostępu jest o wiele dłuższy niż dla pamięci
DRAM (dynamic RAM). Najszybsze dostępne na rynku układy ROM osiągają czasy
dostępu w zakresie 150
200 ns, podczas gdy pamięci RAM we współczesnych
komputerach mają czas dostępu równy 7 ns i mniej.
Ponieważ pamięć ROM jest dość wolna, każdy dostęp do danych lub
programu zapisanego w pamięci ROM powoduje wstawienie cykli oczekiwania. Cykle
oczekiwania mogą dramatycznie spowolnić pracę całego komputera, zwłaszcza że
wiele sterowników urządzeń, do których odwołuje się system DOS, zawartych jest w
pamięci ROM BIOS znajdującej się na płycie głównej i na kartach rozszerzających.
Na szczęście opracowano sposób na przeniesienie zawartości wolnych 8- lub
16-bitowych układów ROM do znacznie szybszej, 32-bitowej pamięci RAM. W języku
angielskim jest to określane jako ROM shadowing.
Właściwie wszystkie komputery z procesorem 386 i lepszym
pozwalają na przepisanie do pamięci RAM pamięci ROM płyty głównej, a czasami
także pamięci ROM kart rozszerzających. Polega to na przeniesieniu kodu z
wolnych układów ROM do szybkiej, 32-bitowej pamięci RAM. Przepisanie zawartości
ROM do RAM może znacznie podnieść szybkość wykonywania procedur BIOS-u
czasami
aż do czterech lub pięciu razy.
Przepisywanie zawartości ROM do RAM odbywa się przy pomocy
wydajnej jednostki MMU, która jest częścią procesorów Intel, począwszy od 386.
Za pomocą odpowiedniej instrukcji można nakazać, by jednostka MMU odczytała
zawartość pamięci ROM, umieściła ją w RAM i sprawiła, aby zawartość pamięci RAM
była widoczna pod takimi samymi adresami, jak poprzednio pamięć ROM. Następnie
wyłączamy pamięć ROM, a pamięć RAM, która teraz jest widziana jako ROM,
jest całkowicie zabezpieczona przed zapisem. Pamięć ta przypomina więc teraz pod
każdym względem poprzednią pamięć ROM, oprócz tego, że jest od niej znacznie
szybsza! W większości komputerów program konfiguracyjny (SETUP) posiada opcją
uaktywniającą przepisywanie pamięci ROM BIOS płyty głównej (zazwyczaj segment
F000) oraz pamięci ROM BIOS karty graficznej (zajmującej zazwyczaj pierwsze 32
kB segmentu C000). Niektóre komputery umożliwiają nawet kopiowanie do pamięci
RAM pozostałych fragmentów pamięci ROM z segmentu C000 i
D000.





Powinniśmy
pamiętać o jednej ważnej rzeczy, mianowicie jeżeli włączymy przepisywanie
pamięci ROM o zadanych adresach do pamięci RAM, to przy uruchamianiu
komputera każda informacja znaleziona pod tym obszarem zostanie przepisana
do pamięci RAM i zapis danych w tym obszarze stanie się niemożliwy.
Gdybyśmy postąpili tak w przypadku karty sieciowej wyposażonej we własną
pamięć współdzieloną, widoczną w obszarze UMA, to karta odmówiłaby
jakiejkolwiek pracy. Dlatego do RAM można kopiować tylko te obszary
adresowe, pod którymi pierwotnie widoczna jest pamięć ROM, a nie
RAM.


W niektórych komputerach niemożliwe jest przepisywanie do RAM
obszarów innych niż BIOS płyty głównej czy karty graficznej. W komputerach tych,
aby przepisać do RAM zawartość innych obszarów, trzeba skorzystać z usług
jakiegoś programu zarządzającego pamięcią, np. EMM386 (który jest dostarczany z
systemami DOS i Windows). Powinno się jednak przede wszystkim korzystać z
możliwości, jakie w zakresie przepisywania ROM do RAM daje sprzęt, ponieważ
sprzętowe przepisywanie zagospodarowuje te obszary pamięci UMA, które
pozostałyby niewykorzystane. Natomiast program zarządzający pamięcią, taki jak
EMM386, angażuje do tego nieduże obszary pamięci XMS (powyżej pierwszego
megabajta), równe rozmiarowi pamięci ROM, której zawartość przepisujemy.
Jeżeli przepisanie pewnego obszaru ROM do pamięci RAM
spowoduje, że przestanie prawidłowo działać jedna lub więcej kart
rozszerzających w komputerze, to powodem tego może być przepisanie do RAM
komputera obszarów pamięci podręcznej (ang. scratch pad memory) kart
rozszerzających. Do pamięci tej nie będzie można zapisywać żadnych danych,
dopóki opcja "ROM shadowing" nie zostanie wyłączona. Aby komputer mógł znowu
poprawnie funkcjonować, należałoby tę opcję wyłączyć. Jeżeli jest możliwe
precyzyjne ustalenie, które adresy w obszarze UMA odnoszą się do pamięci ROM, a
które do RAM, to możemy nakazać przepisanie tylko obszarów ROM i osiągnięcie tym
sposobem maksymalnej wydajności komputera.
Na uwagę zasługuje fakt, iż kopiowanie ROM-u do dużo szybszego
RAM-u nie ma większego znaczenia dla systemów 32-bitowych, jak Windows 9X/NT.
Systemy te używają 16-bitowego kodu BIOS jedynie podczas startu systemu. Potem
uruchamiają własne, 32-bitowe sterowniki i ich używają. ROM Shadowing ma sens
jedynie w przypadku starszych systemów operacyjnych, jak 16-bitowy
DOS.

Całkowity rozmiar pamięci komputera a pamięć dostępna dla
programów


Większość użytkowników nie zdaje sobie sprawy, że nie cała
pamięć modułów SIMM czy inna pamięć fizyczna, którą kupimy i zainstalujemy w
komputerze, będzie dostępna dla programów. Kilka osobliwych cech w architekturze
komputera spowodowało, że całkowity rozmiar dostępnej pamięci został
pomniejszony o 384 kB zagospodarowane jako obszar UMA.
Np. w większości komputerów z 4 MB (4096 kB) pamięci RAM, w
czasie testu POST albo po uruchomieniu programu SETUP ujawni się dostępne 3712
kB pamięci RAM. Widać więc, że brakuje 4096
3712 = 384 kB pamięci RAM! Część
komputerów z 4 MB RAM może ujawnić obecność 3968 kB pamięci, co oznacza brak
4096 
 3968 = 128 kB RAM.
Dokładniejsze informacje, niż podawane w czasie testu POST,
można uzyskać uruchamiając program SETUP i sprawdzając ilość pamięci podstawowej
i pamięci XMS. W większości komputerów mamy o dyspozycji 640 kB pamięci
podstawowej i 3073 kB pamięci XMS. W niektórych przypadkach program SETUP
poinformuje o "premii" w postaci 640 kB pamięci podstawowej i 3228 kB pamięci
XMS. Inaczej mówiąc, w większości komputerów "brakuje" 384 kB pamięci RAM,
podczas gdy w pozostałych tylko 128 kB.
Przyczyna tego niedoboru nie jest prosta do wyjaśnienia, jednak
dla wszystkich komputerów jest taka sama. Załóżmy, że w komputerze 486
zainstalowane są dwa 72-końcówkowe (36-bitowe) moduły SIMM. W rezultacie w
komputerze będą 2 MB pamięci w dwóch osobnych bankach
procesor 486 ma
32-bitową magistralę danych, a na każde 8 bitów danych przypada jeden bit
parzystości. W tym przypadku pojedynczy moduł SIMM tworzy jeden bank pamięci.
Zauważmy, że w większości tanich komputerów 486 wykorzystuje się 30-końcówkowe
(9-bitowe) moduły SIMM i wówczas pojedynczy bank pamięci składa się z czterech
takich modułów. Obszar pierwszego banku rozpoczyna się od adresu 000000
(początek pierwszego megabajta), a drugi bank od adresu 100000 (początek
drugiego megabajta).
Kardynalna reguła, dotycząca zasobów adresowych komputera,
mówi, że żadne dwa urządzenia w komputerze nie powinny nigdy mieć przypisanych
tych samych obszarów adresowych. Oznaczałoby to jednak, że 384 kB pamięci z
pierwszego banku pozostawałoby w bezpośrednim konflikcie z pamięcią obrazu
(segmenty A000 i B0000), pamięcią ROM kart rozszerzających (segmenty C000 i
D000) i oczywiście pamięcią ROM płyty głównej (segmenty E000 i F000). Wszystkie
moduły SIMM, które zajmują ten obszar, musiałyby być wyłączone, w przeciwnym
razie komputer by nie działał. W praktyce projektant płyty głównej może uczynić
trzy rzeczy z pamięcią modułów SIMM, zajmującą obszar A0000-FFFFF:

Przepisać zawartość pamięci ROM do RAM (ang. shadowing), po czym wyłączyć
układy ROM

Wyłączyć całą pamięć RAM widoczną w obszarze UMA i wyeliminować w ten
sposób jakiekolwiek konflikty w tym obszarze.

Przenieść niewykorzystane obszary pamięci RAM dodając je do obszaru
pamięci XMS
W większości komputerów do pamięci RAM przepisuje się ROM płyty
głównej (zazwyczaj 64 kB), ROM karty graficznej (32 kB) a pozostałe obszary
pamięci RAM po prostu się wyłącza. Niektóre płyty główne umożliwiają przepisanie
do RAM dodatkowo 16-kilobajtowej porcji ROM z obszaru
C8000-DFFFF.




Do pamięci RAM
komputera można przepisywać tylko zawartość pamięci ROM, natomiast nie
można np. pamięci RAM karty sieciowej. Jeżeli karta sieciowa ma bufor
wpisany w obszar C8000-DFFFF, to nie należy go przepisywać do RAM
komputera, ponieważ karta przestanie wtedy działać. Z tych samych przyczyn
nie należy przepisywać obszaru A0000-BFFFF, ponieważ znajduje się tam
pamięć RAM bufora karty graficznej.


Większość płyt głównych nie umożliwia przesunięcia wolnej
pamięci UMA na koniec obszaru XMS (ang. remapping) , lecz po prostu pamięć tę
wyłącza. Dlatego też włączenie mechanizmu "ROM shadowing" nie powoduje w
praktyce zmniejszenia obszaru pamięci dostępnej w komputerze. W większości
komputerów pamięć RAM, do której nie przepisano by pamięci ROM, zostałaby po
prostu wyłączona. Takie komputery ujawniają o 384 kB mniej pamięci w porównaniu
r rozmiarem fizycznej pamięci obecnej w komputerze. Przykładowo, mój komputer
wyposażony w 2 MB pamięci RAM miałby 640 kB pamięci podstawowej i 1024 kB
pamięci XMS, co daje łącznie 1664 kB dostępnej pamięci RAM, o 384 kB mniej niż
jest w komputerze (2048
384 = 1664).
W bardziej zaawansowanych komputerach przepisuje się do RAM
wszystkie możliwe obszary ROM, a następnie niewykorzystane obszary RAM z obszaru
UMA umieszcza się na końcu przestrzeni XMS, dzięki czemu nie marnuje się żaden z
niewykorzystanych obszarów RAM. Np. komputery PS/2 przepisują do RAM obszar ROM
BIOS płyty głównej (obszar E0000-FFFFF lub 128 kB), a pozostałą pamięć z
pierwszego banku pamięci, obecną w komputerze jako moduły SIMM (256 kB w
obszarze A0000-DFFFF) pod adres, który jest bezpośrednio za ostatnim bankiem
fizycznej pamięci komputera.




Zauważmy, że BIOS
karty graficznej w komputerach PS/2 wchodzi w skład pamięci ROM BIOS
płyty głównej, zlokalizowanej w obszarze E0000-FFFFF. W przeciwieństwie do
innych komputerów, nie trzeba przepisywać osobno pamięci ROM BIOS karty
graficznej.


Przykładowo, w moim komputerze, wyposażonym w dwa 36-bitowe
moduły SIMM o rozmiarze 1 MB każdy, 256 kB pamięci UMA, do której nie
przepisuje się pamięci ROM, zostałoby przesunięte w obszar 200000
230000,
znajdujący się na początku trzeciego megabajta. Przesunięcie takie ma wpływ na
znaczenie wartości podawanych przez programy diagnostyczne, ponieważ np.
zgłoszenie błędu pamięci w obszarze 200000
230000, który wskazuje na końcowy
obszar pamięci XMS, oznaczałoby w rzeczywistości uszkodzenie pierwszego
modułu SIMM. Pamięć o adresach 100000
1FFFFF wchodziłaby w skład drugiego modułu
SIMM, a 640 kB pamięci podstawowej o adresach 000000
09FFFF
w skład pierwszego
modułu SIMM. Jak widać, domyślenie się, w jakich obszarach adresowych jest
zlokalizowana fizyczna pamięć modułów SIMM, nie jest łatwe.
W większości komputerów możliwe jest przesunięcie tylko całego
segmentu niewykorzystanej pamięci z obszaru UMA, o ile segment ten nie zawiera
zawartości przepisanej z pamięci ROM. Nigdy nie należy przepisywać pamięci
obrazu zlokalizowanej w segmentach A000 i B000, tak więc co najmniej 128 kB
pamięci RAM może zostać przesunięte na koniec obszaru XMS, o ile komputer to
umożliwia. Segmenty pamięci RAM spod adresów F000 i C000 w większości komputerów
zawierają kopię odpowiednio pamięci ROM płyty głównej i pamięci ROM karty
graficznej, dlatego też nie mogą być przesunięte na koniec obszaru XMS. Zostaje
więc maksymalnie 256 kB, które mogą być przesunięte. Jeżeli w komputerze na
koniec obszaru XMS przesunięte są całe 384 kB pamięci RAM z obszaru UMA, to
automatycznie wyklucza to przepisywanie zawartości pamięci ROM do RAM w obrębie
pamięci UMA. Zrezygnowanie z przepisywania ROM do RAM spowalnia jednak znacznie
komputer i nie jest zalecane. Podejmując decyzję, czy dany fragment pamięci RAM
z obszaru UMA wykorzystać do przechowywania kopii pamięci ROM (ang. shadowing)
czy też przenieść go na koniec obszaru XMS (ang. remapping), należy zawsze
wybrać rozwiązanie pierwsze. Natomiast niewykorzystaną pamięć RAM z obszaru UMA
zawsze lepiej jest przesunąć na koniec obszaru XMS, niż po prostu wyłączyć.
W komputerze z brakującymi 384 kB pamięci RAM nie stosuje się
przesuwania niewykorzystanej pamięci na koniec obszaru XMS. W celu ustalenia,
czy w komputerze brakuje pamięci, wystarczy zwrócić uwagę na trzy czynniki.
Pierwszym jest całkowity rozmiar pamięci fizycznie obecnej w komputerze.
Pozostałe dwa można ustalić uruchamiając program SETUP komputera. Są to
całkowity rozmiar pamięci podstawowej i pamięci XMS komputera. Następnie,
odejmując pamięć podstawową i pamięć XMS od całkowitej pamięci komputera,
otrzymamy rozmiar brakującej pamięci. Zazwyczaj okaże się, że w komputerze
brakuje 384 kB, lecz jeżeli jesteśmy szczęśliwymi właścicielami komputera, w
którym 256 kB pamięci RAM jest przepisywane spod obszaru UMA w obszar XMS,
to okaże się, że brakuje tylko 128 kB.
Praktycznie wszystkie komputery wykorzystują część z brakującej
pamięci RAM do przechowywania kopii zawartości swojej pamięci ROM, przede
wszystkim ROM płyty głównej i karty graficznej. Tak więc "braki" nie oznaczają
wcale marnotrawstwa. W komputerze, w którym brakuje 128 kB, w 64 kB z tego
obszaru jest przechowywana kopia ROM BIOS (F0000
FFFFF), a w 32 kB
BIOS karty
graficznej (C0000
C8000). Reszta
32 kB (C8000
CFFFF)
jest po prostu
wyłączana. Pozostałe dwa segmenty (128 kB w obszarze A0000-BFFFF i 128 kB w
obszarze D0000-EFFFF) są przenoszone na początek piątego megabajta
(400000-43FFFF). W większości komputerów pozostałe fragmenty RAM w obszarze UMA
są po prostu wyłączane. Rozwiązanie to wybrano ze względu na prostotę
realizacji. Operacja przeniesienia fragmentów RAM w obszar XMS wymaga
dodatkowych układów logicznych i procedur BIOS-a realizujących tę funkcję,
a większość producentów płyt głównych uznała, że dodatkowe 256 kB nie jest warte
zachodu.




Jeżeli w
komputerze włączona jest opcja przesuwania pamięci RAM spod obszaru UMA w
obszar XMS, to jakiekolwiek komunikaty o błędach pamięci odnoszące się do
końcowej części obszaru XMS prawdopodobnie dotyczą pierwszego banku
pamięci, ponieważ przesunięty obszar pamięci pochodzi właśnie z tego
banku. W komputerze 32-bitowym pierwszy bank może być złożony z czterech
9-końcówkowych (36-bitowych) modułów SIMM albo z jednego modułu
72-końcówkowego (36-bitowego).
Konfigurowanie i optymalizacja pamięci
kart rozszerzających


W idealnym przypadku wszystkie karty w komputerze są kartami
PnP i jedyne, czego wymagają od użytkownika, to włożenie ich do gniazd
rozszerzających. Pojawienie się kart PnP przybliżyło nas trochę do ideału.
Jednak czasami odnosi się wrażenie, że niektóre karty rozszerzające zostały
zaprojektowane tak, jakby miały być jedynymi kartami w komputerze. Ich
prawidłowe skonfigurowanie wymaga od użytkownika znajomości wykorzystania w
komputerze zasobów adresowych z obszaru UMA, a także linii IRQ i kanałów
DMA. Ponadto niezbędna jest umiejętność skonfigurowania karty w taki sposób, aby
nie powodowała ona konfliktu z już zainstalowanymi urządzeniami.
Karty rozszerzające potrzebują adresów w przestrzeni UMA na
potrzeby swoich pamięci ROM BIOS oraz jako robocze obszary RAM. Jeżeli dwie
karty jednocześnie próbują korzystać z tego samego obszaru pamięci ROM BIOS czy
pamięci RAM, powstaje konflikt, który może spowodować, że komputer w ogóle nie
wystartuje. W tym podrozdziale omówimy sposoby unikania potencjalnych konfliktów
oraz metody radzenia sobie w sytuacjach, kiedy konflikt wystąpi. Omówimy
ponadto rozwiązywanie konfliktów poprzez przeniesienie pamięci kart w inne
obszary oraz podamy pewne sposoby optymalizacji wykorzystania pamięci kart
rozszerzających.
W komputerach z magistralą EISA czy MCA dodanie nowej karty
rozszerzającej jest nieco prostsze, ponieważ architektura tych magistral
umożliwia automatyczną konfigurację kart rozszerzających. Komputery z
magistralami EISA czy MCA same ustalają dostępne obszary w przestrzeni UMA,
linie IRQ i kanały DMA, a wszystkie karty zostają automatycznie skonfigurowane
do optymalnej pracy.

Jak rozpoznać karty zajmujące adresy w przestrzeni UMA


Ustalić, które karty zajmują pamięć w obszarze UMA, można na
jeden z dwóch sposobów:

Sprawdzić w dokumentacjach kart obecnych w komputerze adresy pamięci
wykorzystywane przez karty.

Skorzystać z programu użytkowego, który sam szybko ustali, jakie obszary
pamięci UMA są zajmowane przez poszczególne karty.
Sposobem najprostszym (chociaż nie zawsze niezawodnym) jest
skorzystanie z programu użytkowego. Jednym z takich programów jest Microsoft
Diagnostics (MSD), który jest dostarczany z systemami operacyjnymi DOS 6.0 i
Windows 3.x (lub nowszymi). Informację taką podaje również Menadżer urządzeń z
Panelu sterowania w Windows 95. Programy te sprawdzają konfigurację sprzętową
ustalając nie tylko ilość pamięci UMA, lecz również linie IRQ zajmowane przez
karty.
Po uruchomieniu programu MSD, Menadżera urządzeń lub innego
podobnego programu, należy sporządzić wydruk przedstawiający adresy zajęte w
komputerze. Wydruk ten będzie pomocny przy dodawaniu do komputera nowych
urządzeń, ponieważ pozwoli nam się upewnić, że nowa karta nie spowoduje
konfliktu z innymi urządzeniami obecnymi w komputerze.

Przesuwanie obszaru pamięci kart w celu rozwiązywania
konfliktów


Po rozpoznaniu
przy pomocy dokumentacji karty czy programu
użytkowego
konfliktu lub potencjalnego konfliktu w komputerze i ustaleniu
adresów zajmowanych przez kartę w obszarze UMA, możemy przystąpić do zmiany
konfiguracji karty lub kart, przenosząc fragmenty pamięci zajmowane przez te
karty w inne miejsce w obszarze UMA.
W większości kart taka zmiana konfiguracji okaże się dość
prosta, gdyż będzie wymagać jedynie zmiany ustawień kilku zworek czy
przełączników. Przestrzeganie poniższych wskazówek pozwoli na rozwiązanie
większości konfliktów, które wystąpiły pomiędzy kartami.

Ustalenie i spisanie na kartce adresów w obszarze UMA zajmowanych przez
karty rozszerzające.

Sprawdzenie, czy adresy te nie pokrywają się, co byłoby przyczyną
konfliktu.

Ustalenie na podstawie dokumentacji, które karty pozwalają na zmianę
konfiguracji, tak aby każda z kart miała dostęp do innego obszaru przestrzeni
adresowej.

Zmiana konfiguracji odpowiednich kart, tak aby nie było konfliktu w
dostępie do ich obszarów adresowych.
Przykładowo, jeżeli jedna karta korzysta z obszaru C8000
CBFFF,
a druga z obszaru CA000
CCFFF, to mamy potencjalny konflikt. Musimy wówczas
zmienić obszar adresowy jednej z kart.

Optymalizacja wykorzystania pamięci kart rozszerzających


W przypadku idealnego komputera PC, karty rozszerzające byłyby
skonfigurowane w en sposób, że ich adresy z obszaru UMA byłyby umieszczane
zaraz po adresach kart instalowanych poprzednio. Obszary dwóch kart nie
zachodziłyby na siebie, co eliminowałoby konflikt. Taka konfiguracja byłaby nie
tylko bezkonfliktowa, lecz także uprościłaby ładowanie do pamięci UMA
sterowników urządzeń i programów rezydentnych. Jednak nie to stanowi główny
problem. Umieszczanie w komputerze kolejnych kart powoduje często powstawanie
"dziur"
niewykorzystanego obszaru UMA
co oczywiście jest
ro


Wyszukiwarka

Podobne podstrony:
Rozbudowa i naprawa komputera Kompendium Wydanie drugie
naprawa komputerow ilowa, komputerów iłowa
karty sieciowe [rozbudowa i naprawa sieci]
Rozbudowa i naprawa sieci Kompendium rosiek
Formularz Naprawy Komputeraonline
przycisk komputera naprawa
rozdzial 1 rozbudzenie myśli
Rozdział 01 Komunikacja procesora z innymi elementami architektury komputera
Rozdział 3 5 Napraw mnie
sieci bezprzewodowe helion rozdzial bluetooth

więcej podobnych podstron