1.0_你好,我是计算机组成原理
1.1_计算机的发展
什么是计算机系统
计算机系统 = 硬件+软件
软件
系统软件——用来管理整个计算机系统
Eg:操作系统、数据库管理系统(DBMS)、标准程序库、网络软件、语言处理程序、服务程序
应用软件——按任务需要编制成的各种程序
Eg:抖音、王者荣耀、迅雷、美图秀秀...
硬件的发展
![image-20221126172636974](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160431730-2128425544.png)
微处理器的发展
微处理器的发展 微型计算机的发展以微处理器技术为标志
机器字长:计算机一次整数运算所能处理的二进制位数
![image-20221126173018406](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160430501-1188633212.png)
1947年,贝尔实验室,发明了“晶体管
1955年,肖克利在硅谷创建肖克利实验室股份有限公司
1957年,八叛徒(traitorous eight)创立 仙童半导体公司
1959年,仙童半导体公司发明“集成电路”
1968年,摩尔等人离开仙童,创立Intel
1969年,仙童销售部负责人桑德斯离开仙童,创立AMD
摩尔定律
摩尔定律
揭示了信息技术进步的速度
集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,整体性能也将提升一倍
半导体存储器的发展
1970年,仙童公司生产出第一个较大容量的半导体存储器
半导体存储器单芯片容量:1KB、4KB、16KB、64KB、256KB、1MB、4MB、16MB、64MB、 256MB、1GB...
软件的发展
目前的发展趋势
“两极”分化:
一极是微型计算机向更微型化、网络化、高性能、多用途方向发展;
另一极是巨型机向更巨型化、超高速、并行处理、智能化方向发展。
1.2_1_计算机硬件的基本组成
早期冯诺依曼机
“存储程序”的概念是指将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。
第一台采用冯诺依曼结构的计算机EDVAC (Electronic Discrete Variable Automatic Computer)
在计算机系统中,软件和硬件在逻辑上是等效的。
Eg:对于乘法运算,可以设计一个专门的硬件电路实现乘法运算也可以用软件的方式,执行多次加法运算来实现
![image-20221126174244837](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160432295-948326125.png)
冯·诺依曼计算机的特点:
1.计算机由五大部件组成
2.指令和数据以同等地位存于存储器,可按地址寻访
3.指令和数据用二进制表示
4.指令由操作码和地址码组成
5.存储程序
6.以运算器为中心
输入/输出设备与存储器之间的数据传送通过运算器完成
现代计算机的结构
现代计算机:以存储器为中心
CPU=运算器+控制器
![image-20221126174943047](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160530722-307161562.png)
![image-20221126175119746](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160431066-1656446161.png)
1.2_2_各个硬件的工作原理
主存储器的基本组成
Memory Address Register (存储地址寄存器)
Memory Data Register (存储数据寄存器)
![image-20221126175947456](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160530106-887103266.png)
例:
MAR=4位→总共有24个存储单元
MDR=16位→每个存储单元可存放16bit,字(word)=16bit
易混淆:1个字节(Byte)=8bit 1B=1个字节,1b=1个bit
存储单元:每个存储单元存放一串二进制代码
存储字(word):存储单元中二进制代码的组合
存储字长:存储单元中二进制代码的位数
存储元:即存储二进制的电子元件,每个存储元可存1bit
![image-20221126180557401](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160530115-1725384681.png)
运算器的基本组成
运算器:用于实现算术运算(如:加减乘除)、逻辑运算(如:与或非)
ACC:累加器,用于存放操作数,或运算结果。
MQ:乘商寄存器,在乘、除运算时,用于存放操作数或运算结果。
X:通用的操作数寄存器,用于存放操作数
ALU:算术逻辑单元,通过内部复杂的电路实现算数运算、逻辑运算
![image-20221126181246022](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160433248-1987016125.png)
控制器的基本组成
CU:控制单元,分析指令,给出控制信号
IR:指令寄存器,存放当前执行的指令
PC:程序计数器,存放下一条指令地址,有自动加1功能
Control Unit
Instruction Register
Program Counter
![image-20221126181610708](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160430658-49239411.png)
计算机的工作过程
int a=2,b=3,c=1,y=0;
void main(){
y=a*b+c;
}
![image-20221126184430298](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160530808-1650304212.png)
1.2_3_计算机系统的层次结构
计算机系统的层次结构
①由硬件直接执行微指令 微指令1、微指令3、微指令7···
②执行二进制机器指令 0000010000000101(取数指令) 0001000000000110(乘法指令)
③向上提供“广义指令”(系统调用)
④用汇编程序翻译成机器语言程序。汇编语言指令和机器语言指令一一对应 LOAD 5 MUL 6 ...
⑤用编译程序翻译成汇编语言程序 y=a*b+c
![image-20221127220334921](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160431535-196066940.png)
下层是上层的基础,上层是下层的扩展
三种级别的语言
机器语言:二进制代码
汇编语言:助记符
高级语言:C/C++、Java
编译程序:将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序(只需翻译一次)
解释程序:将源程序的一条语句翻译成对应于机器语言的语句,并立即执行。紧接着再翻译下一句(每次执行都要翻译)
注:编译、汇编、解释程序,可统称“翻译程序”
![image-20221127224459424](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160431687-366897074.png)
1.3_计算机的性能指标
存储器的性能指标
总容量=存储单元个数*存储字长 bit = 存储单元个数*存储字长/8 Byte
Eg:MAR为32位,MDR为8位 总容量=2^32*8bit=4GB
MAR位数反映存储单元的个数(最多支持多少个)
MDR位数=存储字长=每个存储单元的大小
![image-20221127225210792](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160431645-1808718230.png)
存储器的性能指标
n个二进制位能表示出多少种不同的状态?
1个二进制位:0,1
2个二进制位:00,01;10,11
3个二进制位:000,001,010,011,100,101,110,111
n个二进制位
![image-20221127230043452](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160432402-1294865168.png)
CPU的性能指标
CPU主频:CPU内数字脉冲信号振荡的频率。
![image-20221127230338920](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160432475-245924681.png)
Eg:某CPU主频为1000Hz,某程序包含100条指令,平均来看指令的CPI=3。该程序在该CPU上执行需要多久?
100*3*(1/1000)=0.3s
CPU执行时间(整个程序的耗时)=CPU时钟周期数/主频=(指令条数*CPI)/主频
IPS(Instructions Per Second):每秒执行多少条指令
IPS=主频/平均CPI KIPS MIPS
FLOPS(Floating-point Operations Per Second):每秒执行多少次浮点运算 KFLOPS MFLOPS GFLOPS TFLOPS
注:此处K、M、G、T为数量单位
![image-20221128110126842](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160432542-2058299804.png)
系统整体的性能指标
数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)
吞吐量:指系统在单位时间内处理请求的数量。
它取决于信息能多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。这些步骤中的每一步都关系到主存,因此,系统吞吐量主要取决于主存的存取周期。
响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间。
通常包括CPU时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等时间)。
系统整体的性能指标(动态测试)
基准程序是用来测量计算机处理速度的一种实用程序,以便于被测量的计算机性能可以与运行相同程序的其它计算机性能进行比较。
跑分程序
问:主频高的CPU一定比主频低的CPU快吗?
不一定,如两个CPU,A的主频为2GHz,平均CPI=10;B的主频1GHz,平均CPI=1...
问:若A、B两个CPU的平均CPI相同,那么A一定更快吗?
也不一定,还要看指令系统,如A不支持乘法指令,只能用多次加法实现乘法;而B支持乘法指令。
问:基准程序执行得越快说明机器性能越好吗?
基准程序中的语句存在频度差异,运行结果也不能完全说明问题
取数指令
![image-20221128110820800](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160530938-1954589058.png)
乘法指令
![image-20221128111010944](/i/l/?n=23&i=blog/2889078/202211/2889078-20221128160434125-455272298.png)