MMIO (ang. memory-mapped input/output) – sposób 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 4 GB). Procesor w systemie korzystającym z wejścia-wyjścia odwzorowywanego w pamięci i mającym 4 GB 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 nazywa się dziurą w pamięci.

Zobacz też edytuj

Bibliografia edytuj

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