【课业】数电系统整理复习【已完结】

第一章 二进制编码

大纲

冯诺依曼结构(计算机应由运算器、控制器、存储器、输入设备和输出设备五个基本部件组成。冯·诺依曼型计算机设计思想主要有两项:一项是将十进制改为二进制,从而大大简化了计算机的结构和运算过程;另一项是存储程序(Stored-program)工作方式的思想,即将程序和数据一起存储在计算机内,是的计算机的全部运算成为真正的自动过程。)
image
ISA指Instruction Set Architecture,即指令集体系结构
ISA是一种规约(Specification),它规定了如何使用硬,它的内容:

  1. 可执行的指令的集合,包括指令格式、操作种类以及每种操作对应的操作数的相应规定;
  2. 指令可以接受的操作数的类型
  3. 操作数所能存放的寄存器组的结构,包括每个寄存器的名称、编号、长度和用途;
  4. 操作数所能存放的存储空间的大小和编址方式
  5. 操作数在存储空间存放时按照大端还是小端方式存放;
  6. 指令获取操作数的方式,即寻址方式
  7. 指令执行过程的控制方式,包括程序计数器、条件码定义等。
    汇编语言:用助记符表示操作码、用标号表示位置、用助记符表示寄存器

原码和补码
进制转换
浮点数表示【表示范围、规格化(标志是真值的尾数部分最高位有非零数字即1/2≤M<1或者说补码01XXXX的形式或10XXXX 的形式、左规右规要略微了解)、IEEE754】
数据的存储和排列:现代计算机基本都采用字节编址,每个地址对应一个字节,那么是从最低有效字节开始存,还是从最高有效字节开始存,排列方式被分为小端存储(LSB开始)和大端存储(MSB开始)

典题

定义在补码加法上的(x+y)-y==x是恒成立的,无法判断溢出。
image
这里应当注意,给出一个移码,它的二进制表示的数减去\(2^{n-1}\)对应它的真值,给出一个补码,它的二进制表示的数在-128~127的同模数对应它的真值。因此有移码和补码互为符号位取反的性质。这在IEEE754中不适用。
这个题还应该注意是定点数。


image


image


乘法指令和加法指令的指令周期总是一样长(错误)
乘法指令通过执行若干次加减操作和移位操作来完成,因而,乘法指令的指令周期通常比加法指令的指令周期更长,即乘法指令的CPI比加法指令的CPI更大。


image
小端存储例子


计算机系统采用层次化结构,从最上面的应用层到最下面的硬件层,其层次化构成为( 高级语言虚拟机-汇编语言虚拟机-操作系统虚拟机-机器语言机器 )。

冯·诺依曼结构计算机中,CPU区分从存储器取出的是指令还是数据的依据是( 指令和数据的访问阶段的不同 )。


image
这种题一定得快!不要傻算!找和65536同模的那个。


一台计算机的编址单位和指令字长相同,且是字节的整数倍(错)


image
一点都不难,但当习惯了IEEE754的时候再来看这个还是挺烧脑的


小测快乐题 浮点数为什么不满足加法结合律?

浮点数的加法不满足加法结合律是因为浮点数的精度有限,在进行加法计算时,可能会
出现舍入误差(当两个浮点数相加时,如果它们的数量级相差很大,那么其中一个数的
小数部分可能会被截断或者丢失,从而导致舍入误差)。而舍入误差会导致加法不满足
结合律。

怎么扩大浮点数表示范围

  1. 动态范围调整:通过动态调整指数部分的值,可以提高浮点数的表数范围。例如,指数部分可以表示为偏移量加上一个固定的基数。当浮点数的值越大时,偏移量可以增加,以保证更多的数可以被表示。
  2. 非线性编码:使用非线性编码可以提高浮点数编码的表数范围。例如,对于一个8 位编码的浮点数,可以使用一种非线性编码,使得该编码可以表示更多的数。
  3. 非规格化数:可以使用非规格化数来表示一些极小或极大的数。非规格化数是指指数部分为全零的浮点数,它们的表达范围比规格化数更大。

第二章 数字逻辑基础

大纲

CMOS逻辑电路:电平范围相关image

PMOS源极电源高电平,NMOS源极接地低电平实现非门
NMOS串联,PMOS并联实现与非门,反过来实现或非门
两个非门构成缓冲器
还有一个重要的CMOS电路叫传输门,由一对CMOS晶体管、反相门、控制信号组成,EN低态时两个晶体管都断开,反之都导通。
波形图描绘了逻辑函数输出变量对于输入变量的变化所产生的响应。在理想状态下,忽略时间延迟。横轴表示时间;纵向用横线的高低来表示逻辑值大小
布尔代数: 一致律 对偶定理 香农定理

典题

image

第三章 组合逻辑电路

大纲

规则:每个元件本身是组合逻辑电路、输出连线不能互连、输出连线不能反馈到元件输入端
优先级:非>与、与非>异或、同或>或、或非
3-8译码器
image
还能级联
image
优先权编码器
多路选择器
组合逻辑电路的时序分析:传输延迟、最小延迟、关键路径
竞争冒险:如果存在某个输入信号经过两条或两条以上的路径作用到输出端,由于各路径延迟不同,因而该输入信号对输出端会发生先后不同的影响,该现象称为竞争(race),由于竞争的存在,在输入信号变化的瞬间,输出端可能会出现不正确的尖峰信号,这种信号称为毛刺(glitch),出现毛刺的电路称为存在冒险(hazard)或竞争冒险或险象,可通过低通滤波或增加冗余项来修改逻辑设计等方式避免毛刺

典题

image
这题可以直接解布尔代数方程,挺好的题


image
image

以下关于半加器和全加器的叙述中,错误的是( D )。
A. 半加器仅需考虑两个加数所生成的和与进位
B. 全加器需考虑两个加数及低位进位所生成的和与进位
C. 全加器的真值表有8种输入组合,输出端变量有两个
D. 一个全加器的功能可以用两个半加器电路级联来实现
通常用直观的时序图进行组合逻辑电路时序分析。以下关于时序图的叙述中,错误的是( D )。
A. 时序图可反映电路的输入信号改变而引起输出信号随之变化的过程
B. 输入信号改变而引起输出信号从高态到低态变化的时间称为下降沿延迟
C. 电路延迟从输入信号变化边沿的中点开始到输出信号变化边沿的中点为止
D. 对于同一个电路来说,其上升沿延迟时间和下降沿延迟时间长短完全一样


组合逻辑电路中的时序分析典题!
image
image


第四章 时序逻辑电路

大纲

有限状态机 状态图
次态激励逻辑模块 状态记忆模块 输出逻辑模块

同步/异步时序逻辑电路
SR锁存器 \(Q^*=S+\overline{R}Q\)
D锁存器 \(Q^*=CD+\overline{C}Q\)
JK锁存器 \(Q^*=J\overline{Q}+\overline{K}Q\)
T触发器 \(Q^*=T\oplus Q\)
同步时序逻辑电路设计:需求分析,状态图状态表设计(化简)、状态编码、电路设计和分析
构建状态图/表时,状态转移需满足互斥性、完备性
区分次态函数、激励函数
挂起?自启动?
电路的定时分析image
计数器 模16行波加法计数器(4个T触发器串行)、同步4位并行加法计数器、异步行波减法计数器(4个D触发器)
寄存器 D触发器构成的n位寄存器、寄存器堆
移位寄存器 image

典题

image
把JK触发器看作一个从未见过的我要实现的时序逻辑,列出次态方程,根据D触发器的方程进而得到激励方程


用一个带使能端的T 触发器和若干AND、OR、NOT 门实现一
个JK 触发器,写出激励方程,并画出电路图。JK 触发器的状态转移表如
下所示:
image
和上题道理类似,不过给的是T触发器而不是D触发器,略复杂了一些


image
image

没什么可说的,就是看看状态表和状态图是怎么画的,熟悉熟悉


以下关于双稳态元件的叙述中,正确的是( C )。
A. 双稳态元件的两个输出端的逻辑值一直是相反的【亚稳态】
B. 双稳态元件的亚稳态现象极难发生,实际应用中可不考虑
C. 双稳态元件处于稳态时,必须有外部激励才可能改变状态
D. 双稳态元件处于稳态时,由于状态没有改变,应该没有电能消耗


状态记忆元件正常工作情况下,以下叙述中错误的是( A )。
A. 锁存器的状态改变总是由外部输入信号触发 【内部也可以】
B. 触发器的状态改变总是由时钟有效边沿触发
C. 在锁存器的控制信号有效期间,外部输入信号可以发生变化
D. 当触发器的时钟有效边沿到来时,外部输入信号不可以发生变化


以下关于状态编码的叙述中,错误的是( C )。
A. 状态编码方案的不同不会影响电路的功能特性
B. 状态编码的位数越多,激励逻辑模块的实现就越简单 【对的,反过来就是编码越少函数越复杂】
C. “现态相同,次态相邻”编码策略可降低次态对现态的依赖 【应为次态相同,现态相邻】
D. 优化状态编码方案可以降低时序逻辑电路的复杂度


以下关于时序逻辑电路分析的叙述中,错误的是( A )。
A. 存在“挂起”现象的时序逻辑电路一定不能进行自启动
B. 存在“挂起”现象的时序逻辑电路一定存在多个状态循环
C. 存在多个状态循环的时序逻辑电路,可通过预置初态进行正常工作
D. 要使存在“挂起”现象的时序逻辑电路正常工作,只能修改设计方案


以下关于同步时序逻辑电路定时分析的叙述中,错误的是( A )。
A. 通过增大时钟周期的方法,一定能使电路正常工作
B. 最大时钟工作频率主要取决于状态记忆元件和次态激励逻辑的时序特性
C. 触发器的保持时间必须小于触发器锁存延迟与次态激励逻辑延迟之和
D. 以时钟有效触发边沿为准进行定时分析,非触发边沿不影响电路的时延


以下关于计数器的叙述中,错误的是( D )。
A. 计数器通常是基于若干触发器和若干逻辑门电路构建的
B. 计数器是一种可用于对时钟脉冲信号进行计数的时序逻辑部件
C. 同步计数器中状态记忆元件的状态转移统一由时钟信号控制
D. 计数器总是在状态编码对应二进制值达到最大时输出满值信号【计数器不总是在状态编码对应二进制值达到最大时输出满值信号。实际上,计数器还可以向下计数。当计数器向上计数时,它会从最小的状态编码开始逐渐增加,直到达到最大值时才会输出满值信号。而当计数器向下计数时,它会从最大的状态编码开始逐渐减小,直到达到最小值时才会输出满值信号。】


画SR锁存器时序图,好题!解释了11为啥不行。
image


分析这个触发器的原理,爵士好题!image


爵士无敌好题!
image
原来还能这么等价的!处理完一个等价之后很可能有新的等价出现,而两个状态次态为彼此的情况也可以等价!

顺便提一嘴,在设计这样简单的时序电路时,还要注意能否自启动、输出上有无与需求冲突,如果有问题应该继续调整次态函数。


image
都知道这个定时分析重要,终于见到应用了


image
超级无敌爵士好题
考察了对右移寄存器的理解、对陌生时序逻辑电路分析的能力


第五章 FPGA设计

大纲

PLD PROM PLA PAL GAL CPLD
RAM ROM

静态RAM: 6个MOS管构成的SRAM,MOS管多,占硅片面积大,价格高功耗大,集成度低,但无须刷新和读后再生,读写速度快,原理可看作RS触发器的读写过程
动态RAM: 利用电容的充放电原理,优缺点与SRAM相反
  存储元可用1个MOS管构成
  存储元字线连到MOS管漏极,数据线连到源极

FPGA

现场可编程门阵列 可用软件配置编程,可反复擦写。基于查找表(LUT)技术
EDA软件可将HDL描述的逻辑转换为网表
晶元厂商不能直接根据网表生产相应的电路芯片

典题

关于PLA器件
与阵列和或阵列都可编程(对)
可方便实现最简与-或表达式 (对)
PLA实现方式所用物理器件多 (错)
可实现任何组合逻辑电路的功能 (对)

ROM存储器阵列中数据的访问采用随机存取方式(对)
若存储单元地址位数为n,则阵列中存储单元个数为\(2^n\)(对)

第六章 运算方法和运算部件

大纲

串行(行波)进位加法器、并行进位加法器。其中并行的较为复杂,采用进位生成、进位传递的方式,得到各个进位值无需依赖之前的进位输出(逻辑表达式要会推!),实现这种逻辑表达式的电路称为CLU(先行进位部件),通过这种进位方式实现的加法器叫CLA(全先行进位加法器),实验课中我们已经对其十分熟悉了。此外,如果把数据分为若干组,每一组内除了并行生成进位外,还通过组进位生成和组进位传递两个组进位辅助函数,使得各组的进位也能相互独立、并行产生,这种电路称为成组先行进位部件(BCLU)
带符号加法器是很重要的!为了实现补码加法,应该有溢出判断;为了实现减法,要把加法器的低位进位设为1.
\(OF=C_n\oplus C_{n-1}(溢出要么是正溢出,要么是负溢出,前者C_n=1,C_{n-1}=0,后者倒过来)当然也可以用直接符号判断\)
\(SF=F_{n-1}(最高位的结果)\)
\(CF=Cout\oplus Cin\)
\(ZF=1当且仅当F=0\)
ALU具体的东西,后面CPU会接着讲哦
下面是重量级的运算方法!
原码一位乘法
原码两位乘法(移2位,加0到3倍的被乘数)
补码一位乘法(布斯乘法)乘数寄存器右边有一位辅助位 布斯乘法有的时候也会用到双符号位(待研究)
原码除法-恢复余数与不恢复余数
补码除法(不恢复余数) 注意最后的商与余数调整

典题

image


以下关于原码一位乘法算法要点的描述中,错误的是( D )。
A. 符号位和数值位分开运算,符号位可由一个异或门生成
B. 数值位通过循环执行“加法”和“移位”操作得到乘积
C. ALU中是否进行部分积与被乘数的加法运算由乘数最低位决定
D. 移位时,将进位位、部分积和乘数部分一起进行算术右移 【应为逻辑右移】


以下关于乘法运算部件的叙述中,错误的是( C )。
A. 补码乘法部件可用于带符号整数的乘法运算
B. 原码乘法部件可用于浮点数中的尾数相乘运算
C. 快速阵列乘法器中的基本部件包含移位器
D. 两位乘法运算比一位乘法运算的速度约快一倍


image
【看好有的是移码】
image


对于IEEE 754单精度浮点数加减运算,只要对阶时得到的两个阶码之差的绝对值|ΔE|大于等于( 25 ),就无须继续进行后续处理,此时,运算结果直接取阶大的那个数。


第七章 指令系统

大纲

一条指令必须包括或隐含:操作码、源操作数或地址、结果的地址、下条指令地址(通常隐藏在程序计数器PC中)
一条指令由一个操作码和几个地址码构成,根据地址码个数可把指令分为若干种。
有效地址:指令中给出操作数所在存储单元的地址
常用的寻址方式:立即寻址、直接寻址、间接寻址、寄存器寻址、寄存器间接寻址、变址寻址(指令给出形式地址,再加上变址寄存器中的偏移量)、相对寻址、基址寻址
定长操作码与变长操作码的选择、有关题目计算
标志信息/条件码CC/状态位由标志寄存器(或通用寄存器)存放,给条件转移指令用的,通过对ZF、OF、SF、CF的组合来判断各种条件。比如\(r_1>r_2\)在无符号整数比较中条件为\(ZF=0\wedge CF=0\),在有符号整数比较中条件为\(ZF=0\wedge SF=OF\)
指令系统风格:累加器型、栈型、通用寄存器型、Load/Store型(是通用寄存器系统的派生)(只有Load与Store指令才可以访问存储器)
CISC/RISC
RISC的特点:指令数目少,指令格式规整(定长指令字)、Load/Store型风格、大量通用寄存器
异常【故障、自陷、终止】和中断【通常每条指令执行完之后CPU都会主动查询中断请求,如果有则会把下条指令地址作为返回地址(端点)保存,然后转到相应的中断服务程序,结束后回到断点】
自陷:预先安排的,事先用特殊指令或设定特殊控制标志,执行到自陷指令时自动处理,无条件或有条件地调出操作系统内核程序或陷入特定的异常处理程序,常用于单步跟踪/断点调试,此外系统调用指令和条件自陷指令都属于这一类
RISC-V:六种指令格式RISBUJ
寄存器传送级语言RTL
整数运算类指令
控制转移指令
存储器访问类指令

典题

关于RISC:
image


真是好题
image
image


image


image


单地址双目运算类指令中,除地址码指明的一个操作数以外,另一个操作数通常采用( 隐含寻址 )方式。
image


以下给出的四种指令类型中,执行时间最长的指令类型是(  )。A. RR型B. RS型C. SS型D. RI型
RR型指令指两个源操作数和目的操作数都在寄存器中,RS型指令指一个源操作数在寄存器,另一个源操作数和目的操作数共用同一个存储单元,SS型指令指两个源操作数和目的操作数都在存储单元中,RI型指令指一个源操作数是立即数,另一个源操作数和目的操作数都在寄存器中。显然,SS型指令需要访问存储器的次数最多,除了取指令需要访存外,取两个源操作数和存结果都要访存。因此,SS型指令的执行时间最长。答案为选项C。


image
这题小心是符号扩展!太容易错啦!


输入/输出指令的功能是( C )。
A. 在主存与CPU的通用寄存器之间进行数据传送
B. 在主存和I/O端口之间进行数据传送
C. 在CPU的通用寄存器和I/O端口之间进行数据传送
D. 在I/O端口和I/O端口之间进行数据传送

这里是一个知识漏洞,操作系统中的指令类型可以分为几类:算术和逻辑运算指令、移位指令、数据传送指令、顺序控制指令、串指令、无条件转移指令、系统控制指令、输入/输出指令(最后两个通常属于“特权指令”)


出/入栈指令(push/pop)完成存储单元和栈顶之间的数据传送 (错)//应该是CPU和栈顶
有关过程调用指令(转子指令):与高级语言源程序中的过程调用相对应,一次过程调用对应一条调用指令 (对)
指令执行时必须保存返回地址,调用指令随后一条指令的地址是返回地址 (对)
嵌套调用时返回地址通常保存在栈中,非嵌套调用时可保存在特定寄存器中 (对)
指令执行时将无条件转移到目标地址处,转移目标地址无须在指令中明显给出 (错)

调用指令(转子指令)主要用于子程序(过程或函数)调用,例如,在C语言程序中遇到一个函数调用时,编译器将会生成一条调用指令。为了能保证从被调用过程返回调用过程继续执行,必须确定并保存返回地址,这个地址是调用指令随后指令的地址,返回地址只能由调用指令计算并保存,因为执行调用指令后就跳转到了被调用过程,无法获取返回地址。为了保证嵌套调用时能够返回到调用过程,必须将返回地址压栈,如果不压栈而保存在特定寄存器,则后面执行的调用指令会把前面调用指令保存的返回地址冲掉,只有调用叶子过程(叶子过程将不再有新的过程调用,因此是非嵌套调用)时的调用指令可以把返回地址存放到特定寄存器中。调用指令执行时将无条件转移到目标地址处,这个目标地址就是被调用过程第一条指令的地址,它一定在调用指令中明显给出。

访存指令不能访问栈中信息,必须提供专门的入栈和出栈指令(错)

栈是一个动态存储区,每次过程调用都会生成一个新的栈帧,栈顶的地址存放在一个特定的栈指针寄存器中,可以使用专门的入栈和出栈指令来访问栈顶数据,也可以通过普通的访存指令来读写栈帧中某个位置的内容。例如,RISC-V架构就没有专门的入栈和出栈指令,只能通过lw/sw等访存指令进行栈中信息的读写;IA-32架构中虽有专门的出栈和入栈指令,但也可通过mov指令来访问栈中的信息。当一个过程执行结束时,总是要通过返回指令返回到它的调用过程,在返回到调用过程后,被调用过程对应的栈帧必须被释放掉,通常通过修改栈顶位置来实现,即修改栈指针寄存器的内容。


某计算机字长32位,CPU中有32个32位通用寄存器,采用单字长定长指令字格式,操作码占6位,其中已包含对寻址方式的指定。对于存储器直接寻址方式的RS型指令,能直接寻址的最大地址空间大小是多少?对于采用通用寄存器作为基址寄存器的RS型指令,能直接寻址的最大地址空间大小是多少?【好题】

答: 因为有32个通用寄存器,所以寄存器编号为5位。存储器直接寻址的RS型指令的一个操作数在寄存器中,因此指令中有一个5位的寄存器编号,另外一个地址码是直接地址,该直接地址共有32-6-5=21位。因此,能直接寻址的最大地址空间大小是\(2^{21}\)个字。基址寻址的RS型指令的一个操作数在寄存器中,另一个操作数在基址寻址的存储单元中,因为采用通用寄存器作为基址寄存器,所以必须在指令中明显指出基址寄存器是哪个通用寄存器,故基址寄存器的编号占5位,因此剩下的位移量位数为32-6-5-5 = 16。通用寄存器的位数是32,说明基址寄存器中的基准地址为32位,一个32位的基准地址加上一个16位的位移量,其结果还是一个32位的有效地址。因此能直接寻址的最大地址空间大小是\(2^{32}\)个字。

第八章 中央处理器

CPU执行一条指令的通常步骤:取指令、对IR中的指令操作码译码并计算下一条指令的地址、计算源操作数的地址并取源操作数、对源操作数进行相应的运算、计算目的操作数地址并存结果(我个人感觉还是很重要的)
概述图image

CPU两大组成部分:数据通路和控制器
数据通路中专门运算的部件叫执行部件,要用到组合逻辑元件(操作元件)和时序逻辑元件(存储元件/状态元件)
早期计算机:机器周期,节拍,脉冲 三级时序
现代:时钟信号 这里可以回到第四章复习时序关系
吞吐率、响应时间、执行时间【用户CPU时间+其他时间】、等待时间
计算机系统的性能评价主要考虑CPU性能,和系统性能不是一回事
时钟周期、时钟频率、CPI MIPS:每秒执行的指令数
计算机性能(程序执行快慢)由三个关键因素决定:指令数目、CPI、时钟周期;指令数目由编译器和ISA决定,时钟周期和CPI主要由CPU的设计与实现决定。
目前大都采用流水线方式执行指令,单总线或三总线的总线式数据通路很难实现指令流水执行。

最喜欢的一节——单周期CPU设计:指令设计(9条目标指令的类型、RTL描述还是要记住的)、数据通路设计(扩展器+ALU+取指令部件...)、控制器
各指令的ExtOp取值有5种情况,至少占3位!如何根据指令编码Instr得到ExtOp?指令Instr如何决定ALUctr?通过指令译码器得到!
Lw指令的执行时间最长,它所花时间作为时钟周期

非load/store指令无需访问DM,J-指令无需访问寄存器,单周期数据通路有优化空间

多周期CPU设计
主要思想:把指令的执行分成多个阶段,每个阶段在一个时钟周期内完成;时钟周期以最复杂阶段所花时间为准;尽量分成大致相等的若干阶段;规定每个阶段最多只能完成1次访存或寄存器堆读/写或ALU;每步都设置状态单元,每步的执行结果都在下个时钟开始保存到相应单元
硬连线控制器的基本实现思路:将指令执行过程中每个时钟周期所包含的控制信号取值组合看成一个状态,每来一个时钟,控制信号会有一组新的取值,也就是一个新的状态,这样,所有指令的执行过程就可以用一个有限状态转换图来描述。实现时,用一个组合逻辑电路(一般为PLA电路)来生成控制信号,用一个状态寄存器实现状态之间的转换。
微程序控制器的基本实现思路:将指令执行过程中每个时钟周期所包含的控制信号取值组合看成一个0/1序列,每个控制信号对应一个微命令,控制信号取不同的值,就发出不同的微命令。这样,若干微命令组合成一个微指令,每条指令所包含的动作就由若干条微指令来完成。指令执行时,先找到对应的第一条微指令,然后按照特定的顺序取出后续的微指令执行。每来一个时钟,执行一条微指令。实现时,每条指令对应的微指令序列(称为微程序)事先存放在一个只读存储器(称为控制存储器,简称控存)中,用一个PLA电路或ROM来生成每条指令对应的微程序的第一条微指令地址,用相应的微程序定序器来控制微指令执行流程。

带异常处理的数据通路设计
CPU处理异常/中断的两个步骤:保存断点和程序状态、识别异常事件并转异常/中断处理

  1. 保存断点和程序状态
    对于不同异常断点不同,如故障的断点是发生故障的当前指令处,自陷的断点则是自陷指令后面一条指令处。缺页处理结束后断点应该是PC-4。注意被中断时原程序状态也要专门保存,引入PSWR程序状态字寄存器
  2. 识别异常事件并转异常/中断处理
    内部异常大多软件识别,外部中断源可以采用软件识别或硬件识别。
    软件识别:设置一个异常原因寄存器,一个异常查询程序按一定优先顺序查询该寄存器并处理
    image
    image

流水线CPU设计
流水线冒险:一些阻塞/停顿的原因
分为结构冒险(也叫硬件资源冲突,解决方法1:利用流水线划分原则,一个部件每条指令只能使用一次,且只能在特定时钟周期使用,解决办法2:设置多个独立的部件,事实上现代采用cache机制避免结构冒险)、数据冒险(也叫数据相关,后面指令用到前面指令结果时结果还没产生,非乱序的都叫RAW数据冒险,解决办法1:插入空操作指令nop,解决办法2:插入气泡进行硬件阻塞,解决办法3:转发或旁路技术 但转发技术无法解决Load-use数据冒险,只能在Load前插入nop或者编译优化来解决)、控制冒险(指令执行顺序改变引起的流水线阻塞,分为转移指令引起的控制冒险,以及异常或中断引起的控制冒险)


典题

image

image
快速理解流水线作业!顺便记住下面的概念image
进而这题就会做了。\(\Delta t\)指的是最长的那一小段时间!指m段流水线完成n个任务所达到的吞吐率。注意,这些公式只适用于流水线各段时间相同的情况!如果有不同,请注意理论公式和实践公式的区别!考试80%都用实践公式,即用总流程时长+(n-1)×时钟周期
image

区分时钟周期、机器周期与指令周期:
1.1 指令周期(Instruction Cycle)
CPU从存储器中取出并执行一条指令所需的全部时间称之为指令周期。
计算机每执行一条指令的过程,可分解为如下步骤:
Instruction Fetch(取指令)
Instruction Decode(译码)
Execute(执行)
不同类型指令的指令周期不相同。
1.2 时钟周期(cycle,clock cycle)
主频:计算机内部主时钟的频率,通常以MHz或者GHz为单位,是生产设计CPU时就已经确定下来的。
主频越高,CPU的运算速度越快,时钟周期越短,硬件技术水平的提高可以提升主频。
时钟周期是计算机中最基本的、最小的时间单位,在一个时钟周期内计算机仅能完成一个“微操作”或若干相容的(数据通路上不发生冲突、互不干扰的)“微操作”。
1.3 机器周期(Machine Cycle)或者称为CPU周期(CPU Cycle)
机器周期是人为规定的,实际上是对一条指令执行过程阶段的划分。具体的划分方法随计算机的不同而不同。
一般把从内存里面读取一条指令的最短时间(与数据通路相关),规定为机器周期。
一个机器周期内包含若干时钟周期,包含时钟周期的个数称之为机器周期的时间宽度。
如果每个机器周期的时间宽度相等,称为定长机器周期;如果不相等,称为变长机器周期。image


image


image
根据题目的描述可知,取数load是最复杂的指令,在该单周期数据通路中,应该以load所用时间作为时钟周期。因此,在不考虑多路复用器、控制单元、PC、符号扩展单元和传输线路等延迟的情况下,该计算机时钟周期为取指令时间(3ns)+寄存器堆的读取时间(1ns)+ALU运算时间(2ns)+存储器取数时间(3ns)+寄存器堆写时间(1ns)=10ns。选项C是正确的。


image

答案:B、D


随着流水段个数的增加,流水段之间缓存开销的比例增大 (对)
取指令阶段和指令译码阶段不需要控制信号的控制 (对)
每个流水段由执行指令子功能的功能部件和流水段寄存器组成 (对)
在没有阻塞的情况下,PC的值在每个时钟周期都会改变 (对)(毕竟是流水线)
控制信号仅作用在功能部件上,时钟信号仅作用在流水段寄存器上 (错)
PC和寄存器写口可看成特殊的流水段寄存器 (对)image
同一个功能部件可以在不同的流水段中被使用 (错)
每个功能部件在每条指令中都只能被使用一次 (对)
寄存器写口只能在指令结束时的“写回”阶段被使用 (对)


image
爵士好题!条件都在题面里。


又是一道爵士好题,好到不能再好
image
image


爵士好题三连!这个地址范围真的是太细了
image

posted @ 2023-06-23 13:12  藤君  阅读(412)  评论(0编辑  收藏  举报