Podręcznik

9. Przestrzeń adresowa I/O

Przestrzeń adresowa wejścia-wyjścia I/O (tzw. porty) tworzy zupełnie odmienną przestrzeń adresową niż pamięć RAM. Porty umożliwiają komunikację pomiędzy oprogramowaniem i sprzętem (urządzenia I/O). Porty umożliwiają transmisję danych, a także sterowanie stanem urządzeń. Mogą być jednokierunkowe bądź dwukierunkowe. Dwa urządzenia nie mogą wykorzystywać tych samych portów. Porty są ściśle związane z architekturą systemu komputerowego. W przypadku architektury PC zazwyczaj mamy do dyspozycji 0000-FFFF (65535) portów I/O, z czego porty 00-FF są wykorzystywane przez płytę główną, a 100H-FFFF przez urządzenia. Przykładowo dla karty sieciowej przyporządkowanie przerwań i adresów I/O może wyglądać następująco:

  • IRQ 09
  • Adres we/wy 9800-987F
  • Zakres pamięci E000 000 – E000 007F (32-bit)

lub

  • Zakres pamięci 0000 0000 E000 000 – 0000 0000 E000 007F (64-bit)

Warto zwrócić uwagę na zakres pamięci. Są to adresy w przestrzeni pamięci RAM, a jednak odnoszą się do portów urządzenia. Jest to możliwe dzięki mapowaniu portów I/O (ang. memory-mapped I/O) na adresy pamięci RAM (Rys. 23). W tym przypadku program może zapisywać do pamięci urządzenia dane w taki sam sposób jak do pamięci operacyjnej. Jeśli mapowanie nie jest stosowane, jedynym sposobem dostępu do pamięci urządzenia jest użycie specjalnych instrukcji: IN, OUT, INS, OUTS.

Rys. 23. Przestrzeń adresowa I/O