Tryb długi

W architekturze komputerów x86-64 tryb długi to tryb, w którym 64 - bitowy system operacyjny może uzyskać dostęp do 64-bitowych instrukcji i rejestrów . Programy 64-bitowe są uruchamiane w trybie podrzędnym zwanym trybem 64-bitowym, podczas gdy programy 32-bitowe i 16-bitowe trybie chronionym są wykonywane w trybie podrzędnym zwanym trybem zgodności. Programy w trybie rzeczywistym lub wirtualnym 8086 nie mogą być natywnie uruchamiane w trybie długim.

Przegląd

Procesor x86-64 działa identycznie jak procesor IA-32 , gdy działa w trybie rzeczywistym lub trybie chronionym, które są obsługiwane w trybach podrzędnych, gdy procesor nie jest w trybie długim.

Bit w polu rozszerzonych atrybutów CPUID informuje programy w trybie rzeczywistym lub chronionym, czy procesor może przejść w tryb długi, co pozwala programowi wykryć procesor x86-64. Jest to podobne do bitu atrybutów CPUID, którego Intel IA-64, aby umożliwić programom wykrycie, czy działają w emulacji IA-32.

W przypadku komputera ze starszą wersją systemu BIOS , system BIOS i moduł ładujący działają w trybie rzeczywistym , następnie jądro 64-bitowego systemu operacyjnego sprawdza i przełącza procesor w tryb długi, a następnie uruchamia nowe wątki trybu jądra z kodem 64-bitowym. Na komputerze z systemem UEFI oprogramowanie układowe UEFI (z wyjątkiem CSM i starszej wersji Option ROM ), program ładujący UEFI i jądro systemu operacyjnego UEFI działają w trybie długim.

Ograniczenia pamięci

Podczas gdy rozmiary rejestrów wzrosły do ​​64 bitów w porównaniu z poprzednią architekturą x86 , adresowanie pamięci nie zostało jeszcze zwiększone do pełnych 64 bitów. Na razie niepraktyczne jest wyposażanie komputerów w wystarczającą ilość pamięci, aby wymagały pełnych 64 bitów. Dopóki tak jest, ładowanie/przechowywanie jednostek, pamięci podręcznej , MMU i TLB można uprościć bez utraty użytecznej pamięci. Pomimo tego ograniczenia oprogramowanie jest programowane przy użyciu pełnych 64-bitowych wskaźników , a zatem będą mogły wykorzystywać coraz większe przestrzenie adresowe, w miarę jak będą one obsługiwane przez przyszłe procesory i systemy operacyjne.

Aktualne limity

Pierwsze procesory obsługujące architekturę x86-64, a mianowicie procesory AMD Athlon 64 / Opteron (K8), miały 48-bitowe adresowanie wirtualne i 40-bitowe fizyczne .

Wirtualna przestrzeń adresowa tych procesorów jest podzielona na dwa 47-bitowe regiony, jeden rozpoczynający się od najniższego możliwego adresu, drugi rozciągający się w dół od największego. Próba użycia adresów spoza tego zakresu spowoduje ogólny błąd ochrony .

Limit adresowania fizycznego ogranicza ilość zainstalowanej pamięci RAM , do której komputer może uzyskać dostęp. W wieloprocesorowym ccNUMA (Opteron) obejmuje to pamięć zainstalowaną w węzłach zdalnych, ponieważ procesory mogą bezpośrednio adresować (i buforować) całą pamięć, niezależnie od tego, czy znajduje się ona w węźle domowym, czy zdalnym. Limit 1 TB (40-bitowy) dla pamięci fizycznej dla K8 jest ogromny jak na typowe standardy komputerów osobistych, ale mógł być ograniczeniem do użytku w superkomputerach. W konsekwencji mikroarchitektura K10 (lub „10h”) implementuje 48-bitowe adresy fizyczne, dzięki czemu może adresować do 256 TB pamięci RAM.

W razie potrzeby mikroarchitekturę można rozbudowywać krok po kroku bez skutków ubocznych ze strony oprogramowania i jednocześnie oszczędzać na kosztach jej wdrożenia. W celu przyszłej rozbudowy architektura obsługuje rozszerzenie wirtualnej przestrzeni adresowej do 64 bitów i adresowanie pamięci fizycznej do 52 bitów (ograniczone formatem w tablicy stron ). Pozwoliłoby to procesorowi zaadresować 264 bajty (16 eksabajtów ) wirtualnej przestrzeni adresowej i 252 bajty (4 petabajty ) fizycznej przestrzeni adresowej.

Zobacz też

Linki zewnętrzne