I'm currently reading a computer organization book and i'm so confused about Input/Output mechanism and have lots of questions in my mind.
As i understood there are two concepts for communicating with peripherals, first one is Memory Mapped I/O and the other one is I/O(Port) Mapped I/O.If the architecture is based on Memory Mapped I/O there are no special I/O instructions like "in","out" etc and device registers are mapped to memory address space so we can read or write to peripheral ports by "mov" instruction.On the other hand if architecture is based on I/O Mapped I/O, device registers are mapped to I/O address space which is completely separated from memory address space and cpu uses special instructions("in","out","ins","outs" ) for reading or writing to I/O Mapped device registers.
So here is my questions;
1.)If X86 architecture uses I/O(Port,Isolated etc) Mapped I/O technique why there are memory address spaces for devices like graphic card?
2.)If graphic card maps 1 gb memory to main memory address space what does it mean?Does it mean Memory Mapped I/O ?
3.)If x86 architecture doesn't use Memory Mapped I/O how a device can maps itself to memory address space?
4.)If x86 architecture can use Memory Mapped I/O ,how can it use and with which instructions?
5.)If I/O mapping is about mapping peripheral registers why graphic card wants so much space for mapping ?