What would signify apparent differences in memory mapped I/O between boards?

Ok, that title is a bit off, but I'll try to be more spot on.

In different printed circuit boards, or motherboards, the hardware engineers, I'm assuming, map certain memory in the processor's address space so it can write to it, and then successfully move it through the chipset to the device.

This is the basis of memory mapped I/O.

I am assuming that certain memory is mapped for certain devices, so if you write to that memory it goes to that device, for example, video memory in Intel x86 based processors and chipsets.

Since this designates where what address is written to and what it must do based on some ... I don't know ... address/logic circuitry, all motherboards come by default with mapped memory in range, or no?

If one didn't, how would one set this up? I'm just curious in this, and I'm hoping to develop for a team that is trying to compete against Microsoft. :D

Are you asking if the motherboard has hardwired the address of certain I/O components?
Memory mapped I/O is a software concept, not hardware. It is just a kind of an API. The OS is responsible for managing the mapping between the memory and devices. How it is done - depends on the OS and hardware capabilities. For File I/O usually DMA channels are used to transfer the data in both directions directly between memory and drive, without bothering CPU too much.


I am assuming that certain memory is mapped for certain devices, so if you write to that memory it goes to that device


Nope, memory mapped data are kept in RAM, not in device memory. If you write to that memory it does not go to the device until you call a special command like fsync.
Last edited on
@rapidcoder, I don't know much, but something's amiss. Video memory a 0xB8000 is not set up by the OS (by BIOS, maybe?) and does not need any flushing.
@rapidcoder
That's a different thing entirely; you're talking about memory mapped file I/O, this topic is about hardware I/O being mapped to memory addresses, like hamsterman's example of video memory being mapped to 0xB8000 (in colour text mode anyway).

When the CPU accesses memory it goes through the memory controller. Devices can monitor the memory controller for access and intercept it, so if you access 0xB8000, the GPU intercepts the access (assuming it's in the appropriate mode, like I said, it's only in colour text mode that it uses 0xB8000; in graphical modes it uses 0xA0000 and in monochrome text mode it uses 0xB0000).
I was talking about memory mapped I/O as in the title.
You are talking about graphics framebuffer. But right, framebuffer works as chrisname said.
Topic archived. No new replies allowed.