System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及gpgpu內存控制和調度,具體地說是一種基于感知線程束的內存控制器。
技術介紹
1、內存合并技術是指來自同一線程束的請求應盡可能根據目標地址合并成緩存行大小的請求,這樣有利于消除對同一緩存行的重復訪問,降低帶寬需求。然而,如果線程束中的線程訪問的數據在空間上不一致,則影響合并技術發揮作用。
2、來自不同流多處理器(streaming?multiprocessor,sm)的請求經過一級和二級緩存查找之后接著通過交叉互聯網絡到達內存控制器;因此,不同線程束之間的內存訪問在隊列中摻和在一起;事務調度器會把每個獨立的線程請求傳送到緩存中,不同占用量的緩存可能導致同一個線程束中的線程分散在不同的時間點進行處理,這種情況可能會導致線程束因等待內存請求完成而被阻塞,影響整體性能。在gpu和其他并行處理架構中,減少延遲發散是提升效率和性能的關鍵。
3、近年來,在高性能計算和金融領域開發了各種并行算法用于gpgpu實現。與傳統的gpgpu應用程序相比,這些程序中的內存訪問通常是數據依賴的,往往具有較少的空間局部性。這種明顯地內存訪問不規律性造成了很大的性能瓶頸。在現有gpgpu內存尋址技術中,由于線程束之間的重新排序和交叉發射,導致線程束中不同的線程請求延遲差異很大,特別是在simt架構中,線程束必須等待內存中所有的線程請求返回后才能繼續執行,這種延遲差異在運行不規則的gpgpu應用程序時會造成顯著的性能損失。
4、故如何實現同一線程束中的多個線程請求能夠同時被處理,避免不同線程束之間交叉調度所可
技術實現思路
1、本專利技術的技術任務是提供一種基于感知線程束的內存控制器,來解決如何實現同一線程束中的多個線程請求能夠同時被處理,避免不同線程束之間交叉調度所可能導致的線程發散延遲的問題。
2、本專利技術的技術任務是按以下方式實現的,一種基于感知線程束的內存控制器,該內存控制器包括事務調度器、線程束排序模塊、bank計分模塊和命令調度器;
3、其中,bank計分模塊用于基于請求的類型以及bank命令隊列中的請求數量計算一個線程束的分數;其中,一個線程束的分數是指線程束中所有線程請求分數的總和;請求類型為行命中數或行未命中數;
4、線程束排序模塊是一種內存管理機制,用于優化線程束的內存訪問請求,提高內存訪問效率并減少延遲,并根據線程束的屬性和線程束的分數對線程束進行排序;
5、事務調度器用于將同一線程束內的線程請求進行合并,并根據線程束的分數將得分最低線程束請求優先放入命令隊列中;其中,得分最低的線程束請求即為預計執行時間最短的線程束請求;
6、命令調度器用于按照輪詢調度策略依次檢測命令隊列中的不同bank緩存器,若對應的bank緩存器為空,則跳過;若對應的bank緩存器有待發射的dram指令存在,則讀取指令并發往dram(dynamic?random?access?memory,動態隨機存取存儲器)。
7、作為優選,所述線程束排序模塊包括sm_id(流多處理器標識)、warp_id(線程束標識)、score(分數值)及row_id(行標識);
8、其中,sm_id表示分配給每個線程束的流多處理器的唯一標識符;在多處理器系統中,每個流多處理器(streaming?multiprocessor,簡稱sm)執行多個線程束,sm_id用于區分流多處理器;
9、warp_id表示每個流多處理器中,線程束被賦予的唯一標識符,用于區分同一流多處理器內的不同線程束;
10、score用于表示線程束請求是否已經全部發送到內存控制器中,當線程束排序模塊接收到線程束請求中最后一個請求的標記信號時,則把數值0寫入到score字段中;
11、row_id表示與線程束請求相關的內存行的標識符;在內存系統中,數據通常按行組織,row_id有助于識別和跟蹤特定內存行的訪問請求。
12、更優地,所述線程束排序模塊包括128個條目,?每個條目對應一個獨特的<sm_id,warp_id>組合,用于區分不同的線程束,并跟蹤對應線程束中線程的訪問地址。
13、作為優選,在bank計分模塊中,為每個bank分配獨立條目,用于記錄對應bank上尚未處理的線程束及其內存請求,每個待處理的線程束均有一個相應的bank分數,bank分數用于反映完成對應線程束所有線程請求所需的預期延遲;每當讀寫隊列收到新的請求或事務調度器提取線程束時,bank分數均會進行更新。
14、更優地,所述事務調度器在每個周期內讀取并更新bank分數,確保獲取到按得分排序的最新結果,得分最高的bank表示對應的線程束請求需要最長的完成時間;
15、當確認一個線程束的所有線程請求已經完全傳輸到全局內存控制器的讀寫隊列時,事務調度器選擇得分最低的線程束,再將對應的線程束發送到命令隊列中。
16、更優地,所述事務調度器用于驗證線程束的傳輸是否完整,具體為:標記當前線程束發送到內存控制器的最后一個請求;當線程束排序模塊接收到線程束的最后一個請求時,更新線程束的分數值,確保線程束傳輸的完整性和準確性。
17、作為優選,所述事務調度器的調度機制具體如下:
18、每個線程束被分配一個bank分數,bank分數反映處理對應線程束所需的時間,bank分數越低表示優先級越高;
19、若當前線程束的請求已經發送到命令隊列,事務調度器開始尋找下一個待調度的線程束;此時,事務調度器選擇得分最低的線程束,即預計完成時間最短的任務;
20、若存在得分相同的線程束,事務調度器優先選擇行命中數最高的線程束,減少dram的功耗。
21、更優地,基于請求的類型以及bank命令隊列中的請求數量計算一個線程束的分數具體如下:
22、根據請求在最終調度時在內存bank中是命中還是未命中,即最后調度的請求是否與當前請求有匹配的行地址,確定一個對應請求的分數,情況如下:
23、若請求命中,則對應線程束的請求獲取1分;
24、若請求未命中,則對應線程束的請求獲取3分;
25、在為線程束的請求分配基于dram陣列訪問延遲的分數后,加上排隊延遲的分數,通過累加對應的bank命令隊列中所有待處理請求的分數計算;
26、每當有新請求加入或現有請求被安排進bank命令隊列時,更新對應線程束的分數。
27、作為優選,?bank計分模塊包括bank_n、線程束_n、行_n以及bank_n分數;
28、其中,bank_n表示存儲器中不同的bank;bank_n中的n是一個變量,取值為0到n的任意數字,表示系統中的第n個bank;bank是內存中的一個基本單元,用于存儲數據;
29、線程束_n表示與每個bank關聯的線程束(warp)的唯一標識符;線程本文檔來自技高網...
【技術保護點】
1.一種基于感知線程束的內存控制器,其特征在于,該內存控制器包括事務調度器、線程束排序模塊、Bank計分模塊和命令調度器;
2.根據權利要求1所述的基于感知線程束的內存控制器,其特征在于,所述線程束排序模塊包括SM_id、Warp_id、Score及Row_id;
3.根據權利要求1或2所述的基于感知線程束的內存控制器,其特征在于,所述線程束排序模塊包括128個條目,?每個條目對應一個<SM_id,Warp_id>組合,用于區分不同的線程束,并跟蹤對應線程束中線程的訪問地址。
4.根據權利要求1所述的基于感知線程束的內存控制器,其特征在于,在Bank計分模塊中,為每個Bank分配獨立條目,用于記錄對應Bank上尚未處理的線程束及其內存請求,每個待處理的線程束均有一個相應的Bank分數,Bank分數用于反映完成對應線程束所有線程請求所需的預期延遲;每當讀寫隊列收到新的請求或事務調度器提取線程束時,Bank分數均會進行更新。
5.根據權利要求4所述的基于感知線程束的內存控制器,其特征在于,所述事務調度器在每個周期內讀取并更新
6.根據權利要求5所述的基于感知線程束的內存控制器,其特征在于,所述事務調度器用于驗證線程束的傳輸是否完整,具體為:標記當前線程束發送到內存控制器的最后一個請求;當線程束排序模塊接收到線程束的最后一個請求時,更新線程束的分數值。
7.根據權利要求1所述的基于感知線程束的內存控制器,其特征在于,所述事務調度器的調度機制具體如下:
8.根據權利要求7所述的基于感知線程束的內存控制器,其特征在于,基于請求的類型以及Bank命令隊列中的請求數量計算一個線程束的分數具體如下:
9.根據權利要求1所述的基于感知線程束的內存控制器,其特征在于,?Bank計分模塊包括Bank_N、線程束_N、行_N以及Bank_N分數;
10.根據權利要求1所述的基于感知線程束的內存控制器,其特征在于,該內存控制的工作過程具體如下:
...【技術特征摘要】
1.一種基于感知線程束的內存控制器,其特征在于,該內存控制器包括事務調度器、線程束排序模塊、bank計分模塊和命令調度器;
2.根據權利要求1所述的基于感知線程束的內存控制器,其特征在于,所述線程束排序模塊包括sm_id、warp_id、score及row_id;
3.根據權利要求1或2所述的基于感知線程束的內存控制器,其特征在于,所述線程束排序模塊包括128個條目,?每個條目對應一個<sm_id,warp_id>組合,用于區分不同的線程束,并跟蹤對應線程束中線程的訪問地址。
4.根據權利要求1所述的基于感知線程束的內存控制器,其特征在于,在bank計分模塊中,為每個bank分配獨立條目,用于記錄對應bank上尚未處理的線程束及其內存請求,每個待處理的線程束均有一個相應的bank分數,bank分數用于反映完成對應線程束所有線程請求所需的預期延遲;每當讀寫隊列收到新的請求或事務調度器提取線程束時,bank分數均會進行更新。
5.根據權利要求4所述的基于感知線程束的內...
【專利技術屬性】
技術研發人員:陳建新,王帥,趙鑫鑫,姜凱,
申請(專利權)人:山東浪潮科學研究院有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。