计算机组成理论复习

Posted by BUAADreamer on 2022-09-19
Words 10.7k and Reading Time 39 Minutes
Viewed Times

理论课学习——刘旭东老师·

第一讲:概述·

一.计算机组成与结构简介·

1.1 计算机的基本组成·

  1. 硬件(Hardware)计算机的物理部分,可以实现计算机最基本的操作行为。
  2. 软件(Software)使计算机实现各种功能的程序集合。包括系统软件、应用软件两大类。
计算机的功能·
  • Data Processing (数据处理)
  • Data Storage (数据存储)
  • Data Movement (数据移动,交换)
  • Control (控制)
  • 计算机的功能结构图
运算器:实现数据处理的部件·
  • 完成最基本的算术逻辑运算
  • ALU (Arithmetic and Logic Unit) + Registers
  • 运算器与机器字长(字的概念)的关系(电脑操作系统的位数)
  • 运算器与机器性能指标:MIPS:Millions of Instructuions Per Second
  • 简单运算器结构图
存储器:实现数据存储的部件·
  1. 保存程序和数据(二进制信息)
  2. 存储单元:bit, Byte, Word

1Byte(字节 B)=8bit(位 b)

1word(字)=本电脑操作系统的位数

$1KB=2{10}B=2{10+3}bit$

  1. 地址的概念:每一个字节单元拥有一个唯一的地址(索引)

  2. 存储器的工作方式:读、写

  3. 存储器结构简图

控制器:实现控制功能的部件·
  • 供各部件工作所需的控制信号,控制计算机其他部件协同工作
  • 指令部件(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”的表示唯一
  • 机器实现加、减运算的方法统一(模运算)
  • 符号位参加运算,不需要单独处理
模运算·
  1. :指一个计数系统所能表示的数据个数。有模运算是指运算结果超过模时,模(或模的整数倍)将溢出而只剩下余数。8位二进制的模为$2^8=256$
  2. 假设M为模,若数a,b满足a + b = M,则称a,b互为补数
  3. 在有模运算中,减去一个数等于加上这个数对模的补数
浮点数表示·
浮点数的一般表示法·

分为阶码和尾数两个部分 阶码:采用定点整数表示 尾数:采用定点小数表示

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逻辑代数的基本公理·
  1. 交换律:𝑨 + 𝑩 = 𝑩 + 𝑨, 𝑨 ∙ 𝑩 = 𝑩 ∙ 𝑨

  2. 结合律: 𝑨 + 𝑩 + 𝑪 = 𝑨 + 𝑩 + 𝑪

(𝑨 ∙ 𝑩) ∙ 𝑪 = 𝑨 ∙ (𝑩 ∙ 𝑪)

  1. 分配律:𝐀 ∙ (𝑩 + 𝑪) = 𝑨 ∙ 𝑩 + 𝑨 ∙ 𝑪

𝑨 + 𝑩 ∙ 𝑪 = (𝑨 + 𝑩) ∙ (𝑨 + 𝑪)

  1. 0-1律 :

𝑨 + 𝟎 = 𝑨, 𝑨 ∙ 𝟏 = 𝑨

𝐀 + 𝟏 = 𝟏, 𝐀 ∙ 𝟎 = 𝟎

  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.各种集成门电路性能比较·

CMOSTTL是两个常用集成电路。

  • CMOS功耗相对低、抗干扰能力相对强、带载能力相对强
  • TTL功耗相对高,速度相对快、抗干扰能力相对弱
  • 与TTL门电路相比,传统的CMOS门电路特点是集成度高、功耗低,但工作速度较慢、抗静电能力差。不过目前新型的CMOS门电路工作速度已经有了很大提高、抗静电能力也大为改善,基本能够与TTL门电路相媲了。
  • CMOS门电路获得了更为广泛的应用,尤其在大规模集成电路微处理器中已占据了重要地位。

三. 基本组合逻辑部件设计·

组合逻辑设计概述·

数字电路分类:组合逻辑电路时序逻辑电路

组合逻辑电路的设计方法·

运算单元电路·

1.加法运算电路·

半加器(不考虑来自低位的进位) 全加器(考虑来自低位的进位

2.全加器·
3.Verilog模块结构·
4.全加器的Verilog HDL·
方法一:根据逻辑表达式,用assign语句建模(算法级描述)·
1
2
3
4
5
6
7
8
9
//1位全加器Verilog HDL源程序
module adder_1(A,B,CI,SO,CO);
input A,B,CI;
output SO,CO;
assign SO = (!A&&!B&&CI)||(!A&&B&&!CI)||
(A&&!B&&!CI)||(A&&B&&CI);
assign CO = (!A&&B&&CI)||(A&&!B&&CI)||
(A&&B&&!CI)||(A&&B&&CI); //assign 语句描述组合逻辑
endmodule
方法二:根据逻辑功能定义直接描述,采用行为描述方式的系统级抽象,程序更简洁·
1
2
3
4
5
6
module adder_2(A,B,CI,SO,CO);
input A,B,CI;
output SO,CO;
assign {CO,SO} = A+B+CI;
endmodule
//这里用位拼接运算符 “{ }”将进位与算术和拼接在一起成为一个2位数
5.加法运算电路—多位加法器·
并行加法器—串行进位·
并行加法器—并行进位(或先行进位)·
6.8位加法器的Verilog HDL·
1
2
3
4
5
6
7
8
9
module adder_8(a,b,cin,sum,cout);
parameter width=8;
input [width-1:0] a,b;
input cin;
output [width-1:0] sum;
output cout;
assign {cout,sum} = a+b+cin;
endmodule
//用parameter常量width表示加法器的位数,通过修改width,可以方便地实现不同位宽的加法器。
7.加法运算电路—减法运算·
运算原则·
溢出的判断·

采用双符号位,“00”表示正,“11”表示负,如果运算结果符号位出现“01”或“10”表示出现溢出。

8.乘法运算电路:阵列乘法器·

原理类似十进制乘法

9.4位比较器的Verilog HDL设计·
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
module CT7485(A3, A2, A1, A0, B3, B2, B1, B0, ALBI, AEBI,
AGBI, ALBO, AEBO, AGBO);
input A3, A2, A1, A0, B3, B2, B1, B0, ALBI, AEBI, AGBI;
output ALBO, AEBO, AGBO;
reg ALBO, AEBO, AGBO;
wire[3:0] A_SIGNAL, B_SIGNAL;
assign A_SIGNAL = {A3,A2,A1,A0}; //拼接成4位wire型向量
assign B_SIGNAL = {B3,B2,B1,B0}; //拼接成4位wire型向量
always
begin
if (A_SIGNAL > B_SIGNAL)
begin ALBO = 0; AEBO = 0; AGBO = 1; end
else if (A_SIGNAL < B_SIGNAL)
begin ALBO = 1; AEBO = 0; AGBO = 0; end
else // if(A_SIGNAL == B_SIGNAL)可省略
begin ALBO = ALBI; AEBO = AEBI; AGBO = AGBI; end
end
endmodule
10.ALU–1位ALU、32位ALU·

编码器/译码器·

多路选择器·

组合逻辑电路的竞争冒险·

第三讲:时序逻辑·

概述·

时序逻辑电路的特点·

  • 当前输出由当前输入与电路原来状态共同决定(具有记忆功能)
  • 电路的状态与时间顺序有关
  • 结构特点:由组合逻辑电路和存储电路构成

触发器(Flip-Flop,FF)·

一种有记忆功能的器件,是时序逻辑电路的基本器件。记忆电路特征:状态可预置(置0,置1),状态可保持

双稳态触发器(两个稳定的状态)·

一. 锁存器和触发器·

1.SR/D锁存器·

1.1基本RS锁存器·

具有两个稳定状态,可自行保持输出状态,是各种触发器的基本构成。双稳态

原理

真值表·
特性方程:锁存器次态与原态及输入之间的逻辑函数表达式·
Verilog HDL描述 SR锁存器·
1
2
3
4
5
6
module RS_FF(Q,QN,SDN,RDN);
input SDN,RDN;
output Q,QN;
assign Q = !(SDN && QN);
assign QN= !(RDN && Q);
endmodule
1.2钟控RS锁存器·
钟控锁存器·
  • 数字系统中,为协调各部分电路同步运行,常要求某些锁存器在时钟信号的控制下同时动作,需要增加一个控制端(时钟信号),只有在控制端作用脉冲到达时锁存器才能动作,这种有时钟控制端的锁存器叫做钟控锁存器。
  • 由于这里时钟信号为高电位(或低电位)时锁存器的状态随输入变化,所以钟控锁存器是电位触发方式的锁存器。钟控锁存器在时钟控制下同步工作,所以也称为同步锁存器。
原理·
1.3 钟控D锁存器·

将钟控RS锁存器输入由R、S双端输入改为单端输入(D),即将其S端改为D输入端,D经过非门接R端(S、R总是互反)!

1
2
3
4
5
6
7
8
9
module D_FF_1(CP,D,Q,QN);
input CP,D;
output Q,QN;
reg Q,QN;
always begin
if (CP == 1)begin Q = D;QN = ~Q; end
else begin Q = Q;QN = QN; end
end
endmodule

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
module JK_FF(CP,J, K,Q,QN);
input CP, J, K;
output Q,QN;
reg Q,QN;
always @(CP or J or K)
begin
if (CP==0) //保持
begin Q = Q; QN = QN; end
else if (CP==1)
case ({J,K})
2’b00: begin Q = Q; QN = QN; end //保持
2’b01: begin Q = 1’b0; QN = 1’b1; end //置0
2’b10: begin Q = 1’b1; QN = 1’b0; end //置1
2’b11: begin Q = !Q; QN = !QN; end //翻转
endcase
end
endmodule
钟控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触发器构成。

触发器应用举例·

3.8.11 3.8.12 3.8.13 3.8.14

二. 有限状态机·

时序电路特点·

异步时序电路转换为同步时序电路,避免竞争和冒险

时序电路实例分析·
有限状态机基本介绍·

1.Moore型有限状态机·

设计方法和流程图·
Moore型FSM的表示方法·
【例】交通信号灯控制器·

南北Academic大道,信号灯LA;东西Bravado大道,信号灯LB。信号灯红、绿、黄三色。

3.9.9 3.9.10 3.9.11 3.9.12

2.Mealy型有限状态机·

设计方法和流程图·
Mealy型FSM的表示方法·
【例】二进制序列检测器·

检测器接收到二进制序列“1101”时,输出检测标志为1,否则输出检测标志为0。不重复检测,即收到1101输出1后,下一次从下一个输入信号开始检测。

3.9.14 3.9.15 3.9.16 3.9.17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
module monitor2_good(clk,clr,data,zo,state);
parameter S0=3’b000, S1=3’b001,
S2=3’b010, S3=3’b011, S4=3’b100;
input clk,clr,data;
output zo;
output[2:0] state;
reg [2:0] state;
reg zo;
always @(posedge clk or posedge clr)
begin
if (clr) state=S0; // 复位时回到初始状态
else begin
case (state) // 状态的转移
S0: if (data==1’b1) state=S1; else state=S0;
S1: if (data==1’b1) state=S2; else state=S0;
S2: if (data==1’b0) state=S3; else state=S2;
S3: if (data==1’b1) state=S4; else state=S0;
S4: if (data==1’b1) state=S1; else state=S0;
default: state=S0;
endcase
end
end
always @(state) // 状态机的输出 输出是内部状态和外部输入的函数
begin
case (state)
S0: zo=1'b0;
S1: zo=1'b0;
S2: zo=1'b0;
S3: if (data==1'b1) zo=1'b1;
//在S3时若输入data=1, 则zo置1:
else zo=1'b0;
S4: zo=1'b0;
default: zo=1'b0;
endcase
end
endmodule

有限状态机的状态编码问题·

起始状态的选择·

起始状态指电路复位后所处的初态,选择合适的起始状态将使设计简捷高效。FSM必须有时钟信号复位信号

状态编码方式的选择(假定FSM有N个状态)·

二进制编码:采用log2N个触发器来表示这N个状态,按二进制顺序编码,节省逻辑资源,但可能产生输出毛刺

格雷编码:采用log2N个触发器来表示这N个状态,但相邻状态只有一个比特位不同。节省逻辑资源,降低了输出毛刺的可能,状态转换中,相邻状态只有一个比特位产生变化。

一位热码状态机编码(One-Hot State Machine Encoding):采用N个触发器来表示这N个状态。逻辑资源消耗最大,但可以避免状态机产生错误的输出,并且有时可简化输出逻辑。

8个状态三种编码方式的对比·

有限状态机设计小结·

  1. 确定输入、输出,以及状态总数
  2. 画出状态转换图
  3. 对于Moore型FSM ① 写出状态转换表 ② 写出输出真值表
  4. 对于Mealy型FSM ① 写出组合的状态转换表和输出真值表
  5. 选择状态编码——这个选择将影响硬件设计
  6. 写出次态逻辑和输出逻辑的逻辑表达式
  7. 画出电路图
  8. 进行Verilog HDL设计并仿真测试

三. 时序逻辑电路设计分析·

时序电路的分类·

同步时序电路的分析方法·
  1. 写出各触发器的激励方程(excitation equation) (也称驱动方程
  2. 把得到的激励方程代入到触发器的特性方程(characteristic equation) ,得到次态方程(next-state equation)
  3. 按照电路图得到输出方程(output equation)
  4. 根据次态方程输出方程得到状态表
  5. 得到时序电路的状态图
  6. 画出时序图
  7. 确定电路行为

寄存器的分类·

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
2
3
4
5
6
7
8
9
10
11
module reg_8bit(qout,data,clk,clr);
output[7:0] qout;
input [7:0] data;
input clk,clr;
reg [7:0] qout;
always @(posedge clk or posedge clr) //沿触发
begin
if(clr) qout=0; //异步清零
else qout= data;
end
endmodule
数据锁存器·
  • 由多位电位锁存器组成的用于保存一组二进制代码的寄存单元。
  • 功能:当输入控制信号(如时钟)为高电平时,门是打开的,输出信号等于输入信号;当输入控制信号为低电平时,门是关闭的,输出端保持刚才输入的数据,即为锁存状态,而不管此时输入信号是否变化。
  • 通常由电平信号来控制,属于电平敏感型,适于数据有效滞后于控制信号有效的场合。
数据寄存器和数据锁存器的区别·
  • 数据寄存器:由边沿触发的触发器组成。通常由同步时钟信号来控制,属于脉冲敏感型,适于数据有效提前于控制信号(一般为时钟信号)有效、并要求同步操作的场合。
  • 数据锁存器:由电位触发器(即D锁存器)组成。一般由电平信号来控制,属于电平敏感型,适于数据有效滞后于控制信号有效的场合。
数据锁存器的Verilog HDL设计·
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//普通的的1位数据锁存器的Verilog HDL
module latch_1(q,d,clk);
output q;
input d,clk ;
assign q=clk?d:q; /* 时钟信号为高电平,打入数据,否则锁存原数*/
endmodule

//带置位和复位端的1位数据锁存器的Verilog HDL
module latch_2(q,d,clk,set,reset);
output q;
input d,clk ,set,reset;
assign q= reset ? 0: (set ? 1:(clk ? d:q));
endmodule

//8位数据锁存器的Verilog HDL设计
module latch_8bit(qout,data,clk);
output[7:0] qout;
input [7:0] data;
input clk;
reg [7:0] qout;
always @(clk or data) //电平敏感
if(clk) qout=data;
endmodule

2.移位寄存器·

具有移位功能的寄存器称为移位寄存器,每来一个时钟脉冲,寄存器中数据就依次向左或向右移一位。

计算机中经常需要用到移位操作,如乘法运算中的右移,除法运算中的左移,数据输入输出方式中的串行并行转换等。

移位寄存器分类·

左移移位寄存器、右移移位寄存器、双向移位寄存器、循环移位寄存器

4位右移移位寄存器·
4位右移移位寄存器的工作方式·
串入并出·

串并转换(需要N个CP周期),经过4个CP,串行输入的4位数据全部移入移位寄存器中,并从Q3Q2Q1Q0并行输出1011

串入串出·

把最右边的触发器的输出作为电路的输出。经过4个CP后, Q3 输出的是最先串行输入的数据。从每个触发器Q端输出的波形相同,但后级触发器Q端输出波形比前级触发器Q端输出波形滞后一个时钟周期。 把工作于串入串出方式的移位寄存器称为“延迟线” (第N级FF延迟N个CP周期)

4位串行输入、串/并行输出双向移位寄存器·

3.计数器·

定义,用途,分类·
例题1:同步十进制加法计数器·
3.3.10 3.3.11 3.3.12
同步计数器的特点·
  • 所有触发器的时钟端并联在一起,作为计数器的时钟端
  • 各触发器同时翻转,不存在时钟到各触发器输出的传输延迟的积累
  • 由于其工作频率只与一个触发器的时钟到输出的传输延迟有关,所以它的工作频率比异步计数器高。
  • 由于计数器各触发器几乎是同时翻转的,因此,各触发器输出波形的偏移为各触发器时钟到输出的延迟之差,同步计数器输出经译码后所产生的尖峰信号宽度比较小。
  • 缺点:结构比较复杂(各触发器的输入由多个Q输出相与得到),所用元件较多。
例题2:同步十六进制数加法计数器·
3.3.15 3.3.16 3.3.17 3.3.18
异步计数器·

异步计数器也有二进制、十进制、任意进制等类型

异步计数器的特点·
  • 输入系统时钟脉冲只作用于最低位触发器,高位触发器的时钟信号往往是由低一位触发器的输出提供的,高位触发器的翻转有待低一位触发器翻转后才能进行。
  • 由于每一级触发器都存在传输延迟,因此计数器工作速度慢,而且,位数越多计数越慢。在大型数字设备中较少采用。
  • 对计数器状态进行译码时,由于触发器不同步,译码器输出会出现尖峰脉冲(位数越多,尖峰信号也就越宽),使仪器设备产生误动作。
  • 优点:结构比较简单,所用元件较少。
例题3:分析下图异步二进制(M=16)加法计数器电路(N=4)·
3.3.20 3.3.21
异步计数器——其他类型计数器·
1. 分析异步二进制(模16)减法计数器·
2.D触发器(上跳沿触发)构成的异步二进制(模8)加法计数器·
3.3.24
异步计数器小结·

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.6 4.1.7

四. 存储器扩展·

4.1 存储器芯片的扩展(位扩展)·

4.2 存储器芯片的扩展(字扩展)·

4.1.9
4.3 存储器芯片的扩展(混合扩展)·
4.1.9 4.1.9

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获取最终数据
TLB,页表,Cache三种缺失的可能性·
举例·