第一章计算机体系结构的基本概念 1.计算机系统结构的经典定义 程序员所看到的计算机属性,即概念性结构与功能特性。 2.透明性 在计算机技术中,把这种本来存在的事物或属性,但从某种角度看又好像不存在的概念称为透明性。
3.系列机 由同一厂家生产的具有相同系统结构、但具有不同组成和实现的一系列不同型号的计算机。
4.常见的计算机系统结构分类法有两种:Flynn分类法、冯氏分类法 Flynn分类法把计算机系统的结构分为4类: 单指令流单数据流(SISD) 单指令流多数据流(SIMD) 多指令流单数据流(MISD) 多指令流多数据流(MIMD)
5.
改进后程序的总执行时间 系统加速比为改进前与改进后总执行时间之比 6. CPI(Cycles Per Instruction):每条指令执行的平均时钟周期数 CPI = 执行程序所需的时钟周期数/IC 7. 存储程序原理的基本点:指令驱动
8. 冯·诺依曼结构的主要特点 1.以运算器为中心。 2.在存储器中,指令和数据同等对待。 指令和数据一样可以进行运算,即由指令组成的程序是可以修改的。 3.存储器是按地址访问、按顺序线性编址的一维结构,每个单元的位数是固定的。 4.指令的执行是顺序的 5.指令由操作码和地址码组成。 6.指令和数据均以二进制编码表示,采用二进制运算。
9.软件的可移植性 一个软件可以不经修改或者只需少量修改就可以由一台计算机移植到另一台计算机上正确地运行。差别只是执行时间的不同。我们称这两台计算机是软件兼容的。 实现可移植性的常用方法:采用系列机、模拟与仿真、统一高级语言 。
软件兼容: 向上(下)兼容:按某档机器编制的程序,不加修改就能运行于比它高(低)档的机器。 向前(后)兼容:按某个时期投入市场的某种型号机器编制的程序,不加修改地就能运行于在它之前(后)投入市场的机器。
向后兼容是系列机的根本特征。
兼容机:由不同公司厂家生产的具有相同系统结构的计算机 。 10.并行性:计算机系统在同一时刻或者同一时间间隔内进行多种运算或操作。
同时性:两个或两个以上的事件在同一时刻发生。 并发性:两个或两个以上的事件在同一时间间隔内发生。
从处理数据的角度来看,并行性等级从低到高可分为: 1.字串位串:每次只对一个字的一位进行处理。
最基本的串行处理方式,不存在并行性。 2.字串位并:同时对一个字的全部位进行处理,不同字之间是串行的。
开始出现并行性。 3.字并位串:同时对许多字的同一位(称为位片)进行处理。
具有较高的并行性。 4.全并行:同时对许多字的全部位或部分位进行处理。
最高一级的并行。
从执行程序的角度来看,并行性等级从低到高可分为: 1.指令内部并行:单条指令中各微操作之间的并行。
2.指令级并行:并行执行两条或两条以上的指令。
3.线程级并行:并行执行两个或两个以上的线程。
通常是以一个进程内派生的多个线程为调度单位。 4.任务级或过程级并行:并行执行两个或两个以上的过程或任务(程序段)
以子程序或进程为调度单元。 5.作业或程序级并行:并行执行两个或两个以上的作业或程序。
提高并行性的技术途径: 1.时间重叠 引入时间因素,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。
2.资源重复 引入空间因素,以数量取胜。通过重复设置硬件资源,大幅度地提高计算机系统的性能。
3.资源共享 这是一种软件方法,它使多个任务按一定时间顺序轮流使用同一套硬件设备。
第二章 计算机指令集结构 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.分类 1.单功能流水线与多功能流水线 单功能流水线:只能完成一种固定功能的流水线。 多功能流水线:流水线的各段可以进行不同的连接,以实现不同的功能。 2.静态流水线与动态流水线 静态流水线:在同一时间内,多功能流水线中的各段只能按同一种功能的连接方式工作。 动态流水线:在同一时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。
3.部件级、处理机级及处理机间流水线 部件级流水线(运算操作流水线):把处理机的算术逻辑运算部件分段,使得各种类型的运算操作能够按流水方式进行。 处理机级流水线(指令流水线):把指令的解释执行过程按照流水方式处理。把一条指令的执行过程分解为若干个子过程,每个子过程在独立的功能部件中执行。 处理机间流水线(宏流水线):它是由两个或者两个以上的处理机串行连接起来,对同一数据流进行处理,每个处理机完成整个任务中的一部分。
4.线性流水线与非线性流水线 线性流水线:流水线的各段串行连接,没有反馈回路。数据通过流水线中的各段时,每一个段最多只流过一次。 非线性流水线:流水线中除了有串行的连接外,还有反馈回路。
5.顺序流水线与乱序流水线 顺序流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序完全相同。每一个任务在流水线的各段中是一个跟着一个顺序流动的。 乱序流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序可以不同,允许后进入流水线的任务先完成(从输出端流出)。
6.标量处理机与向量流水处理机 标量处理机:处理机不具有向量数据表示和向量指令,仅对标量数据进行流水处理。 向量流水处理机:具有向量数据表示和向量指令的处理机。
3.吞吐率:在单位时间内流水线所完成的任务数量或输出结果的数量。
KnTP
T
解决流水线瓶颈问题的常用方法:细分瓶颈段、重复设置瓶颈段。 加速比:完成同样一批任务,不使用流水线所用的时间与使用流水线所用的
时间之比。 sk
TST
效率:流水线中的设备实际使用时间与整个运行时间的比值,即流水线设备的利用率。 nE
kn1
当流水线各段时间相等时,流水线的效率与吞吐率成正比。 nTP
Tk
Tk=(k+n-1) △t E=TP△t △t=T通过/m (m表示段数) 流水线的效率是流水线的实际加速比S与它的最大加速比k的比值。
SE=
k
nkS=
kn1
从时空图上看,效率就是n个任务占用的时空面积和k个段总的时空面积之比。
4.一条指令的执行过程分为以下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。