Who, what, or how is memory-mapped I/O and memory maps set up in computer systems for use?
I will try and be as clear as possible, and I hope someone here has the knowledge to really understand what I'm asking thoroughly, and have some answer that's good enough to make sense for me and future readers. Here I go...
Memory-mapped I/O and port I/O are two standard, and most used methods of accessing devices across a computer system, such as sound cards, video cards, disks, ROM, etc. I am a computer programmer, and I make it my best effort to understand this more clearly for low-level development, but here is my main basic question, and it is valid:
1.How can memory (i.e. RAM, main-memory) be "mapped" in an "address space" for the CPU? RAM stores bits, speaking bluntly, and these bits are used for machine instructions, data, paging, virtual memory, buffers, etc(although, to the best of my knowledge, every bit of RAM is used as some machine instruction for some purpose). I know the basics of how a computer starts, I know basic processor architecture, have even limited Assembly knowledge, but I don't understand how you map certain RAM when there's usually no distinction of a "map" in an encompass zone of bits sitting on an integrated circuit that get "processed" within registers, control units, and ALUs within a chip, and carried through buses across a motherboard. So how does this work in any particular, feasible, or logical sense?
How is "memory-mapping" accomplished?