计算机组成原理
计算机原理概论
计算机的发展历程
第一代计算机:电子管计算机(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位,表示存储单元为$$2^{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之间速度不匹配的问题。
高速缓冲存储器
原理
程序访问的局部性:在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内,这种对局部范围的存储器地址频繁访问,而对此范围以外的地址则访问甚少的一种现象。
结构
保存主存储器中最活跃部分的副本
相联存储器
既可以按地址寻址,与可以按内容查找的存储器
- 全相联映像
全相联映射地规则:主存中地每一块可以装入 Cache 中地任何位置,每行地标记用于指出该行取自主存地哪一块,所以 CPU 访存时需要与所有 Cache 行标记进行比较。
优点是比较灵活,Cache 块冲突概率小,空间利用率高,命中率也高。
缺点就是比较速度较慢,实现成本较高,通常需采用昂贵地按内容寻址地相联存储器进行地址映射。
- 直接映像
主存块只能装入 Cache 中的唯一位置,若位置上已有内容,则块冲突那么直接将原有信息无条件替换出去。
优点是实现简单,缺点是不够灵活,块冲突率高,空间利用率低。
- 组相联映像
组相联映射地规则:将 Cache 空间分成大小相同地组,主存地一个数据块可以装入一组内地任何一个位置,即组间采取直接映射,组内用全相联映射:
虚拟存储器
容量是虚拟的,实际上并没有这么多容量,之所以能达到这么大容量,是因为借用了外存的存储空间,把当前不需要访问的数据存放在外存,用内外存数据倒换的时间消耗来换取更大的逻辑存储空间。
- 页式虚拟存储器
页式虚拟存储器就是将其基本单位划分为页,且将主存的物理空间划分为虚拟存储器等长的页。划分的页称为页面,主存的页称为实页,虚拟存储器的页称为虚页
优点:由于页面的起点,终点地址是固定的,因此页表简单,调入方便,主存空间浪费小
缺点:由于页面不是逻辑上的独立实体,因此处理,保护和共享都不如段式虚拟存储器方便。
- 段式虚拟存储器
段式虚拟存储器是一种将主存按段分配的存储管理方式,各段的长度因程序而异。段是利用程序的模块化性质,按照程序的逻辑结构划分成的多个相对独立部分,系统的基本信息传送单位为段,并通过地址变换机构实现访存过程。
优点:段的分界与程序的自然分界相对应;段的逻辑独立性使它易于编译,管理,修改和保护,也便于多道程序共享;某些类型的段(堆栈,队列)具有动态可变长度,允许自由调度以便于有效利用主存空间。
缺点:段的长度各不相同,段的起点和终点不定,給主存空间分配带来麻烦,造成空间浪费。
- 段页式虚拟存储器
段页式虚拟存储器是段式虚拟存储器和页式存储器的结合。
优点:兼备页式存储器和段式虚拟存储器的优点 。
缺点:在地址映射过程中需要多次查表
简答题
- CPU中有哪几类寄存器,用一句话概括其功能
(1) 数据缓冲寄存器(DR):数据缓冲寄存器用来暂时存放ALU的运算结果、由数 据存储器读出的一个数据字、来自外部接口的一个数据字。
(2) 指令存储器(IR):指令存储器用来保存当前正在执行的一条指令。
(3) 程序计数器(PC):用来存放下一条指令的地址。
(4) 数据地址寄存器(AR):数据地址寄存器用来保存当前CPU所访问的数据cache存 储器中(简称树村)单元的地址。
(5) 通用寄存器(R0~R3):当算术逻辑单元(ALU)执行算术或逻辑运算时,为ALU提 供一个工作区。
(6) 状态字寄存器(PSW):状态字寄存器保存有算术指令和逻辑指令运算或测试结果建 立的各种条件代码。
- 指令和数据都用二进制代码存放在内存中,从时空观角度回答CPU如何区分读出的代码 是指令还是数据。
计算机可以从时间和空间两方而来区分指令和数据,在时间上,取指周期从内存中取岀 的是指令,而执行周期从内存取出或往内存中写入的是数据,
在空间上,从内存中取岀指令 送控制器,而执行周期从内存从取的数据送运算器、往内存写入的数据也是来自于运算器。
- 画出计算机系统的层次结构。
- 简要总结一下,采用哪几种技术手段可以加快存储系统的访问速度?
- 采用更高速的主存或加长存储器字长
- 采用并行技术操作的双端口存储器
- 采用多体交叉存储器
- 采用cache
- 存储系统中加入chche存储器的目的是什么?有哪些地址映射方式,各有什么特点?
Cache 是一种高速缓冲存储器,是为了解决cpu和主存之间速度的不匹配问题。
地址映射方式有:
A全相连映射方式,这是一种带全部块地址一起保存的方法,可使主存的一块直接拷贝到cache中的任意一行上,非常灵活;
B直接映射放射:优点是硬件简单,成本低,缺点是每个主存块只有一个固定的行位置可存放;
C组相连映射方式:他是前两者的折中方案,适度的兼顾了二者的优点,又尽量避免其缺点,从灵活性,命中率,硬件投资来说较为理想,因而得到了普遍采用。
- 说明SRAM的组成结构,与SRAM相比,DRAM在电路组成上有什么不同?
SRAM 是静态随机存储器,其基本单元电路是由4个MOS管组成的触发器基本电路,2个MOS管受行地址选择控制,2个MOS管受列地址选择控制,电路有两种稳定状态,分别来记录0和1;
DRAM是动态随机存储器,常用的是单管式;靠电容存储电荷的原理来寄存信息,若电容上有足够多的电荷表示存1,无电荷表示存0.但是电容不稳定,只能维持1-2MS,为此,必须在2MS内对其所有存储单元恢复一次原状态,即刷新。
- 提高存储器速度可采用哪些措施,说出至少五种
①采用高速器件,
②采用CaChe(高速缓冲存储器),
③采用多体交叉存储器,
④采用双端口存储器,
⑤加长存储器的字长。