本技術(shù)涉及并行計(jì)算領(lǐng)域,尤其涉及對多線程并行訪存請求的處理。
背景技術(shù):
1、本部分的陳述僅僅是為了提供與本技術(shù)的技術(shù)方案有關(guān)的背景信息,以幫助理解,其對于本技術(shù)的技術(shù)方案而言并不一定構(gòu)成現(xiàn)有技術(shù)。
2、通用圖形處理器(general-purpose?graphics?processing?unit,gpgpu)以其強(qiáng)大的并行計(jì)算能力在高性能計(jì)算領(lǐng)域得到了廣泛的應(yīng)用。在gpgpu中通常采用單指令多線程架構(gòu)或單指令多數(shù)據(jù)架構(gòu)來實(shí)現(xiàn)數(shù)據(jù)的并行處理,允許并發(fā)執(zhí)行的多個(gè)線程同時(shí)訪問不同地址的數(shù)據(jù),由此會(huì)同時(shí)產(chǎn)生大量的訪存請求。有效地處理來自多個(gè)線程的訪存請求將會(huì)改善gpgpu芯片的性能。
3、需要說明的是,上述內(nèi)容僅用于幫助理解本技術(shù)的技術(shù)方案,并不作為評價(jià)本技術(shù)的現(xiàn)有技術(shù)的依據(jù)。
技術(shù)實(shí)現(xiàn)思路
1、在本技術(shù)中提供了通過訪存地址壓縮的方式來有效地處理來自多個(gè)線程的訪存請求的解決方案。
2、根據(jù)本技術(shù)實(shí)施例的第一方面,提供了一種用于處理多線程訪存請求的方法,包括:對于為并發(fā)執(zhí)行的多個(gè)線程生成的多個(gè)訪存地址,通過比較相鄰線程的訪存地址從一個(gè)或多個(gè)預(yù)先設(shè)定的模式中選擇預(yù)期模式;根據(jù)所選擇的預(yù)期模式,確定基礎(chǔ)地址并基于該基礎(chǔ)地址計(jì)算所述多個(gè)線程中各個(gè)線程對應(yīng)的期望地址;以及響應(yīng)于確定各個(gè)線程的訪存地址與期望地址相同,為所述多個(gè)線程生成壓縮的訪存請求,所述壓縮的訪存請求中至少包括基礎(chǔ)地址和預(yù)期模式的標(biāo)識(shí)。
3、在一些實(shí)施例中,該方法還可包括響應(yīng)于接收到所述壓縮的訪存請求,根據(jù)該壓縮的訪存請求中包含的基礎(chǔ)地址和預(yù)期模式的標(biāo)識(shí)來確定各線程對應(yīng)的訪存地址。
4、在一些實(shí)施例中,所述壓縮的訪存請求是針對一級高速緩存的請求,其還包括各個(gè)線程的訪存地址中偏移量字段。
5、在一些實(shí)施例中,所述一個(gè)或多個(gè)預(yù)先設(shè)定的模式至少可包括:
6、第一模式:各個(gè)線程的訪存地址相等;
7、第二模式:相鄰線程的訪存地址差值相等;
8、第三模式:相鄰兩個(gè)線程為一組,各組內(nèi)地址差值相同,各組間地址差值也相等,但組內(nèi)地址差值不同于組間地址差值;
9、第四模式:相鄰兩個(gè)線程為一小組,各小組內(nèi)地址差值相同;且每四個(gè)相鄰線程構(gòu)成一個(gè)大組,各個(gè)大組內(nèi)的兩個(gè)小組的組間地址差值也相等,但小組內(nèi)地址差值、小組間地址差值以及相鄰兩個(gè)大組的起始地址之間的差值均不同。
10、在一些實(shí)施例中,所述一個(gè)或多個(gè)預(yù)先設(shè)定的模式還可包括第五模式:各線程的訪存地址有部分相同位;以及所述方法還可包括響應(yīng)于確定所述多個(gè)訪存地址是對于一級高速緩存的地址,直接將選擇第五模式作為預(yù)期模式。
11、在一些實(shí)施例中,所述一個(gè)或多個(gè)預(yù)先設(shè)定的模式還可包括組合模式:各線程的訪存地址分成多個(gè)組,相鄰兩個(gè)組的起始地址之間的差值是相等的,其中一些組內(nèi)的地址符合第二模式,一些組內(nèi)的地址符合第三模式,其余一些組內(nèi)的地址符合第四模式。
12、在一些實(shí)施例中,根據(jù)所選擇的預(yù)期模式,確定基礎(chǔ)地址并基于該基礎(chǔ)地址計(jì)算所述多個(gè)線程中各個(gè)線程對應(yīng)的期望地址包括:
13、預(yù)期模式為第一模式時(shí):從所述多個(gè)訪存地址中選擇任一個(gè)訪存地址作為基礎(chǔ)地址,各線程對應(yīng)的期望地址均設(shè)置為該基礎(chǔ)地址;
14、預(yù)期模式為第二模式時(shí):以第一個(gè)線程的訪存地址為基礎(chǔ)地址,以第一線程與第二線程的地址差值為單位來按序依次遞減或遞減,計(jì)算出各線程對應(yīng)的期望地址;
15、預(yù)期模式為第三模式時(shí):從各線程的訪存地址中選擇最小地址或最大地址作為基礎(chǔ)地址,從該基礎(chǔ)地址開始,以第一線程與第二線程的地址差值為單位構(gòu)建等差序列;并且在所構(gòu)建的等差序列中分別將相鄰的兩個(gè)元素進(jìn)行位置交換,從而得到各線程對應(yīng)的期望地址;
16、預(yù)期模式為第四模式時(shí):從各線程的訪存地址中選擇最小地址或最大地址作為基礎(chǔ)地址,從該基礎(chǔ)地址開始,以第一線程與第二線程的地址差值為單位構(gòu)建等差序列;并且如果第一線程的地址大于第二線程的地址,以兩個(gè)相鄰元素為一組,在所構(gòu)建的等差序列中分別將相鄰的兩個(gè)組進(jìn)行位置交換,從而得到各線程對應(yīng)的期望地址,否則在所構(gòu)建的等差序列中分別將相鄰的兩個(gè)組進(jìn)行位置交換,并在每組內(nèi)將相鄰兩個(gè)元素進(jìn)行交換,從而得到各線程對應(yīng)的期望地址。
17、在一些實(shí)施例中,該方法還可包括判斷所述多個(gè)訪存地址是針對一級高速緩存還是共享內(nèi)存,以及響應(yīng)于確定所述多個(gè)訪存地址是針對一級高速緩存,直接生成壓縮的訪存請求,該壓縮的訪存請求包含一個(gè)公共地址以及各線程訪存地址中的偏移量字段,所述公共地址為各線程訪存地址共有的標(biāo)簽字段和索引字段。
18、根據(jù)本技術(shù)實(shí)施例的第二方面,提供了一種用于處理多線程訪存請求的訪存控制單元,包括地址計(jì)算模塊和模式壓縮模式。其中地址計(jì)算模塊,用于為并發(fā)執(zhí)行的多個(gè)線程生成多個(gè)訪存地址。模式壓縮模塊被配置為執(zhí)行根據(jù)本技術(shù)實(shí)施例的第一方面所述的方法。
19、根據(jù)本技術(shù)實(shí)施例的第三方面,提供了一種通用圖形處理器,包括可并行執(zhí)行的多個(gè)處理單元,其中每個(gè)處理單元包括根據(jù)本技術(shù)實(shí)施例的第二方面所述的訪存控制單元。
20、根據(jù)本技術(shù)實(shí)施例的第四方面,提供了一種包括多個(gè)處理單元的通用圖形處理器,其中所述處理單元包括訪存控制單元和共享內(nèi)存。其中所述訪存控制單元被配置為:對于為多個(gè)線程生成的針對共享內(nèi)存的多個(gè)訪存地址,通過比較相鄰線程的訪存地址從一個(gè)或多個(gè)預(yù)先設(shè)定的模式中選擇預(yù)期模式;根據(jù)所選擇的預(yù)期模式,確定基礎(chǔ)地址并基于該基礎(chǔ)地址計(jì)算所述多個(gè)線程中各個(gè)線程對應(yīng)的期望地址;響應(yīng)于確定各個(gè)線程的訪存地址與期望地址相同,為所述多個(gè)線程生成壓縮的訪存請求,所述壓縮的訪存請求中至少包括基礎(chǔ)地址和預(yù)期模式的標(biāo)識(shí)。以及其中所述共享內(nèi)存的控制器被配置為:響應(yīng)于接收到所述壓縮的訪存請求,根據(jù)該壓縮的訪存請求中包含的基礎(chǔ)地址和預(yù)期模式的標(biāo)識(shí)來確定各線程對應(yīng)的訪存地址。
21、在一些實(shí)施例中,所述處理單元還可包括一級高速緩存,其中所述訪存控制單元還可被配置為:對于為多個(gè)線程生成的針對一級高速緩存的多個(gè)訪存地址,響應(yīng)于確定所述多個(gè)訪存地址具有相同的標(biāo)簽字段和索引字段,生成壓縮的訪存請求,該壓縮的訪存請求包含一個(gè)公共地址以及各線程訪存地址中的偏移量字段,所述公共地址為各線程訪存地址共有的標(biāo)簽字段和索引字段。以及其中所述一級高速緩存的控制器被配置為:響應(yīng)于接收到所述壓縮的訪存請求,根據(jù)該壓縮的訪存請求中包含的公共地址和各線程訪存地址中的偏移量字段,還原出各線程對應(yīng)的訪存地址。
22、在本技術(shù)的實(shí)施例中提供了通過對多個(gè)訪存地址信息進(jìn)行壓縮的方式來處理多個(gè)線程的訪存請求。在計(jì)算出各線程對應(yīng)的訪存地址后,檢測這些訪存地址之間的關(guān)系是否符合一些特定的模式或規(guī)律;如果符合,則可以基于這些模式或規(guī)律對這樣的多個(gè)訪存地址信息進(jìn)行壓縮,從而減少地址信息在傳輸和存儲(chǔ)過程中的資源占用,由此改善了處理器芯片的內(nèi)部資源的利用率。
23、應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本技術(shù)。