在冯诺依曼结构中,各个部件之间均有单独连线,不仅线多,而且导致扩展I/O设备很不容易。即扩展一个I/O设备,需要连接很多线。
因此,引入了总线连接方式,将多个设备连接在同一组总线上,构成设备之间的公共传输通道。
概述:连接多个设备或者接入点的数据传输通路。
作用:解决不同设备之间的通信问题。
1)共享:多个部件连接在同一组总线上,各个部件之间都通过该总线进行数据交换。
2)分时:同一时刻,总线上只能传输一个部件发送的信息;
片内总线(高集成度内部的信息传输线)
系统总线(细分为:数据总线&地址总线&控制总线,是CPU、主内存、IO设备、各组件之间的信息传输线)
1)分成数据总线、地址总线以及控制总线。
2)数据总线:各个功能部件之间传送数据信息,双向传输;
3)地址总线:用来指明数据总线上,源数据或目的数据所在的主存单元的地址。单向:由CPU发出
4)控制总线:用来发送各种控制信号。对于控制总线中的单根线,是单向的,即只能由一个部件发向另一个部件。而一组控制总线中,有输入也有输出,因此,控制总线也可以看成是双向的。
1)总线周期:总线上两个部件完成一次完整且可靠的数据传输时间;
2)分为四个阶段:
申请分配阶段:申请总线
寻址阶段:发出地址及有关命令
传数阶段:进行数据交换
结束:从总线上撤除信号,让出总线
总线的仲裁:为了解决总线使用权的冲突问题,三种方法:链式查询、计时器定时查询、独立请求。
仲裁器:主存需要和硬盘和IO设备交换数据,这时候硬盘和IO设备都就绪了,这时候总线是硬盘使用还是IO设备使用,这时候就需要用到第三方仲裁器
假设设备2需要用到总线,设备2就通过仲裁控制线向仲裁控制器发出总线请求,仲裁控制器收到请求之后,就会发出运行使用的信号,这个信号首先通过链式进入设备1,如果设备1不需要用总线,就会发给设备2,设备2就可以使用总线了
假设设备1和设备2都发出了使用总线的请求,这时候仲裁信号首先到达设备1,设备1优先取到总线使用权
向每个设备发出1的信号,设备1不用总线,所以这个信号是无效的
设备2向仲裁控制器发出请求,仲裁控制器就发出2的信号,这时候设备2就可以获得总线使用权了
字符输入设备:键盘
图形输入设备:鼠标、数位板、扫描仪
图像输出设备:显示器、打印机、投影仪
数据线:I/O设备与主机进行数据交换的传送线(单向&双向)。
状态线:I/O设备状态向主机报告的信号线,查询设备是否已经正常连接并就绪,查询设备是否已经被占用。
命令线:CPU向I/O设备发送命令(读写信号、启动停止信号)的信号线。
设备选择线:主机选择I/O设备进行操作的信号线,对连在总线上的设备进行选择。
提供低速设备通知CPU的一种异步的方式,CPU可以在高速运转的同时兼顾低速设备的响应。
当前指令执行完毕后,cpu发出中断查询信号,也就是说,中断响应一定是在每条指令执行结束之后进行的,不可能在指令执行过程中响应中断。
DMA : 直接内存访问。在主存和I/O设备之间建立独立的总线连接。
DMA控制器,它可以理解成是CPU的“协处理器”,也是CPU的小弟,CPU告诉它,我要读取磁盘中的一个小电影,但是我还有其他的事情(比如说打一局Dota),你来负责电影的读取吧。
就这样,DMA控制器替CPU接管了访问磁盘的总线控制权(所有的外设都是挂在总线上的),根据CPU发过来的数据大小和设备ID,来实现对设备的读写。这样就比PIO高级了。
在DMA方式中,由于DMA接口与CPU共享主存,可能会出现两者争用主存的冲突,为解决冲突,DMA和主存交换数据时,通常采用哪三种工作方式?
1)停止CPU访问主存:DMA访存优先级高;
2)周期挪用(窃取):DMA挪用存储或窃取总线使用权一个或几个主存存取周期;
3)DMA和CPU交替访问:将CPU工作周期分成两部分,一部分供DMA访存,一部分供CPU访存。
1)预处理
2)数据传输
2)后处理
按照存储介质:半导体存储器(内存、U盘、固态硬盘)、磁存储器(磁带、磁盘)
按照存取方式:随机存储器RAM(随机读取,与位置无关)、串行存储器(按顺序查找,与位置有关)、只读存储器ROM(只读不写)
1)可以分为随机存储器、只读存储器ROM(只读不写)、顺序存储器和直接存储器;
2)随机存储器和只读存储器属于随机存储器,即存取时间与物理地址无关,随机读取;
3)顺序存储器(典型的如磁带)和直接存储器(典型的如磁盘)属于串行存储器,即存取时间与物理地址有关,按顺序查找。
b.存储器的层次结构
局部性原理,在CPU与主存之间增加一层速度快容量小的Cache,解决主存速度不足的问题。
局部性原理,主存之外增加辅助存储器,解决主存容量不足的问题。
是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。
内存RAM(随机存取存储器Random Access Memory):通过电容存取数据,掉电将丢失所有数据。
1.表面是可磁化的硬磁特性材料
2.移动磁头径向移动读取磁道信息
1.先来先服务算法
2.最短寻道时间优先
3.扫描算法(电梯算法)
4.循环扫描算法
计算机断电,磁盘数据不会丢失
高速缓冲存储器(Cache)其原始意义是指存取速度比一般随机存取记忆体(RAM)来得快的一种RAM,一般而言它不像系统主记忆体那样使用DRAM技术,而使用昂贵但较快速的SRAM技术,也有快取记忆体的名称。
高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。在计算机存储系统的层次结构中,是介于中央处理器和主存储器之间的高速小容量存储器。它和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。
工作原理:命中率是衡量缓存的重要性能指标,理论上CPU每次都能从高速缓存取数据的时候,命中率为1。
当缓存没有数据,需要从主存载入数据的时候。
随机算法、先进先出算法(FIFO)、最不经常使用算法(LFU)、最近最少使用算法(LRU)—— 命中率最高。
操作码(指明指令所要完成的操作)+地址码(给出操作数或操作数的地址);
四地址、三地址、二地址、一地址以及零地址。
数据传输、算术逻辑操作、移位操作、控制指令;
指令寻址(顺序寻址+跳跃寻址)——下一条将要执行的指令的指令地址
数据寻址(立即寻址(速度快)+直接寻址(寻找操作数简单)+间接寻址(寻址范围大,速度慢))——确定本指令的操作数地址
控制器是协调和控制计算机运行的。
程序计数器(存储下一条指令的地址)
时序发生器(发送时序脉冲)
指令译码器(控制器的主要部件之一,翻译操作码+地址码)
指令寄存器(控制器的主要部件之一,从主存或缓存存取计算机指令)
主存地址寄存器(保存当前CPU正要访问的内存地址单元)
主存数据寄存器(保存当前CPU正要读或写的主存数据)
通用寄存器(比一般专用寄存器大,可以暂时存放或传送数据或指令,可保存ALU的运算中间结果)。
进行数据运算加工。
数据缓冲器(输入缓冲暂时存放外设送过来的数据,输出缓冲暂时存放送往外设的数据)
ALU(算术逻辑运算,常见的运算:左右移,与或非等,算术运算:加减乘除等)
状态字及寄存器(存放运算状态和运算控制信息)
通用寄存器(比一般专用寄存器大,可以暂时存放或传送数据或指令,可保存ALU的运算中间结果)。
左边的部分可以看做:运算器部分
右下部分:控制器部分
右上角部分:高速缓存部分
三者之间通过片内总线连接起来的
1.执行指令的时候,首先发生数据缓存和指令缓存,也就是把相关的数据和指令缓存起来,放进cpu的高速缓存中
2.把数据和指令缓存起来后就可以进行指令的执行了
3.程序计数器,把当前要执行的指令缓存起来,程序计数器只知道程序的地址,不知道程序的内容,这时候需要总线让这个指令缓存,把指令101拿出来,这个指令就可以通过片内总线来到这个指令寄存器,这时候指令寄存器就会缓存起来具体内容,包括操作码和地址码
4.这个指令寄存器不知道指令内容的,这时候需要把指令发送到指令译码器中去,发送之后,程序计数器要+1,指到下一条要执行的指令
5.指令译码器拿到相关的指令之后就会开始译码,译码完成之后,就能理解这条指令的内容了,然后发出控制信号,接着通过片内总线来到运算器里边
6.运算器拿到控制信号之后,就知道自己该做什么工作了,首先把R0加载到ALU里边去,然后把R0数据送出来,送到数据总线,接着来到数据缓存器,然后会把R0的数据覆盖到R1里边去,这时候就完成了这条指令的操作
7.完成这条指令的操作后,cpu又会执行下一条指令,下一条指令也是从程序计数器里边拿出来的,
取指令和分析指令的时候,主要是控制器在工作
执行指令的时候,主要是由运算器在工作
运算器和控制器不能同时工作,导致cpu的综合利用率不高
因运算器和控制器不能同时工作,CPU的综合利用率并不高,所以CPU的流水线设计可以提高CPU的利用率,提高大概3倍。
计算机组成原理核心知识点总结&面试笔试要点