资源描述
第一章计算机体系构造基本概念
1. 计算机系统构造典型定义
程序员所看到计算机属性,即概念性构造与功能特性。
(计算机构成:指计算机系统构造逻辑实现。计算机实现:计算机构成物理实现)
2. 计算机系统多级层次构造:
1. 虚拟机:应用语言机器->高档语言机器->汇编语言机器->操作系统机器
2. 物理机:老式机器语言机器->微程序机器
3. 透明性:在计算机技术中,把这种本来存在事物或属性,但从某种角度看又好像不存在概念称为透明性。
4. 编译:先用转换程序把高一级机器上程序转换为低一级机器上等效程序
5. 解释:对于高一级机器上程序中每一条语句或指令,都转去执行低一级机器上一段等效程序。
6. 常用计算机系统构造分类法有两种:Flynn分类法、冯氏分类法(按系统并行度 )进行分类。
Flynn分类法把计算机系统构造分为4类:
单指令流单数据流(SISD)
单指令流多数据流(SIMD)
多指令流单数据流(MISD)
多指令流多数据流(MIMD)
IS指令流,DS数据流,CS(控制流),CU(控制部件),PU(解决部件),MM,SM(表达存储器)
7. 计算机设计定量原理:
1. 大概率事件优先原理(分派更多资源,达到更高性能)
2. Amdahl定理:加速比:(Fe为可改进比例(可改进某些执行时间/总执行时间),Se为部件加速比(改进前/改进后)
3. 程序局部性原理:时间局部性:程序即将使用信息很也许是当前使用信息。空间局部性:即将用到信息也许与当前用到信息在空间上相邻或相近。
4. CPU性能公式:
1. 时钟周期时间
2. CPI:CPI = 执行程序所需时钟周期数/IC
3. IC(程序所执行指令条数)
8. 并行性:计算机系统在同一时刻或者同一时间间隔内进行各种运算或操作。
同步性:两个或两个以上事件在同一时刻发生。
并发性:两个或两个以上事件在同一时间间隔内发生。
从解决数据角度来看,并行性级别从低到高可分为:
1.字串位串:每次只对一种字一位进行解决。
最基本串行解决方式,不存在并行性。
2.字串位并:同步对一种字所有位进行解决,不同字之间是串行。
开始浮现并行性。
3.字并位串:同步对许多字同一位(称为位片)进行解决。
具备较高并行性。
4.全并行:同步对许多字所有位或某些位进行解决。
最高一级并行。
从执行程序角度来看,并行性级别从低到高可分为:
1.指令内部并行:单条指令中各微操作之间并行。
2.指令级并行:并行执行两条或两条以上指令。
3.线程级并行:并行执行两个或两个以上线程。
普通是以一种进程内派生各种线程为调度单位。
4.任务级或过程级并行:并行执行两个或两个以上过程或任务(程序段)
以子程序或进程为调度单元。
5.作业或程序级并行:并行执行两个或两个以上作业或程序。
提高并行性技术途径:
1.时间重叠
引入时间因素,让各种解决过程在时间上互相错开,轮流重叠地使用同一套硬件设备各个某些,以加快硬件周转而赢得速度。
2.资源重复
引入空间因素,以数量取胜。通过重复设立硬件资源,大幅度地提高计算机系统性能。
3.资源共享
这是一种软件办法,它使各种任务按一定期间顺序轮流使用同一套硬件设备。
3.系列机
由同一厂家生产具备相似系统构造、但具备不同构成和实现一系列不同型号计算机。
7. 存储程序原理基本点:指令驱动
8. 冯·诺依曼构造重要特点
1.以运算器为中心。
2.在存储器中,指令和数据同等对待。
指令和数据同样可以进行运算,即由指令构成程序是可以修改。
3.存储器是按地址访问、按顺序线性编址一维构造,每个单元位数是固定。
4.指令执行是顺序
5.指令由操作码和地址码构成。
6.指令和数据均以二进制编码表达,采用二进制运算。
9.软件可移植性
一种软件可以不经修改或者只需少量修改就可以由一台计算机移植到另一台计算机上对的地运营。差别只是执行时间不同。咱们称这两台计算机是软件兼容。
实现可移植性惯用办法:采用系列机、模仿与仿真、统一高档语言 。
软件兼容:
向上(下)兼容:按某档机器编制程序,不加修改就能运营于比它高(低)档机器。
向前(后)兼容:按某个时期投入市场某种型号机器编制程序,不加修改地就能运营于在它之前(后)投入市场机器。
向后兼容是系列机主线特性。
兼容机:由不同公司厂家生产具备相似系统构造计算机 。
第二章 计算机指令集构造
1. CPU中用来存储操作数存储单元重要类型:堆栈、累加器、通用寄存器组
2. 通用寄存器型指令集构造进一步细分为3种类型
寄存器-寄存器型(RR型)
寄存器-存储器型(RM型)
存储器-存储器型(MM型)
3.指令集构造设计
重要考虑3个因素:速度、成本、灵活性
对指令集基本规定:完整性、规整性、高效率、兼容性
4.设计RISC机器遵循原则
1.指令条数少而简朴。只选用使用频度很高指令,在此基本上补充某些最有用指令。
2.采用简朴而又统一指令格式,并减少寻址方式;指令字长都为32位或64位。
3.指令执行在单个机器周期内完毕。(采用流水线机制)
4.只有load和store指令才干访问存储器,其她指令操作都是在寄存器之间进行。
(即采用load-store构造)
5.大多数指令都采用硬连逻辑来实现。
6.强调优化编译器作用,为高档语言程序生成优化代码。
7.充分运用流水技术来提高性能。
5.指令由两某些构成:操作码、地址码
指令集3种编码格式:变长编码格式、定长编码格式、混合型编码格式
第三章 流水线技术
1. 流水线技术:把一种重复过程分解为若干个子过程,每个子过程由专门功能部件来实现。把各种解决过程在时间上错开,依次通过各功能段,这样,每个子过程就可以与其她子过程并行进行。(流水线中每个子过程及其功能部件称为流水线级或段,段与段互相连接形成流水线。流水线段数称为流水线深度。)
2. CPU流水线:
1. IF(取指令):依照PC值从指令内存中读取一条指令,并且设立下一周期PC值。
2. ID(解码):依照操作码从指令中提取操作数。
3. EX(执行):执行指令
4. MEM(内存操作)
5. WB(回写):修改寄存器
3. 通过时间:第一种任务从进入流水线到流出成果所需时间。
排空时间:最后一种任务从进入流水线到流出成果所需时间。
4. 流水线分类:
1.单功能流水线与多功能流水线
单功能流水线:只能完毕一种固定功能流水线。
多功能流水线:流水线各段可以进行不同连接,以实现不同功能。
2.静态流水线与动态流水线
静态流水线:在同一时间内,多功能流水线中各段只能按同一种功能连接方式工作。
动态流水线:在同一时间内,多功能流水线中各段可以按照不同方式连接,同步执行各种功能。
3.线性流水线与非线性流水线
线性流水线:流水线各段串行连接,没有反馈回路。数据通过流水线中各段时,每一种段最多只流过一次。
非线性流水线:流水线中除了有串行连接外,尚有反馈回路。
5. 表达办法:
1. 连接图:
Figure 1 多功能流水线,可执行乘与加
2. 时空图:
Figure 2 静态:加法完毕后再进行乘法。动态:不规定加法完毕
6. 性能指标:
1. 吞吐率:在单位时间内流水线所完毕任务数量或输出成果数量。
2. 加速比:完毕同样一批任务,不使用流水线所用时间与使用流水线所用时间之比。
3. 效率:流水线中设备实际使用时间与整个运营时间比值,即流水线设备运用率。
n个任务实际占用时空区/k个段总时空区
4. 当流水线各段时间相等时,流水线效率与吞吐率成正比。
Tk=(k+n-1) △t E=TP△t
5. 流水线效率是流水线实际加速比S与它最大加速比k比值。
从时空图上看,效率就是n个任务占用时空面积和k个段总时空面
之比。
7. 流水线有关:
1. 数据有关:数据有关具备传递性,反映了数据流动关系如果两条指令使用相似名,但是它们之间并没有数据流动,则称这两条指令存在名有关。
2. 名有关:
反有关:如果指令j写名与指令i读名相似,则称指令i和j发生了反有关。
指令j写名=指令i读名
输出有关:如果指令j和指令i写相似名,则称指令i和j发生了输出有关。
指令j写名=指令i写名
3. 控制有关:控制有关是指由分支指令引起有关
8. 流水线冲突:
1. 构造冲突:因硬件资源满足不了指令重叠执行规定而发生冲突。
2. 数据冲突:当指令在流水线中重叠执行时,因需要用到前面指令执行成果而发生冲突。
3. 控制冲突:流水线遇到分支指令和其她会变化PC值指令所引起冲突。
9. 解决流水线冲突:
1. 数据冲突有:
写后读冲突(RAW)
在 i 写入之前,j 先去读。 j 读出内容是错误。相应于数据有关
写后写冲突(WAW)
在 i 写入之前,j 先写。最后写入成果是 i 。错误!相应于输出有关
读后写冲突(WAR)
在 i 读之前,j 先写。i 读出内容是错误!由反有关引起。
定向技术:在某条指令产生计算成果之前,其她指令并不真正及时需要该计算成果,如果可以将该计算成果从其产生地方直接送到其她指令需要它地方,那么就可以避免停顿。
流水线互锁机制,插入“暂停”。
作用:检测发现数据冲突,并使流水线停顿,直至冲突消失。
依托编译器解决数据冲突
让编译器重新组织指令顺序来消除冲突,这种技术称为指令调度或流水线调度。
2.控制冲突有:
解决分支指令最简朴办法:“冻结”或者“排空”流水线 。
由分支指令引起延迟称为分支延迟。
减少分支延迟办法:
预测分支失败
容许分支指令后指令继续在流水线中流动,就好象什么都没发生似。
若拟定分支失败,将分支指令看作是一条普通指令,流水线正常流动。
若拟定分支成功,流水线就把在分支指令之后取出所有指令转化为空操作,并按分支目地重新取指令执行。
要保证:分支成果出来之前不会变化解决机状态,以便一旦猜错时,解决机可以回退到原先状态。
预测分支成功
假设分支转移成功,并从分支目的地址处取指令执行。
起作用前题:先懂得分支目的地址,后懂得分支与否成功。
前述5段流水线中,这种办法没有任何好处。
延迟分支
重要思想:
从逻辑上“延长”分支指令执行时间。把延迟分支当作是由本来分支指令和若干个延迟槽构成,不论分支与否成功,都要按顺序执行延迟槽中指令。
分支延迟指令调度
任务:在延迟槽中放入有用指令。
由编译器完毕。能否带来好处取决于编译器能否把有用
指令调度到延迟槽中。
三种调度办法: 从前调度、从目的处调度、从失败处调度
² MIPS
若检测到RAW冲突,流水线互锁机制必要在流水线中插入停顿,并使当前正处在IF段和ID段指令不再迈进。
分支指令条件测试和分支目的地址计算在EX段完毕,对PC修改在MEM段完毕。
一条指令执行过程分为如下5个周期:
1.取指令周期(IF)
IR ← Mem[PC] 。
PC值加4。(假设每条指令占4个字节)
2.指令译码/读寄存器周期(ID)
译码。
用IR中寄存器编号去访问通用寄存器组,读出所需操作数。
3.执行/有效地址计算周期(EX)不同指令所进行操作不同:
存储器访问指令:ALU把所指定寄存器内容与偏移量相加,形成用于访存有效地址。
寄存器-寄存器ALU指令:ALU按照操作码指定操作对从通用寄存器组中读取数据进行运算。
寄存器-及时数ALU指令:ALU按照操作码指定操作对从通用寄存器组中读取第一操作数和及时数进行运算。
分支指令:ALU把偏移量与PC值相加,形成转移目的地址。同步,对在前一种周期读出操作数进行判断,拟定分支与否成功。
4存储器访问/分支完毕周期(MEM)
该周期解决指令只有load、store和分支指令。其她类型指令在此周期不做任何操作。
load和store指令
load指令:用上一种周期计算出有效地址从存储器中读出相应数据。
store指令:把指定数据写入这个有效地址所指出存储器单元。
分支指令
分支“成功”,就把转移目的地址送入PC。
分支指令执行完毕。
5.写回周期(WB)
ALU运算指令和load指令在这个周期把成果数据写入通用寄存器组。
ALU运算指令:成果数据来自ALU。
load指令:成果数据来自存储器系统。
有关:两条指令之间存在某种依赖关系。
流水线冲突是指对于详细流水线来说,由于有关存在,使得指令流中下一条指令不能在指定期钟周期执行。
第四章:向量解决机
1. 在流水线解决机中,设立向量数据表达和相应向量指令,称为向量解决机。(不具备向量数据表达和相应向量指令流水线解决机,称为标量解决机。)
2. 解决方式:
1.横向(水平)解决方式
向量计算是按行方式从左到右横向地进行。
构成循环程序进行解决。i
数据有关:N次 功能切换:2N次
不适合于向量解决机并行解决。
2.纵向 (垂直)解决方式
向量计算是按列方式从上到下纵向地进行。
两条向量指令之间:数据有关:1次 功能切换:1次
对解决机构造规定:存储器-存储器构造
3.纵横 (分组)解决方式又称为分组解决方式。
把向量提成若干组,组内按纵向方式解决,依次解决各组。
对解决机构造规定:寄存器-寄存器构造
3. 提高向量解决机性能办法:
1. 设立各种功能部件,使它们并行工作。
2. 采用链接技术,加快一串向量指令执行。
3. 采用循环开采技术,加快循环解决。(分段开采:当向量长度不不大于向量寄存器长度,将向量分为长度相等段)
4. 采用多解决机系统,进一步提高性能。
4. 链接特性:具备先写后读有关两条指令,在不浮现功能部件冲突和源向量冲突状况下,可以把功能部件链接起来进行流水解决,以达到加快执行目。
链接特性实质:把流水线定向思想引入到向量执行过程成果。
5. 向量解决机性能重要参数:
1. 一行向量长度为n指令执行时间(
2. 每秒多少个浮点运算成果(MFLOP或一种浮点运算时间)
3. 一组向量指令解决时间
4. 向量流水线最大性能R∞
5. 半性能向量长度n1/2
第5章 指令级并行
这种指令之间存在潜在并行性称为指令级并行。
指令级并行度ILP:指令中存在一种并行性,计算机可以并行执行两条及以上指令。开发ILP途径有两种:1.资源重复(重要基于硬件动态开发办法) 2.流水线技术。(基于软件静态开发办法)
1. 流水线解决机实际CPI
抱负流水线CPI加上各类停顿时钟周期数:
CPI流水线 = CPI抱负 + 停顿构造冲突 + 停顿数据冲突 + 停顿控制冲突
抱负CPI是衡量流水线最高性能一种指标。
动态分支预测:在程序运营时,依照分支指令过去体现来预测其将来行为。
2. 分支历史表BHT(Branch History Table)或分支预测缓冲器(Branch Prediciton Buffer)
最简朴动态分支预测办法。
用BHT来记录分支指令近来一次或几次执行状况(成功或不成功),并据此进行预测。
BTB
目的:将分支开销降为 0
办法:分支目的缓冲
将分支成功分支指令地址和它分支目的地址都放到一种缓冲区中保存起来,缓冲区以分支指令地址作为标记。
这个缓冲区就是分支目的缓冲器(Branch-Target Buffer,简记为BTB,或者Branch-Target Cache)。
3. 开发ILP两种办法:
1. 记分牌动态调度算法
目的:在没有构造冲突时,尽早执行没有数据冲突指令(指令执行时可以跨越,但是在输出段都是按序流出),实现每个时钟周期执行一条指令。
记分牌硬件实现:1.记分牌中维护着三张表,分别记录指令执行状态、寄存器状态、功能部件状态、数据有关关系。 2.它把流水线译码段ID分为了两个段:流出和读操作数。
记分牌流水线解决环节:
1) 流出(ID)
如果当前流出指令所需功能部件空闲(无构造冲突),并且其他执行指令目寄存器与该指令不同(无WAW冲突),记分牌就向功能部件流出该指令,并修改记分牌内部登记表。
2) 读操作数(ID)
监测源操作数可用性(前面已流出并且正在执行指令都不对该寄存器进行写操作),如果数据可用,它就告知功能部件从寄存器中读出源操作数并开始执行
3) 执行(EX)
取到操作数则开始执行,产生出成果后,就告知记分牌它已经执行完毕
4) 写成果(WB)
若WAR冲突已经消失,记分牌则告知功能部件把成果写入目寄存器
记分牌三张表:
1) 指令状态表
2) 功能部件状态表,每个部件有一项,每一项由如下9个字段构成:
Busy:忙标志,指出功能部件与否忙。初值为“no”;
Op:该功能部件正在执行或将要执行操作;
Fi:目寄存器编号;
Fj,Fk:源寄存器编号;
Qj,Qk:指出向源寄存器Fj、Fk写数据功能部件 ;
Rj,Rk:标志位,“yes”表达Fj,Fk中操作数就绪且尚未被取走。否则就被置为“no”。
3) 成果寄存器状态表:指出哪个功能部件将成果写入寄存器
2. Tomasulo动态调度算法:
1. 基本思想:①记录和监测指令有关,操作数一旦就绪就及时执行,把发生RAW冲突也许性减小到最小。②通过寄存器换名来消除WAR冲突和WAW冲突
2. 基本构造:
(1) 保存站:保存已经流出并等待到本功能部件执行指令,在保存站通过流出逻辑来完毕寄存器换名(顺序流出,乱序执行 )
(2) 公共数据总线(CDB):所有功能部件计算成果都送到CDB,由它把这些成果直接送到各个需要该成果地方(乱序完毕)
(3) Load/store缓冲器:作用是①存储计算有效地址分量。②记录正在进行load访存,等待存储器响应/保存正在进行store访存目的地址,等待存储数据到达。③保存完毕了load成果(从存储器取来数据)/保存该store地址和数据
3. 指令执行环节:
1) 流出
2) 执行
3) 写成果
2.基本程序块:一段除了入口和出口以外不包括其她分支线性代码段。
3.循环级并行:使一种循环中不同循环体并行执行。
4.程序顺序:由源程序拟定在完全串行方式下指令执行顺序。
保持异常行为是指:无论怎么变化指令执行顺序,都不能变化程序中异常发生状况。
数据流:指数据值从其产生者指令到其消费者指令实际流动。
静态调度
依托编译器对代码进行静态调度,以减少有关和冲突。
它不是在程序执行过程中、而是在编译期间进行代码调度和优化。
通过把有关指令拉开距离来减少也许产生停顿。
动态调度
在程序执行过程中,依托专门硬件对代码进行调度,减少数据有关导致停顿
不精准异常:当执行指令i导致发生异常时,解决机现场(状态)与严格按程序顺序执行时指令i现场不同。
精准异常:如果发生异常时,解决机现场跟严格按程序顺序执行时指令i现场相似。
记分牌算法和Tomasulo算法是两种比较典型动态调度算法。
Tomasulo算法基本思想
1.核心思想
记录和检测指令有关,操作数一旦就绪就及时执行,把发生RAW(read and write)冲突也许性减少到最小;
通过寄存器换名来消除WAR冲突和WAW冲突。
更多地依赖于硬件
寄存器换名可以消除WAR冲突和WAW冲突。
寄存器换名是通过保存站和流出逻辑来共同完毕。
Tomasulo算法具备如下两个特点:
冲突检测和指令执行控制是分布。
每个功能部件保存站中信息决定了什么时候
指令可以在该功能部件开始执行。
计算成果通过CDB直接从产生它保存站传送到所有需要它功能部件,而不用通过寄存器。
每个保存站有如下几种字段:
Op:要对源操作数进行操作。
Qj,Qk:将产生源操作数保存站号。
等于0表达操作数已经就绪且在Vj或Vk中,或者不需要操作数。
Vj,Vk:源操作数值。
对于每一种操作数来说,V或Q字段只有一种有效。
对于load来说,Vk字段用于保存偏移量。
Busy:为“yes”表达本保存站或缓冲单元“忙”。
A:仅load和store缓冲器有该字段。开始是存储指令中及时数字段,地址计算后存储有效地址。
循环展开和指令调度
增长指令间并行性最简朴和最惯用办法
开发循环级并行性——循环不同迭代之间存在并行性。
在把循环展开后,通过重命名和指令调度来开发更多并行性。
编译器完毕这种指令调度能力受限于两个特性:
程序固有指令级并行性;
流水线功能部件执行延迟。
循环展开和指令调度时要注意如下几种方面:
保证对的性。
在循环展开和调度过程中特别要注意两个地方对的性:循环控制,操作数偏移量修改。
注意有效性。
只有可以找到不同循环体之间无关性,才干有效地使用循环展开。
使用不同寄存器。
(否则也许导致新冲突)
删除多余测试指令和分支指令,并对循环结束代码和新循环体代码进行相应修正。
注意对存储器数据有关性分析
例如:对于load指令和store指令,如果它们在不同循环迭代中访问存储器地址是不同,它们就是互相独立,可以互相对调。
注意新有关性
由于原循环不同次迭代在展开后都到了同一次循环体中,因而也许带来新有关性。
第九章 动态互联网络
互联网络是一种开关元件按照一定拓扑构造和控制方式构成网络,用来实现计算机系统中节点之间互相连接
动态网络分类:总线网络、多级互联网络、交叉开关网络
互联网络三要素:互联构造、开关和控制方式
1. 基本互联函数:
1) 互换函数:二进制地址编码中第k位互反输入端与输出端之间连接。
2) 均匀洗牌网络。
3) PM2I函数:
2. 互联网络构造参数:
1) 网络规模N:指互联网络中节点个数。它表达该网络所能连接部件数量。网络规模越大,这个互联网络连接能力越强
2) 节点度d:指互联网络中节点所连接边数,涉及入度,出度。
3) 节点距离:从一种节点到另一种节点终结所需要跨越边数最小值
4) 网络直径D:指网络中任意两个节点之间距离最大值(网络直径越小越好)
5) 等分宽度b(重要反映网络最大流量):把由N个节点构成网络切成节点数相似(N/2)两半,在各种切法中,沿切口边数最小值称为该网络等分宽度。而线等分宽度位B=b×ω(通道宽度,单位是位数)
6) 对称性:从任意节点看,网络构造都是相似
3. 静态互联网络:各节点之间有固定连接通路,且在运营中不能变化网络。
1) ILLIAC IV网:采用PM2±0和PM2±n/2构成其互连网络,实现各解决单元之间上下左右互连 。
2) 带环立方体CCC
带环3-立方体
一种带环n-立方体由N = 2n个结点环构成,每个结点环是一种有n个结点环,网络规模(结点总数)为n*2n个。直径普通为D=2n,结点度为3,等分宽度b=N/(2k),对称。
4. 动态互联网络:由互换开关构成,可按运营程序规定动态变化连接状态网络
1) Omega网络(相称于一种banyan网)
5. 路由选取和消息传递方式:
1) 线路互换:传递之前建立一条到目节点物理通路然后互换
2) 包互换:
1) 存储转发:
2) 虚拟直通(接受寻径报头即可做出下一跳判断,输出链路空闲则不用存储直接转发)
3) 虫蚀方式:将信息切割成片(头片->寻径信息和包序列号,数据片)
6. 流量控制方略:
1. 包冲突解决:两个相邻节点之间传送一种片要满足三个条件:①源缓冲区已存有该片②通道已分派好③接受缓冲区准备接受该片
2. 拟定性寻径
第10章 多解决机
MIMD(多指令流多数据流):一块芯片上各种解决器
MIMD计算机分类:集中式共享存储器构造。分布式存储器多解决机
多解决机分类
u 紧耦合系统 \ 松耦合系统
u 同构型 \ 异构型 多解决机系统。
u 按系统构成构造
并行向量解决机(PVP)
对称多解决机(SMP)
大规模并行解决机(MPP)
分布共享存储器多解决机(DSM)
工作站机群(COW)
1. Cache一致性问题:由于缓存存在于cpu与内存中间,因此任何外设对内存修改并不能保证cache中也得到同样更新,同样解决器对缓存中内容修改也不能保证内存中数据 得到更新。这种缓存中数据与内存中数据不同步和不一致现象将也许导致使用DMA 传播数据时 或 解决器运营自修改代码时产生错误。
Cache一致性就是直Cache中数据,与相应内存中数据是一致。
2. Cache一致性合同:
1) 目录式合同:物理存储器中数据块共享状态被保存在一种称为目录地方。
2) 监听式合同:当物理存储器中数据块被调入Cache时,其共享状态信息与该数据块一起放在该Cache上。当某个Cache要访问存储器时,它会把祈求放到总线上广播出去,其他Cache通过监听总线来判断与否要更新
展开阅读全文