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?
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ść?
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ć.
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
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.