In computing and especially in computer hardware, a controller is a chip, an expansion card, or a stand-alone device that interfaces with a peripheral device. This may be a link between two parts of a computer (for example a memory controller that manages access to memory for the computer) or a controller on an external device that manages the operation of (and connection with) that device.
The term is sometimes used in the opposite sense to refer to a device by which the user controls the operation of the computer, as in game controller.
In desktop computers the controller may be a plug in board, a single integrated circuit on the motherboard, or an external device. In mainframes the controller is usually either a separate device attached to a channel or integrated into the peripheral.
In IBM terminology a controller is "a device that decodes the [channel] command and effects the operation of the device.":p.5-1
In most mainframe systems a device-independent channel usually attaches to the CPU and to a controller or control unit which implements device-dependent logic for attaching specific devices. The functions performed by the control unit are similar to the functions performed by a device driver program on smaller systems. Some devices have integrated control units, which are logically discrete but are included with the device rather than requiring a separate box. Often a control unit can attach to multiple channels connected to a single or multiple systems. Some mainframe control units are:
IBM 2821 Control Unit, used to attach card readers, punches and line printers to IBM System/360 and IBM System/370 computers
IBM 270x and IBM 37xx, used for telecommunications
IBM 3271, 3272, 3271, and 3174, used to attach terminals (display devices)