实验3 Tomasulo算法【计算机系统结构】

实验3 Tomasulo算法【计算机系统结构】

  • 前言
  • 推荐
  • 实验3 Tomasulo算法
    • 1 实验目的
    • 2 实验平台
    • 3 实验内容和步骤
    • 4 实验总结与心得
  • 最后

前言

2023-6-9 9:19:50

以下内容源自《【计算机系统结构】》
仅供学习交流使用

推荐

实验2 指令调度和延迟分支【计算机系统结构】

实验3 Tomasulo算法

1 实验目的

(1) 加深对指令级并行性及开发的理解。
(2) 加深对Tomasulo算法的理解。
(3) 掌握Tomasulo算法在指令流出、执行、写结果各阶段对浮点操作指令以及load和store指令进行了什么处理。
(4) 掌握采用了Tomasulo算法的浮点处理部件的结构。
(5) 掌握保留站的结构。
(6) 给定被执行的程序片段,对于具体某个时钟周期,能够写出保留站、指令状态表以及浮点寄存器状态表内容的变化情况。

2 实验平台

采用Tomasulo算法模拟器。

3 实验内容和步骤

首先要掌握Tomasulo算法模拟器的使用方法(见随附的ppt)。
1)、假设浮点功能部件的延迟时间为:加减法2个时钟周期,乘法10个时钟周期,除法40个时钟周期,Load部件2个时钟周期。

在这里插入图片描述

(1) 对于下面的代码段,给出当指令MUL.D写结果时,保留站、Load缓冲器以及寄存器状态表中的内容。

L.D   F6,24(R2)
L.D   F2,12(R3)
MUL.D  F0,F2,F4
SUB.D   F8,F6,F2
DIV.D   F10,F0,F6
ADD.D  F6,F8,F2

在这里插入图片描述

(2) 按单步方式执行上述代码,利用模拟器的对比显示功能,观察每一个时钟周期前后各信息表中内容的变化情况。

2)、对于上面相同的延迟时间和代码段:
(1) 给出在第3个时钟周期时,保留站、Load缓冲器以及寄存器状态表中的内容。

在这里插入图片描述
可以看到
保留站中Multi的Qj字段是Load2,寄存器换名技术,存储到保留站
寄存器中F2的Qi是Load2

(2) 步进5个时钟周期,给出此时保留站、Load缓冲器以及寄存器状态表中的内容。

在这里插入图片描述

可以看到
ADD2的Vj是M3(F8),Vk是M2(F2)
Mult1的Vj是M2(F2),Vk是R[F4]
Mult2的Vk是M1(F6),Qj是Mult1(运算后的F0)

再步进10个时钟周期,给出此时保留站、Load缓冲器以及寄存器状态表中的内容。

在这里插入图片描述

可以看出
Mutl2的Vj是M5(F0),Vk是M1(F6)

3)、假设浮点功能部件的延迟时间为:加减法3个时钟周期,乘法8个时钟周期,除法40个时钟周期,自己编写一段程序,重复上述步骤(2)的工作。并给出通过此项工作,得出什么结论?

在这里插入图片描述

(1) 给出在第3个时钟周期时,保留站、Load缓冲器以及寄存器状态表中的内容。

在这里插入图片描述

可以看到
Mutl1的Vk是R[F4],Qj是Load2(F2)

(2) 步进5个时钟周期,给出此时保留站、Load缓冲器以及寄存器状态表中的内容。

在这里插入图片描述

可以看到
ADD1的Vj是M1(F6),Vk是M2(F2)
ADD2的Qj是Add1(F8),Vk是M2(F2)
Mult1的Vj是M2(F2),Vk是R[F4]
Mult2的Vk是M1(F6),Qj是Mult1(运算后的F0)

(3) 再步进10个时钟周期,给出此时保留站、Load缓冲器以及寄存器状态表中的内容。

在这里插入图片描述

可以看出
Mutl2的Vj是M3(F0),Vk是M1(F6)

4 实验总结与心得

Tomasulo算法的核心思想:

  • 记录和检测指令相关,操作数一旦就绪就立即执行,把发生RAM冲突的减小到最少。
  • 通过寄存器换名来消除WAR冲突和WAW冲突。

Tomasulo算法的基本结构

  • 见 课本 图4.1

Tomasulo具体算法
(1) 指令流出
(2) load和store指令
(3) 写结果

最后

2023-6-9 9:22:53

你对我百般注视,
并不能构成万分之一的我,
却是一览无余的你。

祝大家逢考必过
点赞收藏关注哦

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++算法:有向无环图拓扑排序(领接链表)

文章目录 前言一、邻接表二、代码1、生成图2、出度、入度计算3、拓扑排序 总结 前言 前文有向无环图实现游戏技能树中我们使用了矩阵存储图的关系,可以称之为邻接矩阵。显然,链表也是可以实现的。在图结构入门一文中,我们也提到了链表存储的…

这里推荐几个前端动画效果网站

1. AnimistaAnimista 是一个 CSS 动画/转场库和在线工具。它有许多现成的 CSS 动画片段可以直接使用,也可以在线定制动画。 网站地址:Animista - On-Demand CSS Animations Library 2. Animate.cssAnimate.css 是一个免费的 CSS 动画库,里面有 Attention Seekers 、 Bouncing E…

android 如何分析应用的内存(五)

android 如何分析应用的内存(五) 接上文 lldb的工具篇的GUI部分。分成两部分: vscode 的LLDBas的LLDB 接下来是as的LLDB as的LLDB 为了进行LLDB的调试,需要对as进行配置,事实上,每一个在AS中编辑的应…

王道考研计算机网络第一章知识点汇总

以上内容为1.1概念与功能的重点知识点 以下为1.2组成与分类: P2P模式下每台主机既可以是客户也可以是服务器,主机越多资源分享速度越快。 1.3标准化工作及相关组织 1.4性能指标 带宽只是指的是从主机内部往传输链路上投送数据的最大能力(从入口端放入数…

【RISCV】RISCV e-906实现Tickless

Tickless 最初设计的思想是,能被任务唤醒,也能被中断唤醒 参考文章: freeRTOS 低功耗模式 和 空闲任务 FreeRTOS源码分析与应用开发09:低功耗Tickless模式 FreeRTOS学习十(低功耗) 【STM32】NVIC与中断控制 之 sysTick定时器 M3,M4实现tickleess的做法: M3,M4的机制:…

【ROS2】使用摄像头功能包 usb_cam

1、准备工作 因为本人使用VirtualBox虚拟机运行的ROS2,所以首先要让摄像头可以在虚拟机中运行 1.1 安装VirtualBox扩展包 1)下载地址:https://www.virtualbox.org/wiki/Downloads,注意扩展包的版本要和虚拟机的版本匹配 2&…

基于STM32F103C8T6的超声波测距——串口输出

文章目录 前言一、超声波模块介绍1、产品特点2、超声波模块的时序图 二、STM32CubeMx创建工程1、配置项目2、keil代码设置3、效果 三、总结四、参考资料 前言 环境: 1、硬件:stm32f103c8t6 核心板 2、软件:STM32CubeMX 6.4.0 3、软件&#xf…

世界研发管理组织在美国成立,中国籍研发管理专家江新安当选总干事

World R&D Management Organization世界研发管理组织(WRDMO)由来自世界各地的研发管理研究组织,创新技术研究机构,院校以及研发管理咨询机构联合发起。是一个具有开放性,无党派性,非营利性的国际先进研…

第七章 Electron Vue3实现音乐播放器

一、介绍 🍑 🍑 🍑 一个音乐播放器应该具备播放、暂停、上一首、下一首、播放模式(单曲循环、列表循环、顺序播放……)。除了这些比如还可以扩展进度条的展示、拖拽、音量大小的调节,如果资源允许的话可以…

企业工程项目管理系统源码-全面的工程项目管理

​ ​工程项目管理系统是指从事工程项目管理的企业(以下简称工程项目管理企业)受业主委托,按照合同约定,代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 如今建筑行业竞争激烈,内卷严重&#xff0c…

chatgpt赋能python:Python循环间隔-了解如何在循环中增加延时

Python循环间隔 - 了解如何在循环中增加延时 在Python编程中,循环是非常常见且重要的控制语句。 它使我们可以多次执行代码块。 但是,在有些情况下,您可能需要在循环之间增加一定的延时时间。 这就是Python循环间隔的概念。 在本文中&#x…

Linux系统下SQLite创建数据库, 建表, 插入数据保姆级教程

1,创建数据库: sqlite test.db 我这边是sqlite2版本, 直接使用命令sqlite test.db创建一个名称为test的数据库; test是你自定义是数据库名, 创建好数据库后, 接下来开始创建表格 2.创建表格, 就是常规的sql建表语句 CREATE TABLE ids_logs ( english_details TEXT, chines…

嵌入式软件工程师培训:提升技能、实现卓越

如果您对嵌入式培训感兴趣,以下是一些建议和关键点,可以帮助您进行嵌入式培训: 培训目标:明确确定您的嵌入式培训目标。是为了提升员工的技能水平,使他们能够承担更高级别的嵌入式开发工作,还是为了向非嵌入…

iOS App的打包和上架流程

转载:iOS App的打包和上架流程 - 掘金 1. 创建账号 苹果开发者账号几种开发者账号类型 个人开发者账号 费用:99 美元/年(688.00元)协作人数:仅限开发者自己不需要填写公司的邓百氏编码( D-U-N-S Number…

网络安全:信息收集专总结【社会工程学】

前言 俗话说“渗透的本质也就是信息收集”,信息收集的深度,直接关系到渗透测试的成败,打好信息收集这一基础可以让测试者选择合适和准确的渗透测试攻击方式,缩短渗透测试的时间。 一、思维导图 二、GoogleHacking 1、介绍 利用…

大数据需要学习哪些内容?

大数据技术的体系庞大且复杂,每年都会涌现出大量新的技术,目前大数据行业所涉及到的核心技术主要就是:数据采集、数据存储、数据清洗、数据查询分析和数据可视化。 Python 已成利器 在大数据领域中大放异彩 Python,成为职场人追求…

甘孜州文化旅游产品市场营销策略研究_kaic

甘孜州文化旅游产品市场营销策略研究 摘要: 近年来,随着文化旅游的兴起,越来越多的旅游者渴望精神层面的满足,获得新奇的文化体验,而我国文化旅游仍处于单层次的观赏旅游。本文研究背景包括对旅游行业的背景介绍&#…

【第三章:链路层】

目录 知识框架No.0 引言No.1 功能零、基本功能概念一、封装成帧1、字符计数法2、字符填充法3、零比特填充法4、违规编码法 二、透明传输三、差错控制1、位错1.1、奇偶校验码1.2、循环冗余码CRC2、帧错2.1、海明码 四、流量控制1、停止-等待协议2、滑动窗口协议2.1、后退N帧协议…

【新星计划回顾】第五篇学习计划-数据库开启定时任务知识点

🏆🏆时间过的真快,这是导师回顾新星计划学习的第五篇文章!本篇文章主要是承接上一篇学习计划,通过开启定时任务进行模拟生成数据,实际开发项目中,可能会用到其他方式! 最近这段时间非…

Dockerfile应用的容器化

文章目录 Dockerfile应用的容器化应用的容器化——简介应用的容器化——详解单体应用容器化获取应用代码分析Dockerfile容器化当前应用/构建具体的镜像推送镜像到仓库运行应用程序测试总结 最佳实践利用构建缓存合并镜像 命令总结 Dockerfile应用的容器化 Docker 的核心思想是…