理论课学习——刘旭东老师·
第一讲:概述·
一.计算机组成与结构简介·
1.1 计算机的基本组成·
- 硬件(Hardware)计算机的物理部分,可以实现计算机最基本的操作行为。
- 软件(Software)使计算机实现各种功能的程序集合。包括系统软件、应用软件两大类。
计算机的功能·
- Data Processing (数据处理)
- Data Storage (数据存储)
- Data Movement (数据移动,交换)
- Control (控制)
- 计算机的功能结构图
运算器:实现数据处理的部件·
- 完成最基本的算术逻辑运算
- ALU (Arithmetic and Logic Unit) + Registers
- 运算器与机器字长(字的概念)的关系(电脑操作系统的位数)
- 运算器与机器性能指标:MIPS:Millions of Instructuions Per Second
- 简单运算器结构图
存储器:实现数据存储的部件·
- 保存程序和数据(二进制信息)
- 存储单元:bit, Byte, Word
1Byte(字节 B)=8bit(位 b)
1word(字)=本电脑操作系统的位数
$1KB=2{10}B=2{10+3}bit$
-
地址的概念:每一个字节单元拥有一个唯一的地址(索引)
-
存储器的工作方式:读、写
-
存储器结构简图
控制器:实现控制功能的部件·
- 供各部件工作所需的控制信号,控制计算机其他部件协同工作
- 指令部件(Instruction Register ,Instruction Decoder)
- 指令顺序控制(Program Counter)
- 时序逻辑部件(Clock,Timer ,Sequencing Logic)
- 控制信号生成部件(Control Signal Generator or Control Memory)
- Datapath +Control =CPU(Central Process Unit)or Processor
- 控制器结构简图
输入输出:实现数据交换的部件·
- 实现计算机内部与外界(其他系统或人类)的信息交换
- 实现数据交换的设备:输入设备、输出设备
- 接口标准与接口部件
- 计算机结构简图
冯·诺依曼体系——IAS——该机结构被公认为随后发展起来的通用计算机的原型·
普通PC(Pentium)的内部结构(多总线结构)·
1.2 计算机系统层次结构·
计算机的层次结构的演变·
ISA·
指令集体系架构,一种规约(Specification),规定了软件如何使用硬件,是对硬件结构和功能的最底层抽象,解决了最基本的软件兼容性问题。每一种广泛采用的指令集背后都有一个强大的生态系统,比如X86指令集架构和ARM指令集架构。
二.计算机中数的表示的基本问题·
无符号数和有符号数·
无符号数·
- 数的编码中所有位均为数值位,没有符号位
- 只能表示 >=0 的正整数
- N位无符号数的表示范围: $0-2^{n-1}$
- 一般在全部是正数运算且不出现负值结果的场合下,可使用无符号数表示,例如地址运算。
有符号数·
机器数表示·
-
数的正负问题:设符号位,“0”表示“正”,“1”表示“负”,固定为编码的最高位
-
真值0怎么办:正零,负零
-
小数点怎么办:隐含,小数点位置固定 (即定点数)
-
定点小数:小数点在最高位数值位前,绝对值小于1
-
定点整数:小数点在最低位数值位后,没有小数部分
-
-
带有整数和小数部分的数怎么办:浮点数,按2为基的科学表示方法表示
定点数、浮点数表示·
定点数表示·
机器数表示及其表示范围·
原码·
- 容易理解
- “0”的表示不唯一,不利于程序员编程
- 机器实现加、减运算的方法不统一,需对符号位进行单独处理,不利于硬件设计
反码——较少使用·
补码·
- “0”的表示唯一
- 机器实现加、减运算的方法统一(模运算)
- 符号位参加运算,不需要单独处理
模运算·
- 模:指一个计数系统所能表示的数据个数。有模运算是指运算结果超过模时,模(或模的整数倍)将溢出而只剩下余数。8位二进制的模为$2^8=256$
- 假设M为模,若数a,b满足a + b = M,则称a,b互为补数。
- 在有模运算中,减去一个数等于加上这个数对模的补数。
浮点数表示·
浮点数的一般表示法·
分为阶码和尾数两个部分 阶码:采用定点整数表示 尾数:采用定点小数表示
IEEE 754标准·
分为符号(Sign)、阶码(Exponent)和尾数(Mantissa)。
- 数符 S: 1位,0表示正数,1表示负数
- 阶码 E:移码表示,n 位阶码偏移量为 $2^{n-1}-1$。如8位阶码偏移量为 7FH( 即127),11位阶码偏移量3FFH(即1023)
- 尾数 M: 原码表示,尾数必须规格化成小数点左侧一定为1,并且小数点前面这个1作为隐含位被省略。这样单精度浮点数尾数实际上为24位。
- 规格化数(尾数)形式:M=1.m
浮点数精度·
IEEE 754关于浮点数表示的约定(单精度为例)·
单精度浮点数表示范围·
非数值数据的表示·
三. 计算机的基本工作过程·
指令的含义·
机器指令:计算机硬件可以执行的表示一种基本操作的二进制代码。
指令格式:操作码 + 操作数(操作数地址) 操作码:指明指令的操作性质 操作数(地址):指令操作数的位置(或操作数本身)
程序:在此特指一段机器指令序列。
完成一定的功能,采用某种算法,具备一定的流程; 计算机按照程序所规定的流程和指令顺序,一条一条地执行指令,达到完成程序所规定的功能的目的。 计算机采用**程序计算器(Program Counter)**来决定指令执行的顺序。
程序的执行·
第二讲:组合逻辑·
一. 逻辑代数基础·
1.逻辑代数的基本概念·
逻辑代数:逻辑代数L是一个封闭的代数系统,它由一个逻辑变量集K,常量0和1以及“或”、“与”、“非”三种基本运算所构成,记为 L={ K,∨,∧,¬,0 ,1 }。
“或”运算:$a\bigwedge b=ab$
“与”运算:$a\bigvee b=ab+\overline{a}b+a\overline{b}$
“异或”运算:$a\bigoplus b= \overline{a}b+a\overline{b}$
“同或”运算:$a⊙b=\overline{a}\overline{b}+ab$
逻辑运算顺序·
逻辑电路符号表示·
2.逻辑代数的公理、定理与规则·
2.1逻辑代数的基本公理·
-
交换律:𝑨 + 𝑩 = 𝑩 + 𝑨, 𝑨 ∙ 𝑩 = 𝑩 ∙ 𝑨
-
结合律: 𝑨 + 𝑩 + 𝑪 = 𝑨 + 𝑩 + 𝑪
(𝑨 ∙ 𝑩) ∙ 𝑪 = 𝑨 ∙ (𝑩 ∙ 𝑪)
- 分配律:𝐀 ∙ (𝑩 + 𝑪) = 𝑨 ∙ 𝑩 + 𝑨 ∙ 𝑪
𝑨 + 𝑩 ∙ 𝑪 = (𝑨 + 𝑩) ∙ (𝑨 + 𝑪)
- 0-1律 :
𝑨 + 𝟎 = 𝑨, 𝑨 ∙ 𝟏 = 𝑨
𝐀 + 𝟏 = 𝟏, 𝐀 ∙ 𝟎 = 𝟎
- 互补律
$A+\overline{A}=1$
$A\overline{A}=0$
2.2逻辑代数的基本定理·
另一种吸收律:$A+\overline A B=A+B$
包含律第五点推广
2.3逻辑代数的规则·
代入规则·
反演规则·
将原函数F中的全部 “•” 换成 “+”,“+” 换成 “•” ,“0” 换 成 “1”,“1” 换成 “0”,原变量换成反变量,反变量换成原变量,所得到的新函数就是原函数的反函数,记作 $\overline{F}$ 。----用途:直接求已知逻辑函数的反函数,可用于公式的化简
对偶规则·
将原函数F中的全部 “•” 换成 “+”,“+” 换成 “•”,“0”换成 “1”,“1” 换成 “0”,所得的新函数就是原函数的对偶式,记作F’或F* 。-----用途:已知某公式成立,则可以得到其对偶公式仍成立。若两个逻辑函数表达式F和G相等,则其对偶式F’和G’也相等
3.逻辑函数的表达式·
逻辑函数的常用表达式·
常用表达式包括:与或式、或与式、与或非式
逻辑函数的标准表达式·
逻辑函数的标准表达式建立在最小项和最大项概念基础上(最小项可以巧记为占用字符数少比如:$AB$)
最小项表达式:全部由最小项构成的与或式(积之和式)
最大项表达式:全部由最大项构成的或与式(和之积式)
最小项·
编号·
最大项·
编号·
4.逻辑函数化简(卡诺图)·
设计优化·
- 面积优化——使设计的电路或系统占用的逻辑资源尽量少
- 时间优化——使设计的电路或系统的输入信号到达输出的路程尽量短
逻辑函数化简—代数法·
卡诺图化简基本规则·
- 2个相邻项合并为一项,消去1个取值不同的变量
- 4个相邻项合并为一项,消去2个取值不同的变量
- 8个相邻项合并为一项,消去3个取值不同的变量
二. 逻辑门电路·
1.晶体管和MOS管·
二极管·
PN结单向导通
三极管(NPN常用)·
NPN型:集电极加>0.7V的电压,发射结和集电极就导通,否则就截止
PNP型:与上面相反
MOS管(NMOS常用)·
NMOS·
类似NPN型三极管
PMOS·
类似PNP型三极管
CMOS——NMOS和PMOS的集合·
晶体管与MOS管开关特性·
2.逻辑门电路实现·
1.门电路·
与门——二极管实现·
或门——二极管实现·
非门——三极管实现/CMOS实现·
或非门电路——CMOS实现·
与非门电路——CMOS实现·
2.各种集成门电路性能比较·
CMOS和TTL是两个常用集成电路。
- CMOS功耗相对低、抗干扰能力相对强、带载能力相对强。
- TTL功耗相对高,速度相对快、抗干扰能力相对弱。
- 与TTL门电路相比,传统的CMOS门电路特点是集成度高、功耗低,但工作速度较慢、抗静电能力差。不过目前新型的CMOS门电路工作速度已经有了很大提高、抗静电能力也大为改善,基本能够与TTL门电路相媲了。
- CMOS门电路获得了更为广泛的应用,尤其在大规模集成电路和微处理器中已占据了重要地位。
三. 基本组合逻辑部件设计·
组合逻辑设计概述·
数字电路分类:组合逻辑电路和时序逻辑电路
组合逻辑电路的设计方法·
运算单元电路·
1.加法运算电路·
半加器(不考虑来自低位的进位) 全加器(考虑来自低位的进位)
2.全加器·
3.Verilog模块结构·
4.全加器的Verilog HDL·
方法一:根据逻辑表达式,用assign语句建模(算法级描述)·
1 | //1位全加器Verilog HDL源程序 |
方法二:根据逻辑功能定义直接描述,采用行为描述方式的系统级抽象,程序更简洁·
1 | module adder_2(A,B,CI,SO,CO); |
5.加法运算电路—多位加法器·
并行加法器—串行进位·
并行加法器—并行进位(或先行进位)·
6.8位加法器的Verilog HDL·
1 | module adder_8(a,b,cin,sum,cout); |
7.加法运算电路—减法运算·
运算原则·
溢出的判断·
采用双符号位,“00”表示正,“11”表示负,如果运算结果符号位出现“01”或“10”表示出现溢出。
8.乘法运算电路:阵列乘法器·
原理类似十进制乘法
9.4位比较器的Verilog HDL设计·
1 | module CT7485(A3, A2, A1, A0, B3, B2, B1, B0, ALBI, AEBI, |
10.ALU–1位ALU、32位ALU·
编码器/译码器·
多路选择器·
组合逻辑电路的竞争冒险·
第三讲:时序逻辑·
概述·
时序逻辑电路的特点·
- 当前输出由当前输入与电路原来状态共同决定(具有记忆功能)
- 电路的状态与时间顺序有关
- 结构特点:由组合逻辑电路和存储电路构成
触发器(Flip-Flop,FF)·
一种有记忆功能的器件,是时序逻辑电路的基本器件。记忆电路特征:状态可预置(置0,置1),状态可保持
双稳态触发器(两个稳定的状态)·
一. 锁存器和触发器·
1.SR/D锁存器·
1.1基本RS锁存器·
具有两个稳定状态,可自行保持输出状态,是各种触发器的基本构成。双稳态
原理
真值表·
特性方程:锁存器次态与原态及输入之间的逻辑函数表达式·
Verilog HDL描述 SR锁存器·
1 | module RS_FF(Q,QN,SDN,RDN); |
1.2钟控RS锁存器·
钟控锁存器·
- 数字系统中,为协调各部分电路同步运行,常要求某些锁存器在时钟信号的控制下同时动作,需要增加一个控制端(时钟信号),只有在控制端作用脉冲到达时锁存器才能动作,这种有时钟控制端的锁存器叫做钟控锁存器。
- 由于这里时钟信号为高电位(或低电位)时锁存器的状态随输入变化,所以钟控锁存器是电位触发方式的锁存器。钟控锁存器在时钟控制下同步工作,所以也称为同步锁存器。
原理·
1.3 钟控D锁存器·
将钟控RS锁存器输入由R、S双端输入改为单端输入(D),即将其S端改为D输入端,D经过非门接R端(S、R总是互反)!
1 | module D_FF_1(CP,D,Q,QN); |
2.D触发器·
D触发器:两个反相的D锁存器构成。
D锁存器与D触发器的区别·
- D锁存器是电位(电平)触发的,只有在时钟CP有效电平(高电平CP=1或者低电平CP=0)期间,触发器的状态才有可能发生变化。
- D触发器的状态变化只发生在时钟CP的有效沿(上升沿或者下降沿)期间,CP=1、CP=0时触发器的状态不会发生变化。
带使能端的D触发器·
增加输入使能信号EN(ENable),用于确定在时钟沿是否能够载入数据。
- EN=1时,D触发器正常工作
- EN=0时, D触发器状态不变
- 在时钟信号上一般不要设置逻辑,否则可能因延迟导致时序错误
带复位功能的D触发器·
增加输入复位信号RESET。 RESET 有效时(=1),D触发器复位(Q=0) RESET 无效时(=0), D触发器正常工作
-
复位方式
-
同步复位:复位信号有效和时钟有效沿同时有效才能复位(置0)
-
异步复位:只要复位信号有效就能复位
-
-
有的触发器还带有置位(SET)功能(Q=1)
由D触发器构成寄存器·
3.钟控JK触发器·
原理·
verilog code·
1 | module JK_FF(CP,J, K,Q,QN); |
钟控JK触发器比D锁存器新增的功能:·
当JK=11时,输出的波形翻转(可用于计数); 当JK=00时,触发器保持原来的状态。
钟控JK触发器的空翻现象分析(初态Q=0,J=1,K=1)·
4 负边沿触发的JK触发器·
电路结构·
工作原理·
小结·
- 基本RS锁存器:具有保持、置0、置1功能,其输入信号可以直接控制锁存器的输出;
- 钟控RS锁存器:时钟信号CP有效时锁存器的状态随输入变化(约束条件R、S不能同时为1);
- 钟控D锁存器:为消除钟控RS触发器的不定状态,将钟控RS锁存器双端输入改为单端输入(D),即D锁存器;
- D触发器:两个反向钟控D锁存器构成D触发器。时钟信号CP的边沿(上升沿或下降沿)触发。
- D锁存器是电平敏感的,D触发器是边沿触发的;
- 寄存器有共享时钟信号CLK的多个D触发器构成。
触发器应用举例·
二. 有限状态机·
时序电路特点·
将异步时序电路转换为同步时序电路,避免竞争和冒险
时序电路实例分析·
有限状态机基本介绍·
1.Moore型有限状态机·
设计方法和流程图·
Moore型FSM的表示方法·
【例】交通信号灯控制器·
南北Academic大道,信号灯LA;东西Bravado大道,信号灯LB。信号灯红、绿、黄三色。
2.Mealy型有限状态机·
设计方法和流程图·
Mealy型FSM的表示方法·
【例】二进制序列检测器·
检测器接收到二进制序列“1101”时,输出检测标志为1,否则输出检测标志为0。不重复检测,即收到1101输出1后,下一次从下一个输入信号开始检测。
1 | module monitor2_good(clk,clr,data,zo,state); |
有限状态机的状态编码问题·
起始状态的选择·
起始状态指电路复位后所处的初态,选择合适的起始状态将使设计简捷高效。FSM必须有时钟信号和复位信号。
状态编码方式的选择(假定FSM有N个状态)·
二进制编码:采用log2N个触发器来表示这N个状态,按二进制顺序编码,节省逻辑资源,但可能产生输出毛刺。
格雷编码:采用log2N个触发器来表示这N个状态,但相邻状态只有一个比特位不同。节省逻辑资源,降低了输出毛刺的可能,状态转换中,相邻状态只有一个比特位产生变化。
一位热码状态机编码(One-Hot State Machine Encoding):采用N个触发器来表示这N个状态。逻辑资源消耗最大,但可以避免状态机产生错误的输出,并且有时可简化输出逻辑。
8个状态三种编码方式的对比·
有限状态机设计小结·
- 确定输入、输出,以及状态总数
- 画出状态转换图
- 对于Moore型FSM ① 写出状态转换表 ② 写出输出真值表
- 对于Mealy型FSM ① 写出组合的状态转换表和输出真值表
- 选择状态编码——这个选择将影响硬件设计
- 写出次态逻辑和输出逻辑的逻辑表达式
- 画出电路图
- 进行Verilog HDL设计并仿真测试
三. 时序逻辑电路设计分析·
时序电路的分类·
同步时序电路的分析方法·
- 写出各触发器的激励方程(excitation equation) (也称驱动方程)
- 把得到的激励方程代入到触发器的特性方程(characteristic equation) ,得到次态方程(next-state equation)
- 按照电路图得到输出方程(output equation)
- 根据次态方程和输出方程得到状态表
- 得到时序电路的状态图
- 画出时序图
- 确定电路行为
寄存器的分类·
1.数据寄存器·
数据寄存器·
由多位边沿触发器组成的用于保存一组二进制代码的寄存单元。当时钟信号的上升沿或下降沿到来时,将输入端数据打入寄存器,即此时输出信号等于输入信号;在时钟信号的其它时刻,输出端保持刚才输入的数据,即为寄存状态,而不管此时输入信号是否变化。
4位D型寄存器结构 $D_0D_1D_2D_3$:并行数据输入 $Q_0Q_1Q_2Q_3$:并行数据输出工作原理: (1)清除(复位)当$\overline {R_D}$ = 0 , $Q_0Q_1Q_2Q_3$=0000; (2)置数(复位端无效时)当CP上跳沿到达时,$Q_0Q_1Q_2Q_3$= $D_0D_1D_2D_3$
用always块语句描述的8位数据寄存器·
1 | module reg_8bit(qout,data,clk,clr); |
数据锁存器·
- 由多位电位锁存器组成的用于保存一组二进制代码的寄存单元。
- 功能:当输入控制信号(如时钟)为高电平时,门是打开的,输出信号等于输入信号;当输入控制信号为低电平时,门是关闭的,输出端保持刚才输入的数据,即为锁存状态,而不管此时输入信号是否变化。
- 通常由电平信号来控制,属于电平敏感型,适于数据有效滞后于控制信号有效的场合。
数据寄存器和数据锁存器的区别·
- 数据寄存器:由边沿触发的触发器组成。通常由同步时钟信号来控制,属于脉冲敏感型,适于数据有效提前于控制信号(一般为时钟信号)有效、并要求同步操作的场合。
- 数据锁存器:由电位触发器(即D锁存器)组成。一般由电平信号来控制,属于电平敏感型,适于数据有效滞后于控制信号有效的场合。
数据锁存器的Verilog HDL设计·
1 | //普通的的1位数据锁存器的Verilog HDL |
2.移位寄存器·
具有移位功能的寄存器称为移位寄存器,每来一个时钟脉冲,寄存器中数据就依次向左或向右移一位。
计算机中经常需要用到移位操作,如乘法运算中的右移,除法运算中的左移,数据输入输出方式中的串行并行转换等。
移位寄存器分类·
左移移位寄存器、右移移位寄存器、双向移位寄存器、循环移位寄存器
4位右移移位寄存器·
4位右移移位寄存器的工作方式·
串入并出·
串并转换(需要N个CP周期),经过4个CP,串行输入的4位数据全部移入移位寄存器中,并从Q3Q2Q1Q0并行输出1011
串入串出·
把最右边的触发器的输出作为电路的输出。经过4个CP后, Q3 输出的是最先串行输入的数据。从每个触发器Q端输出的波形相同,但后级触发器Q端输出波形比前级触发器Q端输出波形滞后一个时钟周期。 把工作于串入串出方式的移位寄存器称为“延迟线” (第N级FF延迟N个CP周期)
4位串行输入、串/并行输出双向移位寄存器·
3.计数器·
定义,用途,分类·
例题1:同步十进制加法计数器·
同步计数器的特点·
- 所有触发器的时钟端并联在一起,作为计数器的时钟端
- 各触发器同时翻转,不存在时钟到各触发器输出的传输延迟的积累
- 由于其工作频率只与一个触发器的时钟到输出的传输延迟有关,所以它的工作频率比异步计数器高。
- 由于计数器各触发器几乎是同时翻转的,因此,各触发器输出波形的偏移为各触发器时钟到输出的延迟之差,同步计数器输出经译码后所产生的尖峰信号宽度比较小。
- 缺点:结构比较复杂(各触发器的输入由多个Q输出相与得到),所用元件较多。
例题2:同步十六进制数加法计数器·
异步计数器·
异步计数器也有二进制、十进制、任意进制等类型
异步计数器的特点·
- 输入系统时钟脉冲只作用于最低位触发器,高位触发器的时钟信号往往是由低一位触发器的输出提供的,高位触发器的翻转有待低一位触发器翻转后才能进行。
- 由于每一级触发器都存在传输延迟,因此计数器工作速度慢,而且,位数越多计数越慢。在大型数字设备中较少采用。
- 对计数器状态进行译码时,由于触发器不同步,译码器输出会出现尖峰脉冲(位数越多,尖峰信号也就越宽),使仪器设备产生误动作。
- 优点:结构比较简单,所用元件较少。
例题3:分析下图异步二进制(M=16)加法计数器电路(N=4)·
异步计数器——其他类型计数器·
1. 分析异步二进制(模16)减法计数器·
2.D触发器(上跳沿触发)构成的异步二进制(模8)加法计数器·
异步计数器小结·
4.时序电路的时序·
寄存器的时序·
同步时序电路时钟周期·
保持时间约束·
第四讲:主存储器·
一. 存储系统概述·
1.1存储器分类·
按介质分类:·
- 半导体存储器
- 磁介质存储器
- 光盘存储器
按访问方式分类:·
- 随机访问存储器 (Random Access Memory—RAM)
- 只读存储器 (Read Only Memory—ROM)
- 顺序访问存储器 (Tape)
- 直接访问存储器 (Disk)
按功能分类:·
- 高速缓冲存储器
- 主存储器
- 辅助存储器
- 控制存储器
存储器的层次结构·
二级存储系统指:高速缓冲存储器(Cache)+主存储器
1.2半导体存储器·
静态随机访问存储器SRAM(Static RAM)·
- SRAM:静态存储器,相对动态而言,集成度低,但不必刷新。
动态随机访问存储器DRAM(Dynamic RAM)·
- DRAM:动态存储器,需要刷新,相对而言,集成度高。
二. 存储单元电路·
存储单元的符号表示·
三. 存储器芯片结构·
存储芯片结构(一维地址结构)·
- 1024×2 :1024 个字单元,每个字单元 2 个二进制位 需要1024个不同的标示。
- 地址编码:译码电路使得字选择线 Wi 处于工作状态的输入信号(二进制信号),称为Wi 所选中字单元的地址编码(简称地址)。
- 对于每一个字单元,地址是唯一的。
- 计组课中,地址往往都和译码器相连。
二维地址结构(SRAM)·
- 一维地址需要的分支太多,不方便光刻
- 芯片示例:4096 × 4(4096 个字,每个字 4 位) 4096×4 = $2^{14}$ 个位单元
- 存储矩阵: $27×27$ (128行×128列)
- 行、列译码:行地址 7位,一行含32个字共128位,任一时刻只有1个字(4位数据线)被选中。一行包括32个字,要进行32选1的译码(Y译码),列地址5位
DRAM芯片结构·
要求体积较小,采用行列译码器复用,时空转换
存储芯片结构示例·
四. 存储器扩展·
4.1 存储器芯片的扩展(位扩展)·
4.2 存储器芯片的扩展(字扩展)·
4.3 存储器芯片的扩展(混合扩展)·
CPU与主存的连接(示例)·
存储器的符号表示·
五. DRAM的刷新·
5.1 DRAM存储单元电路的刷新·
5.2 DRAM存储芯片的刷新·
简单来讲,就是让0变纯0,1变纯1
5.3 DRAM的刷新方式·
集中刷新方式·
集中刷新间隔 = 刷新周期
分散刷新方式·
异步刷新方式(一般使用)·
- 结合前两种方式,保证在一个刷新周期内将存储芯片内的所有行刷新一遍,且只刷新一遍。
- 异步刷新间隔 = 刷新周期
- 以128行为例,在2ms时间内必须轮流对每一行刷新一次,即每隔2ms/128=15.5μs刷新一行。这时假定读/写与刷新操作时间都为0.5μs,则可用前15μs进行正常读/写操作,最后0.5μs完成刷新操作。
非易失性内存·
- 铁电存储器:FRAM
- 电阻式存储器:ReRAM
- 磁阻存储器:MRAM,SRAM的告诉读写性能,DRAM的集成度,ROM的非易失性特征,功耗低
第五讲:指令系统与MIPS汇编语言·
一、指令格式·
1.1指令系统概述·
执行指令是CPU的主要工作·
不同的CPU有不同的指令集·
指令集架构Instruction Set Architecture (ISA):Intel 80x86 (Pentium 4), IBM/Motorola PowerPC (Macintosh), MIPS, Intel IA64, …
(ARM架构从英国卖到了美国,之后国内的芯片生态问题需要注意)
指令系统的基本问题·
操作类型:应该提供哪些(多少)操作?·
用LD/ST/INC/BRN已经足够编写任何计算程序,但不实用,程序太长。
操作对象:如何表示?可以表示多少?·
大多数是双值运算(如A<-B+C) 存在单值运算(如A<- ~B)
指令格式:如何将这些内容编码成一致的格式?·
指令长度、字段、编码等问题
1.2指令格式·
1.3寻址方式·
二、MIPS指令与汇编语言·
2.1MIPS指令系统·
MIPS R2000/R3000 寄存器结构·
2.2MIPS汇编语言·
2.3MIPS汇编编程·
三、8086/8088指令系统·
四、RISC与CISC·
第六讲:MIPS处理器设计·
一.处理器设计概述·
CPU的功能与组成·
二.MIPS模型机·
三.MIPS单周期处理器设计·
四.MIPS多周期处理器设计简介·
五.MIPS流水线处理器设计·
第七讲:高速缓冲存储器·
一.Cache的原理·
Cache产生的动因·
- 单级存储系统中,主存的存储速度与CPU的速度不匹配,造成CPU资源的浪费;
- 程序运行时访问内存存在明显的局部性特征;
- 存在比主存普遍采用的DRAM速度更快的存储单元电路(SRAM);
Cache的工作原理·
-
在CPU和主存间设置一个小容量访问速度更快的高速缓存,其中总是保存当前最活跃(被频繁访问)的程序和数据,大多数情况下,CPU能直接从这个高速缓存中取得指令和数据,而不必访问主存。这个高速缓存就是Cache。(Cache对用户完全透明)
-
Cache与主存之间按照数据块(Block)为单位进行数据交换(块大小一般为16/32/64/128 B)。
Cache要解决的问题·
① 快速访问:具备快速访问的能力(采用SRAM);
② 数据交换:与主存交换数据的能力,将主存最活跃单元所在数据(或指令)块复制到Cache中;
③ 地址判断:由于CPU总是以主存地址访问存储器,所以Cache应具备有判断CPU当前要访问的内容是否在Cache中的能力,并具有根据主存地址在Cache中访问相应单元的能力;
④ 替换决策:具备在Cache容量不够时替换Cache中某些内容的决策能力。
Cache的基本结构·
- 存储机构:保存数据,存取数据,一般采用SRAM构成。以Block(若干字)为单位;
- 地址机构:地址比较机制,地址映射机制,地址标记(Tag),一个Block具有一个Tag;
- 替换机构:记录Block的使用情况,有效位(v)记录对应数据块中的数据是否有效;替换策略。
Cache的有关术语·
- 数据块(block):Cache与主存的基本划分单位,也是主存与Cache一次交换数据的最小单位,由多个字节(字)组成,取决与主存一次读写操作所能完成的数据字节数。也表明主存于Cache之间局部总线的宽度。
- 标记(tag):Cache每一数据块有一个标记字段,用来保存该数据块对应的主存数据块的地址信息。
- 有效位(valid bit):Cache中每一Block有一个有效位,用于指示相应数据块中是否包含有效数据。
- 行(line ):Cache中 一个block及其 tag、valid bit构成1行。
- 组(set):若干块(Block)构成一个组,地址比较一般能在组内各块间同时进行。
- 路(way):Cache相关联的等级,每一路具有独立的地址比较机构,各路地址比较能同时进行(一般与组结合),路数即指一组内的块数。
- 命中率(hit rate):目标数据在Cache中的存储访问的比例。
- 缺失率(miss rate):目标数据不在Cache中的存储访问的比例。
Cache结构示意·
- 分S组
- 每组E行(相当于Block)
- 每数据块包含B个字节
Cache的读操作过程·
二.Cache的映射机制·
- 主存按Cache块大小分成若干块(主存块)
- Cache中存放主存块数据的对应单位也称为块(Cache块)或行(line)
- 主存块和Cache块的映射方式:
- 全相联(Full Associate):每个主存块都可以映射到任一Cache块
- 组相联(Set Associate):每个主存块只能映射到Cache中某一固定组中的任一Cache块
- 直接映射(Direct):每个主存块只能映射到某一固定的Cache块
1.全相联映射·
- Cache包含 M 块,主存也按Cache块大小分块,共 N 块,显然 N>>M。
- 主存中的某一主存块可以映射到Cache中的任一Cache块。
- 主存块到Cache块的映射是 1:M映射。
全相联Cache组织·
全相联映射的地址·
2.组相联映射·
- Cache包含M块,分 K 组,每组包含 L 块,M=K*L;
- 主存块 J 按 I = J mod K 的规则映射到 Cache 组 I 中的任意块;
- 主存可以视为逻辑上也分成 K 组,主存组M内的一个主存块只能映射到Cache组M内,但可以是组M内任意Cache块。
3.直接映射·
- 主存按Cache块大小也分成若干块,Cache包含M块
- 主存块 J 按 I = J mod M 的规则映射到 Cache块I 。
- 主存可以视为按Cache容量大小分成了若干区,一个区内的主存块分别与对应的Cache块构成映射。
Cache包含M块,主存块 J 的映射·
三.Cache的替换策略·
CPU访问Cache缺失时,CPU必须等待数据装入Cache后才能访问Cache,这期间的时间损失称为缺失损失。
取出块的时间:第一个字的延迟时间(存储器访问)+ 块的剩余部分的传送时间。
Cache的存储组织对缺失损失具有很大的影响。
缺失损失示例·
Cache块的替换·
替换块的选择·
- 直接映射Cache:访问缺失时,被请求数据所在的块只能进入Cache的一个位置,占用该位置的数据块必须被替换掉;
- 组相联Cache:访问缺失时,被请求数据所在块可以进入Cache某一组的任何位置,因此应在Cache对应组内选择一个数据块进行替换;
- 全相联Cache:访问缺失时,被请求数据所在块可以进入Cache的任何位置,因此应在Cache中选择一个数据块进行替换。
Cache的替换策略·
- 最近最少使用法(LRU,Least-Recently Used):记录每一个数据块的相对使用情况,最近没有被使用的块被替换。
- 先进先出法(FIFO,First-In-First-Out):最先装入数据的块被替换;
- 最小使用频率法 (LFU,Least-Frequently Used):记录每一个数据块的使用频率,使用次数最少的被替换。
- 随机法(RAND,Random):随机选择一个数据块进行替换。
替换算法的实现·
- LRU的实现(计数器法)
- 缓存的每一块都设置一个计数器;
- 被调入或者被替换的块, 其计数器清 0,而其它的计数器则加 1;
- 访问命中时,所有块的计数值与命中块的计数值进行比较,如果计数值小于命中块的计数值, 则该块的计数值加 1;如果块的计数值大于命中块的计数值,则数值不变。最后将命中块的计数器清为0。
- 需要替换时,则选择计数值最大的块被替换。
- FIFO的实现(计数器法)
- 例如Solar-16/65机Cache采用组相联方式,每组4块,每块都设定一个两位的计数器,当某块被装入或被替换时该块的计数器清为0,而同组的其它各块的计数器均加1,当需要替换时就选择计数值最大的块被替换掉。
四.Cache性能分析·
Cache的容量·
- 不作特殊申明时,Cache的容量指Cache数据块的容量;
- Cache实际总的存储容量实际上还包含tag和valid bit的位数。
Cache的性能计算·
假设:CPU访问Cache失效时,直接访问主存直接获得数据,读取主存块并保存到Cache中的时间忽略不计。
命中率对存储器性能的影响·
命中率与平均访问时间关系密切!假设:CPU访问Cache失效时,先读取主存块并保存到Cache中,再从Cache读取所需数据。
Cache与主存的数据一致性·
Cache命中率问题·
命中率与Cache大小和Way的关系
- Cache越大,命中率越高
- Way的数量与命中率成正比
块的大小与命中率:比较复杂。
- 一般而言,增加块大小将降低缺失率(因为空间局部性),但块大小达到一定程度时,缺失率会随块大小的继续增加而上升(因为块数量下降带来块替换的增加);
- 单纯增加块大小带来缺失代价(缺失损失)的增大。
第八讲:外部存储与虚拟存储·
一.外部存储设备·
1.磁表面存储器·
磁表面存储原理·
磁表面存储器·
记录原理·
硬磁盘基本结构·
磁盘存储结构(恒定角速度,CAV)·
扇区的地址表示·
磁盘存储结构(多重区域纪录,multiple zone recording)·
扇区数据格式示例(Segate ST506 磁盘扇区格式)·
磁盘的性能参数·
2.光盘存储器·
CD-ROM的数据格式·
CD-R(Recordables)·
DVD(Digital Video Disk)·
二.虚拟存储系统·
程序员的程序空间·
1.概述·
2.页式虚拟存储系统·
基本概念·
基本思想·
- 内存按照固定的大小分页(存储页,实页),每个进程也按相同大小分页(程序页,虚页);
- 内存按页顺序编号(实页号),每个独立编址的程序(进程)空间有自己的页号顺序(虚页号);
- 操作系统将辅助存储器中进程的虚页装入到内存中的实页中;
- 进程运行无需占用连续的实页,也无需把所有的虚页都装入内存;
- 操作系统为每一个进程维护一个页表(page table),通过页表实现逻辑地址到物理地址的转换。地址转换由CPU中的MMU实现。
逻辑地址:程序中指令所使用的地址,也称虚拟地址或虚地址
物理地址:内存中存放指令或数据的实际地址,也称实际地址或实地址
页式调度:按页交换·
优点:页内零头小,页表对程序员来说是透明的,地址变换快,调入操作简单;
缺点:各页不是程序的独立模块,不便于实现程序和数据保护。
页表·
页表:记录虚页与实页的映射关系,实现虚实地址的转换,页表建立在内存中,操作系统为每道程序建立一个页表。页表用虚页号作为索引,页表项包括虚页对应的实页号和有效位。
页表寄存器:保存页表在内存中的首地址。
加快地址转换,采用快表TLB(Translation Lookaside Buffer,转换后备缓冲器)·
完整流程·
CPU通过TLB和Cache访问的全过程·
- TLB和Cache都采用组相联
- 以虚拟页号为依据访问TLB获取物理页号
- 以物理地址为依据访问Cache获取最终数据