MMIO

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

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 | 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 4 GB. Procesor w systemie korzystającym z wejścia/wyjścia odwzorowywanego w pamięci i posiadają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 (ang. memory hole).

Zobacz też[edytuj | edytuj kod]

Bibliografia[edytuj | edytuj kod]