计算机体系结构基础知识介绍之动态调度(三)

news2024/12/28 11:08:13

首先回顾一下tomasulo算法,

Tomasulo算法的第一个优点是分布式的冒险检测逻辑,这是通过使用预留站和公共数据总线实现的。预留站是一种存储指令和操作数的缓冲区,每个功能单元都有自己的预留站。公共数据总线是一种广播结果的方式,可以让多个预留站同时获取结果。如果有多个指令都在等待一个结果,并且每个指令都已经有了另一个操作数,那么当结果通过公共数据总线广播时,这些指令就可以同时开始执行。如果使用集中式的寄存器文件,那么功能单元就必须在寄存器总线可用时才能从寄存器读取结果。

Tomasulo算法的第二个优点是消除了WAW和WAR冒险,这是通过使用预留站重命名寄存器和把操作数尽早存入预留站实现的。WAW冒险是指后面的指令写入了前面的指令要写入的寄存器,WAR冒险是指后面的指令读取了前面的指令要写入的寄存器。在Tomasulo算法中,每个预留站都相当于一个临时寄存器,当一个指令被发射到预留站时,它就会被分配一个新的寄存器名字。同时,如果它需要的操作数已经准备好了,就会被复制到预留站中;如果还没有准备好,就会记录下提供操作数的预留站编号。这样,后面的指令就不会影响前面的指令的执行。

用三个表格展示了当fmul.d准备写入结果时,各个预留站和寄存器状态表的情况。在这个例子中,fadd.d已经完成了,因为fdiv.d需要的操作数被复制了,从而克服了WAR冒险。即使f6被fdiv.d占用了,fadd.d也可以执行并把结果写入f6,而不会触发WAW冒险。因为使用fdiv.d结果的指令会指向它对应的预留站编号,而不是直接使用f6。

 

 

 注 上图为之前,下图为之后

 在 Tomasulo 的方案中,结合了两种不同的技术:将架构寄存器重命名为更大的寄存器集以及缓冲寄存器文件中的源操作数。 源操作数缓冲解决了当操作数在寄存器中可用时出现的 WAR 危险。 正如我们稍后将看到的,还可以通过重命名寄存器并缓冲结果来消除 WAR 危险,直到不再保留对寄存器早期版本的未完成引用为止。

Tomasulo 的方案在 360/91 之后多年没有使用,但从 20 世纪 90 年代开始在多发行处理器中广泛采用,原因如下:

1.虽然Tomasulo的算法是在缓存之前设计的,但缓存的存在及其固有的不可预测的延迟已经成为动态调度的主要动机之一。 无序执行允许处理器在等待高速缓存未命中完成的同时继续执行指令,从而隐藏全部或部分高速缓存未命中损失。
2. 随着处理器的处理能力变得更加积极,并且设计人员关注难以调度的代码(例如大多数非数字代码)的性能,寄存器重命名、动态调度和推测等技术变得更加重要。
3.无需编译器将代码定位到特定的管道结构即可实现高性能,这在紧缩的大众市场软件时代是一个宝贵的特性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/740902.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot07:Thymeleaf模板引擎

目录 一、Thymeleaf 1、模板引擎 2、引入Thymeleaf 3、Thymeleaf分析 二、测试 1、编写一个TestController 2、编写一个测试页面welcome.html放在templates目录下 3、启动项目请求测试 三、Thymeleaf语法学习 1、修改测试请求,增加数据传输 2、要使用thy…

zabbix服务部署

文章目录 zabbix1 zabbix简介1.1 组成部件1.2 监控原理1.3 Zabbix 6.0新特性1.4 Zabbix6.0功能组件1.4.1 Zabbix Server1.4.2 数据库1.4.3 Web界面1.4.4 Zabbix Agent1.4.5 Zabbix Proxy1.4.6 Java Gateway 2 部署zabbix服务端2.1 部署Nginx2.2 安装PHP2.3 修改Nginx配置2.4 修…

Docker安装ElasticSearch7.14.0 docker安装elasticsearch7.14.0完整详细教程

Docker安装ElasticSearch7.14 docker安装elasticsearch7.14完整详细教程 Docker 上安装 ElasticSearch 7.14.0 的步骤:选择要安装的ElasticSearch 版本1、拉取 ElasticSearch 镜像2、创建并运行容器关闭容器启动容器重启容器 3、elasticsearch常用端口以及作用4、测…

耳夹式骨传导耳机测评!2023年最全耳夹骨传导耳机盘点

现在市面上的骨传导耳机品牌层出不穷,骨传导耳机好不好用,主要还是看耳机的品牌背景以及独家的音质技术调配,较大的骨传导耳机品牌在购买时售后以及使用体验上都具有一定的保障,下面就分享一些值得入手的骨传导耳机给大家吧~ 第一…

安装.net framework3.5 无法打开运行空间池,服务器管理器winRM插件可能已经损坏

解决方案: 1.以管理员权限打开命令提示符,然后运行如下命令: "reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f" 2.然后运行"winrm quickco…

玩转 TypeScript 中【class类】的定义与使用方法解读。

目录 类的概念类的继承 :类的存取器:类的静态方法与静态属性:类的修饰符:参数属性:抽象类:类的类型: 类的概念 类是用于创建对象的模板。他们用代码封装数据以处理该数据。JavaScript 中的类建立在原型上&a…

java.lang.NoSuchMethodError异常原因及解决办法

java.lang.NoSuchMethodError异常原因及解决办法 第一种简单的情况就是本类中需要调用的方法名称错误,这种情况就需要去检查方法名称是否正确,避免调用的方法和本类中的有相同的名称。 第二种情况就是jar包的问题 可能是jar包没有导入进来或者jar包导入…

HTTP第17讲——Cookie机制

Cookie的诞生背景 HTTP 是“无状态”的,这既是优点也是缺点。优点是服务器没有状态差异,可以很容易地组成集群,而缺点就是无法支持需要记录状态的事务操作。 后来发明的 Cookie 技术,给 HTTP 增加了“记忆能力”。 什么是Cookie…

图灵奖得主Geoffrey Hinton:我的五十年深度学习生涯与研究心法

本文介绍了Hinton非常坦诚地分享了自己的学术生涯,深度学习的未来和研究心得。 他从未正式上过计算机课程,本科在剑桥大学读的是生理学和物理学,期间曾转向哲学,但最终拿到的却是心理学方向的学士学位;他曾因为一度厌学…

在OK3588的Ubuntu系统上安装Firefox浏览器

文章目录 概要配置上网环境安装的具体命令 概要 因为Ubuntu系统里面没有安装浏览器,为了方便使用,提高工作效率,我们安装一下Firefox浏览器。 Firefox是一款适用于Ubuntu系统的免费和开源的Web浏览器。由Mozilla Foundation和其子公司Mozil…

818. 数组排序

链接: 链接 题目: 给定一个长度为 nn 的数组 aa 以及两个整数 ll 和 rr,请你编写一个函数,void sort(int a[], int l, int r),将 a[l]∼a[r]a[l]∼a[r] 从小到大排序。 输出排好序的数组 aa。 输入格式 第一行包含三个…

TiDB简述及TiKV的数据结构与存储 | 京东物流技术团队

1 概述 TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、…

景区导航小程序解决方案-便捷化游览体验

系统背景 景区导航小程序是一种基于移动设备的智能化导航系统,旨在为游客提供更加便捷、准确的导航服务。随着人们生活水平的提高,旅游业得到了快速发展,然而,在景区游览过程中,游客往往需要花费大量时间和精力来寻找…

Java- IO 及其相关面试题

目录 一、前言二、Java IO 概述输入和输出流2.1.1 定义2.1.2 代码示例 2.2 字节流和字符流2.2.1 定义2.2.2 代码示例 2.3 标准IO和NIO 三、字节流和字符流3.1. 字节流:InputStream和OutputStream3.1.1. FileInputStream和FileOutputStream3.1.2. ByteArrayInputStre…

【unity之IMGUI实践】单例模式管理面板对象【一】

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

30页PPT,IPv6技术一次梳理清

上午好,我的网工朋友。 IPv6技术在以前的文章里,已经被老杨总说的很明白了:《都到2023年了,为啥IPv6还一直无法普及? 》 但是IPv6的过渡技术,好像一直没给你补上。 你知道IPv4向IPv6过渡的步骤有哪些吗&…

在B1中定义一个纯虚函数pvf(),重做练习1-4,并解释其结果

运行代码: //在B1中定义一个纯虚函数pvf(),重做练习1-4,并解释其结果。 #include"std_lib_facilities.h" //---------------------------------------------------------------------- //定义B1类。 class B1 { public:virtual vo…

《Linux运维总结:Centos7.6之OpenSSH9.0升级版本至9.3》

一、环境信息 说明:当前环境openssh版本为9.0p1,是从7.4p1版本直接升级上来的,先需要将9.0p1版本升级至9.3p1版本。如下所示,则为源ssh和目标ssh的信息。 -操作系统openssh版本openssh安装目录openssh安装方式openssl版本openssl…

你感到迷茫吗?【笔记】

你感到迷茫吗?【笔记】 前言推荐你感到迷茫吗?原通工19级-西电电院(电子信息雷达方向-专硕三年)原计科19级-西邮计院(软件工程方向-学硕三年)原计科19级-北京360(月薪-1w)现计科20级(考研:~~不公开处理~~ 物联网)对后来…

Jmeter 分布式压测,你的系统能否承受高负载?

‍你可以使用 JMeter 来模拟高并发秒杀场景下的压力测试。这里有一个例子,它模拟了同时有 5000 个用户,循环 10 次的情况‍。 请求默认配置 如果你想学习性能测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的性能测…