# Channel I/O

En informàtica, l'E/S de canal és una arquitectura d'entrada/sortida (I/O) d'alt rendiment que s'implementa de diverses formes en diverses arquitectures d'ordinadors, especialment en ordinadors mainframe. En el passat, els canals generalment s'implementaven amb dispositius personalitzats, amb diferents noms de canal, processador d'E/S, controlador d'E/S, sincronitzador d'E/S o controlador DMA.

## Visió general

Moltes tasques d'E/S poden ser complexes i requereixen que s'apliqui la lògica a les dades per convertir formats i altres tasques similars. En aquestes situacions, la solució més senzilla és demanar a la CPU que gestioni la lògica, però com que els dispositius d'E/S són relativament lents, una CPU podria perdre temps esperant les dades del dispositiu. Aquesta situació s'anomena 'I/O bound'.
L'arquitectura del canal evita aquest problema processant part o tota la tasca d'E/S sense l'ajuda de la CPU, descarregant el treball a la lògica dedicada. Els canals són lògicament autònoms, amb suficient lògica i emmagatzematge de treball per gestionar tasques d'E/S. Alguns són prou potents o flexibles per ser utilitzats com a ordinador per si mateixos i es poden interpretar com una forma de coprocessador, per exemple, el canal de dades 7909 en un IBM 7090 o IBM 7094; tanmateix, la majoria no ho són. En alguns sistemes, els canals utilitzen memòria o registres adreçables pel processador central com a emmagatzematge de treball, mentre que en altres sistemes està present al maquinari del canal. Normalment, hi ha interfícies estàndard entre canals i dispositius perifèrics externs, i diversos canals poden funcionar simultàniament.
Una CPU normalment designa un bloc d'emmagatzematge com, o envia, un programa de canal relativament petit al canal per tal de gestionar tasques d'E/S, que el canal i el controlador poden, en molts casos, completar sense més intervenció de la CPU (excepció). : els programes de canal que utilitzen "interrupcions controlades per programa", PCI, per facilitar la càrrega de programes, la demanda de paginació i altres tasques essencials del sistema).
Quan s'ha completat la transferència d'E/S o es detecta un error, el controlador normalment es comunica amb la CPU a través del canal mitjançant una interrupció. Com que el canal normalment té accés directe a la memòria principal, també s'anomena controlador d'accés directe a la memòria (DMA).
En les implementacions més recents, el programa de canal s'inicia i el processador de canal realitza tot el processament necessari fins a una condició de finalització o una interrupció controlada per programa (PCI). Això elimina gran part de la interacció entre la CPU i el canal i millora molt el rendiment general del sistema. El canal pot informar de diversos tipus diferents de condicions finals, que poden ser inequívocament normals, poden indicar sense ambigüitats un error o el significat del qual pot dependre del context i dels resultats d'una operació de detecció posterior. En alguns sistemes, un controlador d'E/S pot sol·licitar un reintent automàtic d'algunes operacions sense intervenció de la CPU. En implementacions anteriors, qualsevol error, per petit que fos, requeria intervenció de la CPU i, en conseqüència, la sobrecàrrega era molt més gran. Certes operacions heretades encara utilitzen una interrupció controlada per programa (PCI), però la tendència és allunyar-se d'aquestes PCI, excepte quan sigui inevitable.

## Història

El primer ús de l'E/S de canal va ser amb el sistema central de tubs de buit IBM 709, el sincronitzador de dades Model 766 del qual va ser el primer controlador de canal, el 1957. El seu successor transistoritzat, l'IBM 7090, tenia de dos a vuit canals de 6 bits (el 7607) i un multiplexor de canals (el 7606) que podia controlar fins a vuit canals. El 7090 i el 7094 també podrien tenir fins a vuit canals de 8 bits amb el 7909.
Els sistemes informàtics que utilitzen E/S de canal tenen components de maquinari especials que gestionen totes les operacions d'entrada/sortida en la seva totalitat independentment de les CPU dels sistemes. La CPU d'un sistema que utilitza E/S de canal normalment només té una instrucció de màquina al seu repertori d'entrada i sortida; aquesta instrucció s'utilitza per passar ordres d'entrada/sortida al maquinari d'E/S especialitzat en forma de programes de canal. A continuació, l'E/S continua sense intervenció de la CPU fins que es produeix un esdeveniment que requereix una notificació del sistema operatiu, moment en què el maquinari d'E/S indica una interrupció a la CPU.

## Descripció

La implementació de referència de l'E/S de canal és la de la família de mainframes IBM System/360 i els seus successors, però IBM ha adoptat implementacions similars en altres línies, per exemple, 1410 i 7010, 7030, i altres venedors de mainframe, com ara com Control Data, Bull (General Electric / Honeywell) i Unisys.

## Tipus de canals

Els canals es diferencien pel nombre i el tipus d'operacions d'E/S concurrents que admeten. En terminologia d'IBM, un canal multiplexor admet una sèrie d'operacions de velocitat lenta entrellaçades simultàniament, cadascuna transferint un byte des d'un dispositiu alhora. Un canal selector admet una operació d'alta velocitat, transferint un bloc de dades alhora. Un multiplexor de blocs admet una sèrie de programes de canal lògicament concurrents, però només una transferència de dades d'alta velocitat alhora.
Els canals també poden diferir en com associen els dispositius perifèrics amb les memòries intermèdies d'emmagatzematge. En terminologia UNIVAC, un canal pot ser un índex especificat internament (ISI), amb un sol buffer i un dispositiu actius alhora, o un índex especificat externament (ESI), amb el dispositiu seleccionant quin buffer utilitzar.

## Referències

* ↑ «I/O Channels and its types» (en anglès americà), 22-04-2020. [Consulta: 3 desembre 2023].
* ↑ «16.2: Types of I/O» (en anglès), 01-03-2022. [Consulta: 3 desembre 2023].
* ↑ «IBM Archives: 709 Data Processing System». 03.ibm.com, 23-01-2003. [Consulta: 22 gener 2014].
* ↑ «IBM Archives: 7090 Data Processing System (continued)». 03.ibm.com, 30-12-1958. [Consulta: 22 gener 2014].