Buses: Paths for flow of information between the processor, memory and peripherals.
*** Types of Buses ***
Data bus: A set of lines doing data parallel transfer
Address bus Transmits addresses
Control bus: transmit control information (allows data going back and forth cpu, ram and IO devices)
*** Controlling the IO ***
The IO bus: Name which receives “The part of control bus connecting a cpu to an IO device” (through a combination of IO ports interfaces and device controllers).
IO ports: Controls the peripheral device involving reading and writing of a consecutive addresses, or registers. Before we can utilize or access an IO port, kernel has to register their usage.
IO Ports x86: Upon the x86 architecture IO address space is 64 KB in length. Here IO Ports can be addressesed as individual 8, 16, 32 bit port (The IO ports should be aligned).
*** Problems with optimizations ***
Memory barriers: By using barriers, a driver ensures no caching is performed and no reordering occurs through operations upon IO ports (because of such operations differs from normal memory access due to compiler and hardware optimizations)