【计算机体系结构量化与研究方法笔记】
目录
相关概念
一、指令级并行(ILP)
1 静态编译器调度
2 动态调度
3 多发射
4 多线程
二、数据级并行(向量机、SIMD、GPU)
三、线程级并行(MIMD)
1 多处理器分类
2 对称多处理器
相关概念
指令集体系结构(ISA):软件与硬件的接口,现在的ISA几乎都属于通用寄存器体系结构,即操作数为寄存器或存储器地址。
ISA的编码:定长(指令译码简单)、变长(可以占用较少的空间,代码规模较小)、混合编码(32位+16位指令)
RISC体系结构有几个关键属性,大大简化了流水线的实现,而这也式如此设计指令集的原因:
- 所有数据操作偶是对寄存器中的数据的操作;
- 只有load和store指令会影响到存储器;
- 指令格式的数量很少,通常是定长的。
流水线缩短的是指令的平均执行时间,而不是但条指令的执行时间,甚至由于流水线有额外开销,可能会延长但条指令的执行时间。
顺序执行中不存在WAR和WAW,乱序带来了WAR和WAW冒险。
超标量处理器:每个时钟周期有多条指令执行。
标量处理器:每个时钟周期只有一条指令执行。
一、指令级并行(ILP)
流水线CPI = 理想CPI + 冒险导致的停顿
1 静态编译器调度
循环展开
循环展开的缺陷:1)显著增大代码规模,可能导致指令缓存缺失率的上升;2)由于进行大量展开和调试而造成寄存器数量不足。
2 动态调度
硬件重新安排指令执行的顺序以减少停顿并同时保持数据流和异常行为。
2.1 记分牌
- 基本原理:在指令所需资源满足且没有数据依赖时,就可以发射执行(乱序)。
- 发射时检测WAW,如果有则不发射;写回时检测WAR,如果有则不写回。
- 会检测WAW和WAR,但并不解决,只是通过停顿来避免。
2.2 Tomasulo算法
- 核心思想:只有结构冒险和RAW冒险会导致指令阻塞,WAW冒险和WAR冒险通过寄存器重命名消除。
- 增设分布式保留站,即每个功能单元有各自的保留站,将寄存器重命名为功能单元保留站号。
- 增设公共数据总线,一条指令的结果直接经由公共数据总线传递到目的寄存器和任何需要该结果的功能单元的保留站。
- 与记分牌的最大区别是解决了WAW和WAR冒险。
2.3 Speculation:基于硬件的推测执行
- 基本原理:通过分支预测预测分支的输出,在假定预测正确的前提下执行程序。
- 不允许流水线中执行任何不可撤销的操作,即在分支结果出来前其后续指令不能更新寄存器或存储器。这一点通过指令提交来保证,即允许指令乱序执行,但必须顺序提交。
- 使用重排序缓冲区来保存才能已经执行完成但还没有提交的指令结果,并在指令执行结束到提交这段时间内提供源操作数。
- 当指令提交时将结果写回寄存器或存储器,当分支指令到达ROB头部时,如果推测是错误的,需要恢复流水线状态并重新从正确的目标地址取指。
- 需要一些机制处理分支预测错误的情形。
- 保证了精确异常(非精确异常:发生异常时,处理器的状态与严格按照程序顺序执行指令时的状态不完全一致)。
speculation与prediction的区别:
- 有branch prediction无speculation时:会根据分支预测进行取指,但在分支指令执行结束确定执行结果前其后的指令不被允许执行。
- 有branch prediction有speculation时:根据分支预测取指并执行后续指令。
3 多发射
通过降低CPI提高性能。
动态调度超标量处理器、VLIW(超长指令字)。
4 多线程
开发线程级并行,利用多线程隐藏流水线和存储器的延迟,从而提高单处理器的吞吐量。
- 细粒度多线程:每个时钟周期在线程间进行一次切换,使多个线程的指令执行过程交织在一起。当一个线程停顿时,哪怕只有几个周期也可以执行其他线程的指令。优点是可以隐藏因为长、短停顿而导致的吞吐量损失;缺点是会减缓个体线程的执行速度,因为一个做好执行准备且没有停顿的线程可能会被其他线程的执行所延迟。
- 粗粒度多线程:尽在发生成本较高的停顿时才切换线程,大大降低了减缓任一线程速度的可能性。缺点是克服吞吐量损失的能力非常有限,尤其时由于短停顿导致的损失。
- 同时多线程(Simultaneous Multithreading,SMT):细粒度多线程的一种变体。
二、数据级并行(向量机、SIMD、GPU)
三、线程级并行(MIMD)
1 多处理器分类
多处理器:紧耦合处理器组成的计算机,这些处理器的协调与使用由单一处理器系统控制,通过共享地址空间来共享存储器。
按照共享处理器的组织方式,多处理器分为两类:
多处理 |
对称(共享存储器)多处理器 (Symmetric Multi-Processing,SMP) |
分布式共享存储器 (Distributed Shared Memory,DSM) |
概念 | 又称集中式共享存储器多处理器。所有处理器共享一个集中式的存储器,所有处理器访问存储器的延迟都是一致的。适合处理器较少的情况。 | 为了支持更多的处理器,存储器分散在处理器之间。 |
优点 | - | 增加了带宽,也缩短了到本地存储器的延迟。 |
缺点 | 如果要为大量处理器提供带宽支持,访问延迟会大幅增加。 | 处理器之间传送数据的过程更加复杂。 |
SMP 和 DSM 中,线程通信是通过共享地址空间完成的,即任何一个拥有正确寻址权限的处理器都可以向任意存储器位置发出存储器引用。
- 限制并行处理的障碍:1)程序中本身可用的并行性有限;2)不同核心之间、不同芯片核心之间的通信延迟过长、成本较高。
2 对称多处理器
针对 SMP 远程延迟过长的问题,硬件上可以通过一些机制来降低远程访问的频率,例如缓存共享数据。
共享数据的缓存带来了新的问题:缓存一致性。为多个处理器保持缓存一致性的协议被称为缓存一致性协议,主要分为两类:
- 目录式:使用一个集中目录,保存存储块的共享状态。
- 监听式:所有缓存都可以通过总线访问,所有缓存控制器通过监听本处理器以及总线发出的请求,改变所选缓存块的状态,并使用总线访问数据或使其失效。
2.1 监听一致性协议
监听一致性协议中有两种实现一致性的方法:
1)写入失效:当对一个共享缓存执行写入操作时,先使该缓存的其他副本失效(MESI协议)。
2)写入更新:在写入一个数据项时更新该数据项的所有缓存副本。这种方法必须将所有写入操作都广播到共享缓存线上,所以它要占用相当多带宽。
【计算机体系结构量化与研究方法笔记】相关推荐
- 计算机体系结构:量化研究方法:第5版
<计算机体系结构:量化研究方法:第5版> 基本信息 原书名:Computer Architecture:A Quantitative Approach,Fifth Edition 作者: ...
- 计算机体系结构量化研究方法(一)
量化设计与分析方法 1.1 引言 1.2 计算机的分类 1.3 计算机体系结构的定义 1.3.1指令集体系结构(ISA) 指令集结构的分类 存储器寻址 寻址模式 ISA编码 1.3.2 真正的计算机体 ...
- 计算机体系结构学什么研究什么,对计算机体系结构研究的一点认识-XiaZhao.PDF
对计算机体系结构研究的一点认识-XiaZhao.PDF 专栏 第 10 卷 第 6 期 2014 年 6 月 对计算机体系结构研究的一点认识 钱学海 关键词 :计算机体系结构 研究方法 美国加州大 ...
- 心理实验应用计算机的优缺点,发展心理学研究方法发展的新趋势
近年来,随着发展心理学科学研究的不断深入,随着现代科学技术和社会的迅速发展,发展心理学研究出现了一些新的趋势,研究方法表现出许多新特点.这集中地体现在以下几个方面:研究思路的生态化:研究方式的跨学科和 ...
- 《计算机体系结构量化研究方法第六版》1.2 计算机的分类
1.2.1 个人移动设备(PMD) 1.比如说手机.平板之类的. 2.特点: (1)经常使用电池而强调能效,但是由于需要相对便宜的外壳,所以也只能限制总功耗. (2)上面的应用程序经常基于web.面向 ...
- 《计算机体系结构量化研究方法》1.8 性能的测量、报告和汇总
引入 1.一些概念 响应时间:手机用户所关注的"速度",也就是一个事件从启动到完成的时间,又称为执行时间. 吞吐量:给定时间内完成的总工作量,WSC的操作人员关注这个. 执行时间是 ...
- 《计算机体系结构:量化研究方法》读书笔记
Lecture 1: Quantitative Approach 1.计算机体系结构与计算机组成原理有什么区别? 计算机的实现包括两个方面:组成和硬件.组成一词包含了计算机设计的高阶内容,例如存储器系 ...
- 计算机体系结构复习笔记
本篇复习笔记对应的课本是<计算机体系结构 量化研究方法> 参考了老师的PPT,以及总结了课后习题和考试题 文章目录 1. 计算机体系结构基础 1.1 计算机系统的分层 1.2 计算机体系结 ...
- 数据级并行--计算机体系结构
参考书:<计算机体系结构量化研究方法> 作者:John L. Hennessy 一. 引言 指令流与数据流的并行分类 单指令流.单数据流(SISD) 单指令流.多数据流(SIMD) 多指令 ...
- 指令级并行--计算机体系结构
参考书:<计算机体系结构量化研究方法> 作者:John L. Hennessy 一.基本概念 几乎所有处理器都使用流水线来重叠指令的执行过程,以提高性能.由于指令可以并行执行,所以指令之间 ...
最新文章
- 分布式锁用Redis好?还是Zookeeper好?
- 22. linux 常用命令
- 16:9或4:3,哪种屏幕宽高比更适合用户?
- 马秀丽C语言程序设计答案pdf,C语言程序设计清华大学马秀丽刘志妩科后习题9答案.doc...
- 学习难吗?从画一个点开始,从点点鼠标开始
- C语言重难点总结:指针
- 前端面试题汇总(JS 基础篇)
- eBPF BCC 实现UNIX socket抓包
- swt matlab 中 swa,Matlab小波工具箱的使用3
- 一步一步写算法(之循环和递归)
- 位运算(、|、^、~、>>、<<)
- Factstone Benchmark
- Q95:纹理映射(Texture Mapping)——地球仪
- 基于Multisim14的弱信号放大电路的设计与仿真
- C51单片机串口初始化为何是这样:SCON=0X52;TMOD=0X20;TH1=0XF3;TR1=1;
- 求出字符串中大写字母,小写字母和数字的个数
- 数值策划科普-------阈值
- 软体机器人空间感知技术综述
- 【iOS】 Foundation 数组
- java ora 01002,ORA-01002 提取违反顺序
热门文章
- iOS界面--Tom猫的实现
- crontab 问号_Spring - Quartz - cronExpression中问号(?)的解释
- torch.ge()函数解读
- Python函数和面向对象程序设计(课本总结)
- 中国撸串指北:13万家烧烤店的吃货最爱
- 如何裁剪动图大小?试试这个在线照片裁剪工具
- python怎样查找收盘价_如何在Python中从晨星获得调整后的收盘价?
- DNS图解(秒懂 + 史上最全)
- springboot框架图解
- 超级短信 handcent sms v4.4.1 android,超级短信(Handcent SMS)