高级计算机体系结构期末试题.docx
- 文档编号:7743692
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:11
- 大小:304.80KB
高级计算机体系结构期末试题.docx
《高级计算机体系结构期末试题.docx》由会员分享,可在线阅读,更多相关《高级计算机体系结构期末试题.docx(11页珍藏版)》请在冰豆网上搜索。
高级计算机体系结构期末试题
1.CUP性能公式
评价cache性能公式:
*平均存储访问时间=命中时间+缺失率×缺失代价
*命中时间:
缓冲命中需要的时间。
*Cpu性能公式分析
经典的CPU性能公式
现在我们可以用指令数、CPI和时钟周期时间来写出基本的性能公式:
CPU时间=指令数×CPI×时钟周期时间
CPI:
每条指令的时钟周期数,表示执行某个程序或者程序片段时每条指令所需的时钟周期平均数。
指令数:
执行某程序所需的总指令数量。
或CPU时间=指令数×CPI/时钟频率
这些公式特别有用,因为它们把性能分解为三个关键因素。
我们可用这些公式来比较不同的实现方案或评估某个设计的替代方案。
举例 代码段的比较
一个编译器设计者试图在两个代码序列之间进行选择。
硬件设计者给出了如下数据:
对于某行高级语言语句的实现,两个代码序列所需的指令数量如下:
代码序列1共执行2+1+2=5条指令。
代码序列2共执行4+1+1=6条指令。
所以,代码序列2执行的指令数更多。
基于指令数和CPI,我们可以用CPU时钟周期公式计算出每个代码序列的总时钟周期数为:
因此,代码序列1的CPU时钟周期数=(2×1)+(1×2)+(2×3)=10周期,代码序列2的CPU时钟周期数=(4×1)+(1×2)+(1×3)=9周期。
故代码序列2更快,尽管它多执行了一条指令。
由于代码序列2总时钟周期数较少,而指令数较多,它一定具有较小的CPI。
CPI的计算公式为:
CPI=CPU时钟周期数/指令数
代入相应数据可得CPI1=CPU时钟周期数1/指令数1=10/5=2
CPI2=CPU时钟周期数2/指令数2=9/6=1.5。
重点
图1-14给出了计算机在不同层次上的性能测试指标及其测试单位。
通过这些指标的组合可以计算出程序的执行时间(单位为秒):
执行时间=秒/程序=指令数/程序×时钟周期数/指令×秒/时钟周期
永远记住,唯一能够被完全可靠测量的计算机性能指标是时间。
例如,对指令集减少指令数目的改进可能降低时钟周期时间或提高CPI,从而抵消了改进的效果。
类似地,CPI与执行的指令类型相关,执行指令数最少的代码其执行速度未必是最快的。
图1-14 基本的性能指标及其测量单位
如何确定性能公式中这些因素的值呢?
我们可以通过运行程序来测量CPU的执行时间,并且计算机的说明书中通常介绍了时钟周期时间。
难以测量的是指令数和CPI。
当然,如果确定了时钟频率和CPU执行时间,我们只需要知道指令数或者CPI两者之一,就可以依据性能公式计算出另一个。
用仿真器等软件工具可以测量出指令数,也可以用现代处理器中的硬件计数器来测量执行的指令数、平均CPI和性能损失源等。
由于指令数量取决于计算机体系结构,并不依赖于计算机的具体实现,因而我们可以在不知道计算机全部实现细节的情况下对指令数进行测量。
但是,CPI与计算机的各种设计细节密切相关,包括存储系统和处理器结构(我们将在第4、5章中看到),以及应用程序中不同类型的指令所占的比例。
因此,CPI对于不同应用程序是不同的,对于相同指令集的不同实现方式也是不同的。
上述的例子表明,只用一种因素(如指令数)去评价性能是危险的。
当比较两台计算机时,必须考虑全部三个因素,它们组合起来才能确定执行时间。
如果某个因素相同(如上例中的时钟频率),必须考虑不同的因素,才能确定性能的优劣。
因为CPI随着指令组合(instructionmix)而变化,这样指令的条数和CPU必须被比较,即使时钟频率是相同的。
在本章最后的练习题中,有几个是关于计算机和编译程序的性能评价。
在1.8节,我们将讨论一种因没有全面考虑各种因素而导致的对性能的误解。
理解程序性能
程序的性能与算法、编程语言、编译程序、体系结构以及实际的硬件有关。
下表概括了这些成分是如何影响CPU性能公式中的各种因素的。
精解:
也许你期望CPI最小值为1.0。
在第4章我们将看到,有些处理器在每个时钟周期可对多条指令取指并执行。
有些设计者用IPC(instructionperclockcycle)来代替CPI。
如一个处理器每时钟周期可执行2条指令,则它的IPC=2,CPI=0.5。
2.verlog描述状态机(硬件描述语言(verylog)写状态机)
状态机描述方法:
状态机描述时关键是要描述清楚几个状态机的要素,即如何进行状态转移,每个状态的输出是什么,状态转移的条件等。
常见的三种描述方式:
第一,整个状态机写到一个always模块里面,在该模块中既描述状态转移,又描述状态的输入和输出;
第二,用两个always模块来描述状态机,其中一个always模块采用同步时序描述状态转移;另一个模块采用组合逻辑判断状态转移条件,描述状态转移规律以输出。
第三,在两个awlays模块描述方法基础上,使用三个awlays模块,一个awlays模块采用同步时序描述状态转移;另一个模块采用组合逻辑判断状态转移条件,描述状态转移规律;另一个awlays模块描述状态的输出(可以组合电路输出,也可以时序电路输出)。
状态机采用VerylogHDL语言编码,建议分为三个always段完成。
三段式建模描述FSM的状态机输出时,只需指定case敏感表为次态寄存器,然后直接在每个次态寄存器的case分支中描述该状态的输出即可,不用考虑状态转移条件。
//状态机设计的例子
moduleFSM(clk,clr,out,start,step2,step3);
inputclk,clr,start,step2,step3;
output[2:
0]out;
reg[2:
0]out;
reg[1:
0]state,next_state;
parameter state0=2'b00,state1=2'b01,
state2=2'b11,state3=2'b10;
always@(posedgeclkorposedgeclr)
begin
if(clr)state<=state0;
elsestate<=next_state;
end
always@(stateorstartorstep2orstep3)
begin
case(state)
state0:
begin
if(start) next_state<=state1;
else next_state<=state0;
end
state1:
begin
next_state<=state2;
end
state2:
begin
if(step2) next_state<=state3;
else next_state<=state0;
end
state3:
begin
if(step3) next_state<=state0;
else next_state<=state3;
end
default:
next_state<=state0;
endcase
end
always@(state)
begin
case(state)
state0:
out=3'b001;
state1:
out=3'b010;
state2:
out=3'b100;
state3:
out=3'b111;
default:
out=3'b001;
endcase
end
3.流水线数据相关性及解决方法
流水线的概念
流水线:
把一个重复的过程分解为若干子过程,每个子过程由专门的功能部件来实现。
将多个处理过程在时间错开,依次通过各功能段,每个子过程就可以与其他子过程并行进行。
相关:
指两条指令之间存在某种依赖关系。
3种类型:
数据相关、名相关、控制相关
(1)数据相关
依次存在两条指令i(在前)和j(在后),若指令j使用指令i产生的结果或指令j与k数据相关,而k又与指令i数据相关,则称j与i数据相关。
(2)名相关
名:
指指令所访问的寄存器或存储单元名称。
名相关:
指两条指令使用的名相同,但没有数据流动,则称它们名相关。
(3)控制相关
控制相关是指由分支指令引起的相关。
它需要根据分支指令的执行结果来确定后续指令是否执行。
一般说来,为确保程序应有的执行顺序,必须严格按控制相关确定的顺序执行
(3)控制相关
控制相关是指由分支指令引起的相关。
它需要根据分支指令的执行结果来确定后续指令是否执行。
一般说来,为确保程序应有的执行顺序,必须严格按控制相关确定的顺序执行
流水线冲突:
指对于具体的流水线来说,由于相关的存在,使得指令流中的下一条指令不能在特定的时钟周期执行。
流水线冲突有三种类型:
结构冲突、数据冲突、控制冲突。
(1)结构冲突
定义:
因硬件资源满足不了指令重叠执行的要求而发生的冲突。
解决方案:
a、可以在前一个指令访问存储器时,将流水线停顿一个时钟,推迟后面取指令的操作。
停顿周期称为“流水线气泡”。
b、在流水线处理机中设置相互独立的指令。
存储器和数据存储器
(2)数据冲突
定义:
当指令在流水线重叠执行时,因需要用到前面的执行结果而发生的冲突。
分类:
写后读冲突、写后写冲突、读后写冲突。
解决方案:
①通过定向技术减少数据冲突引起的停顿。
②设置流水线互锁机制。
③依靠编译器解决数据冲突
(3)控制冲突
定义:
流水线遇到分支指令和其他会改变PC值的指令所引起的冲突。
解决方案:
最简单的方法是“冻结”或者“排空”。
就是一旦在流水线的译码段ID检测到分支指令,就暂停执行后的所有指令,直到分支指令达到MEM段、确定是否成功并计算出新的pc值为止。
4.cache一致性
现代并行机中,为了提高处理器的速度,处理器往往带有Cache。
一个数据在整个系统内可能有多份拷贝,这就引发了Cache一致性问题。
Cache一致性问题是指在含有多个Cache的并行系统中,数据的多个副本(因为没有同步更新)而造成不一致的问题。
可能由于多个处理器共享一个可写变量造成的Cache不一致;还有比如进程迁移和某些I/O操作等。
Cache一致性问题是指在含有多个cache的并行系统中,数据的多个副本(因为没有同步更新)而造成的不一致问题。
以上的例子是由于多个处理器共享一个可写变量造成的cache不一致。
还有其他原因也会造成cache一致性问题,比如进程迁移和某些I/O操作等。
事务内存
事务内存是一种并行程序设计的方式,其来自于数据库管理系统(DBMS)中的事务(Transaction)概念。
事务内存目前有两种实现方式,基于软件的STM(SoftwareTransactionalMemory)和基于硬件的HTM(HardwareTransacationalMemory)。
事务内存的分类和涉及到的基本术语
事务内存按照更新数据时的机制不同,可分为 延迟更新(deferred-update)和 直接更新 (direct-update)两大类。
延迟更新软件事务内存实现的基本思想是一个线程对仅对对象的一个副本进行改变,如果此次执行不与其他线程发生同步冲突,则此事务成功并执行提交(Commit)动作,如果失败则执行回滚(Abort或Rollback)动作。
直接更新则是直接对对象进行更新,并使用显式的同步语句避免其他事物在进行更新的时候修改此对象。
显然在直接更新时需要系统记录此对象的原始值,以便在回滚时可以恢复。
根据在事务冲突时的处理机制不同,TM又可以分为 悲观和乐观的并发控制(pessimistic&optimisticconcurrencycontrol)两大类。
在悲观的并发控制中,冲突一旦发生就必须要得到侦测并加以解决,而在乐观的并发控制里,冲突的侦测和解决可以延迟,只要是在事务提交之前进行就可以了。
事务还有粒度(granularity)的概念:
最容易让程序员理解的粒度是对象粒度;在此粒度下,任何冲突发生的判决是在对象范围内进行的:
即使两个事务修改的内存块不重合,只要他们是在同一个对象内,那么就可以判断这两个事务冲突。
更精细的粒度是字粒度(wordgranularity)和字节粒度(bytegranularity),在这两种粒度下,冲突的检测更精细,更利于事务内存系统性能的提升,但是却会给程序员带来不小的麻烦。
软件事务内存(STM)
软件事务内存的实现包括原子对象(Atomicobject)、冲突判决器(Conflictmanager)。
其中原子对象的实现是最重要的,它是各事务之间通信同步的媒介。
原子对象的实现又分为顺序性实现和事务实现:
其中事务实现还要要求实现同步和恢复(recovery)功能,同步功能即意味着要求有检测事务冲突的能力,而恢复功能则意味着需要在事务失败的时候将对象回滚到事务执行之前的状态。
目前提出的原子对象一般是基于读/写冲突(Read/Writeconflict)的机制:
原子对象提供两个接口,一个为读接口,一个为写接口,通过读接口可以得到一个可以读的对象,而通过写接口则可以得到一个可以写的对象。
为了检测冲突(即多个事务并发时的同步情况),事务中可以设立两个集合,一个为读集(Readset),一个为写集(Writeset),分别记录该事务所要处理的读写原子对象集。
如果一个事务的读集或写集与另一个事务的写集有交叉,则表明两个事务冲突,需要冲突判决器进一步采取决策。
硬件事务内存(HTM)
AzulSystems在20XX年推出的Vega2微处理器支援硬件事务内存。
可以看出,事务内存的出现就是为了解决并行编程存储一致性和性能矛盾的问题,传统的锁机制会导致性能低下,并且可扩展星差,而事务内存,则尝试在体系结构和程序员之间定义一个新的一致性,也即事务一致性,对应的内存模型叫做事务内存。
从上面一段话可以看出,硬件事务内存有很多问题需要解决,包括版本管理,以及冲突管理,而对于硬件,只有有限的资源,因此,这就限制了事务的长度,使(硬件)事务内存的实现难度和实用性大大降低,这也许是Rock难产的原因之一。
5.多核下需要资源互连,分析总线与片上网络的优缺点
多核芯片上的多个核心虽然各自执行自己的代码,但是不同核心间可能需要进行数据的共享和同步,因此片上通信结构的性能将直接影响处理器的性能。
当前片上通信主要有3 种方式:
总线共享、交叉开关互连和片上网络(network on chip,NOC)。
总线共享结构是指片上核心、输入输出端口以及存储器通过共享二级或三级Cache,或者通过连接核心的总线进行通信。
总线结构的长处是较为简单,易于设计实现,当前多数双核和四核处理器基本上都采用了该结构,但缺点是总线结构可扩展性较差,适用于核心数较少的情况。
片上网络(NoC)是基于多处理器技术的一种新型的计算集成形式,涉及硬件通信结构、中间件、操作系统通信服务、设计方法及工具等。
基于NoC的系统能很好地适应在现在复杂SoC设计中常使用的多异步时钟。
片上网络是把互连网络用于片上系统设计,解决片上组件之间的通信问题,它借鉴了并行计算机的互联网络。
片上网络与并行计算机的互连相比有很多相同点:
支持包通信、可扩展、提供透明的通信服务等;但也有不同之处:
片上网络技术支持同时访问,而且有可靠性高以及可重用性高等特点。
它与总线结构、交叉开关结构相比,片上网络可以连接更多IP组件、可靠性高、可扩展性强以及较低的功耗,因此片上网络被认为是更加理想的大规模CMP互连技术。
当前片上网络主要有二维网格网络、3K Tours 等互连结构。
片上网络设计的问题是寻找网络开销和多核耦合程度最佳的平衡,并同时考虑网络的可扩展性。
RAW 处理器就采用了片上二维网络结构,它通过集成高速网络和优化的路由算法,片上核心间的通信延迟最大不会超过6个周期,而且该结构可扩展性强。
这3种结构虽各有优势和不足,但亦可融合,比如在全局范围采用片上网络而在局部选择总线或者交叉开关结构,以实现性能与复杂性的平衡。
优点
通过并发和非阻塞交换获得更高的带宽
通过分组交换获得更高的链路利用率
通过分层协议获得可靠的传输
通过点对点传输获得低功耗
全局异步或准同步的、模块化、可升级的结构
缺点
交换电路和接口增加了电路面积
数据打包、缓冲、同步和接口增加了延迟
缓冲和增加的逻辑造成了功耗增加
与原有IP核接口和协议的兼容问题
6.虚拟化
虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。
在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。
虚拟化技术与多任务以及超线程技术是完全不同的。
多任务是指在一个操作系统中多个程序同时一起运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。
虚拟化技术也与VMwareWorkstation等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 计算机体系结构 期末 试题