找回密码
 立即注册
查看: 329|回复: 0

高级计算机体系结构复习

[复制链接]
发表于 2022-9-12 10:15 | 显示全部楼层 |阅读模式
为什么进入多核时代,出现背景原因

衡量处理器性能的主要指标是每个时钟周期内可以执行的指令数(IPC, Instruction Per Clock)和处理器的主频。因此提高处理器性能就是两个途径:提高主频和提高IPC。
然而,由于处理器的功耗和处理器内部的电流、电压的平方和主频成正比,而主频与电压成正比,因此处理器功耗正比于主频的三次方。如果通过提高主频来提高处理器的性能,则处理器的功耗也就越大,这就遇上了功耗墙。提高每个周期内执行的指令数是通过指令的并行执行来实现。提高并行度有两个途径:提高CPU微架构的并行度和采用多核架构。由于IPC(单位周期内执行的指令数)与电流成正比,处理器的功耗和处理器内部的电流、电压的平方和主频成正比,因此CPU由单核变成双核且主频不变的情况下,IPC理论上可以提高一倍(两个CPU共同执行),但功耗上也仅仅增加一倍。
Flynn's分类方法

费林分类法(Flynn's Taxonomy),是一种高效能计算机的分类方式。1972年费林(Michael J. Flynn)根据信息流(information stream)可分成指令(Instruction)和数据(Data)两种。据此又可分成四种计算机类型:SISD, SIMD, MISD, and MIMD.
注意:费林分类是划分计算机的,不是划分CPU的。
单指令流、单数据流(SISD)-(ILP)Single Instruction Single Datastream:其指令部件每次只对一条指令进行译码,并只对一个操作部件分配数据。
单指令流、多数据流(SIMD)-(DLP)Single Instruction Multiple Datastream:由单一指令部件控制,按照同一指令流的要求为它们分配各自所需的不同数据。

  • 将大量重复设置的处理单元按一定方式互连成阵列,在单一控制部件CU(Contrul Unit)控制下对各自所分配的不同数据并行执行同一指令规定的操作;
  • 数据并行;
  • 采用资源重复开发并行性。
多指令流、单数据流(MISD)Multiple Instruction Single Datastream:按 n条不同指令的要求对同一数据流及其中间结果进行不同的处理。没有商业实现。
多指令流、多数据流(MIMD)Multiple Instruction Multiple Datastream:每个处理器都提取自己的指令,对自己的数据进行操作,它针对的是任务级并行。在任何时钟周期内,不同的处理器可以在不同的数据片段上执行不同的指令,也即是同时执行多个指令流,而这些指令流分别对不同数据流进行操作。

  • 根据内存的物理分布、逻辑映射、读取方式将MIMD类并行计算机系统进一步细分为:共享内存,虚拟共享内存,分布式内存;
  • 编程模式:共享内存,消息传递,混合模式;
  • 紧耦合MIMD(线程级并行TLP)
  • 松耦合MIMD(请求级并行RLP)
<hr/>CISC、RISC概念和特点,比较优缺点

RISC的英文全称为“Reduced Instruction Set Computer”,中文即“精简指令集计算机”。RISC构架的指令格式和长度通常是固定的(如ARM是32位的指令)、且指令和寻址方式少而简单、大多数指令在一个周期内就可以执行完毕。是一种使用高度优化的指令集的微处理器架构
二、RISC架构的特点
1.RISC架构中使用了简单指令。
2.RISC帮助并支持一些简单数据类型并综合复杂数据类型。
3.RISC利用简单的寻址模式和固定长度的指令进行流水线处理。
4.RISC允许任何寄存器在任何上下文中使用。
5.单周期执行时间。
6.通过分开“LOAD”和“STORE”指令,可以减少计算机可以执行的工作量。
7.RISC包含大量寄存器,以防止与内存进行各种交互。
8.在RISC中,流水线操作很容易,因为所有指令的执行将在统一的时间间隔(即单击一次)中完成。
9.在RISC中,需要更多RAM来存储程序集级指令。
10.精简指令减少了RISC中的晶体管数量。
11.编译器用于执行转换操作,将高级语言语句转换成其形式的代码。

三、RISC架构的优势
1.RISC(精简指令集计算)架构具有一组指令,因此高级语言编译器可以生成更有效的代码。
2.由于其简单性,它允许自由使用微处理器上的空间。
3.许多RISC处理器使用寄存器来传递参数和保存局部变量。
4.RISC函数仅使用几个参数,而RISC处理器无法使用调用指令,因此,使用易于流水线化的固定长度指令。
5.操作速度可以最大化,执行时间可以最小化。
6.所需的指令格式数量很少,所需的指令数量和寻址方式也很少。

四、RISC架构的缺点

1.通常,RISC处理器的性能取决于程序员或编译器,因为在将CISC代码更改为RISC代码时,编译器的知识起着至关重要的作用。
2.在将CISC代码重新排列为RISC代码(称为代码扩展)时,将会增加大小。并且,此代码扩展的质量将再次取决于编译器以及机器的指令集。
3.RISC处理器的一级缓存也是RISC的缺点,其中这些处理器在芯片本身上具有大容量的内存缓存。为了提供指令,它们需要非常快速的存储系统。

CPU的RISC和CISC架构的区别
RISC和CISC的区别方面
CISC架构的代表: x86, C51
RISC架构的代码:arm, mips,powerpc, avr, pic

指令集的区别
首先从字面上理解就能知道, CISC(Complex Instruction SetComputer)架构的指令数肯定是远远多于RISC(ReducedInstruction Set Computer)架构的.另外, RISC架构下,不同指令opcode的长度是相等的, 而x86下不同的指令的长度差别很大.

寄存器的区别
CISC架构一般都提供通用寄存器a(x86下为eax),来支持大部分运算指令,但是由于指令太过复杂的原因,并不是所有的寄存器都能支持全部指令的运算,所以汇编代码中会有各种针对eax的mov操作,影响性能.

指令执行所需要的时钟周期
在CISC架构中,不同指令所需要的时钟周期是不同的(比如乘法和加法的周期就不太可能相同).而RISC架构的处理器,大部分的指令都可以在一个时钟周期内完成,这应该可以降低指令流水线设计的复杂度. CISC架构的很多复杂指令都通过CPU内的微码来完成, 这样那些微码比较复杂的指令就需要多个时钟周期才能完成. 指令执行需要的时钟周期不同, 会增加指令流水线优化的难度.

访问内存的区别
RISC在结构设计上是一个载入/存储(load/store)的构架,只有载入和存储指令可以访问内存,数据处理指令只对寄存器的内容进行操作。为了加速程序的运算,RISC会设定多组的寄存器,并且指定特殊用途的寄存器。CISC架构则允许数据处理指令对内存进行操作,因此需要的寄存器数量会比较少.另外X86架构支持cpu对非对齐的内存地址的访问,这在RISC架构的处理器中通常会引起CPU产生异常.其实像类似非对齐内存地址访问的功能, X86也是通过CPU内微码来实现的,效率会大大降低.

寻址方式和IO空间
X86架构下IO空间和内存空间是分开的, IO空间使用完全不同的指令来访问(in, out). RISC架构则不区分IO空间和内存空间,都是直接把IO空间映射到内存空间,直接用内存空间的访问方式来操作. RISC架构下对于寻址方式同样做了精简,几乎所有的指令都使用寄存器寻址.

编译的区别
CISC的指令丰富的优势,使得它的编译器可以少做很多事情,编译器的设计更简单.而RISC在实现一个功能的时候,需要的指令条目数会更多一些,程序也会更大.

参考资料:
https://blog.csdn.net/shinezhang86/article/details/48393203
http://www.elecfans.com/emb/danpianji/20171219605119.html
https://www.renrendoc.com/paper/113740963.html
五级流水线(Load指令五个阶段)

Ifetch(取指):从指令存储器取指令并计算PC + 4(指令存储器、Addr)
Reg/Dec(取数和译码):寄存器取数,同时对指令进行译码(寄存器堆读口、指令译码器)
Exec(执行):计算内存单元地址(扩展器、ALU)
Mem(读存储器):从数据存储器中读出的数据写到主存(数据存储器)
Wr(写寄存器):将数据写入寄存器中(寄存器堆写口)
<hr/>计算机的性能是怎样描述的、衡量指标、测量方法

典型测量指标有响应时间和吞吐率。现在还考虑加速比、执行时间
性能测量基准测试:程序内核,玩具程序,合成测试 ,基准测试套件。
     衡量计算机系统性能可采用各种尺度,但最为可靠的衡量尺度是时间。时间可根据计算方法给以不同的定义,如响应时间、CPU 时间等。
响应时间是指用户向计算机系统送入一个任务后,直到获得他所需要的结果所需的等待时间。其中包括了访问磁盘和访问主存器时间、CPU 运算时间、I/O动作时间以及操作系统工作的时间开销等。
影响CPU性能的因素
性能的最本质定义:
完成一个任务所需要的时间;
以指令为基本单位
CPU性能公式
CPU时间:一个程序在CPU上运行的时间(不包括I/O时间)

  • 主频、时钟频率:CPU内部主时钟的频率,表示一秒可以完成多少个周期
例如,主频为4.1GHz,表示每秒可以完成 个时钟周期。

  • 时钟周期:时钟周期也称为振荡周期,定义为时钟频率的倒数。是计算机中最基本的、最小的时间单位。再一个时钟周期内,CPU仅完成一个最基本的动作。CPU的时钟周期越短,CPU性能越好。
  • 指令周期:取出并执行一条指令的时间。
  • 程序的时钟周期数:平均一个程序执行所耗费的时钟周期数。
  • 指令周期数CPI:平均每条指令耗费的时钟周期数。
  • 执行的指令条数IC




处理器性能取决于时钟周期、每条指令的时钟周期数(CPI)和指令数(IC)

单CPU上常见的提高性能的方法和并行计算

  • 提高单个处理器的工作频率
  • 分层Cache结构
  • 多级流水线(提高CPU频率的利器)
  • 超标量执行(多条流水线并同时发送多条指令)
  • 乱序执行(指令的重排)
  • 单指令流多数据流SIMD
  • 超长指令字处理器(依赖于编译器分析)
<hr/>多线程并行的优点

多线程:是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。
多线程的好处

  • 创建一个线程比创建一个进程的代价要小很多;
  • 线程的切换代价要比进程切的代价换小很多;
  • 能够充分利用多处理器;多核情况下可充分利用CPU资源。发挥多处理器的强大性能,提升资源利用率以及系统的吞吐率。
  • 提供了数据共享可能;
  • 具有快速响应的特性。
SMT:在一个时钟周期内发射多个线程的指令到功能部件上执行。
参考资料:https://www.cnblogs.com/BRSblackshoot/p/15562346.html
RISC的设计原则

RISC的设计原则:

  • 使用频度很高的指令
  • 大大减少寻址方式
  • 所有指令在一个机器周期内完成
  • 扩大通用寄存器个数
  • 采用硬联控制实现
  • 通过精简指令和优化设计编译程序,以简单有效的方式支持高级语言
RISC结构采用的基本技术:

  • 在逻辑上采用硬联实现和微程序固件实现相结合的技术
  • 在CPU中设置数量较大的寄存器组,并采用重叠寄存器窗口的技术
  • 指令的执行采用流水和延迟转移技术
  • 采用优化编译技术,优化寄存器的分配和使用
UMA/NUMA模型

UMA(Uniform Memory Access)模型

  • 物理存储器被所有节点共享;
  • 所有节点访问任意存储单元的访问时间相同;
  • 发生访存竞争时,仲裁策略平等对待每个节点,即每个节点机会均等;
  • 各节点的CPU可带有局部私有高速缓存;
  • 外围I/O设备也可以共享,且每个节点有平等的访问权利。
NUMA(Non-Uniform Memory Access)模型

  • 物理存储器被所有节点共享,任意节点可以直接访问任意内存模块;
  • 节点访问内存模块的速度不同,访问本地存储模块的速度一般是访问其他节点内存模块
的3倍以上;

  • 发生访存竞争时,仲裁策略对节点可能是不平等的;
  • 各节点的CPU可带有局部私有高速缓存;
  • 外围I/O设备也可以共享,但对各节点是不平等的。
Cache一致性

处理器可能在CACHE中看到不同的值:
一致性:确定了读取操作返回什么值;
连贯性:确定了一个写入值何时被读取操作返回。
cache一致性:(coherence)

  • 所有处理器的读操作必须返回最近写回的值;
  • 两个处理器写到同一位置的值,其顺序应被所有处理器按序看到;
连贯性:(consistence)

  • 在何种程度上保持一致;
  • 如果一个处理器写A后再写B,则所有看到新值B的处理器也必然看到新值A;
  • 何种程度的一致是指:一个处理器必须在什么时候看到另一个处理器更新过的值.
MESI Protocols

CPU缓存一致性协议MESI

  • MESI 是一种使用广泛的协议,用来实现 cache coherence 和 memory coherence.
  • MESI(MModified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一种广泛使用的支持写回策略的缓存一致性协议。






参考资料:https://www.cnblogs.com/z00377750/p/9180644.html
SIMD并行的三种结构

SIMD 并行的 3 种体系结构为:向量体系结构、SIMD 扩展和图形处理单元(GPUs)
(1) 向量体系结构的基本思想

  • 读存储器中散布的数据集至“vector registers”;
  • 寄存器操作;
  • 分散结果存储至存储器;
  • 向量体系结构使用一条向量指令开启一组数据操作,其中数据的加载、存储以及数据计算以流水线的形式进行。
特点:仅在一组数据操作的第一个元素存在存储器延迟和由冒险引起的停顿,后续元素会沿着流水线顺畅流动。
执行时间与三个因素有关:向量长度、结构冒险、数据相关。
(2) SIMD 扩展的基本思想:主要针对多媒体应用。
主要进行了3项简化。

  • 固定了操作中操作数的数目:向量体系结构采用向量长度寄存器;
  • SIMD 扩展没有复杂的寻址模式:步幅和集中-分散寻址模式;
  • 没有遮罩寄存器。
实现:

  • 操作数连续且与存储地址对齐;
  • 扩展的目的主要为了加速精心编制的库函数运行。
(3) 图形处理单元 (GPUs)的基本思想:

  • 异构执行模型是 CPU 为主机, GPU 为加
速器;

  • 开发类C的编程语言;
  • 统一所有的GPU并行为CUDA 线程;
  • 编程模型“SIMT”。
NVIDI GPU架构:
与向量机类似:擅长数据级并行、采用集中-分散寻址模式、具有遮罩寄存器和大的寄存
器组。
与向量机的不同:没有标量处理器、使用多线程隐藏内存访问延迟以及有很多功能单元
深度流水化。
<hr/>流水线冒险

什么是冒险? 指流水线遇到无法正确执行后续指令或执行了不该执行的指令
结构冒险:Structural hazards (hardware resource conflicts):
现象:同一个部件同时被不同指令所使用
如果只有一个存储器,则在Load指令取数据同时又取指令的话,则发生冲突!
如果不对寄存器堆的写口和读口独立设置的话,则发生冲突!
解决办法:
1.每个部件在特定的阶段被用!(如:ALU总在第三阶段被用!)
2.将Instruction Memory (Im)和 Data Memory (Dm)分开
3.将寄存器读口和写口独立开来
数据冒险:Data hazards (data dependencies)
现象:后面指令用到前面指令结果时,前面指令结果还没产生。
解决办法:
1.在硬件上采取措施,使相关指令延迟执行
3.软件上插入无关指令
3.利用DataPath中的中间数据
4.编译器进行指令顺序调整
数据冒险的解决方法( ( 五个 )
1.硬件阻塞 (stall)
2.软件插入“NOP”指令
3.编译优化:调整指令顺序
4.合理实现寄存器.堆的读/写操作
5.转发(Forwarding或Bypassing 旁路)技术
--若相关数据是ALU结果,则如何?
可通过转发解决
-若相关数据是上条指令DM读出内容,则如何?
不能通过转发解决,随后指令需被阻塞一个时钟 或 加NOP指令
控制冒险:Control (Branch) hazards (changes in program flow)
现象:转移或异常改变执行流程,顺序执行指令在目标地址产生前已被取出
解决办法:
控制冒险 的解决方法(四个)
1.硬件上阻塞(stall)分支指令后三条指令的执行;
2.软件上插入三条“NOP”指令;
3.分支预测(Predict)
简单(静态)预测:
-总是预测条件不满足(not taken),即:继续执行分支指令的后续指令
                可加启发式规则:在特定情况下总是预测满足(taken),其他情况总是预测不满足。如:循环顶                 (底)部分支总是预测为不满足(满足)。能达65%-85%的预测准确率
动态预测:
-根据程序执行的历史情况,进行动态预测调整,能达90%的预测准确率
:采用分支预测方式时,流水线控制必须确保错误预测指令的执行结果不能生  
       效,而且要能从正确的分支地址处重新启动流水线工作
4.延迟分支(Delayed branch),通过编译程序优化指令顺序。
把分支指令前面与分支指令无关的指令调到分支指令后面执行,也称延迟转移
层次化存储优化方法

6 个基本的 cache 的优化方法
1)更大的块:强制缺失减少;容量和冲突缺失增加,缺失代价增加
2)更大的 cache 容量:缺失率降低;命中时间增加,功耗增加
3)更高的相联度:冲突缺失减少;命中时间增加,功耗增加
4)更多级的 cache:内存访问的时间减少了
5)读缺失优先级更高:缺失代价降低
6)缓存索引期间避免地址转换:减少命中时间
10 种高级优化方法:

  • 小而简单的一级缓存;
  • 路预测;
  • 缓存访问流水化;
  • 无阻塞缓存;
  • 多种缓存;
  • 关键字优先,提前重启动;
  • 合并写缓冲区;
  • 编译器优化;
  • 硬件预取;
  • 编译器预取
动态预测

二位的预测位(画出两位预测状态图):



配置一个从不发生缺失的Cache,处理器快多少





AMAT





CPI,处理器速率提高







给定程序画时空图,找依赖,解决方法





有无远程访问,速率快多少





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-25 01:37 , Processed in 0.090921 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表