计算机组成原理

本文详细介绍了计算机性能的评价指标,如响应时间和吞吐率,并探讨了CPU性能、用户CPU时间与系统CPU时间的区别。提到了时钟周期、时钟频率、动态和静态功耗对性能的影响。此外,还阐述了单周期、多周期及流水线处理器的工作原理,以及处理数据冒险和控制冒险的方法。最后,讨论了Amdahl定律在系统优化中的应用。
摘要由CSDN通过智能技术生成

计算机性能评价

计算机有两种不同的性能度量

time to do the task

  • 响应时间:完成单个任务所需要的的时间
  • 执行时间
  • 等待时间或延迟

tasks per day,hour,sec,ns…

  • 吞吐率:单位时间所完成的任务总量
  • 带宽

计算机性能:响应时间(执行时间)的倒数

计算机性能 = 1 / 执行时间
比较计算机性能时可以用,相应时间来衡量


系统相应时间(用户感受到的)
CPU执行时间:CPU真正花费在程序执行上的时间

  • 用户CPU时间:用来运行用户代码的时间
  • 系统CPU时间:为执行用户程序而需要运行一些操作系统代码的时间

其他时间:等待I/O操作完成或者CPU花在其他用户程序的时间


计算机系统性能 ≠ CPU性能
系统性能:表示系统相应时间
CPU性能:表示用户CPU时间(CPU真正用于用户程序执行上的时间)

CPU执行时间

一个程序的CPU执行时间 = 执行一个程序需要的(计算机)基本时间单元的数量 × 基本时间单元
一个程序的CPU执行时间 = 一个程序的CPU时钟周期数 × 时钟周期时间
= 一个程序的CPU时钟周期数 ÷ 时钟频率

一个程序的CPU时钟周期数 = 程序的指令数 × 每条指令的平均时钟周期数
其中:每条指令的平均时钟周期数:CPI

不同指令需要的执行时间是不同的

一个程序的CPU时钟周期数 = 程序的指令数 × CPI × 时钟周期数

时钟周期:

  • 所有计算机都有一个固定频率的硬件时钟,决定各种硬件时间发生和执行的时间和顺序
  • 硬件时钟所产生的的离散时间间隔统称为时钟周期

时钟频率

  • 时钟周期的倒数

eg. 时钟周期为250ps, 对应的时钟频率是多少?
时钟频率 = 1/时钟周期 = 1/250ps = 4GHz

CPU的主频就是时钟频率
在这里插入图片描述
在这里插入图片描述
例题:
在这里插入图片描述
在这里插入图片描述
例题二:
在这里插入图片描述
所以A比B快1.2倍(快多少通过比值衡量)

在这里插入图片描述
基准测试程序集是专门进行性能评价的一组程序

Amdahl 定律(也叫阿姆达尔定律)

改进后的执行时间 = 受改进影响部分的执行时间 / 改进提高的倍数 + 不受影响的执行时间

定律描述

硬件设计的基本策略:使最常用的部件执行最快

计算机功耗

  • 动态功耗: CMOS中主要的能量消耗
    动态功耗主要是指晶体管翻转时消耗的能量
    减少芯片动态功耗的方法:
    1.降低时钟频率
    2.降低工作电压
  • 静态功耗:即使芯片内晶体管关闭,仍有漏电流发生

处理器

数据通路:指令执行过程中,数据所经过的路径(包括路径中的部件),是指令的执行部件
控制器:对指令进行译码,生成指令对应的控制信号,控制数据通路的动作,能对指令的执行部件发出控制信号,是指令的控制部件(作用有:取指令,指令译码,执行指令,确定下一条指令,执行环境的保护)

MIPS数据通路

数据通路描述了指令执行过程中数据是怎样在CPU的各个部件之间传递的

  • 传递那些数据
  • 数据传递方向
  • 数据传递顺序

加法指令: ADD R1 ,R2 , R3
功能: R1 ← R2 + R3
过程:
Inst(内部寄存器)
1.取指令: Inst ← Mem[PC] , PC ← PC + 4
2.指令译码: A ← [R2] , B ← [R3]
3.完成加法: ALUOutPut ← A + B
4.结果写回: [R1] ← ALUOutPut

在这里插入图片描述

Load指令: LW R1,R2 , #4
功能: R1 ← Mem[R2 + 4]
过程:

  1. 取指令:Inst ← [PC] , PC ← PC+4
  2. 指令译码: A ← [R2] , 立即数符号扩展为32位
  3. 计算访存地址 A + 4
  4. 读地址 A+4 的存储单元, LMD ← [A+4]
  5. 结果写回 : [R1] ← LMD
    (LMD 是内部寄存器)
    在这里插入图片描述
    MUX多路选择器

Store指令
在这里插入图片描述
包含条件分支指令的数据通路:基本的MIPS数据通路
在这里插入图片描述
每条指令的功能实现可由四个基本操作实现:

  1. 读取某一主存单元内容,并将其装入某个寄存器
  2. 把一个数据从某个寄存器存入某个主存单元中
  3. 把一个数据从某个寄存器送到另一个寄存器或者ALU
  4. 进行某种算数或逻辑运算,把结果送进某个寄存器中

在这里插入图片描述
取指,译码等环节叫做一个个机器周期
在这里插入图片描述
在这里插入图片描述
程序计数器的值就是当前要执行指令的地址

控制信号

在这里插入图片描述
如:
RegWr : 决定寄存器是读是写
MemWr: 决定存储器是读是写
RegDst:决定是选择哪一个的寄存器的值
ALUsrc: 决定ALU的输入是哪一个
ALUetr: 决定ALU进行哪一种操作
MemtoReg: 决定哪个值写回寄存器
ExtOP: 决定是进行符号扩展还是零扩展
在这里插入图片描述

单周期处理器控制通路设计

  1. 确定数据通路上每个元件所需要的的控制信号以及控制信号的取指
  2. 汇总所有指令涉及到的控制信号,生成一张反应指令与控制信号之间的关系表
  3. 根据关系表得到每个控制信号的逻辑表达式,据此设计控制器电路
    在这里插入图片描述
    单周期处理器:时钟周期取决于最复杂的指令所需要的时间

多周期处理器

多周期处理器实现
多周期CPU指的是将整个CPU的执行过程分成几个阶段,每个阶段用一个时钟去完成,然后开始下一条指令的执行,而每种指令执行时所用的时钟数不尽相同,这就是所谓的多周期CPU。
a). 把指令执行分成多个阶段,每个阶段都在一个时钟周期内完成
时钟周期以最复杂阶段所需时间为准
尽量分成大致相等的若干阶段
每个阶段内最多只能完成:1次访存 或 读/写寄存器 或 ALU运算

b) 每个阶段的结果保存在专用的内部寄存器中

多周期处理器的好处:
在这里插入图片描述
在这里插入图片描述

流水线处理器

流水线处理模式,相对非流水线,本质上是一种生产管理模式的改变。在硬件条件有空闲的前提下,通过划分工作步骤,让硬件处于填满状态,从而提升工作效率。在计算机处理器体系结构中,正是采用这种方式来对指令进行处理

在这里插入图片描述
冒险:流水线遇到无法正确执行后续指令或者执行不了不该执行的指令的现象

结构冒险:同一个部件同时被不同指令使用

一个功能部件同时被多个指令使用的现象称为结构冒险(或者称为资源冲突)

为了使得流水线能够顺利工作,规定:

  • 每个功能部件每条指令只能使用一次(如不能两次或者两次以上使用寄存器文件写端口)
  • 每个功能部件必须在相同阶段被使用(如总是在第五阶段使用寄存器文件写端口)

解决方法:
一:在流水线中插入气泡
在这里插入图片描述
插入一个气泡:抵达/通过某个流水段的指令正常执行,其余指令在各自当前的流水段等待一个周期

方法二:
增加一个空的写回阶段,加一个NOP操作
在这里插入图片描述
流水线寄存器(下图中那几个长得超级长的寄存器):保存前一个阶段的结果,为后一个阶段提供输入
在这里插入图片描述

控制冒险:转移或者异常的出现改变了执行流程,顺序执行指令在目标地址产生前已经被取出

在这里插入图片描述

数据冒险:后面的指令用到前面指令的结果,但是结果还没产生

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新城里的旧少年^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值