• / 18
  • 下載費用:30 金幣  

單指令多線程計算系統及其方法.pdf

摘要
申請專利號:

CN201510852483.2

申請日:

2015.11.27

公開號:

CN106257411A

公開日:

2016.12.28

當前法律狀態:

實審

有效性:

審中

法律詳情: 實質審查的生效IPC(主分類):G06F 9/38申請日:20151127|||公開
IPC分類號: G06F9/38 主分類號: G06F9/38
申請人: 聯發科技股份有限公司
發明人: 張嘉洋
地址: 中國臺灣新竹市新竹科學工業園區篤行一路一號
優先權: 2015.06.17 US 14/741,505
專利代理機構: 深圳市威世博知識產權代理事務所(普通合伙) 44280 代理人: 李慶波
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510852483.2

授權公告號:

|||

法律狀態公告日:

2017.01.25|||2016.12.28

法律狀態類型:

實質審查的生效|||公開

摘要

本發明提供一種單指令多線程計算系統。該單指令多線程計算系統包括多個處理器和用于調度線程至每個處理器的調度器。每個處理器包括一個標量單元和多個矢量單元,標量單元提供一個標量通道用于標量執行,矢量單元提供N個并行通道用于矢量執行。處理器在執行期間檢測出一條N線程的指令已被編譯器預測出其具有(N-M)個空閑線程,且該指令在M個有效線程上具有相同的源操作數,其中N>M≥1;以及完成檢測之后,傳送該指令至標量單元用于標量執行。本發明所提出的單指令多線程計算系統,可提高系統性能。

權利要求書

1.一種在單指令多線程計算系統上執行的多線程指令序列的處理方
法,其特征在于,包括:
在編譯期間,對在所述單指令多線程計算系統中的處理器上執行的所
述指令序列進行分析,其中,所述處理器包括一個標量單元和多個矢量
單元,所述標量單元提供一個標量通道以用于標量執行,而所述多個矢
量單元提供N個并行通道以用于N個線程上的矢量執行;
預測所述被分析的指令序列中的一條指令具有(N-M)個空閑線程,
且所述指令在M個有效線程上具有相同的源操作數,其中N>M≥1;
以及
為所述指令生成代碼,以被所述標量單元執行。
2.如權利要求1所述的方法,其特征在于,進一步包括:
在為所述指令生成的所述代碼中設定一個指定位以指明為用于所述
標量執行。
3.如權利要求1所述的方法,其特征在于,進一步包括:
預測所述被分析的指令序列中的第二指令在所述N個線程上具有相
同的源操作數;
在為所述第二指令所生成的所述代碼中設定一個指定位以指明為用
于所述標量執行。
4.如權利要求1所述的方法,其特征在于,進一步包括:
將所述指令替換為標量指令以指明為用于所述標量執行。
5.如權利要求1所述的方法,其特征在于,對所述指令序列進行分
析的步驟進一步包括:
判斷所述指令所在的基本塊是否為多個分支的目標;以及
判斷所述指令是否從超過一個分支處獲取操作數。
6.如權利要求1所述的方法,其特征在于,進一步包括:
在執行期間,檢測出所述指令已經被編譯器預測出所述指令用于所述
標量執行;
調度所述指令至所述標量單元;以及
傳輸所述標量執行的結果至所述M個有效線程的目標。
7.如權利要求6所述的方法,其特征在于,進一步包括:
調度另一指令至所述矢量單元以與所述指令同時執行。
8.一種在單指令多線程計算系統中執行N線程指令序列的方法,其
特征在于,所述方法包括:
在執行期間,檢測出所述指令序列中的一條指令具有(N-K)個空閑
線程,且所述指令在所述單指令多線程計算系統中的處理器的K個有效
線程上具有相同的源操作數,其中,所述處理器包括一個標量單元和多
個矢量通道,所述標量單元提供一個標量通道以用于標量執行,而所述
多個矢量通道提供N個并行通道以用于所述N個線程上的矢量執行,且
1≤K≤閾值<N;
調度所述指令用于所述標量執行;以及
使用所述標量單元執行所述指令。
9.如權利要求8所述的方法,其特征在于,檢測所述指令的步驟進
一步包括:
檢測出指定的狀態寄存器中具有K個位被設定為指示值,以指明對
應的K個線程為有效線程。
10.如權利要求9所述的方法,其特征在于,進一步包括:
發送所述標量執行的結果至所述K個有效線程的目標。
11.如權利要求8所述的方法,其特征在于,進一步包括:
檢測出所述指令的一個指定位已經被設定為指示值,指明已在編譯期
間預測出所述指令在所述K個有效線程上具有相同的源操作數;以及
響應對所述設定的指定位的檢測,以利用所述標量單元執行所述指令。
12.如權利要求8所述的方法,其特征在于,進一步包括:
調度另一指令至所述矢量單元以與所述指令同時執行。
13.一種單指令多線程計算系統,包括:
多個處理器,其中,每個所述處理器包括一個標量單元和多個矢量單
元,所述標量單元提供一個標量通道以用于標量執行,而所述多個矢量
單元提供N個并行通道以用于矢量執行;和
調度器,用以調度多個線程至每個所述處理器,
其中,每個所述處理器用以:
在執行期間,檢測出一條N線程的指令已被編譯器預測為具有(N-M)
個空閑線程,且所述指令在M個有效線程上具有相同的源操作數,其中
N>M≥1;以及
使用所述標量單元執行所述指令。
14.如權利要求13所述的計算系統,其特征在于,每個所述處理器
進一步用于:
檢測所述指令中的一個指定位已被設定為指示值,指明用于所述標量
執行。
15.如權利要求13所述的計算系統,其特征在于,每個所述處理器
進一步包括狀態寄存器,所述狀態寄存器具有N個位,分別對應于所述
N個線程,其中,所述N個位中有M個位被設定為指示值,以指明對應
的M個線程為有效線程。
16.如權利要求13所述的計算系統,其特征在于,每個所述處理器
進一步用于:
在所述執行期間,檢測出尚未被預測用于所述標量執行的第二指令具
有一個有效線程和(N-1)個空閑線程;以及
使用所述標量單元執行所述第二指令。
17.如權利要求13所述的計算系統,其特征在于,每個所述處理器
進一步用于:
在所述執行期間,檢測出尚未被預測用于所述標量執行的第二指令具
有(N-K)個空閑線程,且所述指令在K個有效線程上具有相同的源操
作數,其中1≤K≤閾值<N;以及
使用所述標量單元執行所述第二指令。
18.如權利要求17所述的計算系統,其特征在于,每個所述處理器
進一步用于:
傳輸所述標量執行的結果至所述K個有效線程的目標。
19.如權利要求13所述的計算系統,其中,每個所述處理器進一步
用于:
傳輸所述標量執行的結果至所述M個有效線程的目標。
20.如權利要求13所述的計算系統,其特征在于,每個所述處理器
進一步用于:
調度另一指令至所述矢量單元以與所述指令同時執行。

說明書

單指令多線程計算系統及其方法

技術領域

本發明涉及矢量處理方法,更具體地,涉及一種在單指令多線程的
(Single-Instruction-Multiple-Thread,以下簡稱為SIMT)計算系統中的矢
量處理方法。

背景技術

單指令多線程是一些現在的圖形處理單元(graphics processing unit,
以下簡稱為GPU)所采用的一種并行執行模式。這種GPU可以利用多個
并行的數據路徑以鎖步方式(lock-step)而在多個線程上同時執行單一指
令。已經開發設計的單程序多數據(Single-Program-Multiple-Data,SPMD)
加速器語言,如和可用以提高具有SIMT架構類型
的GPU的計算性能。

一些現在的GPU可在比并行數據路徑數目更多的線程上執行單一指
令。例如,具有32條并行數據路徑的處理器可在4個連續的周期內在128
個線程上執行一條指令。在下面的描述中,將該128個線程稱為線程塊
(thread block)。線程塊中的所有線程,例如,4個連續周期中每個周期
內的32個線程,均共享一個程序計數器和指令提取(instruction fetch),
且以鎖步方式執行。

SIMT減少了程序計數器的數量以及指令提取的開銷,但是,在某些
情況下,鎖步執行方式(lock-step execution model)會導致計算資源的利
用率很差。舉例來說,處理器中的多個線程遵循不同的控制流路徑來處
理if-else語塊,則,當遵循“if”路徑的線程被執行時,那么遵循“else”
路徑的線程將被禁用(等待中),反之亦然。也就是說,一次只能執行一
條控制流路徑,即使該控制流路徑對其它的線程無用。此外,對線程的
冗余簿記(redundant bookkeeping)也會造成低效的利用率。例如,在
while循環中,處理器中的所有線程均以鎖步方式來執行循環計數增量
(loop count increment),即使這個增量對于所有線程來說是統一的(即
相同的)。除了冗余的循環計數計算之外,線程還經常計算相同的分支條
件、復制相同的基地址、并執行相似的地址計算,以從數據陣列中檢索
數據。因此,有必要減少SIMT計算中的冗余計算,以提高系統性能。

發明內容

本發明實施例提供一種用于SIMT計算系統執行的多線程指令序列
的處理方法。該方法包括步驟:在編譯期間,對SIMT計算系統的處理
器所執行的指令序列進行分析。該處理器包括一個標量單元(scalar unit)
和多個矢量單元(vector unit),其中,標量單元提供一個標量通道(scalar
lane)用于標量執行(scalar execution),矢量通道提供N個并行通道用
于N個線程上的矢量執行(vector execution)。該方法還包括步驟:預測
所分析的指令序列中的一條指令具有(N-M)個空閑線程(inactive thread),
并在該N個線程中的M個有效線程(active thread)上具有相同的源操作
數(source operand),其中N>M≥1;以及生成指令代碼,用于被標量
單元執行。

本發明另一實施例提供一種在SIMT計算系統中執行N線程指令序
列的方法。該方法包括步驟:在執行期間,檢測該指令序列中的一條指
令具有(N-K)個空閑線程,并在該SIMT計算系統處理器的N個線程
中的K個有效線程上具有相同的源操作數。該處理器包括一個標量單元
和多個矢量單元,其中,標量通道提供一個標量通道用于標量執行,矢
量通道提供N個并行通道,用于N個線程上的矢量執行,其中,1≤K≤
閾值<N。該方法進一步包括步驟:調度該指令用于標量執行;以及使用
標量單元執行該指令。

本發明又一實施例提供一種SIMT計算系統。該SIMT計算系統包括
多個處理器。每個處理器包括一個標量單元和多個矢量單元,標量單元
提供一個標量通道用于標量執行,矢量單元提供N個并行通道用于矢量
執行;和一個調度器用以調度多個線程至每個處理器。每個處理器用以:
在執行期間,檢測出一條N線程的指令已經被編譯器預測其具有(N-M)
個空閑線程,且該N線程的指令在N個線程中的M個有效線程上具有
相同的源操作數,其中N>M≥1;及使用標量單元執行該指令。

本發明所提出的單指令多線程計算系統,可提高系統性能。

附圖說明

本發明通過實例的方式來進行闡述,這些實例可如附圖所示,附圖中
類似的標號代表類似的元件。然而,可以理解的是,這些實例并不構成
對本發明的限制。應該注意的是,本發明中于不同處所引用的“一”實
施例并不一定指同一實施例,這種引用意味著至少一個實施例。另外,
當結合一實施例描述某特定的特征、結構或特性時,應當認為,結合其
他的實施例以實現這種特征、結構和特性是在本領域熟練技術人員的知
識范疇之內的,而無論是否明確說明。

圖1為本發明一實施例的SIMT計算系統的示意圖。

圖2為本發明一實施例的多個矢量通道和標量通道的示意圖。

圖3為本發明一實施例的為SIMT計算系統生成代碼的編譯器的示意
圖。

圖4為本發明一實施例的由編譯器所執行的分析實例的示意圖。

圖5為本發明一實施例的運行時標量化模塊(scalarizer module)的
示意圖。

圖6為本發明一實施例的編譯時標量化(compile time scalarization)
處理方法的流程圖。

圖7為本發明一實施例的執行時標量化(execution time scalarization)
處理方法的流程圖。

圖8為本發明一實施例的在執行期間所進行的對編譯時標量化處理
進行檢測的方法的流程圖。

圖9為本發明一實施例的計算機系統的示意圖。

具體實施方式

在下面的說明中,將列舉大量的具體細節。但是,應當理解的是,本
發明的實施例也可以脫離這些具體細節而實施。在其他情況下,為了更
清晰地闡釋本發明的思路,本發明并沒有詳細地描述熟知的電路、結構
和技術。但是,本領域技術人員可以理解的是,本發明可以脫離這些具
體細節而實施。且本領域的技術人員在閱讀本發明的說明書后,無需過
多的試驗即可實現本發明。

本發明的實施例提供一種通過對多線程的矢量處理進行標量化處理
以提高SIMT計算系統的效率的方法和系統。若某條指令的一組線程(即
一個線程塊)具有相同的源操作數(因此具有相同的結果),那么這些線
程上的操作將被調度至標量執行單元(scalar execution unit),且其操作結
果被通知到這些線程的目標。此外,若一個線程塊中的一個或多個線程
對于某指令而言是有效的(例如,使能產生指令的結果),而該線程塊中
的剩余指令是閑置的(例如,禁能產生指令的結果),并且這些有效的線
程上均具有相同的源操作數,那么這些有效線程上的操作將被調度至標
量執行單元,且其操作結果將被通知至這些有效線程的目標。對多線程
的操作進行標量化處理降低了冗余的計算量以及對寄存器的訪問,因而
可節省能量。通過將有效多線程上的操作移至標量執行單元,矢量執行
單元便能夠執行與標量化指令(scalarized instruction)并行的其它矢量指
令(vector instruction)。因此,在同一周期內能夠發出兩條指令,從而增
加線程級別的并行處理能力。

當具有相同源操作數的指令在一個線程塊中的所有線程上執行時,該
指令被稱為“統一”指令(uniform instruction)。當具有相同源操作數的
指令在一個線程塊中的所有有效線程上執行,而該線程塊中的一些線程
為空閑線程時,該指令被稱為“條件性統一”指令(conditionally uniform
instruction)。為了描述的簡潔性,統一指令可被認為是條件性統一指令的
特例。即,除非特別指明,條件性統一指令包括統一指令。

在示例中,統一指令(以偽代碼的形式)可為:mov R1,0L,該指令
是在所有線程上將常量值“0”移動至寄存器R1。如果該移動指令位于
條件性語句中,例如,if語句中,那么該指令僅是在某些線程上執行,
而不是在所有的線程上執行,所以,該指令即為條件性統一指令(在此
情形下,其為條件性統一而不是全部統一)。

在以下描述中,詞語“矢量處理”(vector processing)指多線程上的
并行執行。矢量處理是由處理器中的矢量執行單元(也可稱為“矢量單
元”)來執行的。當線程塊中的線程數量與處理器中的矢量單元的數量相
等時,每個矢量單元提供一個“矢量通道”(也可稱為“并行通道”)用
于矢量執行。當線程塊中的線程數量超過處理器中的矢量單元的數量時
(例如,前者為后者的倍數時),那么每個矢量單元將被時分復用
(time-multiplexed),以提供復數倍的矢量通道。雖然時分復用矢量單元
(time-multiplex vector unit)所執行的線程均是在多個連續周期內執行的,
但為了清晰地闡釋本發明的目的,可認為線程塊中的所有線程是以并行
的方式來執行的。換言之,線程塊中的不同線程是并行地在不同的矢量
通道上執行的。

此外,本文所描述的SIMT計算系統包括用于標量執行的標量通道。
標量執行是由標量執行單元(也可稱為標量單元)來實施的。標量執行
也可與矢量執行同時進行。對矢量處理指令進行標量化處理意味著,是
標量單元而不是矢量單元在具有相同源操作數的多線程上來執行指令。
當有多個有效線程時,對條件性統一指令進行標量化處理可消除冗余計
算。此外,由于條件性統一指令可能僅使用一個或者使用少數個通道,
則將該指令移至標量通道并發出另一條矢量處理指令至矢量通道可以提
高計算資源的利用率。

圖1為本發明實施例所揭示的將條件性統一指令進行標量化處理的
SIMT計算系統100的原理框圖。SIMT計算系統100可為圖形處理單元
(graphic processing unit)、多媒體處理系統(multimedia processing
system)、信號處理系統(signal processing system)或任何其它高性能計
算系統。

在圖1所示的實施例中,SIMT計算系統100包括多個處理器160,
每個處理器160包括一個標量單元152和多個矢量單元150。處理任務以
多個線程的形式進入SIMT計算系統100,這些線程被組織為線程塊。每
個處理器160可同時處理多個線程塊。每個線程塊包含一組共享同一條
指令的線程。每個線程均具有各自的寄存器文件140,且這些線程通過本
地共享存儲器185與線程塊中的其他線程共享數據。

SIMT計算系統100還包括線程塊分配器110,其通過處理控制器165
來調度及分配多個線程塊至多個處理器160。當一個線程塊被調度至一個
處理器160時,該處理器中的指令提取和解碼單元120提取并解碼指令,
而線程調度器130調度該指令和該線程塊中的線程,且以合適的周期來
執行這些線程,例如,當在這些線程執行的該指令的源操作數是可用的
時候。源操作數可包括常量,也可從寄存器文件140或存儲器(如系統
存儲器180、本地共享存儲器185、高速緩沖存儲器或其它的存儲地點)
中提取。然后,該指令連同其源操作數被傳送至矢量單元150或標量單
元152以執行。

在示例中,這些矢量單元150提供N個矢量通道以進行矢量執行。
此外,每個處理器160還包括一個標量單元152以提供一個標量通道用
于標量操作。如果這些矢量單元的數量小于N,則這些矢量單元可被時
分復用。例如,當每個矢量單元被時分復用四次時,則64個矢量單元可
提供256個矢量通道。而在其它的實施例中,標量單元152也可同樣被
時分復用以提供多個標量通道。為了描述的簡潔性起見,下面的描述中
規定SIMT計算系統100并行地提供N個矢量通道和一個標量通道,詳
情可如圖2中的示例所示。圖2進一步揭露了指令I在未被標量化處理
時(如虛線所示)和被標量化處理時(如實線所示)的執行路徑。可以
理解的是,SIMT計算系統可提供任意數量的矢量通道和標量通道。

請繼續參考圖1,其中每個處理器160還包括狀態寄存器,如下文所
描述的執行狀態寄存器(在圖中表示為EXEC寄存器)170,其具有對應于
N個線程的N位(bits)。EXEC寄存器170被用作為指示器,以指明N
個線程中哪些線程為有效線程。例如,若EXEC寄存器170的第i位被
設定為某預定值,則其指明相對應的第i個線程是有效的。EXEC寄存器
170可通過處理器160的前端單元進行設定,例如,通過指令提取和解碼
單元120或線程調度器130進行設定。當條件性統一指令通過標量單元
152來執行時,其標量執行結果將根據EXEC寄存器170中設定的多個
比特從而被通知至有效線程的目標。

在示例中,指令提取和解碼單元120所提取的指令包括一個指定位
(designated bit),以下的描述中將其定義為“u”位,該指定位用于指明
該指令是否已被標量單元152進行標量化處理。若該“u位”被設定(例
如,被設定為預定數(例如,“1”))時,那么該指令及其源操作數被調
度至標量單元152;否則,該指令及其源操作數被調度至矢量單元150
用于矢量執行。

根據本發明的一實施方式,該“u位”的設定是由編譯器在編譯期間
確定的,例如,圖3所示示例中的編譯器310。編譯器310在計算機系統
300上運行,計算機系統300可能不同于圖1所示的SIMT計算系統100。
在示例中,計算機系統300可如圖9所示。編譯器310包括分析和預測
模塊311,用于對指令序列(如計算機程序)進行分析(如靜態分析),
從而預測該指令序列中的一條指令為條件性統一指令還是隨線程變化
(thread-varying)(即,非條件性統一)指令。當預測指令在所有的有效
線程上均具有相同的源操作數時,則該指令被預測為條件性統一指令,
因此在所有的有效線程上均具有相同的結果。對于具有N個矢量通道的
系統,有效線程的數量M可滿足N≥M≥1。當M=N時,該指令為統
一指令(條件性統一指令的特例)。

圖3所示的編譯器310還包括寄存器分配器(register allocator)312
和代碼生成模塊313。當分析和預測模塊311完成了對指令序列的分析時,
寄存器分配器312便將寄存器分配至每條指令的源操作數和結果操作數,
而代碼生成模塊313生成可執行的機器代碼。對于被預測為條件性統一
的指令(如指令330),代碼生成模塊313將該指令的“u位”設定為特
定值用以標記該指令用于標量執行。在其它示例中,代碼生成模塊313
可將該指令替換為標量指令(如,虛線框中所述的指令340),該標量指
令被指定為用于標量執行。

圖4為本發明實施例所揭示的分析和預測模塊311所執行的操作的示
例的示意圖。初始時,分析和預測模塊311將所有指令均設定為條件性
統一指令。然后,對于每條指令,分析和預測模塊311進一步判斷是否
存在一個或多個條件使得該指令成為隨線程變化指令(亦即,非條件性
統一指令)。一個條件是當該指令的源操作數是從多個來源來獲取其值時。
在圖4所示的示例中,分析和預測模塊311識別出基本塊410為兩個或
更多分支(例如,分支A和分支B)的目標。基本塊是只有一個入口點
和一個出口點的代碼塊。在該示例中,基本塊410只有一個入口點420
(即語句K3=PHI(K1,K)所在處)和一個出口點430(即END語句處)。
在所識別的基本塊中,分析和預測模塊311進一步識別出具有源操作數
的指令,且該源操作數可從多個分支獲取其值(即,是否從超過一個分
支處獲取操作數);例如,W=K3+3從PHI指令中獲取K3的值,而該PHI
指令同時依賴于分支A和分支B。進入基本塊410之后,有效線程即為
來自分支A的有效線程(如M_a)和來自分支B的有效線程(如M_b)
的合集。當在基本塊410中識別出這樣的指令,且滿足條件:非“M_a
一定為M或M_b一定為M”為真時,分析和預測模塊311將該指令標
記為隨線程變化指令(例如,可通過移除其條件性統一設定)。也就是說,
在某些情形下,分析和預測模塊311能夠檢測出“統一分支”(如“M_a
一定為M或M_b一定為M”)。若分析和預測模塊311確定分支A或者
分支B不是統一分支,且基本塊410中存在類似W=K3+3的指令,那么
該指令即被標記為隨線程變化指令。換言之,如果分支A和分支B均為
統一分支,那么所有有效線程(M)上的PHI指令在運行時要么從分支
A(如,M_a==M和M_b==0)獲取其值,要么從分支B(如,M_b==
M和M_a==0)獲取其值,但是不能同時從分支A和分支B(如,M_a>
1和M_b>1且M_a+M_b==M)中獲取其值。

當指令被識別為隨線程變化時,該指令的結果操作數攜帶隨線程變化
的特性,并依賴于該結果操作數中的值,將該特性傳播至同一基本塊或
后繼基本塊中的其他指令。因此,這些其他指令也被標記為隨線程變化。
可以理解的是,圖4僅僅是示例,可能還存在其他的條件或情形,使得
指令被識別為條件性統一指令。

在某些情形下,編譯器310可能無法確定某指令是否是條件性統一指
令。例如,當作出該判斷的復雜性超過某一閾值,或者該判斷是不可判
定或者不可計算的問題,又或該指令接收或依賴于未知的運行輸入時。
然而,使判定不可行的條件有時也可在運行期間(也可稱為執行期間)
進行解決。在示例中,SIMT計算系統100包括運行時標量化模塊(runtime
scalarizer module)。該模塊為硬件電路的一部分,其在指令獲取之后執行
之前將該指令進行標量化處理。圖5為本發明實施例所揭示的運行時標
量化運行時標量化模塊500的示意圖,其中,運行時標量化模塊500為
圖1所示的線程調度器130的一部分。可以理解的是,在其它實施例中,
運行時標量化模塊500也可位于處理器160中而位于線程調度器130之
外。

在示例中,運行時標量化模塊500識別指令的有效線程的數量,而這
些指令并未由編譯器310標記為用于標量執行。一條指令的有效線程的
數量可通過狀態寄存器指明,例如,通過EXEC寄存器170來指明,該
寄存器具有N位,每個位對應于N個線程中的一個線程。當EXEC位被
設定為某預定數值(如,1)時,則表示相對應的線程為有效線程。

若某指令僅具有一個有效線程,那么運行時標量化模塊500將該指令
標記為用于標量執行,或者直接調度該指令用于標量執行。在此情況下,
對單個線程上的計算進行標量化處理能夠消除對剩余(N-1)個線程所進
行的冗余計算,其對于系統沒有或者只有極小的消耗。若有多個有效線
程,那么運行時標量化模塊500將這些有效線程上的源操作數進行比對,
從而確定其源操作數是否相同。如果這些有效線程上的源操作數均彼此
相同,那么運行時標量化模塊500將標記或者直接調度該指令為用于標
量執行。在示例中,可設定閾值以限制運行時標量化模塊500所比對的
有效線程的數量,因為大量的運行時比對可能會消耗過多的能量和計算
周期。該閾值可為固定閾值,也可由系統管理員進行配置。

若一條指令被編譯器310或者被運行時標量化模塊500標記為用于標
量執行,那么該指令均被調度至標量單元152。在標量單元152執行完標
量操作之后,其標量操作的結果即被傳送至所有有效線程的目標,其中,
有效線程可通過相應的EXEC位來指明。

圖6為本發明實施例所揭示的在SIMT計算系統(如圖1所示的SIMT
計算系統100)中執行多線程指令序列的一種處理方法600的流程圖。方
法600可通過計算機上運行的編譯器(如圖3所示的編譯器310)執行。
在編譯期間,當編譯器對SIMT計算系統的處理器所執行的指令序列進
行分析時,方法600開始執行(方框610)。該處理器包括一個標量單元
和多個矢量單元,標量單元提供一個標量通道用于標量執行,矢量單元
提供N個并行通道用于多個線程上的矢量執行。編譯器預測所分析的指
令序列中一條指令具有(N-M)個空閑線程,并且該指令在M個有效線
程上具有相同的源操作數,其中N>M≥1(方框620)。在完成所述預測
之后,編譯器生成該指令的代碼,用于標量單元進行執行(方框630)。

在示例中,編譯器還預測所分析的指令序列中的第二指令在所有N
個線程上均具有相同的源操作數。對于方框620中被預測的指令以及所
述第二指令,編譯器均可在所生成的代碼中設定指定位(如,“u位”)以
指明用于標量執行。或者,編譯器可將被預測的指令替換為標量指令以
指明為用于標量執行。

圖7為本發明實施例所揭示的在SIMT計算系統(如圖1所示的SIMT
計算系統100)中執行的多線程指令序列的一種處理方法700的流程圖。
方法700可通過SIMT計算系統100執行。當SIMT計算系統(更具體地,
圖5所示的運行時標量化模塊500)在執行時檢測出該指令序列中的一條
指令具有(N-K)個空閑線程,并在SIMT計算系統的處理器中的K個
有效線程上均具有相同的源操作數時,方法700開始執行(方框710)。
該處理器包括一個標量單元和多個矢量單元,標量單元提供一個標量通
道用于標量執行,矢量單元提供N個并行通道,用于N個線程上的矢量
執行,其中,1≤K≤閾值<N。然后,該SIMT計算系統調度該指令用于
標量執行(方框720),以及使用該標量單元執行該指令(方框730)。

圖8為本發明實施例所揭示的在SIMT計算系統(如圖1所示的SIMT
計算系統100)中所執行的一種方法800的流程圖。該SIMT計算系統包
括多個處理器。每個處理器包括一個標量單元和多個矢量單元,標量單
元提供一個標量通道用于標量執行,矢量通道提供N個并行通道用于矢
量執行。該SIMT系統還包括調度器用以調度多個線程至每個處理器。
每個處理器用以在執行時檢測出一條指令已經被編譯器預測其具有
(N-M)個空閑線程,且該指令在M個有效線程上均具有相同的源操作
數,其中N>M≥1(方框810)。該處理器還用以使用標量單元執行該指
令(方框820)。根據本發明的一實施方式,每個處理器進一步用于:在
執行期間,檢測出尚未被預測用于標量執行的第二指令具有一個有效線
程和(N-1)個空閑線程;以及使用標量單元執行所述第二指令。

圖9為計算機系統900的一種示例性形式的機器的示意圖,其中,在
計算機系統900中執行一組指令,該組指令可致使該機器執行本文所討
論的任何一個或多個方法。雖然僅示出一個機器,詞語“機器”還應當
被理解為可包括多個機器(如,計算機)的任意合集,這些機器單獨或
聯合執行一組(或多組)指令以執行本文所討論的方法集之中的任何一
個或多個方法。

計算機系統900包括處理設備902。處理設備902表示一個或多個通
用處理器,也可包括一個或多個專用處理設備。在示例中,處理設備902
可用以執行圖6所示的方法600。

在示例中,處理設備902被耦合至一個或多個存儲設備,例如:主存
儲器904(如,只讀存儲器(ROM)、閃速存儲器、動態隨機存取存儲器
(DRAM)等等),輔助存儲器918(如,磁性數據存儲設備、光磁性數
據存儲設備等等),以及其他形式的計算機可讀介質,其中,上述存儲設
備通過總線或者互聯器930彼此間進行通信。存儲設備還可包括不同形
式的只讀存儲器(ROM)、不同形式的隨機存取存儲器(RAM)、靜態隨
機存取存儲器(SRAM)或者適用于存儲電子指令的任意介質。在示例
中,存儲設備可存儲編譯器310的代碼和數據,編譯器310可處于一個
或多個虛線箱所示的位置處。或者,編譯器310也可處于圖9未示出的
其他位置上。

計算機系統900還可包括網絡接口設備908。編譯器310的部分的或
所有的數據和代碼均可借由網絡接口設備908通過網絡920進行收發。

在示例中,計算機系統900使用計算機可讀介質(也稱為機器可讀介
質、處理器可讀介質或包含有計算機可讀程序代碼的計算機可使用介質)
來存儲和發送(限于內部和/或通過其他電子設備在網絡上進行)代碼(由
軟件指令組成)以及數據。這些計算機可讀介質可為非暫時性真實的計
算機可讀介質(如磁性、光學或電性存儲介質,包括軟盤,只讀形光盤
存儲器(CD-ROM),數字化通用光盤只讀存儲器(DVD-ROM)存儲設
備,閃速存儲器或類似的易失或非易失存儲機制)以及暫時性計算機可
讀傳輸介質(如,電性、光學、聲學或其他形式的傳播信號,如載波或
紅外信號)。在示例中,非暫時性計算機可讀介質存儲編譯器310的指令,
用于計算機系統900的一個或多個處理器進行執行。

圖6-8所示的流程圖中的操作已經參照圖1-5和圖9所示的范例性實
施例進行描述。然而,應當理解的是,圖6-8所示的流程圖中的操作也
可通過本發明的未參照圖6-8進行討論的其他實施例來執行,而參照圖
1-5和圖9所討論的實施例同樣可以執行不同于參照流程圖所討論的操作
的其他操作。雖然圖6-8所示的流程圖顯示了本發明的某些實施例所執
行操作的特定順序,然而,應當理解的是,所示特定順序僅是示例性的,
例如,備選實施例中可按照不同的順序執行這些操作,將特定操作進行
組合,對某些操作進行覆蓋等等。

盡管本發明已經通過若干實施例進行描述,然而,本領域的熟練技術
人員將會認識到,本發明并不限于上面所描述的實施例,而且本發明還
可在不背離所附權利要求的精神和范疇的前提下進行修改和變更進而實
施。因此,本說明書應理解為解釋性質而不是限制性質。

關 鍵 詞:
指令 多線程 計算 系統 及其 方法
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:單指令多線程計算系統及其方法.pdf
鏈接地址:http://www.rgyfuv.icu/p-6100703.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图