In This Article
What is I/O Controller (IOC)?
In technical terms, the input/output controller refers to the set of microchips. It facilitates data communication between the motherboard of a computer system and the Central Processing Unit.
- The primary function of the I/O controller is to help the peripheral devices interact with the control units. In simple words, it helps in connecting the peripheral devices and controlling their operations.
- The controller is typically found on the motherboard of a computer. It can be used as an accessory, apart from adding more peripheral devices to the computer system.
- The faster the IOC, the faster will be the communication between the CPU and the peripheral devices, which will result in higher processing speed and system performance.
- Every input and output device and interface type needs a controller. It is due to the heterogeneity of them.
Understanding the I/O Controller (IOC)
The modern CPU developed and operated at a higher speed. Therefore, it needed faster transmission of data from the control units and the different peripheral devices connected to the computer system.
This need is met by the I/O controllers which are also known by different names such as:
- Channel I/O
- Peripheral processors
- PIOC or Peripheral Input/output Controller
- I/O processors
- Input/output interface and
- DMA controllers.
The IOC typically receives instructions from the CPU and then sends them to the target devices. In addition to that, the controller also controls data communications.
As a result, the IOC saves the processing power of the processor which prevents it from being wasted during the data transmission process.
Usually installed on the motherboard, these controllers will enhance the processing speed and overall performance of the system if they are fast in the first place.
Moreover, these devices can allow adding more input or output devices to the computer or perform as an internal add-on component that replaces a malfunctioning I/O controller on the motherboard.
However, these controllers can usually accommodate only a few specific and common devices.
The unique devices, on the other hand, will need a separate I/O controller to perform. These should be connected through an expansion slot to the computer system.
The PIOC simplifies the communication between the devices and the computer system based on a specific set of requirements and three specific aspects, such as:
- Where – This identifies the location of the device involved in a communication
- What – This determines the type, sender, or receiver of the communication, and
- How – This determines the number of bytes to be communicated and the file or memory from which they are to be communicated.
In addition to that, the controller is also involved in other functions, such as:
- Initiating the operation by addressing the device
- Directing the device and communicating the operation
- Controlling the data flow and
- Closing of the operation by informing the CPU with a Done or Not Done status.
The addresses to the registers of the I/O controllers are allocated in two particular ways, such as:
- I/O mapped and
- Memory mapped.
In the first method, port numbers are given to the registers, and these can be accessed only through special instructions such as IN and OUT.
Here, IN represents reading data from the data or status registers, and OUT represents writing on the data register or the command register.
In the second method, part of the memory address is allotted to the input output device.
This eventually helps in reducing the required amount of control signals for reading and writing on the system bus.
I/O Controller Types
Depending on the operation techniques, the I/O controllers can be categorized into three types namely, Programmed I/O controllers, Interrupt Drive I/O controllers, and Direct Memory Access or DMA controllers.
In the programmed I/O controller, everything is under the continuous and direct control of the program that requests an operation.
In the interrupt-driven I/O controller, the command is issued by the program and is executed until the I/O hardware interrupts, which indicates the end of the operation.
And the DMA controller comes with a special type of I/O processor that controls the operation while moving larger chunks of data.
I/O Controller on Motherboard
The I/O controller on the motherboard controls the data transfer between a variety of low- and high-bandwidth input and output devices and the CPU, as well as the memory controllers, along with the information and yield of the chipset.
It also interfaces the external peripherals.
I/O Controller in the Operating System
The operating systems have a specific part of code that is responsible for managing the I/O order. This enhances the performance of the computer and the reliability of the operating system.
The I/O controller helps the operating system handle different operation requests and instructions.
These requests are managed by the IOC in combination with a few other system programs within the I/O device that improve the performance of the operating system.
The operating system can serve these requests in three easy parts, such as:
- I/O traffic controller, which monitors the status of all control units, communication channels, and devices
- The I/O scheduler, which carries out the policies of the operating system, helps in allocating and accessing the devices, communication channels, control units, and
- I/O device handler, which manages the data transfer process and serves device interrupts.
In the entire process, the I/O controller plays the most significant role in managing the traffic, and for that, it performs these fundamental tasks such as:
- Checking the availability of a path, at least one
- Checking whether or not there are multiple paths available for data transfer
- Choosing the most appropriate path for transfer if multiple paths are available and
- Analyze which path will be quickly available if all of them are occupied.
However, the functions of the I/O scheduler and device handler are also quite important since these control the allocation of devices, communication channels, and control units.
They also decide which request is to be served first by helping the operating system manage the queues and scheduling the algorithm to manage the I/O interrupts, if any.
In order to complete these operations, the I/O controller has different parts that are responsible for different functions and equipped with different circuitry, different types of registers, and logic.
Typically, the parts of the IOC are:
- The data register
- Status register
- Control register
- Control circuitry and
- Address decoding logic.
With all these components in it, these controllers are connected to the system bus, which it has to compete for and obtain when it wants to use it.
I/O Controller Example
You will find an I/O controller in almost every input and output device, such as printers, audio speakers, digital cameras, sensors, relays, actuators, operation switches, Network Interface Cards, modems, and others.
I/O Controller Hub
It also connects and controls peripheral devices and helps manage data flow and communication between the motherboard and the CPU of a computer system.
Though an ICH refers to the Southbridge family, it is designed in such a way that it can be paired with Northbridge, the second support chip.
There are different versions of ICH available, and each of these has different variants and features.
The first version, ICH, was released in June 1999 as a point-to-point connection. It came in two varieties, such as:
- 82801AA (ICH) that offered Ultra ATA/66 support, alert on LAN support, and 6 PCI slots and
- 82801AB (ICH0), which offered Ultra ATA/33 support and 4 PCI slots but no alert on LAN.
The ICH 2 came in the early 2000s in two specific variants, such as:
- 82801BA and
- The mobile 82801BAM (ICH2-M).
In 2001, Intel came up with ICH 3, which was available in two variants, such as:
- 82801CA (ICH3-S) for server and
- 82801CAM (ICH3-M) for mobile.
ICH 4 was launched in 2002 with USB 2.0 support on all six ports and improved sound support and was available in two variants, such as:
- 82801DB base version and
- 82801DBM (ICH4-M) base mobile version.
ICH 5 came out in 2003 with an integrated SATA or Serial Advanced Technology Attachment host controller and was available in the following variants:
- 82801E (C-ICH) for communications
- 82801ER (ICH5R) with RAID or Redundant Array of Independent Disks support
- 82801EBM (ICH5-M) base mobile version and
- 6300ESB (ESB) with enterprise Southbridge support.
ICH 6 was the first version that supported PCI Express ports and was available in the following variants:
- 82801FB (ICH6)
- 82801FR (ICH6R) with RAID support
- 82801FBM (ICH6M) base mobile version
- 6311ESB (ESB2) with enterprise Southbridge support and
- 6321ESB (ESB2) with enterprise Southbridge support and an integrated Local Area Network.
ICH 7 was released in 2005 in the following versions:
- 82801GR (ICH7R) with RAID support
- 82801GDH (ICH7DH) with Digital Home
- 82801GBM (ICH7M) mobile version
- 82801GHM (ICH7M DH) with Mobile Digital Home feature
- PC82801GU (ICH7-U) ultra-mobile version.
ICH 8 came with Gigabit Ethernet and eSATA and was available in different variants, such as:
- 82801HR (ICH8R) with RAID support
- 82801HH (ICH8DH) with Digital Home
- 82801HO (ICH8DO) with Digital Office
- 82801HM (ICH8M) mobile version
- 82801HBM (ICH8BM) base mobile version and
- 82801HEM (ICH8EM) enhanced mobile version.
ICH 9 came out in 2007 with no PATA support and was available in the following versions:
- 82801IB with no AHCI or RAID support but simple BIOS mod allowed adding support for Advanced Host Controller Interface
- 82801IR (ICH9R) with AHCI and RAID support
- 82801IH (ICH9DH) with Digital Home and AHCI support but no RAID support
- 82801IO (ICH9DO) with Digital Office, AHCI and RAID support
- 82801IBM (ICH9M) base mobile version
- 82801IEM (ICH9EM) enhanced mobile version and
- 82801IUX (ICH9M-SFF) ultra mobile version.
And, ICH 10 was released in 2008 with DMI or Desktop Management Interface and other features and available in different variants such as:
- 82801JR (ICH10R) with RAID support
- 82801JH (ICH10D) with Digital Home and
- 82801JO (ICH10DO) with the Digital Office feature.
Super I/O Controller
Super I/O is a special type of I/O controller IC or Integrated Circuit that was first used in the 1980s on the motherboards of personal computers. It was initially used as add-in cards but later on was implanted on the motherboard.
These special chips can combine the different interfaces of a wide range of I/O devices with low bandwidth.
In addition to that, the Super I/O on the motherboard performs some vital functions by acting as follows:
- A floppy disk controller
- One or more additional serial port UARTs, or Universal Asynchronous Receiver-Transmitters, that are 16C550 compatible
- A parallel port, especially in printers that are Institute of Electrical and Electronics Engineers or IEEE 1284 compatible,
- A controller for PS/2 keyboard and mouse.
Most of these chips come with some useful features, such as:
- Chassis intrusion detection
- Thermal Zone
- Voltage, temperature, and fan speed interface
- LED management
- Power management for the main board
- PWM or Pulse Width Modulation fan speed control
- A consumer infrared or IR receiver
- An IrDA, or Infrared Data Association Port controller
- A game port
- A watchdog timer
- A MIDI port
- Legacy plug and play or ACPI support for the devices connected and
- A few GPIO or General Purpose Input/Output pins.
Since one single chip can perform a wide range of functions, the Super I/O reduces the number of parts required on a motherboard, which reduces the cost of production.
The use of these chips is extensive and is expected to increase down the road because Intel is substituting the LPC, or Low Pin Count bus, which is used by Super I/O chips, with the Enhanced Serial Peripheral Interface, or eSPI bus.
I/O Controller Functions
The main function of an input/output controller is to take in input and output requests from the CPU and relieve some load from it.
It deals with these devices directly and acts like a bridge between the memory, CPU, and other devices. It takes care of all the communications needed to be made by these devices with the vital parts of the computer system.
The IOC also performs as the buffer during data transfer and handles the control signals based on the device while managing the flow of data to and from it.
As said earlier, the IOC comes with different components, and each of them has different functions to perform for the proper working of the controller.
The data register handles the actual data transfer. Depending on the device, the controller may have data in or data out registers, and also a buffer if it is a fast device so that a certain amount of data can be stored there to send to the memory when the system bus is free.
The registers of each I/O controller are given a unique address, and the address bus has address decoding logic.
The register that is to be accessed is indicated by the value of the address bus, and the decoding logic changes it into an address selection signal for the respective registers.
The control circuitry of the PIOC is linked with the different control signals used by the system bus. These are:
- BREQ and others.
The validation and synchronization of the data and address on the bus are ensured by the control signals asking for a transfer of data. It sends an interrupt after the end of the operation, normal or abnormal.
The control register deals with specific information such as:
- The device address
- The operation command
- The operations process
- The number of data bytes to transfer
- The communication expected by the CPU after data is transferred to the memory
- Mode settings and more.
The status register is responsible for other functions of the I/O controller by holding and providing specific information such as:
- The device selected
- The status of it
- The particular error information, if a device is not online and ready
- The data transfer status of the device
- Whether or not it was a successful data transfer and
- The pending word count of data to be transferred to and from the memory.
A crucial part of the status register is an interrupt bit, which actually reasons with the substance of the register.
In simple words, the I/O controllers follow several special interface standards during operation at different speeds while transferring data at a lower rate for devices like keyboards and mice, a medium rate for the Universal Serial Bus, and a higher rate for solid-state disks and others.
The Input/Output controllers play a very important role in the functioning of the devices as well as the computer system on the whole by managing the communication between them and the memory and CPU.
It also handles the data flow most efficiently, even by acting as a buffer as and when required.