news 2026/6/24 8:55:25

《超标量处理器设计》- 执行

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《超标量处理器设计》- 执行

旁路网路

需要旁路网络的原因

比如两条指令RAW,最保守的方式是前面一条指令 FU 计算完成后,dst 写回了PRF,然后后面一条指令 是如此idx再去读PRF,费时,影响pipelie效率,所以需要旁路电路,从前一个指令计算出结果的时候,就fwd到新指令的入口。

简单设计的旁路网络


左边图没有旁路网络的时候,所有的寄存器的值从PRF来。右边那个比如FU0的值可以从PRF来,也可以从上一次FU0自己算出来的值来,还可以从FU1的计算的结果来。

旁路电路冲突的解决
  • 产生conflict的原因
    如下图,如果一个FU中有几个计算模块,比如第一个FU,可以同时执行Add和shift,add latency=2,shift latency=1,则下下张图的时序,有可能出现add和shift的运算同时算出来,都需要fwd(forward),这就出现了旁路电路fwd的冲突

  • 解决旁路电路conflict方式
    根据是否进行推测,有两种方案(前提:我们知道指令的执行latency)
    推测:假设所有的都不会出现conflict,当要开始执行的时候,再检查是否会和同FU的其他指令产生conflitc,如果产生conflict就放回issue queue.
    不推测:在选择指令的时候,就算好,如果会和前面的指令发生conflict,这个周期就不把指令送到FU

复杂设计的旁路网络

复杂电路引起增加流水级数

在现实的处理器里,FU比较多,布线复杂,从PRF读的数据需要很长的传输才能到达FU的数据端,而且数据来源不止从PRF来,有可能还要做mux,所以把这个阶段单拿一个周期,叫source drive。如果没有这个阶段,复杂的准备工作和冒险处理将和执行阶段抢时间,导致cycle拉长。
同理,计算的数据到写入PRF也要很长的时间,所以单拎出来一个周期 result drive

增加流水级数引起旁路电路的复杂度快速提升


指令在result drive和write back阶段可以发起forward,在source drive阶段和execute阶段可以接收forward,导致forward的组合急剧增多

简化旁路电路采取的方式(cluster)
  • cluster bypass
    把不同的FU放在不同的cluster中(一个cluster放>=1)FU,同cluster内的FU之间可以快速forward,没有source drive和result drive的环节,不同的cluster之间数据如果有依赖,只能通过读取PRF的方式获取

存储器指令的加速

影响存储指令速度的原因

1. load/store指令之间也会出现和寄存器类似的WAW/WAR/RAW hazard
解决hazard的方式
  • 完全顺序执行
    缺点:存储的速度慢;优点:可靠

  • 部分乱序执行
    store和store之间保持顺序,两个store之间的load可以乱序
    当指令A被select的时候,就可以wake up 指令B/C/D,当B/C/D的地址算出来的时候,A的已经算出来了,因此B/C/D 可以和A比较是否发生地址冲突,如果不发生,load就可以发出去,如果发生,load就可以等到store的回来直接用store的数据。
    指令B/C/D并不阻塞下一条store 指令E,因为对于AXI来说是不同的channel,而且即使指令A没有AXI的bresp回来,指令E也可以发出去,但是指令F/G检查冲突的时候要不仅要和指令E做地址比较,也要和指令A做地址比较。
    那么哪些load指令需要和前一个store做比较,哪些需要和前前…个store指令做比较,这就需要记录load和store 之间的顺序,可以用ROB来做辅助标记。所有的store的指令相关的数据都放在store buffer里,如果load有匹配的上的,就去store buffer取数据,就不向AXI去read了。

  • 完全乱序执行
    只要load的操作数准备好了,就发送

2.数据放在不同层级cache中,取数据慢

解决方式:D-cache缺失的时候,处理器继续执行后面的load/store,使用非阻塞的fetch方式

3.一次取的cacheline数据多,采用关键字优先来解决
4.通过提前触发预取
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/24 8:49:55

你的agent简历上缺的不是技术栈,缺的是Know-how

最近带学员改简历,发现一个很有意思的规律。 两个人的技术栈几乎一模一样,LangGraph、RAG、Tool Calling、多Agent编排,框架层面都能写出来。但一个人面了三家都挂在二面,另一个只面了两家就拿了offer。 差在哪。差在一个被严重低…

作者头像 李华
网站建设 2026/6/24 8:47:12

热门的洁净车间车轮清洁地刷公司找哪家

在工业生产和洁净室环境中,车轮清洁是一道重要的防线,它关系到生产环境的清洁度、设备的使用寿命以及人员的安全。那么,热门的洁净车间车轮清洁地刷公司该如何选择呢?今天就为大家详细介绍一家专注于工业与洁净室入口清洁解决方案…

作者头像 李华
网站建设 2026/6/24 8:45:57

一场秋衣上新,AI三天出图抵过拍摄团队一个月

秋季是男装品牌的必争之地,但上新节奏往往被视觉物料的产出速度死死卡住。传统拍摄流程中,从联系模特、预约影棚、布光调试,到正式拍摄、选片、修图,一套流程走下来少则一周,多则半个月。等素材就位,竞品早…

作者头像 李华
网站建设 2026/6/24 8:45:14

pack:不用写 Dockerfile,直接把代码变成容器镜像

文章目录pack:不用写 Dockerfile,直接把代码变成容器镜像解决什么问题三个使用场景基本用法工作原理和 Dockerfile 的关系一些细节pack:不用写 Dockerfile,直接把代码变成容器镜像 buildpacks/pack 是一个命令行工具,基…

作者头像 李华
网站建设 2026/6/24 8:44:02

XMEGA A1 DMA与事件系统实战:8位MCU的硬件自动化与低功耗设计

1. 项目概述:为什么XMEGA A1值得深挖? 在嵌入式开发的圈子里,提到8位单片机,很多人会下意识地想到经典的AVR ATmega系列,比如ATmega328P,它几乎是Arduino Uno的代名词。但如果你对性能、外设集成度和能效有…

作者头像 李华
网站建设 2026/6/24 8:42:24

万能去水印神器,免费get!

嗨~大家好!我是墨白!今天我要分享一个超级好用的全能去水印神器,它能轻松搞定视频和图片上的水印,让你彻底摆脱“水印”!从此,素材随心用,创作更自由!✨重要的是,操作简单…

作者头像 李华