DTD版本: 1.0.0
發明專利說明書
※申請案號:095140366 ※I P C 分類:G06T001/20
一、 發明名稱:
處理器分配暫存器之方法
METHOD FOR ALLOCATING REGISTERS FOR A PROCESSOR
二、 中文發明摘要:
本發明提供一種平行架構核心(PAC)處理器分配暫存器之方法。該PAC處理器包含一第一 叢集及一第二叢集。每一叢集包含一第一功能單元、一第二功能單元、一連接至該第一 功能單元之第一局部暫存器檔案、一連接至該第二功能單元之第二局部暫存器檔案及一 具有一由一第一暫存器庫及一第二暫存器庫形成之乒乓(ping-pong)結構的總體暫存器 檔案。在建置一組件/暫存器類型關聯之資料相依圖(CRTA-DDG)後,執行本發明之一功 能單元指派、暫存器檔案指派、乒乓暫存器庫指派及叢集指派,以充分利用PAC處理器 的性質。
三、 英文發明摘要:
A method of allocating registers for a PAC processor. The PAC processor comprises a first cluster and a second cluster. Each cluster comprises a first functional unit, a second functional unit, a first local register file connected to the first functional unit, a second local register file connected to the second register file, and a global register file having a ping-pong structure formed by a filrst register bank and a second register bank. After building a Component/Register Type Associated Data Dependency Graph (CRTA-DDG), a functional unit assignment, register file assignment, ping-pong register bank assignment, and cluster assignment of the
invention are performed to take full advantage of the properties of a PAC processor.
四、 指定代表圖:
(一)本案指定代表圖為: 第2圖 (二)本代表圖之元件符號簡單說明:
201~206...步驟
五、 本案若有化學式時,請揭示最能顯示發明特徵的化學式:
六、 發明說明:
【發明所屬之技術領域】
[0001] 本發明係關於處理器分配暫存器之方法,尤係關於平行架構核心(Parallel Architecture Core;PAC)處理器分配暫存器之方法。
【先前技術】
[0002] 大部分電腦含有一種稱作暫存器之高效能資料儲存元件,需要對其有效地使用以在運 行時達成高效能。選擇將指令分配至暫存器之語言元素及使用其所需之資料移動的過程 稱作「暫存器分配」。暫存器分配對程式碼之最終品質及效能具有一主要影響。不理想
的分配會降級程式碼尺寸及運行時效能。然而,找到真正最佳的解決方案已被證明在計 算上為難以處理的。用於暫存器分配的若干通用方法已被提出。舉例而言,Chaitin等 人在「Computer Languages」,第6卷,第47-57頁及美國專利號US 4,571,678號題 為“Register Allocation and Spilling via Graph Coloring”中描述了藉由圖形著 色的暫存器分配。
[0003] 儘管在先前技術中存在找到優良解決方案之暫存器分配演算法,但其無法直接應用於 利用多個暫存器檔案及複雜存取約束的機器,此係因為在暫存器分配中需要程式碼插 入/替換,以藉由經分配之暫存器使該程式碼生效。此影響了機器中之暫存器分配問題 的複雜性。
【發明內容】
[0004] 本發明之目標為提供具有多個暫存器檔案及存取約束之PAC處理器分配暫存器的方 法。
[0005] 該PAC處理器包含一第一叢集及一第二叢集。每一叢集包含一第一功能單元、一第二 功能單元、一連接至該第一功能單元之第一局部暫存器檔案、一連接至該第二功能單元 之第二局部暫存器檔案及一具有一由一第一暫存器庫及一第二暫存器庫形成之乒乓結構 的總體暫存器檔案。該總體暫存器檔案包含該第一及第二功能單元共用之存取埠的單一 集合。
[0006] 分配暫存器之方法包含步驟(a)至(e)。在步驟(a)中,建置包含節點、圈及邊之組件/
暫存器類型關聯之資料相依圖(Component/Register Type Associated Data
Dependency Graph;CRTA-DDG),其中每一節點代表一運算符(operator)、每一圈代表 一運算元(operand),該運算元為需要在機器層中分配至實體暫存器的常數或虛擬暫存 器,且每一邊代表兩運算元間的資料相依。在步驟(b)中,對CRTA-DDG上未指派的節點 執行功能單元指派,以判定指派哪個功能單元來執行該等未指派的節點。在步驟(c) 中,對CRTA-DDG上未指派的圈執行暫存器檔案指派,以判定將哪個暫存器檔案指派至 該等未指派的圈。在步驟(d)中,對在步驟(c)經指派至總體暫存器檔案之該等圈執行乒 乓暫存器庫指派。在步驟(e)中,插入一通信碼,以在PAC DSP結構中實施運算工作。
[0007] 此外,該方法可進一步包含一步驟:執行一叢集指派,以將CRTA-DDG上之該等節點 劃分成兩組,將一組指派至該第一叢集且將另一組指派至該第二叢集。
[0008] 使用CRTA-DDG之優點為其在考慮到PAC架構中之複雜約束的情況下,闡明了每一節點 之分配及排程限制。
[0009] 執行本發明之功能單元指派、暫存器檔案指派、乒乓暫存器庫指派及叢集指派以充分 利用PAC處理器的性質,從而獲得分配暫存器之優良效能。
【實施方式】
[0010] 圖1說明平行架構核心(PAC)處理器10之架構。該PAC處理器10包含一第一叢集12A及一第 二叢集12B,其中每一叢集12A或12B包含一第一功能單元20、一第二功能單元30、一連 接至該第一功能單元20之第一局部暫存器檔案14、一連接至該第二功能單元30之第二局 部暫存器檔案16及一具有一由一第一暫存器庫B1及一第二暫存器庫B2形成之乒乓結構的 總體暫存器檔案22。每一暫存器檔案包括複數個暫存器。
[0011] 此外,PAC處理器10包含一第三功能單元40,其係單獨置放且在該第一叢集12A及該第二 叢集12B外。第三局部暫存器檔案18連接至該第三功能單元40。
[0012] 第一功能單元20為一載入/儲存單元(M單元),第二功能單元30為一算術單元(I單元),
且第三功能單元40為一標量單元(B單元)。該第三功能單元40負責分支運算(branch operation),且亦能夠執行簡單的載入/儲存及位址算術。
[0013] 使用總體暫存器檔案22來跨叢集12A及12B通信;僅第三功能單元40(其能夠存取所有總 體暫存器檔案22)能夠執行跨叢集12A及12B的該等複製操作。
[0014] 第一局部暫存器檔案14、第二局部暫存器檔案16及第三局部暫存器檔案18僅可分別由M 單元20、I單元30及B單元40存取。
[0015] 每一總體暫存器檔案22僅具有由M單元20及I單元30共用之存取埠的單一集合。在一操作
週期中,總體暫存器檔案22之每一暫存器庫B1或B2僅可由第一功能單元20或第二功能單 元30存取,因此在每一操作週期中,此等兩個功能單元20、30僅可存取不同的庫B1或 B2。此為乒乓結構的一存取約束。
[0016] 圖2說明根據本發明之一實施例的PAC處理器10分配暫存器之方法的流程圖。
[0017] 參照圖2,分配暫存器之方法首先需要建置一組件/暫存器類型關聯資料相依圖(CRTA-
DDG)(步驟201),其保留執行與儲存關係之資訊用於處理器約束分析。使用CRTA-DDG之 優點為其在考慮到PAC架構中之複雜約束的情況下,闡明每一節點之分配及排程限制。
[0018] 圖3顯示由一輸入程式片段建置之CRTA-DDG 30。該CRTA-DDG 30包含節點、圈及邊。
每一矩形節點標有其組件類型關聯且代表一運算符,而每一圈標有其暫存器類型關聯且 代表一運算元。每一邊代表兩運算元間之資料相依。
[0019] 組件類型關聯指示為此節點排程哪個功能單元。為節點301排程M單元,且為節點302及 303排程I單元。該等節點301、302及303分別代表運算符即指令1(movi)、2(movi)及 3(add)。
[0020] 暫存器類型關聯註釋經鑒別之實體暫存器檔案/庫,該等運算元將分配至此。暫時名 (TN)代表需要以開放源碼編譯器(ORC)使用之機器層中間代碼分配至實體暫存器的虛擬 暫存器。該運算元為一常數或虛擬暫存器。圈301a代表指令1中之常數5。圈302a代表指 令2中之常數6。圈301b代表指令1中之虛擬暫存器TN1。圈302b代表指令2中之虛擬暫存 器TN2。圈303a、303b及303c分別代表指令3中之虛擬暫存器TN1、TN2及TN3。連接圈 301b、303a之邊305及連接圈302b、303b之邊306代表資料相依,其串行化在已排程之程 式碼序列中待遵循之執行次序。
[0021] 圖4(a)至4(1)說明了根據本發明之一實施例分配暫存器的過程。
[0022] 圖4(a)顯示由一輸入程式片段建置之CRTA-DDG。CRTA-DDG中標有M、I、B的節點代表 分別指派至M單元、I單元及B單元的運算符。標有M/I之節點指示其未指派至M單元或I單 元。黑色圈指示虛擬暫存器已分配至專屬暫存器或常數,而白色圈指示虛擬暫存器未分 配至暫存器檔案。
[0023] 參照圖2,在建置一CRTA-DDG(步驟201)後,對CRTA-DDG上未經指派的節點執行功能單 元指派(步驟202),以判定指派哪個功能單元來執行該等未經指派之節點。
[0024] 圖4(a)至圖4(g)說明在CRTA-DDG上執行步驟202的過程。步驟202之主要概念為執行一 功能單元指派,其試圖盡可能利用最多個局部暫存器檔案,以大約以相等量將運算分配 至M單元及I單元,且增加指令層平行性。較佳地,在該圖中,關鍵路徑(亦即,具有最 大數目之節點的路徑)上之所有節點均在相同的功能單元上運算,使得可將其運算元儲 存於局部暫存器檔案上。因此,步驟202重複下列過程,直至CRTA-DDG中之所有節點以 其自身之功能單元指派為止。
[0025] 首先,在圖4(a)中找到包含節點411、412、413、414及415的最長的資料流路徑41。該 等節點4l1、413及414於M單元或I單元上運算,且功能單元還未指派至節點413及414。
如圖4(b)中所示,該等節點413及414係於M單元上運算。
[0026] 繼而,除了資料流路徑41之外,在圖4(b)中找到另一最長資料流路徑42。該資料流路徑 42包含節點421、422及423,其中該等節點421、422及423於M單元或I單元上運算,且其 功能單元還未指派至該等節點421、422及423。如圖4(c)中所示,該等節點421、422及 423係於I單元上運算。
[0027] 除了資料流路徑41及42之外,在圖4(c)中找到另一最長資料流路徑43。資料流路徑43包 含節點431及432,其中節點431可於M單元或I單元上運算,且其功能單元還未經指派。
如圖4(d)中所示,節點431係於M單元上運算。
[0028] 類似地,在圖4(d)中找到另一資料流路徑44。資料流路徑44包含節點441及442,其中節 點441及442可於M單元或I單元上運算,且該等功能單元還未指派至該等節點。如圖4(e) 中所示,該等節點441及442係於I單元上運算。
[0029] 此外,在圖4(e)中找到另一最長資料流路徑45。資料流路徑45包含節點451及452,其中 節點451可於M單元或I單元上運算,且其功能單元還未經指派。如圖4(f)中所示,節點
451決定係於M單元上運算。
[0030] 最後,在圖4(f)中找到其功能單元還未經指派的節點461,且如圖4(g)中所示,該節點 461經判定係於I單元上運算。
[0031] 如上述,在每一迭代中,該功能單元指派在M單元與I單元之間交替,以平衡M單元及I單 元之節點的數量。
[0032] 在判定所有未指派之節點的功能單元類型後(步驟202),執行CRTA-DDG中之未分配之圈 的暫存器檔案指派(步驟203),以判定將哪些暫存器檔案分配至該等未分配之圈。
[0033] 首先,將總體暫存器檔案22分配至虛擬暫存器,其中資料相依跨M單元及I單元。此避免 了在不同功能單元間之資料共用而導致之不必要的通信碼。圖4(h)顯示基於圖4(g)之總 體暫存器檔案分配的實例。將總體暫存器檔案22分配至M-I對481、482、483及484上的 該等虛擬暫存器,且M-I對指示經由一邊及在該邊之端部的圈,M節點連接I節點。
[0034] 繼而,將第一局部暫存器檔案14、第二局部暫存器檔案16及第三局部暫存器檔案18指派 至其他未指派之虛擬暫存器,其中資料相依分別跨M單元與M單元、I單元與I單元,及B 單元與B單元。
[0035] 在對該等未分配之圈執行暫存器檔案指派後(步驟203),執行乒乓暫存器庫指派(步驟 204)。
[0036] 首先,基於具有在步驟202中經分配至總體暫存器檔案之其相關虛擬暫存器的M-I對,
建置一反向圖。參照圖4(i),藉由將頂點(在M-I對上之節點)轉換成邊,且將M-I對上 之邊轉換成頂點,基於圖4(h)來建置反向圖48。
[0037] 繼而,藉由最小切割,將圖48上之頂點劃分成兩個平衡組。在此情形中,藉由一切割 (虛線),將該等頂點劃分成A組及B組。
[0038] 最後,分別將A組及B組上之虛擬暫存器分配至第一暫存器庫B1及第二暫存器庫B2。
[0039] 圖4(j)顯示暫存器檔案及乒乓暫存器庫指派的結果。分別將標有1、2及3之虛擬暫存器 (圈)分配至第一暫存器庫B1、第二暫存器庫B2,及該等功能單元之對應的局部暫存器檔 案。
[0040] 在乒乓暫存器庫指派之步驟204後,執行叢集指派之選擇性步驟205,以利用PAC DSP的 兩叢集性質。步驟205為基於無指派至B單元之節點的整體圖,將M單元及I單元之所有節 點劃分成兩組。
[0041] 圖4(k)顯示了基於圖4(j)之叢集指派的結果。將標有Ma及Ia之節點指派至叢集12A,然 而,將標有Mb及Ib之節點指派至叢集12B。
[0042] 在真實暫存器分配前的最後步驟為通信碼插入(步驟206)。圖4(1)顯示基於圖4(k)之通 信碼插入的結果。在PAC方案中,在下列情況下執行通信碼插入,以實施運算工作。
[0043] 當將B節點連接至M節點或I節點時,因為B節點僅能使用其自身的第三局部暫存器檔案 18,所以為了通信插入另一B節點(490a)及另一I節點(490b)。
[0044] 當藉由叢集指派步驟205產生一可能通信時,在該第一叢集12A與該第二叢集12B間產生 一通信連接。為了叢集間通信,插入M節點(492a及492b)。
[0045] 當在反向圖之一邊上切割時,另一情形可出現於乒乓記憶庫指派(步驟204)中,其意謂 一節點同時存取總體暫存器檔案的兩個庫。因此,需要插入一額外節點,以將資料自該 總體暫存器檔案之一暫存器庫複製至局部暫存器檔案,以實施運算工作。
[0046] 執行本發明之功能單元指派、暫存器檔案指派、乒乓暫存器庫指派及叢集指派來充分利 用PAC處理器的性質,以獲得分配暫存器之優良效能。
[0047] 本發明之技術內容及技術特點已揭示如上,然而熟悉本項技術之人士仍可能基於本發明 之教示及揭示而作種種不背離本發明精神之替換及修飾。因此,本發明之保護範圍應不 限於實施例所揭示者,而應包括各種不背離本發明之替換及修飾,並以為以下之申請專 利範圍所涵蓋。
【圖式簡單說明】
[0066] 圖1說明PAC處理器之架構;圖2說明根據本發明之一實施例分配暫存器之方法的流程
圖;圖3顯示由一輸入程式片段建置之CRTA-DDG;及圖4(a)至4(l)說明根據本發明之一 實施例分配暫存器的過程。
【主要元件符號說明】
[0048] 10...平行架構核心處理器 [0049] 12A...第一叢集
[0050] 12B...第二叢集
[0051] 14...第一局部暫存器檔案 [0052] 16...第二局部暫存器檔案 [0053] 18...第三局部暫存器檔案 [0054] 20...第一功能單元
[0055] 22...總體暫存器檔案 [0056] 30...第二功能單元 [0057] 40...第三功能單元 [0058] 41~45...資料流路徑 [0059] 201~206...步驟 [0060] 301~303...節點
[0061] 301a、301b、302a、302b...圈 [0062] 303a、303b、303c...圈
[0063] 305、306...邊
[0064] 411~415、421~423、431~432、441~442、451~452...節點 [0065] 461、490a、490b、492a、492b...節點
七、 申請專利範圍:
1.一種處理器分配暫存器之方法,該處理器包含一第一叢集及一第二叢集,各叢集包含 一第一功能單元、一第二功能單元、一連接至該第一功能單元之第一局部暫存器檔案、
一連接至該第二功能單元之第二局部暫存器檔案及一具有一由一第一暫存器庫及一第二 暫存器庫形成之乒乓(ping-pong)結構的總體暫存器檔案,該總體暫存器檔案連接至該 第一功能單元及該第二功能單元,該方法包含以下步驟:(a)建置一圖,其包含節點、
圈及第一邊,其中每一節點標有該第一功能單元及該第二功能單元中之至少一者,每一 圈指示該暫存器是否經分配,且連接於該圈中之兩者間的各第一邊指示其間的資料相 依;(b)將該第一功能單元及該第二功能單元中之一者分配至在該圖中同時標有該第一 功能單元及該第二功能單元的該等節點;(c)基於由該第一功能單元或該第二功能單元 分配之未分配之圈的對應之節點,將該第一、該第二局部暫存器檔案及該總體暫存器檔 案分配至該未分配的圈;(d)基於經分配至該總體暫存器檔案之圈是否僅經由該圖中之 一個節點連接,將該第一暫存器庫及該第二暫存器庫分配至經分配至該總體暫存器檔案 的圈;以及(e)添加至少一個節點,以在該第一叢集與該第二叢集之間或在該總體暫存 器檔案與該第一局部暫存器檔案及該第二局部暫存器檔案之間通信。
2.如請求項1之處理器分配暫存器之方法,其進一步包含一步驟:將該第一功能單元及 該第二功能單元之節點劃分成一指派至該第一叢集之第一組及一指派至該第二叢集之第 二組。
3.如請求項1之處理器分配暫存器之方法,其中該步驟(b)包含以下步驟:(b1)找到一具 有一最大數目之節點的第一資料流路徑,且決定在該第一資料路徑上之該節點屬於該第 一功能單元;以及(b2)找到節點之數目等於或小於在該第一資料流路徑上之該節點之數 目的一第二資料流路徑,且決定在該第二資料流路徑上之該等節點屬於該第二功能單 元;其中對未判定之節點重複該等步驟(b1)及(b2)。
4.如請求項1之處理器分配暫存器之方法,其中該步驟(c)包含以下步驟:(c1)將該總體 暫存器檔案分配至該未分配之圈,其中該第一邊連接該第一功能單元之該節點及該第二 功能單元的該節點;(c2)將該第一局部暫存器檔案分配至該未分配之圈,其中該第一邊
連接該第一功能單元的該節點;以及(c3)將該第二局部暫存器檔案分配至該未分配之 圈,其中該第一邊連接該第二功能單元的該節點。
5.如請求項4之處理器分配暫存器之方法,其中該處理器進一步包含一連接於該第一叢 集與該第二叢集之間的第三功能單元,及一連接至該第三功能單元之第三局部暫存器檔 案,該步驟(c)進一步包含一步驟:將該第三局部暫存器檔案分配至該等未分配之圈,
其中該第一邊連接該第三功能單元之該節點。
6.如請求項4之處理器分配暫存器之方法,其中該步驟(d)包含以下步驟:(d1)建置一反 向圖,其包含頂點及連接在該步驟(c1)中經分配至該總體暫存器檔案的該圈之該頂點的 第二邊,每一頂點經轉換自該圈中之兩者的一組合,且該第一邊連接於其間,該節點對 應於屬於不同功能單元之兩個圈,且每一第二邊經轉換自該組合中之兩者間的該節點;
(d2)藉由一最小數目之切割,將該反向圖劃分成一第一組及一第二組;以及(d3)分別將 該第一暫存器庫及該第二暫存器庫分配至對應於該第一組及該第二組之該圈。
7.如請求項1之處理器分配暫存器之方法,其中藉由進一步在該圖上插入一個節點,以 將資料自該第一暫存器庫或該第二暫存器庫複製至該第一局部暫存器檔案或該第二局部 暫存器檔案來執行該步驟(e)。
8.如請求項1之處理器分配暫存器之方法,其中藉由進一步在該圖上插入一對節點便於 該第一叢集與該第二叢集間之通信來執行該步驟(e)。
9.如請求項1之處理器分配暫存器之方法,其中該處理器進一步包含一連接於該第一叢 集與該第二叢集之間的第三功能單元,且一經分配至該第三功能單元之第一節點連接至 一經分配至該第一功能單元或該第二功能單元的第二節點,藉由進一步插入該第三功能 單元之一第三節點及該第三功能單元之一第四節點作為用於通信之該圖上的該第二節點 來執行該步驟(e)。
10.如請求項1之處理器分配暫存器之方法,其中該第一功能單元為一載入/儲存單元。
11.如請求項1之處理器分配暫存器之方法,其中該第二功能單元為一算術單元。
12.如請求項5之處理器分配暫存器之方法,其中該第三功能單元為一標量單元。
13.如請求項1之處理器分配暫存器之方法,其中該總體暫存器檔案包含由在每一運算週 期中僅能存取不同暫存器庫之該第一功能單元及該第二功能單元共用之存取埠的一個單 一集合。
14.如請求項1之處理器分配暫存器之方法,其中每一節點代表一運算符,每一圈代表一 運算元,該運算元為需要在機器層中分配至一實體暫存器的一常數或一虛擬暫存器。
八、 圖式:
圖1
圖2
圖3
圖4(a)
圖4(b)
圖4(c)
圖4(d)
圖4(e)
圖4(f)
圖4(g)
圖4(h)
圖4(i)
圖4(j)
圖4(k)
圖4(1)