專利名稱:計算機系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種通過實現(xiàn)高度的指令級別的并行性,而能夠?qū)崿F(xiàn)高性能的創(chuàng)新結(jié)構(gòu)的計算機方式。
背景技術(shù):
以往,作為通用計算機已經(jīng)實用化的計算機方式,可以被大致分成堆棧式計算機和基于寄存器的計算機兩種。堆棧式計算機,盡管程序的編碼尺寸很小,在快速中斷處理、上下文轉(zhuǎn)接方面具有優(yōu)勢,但實現(xiàn)快速化卻有困難。另一方面,盡管基于寄存器的計算機比較容易實現(xiàn)快速化,但在其它方面與堆棧式計算機相比劣勢很多。
堆棧式計算機與基于寄存器的計算機不存在相互之間的程序的互換性,而且如上面所述的,無論哪種方式,都不具有絕對的優(yōu)勢。
本發(fā)明的目的在于實現(xiàn)一種與堆棧式計算機的指令格式和基于寄存器的計算機的指令格式都具有親合性,且能實現(xiàn)高性能的計算機方式。
發(fā)明內(nèi)容
本發(fā)明中的計算機方式,基本上與可按無次序(out-of-order)方式執(zhí)行的超標量體系結(jié)構(gòu)相同,其采用了長的位長度的指令格式,在其中可以記述操作群的內(nèi)容以及虛擬的操作數(shù)堆?;蜻壿嫾拇嫫魅旱臓顟B(tài)改變的內(nèi)容。
本發(fā)明中的計算機系統(tǒng),具有用于將數(shù)據(jù)寫入各入口的數(shù)據(jù)保存裝置,用于將數(shù)據(jù)保存裝置的入口地址寫入各入口的正向映射保存裝置及完成映射保存裝置,用于通過各個指令的映射保存裝置的狀態(tài)改變的內(nèi)容寫入各入口的狀態(tài)改變隊列,分別與狀態(tài)改變隊列的各個入口相對應而設(shè)置的保存操作群的執(zhí)行狀態(tài)的狀態(tài)保存裝置群,和將已發(fā)出的操作按無次序方式進行處理的裝置。盡管可以考慮到將上述已發(fā)出的操作按無次序方式處理的手段有各種構(gòu)成,但其基本上是通過作為保存已發(fā)出的操作內(nèi)容的緩沖器的操作窗口,及執(zhí)行操作的功能單元群等實現(xiàn)的。
本發(fā)明的計算機系統(tǒng)在每一循環(huán)中發(fā)出一個命令,并執(zhí)行正向映射保存裝置的內(nèi)容改變,其改變的內(nèi)容向狀態(tài)改變隊列的寫入,以及操作群的發(fā)出(向操作窗口進行寫入)。在發(fā)出產(chǎn)生結(jié)果數(shù)據(jù)的操作的情況下,應該保存結(jié)果數(shù)據(jù)的數(shù)據(jù)保存裝置的入口被重新分配,其將成為目標寄存器。另外,在被發(fā)出的各個操作中,作為源寄存器的,是地址通過訪問正向映射保存裝置而被得到的數(shù)據(jù)保存裝置的入口,或者,在相同指令中所包含的操作中的作為目標寄存器而被分配的數(shù)據(jù)保存裝置的入口。
已發(fā)出的操作分別按無次序的方式通過任意一個功能單元來執(zhí)行,如果正常完成,則與此相對應地對上述狀態(tài)保存裝置群的對應部分進行重寫。
通過相對應的狀態(tài)保存裝置,指示基于和狀態(tài)改變隊列的前端的入口內(nèi)容相同的指令的發(fā)出的操作全部正常完成之后,根據(jù)狀態(tài)改變隊列前端入口的內(nèi)容,應該對發(fā)出該指令時的正向映射保存裝置的改變內(nèi)容進行再現(xiàn),并進行完成映射保存裝置的內(nèi)容改變,從該狀態(tài)隊列中去掉上述前端的入口。
本發(fā)明的計算機系統(tǒng),可以在堆棧方式和寄存器方式這兩種方式下工作。在將利用基于堆棧的處理器的機器語言編程的程序,轉(zhuǎn)換成本發(fā)明的計算機系統(tǒng)的指令格式的情況下,為堆棧方式。另一方面,在將利用RISC或CISC的基于寄存器的處理器的機器語言編程的程序,轉(zhuǎn)換成本發(fā)明的計算機系統(tǒng)的指令格式的情況下,為寄存器方式。由于堆棧式計算機或寄存器機的多個指令可以簡單地轉(zhuǎn)換成本發(fā)明的計算機系統(tǒng)中的1個指令,因此能夠快速地處理廣泛的程序。
在堆棧方式中,映射保存裝置被用于保存一種堆棧的內(nèi)容。在以往的堆棧式計算機中,操作數(shù)棧變?yōu)椤瑆ord3,word2,word1(右端為棧頂)的狀態(tài),對應著在本發(fā)明的計算機系統(tǒng)中,映射保存裝置中所保存的內(nèi)容按入口地址的順序是a,b,c,…時,在數(shù)據(jù)保存裝置中入口地址為a,b,c,…的各入口中,分別保存著word1,word2,word3,…的狀態(tài)。
在寄存器方式中,映射保存裝置作為與基于寄存器的超標量處理機中的寄存器映射表的等同物而被使用。
本發(fā)明對基于相同的目的的申請(國際申請?zhí)朠CT/JP01/07442)中所公開的發(fā)明增加了一定的改進。其主要改進點為(1)與狀態(tài)改變隊列的各入口相對應地設(shè)置了保存操作群的執(zhí)行狀態(tài)的狀態(tài)保存裝置,及(2)在堆棧方式中,映射保存裝置將堆棧的內(nèi)容按照從其前端開始的入口地址的順序進行保存。
圖1是表示根據(jù)本發(fā)明的令人滿意的計算機系統(tǒng)的基本結(jié)構(gòu)的方框圖。
圖2是表示根據(jù)本發(fā)明的令人滿意的計算機系統(tǒng)的指令格式的概念圖。
圖3是表示在堆棧方式中的正向映射保存裝置、完成映射保存裝置以及將在后面描述的2個棧底指針的關(guān)系的說明圖。
圖4是表示數(shù)據(jù)保存裝置的入口的結(jié)構(gòu)的說明圖。
圖5是表示將在后面描述的操作隊列的入口的結(jié)構(gòu)的說明圖。
圖6是表示狀態(tài)改變隊列的入口的結(jié)構(gòu)的說明圖。
圖7是表示空閑表的內(nèi)部結(jié)構(gòu)的說明圖。
圖8~圖14是具體表示在堆棧方式的一個操作例中,7個時間點的正向映射保存裝置、完成映射保存裝置、狀態(tài)改變隊列、操作隊列、數(shù)據(jù)保存裝置以及空閑表的內(nèi)容的說明圖。
圖15~圖21是具體表示在寄存器方式的一個操作例中,7個時間點的正向映射保存裝置、完成映射保存裝置、狀態(tài)改變隊列、操作隊列、數(shù)據(jù)保存裝置以及空閑表的內(nèi)容的說明圖。
具體實施例方式
下面,將說明根據(jù)本發(fā)明的令人滿意的計算機系統(tǒng)。
(1)基本結(jié)構(gòu)首先說明本實施例的計算機系統(tǒng)的基本結(jié)構(gòu)。
圖1為計算機系統(tǒng)的方框圖。10為指令高速緩存,11為數(shù)據(jù)高速緩存,12為數(shù)據(jù)緩沖器,20為指令取出單元,21為指令發(fā)出單元,3a為正向映射保存裝置(正向映射文件),3c為完成映射保存裝置,4為狀態(tài)改變隊列,5為操作隊列,6為數(shù)據(jù)保存裝置(數(shù)據(jù)文件),7為空閑表,80和81分別為運算單元0和1,82為轉(zhuǎn)移單元,83為輸入/存儲單元。
在本發(fā)明的計算機系統(tǒng)中,必須與狀態(tài)改變隊列的入口相對應而設(shè)置的保存操作群的執(zhí)行狀態(tài)的狀態(tài)保存裝置,在本實施例中,通過后面將要說明的四個操作狀態(tài)字段來實現(xiàn)。
本發(fā)明的計算機系統(tǒng)必須具備作為保存已發(fā)出的操作的內(nèi)容的緩沖器的操作窗口。為實現(xiàn)該操作窗口,基本上有集中型和分散型兩種方法,但本實施例的計算機系統(tǒng)為具備集中型操作隊列的系統(tǒng)。
根據(jù)本發(fā)明的計算機系統(tǒng),可以在堆棧方式和寄存器方式這兩種方式下工作。在將以基于堆棧的處理器的機器語言所編程的程序轉(zhuǎn)換成本發(fā)明的計算機系統(tǒng)的指令格式并執(zhí)行的情況,為堆棧方式。另一方面,在將以RISC或者CISC的基于寄存器的處理器的機器語言所編程的程序轉(zhuǎn)換成本發(fā)明的計算機系統(tǒng)的指令格式并執(zhí)行的情況,則為寄存器方式。
本發(fā)明的計算機系統(tǒng)所具有的映射保存裝置,其構(gòu)成為將數(shù)據(jù)保存裝置的入口的地址寫入各個入口,并且在寄存器方式中,與基于寄存器的可以無次序執(zhí)行的超標量處理機中的寄存器映射表具有相同的功能。在本發(fā)明中,映射保存裝置在堆棧方式中也具有同等的功能。
(2)指令格式圖2是表示本發(fā)明實施例的計算機系統(tǒng)的指令格式的概念圖,無論在堆棧方式中還是在寄存器方式中,各個指令的格式基本上都由格式信息字段101、操作字段102和狀態(tài)改變字段103構(gòu)成。
在格式信息字段(FI字段)中,指示與該指令的長度以及該指令所包含的操作的數(shù)目等相關(guān)的信息。
在操作字段(Op字段)中,指示由算術(shù)邏輯運算和轉(zhuǎn)移、輸入/存儲等所構(gòu)成的操作群的內(nèi)容。在本實施例中,各個操作以與RISC處理器中的指令相同的格式來記述。在本實施例中,假設(shè)一條指令最多包含4個操作(但在包含轉(zhuǎn)移操作這樣的情況下,則絕對沒有一條指令包含4個操作的必要)。
在狀態(tài)改變字段(SM字段)中,指示映射保存裝置內(nèi)容的改變。也就是說,在堆棧方式中時指示虛擬的操作數(shù)棧、及在寄存器方式中指示虛擬的邏輯寄存器群的狀態(tài)改變。如后文所描述的,狀態(tài)改變字段內(nèi)部的格式,在堆棧方式和寄存器方式下是不同的。
在發(fā)出產(chǎn)生結(jié)果數(shù)據(jù)的操作的情況下,盡管用于保存結(jié)果數(shù)據(jù)的數(shù)據(jù)保存裝置的入口被分配,但其入口的邏輯的所處位置是通過SM字段的內(nèi)容來指示的。
本實施例的計算機系統(tǒng),可以在每個循環(huán)中發(fā)出上述格式的一條指令。
(2-1)堆棧方式中的指令格式下面,將說明堆棧方式中的指令格式。
假設(shè)本實施例的計算機系統(tǒng)中的數(shù)據(jù)保存裝置的各入口,能夠保存虛擬的堆棧式計算機的操作數(shù)棧的一個入口的保存數(shù)據(jù)。在本實施例中,假設(shè)映射保存裝置的地址0,1,2,…的入口內(nèi)容分別為s0,s1,s2,…時,通過將入口地址為s0,s1,s2,…的數(shù)據(jù)保存裝置的各入口中所分別應該保存的數(shù)據(jù)順序排列,來構(gòu)成虛擬的堆棧式計算機的操作數(shù)棧的內(nèi)容(S0與堆頂相對應)。
例如,對A*X+B/X進行計算,并將其結(jié)果作為變量Y存儲在存儲器中的程序,在堆棧式計算機中可以寫成如下形式。
這里,變量A、B、X、Y的存儲區(qū)域分別為局部變量1,2,4,5。
下面說明上述程序是如何轉(zhuǎn)換成本實施例的計算機系統(tǒng)中的堆棧方式的指令的。
將上述程序分成2個指令群,針對各個指令,將操作的內(nèi)容和映射保存裝置中所加入的改變的內(nèi)容分開寫時,變?yōu)槿缦滤尽?br>
這里,將用于保存結(jié)果數(shù)據(jù)的新分配的數(shù)據(jù)保存裝置的入口的地址,在各個指令群中依次設(shè)置成f1,f2,…。在本實例中,f1,f2,…中的每一個與在各個循環(huán)中從空閑表中所取出的內(nèi)容相對應。
另外,對于在映射保存裝置中所加入的改變,指示了堆棧所要增長的入口的量,和在棧頂附近所加入的改變內(nèi)容(右端與棧頂相對應)。
指令1a的意思是,將局部變量<4>的數(shù)據(jù)輸入,并寫入與f1相對應的數(shù)據(jù)保存裝置的入口,然后使得其元素被保存在映射保存裝置中的堆棧增長一個入口的量,使新成為棧頂?shù)娜肟诘膬?nèi)容變?yōu)閷趂1的數(shù)據(jù)保存裝置的入口的地址。指令1b的意思是,在對應于f1的數(shù)據(jù)保存裝置的入口的數(shù)據(jù)中加入0,將該結(jié)果數(shù)據(jù)寫入與f2相對應的數(shù)據(jù)保存裝置的入口,使其元素被保存在映射保存裝置中的堆棧增長一個入口的量,并將新成為棧頂?shù)娜肟诘膬?nèi)容變?yōu)榕cf2相對應的數(shù)據(jù)保存裝置的入口地址,盡管如此,但對于在映射保存裝置中加入的改變,也包含并表示了通過指令1a產(chǎn)生的改變內(nèi)容。其它的指令也是一樣的。
對于兩個指令群中的每一個,將其內(nèi)容集中,分成操作和映射保存裝置的內(nèi)容的改變來表示的話,則變?yōu)槿缦滤尽?br>
這是將上述程序轉(zhuǎn)換成本發(fā)明實施例的計算機系統(tǒng)的堆棧方式的指令格式時的兩個指令中的每一個的Op字段和SM字段的內(nèi)容。這樣,在堆棧方式的指令格式下,在SM字段中,指示了堆棧的成長量,并且也可以指示出表示更新后的棧頂附近的內(nèi)容的符號序列。
(2-2)寄存器方式中的指令格式下面,說明寄存器方式中的指令格式。
假設(shè)本實施例的計算機系統(tǒng)中的數(shù)據(jù)保存裝置的各入口,能夠保存虛擬的寄存器機的一個寄存器的保存數(shù)據(jù)。在本實施例中,假設(shè)映射保存裝置的地址0,1,2,…的入口的內(nèi)容分別為r0,r1,r2,…時,入口地址為r0,r1,r2,…的數(shù)據(jù)保存裝置的各入口中,將分別保存虛擬的寄存器機的寄存器R0,R1,R2,…的數(shù)據(jù)。
例如,從存儲器中將變量A,B,X的數(shù)據(jù)輸入寄存器組,計算(A*X+B/X)*2,并將其結(jié)果作為變量Y存入存儲器的程序,在寄存器方式中,可寫成如下形式。
這里,變量A,B,X,Y的在存儲器中的存儲區(qū)域的地址,為分別在R0的內(nèi)容加上100,200,400,500。
下面說明上述程序如何轉(zhuǎn)換成本實施例的計算機系統(tǒng)中的寄存器方式的指令。
將上述程序分割成由每4條指令所構(gòu)成的組,對于各個指令,將操作內(nèi)容和加入在映射保存裝置中的改變內(nèi)容分開寫時,將變?yōu)槿缦滤尽?br>
這里,與堆棧方式的情況相同,將用于保存結(jié)果數(shù)據(jù)的新分配的數(shù)據(jù)保存裝置的入口的地址,在各個指令群中依次設(shè)置為f1,f2,…。
指令1a的意思是,輸入(與r0相對應的數(shù)據(jù)保存裝置的入口的數(shù)據(jù)+100)地址的數(shù)據(jù),并寫入到與f1對應的數(shù)據(jù)保存裝置的入口中,然后將映射保存裝置的地址1的入口的內(nèi)容置換成與f1相對應的數(shù)據(jù)保存裝置的入口的地址。指令1c的意思是,將分別與f1和f2相對應的數(shù)據(jù)保存裝置的入口的數(shù)據(jù)相乘,將其結(jié)果數(shù)據(jù)寫入與f3相對應的數(shù)據(jù)保存裝置的入口中,將映射保存裝置的地址5的入口的內(nèi)容置換成與f3相對應的數(shù)據(jù)保存裝置的入口的地址。其它指令也是一樣。
對于兩個指令組中的每一個,將4個指令內(nèi)容集中,分成操作和映射保存裝置的內(nèi)容的改變來表示的話,則變?yōu)槿缦滤尽?br>
這是將上述程序轉(zhuǎn)換成本發(fā)明實施例的計算機系統(tǒng)的寄存器方式的指令格式時的兩條指令中的每一個的Op字段和SM字段的內(nèi)容。在轉(zhuǎn)換成第二條指令時,映射保存裝置的地址5的入口的內(nèi)容的置換雖然有兩個,但作為SM字段的內(nèi)容則只留下最后的內(nèi)容。這樣,在寄存器方式的指令格式下,在SM字段中,便可以列舉出指示內(nèi)容應該改變的映射保存裝置的入口的地址和各改變內(nèi)容的符號的組合。
以VLIW(very Long instruction word超長指令字)體系結(jié)構(gòu)為基礎(chǔ)的各指令也能夠很容易地轉(zhuǎn)換為本發(fā)明的計算機系統(tǒng)的寄存器方式的指令格式。
(3)堆棧方式(3-1)堆棧方式中的動作所必需的功能和結(jié)構(gòu)這里,將按照本實施例的計算機系統(tǒng)的各構(gòu)成元素,說明堆棧方式的動作中所利用的功能和結(jié)構(gòu)。這些功能和結(jié)構(gòu),除一部分之外,在寄存器方式下也是必需的功能和結(jié)構(gòu)。
(A)指令取出單元指令取出單元具有圖中未示出的程序計數(shù)器,該單元從指令高速緩存中取出指令,傳遞給指令發(fā)出單元。同時它還具有轉(zhuǎn)移的預測與轉(zhuǎn)換的執(zhí)行的功能。
(B)指令發(fā)出單元指令發(fā)出單元為了發(fā)出從指令取出單元所傳遞的指令,根據(jù)其內(nèi)容,產(chǎn)生用于執(zhí)行正向映射保存裝置和數(shù)據(jù)保存裝置的操作、向操作隊列和狀態(tài)改變隊列寫入的各種信號。
(C)映射保存裝置映射保存裝置構(gòu)成為在各個入口中寫入數(shù)據(jù)保存裝置的入口的地址。
在本發(fā)明實施例的計算機系統(tǒng)的堆棧方式中,通過映射保存裝置及數(shù)據(jù)保存裝置,可以虛擬地構(gòu)成堆棧式計算機中應該具有的堆棧的最上位部分。也就是說,在堆棧方式中,映射保存裝置被用于保存一種堆棧的內(nèi)容。在現(xiàn)有的堆棧式計算機中,操作數(shù)棧為…,word3,word2,word1(右端是棧頂)的狀態(tài),對應于在本發(fā)明的計算機系統(tǒng)中,映射保存裝置的地址0,1,2,…的入口的內(nèi)容分別為a,b,c,…時,在數(shù)據(jù)保存裝置中入口地址為a,b,c,…的各入口中,分別保存word1,word2,word3,…的狀態(tài)。當操作數(shù)棧的規(guī)模變大時,剩余的部分便被保存在數(shù)據(jù)緩沖器中,以及進一步的數(shù)據(jù)高速緩存中。
本發(fā)明的計算機系統(tǒng)具有正向映射保存裝置(AMF;AdvancedMapping File)和完成映射保存裝置(CMF;completed Mapping File)兩個相同形狀的映射保存裝置。
在本發(fā)明的計算機系統(tǒng)中,每當指令被發(fā)出,就對應于該指令的內(nèi)容改變AMF的內(nèi)容。也就是說,AMF反映了已發(fā)出的全部指令的內(nèi)容。
另一方面,CMF則反映出以程序上的順序結(jié)束后的全部指令的內(nèi)容。本發(fā)明的計算機系統(tǒng)可以無次序地執(zhí)行包含在已發(fā)出的指令中的操作,但是,CMF的存在,一是為了保證正確地對例外進行處理,二是為了構(gòu)成基于按次序結(jié)束的全部指令的狀態(tài)。
各個映射保存裝置中均存在著指示保存堆棧元素的最下位入口的被稱作棧底指針的寄存器。在初始狀態(tài)或者映射保存裝置為空的情況下,棧底指針的值為-1。
圖3為表示本實施例的計算機系統(tǒng)中的兩組映射保存裝置與棧底指針之間關(guān)系的說明圖。兩個映射保存裝置AMF 3a及CMF 3c具有相同數(shù)量的入口,在各映射保存裝置中的各自的入口中從上方開始順序地標以0,1,2,…的地址。未加斜線的AMF/CMF的入口,保存有作為堆棧的結(jié)構(gòu)元素的數(shù)據(jù)保存裝置的入口的地址。如圖3所示,將對應于AMF及CMF中的每一個而設(shè)置的棧底指針,分別取名為Ba和Bc。
(D)數(shù)據(jù)保存裝置(DF;Data File)數(shù)據(jù)保存裝置(DF)構(gòu)成為在各個入口中寫入一個字的數(shù)據(jù)。
在本實施例中,DF的入口中被標以p00,p01,p02,…這樣的地址。
圖4是表示在本實施例的計算機系統(tǒng)中,DF6的各入口6(i)的結(jié)構(gòu)的說明圖。圖中,i是入口的地址。DF6的各入口6(i)由數(shù)據(jù)字段61(i)和寫入標志(WF;write Flag)字段62(i)構(gòu)成。
實際的DF的硬件上構(gòu)成是分別對上述的各字段所設(shè)置的寄存器文件的集合體。
DF的各個入口的數(shù)據(jù)字段可以寫入一個字的數(shù)據(jù)。
在DF的各個入口中,當在數(shù)據(jù)字段中數(shù)據(jù)的寫入完成時,WF字段被寫入1,在未完成時被寫入0。
(E)操作隊列(OQ;Operation Queue)操作隊列(OQ)是保存未完成的已發(fā)出的指令中所包含的操作內(nèi)容的緩沖器,它采用了循環(huán)型的FIFO隊列的結(jié)構(gòu)。
圖5是表示本實施例的計算機系統(tǒng)中,OQ5的各個入口5(i)的結(jié)構(gòu)的說明圖。圖中,i是入口的地址。OQ5的各個入口5(i)是由操作字段50(i)、目標字段51(i)、操作數(shù)字段52(i)、第1源字段53(i)、第1源寫標志(SWF1)字段54(i)、第2源字段55(i)、第2源寫標志(SWF2)字段56(i)、報表字段57(i)及發(fā)送標志字段58(i)所構(gòu)成。
OQ的各個入口的操作字段被寫入有操作碼。
OQ的各個入口的目標字段,在產(chǎn)生結(jié)果數(shù)據(jù)的操作的情況下,被寫入有用于保存該結(jié)果數(shù)據(jù)而分配的DF的入口的地址。
OQ的各個入口的操作數(shù)字段,在指令的Op字段中指示操作數(shù)的值的操作的情況下,被寫入有該操作數(shù)的值。
OQ的各個入口的第1、第2源字段中的每一個,被寫入有用于保存操作的源數(shù)據(jù)而分配的DF的入口的地址。
在OQ的各個入口中,第1、第2SWF字段中的每一個與第1、第2源字段相對應地設(shè)置。SWF 1/2字段在第1/2源字段中所指示的DF的入口中數(shù)據(jù)寫入完成時,被寫入1,未完成時被寫入0。
OQ的各個入口的報表字段,被寫入有與包含該操作的指令相對應的狀態(tài)改變隊列的入口地址和識別號碼(A,B,C,D中的任意一個)。
在OQ的各個入口中,發(fā)送標志字段在操作還未被發(fā)送時被寫入0,在已被發(fā)送時被寫入1。
(F)狀態(tài)改變隊列(SMQ;State Modification Queue)狀態(tài)改變隊列(SMQ)是保存根據(jù)尚未完成的已發(fā)出的指令中的每一個的映射保存裝置的狀態(tài)改變內(nèi)容的緩沖器,它采用了循環(huán)型的FIFO隊列的結(jié)構(gòu)。在本實施例中,SMQ的各個入口對應于一條指令。
圖6表示在本實例的計算機系統(tǒng)中,SMQ4的各個入口4(i)的結(jié)構(gòu)的說明圖。圖中,i是入口的地址,SMQ4的各入口4(i)由狀態(tài)改變(SM)字段40(i)、操作狀態(tài)A(OS_A)字段41(i)、操作狀態(tài)B(OS_B)字段42(i)、操作狀態(tài)C(OS_C)字段43(i)及操作狀態(tài)D(OS_D)字段44(i)所組成。
實際的SMQ的硬件上的構(gòu)成是分別對上述各個字段所設(shè)置的寄存器文件的集合體。
SMQ的各個入口的SM字段,被寫入有在所對應的指令的SM字段中所指示的映射保存裝置的改變內(nèi)容。
在SMQ的各個入口中,OS_A、OS_B、OS_C、OS_D中的每一個字段,被寫入有與各自所對應的操作的執(zhí)行狀態(tài)有關(guān)的信息。在本實施例中,為了簡單起見,當所對應的操作不存在或正常完成時寫入1,其它情況下寫入0。
(G)數(shù)據(jù)緩沖器數(shù)據(jù)緩沖器是在各個入口中寫入一個字的數(shù)據(jù)的循環(huán)型緩沖器。
(H)功能單元如圖1所示,本實施例的計算機系統(tǒng)具有運算單元0及1、轉(zhuǎn)移單元及輸入/存儲單元(LSU;Load Store Unit)這4個功能單元。這些單元可分別進行流水線處理、相互獨立并行地操作。
在堆棧方式中,LSU可以對數(shù)據(jù)緩沖器及數(shù)據(jù)高速緩存進行訪問。
在本發(fā)明實施例的計算機系統(tǒng)的堆棧方式中,盡管通過映射保存裝置及數(shù)據(jù)保存裝置(DF),虛擬地構(gòu)成了堆棧式計算機中所應該具備的堆棧的最上位的部分,但是,其下面的部分被存儲在數(shù)據(jù)緩沖器中,進一步其下面的部分被存儲在數(shù)據(jù)高速緩存中。LSU可以高速地對數(shù)據(jù)緩沖器進行訪問,應該訪問的變量數(shù)據(jù)被保存在數(shù)據(jù)緩沖器里的比例越大,計算的效率就可以越高。另外,通過在數(shù)據(jù)緩沖器中事先預存了適當?shù)淖謹?shù)量的數(shù)據(jù),能夠有效地在后文將要描述的DF數(shù)據(jù)緩沖器——數(shù)據(jù)高速緩存之間進行溢出/裝填操作。
LSU具有圖中未示出的保存有指向初始的局部變量的指針的寄存器(vars寄存器)。在本實施例的計算機系統(tǒng)中,盡管局部變量的儲存區(qū)域是數(shù)據(jù)緩沖器或者數(shù)據(jù)高速緩存,但在vars寄存器中,可以寫入數(shù)據(jù)高速緩存中的相當?shù)牡刂分怠R簿褪钦f,既使全部或者一部分局部變量的數(shù)據(jù)實際上被保存在數(shù)據(jù)緩沖器中,也能夠讓假定全部的局部變量在溢出至數(shù)據(jù)高速緩存時的數(shù)據(jù)高速緩存中的地址值與各局部變量相對應。在輸入/存儲操作處理中,LSU利用vars寄存器的值進行地址計算,并判斷作為對象的局部變量的儲存區(qū)域是數(shù)據(jù)緩沖器還是數(shù)據(jù)高速緩存,并對該存儲區(qū)域進行訪問。
LSU進行程序中所指示的輸入/存儲操作,并且為了回避溢出/下溢,可以讓處于由AMF/CMF及DF所構(gòu)成的虛擬的部分堆棧的最下位的數(shù)據(jù)在其與數(shù)據(jù)緩沖器之間自動地溢出/裝填。
為使1個字的數(shù)據(jù)從DF溢出給數(shù)據(jù)緩沖器,則必須滿足下述兩個條件(否則等待直到滿足為止)。(a)、在AMF和CMF中由各個棧底指針(Ba、Bc)所指示的入口內(nèi)容是一致的,(b)、與該一致的內(nèi)容相同的DF的入口地址被寫入任意一個源字段的入口在OQ中所保存的隊列內(nèi)不存在。對于條件(b),通過對作為包含在指令中的操作的源寄存器而被使用的DF的入口地址,在被保存在映射保存裝置中的狀態(tài)下剩余的情況設(shè)置一定的限制,通??梢詽M足。在指令體系中未設(shè)有這樣的限制的情況下,計算機系統(tǒng)必須被構(gòu)成為具備以O(shè)Q中的各源字段對作為上述一致內(nèi)容的DF的入口地址進行對照,以便能夠?qū)ι鲜鰲l件(b)進行檢查的功能。當上述兩個條件被滿足時,便可以使由入口的內(nèi)容所表示的DF的入口中所寫入的1個字的數(shù)據(jù)溢出至數(shù)據(jù)緩沖器中,其中該入口的內(nèi)容是由AMF/CMF的棧底指針Ba/Bc所指示的。此時,從Ba及Bc的值中減1,并將上述DF的入口地址登錄在FL中。
反之,為了從數(shù)據(jù)緩沖器向DF裝填1個字的數(shù)據(jù),從數(shù)據(jù)緩沖器里取出應該裝填的一個字的數(shù)據(jù),并對其分配空閑的DF的1個入口,在其數(shù)據(jù)字段中進行寫入。WCF字段為1。進一步,對棧底指針Ba及Bc的值加1,并將上述被分配的DF的入口地址,分別寫入到由AMF及CMF中的每一個加1后的棧底指針值所表示的入口中。
在數(shù)據(jù)緩沖器與數(shù)據(jù)高速緩存之間,也可以對應于數(shù)據(jù)緩沖器的空位進行適當?shù)囊绯?裝填操作。
以上,盡管在隨著指令的發(fā)出/完成AMF/CMF沒有操作的前提下,對DF與數(shù)據(jù)緩沖器之間的溢出/裝填操作進行了說明,但是,指令的發(fā)出/完成的操作與溢出/裝填操作合起來,同時進行的結(jié)構(gòu)也是很容易實現(xiàn)的。
此外,本發(fā)明的計算機系統(tǒng)也可以被構(gòu)成為在DF與數(shù)據(jù)緩沖器之間以及在數(shù)據(jù)緩沖器與數(shù)據(jù)高速緩存之間,一次完成多字的數(shù)據(jù)的溢出/裝填。
(I)空閑表(FLFree List)空閑表(FL)的空閑,是指保存未被分配的DF入口的地址之意,在本實施例中,如圖7所示,其包括指令完成用登錄緩沖器(EBIC;Entry Buffer for Instruction Completion)71a、堆棧溢出用登錄緩沖器(EBSS;Entry Buffer for Stack Spill)71b、目標用分配隊列(AQD;Allocation Queue for Destinations)72a、以及堆棧裝填用分配隊列(AQSF;Allocation Queue for Stack Fill)72b。它們可以保存各自適當數(shù)量的DF的入口地址,AQD和AQSF為循環(huán)型的FIFO隊列的結(jié)構(gòu)。
在初始狀態(tài)下,DF的各個入口地址被保存在AQD與AQSF中的任意一處。在需要新分配DF入口的情況下,空閑的DF入口的地址被從FL取出,但是隨著指令的發(fā)出為了保存操作的數(shù)據(jù)結(jié)果而進行分配時,從AQD中取出,另外,在為了對其元素被保存在映射保存裝置中的堆棧進行裝填時,則從AQSF中取出。反之,對于被解除了分配的DF的各個入口,雖然其地址被登錄至FL中,但隨著指令的完成而被解除分配的被寫入EBIC中,另外,隨著其元素被保存在映射保存裝置中的堆棧的溢出而被解除分配的則被寫入EBSS中。被寫入至EBIC/EBSS中的各個DF的入口地址,會立即根據(jù)AQD及AQSF所保存的內(nèi)容量,移動至其中的任意一個。
(3-2)堆棧方式中的動作接下來,說明本發(fā)明實施例的計算機系統(tǒng)的堆棧方式中的動作。
本實施例的計算機系統(tǒng)基本上通過下述4個階段對指令進行處理,即(1)指令取出、(2)指令發(fā)出、(3)操作執(zhí)行、(4)指令完成。下面按不同階段說明動作內(nèi)容。
(1)指令取出在該階段中,指令取出單元將指令從指令高速緩存中取出,并且隨后確定取出指令的地址。接下來,將指令取出通常是從下一個地址值開始,但是在所取出的指令含有無條件轉(zhuǎn)移操作,或者在含有條件轉(zhuǎn)移操作時預測出要轉(zhuǎn)移的情況下,在轉(zhuǎn)移預測不準的情況下,或者發(fā)生例外的情況下,將改變?nèi)〕龅牡刂分怠?br>
(2)指令發(fā)出在該階段中,執(zhí)行基于發(fā)出的指令的Op字段的內(nèi)容的操作群的發(fā)出(向操作隊列(OQ)的寫入)、根據(jù)SM字段的內(nèi)容的正向映射保存裝置(AMF)及其棧底指針Ba的內(nèi)容的改變,以及該改變的內(nèi)容向狀態(tài)改變隊列(SMQ)的寫入。此時,雖然指令中的s0,s1,s2,…中的每一個對應于堆棧的最上位,第2位,第3位,…,但是,在各個改變前的AMF地址0,1,2,…的入口的內(nèi)容中,f1,f2,…中的每一個被分別置換成從空閑表(FL)中順序取出的DF的入口地址。
對于AMF及Ba內(nèi)容的改變可按如下進行。首先,將指令的SM字段中所指示的各符號按照上述要領(lǐng)分別置換成適當?shù)腄F的入口地址,并分別寫入相對應的AMF的入口中。這里,AMF的地址0的入口與棧頂即指令的SM字段中的右端所指示的符號相對應,以下的地址依次是AMF的入口與堆棧元素相對應。對于在指令的SM字段中內(nèi)容改變尚未被顯示的部分,入口的內(nèi)容只是移位堆棧增長量。也就是說,在堆棧增長量為g時,AMF的地址i的內(nèi)容通過指令的發(fā)出被寫入AMF的地址(i+g)中。另外,棧底指針Ba的值被加上堆棧增長量。
在發(fā)出指令中所包含的操作內(nèi)容被寫入的OQ各入口中,報表字段中被寫入將依據(jù)相同指令進行寫入的SMQ的入口地址和識別號碼(以機器方式順序地被標以A,B,C,D)。將0寫入OQ的入口的發(fā)送標志字段。
在隨著指令的發(fā)出(對應于f1,f2,f3,…)而新分配的DF的入口中,在WF字段中寫入0。
在存儲操作的情況下,其內(nèi)容被寫入OQ,并且被送至LSU。
與OQ的進行寫入的源字段相對應的SWF字段首先為0,但對于從s0,s1,s2,…中的任意一個被置換的DF的入口地址的向源字段的寫入中的每一個,在下一個循環(huán)中,該地址的DF的入口的WF字段的內(nèi)容被讀出,其如果是1,則OQ的對應的SWF字段便會被改變?yōu)?。
在根據(jù)所發(fā)出的指令而進行寫入的SMQ的入口中,在存在著相對應的操作的操作狀態(tài)字段中寫入意味著尚未執(zhí)行的0,在其它字段中寫入1。
(3)操作執(zhí)行OQ中所保存的未被執(zhí)行的操作,由于是可以執(zhí)行的,因此會被發(fā)送到適當?shù)墓δ軉卧M行處理。因而,操作的執(zhí)行順序是無次序的。
在OQ中,如果存在通過所對應的SWF字段的內(nèi)容,確認操作所必需的源數(shù)據(jù)已全部被寫入DF的相應入口中的入口,則為了執(zhí)行其所保存的操作,該入口的內(nèi)容與訪問DF所得到的源數(shù)據(jù)一起被送至適當?shù)墓δ軉卧?。此時,該OQ的入口的發(fā)送標志字段被改變?yōu)?。
對于產(chǎn)生輸入操作和算術(shù)邏輯運算等的結(jié)果數(shù)據(jù)的操作,如果結(jié)果數(shù)據(jù)能夠正常得到,則將結(jié)果數(shù)據(jù)寫入作為目標的DF的入口的數(shù)據(jù)字段中,WF字段被改變?yōu)?。另外,以O(shè)Q中的各個源字段對上述作為目標的DF的入口地址進行對照,與一致的源字段相對應的SWF字段被改變?yōu)?對于以存儲操作為寫入內(nèi)容的OQ的入口,相同的內(nèi)容在指令發(fā)出階段被送至LSU。在指令發(fā)出階段并未被確定的地址計算所必需的源數(shù)據(jù),在本實施例中,在其向DF的寫入在OQ中得到確認之后,立即被送至LSU。
無論是哪種操作,如果其執(zhí)行是正常完成的話,就會根據(jù)報表字段的內(nèi)容,將所對應的SMQ的入口的操作狀態(tài)字段改變?yōu)?。
對于存儲操作,盡管地址計算在操作執(zhí)行階段中以無次序的方式執(zhí)行,但為保證正確的例外處理,存儲的執(zhí)行要在指令完成階段中進行。因此,在存儲操作的情況下,如果存儲數(shù)據(jù)和存儲地址能一起確定,則所對應的SMQ的入口的操作狀態(tài)字段便被修改為1。
在某種操作的處理中,發(fā)生例外事件的情況下,其信息會被寫入到所對應的SMQ的入口的操作狀態(tài)字段中,并且通知指令取出單元。
(4)指令完成指令的完成按程序上的順序來進行。
在SMQ隊列的前端的入口中,如果所有操作狀態(tài)字段的內(nèi)容是1或者能成為1,則所對應的指令便可以完成。為了執(zhí)行指令的完成,根據(jù)SMQ的前端的內(nèi)容改變CMF及Bc的內(nèi)容,在SMQ中將上述前端的入口從隊列中去掉。這里,在指令被發(fā)出時對AMF所進行的內(nèi)容改變在CMF中將再現(xiàn)。
此外,隨著指令的完成,應該解除分配的DF的入口地址被分別登錄至FL中。在堆棧方式中,應該解除分配的DF的入口群的地址由下面兩個組構(gòu)成。這兩個組是,隨著指令完成由于內(nèi)容改變而未被保存在CMF中的,以及被寫入到保存指令中所包含的操作的OQ的入口群的目標字段中但還未執(zhí)行向CMF寫入的。
在完成包含存儲操作的指令的情況下,委托LSU進行存儲的執(zhí)行。這樣,可以保證數(shù)據(jù)按程序上的順序被存儲。
以上,說明的是本發(fā)明實施例的計算機系統(tǒng)在堆棧方式中的動作的概要。
(3-3)堆棧方式時的動作例下面,說明具體的動作例?,F(xiàn)在,假設(shè)在本實例的計算機系統(tǒng)中,執(zhí)行計算前述的Y=A*X+B/X的由下面兩個指令所構(gòu)成的程序。
圖8~圖14是在本實施例的計算機系統(tǒng)中,按照時間序列表示處理上述程序時的狀態(tài)變化的說明圖。下面,基于這些圖對詳細的動作進行說明。在圖8~圖14中,DF6、OQ5及SMQ4的各入口的結(jié)構(gòu)分別與圖4、圖5及圖6的相同。在映射保存裝置的棧底指針所指示的入口以下的入口、和從形成FIFO隊列結(jié)構(gòu)的結(jié)構(gòu)元素的隊列退出的入口等,寫入內(nèi)容并未作為有意義的內(nèi)容被保存的部分處,加有斜線。標有p##的地方意味著盡管DF的某個入口地址被寫入,但在本動作例的說明中無需注意。另外,在本動作例中,為使說明簡單,假設(shè)DF與數(shù)據(jù)緩沖器之間不進行溢出/裝填操作。
假設(shè)作為FL的結(jié)構(gòu)元素的目標用分配隊列(AQD)72a及AMF3a的初始內(nèi)容如圖8所示。這里,在形成循環(huán)型FIFO隊列結(jié)構(gòu)的AQD 72a中,從隊列開始的4個入口,指示分別與下面將要發(fā)出的指令中的f1,f2,f3,f4相對應。在AMF 3a及CMF 3c中,在各個入口中,從上面開始順序標以0,1,2,…的地址,它們分別與s0,s1,s2,…相對應。
假設(shè)當計算機系統(tǒng)處于如圖8所示狀態(tài)時,進行指令1的發(fā)出。
根據(jù)指令1的Op字段的內(nèi)容,將包含在指令中的操作的內(nèi)容寫入OQ,根據(jù)SM字段的內(nèi)容改變AMF及Ba的內(nèi)容,該改變的內(nèi)容被寫入SMQ。此時,指令中的f1,f2,f3,f4中的每一個分別被置換成從空閑表里依次取出的p26,p34,p42,p51。對于AMF內(nèi)容的改變,在地址0,1的入口中,將分別從f1、f4被置換的p26、p51寫入,在其以下的部分中,入口的內(nèi)容只移位堆棧的增長量(2)(圖8中AMF的地址0,1,…的各入口的內(nèi)容分別被寫入到地址2,3,…的各入口中)。在以圖9中的OQ指示寫入內(nèi)容的4個入口中,在報表字段中,基于相同的指令1進行寫入的SMQ的入口地址1和識別號碼(依次為A,B,C,D)被寫入。此外,這些OQ的4個入口的發(fā)送標志字段中被寫入0。
在分別與f1,f2,f3,f4相對應的新分配的DF的地址p26,p34,p42,P51的各入口中,假設(shè)WF字段為0。
由于在SMQ的進行寫入的入口的各操作狀態(tài)字段中,任何一個都存在著相對應的操作,因此寫入0。
這樣,計算機系統(tǒng)將從圖8所表示的狀態(tài)達到圖9所表示的狀態(tài)。
在下一個循環(huán)中,接著指令1進行指令2的發(fā)出。
與指令1的情況一樣,根據(jù)指令2的Op字段的內(nèi)容將包含在指令中的操作內(nèi)容寫入OQ,根據(jù)SM字段的內(nèi)容改變AMF及Ba的內(nèi)容,并將該改變的內(nèi)容寫入SMQ。此時,指令中的s0,s1被置換為改變前(圖9)的AMF的各個地址0,1的入口的內(nèi)容p26,p51,而f1,f2,f3中的每一個則被分別置換為從空閑表中依次取出來的p16,p18,p57。由于SM字段中只指示了負的堆棧增長量(-2),因此對于AMF,入口內(nèi)容僅移位這個量(圖9中的AMF的地址2,3,…的各入口的內(nèi)容分別被寫入地址0,1,…的入口中)。
在分別與f1,f2,f3相對應的新分配的DF的地址p16,p18,p57的各入口中,假設(shè)WF字段為0。
進一步,由于指令2包含存儲操作,因此其內(nèi)容被寫入OQ,并且被送至LSU。
這樣,計算機系統(tǒng)到達如圖10所示的狀態(tài)。
保存在OQ中的尚未執(zhí)行的操作,由于是可以執(zhí)行的,因此被發(fā)送至適當?shù)墓δ軉卧M行處理。
圖11表示經(jīng)過數(shù)個循環(huán),在指令1之前所發(fā)出的指令全部完成、且包含在指令1中的4個操作也全部正常完成后的時間點的計算機系統(tǒng)的狀態(tài)。在與指令1相對應的SMQ的地址1的入口中,所有的操作狀態(tài)字段為1。另外,該時間點的CMF及Bc的內(nèi)容,與指令1就要發(fā)出之前(圖8)的AMF及Ba的內(nèi)容相同(如果在DF與數(shù)據(jù)緩沖器之間進行溢出/裝填操作,則指令發(fā)出時的Ba的值與指令完成時的Bc的值不一致)。從該狀態(tài)開始,指令的完成按如下所述執(zhí)行。
在圖11中,由于SMQ的地址1的入口處于該時間點的隊列的前端,因此根據(jù)該內(nèi)容來改變CMF及Bc的內(nèi)容。也就是說,在Bc的值中加2,在CMF的地址0,1的入口中分別寫入p26,p51,在其以下部分中,入口的內(nèi)容僅移位堆棧的增長量(2)。此外,在SMQ中上述前端的入口被從隊列中去掉。
另外,隨著指令1的完成應該解除分配的DF的入口地址被登錄在FL中。在這種情況下,被寫入到保存指令1中所包含的操作的OQ的入口群的目標字段中,但并未執(zhí)行向CMF寫入的p34,p42被寫入到作為FL構(gòu)成元素的指令完成用的登錄緩沖器(EBIC)71a中(在這種情況下,并沒有隨著指令的完成由于內(nèi)容改變而未被保存在CMF中的內(nèi)容)。這樣,計算機系統(tǒng)達到圖12所示的狀態(tài)。
圖13表示計算機系統(tǒng)在進一步經(jīng)過數(shù)個循環(huán),包含在指令2中的三個操作正常完成后,對于最后的存儲操作,存儲數(shù)據(jù)與存儲地址一起變?yōu)楸淮_定完了的時間點的狀態(tài)。被寫入到EBIC中的p34,p42被移到AQD中。
從圖13的時間點開始在一個循環(huán)之內(nèi),指令2的完成與指令1的情況相同地進行。在這種情況下,由于指令2包含存儲操作,因此該存儲的執(zhí)行依賴于LSU。另外,隨著指令的完成而應該解除分配的DF的入口地址被登錄至FL中。在這種情況下,作為隨著指令的完成由于內(nèi)容的改變而未被保存在CMF中的p51,p26,和被寫入至保存指令2中所包含的操作的OQ的入口群的目標字段中但并未執(zhí)行向CMF的寫入的p16,p18,p57被寫入EBIC中。這樣,計算機系統(tǒng)達到如圖14所示的狀態(tài)。
以上,本實施例的計算機系統(tǒng)中Y=A*X+B/X的計算完成。
(4)寄存器方式(4-1)在寄存器方式中的動作所必需的功能和結(jié)構(gòu)在(3-1)中所敘述的功能和結(jié)構(gòu),除一部分之外,在寄存器方式中也是必要的。這里,只對與堆棧方式的情況的不同點做出說明。
首先,在寄存器方式中,映射保存裝置采用的是在基于寄存器的超標量處理機中的寄存器映射表的等同物。
因此,與映射保存裝置的棧底指針、數(shù)據(jù)緩沖器、輸入/存儲單元(LSU)的溢出/裝填相關(guān)的功能、空閑表(FL)中的堆棧溢出用登錄緩沖器(EBSS)以及堆棧裝填用分配隊列(AQSF)等,基本上是不需要的。
(4-2)寄存器方式中的動作下面,說明本發(fā)明實施例的計算機系統(tǒng)在寄存器方式中的動作。
本實施例的計算機系統(tǒng),在寄存器方式中與在堆棧方式中的情況一樣,基本上按下述四個階段進行指令處理,即(1)指令取出、(2)指令發(fā)出、(3)操作執(zhí)行、(4)指令完成。下面,將按各階段說明動作內(nèi)容。
(1)指令取出在該階段中,指令取出單元從指令高速緩存中取出指令,并且隨后確定取出指令的地址。
(2)指令發(fā)出在該階段中,進行根據(jù)發(fā)出的指令的Op字段的內(nèi)容的操作群的發(fā)出(寫入到操作隊列(OQ)中)、根據(jù)SM字段的內(nèi)容改變正向映射保存裝置(AMF)的內(nèi)容,以及被改變的內(nèi)容的向狀態(tài)改變隊列(SMQ)的寫入。此時,指令中的r0,r1,r2,…中的每一個分別被置換成改變前的AMF的地址0,1,2,…的入口的內(nèi)容,f1,f2,…中的每一個則分別被置換成從空閑表(FL)中依次取出的DF的入口的地址。
對于AMF的內(nèi)容的改變,按如下所述進行。對于指令的SM字段中所指示的AMF的入口地址和符號的組合中的每一個,其中的符號按上述要領(lǐng)分別被置換成適合的DF的入口的地址,而地址則被寫入所指示的AMF的入口中。
在所發(fā)出的指令中包含的操作內(nèi)容被寫入的OQ的各入口中,根據(jù)相同指令進行寫入的SMQ的入口地址和識別號碼(通過機器依次被標以A,B,C,D)被寫入到報表字段中。在OQ的入口的發(fā)送標志字段中寫入0。
在隨著指令的發(fā)出(與f1,f2,f3,…相對應)而新分配的DF的入口中,WF字段中被寫入0。
在存儲操作的情況下,其內(nèi)容被寫入OQ,并被送至LSU。
與OQ的進行寫入的源字段相對應的SWF字段首先為0,但對于向從r0,r1,r2,…中的任何一個被置換的DF的入口地址的源字段的寫入中的每一個,在下一個循環(huán)中,其地址的DF入口的WF字段的內(nèi)容被讀出,如果內(nèi)容是1,則將OQ的對應的SWF字段改變?yōu)?。
在根據(jù)所發(fā)出的指令進行寫入的SMQ的入口中,在存在相對應的操作的操作狀態(tài)字段中,寫入表示未執(zhí)行的0,而在其它字段中則寫入1。
(3)操作執(zhí)行由于保存在OQ中的未執(zhí)行的操作,與堆棧方式中的情況一樣,是可以執(zhí)行的,因此其被發(fā)送至適當?shù)墓δ軉卧M行處理。
(4)指令完成指令的完成除了以下一點之外,與堆棧方式中的情況一樣,按程序上的順序進行。
首先,在發(fā)出指令之際,對AMF所進行的內(nèi)容改變雖在CMF中被再現(xiàn),但是其是依據(jù)在寄存器方式中的指令的SM字段內(nèi)部的格式,即狀態(tài)改變隊列(SMQ)的寫入格式而進行的。
另外,隨著指令的完成,應該解除分配的DF的入口地址分別被登錄至FL中。在寄存器方式中,應該解除分配的DF入口群的地址由以下兩組構(gòu)成。這兩個組是,隨著指令的完成將內(nèi)容被重寫的CMF的各入口的改變前的內(nèi)容讀出來的部分,以及被寫入到保存指令中所包含的操作的OQ的入口群的目標字段中但尚未執(zhí)行向CMF的寫入的部分。
以上,是本發(fā)明實施例的計算機系統(tǒng)在寄存器方式中的動作的概要。
(4-3)寄存器方式中的動作例接著說明詳細的動作例?,F(xiàn)在,假設(shè)在本實施例的計算機系統(tǒng)中,執(zhí)行計算前述的Y=(A*X+B/X)*2的由以下兩條指令構(gòu)成的程序。
圖15~圖21是表示在本實施例的計算機系統(tǒng)中,處理上述程序時的狀態(tài)變化按時間序列的說明圖。下面,基于這些圖對詳細的動作進行說明。在圖15~圖21中,DF6、OQ5及SMQ4的各入口的結(jié)構(gòu)分別與圖4、圖5和圖6的相同。在從形成為FIFO隊列結(jié)構(gòu)的結(jié)構(gòu)元素的隊列退出的并未被保存為代表寫入內(nèi)容的部分處加有斜線。標有p##的地方,表示雖然DF中的某一個的入口地址被寫入,但在本實例的說明中沒有必要進行留意。
假設(shè)作為FL的結(jié)構(gòu)元素的目標用分配隊列(AQD)72a及AMF3a的初始內(nèi)容為如圖15所示。這里,在形成為循環(huán)型的FIFO隊列結(jié)構(gòu)的AQD 72a中,從隊列前端開始的4個入口指示分別與隨后要發(fā)出的指令中的f1,f2,f3,f4相對應。在AMF 3a及CMF 3c中,在各入口中,按從上面開始的順序標以0,1,2,…的地址,并分別與r0,r1,r2,…相對應。
假設(shè)當計算機系統(tǒng)處于圖15所示狀態(tài)時,進行指令1的發(fā)出。
根據(jù)指令1的Op字段的內(nèi)容將指令中所包含的操作內(nèi)容寫入至OQ,根據(jù)SM字段的內(nèi)容改變AMF的內(nèi)容,該修改的內(nèi)容被寫入至SMQ中。此時,指令中的r0被置換成改變前(圖15)的AMF的地址0的入口的內(nèi)容p12,而f1,f2,f3,f4中的每一個則分別被置換成從空閑表中依次被取出的p26,p34,p42,p51。對于AMF的內(nèi)容的改變,在地址1,2,4,5的入口中,分別寫入從f1,f4,f2,f3被置換的p26,p51,p34,p42。在以圖16的OQ指示寫入內(nèi)容的4個入口中,在報表字段中,寫入根據(jù)相同的指令1進行寫入的SMQ的入口地址1和識別號碼(依次為A,B,C,D)。此外,這些OQ的4個入口的發(fā)送標志字段中被寫入0。
在分別與f1,f2,f3,f4相對應的新分配的DF的地址p26,p34,p42,p51的各入口中,假設(shè)WF字段為0(在與r0相對應的DF的地址p12的入口中,WF字段為1,并且數(shù)據(jù)“1000”已經(jīng)被寫入)。
在SMQ的進行寫入的入口的各操作狀態(tài)字段中,由于任何一個都存在著對應的操作,因此被寫入0。
這樣,計算機系統(tǒng)便從圖15所示的狀態(tài)達到圖16所示的狀態(tài)。
在下面的循環(huán)中,接著指令1發(fā)出指令2。
與指令1的情況相同,根據(jù)指令2的Op字段的內(nèi)容將指令中包含的操作內(nèi)容寫入OQ,根據(jù)SM字段的內(nèi)容改變AMF的內(nèi)容,并將該改變的內(nèi)容寫入SMQ。
在分別與f1,f2,f3相對應的新分配的DF的地址p16,p18,p57的各入口中,假設(shè)WF字段為0。
另外,由于指令2含有一個存儲操作,因此其內(nèi)容被寫入OQ,并被送至LSU。
還有,在前面循環(huán)的指令1的發(fā)出中,由于在OQ的源字段中寫有從r0被置換的p12,因此其地址的DF的入口的WF字段的內(nèi)容被讀出,由于其為1,因此在OQ中與p12被寫入的源字段相對應的SWF字段被改變成1。
這樣,計算機系統(tǒng)達到如圖17所示的狀態(tài)。
由于保存在OQ中的尚未執(zhí)行的操作是可以執(zhí)行的,因此它們被發(fā)送到適當?shù)墓δ軉卧M行處理。
圖18表示的是經(jīng)過數(shù)個循環(huán),在指令1之前被發(fā)出的指令全部完成,且包含在指令1中的4個操作全部正常完成的時間點的計算機系統(tǒng)的狀態(tài)。在與指令1相對應的SMQ的地址1的入口中,所有的操作狀態(tài)字段為1。此外,該時間點的CMF的內(nèi)容與指令1就要發(fā)出之前(圖15)的AMF的內(nèi)容相同。從該狀態(tài)開始指令1的完成如下所述地執(zhí)行。
由于圖18中SMQ的地址1的入口處于該時間點的隊列前端,因此根據(jù)其內(nèi)容改變CMF的內(nèi)容。也就是說,在CMF的地址1,2,4,5的入口中分別寫入p26,p51,p34,p42。進一步,將SMQ中的上述前端的入口從隊列中去掉。
另外,隨指令1的完成應該解除分配的DF的入口地址被登錄至FL中。在這種情況下,內(nèi)容被重寫的CMF的地址1,2,4,5的各入口的改變前的內(nèi)容(p02,p10,p24,p60)被讀出,這些被寫入作為FL的結(jié)構(gòu)元素的指令完成用登錄緩沖器(EBIC)71a中(此時,沒有已在保存指令1中所包含的操作的OQ的入口群的目標字段中寫入,但并未執(zhí)行向CMF寫入的內(nèi)容)。這樣,計算機系統(tǒng)達到如圖19所示的狀態(tài)。
圖20表示在進一步經(jīng)過數(shù)個循環(huán)后,在指令2中所包含的3個操作正常完成,對于最后的存儲操作,存儲數(shù)據(jù)與存儲地址一起變?yōu)楸淮_定完了的時間點的計算機系統(tǒng)的狀態(tài)。EBIC中所寫入的p02,p10,p24,p60被移入到AQD中。
從圖20的時間點開始在一個循環(huán)中,指令2的完成和指令1的情況相同地進行。在這種情況下,由于指令2包括存儲操作,因此該存儲的執(zhí)行依賴于LSU。另外,隨指令的完成應該解除分配的DF的入口的地址被登錄至FL中。在這種情況下,內(nèi)容被重寫的CMF的各入口的改變前的內(nèi)容被讀出的p34,p42,和已在保存指令2中所包含的操作的OQ的入口群的目標字段中被寫入,但尚未進行向CMF寫入的p18被寫入EBIC中。這樣,計算機系統(tǒng)達到圖21所示的狀態(tài)。
以上,本實施例的計算機系統(tǒng)中的Y=(A*X+B/X)*2的計算完成。
(5)例外恢復這里,說明有關(guān)本發(fā)明的計算機系統(tǒng)中的例外恢復。
在某個指令中所包含的操作的執(zhí)行中發(fā)生例外事件的情況下,必須恢復該指令的發(fā)出時間點的狀態(tài)(但是,在堆棧方式中,已進行的數(shù)據(jù)保存裝置DF與數(shù)據(jù)緩沖器之間的溢出/裝填的操作并未取消)。
為此,在發(fā)生了例外的指令之后所發(fā)出的指令全部被取消,該時間點的完成映射保存裝置CMF(及其棧底指針Bc)的內(nèi)容被復制到正向映射保存裝置AMF(及其棧底指針Ba)中,進一步,根據(jù)從狀態(tài)改變隊列SMQ的隊列的前端入口開始到與產(chǎn)生上述例外的指令相對應的入口為止的各內(nèi)容對AMF(及Ba)的內(nèi)容進行改變。
為了取消在某個指令以后所發(fā)出的所有指令,最好將與操作隊列OQ及SMQ中應該被取消的指令群相對應的范圍內(nèi)的入口從隊列中全部去掉,將作為應該取消的操作的目標寄存器的已分配的DF的入口地址中的每一個返還至FL中。
將作為應該取消的操作的目標寄存器的已分配的DF的入口地址中的每一個返還至FL中的方法基本上有兩種。即,正面地在指令完成用登錄緩沖器EBIC中進行順序?qū)懭氲姆椒?,和重寫指示目標用分配隊列AQD的隊列前端的指針的方法。在采用后一個方法的情況下,有必要將作為指示AQD的隊列前端的指針值的有可能被寫入的值預先保存在什么地方。為此,考慮(a)在SMQ中設(shè)置用于此目的的字段,且每當發(fā)出指令便進行寫入,和(b)設(shè)置一種履歷文件,每當包含條件轉(zhuǎn)移操作的指令發(fā)出時便進行寫入的方法。
如上所述,在本發(fā)明的計算機系統(tǒng)中,由于基本上能夠恢復發(fā)生例外的指令發(fā)出的時間點的AMF(及Ba)的狀態(tài),因此可以正確地進行例外處理。
(6)其它實施例本發(fā)明的計算機系統(tǒng)并非僅限于上述實施例,還存在著細部結(jié)構(gòu)不同的各種實施例。例如,可列舉下面幾個。
(6-1)實施例A本發(fā)明的計算機系統(tǒng)也可以被構(gòu)成為,將根據(jù)現(xiàn)有的基于堆棧或者基于寄存器的處理器的指令格式的程序,預先貯存在指令高速緩存中,并在執(zhí)行時在指令發(fā)出階段的前期,轉(zhuǎn)換成依照由(2)中所規(guī)定的那種指令格式。
(6-2)實施例B本發(fā)明的計算機系統(tǒng)也可被構(gòu)成為,在發(fā)出各個指令時,將該指令完成時必須解除分配的DF的入口的地址,或用于指定它們的信息預先記入到狀態(tài)改變隊列或?qū)S玫年犃兄小?br>
(6-3)實施例C也可以實現(xiàn)一種計算機系統(tǒng),其構(gòu)成為同時具備具有棧底指針的堆棧型的正向映射保存裝置及完成映射保存裝置,和寄存器型的正向映射保存裝置及完成映射保存裝置,并能夠在指令狀態(tài)改變字段中,同時指示堆棧型的映射保存裝置的內(nèi)容改變和寄存器型的映射保存裝置的改變內(nèi)容。
(6-4)實施例D盡管在基于寄存器的超標量的體系結(jié)構(gòu)中所考慮的各種變形很多,但在基于本發(fā)明的計算機系統(tǒng)中也可以應用。例如,可列舉如下。
(1)通過在各功能單元的輸入段中分別設(shè)置保留站(reservationstation)來實現(xiàn)操作窗口。
(2)在操作隊列的后段設(shè)置調(diào)度程序。
(3)對整數(shù)數(shù)據(jù)用/浮點小數(shù)點數(shù)據(jù)用、或者通用/多媒體用這樣的數(shù)據(jù)類型另外設(shè)置數(shù)據(jù)保存裝置、操作隊列、功能單元組、空閑表。
(4)構(gòu)成為設(shè)置多組正向映射保存裝置、完成映射保存裝置、操作隊列、狀態(tài)改變隊列等,可以并行處理多個線程。
在產(chǎn)業(yè)上的應用可能性根據(jù)本發(fā)明,可以實現(xiàn)高性能的計算機系統(tǒng)。另外,以現(xiàn)有的基于堆棧的或者基于寄存器處理器的機器語言所編寫的程序,也可以容易地轉(zhuǎn)換成本發(fā)明的計算機系統(tǒng)的指令格式。
權(quán)利要求
1.一種計算機系統(tǒng),具有用于將數(shù)據(jù)寫入各入口的數(shù)據(jù)保存裝置,用于將該數(shù)據(jù)保存裝置的入口地址寫入各入口的正向映射保存裝置及完成映射保存裝置,用于將該正向映射保存裝置的狀態(tài)改變的內(nèi)容寫入各入口的狀態(tài)改變隊列,分別與該狀態(tài)改變隊列的各個入口相對應而設(shè)置的保存操作群的執(zhí)行狀態(tài)的狀態(tài)保存裝置群,將已發(fā)出的操作按無次序方式進行處理的裝置;該系統(tǒng)在每一循環(huán)中,執(zhí)行所述正向映射保存裝置的內(nèi)容改變、其改變的內(nèi)容向所述狀態(tài)改變隊列的寫入,以及與所述正向映射保存裝置的該內(nèi)容改變相組合的操作群的發(fā)出;已發(fā)出的操作中的每一個按無次序方式被執(zhí)行,如果正常完成,則相應地使所述狀態(tài)保存裝置群的對應部分被重寫;在通過相對應的狀態(tài)保存裝置,表示出與所述狀態(tài)改變隊列的前端的入口內(nèi)容所表示的所述正向映射保存裝置的內(nèi)容改變相組合的操作群中所包含的操作全部正常完成之后,根據(jù)所述狀態(tài)改變隊列的所述前端的入口的該內(nèi)容,進行所述完成映射保存裝置的內(nèi)容改變,并從所述狀態(tài)改變隊列中去掉所述前端的入口。
2.如權(quán)利要求1所述的計算機系統(tǒng),其中所述正向映射保存裝置及所述完成映射保存裝置可以從堆棧的前端開始,按照入口地址的順序保存該堆棧的內(nèi)容。
3.如權(quán)利要求1所述的計算機系統(tǒng),其中為了訪問所述正向/完成映射保存裝置,指示入口地址。
全文摘要
一種計算機系統(tǒng),已發(fā)出的操作中的每一個按無次序方式執(zhí)行,如果正常完成的話,則相應地使狀態(tài)保存裝置群的對應部分被重寫,當通過相對應的狀態(tài)保存裝置,表示與狀態(tài)改變隊列的前端入口的內(nèi)容所表示的正向映射保存裝置的內(nèi)容改變結(jié)合的操作群中所包含的操作全部正常完成之后,根據(jù)該狀態(tài)改變隊列的該前端入口的內(nèi)容,對該完成映射保存裝置的內(nèi)容進行改變,并從該狀態(tài)改變隊列中去掉該前端的入口。
文檔編號G06F9/38GK1678987SQ03820508
公開日2005年10月5日 申請日期2003年8月27日 優(yōu)先權(quán)日2002年8月30日
發(fā)明者關(guān)一 申請人:關(guān)一