相关链接:
操作系统https://blog.csdn.net/qq_41822345/article/details/127169859
计算机组成原理是计算机的核心,主要包括计算机基本组件的构造、组织方式和设计思想,以及基本运算的操作原理。
Tips:单击图片看大图,更清晰
1)计算机硬件系统由运算器、存储器、控制器、输入设备、输出设备5大部件组成。
2)指令和数据以同等地位存储在存储器中,并可按地址寻址。
3)指令和数据均用二进制代码表示。
4)指令由操作码和地址码组成。操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置。
5)指令在存储器内按顺序存放。通常,指令是顺序执行的,在特定条件下可根据运算结果或根据设定的条件改变执行顺序。
6)早期的冯诺依曼机以运算器为中心,输入/输出设备通过运算器和存储器传送数据。
冯·诺依曼机使用单一处理部件来完成计算、存储以及通信的工作;存储单元是定长的线性组织,可以直接寻址;在执行程序和处理数据时必须将程序和数据从外存储器装入主存储器中,然后计算机在工作时才能自动从存储器中取出指令并加以执行。
实际上,这两种结构并无实质性的区别,相比之下现代计算机只是在一些小的方面做了部分改进:使输入/输出操作尽可能绕过CPU,直接在输入/输出设备和存储器之间完成,以减少CPU的负担,并提高系统的整体运行性能。
计算机的五大部件在控制器的统一指挥下,有条不紊地工作。通常将运算器和控制器合称为中央处理器 (Central Processing Unit,CPU)。CPU 和主存储器合起来又称为主机,输入输出设备称为外部设备。如下图:
- 1)主存储器
主存储器(简称主存或内存)包括存储体、各种逻辑部件及控制电路等。
存储体由许多存储单元组成,各个存储单元又包含若干个存储元件,每个存储元件能资存一位二进制代码0或1。可见,一个存储单元可存储一串二进制代码,称这串二进制代码为一个个存储字,这中二进制代码的位数称为存储字长,可以是8位、16位或 32 位等。主存的工作方式是按存储单元的地址号来实现对存储字各位的存(写入)、取(读出)。这种存取方式称为按地址存取方式,即按地址访问存储器 (简称访存)。
为了实现按地址访问,主存中还配置两个寄存器 MAR 和 MDR:
MAR 是存储器的地址寄存器,用来存放欲访问的存储单元的地址。MAR 的位数对应存储单元的个数(如 MAR 为 10位,则有2^10=1024 个存储单元,记为 1K)
MDR 是存储器的数据寄存器,用来存放从存储体 M 某单元取出的代码或准备往某存储单元存入的代码。MDR 位数与存储字长相等。
- 2)运算器
运算器最少包括3个寄存器(其中 ACC 为累加器,MQ为乘商寄存器,X为操作数寄存器)和一个算术逻辑单元 ALU。 在完成不同运算时,这3个寄存器所存放的操作数类别也各不相同。
- 3)控制器
控制器是计算机的中枢,由它指挥各部件自动、协调地工作。【取值→分析→执行】
首先控制器命令存储器读出一条指令,这称为取指过程,一个指令字中包含的二进制代码的位数称为指令字长;接着对该指令进行分析,指出指令要完成的操作,并按寻址特征指明操作数的地址,称为分析过程。最后根据操作数所在地址以及指令的操作码完成该操作,称为执行过程。
控制器由程序计数器 (PC)、指令寄存器(IR)和控制单元(CU)组成。
PC 用来存放当前欲执行指令的地址,它与主存的 MAR 之间有一条直接通路,且具有自动加1的功能,即可自动化成下一系指令的地址。
IR 用来存放当前的指令,IR 的内容来自主存的 MDR。
CU 用来分析当前指令所需完成的操作,并发出各种微操作命令序列,藉以控制所有被控对象。
说明:CPU中的IR,MAR 和 MDR 对各类程序员来说是透明的,即程序员感觉不到它们的存在。
- 4)输入/输出设备
I/O 子系统包括各种I/O设备及其相应的接口。每一种I/O设备都有I/O接口与主机联系。由它接收 CU 发出的各种控制命令,并完成相应的操作。例如,键盘(输入设备)由键盘接口电路与主机联系,打印机(输出设备)由打印机接口电路与主机联系。
(1)使用计算机处理一个实际问题的一般过程如下:
① 建立数学模型。找出反映要处理问题规律的数学模型。
② 找出计算方法。选择实现模型计算的具体算法。
③ 编写计算机程序。选用合适的计算机语言编写实现算法的程序。
④ 调试运行程序。调试写好的程序,调试正确则运行这个程序。
③ 输出运算结果。把程序的运行结果输出显示。(2)计算机硬件的工作过程如下:
①把程序和数据装入到主存储器中。
②从程序的起始地址运行程序,
③用程序首地址从存储器中取出第一条指令,经过译码、分析、执行等步骤控制计算机各功能部件协调运行,完成这条指令功能,并计算出下一条指令的地址。
④用新得到的指令地址继续读出第二条指令并执行之,直到程序结束为止:每一条指令都是在取指、译码和执行的循环过程中完成的。
现代计算机不是一种简单的电子设备,而是由硬件和软件结合形成的复杂整体。它通常
由5个不同的层级组成,在每一层上都能够进行程序设计,如图所示:
第一层是微程序机器级:如果某一个应用程序直接用微指令来编写,那么可在这一级上运行该应用程序。微指令由硬件直接执行。
第二层是机器语言级:用微程序解释机器指令。
第三层是操作系统级:用机器语言程序解释作业控制语句。
第四层是汇编语言机器级:用汇编程序翻译成机器语言程序。
第五层是高级语言机器级:用编译程序翻译成汇编语言程序或直接翻译成机器语言。其中,第三层~第五层称为虚拟计算机。简言之,虚拟计算机是由软件实现的计算机。层次之间关系密切容切,下层是上层的基础,上层是下层的扩展。层次的划分不是绝对的。
1)二进制只有0和1两种状态,使用有两个稳定状态的物理器件就可以表示二进制的每一位。制造成本低。
2)二进制位1和0正好与逻辑值“真”和“假”对应,为计算机实现逻辑运算和程序中的逻辑判断提供了便利条件。
3)二进制的编码和运算规则简单,通过逻辑门电路便能方便实现算术运算。
运算器是 CPU 的重要组成部分,由 ALU、寄存器组、执行部件和控制电路等部分构成。其中算术逻辑单元 ALU 是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分。由与或门等构成的算术逻辑单元,主要功能是进行二进制的算术运算和逻辑运算。
存储系统是指计算机中由存放程序和数据的各种存储设备、控制部件及管理信息调度的设备(硬件)和算法(软件)所组成的系统。
计算机程序必须装入内存中才能运行,内存是处理器可以直接访问的唯一大容量存储区,通常用动态随机存储器(DRAM)的半导体技术来实现,由内存字的阵列组成,每个字都有其地址。通过对特定内存地址执行系统load 或 store 指令来实现交互,指令 load 能将内存中的字移到 CPU 的寄存器中,而指令 store 能将寄存器的内容移到内存,除了显式使用 load 和 store指令外,CPU 可自动从内存中装入指令来执行。
绝大多数计算机系统都提供辅助存储器以作为内存的扩充,辅存要求能够永久性地存储大量数据,最常见的辅存有磁盘等。根据存储速度和价格,可以按层次来组织计算机系统的不同类型的存储系统,从高到低的层次如下:
寄存器→高速级存→内存→电子磁盘→磁盘→光盘→磁带。
层次越高,存取速度越快,但价格越贵。其中电子磁盛是指闪存等一类的存储器。通常情况下,电子磁盘之上的存储器为易失的,电子磁盘之下的存储器为非易失的。
如下图所示是主存的基本组成图。虚框表示主存的组成,MAR 和 MDR 属于 CPU,其中MAR 存放欲访问的存储单元地址,经译码驱动后,可读出某单元的内容,或将某信息写入某单元中,MDR 存放从某单元读出的信息,或即将写入至某单元的信息。
主存M 读操作表示为:
M(MAR)→MDR //将 MAR 指定存储单元的数据送到MDR中
主存M 写操作表示为:
(MDR)→M(MAR) //将MDR 中的数据送到 MAR 指定地址的存储单元
位是二进制数的最基本单位,也是存储器存储信息的最小单位。一个二进制数由若干位组成,当这个二进制数作为一个整体存入或取出时,这个数称为存储字。存放存储字或存储字节的主存空间称为存储单元或主存单元,大量存储单元的集合构成一个存储体,程序和数据都存放在存储体中,它是存储器的核心。
一个存储单元可能存放一个字,也可能存放一个字节,这是由计算机的结构确定的。对于字节编址的计算机,最小寻址单位是一个字节,相邻的存储单元地址指向相邻的存储字节,对于字编址的计算机,最小寻址单位是一个字,相邻的存储单元地址指向相邻的存储字。存储单元是 CPU 对主存可访问操作的最小存储单位。
Cache 和主存都被分成若干个大小相等的块,每块由若干字节组成,主存容量是 Cache 容量的整数倍。由于 Cache 的容量远小于主存的容量,它保存的信息只是主存中最活跃的若干块的副本。Cache 的全部功能均由硬件实现,并且对程序员透明,即在程序设计时不必考虑对 Cache 的操作,而直接对主存实现信息存取即可。
Cache 按照某种策略,预测 CPU 在未来一段时间内,将要访问内存中的哪些数据,提前把 CPU 需要的数据装入到 Cache 中。
Cache 的读操作
Cache 的读操作,当 CPU 发出读请求时,如果 Cache 命中,就直接对 Cache 进行读操作,与主
存无关,如果 Cache 不命中,则仍需访问主存,并把该块信息一次从主存调入 Cache 内。若此时
Cache 已满,则须根据某种替换算法,用这个块替换掉 Cache 中原来的某块信息。Cache 的写操作
Cache 的写操作,当 CPU 发出写请求时,如果 Cache 命中,有可能会遇到 Cache 与主存中
的内容不一致的问题,需要进行一定的写处理,处理的方法有:全写法、写回法和写一次法。CPU 对 Cache 的写入将更改 Cache 的内容,可选用写策路使 Cache 的内容和主存内容保持一致。主要有以下三种写策略。【下面也是数据库设计的一种思想】
- 全写法。当 CPU 写 Cache 命中时,Cache 与主存同时发生写修改,因而较好地维护了 Cache与主存的内容的一致性,当 CPU 写 Cache 未命中时,直接向主存进行写入。
优点是 Cache 中每行无须设置一个修改位以及相应的判断逻辑。
缺点是降低了 Cache 的功效。- 写回法。当 CPU 写 Cache 命中时,只修改 Cache 的内容,但不立即写入主存。只有当此块被换出时才写回主存,当 CPU 写 Cache 未命中时,将此块拷贝到 Cache 后进行修改。当此块被换出时才写回主存。
优点是减少了访问主存的次数,但存在不一致性的隐患。
缺点是实现这种方法,每个 Cache 块必须配置一个修改位,通过其判定此块是否被 CPU 修改过。- 写一次法。是基于写回法并结合全写法的一种写策略。写命中与写未命中的处理方法与写回法基本相同,只是第一次写命中时要同时写入主存。这便于维护系统全部Cache 的一致性。
在实际的物理存储层次上,所编程序和数据在操作系统管理下,先送入磁盘,然后操作系统将当前运行所需要的部分调入主存,供CPU 使用,其余暂不运行部分留在磁盘中。
虚拟存储器和 Cache-主存有不少相同之处。不过 Cache-主存的控制完全由硬件实现,所以对各类程序员是透明的:而虚拟存储器的控制是软硬相结合的,对于应用程序员来说是透明的,对于设计存储管理软件的系统程序员来说是不透明的。归纳起来,虚拟存储器的相关概念如下:
- 虛拟存储器是一个逻辑模型,并不是一个实际的物理存储器。
- 虚拟存储器必须建立在主存-辅存结构基础上,但两者是有差别的:虚拟存储器允许使用比主存容量大得多的地址空间,而非虚拟存储器最多只允许使用主存空间。虚拟存储器每次访问时,必须进行虚实地址变换,而非虚拟存储器则不必。
- 虚拟存储器的作用是分隔地址空间,解决主存的容量问题和实现程序的重定位。
- 虚拟存储器和 Cache 都是基于程序局部性原理,它们的相同点在于:都把程序中最近常用的部分驻留在高速度的存储器中,一旦这部分程序不再常用,把它们送回到低速的存储器中:这种换入,换出操作是由硬件或是操作系统完成,对用户透明。都力图使存储系统的性能接近高速存储器,而价格接近低速存储器,两者的不同点在于:Cache 用硬件实现。对操作系统透明,而虛虚拟存储器是由操作系统、硬件相结合实现的;Cache 是一个物理存储器,而虚拟存储器仅是一个逻辑存储器,其物理结构建立在主存-辅存二级存储器结构之上。
指令系统是计算机硬件的语言系统,也叫机器语言,指机器所具有的全部指令的集合,它是软件和硬件的主要界面,反映了计算机所拥有的基本功能。
二地址指令有两个操作数,这些操作数不一定都在主存中,有些可能在通用寄存器中,从而构成不同的二地址类型。
二地址指令类型 名称 操作数物理位置 执行速度 访主存次数(取指除外) MM 存储器-存储器 主存 最慢 多次 RP 寄存器-寄存器 寄存器 最快 不访问 RM 寄存器-存储器 寄存器-主存 中等 一次
RISC(精简指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。
以Intel公司X86为核心的PC系列正是基于CISC体系结构,而 Apple公司的Mac则是基于RISC体系结构。
- CISC
长期以来,计算机性能的提高往往是通过增加硬件的复杂性来获得。随着集成电路技术,特别是VLSI(超大规模集成电路)技术的迅速发展,为了软件编程方便和提高程序的运行速度,硬件工程师采用的办法是不断增加可实现复杂功能的指令和多种灵活的编址方式,甚至某些指令可支持高级语言语句归类后的复杂操作。至使硬件越来越复杂,造价也相应提高。为实现复杂操作,微处理器除向程序员提供类似各种寄存器和机器指令功能外,还通过存于只读存贮器(ROM)中的微程序来实现其极强的功能 ,处理并分析每一条指令之后再执行一系列初级指令运算来完成所需的功能,这种设计的型式被称为复杂指令集计算机(Complex
Instruction Set Computer-CISC)结构。
一般CISC计算机所含的指令数目一般200~300条,有的甚至超过500条。
- RISC
采用复杂指令系统的计算机有着较强的处理高级语言的能力,这对提高计算机的性能是有益的。当计算机的设计沿着这条道路发展时,有些人没有随波逐流。他们回过头去看一看过去走过的道路,开始怀疑这种传统的做法:IBM公司于1975年组织力量研究指令系统的合理性问题。因为当时已感到,日趋庞杂的指令系统不但不易实现,而且还可能降低系统性能。1979年以帕特逊教授为首的一批科学家也开始在美国加州大学伯克莱分校开展这一研究。结果表明,CISC存在许多缺点。首先,在这种计算机中,各种指令的使用率相差悬殊:一个典型程序的运算过程所使用的80%指令,只占一个处理器指令系统的20%。事实上最频繁使用的指令是取、存和加这些最简单的指令。这样一来,长期致力于复杂指令系统的设计,实际上是在设计一种难以在实践中用得上的指令系统的处理器。同时,复杂的指令系统必然带来结构的复杂性,这不但增加了设计的时间与成本还容易造成设计失误。此外,尽管VLSI技术现在已达到很高的水平,但也很难把CISC的全部硬件做在一个芯片上,这也妨碍单片计算机的发展。在CISC中,许多复杂指令需要极复杂的操作,这类指令多数是某种高级语言的直接翻版,因而通用性差。由于采用二级的微码执行方式,它也降低那些被频繁调用的简单指令系统的运行速度。因此,针对CISC的这些弊病,帕特逊等人提出了精简指令的设想:即指令系统应当只包含那些使用频率很高的少量指令,并提供一些必要的指令以支持操作系统和高级语言。按照这个原则发展而成的计算机被称为精简指令集计算机(Reduced Instruction Set Computer-RISC)结构。
- 未来趋势
从硬件角度来看CISC处理的是不等长指令集,它必须对不等长指令进行分割,因此在执行单一指令的时候需要进行较多的处理工作。而RISC执行的是等长精简指令集,CPU在执行指令的时候速度较快且性能稳定。因此在并行处理方面RISC明显优于CISC,RISC可同时执行多条指令,它可将一条指令分割成若干个进程或线程,交由多个处理器同时执行。由于RISC执行的是精简指令集,所以它的制造工艺简单且成本低廉。
目前CISC与RISC正在逐步走向融合,Pentium Pro、Nx586、K5就是一个最明显的例子,它们的内核都是基于RISC体系结构的。它们可以在接受CISC指令后将其分解分类成RISC指令以便在同一时间内能够执行多条指令。由此可见,下一代的CPU将融合CISC与RISC两种技术,从软件与硬件方面看二者会取长补短。
三线:
- 数据总线:用于传输各部件之间的数据信息,它是双向传输总线,其位数称为数据总线的宽度。
- 地址总线:用于指出数据总线上的源数据或目的数据在主存单元的地址或I/O设备的地址,也就是说地址总线上的代码用来指明 CPU 欲访问的存储单元或I/O 端口的地址,由 CPU输出,单向传输。地址总线的位数与存储单元的个数有关,如地址线为 20 根,则对应的存储单元个数为 2^20个。
- 控制总线:用于发出各种控制信号,通常对任一控制线而言,它的传输是单向的,如存储器读/写命令都是由 CPU 发出的,但对控制总线总体而言,又可认为是双向的,如当某设备准备就绪时。便可通过控制总线向 CPU 发中断请求。常用的控制信号有:时钟、复位、总线请求、总线允许、中断请求、中断响应、主存读/写、IO 读写、传输响应等。
三流:
- 指令流:是指计算机执行的指令序列。
- 数据流:是指根据指令要求依次访问的数据序列。
- 控制流:是指由控制器发出的控制信号序列。
控制器的功能是 按照特定的顺序取出并解释程序的每一条指令,然后产生一系列与运算器和其它部件相应的操作控制信号,计算器各部件在控制器的控制信号控制下协调工作,一步步的完成指令规定的工作。
控制器的工作原理是 根据指令操作码、指令的执行步骤(微命令序列)和条件信号来形成当前计算机各部件要用到的控制信号。计算机整机各硬件系统在这些控制信号的控制下协同运行,产生预期的执行结果。
从程序执行角度看,控制器功能如下:
•对指令流和数据流实施正确控制
•在空间上由控制器形成受控部件的控制信号。
•在时间上控制器控制各种动作的执行顺序。从系统设计和实现的角度看,控制器执行如下功能:
•取指令(控制指令流出)。
•分析指令 (控制指令分析)。
•执行指令,发出各种操作命令(控制指令执行)。
•确定下一条指令的地址(控制指令流向)。
•执行环境的建立与保护 (控制执行环境的维护)。
1、确定指令系统,包括指令系统中每条指令的格式、功能和寻址方式。
2、围绕着指令系统的实现,确定CPU 的内部结构,包括运算器的功能和组成,控制器的组成及它们的连接方式和数据通路,同时也确定时序系统的构成。
3、分析每条指令的执行过程,按机器周期顾序,写出必须发送的微操作或微操作控制信号序列。
4、综合每个微操作命令或微操作控制信号的逻辑函数,化简和优化。
5、用逻辑电路实现。
1、取机器指令
2、转微程序入口地址
3、执行首条微指令
4、取后继微指令
5、执行后继微指令
6、返回
**总线是一组能为多个部件分时共享的信息传送线路。**总线实际上由许多传输线路或通路组成,每条线可一位一位地传输二进制代码,一串二进制代码可以在一段时间内逐一传输完成。若干条传输线可以同时传输若干位二进制代码。总线具有两大特点:
分时:在某一时刻,只允许有一个部件向总线发送信息,而多个部件可以同时从总线上接收相同的信息,这称为总线复用。
共享:总线是连接多个部件的信息传输线,是各部件共享的传输介质。
在多个设备或部件同时申请对总线的使用权,为保证在同一时间内只能有一个设备获得总线使用权,需要设置总线判优控制机构。总线判优控制机构投照申请者的优先权选择设备。决定哪个总线主控设备将在下次得到总线使用权的过程称为总线仲裁。只有获得了总线使用权的设备或部件,才能开始数据传送。
通常将完成一次总线操作的时间称为总线周期,可分为以下四个阶段:
- 申请分配阶段。由需要使用总线的主模块(或主设备)向总线仲裁机构提出总线使用申请,总线仲裁机构决定下一传输周期的总线使用权并将其授予某一申请者。
- 寻址阶段。拥有总线使用权的主模块发出本次要访问的从模块(或从设备)的地址及有关命令,该从模块被选中并启动。
- 数据传送阶段。主模块和从模块使用数据总线进行双(单) 向数据传送。
- 结束阶段。主、从模块均撤出总线,让出总线使用权。
计算机主机与外界交换信息时所涉及到的硬件【外部设备、设备控制器与接口、I/O总线等】和软件【驱动程序、用户程序、管理程序、升级补丁等】的总称,称为I/O系统。
- 早期阶段。其主要特点是 I/O 设备与主存交换信息都必须通过 CPU,I/O 设备采用分散连接,CPU 与I/O设备串行工作,采用程序查询方式。
- 接口模块和 DMA 阶段。VO 设备与主机通过接口模块相连,计算机系统采用了总线结构。CPU 和I/O 设备并行工作,其工作方式有中断方式和DMA 方式。
- 具有通道结构的阶段。采用通道来管理 I/O 设备以及实现主存与 I/O 设备之间交换信息。有专门的通道指令,能独立地执行用通道指令所编写的 I/O 程序。在I/O 设备与主机交换信息时,CPU 不直接参与,进一步提高了 CPU 的利用率。
- 具有I/O 处理机的阶段。I/O 处理机基本独立于主机工作,既可完成 I/O 通道要完成的 I/O 控制,又可完成码制变换、格式处理、纠错等操作。具有I/O处理机的I/O 系统与 CPU工作的并行性更高。
每个I/O接口部件都包含一组寄存器,CPU 和外设进行数据传输时,各类信息在 I/O 接口中进入不同的寄存器,一般称这些寄存器为 I/O 端口(Port),每个端口有一个端口地址。CPU对各种寄存器的操作,实际上是通过寻址,可以通过端口发送命令、读取状态和传送数据。
程序查询方式是一种程序直接控制方式,其核心思想是每时每刻需不断查询 I/O 设备是否准备就绪。这是主机与 I/O 设备间进行信息交换的最简单方式,其输入和输出完全是通过 CPU执行程序来完成的。
在计算机执行程序的过程中,当出现异常情况或特殊清求时,计算机停止现行程序的远行,转向对这些异常情况或特殊请求的处理,处理结束后再返回到现行程序的间断处,继续执行原程序。
- 提高 CPU 工作效率,把CPU 从等待查询 I/O 状态的过程中解放出来。办法是 CPU 启动 I/O 后, I/O 设备开始工作,CPU 继续处理原来的程序,等待 I/O 工作完成后再来请求 CPU 取走数据。这一情况可称为 CPU与 I/O 并行工作。
- 多台 I/O 设备并行工作,提高 I/O 的运行速度。
- 解决实时处理问题。生产过程中若发生异常情况,计算机必须立即处理计算机运行过程中出现的故障,发现运算错误或机器故障,应该尽快排除故障再继续运算才有意义。
- 实现多机系统或网络环境下计算机间的通信要求。
- 提供人机联系的手段。
不同设各的服务程序是不相同的,可它们的程序流程又是类似的,一般中断服务程序的流
程分为四大部分:
- 保护现场。保存程序的断点以及通用和状态寄存器的内容。前者是由中断隐指令完成,后者是由中断服务程序完成(将寄存器的内容保存到存储器中,或用进栈指令 PUSH 将各寄存器的内容推入栈保存),将程序中断时的“现场”保存起来。
- 中断服务(设备服务)。这是中断服务程序的主体都分,对于不同的中断请求源,其中断服务操作内容是不同的,例如打印机要求 CPU 将需打印的一行字符代码,通过接口送入其缓冲存储器中以供打印。
- 恢复现场。这是中断服务程序的结尾部分,要求在退出服务程序前,将原程序中断的“现场”恢复到原来的寄存器中。通第可用取数指令或出栈(POP)将保存在存储器(或堆栈)中的信息送到原来的寄存器中。
- 中断返回。这是中断服务程序的最后一条指令,即中断返回指令,使其返回到原程序的断点处,以便继续执行原程序。
DMA 的传送过程分为以下三个阶段:
- DMA 预处理。这是在DMA 传送之前做的一些必要的准备工作,是由 CPU 来完成的。CPU首先执行几条 I/O 指令,用于测试 I/O 设备的状态、向 DMA 控制器的有关寄存器置初值、设置传送方向、启动该 I/O 设备等。在这些工作完成之后,CPU 继续执行原来的程序,在 I/O 设备准备好发送的数据(输入时)或接收的数据已处理完毕 (输出时),I/O 设备向DMA 控制器发 DMA 请求,再由 DMA 控制器向 CPU 发总线请求。
- 数据传送。DMA 的数据传送可以是以单字节(或字)为基本单位,也可以以数据块为基本单位。对于以数据块为单位的传送,DMA 占用总线后的数据输入和输出操作都是通过循环来实现的。需要特别指出的是,这一循环不是由 CPU 执行程序实现的,而是由 DMA 控制器实现。
- DMA 后处理。当长度计数器计为 0 时,DMA 操作结束,DMA 控制器向 CPU 发出中断请求,CPU 停止原来程序的执行,转去执行中断服务程序做 DMA 结束处理工作。
中断方式是程序切换,需要保护和恢复现场;而DMA 方式除了开始和结尾,其他时候不占用 CPU 的任何资源。
对中断请求的响应只能发生在每条指令执行完毕时(即指令的执行周期之后);而对DMA请求的响应可以发生在每个机器周期结束时(在取指周期.间址周期、执行周期之后均可)。
中断传送过程需要 CPU 的干预,而DMA 传送过程不需要 CPU 的干预,故数据传送速率非常高,适合于高速 I/O 设备的大批数据传送。
DMA 请求的优先级高于中断请求。
中断方式具有对异常事件的处理能力;而 DMA 方式仅局限于完成传送信息块的 I/O 操作。
1、在用户程序中使用访管指令进入操作系统管理程序,由 CPU 通过管理程序组织一个通道程序,并使用 I/O 指令启动通道(此后 CPU 并行运行应用程序)。
2、 通道并行执行 CPU 为它组织的通道程序,完成指定的数据输入输出工作。
3、 通道程序结束后向 CPU 发出中断请求。CPU 响应这个中断请求后,第二次调用管理程序对中断请求进行处理。
通道控制方式是 DMA 方式的进一步发展,实质上,通道也是实现 I/O 设备和主存之间直接交换数据的控制器。两者的主要区别在于:
- DMA 控制器是通过专门设计的硬件控制逻辑来实现对数据传送的控制;而通道则是一个具有特殊功能的处理器,它具有自己的指令和程序,通过执行一个通道程序实现对数据传送的控制,故通道具有更强的独立处理数据输入/输出的功能。
- DMA 控制器通常只能控制一合或少数几台同类设备;而一个通道则可以同时控制许多台同类或不同类的设备。
计算机组成原理知识网络结构图:https://download.csdn.net/download/qq_41822345/86815146