高级计算机体系结构知识点汇总.docx
《高级计算机体系结构知识点汇总.docx》由会员分享,可在线阅读,更多相关《高级计算机体系结构知识点汇总.docx(80页珍藏版)》请在冰豆网上搜索。
![高级计算机体系结构知识点汇总.docx](https://file1.bdocx.com/fileroot1/2023-2/4/7c0f3677-b9a4-467c-b24b-01be6a22dcc6/7c0f3677-b9a4-467c-b24b-01be6a22dcc61.gif)
高级计算机体系结构知识点汇总
第1章计算机系统结构的基本概念
多级层次结构
从计算机语言的角度,把计算机系统按功能划分成多级层次结构。
虚拟机器
由软件实现的机器。
解释
语言实现的一种基本技术。
每当一条N+1级指令被译码后,就直接去执行一串等效的N级指令,然后再去取下一条N+1级的指令,依此重复进行。
翻译
语言实现的一种基本技术。
先把N+1级程序全部变换成N级程序后,再去执行新产生的N级程序,在执行过程中N+1级程序不再被访问。
计算机系统结构
程序员所看到的计算机的属性,即概念性结构与功能特性。
经典计算机系统结构概念的实质
计算机系统中软、硬件界面的确定,其界面之上的是软件的功能,界面之下的是硬件和固件的功能。
透明性
在计算机技术中,对本来存在的事物或属性,但从某种角度看又好象不存在的概念称为透明性。
计算机组成
计算机系统的逻辑实现。
计算机实现
计算机系统的物理实现。
氏分类法
氏分类法是用系统的最大并行度对计算机进行分类。
它是由泽云先生于1972年提出的。
最大并行度
计算机系统在单位时间能够处理的最大的二进制位数。
可以用平面直角坐标系中的一个点代表一个计算机系统,其横坐标表示字宽(n位),纵坐标表示一次能同时处理的字数(m字)。
m×n就表示了其最大并行度。
Flynn分类法
按照指令流和数据流的多倍性进行分类,它是M.J.Flynn于1966年提出的。
指令流
机器执行的指令序列。
数据流
由指令流调用的数据序列。
多倍性
在系统受限的部件上,同时处于同一执行阶段的指令或数据的最大数目。
以经常性事件为重点
对于大概率事件(最常见的事件),赋予它优先的处理权和资源使用权,以获得全局的最优结果。
系统的加速比
对系统中的某些部件进行改进,改进后的系统性能与改进前的系统性能之比。
Amdahl定律
加快某部件执行速度所获得的系统性能加速比,受限于该部件在系统中所占的重要性。
可改进比例
在改进前的系统中,可改进部分的执行时间在总的执行时间中所占的比例。
部件加速比
可改进部分改进以后性能提高的倍数。
它是改进前所需的执行时间与改进后执行时间的比。
程序的局部性原理
程序在执行时所访问地址的分布不是随机的,而是相对地簇聚;这种簇聚包括指令和数据两部分。
程序的时间局部性
程序即将用到的信息很可能就是目前正在使用的信息。
程序的空间局部性
程序即将用到的信息很可能与目前正在使用的信息在空间上相邻或者临近。
CPU性能公式
程序执行的CPU时间=CPIIC/时钟频率
IC
程序执行过程中所处理的指令数。
反映了计算机指令集的结构和编译技术。
CPI
指令时钟数。
CPI=总时钟周期数/IC
反映了计算机实现技术、计算机指令集的结构和计算机组织。
响应时间
从事件开始到结束之间的时间,也称为执行时间。
即计算机完成某一任务所花费的全部时间,包括访问磁盘、访问存储器、输入/输出、操作系统开销等。
流量
在单位时间所能完成的工作量。
CPU时间
CPU为用户程序工作的时间,不包含I/O等待时间及运行其他程序的时间。
可细分为用户CPU时间及系统CPU时间。
核心测试程序
由从真实程序中提取的较短但很关键的代码构成。
小测试程序
通常是指代码在几十行到100行的具有一些特定目的的测试程序。
用户可以随时编写一些这样的程序来测试系统的各种功能,并产生用户已预知的输出结果,如皇后问题、迷宫问题、快速排序、求素数、计算π等。
合成测试程序
首先对大量的应用程序中的操作进行统计,得到各种操作比例,再按这个比例构造测试程序。
Whetstone与Dhrystone是最流行的合成测试程序。
基准测试程序套件
为了能比较全面地反映计算机在各个方面的处理性能,通常采用整套测试程序。
这组程序称为基准测试程序套件,它是由各种不同的真实应用程序构成的。
目前最成功和最常见的测试程序套件是SPEC系列。
事务处理测试程序
主要测试在线事务处理(On-LineTransactionProcessing,OLTP)系统的性能,包括数据库访问和更新等。
存储程序计算机
·诺依曼结构计算机
输入/输出方式
程序控制(程序等待、程序中断)、DMA、通道、I/O处理机
相联存储器CAM
可按容访问的存储器。
相联处理机
以相联存储器为核心的处理机。
相联存储器除了完成信息检索任务外,还能进行一些算术逻辑运算。
系列机
由同一厂家生产的具有相同的系统结构,但具有不同组成和实现的一系列不同型号的机器。
软件兼容
同一个软件可以不加修改地运行于系统结构相同的各档机器,而且它们所获得的结果一样,差别只在于运行时间不同。
兼容机
不同厂家生产的具有相同系统结构的计算机。
向上(下)兼容
按某档计算机编制的程序,不加修改的就能运行于比它高(低)档的计算机。
向前(后)兼容
按某个时期投入市场的某种型号机器编制的程序,不加修改地就能运行于在它之前(后)投入市场的机器。
模拟
用软件的方法在一台现有的机器(称为宿主机host)上实现另一台机器(称为虚拟机)的指令集。
仿真
用一台现有机器(称为宿主机)上的微程序去解释实现另一台机器(称为目标机)的指令集。
并行性
在同一时刻或是同一时间间隔完成两种或两种以上性质相同或不相同的工作。
只要时间上互相重叠,就存在并行性。
同时性
两个或多个事件在同一时刻发生的并行性。
并发性
两个或多个事件在同一时间间隔发生的并行性。
字串位串
每次只对一个字的一位进行处理。
这是最基本的串行处理方式。
字串位并
同时对一个字的全部位进行处理,不同字之间是串行的。
字并位串
同时对许多字的同一位(称为位片)进行处理。
全并行
同时对许多字的全部位或部分位进行处理。
指令部并行
单条指令中各微操作之间的并行。
指令级并行
并行执行两条或两条以上的指令。
线程级并行
并行执行两个或两个以上的线程,通常是以一个进程派生的多个线程为调度单位。
任务级或过程级并行
并行执行两个或两个以上的过程或任务(程序段),以子程序或进程为调度单元。
作业或程序级并行
并行执行两个或两个以上的作业或程序。
时间重叠
多个处理过程在时间上相互错开,轮流使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。
资源重复
通过重复设置资源,尤其是硬件资源,大幅度提高计算机系统的性能。
资源共享
是一种软件方法,它使多个任务按一定时间顺序轮流使用同一套硬件设备。
同构型(对称型)多处理机
由多个同类型,至少担负同等功能的处理机组成,同时处理同一作业中能并行执行的多个任务。
异构型(非对称型)多处理机
由多个不同类型,至少担负不同功能的处理机组成,按照作业要求的顺序,利用时间重叠原理,依次对它们的多个任务进行加工,各自完成规定的功能动作。
分布处理系统
把若干台具有独立功能的处理机(或计算机)相互连接起来,在操作系统的全盘控制下,统一协调地工作,而最少依赖集中的程序、数据或硬件。
耦合度
反映多机系统各机器之间物理连接的紧密程度和交互作用能力的强弱。
松散耦合
通过通道或通信线路实现计算机间互连,共享某些外围设备,机间的相互作用是在文件或数据集一级进行。
紧密耦合
机间物理连接的频带较高,它们往往通过总线或高速开关实现互连,可以共享主存。
第2章计算机指令集结构设计
堆栈型机器
其CPU中存储操作数的主要单元是堆栈。
累加器型机器
其CPU中存储操作数的主要单元是累加器。
通用寄存器型机器
CPU中存储操作数的主要单元是通用寄存器。
三种类型指令集结构
根据CPU部存储单元类型,将指令集结构分为堆栈型指令集结构、累加器型指令集结构和通用寄存器型指令集结构。
通用寄存器型指令集结构的三种类型
寄存器-寄存器型(RR:
Register-Register)
寄存器-存储器型(RM:
Register-Memory)
存储器-存储器型(MM:
Memory-Memory)
CISC
复杂指令集计算机。
RISC
精简指令集计算机。
指令集结构的完整性
在一个有限可用的存储空间,对于任何可解的问题,编制计算程序时,指令集所提供的指令足够使用。
指令集结构的规整性
没有或尽可能减少例外的情况和特殊的应用,以及所有运算都能对称、均匀地在存储器单元或寄存器单元之间进行。
规整性主要包括对称性和均匀性。
对称性
指所有与指令集有关的存储单元的使用、操作码的设置等都是对称的。
均匀性
指对于各种不同的操作数类型、字长、操作种类和数据存储单元,指令的设置都要同等对待。
面向高级语言(HL)的机器
采用各种对高级语言和编译程序提供支持的措施,使机器语言和高级语言的语义差距比传统的·诺依曼型机器缩小许多。
这种机器统称为面向高级语言(HL)的机器。
间接执行型高级语言机器
使高级语言成为机器的汇编语言。
即高级语言和机器语言是一一对应的,这种机器称为间接执行型高级语言机器。
直接执行型高级语言机器
高级语言机器本身没有机器语言,或者说高级语言就作为机器语言。
它可以直接由硬件或固件对高级语言源程序的语句逐条进行解释并执行。
这种机器称为直接执行型高级语言机器。
跳转
当控制指令为无条件改变控制流时,称之为跳转。
分支
当控制指令是有条件改变控制流时,称之为分支。
位置无关
代码在执行时与它被载入的位置无关。
操作数类型
面向应用、面向软件系统所处理的各种数据结构。
操作数表示
硬件结构能够识别、指令系统可以直接调用的那些数据结构。
操作数的类型
主要有:
整数(定点)、浮点、十进制、字符、字符串、向量、堆栈等。
变长编码格式
指令的长度是可变的。
定长编码格式
将操作类型和寻址方式组合编码在操作码中,所有指令的长度是固定唯一的。
混合型编码格式
通过提供一定类型的指令字长,期望能够兼顾降低目标代码长度和降低译码复杂度两个目标。
第3章流水线技术
一次重叠执行方式
把执行第k条指令与取第k+l条指令同时进行。
二次重叠执行方式
为了进一步提高执行速度,可以增加指令重叠执行的程度。
把取第k+l条指令提前到与分析第k条指令同时进行,把分析第k+l条指令与执行第k条指令同时进行。
哈佛结构
程序空间和数据空间相互独立,因而具有独立的指令总线和数据总线的系统结构。
先行控制技术
缓冲技术和预处理技术的结合。
缓冲技术
在工作速度不固定的两个功能部件之间设置缓冲器,用以平滑它们的工作。
预处理技术
指预取指令、对指令进行加工以及预取操作数等。
流水线技术
将一个重复的时序过程分解成为若干个子过程,而每一个子过程都可有效地在其专用功能段上与其他子过程同时执行。
时(间)空(间)图
用来描述流水线的工作,横坐标表示时间,纵坐标代表流水线的各段。
流水线的深度
流水线的段数。
通过时间
流水线中第一个任务流出结果所需的时间。
单功能流水线
只能完成一种固定功能的流水线。
功能流水线
流水线的各段可以进行不同的连接,从而使流水线在不同的时间,或者在同一时间完成不同的功能。
TIASC的多功能流水线
静态流水线
在同一时间,流水线的各段只能按同一种功能的连接方式工作。
动态流水线
在同一时间,当某些段正在实现某种运算时,另一些段却在实现另一种运算。
部件级流水线(运算操作流水线)
把处理机的算术逻辑部件分段,以便为各种数据类型进行流水操作。
处理机级流水线(指令流水线)
把解释指令的过程按照流水方式处理。
处理机间流水线(宏流水线)
由两个以上的处理机串行地对同一数据流进行处理,每个处理机完成一项任务。
标量流水处理机
不具有向量数据表示,仅对标量数据进行流水处理的处理机。
向量流水处理机
具有向量数据表示,并通过向量指令对向量的各元素进行处理的流水处理机。
线性流水线
流水线的各段串行连接,没有反馈回路。
非线性流水线
流水线中除有串行连接的通路外,还有反馈回路。
非线性流水线的调度
在非线性流水线中,确定什么时候向流水线引进新的任务,才能使该任务不会与先前进入流水线的任务发生冲突——争用流水段。
顺序流水线
流水线输出端任务流出的顺序与输入端任务流入的顺序完全相同。
每一个任务在流水线的各段中是一个跟着一个顺序流动的。
乱序流水线
流水线输出端任务流出的顺序与输入端任务流入的顺序可以不同,允许后进入流水线的任务先完成(从输出端流出)。
又称为无序流水线、错序流水线、异步流水线。
吞吐率
在单位时间流水线所完成的任务数或输出结果的数量。
最大吞吐率
流水线在连续流动达到稳定状态后所得到的吞吐率。
流水线的瓶颈
流水线中最慢的一段。
消除瓶颈段的两种方法
细分瓶颈段、重复设置瓶颈段
加速比
流水线的速度与等功能的非流水线的速度之比。
效率
流水线的设备利用率。
排空时间
流水线中最后一个任务通过流水线所需的时间。
流水寄存器建立时间
在触发写操作的时钟信号到达之前,寄存器输入必须保持稳定的时间。
流水寄存器传输延迟
时钟信号到达后到寄存器输出可用的时间。
时钟偏移开销
流水线中,时钟到达各流水寄存器的最大差值时间(时钟到达各流水寄存器的时间不是完全相同)。
相关
指两条指令之间存在某种依赖关系。
确定程序中指令之间存在什么样的相关,对于充分发挥流水线的效率有重要的意义。
数据相关
对于两条指令i(在前)和j(在后),如果下述条件之一成立,则称指令j与指令i数据相关:
(1)指令j使用指令i产生的结果;
(2)指令j与指令k数据相关,而指令k又与指令i数据相关。
名
指指令所访问的寄存器或存储器单元的名称。
名相关
如果两条指令使用相同的名,但是它们之间并没有数据流动,则称这两条指令存在名相关。
反相关
如果指令j(在后)写的名与指令i(在前)读的名相同,则称指令i和j发生了反相关。
反相关指令之间的执行顺序是必须严格遵守的,以保证i读的值是正确的。
输出相关
如果指令j(在后)和指令i(在前)写相同的名,则称指令i和j发生了输出相关。
输出相关指令的执行顺序是不能颠倒的,以保证最后的结果是指令j写进去的。
换名技术
通过改变指令中操作数的名来消除名相关。
寄存器换名
对于寄存器操作数进行换名称为寄存器换名。
这个过程既可以用编译器静态实现,也可以用硬件动态完成。
控制相关
由分支指令引起的相关。
它需要根据分支指令的执行结果来确定后续指令是否执行。
流水线冲突
指对于具体的流水线来说,由于相关的存在,使得指令流中的下一条指令不能在指定的时钟周期执行。
结构冲突
因硬件资源满足不了指令重叠执行的要求而发生的冲突。
数据冲突
当相关的指令靠得足够近时,它们在流水线中的重叠执行或者重新排序会改变指令读/写操作数的顺序,使之不同于它们非流水实现时的顺序,则发生了数据冲突。
控制冲突
流水线遇到分支指令和其他会改变PC值的指令所引起的冲突。
流水线气泡
流水线中插入的暂停周期。
定向技术
当流水线中出现数据冲突时,可以将计算结果从其产生的地方直接送到其他指令中需要它的地方,或所有需要它的功能单元,避免暂停。
写后读冲突(RAW)
考虑流水线中的两条指令i和j,且i在j之前进入流水线中,j的执行要用到i的计算结果,当它们在流水线中重叠执行时,j可能在i写入其计算结果之前就先行对保存该结果的寄存器进行读操作,从而得到错误的值。
写后写冲突(WAW)
考虑流水线中的两条指令i和j,且i在j之前进入流水线中,j和i的目的寄存器相同,当它们在流水线中重叠执行时,j可能在i写入其计算结果之前就先行对该结果寄存器进行写操作,从而导致写入顺序错误,在目的寄存器中留下的是i写入的值,而不是j写入的值。
读后写冲突(WAR)
考虑流水线中的两条指令i和j,且i在j之前进入流水线中,j可能在i读取某个源寄存器的容之前就先对该寄存器进行写操作,导致i后来读取到的值是错误的。
流水线调度或指令调度
当流水线中出现冲突时,编译器通过重新排列代码的顺序来消除流水线中的暂停,这种技术称为流水线调度。
冻结或排空流水线
在流水线中,处理分支最简单的方法,保持或清除流水线在分支指令之后读入的任何指令,直到知道分支指令的目标地址以及分支转移是否成功为止。
分支延迟
由分支指令引起的延迟。
预测分支失败的方法
当流水线译码到一条分支指令时,流水线继续取指令,并允许该分支指令后的指令继续在流水线中流动。
当流水线确定分支转移成功与否以及分支的目标地址之后,如果分支转移成功,流水线必须将在分支指令之后取出的所有指令转化为空操作,并在分支的目标地址处重新取出有效的指令;如果分支转移失败,那么可以将分支指令看作是一条普通指令,流水线正常流动,无需将在分支指令之后取出的所有指令转化为空操作。
预测分支成功的方法
一旦流水线译码到一条指令是分支指令,且完成了分支目标地址的计算,我们就假设分支转移成功,并开始在分支目标地址处取指令执行。
“延迟分支”方法
其主要思想是从逻辑上“延长”分支指令的执行时间。
设延迟长度为n的分支指令后面有n个分支延迟槽,选择n条有效和有用的指令放入分支延迟槽中,无论分支成功与否,流水线都会执行这些指令。
处于分支延迟槽中的指令“掩盖”了流水线原来必须插入的暂停周期。
水平(横向)处理方式
在横向处理方式中,向量计算是按行的方式从左到右横向地进行。
若向量长度为N,则水平处理方式相当于执行N次循环。
若使用流水线,在每次循环中可能出现数据相关和功能转换,不适合对向量进行流水处理。
垂直(纵向)处理方式
将整个向量按相同的运算处理完毕之后,再去执行其他运算。
存储器-存储器型操作的运算流水线
向量运算指令的源/目向量都放在存储器,使得流水线运算部件的输入、输出端直接与存储器相联,构成MM型的运算流水线。
分组(纵横)处理方式
把长度为N的向量分为若干组,每组长度为n,组按纵向方式处理,依次处理各组,组数为「N/n」,适合流水处理。
寄存器-寄存器型操作的运算流水线
可设长度为n的向量寄存器,使每组向量运算的源/目向量都在向量寄存器中,流水线的运算部件输入、输出端与向量寄存器相联,构成RR型运算流水线。
Vi冲突
并行工作的各向量指令的源向量或结果向量的Vi有相同的。
功能部件冲突
向量功能部件冲突指的是同一个向量功能部件被一条以上的并行工作向量指令所使用。
技术
两条向量指令出现“写后读”相关时,若它们不存在功能部件冲突和向量寄存器(源或目的)冲突,就有可能把它们所用的功能部件头尾相接,形成一条流水线,进行流水处理。
流水线的流水时间
在流水线中,从第一个操作数开始流动到第一个结果产生并存入向量寄存器所需的时间。
向量循环或分段开采技术
当向量的长度大于向量寄存器的长度时,就必须把长向量分成固定长度的段,然后循环分段处理,一次循环只处理一个向量段。
向量处理机的峰值性能R:
当向量长度为无穷大时,向量处理机的最高性能,也称为峰值性能。
半性能向量长度
向量处理机的运行性能达到其峰值性能
的一半时所必须满足的向量长度。
向量长度临界值
对于某一计算任务而言,向量方式的处理速度优于标量串行方式处理速度时所需的最小向量长度。
第4章指令级并行
指令级并行
当指令之间不存在相关时,它们可以在流水线中重叠起来并行执行。
这种指令序列中存在的潜在并行性称为指令级并行。
基本程序块
如果一串连续的代码除了入口和出口以外,没有其他的分支指令和转入点,则称之为一个基本程序块。
循环级并行性
循环体中指令之间的并行性。
程序顺序
由源程序确定的在完全串行方式下指令的执行顺序。
保持异常行为
无论怎么改变指令的执行顺序,都不能改变程序中异常的发生情况。
即原来程序中是怎么发生的,改变执行顺序后还是怎么发生。
静态调度技术
依靠编译器对代码进行静态调度,以减少相关和冲突。
它不是在程序执行的过程中、而是在编译期间进行代码调度和优化。
静态调度通过把相关的指令拉开距离来减少可能产生的停顿。
动态调度方法
在流水线中出现相关时,通过硬件重新安排指令的执行顺序,来调整相关指令实际执行时的关系,减少处理器空转。
不精确异常
当执行指令i导致发生异常时,处理机的现场(状态)与严格按程序顺序执行时指令i的现场不同。
精确异常
当执行指令i导致发生异常时,处理机的现场跟严格按程序顺序执行时指令i的现场相同。
Tomasulo算法的核心思想
①记录和检测指令相关,操作数一旦就绪就立即执行,把发生RAW冲突的可能性减少到最少;②通过寄存器换名来消除WAR冲突和WAW冲突。
保留站
设置在运算部件的入口,每个保留站中保存一条已经流出并等待到本功能部件执行的指令(相关信息),包括操作码、操作数以及用于检测和解决冲突的信息。
CDB
公共数据总线。
它是一条重要的数据通路,所有功能部件的计算结果都要送到CDB上,由它把这些结果直接送到(播送到)各个需要该结果的地方。
动态分支预测技术
在程序运行时,根据分支指令过去的表现来预测其将来的行为。
如果分支行为发生了变化,预测结果也跟着改变。
动态分支预测技术的目的有两个:
预测分支是否成功和尽快找到分支目标地址(或指令),从而避免因控制相关而造成流水线停顿。
分支历史表BHT
记录分支指令最近一次或几次的执行情况(成功或不成功),并据此进行预测。
BTB
分支目标缓冲器。
用专门的硬件实现的一表格。
表格中的每一项至少有两个字段:
①执行过的成功分支指令的地址;②预测的分支目标地址。
前瞻执行
对分支指令的结果进行猜测,并假设这个猜测总是对的,然后按这个猜测结果继续取、流出和执行后续的指令。
只是执行指令的结果不是写回到寄存器或存储器,而是放到一个称为ROB的缓冲器中。
等到相应的指令得到“确认”(即确实是应该执行的)后,才将结果写入寄存器或存储器。
ROB
再定序缓冲器。
在指令操作完成后到指令被确认的这一时间段,为指令保存数据。
多流出技术
在每个时钟周期流出多条指令。
超标量处理机
一种多流出处理机。
在每个时钟周期流出的指令条数不固定,依代码的具体情况而定,不过有个上限。
设这个上限为n,就称该处理机为n流出。
超长指令字VLIW技术
一种多指令流出技术。
在每个时钟周期流出的指令条数是固定的,这些指令构成一条长指令或者一个指令包,在这个指令包中,指令之间的并行性是通过指令显式地表示出来的。
超流水线处理机
在一个时钟周期能够分时流出多条指令的处理机。
循环展开技术
开发循环级并行的一种基本技术。
它将循环体展开若干次,将循环级并行转化为指令级并行。
这个过程既可以通过编译器静态完成,也可以通过硬件动态进行。
第5章存储层次
存储器的三个主要指标
从用户的角度来看,存储器的三个主要指标是:
容量、速度和价格。
多级存储层次
由若干个采用不同实现技术的存储器构成的存储器系统。
各存储器处在离CPU不同距离的层次上。
其目标是速度接近于离CPU最近的存储器的速度,容量达到离CPU最远的存储器的容量。
命中率H
CPU在第一级存储器中找到所需数据的概率。
不命中率或失效率F
CPU在第一级存储器中找不到所需数据的概率。
失效开销
CPU向第二级存储器发出访问请求到把这个数据块调入第一级存储器所需的时间。
平均访问时间TA
TA=命中时间+失效率×失效开销
“Cache-主存”层次
在CPU和主存之间增加一级速度快、但容量较小而每位价格较贵的高速缓冲存储器