【GPU 微架构技术】Pending Request Table(PRT)技术详解

PRT(Pending Request Table)是 GPU 中用于管理 未完成内存请求(outstanding memory requests)的一种硬件结构,旨在高效处理大规模并行线程的内存访问需求。与传统的 MSHR(Miss Status Handling Registers)不同,PRT 的设计更适应 GPU 的 warp 级并行性,显著提升了内存子系统的吞吐量和并发能力。以下从工作原理、优势、与 MSHR 的对比等方面详细解析 PRT 技术。


1. PRT 的核心设计思想

PRT 的核心是为 每个 warp 的内存指令(如加载或存储)分配一个独立的条目,而非为每个内存请求分配资源。这一设计充分利用了 GPU 的 warp 执行模型(32 个线程以 SIMD 方式并行执行),通过合并一个 warp 内所有线程的内存请求,减少对硬件资源的占用。

  • 条目内容
    每个 PRT 条目包含以下信息:
    • 内存指令的 目标地址块(如全局内存地址)。
    • 线程掩码(标识哪些线程需要该数据)。
    • 地址偏移(记录每个线程在目标地址块内的偏移量)。
    • 未完成请求计数器(跟踪该指令关联的内存请求数量)。

2. PRT 的工作流程
  1. 内存指令执行
    当 warp 执行一条内存指令(如 LDG 加载指令)时,GPU 的 Load/Store 单元会 合并线程的访问请求。例如,若多个线程访问同一缓存行,则合并为一个内存请求。

  2. PRT 条目分配

    • 若发生缓存未命中(数据不在 L1/L2 缓存中),分配一个 PRT 条目。
    • 每个 PRT 条目对应一个 warp 的内存指令,而非单个线程或单个地址请求。
  3. 生成内存请求

    • 合并后的请求被发送到显存(DRAM)或 L2 缓存。
    • 每个请求包含:
      • 目标地址块(如 128 字节的缓存行地址)。
      • PRT 条目标识符(用于后续数据分发)。
      • 线程掩码(标记哪些线程需要该数据)。
  4. 数据返回与分发

    • 当显存返回数据时,根据 PRT 条目中的 地址偏移,将数据分发到各线程的寄存器。
    • 例如,若线程 0 需要地址块内偏移 4 字节的数据,则从返回的缓存行中提取对应位置的数据。
  5. 释放 PRT 条目

    • 当所有关联的内存请求完成,且数据分发完毕后,释放 PRT 条目。

3. PRT 的关键优势
  1. 高并发处理能力
    PRT 的未完成请求数 仅受限于每个 SM 的 PRT 条目数量,而非线程数或未合并访问数。例如,在 Kepler 架构中,每个 SM 有 44 个 PRT 条目,每个条目可处理一个 warp 的 32 个线程请求,理论最大并发请求数为:
    [
    44 , \text{条目} \times 32 , \text{线程/warp} = 1408 , \text{未完成请求}
    ]
    相比 Fermi 的 MSHR(128 请求/SM),并发能力提升 11 倍

  2. 对未合并访问的容忍性
    MSHR 在未合并访问(如随机内存访问)时,需要为每个未合并请求分配独立条目,容易导致资源耗尽。而 PRT 的条目与 warp 指令 绑定,无论线程访问是否合并,每个指令仅占用一个 PRT 条目。这使得 PRT 在 非连续内存访问场景 下表现更优。

  3. 简化硬件资源管理
    PRT 通过合并 warp 级请求,减少了对细粒度资源(如每个线程的请求跟踪)的需求,降低了硬件复杂度。


4. PRT 与 MSHR 的对比
特性MSHRPRT
设计目标跟踪每个缓存行未命中请求跟踪每个 warp 的内存指令
条目分配粒度每个缓存行一个条目每个 warp 内存指令一个条目
合并能力有限(如 8 个线程合并)天然支持整个 warp(32 线程)合并
未完成请求上限受限于条目数(如 Fermi 的 128)受限于条目数 × warp 线程数(如 1408)
适用场景连续内存访问(高合并率)任意内存访问模式(包括随机访问)

5. PRT 的实际应用与优化启示
  1. 对开发者的意义

    • Kepler 及后续架构:开发者无需过度优化内存合并,可更灵活设计内存访问模式。
    • 控制 warp 指令并发数:避免单个 SM 内过多 warp 同时发起内存指令,以防 PRT 条目耗尽。
  2. 对架构设计的启示

    • 扩展 PRT 条目数:增加 PRT 条目可进一步提升并发能力(如 NVIDIA 后续架构的改进)。
    • 结合缓存优化:PRT 与 L1/L2 缓存协同工作,需平衡缓存命中率与显存带宽利用率。

6. 论文中的实验验证

论文通过 Thread-Latency 图 验证了 PRT 的优势:

  • Kepler(Tesla K20):当每个线程发起 2-3 次内存请求时,PRT 条目饱和点对应于 44 个 warp 指令(图 9-10),而非线程数或请求数,表明其设计基于 warp 级管理。
  • 对比 Fermi:Fermi 的 MSHR 在未合并访问时快速饱和(图 3-4),而 Kepler 的 PRT 在相同场景下表现更优。

参考资料

  1. https://slideplayer.com/slide/8276701/
  2. https://www.ahmado.com/profile/lashgar/files/16acmcan.pdf

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

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

相关文章

远程访问你的家庭NAS服务器:OpenMediaVault内网穿透配置教程

文章目录 前言1. OMV安装Cpolar工具2. 配置OMV远程访问地址3. 远程访问OMV管理界面4. 固定远程访问地址 前言 在这个数据爆炸的时代,无论是管理家人的照片和视频,还是企业老板处理财务报表和技术文档,高效的数据管理和便捷的文件共享已经变得…

微服务架构下的熔断与降级:原理、实践与主流框架深度解析

微服务架构下的熔断与降级:原理、实践与主流框架深度解析 在现代分布式系统中,熔断 (Circuit Breaker) 和 降级 (Degrade) 是保障系统弹性与高可用性的核心机制。本文将系统解析两者的原理、区别与协同方式,并结合主流框架 (Resilience4j、S…

docker-vllm运行大模型

vllm镜像下载,国内代理源 vllm/vllm-openai - Docker Image - 毫秒镜像https://1ms.run/r/vllm/vllm-openai 执行下载docker pull docker.1ms.run/vllm/vllm-openai 查看本地镜像 查看镜像 查看镜像 docker images导出镜像 docker save -o E:\docker\ollama.tar …

基于tabula对pdf中多个excel进行识别并转换成word中的优化(四)

对上一节进行优化: 1、识别多个excel 2、将表格中的nan替换成空字符串 一、示例中的pdf内容 二、完整代码参考: import tabula import numpy as np from docx import Document from docx.oxml.ns import qn from docx.oxml import OxmlElementdef get_t…

【10分钟读论文】Power Transmission Line Inspections电力视觉水文

标题Power Transmission Line Inspections: Methods, Challenges, Current Status and Usage of Unmanned Aerial Systems 2024 评分一颗星 论文《Power Transmission Line Inspections: Methods, Challenges, Current Status and Usage of Unmanned Aerial Systems》的核心内…

linux安装ragflow

先安装docker,操作步骤参考文章: Linux安装Docker docker安装完毕,下载ragflow源码: https://github.com/infiniflow/ragflow 下载完成,进入docker文件夹中,修改.env文件,因为默认安装的是sli…

学习记录:DAY20

技术探索之旅:YAML配置,依赖注入、控制反转与Java注解 前言 最近有点懒了,太松懈可不行。为了让自己保持学习的动力,我决定将最近的学习内容整理成博客,目标是让未来的自己也能轻松理解。我会尽量以整体记录的方式呈…

MCP:人工智能时代的HTTP?探索AI通信新标准

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

首版次误区有哪些?与软件测试报告又有什么联系?

在软件开发与测试领域,"首版次"这一概念关乎软件的版本控制与管理,是确保产品质量和发布节奏的重要环节。首版次,通常是指软件产品第一个对外发布或内部验收的版本号,标志着一次完整开发周期的结束和下一阶段工作的开始…

Laravel+API 接口

LaravelAPI 接口 网课连接:BIlibili. 中文文档. 1.RestFul Api编码风格 一、API设计 修改hosts,C:\Windows\System32\drivers\etc\hosts,增加127.0.0.1 api.lv8.com # Laravel 框架 用这个域名来测试(推荐规范) 在…

MIT6.S081-lab7前置

MIT6.S081-lab7前置 这部分包含了设备中断和锁的内容 设备中断 之前系统调用的时候提过 usertrap ,而我们的设备中断,比如计时器中断也会在这里执行,我们可以看看具体的逻辑: void usertrap(void) {int which_dev 0;if((r_sst…

Linux 下编译BusyBox

一、linux下编译 1.拉取busybox源码 git clone https://github.com/mirror/busybox.git 内容如下 2.配置make,建议在linux下单独开一个终端执行 进入busybox源码目录,使用如下命令 make menuconfig 3.报错 解决办法: 安装ncurses sud…

Element:Cheack多选勾选效果逻辑判断

效果展示 取消子级勾选&#xff0c;父级的勾选效果 代码合集 &#xff08;1&#xff09;组件代码 fromlist.cheackType 类型&#xff0c;permissio表示是权限. fromlist:[{id:1,children:[{...}]},...]传递的数据大致结构 <!-- 操作权限 --><template v-if"…

【3DMax脚本MaxScript开发:创建高效模型虚拟体绑定和材质管理系统,从3DMax到Unreal和Unity引擎_系列第一篇】

3ds Max 脚本开发 3ds Max 脚本开发&#xff1a;创建高效模型虚拟体绑定和材质管理系统3ds Max 插件制作背景&#xff1a;设计思路一、场景节点收集与过滤废话不多说&#xff0c;直接上完整代码&#xff1a;界面定义与基础设置界面控件创建状态变量核心逻辑函数过滤选项改变事件…

【Linux学习笔记】进程替换和自定义shell

【Linux学习笔记】进程替换和自定义shell &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;Linux学习笔记 文章目录 【Linux学习笔记】进程替换和自定义shell前言一.进程程序替换1.1 替换原理1.2 替换函数1.2.1函数解释1.2.2命名理解 二.自主…

【办公类-89-03】20250429AI写的研讨记录,清除格式,统一格式,名字替换。部分加粗,添加页眉

背景需求: 检查自即,需要AI一下院内的五次科研培训记录。 本次用了豆包 豆包写的不错,也是“水字数”的高手 把每次培训内容贴到WORD里 把AI资料贴到WORD里,发现问题: 1、字体、段落什么都是不统一的,需要统一改成宋体小四,1.5倍行距 2、十个研讨人也要改成真人。就找…

unity Orbbec Femto Bolt接入unity流程记录 AzureKinectExamples 插件 使用记录

奥比中光的深度相机Orbbec Femto Bolt是Microsoft的Azure Kinect DK的升级版&#xff0c;根据官网的文档配置环境遇到了一些问题&#xff0c;记录一下。 注意&#xff1a; 官网文档链接&#xff1a;Femto Bolt文档 1、首先连接相机到电脑USB3.0&#xff0c;接通电源&#xf…

聊天室系统:多任务版TCP服务端程序开发详细代码解释

1. 需求 目前我们开发的TCP服务端程序只能服务于一个客户端&#xff0c;如何开发一个多任务版的TCP服务端程序能够服务于多个客户端呢? 完成多任务&#xff0c;可以使用线程&#xff0c;比进程更加节省内存资源。 2. 具体实现步骤 编写一个TCP服务端程序&#xff0c;循环等…

Python3:装饰器、生成器与迭代器

Python3&#xff1a;装饰器、生成器与迭代器 一、&#x1f3ad; 装饰器&#xff1a;给函数穿上"魔法外衣"装饰器基本概念为装饰器添加参数传递功能带参数的装饰器functools.wraps&#xff1a;保留原函数的元信息实用装饰器示例1. 计时器装饰器2. 缓存装饰器(Memoizat…

SQL命令一:SQL 基础操作与建表约束

目录 引言 一、SQL 基础命令 &#xff08;一&#xff09;数据库相关操作 &#xff08;二&#xff09;表格相关操作 &#xff08;三&#xff09;MySQL 常用数据类型 二、增删改查&#xff08;CRUD&#xff09;操作 &#xff08;一&#xff09;增加数据 &#xff08;二&a…