第一章-计算机系统概述
一、发展历程
1.什么是计算机系统
计算机系统=硬件(计算机的实体,如主机,外设)+软件(由具有各类特殊功能的程序组成)
2.硬件的发展
| 发展阶段 | 时间 | 逻辑元件 | 速度(次/秒) | 内存 | 外存 |
|---|---|---|---|---|---|
| 第一代 | 1946-1957 | 电子管 | 几千-几万 | 汞延迟线、磁鼓 | 穿孔卡片、纸带 |
| 第二代 | 1958-1964 | 晶体管 | 几万-几十万 | 半导体存储器 | 磁带 |
| 第三代 | 1964-1971 | 中小规模集成 电路 | 几十万-几百万 | 半导体存储器 | 磁带、磁盘 |
| 第四代 | 1972-现在 | 大规模、超大 规模集成电路 | 上千万-万亿 | 半导体存储器 | 磁盘、磁带、光盘、 半导体存储器 |
3.软件的发展
语言:机器语言,汇编语言→FORTAN→PASCAL→C++→JAVA
操作系统软件:DOS→Windows→Android/iOS
4.目前的发展趋势
两极分化:
一极是微型计算机向更微型化,网络化,高性能,多用途方向发展

一极是巨型机向更巨型化,超高速,并行处理,智能化方向发展

二、计算机硬件的基本组成
1.“存储程序”的概念
指将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其它指令,直至程序执行结束(早期计算机需要一条一条指令的输入,所以为了简化输入过程,才有了这个操作)
2.冯诺依曼机的结构

注意:
- 在计算机系统中,软件和硬件在逻辑上是等效的
- 例如:对于乘法运算,可以设计一个专门的硬件电路实现乘法运算,也可以用软件的方式,执行多次加法运算来实现
- 冯诺依曼计算机的特点:
- 计算机由五大部件组成(图中有)
- 指令和数据以同等地位存于存储器,可以按地址寻访
- 指令和数据用二进制组成
- 指令由操作码和地址码组成
- 存储程序
- 以运算器为中心(输入/输出设备与存储器之间的数据传送通过运算器完成)
3.现代计算机结构
- 中小型规模集成电路时代

- 大规模集成电路时代

注意:
- 现代计算机以存储器为中心
- 主存一般是指运行内存 通常为:4GB,6GB,8GB....,所以为主机中的一部分
- 辅存一般是机身存储或固态硬盘,机械硬盘 通常为:64GB,128GB,256GB....,所以为I/O设备中的一部分
三、各个硬件的工作原理
1.主存储器


- 概念(选择题考)
- 存储单元:每个存储单元存放一串二进制代码
- 存储字(word):存储单元中二进制代码的组合
- 存储字长:存储单元中二进制代码的位数
- 存储元:存储二进制的电子元件(电容),每个存储元可存1bit
- MAR:存储地址寄存器
- MDR:存储数据寄存器
- 例子
- MAR=4位->总共有$2^4$个存储单元
- MDR=16位->每个存储单元可存放16bit,1个字(word)=16bit
注意:
- 1Byte=8bit
- 1B=1个字节,1b=1个bit
- 1个word的大小是不固定的,要看MDR的值
- MAR为xbit,存储单元为$2^x$ 个(1bit可以为1或0,有x个bit,就有$2^x$个存储单元)
- 现在的计算机通常把MAR,MDR也集成在CPU内
2.运算器

- 概念
- 运算器:用于实现算术运算、逻辑运算
- ACC:累加器,用于存放操作数或运算结果
- MQ:乘商寄存器,在乘、除运算时,用于存放操作数或运算结果
- X:通用的操作数寄存器,用于存放操作数(可以有多个)
- ALU:算数逻辑单元,通过内部复杂的电路实现算术运算、逻辑运算
| 加 | 减 | 乘 | 除 | |
|---|---|---|---|---|
| ACC | 被加数、和 | 被减数、差 | 乘积高位 | 被除数、余数 |
| MQ | 乘数、乘积低位 | 商 | ||
| X | 加数 | 减数 | 被乘数 | 除数 |
3.控制器

- 概念
- CU(Control Unit):控制单元,分析指令,给出控制信号
- IR(Instruction register):指令寄存器,存放当前执行的指令
- PC(Program Counter):程序计数器,存放下一条指令地址,有自动加1功能
完成一条指令:取指【取指令PC->分析指令IR】->执行指令CU
四、计算机的工作过程
对于下面这段代码分析
int a=2,b=3,c=1,y=0;
void main(){
y=a*b+c;
}

part1(取数 2)


初:(PC)=0,指向第一条指令的存储地址
1:(PC)->MAR,导致(MAR)=0
3:M(MAR)->MDR,导致(MDR)=000001(操作码) 0000000101(地址码)
4:(MDR)->IR,导致(IR)=0000010000000101
5:OP(IR)->CU,指令的操作码送到CU,CU分析后得知,这是"取数"指令
6:Ad(IR)->MAR,指令的地址码送到MAR,导致(MAR)=5
8:M(MAR)->MDR,导致(MDR)=0000000000000010=2
9:(MDR)->ACC,导致(ACC)=0000000000000010=2
【取指令(#1-#4)->PC++->分析指令(#5)->执行取数指令(#6-#9)】
*part2(乘法 3)

初:上一条指令取指后PC自动+1,(PC)=1,执行后,(ACC)=2
1:(PC)->MAR,导致(MAR)=1
3:M(MAR)->MDR,导致(MDR)=000100 0000000110
4:(MDR)->IR,导致(IR)=000100 0000000110
5:OP(IR)->CU,指令的操作码送到CU,CU分析后得知,这是"乘法"指令
6:Ad(IR)->MAR,指令的地址码送到MAR,导致(MAR)=6
8:M(MAR)->MDR,导致(MDR)=0000000000000011=3
9:(MDR)->MQ,导致(MQ)=0000000000000011=3
10:(ACC)->X,导致(X)=2
11:(MQ)*(X)->ACC,由ALU实现乘法运算,导致(ACC)=6,如果乘积太大,则需要MQ辅助存储
【取指令(#1-#4)->PC++->分析指令(#5)->执行乘法指令(#6-#11)】
part3(加法 +1)

初:上一条指令取指后PC自动+1,(PC)=2,执行后,(ACC)=6
1:(PC)->MAR,导致(MAR)=2
3:M(MAR)->MDR,导致(MDR)=000011 0000000111
4:(MDR)->IR,导致(IR)=000011 0000000111
5:OP(IR)->CU,指令的操作码送到CU,CU分析后得知,这是"加法"指令
6:Ad(IR)->MAR,指令的地址码送到MAR,导致(MAR)=7
8:M(MAR)->MDR,导致(MDR)=0000000000000001=1
9:(MDR)->X,导致(MQ)=0000000000000001=1
10:(ACC)+(X)->ACC,导致(ACC)=7,由ALU实现加法运算
【取指令(#1-#4)->PC++->分析指令(#5)->执行加法指令(#6-#10)】
part4(存数)

初:上一条指令取指后PC自动+1,(PC)=3,执行后,(ACC)=7
1:(PC)->MAR,导致(MAR)=2
3:M(MAR)->MDR,导致(MDR)=000010 0000001000
4:(MDR)->IR,导致(IR)=000010 0000001000
5:OP(IR)->CU,指令的操作码送到CU,CU分析后得知,这是"存数"指令
6:Ad(IR)->MAR,指令的地址码送到MAR,导致(MAR)=8
7:(ACC)->MDR,导致(MDR)=7
9:(MDR)->地址为8的存储单元,导致y=7
【取指令(#1-#4)->PC++->分析指令(#5)->执行存数指令(#6-#9)】
part5(停机)

总结
CPU区分指令和数据的依据:指令周期的不同阶段
- M:主存中某存储单元
- ACC、MQ、MAR、MDR、…:相应寄存器
- M(MAR):取相应寄存器中的数据
- (ACC)…:取相应寄存器中的数据
- 指令:操作码or地址码
- OP(IR):取操作码
- Ad(IR):取地址码
五、计算机系统的层次结构

计算机系统的层次结构

三种级别的语言
- 编译程序:将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序
- 解释程序:将源程序的一条语句翻译成对应于机器语言的语句,并立即执行。紧接着再翻译下一句
- 编译,汇编,解释程序,可以统称为翻译程序
计算机体系结构vs计算机组成原理
- 计算机体系结构是学习如何设计硬件与软件之间的接口(解决有无乘法指令)
- 计算机组成原理是学习如何用硬件实现所定义的接口(解决如何实现乘法指令),对程序员”透明“—看不见
六、计算机性能指标
1.存储器的性能指标

-
总容量=存储单元个数x存储字长bit
=存储单元个数x存储字长/8 Byte -
例如:MAR为32位,MDR为8位,总容量=2^32*8bit=4GB
-
$2^{10}$:K $2^{20}$:M $2^{30}$:G $2^{40}$:T
-
解释:1KB=1024B 1K= $2^{10}$
2.CPU的性能指标

- CPU主频:CPU内数字脉冲信号振荡的频率
- CPI:执行一条指令所需的时钟周期数(同一cpu,不同的指令,cpi不同。甚至相同的指令,cpi也可能有变化)
- IPC:CPI的倒数,每个时钟周期运行多少条指令
- IPS:每秒执行多少条指令(KIPS MIPS)
- FLOPS:每秒执行多少次浮点运算(K,M,G,T FLOPS)
- CPU主频【时钟频率】(单位为HZ)=1/CPU时钟周期(单位为S)
- 执行一条指令的耗时=CPI x CPU时钟周期
- CPU执行时间(整个程序的耗时)=CPU时钟周期数/主频=(指令条数*CPI)/主频
- IPS(每秒执行多少条指令)=主频/平均CPI
例如:某cpu主频为1000HZ,某程序包含100条指令,平均来看指令的cpi=3,该程序在该cpu上执行需要多久?
${100*3\over1000} =0.3s$
注意:
-
此处K M G T 是数量单位
K=千=$103$**,M=百万=**$106$,G=十亿=$109$**,T=万亿=**$10$
-
时间(s)=1/时钟频率(单位换算成HZ)
1s=1000ms,1 ms=1000μs,1μs=1000ns
时钟频率 时钟周期 1HZ 1s 1KHZ 1ms 1MHZ 1μs 1GHZ 1ns
3.系统整体的性能指标
- 数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)
- 假设数据通路带宽为8bit,要从存储体中读出16bit的数据到cpu中,需要进行两次的数据传输
- 吞吐量:指系统在单位时间内处理请求的数量(评价计算机系统性能的综合参数)
- 它取决于信息能多快地输入内存,cpu能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。这些步骤中的每一步都关系到主存,因此,系统吞吐量主要取决于主存的存取周期
- 响应时间(了解):指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间
- 通常包括cpu时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问,存储器方位,I/O操作,操作系统开销等时间)
- 基准程序是用来测量计算机处理速度的一种实用程序,以便于被测量的计算机性能可以于运行相同程序的其它计算机性能进行比较
4.🤔 🤔
Q:主频高的CPU一定比主频低的CPU快吗?
不一定,如有两个CPU,a的主频为2GHZ,平均CPI为10,b的主频1GHZ,平均CPI=1,可得a执行1条指令所需时间为5ns,b执行1条指令所需时间为1ns。a一秒内可执行0.2G条指令,b一秒内可执行1G条指令
Q:若a,b两个CPU的平均CPI相同,那么a一定更快吗?
不一定,还需要看指令系统,如a不支持乘法指令,只能用多次加法实现乘法,而b支持乘法指令
Q:基准程序执行得越快说明机器性能越好吗?
基准程序中的语句存在频度差异,运行结果也不能完全说明问题

浙公网安备 33010602011771号