Skip to content

通道方式

2026 大纲 六(三)I/O 方式只列程序查询、程序中断、DMA 三条,没有通道方式。留着这一节,是因为通道是 DMA 之上的一层,把这个层级关系搞清楚,反过来能把仍在纲内的 DMA 的能力边界看得更准。本节读一遍建立层级感即可,不必记忆细节

DMA 卸掉了搬运,没卸掉组织

DMA 把数据搬运整个从 CPU 手里拿走了,但有一样东西没拿走:组织。每一次块传送的主存首址、传送个数、传送方向,仍然要 CPU 一个个写进 DMA 控制器的寄存器;这一块传完了接着传哪一台、传到哪里去,也还是 CPU 在安排。一台设备时这点开销不算什么,可大中型机上挂着几十上百台外设——每台配一个专用的 DMA 接口,硬件成本高、冲突仲裁逻辑膨胀,光是初始化就能吃掉大量 CPU 时间。

于是再往前推一层:把"组织"也交出去。做法是让那个部件不再只是执行一组固定参数,而是能自己从主存里取出一段程序来执行。这就是通道

通道与 DMA 控制器的分界,只有这一条:能不能自己取指令执行。 DMAC 是定制硬件,行为完全由 CPU 预先写进 AR / WC / CR 的参数决定,做完一次就停下来等下一次设置,它不取指令;通道有自己的指令系统,CPU 只发一条启动命令,它就从主存取出一段通道程序执行,自主完成设备选择、数据传送、缓冲管理、错误处理,整批任务做完才发一次中断。能否自己取指令执行,就是"控制器"与"处理器"的分水岭,本篇后面的其余差别全是这一条的推论。

不过通道也不是一个完整的处理器,三条限制把它按在从属位置上:指令类型单一(基本只有与 I/O 有关的指令)、没有自己的内存(通道程序放在主存里,与 CPU 共享)、必须由 CPU 的 I/O 指令来启动、停止或改变工作状态,不能独立工作。

一、通道是什么

通道是负责管理 I/O 设备、实现主存与 I/O 设备之间交换信息的部件,可以视为一种具有特殊功能的处理器——按上面那条分界,它是从属于 CPU 的一个专用处理器

二、通道指令与 I/O 指令不是一回事

I/O 指令通道指令
属于谁的指令系统CPU 的指令系统的一部分通道自身的指令
由谁译码执行CPU通道
存放在哪用户 / 内核程序里,和普通指令混排由管理程序放在主存中,由通道取出执行
干什么在有通道的机器里,不实现数据传送;只负责启 / 停 I/O 设备、查询通道与设备状态实现真正的 I/O 操作:读、写、磁带走带、磁盘找道等
又称通道控制字(CCW)

一条通道指令通常要指明:参与传送的数据在主存中的首地址、传送的字节数(或末地址)、所选设备的设备码、以及本次操作的命令码,位数因此比普通指令长得多。若干条通道指令组成一段通道程序,完成"某台外设与主存之间传送一批信息"这样一个完整任务。

CPU 执行一条 I/O 指令启动通道通道从主存取通道程序并执行任务全部完成后发一次中断

三、层级关系:一层管一层

CPU通道设备控制器I/O 设备
层级执行什么负责什么
CPUI/O 指令发出"启动通道"命令,之后不再过问
通道通道程序选设备、组织数据传送、缓冲管理、错误处理
设备控制器通道命令直接驱动某台设备完成传送
I/O 设备物理读写

这是一棵扇出的树:一个通道可以连多个设备控制器,一个设备控制器又可以控制若干台同类型设备。CPU 面对的不再是几十个接口,而是几个通道。

扇出带来的好处是明显的,但它也埋着一个反直觉的问题:通道少反而会成为瓶颈。通道价格昂贵、数量有限,某台设备通往主存的路径上只要有一个通道或控制器已被占用,这台设备就启动不了——哪怕它自己是空闲的。解法不是简单地加通道,而是增加设备到主机之间的通路(多通路 I/O 系统),让同一台设备有多条路可走,既缓解瓶颈又提高可靠性。

四、三种通道及其适用场景

通道按信息交换方式分三种,差别可以用一个问题串起来:同一时刻,通道能不能同时为多台设备服务?

  • 字节多路通道:按字节交叉方式工作,内含许多非分配型子通道(可达几十到数百个),每个子通道接一台设备,各子通道以时间片轮转共享主通道——A 传完一个字节让给 B,B 传完让给 C,轮完一圈再回到 A。送往主机的数据流因此是交织的:A1,B1,C1,,A2,B2,C2,
  • 选择通道(数组选择通道):按数组(成块)方式传送,可连接多台高速设备,但只含一个分配型子通道——一段时间内只能执行一道通道程序、只为一台设备服务,某台设备一旦占用就独占到底
  • 数组多路通道:既按数组方式传送(保住高速率),又含多个非分配型子通道(保住分时并行),某台设备传完一块就让出通道。
通道类型传送粒度同时服务多台设备子通道类型适用设备
字节多路字节(字节交叉轮转)非分配型,数量多大量低速设备
选择数据块(独占)分配型,仅一个少数高速设备
数组多路数据块(按块交替)非分配型,多个多台高、中速设备

一句话串起来:字节多路牺牲速率换并行,选择通道牺牲并行换速率,数组多路把粒度调到"块"这一档,两头都要。

两处代价值得点明。字节多路的问题在于:一台设备两次被服务之间,要等其余所有子通道轮完一圈——设备速率一高,等不及就会丢数据,所以它只能接低速设备。选择通道的问题在于:独占是彻底的,某台设备占住通道之后即使中途暂时无数据可传、通道在空转,别的设备也进不来,通道利用率因此很低。数组多路正是同时避开这两处:按块传送保住速率,块与块之间让出通道保住并行。

五、I/O 系统演进的四个阶段

阶段形态CPU 从中脱身的部分
直接连接(早期,无接口)
接口模块与 DMA中断使 CPU 与外设并行;DMA 让数据不经过 CPU
通道结构组织 I/O 的工作也交出去,CPU 只发启动命令
I/O 处理机(外围处理机)基本独立于主机工作,还能做码制变换、格式处理、数据块检错纠错

每一步的方向都是同一个:降低 CPU 在 I/O 中的介入程度。这条轴的完整刻度见 I/O 方式对比

考点速记

  1. DMA 卸掉了"搬运"、没卸掉"组织",这是通道出现的动因;通道 = 能执行通道程序的专用处理器,与 DMA 控制器的分界是能否自己取指令执行
  2. 通道不是完整处理器(指令类型单一、无自己的内存、必须由 CPU 启动);I/O 指令属于 CPU(在有通道的机器里只负责启停与查状态),通道指令属于通道、又称 CCW,它才实现真正的数据传送;层级是 CPU → 通道 → 设备控制器 → 设备
  3. 三种通道:字节多路(字节交叉轮转,接大量低速设备)/选择(成块但独占,利用率低,接少数高速设备)/数组多路(成块 + 按块交替,接多台高中速设备,最实用)。

这一节在真题里的位置

2026 大纲的「六(三)I/O 方式」只列了程序查询、程序中断、DMA 三条,不含通道方式,因此本篇没有对应的真题、也不设考法清单——下方「真题练习」是空的,这不是漏挂标签。

那么这一篇要读到什么程度?只需要在别处读到"通道"这个词时,知道它是什么、站在哪一层:它是 DMA 之上的一层,与 DMA 控制器的唯一分界是能不能自己取指令执行;I/O 指令归 CPU、通道指令归通道,两者不是一回事。上面三条速记读一遍建立层级感即可。

复习优先级:不必投入。 三种通道的适用场景、子通道是分配型还是非分配型、通道程序怎么组织,这些细节不用记。这一篇真正的价值是反过来的——把通道这一层看清楚,才能准确判断 DMA 的能力边界:DMA 到底卸掉了什么、没卸掉什么。仍在纲内的那部分在 DMA 方式

提示:本篇内容不在 2026 大纲范围内。若 9 月发布的新大纲有调整,以新大纲为准。

教材出处
  • I/O 系统发展的四个阶段(直接连接、接口模块与 DMA、通道结构、I/O 处理机);大中型机中 DMA 方式的两个问题;通道的定义"可以视为一种具有特殊功能的处理器……有专用的通道指令,能独立地执行用通道指令所编写的输入输出程序,但不是一个完全独立的处理器":唐朔飞《计算机组成原理》第 3 版 §5.1,印刷页 p156~p157
  • 通道指令与 I/O 指令的区别、通道指令又称通道控制字(CCW)、通道程序;一个通道可连多个设备控制器、一个控制器可连多台设备:同书 §5.1,印刷页 p158

相关知识

DMA 方式程序查询方式与程序中断方式I/O 方式对比I/O 系统概述

真题练习

通道方式已不在现行大纲内,题库中没有对应题目。相关练习请转到仍在纲内的 DMA 方式程序查询方式与程序中断方式