MMIO

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

MMIO (ang. Memory-Mapped Input/Outputwejście/wyjście odwzorowywane w pamięci) jest sposobem ułatwienia obsługi dostępu do i wykonywania operacji na urządzeniach wejścia/wyjścia w systemach komputerowych.

W metodzie tej rejestry urządzenia zostają odwzorowane w przestrzeni adresowej pod zadanym adresem. Oznacza to, że zapisy i odczyty do pamięci pod tym adresem, wykonywane przez procesor, zamiast powodować operacje na rzeczywistej pamięci operacyjnej, skutkują zapisami i odczytami do fizycznych rejestrów urządzenia. Dzięki temu komunikacja z urządzeniem staje się łatwiejsza, gdyż nie różni się niczym od korzystania z pamięci operacyjnej. W szczególności używa się do tego celu tych samych instrukcji, dzięki czemu możliwe jest uproszczenie budowy i wewnętrznej logiki mikroprocesora.

Wady[edytuj | edytuj kod]

Główną wadą tego rozwiązania jest fakt, że zakres przestrzeni adresowej używany w ten sposób nie może być użyty do komunikacji z pamięcią operacyjną. Wynika to z faktu, że operacje zapisu i odczytu w pamięci operacyjnej, wykonywane przez procesor na tak odwzorowanych obszarach przestrzeni adresowej, są przekierowywane bezpośrednio (na poziomie sprzętowym) do rejestrów urządzenia.

Problem ten może być szczególnie dotkliwy w systemach 16- i 32-bitowych, gdzie przestrzeń adresowa jest stosunkowo niewielka. Na przykład, w systemie 32-bitowym przestrzeń adresowa posiada rozmiar 4GB. Procesor w systemie korzystającym z wejścia/wyjścia odwzorowywanego w pamięci i posiadającym 4GB fizycznej pamięci operacyjnej nie będzie miał możliwości skorzystania z części zainstalowanej pamięci, gdyż będzie ona zajęta przez MMIO. Zjawisko takie nazywamy dziurą w pamięci (ang. memory hole).

Zobacz też[edytuj | edytuj kod]

Przypisy[edytuj | edytuj kod]

Abraham Silberschatz: Podstawy systemów operacyjnych. WNT, 2005. ISBN 83-204-2961-7.