Limit pamięci RAM
Maksymalna ilość pamięci o dostępie swobodnym (RAM) zainstalowanej w dowolnym systemie komputerowym jest ograniczona sprzętem, oprogramowaniem i czynnikami ekonomicznymi. Sprzęt może mieć ograniczoną liczbę magistrali adresowej , ograniczoną przez pakiet procesora lub konstrukcję systemu. Część przestrzeni adresowej może być współdzielona między RAM, urządzenia peryferyjne i pamięć tylko do odczytu. W przypadku mikrokontrolera bez zewnętrznej pamięci RAM rozmiar macierzy RAM jest ograniczony rozmiarem matrycy układu scalonego. W systemie pakietowym można zapewnić tylko wystarczającą ilość pamięci RAM do wymaganych funkcji systemu, bez możliwości dodania pamięci po wyprodukowaniu.
Mogą występować ograniczenia oprogramowania dotyczące użytecznej fizycznej pamięci RAM. System operacyjny może być zaprojektowany tylko do przydzielania określonej ilości pamięci, przy czym górne bity adresu są zarezerwowane do wskazywania oznaczeń, takich jak tryb we/wy lub tryb administratora lub inne informacje dotyczące bezpieczeństwa. Lub system operacyjny może polegać na wewnętrznych strukturach danych ze stałymi limitami pamięci adresowalnej.
W przypadku komputerów osobistych na rynek masowy producent może nie czerpać korzyści finansowych z dostarczania większej liczby gniazd pamięci, linii adresowych lub innego sprzętu niż jest to konieczne do uruchamiania oprogramowania na rynek masowy. Kiedy urządzenia pamięci były stosunkowo drogie w porównaniu z procesorem, często pamięć RAM dostarczana z systemem była znacznie mniejsza niż pojemność adresowa sprzętu ze względu na koszty.
Czasami limity pamięci RAM można pokonać za pomocą specjalnych technik. Przełączanie banków umożliwia przełączanie bloków pamięci RAM do przestrzeni adresowej procesora, gdy jest to wymagane, pod kontrolą programu. Systemy operacyjne rutynowo zarządzają uruchomionymi programami za pomocą pamięci wirtualnej , gdzie poszczególne programy działają tak, jakby miały dostęp do dużej przestrzeni pamięci, która jest symulowana przez zamianę obszarów pamięci z pamięcią dyskową.
Limity adresowania procesora
Ze względu na wydajność wszystkie równoległe linie adresowe szyny adresowej muszą być ważne w tym samym czasie, w przeciwnym razie dostęp do pamięci byłby opóźniony, a wydajność poważnie ograniczona. Pakiety układów scalonych mogą mieć ograniczenie liczby pinów dostępnych dla magistrali pamięci . Można zaprojektować różne wersje architektury procesora, w obudowach układów scalonych o różnej wielkości, redukując mniejszy rozmiar obudowy na rzecz mniejszej liczby pinów i przestrzeni adresowej. Można dokonać kompromisu między pinami adresowymi a innymi funkcjami, ograniczając fizycznie dostępną pamięć dla architektury, nawet jeśli z natury ma ona większą pojemność. Z drugiej strony segmentowane lub przełączania banków zapewniają większą przestrzeń adresową pamięci niż jest dostępna w wewnętrznym rejestrze adresowym pamięci.
Ponieważ pamięć układów scalonych stała się mniej kosztowna, możliwe stało się projektowanie systemów z coraz większymi fizycznymi przestrzeniami pamięci.
Mniej niż 16 pinów adresu
mikrokontrolerowe ze zintegrowanymi wejściami/wyjściami i pamięcią w układzie czasami nie miały magistrali adresowej lub miały niewielką szynę adresową dostępną dla urządzeń zewnętrznych. Na przykład rodzina mikrokontrolerów dostępna z 2-kilobajtową przestrzenią adresową może mieć wariant, który udostępnia 11-liniową magistralę adresową dla zewnętrznej pamięci ROM; można to zrobić przez ponowne przypisanie pinów we/wy jako pinów magistrali adresowej. Niektóre procesory ogólnego przeznaczenia ze zintegrowaną pamięcią ROM dzielą 16-bitową przestrzeń adresową między wewnętrzną pamięć ROM i zewnętrzną 15-bitową magistralę pamięci.
Niektóre bardzo wczesne komputery miały również procesory z mniej niż 16 pinami adresowymi: Technologia MOS 6507 (wersja 6502 o zmniejszonej liczbie pinów) była używana w Atari 2600 i była ograniczona do 13-liniowej magistrali adresowej.
16 bitów adresu, 16 pinów adresu
Większość 8-bitowych mikroprocesorów ogólnego przeznaczenia ma 16-bitowe przestrzenie adresowe i generuje 16 linii adresowych. Przykłady obejmują Intel 8080 , Intel 8085 , Zilog Z80 , Motorola 6800 , Microchip PIC18 i wiele innych. Te procesory mają 8-bitowe procesory z 8-bitowymi danymi i 16-bitowym adresowaniem. Pamięć w tych procesorach jest adresowalna na poziomie bajtów. Prowadzi to do adresowalnego limitu pamięci wynoszącego 2 16 × 1 bajt = 65 536 bajtów lub 64 kilobajty.
16 bitów adresu, 20 pinów adresu: 8086, 8088, 80186 i 80188
Intel 8086 i pochodne, takie jak 8088 , 80186 i 80188 , stanowią podstawę popularnej platformy x86 i stanowią pierwszy poziom architektury IA16. Były to 16-bitowe procesory z 20-bitowym adresowaniem. Pamięć w tych procesorach była adresowalna na poziomie bajtów. Procesory te mogły zaadresować 220 bajtów (1 megabajt).
16-bitowe adresy, 24 piny adresowe: 80286
Procesor Intel 80286 używał 24-bitowego schematu adresowania. Każda lokalizacja pamięci była adresowalna bajtowo. Daje to całkowitą adresowalną przestrzeń 2 24 × 1 bajt = 16 777 216 bajtów lub 16 megabajtów. 286 i nowsze mogły również działać w trybie rzeczywistym , co narzucało ograniczenia adresowania procesora 8086. Model 286 miał obsługę pamięci wirtualnej.
Adresy 32-bitowe, 24 piny adresowe
Intel 80386SX był ekonomiczną wersją 386DX. Miał 24-bitowy schemat adresowania, w przeciwieństwie do 32-bitowego w 386DX. Podobnie jak 286, 386SX może zaadresować tylko do 16 megabajtów pamięci.
Motorola 68000 miała 24-bitową przestrzeń adresową, co pozwalało na dostęp do 16 megabajtów pamięci.
32-bitowe adresy, 32 piny adresowe
386DX miał 32-bitowe adresowanie, co pozwalało na adresowanie do 4 gigabajtów (4096 megabajtów) pamięci.
Motorola 68020 , wydana w 1984 roku, miała 32-bitową przestrzeń adresową, co daje jej maksymalny adresowalny limit pamięci wynoszący 4 GB. Wszystkie kolejne chipy z serii Motorola 68000 odziedziczyły ten limit.
32-bitowe adresy, 36 pinów adresowych: Pentium Pro (aka P6)
Pentium Pro i wszystkie Pentium 4 mają 36-bitowe adresowanie, co daje całkowitą adresowalną przestrzeń 64 gigabajtów, ale wymaga, aby system operacyjny obsługiwał rozszerzenie adresu fizycznego .
64-bitowe przetwarzanie
Nowoczesne procesory 64-bitowe, takie jak projekty ARM, Intel lub AMD, są zwykle ograniczone do obsługi mniej niż 64 bitów dla adresów pamięci RAM. Zwykle implementują od 40 do 52 bitów adresu fizycznego (obsługując od 1 TB do 4 PB pamięci RAM). Podobnie jak poprzednie opisane tutaj architektury, niektóre z nich są zaprojektowane do obsługi wyższych limitów pamięci RAM w miarę rozwoju technologii. Zarówno w Intel64, jak i AMD64 limit 52-bitowego adresu fizycznego jest zdefiniowany w specyfikacjach architektury (4 PB).
Limity pamięci RAM systemu operacyjnego
Limit adresowania CP/M i 8080
Pierwszym głównym systemem operacyjnym dla mikrokomputerów był CP/M . Ten system operacyjny był kompatybilny z mikrokomputerami podobnymi do Altair 8800 , stworzonymi przez Gary'ego Kildalla w połączeniu z językiem programowania PL/M i był licencjonowany dla producentów komputerów przez firmę Kildalla Digital Research po tym, jak został odrzucony przez firmę Intel . Intel 8080 używany przez te komputery był 8-bitowym procesorem z 16-bitowym przestrzeń adresowa, która umożliwiła mu dostęp do 64 KB pamięci; Z tego powodu pliki wykonywalne .COM używane z CP/M mają maksymalny rozmiar 64 KB, podobnie jak te używane przez systemy operacyjne DOS dla 16-bitowych mikroprocesorów.
IBM PC i limit adresowania 8088
W oryginalnym IBM PC podstawowy limit pamięci RAM wynosi 640 KB. Ma to na celu umożliwienie sprzętowej przestrzeni adresowej w górnych 384 KB ( górny obszar pamięci (UMA)) z całkowitej adresowalnej przestrzeni pamięci wynoszącej 1024 KB (1 MB). Sposoby na pokonanie bariery 640 000 , jak zaczęto ją nazywać, polegały na użyciu specjalnych trybów adresowania dostępnych w procesorach x86 286 i nowszych. Całkowita przestrzeń adresowa 1 MB była wynikiem 20-bitowego limitu przestrzeni adresowej nałożonego na procesor 8088.
Korzystając z przestrzeni bufora kolorowego wideo, niektóre narzędzia innych firm mogą dodać pamięć na górze konwencjonalnego obszaru pamięci 640 000, aby rozszerzyć pamięć do adresu podstawowego używanego przez adaptery sprzętowe. Może to ostatecznie zapełnić pamięć RAM do adresu bazowego MDA.
Rozszerzenia sprzętowe umożliwiły dostęp do większej ilości pamięci, niż procesor 8086 mógł obsłużyć za pomocą pamięci stronicowania. Ta pamięć była znana jako pamięć rozszerzona . De facto standard branżowy został opracowany przez konsorcjum LIM, w skład którego weszły firmy Lotus, Intel i Microsoft. Tym standardem była specyfikacja rozszerzonej pamięci (EMS). Strony pamięci ze sprzętu z rozszerzoną pamięcią były dostępne przez okno adresowe umieszczone w wolnym obszarze w przestrzeni UMA i poprzez wymianę go na inne strony, gdy było to potrzebne, aby uzyskać dostęp do innej pamięci. EMS obsługiwał 16 MB miejsca.
Korzystając z dziwactwa w architekturze procesora 286, dostępny był obszar wysokiej pamięci (HMA), jako pierwsze 64 KB powyżej limitu 1 MB 20-bitowego adresowania w architekturze x86.
Korzystając z 24-bitowych możliwości adresowania pamięci architektury 286 procesorów, dostępna była całkowita przestrzeń adresowa 16 MB. Pamięć powyżej limitu 1 MB była nazywana pamięcią rozszerzoną . Jednak obszar między 640 KB a 1 MB był zarezerwowany dla adresowania sprzętowego w kompatybilności z IBM PC. DOS i inne programy trybu rzeczywistego, ograniczone do adresów 20-bitowych, mogły uzyskać dostęp do tej przestrzeni tylko poprzez emulację EMS w pamięci rozszerzonej lub analog EMS dla pamięci rozszerzonej. Firma Microsoft opracowała standard znany jako specyfikacja rozszerzonej pamięci (XMS). Dostęp do pamięci powyżej HMA wymagał użycia trybu chronionego procesora 286.
Wraz z rozwojem architektury procesora i386 przestrzeń adresowa została przeniesiona do adresowania 32-bitowego i limitu 4 GB. Dzięki temu procesorowi dostęp do 16 MB obszarów pamięci był dostępny dla programów DOS, które korzystały z rozszerzeń DOS , takich jak DOS / 4GW, MiniGW / 16, MiniGW i inne. Początkowo opracowano de facto przemysłowy standard pamięci do interakcji, znany jako VCPI . Później wyparł to standard firmy Microsoft, znany jako DPMI . Standardy te umożliwiły bezpośredni dostęp do 16 MB przestrzeni zamiast schematu stronicowania używanego przez EMS i XMS.
Limit 16-bitowego systemu operacyjnego/2 pamięci RAM
16-bitowy OS / 2 był ograniczony do 15 MB ze względu na rezerwę miejsca zaprojektowaną w systemie operacyjnym. Zarezerwował górny 1 MB z 16 MB 24-bitowej przestrzeni adresowej dla pamięci innej niż pamięć (od 16 MB do 15 MB).
Limit 32-bitowej pamięci RAM x86
W trybach innych niż PAE 32-bitowych procesorów x86 użyteczna pamięć RAM może być ograniczona do mniej niż 4 GB. Limity pamięci i przestrzeni adresowej różnią się w zależności od platformy i systemu operacyjnego. Ograniczenia dotyczące pamięci fizycznej dla platform 32-bitowych zależą również od obecności i użycia rozszerzenia adresu fizycznego (PAE), które umożliwia systemom 32-bitowym użycie więcej niż 4 GB pamięci fizycznej.
Systemy PAE i 64-bitowe mogą być w stanie zaadresować do pełnej przestrzeni adresowej procesora x86.
Zobacz też
Linki zewnętrzne
- Artykuł MSDN: Limity pamięci dla wydań systemu Windows
- Pamięć systemowa zgłaszana w oknie dialogowym Informacje o systemie w systemie Windows Vista jest mniejsza niż można się spodziewać, jeśli zainstalowano 4 GB pamięci RAM — wyjaśnia problem
- System Windows Vista SP1 zawiera raporty o zainstalowanej pamięci systemowej (RAM) — szczegółowe informacje o limicie pamięci RAM