【AXI】读重排序深度

我们以DDR4存储控制器为例,设计一个读重排序深度为3的具体场景,展示从设备如何利用3级队列优化访问效率:


基础设定

  • 从设备类型:DDR4存储控制器(支持4个存储体Bank0-Bank3)
  • 读重排序深度:3(允许同时跟踪3个未完成读请求)
  • 访问延迟特征
    • Bank激活后访问:3周期(低延迟)
    • Bank预充电后访问:7周期(高延迟)
  • 主机请求序列(按时间顺序发送):
    时间点请求标识ARID值目标Bank地址描述
    T0Req A1Bank00x1000首次访问Bank0(需预充电)
    T1Req B2Bank10x2000Bank1已激活(低延迟)
    T2Req C3Bank20x3000Bank2已激活(低延迟)
    T3Req D1Bank00x1004连续地址(同ARID=1)
    T4Req E4Bank30x4000Bank3已激活(低延迟)

从设备处理逻辑(深度=3)

从设备内部有一个容量为3的请求队列,用于暂存未完成的读请求(pending addresses),允许对不同ARID的请求重排序,但严格保证同ARID的顺序。

阶段1:队列填充(T0-T2)
  • T0:接收Req A(ARID=1),队列为空 → 入队,开始处理Bank0预充电(耗时7周期)。
  • T1:接收Req B(ARID=2),队列剩余容量2 → 入队,立即处理Bank1(3周期完成)。
  • T2:接收Req C(ARID=3),队列剩余容量1 → 入队,立即处理Bank2(3周期完成)。

此时队列状态:[Req A(ARID=1), Req B(ARID=2), Req C(ARID=3)](已满)。

阶段2:队列释放与新请求(T3-T4)
  • T3:主机发送Req D(ARID=1),但队列已满(容量3),需等待至少一个请求出队才能入队。
  • T4:主机发送Req E(ARID=4),队列仍满,无法入队(需等待)。
阶段3:响应返回与队列更新(T4-T10)
  • T4(B完成):Bank1完成Req B → 返回数据B(RID=2),队列释放位置,Req D入队(ARID=1)。
  • T5(C完成):Bank2完成Req C → 返回数据C(RID=3),队列再释放位置,Req E入队(ARID=4)。
  • T7(A完成):Bank0完成Req A(预充电+访问耗时7周期)→ 返回数据A(RID=1),队列释放位置。
  • T8(D处理):Req D(ARID=1,目标Bank0)已激活(无需预充电)→ 3周期完成(T11返回数据D)。
  • T9(E处理):Bank3完成Req E(3周期)→ 返回数据E(RID=4)。

最终数据返回顺序

时间点返回数据原始请求说明
T4Data BReq B最早完成的低延迟请求(ARID=2)
T5Data CReq C次早完成的低延迟请求(ARID=3)
T7Data AReq A高延迟请求(ARID=1,必须先返回)
T9Data EReq E新入队的低延迟请求(ARID=4)
T11Data DReq D同ARID=1的后续请求(必须在A之后)

深度=3的核心优势

  1. 并行处理能力:同时跟踪3个未完成请求,允许从设备在Bank0(高延迟)处理期间,并行完成Bank1、Bank2的低延迟请求(T0-T5期间同时处理3个请求)。
  2. 资源利用率提升:原本需等待Bank0完成(T7)才能处理后续请求,但通过队列缓冲,T4-T5已释放两个位置,提前处理了Req D和Req E。
  3. 吞吐量对比
    • 严格顺序(深度=1):需依次处理A→B→C→D→E,总耗时≈7(A)+3(B)+3(C)+3(D)+3(E)=19周期。
    • 深度=3:实际总耗时≈11周期(T0-T11),吞吐量提升约42%。

关键约束验证

  • 同ARID保序:Req D(ARID=1)必须在Req A(ARID=1)之后返回(T11在T7之后)。
  • 跨ARID乱序:B、C、E(不同ARID)的返回顺序与请求顺序(B→C→E)无关(实际返回顺序B→C→E)。
  • 深度限制:队列容量3,T3-T4时因队列已满,Req D和E需等待队列释放后才能入队。

此例直观展示了读重排序深度为3时,从设备如何通过有限的乱序能力,在保证协议规范的前提下,显著提升存储访问效率。

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

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

相关文章

牛马逃离北京(回归草原计划)

丰宁坝上草原自驾游攻略(半虎线深度版) 🚗 路线:北京/承德 → 丰宁县城 → 半虎线 → 大滩镇(2天1夜) 🎯 核心玩法:免费草原、高山牧场、日落晚霞、牧群互动、星空烟花🌿…

【前端】【Echarts】ECharts 词云图(WordCloud)教学详解

效果ECharts 词云图(WordCloud)教学详解 词云图是一种通过关键词的大小、颜色等视觉差异来展示文本数据中词频或权重的图表。它直观、形象,是数据分析和内容展示中的利器。 本文将带你从零开始,学习如何用 ECharts 的 WordCloud 插…

【arXiv 2025】新颖方法:基于快速傅里叶变换的高效自注意力,即插即用!

一、整体介绍 The FFT Strikes Again: An Efficient Alternative to Self-AttentionFFT再次出击:一种高效的自注意力替代方案图1:FFTNet整体流程,包括局部窗口处理(STFT或小波变换,可选)和全局FFT&#xff…

通过vue如何利用 Three 绘制 简单3D模型(源码案例)

目录 Three 介绍 创建基础3D场景 创建不同类型的3D模型 1. 球体 2. 圆柱体​​​​​​​ 3. 平面​​​​​​​ 加载外部3D模型 添加交互控制 创建可交互的3D场景 Three 介绍 Three.js是一个强大的JavaScript 3D库,可以轻松地在网页中创建3D图形。下面我…

云蝠智能 Voice Agent 落地展会邀约场景:重构会展行业的智能交互范式

一、行业痛点与 AI 破局在会展行业数字化转型的浪潮中,传统展会邀约模式面临多重挑战:人工外呼日均仅能处理 300-500 通电话,且无效号码占比高达 40% 以上,导致邀约效率低下。同时,个性化邀约话术设计依赖经验&#xf…

idea如何打开extract surround

在 IntelliJ IDEA 中,"Extract Surrounding"(提取周围代码)通常指 ​将一段代码提取到新的方法、变量或类中,但更常见的操作是 ​​"Surround With"(用代码结构包围)​。以下是两种场景…

window显示驱动开发—XR_BIAS 和 BltDXGI

Direct3D 运行时调用驱动程序的 BltDXGI 函数,以仅对XR_BIAS源资源执行以下操作:复制到也XR_BIAS的目标未修改的源数据的副本可接受点样本的拉伸旋转由于 XR_BIAS 不支持 MSAA) (多个示例抗锯齿,因此驱动程序不需要解析XR_BIAS资源。核心规则…

web网页开发,在线%ctf管理%系统,基于html,css,webform,asp.net mvc, sqlserver, mysql

webform,asp.net mvc。数据库支持mysql,sqlserver经验心得 每次我们写crud没啥技术含量,这没法让咱们进入大厂,刚好这次与客户沟通优化方案建议,咱们就把能加的帮他都加上去。一个ctf管理系统基本crud,并进行不同分层开发&#xf…

面试技术问题总结一

MySQL的几种锁机制一、从锁的粒度角度划分表级锁机制:它是对整张表进行锁定的一种锁。当一个事务对表执行写操作时,会获取写锁,在写锁持有期间,其他事务无法对该表进行读写操作;而当事务执行读操作时,会获取…

π0.5的KI改进版——知识隔离:让VLM在不受动作专家负反馈的同时,继续输出离散动作token,并根据反馈做微调(而非冻结VLM)

前言 过去的一个月(25年6.4-7.4),我司「七月在线」具身长沙分部为冲刺一些为客户来现场看的演示项目,基本都用lerobot的那套框架 比如上周五(7.4日)晚上,通过上周五下午新采的第五波数据做『耳机线插入耳机孔』的任务,推理十次之…

Eigen中Isometry3d的使用详解和实战示例

Eigen::Isometry3d 是 Eigen 库中用于表示 三维空间中的刚性变换(Rigid Transformation) 的类,属于 Eigen::Transform 模板类的一个特化版本。它结合了 旋转和平移,广泛应用于机器人学、SLAM、三维几何计算等场景。一、核心定义 #…

《未来已来:当人类智慧遇上AI智能体》

在这个充满奇迹的时代,人类的智慧与科技的力量正以前所未有的速度交织在一起。 我们站在一个新时代的门槛上,一边是古老而深邃的自然规律,另一边是充满可能性的未来世界。 今天,就让我们一起走进这场关于人类智慧与AI智能体Kimi的对话,看看未来究竟会带给我们怎样的惊喜…

【三维生成】FlashDreamer:基于扩散模型的单目图像到3D场景

标题&#xff1a;<Enhancing Monocular 3D Scene Completion with Diffusion Model> 代码&#xff1a;https://github.com/CharlieSong1999/FlashDreamer 来源&#xff1a;澳大利亚国立大学 文章目录摘要一、前言二、相关工作2.1 场景重建2.2 扩散模型2.3 Vision languag…

CANFD记录仪设备在无人驾驶快递车的应用

随着物流行业的快速发展&#xff0c;无人驾驶快递车因其高效、低成本的优势&#xff0c;逐渐成为“最后一公里”配送的重要解决方案。然而&#xff0c;无人驾驶系统的稳定性和安全性高度依赖车辆总线数据的精准采集与分析。南金研CANFDlog4 4路记录仪凭借其多通道、高带宽、高可…

Kubernetes存储入门

目录 前言 一、Volume 的概念 二、Volume 的类型 常见的卷类型 Kubernetes 独有的卷类型 三、通过 emptyDir 共享数据 1. 编写 emptyDir 的 Deployment 文件 2. 部署该 Deployment 3. 查看部署结果 4. 登录 Pod 中的第一个容器 5. 登录 Pod 中的第二个容器查看/mnt下…

10.Docker安装mysql

(1)docker pull mysql:版本号eg&#xff1a;docker pull mysql(默认安装最新版本)docker pull mysql:5.7(2)启动并设置mysql镜像docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 --name mysql1 mysql其他参数都不多讲&#xff0c;下面这个参数指的是设置数据库用户ro…

Debian-10编译安装Mysql-5.7.44 笔记250706

Debian-10编译安装Mysql-5.7.44 笔记250706 单一脚本安装 ### 1. 安装编译依赖 sudo apt install -y cmake gcc g build-essential libncurses5-dev libssl-dev \ pkg-config libreadline-dev zlib1g-dev bison curl wget libaio-dev \ libjson-perl libnuma-dev libsystemd-d…

HarmonyOS 中状态管理 V2和 V1 的区别

鸿蒙ArkUI框架中的ComponentV2与V1在状态管理、组件开发模式、性能优化等方面存在显著差异。以下是两者的核心区别及技术解析&#xff1a;一、状态管理机制V1的局限性V1的Observed装饰器只能观察对象的第一层属性变化&#xff0c;需配合ObjectLink手动拆解嵌套对象。例如&#…

centos7 安装jenkins

文章目录前言一、pandas是什么&#xff1f;二、安装依赖环境1.前提准备2.安装git3.安装jdk&#xff0c;以及jdk版本选择4.安装maven5.安装NodeJS6.验证三、安装Jenkins四、验证Jenkins总结前言 正在学习jenkinsdocker部署前后端分离项目&#xff0c;安装jenkins的时候遇到了一…

Leetcode刷题营第二十题:删除链表中的重复节点

面试题 02.01. 移除重复节点 编写代码&#xff0c;移除未排序链表中的重复节点。保留最开始出现的节点。 示例1&#xff1a; 输入&#xff1a;[1, 2, 3, 3, 2, 1]输出&#xff1a;[1, 2, 3]示例2&#xff1a; 输入&#xff1a;[1, 1, 1, 1, 2]输出&#xff1a;[1, 2]提示&…