本章学习目标输入/输出系统其作用是实现主机与外部设备之间的信息交换。它由 I/O 接口、I/O 管理部件及有关软件构成。通过本章的学习,理解总线以及接口的基本概念,熟悉外围设备与计算机之间信息交换的基本原理,掌握程序中断方式 I/O 的流程,熟悉 DMA 方式 I/O 的流程。
6.1.1 磁记录原理计算机的外存储器又称磁表面存储设备。所谓磁表面存储,是用某些磁性材料薄薄地涂在金属铝或塑料表面作载磁体来存储信息。磁盘存储器、磁带存储器均属于磁表面存储器。磁表面存储器的优点:(1)存储容量大,位价格低;(2)记录介质可以重复使用;(3)记录信息可以长期保存而不丢失,甚至可以脱机存档;(4)非破坏性读出,读出时不需要再生信息。磁表面存储器的缺点:存取速度较慢,机械结构复杂,对工作环境要求较高。磁表面存储器由于存储容量大,位成本低,在计算机系统中作为辅助大容量存储器使用,用以存放系统软件、大型文件、数据库等大量程序与数据信息
,磁性材料被磁化以后,工作点总是在磁滞回线上。只要外加的正向脉冲电流(即外加磁场)幅度足够大,那么在电流消失后磁感应强度 B 并不等于零,而是处在+Br 状态(正剩磁状态)。反之,当外加负向脉冲电流时,磁感应强度 B 将处在-Br 状态(负剩磁状态)。这就是说,当磁性材料被磁化后,会形成两个稳定的剩磁状态,就像触发器电路有两个稳定的状态一样。如果规定用+Br 状态表示代码“1”,-Br 状态表示代码“0”,那么要使磁性材料记忆“1”,就要加正向脉冲电流,使磁性材料正向磁化;要使磁性材料记忆“0 ”,则要加负向脉冲电流,使磁性材料反向磁化。磁性材料上呈现剩磁状态的地方形成了一个磁化元或存储元,它是记录一个二进制信息位的最小单位。二、记录方式形成不同写入电流波形的方式,称为记录方式。记录方式是一种编码方式,它按某种规律将一串二进制数字信息变换成磁层中相应的磁化元状态,用读写控制电路实现这种转换。在磁表面存储器中,由于写入电流的幅度、相位、频率变化不同,从而形成了不同的记录方式。常用记录方式可分为不归零制(NRZ),调相制(PM),调频制(FM)几大类。三、磁表面存储器存取信息的原理通过电-磁变换,利用磁头写线圈中的脉冲电流,可把一位二进制代码转换成载磁体存储元的不同剩磁状态;反之,通过磁-电变换,利用磁头读出线圈,可将由存储元的不同剩磁状态表示的二进制代码转换成电信号输出。
图 6.1.1-2 磁表面存储器存取信息的原理四、磁表面存储器的读写原理在磁表面存储器中,利用一种称为磁头的装置来形成和判别磁层中的不同磁化状态。磁头实际上是由软磁材料做铁芯绕有读写线圈的电磁铁。(一)写操作当写线圈中通过一定方向的脉冲电流时,铁芯内就产生一定方向的磁通。由于铁芯是高导磁 率材料,而铁芯空隙处为非磁性材料,故在铁芯空隙处集中很强的磁场。 在这个磁场作用下,载磁体就被磁化成相应极性的磁化位或磁化元。若在写线圈里通入相反方向的脉冲电流,就可得到相反极性的磁化元。如果我们规定按图中所示电流方向为写“1 ”,那么写线圈里通以相反方向的电流时即为写“0”。上述过程称为写入。显然,一个磁化元就是一个存储元,一个磁化元中存储一位二进制信息。当载磁体相对于磁头运动时,就可以连续写入一连串的二进制信息。(二)读操作当磁头经过载磁体的磁化元时,由于磁头铁芯是良好的导磁材料,磁化元的磁力线很容易通过磁头而形成闭合磁通回路。不同极性的磁化元在铁芯里的方向是不同的。当磁头对载磁体作相对运动时,由于磁头铁芯中磁通的变化,使读出线圈中感应出相应的电动势 e,其值为:E=-k*dΦ/dt 负号表示感应电势的方向与磁通的变化方向相反。不同的磁化状态,所产生的感应电势方向 不同。这样,不同方向的感应电势经读出放大器放大鉴别,就可判知读出的信息是“1”还 是“0”。图 6.1.1-3 为记录方式的写读过程波形图。
一、磁盘上信息的分布磁盘依赖带磁介质表面的旋转盘片并使用一个可以移动的读/写磁头来访问。磁盘存储是非易失性的。当停止供电后,存储设备还能够保持数据。磁盘可由一叠盘片(1-4 个)构成,每张盘片有两个可记录数据的磁盘面。盘片以 5400—15000 RPM(转/分)的速度旋转,盘片直径从 1-3.5 英寸不等。每一个盘面被分成许多磁道,每一个磁盘面一般有 10000-50000 条磁道。每个磁道又被分成一些记录信息的扇区;每条磁道可以有 100-500 个扇区;扇区的大小通常有 512 ~4 096 个字节。在磁介质中一般顺序存放着扇区号、间隔、存储在扇区的带有纠错码的信息、间隔和下一个扇区的扇区号等。磁道的编址是从外向内依次编号,最外一个同心圆叫 0 磁道,最里面的一个同心圆叫 n 磁道,n 磁道里面的圆面积并不用来记录信息。扇区的编号有多种方法,可以连续编号,也可间隔编号。磁盘记录面经这样编址后,就可用 n 磁道 m 扇区的磁盘地址找到实际磁盘上与之相对应的记录区。除了磁道号和扇区号之外,还有记录面的面号,以说明本次处理是在哪一个记录面上。例如对活动头磁盘组来说,磁盘地址是由记录面号(也称磁头号)、磁道号和扇区号三部分组成。在磁道上,信息是按区存放的,每个区中存放一定数量的字或字节,各个区存放的字或字节数是相同的。为进行读/写操作,要求定出磁道的起始位置,这个起始位置称为索引。索引标志在传感器检索下可产生脉冲信号,再通过磁盘控制器处理,便可定出磁道起始位置 。磁盘存储器的每个扇区记录定长的数据,因此读/写操作是以扇区为单位一位一位串行进行的。每一个扇区记录一个记录块
为了读/写信息,磁头必须移动到正确的位置上。每个磁盘面的磁头都被连在一起并且一起移动,因此每个磁头会处在每个面的相同磁道上。柱面这个术语是指:当磁头定位在盘面的某个给定位置,磁头下所有的盘面对应的磁道所形成的柱面。二、磁盘存储器的技术指标磁盘存储器的主要指标包括存储密度、存储容量、存取时间等。存储密度 存储密度分道密度、位密度和面密度。道密度是沿磁盘半径方向单位长度上的磁道数,单位为道/英寸。位密度是磁道单位长度上能记录的二进制代码位数,单位为位/英寸。面密度是位密度和道密度的乘积,单位为位/平方英寸。存储容量一个磁盘存储器所能存储的字节总数,称为磁盘存储器的存储容量。存储容量有格式化容量和非格式化容量之分。为了访问数据,操作系统必须通过—个分三个阶段完成的进程来指挥磁盘。第一步,把磁头定位到正确的磁道上,这个操作叫做寻道,磁头找到正确磁道的时间被称为寻道时间( seek time)。磁盘制造商在使用手册中报告了最小寻道时间、最大寻道时间和平均寻道时间。前两种很容易测量,但是平均寻道时间由于与寻道距离有关而有多种解释。工业界用所有可能的寻道时间总和除以可能发生的寻道次数来计算平均寻道时间。平均寻道时间一般宣传为 3-13 ms,但是依赖于应用和对磁盘请求的调度,由于磁盘访问的局部性,实际的平均寻道时间仅仅为上述数值的 25%一 33%。这种局部性的出现一方面是由于同一个文件的连续访问操作,另一方面由于揉作系统尽量把相邻地址的操作安排在一起。磁头一旦到达正确的磁道,我们必须等待正确的扇区旋转到读/写磁头下面,这段时间被称为旋转时间。取得所要的信息的平均延时是磁盘旋转半周所需的时间。因为磁盘旋转速度是 5400-15 000 RPM,所以平均旋转延时是在 0.5 转 2.0-5.6ms 之间。(5400RPM-15000RPM)磁盘存取的最后一个要素是传输时间,即传输一块数据所需的时间。传输时间是扇区大小、旋转速度和磁道记录密度的函数。在 2008 年,传输速率处于 70 MB/s 和 125 MB/s 之间。一个使得问题复杂化的因素是大部分的磁盘控制器中都有一个内置缓存来保持存储访问过的扇区;而通过这个缓存的数据传输速率通常都相当高,2008 年可以达到 375 MB/s,即 3 Gbit/s。如今,大多数磁盘以多个扇区为单位进行传输。磁盘控制器通常用来具体地控制磁盘以及磁盘与内存之间的数据传输。控制器导致磁盘存取时间又多了一项——控制器时间(controller time),它是执行 I/O 存取操作时控制器带来的开销。执行 I/O 操作的平均时间将由这四段时间组成,此外还有因其他程序使用磁盘而带来的等待时间。平均磁盘存取时间=平均寻道时间+平均旋转延迟+传输时间+控制器开销
6.2.1 总线的基本概念一、总线基础在计算机系统中,不同的子系统必须具有连接彼此的接口。比如,内存和处理器需要通信,处理器和 I/O 设备也需要通信。多年以来,这些工作都是由总线来完成的。总线是一条共享的通信链路,它用一套线路来连接多个子系统。总线结构的两个主要优点是功能多和成本低。通过定义一种连接方案,就能够方便地添加新设备,外围设备也可以在使用同类总线的计算机系统之间移动。而且,因为同一套线路被多个路径共享,所以总线具有较好的成本效益。总线的主要缺点是它会产生通信瓶颈,这可能会限制 I/O 的最大吞吐量。当 I/O 数据传输必须通过单个总线的时候,这条总线的带宽就会限制 I/O 的最大吞吐量。如何设计总线系统,使其能够满足处理器的要求并能够接纳大量的 I/O 设备,是我们面临的一大挑战。总线设计非常困难,其中的一个原因是最高总线速度在很大程度上被如下物理因素所限制:总线长度、设备数量。这种物理上的限制使我们不能任意快地运行总线。另外,要支持一系列延迟和数据传输率各不相同的设备也使得总线设计极富挑战性。由于时钟偏差和信号反射的问题,高速的并行线路很难实现,因此工业界从并行的共享总线转变到带开关的高速串行的点对点互联。总线通常包括一套控制线路和一套数据线路。控制线路用来传输请求和确认信号,并指出数据线上的信息类型。总线的数据线在源和目的之间传递信息。这种信息可能包括数据、复杂指令或者地址。比如,如果磁盘要把磁盘扇区中的数据写入内存,内存地址和磁盘的实际数据都会通过数据线来传输。控制总线则指明了在传输过程中每一刻数据线包含的信息种类。一些总线用两套信号线在一次总线传输中分别传送数据和地址。不管在哪种情况下,控制总线都要遵循总线协议,并指出总线传输的内容。由于总线是共享的,所以我们还需要一个协议来决定谁下一个使用;让我们考虑一个典型的总线事务。一个总线事务包括两个部分:发送地址和接收/发送数据。对内存进行的操作区分不同的总线事务。读事务是从内存传出数据(到处理器或一个 I/O 设备),而写事务则是向内存写入数据。显然这种术语是含混的。为了避免这种含混,我们将用输入和输出这两个词,它们总是从处理器的观点来定义的:一次输入操作指的是从设备输入数据到内存中去,使处理器可以进行读取,而一次输出操作是把处理器写入内存的数据输出到设备上。传统上,总线可分为处理器一内存总线和 I/O 总线。处理器一内存总线长度短,速度通常很高,而且配合内存系统使内存一处理器的带宽达到最大。与之形成对比的是 I/O 总线,它可以很长,可以连接很多类型的设备,且经常要连接多种具有不同数据带宽的设备。I/O 总线一般不和内存直接连接而是通过处理器一内存总线或背板总线连接到内存上。I/O 总线被用作扩展机器和连接新外设的手段。为了简便起见,计算机业界发展了几套标准。标准作为计算机制造商和外围设备制造商的规范说明。对于计算机设计者,标准保证了外设对于新机器是可用的;对于外设制造者,标准保证用户能够使用他们的新设备。二、总线的连接方式由于外围设备种类繁多,速度各异,不可能简单地把外围设备连接在 CPU 上。因此必须寻找一种方法,以便将外围设备同某种计算机连接起来,使它们在一起可以正常工作。通常,这项任务用适配器部件来完成。通过适配器可以实现高速 CPU 与低速外设之间工作速度上的匹配和同步,并完成计算机和外设之间的所有数据传送和控制。适配器通常简称为接口。大多数总线都是以相同方式构成的,其不同之处仅在于总线中数据线和地址线的宽度,以及控制线的多少及其功能。然而,总线的排列布置与其他各类部件的连接方式对计算机系统的性能来说,将起着十分重要的作用。根据连接方式不同,单机系统中采用的总线结构有两种基本类型:单总线结构、多总线结构。(一)单总线结构在许多单处理器的计算机中,使用一条单一的系统总线来连接 CPU、主存和 I/O 设备,叫做单总线结构。如图 6.2.1-1 所示。
图 6.2.1-1 单总线结构在单总线结构中,要求连接到总线上的逻辑部件必须高速运行,以便在某些设备需要使用总线时,能迅速获得总线控制权,而当不再使用总线时,能迅速放弃总线控制权,否则,由于一条总线由多种功能部件共用,可能导致很大的时间延迟。(二)双总线结构这种结构保持了单总线系统简单、易于扩充的优点,但又在 CPU 和主存之间专门设置了一组高速的存储总线,使 CPU 可通过专用总线与存储器交换信息,并减轻了系统总线的负担,同时主存仍可通过系统总线与外设之间实现 DMA 操作,而不必经过 CPU。当然这种双总线系统以增加硬件为代价。1.存储总线存储总线是 CPU 与内存交换信息的高速存储总线。设置存储总线的好处:减轻系统总线的负担。2.系统总线各部件可通过系统总线交换信息,并可实现直接内存储器存取(DMA)操作。优点:系统结构灵活,可扩充性强,吞吐量大。缺点:增加了硬件的复杂性。如图 6.2.1-2 所示。
图 6.2.1-2 双总线结构(三)三总线结构它是在双总线系统的基础上增加 I/O 总线形成的。在 DMA 方式中,外设与存储器间直接交换数据而不经过 CPU,从而减轻了 CPU 对数据输入输出的控制,而“通道”方式进一步提高了 CPU 的效率。通道实际上是一台具有特殊功能的处理器,又称为 IOP(I/O 处理器),它分担了一部分 CPU 的功能,以实现对外设的统一管理及外设与主存之间的数据传送。由于增加了 IOP,使整个系统的效率大大提高。然而这是以增加更多的硬件代价换来的。如图 6.2.1-3 所示。
图 6.2.1-3 三总线结构 1.存储总线。2.系统总线是 CPU、内存和通道间进行数据传送的公共通路。3.I/O 总线是多个外设与通道间进行数据传送的公共通路。
6.2.2 总线通信方式与仲裁一、总线通信方式总线通信的两种基本方式是同步和异步。如果总线是同步的,控制线上就有一个时钟以及一个与该时钟相关的固定的通信协议。例如,为了使处理器一内存总线执行一个从内存读的操作,我们需要一个协议能够在第一个时钟周期传输地址和读操作命令,并使用控制线来指明请求的类型。内存可能被要求在第五个时钟周期做出响应,提供数据字。这种协议在小型有限状态机上很容易实现。由于这种协议是预先确定的,涉及的逻辑控制很少,所以总线可以运行得很快且接口上的逻辑电路也会很小。然而同步总线有两个主要的缺点。第一,总线上的每一设备都必须运行在同一个时钟频率下。第二,由于时钟偏差问题.速度很快的同步总线,长度不能太大。处理器一内存总线通常是同步的,这是因为设备间通信的距离短、数量少,而且准备在快的时钟频率上操作。异步总线不需要时钟。正因为它不需要时钟,所以异步总线可以适应很多不同的设备,异步总线可以延长而不用担心时钟偏差或其他同步问题。为了协调发送者和接收者之间的数据传输,异步总线采用握手协议。握手协议由一系列步骤组成,只有当发送者和接收者达成一致时,才能进行下一步。这种协议通过一套附加的控制线路来实现。一个简单的例子会说明异步总线是如何工作的。考虑设备从内存系统请求数据字的情况。假定有三条控制线:●读请求(ReadReq):用来向内存发出一个读请求。并同时把地址放到数据线上。●数据就绪(DataRdy):用来指明数据字已经在数据线上就绪。在输出事务中,内存将发出这个信号,因为它是数据提供者。在输入事务中,由 I/O 设备提供数据,所以将由 I/O 设备来发出这个信号 c 在这两种情况中,数据都会同时放在数据线上。●应答(Ack):用来应答另一方的读请求和数据就绪信号。在异步协议中,读请求和数据就绪的控制信号将一直维持,直到另一通信方(内存或设备)指明控制线已访问且数据线已读取;这种指示由应答线发出信号来完成。以上全过程称为握手(handshaking)。图 6.2.2-1 描述异步总线的握手协议是如何操作的。从内存读取一个字送至 I/O 设备的过程。
图 6.2.2-1 异步总线的握手协议(粗线信号是 I/O 设备发出的,而细线信号是内存发出的)首先,设备将读请求控制线置为高电平从而发出请求信号,并同时把地址放到散据线上。 之后就开始执行协议的各个步骤:1.当内存接收到读请求时,就从数据总线读取地址并且发出应答信号来指明地址已被接收。2.设备看到应答线的高电位后释放读请求和数据线。3.内存看到读请求信号的低电位后,将应答线置为低电平,以应答读请求信号。4.内存准备好数据后开始执行本步骤。它把数据放在数据线上并同时将数据就绪信号置为高电平。5. I/O 设备看到数据就绪信号后,从总线读取数据,并发出应答信号表明已经收到散据。6.当内存看到应答信号时,将效据就绪信号置为低电平,并释放数据线:7.最后.1/0 设备一看到数据就绪信号变为低电位时,就释放应答线,表明传输过程结束。现在就可以进行另一个新的总线事务了。箭头标出了这 7 个步骤和触发每个步骤的事件。数据线上同一时间用两条线(高和低)表示的符号说明此时数据线上包含有效数据(这个符号指明数据是有效的,但是并不知道具体值)。尽管总线的很大一部分带竟是由同步或异步协议的选择以及总线的时间特性所决定的,但是在一次单独的传输中也存在影响带宽的其他几个因素。其中最重要的就是数据线的带宽以及数据线是支持块传输还是一次只传一个字。二、总线仲裁总线上的功能模块有主动和被动两种形态。采用多个总线主控设备,每个主控设备都能启动数据传送。决定哪个总线主控设备将在下次得到总线使用权的过程被称为总线裁决。为了解决多个主设备同时竞争总线控制权,必须具有总线仲裁部件,以某种方式选择其中一个主设备作为总线的下一次主方。对多个主设备提出的占用总线请求,一般采用优先级或公平策略进行仲裁。按照总线仲裁电路的位置不同,有两类总线裁决方式:集中式和分布式。前者将控制逻辑做在一个专门的总线控制器或总线裁决器中,通过将所有的总线请求集中起来利用一个特定的裁决算法进行裁决。而在分布式的裁决方式中,没有专门的总线控制器,其控制逻辑分散在各个部件或设备中仲裁方式分为集中式仲裁和分布式仲裁两类。(一)集中式仲裁集中式仲裁中每个功能模块有两条线连到中央仲裁器:一条是送往仲裁器的总线请求信号线 BR,一条是仲裁器送出的总线授权信号线 BG。1.链式查询方式主要特点:总线授权信号 BG 串行地从一个 I/O 接口传送到下一个 I/O 接口。假如 BG 到达的接口无总线请求,则继续往下查询;假如 BG 到达的接口有总线请求,BG 信号便不再往下查询,该 I/O 接口获得了总线控制权。离中央仲裁器最近的设备具有最高优先级,通过接口的优先级排队电路来实现。优点:只用很少几根线就能按一定优先次序实现总线仲裁,很容易扩充设备。缺点:对询问链的电路故障很敏感,如果第 i 个设备的接口中有关链的电路有故障,那么第 i 个以后的设备都不能进行工作。查询链的优先级是固定的,如果优先级高的设备出现频繁的请求时,优先级较低的设备可能长期不能使用总线。2.计数器定时查询方式总线上的任一设备要求使用总线时,通过 BR 线发出总线请求。中央仲裁器接到请求信号以后,在 BS 线为“0”的情况下让计数器开始计数,计数值通过一组地址线发向各设备。每个设备接口都有一个设备地址判别电路,当地址线上的计数值与请求总线的设备地址相一致时,该设备置“1”BS 线,获得了总线使用权,此时中止计数查询。每次计数可以从“0”开始,也可以从中止点开始。如果从“0”开始,各设备的优先次序与链式查询法相同,优先级的顺序是固定的。如果从中止点开始,则每个设备使用总线的优先级相等。计数器的初值也可用程序来设置,这可以方便地改变优先次序,但这种灵活性是以增加线数为代价的 3.独立请求方式每一个共享总线的设备均有一对总线请求线 BRi 和总线授权线 BGi。当设备要求使用总线时,便发出该设备的请求信号。中央仲裁器中的排队电路决定首先响应哪个设备的请求,给设备以授权信号 BGi。优点:响应时间快,确定优先响应的设备所花费的时间少,用不着一个设备接一个设备地查询。其次,对优先次序的控制相当灵活,可以预先固定也可以通过程序来改变优先次序;还可以用屏蔽(禁止)某个请求的办法,不响应来自无效设备的请求。如图 6.2.2-2 所示。
图 6.2.2-2 集中式仲裁(二)分布式仲裁分布式仲裁不需要中央仲裁器,每个潜在的主方功能模块都有自己的仲裁号和仲裁器。当它们有总线请求时,把它们唯一的仲裁号发送到共享的仲裁总线上,每个仲裁器将仲裁总线上得到的号与自己的号进行比较。如果仲裁总线上的号大,则它的总线请求不予响应,并撤消它的仲裁号。最后,获胜者的仲裁号保留在仲裁总线上。显然,分布式仲裁是以优先级仲裁策略为基础。
6.3.1 接口的基本概念计算机的输入输出系统是整个计算机系统中最具有多样性和复杂性的部分,输入输出接口(I/O 接口)是主机和外设之间的交接界面,通过接口可以实现主机和外设之间的信息交换。主机和外设之间进行信息交换为什么一定要通过接口呢?这是因为主机和外设各自具有自己的工作特点,它们在信息形式和工作速度上具有很大的差异,接口正是为了解决这些差异而设置的。一、主机和外设交换的信息种类(一)数据信息这类信息可以是通过输入设备送到计算机的输人数据,也可以是经过计算机运算处理和加工后,送到输出设备的结果数据。传送可以是并行的,也可以是串行的。(二)控制信息这是 CPU 对外设的控制信息或管理命令,如外设的启动和停止控制、输入或输出操作的指定、工作方式的选择、中断功能的允许和禁止等。(三)状态信息这类信息用来标志外设的工作状态,比如,输入设备数据准备好标志,输出设备忙、闲标志等。CPU 在必要时可通过对它的查询来决定下一步的操作。 (四)联络信息这是主机和外设间工作的时间配合信息,它与主机和外设间的信息交换方式密切相关。通过联络信息可以决定不同工作速度的外设和主机之间交换信息的最佳时刻,以保证整个计算机系统能统一协调地工作。(五)外设识别信息这是 I/O 寻址的信息,使 CPU 能从众多的外设中寻找出与自己进行信息交换的惟一的设备。二、接口的功能和基本组成(一)接口的功能 1.实现主机和外设的通信联络控制接口中的同步控制电路用来解决主机与外设的时间配合问题。2.进行地址译码和设备选择任何一个计算机系统都配备有多种外设,同一种外设也可能配备多台,主机在不同时刻要与不同外设交换信息,当 CPU 送来选择外设的地址码后,接口必须对地址进行译码以产生设备选择信息,使主机能和指定外设交换信息。3.实现数据缓冲在接口电路中,一般设置有一个或几个数据缓冲寄存器,用于数据的暂存,以避免因速度不一致而丢失数据。在传送过程中,先将数据送入数据缓冲寄存器中,然后再送到输出设备或主机中去。4.数据格式的变换在输入或输出操作过程中,为了满足主机或外设的各自要求,接口电路中必须具有实现各类数据相互转换的功能。例如:并一串转换、串一并转换、模一数转换、数一模转换以及二进制数和 ASCII 码的相互转换等。5.传递控制命令和状态信息当 CPU 要启动某一外设时,通过接口中的命令寄存器向外设发出启动命令;当外设准备就绪时,则有“准备好”状态信息送回接口中的状态寄存器,为 CPU 提供反馈信息,告诉 CPU,外设已经具备与主机交换数据的条件。当外设向 CPU 提出中断请求和 DMA 请求时,CPU 也应有相应的响应信号反馈给外设。(二)接口的基本组成如上所述,接口中要分别传送数据信息、控制信息和状态信息,这些信息都通过数据总线来传送。大多数计算机都把外部设备的状态信息视为输人数据,而把控制信息看成输出数据,并在接口中分设各自相应的寄存器,赋以不同的端口地址,各种信息分时地使用数据总线传送到各自的寄存器中去。接口的基本组成及与主机、外设间的连接如图 6.3.1 所示。
图 6.3.1 接口的基本组成及与主机、外设间的连接接口(Interface)与端口(Port)是两个不同的概念。端口是指接口电路中可以被 CPU 直接访问的寄存器,若干个端口加上相应的控制逻辑电路才组成接口。通常,一个接口中包含有数据端口、命令端口和状态端口。存放数据信息的寄存器称为数据端口,存放控制命令的寄存器称为命令端口,存放状态信息的寄存器称为状态端口。CPU 通过输入指令可以从有关端口中读取信息,通过输出指令可以把信息写入有关端口。CPU 对不同端口的操作有所不同,有的端口只能写或只能读,有的端口既可以读又可以写。例如:对状态端口只能读,可将外设的状态标志送到 CPU 中去;对命令端口只能写,可将 CPU 的各种控制命令发送给外设。为了节省硬件,在有的接口电路中,状态信息和控制信息可以共用一个寄存器(端口),称之为设备的控制/状态寄存器。
6.3.2 外设的识别与端口寻址为了能在众多的外设中寻找或挑选出要与主机进行信息交换的外设,就必须对外设进行编址。外设识别是通过地址总线和接口电路中的外设识别电路来实现的,I/O 端口地址就是主机与外设直接通信的地址,CPU 可以通过端口发送命令、读取状态和传送数据。如何实现对这些端口的访问,这就是所谓的 I/O 端口的编址方式。I/O 端口地址编址方式有两种:一种是把 I/O 端口地址与存储器地址分别进行独立的编址;另一种是端口地址与存储器地址统一编址。一、独立编址在这种编址方式中,主存地址空间和 I/O 端口地址空间是相对独立的,分别单独编址。比如,在 8086 中,其主存地址范围是从 00000H~FFFFFH 连续的 1MB,其 I/O 端口的地址范围从 0000H~FFFFH,它们互相独立,互不影响。CPU 访问主存时,由主存读写控制线控制;访问外设时,由 I/O 读写控制线控制,所以在指令系统中必须设置专门的 I/O 指令。当 CPU 使用 I/O 指令时,其指令的地址字段直接或间接的指示出端口地址。这些端口地址被接口电路中的地址译码器接收并且进行译码,符合者就是 CPU 所指定的外设寄存器,该外设寄存器将被 CPU 访问。二、统一编址在这种编址方式中,I/O端口地址和主存单元的地址是统一编址的,把 I/O 接口中的端口作为主存单元一样进行访问,不设置专门的 I/O 指令。当 CPU 访问外设时,把分配给该外设的地址码(具体到该外设接口中的某一寄存器号)送到地址总线上,然后各外设接口中的地址译码器对地址码进行译码,如果符合即是 CPU 指定的外设寄存器。