亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種gpgpu寄存器緩存的實現方法

文檔序號:6624429閱讀:213來源:國知局
一種gpgpu寄存器緩存的實現方法
【專利摘要】本發(fā)明公開了一種GPGPU寄存器緩存的實現方法。各個流處理器移除原有寄存器文件,增加用于存儲正在執(zhí)行線程所需寄存器的寄存器緩存,線程執(zhí)行前從內存中加載寄存器數據到寄存器緩存。在線程執(zhí)行所需的寄存器能保存在流處理器的寄存器緩存中的前提下,從所有可執(zhí)行的線程中選擇線程數量最多的線程組合執(zhí)行,從內存中加載選擇的線程組合中每個線程所使用的寄存器數據到寄存器緩存,然后以任意方式對線程組合中的線程進行選擇執(zhí)行,當選擇的線程組合中所有線程都無法執(zhí)行時,重新選擇另一組線程。本發(fā)明減少流處理器寄存器文件所需存儲空間,降低能耗和面積,解除流處理器寄存器數量不足的限制,提高系統(tǒng)效率。
【專利說明】一種GPGPU寄存器緩存的實現方法

【技術領域】
[0001]本發(fā)明涉及一種緩存實現方法,尤其是涉及一種GPGPU寄存器緩存的實現方法。

【背景技術】
[0002]通用圖形處理器GPGPU是一種利用傳統(tǒng)上處理圖形任務的圖形處理器來執(zhí)行通用計算任務的處理器。GPGPU由多個流處理器組成,每個流處理器包含多個計算單元,流處理器中一個指令解碼器控制所有的計算單元,計算單元按照單指令多數據的方式并行地執(zhí)行指令,從而以較小的管理代價實現大規(guī)模數據并行計算。GPGPU中的最小管理單位是線程,每個線程通常用于處理大規(guī)模數據中的一個單位的數據。流處理器中一組線程在計算單元上鎖步執(zhí)行,稱為鎖步執(zhí)行線程組,鎖步執(zhí)行線程組是流處理器線程調度器調度和指令執(zhí)行的基本單位。GPGPU的大規(guī)模數據處理使得流處理器中包含大量的執(zhí)行線程,流處理器通過切換不同的鎖步執(zhí)行線程組來盡量保持每個計算部件繁忙,掩蓋如訪問內存等操作帶來的長延遲等待。
[0003]每個線程在執(zhí)行時需要獨立的寄存器文件來存儲中間計算結果。流處理器為了支持在不同的鎖步執(zhí)行線程組之間快速切換,內建了大量的存儲空間用于保存所有執(zhí)行的線程所需的寄存器文件,寄存器文件大小是限制流處理器上可執(zhí)行的線程數量的因素之一。流處理器在一段時間內只能執(zhí)行部分線程,整個寄存器文件保存的大部分寄存器處于閑置狀態(tài)并不會被立即使用,因此這些寄存器文件存儲占用的GPGPU芯片的能耗和面積在不同的時間內被浪費了。


【發(fā)明內容】

[0004]為了解決【背景技術】中存在的問題,本發(fā)明的目的在于提供一種GPGPU寄存器緩存的實現方法。
[0005]本發(fā)明解決其技術問題所采用的技術方案包括:
各個流處理器中增加寄存器緩存替換寄存器文件,采用基于寄存器緩存的組織方式,并對流處理器線程采用基于寄存器緩存的調度方式。
[0006]所述的基于寄存器緩存的組織方式具體為:
A.1)移除流處理器原有寄存器文件,將原有寄存器文件中的所有寄存器數據保存在內存中,在流處理器內增加用于存儲正在執(zhí)行線程所需寄存器的寄存器緩存;
A.2)線程執(zhí)行前從內存中加載寄存器數據到寄存器緩存。
[0007]當所述的流處理器執(zhí)行的線程需要訪問寄存器文件時,從寄存器緩存中訪問。
[0008]當所述的流處理器的寄存器緩存空間不足時,替換除正在執(zhí)行線程使用的寄存器數據以外的寄存器緩存的緩存塊,并將緩存塊中修改過的寄存器數據寫回內存。
[0009]所述的基于寄存器緩存的調度方式具體為:
B.1)從所有可執(zhí)行的線程中選擇線程執(zhí)行,在線程執(zhí)行所需的寄存器能保存在流處理器的寄存器緩存中的前提下,從中選擇線程數量最多的線程組合執(zhí)行; B.2)從內存中加載步驟B.1)中選擇的線程組合中每個線程所使用的寄存器數據到寄存器緩存;
B.3)以任意方式對線程組合中的線程進行選擇執(zhí)行,當選擇的線程組合中的所有線程都無法執(zhí)行時,重復步驟B.1)選擇另一組線程執(zhí)行。
[0010]本發(fā)明具有的有益效果是:
本發(fā)明減少流處理器中保存寄存器文件所需的存儲空間,從而降低GPGPU的能耗和芯片面積,避免了寄存器文件存儲占用的GPGPU芯片的能耗和面積在不同的時間內的浪費。并解除流處理器寄存器數量不足的限制,增加可執(zhí)行的線程數量,提高系統(tǒng)效率。

【專利附圖】

【附圖說明】
[0011]圖1是本發(fā)明基于寄存器緩存的組織方式的流程圖。
[0012]圖2是本發(fā)明流處理器基于寄存器緩存的調度方式的流程圖。

【具體實施方式】
[0013]下面結合附圖和實施例對本發(fā)明作進一步說明。
[0014]本發(fā)明方法包括:各個流處理器中增加寄存器緩存替換寄存器文件,采用基于寄存器緩存的組織方式,并對流處理器線程采用基于寄存器緩存的調度方式。
[0015]如圖1所示,上述的基于寄存器緩存的組織方式具體為:
A.1)移除流處理器原有寄存器文件,將原有寄存器文件中的所有寄存器數據保存在內存中,在流處理器內增加用于存儲正在執(zhí)行線程所需寄存器的寄存器緩存,替換原有寄存器文件。
[0016]A.2)線程執(zhí)行前從內存中加載寄存器數據到寄存器緩存。
[0017]當所述的流處理器執(zhí)行的線程需要訪問寄存器文件時,從寄存器緩存中訪問,因此要在線程執(zhí)行前從內存中加載所執(zhí)行線程所需寄存器數據到寄存器緩存。當所述的流處理器的寄存器緩存空間不足時,替換除正在執(zhí)行線程使用的寄存器數據以外的寄存器緩存的緩存塊,并將緩存塊中修改過的寄存器數據寫回內存。
[0018]如圖2所示,上述基于寄存器緩存的調度方式具體為:
B.1)從所有可執(zhí)行的線程中選擇線程執(zhí)行,在線程執(zhí)行所需的寄存器能保存在流處理器的寄存器緩存中的前提下,從中選擇線程數量最多的線程組合執(zhí)行。
[0019]B.2)從內存中加載步驟B.1)中選擇的線程組合中每個線程所使用的寄存器數據到寄存器緩存。
[0020]B.3)以任意方式對線程組合中的線程進行選擇執(zhí)行,當選擇的線程組合中的所有線程都無法執(zhí)行時,重復步驟B.1)選擇另一組線程執(zhí)行。
[0021]本發(fā)明方法的實現原理如下:
I)流處理器寄存器緩存的組織方式
移除流處理器原有的寄存器文件。實際的寄存器文件的數據保存在內存中,由于內存有充足的存儲空間,因此可以保存更多線程的寄存器,從而允許更多的線程在流處理器上并發(fā)地執(zhí)行。
[0022]流處理器中增加寄存器緩存,用于存儲流處理器中正在執(zhí)行的線程所需的寄存器。緩存由獨立的緩存塊構成,例如鎖步線程執(zhí)行中,由于鎖步線程組中的線程總是執(zhí)行同一條指令,這些線程會同時訪問屬于各自的相同編號的寄存器,因此寄存器緩存中一個緩存塊保存整個鎖步執(zhí)行線程組中所有線程所使用的相同編號的寄存器數據,維持局部性。
[0023]鎖步執(zhí)行線程組在執(zhí)行前檢查其所需的寄存器是否在寄存器緩存中,若不存在則通過讀請求從內存中讀取相應的寄存器緩存塊數據。
[0024]流處理器的流水線中,寄存器緩存替換了原寄存器文件。當流處理器執(zhí)行的線程訪問寄存器時,流水線從寄存器緩存的端口讀取相應的寄存器數據。由于鎖步執(zhí)行,鎖步執(zhí)行線程組的所有線程在一次訪問中都訪問同相同編號的寄存器,而同一個鎖步執(zhí)行線程組相同編號的寄存器保存在同一個緩存塊中,因此寄存器緩存只需要一次查找操作就能獲得所需的所有數據而不會影響流水線性能。
[0025]在從內存讀入寄存器緩存塊時,若寄存器文件中沒有空閑的空間,則需要替換出不使用的緩存塊。替換的選擇是最近最少被使用的緩存塊,此方法容易實現且不需要線程調度器的信息。被替換出的緩存塊若被修改過則需要寫回內存。每個緩存塊在被寫入時記錄實際寫入的字節(jié)位圖,寫回內存時只寫回被修改過的部分,從而降低寫回的帶寬開銷。
[0026]2)適用于寄存器緩存的流處理器線程調度方式
傳統(tǒng)GPGPU的調度方式是輪流執(zhí)行流處理器中所有的鎖步執(zhí)行線程組。當這些線程所使用的寄存器超過寄存器緩存的容量時會降低寄存器緩存的重用率,導致緩存抖動。本發(fā)明提出適用于寄存器緩存的流處理器線程調度方式。
[0027]第一步從所有可執(zhí)行的線程中選擇盡可能多的線程執(zhí)行,選擇標準是寄存器緩存的空間足夠保存所有這些線程所使用的寄存器。從而避免在執(zhí)行線程時產生寄存器緩存抖動。
[0028]在確定當前可執(zhí)行的線程后,從內存中加載這些線程所使用的寄存器文件到寄存器緩存中以支持這些線程的執(zhí)行。加載操作以調度的順序從第一個將執(zhí)行的鎖步執(zhí)行線程組所需的寄存器開始加載。
[0029]輪流執(zhí)行之前選擇的所有可執(zhí)行線程,這一步與從內存中加載寄存器同時進行,在加載完成第一個將執(zhí)行的鎖步執(zhí)行線程組的寄存器后就開始執(zhí)行這個線程組,從而以線程組的執(zhí)行覆蓋寄存器文件的加載延遲。
[0030]當之前選擇的執(zhí)行線程中所有的鎖步執(zhí)行線程組都無法繼續(xù)執(zhí)行時需要重新選擇可執(zhí)行的線程。這種情況出現的原因是所有鎖步執(zhí)行線程組都在等待訪存結果或者執(zhí)行長延遲的計算指令。這時回到第一步重新選擇一組可以執(zhí)行的線程避免流處理器中計算資源浪費。
[0031]本發(fā)明的實施例:
對于步驟A.1)例如:Nvidia GeForce GTX480 GPGPU中,每個流處理器的寄存器文件具有32768個32位寄存器,需要IMB存儲空間,將寄存器替換為256KB大小的寄存器緩存后每個流處理器可緩存8192個32位寄存器,從而節(jié)省了四分之三的片上存儲所需空間。
[0032]對于步驟A.2)例如:流處理器將要執(zhí)行的線程使用20個寄存器,則從內存中讀取這20個寄存器所在的緩存塊到寄存器緩存中。假設寄存器緩存的容量為30個寄存器,并且在此之前已經執(zhí)行了另一個使用20個寄存器的線程,此時寄存器緩存有10個寄存器的空余緩存空間,新線程讀取的20個寄存器中的10個可直接保存到這些空閑緩存空間中,其他10個由于緩存已滿,首先替換舊線程的最早被訪問的10個寄存器,若這10個寄存器中有被修改過的寄存器,則把它們所在的緩存塊數據寫回內存。同時,這10個寄存器緩存空間被用來保存新線程的后10個寄存器。
[0033]如圖2所示,上述基于寄存器緩存的調度方式具體為:
對于步驟B.1):假設寄存器緩存能保存50個寄存器,每個線程需要20個寄存器,此時最多只能選擇2個線程所組成的線程組合執(zhí)行。無法選擇更多線程的線程組合,如3個線程需要60個寄存器,無法同時存儲在寄存器緩存中。這2個線程選擇線程編號相鄰的2個線程,比如線程I和線程2,以盡量減少對線程間同步的性能影響。
[0034]對于步驟B.2):按步驟B.1)的實施例選擇了 2個線程,每個線程需要20個寄存器,則需要從內存中加載總共40個寄存器到寄存器緩存。
[0035]對于步驟B.3):每個線程執(zhí)行一條指令后切換到另一個線程執(zhí)行,按照線程編號循環(huán)執(zhí)行。對于步驟B.1)實施例中選擇的2個線程,首先執(zhí)行第一個線程的第一條指令,然后切換到第二個線程執(zhí)行第一條指令,再切換回第一個線程執(zhí)行第二條指令,以此類推。直到這兩個線程由于訪問內存或其他長延遲操作均無法立即繼續(xù)執(zhí)行時,重復步驟B.1)選擇另一組線程執(zhí)行。
[0036]上述【具體實施方式】用來解釋說明本發(fā)明,而不是對本發(fā)明進行限制,在本發(fā)明的精神和權利要求的保護范圍內,對本發(fā)明作出的任何修改和改變,都落入本發(fā)明的保護范圍。
【權利要求】
1.一種GPGPU寄存器緩存的實現方法,其特征在于:各個流處理器中增加寄存器緩存替換寄存器文件,采用基于寄存器緩存的組織方式,并對流處理器線程采用基于寄存器緩存的調度方式。
2.根據權利要求1所述的一種GPGPU寄存器緩存的實現方法,其特征在于:所述的基于寄存器緩存的組織方式具體為: A.1)移除流處理器原有寄存器文件,將原有寄存器文件中的所有寄存器數據保存在內存中,在流處理器內增加用于存儲正在執(zhí)行線程所需寄存器的寄存器緩存; A.2)線程執(zhí)行前從內存中加載寄存器數據到寄存器緩存。
3.根據權利要求2所述的一種GPGPU寄存器緩存的實現方法,其特征在于:當所述的流處理器執(zhí)行的線程需要訪問寄存器文件時,從寄存器緩存中訪問。
4.根據權利要求2所述的一種GPGPU寄存器緩存的實現方法,其特征在于:當所述的流處理器的寄存器緩存空間不足時,替換除正在執(zhí)行線程使用的寄存器數據以外的寄存器緩存的緩存塊,并將緩存塊中修改過的寄存器數據寫回內存。
5.根據權利要求1所述的一種GPGPU寄存器緩存的實現方法,其特征在于:所述的基于寄存器緩存的調度方式具體為: B.1)從所有可執(zhí)行的線程中選擇線程執(zhí)行,在線程執(zhí)行所需的寄存器能保存在流處理器的寄存器緩存中的前提下,從中選擇線程數量最多的線程組合執(zhí)行; B.2)從內存中加載步驟B.1)中選擇的線程組合中每個線程所使用的寄存器數據到寄存器緩存; B.3)以任意方式對線程組合中的線程進行選擇執(zhí)行,當選擇的線程組合中的所有線程都無法執(zhí)行時,重復步驟B.1)選擇另一組線程執(zhí)行。
【文檔編號】G06F12/08GK104182281SQ201410418801
【公開日】2014年12月3日 申請日期:2014年8月25日 優(yōu)先權日:2014年8月25日
【發(fā)明者】吳明暉, 俞立呈, 陳天洲, 裴玉龍, 孟靜磊 申請人:浙江大學城市學院
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1