计算机总线
总线:解决不同设备之间的通信问题。
总线的典型例子:
- USB:最广泛的总线,中文名称是通用串行总线。
- PCI
- ISA
- Thunderbolt
总线的特点:
- 提供了对外连接的接口
- 不同的设备可以通过USB接口进行连接。
- 是连接的标准,促使外围设备的接口统一。
分类:
- 系统总线,分为数据总线、地址总线、控制总线。
- 片内总线:芯片内部的总线,连接寄存器与寄存器之间,连接寄存器与控制器、运算器之间。总而言之,片内总线是高集成度芯片的信息传输线。
(1)数据总线:双向传输各个部件的数据信息,数据总线的位数(32位或者64位,总线宽度)是数据总线的各个参数。
(2)地址总线:用于传输数据的地址。如果地址总线的位数为n,寻址范围是0~2^n。地址总线的位数与存储单元的位数有关。
(3)控制总线:用于发出各种控制信号的传输线。控制信号由控制总线从一个组件发到另外一个组件。由此可以监视不同组件的状态(就绪/未就绪)。
总线的仲裁
作用:判断并且决定总线交换信息的先后,以解决各个设备使用总线优先顺序的问题。
方法:
- 链式查询
- 计时器定时查询
- 独立请求
链式查询
仲裁控制器和连接到总线的设备进行连接,比如设备2发送请求给仲裁控制器,仲裁控制器拿到请求后,发送信号给设备1,如果设备1不需要使用,信号就来到设备2,此时设备2就可以使用了。
- 优点:电路的复杂度低,仲裁方式简单。
- 缺点:优先级低的设备难以获得总线的使用却。链式查询对电路故障比较敏感。
计时器定时查询
仲裁控制器对设备进行编号,并使用计数器累计计数。接收到仲裁信号后,往所有的设备发出当前的计数值。计数值与设备编号一致时,就会获得总线的使用权。
独立请求
每个设备都有总线独立连接仲裁器,设备可单独向仲裁器发送请求和接收请求,当同时收到多个请求信号,仲裁器有权按优先级分配使用权。
- 优点:响应的速度快,优先顺序可以动态的改变。
- 缺点:总线的连线多,总线的控制较为复杂。
输入、输出设备
- 输入设备分为字符输入设备、图像输入设备,典型代表是键盘,常见的键盘分为薄膜键盘、机械键盘、电容键盘。图像输入设备有鼠标、数位板、扫描仪。
- 输出设备的典型代表是显示器。
输入输出接口的通用设计
功能:
- 读取数据;
- 判断设备有没有被占用;
- 判断设备是否已经连接;
- 向设备发送数据;
- 判断设备是否已经正常的启动;
结构:
- 数据线:IO设备与主机之间进行数据交换的传送线,可以分为单向传输的数据线、双向传输的数据线。
- 状态线:IO设备状态向主机报告的信号线,查询设备是否已经正常的连接,查询设备是否已经被其他的进程占用了。
- 命令线:CPU向设备发送命令的信号线,比如读写信号、启动停止信号。
- 设备选择线:主机选择IO设备进行操作的信号线,对连在总线的设备进行选择。
CPU与IO设备的通信
问题:CPU和IO设备读取数据的速率不一致。
方法:
- 程序中断:当外围IO设备就绪时,向CPU发出中断信号,CPU接收到信号以后,CPU有专门的电路响应中断信号,CPU放下之前的工作,去优先完成IO设备外围的工作。是低速设备通知CPU的一种异步方式。
- DMA(直接存储器访问):DMA直接连接主存与IO设备,工作时不需要CPU的参与。主存与IO设备交换信息时,不需要中断CPU,由于不需要打断CPU工作,CPU的工作效率就提高了。
CPU与打印机之间的协作:
DMA工作原理:
计算机的存储器
存储器按照存储介质分类:
- 半导体存储器:比如内存、U盘、固态硬盘
- 磁存储器:比如磁带、磁盘
存储器按照存储方式分类:
- 随机存储器(RAM):与位置无关,可以随机读取
- 串行存储器:读取的时候,按顺序查找,与位置有关
- 只读存储器(ROM):只读不写,比如BIOS
存储器的层次结构:
- 缓存:CPU的寄存器、高速缓存
- 主存:计算机的内存
- 辅存:计算机的外部辅存设备
存储分为2个层次结构:缓存-主存层次,主存-辅存层次。图示:
缓存-主存层次
目的:解决CPU与主存速度不匹配的问题。
原理:局部性原理
如何实现:在CPU与主存之间增加一层速度快、容量小的Cache
什么是局部性原理?
CPU访问存储器时,无论是存储指令还是存储数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。
图示:
主存-辅存层次
目的:解决主存容量不足的问题。
如何实现:主存之外,增加辅存器。
原理:局部性原理。
计算机的主存与辅存
为什么计算机断电,内存数据会丢失?
RAM是通过电容存储数据,必须隔一段时间刷新一次。如果断电,一段时间之后,将丢失所有的数据。
主存储器与CPU的交互
CPU通过地址总线指定数据的位置,主存储器通过数据总线传输相关的数据。图示:
32位系统、64位系统和主存的关系
- 32位系统:2^32=4*2^30=4GB——最大的寻址范围是4GB
- 64位系统:2^64=2^34*2^30=2^34GB——最大的寻址范围是2^34GB
磁盘读取数据的算法:
- 先来先服务
- 最短寻扫描算法
- 道时间算法(又称之为电梯算法)
- 循环扫描算法
高速缓存
作用:解决CPU与主存处理数据速度不匹配的问题。
字:存放在一个存储单元中的二进制代码的组合,是存储单元中最小的单位,比如一个数据、一个指令、一个字符串。
字块:存储在连续的存储单元中,被看成是一组字。
字的地址分为两个部分:前m位,后b位。前m位,指定字在哪个字块;后b位,指定字在该字块中的地址。图示:
高速缓存的存储的数据结构类似,缓存中的数据来源于主存,因此容量比主存小很多。
一个字有32位,一个字块有B个字,主存中共有M个字块。主存的总容量是B*M*32,字块数M=2^m,B=2^b。
命中率h:量化CPU从高速缓存中读取数据的成功率。
访问效率e:量化CPU访问缓存的效率。
如果高速缓存中没有CPU需要的数据,就需要从主存中载入数据到缓存中。称之为高速缓存的替换。
高速缓存的替换策略:
- 随机算法
- 先进先出算法(FIFO)
- 最不经常使用算法(LFU):需要额外的空间记录字块的使用频率,优先淘汰最不经常使用的字块。
- 最近最少使用算法(LRU):优先淘汰一段时间内没有使用的字块,实现方式有多种,常见的有双向链表。把当前访问的节点放到链表的最前面,保证链表头部节点是最近使用的,把尾部的节点淘汰掉。
先进先出算法:把高速缓存看成一个先进先出队列,优先替换最先进入队列的字块。图示:
最近最少使用算法的图示:
计算机的指令系统
机器指令的形式
由操作码和地址码组成。操作码字段指明指令需要完成的操作,操作码的位数反映了机器的操作种类。地址码字段给出操作数或者操作数的地址,地址码字段分为三地址码指令、二地址码指令、一地址码指令、零地址指令。
三地址码指令图示:
二地址码指令:
一地址码指令:ACC是累加器
零地址指令:在机器指令中没有地址码,通常是一些空操作、停机操作、中断返回操作。
机器指令的操作类型
寄存器之间、寄存器与存储单元之间、存储单元之间的相互数据传送。
- 第一种,数据传输。数据传送包括数据读写、交换数据地址、清零置一等操作。
- 第二种,算数逻辑操作的类型。操作数之间的加减乘除运算、操作数的与或非运算。
- 第三种,移位操作。数据左移(乘以2),数据右移(除以2)。
- 第四种,控制指令。等待指令、停机指令、空操作指令、中断指令等。
机器指令的寻址方式
分为数据寻址和指令寻址。指令寻址的方法有顺序寻址、跳跃寻址。数据寻址的方法有立即寻址、直接寻址、间接寻址。
立即寻址,可以直接获取操作数,无需访问存储器。直接寻址,直接给出操作数在主存的地址,寻找操作数简单,无需计算数据地址。间接寻址,指定地址码给出的是操作数给出的是地址的地址,需要访问一次或者多次主存,从而获得操作数。
间接寻址图示:
3种寻址方式的对比:
计算机的控制器
作用:协调和控制计算机运行。
控制器的内部结构:
- 程序计数器
- 时序发生器
- 指令译码器
- 指令寄存器
- 主存地址寄存器
- 主存数据寄存器
- 通用寄存器
- 程序计数器:用于存储下一条指令的地址,CPU工作时,会循环地从程序计数器中拿出指令。当指令被拿出时,又会指向下一条指令。
- 时序发生器:发出时序脉冲信号,CPU根据不同的时序脉冲有节奏的工作。
- 指令译码器:计算机指令由操作码和地址码组成,指令译码器可以翻译操作码对应的操作,以及控制传输地址码对应的数据。
- 指令寄存器:从主存或者缓存中,存取计算机指令,从而使CPU高速运转。
- 主存地址寄存器:保存当前CPU正要访问的内存单元的地址。
- 主存数据寄存器:保存CPU正要读或者写的主存数据。
- 通用寄存器:用于暂时存放或者传送数据或者指令;保存ALU的运算中间结果;容量比专用的寄存器大。
运算器
作用:进行数据运算加工
内部结构:
- 数据缓冲器
- ALU
- 通用寄存器
- 状态字寄存器
- 数据缓冲器:分为输入缓冲、输出缓冲。输入缓冲用于暂时存放外设送过来的数据,输出缓冲用于暂时存放送往外设的数据。
- ALU:算数逻辑单元。可以完成常见的位运算,譬如左右移、与或非;可以完成算术运算,比如加减乘除。结构:A和B是输入,F是输出,K是控制线,用来控制ALU的运算。
ALU图示:
- 状态字寄存器:用来存放运算状态,比如条件码,进位,溢出,结果正负等;用来存放运算的控制信息,比如调试的时候的跟踪标记位,允许中断位。
- 通用寄存器:用于暂时保存或传送数据或指令;保存ALU的运算中间结果;容量比专用的寄存器大。
计算机指令的执行过程
CPU的串行执行
执行过程分为:取指令→分析指令→执行指令。取指令的过程:从缓存取指令、送到指令寄存器;分析指令:指令译码器译码、发出控制信号、程序计数器+1,指向下一条指令;执行指令阶段:把数据装载到寄存器、ALU处理数据、记录运算状态、送出运算结果。
MOV指令:MOV R0,R1意思是将R1的数据移动到R0,而非R0移动到R1。
指令的执行过程图:
取指令、分析指令,主要是控制器进行工作;执行指令,主要是运算器工作。这种执行模式称之为串行执行,由于控制器和运算器不能同时工作,所以CPU的利用率并不高。
CPU的流水线设计
特点:可以多条指令同时执行,不是同步执行。
执行2条指令,图示:
执行多条指令,图示:
假设串行和流水线都执行了m条指令,假设取指令、分析指令、执行指令的时间都是t。
当m很大时,1/3m可以忽略不计,可以认为流水线是串行的3倍。