專利名稱:處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器,尤其涉及具有可重構(gòu)的集成電路的處理器。
發(fā)明內(nèi)容
近年的處理器,例如在使用了數(shù)字信號的影像、音頻設(shè)備中搭載的處理器,需要對應(yīng)多個(gè)處理。
從壓縮影像的情況來看,作為其壓縮方法的MPEG2、MPEG4、H.263、H.264等多個(gè)標(biāo)準(zhǔn)已實(shí)現(xiàn)了實(shí)用化。
因此,考慮用戶的便利性等,要求近年的影像、音頻設(shè)備實(shí)現(xiàn)在一個(gè)設(shè)備中對應(yīng)這些多個(gè)標(biāo)準(zhǔn)等的多個(gè)功能。
為了滿足這些要求,可以考慮通過搭載多個(gè)進(jìn)行一個(gè)處理的硬件來實(shí)現(xiàn)多個(gè)處理的方法,或者只搭載一個(gè)硬件并用軟件執(zhí)行多個(gè)處理的方法。
前者的方法具有能夠?qū)崿F(xiàn)高性能的優(yōu)點(diǎn),但存在要實(shí)現(xiàn)的功能較多的情況下,電路規(guī)模變大的缺點(diǎn)。再者,在追加新功能的情況下,需要追加硬件。
另一方面,后者的方法具有通過軟件的追加、變更等能夠靈活地進(jìn)行多個(gè)功能的實(shí)現(xiàn)、追加等的優(yōu)點(diǎn),但存在難以提高性能的缺點(diǎn)。
因此,提出了如下的可重構(gòu)硬件在同結(jié)構(gòu)的電路結(jié)構(gòu)的一部分裝入適于特定處理的電路,通過動(dòng)態(tài)地變更硬件結(jié)構(gòu),對于特定的處理,可實(shí)現(xiàn)靈活且高性能的處理(參考專利文獻(xiàn)1)。
專利文獻(xiàn)1國際公開第2002/095496號小冊子但是,這樣的可重構(gòu)硬件除了安裝電路功能的部分以外,還需要布線部分、開關(guān)等,必然導(dǎo)致電路規(guī)模變大,而且,重構(gòu)需要時(shí)間。
發(fā)明內(nèi)容
因此,本發(fā)明的目的在于,提供一種抑制電路規(guī)模、靈活且高性能的處理器。
為了實(shí)現(xiàn)上述問題,本發(fā)明的處理器,循環(huán)地按照分配給線程的各時(shí)間來執(zhí)行多個(gè)線程,其具備可重構(gòu)的集成電路;重構(gòu)單元,根據(jù)電路構(gòu)成信息,將上述集成電路的一部分進(jìn)行重構(gòu);構(gòu)成信息存儲單元,存儲與多個(gè)線程的各個(gè)對應(yīng)的電路構(gòu)成信息;控制單元,依次使用根據(jù)對應(yīng)于線程的電路構(gòu)成信息進(jìn)行了重構(gòu)的集成電路,執(zhí)行該線程;選擇單元,在上述控制單元執(zhí)行某線程的期間,選擇下面執(zhí)行的線程。
本發(fā)明涉及的處理器通過具備上述結(jié)構(gòu),可以按各個(gè)線程來重構(gòu)電路,所以能夠使用適于該線程的電路來執(zhí)行。
此外,也可以是,上述控制單元還在執(zhí)行線程的期間,對于正在執(zhí)行的線程在使用的上述集成電路部分之外的部分,使上述重構(gòu)單元根據(jù)與上述選擇單元所選擇的線程相對應(yīng)的電路構(gòu)成信息進(jìn)行重構(gòu)。
從而,在線程的執(zhí)行中,能夠進(jìn)行用于下一線程的重構(gòu),所以不需要重構(gòu)所需的時(shí)間,能夠?qū)崿F(xiàn)靈活且高性能的處理器。
此外,上述處理器還包括運(yùn)算器;上述控制單元使用上述運(yùn)算器和上述重構(gòu)的集成電路,執(zhí)行該線程。
由此,能夠使用通常的運(yùn)算器和進(jìn)行了重構(gòu)的集成電路來執(zhí)行線程,根據(jù)處理來使用通常的運(yùn)算器,或者使用進(jìn)行了重構(gòu)的運(yùn)算器,或者使用兩者,因此,能夠抑制電路規(guī)模,同時(shí)實(shí)現(xiàn)靈活且高性能的處理。例如是將進(jìn)行了重構(gòu)的集成電路作為特定處理用的運(yùn)算器使用等。
即,不是為了所有的處理對集成電路進(jìn)行重構(gòu),所以能夠抑制可重構(gòu)電路的規(guī)模,減小整個(gè)處理器的規(guī)模,并且處理所需的電路能夠重構(gòu),所以能實(shí)現(xiàn)靈活且高性能的處理。
此外,本發(fā)明涉及的處理器是執(zhí)行由多個(gè)指令構(gòu)成的程序的處理器,其具備可重構(gòu)的集成電路;重構(gòu)單元,根據(jù)電路構(gòu)成信息,將上述集成電路的一部分進(jìn)行重構(gòu);構(gòu)成信息存儲單元,存儲與多個(gè)指令的各個(gè)相對應(yīng)的電路構(gòu)成信息;選擇單元,根據(jù)上述電路構(gòu)成信息,選擇可同時(shí)重構(gòu)上述集成電路的2個(gè)以上的指令;執(zhí)行單元,使用根據(jù)與上述選擇單元所選擇的2個(gè)以上的指令相對應(yīng)的電路構(gòu)成信息進(jìn)行了重構(gòu)的集成電路,并行執(zhí)行該2個(gè)以上的指令。
本發(fā)明的處理器通過具備上述結(jié)構(gòu),可以按各個(gè)指令來重構(gòu)集成電路,根據(jù)重構(gòu)的電路規(guī)模等,能夠同時(shí)進(jìn)行多個(gè)指令用的重構(gòu),因此,在抑制電路規(guī)模的同時(shí),能夠?qū)崿F(xiàn)靈活且高性能的處理。為了同時(shí)進(jìn)行重構(gòu),不僅考慮指令的順序,還需要使某一指令所需要的集成電路的電路規(guī)模和其它指令所需要的集成電路的電路規(guī)模加起來,也不會(huì)超過可重構(gòu)的邏輯電路的電路規(guī)模。
圖1是表示處理器1000的構(gòu)成例的圖。
圖2(a)是表示線程信息表1410的構(gòu)成例及內(nèi)容例的圖。
圖2(b)是表示線程的執(zhí)行例的時(shí)序圖。
圖3(a)是表示線程信息表1420的構(gòu)成例及內(nèi)容例的圖。
圖3(b)是表示線程的執(zhí)行例的時(shí)序圖。
圖4是表示本處理器的線程控制的處理的流程圖。
圖5是表示第二實(shí)施方式的處理器5000的構(gòu)成例的圖。
圖6是表示在第二實(shí)施方式中使用的指令碼的構(gòu)成例的圖。
圖7是表示指令信息表5410的構(gòu)成例及內(nèi)容例的圖。
圖8是使用了第二實(shí)施方式涉及的指令組的程序例。
圖9是使程序工作的處理器的流水線動(dòng)作的例子。
圖10是表示第二實(shí)施方式的處理器的指令執(zhí)行處理的流程圖。
圖11是使用了變形例的指令組的程序例。
圖12是使變形例的程序工作的處理器的流水線動(dòng)作的例子。
圖13是表示變形例的處理器的指令執(zhí)行處理的流程圖。
圖14是表示第二實(shí)施方式中使用的指令碼的構(gòu)成變形例的圖。
附圖標(biāo)記說明1000、5000處理器1100多線程處理器1110線程調(diào)度部1120固定功能運(yùn)算器1200可重構(gòu)運(yùn)算器1300構(gòu)成信息存儲部1400重構(gòu)控制部1410、1420線程信息表5010指令存儲部5100指令取出部5110、5150指令碼5111操作碼5112操作數(shù)5200指令解碼部5300運(yùn)算控制部5400地址表存儲部5410指令信息表5413使用區(qū)域數(shù)5500重構(gòu)信息存儲部5600重構(gòu)可能運(yùn)算器
5700固定功能運(yùn)算器具體實(shí)施方式
(第一實(shí)施方式)(概要)本發(fā)明涉及的處理器除了通常的處理器所具備的運(yùn)算器之外,還具備可重構(gòu)的硬件,通過分擔(dān)處理,抑制電路規(guī)模,實(shí)現(xiàn)高性能的處理。
即使是多個(gè)處理,也不是所有處理都不同,而是具有共同的處理和指令、頻繁使用的處理和指令,共同的處理和指令由通常的運(yùn)算裝置執(zhí)行,各處理所特有的處理在由可重構(gòu)硬件構(gòu)成的運(yùn)算裝置中執(zhí)行,所以是抑制作為整個(gè)處理器的電路規(guī)模、且維持高性能的處理器。
本實(shí)施方式的處理器是多線程處理器,作為實(shí)現(xiàn)多線程的方法,采取每隔一定時(shí)間就順序執(zhí)行各任務(wù)的循環(huán)方式。
各線程中適用各自固有的電路,或者需要固有電路的處理使用由可重構(gòu)的硬件進(jìn)行了重構(gòu)的電路來執(zhí)行。
即,本處理器不需要具備每個(gè)線程所固有的電路,能夠抑制整體的電路規(guī)模。
但是,重構(gòu)需要時(shí)間,因此重點(diǎn)在于刪除該時(shí)間。
下面,說明本發(fā)明的實(shí)施方式的多線程處理器。
(結(jié)構(gòu))下面,使用圖1說明本發(fā)明涉及的處理器1000的結(jié)構(gòu)。
圖1是表示處理器1000的結(jié)構(gòu)例的圖。
處理器1000包括多線程處理器1100、重構(gòu)可能運(yùn)算器1200、構(gòu)成信息存儲部1300及重構(gòu)控制部1400。
多線程處理器1100是通常的處理器,是可以分時(shí)執(zhí)行多個(gè)不同處理的所謂多線程處理器。
多線程處理器1100具有作為通常的運(yùn)算器的固定功能運(yùn)算器1120和線程調(diào)度部1110,線程調(diào)度部1110具有決定下面執(zhí)行的線程等的線程調(diào)度功能。
該線程調(diào)度部1110決定下面執(zhí)行的線程,進(jìn)行寄存器的保存、恢復(fù)等準(zhǔn)備之外,還執(zhí)行本發(fā)明特有的處理。
具體而言,是在線程執(zhí)行中選擇下面執(zhí)行的線程、向重構(gòu)控制部1400通知該線程等。
該多線程處理器1100根據(jù)需要同內(nèi)部的固定功能運(yùn)算器1120和外部的重構(gòu)可能運(yùn)算器1200的兩者進(jìn)行運(yùn)算數(shù)據(jù)的交換,同時(shí)執(zhí)行處理。
此外,重構(gòu)可能運(yùn)算器1200包括可實(shí)現(xiàn)組合電路或時(shí)序邏輯電路的邏輯塊和邏輯塊之間的布線部分。邏輯塊是包含一覽表和觸發(fā)器的電路單元,通過改變一覽表的設(shè)定值,實(shí)現(xiàn)希望的邏輯電路。此外,在布線部分配置有晶體管開關(guān)等,可自由地設(shè)定布線路徑。
本實(shí)施方式中,設(shè)邏輯塊都是相同結(jié)構(gòu),能夠分別變更功能,通過用可重排它們的布線組連接,實(shí)現(xiàn)各種功能的電路。
此外,重構(gòu)可能運(yùn)算器1200被分割為相同結(jié)構(gòu)的10個(gè)區(qū)域。這些區(qū)域分別獨(dú)立且能夠重構(gòu),區(qū)域間設(shè)有可重排的布線,可以用多個(gè)區(qū)域?qū)崿F(xiàn)一個(gè)電路。
構(gòu)成信息存儲部1300具有存儲構(gòu)成信息的功能,該構(gòu)成信息用于將重構(gòu)可能運(yùn)算器1200重構(gòu)為希望電路。具有數(shù)量與希望的電路個(gè)數(shù)相等的構(gòu)成信息。
該構(gòu)成信息中包含邏輯塊的一覽表的設(shè)定值、用于設(shè)定布線路徑的對各晶體管開關(guān)的控制信號的信息。
此外,構(gòu)成信息存儲部1300除了存儲構(gòu)成信息,還具有存儲后面說明的線程信息表1410的功能。該表是將線程和該線程中使用的構(gòu)成信息對應(yīng)起來的表。
重構(gòu)控制部1400具有如下功能在線程執(zhí)行中從線程調(diào)度部1100接受下一線程的通知,判斷是只用通常的固定功能運(yùn)算器1120就能執(zhí)行,還是需要重構(gòu)可能運(yùn)算器1200,在將重構(gòu)可能運(yùn)算器1200重構(gòu)的情況下,向重構(gòu)可能運(yùn)算器1200和構(gòu)成信息存儲部1300發(fā)出指示。
向重構(gòu)可能運(yùn)算器1200通知進(jìn)行重構(gòu)的主旨和進(jìn)行重構(gòu)的區(qū)域,并且,指示構(gòu)成信息存儲部1300,以便指定構(gòu)成信息,將該構(gòu)成信息供給重構(gòu)可能運(yùn)算器1200。
此外,具有在不能重構(gòu)時(shí)將該主旨返回給線程調(diào)度部1110的功能。不能重構(gòu)的情況是指,重構(gòu)可能運(yùn)算器1200中不存在可重構(gòu)的區(qū)域的情況。
(動(dòng)作)接著,使用圖2~圖4說明本發(fā)明涉及的處理器的動(dòng)作。
使用圖2說明按照執(zhí)行順序來執(zhí)行線程時(shí)的例子,使用圖3說明改變線程的執(zhí)行順序時(shí)的例子。
最后,使用圖4的流程圖說明線程的控制處理。
(按照執(zhí)行順序來執(zhí)行線程時(shí))圖2(a)是表示線程信息表1410的結(jié)構(gòu)例及內(nèi)容例的圖,圖2(b)是表示線程的執(zhí)行例的時(shí)序圖。
執(zhí)行了圖2(a)所示的線程信息表1410的線程時(shí)的時(shí)序圖,就是圖2(b)所示的時(shí)序圖。
首先,說明圖2(a)的線程信息表1410。
該線程信息表1410被存儲在重構(gòu)信息存儲部1300。
線程信息表1410包括線程名1411、構(gòu)成信息1412和使用區(qū)域數(shù)1413。
線程名1411是線程的識別符。下面,說明按順序執(zhí)行用“TH0”~“TH3”表示的4個(gè)線程的情況。
構(gòu)成信息1412表示由線程名1411表示的線程使用重構(gòu)可能運(yùn)算器1200時(shí)的用于重構(gòu)的構(gòu)成信息。
使用區(qū)域數(shù)1413表示使用重構(gòu)可能運(yùn)算器1200時(shí)需要的區(qū)域數(shù)。
例如,線程名1411“TH0”的線程使用由構(gòu)成信息1412“構(gòu)成A”的結(jié)構(gòu)進(jìn)行了重構(gòu)的重構(gòu)可能運(yùn)算器1200,用構(gòu)成信息1412“構(gòu)成A”將重構(gòu)可能運(yùn)算器1200重構(gòu)時(shí),需要使用區(qū)域數(shù)1413的“6”個(gè)區(qū)域。此外,與線程名1411“TH1”對應(yīng)的構(gòu)成信息1412“-”表示不使用重構(gòu)可能運(yùn)算器1200,使用區(qū)域數(shù)1413當(dāng)然是“0”個(gè)。
接著,使用圖2(b)說明線程的執(zhí)行例。
在此,示出了線程使用固定功能運(yùn)算器1120的時(shí)序10、表示該線程使用重構(gòu)可能運(yùn)算器1200時(shí)的構(gòu)成信息的時(shí)序20、和表示該線程在執(zhí)行中對重構(gòu)可能運(yùn)算器進(jìn)行重構(gòu)的構(gòu)成信息的時(shí)序30。此外,在表示時(shí)間的箭頭上方示出構(gòu)成信息,在下方示出構(gòu)成信息所需要的區(qū)域數(shù)。而且,該圖2(b)中示出了所有線程使用固定功能運(yùn)算器1120的情況,但也可以具有不使用的期間。
首先,按線程名“TH0”、“TH1”、“TH2”、“TH3”的順序執(zhí)行線程,各個(gè)線程在執(zhí)行中重構(gòu)下一個(gè)線程使用的重構(gòu)可能運(yùn)算器1200。
通過如此地事先進(jìn)行準(zhǔn)備,沒必要取得重構(gòu)所需的時(shí)間,實(shí)質(zhì)上只需要線程的執(zhí)行時(shí)間。
例如,線程名“TH1”的線程100僅使用固定功能運(yùn)算器1120來執(zhí)行線程。
在該期間,用下面預(yù)定執(zhí)行的線程名1411“TH2”的線程110所使用的構(gòu)成信息1412“構(gòu)成C”,將重構(gòu)可能運(yùn)算器1200重構(gòu)。
此時(shí),重構(gòu)可能運(yùn)算器1200具有全部10個(gè)區(qū)域,所以,所使用的重構(gòu)可能運(yùn)算器1200的區(qū)域數(shù)成為“構(gòu)成C”所需的“3/10”區(qū)域101。
同樣地,線程名“TH2”的線程110使用固定功能運(yùn)算器1120和重構(gòu)可能運(yùn)算器的“構(gòu)成C”來執(zhí)行線程。
在此期間,用下面預(yù)定執(zhí)行的線程名1411“TH3”的線程所使用的構(gòu)成信息1412“構(gòu)成D”,將重構(gòu)可能運(yùn)算器1200重構(gòu)。
此時(shí),所使用的重構(gòu)可能運(yùn)算器1200的區(qū)域數(shù)是,將“構(gòu)成C”使用的“3/10”區(qū)域和“構(gòu)成D”所需要的“4/10”區(qū)域相加的“7/10”區(qū)域111。
如此地,在依次執(zhí)行線程之前,事先進(jìn)行必要的重構(gòu)。
(改變線程的執(zhí)行順序時(shí))接著,使用圖3說明通過改變線程的執(zhí)行順序,在線程執(zhí)行中能夠進(jìn)行用于下一線程的重構(gòu)的例子。
圖3(a)是表示線程信息表1420的構(gòu)成例及內(nèi)容例的圖,圖3(b)及圖3(c)是表示線程的執(zhí)行例的時(shí)序圖。
執(zhí)行了圖3(a)所示的線程信息表1420的線程時(shí)的時(shí)序圖,是圖3(b)及圖3(c)所示的時(shí)序圖。
首先,說明圖3(a)的線程信息表1420。
該圖3(a)的線程信息表1420與圖2(a)的線程信息表1410幾乎相同,所以只說明差異。
不同點(diǎn)在于,線程名1411“TH1”的線程1421使用重構(gòu)可能運(yùn)算器1200。構(gòu)成信息1412為“構(gòu)成B”,使用區(qū)域數(shù)1413為“5”個(gè)。
接著,使用圖3(b)說明表示線程的執(zhí)行例的時(shí)序圖。時(shí)序圖所表示的內(nèi)容,與圖2(b)相同。
線程名“TH0”的線程200使用固定功能運(yùn)算器和重構(gòu)可能運(yùn)算器的“構(gòu)成A”來執(zhí)行線程。
在該期間,要用下面預(yù)定執(zhí)行的線程名1411“TH1”的線程所使用的構(gòu)成信息1412“構(gòu)成B”,將重構(gòu)可能運(yùn)算器1200重構(gòu)。
該情況下,正在使用的重構(gòu)可能運(yùn)算器1200的區(qū)域數(shù),成為將“構(gòu)成A”使用的“6/10”區(qū)域和“構(gòu)成B”所需的“5/10”區(qū)域相加的“11/10”區(qū)域201,在線程名“TH0”的線程執(zhí)行中不能進(jìn)行“構(gòu)成B”的重構(gòu)。
因此,如圖3(c)所示,在線程名“TH1”的線程230之前,執(zhí)行線程名“TH2”的線程220。即,替換執(zhí)行順序來執(zhí)行線程。
若這樣,在線程名“TH0”的線程執(zhí)行中,進(jìn)行重構(gòu)的是線程名“TH2”的線程220所使用的“構(gòu)成B”,成為“構(gòu)成A”使用的“6/10”區(qū)域和“構(gòu)成C”所需的“3/10”區(qū)域相加的“9/10”區(qū)域211,能夠事先進(jìn)行重構(gòu)。
同樣地,在線程名“TH2”的線程220使用固定功能運(yùn)算器1120和重構(gòu)可能運(yùn)算器1200的“構(gòu)成C”來執(zhí)行線程的期間,用下面預(yù)定執(zhí)行的線程名1411“TH1”的線程所使用的構(gòu)成信息1412“構(gòu)成B”,將重構(gòu)可能運(yùn)算器1200重構(gòu)。
該情況下,正在使用的重構(gòu)可能運(yùn)算器1200的區(qū)域數(shù),成為將“構(gòu)成C”使用的“3/10”區(qū)域和“構(gòu)成B”所需的“5/10”區(qū)域相加的“8/10”區(qū)域222。
通常,在循環(huán)方式中,根據(jù)由各線程應(yīng)執(zhí)行的處理,考慮分配給線程的時(shí)間片(time slice)的長度。即,在必須保障處理時(shí)間的情況下,分配時(shí)間片較長的線程等。
因此,周期不變化,成為對線程分配處理時(shí)的前提條件。
但是,同整個(gè)處理的執(zhí)行時(shí)間相比,一個(gè)時(shí)間片的時(shí)間非常小,所以在該處理器中,在規(guī)定時(shí)間內(nèi)由線程調(diào)度部1110調(diào)整各線程的執(zhí)行時(shí)間使其與預(yù)定相同。例如,全部線程10執(zhí)行10次作為一段,計(jì)數(shù)各線程的執(zhí)行次數(shù),在最初的線程開始第11次的執(zhí)行之前,用其它線程優(yōu)先執(zhí)行少于10次的部分。在全部線程執(zhí)行10次之后,開始最初的線程的第11次的執(zhí)行。
(線程的控制處理)
接著,使用圖4說明本處理器的線程控制的處理。
圖4是表示本處理器的線程控制處理的流程圖。
線程調(diào)度部1110選擇下面執(zhí)行的線程(步驟S100)。在剛開始控制處理的情況下,是最初的線程。
在分配給各線程的處理全部結(jié)束時(shí)(步驟S110的“是”),結(jié)束線程的控制處理。
在執(zhí)行作為被選擇的線程的下一線程時(shí),向重構(gòu)控制部1400傳遞其線程名1411,委托重構(gòu)。
接受了委托的重構(gòu)控制部1400參照存儲在構(gòu)成信息存儲部1300中的線程信息表1410,來判斷接受的線程名1411是否使用構(gòu)成可能運(yùn)算器1200。具體地說,在與接受的線程名1411對應(yīng)的構(gòu)成信息1412中指定了構(gòu)成的情況下,判斷為使用重構(gòu)可能運(yùn)算器1200。
在判斷為不使用的情況下(步驟S120的“否”),重構(gòu)控制部1400向線程調(diào)度部1110返回其主旨,線程調(diào)度部1110在當(dāng)前執(zhí)行中的線程結(jié)束后,開始下一線程的執(zhí)行(步驟S150)。
另一方面,在判斷為使用的情況下(步驟S120的“是”),判斷進(jìn)行重構(gòu)的區(qū)域是否空出。具體地說,判斷在與接受的線程名1411對應(yīng)的使用區(qū)域數(shù)1413所示數(shù)量的區(qū)域是否空出。
重構(gòu)控制部1400在內(nèi)部存儲當(dāng)前使用的區(qū)域號碼,在正使用的線程的時(shí)間片已結(jié)束的情況下,使用過的區(qū)域空出,從存儲的區(qū)域號碼中刪除。
在判斷為區(qū)域未空出的情況下(步驟S130的“否”),重構(gòu)控制部1400向線程調(diào)度部1110通知其主旨。線程調(diào)度部1110選擇不同的線程(步驟S100)。線程調(diào)度部1110存儲各線程的執(zhí)行次數(shù),在適當(dāng)時(shí)優(yōu)先選擇,并且將全部線程的執(zhí)行次數(shù)相加。
另一方面,在判斷為區(qū)域是空出的情況下(步驟S130的“是”),重構(gòu)控制部1400向重構(gòu)可能運(yùn)算器1200通知進(jìn)行重構(gòu),向構(gòu)成信息存儲部1400指定區(qū)域來發(fā)送與接受的線程名1411對應(yīng)的構(gòu)成信息1412。發(fā)送后,重構(gòu)控制部1400更新存儲在內(nèi)部的使用中的區(qū)域號碼。
重構(gòu)可能運(yùn)算器1200用從構(gòu)成信息存儲部1300發(fā)送的構(gòu)成信息來進(jìn)行重構(gòu)(步驟S140),若結(jié)束,則通知重構(gòu)控制部1400。
接受了重構(gòu)已結(jié)束的通知的重構(gòu)控制部1400,向線程調(diào)度部1110返回其通知內(nèi)容,線程調(diào)度部1110在當(dāng)前執(zhí)行中的線程結(jié)束后,立即開始下一線程的執(zhí)行(步驟S150)。
使線程開始的線程調(diào)度部1110選擇下一個(gè)線程(步驟S100)。
(第二實(shí)施方式)(概要)第一實(shí)施方式是每個(gè)線程使用進(jìn)行了重構(gòu)的重構(gòu)可能運(yùn)算器,與此相比,本實(shí)施方式中,每個(gè)指令使用進(jìn)行了重構(gòu)的重構(gòu)可能運(yùn)算器。
下面說明第二實(shí)施方式的結(jié)構(gòu)等。
(結(jié)構(gòu))圖5是第二實(shí)施方式的處理器5000的構(gòu)成例的圖。
處理器5000包括指令取出部5100、指令解碼部5200、運(yùn)算控制部5300、地址表存儲部5400、重構(gòu)信息存儲部5500、重構(gòu)可能運(yùn)算器5600及固定功能運(yùn)算器5700,在外部具有指令存儲部5010。
指令存儲部5010具有預(yù)先存儲由處理器5000執(zhí)行的指令碼的功能。
指令取出部5100具有從指令存儲部5010讀入指令碼并傳遞給指令解碼部5200的功能。
指令解碼部5200除了具有從指令取出部5100接受指令碼并解析的通常的功能之外,還具有本發(fā)明獨(dú)有的功能。
具體地說是如下功能,即在解碼的結(jié)果是使用重構(gòu)可能運(yùn)算器5600的指令的情況下,根據(jù)指令種類從地址表存儲部5400取得存儲了構(gòu)成信息的地址,將地址傳遞給重構(gòu)信息存儲部5500,并向重構(gòu)可能運(yùn)算器5600發(fā)送構(gòu)成信息。
地址表存儲部5400具有將指令種類和其構(gòu)成信息的地址對應(yīng)起來存儲的功能。
運(yùn)算控制部5300具有按照指令解碼部5200解碼的結(jié)果來控制運(yùn)算動(dòng)作的功能。對固定功能運(yùn)算器5700和重構(gòu)可能運(yùn)算器5600,一邊取得定時(shí)、一邊發(fā)行指令。
重構(gòu)信息存儲部5500對應(yīng)于多個(gè)指令的每個(gè)來存儲構(gòu)成信息的功能。在此存儲的各構(gòu)成信息的開頭地址,由地址表存儲部5400同指令種類對應(yīng)起來存儲著。該構(gòu)成信息和第一實(shí)施方式的存儲在構(gòu)成信息存儲部1300的構(gòu)成信息相同。
此外,重構(gòu)信息存儲部5500具有在來自指令解碼部5200的指示下,向重構(gòu)可能運(yùn)算器5600發(fā)送指定的地址的構(gòu)成信息的功能。
重構(gòu)可能運(yùn)算器5600是可重構(gòu)的運(yùn)算器,和第一實(shí)施方式的重構(gòu)可能運(yùn)算器1200相同。其中,在本實(shí)施方式中,是被分割為4個(gè)區(qū)域的運(yùn)算器。
固定功能運(yùn)算器5700由多個(gè)固定功能運(yùn)算器構(gòu)成,本實(shí)施方式中由三個(gè)固定功能運(yùn)算器5701、5702、5703構(gòu)成。
下面,簡單地說明指令和構(gòu)成信息的對應(yīng)關(guān)系,并說明動(dòng)作。
(指令碼和構(gòu)成信息的對應(yīng)關(guān)系)使用圖6和圖7說明根據(jù)本發(fā)明中使用的指令碼,求出用于進(jìn)行該指令的執(zhí)行所必要的重構(gòu)的構(gòu)成信息的方法。
圖6是表示本發(fā)明中使用的指令碼構(gòu)成例的圖,圖7是表示指令信息表5410的構(gòu)成例及內(nèi)容例的圖。
首先,從圖6的指令碼的構(gòu)成例開始說明。
本發(fā)明中使用的指令碼5110由表示指令種類的操作碼5111和表示由該指令處理的值等的操作數(shù)5112構(gòu)成。
本發(fā)明中,該操作碼5111和構(gòu)成信息相對應(yīng)著(參照箭頭),在處理器判斷為指令的執(zhí)行需要重構(gòu)可能運(yùn)算器5600的情況下,由利用對應(yīng)起來的構(gòu)成信息進(jìn)行了重構(gòu)的重構(gòu)可能運(yùn)算器5600執(zhí)行指令。
在由處理器判斷為指令的執(zhí)行不需要重構(gòu)可能運(yùn)算器5600的情況下,使用固定功能運(yùn)算器5700來執(zhí)行。
接著,說明圖7的指令信息表5410。
該指令信息表5410被存儲在地址表存儲部5400。
指令信息表5410由操作碼種類5411、地址5412及使用區(qū)域數(shù)5413構(gòu)成。
操作碼種類5411表示指令碼的操作碼,即指令。在此,僅記載了使用重構(gòu)可能運(yùn)算器5600的指令。
因此,由固定功能運(yùn)算器5700執(zhí)行在此未記載的指令。
接著,地址5412表示同操作碼種類5411所表示的操作碼相對應(yīng)的構(gòu)成信息的、重構(gòu)信息存儲部5500內(nèi)的地址。并且,本實(shí)施方式中采用了地址,但也可以是ID等,只要是能夠確定重構(gòu)信息就可以。
使用區(qū)域數(shù)5413表示使用重構(gòu)可能運(yùn)算器5600時(shí)的區(qū)域數(shù)。例如,操作碼種類5411“Sub”的指令使用由存儲在地址5412“addr”所表示的地址中的構(gòu)成信息進(jìn)行了重構(gòu)的重構(gòu)可能運(yùn)算器1200,對重構(gòu)可能運(yùn)算器1200進(jìn)行重構(gòu)時(shí),需要使用區(qū)域數(shù)5413的“3”個(gè)區(qū)域。
本實(shí)施方式的情況下,考慮指令所使用的重構(gòu)可能運(yùn)算器5600的區(qū)域數(shù),在將程序變換為機(jī)器語言的編譯時(shí),在本實(shí)施方式中變換為指令碼5110時(shí),決定指令的順序和由指令重構(gòu)的區(qū)域號碼。即,在編譯時(shí),在考慮了所執(zhí)行的指令的順序的基礎(chǔ)上,構(gòu)成在前面的指令執(zhí)行中可重構(gòu)的指令順序,決定進(jìn)行各自的重構(gòu)的區(qū)域。此外,例如由操作者指定區(qū)域號碼,或者按每個(gè)指令事先決定區(qū)域號碼等,以便由指令解碼部知道所使用的區(qū)域號碼。
(動(dòng)作)下面,使用圖8~圖10說明如何執(zhí)行指令。
圖8是使用了本發(fā)明涉及的指令組的程序例,圖9是使程序工作的處理器的流水線動(dòng)作的例。
此外,圖10是表示本實(shí)施方式的處理器的指令執(zhí)行處理的流程圖。
首先,簡單地說明圖8的程序。
操作碼5111“add”、操作數(shù)5112“r0,r1,r2”的指令碼意味著將寄存器1的內(nèi)容和寄存器2的內(nèi)容相加并將結(jié)果代入寄存器0,操作碼5111“sub”、操作數(shù)5112“r3,r1,r3”的指令碼意味著從寄存器1的內(nèi)容減去寄存器3的內(nèi)容并代入寄存器3。
此外,操作碼5111“Reconf0”、操作數(shù)5112“r2,r0,0xfe”的指令碼意味著使用寄存器0的內(nèi)容和數(shù)值“0xfe”進(jìn)行運(yùn)算“Reconf0”,將結(jié)果代入寄存器2;操作碼5111“Reconf1”、操作數(shù)5112“r3,r1,r3”的指令碼意味著使用寄存器1的內(nèi)容和寄存器3的內(nèi)容進(jìn)行運(yùn)算“Reconf1”,將結(jié)果代入寄存器3。
下面,使用圖9及圖10說明執(zhí)行程序的處理器的動(dòng)作。按照圖10的流程圖,一邊參照圖9的時(shí)序圖一邊說明。
圖8所示的程序被存儲在指令存儲部5010。
首先,指令取出部5100取出指令碼“Add r0,r1,r2”(圖10的步驟S800、圖9的步驟S500),傳遞給指令解碼部5200。
接受了指令碼的指令解碼部5200解析接受到的指令碼。
在接受的指令碼是表示結(jié)束的代碼的情況下(圖10的步驟S810的“是”),指令解碼部5200結(jié)束處理。
此外,在指令碼不是表示結(jié)束的代碼的情況下(圖10的步驟S810的“否”),指令解碼部5200將操作碼5111“Add”傳遞給地址表存儲部5400,請求構(gòu)成信息的地址。
地址表存儲部5400參照指令信息表5410,檢索在操作碼種類5411中是否存在被傳遞的操作碼5111“Add”,其結(jié)果不存在,所以向指令解碼部5200返回不使用重構(gòu)可能運(yùn)算器5600的消息(圖10的步驟S820的“否”、圖9的步驟S510)。
接受了不使用重構(gòu)可能運(yùn)算器5600的消息的指令解碼部5200,將“Add r0,r1,r2”的已解碼的指令傳遞給運(yùn)算控制部5300。
被傳遞來解碼結(jié)果的運(yùn)算控制部5300向固定功能運(yùn)算器5700發(fā)行指令,并執(zhí)行指令碼“Add r0,r1,r2”(圖10的步驟S830、S840)。
指令取出部5100在取出指令碼“Add r0,r1,r2”之后,取出下一個(gè)指令碼“Sub r3,r1,r3”(圖10的步驟S800、圖9的步驟S520),傳遞給指令解碼部5200。
接受了指令碼的指令解碼部5200向地址表存儲部5400傳遞操作碼5111“Sub”,請求構(gòu)成信息的地址。
地址表存儲部5400參照指令信息表5410,檢索在操作碼種類5411中是否存在被傳遞的操作碼5111“Sub”,結(jié)果存在,所以向指令解碼部5200返回地址5412“addr1”(圖10的步驟S820的“是”、圖9的步驟S600)。
接受了地址的指令解碼部5200向重構(gòu)信息存儲部5500傳遞接受到的地址5412“addr1”,向重構(gòu)可能運(yùn)算器5600發(fā)送該地址的構(gòu)成信息,指示進(jìn)行重構(gòu)。
進(jìn)行了指示的指令解碼部5200向運(yùn)算控制部5300傳遞“Subr3,r1,r3”的已解碼的指令。
另一方面,接受了指示的重構(gòu)信息存儲部5500向重構(gòu)可能運(yùn)算器5600發(fā)送接受到的地址的構(gòu)成信息,進(jìn)行重構(gòu)(圖10的步驟S850,圖9的步驟S610)。
該重構(gòu)是對重構(gòu)可能運(yùn)算器5600的4個(gè)區(qū)域中的3個(gè)區(qū)域進(jìn)行重構(gòu)(參照圖7)。
被傳遞了解碼結(jié)果的運(yùn)算控制器5600向重構(gòu)可能運(yùn)算器5600發(fā)行指令,并執(zhí)行指令碼“Sub r3,r1,r3”(圖10的步驟S860、圖9的步驟S620)。
之后,將執(zhí)行結(jié)果寫入寄存器3(圖9的步驟S630)。
如此地,依次并同時(shí)執(zhí)行指令。
在此,從執(zhí)行指令碼“Sub r3,r1,r3”的下一個(gè)指令碼“Reconf0,r2,r0,0xfe”的情況來看,該指令碼“Reconf0”使用重構(gòu)可能運(yùn)算器5600。
因此,在“Sub r3,r1,r3”的執(zhí)行中(圖9的步驟S620)進(jìn)行重構(gòu)(圖9的步驟S700)。
該操作碼種類5411“Reconf0”的使用區(qū)域數(shù)5413是“0”個(gè),所以,“Sub r3,r1,r3”使用3個(gè)區(qū)域,在執(zhí)行中也能進(jìn)行重構(gòu)。
執(zhí)行下一個(gè)指令碼“Reconf1 r3,r1,r3”的情況也相同。
如此地,在具有可重構(gòu)的運(yùn)算器的處理器中,可以控制可按指令單位進(jìn)行重構(gòu)的運(yùn)算器,能夠以較高的面積效率來實(shí)現(xiàn)靈活且高性能的運(yùn)算處理。
(變形例)下面,說明第二實(shí)施方式的變形例。
第二實(shí)施方式中,按每個(gè)指令對重構(gòu)可能運(yùn)算器進(jìn)行了重構(gòu),但在本變形例中,說明一次重構(gòu)多個(gè)指令的例子。由于同時(shí)執(zhí)行多個(gè)指令,所以能夠謀求處理速度的提高。
使用圖11~圖13說明如何執(zhí)行指令。
圖11是使用了本變形例的指令組的程序例,圖12是使程序工作的處理器的流水線動(dòng)作的例子。
此外,圖13是表示本變形例的處理器的指令執(zhí)行處理的流程圖。
首先,圖11所示程序的各指令的內(nèi)容和圖8相同。
但是,在相同的階段執(zhí)行“Reconf0 r2,r0,0xfe”和“Reconf1r3,r1,r3”這一點(diǎn)是不同的。在圖11中,為了說明的方便,通過將“Reconf0 r2,r0,0xfe”和“Reconf1 r3,r1,r3”橫向并列記載,示出了同時(shí)被執(zhí)行,但是,編譯器事先輸出,以便指令解碼器5200能夠解釋同時(shí)執(zhí)行2個(gè)指令的情況。
例如,考慮指令所使用的重構(gòu)可能運(yùn)算器5600的區(qū)域數(shù),在編譯時(shí)決定指令的順序和由指令進(jìn)行重構(gòu)的區(qū)域的號碼。即,在編譯時(shí)考慮指令執(zhí)行的順序,選擇可同時(shí)執(zhí)行且能同時(shí)重構(gòu)的指令,決定進(jìn)行各自的重構(gòu)的區(qū)域。該并行執(zhí)行的指令和使用的區(qū)域號碼是,例如設(shè)置表示并行實(shí)效的指令碼,在其操作數(shù)中記載這些指令和區(qū)域號碼等。
具體地說,在編譯時(shí)考慮使用區(qū)域數(shù)5413,“Sub”和“Reconf0”可以同時(shí)進(jìn)行重構(gòu),但“Sub”和“Reconf1”不能同時(shí)進(jìn)行重構(gòu)。這是因?yàn)椋癝ub”和“Reconf0”加起來使用4個(gè)區(qū)域,但“Sub”和“Reconf1”加起來需要5個(gè)區(qū)域(參照圖7)。
使用圖12及圖13簡單地說明執(zhí)行程序的處理器的動(dòng)作。按照圖13的流程圖,一邊參照圖12的時(shí)序圖、一邊說明。
圖13的流程圖只說明同圖10的流程圖之間的差異。具體地說,是步驟S900~步驟S920。
“Reconf0 r2,r0,0xfe”和“Reconf1 r3,r1,r3”使用重構(gòu)可能運(yùn)算器,并且,解析了同時(shí)執(zhí)行的指令解碼部5200向地址表存儲部5400傳遞操作碼5111“Reconf0”和“Reconf1”,請求構(gòu)成信息的地址。
地址表存儲部5400參照指令信息表5410,向指令解碼部5200返回地址5412“addr4”和“addr5”(圖13的步驟S820的“是”、步驟S900的“是”)。
接受了地址的指令解碼部5200向重構(gòu)信息存儲部5500傳遞接受到的地址5412“addr4”和“addr5”,向重構(gòu)可能運(yùn)算器5600送出該地址的構(gòu)成信息,指示進(jìn)行重構(gòu)。
進(jìn)行了指示的指令解碼部5200向運(yùn)算控制部5300傳遞“Reconf0r2,r0,0xfe”和“Reconf1 r3,r1,r3”的已解碼的指令。
另一方面,接受了指示的重構(gòu)信息存儲部5500向重構(gòu)可能運(yùn)算器5600發(fā)送接受到的地址的構(gòu)成信息,進(jìn)行重構(gòu)(圖13的步驟S910、圖12的步驟S700)。
被傳遞了解碼結(jié)果的運(yùn)算控制部5300向重構(gòu)可能運(yùn)算器5600發(fā)行指令,執(zhí)行指令碼“Reconf0 r2,r0,0xfe”和“Reconf1,r3,f1,r3”(圖13的步驟S920、圖12的步驟S710)。
接受了指令碼的指令解碼部5200,在不使用重構(gòu)可能運(yùn)算器的情況(圖13的步驟S820的“否”)和即使使用了也是1個(gè)指令的情況(圖13的步驟S900的“否”)下,分別執(zhí)行同圖10相同的處理(圖13的步驟S840~步驟S870)。
并且,在此說明了同時(shí)處理使用可重構(gòu)的運(yùn)算器的2個(gè)指令的情況,但能夠同時(shí)發(fā)行的指令數(shù)并不限于2個(gè)。此外,也可以和使用固定功能運(yùn)算器5700的指令一起進(jìn)行處理。
(補(bǔ)充)以上,基于實(shí)施方式說明了本發(fā)明涉及的處理器,但也可以將該處理器局部進(jìn)行變形,毋庸置疑,本發(fā)明并不限于上述的實(shí)施方式。即(1)第二實(shí)施方式中,將指令碼的操作碼和構(gòu)成信息對應(yīng)起來,但不限于此。
例如,也可以事先在操作數(shù)的一部分代入表示構(gòu)成信息的代碼。如圖14所示,在指令碼5150的操作數(shù)的字段5150中事先代入構(gòu)成信息的ID等,在執(zhí)行時(shí)根據(jù)ID來確定構(gòu)成信息。
(2)第二實(shí)施方式中,為了說明的方便,沒有詳細(xì)說明多個(gè)固定功能運(yùn)算器的執(zhí)行,但在能夠同時(shí)執(zhí)行這些固定功能運(yùn)算器和重構(gòu)可能運(yùn)算器的情況下,也可以同時(shí)發(fā)行多個(gè)指令。
根據(jù)如何決定應(yīng)同時(shí)發(fā)行的指令,有可能大幅度提高運(yùn)算效率。
即,在由可重構(gòu)的硬件構(gòu)成的運(yùn)算器中,能夠選擇地執(zhí)行多種的運(yùn)算功能。因此,能夠執(zhí)行任意的指令,通過執(zhí)行本發(fā)明的指令組,能夠制作實(shí)現(xiàn)提高指令并行度的最佳功能的程序。
決定應(yīng)同時(shí)發(fā)行的指令的動(dòng)作,例如可以在處理器的內(nèi)部在指令解釋時(shí)進(jìn)行,也可以在對處理器提供的程序的時(shí)刻預(yù)先進(jìn)行。
(3)實(shí)施方式中,重構(gòu)可能運(yùn)算器被分配在均勻的多個(gè)區(qū)域,但也可以是每個(gè)區(qū)域具有不同的邏輯塊,此外,該區(qū)域的大小也可以不同。
(4)實(shí)施方式中,構(gòu)成重構(gòu)可能運(yùn)算器的邏輯塊是包含一覽表和觸發(fā)器的電路組件,但邏輯塊也可以包括ALU(Arithmetic andLogical Unit,算數(shù)及邏輯單元)、進(jìn)行移位或數(shù)據(jù)控制、邏輯運(yùn)算的單元、觸發(fā)器等,即也可以由一般邏輯電路的組合構(gòu)成。
本發(fā)明涉及的處理器能夠抑制電路規(guī)模、實(shí)現(xiàn)靈活且高性能的處理,因此作為圖像處理LSI的運(yùn)算器等特別有用。
權(quán)利要求
1.一種處理器,循環(huán)地按照分配給線程的各時(shí)間來執(zhí)行多個(gè)線程,其特征在于,具備可重構(gòu)的集成電路;重構(gòu)單元,根據(jù)電路構(gòu)成信息,將上述集成電路的一部分進(jìn)行重構(gòu);構(gòu)成信息存儲單元,存儲與多個(gè)線程的各個(gè)對應(yīng)的電路構(gòu)成信息;控制單元,依次使用根據(jù)對應(yīng)于線程的電路構(gòu)成信息進(jìn)行了重構(gòu)的集成電路,執(zhí)行該線程;選擇單元,在上述控制單元執(zhí)行某線程的期間,選擇下面執(zhí)行的線程。
2.如權(quán)利要求1所述的處理器,其特征在于,上述控制單元還在執(zhí)行線程的期間,對于正在執(zhí)行的線程正使用的上述集成電路部分以外的部分,使上述重構(gòu)單元根據(jù)與上述選擇單元所選擇的線程相對應(yīng)的電路構(gòu)成信息進(jìn)行重構(gòu)。
3.如權(quán)利要求1所述的處理器,其特征在于,上述處理器還包括運(yùn)算器;上述控制單元使用上述運(yùn)算器和上述進(jìn)行了重構(gòu)的集成電路,執(zhí)行該線程。
4.一種處理器,執(zhí)行由多個(gè)指令構(gòu)成的程序,其特征在于,具備可重構(gòu)的集成電路;重構(gòu)單元,根據(jù)電路構(gòu)成信息,將上述集成電路的一部分進(jìn)行重構(gòu);構(gòu)成信息存儲單元,存儲與多個(gè)指令的各個(gè)相對應(yīng)的電路構(gòu)成信息;選擇單元,根據(jù)上述電路構(gòu)成信息,選擇可同時(shí)重構(gòu)上述集成電路的2個(gè)以上的指令;執(zhí)行單元,使用根據(jù)與上述選擇單元所選擇的2個(gè)以上的指令相對應(yīng)的電路構(gòu)成信息進(jìn)行了重構(gòu)的集成電路,并行執(zhí)行該2個(gè)以上的指令。
5.一種線程執(zhí)行方法,是在具有可重構(gòu)的集成電路、且循環(huán)地按照分配給線程的各時(shí)間來執(zhí)行多個(gè)線程的處理器中使用的線程執(zhí)行方法,其特征在于,該線程執(zhí)行方法包括重構(gòu)步驟,根據(jù)電路構(gòu)成信息,將上述集成電路的一部分進(jìn)行重構(gòu);構(gòu)成信息存儲步驟,在存儲器中存儲與多個(gè)線程的各個(gè)對應(yīng)的電路構(gòu)成信息;控制步驟,依次使用根據(jù)對應(yīng)于線程的電路構(gòu)成信息進(jìn)行了重構(gòu)的集成電路,執(zhí)行該線程;選擇步驟,在上述控制步驟執(zhí)行某線程的期間,選擇下面執(zhí)行的線程。
全文摘要
本發(fā)明涉及的處理器,是循環(huán)地按照分配給線程的時(shí)間來執(zhí)行多個(gè)線程的處理器,其具備可重構(gòu)的集成電路;事先存儲與多個(gè)線程的各個(gè)對應(yīng)的電路構(gòu)成信息,根據(jù)電路構(gòu)成信息將上述集成電路的一部分進(jìn)行重構(gòu),依次使用根據(jù)對應(yīng)于線程的電路構(gòu)成信息進(jìn)行了重構(gòu)的集成電路,執(zhí)行該線程。在執(zhí)行某線程的期間,選擇下面執(zhí)行的線程,對于正在執(zhí)行的線程在使用的上述集成電路部分之外的部分,為了下面執(zhí)行的線程而進(jìn)行重構(gòu)。
文檔編號G06F9/46GK101031884SQ20068000080
公開日2007年9月5日 申請日期2006年4月12日 優(yōu)先權(quán)日2005年4月12日
發(fā)明者森下廣之, 橋本隆, 清原督三 申請人:松下電器產(chǎn)業(yè)株式會(huì)社