JPWO2011125174A1 - 動的再構成プロセッサ及びその動作方法 - Google Patents

動的再構成プロセッサ及びその動作方法 Download PDF

Info

Publication number
JPWO2011125174A1
JPWO2011125174A1 JP2012509223A JP2012509223A JPWO2011125174A1 JP WO2011125174 A1 JPWO2011125174 A1 JP WO2011125174A1 JP 2012509223 A JP2012509223 A JP 2012509223A JP 2012509223 A JP2012509223 A JP 2012509223A JP WO2011125174 A1 JPWO2011125174 A1 JP WO2011125174A1
Authority
JP
Japan
Prior art keywords
instruction
clock
computing unit
minimum set
arithmetic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012509223A
Other languages
English (en)
Inventor
俊郎 磯村
俊郎 磯村
益三 嵩本
益三 嵩本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toyota Motor Corp
Original Assignee
Toyota Motor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toyota Motor Corp filed Critical Toyota Motor Corp
Publication of JPWO2011125174A1 publication Critical patent/JPWO2011125174A1/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/06Clock generators producing several clock signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7892Reconfigurable logic embedded in CPU, e.g. reconfigurable unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

命令毎に一連の各工程を実行して各命令を実行する動的再構成プロセッサであって、動的構成演算器と、クロック生成回路とを備え、一連の各工程は、動的構成演算器を用いて命令を実行する命令実行工程を除き、メインクロックに基づいて開始タイミングが規定され、動的構成演算器を用いて命令を実行する命令実行工程は、命令に対応する演算器を動的構成演算器により動的に構成する演算器生成サブ工程と、演算器生成サブ工程で構成した演算器により命令に対応した演算を行う演算サブ工程とを含み、演算器生成サブ工程及び演算サブ工程は、サブクロックに基づいて開始タイミングが規定され、サブクロックは、演算器生成サブ工程及び命令実行サブ工程が、命令実行工程の直後の工程の開始タイミングよりも前に完了する態様で生成される。

Description

本発明は、命令毎に一連の各工程を実行して各命令を実行する動的再構成プロセッサ及びその動作方法に関する。
従来から、演算器構成情報を格納する書き換え可能なメモリ(RAM)と、メモリ内の演算器構成情報に基づいて所定の専用演算器を構成する専用演算ユニットとを備える演算処理装置が知られている(例えば、特許文献1参照)。この専用演算器はFPGA(Field Programmable Gate Array)により構成されている。
特開平7−175631号公報
ところで、RISC(Reduced Instruction Set Computer)プロセッサ等では、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)というサイクルで処理が行われており、エクゼキュートは、CPUのハードウェアとして命令毎に予め用意された演算器を用いて実行される。また、高速化のためにパイプライン処理などが実行されている。
しかしながら、命令毎に演算器をハードウェアで用意する構成では、ハードウェアの面積が増加するという問題がある。例えば、代表的な命令として、ロード/ストア、整数算術演算/論理演算命令、分岐命令、ビット操作命令等がある。これらの命令のそれぞれには、数種類から数十種類の命令があり、更に、オペランド数に応じた命令や、ワード長に応じた命令を用意している場合もあり、32ビットマイコンでは数百にも及ぶ場合がある。
これら1つ1つの命令に対して、CPU内部に演算器(ハードウェア)を予め用意しなければならないが、実際には、同時刻に1つの演算器しか動作しておらず、他の演算器は全て停止している。
この点、特許文献1に記載の構成では、FPGAにより専用演算器を構成することができるので、基本演算ユニット内に用意すべき基本演算器の数を減らすことができ、演算の高速化及び装置の小型化を図ることができる。
しかしながら、命令に応じて動的にFPGAにより演算器を構成する構成において、命令を遅れ無しで実行するためには、命令に応じて動的にFPGAにより演算器を構成する処理と、該構成した演算器により演算を行う処理とを、データキャッシュのクロックタイミングよりも前に完了させる必要がある。
そこで、本発明は、命令に応じて動的に演算器を構成する処理と、該構成した演算器により演算を行う処理と遅れの無いタイミングで完了させることができる動的再構成プロセッサ及びその動作方法の提供を目的とする。
上記目的を達成するため、本発明の一局面によれば、命令毎に一連の各工程を実行して各命令を実行する動的再構成プロセッサであって、
命令に対応する演算器を動的に構成する動的構成演算器と、
メインクロック及び前記メインクロックとは別のサブクロックを生成するクロック生成回路とを備え、
前記一連の各工程は、前記動的構成演算器を用いて命令を実行する命令実行工程を除き、前記メインクロックに基づいて開始タイミングが規定され、
前記動的構成演算器を用いて命令を実行する命令実行工程は、命令に対応する演算器を前記動的構成演算器により動的に構成する演算器生成サブ工程と、前記演算器生成サブ工程で構成した演算器により前記命令に対応した演算を行う演算サブ工程とを含み、
前記演算器生成サブ工程及び前記演算サブ工程は、前記サブクロックに基づいて開始タイミングが規定され、
前記サブクロックは、前記演算器生成サブ工程及び前記命令実行サブ工程が、前記命令実行工程の直後の工程の開始タイミングよりも前に完了する態様で生成されることを特徴とする、動的再構成プロセッサが提供される。
本発明のその他の一局面によれば、命令を取り出すフェッチ工程と、取り出した前記命令をデコードするデコード工程と、エクゼキュート工程と、データキャッシュ工程とを含むプロセッサの動作方法であって、
前記エクゼキュート工程は、前記命令に対応する演算器を動的に構成する演算器生成サブ工程及び前記演算器生成サブ工程で構成した演算器により前記命令に対応した演算を行う演算サブ工程を含み、
当該方法は、
前記メインクロックで規定される第1のタイミングで前記フェッチ工程を実行し、
前記メインクロックで規定される第2のタイミングで前記デコード工程を実行し、
前記メインクロックで規定される第3のタイミングに代えて、前記メインクロックとは別のサブクロックで規定される第1のタイミングで、前記演算器生成サブ工程を実行すると共に、前記サブクロックで規定される第2のタイミングで、前記演算サブ工程を実行し、
前記メインクロックで規定される第4のタイミングで前記データキャッシュ工程を実行することを特徴とする、方法が提供される。
本発明によれば、命令に応じて動的に演算器を構成する処理と、該構成した演算器により演算を行う処理と遅れの無いタイミングで完了させることができる動的再構成プロセッサ及びその動作方法が得られる。
本発明の実施例1による動的再構成プロセッサ1の構成を概略的に示す図である。 最小セット演算器11の設定方法の一例を示す表図である。 最小セット演算器11の設定方法のその他の一例を示す表図である。 最小セット演算器11の設定方法の更なるその他の一例を示す表図である。 本実施例による単一の最小セット演算器11によりシングルスレッド(パイプラインなし)を実現した場合の時系列の一例を示す図である。 図5に対応した最小セット演算器11の遷移態様を示す図である。 本実施例による2つの最小セット演算器11A,11Bによりマルチスレッド(2段のパイプライン)を実現した場合の時系列の一例を示す図である。 図7に対応した最小セット演算器11A,11Bで構成される演算器の遷移態様を示す図である。 本実施例による2つの最小セット演算器11A,11Bによりマルチスレッド(5段のパイプライン)を実現した場合の時系列の一例を示す図である。 本実施例による2つの最小セット演算器11A,11Bによりスーパースカラーアーキテクチャを実現した場合の時系列の一例を示す図である。 図10に対応した最小セット演算器11A,11Bで構成される演算器の遷移態様を示す図である。 本発明の実施例2による動的再構成プロセッサ2の構成を概略的に示す図である。 本発明のその他の一実施例(実施例3)による動的再構成プロセッサ3の構成を概略的に示す図である。 CPU22によりシングルスレッド(パイプラインなし)を実現した場合の時系列の一例を示す図である。 CPU22によりマルチスレッド(2段のパイプライン)を実現した場合の時系列の一例を示す図である。 CPU22によりスーパースカラーアーキテクチャを実現した場合の時系列の一例を示す図である。 パイプラインがストールするような状況を示す図である。 パイプラインのストールを防止できる態様での最小セット演算器11の適用例を示す図である。 クロック生成回路12の構成の一例を(第1の遅れ防止方法)示す図である。 図19に示すクロック生成回路12により実現される遅れ防止機能の原理を示す図である。 クロックCLK1のみを用いる場合に生じる遅れを示す図である。 クロック生成回路12の構成のその他の一例(第2の遅れ防止方法)を示す図である。 図22に示すクロック生成回路12により実現される遅れ防止機能の原理を示す図である。 第2の遅れ防止方法単独では遅れを完全に防止できない状況を示す図である。 第1の遅れ防止方法及び第2の遅れ防止方法の組み合わせにより実現される遅れ防止機能の原理を示す図である。
以下、図面を参照して、本発明を実施するための最良の形態の説明を行う。
図1は、本発明の一実施例(実施例1)による動的再構成プロセッサ1の構成を概略的に示す図である。
動的再構成プロセッサ1は、CPU10と、クロック生成回路12とを含む。クロック生成回路12は、CPU10の動作に必要な2つのクロックCLK1,CLK2を発生する。クロックCLK1は、メインクロックである。クロックCLK2は、後述の遅れ防止のために生成される特別なクロックである。クロック生成回路12の構成及びクロックCLK2の機能については、後に詳説する。尚、以下の説明において、図18までの説明までは、クロックという用語は、メインクロックを指す。図19以降の説明において、2つのクロックCLK1,CLK2を区別して説明する。
CPU10は、命令実行部(主に演算回路)を構成する最小セット演算器11を含む。CPU10は、演算回路以外については、命令デコーダ制御回路、命令キャッシュ、レジスタファイル、データキャッシュ等(図示せず)の一般的な構成を含んでよい。CPU10には、メモリ(ROM,RAM等)が接続される。
最小セット演算器11は、全命令セットに対応する演算器を生成可能な最小限のゲート(又は素子)を備える。全命令セットとは、動的再構成プロセッサ1に組み込まれるソフトウェアに含まれる全命令セットであってよいし、汎用性を持たせるために、動的再構成プロセッサ1に組み込まれるソフトウェアに含まれる命令以外の命令を含む全命令セットであってもよい。生成可能とは、実際に生成されるか否かを問わない趣旨であり、理論的に生成できる状態をいう。
図2は、最小セット演算器11の設定方法の一例を示す表図である。図2に示す例では、最小セット演算器11は、全命令セットに対応する演算器を生成可能な最小限のゲートを備えるFPGA(Field Programmable Gate Array)からなる。即ち、最小セット演算器11は、いわゆるFPGA合成用のゲートレベルのゲート単位で最小限のゲートを備えるように構成される。FPGA合成用のゲートは、NAND,NOR,NOTのようなASIC(application specific integrated circuit)論理合成用のゲートに加えて、AND,ORなどの複雑なゲート(ASIC論理合成用のゲートを組み合わせて構成されるゲート)を含む。例えば、ANDは、NANDとNOTを組み合わせて構成されるゲートであり、ORは、NORとNOTを組み合わせて構成されるゲートである。
図2には、全命令セットに含まれる各命令に対応する各演算器が示されている。例えば、演算器1Cは、16ビットの桁上げの無い加算命令を実行するための演算器であり、例えば2入力のANDゲートが30個、ORゲートが20個、NOTゲートが40個、MUXゲートが4個、DFF(Dフリップフロップ)が17個、等から構成されることを意味する。演算器C2,...,Cn(nは全命令セットのそれぞれの命令に対応した演算器の数)は、同様に、全命令セット(上記の演算器1Cに係る加算命令を除く全命令)のそれぞれの命令に対応した他の演算器を表す。尚、表図に示されている数は、例示的に挙げているだけであり、正しい数でない。
図2に示す例では、最小セット演算器11を構成するに当たり、2入力のANDゲートについては、全命令セットに対応する全演算器C1,...,Cnのそれぞれを構成するのに必要な数(本例では、30,20,...,25)の最大数(本例では、30)の2入力のANDゲートが用意され、同様に、3入力のANDゲートについては、全命令セットに対応する全演算器C1,...,Cnのそれぞれを構成するのに必要な数(本例では、0,20,...,15)の最大数(本例では、20)の3入力のANDゲートが用意され、同様に、ORゲートについては、全命令セットに対応する全演算器C1,...,Cnのそれぞれを構成するのに必要な数(本例では、20,30,...,15)の最大数(本例では、30)のORゲートが用意され、同様に、NOTゲートについては、全命令セットに対応する全演算器C1,...,Cnのそれぞれを構成するのに必要な数(本例では、40,30,...,20)の最大数(本例では、40)のNOTゲートが用意され、同様に、XORゲートについては、全命令セットに対応する全演算器C1,...,Cnのそれぞれを構成するのに必要な数(本例では、0,4,...,0)の最大数(本例では、4)のXORゲートが用意され、同様に、MUXゲートについては、全命令セットに対応する全演算器C1,...,Cnのそれぞれを構成するのに必要な数(本例では、4,8,...,5)の最大数(本例では、8)のMUXゲートが用意され、同様に、DFFゲートについては、全命令セットに対応する全演算器C1,...,Cnのそれぞれを構成するのに必要な数(本例では、17,8,...,16)の最大数(本例では、17)のDFFゲートが用意され、といった具合に、各ゲートについて、全演算器C1,...,Cnの任意の1つを生成できるようにするのに必要な最小限のゲート数が用意される。
図3は、最小セット演算器11の設定方法のその他の一例を示す表図である。図3に示す例では、最小セット演算器11は、FPGA合成用のゲートレベルのゲート単位よりも小さい単位で最小限のゲートを備えるように構成される。具体的には、最小セット演算器11は、いわゆるASIC論理合成用のゲートレベルのゲート単位で最小限のゲートを備えるように構成される。即ち、最小セット演算器11は、NAND,NOR及びNOTのゲート単位で最小限のゲートを備えるように構成される。
図3には、図2と同様に、全命令セットに含まれる各命令に対応する各演算器が示されている。図3の表図の見方は、図2と同様である。全命令セットに対応する全演算器C1,...,Cnのそれぞれに対して、NAND,NOR及びNOTのそれぞれのゲートの必要数が示されている。尚、表図に示されている数は、例示的に挙げているだけであり、正しい数でない。
図3に示す例では、図2に示す例と同様に、最小セット演算器11を構成するに当たり、2入力のNANDゲートについては、全命令セットに対応する全演算器C1,...,Cnのそれぞれを構成するのに必要な数(本例では、30,20,...,25)の最大数(本例では、30)の2入力のNANDゲートが用意され、といった具合に、NAND,NOR及びNOTのそれぞれのゲートについて、全演算器C1,...,Cnの任意の1つを生成できるようにするのに必要な最小限のゲート数が用意される。
図4は、最小セット演算器11の設定方法の更なるその他の一例を示す表図である。尚、表図に示されている数は、例示的に挙げているだけであり、正しい数でない。
図4に示す例では、最小セット演算器11は、ASIC論理合成用のゲートレベルのゲート単位よりも更に小さい素子単位で最小限の素子を備えるように構成される。具体的には、最小セット演算器11は、PchMOSFET(Metal-Oxide-Semiconductor Field-Effect Transistor)及びNchMOSFETレベルの素子単位で最小限の素子を備えるように構成される。即ち、最小セット演算器11は、全演算器C1,...,Cnの任意の1つを生成できるようにするのに必要な最小限のPchMOSFET及びNchMOSFETを備えるように構成される。
ここで、図2に示す例に比べて図3に示す例の方が粒度が小さく、図3に示す例に比べて図4に示す例の方が粒度が小さい。粒度が小さくなるほど、無駄が少なくなる。但し、その反面として、粒度が小さくなるほど、最小セット演算器11を用いて後述の演算器を構成するのに要する時間が長くなる。
このように構成された最小セット演算器11は、全命令セットに対応する全演算器C1,...,Cnのうちの任意の1つの演算器を構成することができる。即ち、最小セット演算器11は、対応する結線情報に基づいて、ゲート(又は素子)の結線を行うことで、全演算器C1,...,Cnのうちの任意の1つの演算器を構成することができる。結線情報は、全演算器C1,...,Cnのそれぞれに対応して予め用意され(即ち全命令セットのそれぞれに対応して予め用意され)、メモリに記憶されていてよい。尚、結線情報は、最小セット演算器11の最小単位に応じて規定される。例えば、最小セット演算器11が図2に示した例のようにFPGA合成用のゲート単位を最小単位として構築されている場合は、FPGA合成用のゲート単位で結線情報(即ち、各AND、各OR等のゲート間の結線態様を表す情報)が生成・記憶される。また、最小セット演算器11が図3に示した例のようにASIC論理合成用のゲート単位を最小単位として構築されている場合は、ASIC論理合成用のゲート単位で結線情報(即ち、各NAND,各NOR及び各NOTのゲート間の結線態様を表す情報)が生成・記憶される。また、最小セット演算器11が図4に示した例のようにPchMOSFET及びNchMOSFETの素子単位を最小単位として構築されている場合は、PchMOSFET及びNchMOSFETの素子単位で結線情報(即ち、各PchMOSFETのソース・ドレイン及び各NchMOSFETのソース・ドレイン間の結線態様を表す情報)が生成・記憶される。
図5は、本実施例による単一の最小セット演算器11によりシングルスレッド(パイプラインなし)を実現した場合の時系列の一例を示す図である。図6は、図5に対応した最小セット演算器11で構成される演算器の遷移態様を示す図である。図5において、t=4、t=9は、命令1のIFのクロックを1番目として何番目のクロックかを表し、それぞれの命令1,2に係るデータキャッシュ(DC)のクロックの発生時点を表す。
図5に示すように、本例では、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)というサイクルで処理が実行される。
フェッチ(IF)では、命令キャッシュから命令を取り出す。デコード(ID)では、取り出した命令をデコードすると共にレジスタオペランドをフェッチする。エクゼキュート(EX)では、デコード結果とフェッチしたレジスタの値を元に命令(演算等)を実行する。また、ロード/ストア命令の場合は実行アドレスの計算を行い、分岐命令の場合は分岐先のアドレスの計算を行う。但し、エクゼキュート工程は、これらの演算処理に加えて、後述のように最小セット演算器11による演算器生成処理を含む。データキャッシュ(DC)では、エクゼキュート工程で計算したアドレスに対応するメモリの値をデータキャッシュからリードする。ライトバック(WB)では、エクゼキュート工程で計算した結果又はデータキャッシュ工程でフェッチしたオペランドをレジスタに格納する。また、ストア命令の場合はデータキャッシュにライトする。
ここでは、一例として、命令1がADD(加算)命令であり、命令2がMUL(乗算)命令であるとする。本実施例では、命令1がフェッチされ、命令1がデコードされると(命令1が理解されると)、命令1(加算)に応じた演算器(加算器)が最小セット演算器11により構成される(図6の命令1の後の加算器参照)。そして、最小セット演算器11により構成された加算器により演算が実行される(即ち、命令1が実行される)。この最小セット演算器11による加算器の結線及び構成された加算器による演算は、命令1に係るDCのクロックの発生時(t4)までに完了するように構成される(この構成の詳細は、後述する)。命令1が実行されると、演算結果がレジスタに格納され、命令1に対する処理が終了する。
命令1に対する処理が終了すると、命令2がフェッチされ、命令2がデコードされると(命令2が理解されると)、命令2(乗算)に応じた演算器(乗算器)が最小セット演算器11により構成される(図6の命令2の後の乗算器参照)。そして、最小セット演算器11により構成された乗算器により演算が実行される(即ち、命令2が実行される)。この最小セット演算器11による乗算器の結線及び構成された乗算器による演算は、命令2に係るDCのクロックの発生時(t9)までに完了するように構成される(この構成の詳細は、後述する)。命令2が実行されると、演算結果がレジスタに格納され、命令2に対する処理が終了する。尚、最小セット演算器11の結線は、各命令に対する処理が終了する毎に一旦クリア(リセット)されてもよいし、若しくは、上書き形式で命令毎に変更されてもよい。このようにして、本実施例による単一の最小セット演算器11によるシングルスレッド処理が実行されていく。
図7は、本実施例による2つの最小セット演算器11(ここでは、区別のため、それぞれ参照符号11A,11Bを付す)によりマルチスレッド(2段のパイプライン)を実現した場合の時系列の一例を示す図である。図8は、図7に対応した最小セット演算器11A,11Bで構成される演算器の遷移態様を示す図である。図7において、t=3、t=4、t=5は、命令1のIFのクロックを1番目として何番目のクロックかを表し、命令1に係るエクゼキュート(EX)のクロックの発生時点、及び、それぞれの命令1,2に係るデータキャッシュ(DC)のクロックの発生時点を表す。
同様に、本例では、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)というサイクルで処理が実行される。
ここでは、一例として、命令1がADD(加算)命令であり、命令2がMUL(乗算)命令であるとする。
命令1に関しては、命令1がフェッチされ、命令1がデコードされると(命令1が理解されると)、命令1(加算)に応じた演算器(加算器)が最小セット演算器11Aにより構成される(図8の命令1の後の加算器参照)。そして、最小セット演算器11Aにより構成された加算器により演算が実行される(即ち、命令1が実行される)。この最小セット演算器11Aによる加算器の結線及び構成された加算器による演算は、命令1に係るDCのクロックの発生時(t4)までに完了するように構成される(この構成の詳細は、後述する)。命令1が実行されると、演算結果がレジスタに格納され、命令1に対する処理が終了する。
命令2に関しては、命令2がフェッチされ、命令2がデコードされると(命令2が理解されると)、命令2(乗算)に応じた演算器(乗算器)が最小セット演算器11Bにより構成される(図8の命令2の後の乗算器参照)。そして、最小セット演算器11Bにより構成された乗算器により演算が実行される(即ち、命令2が実行される)。この最小セット演算器11Bによる乗算器の結線及び構成された乗算器による演算は、命令2に係るDCのクロックの発生時(t5)までに完了するように構成される(この構成の詳細は、後述する)。命令2が実行されると、演算結果がレジスタに格納され、命令2に対する処理が終了する。このようにして、本実施例による最小セット演算器11A,11Bによるマルチスレッド(2段のパイプライン)処理が実行されていく。
尚、マルチスレッドのパイプラインの段数(本数)は、上述の2段に限られず、3段以上の任意の段数であってよい。最小セット演算器11は、パイプラインの段数に応じた個数設けられてもよいが、図9を参照して後述するように最小セット演算器11は、必要最小限の個数が望ましい。
図9は、本実施例による2つの最小セット演算器11(ここでは、区別のため、それぞれ参照符号11A,11Bを付す)によりマルチスレッド(5段のパイプライン)を実現した場合の時系列の一例を示す図である。図9において、t=1〜9は、命令1のIFのクロックを1番目として何番目のクロックかを表す。
ここでは、一例として、命令1がADD(加算)命令であり、命令2がMUL(乗算)命令であり、命令3がSUB(減算)命令であり、命令4がADD(加算)命令であり、命令5がMUL(乗算)命令であるとする。
命令1に関しては、t=1で命令1がフェッチされ、命令1がデコードされると(命令1が理解されると)、命令1(加算)に応じた演算器(加算器)が最小セット演算器11Aにより構成される。そして、最小セット演算器11Aにより構成された加算器により演算が実行される(即ち、命令1が実行される)。この最小セット演算器11Aによる加算器の結線及び構成された加算器による演算は、命令1に係るDCのクロックの発生時(t4)までに完了するように構成される(この構成の詳細は、後述する)。命令1が実行されると、演算結果がレジスタに格納され、命令1に対する処理が終了する。
命令2に関しては、t=2で命令2がフェッチされ、命令2がデコードされると(命令2が理解されると)、命令2(乗算)に応じた演算器(乗算器)が最小セット演算器11Bにより構成される。そして、最小セット演算器11Bにより構成された乗算器により演算が実行される(即ち、命令2が実行される)。この最小セット演算器11Bによる乗算器の結線及び構成された乗算器による演算は、命令2に係るDCのクロックの発生時(t5)までに完了するように構成される(この構成の詳細は、後述する)。命令2が実行されると、演算結果がレジスタに格納され、命令2に対する処理が終了する。
命令3に関しては、t=3で命令3がフェッチされ、命令3がデコードされると(命令3が理解されると)、命令3(減算)に応じた演算器(減算器)が最小セット演算器11Aにより構成される。そして、最小セット演算器11Aにより構成された減算器により演算が実行される(即ち、命令3が実行される)。この最小セット演算器11Aによる減算器の結線及び構成された減算器による演算は、命令3に係るDCのクロックの発生時(t6)までに完了するように構成される(この構成の詳細は、後述する)。命令3が実行されると、演算結果がレジスタに格納され、命令3に対する処理が終了する。ここで、命令3に関しては、命令1に関して使用された最小セット演算器11Aが減算器を構成するのに使用されている。これは、命令3のデコード(ID)の処理が完了するまでには、命令1のエクゼキュート(EX)は完了しており、命令1に関して使用された最小セット演算器11Aが解放された状態(利用可能な状態)となっているためである。
命令4に関しては、t=4で命令4がフェッチされ、命令4がデコードされると(命令4が理解されると)、命令4(加算)に応じた演算器(加算器)が最小セット演算器11Bにより構成される。そして、最小セット演算器11Bにより構成された加算器により演算が実行される(即ち、命令4が実行される)。この最小セット演算器11Bによる加算器の結線及び構成された加算器による演算は、命令4に係るDCのクロックの発生時(t7)までに完了するように構成される(この構成の詳細は、後述する)。命令4が実行されると、演算結果がレジスタに格納され、命令4に対する処理が終了する。同様に、この命令4に関しては、命令2に関して使用された最小セット演算器11Bが加算器を構成するのに使用されている。これは、命令4のデコード(ID)の処理が完了するまでには、命令2のエクゼキュート(EX)は完了しており、命令2に関して使用された最小セット演算器11Bが解放された状態(利用可能な状態)となっているためである。
同様にして命令5に関しては、命令1及び命令3に関して使用された最小セット演算器11Aを利用して演算器を構成し、演算が実行される。
尚、図9に示す例では、5段のパイプラインのマルチスレッドに対して、2つの最小セット演算器11A、11Bを命令の順に交互に使用することで、演算器不足によるパイプラインのストールの発生を防止しつつ、ハードウェアリソースの低減を図っている。しかしながら、5段のパイプラインのマルチスレッドに対して、3つの最小セット演算器11又は4つの最小セット演算器11を順に周期的に使用することも可能である。このような考え方は、パイプラインの段数に応じて適宜適用可能である。
図10は、本実施例による2つの最小セット演算器11(ここでは、区別のため、それぞれ参照符号11A,11Bを付す)によりスーパースカラー(superscalar)(並列実行)を実現した場合の時系列の一例を示す図である。図11は、図10に対応した最小セット演算器11A,11Bで構成される演算器の遷移態様を示す図である。
同様に、本例では、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)というサイクルで処理が実行される。ここでは、一例として、命令1がADD(加算)命令であり、命令2がADD(加算)命令であるとする。
図10に示す例では、命令1がフェッチされ、命令1がデコードされると(命令1が理解されると)、命令1(加算)に応じた演算器(加算器)が最小セット演算器11Aにより構成される(図11の命令1の後の加算器参照)。命令1と同時に、命令2がフェッチされ、命令2がデコードされると(命令2が理解されると)、命令2(加算)に応じた演算器(加算器)が最小セット演算器11Bにより構成される(図10の命令2の後の加算器参照)。そして、最小セット演算器11A、11Bにより構成された加算器のそれぞれにより演算が実行される(即ち、命令1及び命令2が同時に実行される)。この最小セット演算器11A、11Bによる加算器の結線及び構成された加算器による演算は、命令1及び命令2に係るDCのクロックの発生時(t4)までに完了するように構成される(この構成の詳細は、後述する)。命令1及び命令2が実行されると、各演算結果がレジスタに格納され、命令1及び命令2に対する処理が終了する。このようにして、本実施例による最小セット演算器11A,11Bによるスーパースカラー処理が実行されていく。
尚、並列処理の数(並列数)は、上述の2の並列数に限られず、3以上の任意の並列数であってよい。いずれの場合も、最小セット演算器11は、並列数に応じた個数設けられる。これにより、演算器不足によるパイプラインのストールの発生を防止することができる。
図12は、本発明のその他の一実施例(実施例2)による動的再構成プロセッサ2の構成を概略的に示す図である。
本実施例の動的再構成プロセッサ2は、CPU10及びクロック生成回路12に加えて、故障修復用のゲート20を備える。CPU10、特に最小セット演算器11の構成や動作例については、上述の実施例1と同様であってよい。
故障修復用のゲート20は、最小セット演算器11の一部のゲートに故障が発生した場合に、故障したゲートに代えて使用される。即ち、最小セット演算器11の一部のゲートに故障が発生した場合に、故障したゲートを停止し、故障修復用のゲート20に接続(結線)を変更することで、動作を継続することができる。尚、ゲートの故障検出方法及びゲートの停止方法は、一般的に故障修復技術で使用される方法が利用されてもよい。
この目的のため、故障修復用のゲート20は、最小セット演算器11を構成する全ゲートよりも少ない数のゲートから構成され、最小セット演算器11の最小単位に対応する単位のゲートから構成される。例えば、最小セット演算器11が図2に示した例のようにFPGA合成用のゲート単位を最小単位として構築されている場合は、故障修復用のゲート20は、FPGA合成用のゲート単位で各ゲートを含む。また、最小セット演算器11が図3に示した例のようにASIC論理合成用のゲート単位を最小単位として構築されている場合は、故障修復用のゲート20は、ASIC論理合成用のゲート単位で各ゲートを含む。また、また、最小セット演算器11が図4に示した例のようにPchMOSFET及びNchMOSFETの素子単位を最小単位として構築されている場合は、故障修復用のゲート20に代えて、PchMOSFET及びNchMOSFETの素子単位で各素子を含む故障修復用の素子が設けられてよい。
最小セット演算器11が図2又は図3に示した例のようにゲート単位を最小単位として構築されている場合は、故障修復用のゲート20は、最小セット演算器11を構成する全ゲートのうちの所定のゲート(例えば、使用頻度の高いゲート)のみから構成されてもよい。或いは、最小セット演算器11が図2又は図3に示した例のようにゲート単位を最小単位として構築されている場合は、故障修復用のゲート20は、最小セット演算器11を構成する全種類のゲートを種類毎に一つずつ備えてもよい。
このように、実施例2によれば、ゲートレベルの単位又は素子レベルの単位で故障修復用のゲート20又は素子を構成するため、演算器単位で故障修復用の演算器を用意しておく構成に比べて、故障修復用に用意するゲート又は素子の数を低減することができ、小面積で故障修復用の構成を実現することができる。尚、当然ながら、図12では説明上、故障修復用のゲート20は最小セット演算器11とは別に示されているが、最小セット演算器11と一体に構成されてもよい(即ち、最小セット演算器11に組み込まれてよい)。
図13は、本発明のその他の一実施例(実施例3)による動的再構成プロセッサ3の構成を概略的に示す図である。
本実施例の動的再構成プロセッサ3は、CPU10及びクロック生成回路12に加えて、CPU(演算器)22を備える。CPU10、特に最小セット演算器11の構成や動作例については、上述の実施例1と同様であってよい。
CPU22は、一般的なCPUであってよく、ハードウェアとして複数の演算器(再構成可能でない演算器)を備える。尚、CPU22は、CPU10と一体に構成されてもよい。即ち、CPU22内の複数の演算器(再構成可能でない演算器)が、CPU10内の最小セット演算器11とは別に、CPU10内に組み込まれてもよい。この場合、共有可能なハードウェア(演算器以外のハードウェアであって、例えば命令デコーダ制御回路等)は1つにまとめられてもよい。
図14、図15及び図16は、CPU22の各動作例(シングルスレッド、マルチスレッド、スーパースカラー)をそれぞれ示し、最小セット演算器11の同動作例を示す図5、図7及び図10とそれぞれ対照となる図である。CPU22の各動作は、図14、図15及び図16に示すように、一般的な態様であってよい。
例えばシングルスレッドの場合は、図14に示すように、命令1(加算命令)がフェッチされ、命令1がデコードされると(命令1が理解されると)、エクゼキュート(EX)のクロック(t=3)にてCPU22内の加算器を用いて演算を行う。このようにして命令1が実行されると、演算結果がレジスタに格納され、命令1に対する処理が終了する。次いで、命令2(乗算命令)がフェッチされ、命令2がデコードされると(命令2が理解されると)、エクゼキュート(EX)のクロック(t=8)にてCPU22内の乗算器を用いて演算を行う。このようにして命令2が実行されると、演算結果がレジスタに格納され、命令2に対する処理が終了する。このようにして、各種命令に応じて予めハードウェアとして用意されているCPU22内の各種演算器を用いて各種演算を行い、シングルスレッド処理が実行されていく。
マルチスレッドの場合も同様に、図15に示すように、各種命令に応じて予めハードウェアとして用意されているCPU22内の各種演算器を用いて各種演算が実行される。スーパースカラーの場合も同様に、図16に示すように、各種命令に応じて予めハードウェアとして用意されているCPU22内の各種演算器を用いて各種演算が実行される。尚、図14、図15及び図16では、CPU22内の特定種類の演算器が示されているが、実際にはより他の種類の演算器が含まれる。尚、図16に示すCPU22は、スーパースカラー(並列実行)のために、図14及び図15に示すCPU22よりも多数の演算器を含んでいる。その際、並列数が2であることから、図16に示すCPU22は、図14及び図15に示すCPU22に対して完全に2倍の演算器を搭載してもよいが、ある程度多くの演算器が搭載されていてもよい。
本実施例3の動的再構成プロセッサ3は、命令に応じて、最小セット演算器11とCPU22とを使い分けるように構成されている。この使い分けの態様は、任意の態様であってよい。
一例として、頻繁に使う命令は、CPU22内の演算器により実行し、低頻度の命令のみ、最小セット演算器11により動的に構成される演算器により実行することとしてもよい。これにより、CPU22により高速演算を維持しつつ、最小セット演算器11により小面積化を図ることができる。尚、コンパイラに依存するが、実際には、高頻度命令は限られており、面積低減効果が大きく損なわれることはない。高頻度の命令か低頻度の命令かの区分けは、相対的な基準であってよく、高速演算の要求と小面積化の要求との兼ね合いで決定されてもよい。各命令の頻度は、動的再構成プロセッサ3が最も利用される用途における命令解析を行うことで判断されてもよい。このようにして、コンパイラ技術と連携してアーキテクチャ設計を行い、コストと速度のバランスを取ることが可能である。
その他の一例として、ハイプラインのストールが生じるような状況が発生した場合、即ち同一の命令が同時にCPU22内の演算器以上に発行された場合に(CPU22内の演算器で賄いきれない数の命令が発行された場合に)、最小セット演算器11が臨時的に使用されることしてもよい。即ち、CPU22は、通常時に処理を行い、CPU22の演算器で実行できない態様の命令群が発行された場合に、CPU22の演算器で実行できない命令に応じた演算器が、最小セット演算器11により動的に構成されてよい。そして、CPU22の演算器で処理できない命令は、このようにして最小セット演算器11により構成された演算器により実行される。
具体例として、例えば図17に示すように、加算命令の命令1,2,3が同時に発行されたが、CPU22内に加算器が2個しかない場合は、本来であれば、命令3のパイプラインがストールし、待ち状態が発生する。これに対して、本例では、図18に示すように、CPU22が保有している演算器以上の命令が同時に発行されたことが分かった時点で、最小セット演算器11を用いて加算器を生成し、ストールを回避する。尚、図18に示す例では、命令1及び命令2については、CPU22が保有している演算器(2個の加算器)により実行され、命令3については最小セット演算器11で構成された加算器により実行される。図18に示す例においても、この最小セット演算器11による加算器の結線及び構成された加算器による演算は、DCのクロックの発生時(t4)までに完了するように構成される(この構成の詳細は、後述する)。
次に、最小セット演算器11による演算器の生成(結線)及び生成された加算器による演算を、遅くともDCのクロックの発生時(即ち、演算結果を記憶する処理のためのクロック発生時)までに完了させるための構成(特に、クロック生成回路12の構成及び機能)について説明する。
図19は、クロック生成回路12の構成の一例(第1の遅れ防止方法)を示す図である。クロック生成回路12は、発信回路13と、第1の逓倍回路15と、第2の逓倍回路17とを含む。発信回路13には、外部に設けられる発信子14が接続される。尚、発信子14は、動的再構成プロセッサ1,2,3の内部に設けられてもよい。発信回路13の出力は、第1の逓倍回路15に接続される。第1の逓倍回路15の出力は、第2の逓倍回路17に接続される。実施例1,2による動的再構成プロセッサ1,2の場合、第1の逓倍回路15の出力は、CPU10に接続される。実施例3による動的再構成プロセッサ3の場合、第1の逓倍回路15の出力は、CPU10及びCPU22に接続される。
第1の逓倍回路15は、典型的にはPLL(Phase Locked Loop)で構成され、発信回路13で励起したクロック源信号の周波数forg(内部クロック周波数)を逓倍する。即ち、fPLL1=d×forg。ここで、fPLL1は、第1の逓倍回路15からのクロックCLK1の周波数を表し、dは定数である。尚、第1の逓倍回路15は、低周波数の場合は省略されてもよいが、一般的に、数十MHz以上の場合は、発信回路13により励起される周波数を逓倍して使用するために必要とされる。
第1の逓倍回路15の出力は、CPU10(又はCPU10及びCPU22)に入力され、メインクロックであるクロックCLK1として機能する。
第2の逓倍回路17は、典型的にはPLLで構成され、第1の逓倍回路15の出力であるクロックCLK1の周波数を逓倍(本例では、2逓倍)する。即ち、fPLL2=2×fPLL1。これにより、クロックCLK1に同期したクロックCLK2であって、クロックCLK1の周波数の2倍の周波数のクロックCLK2が生成される。クロックCLK2は、CPU10に入力される。尚、第2の逓倍回路17は、第1の逓倍回路15と並列に設けられてもよい。この場合、第2の逓倍回路17は、発信回路13で励起したクロック源信号の周波数forg(内部クロック周波数)を、第1の逓倍回路15に対して2倍の係数dで逓倍する。即ち、fPLL2=2×d×forg。
図20は、図19に示すクロック生成回路12により実現される遅れ防止機能(第1の遅れ防止方法)の原理を示す図である。図20には、クロックCLK1の波形と共に1つのサイクル処理(フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB))が時系列で示されている。図20において、t=1〜7は、命令1のIFのクロックを1番目として何番目のクロックかを表す。また、図20には、クロックCLK2の波形と共に、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)の各処理のタイミングが示されている。また、図20には、デコード(ID)における命令の理解が完了したタイミングが矢印で示されている。
フェッチ(IF)、デコード(ID)、データキャッシュ(DC)、ライトバック(WB)の各工程は、クロックCLK1に基づいて実行される。即ち、フェッチ(IF)、デコード(ID)、データキャッシュ(DC)、ライトバック(WB)の各工程は、それぞれ、クロックCLK1の立ち上がりエッジ(t=1,2,4,5)で開始される。
他方、本実施例では、エクゼキュート(EX)は、最小セット演算器11による演算器の生成(結線)及び生成された加算器による演算の2つの処理を含むため、本来であれば、CLK1の2クロックが必要である。しかしながら、図21に対照的に示すように、エクゼキュート(EX)にCLK1の2クロックを与えると、その分だけ(CLK1の1ブロック分だけ)データキャッシュ(DC)、ライトバック(WB)の各工程が遅れることになる。
そこで、図19及び図20に示す例では、最小セット演算器11による演算器の生成処理(結線情報に基づく結線)、及び、最小セット演算器11により生成された演算器による演算処理は、クロックCLK1を2逓倍したクロックCLK2に基づいて実行される。これにより、図20に示すように、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)を、データキャッシュ(DC)用のクロックCLK1の立ち上がりエッジ(t=4)までに完了することができる。即ち、逓倍クロックを用いて演算器生成及び演算を高速に行うことで、図21に示すような遅れが発生することなく、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)の各工程を実現することができる。
尚、以上の図20の説明は、実施例1,2、3による動的再構成プロセッサ1,2、3におけるCPU10の動作に関する。実施例3による動的再構成プロセッサ3におけるCPU22の動作は、通常通りであってよい。即ち、動的再構成プロセッサ3におけるCPU22では、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)の各工程は、通常通り、クロックCLK1に基づいて実行される。
図22は、クロック生成回路12の構成のその他の一例(第2の遅れ防止方法)を示す図である。図22に示すクロック生成回路12は、図19に示した例に対して、第2の逓倍回路17に代えて位相調整回路18を備える点が主に異なる。他の構成は同様であってよい。
位相調整回路18は、第1の逓倍回路15の出力であるクロックCLK1の位相を所定位相量だけずらしたクロックCLK2を生成する。所定位相量は、デコード(ID)の処理に要する時間(実処理時間)の最長時間(考えられうるワースト時間)ΔTに基づいて設定される。所定位相量は、デコード(ID)の最長時間ΔT(図23参照)よりも長くクロックCLK1の1クロック分の時間よりも短い時間に相当する位相範囲内で決定されてもよい。但し、好ましくは、所定位相量は、最小セット演算器11による演算器の生成処理(演算器生成)が可能な限り早く開始できるように、デコード(ID)の最長時間ΔTに相当する位相に設定される。ここでは、所定位相量は、デコード(ID)の最長時間ΔTに相当する位相に設定された場合を想定して説明を続ける。
図23は、図22に示すクロック生成回路12により実現される遅れ防止機能(第2の遅れ防止方法)の原理を示す図である。図23には、クロックCLK1の波形と共に1つのサイクル処理(フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB))が時系列で示されている。図23において、t=1〜7は、命令1のIFのクロックを1番目として何番目のクロックかを表す。また、図23には、クロックCLK2の波形と共に、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)の各処理のタイミングが示されている。また、図23には、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)の各工程に要する時間(実処理時間)の最長時間が示されている。また、デコード(ID)における命令の理解が完了したタイミング(最も遅い場合のタイミング)が矢印で示されている。尚、上述のデコード(ID)の最長時間ΔTは、デコード(ID)用のクロックCLK1の立ち上がりエッジ(t=2)から命令の理解が完了したタイミングまでの最長時間である。
フェッチ(IF)、デコード(ID)、データキャッシュ(DC)、ライトバック(WB)の各工程は、同様に、クロックCLK1に基づいて実行される。他方、図22及び図23に示す例では、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)の各処理は、クロックCLK1の位相をずらしたクロックCLK2に基づいて実行される。即ち、最小セット演算器11による演算器の生成処理(演算器生成)は、クロックCLK2に基づいて、命令の理解が完了したタイミングで実行開始され、従って、デコード(ID)用のクロックCLK1の立ち上がりエッジ(t=2)の次の立ち上がりエッジ(t=3)よりも前に実行開始される。また、最小セット演算器11により生成された演算器による演算処理(演算)は、次のクロックCLK2の立ち上がりエッジで実行開始される。これにより、図23に示すように、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)を、データキャッシュ(DC)用のクロックCLK1の立ち上がりエッジ(t=4)までに完了することができる。即ち、2相クロックを用いることで、図21に示すような遅れが発生することなく、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)の各工程を実現することができる。
尚、以上の図23の説明は、実施例1,2、3による動的再構成プロセッサ1,2、3におけるCPU10の動作に関する。実施例3による動的再構成プロセッサ3におけるCPU22の動作は、通常通りであってよい。即ち、動的再構成プロセッサ3におけるCPU22では、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)の各工程は、通常通り、クロックCLK1に基づいて実行される。後述の図24、25の説明についても同様である。
ところで、クロックCLK1の1クロック分の時間(即ち周期)とデコード(ID)の最長時間ΔTとの関係や、最小セット演算器11による演算器の生成処理(演算器生成)に要する時間、最小セット演算器11により生成された演算器による演算処理(演算)に要する時間等によっては、上述の第1及び第2の遅れ防止方法によっては遅れを防止できない場合も生じうる。かかる場合には、第1及び第2の遅れ防止方法を組み合わせたり、及び/又は、第1の遅れ防止方法において3逓倍以上の逓倍を行ったりすることで、遅れを防止することができる。
例えば、図24に示すように、図23に示す例よりもデコード(ID)の最長時間ΔTが長い場合には、その分だけクロックCLK1に対するクロックCLK2の位相ずれ量が大きくなり、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)を、データキャッシュ(DC)用のクロックCLK1の立ち上がりエッジ(t=4)までに完了することができなくなる。この場合は、例えば図25に示すように、第1及び第2の遅れ防止方法を組み合わせることで、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)を、データキャッシュ(DC)用のクロックCLK1の立ち上がりエッジ(t=4)までに完了することができる。
以上、本発明の好ましい実施例について詳説したが、本発明は、上述した実施例に制限されることはなく、本発明の範囲を逸脱することなく、上述した実施例に種々の変形及び置換を加えることができる。
例えば、上述した実施例では、2つのクロックCLK1、CLK2を用いて、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)を、データキャッシュ(DC)の開始時までに完了させている。しかしながら、3つ以上のクロックを用いてもよい。例えば、クロックCLK1に対して異なる位相ずれた2つのクロックを生成し、それぞれのクロックに基づいて、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)のそれぞれを、実施してもよい。
また、上述した実施例では、最小セット演算器11によるエクゼキュート(EX)は、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)の2つの処理に分離されている。しかしながら、3つ以上の処理に分解してもよい。例えば、最小セット演算器11による演算器の生成処理を、更に、命令に応じた結線情報の読み出し処理と、読み出した結線情報に基づいて最小セット演算器11により演算器を生成する処理とに分解してもよい。この場合も、同様に、3相クロックを用いたり、逓倍クロックを用いたりすることで、エクゼキュート(EX)をデータキャッシュ(DC)の開始時までに完了させることができる。
また、クロックCLK1、CLK2のそれぞれは、必ずしも常に同一周期であるクロックである必要はなく、上述のような遅れの生じないようなタイミングで各処理のトリガを与えるものであればよい。また、クロックCLK1自体が、例えば周波数スプレッダにより周波数を変動されていてもよい。
また、上述した実施例では、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)というサイクルで処理が実行されているが、他の形態であってよい。特に、エクゼキュート(EX)の直後の工程は任意である。また、データキャッシュ(DC)及びライトバック(WB)は、エクゼキュート(EX)での演算結果をメモリ又はレジスタファイル等に書き込む処理であればよい。また、データキャッシュ(DC)は、メモリアクセス(MA又はMEM)と称される場合もあり、呼び名は任意である。
また、上述した実施例では、好ましい実施例として、全命令セットに対応する演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器11が動的構成演算器として使用されているが、最小セット演算器11に代えて、最小セット演算器11よりも多くのゲート又は素子を備える動的構成演算器が使用されてもよいし(図12参照)、最小セット演算器11よりも少ないゲート又は素子を備える動的構成演算器が使用されてもよい。
1,2,3 動的再構成プロセッサ
10 CPU
11 最小セット演算器
12 クロック生成回路
13 発信回路
14 発信子
15 第1の逓倍回路
17 第2の逓倍回路
18 位相調整回路
20 故障修復用のゲート
22 CPU
【0003】
づいて開始タイミングが規定され、
前記サブクロックは、前記演算器生成サブ工程及び前記命令実行サブ工程が、前記命令実行工程の直後の工程の開始タイミングよりも前に完了する態様で生成され、
前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器からなることを特徴とする、動的再構成プロセッサが提供される。
[0011]
本発明のその他の一局面によれば、命令を取り出すフェッチ工程と、取り出した前記命令をデコードするデコード工程と、エクゼキュート工程と、データキャッシュ工程とを含むプロセッサの動作方法であって、
前記エクゼキュート工程は、全命令セットに対応する全ての演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器を用いて前記命令に対応する演算器を動的に構成する演算器生成サブ工程及び前記演算器生成サブ工程で構成した演算器により前記命令に対応した演算を行う演算サブ工程を含み、
当該方法は、
前記メインクロックで規定される第1のタイミングで前記フェッチ工程を実行し、
前記メインクロックで規定される第2のタイミングで前記デコード工程を実行し、
前記メインクロックで規定される第3のタイミングに代えて、前記メインクロックとは別のサブクロックで規定される第1のタイミングで、前記演算器生成サブ工程を実行すると共に、前記サブクロックで規定される第2のタイミングで、前記演算サブ工程を実行し、
前記メインクロックで規定される第4のタイミングで前記データキャッシュ工程を実行することを特徴とする、方法が提供される。
発明の効果
[0012]
本発明によれば、命令に応じて動的に演算器を構成する処理と、該構成した演算器により演算を行う処理と遅れの無いタイミングで完了させることができる動的再構成プロセッサ及びその動作方法が得られる。
図面の簡単な説明
[0013]
[図1]本発明の実施例1による動的再構成プロセッサ1の構成を概略的に示す図である。

Claims (13)

  1. 命令毎に一連の各工程を実行して各命令を実行する動的再構成プロセッサであって、
    命令に対応する演算器を動的に構成する動的構成演算器と、
    メインクロック及び前記メインクロックとは別のサブクロックを生成するクロック生成回路とを備え、
    前記一連の各工程は、前記動的構成演算器を用いて命令を実行する命令実行工程を除き、前記メインクロックに基づいて開始タイミングが規定され、
    前記動的構成演算器を用いて命令を実行する命令実行工程は、命令に対応する演算器を前記動的構成演算器により動的に構成する演算器生成サブ工程と、前記演算器生成サブ工程で構成した演算器により前記命令に対応した演算を行う演算サブ工程とを含み、
    前記演算器生成サブ工程及び前記演算サブ工程は、前記サブクロックに基づいて開始タイミングが規定され、
    前記サブクロックは、前記演算器生成サブ工程及び前記命令実行サブ工程が、前記命令実行工程の直後の工程の開始タイミングよりも前に完了する態様で生成されることを特徴とする、動的再構成プロセッサ。
  2. 前記命令実行工程の直後の工程の開始タイミングは、前記命令実行工程の直前の工程の開始タイミングに対して前記メインクロックの2クロック後に規定される、請求項1に記載の動的再構成プロセッサ。
  3. 前記サブクロックは、前記メインクロックを逓倍したクロック、前記メインクロックの位相をずらしたクロック、又は、前記メインクロックの位相をずらし且つ逓倍したクロックである、請求項1に記載の動的再構成プロセッサ。
  4. 前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲート又は素子を備える、請求項1に記載の動的再構成プロセッサ。
  5. 前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器からなり、
    前記最小セット演算器を用いてシングルスレッドで動作する、請求項1に記載の動的再構成プロセッサ。
  6. 前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器を複数個備え、
    各最小セット演算器を利用して並列処理又はパイプライン処理を行う、請求項1に記載の動的再構成プロセッサ。
  7. 再構成不能な演算器を更に備え、
    命令に応じて、前記動的構成演算器と前記再構成不能な演算器とを使い分け、
    前記再構成不能な演算器を用いて命令を実行する命令実行工程は、前記メインクロックに基づいて開始タイミングが規定される、請求項1に記載の動的再構成プロセッサ。
  8. 比較的高い頻度で発生する所定の命令に対しては、前記再構成不能な演算器を用い、比較的低い頻度で発生する命令に対しては、前記動的構成演算器を用いる、請求項7に記載の動的再構成プロセッサ。
  9. 同一命令が、該命令に対応する前記再構成不能な演算器の数よりも多い命令数で同時に発行された場合に、前記再構成不能な演算器の数の命令に対しては、前記再構成不能な演算器を用い、前記再構成不能な演算器の数よりも多い分の命令に対しては、前記動的構成演算器を用いる、請求項7に記載の動的再構成プロセッサ。
  10. 前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器からなり、
    前記最小セット演算器のゲート又は素子に故障が発生した場合に使用される故障補修用ゲート又は故障補修用素子を更に備える、請求項1に記載の動的再構成プロセッサ。
  11. 前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲートを、NAND,NOR,NOTのゲート単位で備える最小セット演算器からなり、
    前記記演算器生成サブ工程は、前記NAND,NOR,NOTのゲート単位で結線を行うことで、前記命令に対応する演算器を動的に構成する、請求項1に記載の動的再構成プロセッサ。
  12. 前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限の素子を、PchMOSFET及びNchMOSFETレベルの素子単位で備える最小セット演算器からなり、
    前記記演算器生成サブ工程は、前記PchMOSFET及びNchMOSFETレベルの素子単位で結線を行うことで、前記命令に対応する演算器を動的に構成する、請求項1に記載の動的再構成プロセッサ。
  13. 命令を取り出すフェッチ工程と、取り出した前記命令をデコードするデコード工程と、エクゼキュート工程と、データキャッシュ工程とを含むプロセッサの動作方法であって、
    前記エクゼキュート工程は、前記命令に対応する演算器を動的に構成する演算器生成サブ工程及び前記演算器生成サブ工程で構成した演算器により前記命令に対応した演算を行う演算サブ工程を含み、
    当該方法は、
    前記メインクロックで規定される第1のタイミングで前記フェッチ工程を実行し、
    前記メインクロックで規定される第2のタイミングで前記デコード工程を実行し、
    前記メインクロックで規定される第3のタイミングに代えて、前記メインクロックとは別のサブクロックで規定される第1のタイミングで、前記演算器生成サブ工程を実行すると共に、前記サブクロックで規定される第2のタイミングで、前記演算サブ工程を実行し、
    前記メインクロックで規定される第4のタイミングで前記データキャッシュ工程を実行することを特徴とする、方法。
JP2012509223A 2010-04-06 2010-04-06 動的再構成プロセッサ及びその動作方法 Pending JPWO2011125174A1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/056227 WO2011125174A1 (ja) 2010-04-06 2010-04-06 動的再構成プロセッサ及びその動作方法

Publications (1)

Publication Number Publication Date
JPWO2011125174A1 true JPWO2011125174A1 (ja) 2013-07-08

Family

ID=44762161

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012509223A Pending JPWO2011125174A1 (ja) 2010-04-06 2010-04-06 動的再構成プロセッサ及びその動作方法

Country Status (4)

Country Link
US (1) US20130013902A1 (ja)
JP (1) JPWO2011125174A1 (ja)
DE (1) DE112010005459T5 (ja)
WO (1) WO2011125174A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9778312B1 (en) * 2013-10-16 2017-10-03 Altera Corporation Integrated circuit calibration system using general purpose processors
GB2526018B (en) 2013-10-31 2018-11-14 Silicon Tailor Ltd Multistage switch

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06195149A (ja) * 1992-10-23 1994-07-15 Matsushita Electric Ind Co Ltd 集積回路
JPH08202549A (ja) * 1995-01-30 1996-08-09 Mitsubishi Electric Corp データ処理装置
JPH1185507A (ja) * 1997-09-05 1999-03-30 Mitsubishi Electric Corp 中央処理装置およびマイクロコンピュータシステム
JP2004005739A (ja) * 1999-08-30 2004-01-08 Ip Flex Kk データ処理装置の制御方法
JP2006178653A (ja) * 2004-12-21 2006-07-06 Ip Flex Kk データ処理システムおよびその制御方法
JP2008539485A (ja) * 2005-04-28 2008-11-13 ザ ユニバーシティ コート オブ ザ ユニバーシティ オブ エディンバラ 再構成可能命令セル・アレイ
JP2009140353A (ja) * 2007-12-07 2009-06-25 Toshiba Corp 再構成可能な集積回路、及びこれを用いた自己修復システム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07175631A (ja) 1993-12-16 1995-07-14 Dainippon Printing Co Ltd 演算処理装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06195149A (ja) * 1992-10-23 1994-07-15 Matsushita Electric Ind Co Ltd 集積回路
JPH08202549A (ja) * 1995-01-30 1996-08-09 Mitsubishi Electric Corp データ処理装置
JPH1185507A (ja) * 1997-09-05 1999-03-30 Mitsubishi Electric Corp 中央処理装置およびマイクロコンピュータシステム
JP2004005739A (ja) * 1999-08-30 2004-01-08 Ip Flex Kk データ処理装置の制御方法
JP2006178653A (ja) * 2004-12-21 2006-07-06 Ip Flex Kk データ処理システムおよびその制御方法
JP2008539485A (ja) * 2005-04-28 2008-11-13 ザ ユニバーシティ コート オブ ザ ユニバーシティ オブ エディンバラ 再構成可能命令セル・アレイ
JP2009140353A (ja) * 2007-12-07 2009-06-25 Toshiba Corp 再構成可能な集積回路、及びこれを用いた自己修復システム

Also Published As

Publication number Publication date
US20130013902A1 (en) 2013-01-10
WO2011125174A1 (ja) 2011-10-13
DE112010005459T5 (de) 2013-01-31

Similar Documents

Publication Publication Date Title
EP3449357B1 (en) Scheduler for out-of-order block isa processors
US8473880B1 (en) Synchronization of parallel memory accesses in a dataflow circuit
US8281113B2 (en) Processor having ALU with dynamically transparent pipeline stages
KR20140113444A (ko) 공유 메모리에 대한 액세스들의 동기화를 완화하기 위한 프로세서들, 방법들 및 시스템들
US8977835B2 (en) Reversing processing order in half-pumped SIMD execution units to achieve K cycle issue-to-issue latency
JP5231800B2 (ja) 半導体集積回路装置および半導体集積回路装置のクロック制御方法
US20070005942A1 (en) Converting a processor into a compatible virtual multithreaded processor (VMP)
US7752592B2 (en) Scheduler design to optimize system performance using configurable acceleration engines
US20090138674A1 (en) Electronic system for changing number of pipeline stages of a pipeline
KR20070107814A (ko) 의존성 명령을 패킷으로 그룹핑하여 실행하는 프로세서 및방법
JP2007299355A (ja) マイクロプロセッサ
US20240004663A1 (en) Processing device with vector transformation execution
WO2011125174A1 (ja) 動的再構成プロセッサ及びその動作方法
Uhrig et al. A two-dimensional superscalar processor architecture
US20190102197A1 (en) System and method for merging divide and multiply-subtract operations
Saghir et al. Datapath and ISA customization for soft VLIW processors
Bansal Reduced Instruction Set Computer (RISC): A Survey
Iyer et al. Extended split-issue: Enabling flexibility in the hardware implementation of nual VLIW DSPs
CN101615114B (zh) 完成两次乘法两次加法两次位移的微处理器实现方法
Eni et al. Efficient Hint-Based Event (EHE) issue scheduling for hardware multithreaded RISC-V pipeline
JP2014160393A (ja) マイクロプロセッサ及び演算処理方法
US9141392B2 (en) Different clock frequencies and stalls for unbalanced pipeline execution logics
Strauch Acceleration techniques for system-hyper-pipelined soft-processors on FPGAs
Ho Dynamical Synthesized Execution Resources (DySER) Deisgn Specification
JP6060853B2 (ja) プロセッサおよびプロセッサの処理方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130813

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131210