当前位置: 首页 > news >正文

第16章 指令级并行与超标量处理器

处理器体系结构的超标量实现是指常见指令--整数与浮点算术、加载存储和条件分支--可以同时启动,但独立执行。

16.1 概述

超标量方法的本质是能在不同的流水线中独立地并发地执行指令。

在传统的标量组织结构中,其并行性是通过允许许多指令在同一时间处于流水线的不同阶段来实现来实现的。在超标量组织结构中。存在多个功能单元,其中的每一个都以流水线的形式实现。每个单独的功能单元通过其流水化结构提供了一定程度的并行性。

16.1.1 超标量与超流水

实现更高性能的另一种方法被称为超流水,利用以下事实:许多流水段执行任务所需时间不足半个时间周期。因此,内部时钟速度加倍就能在一个外部时钟周期执行2个任务。

16.1.2 限制

超标量方法依赖于并行执行多条指令的能力。术语指令级并行是指程序指令平均并行执行的程度。把给予编译器的优化和硬件技术结合起来,可以最大化指令级并行。

限制指令级并行的5种情况:

        真数据相关;

        程序相关;

        资源冲突;

        输出相关;

        反相关;

加载延迟的一个补偿方法是编译器对指令进行重排序,以便一条或更多不依赖于该内存加载的后续指令可以启动流水过程。

程序相关,指令序列种的分支的存在使得流水线操作复杂化。分支(跳转或不跳转)后面的指令于分支之间有程序相关性,在分支执行之前都无法执行。

如果使用了变长指令,那么又会产生另外一种程序相关。因为任何特定指令都是未知的,所以必须至少对其进行部分译码之后,才能取下一条指令。

资源冲突,两条或更多指令同时对相同资源的竞争。资源包括:内存、高速缓存、总线、寄存器和功能单元。

对流水线来说,资源冲突表现出于数据相关类似的行为。但是,也有差异性。一方面,资源冲突可以通过资源重复来克服,但是真数据相关是无法消除的。此外,当操作需要较长时间完成的,可以通过把合适的功能单元流水化来最小化资源冲突。

16.2 设计问题

当指令序列种的指令是独立的,并因此可以通过重叠并行执行时,就存在指令级并行。

指令级并行的度由代码中的真数据相关性和程序相关的评率来决定的,而这些因素又取决于指令集架构和应用。指令级并行还取决于被称为操作时延的因素:指令结果可以被后续指令用作操作数所需的时间。时延决定了数据或程序相关将导致多少延迟。

机器并行性是对处理器利用指令级并行能力的一种度量。机器并行性取决于同时能获取并行执行的指令条数(并行流水线的数量),以及处理器发现独立指令所用机制的速度和复杂性。

16.2.2 指令发射策略

机器并行性并不仅仅是每个流水段有多个实例的问题。处理器必须还能识别指令集并行性,并能协调指令的并行取指、译码和执行。

处理器试图在当前执行带你之前就查找定位能被送入流水线并执行的指令。有三种重要的顺序:

        指令取指的顺序;

        指令执行的顺序;

        指令更新寄存器和内存内容的顺序;

处理器越复杂,这些顺序之间的严格关系对它的约束就越小。但是,处理器的一个必然约束是:结果必须正确、

一般来说,我们可以把超标量指令发射策略分为以下几类:

        按序发射,按序完成:按串行执行的顺序来发射指令,并按照相同的顺序写结果,即使是标量流水线也不会使用。

        按序发射,无序完成:标量risc处理器使用无序完成来提高多个周期的指令的性能,其指令发射的逻辑也比按序完成更复杂。此外,处理指令中断和异常也更困难。

        无序发射,无序完成:在按序发射种,处理器只会译码到相关或者冲突点的指令,在冲突被解决之前,不会译码其他指令。因此,处理器无法看到冲突点之后的指令可能是独立于已经在流水线中的指令,且可能被有效地引入流水线中。为了允许无序发射,必须分离流水线的译码阶段和执行阶段,通过指令窗口的缓冲区来完成,其结果就是处理器具有前瞻属性,允许识别可以送入执行阶段的独立指令。

指令窗口不是一个额外的流水段,指令在窗口中仅仅意味着处理器有关于该指令的足够信息来决定什么时候发射该指令。

重排序缓冲区是支持无序完成的常用技术。

16.2.3 寄存器重命名

反相关和输出相关都是存储冲突的例子。多条指令竞争使用相同的寄存器位置,从而产生了影响性能的流水线限制。

一种处理这种类型存储冲突的方法是以传统的资源冲突解决方法为基础的:资源复制。本书将其称为寄存器重命名。从本质来说,寄存器是由处理器硬件动态分配的,它们与指令在不同时间点所需的值相关联。

16.2.4 机器并行性

超标量处理器中用来提高性能的三种硬件技术:资源复制、无序发射和重命名。

不进行寄存器重命名就增加功能单元可能是不值得的。使用大小为8和更大的指令窗口能获得的获益在数量上存在显著差异。如果指令窗口太小,数据相关性会妨碍额外功能单元的有效利用,处理器必须具有前瞻性,能发现相关的指令,以便更充分利用硬件。

16.2.5 分支预测

任何高性能流水线计算机都必须解决处理器分支的问题。intel预取之后的下一条顺序指令以及推测性预取分支目标指令来解决这个问题。

随着超标量计算机的发展,延迟分支策略的应用越来越少,其原因在于在延迟槽中需要执行多条指令,这引发了与指令依赖性有关的问题。超标量机器又回到了risc之前的分支预测技术。

16.2.6 超标量执行

取指阶段包括了分支预测,用来形成动态指令流。检查指令流的相关性,可能删除一些人为的依赖性。然后处理器把指令分配到执行窗口。在该窗口中,指令不再是一个连续的流,而是按照它们真正的数据相关性进行组织。处理器按照真实的数据相关性和硬件资源的可用性来确定的顺序来执行每条指令。最后,从概念上来说,指令按照顺序重新排序并记录其结果。

由于利用了并行性,多条流水线,指令完成的顺序可以不同于静态程序展示的顺序。指令完成后不能立即更新永久处理器和程序可见的寄存器,结果必须保存在某种临时寄存器,相关指令可以使用这些临时寄存器,然后当确定顺序模型已经执行该指令时,再将其结果永远保存。

16.2.7 超标量实现

关键要素:

        指令获取策略通常利用预测条件分支的结果,以及获取条件分支指令之外的指令,来同时获取多条指令。这些功能要求使用多个流水线取指和译码段,以及分支预测逻辑。

        涉及寄存器的值来确定真相关的逻辑,以及在执行过程中把这些值传递到需要它们的位置的机制。

        多条指令并行启动或发射的机制。

        并行执行多条指令的资源,包括多个流水线功能单元,能同时服务多个内存引用的存储器层次结构。

        按顺序提交进程状态的机制。

16.3.1 前端

        前端构成:分支预测单元、取指和译码单元以及指令队列。

相关文章:

第16章 指令级并行与超标量处理器

处理器体系结构的超标量实现是指常见指令--整数与浮点算术、加载存储和条件分支--可以同时启动,但独立执行。 16.1 概述 超标量方法的本质是能在不同的流水线中独立地并发地执行指令。 在传统的标量组织结构中,其并行性是通过允许许多指令在同一时间处…...

JavaWeb ( 三 ) Web Server 服务器

1.5.Web Server服务器 Web Server 服务器是一种安装在服务器主机上的应用程序, 用于处理客户端(Web浏览器)的请求,并返回响应内容。服务器使用HTTP(超文本传输协议)与客户机浏览器进行信息交流。 简单说就是将http协议的信息翻译成对应开发语言可以处理的对象信息。…...

2.6 浮点运算方法和浮点运算器

学习目标: 以下是一些具体的学习目标: 理解浮点数的基本概念和表示方法,包括符号位、指数和尾数。学习浮点数的运算规则和舍入规则,包括加、减、乘、除、开方等。了解浮点数的常见问题和误差,例如舍入误差、溢出、下…...

第一次找实习, 什么项目可以给自己加分(笔记)

什么样的项目能简历加分、对找工作有帮助 基本特征: 一个特征是“硬核基础软件”,另一个为很实用的APP。 硬核基础软件 独立实现一个操作系统的kerne内核(操作系统的内部引擎) 北美计算机名校会让学生用一个学期的时间实现一个…...

FPGA/Verilog HDL/AC620零基础入门学习——8*8同步FIFO实验

实验要求 该项目主要实现一个深度为8、位宽为8bit的同步FIFO存储单元。模块功能应包括读控制、写控制、同时读写控制、FIFO满状态、FIFO空状态等逻辑部分。 该项目由一个功能模块和一个testbench组成。其中功能模块的端口信号如下表所示。 提示: (1&a…...

shell脚本

shell函数 函数分类: 系统函数 自定义函数 常用系统函数: basename 从指定路径中获取文件名 dirname 从指定路径中获取目录名,去掉文件名 自定义函数 # 函数的定义 函数名 () { 命令 # 使用$n获取函数的参数 [return 返回…...

不部署服务端调用接口,前端接口神器json-server

简介 json-server 是一款小巧的接口模拟工具,一分钟内就能搭建一套 Restful 风格的 API,尤其适合前端接口测试使用。 只需指定一个 json 文件作为 api 的数据源即可,使用起来非常方便,30秒入门,基本上有手就行。 进阶…...

国产化:复旦微JFM7K325T +华为海思 HI3531DV200 的综合视频处理平台

板卡概述 TES714 是自主研制的一款 5 路 HD-SDI 视频采集图像处理平台,该平台采用上海复旦微的高性能 Kintex 系列 FPGA 加上华为海 思的高性能视频处理器 HI3531DV200 来实现。 华为海思的 HI3531DV200 是一款集成了 ARM A53 四核处理 器性能强大的神经网络引擎…...

Ceph入门到精通- stderr raise RuntimeError(‘Unable to create a new OSD id‘)

/bin/podman: stderr raise RuntimeError(Unable to create a new OSD id) podman ps |grep osd.0 podman stop osd.0 容器id 重新添加osd.0 集群目录 cd /var/lib/ceph/e8cde810-e4b8-11ed-9ba8-98039b976596/1109 ls1110 rm -rf osd.01111 ceph orch daemon add osd…...

AWSFireLens轻松实现容器日志处理

applog应用程序和fluent-bit共享磁盘,日志内容是json格式数据,输出到S3也是JSON格式 applog应用部分在applog目录: Dockerfile文件内容 FROM alpine RUN mkdir -p /data/logs/ COPY testlog.sh /bin/ RUN chmod 777 /bin/testlog.sh ENTRYP…...

Java程序设计入门教程--案例:自由落体

程序模拟物体从10000米高空掉落后的反弹行为。 球体每落地一次,就会反弹至原高度的一半。按用户输入的弹跳次数,计算球体每次弹跳的高度。 实现过程: 1. 新建项目; 2. 接收 用户输入的弹跳次数: (1&#…...

Qt音视频开发44-本地摄像头推流(支持分辨率/帧率等设置/实时性极高)

一、前言 本地摄像头推流和本地桌面推流类似,无非就是采集的设备源头换成了本地摄像头设备而不是桌面,其他代码完全一样。采集本地摄像头实时视频要注意的是如果设置分辨率和帧率,一定要是设备本身就支持的,如果不支持那就歇菜&a…...

SpringCloud学习(七)——统一网关Gateway

文章目录 1. 网关介绍2. 网关搭建2.1 引入依赖2.2 创建启动类2.3 编写配置2.4 测试 3. 路由断言工厂4. 路由过滤器4.1 过滤器配置4.2 全局过滤器4.3 过滤器执行顺序 5. 跨域问题处理 1. 网关介绍 到现在,我们可以使用Nacos对不同的微服务进行注册并管理配置文件&am…...

《花雕学AI》31:ChatGPT--用关键词/咒语/提示词Prompt激发AI绘画的无限创意!

你有没有想过用AI来画画?ChatGPT是一款基于GPT-3的聊天模式的AI绘画工具,它可以根据你输入的关键词/咒语/提示词Prompt来生成不同风格和主题的画作。Prompt是一些简短的文字,可以用来指导ChatGPT的创作过程。在这篇文章中,我将展示…...

计算机组成原理9控制单元的结构

9.1操作命令的分析 取值周期间址周期执行周期中断周期 取指周期数据流 PC存放下条指令的地址给MAR访问存储器相应单元,将数据取出来送给MDR寄存器,MDR取出来的内容送给IR指令寄存器,然后对指令进行译码,把指令的操作码部分取出…...

MySQL数据备份和恢复

MySQL数据备份和恢复 数据备份 mysqldump是MySQL数据库备份工具,可以备份MySQL数据库中的数据和结构,生成.sql文件,方便数据的迁移和恢复。 使用mysqldump工具前一定要配置环境变量 打开开始菜单,搜索“环境变量”。点击“编辑…...

数据结构与算法之链表: Leetcode 237. 删除链表中的节点 (Typescript版)

删除链表中的节点 https://leetcode.cn/problems/delete-node-in-a-linked-list/ 描述 有一个单链表的 head,我们想删除它其中的一个节点 node。 给你一个需要删除的节点 node 。你将 无法访问 第一个节点 head。 链表的所有值都是 唯一的,并且保证给…...

继承的相关介绍---C++

一、概念及定义 概念: 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结…...

Java多线程深入探讨

1. 线程与进程2. 创建和管理线程2.1. 继承Thread类2.2. 实现Runnable接口2.3 利用Callable、FutureTask接口实现。2.4 Thread的常用方法 3. 线程同步3.1. synchronized关键字3.1.1同步代码块:3.1.2 同步方法: 3.2. Lock接口 4. 线程间通信5. 线程池5.1 使…...

SpringCloud全面学习笔记之进阶篇

目录 前言微服务保护初识Sentinel雪崩问题及解决方案雪崩问题超时处理仓壁模式熔断降级流量控制总结 服务保护技术对比Sentinel介绍和安装微服务整合Sentinel 流量控制快速入门流控模式关联模式链路模式小结 流控效果warm up排队等待 热点参数限流全局参数限流热点参数限流案例…...

英语中主语从句的概念及其用法,例句(不断更新)

主语从句的原理 主语从句是一种充当整个句子主语的从句,主语从句构成的句子,是要以引导词开头的。它可以用名词性从属连词、关系代词或关系副词引导。主语从句通常位于谓语动词之前,用于表示动作、状态或事件的主体。 以下是一些常用的引导主…...

数组的子数组(亚阵列)、子序列,字符串的子串、子序列

数组 子数组 一个或连续多个数组中的元素组成一个子数组 子数组最少包含一个元素 数组 {1, 2, 3} 的子数组是 {1}, {1, 2}, {1, 2, 3}, {2}, {2, 3}, 和 {3}. 子序列 子序列就是在原来序列中找出一部分组成的序列 子序列不一定连续 相对位置还是不变 但是&#xff…...

MySQL 知识:迁移数据目录到其他路径

一、系统环境 操作系统:Centos 7 已安装环境:MySQL 8.0.26 二、开始操作 2.1 关闭SELinux 为了提高 Linux 系统的安全性,在 Linux 上通常会使用 SELinux 或 AppArmor 实现强制访问控制(Mandatory Access Control MAC&#xff…...

Go | 一分钟掌握Go | 8 - 并发

作者:Mars酱 声明:本文章由Mars酱编写,部分内容来源于网络,如有疑问请联系本人。 转载:欢迎转载,转载前先请联系我! 前言 当今编程界,一个好的编译型语言如果不支持并发&#xff0c…...

【滤波】多元高斯

本文主要翻译自rlabbe/Kalman-and-Bayesian-Filters-in-Python的第5章节05-Multivariate-Gaussians(多元高斯)。 %matplotlib inline#format the book import book_format book_format.set_style()简介 上一篇文章中的技术非常强大,但它们只…...

单源最短路问题

全部代码 全部代码在github acwing 上 正在更新 https://github.com/stolendance/acwing 图论 欢迎大家star与fork 单源最短路问题 先用spfa算法 不行再换其他的 spfa-超级万能 说不定比dijsktra还快 dis[] 代表第k到某一点的最短距离 queue 代表刚被更新的点 它有可能更…...

Security方法注解权限控制过程及自定义权限表达式

文章目录 使用内置的权限表达式PreAuthorizePermissionEvaluator 自定义权限表达式SysMethodSecurityExpressionHandler源码流程 SysMethodSecurityExpressionRoot 使用内置的权限表达式 PreAuthorize 这个用来判断超级管理员的话,还得在表达式上加上或 Permissi…...

vue 省市县三级联动

1、 <template><div>所在省<el-select popper-class"eloption" :popper-append-to-body"true"change"getShiList(obj.province)" v-model"obj.province" placeholder"请选择所在省" clearableclear"re…...

ChatGPT实现编程语言转换

编程语言转换 对于程序员来说&#xff0c;往往有一类工作&#xff0c;是需要将一部分业务逻辑实现从服务端转移到客户端&#xff0c;或者从客户端转移到服务端。这类工作&#xff0c;通常需要将一种编程语言的代码转换成另一种编程语言的代码&#xff0c;这就需要承担这项工作…...

浅拷贝和深拷贝

浅拷贝&#xff1a; 定义&#xff1a;浅拷贝&#xff08;Shallow Copy&#xff09;是一种简单的对象复制方式&#xff0c;将一个对象的数据成员直接复制给另一个对象&#xff08;通常是通过默认的复制构造函数或赋值运算符实现&#xff09;&#xff0c;这些数据成员可以是基本…...

怎么做网站呢/windows优化大师功能

题目&#xff1a;本题目为谭浩强版C语言教材第11章《结构体和共用体》的课后习题第2题。要求&#xff1a;定义一个结构体变量&#xff08;包括年、月、日&#xff09;&#xff0c;由主函数传递年月日到一个函数&#xff0c;计算出该日在本年度中是第几天。注意闰年与否。 解决方…...

网站制作论文致谢/推广代理登录页面

实体造型 计算机造型&#xff1a;如何在计算机中建立模型表示不同图形对象。 图形对象的描述包括图形信息和非图形信息。 &#xff08;1&#xff09;图形信息又分为几何信息和拓扑信息。几何信息包括形体位置和大小&#xff0c;拓扑信息包括形体点、边、面的数量及相互之间的连…...

电子商务网站建设合同标准范文/百度关键词工具在哪里

&#x1f4d6;摘要 今天分享下 —— SpringBoot 中必须掌握的45个注解&#xff0c;欢迎关注&#xff01; &#x1f302;SpringBoot/Spring SpringBootApplication: 包含 Configuration、EnableAutoConfiguration、ComponentScan 通常用在主类上&#xff1b; Repository: 用于标…...

安装wordpress时选择中文语言失败/交易链接大全

本篇主要讲述我们日常使用中和maven相关的基础概念。后面两篇主要讲述一、按照惯例&#xff0c;先普及一下概念&#xff0c;后面会用到你也可以直接跳过&#xff0c;后面用到的时候&#xff0c;再回来看。1. mavenMaven全名叫Apache Maven&#xff0c;是一个软件项目管理和项目…...

广西公司搭建网站公司/广告搜索引擎

例如:url为: http://localhost:8080/DemoServer/cellid_search?mnc1&cell59831&lac13572&mnc1&cell1942&lac98940 里面有两组参数,那么如何获取呢? String[] mncs request.getParameterValues("mnc"); String[] lacs request.getParamete…...

做网站怎样用链接赚钱/一键优化表格

作者&#xff1a;Autodesk中国公司 朱小羽  在2005年全球GIS市场总体增长仅为4%的情况下&#xff0c;Autodesk在这一领域中仍然实现了24%的增长率&#xff0c;远高于所有的主要竞争对手。更具有革命性意义的是&#xff0c;与竞争对手不同&#xff0c;Autodesk地理空间产品线从…...