【计算机组成原理 1】计算机硬件概念

0️⃣ 参考

  • 王道计算机考研408

1️⃣ 冯·诺依曼机

  • 核心思想【存储程序】
    存储程序就是将指令先放入内存中,再从内存读取指令执行,从而实现自动化。
  • 核心 【运算器】
    在这里插入图片描述
  • 说明:在计算机系统中,软件和硬件在逻辑上是等效的
    例如:乘法的实现,既可以在存储器中使用硬件电路实现乘法允许,也可以使用软件多次加法模拟

六大特点

  1. 由五个硬件部分组成【输入设备、输出设备、存储器、运算器、控制器】
  2. 指令和数据以同等地位存入存储器,并且可以按地址寻访
  3. 指令和数据都是二进制
  4. 指令由操作码和地址组成
  5. ”存储程序“
  6. 以运算器为中心

弊端

可以发现数据一开始放入存储器时,不能直接放入存储器需要经过运算器、读取数据时不能直接从存储器读取,还要经过运算器

所以运算器压力🍐很大,至此,现代计算机诞生。

2️⃣ 现代计算机

  • 核心特点:【以存储器为中心】,解决了冯·诺依曼机让运算器压力大的问题
  • CPU诞生:【运算器+控制器】,紧密联系,提高效率
    在这里插入图片描述

设备总结

主机

在这里插入图片描述

设备

在这里插入图片描述

3️⃣ 存储器

基本结构图

在这里插入图片描述

读取过程

    1. CPU先将需要取的地址放入MAR
    2. 主存储器控制逻辑去找地址对应得值
    3. 找到后写入MDR
    4. 最后CPU通过数据线路取走MDR的数据
    1. CPU将想要写入的位置放在MAR
    2. CPU将想要写入的数据放在MDR
    3. CPU通过控制总线告诉主存储器,“我要写”
    4. 主存储器通过这三个信息就明白了,就去存

存储体

  • 存储单元:一串二进制代码
  • 存储字:就是存储单元中存的东西(一串二进制代码)

  • 存储字长:存储单元中二进制代码的长度

  • 存储元:小电容,存储一个bit

计算细节和混淆点

存储体中取出的数据是要放入MDR的,所以MDR位数 = 存储体位数(存储字长)

  • 例如

    • MAR = 4位,说明有个序号,也就是有16个存储单元【整体的个数】
    • MDR = 16位,说明存储字长为16,也就是一个字(word,不是字节)的大小为16bit
  • 混淆点【字 和 字节 和 比特位】

    • 字(word),不确定,看计算机
    • 字节(Byte),1B = 8bit,8个比特位,是固定的【100Mbps,大约就是100/8 MB/s】
    • 比特位(bit),可以简称比特,也可以简称位

4️⃣ 运算器

  • ACCAccumulate Register】累加器,存放操作数或运算结果

  • MQMultiple-Quotient Register】乘商存储器,存放操作数或运算结果

  • X 通用的操作数存储器,多个

  • ALUArithmetic and Logic Unit】算术逻辑单元,核心,其他都是寄存器,它才是老大

在这里插入图片描述

5️⃣ 控制器

  • CUControl Unit】控制单元,核心

  • IRinstruction Register】指令寄存器,存放当前执行指令

  • PCProgram Counter】程序计数器,存放下一条指令地址,自动加1
    在这里插入图片描述

宏观的完成一条指令

  1. 取指令 PC
  2. 分析指令 IR
  3. 执行指令 CU

6️⃣ 执行过程【难点】

高级语言 -> 机器语言

在这里插入图片描述



第一条指令

在这里插入图片描述

(PC)是指读取PC中的数据

  1. (PC) -> MAR 【此时MAR = 0】,由于PC存储下一条指令的地址,所以最开始从PC中拿,地址!地址!地址!这里比较绕,下一条地址也就是这次该执行的地址,不要专牛角尖
  2. M(MAR) -> MDR【MDR = 000001 0000000101】,由地址在存储体中找到相应的指令或值
  3. (MDR)-> IR【IR = 000001 0000000101】
  4. OP(IR) -> CU 将IR中的操作码部分取出,交给CU分析,然后分析出是取数指令
  5. AD(IR) -> MAR 【MAR = 0000000101(5)】,由CU分析出取数,就取出IR中地址码的数
  6. M(MAR) -> MDR 【MDR = 0000000000000010(2)】
  7. (MDR) -> ACC 【ACC = 2】,在控制单元的控制下,将数据放到ACC中


第二条指令

在这里插入图片描述

PC执行完上一条指令后,会自动+1,所以现在PC = 1

  1. (PC) -> MAR 【MAR = 1】
  2. M(MAR) -> MDR 【MDR = 00100 0000000110】
  3. (MDR) -> IR 【IR = 00100 0000000110】
  4. OP(IR) -> CU 【CU = 00100】

  1. CU分析后发现,是一个乘法操作,开始指挥IR去取数
  2. AD(IR) -> MAR 【MAR = 0000000110(6)】
  3. M(MAR) -> MDR 【MAR = 0000000000000011(3)】
  4. (MDR)-> MQ 【MQ = 3】
  5. CU发现是乘法操作,先(ACC) -> X【X = 2】,将被乘数放入X3 * 1,3是被乘数
  6. (MQ)(X)-> ACC 【ACC = 32 = 6】,如果结果很大,会放入MQ辅助存储


第三条指令

在这里插入图片描述

可以发现前面取数指令是相同的,下面直接就省略了

  1. CU分析后发现是一条加法指令
  2. AD(IR) -> MAR 【MAR = 0000000111(7)】
  3. M(MAR) -> MDR 【MDR = 0000000000000001(1)】
  4. M(MDR) -> X 【X = 1】
  5. (ACC) + (X) -> ACC 【ACC = 7】,由ALU实现加法运算


第四条指令

在这里插入图片描述

  1. CU分析后发现是一条存储指令
  2. AD(IR) -> MAR 【MAR = 0000001000(8)】
  3. (ACC) -> MDR 【MDR = 7】,先将要存储的数据放在MDR中
  4. 控制单元会通过控制总线告诉主存储器,此次要进行写操作,然后主存储器就会把MDR放入MAR的地址中【原始数据y = 8】


第五条指令

  1. CU分析后发现是一条停机指令,就结束了

总结分析

慢慢不难发现,前面的取数操作基本上是一样的,变化的是在CU分析完操作码后的操作

  • 冯·诺依曼机的特点更加明显
    • 五大部件
    • 指令和数据平等存放在存储器中
    • 指令和数据都是二进制
    • 指令 = 操作码 + 地址码
    • 存储程序
    • 以运算器为中心

7️⃣ 计算机系统的层次结构

五层结构

  • M4【高级语言机器】,执行高级语言

  • M3【汇编语言机器】,执行汇编语言

  • M2【操作系统机器】,向上提高操作系统指令


  • M1【传统机器】,执行机器指令

  • M0【微程序机器】,执行微指令

在这里插入图片描述

三个级别的语言

  • 高级语言 【编译器、解释器】

  • 汇编语言【相当于机器码的助记符号】

  • 机器语言【真正能执行的】

编译、汇编、解释程序统称为:翻译程序

在这里插入图片描述

机体与机组的区别

  • 计算机体系结构,研究的是硬件和软件之间的接口设计
  • 计算机组成原理,研究的是如何用硬件实现定义的接口

8️⃣ 计算机性能指标

存储器

总容量 = 存储单元的个数( 2 M A R 2^{MAR} 2MAR) * 存储单元的容量(len(MDR))

  • 例如
    • MAR为32位,MDR为8bit
      则,总容量为 2 32 ∗ 8 b i t = 4 G b ∗ 8 b i t = 4 G B 2^{32}* 8bit = 4Gb * 8bit = 4GB 2328bit=4Gb8bit=4GB

2 10 = 1 K b ∗ 8 b i t = 1 K B 2^{10} = 1Kb * 8bit = 1KB 210=1Kb8bit=1KB
2 20 = 1 M b ∗ 8 b i t = 1 M B 2^{20} = 1Mb * 8bit = 1MB 220=1Mb8bit=1MB
2 30 = 1 G b ∗ 8 b i t = 1 G B 2^{30} = 1Gb * 8bit = 1GB 230=1Gb8bit=1GB
2 40 = 1 T b ∗ 8 b i t = 1 T B 2^{40} = 1Tb * 8bit = 1TB 240=1Tb8bit=1TB

CPU【重点】

在这里插入图片描述

  • CPU时钟周期:也就是上图中一段的脉冲信号【单位:微秒、纳秒】
  • CPU主频 1 C P U 时钟周期 \frac{1}{CPU时钟周期} CPU时钟周期1【单位:Hz】
  • CPI(Clock cycle Per Instruction):执行一条指令所需的时钟周期【是一个数】,这个还会受到其他硬件约束,所以一般都是考虑平均CPI
  • 执行一条指令的耗时:CPI * CPU时钟周期
  • CPU执行时间 指令条数 ∗ C P I C P U 主频 \frac{指令条数 * CPI}{CPU主频} CPU主频指令条数CPI

例如:
CPU主频1000Hz,程序包含100条指令,平均CPI位3,则该程序在CPU上执行需要多久?
100 ∗ 3 1000 \frac{100 * 3}{1000} 10001003

IPS(Instructions Per Second):每秒钟执行多少条指令【IPS= C P U 主频 平均 C P I \frac{CPU主频}{平均CPI} 平均CPICPU主频】,当然也有KIPS、MIPS…

  • FLOPS:每秒执行多少次浮点运算,当然也有KFLOPS、MFLOPS、GFLOPS、TFLOPS

注意
这里K是103,M是106…是1000的倍数,与容量的要区分开

9️⃣ 系统整体性能指标

常见指标

  • 数据通路带宽:也就是数据传输总线的容量
  • 吞吐量:系统在单位时间内处理请求的数量
  • 响应时间:处理到处理结束的时间
  • 基准程序:…鲁大师…

CPU小问题

  • 主频高一定比主频低的快吗?

    • 不一定,因为CPI不一样
    • 例如:A主频2GHz CPI=10,B主频1GHz CPI=1。
      • A(IPS)= 2 10 = 0.5 \frac{2}{10} = 0.5 102=0.5
      • B(IPS)= 1 1 = 1 \frac{1}{1} = 1 11=1
      • 所以B更快
  • CPI也相同会更快吗?

    • 不一定,指令系统不同,也是不一样的
  • 基准程序越快越好吗?

    • 不一定,因为,每个电脑的侧重点不同,存在语句的频度差异

1️⃣0️⃣温馨提示

注意单位

  • 描述存储容量、文件大小时【 k = 2 10 k = 2^{10} k=210
  • 描述频率、速率时【 k = 1 0 3 k = 10^3 k=103…】

字节与字

  • 是要看系统定的【word
  • 字节B】,就是等于8bit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值