Wat is Memory-mapped I/O?

Methode waarbij de registers van randapparatuur aan specifieke adressen in dezelfde adresruimte als het geheugen worden toegewezen en met gewone lees- en schrijfinstructies worden bediend. Dat gebied wordt als niet-cachebaar ingesteld.

Japanse benaming: メモリマップドI/O

“Memory-mapped I/O” komt voor in 2 oefenvragen uit 2 onderwerpen, bijv. Besturingssysteem en hardware, CPU en architectuur.

Vakgebied: Besturingssysteem en hardware

Nu oefenen: vragen over Memory-mapped I/O

Welke methode wijst bij microcontrollers en dergelijke de registers van randapparatuur toe aan dezelfde adresruimte als het geheugen, zodat ze met gewone geheugenlees- en schrijfinstructies worden bediend?

  1. AVirtueel geheugen
  2. BMemory-mapped I/O
  3. CCachecoherentie
Antwoord en toelichting tonen

Antwoord: B. Memory-mapped I/O

Bij memory-mapped I/O worden aan de besturingsregisters van randapparatuur zoals timers en UART's specifieke adressen toegewezen en worden ze met gewone load- en storeinstructies bediend. Vergeleken met een methode met speciale in- en uitvoerinstructies (port-mapped I/O, zoals IN/OUT van x86) kan de instructieset eenvoudiger zijn, en het is de standaard bij ARM- en RISC-V-microcontrollers. Er moet op worden gelet dat de registers van randapparatuur niet worden gecachet en niet door de compiler worden geoptimaliseerd (volatile).

“Memory-mapped I/O” in de toelichting

Vragen met “Memory-mapped I/O” (2)

  1. Waarom wordt, wanneer zoals hierboven het statusregister van een apparaat via memory-mapped I/O wordt gelezen, volatile gebruikt en wordt dat gebied ingesteld om niet te worden gecachet?
  2. Welke methode wijst bij microcontrollers en dergelijke de registers van randapparatuur toe aan dezelfde adresruimte als het geheugen, zodat ze met gewone geheugenlees- en schrijfinstructies worden bediend?

Verwante termen

Via UART Apparaatstuurprogramma (device driver) ASID (address space identifier) Bevoorrechte modus (privileged mode) Contextwissel (context switch) Copy-on-write Demand paging Geneste paginering (nested paging) Hypervisor

Naar de woordenlijst