admin 管理员组

文章数量: 1087649


2024年12月31日发(作者:千万不要当算法工程师)

期末考试归纳

2020年8月17日

11:26

第一章 计算机系统结构的基础知识

1.1 计算机系统结构的基本概念(选择、判断、简答)

1计算机系统的层次结构

简答题:简单说明计算机系统层次结构是什么?虚拟机与物理机分别包含哪些?

从使用语言的角度出发,可以把计算机系统按照功能分成如图所示的多级层次结构,每一级都以一种不同的语言为特征。按照计算机语言从低级到高级的次序,这些层次系统依次为微程

序机器级、传统机器语言级、操作系统机器级、汇编语言机器级、高级语言机器级、应用语言级这六个等级。对于每一层的使用者来说,都可以把该机器级看成一台独立的计算机,可以

使用其相应的语言进行编程,并在该级行运行所编出的程序。

虚拟机与物理机的划分,如图所示。

从各个层次的角度看到的计算机是什么样的?

从微程序机器级看到的是门电路,从传统机器语言机器级看到的是寄存器,从操作系统机器级看到的是完整的CPU子程序库。

判断并改错:从汇编语言机器角度看到的计算机是完整的CPU。

×,从操作系统机器看到的是完整的CPU,从汇编语言机器角度看到的是??

简答题:计算机系统结构定义,其狭义和广义的定义分别是什么?

狭义:也就是经典的定义是:计算机系统结构是指传统机器程序员所看到的计算机属性,即概念性结构与功能特性。

广义:系统结构的定义囊括为计算机设计的三个方面:指令系统结构、组成、硬件。

对于狭义的定义来说,其中概念性结构和功能特性分别指什么?

概念性结构:软硬件功能的分配 哪些用软件实现,哪些用硬件实现?

功能特性:怎么设计软硬件交界面 交界面怎么设计,让软硬分开?

计算机系统结构的实质是什么?

计算机系统的实质是确定计算机系统中软硬件的交界面,界面之上是软件实现的功能,界面之下是硬件和固件实现的功能。

判断并改错:计算机系统结构的实质是概念性结构和功能特性。

判断并改错:计算机系统结构的实质就是来设置各个部件的功能。

×,计算机组成的实质才是设置各个部件的功能。

【习题1.2】简答题:举例说明计算机系统结构、计算机组成和计算机实现三者之间的相互关系。

计算机系统结构:计算机系统结构是指传统机器程序员所看到的计算机属性,即概念性结构与功能特性。实质是软硬交界面的设计以及软硬件功能的分配。

计算机组成:指的是计算机系统结构的逻辑实现,主要是关注事件的排序方式与控制方式,以及各个部件的功能以及联系。

计算机实现:指的是计算机组成的物理实现,主要是关注部件的物理结构,包含器件技术和微组装技术。

举例区分这三者:

联系:计算机组成是计算机系统结构的逻辑实现。计算机实现是计算机组成的物理实现。一种体系结构可以有多种组成。一种组成可以有多种实现。

简单版本:

答:如在设计主存系统时,确定主存容量、编址方式、寻址范围等属于计算机系统结构。确定主存周期、逻辑上是否采用并行主存、逻辑设计等属于计算机组成。选择存储芯片类型、微

组装技术、线路设计等属于计算机实现。

计算机组成是计算机系统结构的逻辑实现。计算机实现是计算机组成的物理实现。一种体系结构可以有多种组成。一种组成可以有多种实现。

分区 期末考试 的第1 页

简答题:什么叫系列机?

由同一厂家生产的具有相同系统结构,但具有不同组成和实现的一系列不同型号的机器。

判断并改错:系列机是由不同厂家生产的...。

×,系列机是由同一厂家生产的。

翻译和解释的概念是什么?(判断题概率高,可能混淆概念)

翻译:先用转换程序把高一级机器上的程序转换为低一级机器上等效的程序,然后再在这低一级机器上运行,从而实现程序的功能。

解释:对于高一级机器上程序中的每一条语句或指令,都是转去执行低一级机器上的一段等效程序。执行完之后,再去高一级机器上取下一条语句或指令,再进行解释执行,重复上述过

程直到执行完整个程序。

物理机和虚拟机的概念是什么?(判断题概率高,可能混淆概念)

物理机:用硬件或者固件实现的机器(层次结构中微程序机器级和传统机器语言机器级)

虚拟机:由软件实现的机器。虚拟机中某些操作也可以用硬件或者固件来实现。固件:具有软件功能的硬件。

【习题1.3】简答题:常见的计算机系统结构分类法有哪三种?它们各是按什么来分类的?分为哪几类?

1.2 计算机系统的设计(判断、计算)

Amdahl定律是什么?有什么重点?

通过缩短一个系统中某个部件的执行时间,可以提高整个系统的执行时间,但是受限于该部件的执行时间占系统总执行时间的百分比。

改进前

系统的加速比=

系统执行时间

系统执行时间

改进后

与部件有关的两个量:

(可改进比例):在改进之前,可改进部分的执行时间占系统执行时间的百分比

(部件加速比):改进之后,可改进部分执行时间相较于改进前,缩短的倍数。

改进后程序的总执行时间T

n

系统加速比

重要推论:如果只针对整个任务的一部分进行改进和优化,那么所获得的加速比不超过:

CPU性能公式是什么?有什么重点?

CPU性能公式就是求CPU时间的一个公式,也就是说CPU性能由CPU的时间来表示,一共有三种表示方式。

CPU时间:执行一个程序所需的CPU时间

公式1:CPU时间=执行程序所需的时钟周期数×时钟周期时间(T)

公式2:CPU时间=IC×CPI×时钟周期时间(T)

IC:对于该程序来讲,所执行的指令的条数

CPI:每条指令执行的平均时钟周期数

由此看出,CPU的性能取决于IC,CPU以及时钟周期时间

公式3:CPU时间=

时钟周期时间

拓展:CPI可以表示为

时钟周期数

=

IC

C

判断并改错:CPU的性能公式为CPU时间=CPI×时钟周期时间。

×,CPU性能公式可能有三种情况:

CPU时间=执行程序所需的时钟周期数×时钟周期时间

分区 期末考试 的第2 页

CPU时间=IC×CPI×时钟周期时间

CPU时间=

n

i

1

CPI

i

IC

i

时钟周期时间

判断并改错:CPI可以用CPI=

来表示。

×,CPI公式应为:

时钟周期数

i

时钟周期数

=

IC

C

简答题:计算机系统设计的主要方法有哪些?哪种方法最好,为什么?

计算机系统设计的主要方法有三种,分别是:“由上往下”设计,“由下往上”设计,“从中间开始”设计。

其中“从中间开始”设计的方法最好。

原因:“由上往下”设计和“由下往上”设计存在软硬件设计分离和脱节的缺点。而“从中间开始”设计的方法是通过首先进行软硬件功能分配,确定好这个界面,然后从这个界面开始,软

件设计者开始往上设计操作系统、汇编、编译系统等,硬件设计者开始往下设计传统机器级、微程序机器级等。这种软件和硬件并行设计可以缩短设计周期,设计过程中可以交流协调,是一

种交互式的、很好的设计方法。

【习题1.4】简答题:“从中间开始”设计,的中间是指什么?这样设计的好处是什么?

这里的中间,实质就是软硬交界面,在层次结构中是第二层传统机器语言机器级和第三层操作系统机器级之间的界面。

好处:这种软件和硬件并行设计可以缩短设计周期,设计过程中可以交流协调,是一种交互式的、很好的设计方法。

1.4 计算机系统结构的发展

简答、综述题:冯诺依曼结构的缺陷是什么,可以从哪些角度去改进?

缺陷:1.以运算器为中心,所有部件的操作都由控制器集中控制。导致它的输入输出的操作只能串行执行。2.指令操作是顺序执行的,没有真正的实现并行执行。

改进角度:对输入输出方式进行改进。如图所示有三大类的输入输出方式,从上到下使CPU进一步从输入输出的管理工作中解放出来。如程序等待方式还需要CPU每次等待输入输出操作完

成才能继续执行,而到了DMA方式,CPU不需要每次都等待,而是一批数据传输完成之后再进行干预,最后的I/O通道方式则更大程度的解放了CPU,让部件尽可能自己控制完成输入输

出。

冯诺依曼结构的特点是哪些?

简答题:系列机是什么?是如何实现可移植性的?

系列机是由同一厂家生产的具有相同系统结构,但具有不同组成和实现的一系列不同型号的机器。

这些计算机有相同的指令系统,所以从机器语言程序员角度来看,同一系列的各档计算机的属性都是相同的,因此这个属性编制或编译生成的二进制代码都能够不加修改的通用于各档计算

机。向后兼容是系列机的根本特征。

分区 期末考试 的第3 页

系列机的四种软件兼容是什么?

其中向后兼容是系列机的根本特征。

兼容机和系列机的区别?

系列机:由同一厂家生产的具有相同系统结构,但具有不同组成和实现的一系列不同型号的机器。

兼容机:是由不同公司厂家生产的具有相同系统结构的计算机

区别:是否由同一公司厂家生产。

软件的可移植性是什么?有哪些方法可以实现?

定义:一个软件可以不经修改或者只需少量修改就可以由一台机器移植到另一台机器上正确地运行。差别只是执行时间不同。我们称这两台机器是软件兼容的,也就是软件的可移植性。

实现方法:1.统一高级语言2.采用系列机3.模拟与仿真

【习题1.5】实现软件可移植性的常用方法有哪几种?并简述其含义。

实现软件可移植性的常用方法有三种,分别是统一高级语言、采用系列机、模拟与仿真。

(1)统一高级语言是一种理想方法,难以实现。

(2)采用系列机是指使用由同一厂家生产的具有相同系统结构,但具有不同组成和实现的一系列不同型号的机器来实现软件兼容。

(3)模拟与仿真一个是用软件的方法在一台现有的机器(称为宿主机)上实现另一台机器(称为虚拟机)的指令集。另一个是用一台现有机器(宿主机)上的微程序去解释实现另一台机

器(目标机)上的指令集。

判断并改错:可移植性是指一个软件可以移植到另一台机器上。

×,可移植性是指一个软件可以不经修改或者只需少量修改就可以由一台机器移植到另一台机器上正确地运行。差别只是执行时间不同。我们称这两台机器是软件兼容的,也就是软件的可

移植性。

简答题:模拟与仿真分别指什么?区别是什么?

模拟:用软件的方法在一台现有的机器(称为宿主机)上实现另一台机器(称为虚拟机)的指令集。

仿真:用一台现有机器(宿主机)上的微程序去解释实现另一台机器(目标机)上的指令集。

区别:

(1)仿真是用宿主机上的微程序来解释执行的,而模拟是用宿主机上的机器语言解释执行的。

(2)仿真的运行速度比模拟快。

(3)仿真只能在两台计算机系统结构相差不大的情况下使用,而模拟可以在不同系统结构的机器之间使用。

1.5 计算机系统结构中并行性的发展

并行性、同时性和并发性有什么区别?

并行性:计算机系统在同一时刻或者同一时间间隔内进行多种运算或操作。

同时性:两个或两个以上的事件在同一时刻发生。

并发性:两个或两个以上的事件在同一时间间隔内发生。

【习题1.6】简答题:分别从执行程序角度和处理数据角度来看,计算机系统中并行性等级从低到高可以分成哪几级?

分区 期末考试 的第4 页

第二章指令系统的设计

2.1 指令系统结构的分类

简答题:指令系统的分类是什么?分类的依据是什么?

指令系统可以分为三类分别是:堆栈结构、累加器结构和通用寄存器结构

分类的依据:CPU中用来存储操作数的存储单元的类型

操作数给出的两种方式是什么?分别表示什么含义。

对于不同类型的结构,操作数的位置、个数以及操作数的给出方式也会不同。、

显式给出:用指令字中的操作数字段给出

隐式给出:使用事先约定好的单元

判断并改错:load X 指令中的操作数是显式给出的。

×,load X指令中的操作数是隐式给出的。因为load指令是将存储器中的内容取到寄存器中,这里没有指明是哪个寄存器,说明寄存器这个操作数是隐式给出的。

根据一条指令中有几个操作数地址,可以将指令分成哪几类?简单描述一下。

可以将指令分成:三地址指令、二地址指令、单地址指令和零地址指令。

(1)三地址指令:

op

A1

A2

A3

功能:(A1)op(A2)→A3

适用:大、中型机

(2)二地址指令:

op

A1A2

功能:(A1)op(A2)→A1

适用:广泛应用

分类(根据操作数的物理位置):

(3)一地址指令:

op

A1

功能:(AC)op(A1)→A1 其中,AC是默认给出的位置

适用:“+1”,“-1”,“求反”

(4)零地址指令

op

功能:op

适用:“停机”,"空操作“,”清除“等控制类的指令

指令字长读和机器字长度的区别:

指令字长度:一个指令字包含二进制代码的位数

机器字长:计算机能直接处理的二进制数据的位数

指令系统结构中的“通用寄存器结构”可以再划分为哪两类?特点是什么?

分区 期末考试 的第5 页

注意:在RR结构中要访问内存必须通过load、store,而在RM中可以直接访问。

三种通用寄存器型结构的优缺点是什么?(说不考,但是上课说是重点)

2.2 寻址方式

简答题:请举出5个寻址方式包含指令实例和含义。

2.3 指令系统的设计与优化(不考,但是讲过,这里放几个问题)

硬件实现和软件实现的特点分别是什么?

指令系统的五个基本要求是什么?具体是什么含义?

设计指令系统时,有两种不同的设计策略分别是什么?简写是什么?

分支条件的方法实现有哪些?优缺点是什么?(表格)

2.5 操作数的类型和大小

数据表示和数据结构是什么意思?(这个没说要考,但是上课强调了,我觉得还是很重要)

数据表示:计算机硬件能够直接识别,指令系统可以直接调用的数据类型。

数据结构:由软件进行处理和实现的各种数据类型。

第三章流水线技术

3.1 流水线的基本概念

简答题:什么是流水线?

分区 期末考试 的第6 页

简答题:使用流水线的好处是什么?(不确定)

由于流水线是把一个处理过程分解为了若干个子过程,每个子过程由一个专门的功能部件来实现。因此流水线实际上是把一个大的处理功能部件分解为多个独立的功能部件,并依靠它们的并

行工作来提高处理速度(吞吐率)。

简答题:流水线的特点是什么?

书上原版:

简单版本:

什么是排空时间和通过时间?

判断并改错:通过时间是最后一个任务从进入流水线到流出结果所需要的时间。

×,排空时间是最后一个任务从进入流水线到流出结果所需要的时间。

什么是流水线的瓶颈?

时间最长的段是流水线的瓶颈。

什么是流水线的级和深度?

流水线的级:指流水线中每个子过程及其功能部件,称为级或段。

流水线的深度:流水线的段数(级数)

简答题:流水线的分类有哪些?具体内容是什么?分类标准是什么?

分类名称分类标准子类及其描述备注

分区 期末考试 的第7 页

1.这两个都是属于多功能流水

线

2.对于动态流水线,需要注意

任务进入流水线的时间,避免

在公用段上产生冲突

根据处理机是否具有向量数据表示

3.2 流水线的性能指标(计算题)

流水线的三个性能指标(吞吐率、加速比和效率)定义和计算方法。

公式:n为任务数量,T

k

为流水线所经历的时间

各段时间相等

与各段的时间△t有关

各段时间不相等

n远大于k的时候,实际吞吐率接近最大吞吐率

与瓶颈段的时间有关

分区 期末考试 的第8 页

公式:T

s

为每个任务×其单独需要花费的时间×任务数,T

k

为流水线所经历的时间

各段时间相等

各段时间不相等

各段时间相等

整个流水线的效率等于每段的效率。

各段时间不相等

解决流水线瓶颈问题的两种常用方法?

解决瓶颈前:

(1)细分瓶颈段解决:

解决之后如图:(只不过把粉色部分的方块全部填满了)

(2)重复设置瓶颈段:

分区 期末考试 的第9 页

流水线效率不高的原因?

流水线的额外开销?以及与额外开销有关的几个问题。

流水寄存器延迟开销:

时钟偏移开销:

几个问题:

流水线的级数是不是越多越好?

3.4 流水线的相关与冲突

五段流水线是什么样的?有哪些段,每段的功能是什么?

五段流水线图示:

五段及其完成的操作:

分区 期末考试 的第10 页

判断指令需要多少个周期:

简答题:在五段流水线中,如何解决对同一寄存器访问的冲突?

ID段要对通用寄存器组进行读操作,而WB段要对通用寄存器组进行写操作,为了解决对同一通用寄存器的访问冲突,

我们把写操作安排在前半拍完成,把读操作安排在后半拍完成。

相关的定义是什么?有哪三种相关?

相关:两条指令存在某种依赖关系。如果两条指令相关,可能它们就不能重叠执行或者只能部分重叠执行。

相关的三种类型:数据相关(真数据相关)、名相关、控制相关。

什么是数据相关?

对于两条指令,i在前,j在后。若下面两个条件之一成立,则说明指令j和指令i数据相关。(有数据流动)

(1)指令j使用了指令i的结果。

(2)指令j和指令k数据相关,而指令k又和指令i数据相关。(传递性)

举例:

mov ax,bx

add cx,ax

什么是名相关?包括哪两种?

定义:两条指令使用相同的名,但是并没有数据流动。

名相关两种类型:(均假设指令i在指令j之前)

(1)反相关:指令j写的名和指令i读的名相同

举例:

div F2,F8,F4

add F8,F0,F1

(2)输出相关:指令j和指令i写的名相同

举例:

div F8,F2,F4

add F8,F0,F1

什么是控制相关?两个限制是什么?

定义:由分支指令引起的相关。

两个限制:

分区 期末考试 的第11 页

判断并改错:输出相关是数据相关。

×,输出相关是名相关。

什么是流水线冲突?

流水线冲突是指对于具体的流水线来说,由于相关的存在,使得指令流中的下一条指令不能在指定的时钟周期执行。

冲突的三种类型是什么?

简答题:下面这段代码中存在什么冲突?

三种类型冲突情况举例,以及解决办法。

(1)结构冲突:

举例:由于流水线处理机只有一个存储器,数据和指令放在一起。所以在IF段和MEM段可能会产生结构冲突。

解决方法:

插入“流水线气泡”——引入暂停

设置独立的指存和数存或者设置独立的指令cache和数据cache

(2)数据冲突:(作答的时候要具体到这三种中的一种)

三种类型:(假设指令i在指令j之前)

①写后读冲突(RAW):在指令i写入之前,指令j先读了。j读到的内容是还没有更新的,是错误的。——真数据相关

②写后写冲突(WAW):在指令i写入之前,指令j先写了,所以最后写入的结果是错误的。——输出相关

写后写只会发生在不止一个段可以写入的情况,这里的经典5段流水线不存在这种冲突。

③读后写冲突(WAR):在指令i读之前,指令j先写了,所以i读出的内容是j写后的,所以是错误的。——反相关

举例:

图中从第二条指令开始,后面所有指令都需要读R1,

但是第一条指令要在第5个周期的时候才会把R1写入,

会造成写后读冲突。

可以使用定向技术来解决。

注意:并不是所有的数据冲突都可以用定向技术解决

如果需要定向的是在前面,那么就只能通过引入"气泡"

的方式来解决冲突了。

其他解决数据冲突的方法:依靠编译器(指令调度或叫

流水线调度)

注意:调度之后可能还是存在冲突需要使用上面提到的

分区 期末考试 的第12 页

注意:并不是所有的数据冲突都可以用定向技术解决

如果需要定向的是在前面,那么就只能通过引入"气泡"

的方式来解决冲突了。

其他解决数据冲突的方法:依靠编译器(指令调度或叫

流水线调度)

注意:调度之后可能还是存在冲突需要使用上面提到的

两种方法,进一步解决。

简答题:通过调度之后的下列指令,有没有完全解决冲突呢?如果没有请指出是什么冲突,应该怎么解决?

简答题:图中哪些指令不能用定向技术来解决冲突?哪应该用什么方法来解决?

第七章存储系统

7.1 存储系统的基本知识

简答题:存储系统的层次结构解决什么问题?

存储系统的层次结构主要是解决了人们对于存储器系统的要求互相矛盾的问题(容量大、速度快、价格低)

矛盾原因:

速度越快,每位价格越高

容量越大,每位价格越低

容量越大,速度越慢

简答题:存储系统的层次结构的概念是什么?(什么是存储系统的层次结构?)

根据程序访问的局部性原理(时间局部性和空间局部性),采用多种存储器技术利用多个容量和速度不同的存储器组成一个多级层次存储系统,来满足容量大、速度快、价格低这三个要求。

这些存储器随着距离CPU的远近不同,其容量和速度也不同。距离CPU较远的存储器容量大,但速度相对较慢,每位价格更便宜;距离CPU近的存储器速度快,但是容量相对较小,每位价格较

高。除此之外,这些存储器之间具有包含关系,距离CPU近的存储器是距离CPU较远的存储器的一个子集。如:在Cache-主存-辅存的多级层次存储器系统中,主存包含Cache中的全部内容,

而辅存包含主存中的全部内容。

简答题:存储器的性能参数有哪些?

1.存储器容量S

存储器的容量一般来说是各级存储器中容量最大的那个。如由Cache-主存组成的系统中,存储器容量就是主存的容量

2.存储系统的平均每位价格C

C

1

S

总价

C=

=

容量

3.命中率H

命中率定义为在M1中找到所需信息的概率,公式为:

N

1

H=

N

1

+N

2

其中N1,N2分别表示访问M1和M2的次数。

不命中率F=1-H

4.

平均访存时间T

A

首先说一下两种情况下的访问时间:

分区 期末考试 的第13 页

①命中时,访问时间为T1,也叫命中时间

②不命中时,(对于二级存储系统)则需要在M2中进行访问。此时的访问时间为:T2+T

B

+T1=T1+T

M

其中:

T2:访问M2的时间(查找到信息块)T

M

=T2+T

B

,也叫做不命中开销。

T

B

:从M2传送一个信息块到M1所需要的时间

指的是向M2发出请求,到把信息块调入M1所花的时间,包括查找和调入两个过程。

T1:访问M1中该信息块所需要的时间

平均访存时间:

T

A

=

即:平均访存时间=命中时间+不命中率×不命中开销

简答题:说明Cache-主存和主存-辅存层次的区别

7.2 Cache基本知识

简答题:映像规则有哪几种?请简单说明

映像规则一共有三种:全相联映像、直接映像和组相联映像

(1)全相联映像:主存中的某一块可以放在Cache中的任何一块

如:主存中的9号块可以放在Cache中所有阴影位置(所有Cache块)

(2)直接映像:主存中的某一块与Cache中的唯一一块对应

如:主存中的9号块,根据直接映像的规则只能放在Cache中的1号块。

其规则为:

=i mod M,其中j为Cache中的块号,i为主存中的块号,M为Cache的总块数。

其中由于

=2,所以主存地址中块地址的低m位就是表示Cache中的某一块。

(直接映像也可以看做组相联映像的特殊情况,即每组只有一个块,相联度为1)

(3)组相联映像:主存中的某一块根据组相联映像规则可以放在Cache中的唯一一组的任何一个位置

分区 期末考试 的第14 页

如:主存中的9号块,根据组相联映像可以放在第1组的任意一个位置。

其规则为:

k=i mod G,其中k为Cache中的组号,i为主存中的块号,G为组的个数(

与直接映像一样,由于G=2,因此可利用主存地址中块地址的低g位去找到Cache中的某个组。

g

Cache块数M

相联度

简答题:相联度越高越好吗?会降低不命中率吗?(见7.3 关于提高相联度来降低Cache不命中率的问题)

简答题:根据下图解释4路组相联的原理是什么?

这里画出的是一个目录存储器部分,包括标识存储器和4个比较器。

当CPU访存时,首先利用块地址中索引部分作为地址,从标识存储器中选择一行(也就是对应Cache中的某一组),并且读出当前这一组中每个Cache块对应的主存地址的块号(也就是4

个标识),同时也从Cache中读出这索引所对应的组的4个信息字。然后将之前从标识存储器读出的4个标识与主存地址中的标识比较,以确定是否命中以及选取该组中的哪一块送给

CPU(若命中),然后选取4个中符合条的那个信息字,送给CPU,本次访存就完成了。

所需硬件:

组数

路数

标识位数

的存储器和n个h位的比较器。

简答题:我们从存储器中找到我们想要访问的信息的时候,主存-地址变换和访问Cache存储这两个步骤会同时进行吗?若是,利用什么方法可以实现并行查找呢?

对于采用全相联映像的情况来说是要先进行主存→Cache地址变换,得到Cache地址之后再去访问Cache存储体。(因为全相联映射到了Cache的全部,所以若同时进行就会把Cache的

内容全部读出来,费时费力)

但是对于采用直接映像或组相联映像的情况,为了提高访问速度,一般是把“主存→Cache”地址变换和访问Cache存储体安排成同时进行。

过程概述:先根据索引把所有候选位置读出来,然后再比较标识,选取符合条件的信息字,读取并传送给CPU。

有两种方法实现:

①用相联存储器实现;

②采用单体多字的按地址访问的存储器和比较器来实现;(上面有详细的过程)

补充:“主存-Cache”地址变换其实就是查找Cache中目录表的一个过程

相联存储器的实现原理和过程?

简答题:标识和索引的区别是什么?

标识索引

主存块地址中的位置主存块地址得到高位主存块地址的低位

含义

是否比较

唯一确定一个主存块唯一确定Cache中的一个组

需要比较不需要比较(注:全相联映像没有索引)

简答题:请叙述一下Cache的工作过程?

这里以一个例子来说明:

分区 期末考试 的第15 页

Alpha AXP 21064的读写操作

Alpha AXP 21064中的Cache介绍:

容量

块数

8KB=32*256=2

256

13

块大小

写策略

32字节

写直达法(写入Cache且写入主存,替换时不用写回)注:有写缓冲器

映像规则直接映像(每组中只有一个块)

读数据:

(1)CPU将34位的物理地址传送给Cache

(2)一方面,用8位的索引查找目录表,选定一项并且读出相应的标识和有效位,并且和主存块地址中的标识比较并确认有效位是否为“1”;另一方面,用索引去选择Cache块,然后用块

内位移的高两位(作为块内偏移)从Cache块中读取数据字。(由于是直接映像,所以索引只对应了一个Cache块,如果是组相联,候选位置需全部读出。)

(3)教材中的第③步,我放(2)中了,关于有效位比较问题。

(4)若能够匹配标识且有效位为“1”,意味着读命中,发信号通知CPU取走数据即可。

(5)若读不命中,Cache就向CPU 发送一个暂停信号,让CPU等待,需要从下一级存储器调入一个数据块。

a)若索引所对应的组内有空位,则直接调入。

b)若索引所对应的组内没有空位,则需要按照一定的替换算法替换掉,并且根据写策略选择是否需要把被替换块写回。

这里由于是直接映像和写直达法,所以每次不命中必然会替换,且不用写回被替换块。(之前写直达已经写进主存了)

成功调入之后,再重复(1)(2)(3)(4)

写数据:

(1)CPU将34位的物理地址传送给Cache

(2)用8位的索引查找目录表,选定一项并且读出相应的标识和有效位,并且和主存块地址中的标识比较并确认有效位是否为“1”;

(3)若能够匹配标识且有效位为“1”,意味着写命中。就可以确定所要写的Cache块,然后将数据写入Cache。由于Alpha AXP 21064设置了一个写缓冲器来减少写停顿,因此(当写缓冲

器不满)还需要将数据和完整的地址(应该就是主存地址,因为要定位主存内的地址)写入缓冲器,此时CPU已经完成了“写”访问,将继续执行其他任务。然后由写缓存器独立的完

成写入主存的工作。

注:写入缓冲器的时候,需要检查本次写入数据的地址是否和已经存在的有效块地址一样,若一样就需要合并这两块的数据。这个也叫写缓冲合并。

(4)若写不命中,则会让数据绕过Cache,直接写入主存。

另一个例子是Alpha AXP 21264,其Cache特点:

容量

块数

块大小

写策略

64KB=2

8

×2

10

=2

18

1024

64字节

写回法(只写入Cache,不写入主存,替换时需要写回被替换块,没有写缓冲器,因为不需要经常写入主存)

映像规则两路相联

替换策略最近最少使用替换算法(LRU)

简答题:替换算法有哪几种?(不需要具体)

有三种:随机法、先进先出法、最近最少使用法(LRU)

优点

随机法

先进先出法

简单,易于用硬件实现

容易实现

缺点

没有考虑Cache块过去被使用的情况,无法反映程序的局部性原理,命中率比较低

不能正确的反映程序的局部性原理,因为最先进入的块可能也是经常会用到的块

最近最少使用法(LRU)能较好的反映程序的局部性原理,命中率最高比较复杂,硬件实现成本高

注:对于容量比较大的Cache来说,LRU和随机法命中率差不多

补充:

分区 期末考试 的第16 页

简答题:写策略有哪两种,区别是什么?

写策略包括写直达法和写回法。

别名

写直达法存直达法

过程

执行写操作时,不仅把数据写入Cache中相应块,而且也写入下一

级存储器,保证下一级存储器的数据都是最新的。

替换时是否写回:不需要,因为已经是最新的了

是否需要写缓冲器:需要,因为要写入主存,写缓冲器可以减少

CPU等待

写回法拷回法执行写操作时,只把数据写Cache,数据的最新版本只在Cache

中,只有发生替换的时候,才会写入下一次存储器。

速度快,对存储器带宽要求不高按写分配法:需要先把将要写的块,从下一级

存储器调入Cache中再进行写入。

优点不命中时策略

易于实现,下一级存储器数据始终是最不按写分配(绕写法):直接写入下一级存储

新的,适合I/O和多处理机器,不需要把相依的块调入Cache

替换时是否写回:需要,需要更新下一级存储器

是否需要写缓冲器:不需要,因为不是经常需要写下一级存储器

计算题:关于Cache的性能分析书P205-206 例7.1 7.2

Cache性能分析,公式归纳:

(1)平均访存时间:

(2)CPU时间:(衡量CPU性能)

存储器停顿周期数:

简化为

CPU时间(代入存储器停顿周期数)

使用IC×CPI形式:

注意:

①这里的时间可以是用时钟周期数表示也可以用时间单位表示,尤其是要注意不命中开销

②衡量CPU性能的是CPU时间,而不是平均访存时间或不命中率

③计算完成之后一定要叙述分析比较结果,否则会扣分

7.3 降低Cache不命中率

简答题:有哪三种类型的不命中?(按照不命中的原因,可以分为哪几种?)

(1)

强制性不命中(也叫冷启动不命中或首次访问不命中)

程序运行过程中,第一次要访问某块,但是这块不在Cache中,需要从下一级存储器调入才可以,那么这时候发生的不命中就叫做强制性不命中。

这种不命中通常是不可避免的,并且如果第K级Cache为空,则必然会发生强制性不命中。

(2)

容量不命中

由于程序在执行的时候,所需要的块不能完全调入Cache中(由于Cache容量有限),当某些块被替换出去之后,不久又被访问时的不命中叫做容量不命中。

程序通常会分几个阶段执行(比如循环:分内层、外层),每个阶段会取几个块,这些块叫工作集,如果工作集超过cache的大小,就会发生由于cache容量不足而导致的不命中,即容量不命中。

(3)

冲突不命中(也叫碰撞不命中或干扰不命中)

在组相联cache和直接映像cache中,由于内存中的多个块对应cache中的一个组,如果某组中的某个块被替换出去之后,不久后又想访问它,这时候发生的不命中就叫做冲突不命中。

分区 期末考试 的第17 页

简答题:三种不命中指的是哪三种?解决方案是什么?

判断题:相联度越高,强制性不命中越低。

×,相联度只影响冲突不命中。

判断题:强制性不命中和容量不命中受到相联度的影响。

×,只有冲突不命中才会受到相联度的影响。

简答题:为什么增加Cache块大小增加到一定程度,不命中率不下降反而上升了?(对于给定Cache容量,当块大小增加时,不命中率开始是下降,为什么后面反而上升了?)

(1)当cache容量一定的时候,增加块的大小,提高了空间局部性,所以就减少了强制性不命中。

(2)随着cache块的大小增大,必然会导致cache块的数目减少,就会增加冲突不命中的可能。一方面会降低不命中率,一方面会增加不命中率,主要看这两种影响在实际中谁更大。

(3)另外,增加块大小会使不命中开销增加

补充:

简答题:什么是伪相联,其基本实现原理是什么?

定义:

伪相联又叫列相联

C

ache。它既能获得多路组相联Cache的低不命中率,又能保持直接映像Cache的命中速度。

当其进行访问时,先按照与直接映像相同的方式访问,若命中(正常命中)则取出相应数据,送往

CPU

;若不命中,则检查另一个位置看是否匹配,此时若命中(伪命中),还是取数据送

CPU

,否则就需要访

问下一级存储器。

实现原理:

伪相联Cache基本思想及工作原理是在逻辑上把直接映像Cache的空间上下平分为两个区。

(1)当对伪相联Cache进行访问的时候,首先是按照和直接映像的方式去访问

命中(标识匹配),则通知CPU将数据取走。

不命中则执行(2)

(2)去找“伪相联组”中的另一个Cache块(通常是将索引字段的最高位去反)

命中(标识匹配),则此时的命中叫做伪命中,通知CPU将数据取走。

不命中,则需要去访问下一级的存储器。

注意:正常命中和伪命中的时间一快一慢,为了优化,所以我们通常会在出现伪命中的时候交换“伪相联组”中的两个块的内容。

简答题:通过哪些方式可以降低不命中率?

分区 期末考试 的第18 页

简答题:什么是牺牲Cache?实现原理是什么?

牺牲Cache是指在Cache和下一级存储器的数据通路上增设一个全相联小Cache,存放因冲突而被替换出的块。每当发生不命中的时候,先检查牺牲Cache中是否有对应的块,如果有就按照替换规则交换。

这样就可以减少不命中率,但是牺牲Cache只在替换的时候发生作用。

7.4 减少Cache不命中开销(计算题)

简答题:通过哪些方式可以降低不命中开销?

简答题:采用两级Cache的平均访存时间和不命中率的公式是什么?

7.5 减少命中时间

分区 期末考试 的第19 页


本文标签: 指令 时间 实现 命中 结构