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