I/O Controllers
An I/O controller connects input and output (I/O) devices to the bus system of a central processing unit (CPU). It typically communicates with the CPU and with the system memory over the system bus and can control many devices. Control is usually initiated by the CPU, which sends instructions to the I/O controller concerning how the peripheral devices and signals attached to it should be handled.
I/O controllers have functionality specific to handling the demands of talking to and controlling peripheral devices. These include the ability to drive the devices with the correct voltage level and with the correct interface standard. It also includes the ability to connect to the devices with the correct protocol. Communicating and controlling peripherals can be a very critical time function. I/O interfacing can be so complex that it is impractical or impossible for a CPU to implement. In many cases, the CPU cannot provide for the special physical needs of the I/O interface. Offloading this processing to an I/O controller improves CPU performance and flexibility.
I/O controllers may be processing simple logic level inputs or outputs, as in the case of driving the status of a power LED, or detecting a button is pressed. They may also be required to measure the time between logic events, or perform signal conditioning (as in the example of debouncing key pressing on a keyboard). They may have to produce periodic waveforms like PWM that can be used to control things like CPU fan speed. Controllers also have the ability to implement different peripheral interconnect standards like serial interfaces and are able to address and transfer data to and from devices. Such interfaces can incorporate USB, SPI, UARTs and a variety of other standards. They can also include higher performance USB2, USB3 and SATA style interfaces - although these tend to have dedicated controllers themselves.
In many cases the I/O controller maps peripherals onto system address ranges and handles data transfer via direct memory access (DMA) to the processors system memory. I/O controllers can be configured to indicate when events or transfers happen using special signaling called interrupts. When a CPU receives an interrupt it knows that a task has been completed, an event has occurred concerning the I/O or data has been transferred and may require attention.
Many modern microprocessors and microcontrollers have I/O controller functionality built into them to reduce cost and size. These are used in embedded and special purpose applications (for example cell phones) where the I/O requirements are fixed, or tend to have similar requirements that can be allowed for.
171
Total Products







