【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.pswp.cn/diannao/80952.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80952.shtml
英文地址,請注明出處:http://en.pswp.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…