Otwór PCI
Otwór PCI lub otwór pamięci PCI to ograniczenie 32-bitowego sprzętu i 32-bitowych systemów operacyjnych , które powoduje, że komputer wydaje się mieć mniej dostępnej pamięci niż fizycznie zainstalowana. To ograniczenie adresowania pamięci i późniejsze obejścia konieczne do jego przezwyciężenia są funkcjonalnie podobne do ograniczeń pamięci wczesnej architektury IBM PC 8088 (patrz Pamięć konwencjonalna ).
Podobne sytuacje zdarzały się często w historii informatyki, kiedy sprzęt, który miał mieć do pewnego poziomu zasoby, został zaprojektowany do obsługi kilka razy większej niż maksymalna oczekiwana ilość, co ostatecznie staje się poważnym ograniczeniem, ponieważ prawo Moore'a zwiększa zasoby dostępne ekonomicznie . Oryginalny IBM PC był zwykle dostarczany z 64 KB pamięci lub mniej; został zaprojektowany tak, aby zajmował maksymalnie 640 KB, znacznie więcej, niż sądzono, że będzie kiedykolwiek potrzebny. [ potrzebne źródło ] Szybko stało się to ograniczeniem, z którym musiało sobie poradzić złożone zarządzanie pamięcią DOS . Podobne kolejne ograniczenia rozmiaru zostały nałożone i przezwyciężone w przypadku dysków twardych .
Utrata użytecznej pamięci spowodowana otworem PCI podczas korzystania z operacji we/wy mapowanych w pamięci jest spowodowana używaniem tej samej przestrzeni adresowej zarówno dla pamięci fizycznej, jak i do komunikacji z urządzeniami sprzętowymi. Tak więc zainstalowane urządzenia sprzętowe potrzebują pewnej przestrzeni adresowej, aby komunikować się z procesorem i oprogramowaniem systemowym. Ponieważ sprzęt 32-bitowy ma w sumie cztery gigabajty adresowalnej pamięci, część rzeczywistej pamięci fizycznej maszyny 32-bitowej, gdy zainstalowana jest wystarczająca ilość pamięci, musi zostać poświęcona przez ukrycie jej, aby urządzenia miały miejsce na komunikację. To, która część pamięci fizycznej zostanie zastąpiona przestrzenią komunikacyjną urządzenia, zależy od maszyny, ale zwykle jest to coś powyżej 2,5 do 3,5 GB.
Ilość pamięci systemowej, która jest ukryta i niedostępna, różni się znacznie w zależności od rzeczywistej płyty głównej i chipsetu, systemu BIOS, ilości pamięci fizycznej, ilości pamięci RAM wideo zainstalowanej na kartach graficznych oraz liczby i typu kart PCI zainstalowanych w systemie . Więcej niż gigabajt 32-bitowej pamięci systemowej może być niedostępny, gdy zainstalowane są cztery gigabajty pamięci fizycznej i wiele kart 3D z dużą ilością pamięci wideo; na niektórych płytach głównych otwór ma zawsze rozmiar co najmniej jednego gigabajta, niezależnie od zainstalowanych kart rozszerzeń .
Rozszerzenie adresu fizycznego
Obejście problemu opracowane po raz pierwszy w Pentium Pro, znane jako rozszerzenie adresu fizycznego (PAE), umożliwia niektórym 32-bitowym systemom operacyjnym dostęp do 36-bitowych adresów pamięci, mimo że poszczególne programy nadal działają w obrębie 32 bitów przestrzeni adresowej . Pod warunkiem, że zainstalowana jest wystarczająca ilość pamięci, każdy program może mieć własną czterogigabajtową przestrzeń adresową, wykorzystując łącznie do 64 gigabajtów pamięci we wszystkich programach.
Ale sam PAE nie wystarczy, aby rozwiązać problem dziury PCI, ponieważ adresy pamięci i adresy PCI I/O wciąż nakładają się gdzieś pomiędzy 3 a 4 gigabajtem. System operacyjny zgodny z PAE wraz z procesorem zgodnym z PAE nie może uzyskać lepszego dostępu niż dostęp do pamięci od 1 do 3 gigabajta, a następnie od 5 do 64 gigabajta. Otwór PCI nadal istnieje. Na hoście 4 GB i przy braku jednego lub drugiego dodatkowego obejścia, PAE nie robi nic, aby uzyskać dostęp do ~1 GB pamięci, na którą nakładają się wejścia/wyjścia PCI.
PAE był w pełni obsługiwany w systemie Windows XP aż do wydania dodatku Service Pack 1 (SP1), ale następnie został wycofany w przypadku dodatku SP2; jedynymi 32-bitowymi wersjami systemu Microsoft Windows , które w pełni obsługują tę funkcję, są niektóre zaawansowane serwerowe wersje systemu Windows Server 2003 i wcześniejszych; od 2014 roku jest używany głównie przez 32-bitowe dystrybucje Linuksa ; Ubuntu uczynił to obowiązkowym dla swojej 32-bitowej wersji od 2013 roku. Microsoft wyłączył obsługę w Windows XP SP2 i nowszych systemach operacyjnych, ponieważ było wiele problemów ze zgodnością z kartą graficzną i innymi urządzeniami, które wymagały sterowników obsługujących PAE, różniących się od obu standardowych 32 -bitowe i nowsze sterowniki 64-bitowe. Wiele wersji MS Windows może aktywować to, co nadal nazywa się PAE w celu użycia bitu NX , ale nie powoduje to już rozszerzenia przestrzeni adresowej.
Wypełnianie dziury w pamięci
Jak wspomniano wcześniej, w systemach 32-bitowych obsługujących PAE, a nawet w systemach 64-bitowych dostępna jest pamięć poniżej i powyżej „dziury pamięci”, ale od 512 MB do 1,5 GB pamięci RAM jest niedostępne, około 3 gigabajta, ponieważ używa tam adresów pamięci wymaganych dla urządzeń. Przy malejącym koszcie pamięci może to nie być poważny problem, ale istnieją sposoby na odzyskanie dostępu do brakującej pamięci.
Mapowanie urządzeń na adresy powyżej 4 GB
Ograniczenia 32-bitowego gniazda PCI mogą mieć wpływ na czysto 64-bitowe systemy operacyjne, ponieważ system BIOS musi obsługiwać wszystkie systemy operacyjne obsługiwane przez sprzęt (16-, 32- i 64-bitowe systemy operacyjne działają na ten sam sprzęt). BIOS musi być w stanie uruchomić mapowanie wszystkich urządzeń poniżej czterech gigabajtów, chociaż system 64-bitowy tego nie wymaga. Użytkownik może skonfigurować wiele systemów BIOS w celu wypełnienia luki w pamięci poprzez mapowanie urządzeń wysoko w 64-bitowej przestrzeni adresowej, o ile urządzenia, ich sterowniki i chipset wszyscy to popierają. Maszyna skonfigurowana w ten sposób nie może uruchomić 16- lub 32-bitowego systemu operacyjnego; jeśli komputer jest skonfigurowany w ten sposób, konfiguracja systemu BIOS musi zostać tymczasowo zmieniona w celu uruchomienia 16- lub 32-bitowego systemu operacyjnego, np. z rozruchowej płyty CD lub urządzenia pamięci masowej USB.
Mapowanie pamięci na adresy powyżej 4 GB
Innym sposobem na usunięcie luki PCI, która jest przydatna tylko w 64-bitowych systemach operacyjnych i tych 32-bitowych systemach, które obsługują opisaną powyżej metodę rozszerzenia adresu fizycznego, jest „przemapowanie” części lub całej pamięci między dwoma i limity czterech gigabajtów dla adresów powyżej czterech gigabajtów. Musi to być obsługiwane przez chipset komputera i zwykle można je aktywować w programie BIOS Setup. To ponowne mapowanie działa na poziomie adresów fizycznych , w przeciwieństwie do ponownego mapowania adresów wirtualnych na fizyczne na wyższym poziomie , które ma miejsce wewnątrz procesora rdzeń. Aktywacja tego dla tradycyjnych 32-bitowych systemów operacyjnych przynosi więcej szkody niż pożytku, ponieważ przemapowana pamięć (często większa niż sama dziura PCI) jest bezużyteczna dla takich systemów operacyjnych, mimo że np. Windows Vista pokaże, że taka pamięć fizycznie istnieje na „ Właściwości systemu”.
Zobacz też
- Apertura AGP
- Bariera 3 GB
- Rozszerzona pamięć
- PSE-36 – alternatywa dla PAE na procesorach x86 w celu rozszerzenia możliwości adresowania pamięci fizycznej z 32 bitów do 36 bitów
- Limit pamięci RAM