w.r.t 的“长”和“短”记分牌是啥? MIO/L1TEX?

Posted

技术标签:

【中文标题】w.r.t 的“长”和“短”记分牌是啥? MIO/L1TEX?【英文标题】:What are the "long" and "short" scoreboards w.r.t. MIO/L1TEX?w.r.t 的“长”和“短”记分牌是什么? MIO/L1TEX? 【发布时间】:2021-05-13 08:45:33 【问题描述】:

在最近的 NVIDIA 微架构中,有一个新的 (?)taxonomy 表示 warp 停止原因/warp 调度程序状态。

此分类中的两个项目是:

短记分牌 - 记分牌依赖于 MIO 队列操作。 长记分牌 - 记分牌依赖于 L1TEX 操作。

我认为,“记分板”是指乱序执行数据依赖跟踪的含义(参见例如here)。

我的问题:

形容词“短”或“长”描述什么?它是单个记分牌的长度吗?两种不同操作的两个不同记分牌? MIO 之间的这种有点不直观的二分法是什么意思 - 一些,但不是全部是内存操作;和L1TEX操作,都是内存操作?这是一个二分法w.r.t吗?只是停滞原因还是与实际硬件有关?

【问题讨论】:

【参考方案1】:

NVIDIA GPU 有两种指令分类:

    固定延迟 - 数学、按位、寄存器移动 可变延迟 - ld/st 到共享、本地、全局和纹理以及缓慢的数学运算

短记分牌长记分牌报告的指令取决于从可变延迟指令返回的数据。短记分板报告了来自变量延迟指令的依赖关系,这些指令不会离开 SM,例如慢速数学,例如倒数 sqrt 或共享内存)。对于可能离开 SM 的依赖项(例如全局/本地内存访问和纹理提取),会报告长记分板。

来自Nsight Cmpute v2020.3.1 Kernel Profiling Guide的详细描述

长记分牌

Warp 在等待记分板依赖于 L1TEX(本地、全局、表面、tex)操作时停止。为了减少等待 L1TEX 数据访问的周期数,验证内存访问模式对于目标架构是最佳的,尝试通过增加数据局部性或更改缓存配置来提高缓存命中率,并考虑将常用数据移动到共享内存.

短记分牌

Warp 在等待记分板依赖于 MIO(内存输入/输出)操作(而不是 L1TEX)时停止。由于记分板短而导致大量停顿的主要原因通常是对共享内存的内存操作。其他原因包括频繁执行特殊数学指令(例如 MUFU)或动态分支(例如 BRX、JMX)。验证是否存在共享内存操作并减少存储库冲突(如果适用)。

MIO 与 L1TEX

MIO 和 L1TEX 是 NVIDIA SM 中的分区。 MIO 单元负责共享执行单元(由 1 个或多个 SM 子分区共享),包括较低速率的数学单元(例如 GeForce 芯片上的双精度)和内存输入/输出。内存子系统包含 L1、TEX 单元、共享内存单元和其他特定于 SM 的域(例如图形)接口。包括 L1、TEX 和共享内存在内的 MIO 子系统的实现在 Kepler、Maxwell-Pascal 和 Volta-Ampere 之间差异很大。 SM 子分区(warp 调度程序)通过指令队列与直接调度向共享执行单元发出指令。对于 SM 7.0+,如果这些单元的指令队列已满,则会出现停顿原因(mio_throttle、lg_throttle 和 tex_throttle)。

MIO 定义中包含的内容因架构而异。 L1TEX 在技术上位于 MIO 分区中。 L1TEX 很复杂,因为它有两个输入接口:

    LSU 接口用于共享内存、本地/全局内存(标记)和特殊操作,例如随机播放和特殊用途寄存器。 TEX 接口用于纹理提取和 7.0-8.x 上的慢速数学运算子集(例如 GeForce 卡上的 FP64)。后者有点混乱。缓慢的数学单元是为了二进制兼容性而存在的,预计不会与纹理提取同时使用。

MIO 一词可能会令人困惑。 考虑到两个不同的接口,术语 L1TEX 也可能令人困惑。虽然有两个接口本地/全局和纹理/表面共享相同的缓存查找阶段、相同的缓存 RAM 和相同的 SM 到 L2 接口,因此对于许多指标而言,术语 L1TEX 用于指代单元。

【讨论】:

编译器是否已经展开循环以隐藏慢速指令的延迟(或者架构已经通过运行来自不同线程的指令隐式地做到了这一点)?或者通过不尝试立即使用结果来尝试进行软件流水线以隐藏缓慢操作的延迟是否有帮助? (这将有助于流水线有序 CPU。) 答案的第一部分很有帮助;引用我刚刚链接到的分析指南 - 没有帮助,特别是因为它没有添加超出问题和/或您的答案已经说过的信息。 @PeterCordes 编译器通常会积极尝试展开循环,其主要目的是独立指令重新排序以允许首先发出长延迟指令。见here。这很容易通过二进制分析工具和适当的代码进行实验观察。即使没有展开循环,编译器也会尽可能早地尝试重新排序独立加载。

以上是关于w.r.t 的“长”和“短”记分牌是啥? MIO/L1TEX?的主要内容,如果未能解决你的问题,请参考以下文章

长连接、短连接是啥意思?哪位大神给讲一下,不要太官方了,通俗易懂点,谢谢。

电脑开机蜂鸣器响是啥情况

短网址是啥意思?

手机设置里的 按住延迟 是啥意思

臭梧桐的学名是啥?

在 Recyclerview 列表中闪烁