四川大学计算机组成原理实验报告_计算机组成原理-second

计算机总线

总线:解决不同设备之间的通信问题。

总线的典型例子:

  1. USB:最广泛的总线,中文名称是通用串行总线。
  2. PCI
  3. ISA
  4. Thunderbolt

总线的特点:

  • 提供了对外连接的接口
  • 不同的设备可以通过USB接口进行连接。
  • 是连接的标准,促使外围设备的接口统一。

分类:

  • 系统总线,分为数据总线、地址总线、控制总线。
  • 片内总线:芯片内部的总线,连接寄存器与寄存器之间,连接寄存器与控制器、运算器之间。总而言之,片内总线是高集成度芯片的信息传输线。

(1)数据总线:双向传输各个部件的数据信息,数据总线的位数(32位或者64位,总线宽度)是数据总线的各个参数。

(2)地址总线:用于传输数据的地址。如果地址总线的位数为n,寻址范围是0~2^n。地址总线的位数与存储单元的位数有关。

(3)控制总线:用于发出各种控制信号的传输线。控制信号由控制总线从一个组件发到另外一个组件。由此可以监视不同组件的状态(就绪/未就绪)。

总线的仲裁

作用:判断并且决定总线交换信息的先后,以解决各个设备使用总线优先顺序的问题。

方法:

  • 链式查询
  • 计时器定时查询
  • 独立请求

链式查询

仲裁控制器和连接到总线的设备进行连接,比如设备2发送请求给仲裁控制器,仲裁控制器拿到请求后,发送信号给设备1,如果设备1不需要使用,信号就来到设备2,此时设备2就可以使用了。

  • 优点:电路的复杂度低,仲裁方式简单。
  • 缺点:优先级低的设备难以获得总线的使用却。链式查询对电路故障比较敏感。

8e40e5b230c03ff40099407667c1ce6c.png

计时器定时查询

仲裁控制器对设备进行编号,并使用计数器累计计数。接收到仲裁信号后,往所有的设备发出当前的计数值。计数值与设备编号一致时,就会获得总线的使用权。

8ab5af0c0ff7b1bdea7954770a1a4add.png

727434bc943d6d5f08fc127a22a422fb.png

aef09c49152e2df756ff5451c9bb60f1.png

独立请求

每个设备都有总线独立连接仲裁器,设备可单独向仲裁器发送请求和接收请求,当同时收到多个请求信号,仲裁器有权按优先级分配使用权。

  • 优点:响应的速度快,优先顺序可以动态的改变。
  • 缺点:总线的连线多,总线的控制较为复杂。

输入、输出设备

  • 输入设备分为字符输入设备、图像输入设备,典型代表是键盘,常见的键盘分为薄膜键盘、机械键盘、电容键盘。图像输入设备有鼠标、数位板、扫描仪。
  • 输出设备的典型代表是显示器。

输入输出接口的通用设计

功能:

  • 读取数据;
  • 判断设备有没有被占用;
  • 判断设备是否已经连接;
  • 向设备发送数据;
  • 判断设备是否已经正常的启动;

结构

  • 数据线:IO设备与主机之间进行数据交换的传送线,可以分为单向传输的数据线、双向传输的数据线。
  • 状态线:IO设备状态向主机报告的信号线,查询设备是否已经正常的连接,查询设备是否已经被其他的进程占用了。
  • 命令线:CPU向设备发送命令的信号线,比如读写信号、启动停止信号。
  • 设备选择线:主机选择IO设备进行操作的信号线,对连在总线的设备进行选择。

CPU与IO设备的通信

问题CPU和IO设备读取数据的速率不一致。

方法:

  • 程序中断:当外围IO设备就绪时,向CPU发出中断信号,CPU接收到信号以后,CPU有专门的电路响应中断信号,CPU放下之前的工作,去优先完成IO设备外围的工作。是低速设备通知CPU的一种异步方式。
  • DMA(直接存储器访问):DMA直接连接主存与IO设备,工作时不需要CPU的参与。主存与IO设备交换信息时,不需要中断CPU,由于不需要打断CPU工作,CPU的工作效率就提高了。

CPU与打印机之间的协作:

e59876d52e7923f75f1e13185283b0aa.png

DMA工作原理:

6037ba0c91c7dd9e97cf02063cb49d96.png

计算机的存储器

存储器按照存储介质分类:

  • 半导体存储器:比如内存、U盘、固态硬盘
  • 磁存储器:比如磁带、磁盘

存储器按照存储方式分类:

  • 随机存储器(RAM):与位置无关,可以随机读取
  • 串行存储器:读取的时候,按顺序查找,与位置有关
  • 只读存储器(ROM):只读不写,比如BIOS

存储器的层次结构:

  • 缓存:CPU的寄存器、高速缓存
  • 主存:计算机的内存
  • 辅存:计算机的外部辅存设备

存储分为2个层次结构:缓存-主存层次,主存-辅存层次。图示:

78621f328b8454d7adcc32293fa080f0.png

缓存-主存层次

目的:解决CPU与主存速度不匹配的问题。

原理:局部性原理

如何实现:在CPU与主存之间增加一层速度快、容量小的Cache

什么是局部性原理?

CPU访问存储器时,无论是存储指令还是存储数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。

图示:

cedc6e962df28fd2c805343d81203c8e.png

主存-辅存层次

目的:解决主存容量不足的问题。

如何实现:主存之外,增加辅存器。

原理:局部性原理。

计算机的主存与辅存

为什么计算机断电,内存数据会丢失?

RAM是通过电容存储数据,必须隔一段时间刷新一次。如果断电,一段时间之后,将丢失所有的数据。

主存储器与CPU的交互

CPU通过地址总线指定数据的位置,主存储器通过数据总线传输相关的数据。图示:

5f5b31e689ed2ebd838694f50ceede25.png

32位系统、64位系统和主存的关系

  • 32位系统:2^32=4*2^30=4GB——最大的寻址范围是4GB
  • 64位系统:2^64=2^34*2^30=2^34GB——最大的寻址范围是2^34GB

磁盘读取数据的算法:

  1. 先来先服务
  2. 最短寻扫描算法
  3. 道时间算法(又称之为电梯算法)
  4. 循环扫描算法

高速缓存

作用:解决CPU与主存处理数据速度不匹配的问题。

字:存放在一个存储单元中的二进制代码的组合,是存储单元中最小的单位,比如一个数据、一个指令、一个字符串。

字块:存储在连续的存储单元中,被看成是一组字。

字的地址分为两个部分:前m位,后b位。前m位,指定字在哪个字块;后b位,指定字在该字块中的地址。图示:

1510aa3d6577c3fd707c7264f609f1db.png

高速缓存的存储的数据结构类似,缓存中的数据来源于主存,因此容量比主存小很多。

一个字有32位,一个字块有B个字,主存中共有M个字块。主存的总容量是B*M*32,字块数M=2^m,B=2^b。

faed849fb6c035dc7475b441709d8a3b.png

命中率h:量化CPU从高速缓存中读取数据的成功率。

访问效率e:量化CPU访问缓存的效率。

4dcca27093dfe16f6baa6abcbf76d2ca.png

add4969f6039d81b36d25fe7866ae72c.png

如果高速缓存中没有CPU需要的数据,就需要从主存中载入数据到缓存中。称之为高速缓存的替换。

高速缓存的替换策略:

  1. 随机算法
  2. 先进先出算法(FIFO)
  3. 最不经常使用算法(LFU):需要额外的空间记录字块的使用频率,优先淘汰最不经常使用的字块。
  4. 最近最少使用算法(LRU):优先淘汰一段时间内没有使用的字块,实现方式有多种,常见的有双向链表。把当前访问的节点放到链表的最前面,保证链表头部节点是最近使用的,把尾部的节点淘汰掉。

先进先出算法:把高速缓存看成一个先进先出队列,优先替换最先进入队列的字块。图示:

8e0c2279678a7ff8a4ddbf6f6cd13c5b.png

最近最少使用算法的图示:

9473cb199a3f596796654d1eff021777.png

计算机的指令系统

机器指令的形式

由操作码和地址码组成。操作码字段指明指令需要完成的操作,操作码的位数反映了机器的操作种类。地址码字段给出操作数或者操作数的地址,地址码字段分为三地址码指令、二地址码指令、一地址码指令、零地址指令。

三地址码指令图示:

9fbfbd6c2941abe2db2b777928417cdc.png

二地址码指令:

0db6af85644053c9cf20096f5e9411d9.png

一地址码指令:ACC是累加器

53bb00f63a5094183fd88d192781342f.png

零地址指令:在机器指令中没有地址码,通常是一些空操作、停机操作、中断返回操作。

机器指令的操作类型

寄存器之间、寄存器与存储单元之间、存储单元之间的相互数据传送。

  • 第一种,数据传输。数据传送包括数据读写、交换数据地址、清零置一等操作。
  • 第二种,算数逻辑操作的类型。操作数之间的加减乘除运算、操作数的与或非运算。
  • 第三种,移位操作。数据左移(乘以2),数据右移(除以2)。
  • 第四种,控制指令。等待指令、停机指令、空操作指令、中断指令等。

机器指令的寻址方式

分为数据寻址和指令寻址。指令寻址的方法有顺序寻址、跳跃寻址。数据寻址的方法有立即寻址、直接寻址、间接寻址。

立即寻址,可以直接获取操作数,无需访问存储器。直接寻址,直接给出操作数在主存的地址,寻找操作数简单,无需计算数据地址。间接寻址,指定地址码给出的是操作数给出的是地址的地址,需要访问一次或者多次主存,从而获得操作数。

间接寻址图示:

74d9fd1e0c7e392521adc1d53b998f75.png

3种寻址方式的对比:

1aa116726a7cec745cfb68aad2c1c12d.png

计算机的控制器

作用:协调和控制计算机运行。

控制器的内部结构:

  1. 程序计数器
  2. 时序发生器
  3. 指令译码器
  4. 指令寄存器
  5. 主存地址寄存器
  6. 主存数据寄存器
  7. 通用寄存器
  • 程序计数器:用于存储下一条指令的地址,CPU工作时,会循环地从程序计数器中拿出指令。当指令被拿出时,又会指向下一条指令。
  • 时序发生器:发出时序脉冲信号,CPU根据不同的时序脉冲有节奏的工作。
  • 指令译码器:计算机指令由操作码和地址码组成,指令译码器可以翻译操作码对应的操作,以及控制传输地址码对应的数据。
  • 指令寄存器:从主存或者缓存中,存取计算机指令,从而使CPU高速运转。
  • 主存地址寄存器:保存当前CPU正要访问的内存单元的地址。
  • 主存数据寄存器:保存CPU正要读或者写的主存数据。
  • 通用寄存器:用于暂时存放或者传送数据或者指令;保存ALU的运算中间结果;容量比专用的寄存器大。

运算器

作用:进行数据运算加工

内部结构:

  1. 数据缓冲器
  2. ALU
  3. 通用寄存器
  4. 状态字寄存器
  • 数据缓冲器:分为输入缓冲、输出缓冲。输入缓冲用于暂时存放外设送过来的数据,输出缓冲用于暂时存放送往外设的数据。
  • ALU:算数逻辑单元。可以完成常见的位运算,譬如左右移、与或非;可以完成算术运算,比如加减乘除。结构:A和B是输入,F是输出,K是控制线,用来控制ALU的运算。

ALU图示:

6e1d2627390cb76ecc0db3314ee1f1c7.png
  • 状态字寄存器:用来存放运算状态,比如条件码,进位,溢出,结果正负等;用来存放运算的控制信息,比如调试的时候的跟踪标记位,允许中断位。
  • 通用寄存器:用于暂时保存或传送数据或指令;保存ALU的运算中间结果;容量比专用的寄存器大。

计算机指令的执行过程

CPU的串行执行

执行过程分为:取指令→分析指令→执行指令。取指令的过程:从缓存取指令、送到指令寄存器;分析指令:指令译码器译码、发出控制信号、程序计数器+1,指向下一条指令;执行指令阶段:把数据装载到寄存器、ALU处理数据、记录运算状态、送出运算结果。

MOV指令:MOV R0,R1意思是将R1的数据移动到R0,而非R0移动到R1。

指令的执行过程图:

b890487cba115cfc14e2f0a17a494ab5.png

取指令、分析指令,主要是控制器进行工作;执行指令,主要是运算器工作。这种执行模式称之为串行执行,由于控制器和运算器不能同时工作,所以CPU的利用率并不高。

CPU的流水线设计

特点:可以多条指令同时执行,不是同步执行。

执行2条指令,图示:

ed6a52e1199ba2ed27989dea968427e8.png

执行多条指令,图示:

62b33926422356dfb21747c3519c3d63.png

假设串行和流水线都执行了m条指令,假设取指令、分析指令、执行指令的时间都是t。

8a3bbfd5a3790302e0d1298c88613118.png

当m很大时,1/3m可以忽略不计,可以认为流水线是串行的3倍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值