目录
一. 计算机的发展
二. 计算机硬件的基本组成
三. 各个硬件的工作原理
(1)主存储器
(2)运算器
(3)控制器
(4)一个例子
四. 计算机系统的层次结构
五. 计算机的性能指标
(1)CPU
(2)系统整体性能指标
一. 计算机的发展
二. 计算机硬件的基本组成
冯诺伊曼机——“存储程序”的概念:是指将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令以后就按该程序的规定顺序执行其他指令,直至程序执行结束。
在计算机系统中,软件和硬件在逻辑上是等效的。例如:对于乘法运算,可以设计一个专门的硬件电路实现乘法运算也可以用软件的方式,执行多次加法运算来实现。
冯·诺依曼计算机的特点:
- 计算机由五大部件组成
- 指令和数据以同等地位存于存储器,可按地址寻访
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序
- 以运算器为中心
输入/输出设备与存储器之间的数据传送通过运算器完成。
现代计算机:以存储器为中心。CPU=运算器+控制器。
计算机的组成结构:
注意:主存(Main Memory)是计算机中用于存储数据和程序的部分。它是计算机的内部存储器,也被称为内存或随机存取存储器(RAM)。主存具有较快的读写速度,可以直接被中央处理器(CPU)访问。辅存(Secondary Storage)是计算机中用于长期存储数据和程序的部分。它通常是磁盘驱动器或固态硬盘(SSD),用于存储操作系统、应用程序、文件和其他数据。辅存的读写速度较慢,但它可以存储大量数据,并且可以长期保存数据,即使计算机关闭或断电。辅存也被称为外部存储器。
三. 各个硬件的工作原理
(1)主存储器
存储体:存放数据,由一系列存储元件构成,可存放二进制数据0和1。数据在存储体内按地址存储。
- 存储单元:每个存储单元存放一串二进制代码
- 存储字(word):存储单元中二进制代码的组合
- 存储字长:存储单元中二进制代码的位数
- 存储元:即存储二进制的电子元件(电容),每个存储元可存1bit。多个存储元加线路就组成存储单元。
Memory Address Register(MAR)存储地址寄存器:寄存器也用来存放数据。MAR的位数反映了存储单元的个数。例如:MAR=4位→总共有个存储单元。
Memory Data Register(MDR)存储数据寄存器:MDR的位数=存储字长。例如:MDR=16位→每个存储单元可存放16bit,1个存储字(word)= 16bit。
现代计算机也通常把MAR和MDR集成在CPU里。
易混淆:1个字节(Byte) = 8bit,1B=1个字节,1b=1个bit
总容量=存储单元个数×存储字长bit=存储单元个数×存储字长/8 Byte。
Eg: MAR为32位,MDR为8位,总容量=
注意:
(2)运算器
运算器:用于实现算术运算(如:加减乘除)、逻辑运算(如:与或非)
- ACC:累加(寄存)器,用于存放操作数,或运算结果。
- MQ:乘商寄存器,在乘、除运算时,用于存放操作数或运算结果。
- X:通用的操作数寄存器,用于存放操作数(可能有多个)。
- ALU:算术逻辑单元,通过内部复杂的电路实现算数运算、逻辑运算。
(3)控制器
- CU:控制单元,分析指令,给出控制信号
- IR:指令寄存器,存放当前执行的指令
- PC:程序计数器,存放下一条指令地址,有自动加1功能
(有时也把前两个统称为取指)
(4)一个例子
下面举例来说明各硬件的工作过程。例如,在计算机中运行C程序:
计算机经过编译后把程序翻成二进制码,同时数据存入主存。代码和数据都存入存储体:
以第一条语句为例,读取a至累加器ACC:
- 初:(PC)=0,指向第一条指令的存储地址
- #1:(PC)→MAR,导致(MAR)=0
- #3:M(MAR)→MDR(把存储体中MAR地址中的数据读到MDR),导致(MDR)=000001 0000000101
- #4: (MDR)→IR,导致(IR)=000001 0000000101
- #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自动加1→分析指令(#5)→执行取数指令(#6~#9)。
CPU区分指令和数据的依据:指令周期的不同阶段。
上一条指令取指后PC自动+1,(PC)=1;执行后,(ACC)=2
- #1:(PC)→MAR,导致(MAR)=1
- #3:M(MAR)→MDR,导致(MDR)=000100 0000000110
- #4:(MDR)→lR,导致(IR)= 000100 0000000110
- #5:OP(IR)→CU,指令的操作码送到CU,CU分析后得知,000100是一条乘法指令
- #6:Ad(IR)→MAR,指令的地址码送到MAR,导致(MAR)=0000000110(2)=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自动加1→分析指令(#5)→执行乘法指令(#6~#11)
上一条指令取指后(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分析后得知,000011是一条加法指令
- #6:Ad(IR)→MAR,指令的地址码送到MAR,导致(MAR)=7
- #8:M(MAR)→MDR,导致(MDR)=0000000000000001=1
- #9:(MDR)→x,导致(X)=0000000000000001=1
- #10:(ACC)+(X)→ACC,导致(ACC)=7,由ALU实现加法运算
取指令(#1~#4),PC自动加1→分析指令(#5)→执行加法指令(#6~#10)
上一条指令取指后(PC)=3,执行后,(ACC)=7
- #1:(PC)→MAR,导致(MAR)=3
- #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
上一条指令取指后(PC)=4:
- #1:(PC)→MAR,导致(MAR)=4
- #3:M(MAR)→MDR,导致(MDR)=000110 0000000000
- #4:(MDR)→R,导致(IR)= 000110 0000000000
- #5:OP(IR)→CU,指令的操作码送到CU,CU分析后得知这是停机指令,利用系统中断机制停止该进程。
四. 计算机系统的层次结构
操作系统层:由操作系统程序实现。操作系统程序由机器指令和广义指令组成,这些广义指令是为了扩展机器功能而设置的,是由操作系统定义和解释的软件指令,这一层也称为混合层。
编译程序:将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序(只需翻译一次)
解释程序:将源程序的一条语句翻译成对应于机器语言的语句,并立即执行。紧接着再翻译下一句(每次执行都要翻译)
编译、汇编、解释程序,可统称翻译程序。
五. 计算机的性能指标
(1)CPU
CPU主频:CPU内数字脉冲信号振荡的频率。CPU主频与时钟周期互成倒数关系:
CPI (Clock cycle Per Instruction):执行一条指令所需的时钟周期数。不同的指令,CPI不同。甚至相同的指令,CPl也可能有变化。
执行一条指令的耗时=CPI×CPU时钟周期,CPU执行时间(整个程序的耗时)=CPU时钟周期数/主频=(指令条数*CPI)/主频
Eg:某CPU主频为1000Hz,某程序包含100条指令,平均来看指令的CPI=3。该程序在该CPU上执行需要多久?
解:
IPS ( Instructions Per Second ):每秒执行多少条指令(KIPS,MIPS)
FLOPS ( Floating-point Operations Per Second):每秒执行多少次浮点运算(KFLOPS...)
注:此处K、M、G、T为数量单位:
K=Kilo=千=10^3,M=Million=百万=10^6,G=Giga=十亿=10^9,T=Tera=万亿=10^12
(2)系统整体性能指标
数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)。
吞吐量:指系统在单位时间内处理请求的数量。
它取决于信息能多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。这些步骤中的每一步都关系到主存,因此,系统吞吐量主要取决于主存的存取周期。
响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间。
基准程序(动态测试):是用来测量计算机处理速度的一种实用程序,以便于被测量的计算机性能可以与运行相同程序的其它计算机性能进行比较。(eg.跑分软件)
问1:主频高的CPU一定比主频低的CPU快吗?——不一定,如两个cPU,A的主频为2GHz,平均CPl=10;B的主频1GHz,平均CPl=1...
问2:若A、B两个CPU的平均CPI相同,那么A一定更快吗?——也不一定,还要看指令系统,如A不支持乘法指令,只能用多次加法实现乘法;而B支持乘法指令。
问3:基准程序执行得越快说明机器性能越好吗?——基准程序中的语句存在频度差异,运行结果也不能完全说明问题。