Tłumaczenie adresu drugiego poziomu — Second Level Address Translation

Second Level Address Translation (SLAT) , znany również jako zagnieżdżone stronicowanie , to wspomagana sprzętowo technologia wirtualizacji , która pozwala uniknąć narzutów związanych z zarządzanymi przez oprogramowanie tabelami stron w tle .

Firma AMD wspiera SLAT poprzez technologię Rapid Virtualization Indexing (RVI) od czasu wprowadzenia swoich procesorów Opteron trzeciej generacji (nazwa kodowa Barcelona). Intel realizacja „s listewka, znany jako rozszerzony Page Table (EPT), został wprowadzony w mikroarchitektury Nehalem znaleźć w niektórych Core i7 , Core i5 oraz Core i3 Procesory.

Rozszerzenia wirtualizacji ARM obsługują SLAT, znane jako tablice stron Stage-2 dostarczane przez MMU Stage-2 . Gość korzysta z MMU Stage-1. Obsługa została dodana jako opcjonalna w architekturze ARMv7ve i jest również obsługiwana w architekturach ARMv8 (32-bitowych i 64-bitowych).

Przegląd

Współczesne procesory wykorzystują koncepcje pamięci fizycznej i pamięci wirtualnej ; działające procesy używają adresów wirtualnych, a gdy instrukcja żąda dostępu do pamięci, procesor tłumaczy adres wirtualny na adres fizyczny przy użyciu tablicy stron lub bufora translacji (TLB). Podczas uruchamiania systemu wirtualnego przydzielono pamięć wirtualną systemu hosta, która służy jako pamięć fizyczna dla systemu gościa, a ten sam proces translacji adresów odbywa się również w systemie gościa. Zwiększa to koszt dostępu do pamięci, ponieważ translacja adresów musi być wykonywana dwukrotnie – raz w systemie gościa (przy użyciu emulowanej programowo tabeli stron cienia ) i raz w systemie hosta (przy użyciu sprzętowej tabeli stron).

Aby uczynić to tłumaczenie bardziej wydajnym, producenci procesorów wdrożyli technologie powszechnie zwane SLAT. Traktując każdy adres fizyczny gościa jako adres wirtualny hosta, niewielkie rozszerzenie sprzętu używanego do obsługi niezwirtualizowanej tabeli stron (obecnie tabela stron gościa) może przejść po tabeli stron hosta. W przypadku wielopoziomowych tabel stron tabela stron hosta może być przeglądana koncepcyjnie jako zagnieżdżona w tabeli stron gościa. Sprzętowy walker tabel stron może traktować dodatkową warstwę tłumaczenia prawie tak, jak dodawanie poziomów do tabeli stron.

Używając SLAT i wielopoziomowych tabel stron, liczba poziomów, które trzeba przejść, aby znaleźć tłumaczenie, podwaja się, gdy adres fizyczny gościa ma taki sam rozmiar jak adres wirtualny gościa i używane są strony o tym samym rozmiarze. Zwiększa to znaczenie buforowania wartości z pośrednich poziomów tabel stron hosta i gościa. Pomocne jest również użycie dużych stron w tablicach stron hosta w celu zmniejszenia liczby poziomów (np. w x86-64 użycie stron 2  MB usuwa jeden poziom w tablicy stron). Ponieważ pamięć jest zazwyczaj przydzielana do maszyn wirtualnych z dużą ziarnistością, używanie dużych stron do tłumaczenia fizycznego dla gości jest oczywistą optymalizacją, zmniejszającą głębokość wyszukiwań i pamięć wymaganą dla tabel stron hosta.

Realizacje

Szybkie indeksowanie wirtualizacji

Rapid Virtualization Indexing (RVI), znany jako zagnieżdżone tabele stron (NPT) podczas jego opracowywania, to technologia wirtualizacji drugiej generacji AMD dla jednostki zarządzania pamięcią procesora (MMU).

Artykuł badawczy VMware wykazał, że RVI oferuje do 42% wzrost wydajności w porównaniu z implementacją samego oprogramowania (tabela stron cieni). Testy przeprowadzone przez Red Hat wykazały podwojenie wydajności w testach porównawczych OLTP .

RVI został wprowadzony w trzeciej generacji procesorów Opteron o nazwie kodowej Barcelona .

Rozszerzone tabele stron

Extended Page Tables (EPT) to technologia wirtualizacji drugiej generacji x86 firmy Intel dla jednostki zarządzania pamięcią (MMU). Wsparcie EPT można znaleźć między innymi w procesorach Intel Core i3 , Core i5 , Core i7 i Core i9 . Występuje również w niektórych nowszych procesorach VIA .

EPT jest wymagane do uruchomienia procesora logicznego bezpośrednio w trybie rzeczywistym , funkcja nazywana „nieograniczonym gościem” w żargonie Intela i wprowadzona w mikroarchitekturze Westmere .

Zgodnie z dokumentem oceniającym VMware: „EPT zapewnia wzrost wydajności do 48% w testach porównawczych z dużą ilością MMU i do 600% w przypadku mikrobenchmarków z dużą ilością MMU”, chociaż w rzeczywistości może to spowodować wolniejsze działanie kodu niż implementacja oprogramowania w pewnym zakątku sprawy .

Stage-2 stoliki stron

Obsługa tabeli stron Stage 2 jest obecna w procesorach ARM, które implementują poziom wyjątków 2 (EL2).

Rozszerzenia

Kontrola wykonywania w oparciu o tryb

Mode Based Execution Control ( MBE ) to rozszerzenie implementacji x86 SLAT dostępnych po raz pierwszy w procesorach Intel Kaby Lake i AMD Zen 2 . Rozszerzenie rozszerza bit wykonania w rozszerzonej tabeli stron (tabeli stron gościa) na 2 bity - jeden dla wykonania przez użytkownika, a drugi dla wykonania przez administratora.

MBE został wprowadzony w celu przyspieszenia wykonywania niepodpisanego kodu w trybie gościa z wymuszeniem integralności kodu trybu jądra. W tej konfiguracji niepodpisane strony kodowe mogą być oznaczone jako wykonywane w trybie użytkownika, ale muszą być oznaczone jako niewykonane w trybie jądra. Aby zachować integralność, zapewniając, że cały kod wykonywalny trybu jądra gościa jest podpisany, nawet gdy jądro gościa jest zagrożone, jądro gościa nie ma uprawnień do modyfikowania bitu wykonania żadnej ze stron pamięci. Modyfikacja bitu wykonania lub przełączenie tablicy stron gościa, która zawiera bit wykonania, jest delegowana do jednostki o wyższym stopniu uprzywilejowania, w tym przypadku do hipernadzorcy hosta . Bez MBE każdemu wejściu z wykonania w trybie użytkownika bez podpisu do wykonania w trybie jądra z podpisem musi towarzyszyć wyjście maszyny wirtualnej do hipernadzorcy w celu wykonania przełączenia do tabeli stron trybu jądra. W operacji odwrotnej wyjściu z trybu jądra podpisanego do trybu użytkownika bez podpisu musi towarzyszyć wyjście maszyny wirtualnej, aby wykonać inny przełącznik tabeli stron. Wyjścia maszyny wirtualnej znacząco wpływają na wydajność wykonywania kodu. Dzięki MBE ta sama tabela stron może być współdzielona między niepodpisanym kodem trybu użytkownika i podpisanym kodem trybu jądra, z dwoma zestawami uprawnień do wykonywania w zależności od kontekstu wykonania. Wyjścia maszyny wirtualnej nie są już potrzebne, gdy kontekst wykonania przełącza się między niepodpisanym trybem użytkownika a podpisanym trybem jądra.

Wsparcie w oprogramowaniu

Hypervisory obsługujące SLAT obejmują:

Niektóre z powyższych hipernadzorców faktycznie wymagają SLAT, aby w ogóle działać (nie tylko szybciej), ponieważ nie implementują one programowej tabeli stron cienia; lista nie jest w pełni zaktualizowana, aby to odzwierciedlić.

Zobacz też

  • AMD-V (nazwa kodowa Pacifica) — obsługa wirtualizacji sprzętu AMD pierwszej generacji
  • Tabela stron
  • VT-x

Bibliografia

Zewnętrzne linki