第一章 计算机系统概论
1.1 从源文件到可执行文件
.c源程序、.i源程序、.s汇编语言程序、.o可重定位目标程序、可执行目标程序;后两个为二进制,前面为文本
1.2 可执行文件的启动和执行
冯诺依曼结构计算机模型的5大基本部件:运算器、控制器、存储器、输入设备、输出设备二进制形式的指令和数据混合存储;程序计数器线性读取指令和数据;指令=操作码+地址码
1.3 可执行文件的启动和执行
DMA:数据不通过CPU,直接从磁盘到主存
软件和硬件的分界线:指令集体系结构ISA
1.4 程序和指令的执行过程
指令:一条指令的机器字(0/1序列),完成一个特定原子操作,【操作码OP】+【操作数/地址码OA】
程序:一串指令构成
通用寄存器编号:rt、rs;主存单元地址:addr
指令的执行过程:根据PC取指令——指令译码,PC+=1——取操作数并执行——送结果
硬件性能只能通过运行软件反映:①相同硬件运行不同软件,②相同软件用不同数据集
计算机性能评价
4.1 计算机性能
工作速度(从作业提交到作业完成的时间):响应时间、执行时间、等待时间
工作量(单位时间完成的工作量):吞吐率、带宽
用户感受时间 > 用户CPU时间(CPU性能) + 系统CPU时间(系统性能)
时钟周期:CPU主脉冲信号(CPU产生时钟定时信号)的宽度
时钟频率(处理机主频Fz):时钟周期的倒数,只能用于同一配置的处理机
CPI:执行一条指令所需的时钟周期数,随指令改变;一个程序或机器的CPI是平均值
用户CPU时间:程序总时钟周期数 * 时钟周期
4.2 指令执行速度
IPC:每个时钟周期平均执行的指令条数
平均值方法:算数、调和、几何
加权方法:静态指令使用频度(程序中统计),动态指令使用频度(程序执行过程中统计)
4.3 基准测试程序
简化程序不可信的原因:程序小且片面;设计者可以串通优化并提高性能
基准测试程序特点:由不同的真实应用程序构成,较全面地反映各方面的处理性能
一系列基准程序,测试程序具代表性且足够大,归一化和几何平均,测试报告
4.4 Amdahl定律(阿姆达尔)
定量原则,基本思想为:对系统中某部分硬件或软件进行更新所带来的系统性能改进程度,取决于该部分被使用的频率或其执行时间占总执行时间的比例
第二章 数据的机器表示
1.1 信息的二进制编码
数据表示的三要素:【进位计数值】进制转换、【定点、浮点表示】定点整数和定点小数,浮点数、【如何用二进制编码】原码,补码,反码,移码
1.2 进位计数值
进制之间的转换(整数部分+小数部分)
1.3 定点与浮点表示
定点数:小数点位置固定的数,固定在最左边【定点小数】,固定在最右边【定点整数】
浮点数:小数点位置可以浮点的数
1.4 定点数的编码表示
符号数字化:0正1负
统一编码:符号和数值一起参与运算
任何浮点数都用一个定点小数和一个定点整数表示,S符号 + E阶码 + M尾数
真值:书写表示的数(带有正负号)
机器数和机器码:机器中编码表示的数
原码的特点:简单直观,符号位不参与运算,加减法运算方式不统一,0的原码不唯一:0000或1000
补码表示法:(纯整数)正数为原码,负数为原码取反加一,(纯小数)正数为原码,负数为2-x
补码的特点:符号位参与运算,减法转为加法,0的补码唯一,比原码多表示一个最小负数(-1或-2n-1)
反码表示法:各位数码0变1,1变0
移码:将每个数值加上一个偏置常数。编码为n时,bias取2n-1
移码的特点:0的移码唯一,补码和移码仅第一位不同
2.1 无符号整数
特点:应用于地址运算(指针)和编号表示,无符号位
2.2 带符号整数
特点:常用补码,表示范围为-2n-1 ~ 2n-1-1
符号扩展(符号数):高位置为立即数的最高位
0扩展(无符号数):高位置为0
2.3 C语言中的整数类型及其转换
3.1 浮点数的规格化
规格化形式:小数点前只有一位非0数
3.2 IEEE754浮点数标准
32位单精度浮点,64位双精度浮点
基数为2,尾数为原码(第一位总为1),阶码为移码
正负无穷:全1阶码,全0尾数
浮点数机器表示与对应真值之间的变换流程(32位浮点数):
8位阶码,32位尾数
E:阶码,M:尾数,S:符号,e=127
3.3 C语言中的浮点数类型及转换
单精度浮点数:float——IEEE754,32位单精度浮点格式
双精度浮点数,double——IEEE754,64位双精度浮点格式
扩展双精度浮点:long double
4.1 ASCII码
前分隔数字串:符号位单独用一个字节表示,位于数字串之前。正号2BH、负号2DH
后嵌入数字串:符号位嵌入最低位数字的ASCII码高4位中。正数不变、负数高四位为0111
4.2 BCD码
编码思想:每个十进数位至少有4位二进制(基2码)表示,而4位二进制位可组成16种状态,去掉10种后还有6种冗余状态
计算机外部信息与内部数据的转换:
4.3 非数值数据的编码表示
逻辑数据:表示按1真0假,运算按位进行
文字信息(拼音、字形、数字):①7位ASCII码,②汉字编码
汉字编码:
国际码,每个汉字或图形符号用两个字节表示,每个字节只使用低七位编码
机内码 = 国际码 + 8080H = 区位码 + 2020H + 8080H
汉字输出:点阵、矢量、曲线
4.1 数据的宽度和单位
比特bit:计算机中处理、存储、传输信息的最小单位
字节byte:二进制信息的计量单位,1byte=8bits,西文字符占1个字节,汉字占2个字节
若存储器按字节编址,则字节是最小可寻址单位
字word:表示被处理信息的单位,度量数据类型的宽度,1word=2/4/8/16bytes(与计算机有关)
字长:CPU内部用于整数运算的数据通路宽度
容量单位:1KB=1024B,1MB=1024KB,1GB=1024MB,1TB=1024GB,1024=2^10
4.2 数据的存储和排列顺序(字的存放和边界对齐问题)
MSB最高有效字节:数的最高位 LSB最低有效字节:数的最低位
大端方式:MSB所在的地址是数的地址 小端方式:LSB所在的地址是数的地址
立即数的地址需要考虑操作码和寄存器的位数,排除后成为数的地址!!!
数据校验(奇偶校验、CRC循环校验)
检测与校正的原因:存取和传送时,由于元器件故障或噪音干扰等原因会出现差错
解决方法:硬件考虑电路、电源、布线;软件考虑冗余校验(校验位)
5.1 奇偶校验
校验位只有1位,只能检错不能纠错
数据位和校验位一共所含1的个数位奇数(偶数)——奇校验(偶校验)
大批量数据不用奇偶校验的原因:在每个字符后增加1位校验码,会增加大量的额外开销
5.2 海明校验码
5.3 循环冗余(CRC)校验码
模2运算:当部分余数首位是1时商取1,反之商取0。最后的余数位数比除数少1位。
M(x):n位数据信息位,G(x):k+1位生成多项式,R(x):余数,循环校验码位(n+k,n)码
第三章 运算方法和运算部件
1.1 MIPS指令系统支持的运算
ALU(算术逻辑运算单元)是运算部件的核心
指令思路:先实现基本算数运算和基本逻辑运算,生成基本条件码,再由ALU和移位器实现乘除、浮点运算器
涉及到的操作数:无符号整数、带符号整数、逻辑数(位串)、浮点数
涉及到的运算:定点数算术运算和逻辑运算、浮点数运算
1.2 算数逻辑部件ALU
基本算数运算:无/带符号整数的加减 基本逻辑运算:与、或、非、异或等
核心电路:整数加减运算部件 输出:运算结果+标志信息
操作控制端ALUop:决定ALU执行的处理功能,位数k,种类2^k
1.3 运算方法
2.1 补码加减运算(高位丢弃)及部件
定点整数:
定点小数:
溢出:运算结果超出机器数所能表示的范围。n位补码整数的范围为-2n-1~2n-1-1
两个同号数相加或两个异号数相减时,可能发生溢出
溢出检测:
- fa、fb、fs表示A、B、结果S的符号位,若结果符号位和操作符号位不同,则溢出。
- Cn为符号位的进位,Cn-1为数值最高位的进位,若Cn≠Cn-1,则溢出。
- 双符号位fs1,fs2,正数为00,负数为11,若fs1和fs2不同,则溢出。
部件:
- 1位全加器(考虑输入进位)
- 1位半加器(不考虑输入进位)
串行进位加法器:进位传递中的门延迟导致运算速度慢,所用元器件少
并行(先行)进位加法器- 带标志加法器
2.2 原码乘法运算及部件
原码1位乘法:
符号位单独处理,数据位取绝对值参加运算
运算法则:
计算步骤要点:
第一步:初始部分积设全0,从乘数末位乘起
第二步:乘数位为1,部分积加被乘数,结果右移一位
第三步:乘数位为0,部分积加全0,结果右移一位
第四步:重复上述操作直到乘数乘完为止
第五步:符号位求异或运算
乘法部件的特点:加/减+右移实现,快速乘法器(流水线方式+硬件叠加方式)
阵列乘法器:速度只取决于逻辑门和加法器的传输延迟
2.3 原码除法运算及部件
恢复余数法:直接做减法试探
缺点:除法运算的实际操作次数不固定,导致控制电路比较复杂;在恢复余数时要多做一次加法,降低了执行速度
加减交替法(不恢复余数法):
运算部件:ALU、移位器、寄存器组、用于数据选择的多路选择器、实现数据传输的总线,以上构成运算数据通路
CPU中有多个运算部件,称为【功能部件】或【执行部件】
3.1 浮点加减运算
Ex、Ey——阶码
Mx、My——尾数
运算步骤:
- 0操作数检查
- 比较阶码大小并对阶,小阶向大阶看齐
- 尾数加减运算
- 结果规格化(左规、右规)
- 摄入处理(0舍1入)
- IEEE754标准
- 溢出处理
5.1 定点运算器
定点运算器的基本结构:
单总线结构的运算器:所有部件都接到同一总线上,在同一时间内,只能有一个操作数放在单总线上
双总线结构的运算器;三总线结构的运算器
第四章 指令系统
1.1 基本概念
指令:计算机能够识别、执行的操作命令,计算机语言的基本单位,【存储程序和程序控制原理】实现的载体
指令系统:一台计算机中所有机器指令的集合,决定系统性能和实现复杂性,是计算机产业的枢纽
系列机:同一公司不同时期生产,基本系统结构和指令系统相同
兼容机:不同公司生产,基本系统结构和指令系统相同
机器指令:能够被计算机识别的指令
指令字长:指令中包含的二进制数
指令字长与机器字长的关系:指令字长=机器字长(单字长),指令字长=2*机器字长(双字长),指令字长=1/2*机器字长(半字长)
多字长指令:解决寻址较大存储空间的问题,取值多次访问内存,影响速度且占用空间大
等长指令:指令长度固定
变长指令:指令长度根据需要发生变化
1.2 指令的分类
计算机层次结构——高级语言指令、汇编语言指令、机器语言指令、微指令
指令OA字段个数——三地址指令、二地址指令、一地址指令、零地址指令
操作数的物理位置——SS型指令(存储器-存储器)、RR型指令(寄存器-寄存器)、RS型指令(寄存器-存储器)
指令功能——传送指令、定点算数运算指令、位运算指令、控制转移指令
1.3 指令格式设计的基本原则
①指令短 ②操作码位数足够 ③操作码的编码有唯一解释 ④指令长度是字节的整数倍 ⑤合理选择地址字段个数 ⑥指令规整
2.1 指令系统的基本设计问题
指令周期:取指+执行
操作码字段 | 寻址方式 | 操作数字段 |
设计:操作码、数据类型、指令格式、通用寄存器、寻址方式、下一条指令
2.2 操作数类型
无符号整数(指针、地址),带符号整数和浮点数,位、位串、字符和字符串,逻辑值
2.3寻址方式
指令寻址方式:
顺序寻址方式:程序执行的流向不发生变化,程序计数器记录所要执行指令的地址(PC+=本条指令所占存储单元数)
跳跃寻址方式:程序执行的流向发生变化,程序计数器的内容由本条指令给出(直接寻址方式、相对寻址方式、间接寻址方式)
直接寻址方式:要转向的有效地址
相对寻址方式:要转向单元与当前单元的偏移量
间接寻址方式:保存要转向地址的寄存器或存储单元
操作数寻址方式:指令给出操作数或其地址,立即数+直接+间接+寄存器+寄存器间接+偏移(变址+基址+相对)+隐含+堆栈
有效地址EA:操作数所在存储单元的地址(逻辑地址或物理地址),通过指令的寻址方式和地址码计算得到
只有确定是按字还是字节编址、位移量A是指令条数还是单元数,才能确定目标地址范围
MIPS采用定长指令字,按字节编址,所有指令的长度都是32位(4字节)
2.4 操作类型、操作码编码
定长操作码编码:OP字段采用固定长度的编码,注重性能,有信息冗余
扩展操作码编码:OP字段长度分为几种固定格式,注重代码长度,等长扩展法
2.5 标志信息的生成与使用
条件转移指令分类:①根据单个标志的值转移,②按无符号整数比较转移,③按带符号整数比较转移
2.6 指令系统设计风格
CISC特点:
- 指令系统复杂(指令数多,寻址方式多,指令格式多)
- 大部分指令需要多个机器时钟周期完成
- 各指令都可访问存储器
- 采用微程序控制
- 有专用寄存器
- 难以进行优化编译
RISC特点:MIPS
- 指令系统简化(指令少,寻址方式少,指令格式少,指令长度一致)
- 以RR方式工作。除load/store指令可访问存储器,其余指令只访问寄存器
- 指令周期短,除load/store指令,均不超过一共时钟周期完成
- 采用大量通用寄存器,访问次数减少
- 采用组合逻辑电路控制,基本不用微程序控制
- 采用优化的编译系统,支持高级语言程序
3.1 【TEC-4】8位模型机
机器指令格式:
3.2 IA-32指令系统
ISA指令集体系结构:规定机器语言程序的格式和行为
ISA包括:指令的格式,操作种类,操作数类型;指令的寻址方式;寄存器的结构;存储器的存储方式(大端/小端);指令执行过程的控制方式
IA-32的寄存器组:
AT&T指令格式:指令的前缀部分最多占用4B
前缀类型 | 指令前缀 | 段前缀 | 操作数长度前缀 | 地址长度前缀 |
字节数 | 0/1 | 0/1 | 0/1 | 0/1 |
指令前缀:Lock前缀(是否对共享M以独占方式使用)、重复前缀(REPNE、REP)
段前缀:指定指令所用的非默认段寄存器
操作数长度前缀、地址长度前缀:指定非默认的操作数长度和地址长度,采用默认段寄存器时不用
【查表,反汇编,得出汇编指令】
寻址方式:按操作数所在位置
- 立即寻址(指令中)
- 寄存器寻址(寄存器中)
- 其他寻址(存储器中)
4.1 MIPS汇编语言和机器语言
选择MIPS而非Intel 80x86:MIPS简洁雅致,可应用于嵌入式
MIPS汇编语言:
- 不能使用变量,寄存器变量没有数据类型
- 操作对象是寄存器,优点是寄存器为最快的数据单元,缺点是寄存器数量有限
- 寄存器字长:32bits = 1word
指令集包括32个通用寄存器
32位字长MIPS指令格式:按字地址对齐,字地址为4的倍数
OP=0为R型,OP=2或3为J型,其余OP情况为I型
OP=0时,func字段需查询编码/解码表,列对应高3位字段,行对应低3位字段
- R型指令:Rd是存放结果的目的操作寄存器,shamt是用于移位指令的偏移量,funct是对操作码进行补充的函数(OP=000000时,具体操作由funct给出)
- I型指令:立即数可能是相对寻址(beq、bne),16bits偏移地址左移2位 + PC
- J型指令:立即数是伪直接寻址,26bits偏移地址 + PC高4bits = 30bits字地址
MIPS寻址方式:寄存器寻址、基址寻址、立即数寻址、PC相对寻址【16bits偏移地址左移2位 + PC】、伪直接寻址【26bits偏移地址 + PC高4bits = 30bits字地址】
4.2 选择结构的机器代码表示
4.3 循环结构的机器代码表示
4.4 过程调用的机器代码表示
栈Stack:先入后出的队列,栈指针指向栈顶元素,每个元素长度一致,入栈和出栈操作访问元素
MIPS中栈的实现:
- $sp是栈指针,入栈是sw,出栈是lw,需要用add和sub调整$sp
- 栈生长方向:高地址->低地址;取数/存数方向:低地址->高地址(大端方式)
除返回地址外,函数参数等会覆盖的变量都需要入栈
寻址空间:CPU对内存寻址的能力,即能最多用到多少内存
CPU的工作模式:实模式(复位或加电)、保护模式(分段分页)、虚拟8086模式
字长:CPU处理数据的宽度,数据通路的宽度
第五章 中央处理器
1.1 指令执行过程
CPU取出并执行指令——PC执行下一步要执行的指令地址——指令按顺序存放在内存中
指令周期:CPU取出并执行一条指令的时间,不同指令周期可不同
CPU周期/机器周期:从内存中读取一个指令字的最短时间
时钟周期/节拍脉冲/T周期:一个CPU周期包含若干个时钟周期
指令执行的过程(取指译码+执行):取指令,PC+1送PC,指令译码,进行主存地址计算,取操作数,进行算数/逻辑计算,结果写回
每步均需检测异常,若有异常则自动切换到异常处理程序;检测是否有中断请求,若有中断则转中断处理
取指周期:取指令(指令从主存到指令寄存器IR,PC指示下一条指令)+指令译码(区分指令类别及获取操作数的方法)
1.2 CPU的功能和组成
主要功能:运算器(数据加工-算术逻辑运算) + 控制器(程序控制、操作控制、时序控制、异常控制)
组成:执行部件/数据通路 + 控制部件/控制器
1.3 数据通路的基本构成
数据通路:指令执行过程中,数据所经过的路径,包括路径中的部件,是指令的执行部件。是由操作元件和存储元件通过总线方式或分散方式连接而成的进行数据存储、处理、传送的路径
CPU中的数据通路:寄存器间及ALU和存储器间的传输信息的通路
控制器的功能:对指令进行译码,生成指令对应的控制信号,控制数据通路的动作,是指令的控制部件
微操作:控制器在实现一条指令的功能时,总是把每一条指令分解成时间上先后有序的一系列最基本、最简单、不可再分的操作控制动作
数据通路的组成元件:组合逻辑元件(操作元件)、时序逻辑元件(状态元件、存储元件)
元件间的连接方式:总线连接、分散连接
数据通路的功能:进行数据存储、处理、传送
状态元件(含寄存器组、存储器)的特点:具有存储功能,输入端状态由时钟决定,输出端状态随时可变
定时方式:规定信号何时写入状态元件或何时从状态元件读出
定时模式:时钟控制,边沿触发(建立时间、保持时间、触发器延迟)
暂存器——写使能端,寄存器——两个读口(组合逻辑)和一个写口(时序逻辑)
CPU中的主要寄存器:程序计数器PC、指令寄存器IR、地址寄存器AR、数据缓冲寄存器DR、累加寄存器AC、程序状态字PSW、通用寄存器GPRS
1.4 控制器的操作控制和时序控制
控制器:CPU中完成取指令和执行指令全过程的部件
主要功能:产生各种操作控制信号
CPU如何区分数据和指令:
- 时间:取指令发生在指令周期的第一个CPU周期中,即发生在取指令阶段;取数据发生在指令周期的后面几个CPU周期中,即发生在执行指令阶段
- 空间:如果取出的代码是指令,那么一定送往指令寄存器;如果取出的代码是数据,那么一定送往运算器
节拍/电位:节拍电位表示一个CPU周期,是一个较大的时间单位,一个节拍内常常设置一个或几个工作脉冲
只有状态元件能存储信息,所有操作元件都须从状态单元接收输入,并将输出写入状态单元中
其输入为前一时钟生成的数据,输出为当前时钟所用的数据
时序控制:定长指令周期(按机器周期同步),变长指令周期(按时钟周期同步)
1.5 Tec-4指令执行过程
执行一条微指令,需要4个时钟周期;执行一条指令,需要4个节拍(取指、送操作数、运算、写结果)
ISA确定后,进行处理器设计:
- 分析指令功能,用RTL表示(Register Transfer Language)
- 根据功能给出所需元件,考虑互连
- 确定各元件所需控制信号的取值
- 汇总所有指令的控制信号,生成指令-控制信号关系表
- 根据表得到各控制信号的逻辑表达式,设计控制器电路
2.1 指令功能的描述(MIPS)
寄存器:寄存器编号 + MIPS助记符 + 释义 + 调用时是否保存
指令格式:32位宽,按字地址对齐
寄存器数据指定:寄存器编号占5位
存储器数据指定:大端方式,只能通过load和store访问存储器数据
I型指令:基址或变址、相对寻址(PC)
J型指令:伪直接寻址
2.2 数据通路的设计
公共操作:与指令类型无关,包括【取指令】和【取操作数】
单周期需要在一个周期内完成取值译码执行的过程,不设置AR、DR、IR
2.3 控制逻辑单元的设计
指令与控制器的关系
主控和局控:MIPS中指示操作性质的字段为OP(主控)和func(ALU局控)
ALUctr的值:非R指令时,取决于ALUop;R型指令时,取决于func
2.4 时钟周期的确定
单周期:
单周期的特点:
- 全部指令都选用1个CPU周期或1个时钟周期完成
- 串行执行,前一条结束后才启动下一条
- 每个指令均用5个步骤
- 控制部件运行的信号在整个指令周期不变
- 系统性能和资源利用率低
3 多周期处理器设计
4.1 微程序控制器基本概念
硬布线:同步逻辑、繁、快、贵、难改
硬布线特点:一个指令多个时钟周期,一个时钟周期一个状态,一个状态一组并发信号
微程序:存储逻辑、简、慢、廉、易改
微程序特点:将并发信号事先存储为微指令,一条指令多条微指令,状态等同与存储器地址
微程序控制器基本思想:
- 每条指令的执行过程用一个微程序表示
- 每个微程序有若干条微指令
- 每条微指令是有限状态机中的一个状态
- 所有指令的微程序存放在ROM控制存储器
特点:规整性、可维性、灵活性、速度慢
执行过程:指令取指执行——微程序的执行——执行多条微指令——依次生成控制信号
微指令的格式:操作控制字段 + 顺序控制字段
程序、微程序、指令、微指令的对应关系:
- 微程序是实现1条机器指令功能的许多条微指令组成的序列
- 微指令中的每一位是一个微命令
- 1条机器指令 = 1段微程序 = n条微指令
- 1条微指令 = n个微命令
- 微指令周期 = 读出微指令时间 + 执行微指令时间 = CPU周期
4.2 微程序控制器的结构
控制存储器:存放实现全部指令系统的微指令,只读不写
微指令寄存器:存放控制存储器读出的一条微指令信息,包含微命令寄存器和微地址寄存器
地址转移逻辑:出现分支——条件转移,不出现分支——下一条微指令的地址由微地址寄存器给出
4.3 微命令编码
微程序设计的关键:确定微指令的结构(微命令编码、微地址的形成、微指令格式)
微命令编码:微指令中的操作控制字段的表示方法
- 直接表示法
- 编码表示法:相斥性的微命令信号组成一个小组
4.4 微地址的确定
微指令执行的控制问题:如何确定下条微指令的地址
- 计数器方式:顺序执行——增量,非顺序——转移
- 多路转移方式:无分支——顺序控制字段,有分支——后选微地址
第七章 存储系统(存储器分层体系结构)
1.1 基本术语和存储器分类
记忆单元/存储单元/位元:具有2种稳态的能够表示二进制数码0和1的物理器件
存储单元/编址单位:具有相同地址的位构成一个存储单元
存储体/存储矩阵/存储阵列:所有存储单元构成一个存储阵列
编址方式:字节编址 或 按字编址
存储器地址寄存器:用于存放主存单元地址的寄存器
存储器数据寄存器:用于存放主存单元中数据的寄存器
按存取方式分类:随机存取存储器RAM(内存等)、顺序存取存储器SAM(磁带等)、直接存取存储器DAM(磁盘等)、相联存储器AM(快表等)
按存储元件分类:半导体存储器(TTL、MOS)、磁表面存储器、光盘存储器
按信息可更改性分类:读写存储器、只读存储器
按断电后信息的可保存性分类:非易失性存储器(ROM等)、易失性存储器(RAM、cache等)
按功能、容量、速度、所在位置分类:寄存器Register、高速缓存器Cache、内存储器MM、外存储器AM
1.2 主存储器的组成和基本操作
主存中存放指令和数据,CPU取指令、取数据、存数据时会访问主存
地址译码器的输入是地址,输出是地址驱动信号
主存地址空间大小 不等于 主存容量
1.3 存储器的主要性能指标
存取容量:存储单位总数
存取时间:从启动一次存储器操作到完成该操作所经历的时间TA
存取周期:连续启动两次操作所需要的最小间隔时间TM
存储器带宽:单位时间里存储器所存取的信息量,是衡量数据传输速率的重要指标
1.4 存储器的层次结构
从上至下:容量增大、价格减小、速度减小
高速缓存采用SRAM,主存采用DRAM
存储器工作流程:
半导体存储器分类:
2.1 基本存储元件
2.2 SRAM芯片和DRAM芯片
静态RAM(SRAM):双稳态触发器,用于cache
动态RAM(DRAM):单管动态存储单元(破坏性读出),需要反复刷新,用于主存,采用异步刷新方式(每一行的刷新插入到正常的读/写周期中)
刷新操作:由外界按一定规律不断地给栅极进行充电,补足栅极的信息电荷,防止丢失信息
集中刷新:集中前一段读写,拿出一段固定时间刷新(死时间内对所有行刷新)
借助DRAM控制器,可以把DRAM用作SRAM
存储器芯片内部结构:【内部】存储体、内部译码器、译码输出驱动器、片选与读写控制单元、输出驱动;【外部】地址线、数据线、控制线
主存是信息存储的中心:CPU与主存、外设与主存均频繁交换信息
双端口存储器:具有两个彼此独立的读写口,与两个独立的存储器不同,可对存储器任何位置的数据进行并行、独立的存取操作
读写冲突处理:两个端口同时访问或读写存储器的同一个存储单元,需要设置一个忙Busy标志
- 片上判断逻辑决定对哪个端口优先进行读写操作,而对另一个被延迟的端口设置忙标志(暂时关闭)
- 等优先端口完成读写操作,再将被延迟端口重新开发
无冲突的读写 和 有冲突的读写(同时写相同地址;一边写一边读相同地址)
端口取胜的判断方式:A端口比较-CE,B端口比较地址的先后
2.3 SDRAM芯片技术
SDRAM同步存储芯片:每步操作在系统时钟控制下进行,有确定的等待时间CL(读命令开始到数据线有效的时间)
3.1 内存条和内存条插槽
主存与CPU连接时,总线中的传输线是地址线、数据线、控制线(3种)
内存由若干内存条组成,内存条是若干DRAM芯片焊装在一小条印制电路板上制成
每次访存操作总是在某一个内存条内进行
行缓冲数据的地址的特点:必定在同一行中
3.2 存储器芯片的扩展
字扩展:位数不变,扩充容量。地址线、读/写控制线等对应相接,片选信号连译码输出
位扩展:字数不变,位数扩展。芯片的地址线及读/写控制线对应相接,而数据线单独引出
字位同时扩展:地址线、读/写控制线等对应相接,片选信号则分别与外部译码器各个译码输出端相连
编址方式:连续编址方式、交叉编址方式(提高存储器带宽)
4 半导体ROM和Flash存储器
只读存储器ROM:存储固定信息,只读不写,断电后不丢失,适合永久性且不变的数据或代码,自检程序
不可重写ROM:掩模ROM(MROM)、一次性编程ROM(PROM)
可重写ROM:紫外线擦除多次性编程ROM(EPROM)、电擦除ROM(EEPROM)、闪速存储器(Flash ROM)
电擦除EEPROM:电气方法,字擦除可擦除一个存储单元,块擦除可擦除数据块中所有存储单元
Flash ROM:块擦写型,高密度、非易失性。低电压,可读不可写,高电压,可更改删除
6.1 程序访问的局部性
数据总是在相邻两层之间复制传送,上层更靠近CPU,下层更远离CPU,最小传送单位是定长块(互为副本)
时间局部性:刚被访问过的单元很可能不久又被访问。让最近被访问过的信息保留在靠近CPU的存储器中
空间局部性:刚被访问过的单元的邻近单元很可能不久被访问。将刚被访问过的单元的邻近单元调到靠近CPU的存储器中
程序局部性(空间局部性+时间局部性):在较短时间间隔内,程序产生的地址往往集中在一个很小范围内
程序具有访问局部性特征的原因:
- 指令:按序存放,地址连续,循环程序段或子程序段重复执行
- 数据:连续存放,数组元素重复且按序访问
6.2 Cache工作原理
Cache:解决CPU与主存速度不匹配。基于程序局部性原理,将频繁访问的数据取到cache中,内容是主存的部分副本
基本结构:Cache存储体、地址映像变换机构、Cache替换机构
工作原理:
- 把Cache和主存机械等分为相同大小的块,每一块是由若干个字(或字节)组成
- Cache与主存间以块(行/槽)为单位交换数据,块的大小以主存一个周期内可访问的数据长度为限
- CPU访存时,先检查Cache,不存在才访存
工作过程:
性能指标:命中率,失效率
命中率:CPU所要访问的信息在Cache中的比率
失效率:所要访问的信息不在Cache中的比率
Nc:Cache完成存取的总次数;Nm:主存完成存取的总次数
提高命中率的方法:
- 增大容量
- 采用多级cache
- 采用快速查找算法,判断是否命中
- 失效时,替换cache中暂时不适用的内容
- 编译器优化目标程序
- 程序员写cache-friendly程序
平均访问时间、访问效率:
6.3 Cache与主存的地址映射
Cache的映射功能:Cache行比主存块少,多个主存块映射到一个Cache行中
映射步骤:
- 把主存空间划分成大小相等的主存块
- Cache中存放一个主存块的对应单位称为槽或行
- 将主存块和Cache行按照以下3种方式进行映射:
全相联:每个主存块映射到Cache的任一行
直接:每个主存块映射到Cache的固定行
组相联:每个主存块映射到Cache固定组中任一行
地址映射:主存与Cache之间以固定大小的数据块为单位进行整体调度
地址映像:把主存块按照某种规则(函数或方法)装入或定位到Cache中的过程(全相联映象,直接相联映象,组相联映象)
地质变换:信息按某种映象关系装入Cache后,执行程序时,将主存地址变换成 Cache地址的变换过程(硬件完成)
用户和系统软件编制人员,无法感受Cache的存在
全相联特点:空间利用率最高,冲突概率最低,实现最复杂,适合小容量Cache
主存地址:【主存块号 + 块内地址】
Cache地址:【Cache行号 + 行内地址】
直接相联特点:空间利用率最低,冲突概率最高,实现最简单
主存地址:【群号 + 群内块号 + 块内地址】
Cache地址:【Cache行号 + 行内地址】
Cache共2^m行,主存第i块映射到Cache第j行:j = i mod 2^m
Cache对操作系统程序员不透明
组相联特点:将cache所有行分组,把主存块映射到cache固定组的任一行
Cache组号j,主存第i块,cache共g组:j = i mod g
常用:2路组相联
6.4 替换算法
先进先出FIFO、最不经常使用LFU、近期最少使用LRU、随机替换
先进先出:总把最先进入的块淘汰。不是栈算法,命中率不随组的增大而提高
最近最少使用:给每个cache行设定一个计数器,根据计数值来记录主存块的使用情况。是栈算法,命中率随组的增大而提高
颠簸:当分块局部化范围超过Cache存储容量,命中率在极端情况下为0
6.5 Cache的一致性问题
出现情况:多个设备访问内存、多CPU具有私有cache
处理方法:全写法WT、写回法WB
WT:
写命中时:将数据同时写入cache和主存,块表中无需修改位
写失效时:写分配法(先更新内存,后将更新后的主存块调入cache。空间局部性好,增加开销)、非写分配法(直接写入下一级存储器,不调入Cache。绕过Cache,速度快,空间局部性差)
WB:
写命中时:CPU写操作只写cache,只有当被替换时才依据块表中修改位,决定是否写主存。修改位=1,表示已修改,应写回主存,否则覆盖即可
写失效时:写分配法(同上)
7.4 虚拟存储器的实现
虚拟存储器是存储器的逻辑模型,借助于磁盘,主存-外存层次
物理地址由CPU地址引脚送出,用于访问主存的地址
虚拟地址由编译程序生成,是程序的逻辑地址,其地址空间的大小受到辅助存储器容量的限制
核心:对磁盘存储器进行抽象
三个重要的能力:
- 将主存看成是磁盘存储器的高速缓存,在主存中只保存活动区域
- 为每个进程提供了一致的地址空间,简化了存储器的管理
- 为每个进程提供了独立的存储空间,保护进程不受破坏
实现:
- 基本信息传送单位:段 / 页 / 段页
- 主存和磁盘直接的映射采用全相联映射(命中率高)
- 地址变换:虚拟地址->物理地址。页表,TLB,硬件实现(快)
- 替换算法:FIFO、LRU、LFU
一致性问题:回写法(写回、写分配、更新磁盘同时更新主存)
页式虚拟存储:
虚存/逻辑地址:【逻辑页号 + 页内行地址】
内存/物理地址:【物理页号 + 页内行地址】
页表描述了虚拟页和物理页框之间的映射关系,页起点总落在低位字段为0的地址为2的幂
逻辑页:虚拟空间分成页。物理页:主存空间分成同样大小的页
段式虚拟存储:
虚存地址:【段号 + 段内地址】
实存地址:【主存地址】
段页式虚拟存储:
虚存地址:【基号 + 段号 + 页号 + 页内地址】
虚拟存储器中的页面替换策略和cache中的行替换策略的显著不同点:
- 缺页至少要涉及前一次磁盘存取,读取所缺的页,缺页使系统蒙受的损失要比cache未命中大
- 页面替换是由操作系统软件实现的(磁盘慢)
- 页面替换的选择余地很大,属于一个进程的页面都可替换
替换算法:
① LRU近期最少使用算法
② LFU(最不经常使用)算法
③ FIFO先进先出算法
④ LFU+FIFO两种算法结合
第八章 互连与输入输出组织
1 外部设备的分类和特点
控制逻辑:根据控制信息控制设备操作,并检测设备状态
缓冲器:保存交换的数据信息
变换器:在电信号形式(内部数据)和其他形式的设备数据之间进行转换
外设通过电缆和计算机内部I/O接口进行数据、状态和控制信息的传送。
设备信号线:控制信号、状态信号、数据信号
3.1 磁表面存储原理
外存储器(磁表面存储设备):金属铝或塑料表面,包含磁盘存储器和磁带存储器
磁头:磁-电和电-磁转换,用于读写信息
写1:线圈正向电流,N-S。写0:线圈反向电流,S-N
读:磁头固定不动,载体运动
盘片:存储体,单面或双面记录
盘组:多个盘片组成,双面记录
磁盘阵列RAID:多个盘组组成
磁道:表面的各个同心圆组成,最外面编号为0,各记录面上相同序号的磁道构成一个圆柱面
扇区/段:磁道被划分为若干扇区,每个扇区存储容量为512B或4096B,有编号,【标志区+数据区】
寻址方式:
间隔区:磁道开始和结束,由索引脉冲控制
磁盘格式化:在盘面上划分磁道和扇区,并在扇区中填写ID域信息的过程
性能指标:
记录密度:道密度Dt,位密度Db
早期磁盘:扇区数相同,位密度内道>外道
现代磁盘:位密度相同,扇区数外道>内道
存储容量:盘面 * 磁道 * 位密度
平均寻址时间:寻道时间 + 等待时间(找到扇区)
数据传输率:位密度 * 旋转速度,与位密度相关
误码率:出错信息总数 / 信息总数
3.2 硬磁盘存储器
磁盘控制器连接在I/O总线上,I/O总线与其他总线(系统总线、存储器总线)之间用桥接器连接
直接存储器存取DMA
3.3 冗余磁盘阵列RAID
多个磁盘——大容量,并行处理请求——提高性能
镜像:数据复制到多个磁盘,提高可靠性,可并发从多个副本读取数据来提高读性能
数据条带/分片:数据分片存在多个磁盘组成1个完整数据副本,可实现数据并行读写
数据校验:奇偶校验XOR算法
从实现角度分类:软RAID、硬RAID、软硬混合RAID
3.4 U盘和固态硬盘
固态硬盘/电子硬盘:使用与非门存储器闪存组成的外部存储系统,以区块写入和抹除的方式进行读写(写比读慢,擦写次数有限),传输速率高于常规硬盘,通过标准磁盘接口与I/O总线互连
4.1 总线概述
总线:计算机内数据传输的公共路径,用于实现2个或2个以上部件之间的信息交换
按位置分类:片内总线、内部总线、外部/通信总线
按用途分类:存储总线、系统总线、I/O总线
总线的组成:数据总线、地址总线、控制总线
数据/地址复用:部分总线没有单独的地址线,地址信息通过数据线传送
典型的控制信号:时钟、复位、总线请求、总线允许、中断请求、中断回答、存储器读、存储器写、I/O读、I/O写,传输确认
总线裁决、定时方式、传输方式、总线宽度、工作频率(每秒传送数据次数)、总线带宽B(最大数据传输率)
总线传送方式:非突发传送(一个地址对应一次数据传送)、突发传送(成块数据传送,后续数据地址默认为前面地址自增)
总线负载能力:总线上所能挂接的遵循总线电气规范的总线设备的数目,或总线上扩展槽的个数
总线寻址能力:地址线位数确定,可寻址地址空间的大小
4.2 基于总线的互连
处理器总线、存储器总线、QPI总线(双方同时传输数据,每个时钟周期传两次)
I/O接口:I/O控制器和插座,连接外设和主存
按数据传输方式分类:串行、并行
按是否能连接多个设备分类:总线式、独占式
按是否符合标准分类:标准接口、专用接口
按功能选择的灵活性分类:可编程接口、不可编程接口
I/O接口的功能:
- 数据缓冲
- 错误或状态检测
- 控制和定时
- 数据格式转换
- 与主机和设备通信
I/O端口编址:对要访问的寄存器进行编址,编址后CPU才能访问
I/O设备寻址方式:
- 统一编址方式(内存映射):与主存空间统一编址
- 独立编址方式(特殊I/O指令):单独编号
统一编址方式:
接口寄存器当作特殊主存单元,I/O端口地址占主存部分地址空间
编址原则:低端地址——主存单元,高端地址——I/O端口
用普通访存指令(隐式I/O指令)实现I/O操作
独立编址方式:
可与主存地址重叠,为接口寄存器分配独立端口地址
用专用I/O指令(显式I/O指令)实现I/O操作
I/O数据传送控制方式
程序直接控制I/O方式:数据在CPU和外设间的传送靠计算机程序控制,由CPU主动通过I/O指令查询特定设备的当前状态
类型:无条件传送方式(周期性定时访问,直接对端口进行读取)、条件传送方式(异步,通过查询接口状态控制数据传送)
程序查询方式:
外设状态:接口中设置状态字来表示,空闲/工作/结束
特点:硬件开销小,实时处理能力差,并行程度低,适用于I/O效率要求不高且数据量少的情况
CPU浪费时间等待外设的解决方法:
- 主动,提高外设的工作速度
- 被动,引入中断,何时需要何时服务
程序中断I/O方式
中断:在程序运行过程中,如果发生某种随机事态,CPU暂停当前程序(被中断),转而执行该事态对应的服务程序,结束后再恢复原程序的执行。
中断特征:程序切换+随机性
公操作:一条指令执行结束后CPU所进行的操作(中断处理、DMA、去下一条指令等)
中断源:引起中断原因或可发出中断请求的来源(一般输入输出设备、数据通道中断源、实时时钟、故障、为调试程序而设置的中断源)
断点:程序被中断处的PC值
中断响应:接收中断请求并传递——中断源识别判优——CPU响应中断请求
DMA方式:
基本思想:在高速外设和主存间直接传送数据,由DMA接口控制总线进行传输
采用请求-响应方式,DMA控制器的总线使用优先级比CPU高
数据传输方式:CPU停止法、周期挪用法、交替分时访问法