你好,我是计算机组成原理
计算机硬件能识别的数据
- 用高/低电平分别表示1/0
- 计算机硬件唯一能识别的数据——二进制0/1
什么是低电平/高电平
- 低电平(表示二进制0)
- 高电平(表示二进制1)
通过电信号传递数据
- 通过很多条电路,可以传递多个二进制数位
- 每个二进制数位称为1 bit(比特)
什么是计算机系统
- 计算机系统 = 硬件 + 软件
- 硬件:计算机的实体,如主机、外设等
- 软件:由具有各类特殊功能的程序组成
- 计算机性能的好坏取决于软件和硬件功能的总和【综合评判】
- 软件 = 系统软件 + 应用软件
计算机的发展
硬件的发展
第一代:电子管时代
- 逻辑元件:计算机用来处理电信号的最小单元
第二代:晶体管时代
- 【操作系统雏形】
第三代:中小规模集成电路时代
第四代:大规模、超大规模集成电路时代
- 微处理器:CPU
微处理器的发展
- 机器字长:计算机一次整数运算所能处理的二进制位数
- 微型计算机的发展以微处理器技术为标志
硬件的发展
摩尔定律
软件的发展
目前的发展趋势【两极分化】
- 一极是微型计算机向更微型化、网络化、高性能、多用途的方向发展
- 另一极是巨型机向更巨型化、超高速、并行处理、智能化方向发展
计算机硬件的基本组成
早期冯诺依曼机
- 即使计算机的计算速度很快,早期还是得需要人工手动接线来控制计算机,所以计算机快速的操作速度就被手工操作的缓慢抵消了
- 冯诺依曼:提出了【存储程序】的概念
- “存储程序”:是指将指令以二进制代码的形式事先输入计算机的主存储器,然后按其再存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束
-
在计算机系统中,【软件和硬件在逻辑上是等效的】
-
Eg:对于乘法运算,可以设计一个专门的硬件电路实现乘法运算,也可以用软件的方式,执行多次加法运算来实现
-
硬件实现肯定更快一些,但软件实现可能就需要更长的时间
-
冯·诺依曼机的特点
- 计算机由五大部件组成:输入设备、运算器、控制器、存储器、输出设备
- 指令和数据以同等地位存于存储器,可按地址寻访
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序
- 以【运算器】为中心,输入//输出设备与存储器之间的数据传送通过运算器完成
- 以运算器为核心会产生一些问题:本来运算器是处理数据的核心部件,但现在运算器还要负责所有的数据中转,这会导致数据计算效率的降低
现代计算机的结构
- 以【存储器】为中心
- CPU = 运算器 + 控制器
- 为什么现代计算机以存储器为中心?
- 首先你先要了解存储技术的发展,因为存储容量成倍的扩大是以存储器为核心的基础
- 其次随着计算机的发展,需要处理、加工的信息量越来越大,以运算器为中心的结构已不能满足计算机发展的需求,甚至会影响计算机的性能。为了适应计算量的增加,现代计算机组织结构逐步转化为以存储器为核心的组织结构
- 之所以现在以存储器为中心最大的问题其实是IO,如果以远算器为中心的话每次IO都通过运算器和控制器(CPU)来做,就回浪费很多运算时间;以存储器为中心则IO设备则可以直接与存储器交换数据,具体一点就是我们后来讲的DMA和通道
- 在微处理器问世之前,运算器和控制器是两个分离的功能部件,加上当时的存储器还是以磁芯存储器为主,计算机存储的信息量较少,因此早期冯·诺依曼提出的计算机结构是以运算器为中心的,其他部件通过运算器完成信息的传递
随着微电子技术的进步,人们成功地研制出了微处理器。微处理器将运算器和控制器两个主要功能部件合二为一,集成到一个芯片里。同时,随着半导体存储器代替磁芯存储器,存储容量成倍的扩大,加上需要计算机处理,加工的信息量与日俱增,【以运算器为中心的结构已不能满足计算机发展的需求,甚至会影响计算机的性能】。为适应发展的需要,现代计算机组织结构逐步转化为以存储器为中心的组织结构。
各个硬件的工作原理
主存储器的基本构成
- 数据在存储体内按地址存储
- 存储单元:每个存储单元存放一串二进制代码
- 存储字(word):存储单元中二进制代码的组合
- 存储字长:存储单元中二进制代码的位数
- 每个地址对应一个存储单元
- 存储元:即存储二进制的电子元件,是用电容的原理来制造的,每个存储元可以存1bit
例:
MAR = 4位 → 总共有24个存储单元
MDR = 16位 → 每个存储单元可存放16bit,此时一个字(word) = 16bit
【易混淆】:
1个字节(Byte) = 8bit
1B = 1个字节,1b = 1个bit
【一个字节】指的是【8个比特位】,而【一个字】具体占了多少个比特位得看具体的计算机的结构,由【计算机硬件决定】
运算器的基本组成
- 运算器:用于实现算术运算(如:加减乘除)、逻辑运算(如:与或非)
- ACC:累加器,用于存放操作数或者运算结果
- MQ:通用的操作数寄存器,用于存放操作数
- ALU:算术逻辑单元,通过内部复杂的电路实现算术运算和逻辑运算
控制器的基本组成
- CU,Control Unit:控制单元,分析指令,给出控制信号
- IR,Instruction Register:指令寄存器,存放当前执行的指令
- PC,Program Counter:程序计数器,存放【下一】指令地址,有自动加1功能
计算机的工作过程
- 把一个寄存器打一个括号(REGISTER)表示的是寄存器里面的内容,如(MAR)
- M(MAR)表示的是主存储器里面MAR这个地址所指明的存储单元里面的数据,M表示主存储器
- 在取指令的阶段,MDR里面的数据,肯定是要传到IR指令寄存器当中
- 而在执行指令的阶段,CU会根据具体的指令来决定MDR里面的数据来决定数据要放到哪个寄存器里边
- CPU区分指令和数据的依据:【指令周期的不同阶段】
计算机系统的多级层次结构
计算机系统的层次结构
三种级别的语言
- 一般都需要【一步编译+一步汇编】得到可执行的程序
- 但是如果你的程序里面调用了其他的库函数,那么在经过汇编之后还需要再经过【一步链接】的操作,即把你的函数和你调用的其他函数链接起来
计算机体系结构vs计算机组成原理
计算机的性能指标
存储器的性能指标
CPU的性能指标
- 对于两个相同型号的CPU来说,它们的指令系统还有用硬件完成指令的方式如果都一模一样的话,那么主频越高的CPU显然它的速度会更快
- 但是并不是主频越高就意味着性能越好,除了主频之外还有其他因素会影响一个CPU的性能,比如CPI
- 对于同一个CPU,执行不同的指令有可能需要消耗不同的时钟周期;而对于不同的CPU,即便它们执行的都是乘法指令,根据指令的实际实现方式的不同,两个CPU所需要的时钟周期数量也可能不一样
- 同一个CPU里面执行不同的指令,CPI可能不一样;甚至有可能即便是同一个CPU,两次执行一个相同的指令,这两次执行指令所需要的时钟周期数也有可能发生变化,例如取数指令的执行,除了跟CPU本身相关之外,还跟主存和内存当前的状态有关系,如果主存当前的负荷比较大,那么CPU想要取走一个数就有可能需要花更多的时间,也就是更多的时钟周期【所以一般考虑CPI的时候考虑的都是CPI的平均情况】
- 注意描述【文件大小】时默认的存储规则是【1K=210 】而描述【速率 / 频率】的时候【1K=103 】
系统整体的性能指标
系统整体的性能指标(动态测试)
- 基准程序,通俗的说就是“跑分软件”,是用来测量计算机处理速度的一种实用程序,以便于被测量的计算机性能可以与运行相同的其他计算机性能进行比较
Q&A
-
主频高的CPU一定比主频低的CPU快吗?
答:不一定,如两个CPU,ACPU的主频是2GHz,平均CPI=10;BCPU的主频是1GHz,平均CPI=1,则A一秒可以执行0.2G条指令,而B一秒可以执行1G条指令 -
若ACPU和BCPU的平均CPI相同,但是ACPU的主频比BCPU的主频高,是不是意味着ACPU一定比BCPU快呢?
答:不一定,理论上是如此,但实际上还需要看指令系统,如ACPU不支持乘法指令,只能用多次加法来实现乘法,而BCPU支持乘法指令,则BCPU未必比ACPU慢 -
基准程序执行的越快说明机器的性能就越好吗?
答:不一定,基准程序中的语句存在频度差异,比如你使用的是一个测试显卡的基准程序,那么这个程序里面对于图像处理的指令的出现频率就会很高,但如果换种场景,计算机并不是用来做图像处理的,那么测试显卡基准程序的测试结果显然在此场景下就是不科学的,运行结果也不能完全说明问题