计算机原理概论
计算机的发展历程
第一代计算机:电子管计算机(20世纪40年代中到20世纪50年代末)电子管计算机体积大、速度慢(每秒千次或万次 )、存储器容量小。
第二代计算机:晶体管计算机(20世纪50年代中后期到20世纪60年代中),出现了多种高级语言及其编译程序。
第三代计算机:集成电路计算机(20世纪60年代中到20世纪70年代中后期),出现了一系列计算机新技术,包括微程序控制、高速缓存、虚拟存储器和 流水线技术等;在软件方面首先实现了操作系统,具有资源调度、人机通信和输入输出控制等功能。
第四代计算机:超大规模集成电路计算机(20世纪70年代后期开始)为超大规模集成电路计算机。大规模(LSI)和超大规模(VLSI)集成电路成 为计算机的主要器件,且集成度越来越高,出现了微处理器,计算机网络的发展 与广泛应用。
摩尔定律,集成电路上的晶体管数量每18月就会翻一翻,所以每18月计算机的处理效率就会提高一倍。
冯诺依曼计算机的特点
- 计算机硬件系统由五大部件组成(存储器、运算器、控制器、输出设备、输入设备)
- 指令和数据以同等地位存于存储器,可按地址寻访
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序
- 以运算器为中心
最重要的是第一点,存储程序控制
计算机的硬件基本组成
存储器
作用:存储程序和数据两类信息
存储体:就是主存储器,有若干存储单元组成,每个单元赋予一个唯一编号,称为地址。
字:一个单元存储若干位二进制信息称为字,也叫存储字
存储器字长:存储字的长度(单位bit)为存储字长, 一般为8bit,常见的有8位,16位,32位,64位
存储单元的组成是多个存储元, 一个存储元只存储一个bit的信息
MAR是存储器地址寄存器,保存了存储单元的地址和编号,长度反映存储单元的个数。
MDR是存储器数据寄存器,保存了要存入存储体的数据或刚从存储体拿出来的数据,长度反映存储字长。
利用MAR和MDR来将数据放入存储器。
运算器
功能:完成算术运算和逻辑运算以及移位操作
基本结构:
- 算术逻辑单元(ALU,核心东西):是能实现多组算术运算和逻辑运算的组合逻辑电路
- 累加器(ACC):是一种寄存器,用来储存计算产生的中间结果
- 状态寄存器(PSW):用来存放两类信息:一类是体现当前指令执行结果的各种状态信息;另一类是存放控制信息。
- 通用寄存器:可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。
运算器字长:运算器进行一次加法运算所能处理的二进制数据的位数。
控制器
功能:从存储器中取指令,对指令译码,产生控制信号并控制计算机系统各部件有序的执行,从而实现这条指令的功能。
或者简单一点:控制计算机各个部件协调工作
基本结构:
-
程序计数器(PC):存放当前正执行的指令地址或下一条指令的地址。
这个东西也叫 指令地址寄存器
具有自 加一功能的计数器。 指令顺序执行时,由程序计数器本身的递增功能来产生下一条指令的地址。 当遇到转移指令,由指令直接提供转移地址,或在控制器的控制下由运算器形成转移地址,结果送PC作为下一条指令的地址。
-
指令寄存器IR:控制器从内存中取出的指令,存放在IR中,以便控制器对指令进行译码,执行。
-
指令译码器:对指令的功能进行分析,并据此产生完成该指令的控制信号
-
地址寄存器(AR):收纳可能有多种来源的地址,统一在规定的节拍将地址送上总线。
-
控制信号发生器:根据指令操作码的译码信号及时序信号,产生取出指令和执行这条指令所需的各种操作控制信号,以便正确的建立数据通路,完成取出指令和执行指令的控制。
输入输出设备
功能:实现人机对话,数据输入输出以及各种形式的数据变换等。
-
输入设备:向计算机输入数据和信息的设备。是计算机与用户或其他设备通信的桥梁。输入设备是用户和计算机系统之间进行信息交换的主要装置之一
-
输出设备:是计算机硬件系统的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设备操作等。也是把各种计算结果数据或信息以数字、字符、图像、声音等形式表现出来。
总线
概念:连接各个部件的信息传输线,是各个部件共享的传输介质,信号的公共传输线
功能:
- 各功能部件间传递各类信息的通道
- 各部件间的物理接口,能减少各部件通信的复杂程度
- 提供信息交换时所需的数据、地址、时序、控制信息
- 提供一个共同遵循的协议或标准
- 不应成为整个计算机性能的瓶颈
- 方便计算机系统的集成、扩展、进化
分类:
-
内部总线
CPU内部连接各寄存器及运算器部件之间的总线
-
系统总线
分成三组子总线:
- 数据总线(DB):数据信号,双向,与机器字长、存储字长有关
- 地址总线(AB):单向,与存储地址、I/O地址有关,通常与地址单元的个数相关
- 控制总线(CB):有出(存储器读/写、总线允许、终端确认等)有入(中断请求、总线请求等)。向系统各个部件传输控制信号/系统各个部件将自己的状态信号传给其它部件
-
外部总线
用于计算机系统之间或计算机系统与其他系统(如控制仪表、移动通信等)之间的通信
程序设计语言和计算机的层次结构
层次结构关系:
高级语言机器(软件):用编译程序翻译成汇编语言程序
汇编语言机器(软件):用汇编程序翻译成机器语言程序
操作系统机器(软件):向上提供“广义指令”(系统调用)
机器语言机器(硬件):执行二进制机器指令
微指令机器层(硬件):执行二进制机器指令
程序设计语言层次关系:
高级语言层
汇编语言层
机器语言层
计算机的主要性能指标
机器字长
概念:CPU 一次能处理数据的位数与 CPU 中的 寄存器位数 有关
区分几个不同的概念:
- 机器字长:计算机能直接处理的二进制数据的位数,机器字长一般等于内部寄存器的大小,它决定了计算机的运算精度。
- 指令字长:一个指令字中包含的二进制代码的位数。
- 存储字长:一个存储单元存储的二进制代码的长度。等于MDR的位数, 它们都必须是字节的整数倍。
- 数据字长:数据总线一次能传送信息的位数,它可以不等于MDR的位数。
运行速度
FLOPS: 每秒浮点运算次数
CPI:即执行一条指令所需的时钟周期数。
IPS=主频/平均CPI,每秒执行多少指令
MIPS=即每秒执行多少百万条指令。
吞吐量:指系统在单位时间内处理请求的数量 ;从用户观点看,它是评价计算机系统性能的综合参数!
CPU时钟周期:通常为节拍脉冲或T周期,即主频的倒数,它是CPU中最小的时间单位,每个动作至少需要1个时钟周期。
主频(CPU时钟频率):机器内部主时钟的频率,是衡量机器速度的重要参数。
CPU周期又称为机器周期,由多个时钟周期组成!
指令周期>CPU周期>时钟周期
存储容量
存放二进制信息的总位数
MAR的位数反映存储单元的个数,如MAR为16位,表示存储单元为 = 64K;若MDR为32位,则存储容量为
信息表示
进制及其转换
计算机为什么选用二进制:
- 可行性:采用二进制,只有0和1两个状态,能够表示0、1两种状态的电子器件很多
- 简易性:二进制数的运算法则少,运算简单,使计算机运算器的硬件结构大大简化
任意进制R转十进制:按权展开然后相加
十进制转任意进制R:
- 整数部分:不断除以R,然后逆序取余数,即得到的余数从下往上取对应的就是结果从左往右。
- 小数部分:不断✖️R,然后顺序取整。,即得到的整数从上往下取。
数值数据表示
原码:原码的表示与机器数真值表示的一样,即用第一位表示符号,其余位表示数值。
反码:负数原码符号位不变,其余位取反。正数不变
为什么要用反码:
如果用原码表示,让符号位也参与计算,对于减法来说,结果是不正确的。
这也是计算机内部在存储数据时不使用原码的原因,为了解决这一问题,出现了反码。
补码:负数的反码+1,正数不变
如果数为负数,补码可以通过 的方式去计算(n是数值位)
例如:=-10000
X补=
为什么要用补码:
为了解决反码的0表示不是唯一
移码:原码的符号位取反
为什么要用移码:
保证浮点数的机器零为全0
正数的原码,反码,补码相同。
计算机实际只存储补码, 所以原码转换为补码的过程
存储器
存储器概述
存储器分类
按存储介质分类:
- 半导体存储器
- 磁表面存储器
- 磁芯存储器
- 光盘存储器
第一个为易失
后三个为非易失
按作用分类:
- 高速缓冲存储器:位于主存和CPU之间,用来存放正在执行的程序段和数据,减少对主存储器的访问次数
- 主存储器:简称主存。CPU可以直接随机地对其进行访问,主要有CMOS集成电路组成
- 辅助存储器:简称外存:不能与CPU直接相连,用来存放当前暂时不用的程序和数据
- 控制存储器:存放控制信息(微程序)
按存取方式:
- 存储方式与物理地址无关:随机访问
- 随机存储器 可读可写
- 只读存储器 只读
- 存储方式与物理地址有关:串行访问
- 顺序存储器 磁带
- 直接存储器 磁盘
性能指标
-
存储容量:存储字数*字长
例如:64K✖️8
-
单位成本:每位价格=总成本/总容量
-
存储速度:数据传输率=数据的宽度/存储周期
存取时间
存储周期
存储器带宽
-
可靠性:平均故障时间
半导体随机存取存储器
静态随机存取存储器SRAM
其存储元采用双稳态触发器(六晶体管MOS )进行信息记忆,因此信息被读出后,仍保持原状态而不需要再生。
SRAM 的特点就是存取速度快,缺点是集成度低、功耗大;一般用于制作 Cache 层。
动态随机存取存储器DRAM
采用存储元电路中栅极电容上的电荷进行信息存储,其基本存储元通常只使用一个晶体管,因此可以比 SRAM 的密度高很多。
优点是易集成、位价低、容量大和功耗低,缺点就是速度比较慢;DRAM 一般用于制作主存。
DRAM的刷新:
为什么要刷新:
这是因为DRAM的存储单元是由一个电容和一个晶体管组成的,在电容充电的过程中会逐渐漏电,导致存储数据的电量丢失。因此,DRAM需要周期性地进行刷新操作来重新充电,以避免数据丢失和错误的发生。一般来说,DRAM需要在每8毫秒左右进行一次刷新操作,以确保数据的稳定性和可靠性。
三种方式:
-
集中刷新
指在一个刷新周期内,利用一段固定的时间,依次对存储器的所有行进行逐一再生,此期间停止对存储器的读写操作,称为“死时间”,也称访存“死区”。其优点就是读写操作时不受刷新工作的影响,因此系统的存取速度较高;缺点就是在刷新期间不能访问存储器。
-
分散刷新
将每行的刷新分散到各个工作周期中,因此存储器的工作周期分为前后两部分,前半部分用于正常的读写操作,后半部分用于刷新某一行。
这种方式的优点就是没 有“死区”,但因此增加了系统的存取周期,往往时芯片存取周期的两倍,降低了整机的速度。
-
异步刷新
该方法是前两种方法的结合,有着缩短“死时间”的同时充分利用最大刷新间隔 2 ms 的特点,具体就是将刷新周期除以行数,得到两次刷新操作之间的时间间隔 t,利用逻辑电路每隔时间 t 产生一次刷新请求。从而避免让 CPU 连续等待的时间过长,也减少刷新次数,提高整机工作效率。
非易失性半导体存储器
- 掩膜型只读存储器MROM
这种类型存储器的内容往往有半导体制造厂商按用户提出的要求在芯片的生产过程中直接写入,写入以后便不会改变;
具有可靠性高,集成度高,价格便宜的优点,缺点就是灵活性很差。
- 一次可编程只读存储器PROM
允许用户利用专门设备,如编程器写入程序,一旦写入,内容就无法改变
- 可擦除可编程只读存储器EPROM
允许多次修改内容,修改时先将原有内容擦除,再编程;
可分为紫外线擦除(UVEPROM)和电擦除(E^2 PROM).
虽然可读可写,但是无法取代 RAM,因为 EPROM 的编程次数有限,而且写入速度很慢。
- 电可擦除可编程只读存储器EEPROM
指带电可擦可编程只读存储器。是一种掉电后不会丢失的存储芯片。
EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。一般用在即插即用。
- 闪速存储器Flash
EEPROM的改进产品,具有存储密度高,信息非易失的优点
SSD固态硬盘
存储体系
层次结构
主存——辅存:解决了主存容量不够的问题。
Cache——主存:解决了主存与CPU之间速度不匹配的问题。
高速缓冲存储器
原理
程序访问的局部性:在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内,这种对局部范围的存储器地址频繁访问,而对此范围以外的地址则访问甚少的一种现象。
结构
保存主存储器中最活跃部分的副本