1.计算机硬件的基本组成
1.1.计算机硬件组成部分
1.存储程序:将指令以二进制代码的形式存入计算机的主存储器,顺序执行
2.输入设备:将程序和数据以机器所能识别的方式输入计算机(信息转化)
存储器:存放程序和数据
运算器:执行算数运算和逻辑运算
输入设备:将计算机运算结果转换为人类所熟悉的方式(信息转化)
控制器:指挥程序运行
①控制器从存储器中取指令(加减乘除)
②对运算器进行控制进行该指令
③将结果放回存储器
3.软件和硬件在逻辑上是等效,但是软件效率低,价格低,硬件效率高,价格高(乘法)
1.2.冯诺依曼计算机的特点
1.计算机由五大部件组成:运算器、控制器、存储器、输入设备、输出设备
2.指令和数据以同等地位存入存储器,按照地址寻址
3.指令和数据用二进制表示
4.指令由操作码和地址码存放组成
操作码:指明该指令进行的具体操作。加减乘除
地址吗:该指令的操作数存放在存储器中的具体地址,对其进行访存操作
5.存储程序
6.以运算器为中心:输入和输出的数据都需要经过运算器(现代计算机以存储器为中心)
1.3.现代计算机的特点
1.以存储器为中心(提升效率,输入和输出数据无须再必须经过运算器)
2.运算器和控制器集合成CPU
3.控制器控制运算器进行操作(加减乘除),控制主存储器的读写和控制I/O设备启动/停止
4.主存储器和CPU进行数据交换(指令),指令送往控制器,运行期对操作数进行相应操作
5.I/O设备和主存储器直接进行数据交换
6.存储器分为主存(主存储器,算为主机)和辅存(硬盘,算为I/O设备)
2.主存储器的基本组成
2.1.MAR和MDR
1.MAR(Memory Address Register):存储地址寄存器(存地址)
2.MDR(Memory Data Register):存储数据寄存器(存数据)
3.取:①将数据的地址存入MAR中
②控制器发出取指令
③根据MAR存放的地址,取出数据放到MDR中
4.存:①将数据想要存放的地址放在MAR中,数据放在MDR中
②控制器发出指令,是存操作
③把MDR中的数据存入MAR相应地址
2.2.存储单元、存储字长和存储字
1.存储体会被分为若干个存储单元,每个地址对应一个存储单元,若MAR想要地址为1的存储单元的数据,存入MAR的地址为1(二进制存储,具体位数根据情况)
2.存储单元:每个存储单元存放一串二进制代码(外部看)
3.存储字:存储单元存放的二进制代码的组合(内部看)
4.存储字长:存储单元中二进制代码的位数(8bit的整数倍)
5.存储元:存储二进制的电子元件,每个存储元可存1bit,多个存储元构成一个存储单元
6.MAR位数反映存储单元的个数(位数即次方数),MDR位数 = 存储字长(存储单元内的数据取出后需要存放在MDR内,因此大小相同)
eg:MAR为4位→共有2 ^ 4个存储单元(4位最多能表示2 ^ 4个数字)
MDR为16位→每个存储单元可以存放16bit,即一个存储字为16bit,存储字长为16bit
2.3.运算器的基本组成
1.运算器作用:实现逻辑运算(与或非)和算数运算(加减乘除)
2.组成部分:
ACC(Accumulator):累加器,用于存放操作数或者运行结果
MQ(Multiple-Quotient):乘商寄存器,在乘、除运算时,用于存放操作数或者运行结果
ALU(Arithmetic and Logic Unit):算数逻辑单元,通过电路实现算术运算和逻辑运算
X:通用寄存器,用于存放操作数(可能会有多个)
2.4.控制器的基本组成
1.组成部分:
CU(Control Unit):控制单元,分析指令,给出控制信号(控制其他部件)
IR(Instruction Register):指令寄存器,存放当前执行的指令
PC(Program Counter):程序计数器,存放下一条指令的地址,有自动加“1”的功能
2.完成一条指令的过程:取指令(PC)→分析指令(区分操作码和地址码)(IR)→执行指令(分析操作码,确定具体操作)(CU)
前两个阶段为取指令,第三个阶段为执行
2.5.计算机工作过程
CPU区分指令和数据的依据:指令周期的不同阶段(取指令→分析指令→执行指令)
①初始情况:
1.主存地址为存储单元的编号
2.地址0-4存储机器指令,分为操作码和地址码,共16bit
3.地址5-8分别存储变量a、b、c、y的数据(二进制)
②执行过程
()为寄存器内的内容,M为主存储器
初始化:(PC)= 0,指向第一条指令的存储位置
1.(PC)→MAR,导致(MAR) = 0:PC的内容通过地址总线存放到MAR中
2.控制器向主存储器表明接下来访问地址为0的数据,并且通过控制总线告诉主存储为读操作
3.M(MAR)→MDR,导致(MDR) = 000001 0000000101:主存储器根据MAR存放的地址从存储体中取出相应数据,并放到MDR中
4.(MDR)→IR,导致(IR)=000001 0000000101 :MDR通过数据总线将MDR存放的内容存放到IR中
5.OP(IR)→CU,指令的操作码送到CU,CU分析后得知这是“取数”命令
6.Ad(IR)→MAR,指令的地址码送到MAR,导致(MAR)= 5
7.M(MAR)→MDR,导致(MDR)= 0000 0000 0000 0010 = 2
8.(MDR)→ACC,导致(ACC)= 0000 0000 0000 0010 = 2
1-4为取指令,5为分析指令,6-8为执行指令(取指令完成后,PC自动加1,指向下一条指令)
此时,(PC)= 1,(ACC) = 2
1.(PC)→MAR,导致(MAR) = 1
2.M(MAR)→MDR,导致(MDR) = 000100 0000000110
3.(MDR)→IR,导致(IR)= 000100 0000000110(取指令完成,PC + 1)
4.OP(IR)→CU,指令的操作码送到CU,CU分析后得知,这是乘法指令(分析指令完成)
5.Ad(IR)→MAR,指令的地址码送到MAR,导致(MAR)= 6
6.M(MAR)→MDR,导致MDR = 0000 0000 0000 0011 = 3
7.(MDR)→MQ,导致MQ = 0000 0000 0000 0011 = 3
8.(ACC)→X,导致(X) = 2:执行乘法操作时,将操作数放到X寄存器中
9.(MQ)*(X)→(ACC),导致(ACC)= 6:通过CU控制ALU实现(执行指令完成)
此时,(PC) = 2,(ACC) = 6
1.(PC)→MAR,导致(MAR)= 2
2.M(MAR)→MDR,导致(MDR)= 000011 0000000111
3.(MDR)→IR,导致(IR)= 000011 0000000111(取指令完成,PC+1)
4.OP(IR)→CU,指令的操作码送到CU,CU分析后得知,这是加法指令(分析指令完成)
5.AD(IR)→MAR,指令的地址码送到MAR,导致(MAR) = 7(指明C存放的地址)
6.M(MAR)→MDR,导致(MDR)= 0000 0000 0000 0001
7.(MDR)→X,导致(X)= 0000 0000 0000 0001
8.(ACC)+(X)→ACC,导致(ACC)= 7,由ALU实现加法运算(执行指令完成)
此时,(PC)= 3,(ACC)= 7
1.(PC)→MAR,导致(MAR)= 3
2.M(MAR)→MDR,导致(MDR)= 000010 0000001000
3.(MDR)→IR,导致(IR)= 000010 0000001000(取指令完成,PC+1)
4.OP(IR)→CU,指令的操作码送到CU,CU分析后得知,这是存数指令(分析指令完成)
5.AD(IR)→MAR,指令的地址码送到MAR,导致(MAR) = 8
6.(ACC)→MDR,导致(MDR)= 7
7.(MDR)→地址为8的存储单元,导致 y = 7(执行指令完成)
此时,(PC)= 4
1.(PC)→MAR,导致(MAR)= 4
2.M(MAR)→MDR,导致(MDR)= 000110 000000-000
3.(MDR)→IR,导致(IR)= 000110 0000000000(取指令完成,PC+1)
4.OP(IR)→CU,指令的操作码送到CU,CU分析后得知,这是停机指令(分析指令完成)
5.操作系统进行后续操作
3.计算机系统的层次结构
1.高级语言:面向用户。C/C++
2.汇编语言:高级语言通过编译程序翻译成汇编语言
3.机器指令:通过汇编程序将汇编语言翻译成机器指令
4.微指令:机器指令进一步分解为微指令,硬件直接执行微指令
5.汇编语言和机器指令一一对应
6.若需要调库,则需要链接,即将文件和库文件结合
7.预处理→编译→汇编→链接
8.编译程序:将高级语言编写的源程序全部语句一次全部翻译成机器语言程序(.exe文件)(只需翻译一次)
解释程序:将源程序的一条语句翻译成对应的机器语言的语句,并立即执行,接着翻译下一句(每次执行都要翻译)
4.计算机的性能指标
4.1.存储器的性能指标
1.总容量 = 存储单元个数 * 存储字长 bit = 存储单元个数 * 存储字长 / 8 Byte
2.可以通过MAR和MDR计算总容量
MAR代表存储单元个数(最多),MDR代表存储字长
eg:MAR为32位,MDR为8位→总容量 = 2 ^ 32 * 8 = 4GB
4.2.CPU的性能指标
1.主频(HZ):数字脉冲信号振荡的频率
时钟周期(微妙,纳秒):主频的倒数,执行指令的每个动作至少需要1个时钟周期
2.CPI(Clock cycle Per Instruction):每条指令的执行需要几个时钟周期(可能会变化),通常取平均值
3.CPU执行时间:CPU时钟周期数 / 主频 = (指令条数)* CPI / 主频
4.IPS(Instruction Per Second):每秒执行多少个指令。IPS = 主频 / CPI(MIPS)
5.FLQPS(Floating-point Operations Per Second):每秒执行多少次浮点运算
K:10 ^ 3→M:10 ^ 6→G:10 ^ 9→T:10 ^ 12→P:10 ^ 15→E:10 ^ 18→Z:10 ^ 21
6.数据通路带宽:数据总线一次所能并行传送数据的位数
7.吞吐量:单位时间内处理请求的数量
8.响应时间:用户发出请求,到系统对其做出反应并得到结果的时间