Jak IOMMU komunikuje się z procesorem i urządzeniami peryferyjnymi

IOMMU

Jeden z najważniejszych utworów współczesnych procesory jest IOMMU , co jest niezbędne dla komunikacja CPU z system peryferia . W tym artykule wyjaśniamy, co to jest i jakie funkcje ma ten tak nieznany opinii publicznej jako niezbędny element sprzętu znajdujący się we wszystkich typach systemów komputerowych, od smartfona w kieszeni po najpotężniejszy superkomputer.

Jak urządzenia peryferyjne współdziałają z procesorem? Używanie pamięci RAM systemu jako wspólnego punktu do wzajemnej komunikacji, ale implikuje to szereg mechanizmów, z których najważniejszy jest ten, który opiszemy poniżej.

Gdzie znajduje się IOMMU?

IOMMU mostek północny mostka południowego

Jak widać na powyższym schemacie, urządzenia peryferyjne są podłączone do mostka południowego lub południowego, ten z kolei jest połączony z mostkiem północnym, który jest koncentratorem, z którym komunikują się głównie interfejs pamięci RAM i procesora. każdy. Cóż, IOMMU znajduje się wewnątrz mostka południowego, w którym są skoncentrowane wszystkie interfejsy I / O, takie jak USB, PCI Express, SATA itp.

Wszystkie te interfejsy muszą podlegać kontroli IOMMU, aby uzyskać dostęp do systemowej pamięci RAM. W tym przypadku IOMMU działa jako rodzaj kontroli granicznej, która monitoruje, czy urządzenia peryferyjne nie dokonują nielegalnego dostępu do pamięci i uzyskują dostęp do części pamięci RAM przypisanej do każdego z nich i nigdzie indziej.

Dlatego IOMMU działa jak MMU, ale dla urządzeń peryferyjnych we / wy.

Jaka jest jego przydatność?

IOMMU

Urządzenia peryferyjne we / wy nie współużytkują jednostki MMU (jednostka zarządzania pamięcią) z procesorem i dlatego nie widzą pamięci w taki sam sposób, jak procesor systemu centralnego. Ten problem sprawia, że ​​urządzenia peryferyjne są w stanie uzyskać dostęp do wrażliwych części pamięci systemowej, na przykład zarezerwowanych dla funkcji samego systemu operacyjnego, co jest problemem w środowiskach wielozadaniowych.

W tym miejscu pojawia się IOMMU, działając jako jednostka podrzędna do MMU, z którą jest komunikowany poprzez systemowy mostek północny / północny. Dzięki tej komunikacji urządzenia peryferyjne wiedzą, na które adresy RAM mają uprawnienia dostępu, a na które nie.

Z drugiej strony IOMMU automatycznie i dynamicznie przypisuje adresy pamięci do komunikacji z różnymi urządzeniami peryferyjnymi, w ten sposób procesor zawsze wie, które adresy pamięci musi wskazywać, aby się z nimi komunikować.

Oryginalna mapa pamięci komputera IOMMU

W starszych systemach IOMMU nie był dostępny i dostarczano z nimi mapę pamięci, na której programiści byli informowani, które adresy RAM mają komunikować się z urządzeniami. Z tego powodu programiści w każdej innej architekturze musieli nauczyć się adresowania pamięci, aby korzystać z urządzeń peryferyjnych i innego sprzętu pomocniczego w systemie.

Dziś już tak nie jest, a istnienie IOMMU sprawia, że ​​programiści nie muszą uczyć się adresów pamięci, aby się komunikować, a także rozszerza możliwości konfiguracji i dostosowywania naszych komputerów, umożliwiając zupełnie inne konfiguracje.

Korzystanie z IOMMU w systemach zwirtualizowanych

Przekazywanie urządzeń IOMMU

IOMMU umożliwia bezpieczny dostęp do urządzeń fizycznych w środowiskach zwirtualizowanych poprzez to, co nazywamy przekazywaniem urządzeń. Tandem pomiędzy MMU i IOMMU umożliwia urządzeniom podłączonym do komputera PC pojawienie się w przestrzeni pamięci wirtualnej, pełniącej funkcję pamięci fizycznej dla aktualnie działającego środowiska wirtualnego.

Bez IOMMU zwirtualizowane środowiska, które mają prawidłowy dostęp do sprzętu zainstalowanego w systemie, nie byłyby możliwe, dlatego dziś jest to niezbędny element we wszystkich procesorach, które muszą obsługiwać środowiska zwirtualizowane.