第五章:

第一节复习要点:

寄存器

重点记忆透明、不透明的寄存器,配合文档内容一起背其归属方


第二节复习要点:

指令周期

指令周期,包含多个机器周期,指令周期可以不等长,机器周期可以不等数

甚至机器周期也可以不等长时间,一般机器周期为访存周期,因为几乎每步均涉及访存

中断在一条指令执行完成后进行检测,因而中断不会影响指令的执行

通用指令周期

取址周期是公共周期,其能够被控制器自动执行而不需要单独的命令操作

不论取址、间址、中断周期,均需要进行一次访存,中断周期的访存目的是压栈保护

间址周期一般谈主存间址,其运行结果是MDR中存放有效地址

中断周期没有被考察过,但也同样属于公共操作,或许需要留意

不同周期处理器

单周期处理器一般会因为需要迎合最慢的指令,总体主频较低(一条一个时钟

SISD,均属于虚假意义上的并行,没有实现真正意义的并行

真正意义上的并行是多核处理器才能实现的,并行处理器的吞吐量远胜过串行指令的

因为流水线最大只能实现一个时钟周期一条指令,并行一个周期K条指令

一般采用五段式流水线,特殊考察则可能会删减流水线为四段左右,特殊考察


第三节:数据通路

数据通路

数据通路包含一切数据可流向方向的部件

电路元件

组合元件和状态元件之间的区别就在于是否有记忆性,很容易区分

译码器、多路选择器、三态门均可以用于数据通路的输入、输出控制,各可取代

但总体考察似乎没有那么细,或者有但也从未被这样认为过,译码器效率最低

总线模式

专用即为硬布线,其效率极高,总线结构则效率较低,但成本一般

一般谈论的均是基于总线的,统考中暂未出现过硬布线结构,重点把握总线结构命令

总线是独占式设备,第六、七章有具体介绍,需要单独申请总线使用权


第四节:控制器逻辑(略重点)

硬布线控制器

统考中不太可能直接考察硬布线,因为涉及电路的直接设计,并非考察重点

其原理即以当前所有条件状态硬布线实现功能的选取,在电路上实现微程序逻辑

高效但布局非常繁琐、庞杂,其时序电路一般比较复杂

微程序控制器

该微程序控制存储器布局在CPU上

微程序被存储在控制存储器中,译码操作码确定调用哪条微程序完成指令(确定地址

微命令、微操作之间的互斥是指一个时钟周期中不能同时出现的操作

一般以对独占性资源占用的冲突导致(访存、占据总线、寄存器读写等冲突

微周期只需要一个时钟周期,相比主存要快很多

微程序控制器为了保证掉电以后不易失,必须用ROM实现

微程序内的寄存器均是透明的,属于控制部件的内容,用户不可视

机器指令、微程序、微指令、微命令

这里所说的机器指令是指代ADD、SUB、SHL,这样一句指令被称为是一条机器指令

这样一条机器指令对应一个微程序,一个微程序对应很多条微指令

一般一个节拍中的内容作为一个微指令的单位

例如一条微指令就可以包含:M(MAR)->MDR,PC+1->Z;这样作为一个节拍的微指令

其中的M(MAR)->MDR,PC+1->Z;就是一条微指令对应的微操作

每个微操作又对应不同的微命令,例如PC+1->Z对应微操作:PCout,ALUadd,Zin

这样就是机器指令、微程序、微操作、微命令之间的关系

而一般情况下,取址周期会被单独作为公共的微程序,间址、中断也可以

如果采用这种方式的话,总体的微程序个数就应是机器指令数加上公共程序数

微程序控制器运行流程

取指微程序地址一般会默认放在零号,单独作为一个微程序存在(可以自动执行

从指令寄存器中读取到一个操作码后,就要去相对应形成一个微程序地址

因为都是按照微程序地址存放的,给定一个操作码就一定要去明确这个微程序从哪开始

所以才需要这个微地址形成部件的存在

对标志位、CLK,就是对中断、间址的判断逻辑,看IR的地址码段的信息位决定

后面到底应该是继续执行下去,还是跳转到别的微程序块执行

不一定顺序访问每一条微指令的,可能会有条件选择,所以才需要顺序逻辑器

根据外界信息决定到底执行哪一条微指令,并把地址放在CMAR中,经译码器选单元

将该微指令取出后存放到CMDR中,需要注意的是,每一条微指令都包含两个结构

一个是操作控制字段,即是给总线、外部的控制信号

一个是给内部的进行下一轮执行的顺序控制字段也称为下地址

将这个地址给顺序控制逻辑器,然后再根据一系列外部信号来判断到底执行哪个指令

相对应的给出对应的存储单元地址,继续执行微程序

微指令编码方式

水平型就是一条微指令包括多个微命令,垂直只包含一个

然后再说不同的编码方式:

一种是直接编码,即每位表示一种操作,如果选中这个操作其他都需要置零,以位表示

一种是字段直接编码方式

控制字段分为多段,每段可以数值表达而非用位表达,7位可表127种类型

考察而言无非就是给定段的长度考可以多少种,以及给定种数判断需要多少位

尤其注意000或者0000不执行操作的情况,需留出一种操作判断

然后再说地址形成方式,指的就是之前的顺序控制器的地址形成法,细化:

PS:并不是那么重要的内容

微程序控制单元设计

统考从未考察过的内容,但相对一般的机器指令设计没有太多变化

可以考前或者后续真正做到类似题目了再回来看,书上甚至都没有提这部分内容

本质并不难,是设计能够配合微程序控制器运行的指令


第五节:中断、异常(补充内容)


第六节:流水线

重点一般在冲突的考察方式,虽然统考中考察要求一般,基本是明显的数据冲突

结构冒险:寄存器冒险、主存冒险两类

IF段与MEM段重叠就会导致主存结构冒险,但一者取指令、一者取操作数

且可以分是否在Cache中命中,不在Cache命中的可能性,是否分指令和数据Cache区别

若分为指令Cache和数据Cache,基本就能解决IF段和MEM段重叠导致的冲突问题

至于寄存器冒险,在正常流水段中不会出现流水寄存器冲突

书上唯一没有补充的即为当流水线IF结束时,后续ID结果尚未产生的等待情况

此时下一条指令也需要顺延,顺延到上一条执行ID时,否则会覆盖上条指令IF流水寄存

数据冒险

统考中唯一的考察重点,一般均以寄存器内容还未产生即使用导致

也可能会是访存数据还未取出的冲突

转发旁路是比较麻烦的策略,这样理解,ID段一般即为取数然后封锁到ID段流水寄存

然后ID流水寄存的内容运送给下一段EX流水段执行,增加旁路以后

只需要任意一段流水寄存中已经得到对应结果,就可以直接送到这段流水用

例如访存得到的结果放在MEM段流水寄存中,可以直接传送到上一段EX段流水线中

或者执行运算得到的结果存放在EX段流水寄存中,也可以直接送到EX段流水里

简单而言理解流水线要从两个角度理解:流水段部分、流水段寄存器部分

在绘制流水线的时候建议绘制上对应的寄存器,对理解上会更有帮助

转发技术可以直接解决相邻两条运算指令的数据相关

至于解决中间隔一条的数据相关,个人认为策略是把数据放在MEM段流水寄存中

然后在隔一段的情况下,因为后续也不访存覆盖,所以可以使用这段流水寄存的内容

其实就是个思想:当前或者一段时间内不使用的流水段寄存器,可以暂存数据

能够空闲下来的寄存一般只有MEM段的流水寄存器,在无条件转移、运算类中均为空段

不过一般不太可能考察那么细,因为不同计算机硬件布局均不一样

补充:JUMP,MEM段执行写回指令寄存器,这时候下一段的IF,需要单独停一段

控制冒险

简单来说就是条件转移、无条件转移、陷入指令等直接导致当前指令断流

这种被称为控制冒险,后续就需要重新加载流水线

碰到转移类、跳转类指令均为控制冒险,不论是中断、跳转、嵌套循环、陷入等等

下面的流水线阻塞有更为详细的介绍概念

汇总

访存冲突(两个访存段冲突,IF、MEM

流水线寄存器冲突(IF、ID,为保存取指令段的流水寄存器内容,下一个IF,延迟执行

写后读(延迟执行、双端口:WB、ID,重叠、旁路:MEM-EX、EX-EX,直接转发

Load-use(WB、MEM,还未写回就在用,转发:MEM-EX

控制冒险(jump,MEM段写回指令寄存器,IF必须延迟到MEM段后

流水线阻塞相关原因

这里结合操作系统、计组两方面学过的内容进行具体分类阐述

数据冲突(只需要考虑书上所说情况)

结构阻塞:

处理器等待阻塞队列导致流水线冲突(一般特指慢速I/O,磁盘访问类导致冲突

主存冲突最为常见,可以依靠分离指令Cache和数据Cache解决绝大多数问题,但非全部

寄存冲突一般不常见,唯一只有在流水阻塞后的流水内寄存器冲突

多线程处理器中多个线程对同一线程部件的竞争、共享缓存、共享单元冲突(临界资源

总线冲突,常见于DMA模式下对总线、主存的占用权竞争

缓冲区冲突,一般言之为主存缓冲区,但计算机内缓冲区存在多个(临界资源访问

内存访问非对齐模式,在非对齐情况下,需要多次取指,因而会导致流水线不正常运行

Cache或主存采用写回法、全写法时产生的结构冲突

控制阻塞:

核心在于阻塞当前流水线,必须清除当前流水然后重新开始

分支预测错误,必须全部清除流水线,重新引导

异常处理,包括缺页异常、Cache缺失异常、硬件异常、无法处理的异常类型

同步量、互斥量均会导致流水线阻塞

中断处理会导致流水线阻塞,包含一般性中断、子程序调用、中断嵌套、DMA请求

线程调度,操作系统中执行用户态和核心态切换、上下文切换、线程切换也会阻塞流水


第七节:处理器相关概念

SIMD

SIMD中最具有代表性的即为向量、阵列、矩阵处理器,一般浮点数运算也基于此类

其一般也采用流水方式,流水线阻塞原因和上述也比较类似

一条命令执行多个相同的运算,例如For循环内对A数组进行每个变量自增

如果十六个ALU运算单元,那么一次性可以处理十六个数据,虽然可能不太会考察

MIMD

MIMD一般分为两种情况,一种即为分布式计算机系统,一种即为虚拟机

分别对应多台电脑和一台电脑之间的区别

硬件多线程

同一个处理器多线程,可以是多核,也可以是单核,多核必须实现硬件多线程发挥性能

单核处理器的多线程实际上只能提升不到百分之二十的性能,很多硬件依旧要互抢

细粒度、粗粒度、同时应该会考察相应概念,或者考察流水阻塞相关,不是特别重要

多核处理器

这里需要阐述多个并行设备、多段流水、多段并行流水之间的区别

分别对应三个并行部件、三段流水、三段并行部件流水,之间还是会有点理解差别

单核处理器的并行是宏观意义上的,实际上是分时串行

多核处理器的并行就是微观意义上的,可以实现分时上的并行,是真正的并行

多线程的概念最佳匹配的即为多核处理器

共享内存多处理器

具体的架构本身不需要刻意记忆,这里列出相应的提纲和重点

统一存储访问下,不区分本地与否,访问时间基本一致,非统一访问则区分本地

同时其时间上面也是不一致的;统一与否可以视作计算机一体化和分离化

共享变量、共享缓冲区这类临界资源均是需要同步量、互锁保证资源互斥访问

此类处理器必须保证Cache数据一致性,因而必须采用全写法;

必须保证各个处理器的Cache数据一致,必须保证存储体一致性(可能会因此阻塞流水

关于自陷指令与上下文切换

首先明确,陷阱指令并不只有TRAP,TRAP更类似于一种无条件陷入核心态指令

陷阱指令一般均是用户态指令,因为其只在用户态会被调用,返回指令往往是特权指令

一般分类中的系统调用和进程调用均涉及到上下文切换,必须陷入到核心态运行

其一般包括种类:子程序调用、中断、异常、系统调用、时间片结束

进程阻塞、进程到期、优先级抢占、流水线阻塞(导致进程切换)、虚拟内存分页(段)

上下文切换,系统调用需要直接调用操作系统的功能,因而必须实现陷入

而子程序调用的进程调用,一般只是进程内部的切换,只需要在用户栈中完成

上述仅是为了阐述上下文切换必须陷入到核心态而进行的阐述,分类本身并不完整

再谈自陷指令本身,其实自陷指令包含很多类型,详细可以见计组P248

文中谈到的返回到自陷指令的下一条执行,是在谈论上下文切换

而后句谈到自陷指令转移到目标指令执行,即在谈下文所列的条件转移类型

一般直接跳转到操作系统内部的执行程序入口,自陷指令也具有更改控制流的能力

自陷属于软件异常

思维导图参考:[https://cs.haohaha.cn/408/arch/5-6/]


第六章:总线

第一节:总线概述

总线特性

需要区分的是电气特性和机械特性,计网中有类似的考察方式

电气特性是指电平和电流方向,其他均属于机械特性,此外略微区分下功能特性即可

系统总线

单总线不代表总线里面只有一根线,可以分为三类:地址、控制、数据线

每类线又可能有多根,单总线是一个抽象概念

特别需要关注数据线和控制线上内容传输的区分,数据线承担很多控制信号传输

系统总线结构

控制总线每根是单向的,但又可以分为反馈线和控制线,总体是双向的

地址线必然是单向的,一般统一编址,数据线可双向传输

双总线结构增设通道(一种硬件处理器),通道程序存放在主存中(调用处理器

主存总线支持突发/猝发传送,即可以连续从主存中读取顺序数据而不必多次访存

通道程序存放在主存中,需要调用的时候从主存中访问读取

总线性能指标

总线周期:一般谈的是总线传输周期,和时钟周期的关系不定,纯看数据传输频率

总线宽度、带宽中需要刻意留意的就是其是以数据线作为基础计算单位的

一次存取不一定读取一个数据总线宽度的数据,一个存取周期可包含多个总线传输周期

此外,由于计网香农定理那边的教训,必须要严格按照实际传输数据量进行计算

例如需要排除掉检验位、缺失位、重复传输位,甚至还需要考虑和理论传输值去比较

如果不太正常一点可能会结合计网一起考察


习题简析:

6:间址返回的是有效地址,即使是取址周期其返回的指令也是经过数据线的

甚至中断号、异常等也由数据线传输,其他便是间址、中断周期均需要进行一次访存

间址周期结束后有效地址将会被保存在MDR中

7:地址线是统一编址的,因为不可能只访问主存,外存也同样是访问范围内

10:分时传输的含义是不同信号在同一总线上的复用,串、并均是同时传输位数的概念

11:主存连接着总线,控制线、数据线、地址线连接在不同的电路接口

14:以数据线作为传输单位,不论信号线一共多少根,计算带宽、宽度均看数据线的

26:题设条件有时候就会是干扰,有时候可能是有效信息,这点和数学不太类似

考试中出现这种情况一般肯定有一个干扰选项,就能力而言,只能二选一,没办法

27:再次验证传输带宽的计算是以数据带宽为主的,其可以不给出计算公式

全双工,则意味着可以双向传输,每个时钟周期传输两次,则频率即为4.8GHz/s

每次传输数据为16位,即2B(仅考虑数据传输),最终即可算出具体值为19.2GB/s


第二节:

总线事务

一般一个总线事务即为一个总线传输周期,但也可以倒反天罡

非突发就需要地址、数据反复多次循环传输,突发即可传输地址后连续传输数据

并且不需要和非突发一样多次申请主线,只需要一次申请,传输完释放即可

总线定时方式

同步方式的缺点就是时间强制固定,不论能否给出数据均会强制开启下一周期

对于流水线的多体存储器而言,如果其无法在一个存取时间内给出数据,就传输失败

这也可以作为流水线个体、流水段无法无限上升的理由之一

且该类型总线定时不会考虑数据的有效性检验,容错率很差,误码、缺失很多

异步方式,随心所欲,你需要多久时间就给出多久时间传输,采用握手方式(类计网

分为三类互锁策略,详细见书所示,一般建议画图的方式辅助理解

原笔记内容:

同步、异步、半同步、分离式

异步就是你需要传多久我就等你多久,直到你传给我了再说

拓展的异步串行是指异步时钟的,不依靠应答而依靠于校验码来判断传输结束与否

同步就是这个时间段你必须传好,不传好我也不管,直接开始下一个周期

拓展的同步串行就是发送方直接把收方的时钟控了让你强行和我产生一致性关系

然后通过校验码、开始结束标记传输

半同步就是约等于你传多久我等多久,无非我只会定时查看你传好没,而非一直催着

普遍是在时钟上下沿查看一下

上面三种都是对总线独占式的,一旦占用那么总线只能等他们完成了再被别的使用

分离式的含义就是总线不能闲着,我只有传输的时候占用总线,传完了立刻就让给别人

这几种各有各的优缺点、适用条件,一般考察的就是这一些内容


习题简析:

1:传输方式的选择不是“必须”,而是“最好”

2:数据传输只考虑有效数据传输量、有效数据的传输带宽,去除非必要信息

甚至还需要排除掉重传数据

13:注意题设条件中的地址/数据复用,意味着不可能同时传输地址和数据

尤其要小心这种题目设置方法,数据和地址之间是不能产生冲突的

20:刻意留意本题类型,当时统考以大题的方式考察过多体并行的准备、传输时间

准备以后才能进行总线的传输,也就是存储周期完了以后才能开始总线的传输

最终就会多出来一个总线周期的传输时间,因为一开始就会延迟一个周期后再去读取

此外注意是以突发还是以非突发方式的,突发方式则可以连续传输数据

非突发方式就无法连续传输数据,需要地址、数据反复循环,计算上需要多次循环

本题留一个索引点:P129:06、3,同类型的选择,P127:23、24