MMIO
MMIO (ang. Memory-Mapped Input/Output – wejś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]
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]
Przypisy [edytuj]
Abraham Silberschatz: Podstawy systemów operacyjnych. WNT, 2005. ISBN 83-204-2961-7.