專利名稱:指令執(zhí)行控制裝置以及指令執(zhí)行控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多個(gè)線程以同步多線程方式動(dòng)作,通過(guò)亂序處理來(lái)進(jìn)行 指令控制的指令執(zhí)行控制裝置以及指令執(zhí)行控制方法,特別是涉及進(jìn)行 以同步多線程方式動(dòng)作的寄存器文件的讀出控制的指令執(zhí)行控制裝置 以及指令執(zhí)行控制方法。
背景技術(shù):
人們不斷要求CPU(Central Processor Unit)處理的高速化。為此, 歷來(lái)人們就使用各種各樣的技術(shù)提高CPU的處理速度。作為其方法, 有流水線處理、并列進(jìn)行處理的超標(biāo)量體系結(jié)構(gòu)方式以及不是按照程序 指令的順序來(lái)執(zhí)行而是從輸入數(shù)據(jù)已備全的指令開(kāi)始執(zhí)行的亂序執(zhí)行 方式。
亂序執(zhí)行方式是一種在盡管在先的指令處理所需要的數(shù)據(jù)尚未備 全,但在后的指令處理所需要的數(shù)據(jù)已備全的情況下,從在后的指令起 先行執(zhí)行的用于提高CPU的性能的技術(shù)(例如,參照專利文獻(xiàn)1)。
例如,在以程序所記述的順序來(lái)處理指令的情況下,若假設(shè)在先的
指令處理1是伴隨存儲(chǔ)器訪問(wèn)的指令,在后的指令處理2是不伴隨存儲(chǔ) 器訪問(wèn)的指令,則與指令處理1的存儲(chǔ)器訪問(wèn)并列執(zhí)行指令處理2,在 執(zhí)行指令處理2后,執(zhí)行存儲(chǔ)器訪問(wèn)已結(jié)束的指令處理1。
進(jìn)而,人們還提出一種通過(guò)運(yùn)行多個(gè)程序而不是運(yùn)行單一程序,來(lái) 提高CPU的處理速度的多線程方式(例如,參照專利文獻(xiàn)2)。
運(yùn)行多個(gè)程序的多線程方式是如下的結(jié)構(gòu)通過(guò)將CPU的可編程 資源預(yù)先準(zhǔn)備多組,從軟件來(lái)看,則在外表上似乎是多個(gè)CPU,因而 可執(zhí)行多個(gè)程序。
圖16是現(xiàn)有CPU的構(gòu)成圖。CPU具備主存儲(chǔ)lll、指令高速緩存 112、指令解碼器113、保留站114、運(yùn)算執(zhí)行單元115、結(jié)構(gòu)寄存器116。此保留站114從結(jié)構(gòu)寄存器116讀出功能的執(zhí)行所需要的操作數(shù)數(shù)據(jù), 以進(jìn)行運(yùn)算單元115的運(yùn)算處理及主存儲(chǔ)操作數(shù)地址生成處理的控制。
結(jié)構(gòu)寄存器116暫時(shí)存儲(chǔ)操作數(shù)數(shù)據(jù),因作為CPU的一部分要求 與運(yùn)算速度等同的讀出、寫(xiě)入速度,故用巨大的寄存器而不是存儲(chǔ)器所 構(gòu)成。例如,用可使晶體管的量減少并能夠高密度地安裝的寄存器文件 所構(gòu)成。
作為此多線程的方式之一有VMT(Vertical Multi Threading)方式。 此方式是雖然同時(shí)只能一個(gè)程序運(yùn)行,但在發(fā)生長(zhǎng)時(shí)間的數(shù)據(jù)等待時(shí), 或者以一定的時(shí)間間隔等,切換程序來(lái)運(yùn)行。雖然VMT方式的電路量 必須按程序的數(shù)量相應(yīng)地準(zhǔn)備可編程資源,但因?yàn)橥瑫r(shí)1個(gè)程序運(yùn)行故 追加的電路量較少并且實(shí)現(xiàn)容易。
用圖16來(lái)進(jìn)行說(shuō)明,則用每個(gè)線程的結(jié)構(gòu)寄存器構(gòu)成寄存器文件 116,并與程序的切換相應(yīng),將一方的結(jié)構(gòu)寄存器設(shè)定成活動(dòng),將另一 方的結(jié)構(gòu)寄存器設(shè)定成休眠,從與運(yùn)行程序相對(duì)應(yīng)的結(jié)構(gòu)寄存器讀出操 作數(shù)數(shù)據(jù)。
另 一方面,作為另外的多線程方式還有同時(shí)運(yùn)行多個(gè)程序的同步多 線程方式(SMT方式)。這一方式因多個(gè)程序同時(shí)運(yùn)行,故與單一程序運(yùn) 行時(shí)相比,電路的控制變得復(fù)雜,而且資源的增加在預(yù)料之中,但是因 多個(gè)程序同時(shí)運(yùn)行,故可以高效率地使用電路。
在此同步多線程方式下,也是用寄存器文件構(gòu)成多個(gè)線程的結(jié)構(gòu)寄 存器,需要從多個(gè)線程的結(jié)構(gòu)寄存器讀出相應(yīng)線程的操作數(shù)數(shù)據(jù)。
專利文獻(xiàn)1:日本特開(kāi)2007-87108號(hào)公報(bào)
專利文獻(xiàn)2:日本特表2006-502504號(hào)^^才艮(W02004/034209號(hào))
這樣,在同步多線程方式下,因用寄存器文件構(gòu)成多個(gè)線程的結(jié)構(gòu) 寄存器、且同時(shí)運(yùn)行多個(gè)程序,故為了讀出功能的執(zhí)行所需要的操作數(shù) 數(shù)據(jù),與單一線程下的運(yùn)行相比,將會(huì)增加用于對(duì)結(jié)構(gòu)寄存器進(jìn)行選擇 的電路量。另外,在同時(shí)讀出不同線程的操作數(shù)數(shù)據(jù)的情況下,有可能 使電路的布線量增加。因此,與單一線程的情況相比,難以提高寄存器文件的讀出頻率。
據(jù)此,將會(huì)產(chǎn)生如下的問(wèn)題盡管為了使運(yùn)算速度提高而采用亂序方式 和同步多線程方式,但是難于實(shí)現(xiàn)CPU性能的提高。
發(fā)明內(nèi)容
從而,本發(fā)明的目的在于,提供一種指令執(zhí)行控制裝置以及指令執(zhí) 行控制方法,其用于在同步多線程方式的處理中,從構(gòu)成多個(gè)線程的結(jié) 構(gòu)寄存器的寄存器文件中高速地讀出功能的執(zhí)行所需要的操作數(shù)數(shù)據(jù)。
另外,本發(fā)明的其他目的在于,提供一種指令執(zhí)行控制裝置以及指 令執(zhí)行控制方法,其用于即使用寄存器文件構(gòu)成多個(gè)線程的結(jié)構(gòu)寄存 器,也可進(jìn)一步減少用于從寄存器文件進(jìn)行讀出的電路量及布線量的增 加。
進(jìn)而,本發(fā)明的另外的目的在于,提供一種指令執(zhí)行控制裝置以及 指令執(zhí)行控制方法,其用于即使用寄存器文件構(gòu)成多個(gè)線程的結(jié)構(gòu)寄存 器,也可進(jìn)一步減少用于從寄存器文件進(jìn)行讀出的電路量及布線量的增 加,并提高同步多線程處理的頻率。
為了實(shí)現(xiàn)此目的,本發(fā)明的指令執(zhí)行控制裝置,具有保留站,對(duì) 用于處理亂序執(zhí)行的運(yùn)算處理和主存儲(chǔ)操作數(shù)地址生成進(jìn)行控制;寄存 器更新緩沖器,保存通過(guò)功能的執(zhí)行所獲得的數(shù)據(jù),且是不能從程序觀 測(cè)的;寄存器文件,用于多個(gè)線程以同步多線程方式動(dòng)作,其具有按每 個(gè)線程設(shè)置的結(jié)構(gòu)寄存器,和將能夠同時(shí)進(jìn)行讀出的線程數(shù)限制于比結(jié) 構(gòu)寄存器的線程數(shù)少的線程數(shù)的讀出線程選擇電路;以及線程選擇電 路,在通過(guò)上述保留站的項(xiàng)的執(zhí)行從上述寄存器文件讀出操作數(shù)數(shù)據(jù) 時(shí),在上述項(xiàng)的執(zhí)行之前選擇上述項(xiàng)的讀出線程,并控制上述讀出線程 選擇電路,其中,在上述項(xiàng)的運(yùn)算或者執(zhí)行操作數(shù)生成時(shí),從上述線程 選擇電路所選擇的線程的結(jié)構(gòu)寄存器讀出操作數(shù)數(shù)據(jù)。
另外,本發(fā)明的指令執(zhí)行控制方法,其具有如下步驟利用保留站 對(duì)運(yùn)算器以及主存儲(chǔ)操作數(shù)生成器控制亂序執(zhí)行的處理;將通過(guò)上述執(zhí) 行所獲得的數(shù)據(jù)保存在不能從程序觀測(cè)的寄存器更新緩沖器中;當(dāng)通過(guò) 上述保留站的項(xiàng)的執(zhí)行從上述寄存器文件讀出操作數(shù)數(shù)據(jù)時(shí),在上述項(xiàng)的執(zhí)行前選擇上述項(xiàng)的讀出線程;利用上述讀出線程選擇寄存器文件,該寄存器文件具有同步多線程方式的每個(gè)線程的結(jié)構(gòu)寄存器和將能夠同時(shí)進(jìn)行讀出的線程數(shù)限制于比結(jié)構(gòu)寄存器的線程數(shù)少的線程數(shù)的讀出線程選擇電路;以及在上述項(xiàng)的運(yùn)算或者執(zhí)行操作數(shù)生成時(shí),從上述線程選擇電路所選擇的線程的結(jié)構(gòu)寄存器讀出操作數(shù)數(shù)據(jù)。
進(jìn)而,本發(fā)明優(yōu)選,在從上述寄存器更新緩沖器或立即數(shù)寄存器讀出運(yùn)算和操作數(shù)地址生成所需要的操作數(shù)數(shù)據(jù)的情況下,上述保留站不
限制能夠同時(shí)進(jìn)行讀出的線程數(shù)。
進(jìn)而,本發(fā)明優(yōu)選,上述保留站在將通過(guò)利用上述項(xiàng)執(zhí)行指令所獲得的數(shù)據(jù)保存在上述寄存器更新緩沖器中并完成了上述項(xiàng)的指令時(shí),將上述寄存器更新緩沖器的操作數(shù)數(shù)據(jù)保存在上述結(jié)構(gòu)寄存器中。
進(jìn)而,本發(fā)明優(yōu)選,上述保留站,判定上述保留站的項(xiàng)是否需要從上述寄存器文件讀出操作數(shù)數(shù)據(jù)、且判定是否與上述線程選擇電路所選擇的項(xiàng)的線程一致,為了上述執(zhí)行而選擇上述項(xiàng)需要上述讀出且與上述線程相一致的項(xiàng)。
進(jìn)而,本發(fā)明優(yōu)選,上述保留站通過(guò)上述判定,選擇能夠從上述寄存器更新緩沖器讀出功能的執(zhí)行所需要的操作數(shù)數(shù)據(jù)、或能夠使用立即數(shù)的項(xiàng)作為與項(xiàng)的線程無(wú)關(guān)地執(zhí)行的項(xiàng)。
進(jìn)而,本發(fā)明優(yōu)選,上述線程選擇電路檢測(cè)必須將能夠從上述寄存器文件進(jìn)行讀出的線程限定于特定的線程的情況,并選擇上述特定的線程。
進(jìn)而,本發(fā)明優(yōu)選,上述線程選擇電路檢測(cè)無(wú)需將能夠從上述寄存器文件進(jìn)行讀出的線程限定于特定的線程的情況,并利用表示正在進(jìn)行動(dòng)作的線程的信號(hào)來(lái)禁止選擇未進(jìn)行動(dòng)作的線程。
進(jìn)而,本發(fā)明優(yōu)選,上述線程選擇電路檢測(cè)無(wú)需將能夠從上述寄存器文件進(jìn)行讀出的線程限定于特定的線程的情況,并判定正在進(jìn)行動(dòng)作的線程中是否存在處于在保留站的項(xiàng)中一個(gè)都無(wú)法執(zhí)行的狀態(tài)的線程,在判定為存在上述線程時(shí),在存在處于能夠從正在進(jìn)行動(dòng)作的其他線程的項(xiàng)發(fā)出的狀態(tài)的線程的情況下,禁止對(duì)處于一個(gè)都無(wú)法發(fā)出的狀態(tài)的線程的線程選擇。
進(jìn)而,本發(fā)明優(yōu)選,上述線程選擇電路,檢測(cè)無(wú)需將能夠從上述寄存器文件進(jìn)行讀出的線程限定于特定的線程的情況,并判定在保留站的項(xiàng)中是否存在無(wú)法在一定期間完成的指令,在判定為存在上述項(xiàng)的情況下,以一定間隔選擇上述尚未完成的線程的項(xiàng)。
進(jìn)而,本發(fā)明優(yōu)選,上述線程選擇電路,檢測(cè)無(wú)需將能夠從上述寄存器文件進(jìn)行讀出的線程限定于特定的線程的情況,并選擇未被上述線程選擇電路選擇的時(shí)間最長(zhǎng)的線程。
在使多個(gè)線程以同步多線程方式動(dòng)作的情況下,為每個(gè)線程準(zhǔn)備結(jié)構(gòu)寄存器,并在從寄存器文件讀出功能的執(zhí)行所需要的操作數(shù)數(shù)據(jù)時(shí),預(yù)先選擇好從寄存器文件進(jìn)行讀出的線程,所以就能夠在較早的階段進(jìn)行結(jié)構(gòu)寄存器的選擇。雖然增加了用于選擇結(jié)構(gòu)寄存器的部分的電路,但是,能夠通過(guò)選擇進(jìn)行讀出的線程的結(jié)構(gòu)寄存器,來(lái)減少電路的布線
另外,在保留站的項(xiàng)從結(jié)構(gòu)寄存器以外讀出操作數(shù)數(shù)據(jù)的情況下,與從結(jié)構(gòu)寄存器進(jìn)行讀出的情況不同,能夠使所有線程同時(shí)進(jìn)行讀出,能夠不^t同時(shí)進(jìn)行讀出的線程所限制地讀出。
圖l是本發(fā)明的信息處理裝置的一實(shí)施方式之框圖。
圖2是本發(fā)明一實(shí)施方式的指令執(zhí)行控制裝置之構(gòu)成圖。圖3是圖2的指令執(zhí)行控制裝置之詳細(xì)構(gòu)成圖。圖4是圖2的指令執(zhí)行控制裝置的寄存器文件之構(gòu)成圖。圖5是圖4的寄存器文件之說(shuō)明圖。
圖6是圖3的保留站(reservation station )的項(xiàng)的執(zhí)行選擇處理流程圖。
圖7是圖3的項(xiàng)生成電路的項(xiàng)登記時(shí)的執(zhí)行選擇處理流程圖。圖8是基于圖3的指令執(zhí)行控制裝置的結(jié)構(gòu)寄存器(architectureregister)更新處理之i兌明圖。
圖9是圖3的線程選擇電路的線程選擇處理流程圖。
圖IO是基于圖9的項(xiàng)狀態(tài)的線程選擇處理流程圖。
圖11是圖9的完成指令等待時(shí)的線程選擇處理之說(shuō)明圖。
圖12是圖11的線程選擇處理流程圖。
圖13是圖9的第1、第2選擇方法用的線程選擇電路之電路圖。圖14是圖9的第3選擇方法用的線程選擇電路之電路圖。圖15是圖9的第4選擇方法用的線程選擇電路之電路圖。圖16是以往的指令執(zhí)行控制裝置之說(shuō)明圖。附圖標(biāo)記^兌明1指令讀取地址生成器
2 —級(jí)指令高速緩存
3指令緩沖器
4指令解碼器
5、 6、 7、 8保留站
10操作數(shù)地址生成器
12、 15運(yùn)算器
13、 16更新緩沖器
14、 17寄存器20寄存器文件22-0、 22-1結(jié)構(gòu)寄存器24讀出線程選擇電路26操作數(shù)數(shù)據(jù)選擇電路32線程選擇電路34執(zhí)行項(xiàng)選擇電路36寄存器讀出ID緩沖器
具體實(shí)施例方式
下面,以信息處理裝置、指令執(zhí)行控制裝置的整體構(gòu)成、指令執(zhí)行控制裝置、線程選擇電路、其他實(shí)施方式這一順序按照附圖來(lái)說(shuō)明本發(fā)明的實(shí)施方式。但是,本發(fā)明并不限于下述實(shí)施方式,還可以是各種各樣的變形。
(信息處理裝置)
圖l是本發(fā)明的信息處理裝置的一實(shí)施方式的整體圖。如圖l所示那樣,一級(jí)指令高速緩存2、一級(jí)數(shù)據(jù)高速緩存11連接到二次高速緩存,該二次高速緩存與未圖示的主存儲(chǔ)連接。
為了進(jìn)行指令讀取,指令讀取地址生成器l選擇指令地址,并將針對(duì)所選擇的指令地址的指令讀取請(qǐng)求給予一級(jí)指令高速緩存2。從一級(jí)指令高速緩存2讀取的指令被保存在指令緩沖器3中。從指令緩沖器3按程序的順序?qū)χ噶罱獯a器4供給指令。
指令解碼器4按程序的順序進(jìn)行指令解碼。指令解碼器4按照進(jìn)行解碼的指令的種類,對(duì)用于控制指令的執(zhí)行的主存儲(chǔ)操作數(shù)地址生成用保留站單元(RSA:Reservation Station for Address generate)5,定點(diǎn)運(yùn)算用保留站單元(RSE:Reservation Station for Execute)6,浮點(diǎn)運(yùn)算用保留站單元(RSF:Reservation Station for Floating",分支指令用保留站單元(RSBR:Reservation Station for BRanch)8創(chuàng)建所需要的項(xiàng)。
即,指令解碼器4以按序執(zhí)行的方式對(duì)讀取到的指令進(jìn)行解碼,經(jīng)過(guò)解碼的指令根據(jù)指令的種類被分別保存在用于控制功能的執(zhí)行的保
留站單元5、 6、 7、 8、 9中。而且,保留站單元包括運(yùn)算用的保留站單元6、 7和主存儲(chǔ)操作數(shù)地址生成用的保留站單元5。
另外,針對(duì)所有經(jīng)過(guò)解碼的指令,在用于控制指令的完成的提交堆棧項(xiàng)(CSE:Commit Stack Entry)9中創(chuàng)建項(xiàng)。
在經(jīng)過(guò)解碼的指令是加載指令的情況下對(duì)RSA5創(chuàng)建項(xiàng),RSA5指示操作數(shù)地址生成器10生成操作數(shù)地址,并根據(jù)加載指令的種類將對(duì)應(yīng)的數(shù)據(jù)從一級(jí)數(shù)據(jù)高速緩存11讀出到定點(diǎn)更新緩沖器(GUB:GeneralUpdate Buffer)13和浮點(diǎn)更新緩沖器(FUB:Floating Update Buffer)16。
另外,在經(jīng)過(guò)解碼的指令是對(duì)RSE6、 RSF7創(chuàng)建項(xiàng)的情況下,分別使運(yùn)算器12、 15動(dòng)作,并進(jìn)行對(duì)應(yīng)的運(yùn)算處理。在經(jīng)過(guò)解碼的指令是對(duì)RSA5、 RSE6、 RSF7創(chuàng)建項(xiàng)的情況下,通過(guò)進(jìn)行與GUB13和FUB16相對(duì)應(yīng)的寄存器再命名就可以進(jìn)行亂序執(zhí)行,并將執(zhí)行結(jié)果保存在GUB13、 FUB16中。
借助于保留站5、 6、 7,以亂序方式執(zhí)行的指令通過(guò)CSE9的控制按程序的順序進(jìn)行指令的完成。而且,僅僅對(duì)已完成的指令,進(jìn)行定點(diǎn)寄存器14、浮點(diǎn)寄存器17及程序計(jì)時(shí)器(PC、 NEXT—PC)18、 19等可編程資源的更新。
分支預(yù)測(cè)裝置21根據(jù)來(lái)自分支指令用保留站8的指令進(jìn)行分支預(yù)測(cè),并控制指令讀取地址生成器l。
在這里,對(duì)于對(duì)每個(gè)線程準(zhǔn)備的作為可編程資源的結(jié)構(gòu)寄存器的定點(diǎn)寄存器14和浮點(diǎn)寄存器17來(lái)說(shuō),因有許多寄存器故用寄存器文件20來(lái)構(gòu)成。但是,對(duì)于對(duì)每個(gè)線程準(zhǔn)備的作為可編程資源的NEXT程序計(jì)時(shí)器18和程序計(jì)時(shí)器19來(lái)說(shuō),因是較小寄存器故被安裝而不使用寄存器文件。
從而,如后述那樣,借助于保留站單元5、 6、 7、 8,對(duì)每個(gè)運(yùn)算周期選擇線程,并指示操作數(shù)地址生成器10、運(yùn)算器12、 15執(zhí)行所選擇的線程的項(xiàng),且從寄存器文件20進(jìn)行所選擇線程的操作數(shù)數(shù)據(jù)的讀出、寫(xiě)入,執(zhí)行同步多線程處理。(指令執(zhí)行控制裝置的整體構(gòu)成)
圖2是本發(fā)明的指令執(zhí)行控制裝置的一實(shí)施方式的框圖,表示圖1的RSE5、 RSE6、 RSF7以及寄存器文件20的詳細(xì)圖。
在此實(shí)施方式中,對(duì)兩個(gè)線程(線程0和l)同時(shí)動(dòng)作的情況進(jìn)行說(shuō)明,但即便線程數(shù)為3個(gè)以上也可以實(shí)現(xiàn)。
圖2中,與圖l所示相同的部分用相同的記號(hào)來(lái)表示,保留站單元5、 6、 7被連接到線程選擇電路32、和執(zhí)行項(xiàng)選擇電路34。
線程0和1共享此保留站單元5、 6、 7的項(xiàng)而使用。即,項(xiàng)保存著
表示項(xiàng)的線程的線程ID,表示從結(jié)構(gòu)寄存器讀出操作數(shù)數(shù)據(jù)的信號(hào)和
讀出地址,表示從寄存器更新緩沖器進(jìn)行讀出的信號(hào)和讀出地址,表示在指令解碼時(shí)對(duì)每個(gè)指令所分配的指令編號(hào)的指令標(biāo)識(shí)符等。
兩個(gè)線程的結(jié)構(gòu)寄存器22-0、 22-1,由可以同時(shí)進(jìn)行讀出的線程和可以同時(shí)進(jìn)行寫(xiě)入的線程成為一個(gè)的寄存器文件20所構(gòu)成。讀出線程和寫(xiě)入線程不需要是同一線程。
如圖2所示那樣,寄存器文件20由線程0和1的結(jié)構(gòu)寄存器22-0、22-1、讀出線程選擇電路24、讀出操作數(shù)選擇電路26所構(gòu)成。
線程選擇電路32選擇讀出線程,并將讀出線程ID發(fā)送給讀出線程選擇電路24。讀出線程選擇電路24選擇讀出線程ID所指的線程的結(jié)構(gòu)寄存器22-0、 22-1。而且,將執(zhí)行項(xiàng)中所含的讀出地址從執(zhí)行項(xiàng)選擇電路34發(fā)給讀出操作數(shù)數(shù)據(jù)選擇電路26。
讀出操作數(shù)數(shù)據(jù)選擇電路26按照讀出地址,讀出功能的執(zhí)行電路10、 12、 15所需要的部分的數(shù)據(jù),并使用于功能的執(zhí)行中。執(zhí)行項(xiàng)選擇電路34從保留站選擇要執(zhí)行的項(xiàng),已被選擇的項(xiàng)從寄存器文件20、寄存器更新緩沖器13、 16、立即數(shù)寄存器(immediate value register ) 28讀出功能的執(zhí)行所需要的部分的數(shù)據(jù),進(jìn)行功能的執(zhí)行。
對(duì)這一動(dòng)作進(jìn)行說(shuō)明。在多個(gè)線程以同步多線程方式動(dòng)作的情況下,在線程間共享保留站5、 6、 7的項(xiàng)構(gòu)成。而且,為每個(gè)線程準(zhǔn)備結(jié)構(gòu)寄存器22-0、 22-1,并由寄存器文件20所構(gòu)成。在從寄存器文件20讀出功能的執(zhí)行所需要的操作數(shù)數(shù)據(jù)的情況下, 根據(jù)線程選擇電路32的寄存器讀出ID預(yù)先選擇好從寄存器文件20進(jìn) 行讀出的線程。進(jìn)而,將進(jìn)行讀出的線程的數(shù)量限制于比結(jié)構(gòu)寄存器 22-0、 22-1的線程數(shù)少的線程數(shù)。
通過(guò)預(yù)先決定進(jìn)行讀出的線程,寄存器文件20能夠在執(zhí)行項(xiàng)選擇 電路34選擇執(zhí)行項(xiàng)以前的較早的階段進(jìn)行結(jié)構(gòu)寄存器22-0、 22-1的選 擇。
雖然增加了選擇結(jié)構(gòu)寄存器22-0、 22-1的部分電路24,但是通過(guò)進(jìn) 行對(duì)進(jìn)行讀出的線程的結(jié)構(gòu)寄存器的選擇能夠減少電路的配線量。由 此,在進(jìn)行功能的執(zhí)行時(shí),在操作數(shù)選擇42、 48中選擇執(zhí)行所需要數(shù) 據(jù),但是,在設(shè)成不進(jìn)行對(duì)進(jìn)行讀出的線程的結(jié)構(gòu)寄存器的選擇時(shí),將 線程量的操作數(shù)數(shù)據(jù)從結(jié)構(gòu)寄存器發(fā)送給操作數(shù)選擇42、 48。通過(guò)選擇 進(jìn)行讀出的線程的結(jié)構(gòu)寄存器,能夠減少對(duì)操作數(shù)選擇42、 48進(jìn)行發(fā) 送的布線量。
這樣,通過(guò)預(yù)先決定從寄存器文件20進(jìn)行讀出的線程,就可以高 效率地從寄存器文件20讀出所需要的操作數(shù)數(shù)據(jù),在使用了比以往的 半導(dǎo)體技術(shù)好的半導(dǎo)體的情況下就有可能超過(guò)以往的頻率。
線程選擇電路32預(yù)先選擇用于從寄存器文件20進(jìn)行讀出的線程。 在執(zhí)行不同的功能的保留站、例如RSA5、 RSE6從同一寄存器文件20 讀出操作數(shù)數(shù)據(jù)的情況下,通過(guò)寄存器文件20所具備的線程選擇電路 24來(lái)進(jìn)行讀出控制,所以保留站5、 6執(zhí)行的項(xiàng)從寄存器文件20讀出操 作數(shù)數(shù)據(jù)時(shí)的線程就成為同一線程。
另外,在保留站單元5、 6、 7的項(xiàng),從結(jié)構(gòu)寄存器22-0、 22-1以外 讀出操作數(shù)數(shù)據(jù)的情況下,與從結(jié)構(gòu)寄存器進(jìn)行讀出的情況不同,所有 的線程能夠在同時(shí)進(jìn)行讀出。
即,在結(jié)構(gòu)寄存器22-0、 22-1以外,對(duì)通過(guò)功能的執(zhí)行所獲得的數(shù) 據(jù),使用從程序不能觀測(cè)的由工作寄存器所構(gòu)成的寄存器更新緩沖器 13、 16和立即數(shù)寄存器28。在將這些寄存器數(shù)據(jù)作為操作數(shù)數(shù)據(jù)而使 用的情況下,同時(shí)進(jìn)行讀出的線程就能夠沒(méi)有限制地讀出。(指令執(zhí)行控制裝置)
詳細(xì)地說(shuō)明圖2的指令執(zhí)行控制裝置。圖3是圖2的保留站之框圖, 圖4是圖2的寄存器文件以及功能執(zhí)行電路之框圖,圖5是圖4的寄存 器文件之說(shuō)明圖,圖6是圖3的保留站的項(xiàng)的執(zhí)行選擇動(dòng)作之說(shuō)明圖, 圖7是圖3的項(xiàng)生成電路的項(xiàng)登記時(shí)的動(dòng)作說(shuō)明圖。
圖3至圖7表示除圖1的浮點(diǎn)用保留站單元7外的rsa5、 rse6 的功能塊。此外,圖1的浮點(diǎn)用保留站單元7也是同樣的構(gòu)成,另行持 有同樣的寄存器文件。但是,由于不具備cwr和crb,所以從結(jié)構(gòu)寄 存器(浮點(diǎn)寄存器17)的寄存器文件讀出功能的執(zhí)行所需要的操作數(shù)數(shù) 據(jù)以進(jìn)行功能的執(zhí)行。
如圖3所示那樣,運(yùn)算用保留站單元6具有項(xiàng)生成電路60、運(yùn)算用 保留站62、執(zhí)行項(xiàng)選擇電路64。
同樣,主存儲(chǔ)操作數(shù)生成用保留站單元5具有項(xiàng)生成電路50、主存 儲(chǔ)操作數(shù)生成用保留站52、執(zhí)行項(xiàng)選擇電路54。
作為線程選擇方法之一,線程選擇電路32接受由指令解碼器4解 碼的指令的線程id,如后述那樣選擇線程,并將選擇線程通知給項(xiàng)生 成電路50、 60、保留站52、 62、寄存器讀出id緩沖器36。
保留站52、 62如用圖6所說(shuō)明的那樣,為了實(shí)現(xiàn)以亂序方式的執(zhí) 行,在各周期接受來(lái)自線程選擇電路32的選擇線程id,并對(duì)項(xiàng)賦予優(yōu) 先級(jí)以便從已準(zhǔn)備好所需要的操作數(shù)數(shù)據(jù)的項(xiàng)開(kāi)始執(zhí)行。
執(zhí)行項(xiàng)選擇電路54、 64從保留站52、 62所登記的項(xiàng)選擇將要執(zhí)行 的項(xiàng),并輸出至運(yùn)算器12等。在同時(shí)有若干的已做好執(zhí)行準(zhǔn)備的項(xiàng)的 情況下,執(zhí)行項(xiàng)選擇電路54、 64從較舊的項(xiàng)起按順序來(lái)選擇并執(zhí)行。
同樣,項(xiàng)生成電路60如圖7所說(shuō)明的那樣,在向保留站52、 62登 記項(xiàng)的階段,接受來(lái)自線程選擇電路32的選擇線程id,并對(duì)項(xiàng)賦予優(yōu) 先級(jí)以便從已準(zhǔn)備好所需要的操作數(shù)數(shù)據(jù)的項(xiàng)開(kāi)始執(zhí)行。
為了進(jìn)行此優(yōu)先級(jí)控制,線程選擇電路32在執(zhí)行項(xiàng)選擇電路54、 64對(duì)保留站52、 62的項(xiàng)進(jìn)行選擇的一周期前,選擇線程。此選擇線程ID通過(guò)寄存器讀出ID緩沖器36被發(fā)送給寄存器文件20,于是,寄存 器文件20的進(jìn)行讀出的線程被預(yù)先決定。
因此,就能夠在執(zhí)行項(xiàng)選擇電路54、 64選擇執(zhí)行項(xiàng)以前的較早階 段,進(jìn)行結(jié)構(gòu)寄存器22-0、 22-1的選擇。
借助于圖6來(lái)說(shuō)明保留站52、 62的項(xiàng)的執(zhí)行選擇動(dòng)作。保留站52、 62針對(duì)已經(jīng)登記的有效項(xiàng),檢查該項(xiàng)是否為從結(jié)構(gòu)寄存器讀出執(zhí)行所需 要的操作數(shù)數(shù)據(jù)的項(xiàng)(SIO)。
在判定為該項(xiàng)是從結(jié)構(gòu)寄存器讀出操作數(shù)數(shù)據(jù)的項(xiàng)的情況下,在執(zhí) 行項(xiàng)選擇電路54、 64的一周期前的周期,判定該項(xiàng)的ID是否是與線程 選擇電路32所選擇的線程的ID相一致的項(xiàng)(S12),該線程選擇電路32 是選擇從寄存器文件進(jìn)行讀出的線程的電路。
當(dāng)在步驟S12判定為該項(xiàng)ID與所選擇的線程的ID相一致的情況 下,判定為是具有在下一周期被執(zhí)行項(xiàng)選擇電路54、 64選擇的可能性 的項(xiàng),并對(duì)該項(xiàng)附加標(biāo)i己"1" (S14)。
另一方面,在判定為該項(xiàng)的ID與所選擇的線程的ID不一致的情況 下,判定為該項(xiàng)是沒(méi)有在下一周期被執(zhí)行項(xiàng)選擇電路54、 64選擇的可 能性的項(xiàng),并將該項(xiàng)的標(biāo)記^L為"0" (S16)。
當(dāng)在步驟SIO中判定為是從結(jié)構(gòu)寄存器以外的寄存器更新緩沖器讀 出執(zhí)行所需要的操作數(shù)數(shù)據(jù)的情況或是使用立即數(shù)的項(xiàng)的情況下,能夠 與保留站52、 62的項(xiàng)的線程無(wú)關(guān)地進(jìn)行執(zhí)行。因此,保留站52、 62判 定是否是做好執(zhí)行的準(zhǔn)備的項(xiàng)(S18)。
在判定為是做好執(zhí)行的準(zhǔn)備的項(xiàng)的情況下,判定為是具有在下一周 期被執(zhí)行項(xiàng)選擇電路54、 64選擇的可能性的項(xiàng),對(duì)該項(xiàng)附加標(biāo)記'T, (S14)。
在判定為是尚未做好執(zhí)行的準(zhǔn)備的項(xiàng)的情況下,判定為是沒(méi)有在下 一周期,皮執(zhí)行項(xiàng)選擇電路54、 64選擇的可能性的項(xiàng),對(duì)該項(xiàng)附加標(biāo)記 "0" (S16)。
這樣,檢查保留站52、 62所登記的項(xiàng)是否是從寄存器文件讀出操作數(shù)數(shù)據(jù)的項(xiàng),若判定為是進(jìn)行讀出的項(xiàng)則檢查是否是選擇線程的項(xiàng), 若是選擇線程的項(xiàng)則作為具有在下一周期被選擇執(zhí)行的可能性的項(xiàng)來(lái) 識(shí)別。
因此,就能夠在下一周期由執(zhí)行項(xiàng)選擇電路54、 64選擇并執(zhí)行。 據(jù)此,即使利用線程ID在先選擇了結(jié)構(gòu)寄存器,由于與在下一周期被 執(zhí)行的項(xiàng)一致,而能夠平滑地執(zhí)行同步多線程方式。
若以多級(jí)進(jìn)行這種優(yōu)先級(jí)附加,則可以更快地進(jìn)行寄存器文件的選 擇。例如,適合于圖4、圖8所說(shuō)明的當(dāng)前窗口方式。
借助于圖7利用項(xiàng)生成電路50、 60來(lái)說(shuō)明優(yōu)先級(jí)附加動(dòng)作。圖7 是指令被解碼且項(xiàng)生成電路50、 60在保留站52、 62登記新的項(xiàng)的周期 的項(xiàng)選擇動(dòng)作。當(dāng)項(xiàng)生成電路50、 60從指令解碼器4接受了在保留站 52、 62創(chuàng)建項(xiàng)的指令時(shí),則檢查將要登記的項(xiàng)是否為從結(jié)構(gòu)寄存器讀出 執(zhí)行所需要的操作數(shù)數(shù)據(jù)的項(xiàng)(S20)。
在判定為該項(xiàng)是從結(jié)構(gòu)寄存器讀出操作數(shù)數(shù)據(jù)的項(xiàng)的情況下,在此 周期判定該項(xiàng)的ID是否是與線程選擇電路32所選擇的線程的ID相一 致的項(xiàng)(S22),該線程選擇電路32是選擇從寄存器文件進(jìn)行讀出的線程 的電路。
當(dāng)在步驟S22中判定為該項(xiàng)ID與所選擇的線程的ID相一致的情況 下,判定為是具有在下一周期被執(zhí)行項(xiàng)選擇電路54、 64選擇的可能性 的項(xiàng),并對(duì)該項(xiàng)附加標(biāo)記"1" (S24)。
另一方面,在判定為該項(xiàng)ID與所選擇的線程的ID不一致的情況下, 判定為該項(xiàng)是沒(méi)有在下一周期被執(zhí)行項(xiàng)選擇電路54、 64選擇的可能性 的項(xiàng),并將該項(xiàng)的標(biāo)記i殳為"0" (S26)。
當(dāng)在步驟S20中判定為是從結(jié)構(gòu)寄存器以外的寄存器更新緩沖器讀 出執(zhí)行所需要的操作數(shù)數(shù)據(jù)的情況或者是使用立即數(shù)的項(xiàng)的情況下,能 夠與要登記的項(xiàng)的線程無(wú)關(guān)地進(jìn)行執(zhí)行。因此,項(xiàng)生成電路50、 60判 定是否是做好執(zhí)行準(zhǔn)備的項(xiàng)(S28)。
在判定為是做好執(zhí)行準(zhǔn)備的項(xiàng)的情況下,判定為是具有在下一周期被執(zhí)行項(xiàng)選擇電路54、 64選擇的可能性的項(xiàng),并對(duì)該項(xiàng)附加標(biāo)記"1" (S24)。
在判定為是尚未做好執(zhí)行的準(zhǔn)備的項(xiàng)的情況下,判定為是沒(méi)有在下 一周期被執(zhí)行項(xiàng)選擇電路54、 64選擇的可能性的項(xiàng),并對(duì)該項(xiàng)附加標(biāo) 記"0" (S26)。
這樣,項(xiàng)生成電路50、 60在向保留站52、 62對(duì)項(xiàng)進(jìn)行登記的周期, 檢查進(jìn)行登記的項(xiàng)是否是從寄存器文件讀出操作數(shù)數(shù)據(jù)的項(xiàng),若判定為 是進(jìn)行讀出的項(xiàng),則檢查是否是選擇線程的項(xiàng),若是選擇線程的項(xiàng)則作 為具有在下一周期被選擇執(zhí)行的可能性的項(xiàng)來(lái)識(shí)別。
因此,能夠在下一周期被執(zhí)行項(xiàng)選擇電路54、 64選擇并執(zhí)行。據(jù) 此,即使利用線程ID在先選擇了結(jié)構(gòu)寄存器,由于與在下一周期被執(zhí) 行的項(xiàng)一致,而能夠平滑地執(zhí)行同步多線程方式。
接著,借助于圖5來(lái)說(shuō)明亂序方式的寄存器文件20的結(jié)構(gòu)寄存器 的寄存器構(gòu)成。為每個(gè)線程準(zhǔn)備的結(jié)構(gòu)寄存器22-0、 22-1由巨大的寄存 器所構(gòu)成。
另一方面,此結(jié)構(gòu)寄存器之內(nèi)的、執(zhí)行指令所需要的寄存器的地方 被限定于為每個(gè)線程準(zhǔn)備的當(dāng)前窗口指針(CWP)所指的部分。因此,將 從結(jié)構(gòu)寄存器22A復(fù)制了當(dāng)前窗口指針(CWP)所指的寄存器部分而得 到的部分,保存在當(dāng)前窗口寄存器(CWR)22C中。
為了從結(jié)構(gòu)寄存器22A復(fù)制到CWR22C,在從結(jié)構(gòu)寄存器22A暫 時(shí)保存在CWR置換緩沖器(CRB)22B以后保存在CWR22C中。
在當(dāng)前窗口指針(CWP)的寄存器部分被保存到CWR22C時(shí),在 CRB22B中保存當(dāng)前窗口指針(CWP)的前后1個(gè)的寄存器的一個(gè)部分。 例如,在當(dāng)前窗口指針CWP=1的情況下,CWR22C保存結(jié)構(gòu)寄存器 22A的CWP=1的3個(gè)塊,CRB22B保存結(jié)構(gòu)寄存器22A的CWP-O之 上的兩個(gè)塊或者CWP=2之下的兩個(gè)塊。
為每個(gè)線程準(zhǔn)備CWR22C和CRB22B,與結(jié)構(gòu)寄存器22A同樣地 由可以同時(shí)進(jìn)行讀出的線程為一個(gè)的寄存器文件所構(gòu)成。自保留站5、 6、 7從結(jié)構(gòu)寄存器22讀出所需要的操作數(shù)數(shù)據(jù),包 括從CWR22C讀出操作數(shù)數(shù)據(jù)。但是,也有時(shí)在變更當(dāng)前窗口指針的 指令(例如SAVE、 RESTORE指令等)正在執(zhí)行的期間,從CRB22B讀 出操作數(shù)數(shù)據(jù)。
相對(duì)于巨大的結(jié)構(gòu)寄存器,借助于這種寄存器構(gòu)成,能夠在亂序指 令執(zhí)行方式中提高數(shù)據(jù)讀取的吞吐量,并且能夠減少寄存器量(例如、 參照日本特開(kāi)2007-87108號(hào)公報(bào))。
在圖4中表示這種寄存器文件的構(gòu)成例中的基于操作數(shù)數(shù)據(jù)的功能 執(zhí)行用的框圖。在圖4中,與圖2、圖3、圖5所示部件相同的部分用 同一記號(hào)來(lái)表示。
如圖4所示,寄存器文件20如圖5所說(shuō)明的那樣具有每個(gè)線程的 結(jié)構(gòu)寄存器22-0A、 22-lA、每個(gè)線程的CRB22-0B、 22-1B和每個(gè)線程 的CWR22-0C、 22-lC。 CRB22-0B、 22-1B分別具備讀出線程選擇電路 24和讀出操作數(shù)數(shù)據(jù)選擇電路26。同樣地CWR22-0C、 22-1C分別具 備讀出線程選擇電路24和讀出操作數(shù)數(shù)據(jù)選擇電路26。
而且,寄存器讀出線程ID緩沖器36的寄存器讀出線程ID被提供 給CRB22-0B、 22-lB、 CWR22-0C、 22-1C各自的讀出線程選擇電路 24。另外,來(lái)自執(zhí)行項(xiàng)選擇電路54的選擇項(xiàng)(包含操作數(shù)地址)被分別提 供給CRB22-0B、 22-lB、 CWR22-0C、 22-lC、寄存器更新緩沖器13、 立即數(shù)寄存器28和閂鎖電路46。
進(jìn)而,來(lái)自執(zhí)行項(xiàng)選擇電路64的選擇項(xiàng)(包含操作數(shù)地址)被分別 提供給CRB22-0B、 221B、 CWR22-0C、 22-lC、寄存器更新緩沖器13、 立即數(shù)寄存器28和閂鎖電路40。
因此,按照寄存器讀出ID和由執(zhí)行項(xiàng)選擇電路54、 64所選擇的 項(xiàng),從CWR22-0C、 221C、 CRB22-0B、 22-lB、寄存器更新緩沖器13、 立即數(shù)28之中讀出操作數(shù)數(shù)據(jù)。而且,操作數(shù)選擇電路42、 48從這些 操作數(shù)數(shù)據(jù)中選擇功能的執(zhí)行所需要的操作數(shù)數(shù)據(jù),并經(jīng)由閂鎖電路 44、 49,提供給運(yùn)算器12或者操作數(shù)地址生成器10,并執(zhí)行由項(xiàng)指定 的功能。在此情況下也是在項(xiàng)的選擇周期前選擇線程ID,并利用線程ID 來(lái)選擇CRB22-0B或者CRB22-1B的任意一個(gè)、CWR22-0C或者22-1C 的任意一個(gè),所以能夠通過(guò)項(xiàng)的選擇直接讀出所指定的操作數(shù)數(shù)據(jù)。
另外,在從該寄存器更新緩沖器13讀出執(zhí)行所需要的操作數(shù)數(shù)據(jù) 的情況下,能夠使用寄存器更新緩沖器13的項(xiàng)地址來(lái)進(jìn)行讀出。因此, 就能夠同時(shí)讀出不同線程的操作數(shù)數(shù)據(jù)。
從而,在保留站5、 6的項(xiàng)執(zhí)行包含將功能的執(zhí)行所需要的操作數(shù) 數(shù)據(jù)從寄存器更新緩沖器13進(jìn)行讀出的項(xiàng)的情況下,與從結(jié)構(gòu)寄存器 22-0A(22-lA)進(jìn)行讀出同樣地,能夠在每周期由執(zhí)行項(xiàng)選擇電路54、 64 選擇已做好執(zhí)行準(zhǔn)備的項(xiàng),而無(wú)需限制于從寄存器文件22進(jìn)行讀出的 線程ID。
接著,借助于圖8來(lái)說(shuō)明從功能的執(zhí)行開(kāi)始到結(jié)構(gòu)寄存器的更新 處理。對(duì)于基于運(yùn)算器12和操作數(shù)地址生成器10的功能的執(zhí)行,可以 從結(jié)構(gòu)寄存器22-0A、 22-1A以外的寄存器更新緩沖器13進(jìn)行操作數(shù)數(shù) 據(jù)讀出,或者使用立即數(shù)28來(lái)執(zhí)行。
如圖8所示那樣,寄存器更新緩沖器13是保存通過(guò)功能的執(zhí)行所 獲得的結(jié)果的數(shù)據(jù)的不能從程序觀測(cè)的寄存器,能夠由線程0和l共享 來(lái)使用項(xiàng)。
被寫(xiě)入寄存器更新緩沖器13的執(zhí)行結(jié)果數(shù)據(jù)在寄存器更新緩沖 器13上保持,直到所執(zhí)行的指令完成為止。而且,在指令已完成時(shí)(從 圖1的CSE9已發(fā)出指令完成時(shí)),進(jìn) 行從寄存器更新緩沖器13讀出數(shù) 據(jù)并將數(shù)據(jù)寫(xiě)入結(jié)構(gòu)寄存器22-0A(22-lA)和CWR22-0C(22-1C)的處理。
對(duì)于后續(xù)的指令,能夠通過(guò)從寄存器更新緩沖器13讀出操作數(shù)數(shù) 據(jù)來(lái)進(jìn)行功能的執(zhí)行,直到功能的執(zhí)行的結(jié)果被寫(xiě)入結(jié)構(gòu)寄存器 22-0A(22-l A)為止(從指令執(zhí)行直到完成的期間)。
(線程選擇電路)
接著,說(shuō)明上述的用于選擇線程的線程選擇電路32。圖9是線程選 擇電路32的線程選擇方法之說(shuō)明圖,圖10是圖9的第3選擇方法之說(shuō)明圖,圖11、圖12是圖9的第4選擇方法之說(shuō)明圖,圖13至圖15是 線程選擇電路32之電路圖。
如圖9所示那樣,寄存器讀出ID的線程選擇電路32的選擇方法 有四種,若符合此選擇條件則決定了下一周期寄存器讀出ID。在不符 合四種選擇條件的情況下,對(duì)下一周期的寄存器讀出ID選擇寄存器讀 出ID的相反(opposite)的線程(S38)。
首先,第1選擇方法判定是否需要限定線程(S30)。此第1選擇方 法是在線程選擇電路32中最優(yōu)先的選擇,在需要限定線程的情況下, 線程選擇電路32務(wù)必選擇進(jìn)行限定的線程。所謂需要限定寄存器的讀 出線程的情況是指當(dāng)前窗口指針已被變更時(shí)。
即,如圖5所說(shuō)明的那樣,在當(dāng)前窗口指針CWP已被重新變更 時(shí),從結(jié)構(gòu)寄存器22A讀出存在變更的線程的當(dāng)前窗口指針和前后指針 所指的寄存器部分。
而且,通過(guò)寫(xiě)入CRB22B、從CRB22B讀出并寫(xiě)入CWR22C,能 夠準(zhǔn)備新的窗口指針的CWR22C。
在從當(dāng)前窗口指針CWP被變更起直到設(shè)成為新的窗口指針狀態(tài) 的寄存器的移動(dòng)處理過(guò)程中,對(duì)于進(jìn)行結(jié)構(gòu)寄存器22A的讀出、CRB22B 的讀出和寫(xiě)入、以及向CWR22C的寫(xiě)入的線程,變更了當(dāng)前窗口指針 的線程被優(yōu)先。因此,能夠進(jìn)行寄存器文件22讀寫(xiě)的線程被限制于變 更當(dāng)前窗口指針的線程。
從而,在寄存器的移動(dòng)處理過(guò)程中,需要使寄存器移動(dòng)處理過(guò)程 中的線程和由線程選擇電路32選擇的線程相一致,該線程選擇電路32 是選擇從寄存器文件22進(jìn)行讀出的線程的電路。此外,寄存器的移動(dòng) 處理被控制成,同時(shí)僅一個(gè)線程可以進(jìn)行處理,兩個(gè)線程無(wú)法同時(shí)進(jìn)行 處理。
這樣,在寄存器移動(dòng)處理過(guò)程中的寄存器文件22的讀寫(xiě)線程被限 制的期間,以線程選擇電路32務(wù)必選擇與寄存器移動(dòng)處理過(guò)程中的線 程相同的線程的方式進(jìn)行控制。因此,作為保留站的要執(zhí)行的項(xiàng)的、且 為從結(jié)構(gòu)寄存器22讀出操作數(shù)數(shù)據(jù)的項(xiàng),與寄存器移動(dòng)處理過(guò)程中的線程一致。這樣,寄存器移動(dòng)處理過(guò)程中的線程選擇電路32就以限定 于寄存器移動(dòng)處理過(guò)程中的線程進(jìn)行選擇的方式而動(dòng)作。
另外,在正在執(zhí)行用于變更當(dāng)前窗口指針CWP的指令的中途的 處理中,在從結(jié)構(gòu)寄存器讀出操作數(shù)數(shù)據(jù)的情況下,有時(shí)由保留站從 CRB22B讀出操作數(shù)數(shù)據(jù),直到當(dāng)前窗口指針CWP被變更為止。
此時(shí),在相反的線程變更當(dāng)前窗口指針,讀寫(xiě)CRB22B、 CWR22C 的線程限制當(dāng)前窗口指針CWP時(shí),線程選擇電路32選擇正在變更當(dāng) 前窗口指針的線程以使得在從保留站執(zhí)行變更當(dāng)前窗口指針的指令的 過(guò)程中,不會(huì)從CRB22B讀出操作數(shù)數(shù)據(jù)。
接著,不將線程限定于特定的線程時(shí)的線程選擇方法有3種。不 將線程不限定于特定的線程時(shí)的第1選擇方法(第2選擇方法)是線程選 擇電路32在正在動(dòng)作的線程為單一線程時(shí),選擇正在動(dòng)作的線程(S32)。
不將線程限定于特定的線程時(shí)的第2選擇方法(第3選擇方法)是 當(dāng)存在無(wú)法發(fā)出的項(xiàng)的情況下,選擇與無(wú)法發(fā)出的線程相反的線程的方 法(S34)。即、在運(yùn)算用和主存儲(chǔ)操作數(shù)地址生成用的保留站52、 62的 項(xiàng)中至少存在一個(gè)可以執(zhí)行的狀態(tài)的項(xiàng)時(shí),在相反的線程處于連一個(gè)都 不能執(zhí)行的狀態(tài)時(shí),選擇至少存在一個(gè)可以執(zhí)行的狀態(tài)的線程。
借助于圖10,詳細(xì)地說(shuō)明第3選擇方法。
保留站52、 62的項(xiàng)可以執(zhí)行的狀態(tài)是指,按線程不同而不同,處 于項(xiàng)有效且未實(shí)施互鎖的狀態(tài),或者是盡管項(xiàng)為無(wú)效狀態(tài)但在下一周期 項(xiàng)有可能變成有效的狀態(tài)。
在保留站52、 62的項(xiàng)中,具有即便在做好項(xiàng)執(zhí)行準(zhǔn)備的情況下也 能夠控制成無(wú)法執(zhí)行(互鎖)的信息,作為項(xiàng)的一個(gè)信號(hào)。
一旦設(shè)置了此信號(hào),該項(xiàng)就成為無(wú)法執(zhí)行的狀態(tài)而不會(huì)被執(zhí)行項(xiàng) 選擇電路54、 64選擇,若被復(fù)位,則可以執(zhí)行,被執(zhí)行項(xiàng)選擇電路54、 64選擇。
若檢測(cè)到線程0的項(xiàng)有效且未實(shí)施互鎖的狀態(tài)、或者是盡管項(xiàng)為 無(wú)效狀態(tài)但在下一周期項(xiàng)有可能變成有效的狀態(tài),則判定是線程l的項(xiàng)有效且未實(shí)施互鎖的狀態(tài)、還是盡管項(xiàng)為無(wú)效狀態(tài)但在下一周期項(xiàng)有可
能變成有效的狀態(tài)(S40)。而且,在線程l的項(xiàng)有效且沒(méi)有互鎖,或者項(xiàng) 有可能變成有效的情況下(是),不用此第3選擇方法進(jìn)行線程選擇。
接著,在線程l的項(xiàng)并非有效、有互鎖或者項(xiàng)沒(méi)有可能變成有效 的情況下(否),判定是否已對(duì)線程0發(fā)出了將線程的項(xiàng)全部清零的信號(hào), 對(duì)于已發(fā)出了進(jìn)行清零的信號(hào)的線程0,不用此選擇電路進(jìn)行線程選擇 (S42)。在未對(duì)線程O(píng)發(fā)出清零信號(hào)的情況下,選擇線程O(píng)。
反之,若檢測(cè)到線程1的項(xiàng)有效且未實(shí)施互鎖的狀態(tài)、或者盡管 項(xiàng)為無(wú)效狀態(tài)但在下一周期項(xiàng)有可能變成有效的狀態(tài),則判定是線程0 的項(xiàng)有效且未實(shí)施互鎖的狀態(tài)、還是盡管項(xiàng)為無(wú)效狀態(tài)但在下一周期項(xiàng) 有可能變成有效的狀態(tài)(S42)。而且,在線程O(píng)的項(xiàng)有效且沒(méi)有互鎖或者 項(xiàng)有可能變成有效的情況下(是),不用此第3選擇方法進(jìn)行線程選擇。
接著,在線程O(píng)的項(xiàng)并非有效、有互鎖或者項(xiàng)沒(méi)有可能變成有效 的情況下(否),判定是否對(duì)線程1發(fā)出了將線程的項(xiàng)全部清零的信號(hào), 對(duì)于已發(fā)出了進(jìn)行清零的信號(hào)的線程1,不用此選擇電路進(jìn)行線程選擇 (S46)。在未對(duì)線程l發(fā)出清零信號(hào)的情況下,選擇線程l。
返回到圖9,不將線程限定于特定的線程時(shí)的第3選擇方法(第4 選擇方法)是如圖ll所示那樣,在檢測(cè)出等待執(zhí)行且處于無(wú)法在一定期 間完成的狀態(tài)的指令時(shí),在該無(wú)法完成狀態(tài)的指令存在于保留站的項(xiàng)的 情況下,以一定間隔由線程選擇電路32選擇無(wú)法完成狀態(tài)的指令的線 程(S36)。該選擇電路在兩個(gè)線程進(jìn)行動(dòng)作時(shí)有效。
借助于圖12詳細(xì)地進(jìn)行說(shuō)明。檢測(cè)與最后完成的指令的線程相反 的線程是否處于在一定期間連一條指令都無(wú)法完成的狀態(tài)(S50、 S52)。 在未檢測(cè)出的情況下(否),不用此方法進(jìn)行線程選擇。
另一方面,在檢測(cè)出時(shí)(是),判定是否是后述的線程ID的操作期 間,如果不是操作期間則不用此方法進(jìn)行線程選擇(S54)。
反之,如果是操作期間,則判定運(yùn)算用的保留站的有效的項(xiàng)的指 令標(biāo)識(shí)符、與無(wú)法完成狀態(tài)的指令的指令標(biāo)識(shí)符相一致的項(xiàng)是否存在于 保留站的項(xiàng)中(S56)。如果存在,則在未發(fā)出清零信號(hào)的條件下,由線程選擇電路選擇
無(wú)法完成狀態(tài)的指令的線程(S58、 S60)。
進(jìn)而,在這一狀態(tài)下,對(duì)于由線程選擇電路選擇的線程,如圖11 所示那樣,以一定間隔選擇線程。在線程選擇期間中,以由線程選擇電 路32進(jìn)行選擇的方式動(dòng)作,在不是線程選擇期間中時(shí),不進(jìn)行線程選 擇(S54)。
在發(fā)出了將按線程不同所區(qū)分的線程的項(xiàng)全部進(jìn)行清零的信號(hào)的 情況下,對(duì)于已發(fā)出進(jìn)行清零的信號(hào)的線程,不用此選擇電路進(jìn)行線程 選擇(S58、 S60)。
上述的線程選擇電路32由邏輯電路構(gòu)成。圖15的電路是實(shí)現(xiàn)第 4選擇方法的電路,其輸出為圖14電路的輸入。圖14的電路是實(shí)現(xiàn)第 3選擇方法的電路,其輸出為圖13電路的輸入。圖13的電路是實(shí)現(xiàn)第 1、第2選擇方法的電路,并輸出最終的線程選擇ID(THREAD—ID)。
圖13的最終級(jí)的電路具有輸出AND (與)門(mén)320、單輸入反相 型AND門(mén)322、單輸入反相型、輸出反相型AND門(mén)324、和一對(duì)OR (或)門(mén)326、 328。
在圖13中,+FORCE THREAD0、 +FORCETHREAD1是表 示寄存器移動(dòng)處理中的信號(hào),表示需^限定線程的'S"況。若此^ft號(hào)為 ON,則利用OR門(mén)326、 328的輸出和此信號(hào),從AND門(mén)322、 324, 由線程選擇電路32選擇成為ON的線程。即,執(zhí)行在圖9的步驟S30 中說(shuō)明的第l選擇方法。此外,這2個(gè)信號(hào)不會(huì)同時(shí)變成ON。
另夕卜,在圖13 中,+THREAD_0—ONLY—ACTIVE 、 +THREAD_l_ONLY—ACTIVE是表示以單一線程方式動(dòng)^時(shí)進(jìn)行動(dòng)作 的線程的信號(hào)。此外,這2個(gè)信號(hào)不會(huì)同時(shí)變成ON。若此信號(hào)成為ON, 則從OR門(mén)326或者328、和AND門(mén)322、 324,由線程選擇電路32選 擇已成為ON的線程。圖9的步驟S32的第2選擇方法得以執(zhí)行。
此 夕卜 , 在 圖 13 的 電 路 中 , +RS—VALID NOT INTLCK—THREADO—ONLY信 號(hào) 和 +RS—VALID_NOT—INTLCK—THREAD—1—ONLY信號(hào)是圖14的第3選擇方法的輸出 , +RSE_COMP_WAIT—THREAD—0 和 +RSE—COMP—WAIT THREAD—1是圖15的^ 4選^方法的輸出。
接著,實(shí)現(xiàn)圖14的第3選擇方法的電路具有一對(duì)單輸入反相型 AND門(mén)330、 332、 一對(duì)單輸入反相型AND門(mén)334、 336和一對(duì)OR門(mén) 338、 340。
在圖14中,+RSE—VALID_NOT_INTLCK_OR—THREAD—0是表
示在運(yùn)算用保留站的項(xiàng);至少存;一個(gè)是線程0^有^:項(xiàng)且沒(méi)有互鎖的 項(xiàng)的信號(hào)。
另外,+RSA_VALID—NOT—INTLCK—OR—THREADJ)是表示在
主存儲(chǔ)操作數(shù)地址i成用保留站"項(xiàng)中至少^在一個(gè)是線程o的有效項(xiàng)
且沒(méi)有互鎖的項(xiàng)的信號(hào)。
進(jìn)而,+IWR—VALID OR一THREAD—0是表示由指令解碼器對(duì)線 程0的指令進(jìn)行解碼的信號(hào)。若它們之中的^一個(gè)信號(hào)為ON,則由OR 門(mén)338表示在保留站的線程0的項(xiàng)中存在能夠執(zhí)行的項(xiàng)。
而且,當(dāng)來(lái)自O(shè)R門(mén)340的線程1的這一信號(hào)為OFF時(shí),在表示 將線程0的項(xiàng)清零的信號(hào)+CLEAR—PIPELINE—THREADO為OFF時(shí), 經(jīng) 由 AND 門(mén) 334 從 AND 門(mén) 330 輸 出 +RS_VALID_NOT—INTLCK—THREAD0ONLY,并輸入圖13的OR 門(mén)328。因此,圖13的電路i擇線程O(píng)。
在選擇線程1的情況下也是同樣的電路構(gòu)成。即, +RSE_VALID—NOT—INTLCK—OR_THREAD_l是表示在運(yùn)算用保留 站的項(xiàng)中至少;在一個(gè)是線程1的者效項(xiàng)且沒(méi)有互鎖的項(xiàng)的信號(hào)。
另外,+RSA—VALID NOT—INTLCK_OR_THREAD—l是表示在
主存儲(chǔ)操作數(shù)地址i成用保留站"項(xiàng)中至少^在一個(gè)是線程l的有效項(xiàng) 且沒(méi)有互鎖的項(xiàng)的信號(hào)。
進(jìn)而,+IWR_VALID_OR_THREAD_l是表示由指令解碼器對(duì)線 程1的指令進(jìn)行解為的信號(hào)。若它們之中的^一個(gè)信號(hào)為ON,則由OR 門(mén)340表示在保留站的線程l的項(xiàng)中存在能夠執(zhí)行的項(xiàng)。而且,當(dāng)來(lái)自O(shè)R門(mén)338的線程0的這一信號(hào)為OFF時(shí),在表示 將線程1的項(xiàng)清零的信號(hào)+CLEAR—PIPELINETHREAD—1為OFF時(shí), 經(jīng) 由 AND 門(mén) 336 從 AND 門(mén) 332 輸 出 +RS_VALID_NOT—INTLCK—THREAD—l一ONLY,并輸入圖13的OR 門(mén)326。因此,圖13的電路i擇線程1。
接著,圖15表示用于實(shí)現(xiàn)第4選擇方法的選擇線程0的電路。圖 15的電路由項(xiàng)存在檢測(cè)電路348-l 348-n、 OR門(mén)344、 AND門(mén)346、 單輸入反相型AND門(mén)342構(gòu)成。
項(xiàng)存在檢測(cè)電路348-1包括 一致電路350-1,檢測(cè)表示接下來(lái)完 成的指令的指令標(biāo)識(shí)符的信號(hào)+CSE_OUT_PTR_THREAD—0 、和表示 運(yùn)算用的保留站的第0個(gè)項(xiàng)的指令^識(shí)符的信號(hào)+RSEJLIID的一致 性;AND門(mén)352-1,進(jìn)行表示運(yùn)算用保留站的第0個(gè)項(xiàng)^^程0有效的 信號(hào)+RSE—0_VALID_THREAD_0和一致電路350-l的輸出的與(AND ) 的運(yùn)算。
從而,在項(xiàng)存在檢測(cè)電路348-1的輸出為ON時(shí),表示線程O(píng)的 先行指令存在于運(yùn)算用的保留站。將此存在檢測(cè)電路分開(kāi)設(shè)置了運(yùn)算用
的保留站的項(xiàng)n個(gè),在某個(gè)項(xiàng)已成立的情況下,通過(guò)OR門(mén)344輸出表 示線程0的先行指令存在于運(yùn)算用的保留站的信號(hào)。
另一方面,在AND門(mén)346上輸入表示最后完成的指令的線程為 線程1的信號(hào)+LAST—COMMITTHREAD IDl、表示先行指令為運(yùn) 算等待狀態(tài)的信號(hào)+TOQ—EUCOMP—WAITTHREADJ)、表示一定期
間 線程 o 的指令尚 *T完成的信號(hào)
+WARNING_TO_COMMIT THREAD—0、表示是由線程選擇電路進(jìn)行 選捧的期間的信號(hào)+RSE—COMP_WAIT_MODE。
在這些所有輸入信號(hào)為ON、且表示進(jìn)行清零的信號(hào)的 +CLEAR_PIPELINE_THREAD_0為OFF時(shí),如果從OR門(mén)344輸出 了表示線程0的先行i旨令存在于運(yùn)算用的保留站的信號(hào),則由AND門(mén) 342確定了+RSE—COMP—WAITTHREAD0信號(hào)。
此信號(hào)輸入圖13的OR門(mén)328,并由圖13的電路選擇線程0。此外,圖15僅僅表示線程0的選擇電路,但是在選擇線程1的情 況下也是同樣的選擇電路。
進(jìn)而,在沒(méi)有選擇了上述所列舉的4個(gè)種類中的某個(gè)模式的線程 的情況下,如在圖9的步驟S38所說(shuō)明的那樣,由于同時(shí)動(dòng)作的線程為 2個(gè)線程,所以將與寄存器讀出ID表示的線程相反的線程設(shè)為下一周 期寄存器讀出ID。
在圖13的電路中,通過(guò)對(duì)用于選擇線程1側(cè)的進(jìn)行邏輯或的OR 門(mén)326輸入將表示寄存器讀出ID的信號(hào)+GPR—READ—THREADID的 極性反轉(zhuǎn)后的信號(hào),在上述的所有條件都不成立的情況下,下一^期寄 存器讀出ID就能夠選擇寄存器讀出ID的相反線程。
(他的實(shí)施方式)
在上述的實(shí)施方式中以兩個(gè)線程(線程0和l)同時(shí)動(dòng)作的同步多線 程方式進(jìn)行了說(shuō)明,但是也能夠應(yīng)用于3個(gè)以上的線程同時(shí)動(dòng)作的情況。 同樣地雖然以圖5的基于當(dāng)前窗口指針的分割寄存器構(gòu)成說(shuō)明了結(jié)構(gòu)寄 存器,但是也能夠應(yīng)用于其他構(gòu)成。
以上,通過(guò)實(shí)施方式說(shuō)明了本發(fā)明,在本發(fā)明精神的范圍內(nèi),本 發(fā)明可以進(jìn)行各種各樣變形,并非將它們從本發(fā)明的范圍內(nèi)排除。
工業(yè)上的可利用性
在使多個(gè)線程以同步多線程方式動(dòng)作的情況下,對(duì)每個(gè)線程準(zhǔn)備結(jié) 構(gòu)寄存器,并在從寄存器文件讀出功能的執(zhí)行所需要的操作數(shù)數(shù)據(jù)時(shí), 預(yù)先選擇好從寄存器文件進(jìn)行讀出的線程,所以就可以在較早的階段進(jìn) 行結(jié)構(gòu)寄存器的選擇。雖然增加了用于選擇結(jié)構(gòu)寄存器的部分的電路, 但是對(duì)于電路的布線量來(lái)說(shuō),通過(guò)選擇進(jìn)行讀出的線程的結(jié)構(gòu)寄存器可 以削減。
另外,在由保留站的項(xiàng)從結(jié)構(gòu)寄存器以外讀出操作數(shù)數(shù)據(jù)的情況 下,與從結(jié)構(gòu)寄存器進(jìn)行讀出的情況不同,可以使所有線程同時(shí)進(jìn)行讀 出,并可以不被同時(shí)進(jìn)行讀出的線程所限制地讀出。
權(quán)利要求
1.一種指令執(zhí)行控制裝置,其特征在于,具有保留站,對(duì)用于處理亂序執(zhí)行的運(yùn)算處理和主存儲(chǔ)操作數(shù)地址生成進(jìn)行控制;寄存器更新緩沖器,保存通過(guò)功能的執(zhí)行所獲得的數(shù)據(jù);寄存器文件,用于多個(gè)線程以同步多線程方式動(dòng)作,其具有每個(gè)線程的結(jié)構(gòu)寄存器,和將能夠同時(shí)進(jìn)行讀出的線程數(shù)限制于比結(jié)構(gòu)寄存器的線程數(shù)少的線程數(shù)的讀出線程選擇電路;以及線程選擇電路,在通過(guò)上述保留站的項(xiàng)的執(zhí)行從上述寄存器文件讀出操作數(shù)數(shù)據(jù)時(shí),在上述項(xiàng)的執(zhí)行之前選擇上述項(xiàng)的讀出線程,并控制上述讀出線程選擇電路,其中,在上述項(xiàng)的運(yùn)算或者執(zhí)行操作數(shù)生成時(shí),從上述線程選擇電路所選擇的線程的結(jié)構(gòu)寄存器讀出操作數(shù)數(shù)據(jù)。
2. 按照權(quán)利要求l所記栽的指令執(zhí)行控制裝置,其特征在于在從上述寄存器更新緩沖器或立即數(shù)寄存器讀出運(yùn)算和操作數(shù)地 址生成所需要的操作數(shù)數(shù)據(jù)的情況下,上述保留站不限制能夠同時(shí)進(jìn)行 讀出的線程數(shù)。
3. 按照權(quán)利要求l所記載的指令執(zhí)行控制裝置,其特征在于在將通過(guò)利用上述保留站的上述項(xiàng)執(zhí)行指令所獲得的數(shù)據(jù)保存在 上述寄存器更新緩沖器中并完成了由上述保留站執(zhí)行的指令時(shí),將上述 寄存器更新緩沖器的操作數(shù)數(shù)據(jù)保存在上述結(jié)構(gòu)寄存器中。
4. 按照權(quán)利要求l所記載的指令執(zhí)行控制裝置,其特征在于上述保留站,判定上述保留站的項(xiàng)是否需要從上述寄存器文件讀出 操作數(shù)數(shù)據(jù)、且判定是否與上述線程選擇電路所選擇的項(xiàng)的線程一致, 為了上述執(zhí)行而選擇上述項(xiàng)需要從上述寄存器文件進(jìn)行讀出且與上述 線程相一致的項(xiàng)。
5. 按照權(quán)利要求4所記載的指令執(zhí)行控制裝置,其特征在于上述保留站通過(guò)上述判定,選擇能夠從上述寄存器更新緩沖器讀出 功能的執(zhí)行所需要的操作數(shù)數(shù)據(jù)、或能夠使用立即數(shù)的項(xiàng)作為與項(xiàng)的線 程無(wú)關(guān)地執(zhí)行的項(xiàng)。
6. 按照權(quán)利要求l所記載的指令執(zhí)行控制裝置,其特征在于上述線程選擇電路檢測(cè)必須將能夠從上述寄存器文件進(jìn)行讀出的 線程限定于特定的線程的情況,并選擇上述特定的線程。
7. 按照權(quán)利要求6所記載的指令執(zhí)行控制裝置,其特征在于上述線程選擇電路檢測(cè)無(wú)需將能夠從上述寄存器文件進(jìn)行讀出的 線程限定于特定的線程的情況,并利用表示正在進(jìn)行動(dòng)作的線程的信號(hào) 來(lái)禁止選擇未進(jìn)行動(dòng)作的線程。
8. 按照權(quán)利要求6所記載的指令執(zhí)行控制裝置,其特征在于上述線程選擇電路檢測(cè)無(wú)需將能夠從上述寄存器文件進(jìn)行讀出的 線程限定于特定的線程的情況,并判定正在進(jìn)行動(dòng)作的線程中是否存在 處于在保留站的項(xiàng)中一個(gè)都無(wú)法執(zhí)行的狀態(tài)的線程,在判定為存在上述 線程時(shí),在存在處于能夠從正在進(jìn)行動(dòng)作的其他線程的項(xiàng)發(fā)出的狀態(tài)的 線程的情況下,禁止對(duì)處于一個(gè)都無(wú)法發(fā)出的狀態(tài)的線程的線程選擇。
9. 按照權(quán)利要求6所記載的指令執(zhí)行控制裝置,其特征在于上述線程選擇電路,檢測(cè)無(wú)需將能夠從上述寄存器文件進(jìn)行讀出的 線程限定于特定的線程的情況,并判定在保留站的項(xiàng)中是否存在無(wú)法在 一定期間完成的指令,在判定為存在上述項(xiàng)的情況下,以一定間隔選擇 上述尚未完成的線程的項(xiàng)。
10. 按照權(quán)利要求6所記載的指令執(zhí)行控制裝置,其特征在于上述線程選擇電路,檢測(cè)無(wú)需將能夠從上述寄存器文件進(jìn)行讀出的 線程限定于特定的線程的情況,并選擇未被上述線程選擇電路選擇的時(shí) 間最長(zhǎng)的線程。
11. 一種指令執(zhí)行控制方法,其特征在于,具有如下步驟 利用保留站對(duì)運(yùn)算器以及主存儲(chǔ)操作數(shù)生成器控制亂序執(zhí)行的處理;將通過(guò)上述執(zhí)行所獲得的數(shù)據(jù)保存在寄存器更新緩沖器中;當(dāng)通過(guò)上述保留站的項(xiàng)的執(zhí)行從上述寄存器文件讀出操作數(shù)數(shù)據(jù) 時(shí),在上述項(xiàng)的執(zhí)行前選擇上述項(xiàng)的讀出線程;利用上述讀出線程選擇寄存器文件,該寄存器文件具有同步多線程 方式的每個(gè)線程的結(jié)構(gòu)寄存器和將能夠同時(shí)進(jìn)行讀出的線程數(shù)限制于比結(jié)構(gòu)寄存器的線程數(shù)少的線程數(shù)的讀出線程選擇電路;以及在上述項(xiàng)的運(yùn)算或者執(zhí)行操作數(shù)生成時(shí),從上述線程選擇電路所選 擇的線禾呈的結(jié)構(gòu)寄存器讀出操作數(shù)數(shù)據(jù)。
12. 按照權(quán)利要求ll所記載的指令執(zhí)行控制方法,其特征在于, 還具有如下步驟在從上述寄存器更新緩沖器或立即數(shù)寄存器讀出運(yùn)算和操作數(shù)地 址生成所需要的操作數(shù)數(shù)據(jù)的情況下,禁止限制能夠同時(shí)進(jìn)行讀出的線 程數(shù)。
13. 按照權(quán)利要求ll所記載的指令執(zhí)行控制方法,其特征在于, 還具有如下步驟在將通過(guò)利用上述項(xiàng)執(zhí)行指令所獲得的數(shù)據(jù)保存在上述寄存器更 新緩沖器中并完成了上述項(xiàng)的指令時(shí),將上述寄存器更新緩沖器的操作 數(shù)數(shù)據(jù)保存在上述結(jié)構(gòu)寄存器中。
14. 按照權(quán)利要求ll所記載的指令執(zhí)行控制方法,其特征在于, 上述控制步驟具有如下步驟判定上述保留站的項(xiàng)是否需要從上述寄存器文件讀出操作數(shù)數(shù)據(jù);判定是否與上述線程選擇電路所選擇的項(xiàng)的線程一致;為了上述執(zhí)行而選擇上述項(xiàng)需要上述讀出且與上述線程相一致的項(xiàng)。
15. 按照權(quán)利要求14所記載的指令執(zhí)行控制方法,其特征在于, 上述控制步驟具有如下步驟通過(guò)上述判定,選擇能夠從上述寄存器更新緩沖器讀出功能的執(zhí)行 所需要的操作數(shù)數(shù)據(jù)、或能夠使用立即數(shù)的項(xiàng)作為與項(xiàng)的線程無(wú)關(guān)地執(zhí) 行的項(xiàng)。
16. 按照權(quán)利要求ll所記載的指令執(zhí)行控制方法,其特征在于, 上述線程選擇步驟由如下步驟組成檢測(cè)必須將能夠從上述寄存器文件進(jìn)行讀出的線程限定于特定的 線程的情況,并選擇上述特定的線程。
17. 按照權(quán)利要求16所記載的指令執(zhí)行控制方法,其特征在于上述線程選擇步驟由如下步驟組成,檢測(cè)無(wú)需將能夠從上述寄存器文件進(jìn)行讀出的線程限定于特定的 線程的情況,并利用表示正在進(jìn)行動(dòng)作的線程的信號(hào)來(lái)禁止選擇未進(jìn)行 動(dòng)作的線程。
18. 按照權(quán)利要求16所記載的指令執(zhí)行控制方法,其特征在于, 上述線程選擇步驟由如下步驟組成檢測(cè)無(wú)需將能夠從上述寄存器文件進(jìn)行讀出的線程限定于特定的 線程的情況,并判定正在進(jìn)行動(dòng)作的線程中是否存在處于在保留站的項(xiàng) 中一個(gè)都無(wú)法執(zhí)行的狀態(tài)的線程;在判定為存在上述線程時(shí),在存在處于能夠從正在進(jìn)行動(dòng)作的其他 線程的項(xiàng)發(fā)出的狀態(tài)的線程的情況下,禁止對(duì)處于一個(gè)都無(wú)法發(fā)出的狀 態(tài)的線程的線程選擇。
19. 按照權(quán)利要求16所記載的指令執(zhí)行控制方法,其特征在于, 上述線程選擇步驟由如下步驟組成檢測(cè)無(wú)需將能夠從上述寄存器文件進(jìn)行讀出的線程限定于特定的 線程的情況,并判定在保留站的項(xiàng)中是否存在無(wú)法在一定期間完成的指令;在判定為存在上述項(xiàng)的情況下,以一定間隔選擇上述尚未完成的線 程的項(xiàng)。
20. 按照權(quán)利要求16所記載的指令執(zhí)行控制方法,其特征在于, 上述線程選擇步驟由如下步驟組成檢測(cè)無(wú)需將能夠從上述寄存器文件進(jìn)行讀出的線程限定于特定的 線程的情況,并選擇未被上述線程選擇電路選擇的時(shí)間最長(zhǎng)的線程。
全文摘要
在用于使多個(gè)線程以同步多線程方式動(dòng)作的指令執(zhí)行控制裝置中,對(duì)每個(gè)線程準(zhǔn)備結(jié)構(gòu)寄存器(22-0、22-1),并設(shè)置選擇電路(32、24),用于在從寄存器文件(20)讀出功能的執(zhí)行所需要的操作數(shù)數(shù)據(jù)的情況下,預(yù)先選擇從寄存器文件(20)進(jìn)行讀出的線程。就可以在較早的階段進(jìn)行結(jié)構(gòu)寄存器的選擇,雖然增加了選擇結(jié)構(gòu)寄存器的部分的電路,但是,能夠通過(guò)選擇進(jìn)行讀出的線程的結(jié)構(gòu)寄存器減少電路的布線量。
文檔編號(hào)G06F9/38GK101689110SQ200780053400
公開(kāi)日2010年3月31日 申請(qǐng)日期2007年6月20日 優(yōu)先權(quán)日2007年6月20日
發(fā)明者吉田利雄, 田中智浩, 秋月康伸, 菅龍二 申請(qǐng)人:富士通株式會(huì)社