超标量处理器基础-笔记

现代处理器设计经典书籍,2004年出版

第一章 处理器设计

1.2 指令集处理器设计

1、微处理器的设计规范就是指令集体系结构(ISA),它定义了微处理器必须执行的一整套指令集,程序可根据ISA的规定开发而无需了解任何有关实际机器的实现细节。体系结构、逻辑实现与物理实现的关系及相关概念如下图:

2、ISA动静态接口(DSI):区别哪些是在编译时静态完成的,哪些是在运行时动态完成的。

1.3 处理器性能法则

处理器性能是根据执行一段特殊代码所需要的时间来衡量的。

  • 特定的程序需要执行的动态指令的数目;
  • 平均执行一条指令需要花费多少个时钟周期;
  • 每个时钟周期所需要的时间

1性能=时间程序=指令程序⋅周期指令⋅时间周期\frac{1}{性能}=\frac{时间}{程序} =\frac{指令}{程序} \cdot \frac{周期}{指令} \cdot \frac{时间}{周期} 性能1​=程序时间​=程序指令​⋅指令周期​⋅周期时间​

1.4 指令级并行处理

指令数由ISA、编译器和操作系统决定。

第二章 流水线处理器

2.1 流水线基础

  1. **流水线定义:**将系统分割成许多段,在段与段之间增加适当的缓冲,这些段及其缓冲就构成了流水线。流水线的每一段可看做一个组合逻辑加上一个锁存器,信号通过组合逻辑之后在锁存器处锁存。
  2. **提出动机:**提高系统吞吐率(带宽)的同时几乎不增加硬件开销。
  3. **限制流水线时钟频率的因素:**组合逻辑的最长和最短传输延迟之差、为正确建立时钟信号所需要的额外延迟。
  4. **理想流水线假设及挑战:**一致的运算分量(保持流水段均衡);重复的运算(同一指令类型);独立的运算(减少流水线停顿)。

2.2流水线处理器的设计

1、流水线硬件要求:

  • 每一段进行控制和完成数据操作的逻辑;
  • 支持多个流水线同时访问的寄存器文件端口;
  • 支持多个流水段同时访存的存储器端口。

2、要完成一次运算,计算机必须完成以下三个基本任务:

  • 算术操作(ALU指令):对指定操作数执行算术和逻辑运算,这是整个运算中最突出的部分;
  • 数据移动(load/store指令):负责将操作数和结果在存储地址之间进行移动;
  • 指令排序(分支指令):负责指令顺序的确定。

3、现代ISA倾向于采用定长、正交的指令格式、load/store型指令结构和简单的寻址模式。

2.3 深流水线处理器

目标:通过减少每段的逻辑门数来降低时钟周期,从而提高主频。

主要障碍:指令相关引起的流水线停顿。

第三章 超标量结构

**本质特点:**可以同时发射多条指令;乱序执行。

3.1 标量流水线的局限性

标量流水线局限性 改进的超标量流水线方法
标量流水线最大吞吐率不会超过每周期一条指令 每个时钟周期启动多条指令执行
将不同类型的指令放在同一条流水线中处理,效率低下 多配置流水线、多记录缓冲技术
为了保证流水线的步调一致而插入的停顿使流水线产生很多气泡 动态流水线

3.2 超标量流水线综述

**1、取值:**实现每周期读取出s条指令

主要障碍:

  • 读取的s条指令没有对齐,这和指令cache的物理组织有关;
  • 控制流改变了取值集中的指令。

对齐问题的解决方法:

  • 编译时使用静态技术,编译器了解指令cache的组织结构。
  • 执行时由硬件协助解决,即使指令组跨越阵列行边界,对齐硬件也能保证一个周期内取出s条指令。

**2、指令译码:**指令的识别、指令类型确定及指令间相关性的检测。

影响其复杂度的因素:

  • ISA;
  • 并行流水线的宽度。

预译码:将指令译码的部分工作转移到指令cache进行。

对处理器设计的影响:

  • 增加了指令cache的失效开销;
  • cache的大小由于存储预译码标识位而增大。

**3、指令分派:**将在译码段确定类型的指令发射到相应的部件执行。

**4、指令执行:**执行除浮点指令的其他指令

5、指令的完成和提交

超标量流水线的基本结构如下:前端是顺序执行,执行段式乱序执行,后端是顺序提交。

第四章 超标量技术

**重点:**超标量处理器执行指令时的动态行为,及针对某些特殊指令的处理技术。

**目标:**获得最大的指令吞吐率;

4.1 指令流技术

**用途:**一般用在取值段和译码段。

**目标:**在每个机器周期内为处理器内核提供尽可能多的有用指令,减少指令停顿或利用这些停顿周期进行有用的工作。

**主要挑战:**条件分支和转跳分支的处理。

条件分支指令的停顿开销:

  • 生成目标地址引起的开销;
  • 条件判定引起的开销;

分支预测:

  • 分支目标地址的推测,可通过设置分支目标缓冲BTB来实现,用来保存前几次分支执行时的目标地址。
  • 分支方向推测,方法1,设置取值硬件总是预测为不跳转。方法2,需要软件协同,对ISA进行修改。方法3,基于历史信息做分支预测。

动态分支预测可看做由两个相互影响的模块组成,前面的模块负责在流水线的前端推测分支方向和目标地址;后面的模块负责在流水线的后端验证推测的结果。

如果预测失败,需要执行:结束当前指令流并从一个新的、正确的地址取值。

4.2 寄存器数据流技术

**含义:**指ALU(寄存器-寄存器型)指令在处理器执行部件中的有效执行。

寄存器的重用:

  • 含义:特定ISA体系结构的寄存器数目有限,寄存器分配工具必须将无限的寄存器符号资源映射到有限的、固定的体系结构上。
  • 缺点:会导致假数据相关、反相关和输出相关。

寄存器重命名:

  • 含义:为同一体系结构寄存器中的多个定义动态分配不同的名字。
  • 一般方法:在体系结构寄存器文件之外配置一个独立的重命名寄存器文件(映射表技术);
  • 任务:读取源寄存器;分配目的寄存器;更新寄存器。

4.3 存储器数据流技术

存储器指令负责在存储器和寄存器文件之间传递数据。

存储器数据流指令的执行步骤:生成存储器地址、存储器地址转换和数据访问。

虚拟存储器是一种将程序的虚拟地址空间映射到机器物理地址空间的机制。

访问多端口存储器的方法:通过地址索引查找、通过标签相联查找和通过组相联寄存器(即用索引又用相联查找)。

4.3 存储器数据流技术

存储器指令负责在存储器和寄存器文件之间传递数据。

存储器数据流指令的执行步骤:生成存储器地址、存储器地址转换和数据访问。

虚拟存储器是一种将程序的虚拟地址空间映射到机器物理地址空间的机制。

访问多端口存储器的方法:通过地址索引查找、通过标签相联查找和通过组相联寄存器(即用索引又用相联查找)。

超标量处理器基础笔记相关推荐

  1. Linux C基础笔记(2)

    Linux C基础笔记(2) **补充申明:Linux C基础笔记共分为四部分,第一部分是Linux下基本命令,以及vi编辑器的使用还有C中的数据类型,第二部分为运算符.常量变量和输入输出.第三部分是 ...

  2. 超标量处理器设计——第十章_提交

    参考<超标量处理器>姚永斌著 文章目录 超标量处理器设计--第十章_提交 10.1 概述 10.2 重排序缓存 10.2.1 一般结构 10.2.2 端口需求 10.3 管理处理器的状态 ...

  3. JavaScript基础笔记集合(转)

    JavaScript基础笔记集合 JavaScript基础笔记集合   js简介 js是脚本语言.浏览器是逐行的读取代码,而传统编程会在执行前进行编译   js存放的位置 html脚本必须放在< ...

  4. Python初学者零碎基础笔记(一)

    Python初学者零碎基础笔记 一行代码输入多个参数 方法1.) a,b,c=map(类型,input("请输入").split()) #默认空格分隔,若要转其他类型,把类型换成需 ...

  5. Jmeter使用基础笔记-写一个http请求

    前言 本篇文章主要讲述2个部分: 搭建一个简单的测试环境 用Jmeter发送一个简单的http请求 搭建测试环境 编写flask代码(我参考了开源项目HttpRunner的测试服务器),将如下的代码保 ...

  6. UWP入门(二) -- 基础笔记

    UWP入门(二) -- 基础笔记 原文:UWP入门(二) -- 基础笔记 不错的UWP入门视频,1092417123,欢迎交流 UWP-04 - What i XMAL? XAML - XML Syn ...

  7. [云炬创业基础笔记]第五章创业机会评估测试2

    [云炬创业基础笔记]第五章创业机会评估测试1

  8. [云炬创业基础笔记] 第四章测试17

    [云炬创业基础笔记] 第四章测试7

  9. [云炬创业基础笔记] 第四章测试15

    [云炬创业基础笔记] 第四章测试7

最新文章

  1. 7 orm 有批量更新_ORM之SQLAlchemy
  2. python排序链表_合并K个排序链表
  3. Silverlight4Beta之CompositeTransform
  4. springboot+springsecurity+mybatis plus之用户授权
  5. EJB之JPA(UUID与TABLE影射策略)
  6. javascript --- 堆栈内存与闭包的作用
  7. cad.net 获取所有已经安装的cad版本信息
  8. C++11新特性之十:enable_shared_from_this
  9. 基于modelsim的十个Verilog入门试验程序(5)(数字秒表+自助售票机)—程序+测试代码+波形+结果分析
  10. lda新闻主题提取_LDA主题模型 | 原理详解与代码实战
  11. beyong compare激活
  12. 山东理工ACM 1152 C语言实验——求两个整数之和
  13. NVIDIA发布移动超级计算机“Jetson TK1”性能超树莓派
  14. ReactNative 获取地理位置信息
  15. Unity 斜坡滑落
  16. 2018总结,2019展望
  17. 关于泛微E9 OA系统手机端无法使用的抢救过程
  18. excel 2007数据透视表教程
  19. 使用C#解逻辑题:小王、小张、小赵三个人是好朋友,他们中间其中一个人下海经商,一个人考上了重点大学,一个人参军了。此外他们还知道以下条件:小赵的年龄比士兵的大;大学生的年龄比小张小;小王的年龄和大学生
  20. SAP LE初阶自动创建Shipment单据

热门文章

  1. 一款可以制作像素破损撕拉花屏效果的AE脚本:Datamosh
  2. 2018年11月6日珠海航展,歼10B推力矢量验证机超机动飞行表演
  3. 知海匠库php培训,知海匠库:做UI设计电脑用什么配置合适?
  4. 最常用的6种基本思维导图,让你快速入门
  5. 部分GIS开源项目列表
  6. 双11电商店铺活动怎么推广?
  7. android手机照片导出来,华为手机相册怎么导出到电脑?华为手机相册批量导出电脑的三种方法...
  8. React开发工具无法访问文件网址
  9. 使用命名管道的OVERLAPPED方式实现非阻塞模式编程
  10. 李彦宏乘无人驾驶上五环,连线陆奇全程酷炫,结果交警找上门了