【计组】第一章:计算机系统组成概述

【计组】第一章:计算机系统组成概述

章节纲要

  • 发展历程
  • 计算机系统的层次结构
    • 计算机硬件的基本组成
    • 计算机软件的分类
    • 计算机的工作过程
  • 计算机性能的指标:吞吐量,响应时间,CPU时钟周期,主频,CPI,CPU的执行时间,MIPS,MFLOPS

1. 发展历程

1. 计算机硬件的发展经历了四代

  • 电子管时代:机器语言编程(40年代出现的时候,第一台计算机是1946年)
  • 晶体管时代:高级语言的出现,磁芯存储器(大概50,60年代的时候)
  • 中小规模的集成电路时代:半导体存储器,分时操作系统的出现(60-70年代的时候)
  • 超大规模的集成电路:微处理器(70年代之后至今)

2. 每种指令系统的分类

  • SISD:单指令单数据流,也就是我们常说的冯诺依曼架构,使用控制流驱动方式
  • MIMD:多指令多数据流,多用于分布式计算机

3. 编译,汇编,解释

  • 编译:把高级语言转成机器语言
  • 汇编:把汇编语言转成机器语言
  • 解释:程序执行的时候才翻译成机器语言,动态转换

使用二进制是由物理器件的性质和性能决定的


2. 计算机的层次结构:硬件的基本组成

2.1 计算机的层次结构

  • (1)计算机系统由“软件”和“硬件”组成
  • (2)软件和硬件在逻辑上是等效的,硬件注重的是效率,软件注重的是灵活性
  • (3)硬件的组成:【1】运算器【2】存储器【3】控制器【4】IO设备
  • (4)指令和数据以同等的地位存放在存储器当中
  • (5)指令由:“指令码”+“地址码”,在存储器当中顺序存放
  • (6)存储程序:将指令存放在主存当中,按在主存当中的首地址开始执行第一条指令,顺序执行,直到结束。
  • (7)早期的计算机是以运算器作为中心的,后期为减少IO和CPU的关联,发展为以存储器为中心。
  • (8)存储器包括:主存和辅存。主存是由多个存储单元组成的,存储单元含有多个存储的元件,每个存储元件存储一位的0或者1。存储字:一串二进制的代码,存储字长:8-bit 的0或者偶数倍

[存储元件…]=存储单元,存储单元 = 存储字(他的长度是存储字长),需要注意的是:机器字长和存储字长的概念是不一样的。

  • (9)按地址存储:按照存储单元的地址进行存取
  • (10)相联存储器既可以按址访存,也可以按照内容寻址

2.2 常见的缩写

  • MAR:主存地址寄存器。存放准备访问的存储单元的地址
  • MDR:主存数据寄存器。存放从存储单元取来的数据
  • IR:指令寄存器。存放当前准备执行的指令
  • PC:程序计数器,是寄存器。存放下条指令的地址
  • CU:控制单元。分析指令

我们可以看到,我们的寄存器分为存内容的寄存器和存地址的寄存器,我们所说的存内容分为两者:数据和指令。


2.3 MAR和MDR

  • MAR:用于寻址,其位数对应存储单元的个数,比如我们说MAR的位数是10位,那么我们的存储单元的数量是 2 10 = 1024 2^{10}=1024 210=1024
  • MDR:用来存拿回来的数据,因此他的位数等于存储单元的存储字长。

2.4 运算器

核心是ALU,还含有其他通用的寄存器,如:ACC(累加器),MQ(乘商器),X(操作数寄存器),IX(变址寄存器),BR(基址寄存器),PSW(程序状态字寄存器)

2.5 控制器

  • PC:程序计数器(存地址),存放下一条准备执行的指令的地址
  • IR:指令寄存器(存内容)存放当前准备执行的指令,他的内容来自于MDR
  • CU:控制单元,分析指令

IR的指令的操作码会被送到CU,操作数地址码会送到MAR,然后去取内容。


2.6 一个传统CPU的示例

在这里插入图片描述

这个是传统的CPU,现代的CPU会把MDR和MAR也包含进去了。


3. 计算机的层次结构:软件的分类

3.1 系统软件和应用软件

  • 系统软件:OS,DBMS,语言处理软件,分布式软件,网络软件(基建)
  • 应用软件:科学计算类的软件,工程设计的软件,数据统计的软件

需要注意的是:DBMS ≠ \neq =DBS,DBMS是系统数据库管理系统,是管理用户和操作系统之间的数据交互的,而DBS是我们常见的数据库系统是属于应用类的软件。

3.2 语言之间的转换可能

在这里插入图片描述


4. 计算机的工作过程

4.1 四步工作

  • step1:程序和数据 → \rightarrow 主存
  • step2:从起始地址开始执行指令
  • step3:计算下条指令的地址
  • step4:取出指令并执行直到结束

4.2 取指令,分析指令,执行指令

  • 取指令:PC → \rightarrow MAR → \rightarrow M → \rightarrow MDR → \rightarrow IR
  • 分析指令:OP(IR) → \rightarrow CU
  • 执行指令:AD(IR) → \rightarrow MAR → \rightarrow M → \rightarrow MDR → \rightarrow ACC(示例代指运算部件)

每取完一条指令:(PC)+1 → \rightarrow PC

OP是操作码的意思,AD是数据地址码的意思,(…)就 是把这个部件的内容怎样怎样。


4.3 计算机系统的多级层次结构
在这里插入图片描述

上层是对下层的功能拓展,下层是上层的基础

计算机应具备的功能:数据传送,数据存储,数据处理,操作控制,操作判断


5. 计算机的性能指标

5.1 字长

  • 机器字长:指计算机一次整形运算所能处理的位数,一般等于内部寄存器的字长
  • 指令字长:指令的位数,一定是存储字长的整数倍
  • 存储字长:存储单元的位数,一定是Byte的整数倍

假如:指令字长 = 2 存储字长,则取指周期 = 2 机器周期

5.2 数据通路带宽

指的是数据总线一次能传达的位数


5.3 存储量指标

  • 方法1:xxx 字节
  • 方法2:字数x存储字长,比如:512K ∗ * 16bit。512K就是存储单元的数量,16bit就是存储字长。

我们需要注意的是这里的K单位,实际上,有两种换算方法:一种KiB的换算法: 1 K i B = 2 10 = 1024 B 1KiB = 2^{10}=1024 B 1KiB=210=1024B,一种是KB换算法: 1 K B = 1000 B 1KB=1000B 1KB=1000B,但是由于各种原因,至今这俩个单位经常被通俗地混淆,我们只有在考试遇到题目的时候才需要较真的考虑。当我们发现当前的场景需要考虑二进制位数的时候,我们就使用KiB的方式,如果像在计网里面计算一些明显很难换算成2的次方的数据的时候我们就直接使用1000换算。或者,我们研究速度的时候,一般使用1000作为换算,研究存储数据的时候使用1024的换算。

比如,我们这里512K,我们研究的是非常严谨的存储单元,因此是需要严格考虑位数的, K = 2 10 K=2^{10} K=210 512 = 2 9 512=2^9 512=29,对这个存储器访存的MAR位数是 19 19 19

假如我们知道主存大小是64K*32位,而且存储字长和机器字长相等,写出MAR,MDR,PC的位数。

64K = 2 16 2^{16} 216,MAR = 16位,MDR = 32位,PC(存地址)存放的是下一条指令的地址,因此也是16位


5.4 运算速度

  • K=1000,M=1000K,G=1000M,T=1000G。M我们叫百万
  • CPU主频:每秒能产生的时钟周期数量
  • CPI:每条指令消耗的时钟周期数量
  • 程序执行耗时:(指令总数*CPI)/CPU主频
  • MIPS:每秒执行多少M的指令
  • MFLOPS:每秒执行多少M次的浮点运算
  • 【计组】吞吐量:在单位时间能处理请求的数量
  • 响应时间:请求之后的需要等待时间

5.5 其他

  • (1)系列机:相同的体系结构,相同的指令系统,型号不一样
  • (2)兼容:软件或者硬件的通用性,在不同型号通用
  • (3)固件:具有软件特性的硬件,比如:ROM,就一个软硬结合的产物
  • (4)缩短程序执行时间我们可以对程序进行编译优化,得到更优的指令序列
  • (5)机器字长,指令字长,存储字长,三者可以相等,也可以不等
  • (6)数据字长:指的数据总线一次并行能传送的数据位数
  • (7)标志系统性能最有用的参数:MFLOPS。综合参数看:吞吐率
  • (8)在CPU寄存器中,指令寄存器IR对用户是透明的。(透明的意思是看不到
  • (9)机器字长 4字节=4B=32Bit,因此计算机每次可以处理32位
  • (10)计算机最小的单位时间是时钟周期
  • (11)在实际运行当中可能出现主频较搞但是实际速度低的情况
  • (12)汇编程序员是能对PC,PSW,UR这些寄存器可见的,不透明,但是对于高级程序员就透明了。
  • (13)优化执行速度,我们希望:CPI 越少越好(每吃一口消耗的时间),CPU主频越高越好(吃饭的时间越多越好),总指令数越少越好(步骤数越少越好)
  • (14)在CPU里面最小的资源单位也是时钟单位,我们的执行一条指令需要消耗多个时钟周期。在宏观的时间观念上:1秒>多条指令(M,G级别的倍数),一条指令>多个时钟周期(可能是个位数的倍数)

5.6 性能计算题型技巧

方法诀窍:抓住不变量列等式

  • 三个量:CPI(每条指令消耗的时钟),总指令数,主频(每秒产生的时钟数)
  • 关系1:总指令数 * CPI = 总时钟数
  • 关系2:总时间 * 主频 = 总时钟数

例题1:程序P执行耗时20s,优化之后,指令数变成原来的70%,CPI增加到原来的1.2倍,则限制P耗时多少秒?

这种问题我们需要抓住不变量,三个东西你看哪个不变的:CPI,总指令数,CPU主频,明显是CPU主频不变了,也就是每秒产生的时钟周期是一样的。

我们设原来的指令数是 I I I,设原来的CPI是 X X X,设当前消耗的时间是 t t t

X ∗ I = 执 行 程 序 需 要 的 全 部 时 钟 周 期 X*I=执行程序需要的全部时钟周期 XI=

主频等式: X ∗ I 20 = 0.7 ∗ 1.2 ∗ X ∗ I t \frac{X*I}{20}=\frac{0.7*1.2*X*I}{t} 20XI=t0.71.2XI

所以可以解得 t = 20 ∗ 0.84 = 16.8 s t=20*0.84=16.8s t=200.84=16.8s


例题2:假设M1和M2具有相同的指令集,主频分别为1.5GHz,1.2GHz,在M1和M2运行程序P,CPI分别为2和1,则P在M1和M2运行时间之比是?

:你需要熟记主频,CPI,总指令数之间的关系,三个量,你看哪个不变,明显是:总指令数嘛,因此拿他来列等式。

主频 1.5GHz,在研究速度,因此使用1000换算法。

每秒产生的时钟周期数量。

1.5 G H z = 1.5 ∗ 1000 M = 1.5 ∗ 1000 ∗ 1000 K = 1.5 ∗ 1000 ∗ 1000 ∗ 1000 = 1.5 ∗ 1 0 9 1.5GHz = 1.5*1000M=1.5*1000*1000K=1.5*1000*1000*1000=1.5*10^{9} 1.5GHz=1.51000M=1.510001000K=1.5100010001000=1.5109
1.2 G H z = 1.2 ∗ 1000 M = 1.2 ∗ 1000 ∗ 1000 K = 1.2 ∗ 1000 ∗ 1000 ∗ 1000 = 1.2 ∗ 1 0 9 1.2GHz = 1.2*1000M=1.2*1000*1000K=1.2*1000*1000*1000=1.2*10^{9} 1.2GHz=1.21000M=1.210001000K=1.2100010001000=1.2109

总 指 令 数 = 耗 费 的 总 时 钟 周 期 / C P I 总指令数 = 耗费的总时钟周期 / CPI =/CPI
主 频 = 耗 费 的 总 时 钟 周 期 / 总 时 间 主频 = 耗费的总时钟周期 / 总时间 =/

因此我们有等式:
1.5 ∗ 1 0 9 ∗ t 1 2 = 1.2 ∗ 1 0 9 ∗ t 2 1 \frac{1.5*10^9*t_1}{2}=\frac{1.2*10^9*t_2}{1} 21.5109t1=11.2109t2
∴ t 1 t 2 = 8 5 \therefore \frac{t_1}{t_2}=\frac{8}{5} t2t1=58


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值