JP5096923B2 - 動的再構成論理回路を有するマルチスレッドプロセッサ - Google Patents

動的再構成論理回路を有するマルチスレッドプロセッサ Download PDF

Info

Publication number
JP5096923B2
JP5096923B2 JP2007546441A JP2007546441A JP5096923B2 JP 5096923 B2 JP5096923 B2 JP 5096923B2 JP 2007546441 A JP2007546441 A JP 2007546441A JP 2007546441 A JP2007546441 A JP 2007546441A JP 5096923 B2 JP5096923 B2 JP 5096923B2
Authority
JP
Japan
Prior art keywords
thread
cell
calculation
configuration
processor
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.)
Active
Application number
JP2007546441A
Other languages
English (en)
Other versions
JPWO2007060932A1 (ja
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2007546441A priority Critical patent/JP5096923B2/ja
Publication of JPWO2007060932A1 publication Critical patent/JPWO2007060932A1/ja
Application granted granted Critical
Publication of JP5096923B2 publication Critical patent/JP5096923B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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

Description

本発明は、再構成可能な論理回路を有するマルチスレッドプロセッサに関し、特に、スレッドの切り替え技術に関する。
近年のプロセッサ、例えば、デジタル信号を用いた映像、音響機器に搭載されるプロセッサは、複数の処理を並行して行う必要性から、マルチスレッド処理に対応している。
一方、プログラムにより論理構成を変更できるデバイス、例えば、FPGA(Field Programmable Gate Array)やPLD(ProgrammableLogic Device)が開発され、更に、その構成の変更を高速に行うことが出来る動的再構成論理回路が提案されている。
このようなソフトウェア処理の柔軟性とハードウェア処理の高速性の両立を目指して開発された動的再構成論理回路を利用して、マルチスレッド処理を行う技術が開発されている(特許文献1参照)。
この技術を、図33を用いて簡単に説明する。
マルチスレッドプロセッサ10と動的再構成演算回路20とは協調してマルチスレッド処理を実現する。
スレッド切り替えを指示するマルチスレッドプロセッサ10からの割り込みにより、動的再構成演算回路20の構成、具体的には、アレイ状に配した演算セル21の構成と演算セル間の接続構成とを、次に実行するスレッド用に再構成を行い、次のスレッドを実行する。
このスレッド切り替えの際、各演算セル21は、現在実行しているスレッドの演算内容を各演算セル21内の中間演算データ格納レジスタ211に退避した後、再構成を行う。
この技術により、スレッド切り替え時に、各演算セルの演算内容を破棄したり、全ての演算セルの演算が終了するまでマルチスレッドプロセッサ10が待つことをせずとも、全演算セルを次のスレッド用に再構成をすることができるので、マルチスレッドプロセッサ10が次のスレッドの実行を開始するまでの時間を短くでき、全体として演算性能の低下を抑制できるという利点がある。
特開2005−165961号公報
しかし、このような動的再構成演算回路は、各演算セル内に、実行するスレッド数分の格納レジスタが必要となることから、演算セルの個数やスレッド数が多くなればなるほど動的再構成演算回路の面積が大きくならざるを得ない。
また、動的再構成演算回路の面積を大きくしない為に、動的再構成演算回路内に格納レジスタを持たないで外部のメモリ等に退避することとすると、全演算セルのデータの退避を同時に行う必要があることから入出力ポートが大量に必要となり、動的再構成演算回路内のレジスタによる面積は増えないが、入出力ポート分の面積が増えることとなる。
そこで、本発明は、スレッド切り替え時の再構成による性能劣化を抑制しつつ、回路面積の増加をも抑えることができる、動的再構成論理回路を備えるマルチスレッド対応のプロセッサの提供を目的とする。
上記課題を解決する為に、本発明に係るプロセッサは、複数のスレッドを巡回的に、各スレッドに割当てられた時間ずつ実行するプロセッサであって、複数の演算セルを含み、当該演算セルの構成と各演算セル間の接続とを再構成可能な演算回路と、演算セルの構成及び当該演算セルと他の演算セルとの接続を、セル構成情報に基づいて、再構成する再構成手段と、各々異なる特定数の演算セルを順番に繰り返し実行する複数のスレッド各々に対応する、各演算セルのセル構成情報を記憶する構成情報記憶手段と、順次、前記再構成手段に、現スレッドに割当てられた時間での最後の演算を終了した演算セルを、前記構成情報記憶手段に記憶している次スレッドに対応する当該演算セルのセル構成情報に基づき再構成させ、次スレッドに対応する構成の演算セルと現スレッドの構成に対応する演算セルとをそれぞれ同時に実行させる制御手段とを備えることを特徴とする。
本発明に係るプロセッサは、上述の構成を備えることにより、スレッドを切り替える際に、現在実行しているスレッド(以下、「現スレッド」という。)の演算を終了した演算セルから順に、次に実行するスレッド(以下、「次スレッド」という。)の構成に再構成していき、現スレッドの実行と並行して再構成した演算セルを用いて次スレッドの演算を行うので、スレッド切り替え時の時間を必要最小限とすることができる。且つ、退避用のレジスタや入出力ポートを必要とせず、回路面積をも必要最小限とすることができる。
すなわち、動的再構成演算回路を、一度に、現スレッド用の構成から次スレッド様の構成に再構成する場合には、現スレッド終了時から次スレッド開始時までの間に、少なくとも再構成の時間が必要となる。しかし、本発明では、その時間さえも不要であり、スレッド切り替えの際には、現スレッドの実行と次スレッドの実行とが同時に行われるので、切替時間が短くなるだけでなく、全体として実行時間が短くなるという優れた効果を奏することができる。
また、前記プロセッサは、更に、各スレッドの演算セルの演算結果を、それぞれ別の領域に記憶する演算結果記憶手段を備え、前記制御手段は、同時に実行させている現スレッドで順番に繰り返し実行する演算セルのうちの最後の演算セルの演算結果を前記演算結果記憶手段の現スレッドの領域に記憶させ、同時に実行させている次スレッドの領域に記憶されている演算結果を、次スレッドの最初に実行する演算セルに参照させて演算を実行させることとしてもよい。
これにより、動的再構成演算回路の演算結果のみを記憶することになるので、各演算セルの中間演算データを格納する必要がなく、演算セル内部のレジスタは当該演算セルの実行に必要な量でよく、また、全ての演算セルの演算結果データを一度に演算結果記憶部に出力する必要はないので、最小限の入出力ポートでよい。従って、中間演算データを記憶するためのレジスタや、ポート分の面積を抑制することができ、プロセッサ全体の面積を小さくすることが可能となる。
また、前記プロセッサは、更に、スレッドに割当てられた時間での最後の演算を終了した演算セルであって、当該スレッドで順番に繰り返し実行する演算セルのうちの最後の演算セルの演算結果を記憶する演算結果記憶手段を備え、前記制御手段は、現スレッドで順番に繰り返し実行する演算セルのうちの最後の演算セルの演算結果に基づいて、次の繰り返しの最初に実行する演算セルを実行させ、スレッドを切り替える際には、次スレッドに対して前回割当てられた時間に前記演算結果記憶手段に記憶した演算結果を、次スレッドの最初に実行する演算セルに参照させて演算を実行させることとしてもよい。
これにより、動的再構成演算回路からの演算結果データを、直接マルチスレッドプロセッサが取得できるので、演算結果記憶部への書き込みと読み出しの時間が不要となり、スレッドの実行効率が良くなる。言い換えれば、与えられた時間内で行うことが出来るスレッドの処理が増えることになる。
また、本発明に係るプロセッサは、複数のスレッドを巡回的に、各スレッドに割当てられた時間ずつ実行するプロセッサであって、複数の演算セルを含み、当該演算セルの構成と各演算セル間の接続とを再構成可能な演算回路と、演算セルの構成及び当該演算セルと他の演算セルとの接続を、セル構成情報に基づいて、再構成する再構成手段と、各々異なる特定数の演算セルを順番に繰り返し実行する複数のスレッド各々に対応する、各演算セルのセル構成情報を記憶する構成情報記憶手段と、順次、前記再構成手段に、現スレッドに割当てられた時間での最後の演算を終了した演算セルを、前記構成情報記憶手段に記憶している次スレッドに対応する当該演算セルのセル構成情報に基づき再構成させ、現スレッドで実行する最後の演算セルの演算終了後、次スレッドの構成の演算セルを実行させる制御手段とを備えることを特徴とする。
この構成を備えることにより、本発明に係るプロセッサは、スレッド切り替えに際して、現スレッド終了時には、動的再構成演算回路の構成を次スレッド用の構成とすることができるので、現スレッド終了後すぐに次スレッドの実行を開始することが出来るようになる。
<実施形態1>
<概要>
本発明に係るプロセッサは、動的再構成演算回路を備えるマルチスレッド処理に対応したプロセッサであり、スレッドを実行する毎に、動的再構成演算回路を当該スレッド用の構成に再構成するものである。この動的再構成演算回路は、複数の演算セル等を備えており、この演算セル等の構成を再構成することで動的再構成演算回路を再構成する。
本発明に係るプロセッサでは、そのスレッド切り替えの際に、全ての演算セルを同時に次スレッド用に再構成するのではなく、演算の終了した演算セルを順次再構成して実行していくものである。
従って、スレッド切り替え時には、切り替え前のスレッドである現スレッドの処理を行っている演算セルと、切り替え後のスレッドである次スレッドの処理を行っている演算セルとが混在し、現スレッドと次スレッドが同時に実行されることとなる。
このように、現スレッドの処理が終了する前に次スレッドの処理を開始するので、演算セルが遊んでしまう時間を最小限度にすることができ、スレッド切り替えによる性能低下を抑制し、全体の実行時間を短縮することが可能となる。
以下、本発明の実施形態のプロセッサについて説明する。
本実施形態のプロセッサは、マルチスレッドプロセッサであり、マルチスレッドを実現するための方法として、各タスクを一定時間ずつ順番に実行していくラウンドロビン方式を取るものとする。
尚、イベントドリブン方式として、データ転送コントローラDMAC(Direct Memory Access Controller)のデータ転送完了信号や、他のプロセッサやハードワイヤードロジックの演算終了信号などを要因として、タスクを切り替えても良い。
スレッドは、動的再構成演算回路にデータを入力し、特定数の演算セルを決められた順に実行しその結果を出力する、という一連の処理(以下、「ループ」ともいうものとする。)を繰り返し行う。この一連の処理で必要な演算セルの個数を演算段数というものとする。
出力した結果は、演算結果記憶部を介してマルチスレッドプロセッサによって読み込まれ、新たなデータが動的再構成演算回路に入力される。
本実施形態のスレッドは、それぞれ演算段数が異なるものとする。従って、動的再構成演算回路を構成する演算セルの個数に応じて、各スレッドで並列に実行できるループの最大数が異なる。尚、実際に実行するループ数は、スレッドの処理内容に依存する。
<構成>
以下、図1を用いて、本発明にかかるプロセッサ100の構成を説明する。
図1は、プロセッサ100の構成例を表す図である。
プロセッサ100は、マルチスレッドプロセッサ1000、動的再構成演算回路2000、構成情報記憶部3000、構成切替部4000及び演算結果記憶部5000で構成される。
ここで、実線矢印は演算結果等のデータの流れ、点線矢印は制御の信号等の流れ、二重線矢印は構成情報の流れをそれぞれ表すものとする(図2、図3等も同様)。
マルチスレッドプロセッサ1000は、複数の異なる処理を時分割で実行することができる、いわゆるマルチスレッドプロセッサである。動的再構成演算回路2000と協調して演算を行い、スレッドの処理を実行していく。
具体的にマルチスレッドプロセッサ1000は、あるスレッドの処理を行う場合は、そのスレッド用に動的再構成演算回路を構成し、演算段数分の演算セルの処理を繰り返し行わせる。
また、本マルチスレッドプロセッサ1000は、次に実行するスレッドを決定し、実行する機能を有する。具体的には、スレッドに割当てた時間の終了を知らせるタイマ割り込みによって、スレッドの切替時を検出し、次スレッド用に動的再構成演算回路2000の再構成を行うよう構成切替部4000に指示を出す。この際、現スレッドと次スレッドを通知する。
尚、スレッドの切替時の検出には、データ転送コントローラDMAC(Direct Memory Access Controller)のデータ転送完了信号や、他のプロセッサやハードワイアードロジックの演算終了信号などを要因として、検出するものであっても良い。この場合も、以下、スレッドに割当てられた時間として説明する。
次に、動的再構成演算回路2000は、アレイ状に配置された複数の演算セル2100を含み、各演算セルの構成及び各演算セル間の接続構成を変更することが可能な演算回路である。すなわち、各演算セルの構成を所定の演算を行うように再構成し、接続構成を各演算セルが所定のデータを入力するように再構成することで、動的再構成演算回路2000を所望の処理を行う回路に再構成する。詳細は、図2〜図5を用いて後で説明する。
構成情報記憶部3000は、動的再構成演算回路2000を所望の回路に再構成する為の構成情報を記憶する機能を有する。また、構成切替部4000からの指示を受けて、順次必要な構成情報を読み出し、動的再構成演算回路2000に対して供給する機能を有する。
本実施形態における構成情報は、スレッド毎に記憶され、各演算セル毎に記憶されているものとする。詳細は、図10を用いて後で説明する。
構成切替部4000は、マルチスレッドプロセッサ1000からの指示を受けて、次スレッド用に、順次、動的再構成演算回路2000の再構成を行う機能を有する。再構成は、本構成切替部4000が、演算結果記憶部5000、動的再構成演算回路2000、構成情報記憶部3000を制御することで行う。
演算結果記憶部5000は、動的再構成演算回路2000が出力する演算結果を記憶する機能を有する。
この演算結果は、スレッド毎に記憶されており、このスレッド毎の演算結果は、各スレッドの1ループの結果であり、マルチスレッドプロセッサ1000により読み出される。
本実施形態では、ループの都度、書き込まれ、マルチスレッドプロセッサ1000によって読み出される。また、該当スレッドに時間が再び割当てられてスレッド処理を続行するときに、読み出されて利用される。
この演算結果記憶部5000は、構成切替手段4000から、現スレッドと次スレッドを通知され、動的再構成演算回路2000からの書き込み領域及び、マルチスレッドプロセッサ1000からの読み出し領域を変更する。
次に、図2〜図5を用いて、動的再構成演算回路2000の詳細について説明する。
<動的再構成演算回路2000の詳細>
まず、図2は、動的再構成演算回路2000の構成を示す概略図である。
動的再構成演算回路2000は、複数の演算セル(2100a〜2100p)と、演算セルを接続する動的再構成接続部2200とで構成される。
以下、演算セル2100aは「演算セルa」、演算セル2100bは「演算セルb」等というものとし、図4等でも同様とする。また、演算セル2100という場合は、1つの演算セルを指すものとする。
各演算セル2100には、構成切替部4000と構成情報記憶部3000とからそれぞれ信号線が引かれ、構成切替部4000からは制御信号(点線矢印)が送られ、構成情報記憶部3000からは構成情報(二重線矢印)が送られる。
また、マルチスレッドプロセッサ1000から動的再構成接続部2200を介して、演算セル2100等に必要な演算データが渡される。
演算セル2100は、乗算、シフト、加算、論理演算が可能であり、設定された構成情報での演算を行う。動的再構成演算セル2100の1回の演算に要する期間は、プロセッサの1サイクルとする。また、再構成に要する期間も、同様に、プロセッサの1サイクルとする。
以下、動的再構成接続部2200の構成を図3を用いて説明する。
<動的再構成演算接続部2200について>
図3は、1つの演算セルと、関連する動的再構成接続部2200とを示す図である。
本図では、1対の演算セル2100と演算ソース選択器2210、出力データ選択器2250を示している。
動的再構成接続部2200は、演算セル2100と対となる演算ソース選択器2210、すなわち、演算セル2100と同数の演算ソース選択器2210と、1つの出力データ選択器2250と、マルチスレッドプロセッサ1000からのデータの配線及び演算セル間の配線とで構成される。
演算セル2100、演算ソース選択器2210及び出力データ選択器2250には、それぞれ構成切替部4000から制御信号が、構成情報記憶部3000から構成情報が入力される。これにより、各演算セル2100等は、別々のタイミングでの構成切り替えが可能となる。
演算ソース選択器2210は、他の演算セル2100の演算結果である演算データを入力し、そのうちから1つの演算データを選択し、対となる演算セル2100に出力する。尚、1段目の演算セルa〜演算セルdは、他の演算セル2100からの演算データとマルチスレッドプロセッサ1000からの演算データのうち1つの演算データを選択する。
演算ソース選択器2210の構成の切り替えは、対である演算セル2100と同時に行う。そのため、構成切替手段4000からの切り替え信号線は、演算セル2100に接続されたものが同じく接続されている。
また、演算セル2100は、演算結果の演算データを他の演算セル2100の演算ソース選択器2210に出力する。尚、最下段の演算セルm〜演算セルpは、他の演算セル2100と出力データ選択器2250に演算データを出力する。
出力データ選択器2250は、演算セルから入力された演算データから必要な演算データを選択して演算結果記憶部5000に出力する。
この出力データ選択器2250の構成の切り替えは、演算セル2100と同じく、構成切替手段4000から構成切り替えの信号線及び構成情報記憶部3000からの構成情報転送用の信号線が接続されており、構成切り替えの信号を受けると、そのときの構成情報記憶部3000からの構成情報に切り替える。
<構成情報、制御信号、演算データの流れについて>
図4は、演算セルと演算データ選択器と出力データ選択器とに、構成情報と制御信号とを供給する信号線を示す図であり、図5は、演算データを供給する信号線を示す図である。
図4において、構成切替部4000からは制御信号が、演算セルa〜演算セルp、演算ソース選択器a〜演算ソース選択器p及び出力データ選択器2250にそれぞれ出力され、構成情報記憶部3000からは構成情報が出力される。
対となる演算セル2100と演算ソース選択器2210には、同じ制御信号と同じ構成情報が入力される。また、全ての演算セル2100等には、同時に、構成情報記憶部3000から同じ構成情報が送出される。
各演算セル2100、各演算ソース選択器2210、出力データ選択器2250は、構成切替部4000から送られる制御信号に応じて、構成情報を読み込み、再構成を行う。
すなわち、構成切替部4000は、構成情報記憶部3000に構成を変更しようとする演算セルの構成情報を出力させ、同時に、構成を変更しようとする演算セルに対してのみ再構成を指示する命令を送出する。再構成の指示を受けた演算セルは、構成情報を読み取り再構成を行う。
演算ソース選択器2210、出力データ選択器2250も同様である。
図5は、演算データの流れを示し、各演算セル2100は、演算結果である演算データを、次の段の演算セルの演算ソース選択器2210と、隣の演算セルの演算ソース選択器2210とに出力する。例えば、演算セルbは、演算データを演算ソース選択器fと演算ソース選択器aと演算ソース選択器cとに出力する。
演算ソース選択器2210は、入力される複数の演算データの1つを選択して、対である演算セルに出力する。例えば、演算ソース選択器fは、演算セルbと演算セルeと演算セルgとから送られる演算データのうちの1つを選択して、演算セルfに出力する。演算セルfは、演算ソース選択器fから出力された演算データを基に演算を行う。
演算ソース選択器2210が、どの演算データを選択するかは、演算ソース選択器2210の構成に依存する。例えば、演算ソース選択器fが、演算セルgからの演算データを選択する構成となっている場合は、常に、演算セルgからの演算データを選択し、再構成が成されれば、その構成に応じて演算セルbや演算セルeからの演算データを選択することになる。
また、出力データ選択器2250も、入力した演算データのうち、いずれを演算結果記憶部5000に出力するかは、その構成に依存する。すなわち、演算結果記憶部5000に出力する演算データは、1つとは限らず、スレッドの処理に応じた出力データ選択器2250の構成に依存する。
尚、本実施形態では、演算データを下段と左右の演算セルの演算ソース選択器に送ることとしているが、これに限られず、他の演算セルの演算ソース選択器に送信する構成としてももちろんよい。
<データ>
以下、プロセッサ100が、スレッドの切り替えを行う際に使用するデータについて、図9と図10とを用いて説明する。
データを説明する前に、本実施形態での説明で使用するスレッドについて図6〜図8を用いて説明する。
<スレッドについて>
本実施形態では、スレッドA、スレッドB、スレッドCの3つのスレッドを巡回的に実行するものとする。
図6〜図8は、各スレッドのデータの流れを示す図である。説明の便宜上、演算ソース選択器2210及び出力データ選択器2250は記載せずに、演算データの流れのみ示すものとする。
まず、図6は、スレッドAのデータの流れを示す図である。スレッドAの演算段数は「4」であり、動的再構成演算回路2000の演算セルが16個であることから、4つの演算処理を並行して行うものとする。
すなわち、マルチスレッドプロセッサ1000から演算セルaに演算ソースが渡され、演算セルaの演算結果を演算セルeに送り、演算セルeは演算セルaから受け取った演算データを基に演算を行い演算結果を演算セルiに送る。演算セルiは、演算セルeから受け取った演算データを基に演算を行う。というように順に演算結果を送り演算セルmまで演算を実行する。同様に、マルチスレッドプロセッサ1000から演算セルb、演算セルc、演算セルdに演算データが渡され、それぞれ並行して処理を行う。
演算セルm、演算セルn、演算セルo、演算セルpの演算結果が演算結果記憶部5000に記憶される。
この記憶された演算結果は、マルチスレッドプロセッサ1000によって読み出され、マルチスレッドプロセッサ1000内での演算等に使用される。尚、演算セルa等に供給されてもよい。マルチスレッドプロセッサ1000は、演算データを読み出し、演算するというループを繰り返すことでスレッドAを実行する。演算セルに供給するデータは、読み出した演算データそのまま又は何らかの処理が成されたもの、他のデータ等であってもよく、スレッドの処理に依存する。このループは、スレッドB、スレッドCにおいても同様である。
図7は、スレッドBのデータの流れを示す図である。スレッドBの演算段数は「8」であり、2つの演算処理を並行して行う。
マルチスレッドプロセッサ1000から、演算セルaに演算ソースが渡され、演算セルa→演算セルb→演算セルf→演算セルe→演算セルi→演算セルj→演算セルn→演算セルmの順に演算データを送って処理を行う。同様に、マルチスレッドプロセッサ1000から演算セルcに演算データが渡され、演算セルoまで処理を行う。
演算セルmと演算セルoの演算結果が演算結果記憶部5000に記憶される。
図8は、スレッドCのデータの流れを示す図である。スレッドBの演算段数は「16」であり、1つの演算処理を行う。
マルチスレッドプロセッサ1000から、演算セルaに演算ソースが渡され、演算セルa→演算セルb→演算セルc→演算セルd→演算セルh→演算セルg→演算セルf→演算セルe→演算セルi→演算セルj→演算セルk→演算セルl→演算セルp→演算セルo→演算セルn→演算セルmの順に演算データを送って処理を行う。
演算セルoの演算結果が演算結果記憶部5000に記憶される。
<スレッド切り替えに使用するデータについて>
以下、これらのスレッドA、スレッドB、スレッドCを巡回的に実行する場合のスレッドの切り替えに際し使用するデータについて、図9と図10とを用いて説明する。
図9(a)は、演算セル段数テーブルの構成及び内容例を示し、図9(b)は、スレッド段数テーブルの構成及び内容例を示す。
これらのデータは、構成切替部4000が予め記憶しているデータである。
まず、図9(a)の演算セル段数テーブル4100について説明する。
演算セル段数テーブル4100は、スレッドID4110と演算セルID4120とで構成され、スレッドごとの各演算セルの段数目4130を示す。
スレッドID4110は、本プロセッサで実行するスレッドの識別子をいい、本実施形態では「スレッドA」、「スレッドB」及び「スレッドC」である。
演算セルID4120は、本プロセッサの動的再構成演算回路2000を構成する演算セル2100それぞれの識別子をいい、本実施形態では「演算セルa」〜「演算セルp」の16個である。
スレッドごとの各演算セルの段数目4130とは、該当スレッドの1ループの処理において、該当演算セルが何番目に実行されるかを示すものである。ここでの番数は、「0」〜「15」で表すものとし、「0」段数目の演算セルが最初に実行されるものとする。
例えば、スレッドID4110「スレッドA」の演算セルID4120「演算セルb」の演算段数目4130は「0」であることから、スレッドAでは最初に実行される演算セルである(図6参照)。また、スレッドID4110「スレッドB」の演算セルID4120「演算セルb」の演算段数目4130は「1」であり、スレッドBでは2番目に実行される演算セルである(図7参照)。
次に、図9(b)のスレッド段数テーブル4200は、スレッドID4210と演算段数4220とで構成される。
スレッドID4210は、図9(a)のスレッドID4110と同様である。
また、演算段数4220は、各スレッドの演算段数を示す。例えば、スレッドID4210「スレッドA」は、演算段数4220「4」であり4個の演算セルを順に用いて行い、スレッドID4210「スレッドC」は、演算段数4220「16」であり16個の演算セルを順に用いて行う。この順は、演算セル段数テーブル4100に示されるとおりである(図9(a)参照)。
次に、図10は、演算セル構成情報テーブル3100の構成及び内容例を示し、このデータは、構成情報記憶部3000が予め記憶しているデータである。
演算セル構成情報テーブル3100は、スレッドID3110と演算セルID3120とで構成され、スレッドごとの各演算セルの構成情報を特定する構成情報名3130を示している。すなわち、構成情報名3130は、構成情報の識別子である。
演算セルID3120が「演算セルa」〜「演算セルp」の構成情報名3130で特定れる構成情報は、演算セルと、対となる演算ソース選択器とを再構成するための情報である。
また、演算セル構成情報テーブル3100には、更に、スレッド毎の出力データ選択器2250の構成情報を特定する構成情報名3130も記憶されている。
構成情報記憶部3000には、構成情報名3130で示される構成情報は全て記憶されているものとする。
例えば、スレッドID3110「スレッドA」の演算セルID3120「演算セルa」の構成情報名3130は「構成情報A0」であることから、スレッドA実行時の演算セルaと演算ソース選択器aとは、「構成情報A0」で示される構成情報で再構成されたものである。
構成情報記憶部3000は、構成切替部4000からの指示を受け、この演算セル構成情報データ3100を基に、該当する構成情報名3130で示される構成情報を動的再構成演算回路2000に送出する。
<動作>
次に、図11〜図27を用いて、本発明に係るプロセッサの動作を説明する。
まず、図11〜図13を用いて、従来と本発明とを比較して、スレッドの切り替えについて簡単に説明する。
その後、本発明の、スレッドの演算段数4220(図9(b)参照)が異なるスレッドへの切り替えについて説明する。この切り替えについては、現在実行している現スレッドの演算段数より大きい演算段数のスレッドに切り替える場合と、現スレッドの演算段数より小さい演算段数のスレッドに切り替える場合とに分けて説明する。
尚、動的再構成演算回路2100の各演算セル2100は、演算、再構成ともに、プロセッサの1サイクルで行う。
<従来と本発明とのスレッド切り替えについて>
図11は、従来のスレッドの切り替えを示す図である。
プロセッサ100がスレッドA、スレッドB、スレッドCを巡回的に実行し、それぞれのスレッド実行時の動的再構成演算回路2000を示している。
動的再構成演算回路2000Aは、スレッドA実行時の動的再構成演算回路2100であり、同様に、動的再構成演算回路2000B、動的再構成演算回路2000Cは、それぞれスレッドB、スレッドC実行時の動的再構成演算回路2100である。
動的再構成演算回路2000の各演算セル2100が、どのスレッド用の構成であるかを示している。例えば、動的再構成演算回路2000Aの「演算セルa」の下に記載している「スレッドA」は、スレッドA用の構成であることを示している。
従来は、スレッドAの実行が終了すると、動的再構成演算回路2000Aから動的再構成演算回路2000Bに再構成し、スレッドBの実行を開始していた。従って、動的再構成演算回路2000Aから動的再構成演算回路2000Bに再構成している間、スレッドを実行は行うことが出来ない。
次に、図12は、スレッドに割当てられた時間の最後のサイクルに実行される演算セル2100を示した図である。すなわち、図11における各スレッドの再構成直前の動的再構成演算回路2000の図である。
動的再構成演算回路2000Aのハッチングが掛けられている演算セル2100が、スレッドAに割当てられた時間の最後のサイクルに実行される演算セル2100であり、同様に、動的再構成演算回路2000B、動的再構成演算回路2000Cは、それぞれにスレッドB、スレッドCのものを示す。
すなわち、ハッチングが掛けられていない演算セル2100、スレッドAでは12個、スレッドBでは14個、スレッドCでは15個の演算セルは、遊んでいることになる。
本図では、スレッドに割当てられた時間の最後のサイクルについて説明しているが、スレッドに割当てられた時間の最後のループでの演算を終了した演算セルは、当該スレッドが終了するまで遊んでいることになる。例えば、動的再構成演算回路2000Aの演算セルaは、最後の演算を行い演算結果を演算セルeに渡すと、以後、演算セルmの演算が終了するまで何も行わない。
本発明は、スレッド切り替え時に遊んでしまっている演算セルを、次スレッド用に再構成して次スレッドの処理を行わせようとするものである。
図13は、本発明のスレッドの切り替えを示す図である。
スレッドAの実行が終了した演算セルから順にスレッドB用に再構成を行いスレッドBの演算を行う。
従って、動的再構成演算回路2000Aから動的再構成演算回路2000Bのように、全ての演算セル2100がスレッドB用になる間に、動的再構成演算回路2000ABに示すように、スレッドA用の演算セルとスレッドB用の演算セルとが混在する期間が存在する。すなわち、スレッドAとスレッドBとが並行して実行されていることになる。
同様に、スレッドBからスレッドCに切り替わる際にも、動的再構成演算回路2000BCに示すように、スレッドB用の演算セルとスレッドBCの演算セルとが混在する期間が存在することになる。
このように並行に処理することで、スレッドの切り替えの際に必要な演算セル2100の再構成の時間をなくすことができ、スレッドの実行の一部を並行に行うことで、より無駄をなくすことが可能となる。
具体的には、図11における再構成に必要なスレッド間の時間は不要となり、さらには、現スレッド処理の終わりと次スレッド処理の開始とが重なるため、より全体としてのスレッド実行時間を短くすることが可能となる。
<現スレッドの演算段数より大きい演算段数のスレッドに切り替える場合>
図14〜図16のフローチャートを用いて、本プロセッサの動作を説明する。この説明の際、図17〜図21を参照する。
ここでは、現スレッドをスレッドA、次スレッドをスレッドBとする。すなわち、演算段数「4」のスレッドAから、演算段数「8」のスレッドBに切り替える処理を例に取り説明する。
図17は、スレッドAからスレッドBへの切り替え時の動的再構成演算回路の遷移図である。本図では、スレッド切り替えの際の、サイクル1〜サイクル11までの動的再構成演算回路の遷移を表す。動的再構成演算回路C1は、サイクル1の回路を表し、動的再構成演算回路C2は、サイクル2の回路を表すものとする。演算セル内の「A」はスレッドA用の構成、「B」はスレッドB用の構成、「C」はスレッドC用の構成であることを表し、ハッチングは実行していることを表す。また、「再構成」は次スレッド用に再構成していることを表す。
図18は、スレッド切り替えの際の、マルチスレッドプロセッサ1000等からの制御信号と演算セル等の処理との関係を表すタイムチャートである。本図では、16個の演算セル2100のうち、説明の便宜上、演算セルa、演算セルb、演算セルfの処理のみを表している。
図19は、これら制御信号と出力データ選択器2250の処理との関係を表すタイムチャートであり、また、図20は、これらの制御信号と演算結果記憶部5000の処理との関係を表すタイムチャートである。
尚、図18〜図20のタイムチャートのサイクルは、図17のサイクルと同じタイミングのサイクルである。すなわち、図17と図18のサイクルC1は、同じタイミングのサイクルである。
図21は、演算結果記憶部5000内の各スレッドの領域を表す図である。
本実施形態では、スレッドA用の領域を0x00〜0x3F番地、スレッドB用の領域を0x0040〜0x5F番地、スレッドC用の領域を0x60〜0x6F番地とする。
以下、図14のフローチャートに沿って、切り替え処理を説明する。
図14は、スレッド切り替え時のマルチスレッドプロセッサ1000と構成切替部4000との処理を示すフローチャートである。
まず、マルチスレッドプロセッサ1000は、動的再構成演算回路C1(図17参照)を動作させながら現スレッドであるスレッドAを実行する(ステップS100)。
具体的には、マルチスレッドプロセッサ1000は、演算データを演算セルa、演算セルb、演算セルc、演算セルdに供給する。
演算データを入力した各演算セルは、順に下段の演算セルに演算結果を渡していき、最後に演算結果記憶部5000に演算結果を記憶する。
マルチスレッドプロセッサ1000は、次のループの開始時にこれらの記憶されている演算データを読み出し、所定の処理を施し、演算セルに供給することを繰り返すことでスレッドAを実行する(図6参照)。
マルチスレッドプロセッサ1000は、この繰り返しであるループの最後のループである場合、すなわち、スレッドAに与えた時間のうちの最後のループであるか否かを判断し(ステップS110)、最後のループであってプロセッサ100の処理を終了しないと判断した場合(ステップS110:Y、ステップS120:N)には、スレッドの切り替えを開始する。
最後のループではないと判断した場合(ステップS110:N)には、現スレッドのループを繰り返す。また、プロセッサ10の処理を終了すると判断した場合(ステップS120:Y)には、終了処理を行う。
スレッドの切り替えを開始すると判断したマルチスレッドプロセッサ1000は、次スレッドを選択し(ステップS130)、構成切替部4000に切り替えの指示を出す(ステップS140)。この指示に際し、マルチスレッドプロセッサ1000は、現スレッドのIDと次スレッドIDとを渡す(ステップS141)。
その後、マルチスレッドプロセッサ1000は、次スレッドの処理を開始する(ステップS100)。但し、構成切替部4000からの、処理の停止信号の発行(ステップS221)があった場合は、次スレッドの処理を開始しない。
切り替え指示を受けた構成切替部4000は(ステップS200)、待ちサイクル数を算出する(ステップS210)。スレッドAからスレッドBへの切り替えでは、待ちサイクル数は「0(ゼロ)」となる。待ちサイクル数の算出処理の詳細は、図15を用いて後で説明する。
待ちサイクル数を算出した構成切替部4000は、算出したサイクル数待つ(ステップS220)。待ちの間は、マルチスレッドプロセッサ1000に対して、停止信号を発行する(ステップS221)。
その後、演算結果記憶部5000の読み込み領域を、次スレッド用に切り替え(ステップS230)、演算セル及び演算ソース選択器の再構成を行う(ステップS240)。
この構成切替部4000が行う演算セル及び演算ソース選択器の再構成は、一度に行われるのではなく、図17の動的再構成演算回路C2〜動的再構成演算回路C9で示されるように、順を追って行われる。この演算セル及び演算ソース選択器の再構成処理は、図16を用いて後で説明する。
構成切替部4000は、全ての演算セル2100及び演算ソース選択器2210の再構成が終了すると、出力データ選択器2250の再構成を行う(ステップS250、図17:動的再構成演算回路C10)。この出力データ選択器の再構成処理のタイミングについては、図19を用いて後で説明する。
出力データ選択器2250の再構成が行われると、全てスレッドB用の構成となる(図17:動的再構成演算回路C11)。
その後、演算結果記憶部5000の書き込み領域を、次スレッド用に切り替える(ステップS260)。
一方、構成切替部4000からの停止信号を受信したマルチスレッドプロセッサ1000は、次スレッドの実行の開始を停止し、停止信号が切れた場合には、1サイクル待って、次スレッドの演算データの供給を開始する(ステップS100)。この1サイクルは、最初の演算セルが再構成されるサイクルである。
このスレッドの切り替え処理の際、マルチスレッドプロセッサ1000は、演算結果記憶部5000から次スレッド用の演算データを読み込むが、同時に、現スレッドの演算結果が演算結果記憶部5000に書き込まれている。この演算結果記憶部の領域変更処理(ステップS230、ステップS260)のタイミングは、図20を用いて後で説明する。
<待ちサイクル数の算出処理>
図15は、待ちサイクル数の算出処理を示すフローチャートである。
待ちサイクル数とは、スレッドを切り替える場合に、次スレッドが滞りなく実行できるように、切り替え処理の開始を遅らせるサイクル数である。
現スレッドの演算段数と次スレッドの演算段数が異なる場合には、現スレッドの演算が終了した演算セルを、即、次スレッド用に書き換えたとしても、その演算結果を渡す演算セルが現スレッドの演算を行っていて、次スレッド用への書き換えが出来ない場合等があるからである。
このような場合、次スレッドの実行制御が煩雑となるため、本実施形態では、スレッド切り替え処理の演算セル等の再構成の開始を遅らせることで、次スレッドの実行をスムーズに行うことを可能としている。
構成切替部4000は、マルチスレッドプロセッサ1000から切り替えの指示を受けた際に(図14:ステップS200参照)受け取った現スレッドIDと次スレッドIDとの演算段数から、待ちスレッド数を算出する。
スレッドの演算段数は、スレッド段数テーブル4200を参照して求める(図9(b)参照)。
例えば、現スレッドのスレッドID4210が「スレッドA」の場合、演算段数4220は「4」である。
まず、現スレッドの演算段数を「M」、次スレッドの演算段数を「N」とすると、MからNを減算し「D」を求める(ステップS300)。
「D」が0(ゼロ)より大きい場合は、待ちサイクル数をDとし(ステップS320)、「D」が0(ゼロ)以下の場合は、待ちサイクル数を0(ゼロ)とする(ステップS330)。
すなわち、スレッドの演算段数が、同じ又は大きなスレッドへの切り替えの場合には、待ちサイクル数は0(ゼロ)となり、演算段数がより小さいスレッドへの切り替えの場合には、その差の段数分が待ちサイクル数となる。
例えば、スレッドAからスレッドBに切り替わる場合は、演算段数「4」から「8」であるため、待ちスレッド数は0(ゼロ)となり、スレッドCからスレッドAに切り替わる場合は、演算段数「16」から「4」であるため、待ちスレッド数は12となる。
従って、スレッドAからスレッドBへの切り替えの場合には、サイクルの待ちは無く、演算セルの再構成が開始される。図17に示すように、動的再構成演算回路C1の次のサイクルでは、動的再構成演算回路C2のように再構成が行われる。
<演算セル及び演算ソース選択器の再構成処理>
図16は、演算セル、演算ソース選択器の再構成処理を示すフローチャートである。
まず、構成切替部4000は、再構成する演算セル2100と演算ソース選択器2210とを選択する(ステップS400)。ここでの演算ソース選択器は、演算セルと対となるものである。
最初に選択される演算セル2100は、次スレッドの演算段数目4130が「0(ゼロ)」の演算セルである。演算段数目は、演算セル段数テーブル4100を参照する(図9(a)参照)。
例えば、次スレッドがスレッドBの場合、最初に選択される演算セルは、演算セルa、演算セルcの2つである。
次に、構成切替部4000は、構成情報記憶部3000に対し、選択した演算セルと演算ソース選択器の構成情報を送出を依頼する(ステップS410)。この際、スレッドIDと演算セルIDとを通知する(ステップS411)。
依頼を受けた構成情報記憶部3000は(ステップS500)、通知されたスレッドIDと演算セルIDから構成情報名3130を求め、その名で特定できる構成情報を選択し(ステップS510)、送出する(ステップS520、ステップS521)。
例えば、選択された演算セルが演算セルaと演算ソース選択器aの場合は、演算セルaと演算ソース選択器aの構成情報が送出される(図18:サイクルC2の構成情報記憶部からの信号)。
また、同時に、構成切替部4000は、選択した演算セルと演算ソース選択器に対して、再構成を指示する(ステップS420、ステップS421)。
再構成の指示を受けた演算セルと演算ソース選択器は(ステップS600)、構成情報を受信し(ステップS610)、再構成を行う(ステップS620)。
例えば、選択された演算セル等が演算セルaと演算ソース選択器aの場合は、構成情報の信号線から構成情報を取得し、再構成する(図18:サイクルC2の演算セルaと演算ソース選択器aの処理、図17:動的再構成演算回路C2)。
再構成を行った演算セルと演算ソース選択器は、演算を行う(ステップS630)。
例えば、再構成された演算セルaと演算ソース選択器aは、スレッドBの演算を行う(図18:サイクルC3の演算セルaと演算ソース選択器aの処理)。このとき、マルチスレッドプロセッサ1000は、スレッドB用の演算データを演算ソース選択器に提供する。
構成情報記憶部3000と、選択した演算セル及び演算ソース選択器とに対して指示を出した構成切替部4000は、全ての演算段数の演算セルの再構成を行っていない場合は(ステップS430:N)、次の段数の再構成を行う(ステップS400)。全ての演算セル段数の再構成を行った場合(ステップS430:Y)は、終了する。
例えば、次スレッドがスレッドBの場合には、2段目の演算セル、すなわち、演算セル段数テーブル4100で演算セル段数4130が「1」の演算セル、演算セルbと演算セルdが選択され、再構成される(図18:サイクルC3参照、図17:動的再構成演算回路C3)。
次スレッドがスレッドBの場合は、演算段数4220が「8」であるため、演算セル段数4130が「0」〜「7」までを繰り返すことになる(図17:動的再構成演算回路C2〜C9)。
<出力データ選択器の再構成処理>
図19は、制御信号と出力データ選択器2250の処理との関係を表すタイムチャートである。
出力データ選択器2250は、演算セルが全て次スレッド用に切り替わったら、次スレッド用に再構成される(図19:サイクルC10、図14:ステップS240)。
再構成の手順は、図16に示す演算セルの再構成と同様である。以下、簡単に説明する。
次スレッド用に全演算セルが再構成されたと判断した構成切替部4000は(図16:ステップS430:Y)、構成情報記憶部3000に次スレッドの出力データ選択器2250の構成情報を送出するよう依頼する。同時に、出力データ選択器2250に、再構成を指示する。
次スレッドの出力データ選択器2250の構成情報を送出するよう依頼を受けた構成情報記憶部3000は、演算セル構成情報データ3100を参照し、該当する構成情報を送出する。再構成指示を受けた出力データ選択器2250は、構成情報を入力し、再構成を行う。
例えば、次スレッドがスレッドBの場合、スレッドBの演算段数「8」の処理が終了したら、構成情報記憶部3000は構成情報を送出し、出力データ選択器2250は、構成情報を入力し、再構成を行う(図19:サイクルC10、図17:動的再構成演算回路C10)。
尚、図19の出力データ選択器2250の「スレッドA用の構成」を示す図における点線で示す期間(サイクルC5〜サイクルC9)は、出力データ選択器2250が処理を行わない期間であることを示している。スレッドAの実行が終了し、出力データ選択器2250に演算結果データが出力されないからである。
<演算結果記憶部の領域変更処理>
図20は、制御信号と演算結果記憶部5000の処理との関係を表すタイムチャートである。
演算結果記憶部5000は、図21に示すようにスレッド毎に領域が確保されており、出力データ選択器2250からの出力を記憶し、マルチスレッドプロセッサ1000によって読み出される。
通常は、同一スレッドの領域に対して読み書きが行われるが、スレッド切り替えの際には、記憶する演算データのスレッドと、読み出される演算データのスレッドが異なる場合が生じ、アクセスする領域が異なる。
例えば、現スレッドがスレッドAで、次スレッドがスレッドBの場合には、スレッドA用の領域に演算データを書き込み、スレッドB用の領域から演算データを読み込む必要がある。
構成切替部4000は、次スレッドの最初の段数の演算セルを再構成するタイミングで、読み出し領域を次スレッド用に切り替える指示を演算結果記憶部5000に出す(図20:サイクルC2)。最初の演算セルの再構成のサイクルの次のサイクルで、マルチスレッドプロセッサ1000から読み出されるからである。
また、次スレッド用に演算セルの全てを再構成したタイミングで、書き込み領域を次スレッド用に切り替える指示を演算結果記憶部5000に出す(図20:サイクルC10)。最後の演算セルの再構成が行われる次のサイクルで、演算データが書き込まれるからである。
尚、図20の演算結果記憶分5000の「スレッドA用の書き込み」期間を示す図における点線で示す期間(サイクルC5〜サイクルC9)は、スレッドAによる書き込みは行われない期間であることを示している。
<現スレッドの演算段数より小さい演算段数のスレッドに切り替える場合>
演算段数がより小さいスレッドへの切り替える場合について、図22及び図23を用いて説明する。
ここでは、演算段数が「16」のスレッドCから、演算段数が「4」のスレッドAに切り替わる場合を説明する。
図22は、スレッドCからスレッドAへの切り替え時の動的再構成演算回路の遷移図である。本図では、スレッド切り替えの際の、サイクル1〜サイクル19までの動的再構成演算回路の遷移を表す。動的再構成演算回路C1は、サイクル1の回路を表し、動的再構成演算回路C2は、サイクル2の回路を表すものとする。
図23は、スレッド切り替えの際の、マルチスレッドプロセッサ1000等からの制御信号と演算セル等の処理との関係を表すタイムチャートである。本図では、16個の演算セル2100のうち、説明の便宜上、演算セルa、演算セルe、演算セルiの処理のみを表している。
切り替え処理の流れは、図14〜図16のフローチャートと同様である。ここでは、上述した演算段数がより大きいスレッドへの切り替えの場合との相違点について説明する。
相違点は、演算セル等の再構成の開始タイミングが異なる点である。
すなわち、上述した演算段数がより大きいスレッドへの切り替えの場合には、構成切替部4000は、マルチスレッドプロセッサ1000からの切り替え指示後、すぐに演算セルの再構成処理を開始した。待ちサイクル数が0(ゼロ)だったからである。
一方、演算段数がより小さいスレッドへの切り替えの場合には、必要なサイクル数待ってから演算セルの再構成処理を行う点が異なる。この場合、現スレッドの演算が終了した演算セルを、即、次スレッド用に書き換えて演算を実行したとしても、その演算結果を渡す演算セルが現スレッドの演算を行っていて、次スレッド用への書き換えが出来ない場合等があるからである。
現スレッドであるスレッドCの演算段数(M=16)から、次スレッドであるスレッドAの演算段数(N=4)を減算したサイクル数(D)は、16−4=12となり(図14:ステップ210、図15:ステップS300)、0(ゼロ)より大きいことから(ステップS310:Y)、待ちサイクル数は12サイクルとなる(ステップS320)。
構成切替部4000は、この12サイクルを待って(図14:ステップS220、図23:サイクルC2〜サイクルC13)、演算セル等の再構成を開始する(図14:ステップS240、図23:サイクルC14)。図22に示す動的再構成演算回路C14〜動的再構成演算回路C17で、再構成を行う。
待っている間、すなわち、動的再構成演算回路C2〜動的再構成演算回路C13までのサイクルC2〜サイクルC13間は、スレッドCの処理のみ進んでいる。
その後、サイクルC14でスレッドAの最初の段の演算セルから再構成を行う。図22に示す動的再構成演算回路C14である。
一方、マルチスレッドプロセッサ1000は、このサイクルC2〜サイクルC14の間は、次スレッドであるスレッドAの実行開始を待っている状態である(図23:サイクルC2〜サイクルC14)。
ここで、スレッドの切り替え処理のスケジュールをまとめると、図24のようになる。図24は、スレッドの切替スケジュールを表したタイムチャートである。
ここでは、スレッドA→スレッドB→スレッドC→スレッドAとスレッドを切り替える場合を示している。
マルチスレッドプロセッサ1000の期間9000は、マルチスレッドプロセッサ1000のスレッドAの処理期間を、期間9001はスレッドBの処理期間を、期間9002はスレッドCの処理期間を表す。期間9008は、動的再構成演算回路2000内の演算処理終了待ちのバブル期間、すなわち、マルチスレッドプロセッサ1000による現スレッドへの演算データの供給が終了し、次スレッドの演算データの供給が始まるまでの期間である(図22:動的再構成演算回路C2〜C14)。
期間9100aは演算セルaのスレッドAの処理期間を、期間9101aはスレッドBの処理期間を、期間9102aはスレッドCの処理期間を表す。期間9108aは、動的再構成演算回路2000内の演算処理終了待ちのバブル期間である(図22:動的再構成演算回路C2〜C14)。
期間9100mは演算セルmのスレッドAの処理期間を、期間9101mはスレッドBの処理期間を、期間9102mはスレッドCの処理期間を表す。期間9109mは、前段の演算セル2100の構成切り替え待ちのバブル期間である。スレッドAからスレッドBへの切り替え時の期間9109mは、図17に示す動的再構成演算回路C5〜C9の期間である。
期間9200は出力データ選択器2250のスレッドAの処理期間を、期間9201はスレッドBの処理期間を、期間9202はスレッドCの処理期間を表す。期間9209は、演算セル2100の構成切り替え待ちのバブル期間である。スレッドAからスレッドBへの切り替え時の期間9209は、図17に示す動的再構成演算回路C5〜C10の期間である(図19:サイクルC5〜サイクルC10参照)。
<プログラム例>
以下、本実施形態のプロセッサで実行する各種命令例、プログラム例を説明する。
まず、図25は、演算結果記憶部5000に関する命令例等である。
図25(a)は、演算結果記憶部5000内のスレッド占有領域の設定命令例であり、図25(b)は、各スレッド領域の設定プログラム例であり、図25(c)は、スレッド実行時の設定値である。
図25(a)の「DMset」命令では、「St_Adr」番地から「Ed_Adr」番地までを、スレッド番号「The_num」のスレッドが使用することを指定する。
図25(b)のプログラムは、スレッドAは、「0x00」番地から「0x3F」番地までを使用し、スレッドBでは、「0x40」番地から「0x5F」番地を、スレッドCでは、「0x60」番地から「0x6F」番地までを使用する旨を指定している(図21参照)。
図25(c)は、プロセッサ100がスレッドA等の処理を開始するときに、演算結果記憶部5000に記憶されている内容例である。
図25(c)に示すように、演算結果記憶部5000内に、各スレッドでFIFOの読み出しアドレス(DMRA)と、書き込みアドレス(DMWA)とが記憶される。マルチスレッドプロセッサ1000からの読み出し番地は、実行中のスレッドのDMRAとなり、動的再構成演算回路2000からの書き込み番地は、実行中のスレッドのDMWAとなる。DMRA、DMWAの初期値は、図5(b)のプログラムの実行時に、各スレッド用領域の開始番地として設定される。
例えば、スレッドAのDMRAをDMRA_A、DMWAをDMWA_A、スレッドBのDMRAをDMRA_B、DMWAをDMWA_B、スレッドCのDMRAをDMRA_C、DMWAをDMWA_Cとする。図25(b)のプログラムの実行により、それぞれスレッド領域の開始番地は、図25(c)のように設定がなされる。
この設定後、マルチスレッドプロセッサ1000及び、動的再構成演算回路2000にて、各スレッドの処理が行われる。動的再構成演算回路2000より、演算結果が演算結果記憶部5000に書き込まれれば、各スレッドのDMWAをインクリメントすればよい。
例えば、DMWAの単位がワードであり、書き込まれるデータが1ワードである場合には、「DMWA=DMWA+0x01」のように、実行中のスレッドのDMWAのみがインクリメントされる。
なお、演算データがW個の場合、DMWAには、Wが加算される。
また、マルチスレッドプロセッサ1000から、演算結果記憶部5000内の演算結果データが読み出されると、DMRAをインクリメントすればよい。
「DMRA=DMRA+0x01」のように、実行中のスレッドのDMRAのみがインクリメントされる。
なお、演算データがW個の場合、DMRAには、Wが加算される。
各DMWA、DMRAが図25(b)のプログラムで設定された、各スレッド領域の終了番地Ed_Adrを超えた場合には、St_Adrが設定される。
この構成により、各スレッドの領域をFIFOとして管理できる。
次に、図26(a)は、マルチスレッドプロセッサ1000からの動的再構成演算回路2000への演算命令例であり、図26(b)は、演算結果記憶部5000に対する演算結果読み出し命令例である。
図26(a)の「Rcn_exe」命令は、動的再構成演算回路2000での演算命令であり、「srcA」と「srcB」は、マルチスレッドプロセッサ1000内のレジスタ番号を指定する。
この命令で、スレッドの1ループが実行される。
図26(b)の「Rcn_rd」命令は、動的再構成演算回路2000の演算結果を読み出す命令であり、「dstA」は、マルチスレッドプロセッサ1000内のレジスタ番号であり、当該レジスタに演算結果データを格納する。
簡単に動作を説明すると、「Rcn_exe」命令により、実行中のスレッドでの構成にて、動的再構成演算回路2000内の演算が実行される。この演算の演算データとして、「Rcn_exe」命令で指定したレジスタ番号のデータを使用する。動的再構成演算回路2000の演算結果データは、演算結果記憶部5000の該当スレッドのDMWAの指すアドレスに格納される。
「Rcn_rd」命令は、演算結果記憶部5000に格納されている演算データを、マルチスレッドプロセッサ1000に読み出す命令であり、該当スレッドのDMRAの指すアドレスの演算データが、「Rcn_rd」命令で指定したレジスタに転送される。
尚、演算結果記憶部5000内に該当スレッドのデータが格納されていない場合、演算結果記憶部5000は、マルチスレッドプロセッサ1000に対して、演算停止信号を発行する。演算データが無いことの判定は、該当スレッドのDMRAとDMWAが同じ場合であることを検出すればよい。
演算結果記憶部5000内に該当スレッドのデータが格納されていない場合は、マルチスレッドプロセッサ1000が動的再構成演算回路2000に演算データを供給せずに、演算結果を読み出した場合に生ずる。この場合、マルチスレッドプロセッサ1000は、演算結果記憶部からの読み込み処理を停止し、動的再構成演算回路には別の演算データを供給するなど、スレッドの処理に応じた動作を行うものとする。
動的再構成演算回路2000より、演算結果記憶部5000に演算結果データが格納された後、演算停止信号が解除される。その後、マルチスレッドプロセッサ1000は、演算結果記憶部5000に格納された演算結果データを読み出す。
以上の構成により、演算結果データは、スレッド毎にFIFOでの管理を実現でき、動的再構成演算回路2000の構成の切り替えに左右されることなく演算結果記憶部5000内の各スレッドの所定領域に格納される。
このようにすることにより、マルチスレッドプロセッサ1000では、動的再構成演算回路2000のスレッドの切り替えによる演算結果格納の順番を意識する必要がないため、所望のスレッドでの演算結果データの管理が容易となる。
具体的には、Rcn_exe命令の演算結果を取得する、Rcn_rd命令は、動的再構成演算回路2000の演算段数分のサイクル+1サイクル後に発行可能となる。動的再構成演算回路2000内での演算のために、演算段数分のサイクルを要し、更に演算結果記憶部5000への書き込みのために、1サイクル要する。
Rcn_exe命令と、Rcn_rd命令の発行を、具体的にプログラム図27(a)と図27(b)とを用いて説明する。
図27(a)は、スレッドAでのRcn_exe命令と、Rcn_rd命令のみのプログラムである。このプログラムの実行前には、演算結果記憶部5000には、スレッドA用の演算結果データは格納されていないものとする。
例えば、スレッドAは、引数を変えつつRcn_exe命令とRcn_rd命令とを繰り返し実行することで処理を行う。
図27(a)のRcn_exe命令が発行されると、マルチスレッドプロセッサ1000内のレジスタR1、R2のデータが動的再構成演算回路2000に伝達され、動的再構成演算回路2000内での演算が開始される。
次のサイクルで、マルチスレッドプロセッサ1000は、Rcn_rd命令を発行する。このサイクルでは、演算結果記憶手段5000内に演算結果データは格納されていない(DMWA_AとDMRA_Aが同じ値である)。そのため、マルチスレッドプロセッサ1000は、演算結果記憶部5000より、演算停止信号を受け、処理を停止する。
Rcn_exe命令発行から4サイクル後(Rcn_rd命令発行から3サイクル後)、動的再構成演算回路2000内の演算が完了する。
次のサイクルで、演算結果記憶手段5000に演算結果データが格納され、DMWA_Aの値が増え、DMWA_AがDMRA_Aと異なる値になり、演算結果記憶部5000からマルチスレッドプロセッサ1000への演算停止信号が解除される。この後、Rcn_rd命令の実行が再開され、演算結果記憶部5000からの演算結果データの読み出し処理が行われる。
以上のプログラムにより、Rcn_exe命令、Rcn_rd命令での動的再構成演算回路2000の演算指示及び、演算結果読み出しを実現できる。
図27(a)のプログラムでは、マルチスレッドプロセッサ1000の演算停止が4サイクル発生したが、演算停止を発生させないプログラムを図27(b)を元に説明する。
図27(b)のプログラムは、図27(a)のRcn_exe命令、Rcn_rd命令の間に4サイクル分の演算用命令を挿入してある。Add命令は、マルチスレッドプロセッサ1000内のレジスタを演算ソースとし、加算を行い、演算結果データをマルチスレッドプロセッサ1000内のレジスタに書き込む命令である。演算リソースは、マルチスレッドプロセッサ1000内で閉じており、動的再構成演算回路2000を使用しない。Add命令の演算には1サイクル必要である。
このAdd命令が4サイクル分あるため、Rcn_rd命令の発行は、Rcn_exe命令の発行から5サイクル経過しているため、動的再構成演算回路2000での演算が終了し、DMWA_AがDMRA_Aと異なる値になっており、マルチスレッドプロセッサ1000は演算の停止をしない。
以上説明した構成により、動的再構成演算回路2000内の構成切り替え時の性能劣化を抑制できる。また、一度に読み出し書き込みを必要とする中間演算データを退避する必要が無く、順次読み出し書き込みが発生する演算結果データだけを格納すればよい。このため、記憶手段を少ない入出力ポートのメモリで実現でき、回路の面積を抑制できる。
また、この記憶領域に格納された演算結果データは、FIFOでスレッド毎に管理される。このため、マルチスレッドプロセッサ1000で実行するプログラムでは、特に構成切り替え時の演算順番を意識せずに済み、スレッド毎の管理で良いため、読み出しのプログラムを容易に作成できる。
<実施形態2>
実施形態1では、演算段数がより小さいスレッドに切り替える際には、マルチスレッドプロセッサ1000の待ちサイクルが生じていた(図24:期間9008参照)。
実施形態1では、スレッドのスムーズな切替のために、この待ちサイクルを構成切替部4000で意識して、マルチスレッドプロセッサ1000を停止させていた。本実施形態では、この待ちサイクルを構成切替部4000ではなく、プログラム側で意識するものである。
従って、本実施形態では、マルチスレッドプロセッサ1000において、この待ちサイクル期間は生じないことになる。
図28は、待ちサイクル期間が生じないスレッド切り替えのスケジュールを示したタイムチャートである。図24のスケジュールと比べ、期間9008が生じていない以外は、図24と同様である。従って、待ちサイクルを算出し、マルチスレッドプロセッサに停止信号を発行すること以外は、実施形態1と同様である。
この待ちサイクル期間をなくしたことにより、本実施形態では、プログラム側で待ちサイクル期間を意識してスレッドを実行することになる。
<概要>
図29は、命令仕様書のRcn_exe命令の記載例である。
本図では、動的再構成演算回路2000への演算指示命令と演算結果記憶部5000へのデータ読み出し命令、及び、それぞれの解説例を示す。
実施形態1では、スレッド切り替え時に、マルチスレッドプロセッサ1000に、スレッドCからスレッドAでの処理切り替えにおいて、期間9008の演算停止期間が発生した(図24参照)。これは、動的再構成演算回路2000の演算段数が多い構成から、少ない構成に変更する場合、構成の切り替え期間、動的再構成演算回路2000への新たな演算命令の発行を停止するためである。この制御は、構成切り替え手段4000より、図14のステップS210等の処理により行われていた。
実施の形態2では、図14のステップS210等の、構成切り替え部4000からマルチスレッドプロセッサ1000への演算停止制御のみを省く(ステップS210とステップS220のDサイクル待機する処理は残る)。その他の構成切り替え部4000の制御フローは、実施の形態1と同じである。
マルチスレッドプロセッサ1000への演算停止制御を省くことにより、期間9008の演算停止期間が発生せず、命令を発行できる期間が増加する。期間9008の演算停止期間が発生しない動作スケジューリングが図28となる。
ただし、期間9008の間、動的再構成演算回路2000へのRec_exe命令は保証されない。プログラマーにより、期間9008の間(Dサイクル)、Rec_exe命令の発行しないように、保証されなければならない。
そのため、命令仕様書などに、Rcn_exe命令は、Dサイクル期間発行してはいけないと、記述されることが望ましい。
<実施形態3>
実施形態1では、動的再構成演算回路2000から出力された演算データは、一旦、演算結果記憶部5000に記憶され、マルチスレッドプロセッサ1000は、演算結果記憶部5000から演算データを読み出していた。本実施形態では、最低限記憶しておかなければならない演算データ、すなわち、スレッドに割当てられた時間が終了する時の演算結果データ以外は、演算結果記憶部5000に記憶せずに、直接マルチスレッドプロセッサ1000に渡すものである。
<概要>
実施形態3が実施形態1と異なる点は、図1の演算結果記憶部5000から、マルチスレッドプロセッサ1000へ出力される処理および構成であり、演算結果選択器6000が追加されている点である。
図30は、本発明の実施形態3における動的再構成論理回路装置200の構成を示す機能ブロック図である。本図において、図1と同じ構成要素については同じ符号を用い、説明を省略する。
この演算結果選択器6000は、動的再構成演算回路2000と演算結果記憶部5000からの演算結果データを選択し、マルチスレッドプロセッサ1000に伝達する。制御は、演算結果記憶部5000より行われる。
実施形態1では、演算結果データは、演算結果記憶手段5000からのみ、マルチスレッドプロセッサ1000に伝達されていた。この構成では、必ず演算結果記憶手段5000を経由するため、記憶手段5000での書き込み、読み出しのサイクル分だけ、遅延が発生する。
すなわち、動的再構成演算回路2000演算結果データを、演算直後に、マルチスレッドプロセッサ1000の演算データとする場合には、この遅延により演算性能が劣化する。
実施の形態3では、この問題を解決する。
演算結果記憶手段5000内に演算データが格納されている(DMWAとDMRAが異なる値)場合は、演算結果選択器6000は、演算結果記憶部5000からのデータを選択し、実施形態1で説明した処理が行われる。
一方、演算結果記憶手段5000内に演算データが格納されていない(DMWAとDMRAが同じ値)場合は、演算結果記憶部5000は、マルチスレッドプロセッサ1000に対して、演算停止信号を発行する。
その後、動的再構成演算回路2000が演算結果データを演算結果記憶部5000に格納するサイクルにて、演算結果記憶部5000は以下の制御を行う。
演算結果選択器6000に対して、動的再構成演算回路2000からのデータを選択するように制御する。また、マルチスレッドプロセッサ1000に対する演算停止を解除する。
この処理により、動的再構成演算回路2000の演算結果データは、演算結果記憶部5000に格納されず、マルチスレッドプロセッサ1000に直接渡される。該当スレッドのDMWA、DMRAのアドレスはインクリメントされない。
この構成および制御により、演算結果記憶部5000での書き込み、読み出し処理分のレイテンシを抑制できる。これにより、動的再構成論理回路装置100の演算性能を向上が可能となる。
<実施形態4>
図31は、本発明の実施形態4における動的再構成論理回路装置300の構成を示す機能ブロック図である。図31において、図1と同じ構成要素については同じ符号を用い、説明を省略する。
実施形態1と異なるのは、図1のマルチスレッドプロセッサ1000が存在せず、演算ソース記憶部7000が追加されていることである。
すなわち、本実施形態は、処理は全て動的再構成演算回路2000で行うことが出来るスレッドを実行する場合である。
<概要>
実施形態4では、マルチスレッドプロセッサ1000が行っていた、動的再構成演算回路2000への演算データ供給を演算ソース記憶部7000が行い、動的再構成演算回路2000への演算指示を構成切り替え手段4000が行い、演算結果記憶部5000からの演算結果データ読み出しを図示しないデータ転送コントローラDMACが行う。
演算ソース記憶部7000は、動的再構成演算回路2000の演算ソースデータが格納され、図示しないデータ転送コントローラDMACより演算ソースデータが供給される。
演算ソース記憶部7000は、構成切替部4000より制御され、書き込み、読み出しのアドレスはスレッド毎に管理される。
この演算ソース記憶部7000の読み出し・書き込みアドレスの管理は、実施形態1の演算結果記憶部5000と同じとなる。但し、読み出し要求は構成切替手段4000により行われ、書き込みデータはデータ転送コントローラDMACから、読み出しデータは動的再構成演算回路2000に転送される。
以上説明した構成により、プロセッサを構成要素としなくとも、動的再構成演算回路2000内の構成切り替え時の性能劣化を抑制できる。
また、一度に読み出し書き込みを必要とする中間演算データを退避する必要が無く、順次読み出し書き込みが発生する演算結果データだけを格納すればよい。このため、記憶手段を少ない入出力ポートのメモリで実現でき、回路の面積を抑制できる。
また、演算ソース記憶部7000、演算結果記憶部5000内の記憶領域に格納された演算結果データは、FIFOでスレッド毎に管理される。このため、プロセッサ300で実行するプログラムでは、特に構成切り替え時の演算順番を意識せずに済み、スレッド毎の管理で良いため、データ転送コントローラDMACでは、スレッド毎の演算結果データの読み出しを容易に行える。
<応用例>
本発明のプロセッサは、例えば、移動体通信装置等に搭載することが可能である。図32は、本発明のプロセッサが搭載された移動体通信装置を示す図である。
移動通信装置10000は、ディスプレイ11000、撮像手段12000、音出力手段13000、音入力手段14000、コマンド入力手段15000、アンテナ16000及び、内部に本発明であるプロセッサ100(図1参照)を備える。
プロセッサ100は、ディスプレイ11000と、ビデオフレームバッファを介して接続される。プロセッサ100は、JPEGなどの静止画デコード処理、MPEGなどの動画デコード処理、ゲームなどの3次元グラフィックス処理、テキスト描画処理を行い、またそれぞれの映像の重ね合わせ処理を行う。ディスプレイ11000は、プロセッサ100で処理された映像を表示する。
また、プロセッサ100は、撮像手段12000と、ビデオフレームバッファを介して接続される。プロセッサ100は、撮像手段12000より入力された映像に対して、JPEGなどの静止画エンコード処理、MPEGなどの動画エンコード処理を行う。
さらに、プロセッサ100は、音出力手段13000と、オーディオフレームバッファを介して接続される。プロセッサ100は、MPEGなどの音声デコード処理を行う。音出力手段13000は、プロセッサ100で処理された音声を出力する。
また、プロセッサ100は、音入力手段14000と、オーディオフレームバッファを介して接続される。プロセッサ100は、音入力手段14000より入力された音声に対して、MPEGなどの音声エンコード処理を行う。
JPEG、MPEGなどの、ビデオ処理規格、音声処理規格は、様々な種類があり、それぞれ処理の内容が異なる。この処理が異なり、マルチスレッドプロセッサ1000では負荷の重い部分を、動的再構成演算回路2000にて処理させることで、複数の規格の処理に柔軟に対応可能となる。
プロセッサ100は、アンテナ16000と図示しない無線周波数回路ブロックと接続され、プロセッサ100により通信処理が行われることにより、無線ネットワークを構成する。また、プロセッサ100は、送受信データの暗復号処理も行う。
通信規格、暗号規格は、様々な種類があり、それぞれ処理の内容が異なる。この処理が異なり、マルチスレッドプロセッサ1000では負荷の重い部分を、動的再構成演算回路2000にて処理させることで、複数の規格の処理に柔軟に対応可能となる。
移動通信装置10000は、コマンド入力手段15000より、移動通信装置10000への操作を、針や指を用いて入力することが可能である。
通信システム、映像処理システム、セキュリティー処理システムの多くは、複数の規格に対応するため、本発明の効果を受ける。説明を行った、移動通信装置だけでなく、TV・DVDプレイヤー・カーナビなどの映像表示装置、DVDレコーダ・ビデオカメラ・DSC・セキュリティーカメラ・などの映像記録装置、オーディオプレイヤーなどの装置、通信装置内の、通信システム、セキュリティー処理システムに有益である。
<補足>
以上、本発明に係るプロセッサについて実施形態に基づいて説明したが、このプロセッサを部分的に変形することもでき、本発明は上述の実施形態に限られないことは勿論である。即ち、
(1)実施形態では、動的再構成演算回路2000の演算セルは4x4の行列形式に配置していたが、例えば、10x4での矩形行列形式でも良い。また、ライン単位で配置されていてもよく、配置の構成を問わない。
また、演算セル2100は、乗算、シフト、加算、論理演算を行えるとしたが、更に除算や減算、ローテート演算など演算の種類が増えても、また演算の種類が少なくても良い。
更にこの演算セル2100は、全て同じ構成としていたが、特定の演算セルのみ除算ができるなど、構成が違う演算セル2100があってもよい。
なお、演算セル2100の構成の切り替わりは、同時に複数個構成が切り替わっても良い。
全ての演算セル2100及び動的再構成接続器2200は、構成の切り替え可能としたが、一部構成が切り替わらない演算セル2100及び、動的再構成接続器2200があってもよい。
演算セル2100は1入力1出力であったが、3入力2出力など、入出力の個数は変わっても良い。その場合は、演算ソース選択器2210の入力個数および、選択する個数を増やし、出力データ選択器2250の入力個数も増やすことにより、対応する。
構成切替手段4000から、演算セル2100への構成切り替え信号線は、演算セル2100毎に個別に引いていたが、必ず同時に切り替わる演算セル2100同士は、同じ切り替え信号線を引いても良い。
なお、演算セル2100は、同じクロックで動作させていたが、複数のクロックラインを配し、演算セル毎に演算動作クロックを変えても良い。
動的再構成演算回路2000は、マルチスレッドプロセッサ1000で実行中のスレッドと同期して構成を変更していたが、プロセッサの処理スレッドを変更せずに、動的再構成演算回路2000のみを適宜構成変更してもよい。
(2)実施形態1、2では、マルチスレッドプロセッサ1000で動作するスレッドA、B、Cは、全て動的再構成演算回路2000で演算が行っていたが、動的再構成演算回路2000を用いないスレッドがあってもよい。その場合は、次に動的再構成演算回路2000を使用するスレッドの構成に切り替わっていても良い。
また、マルチスレッドプロセッサ1000と動的再構成演算回路2000は、同じクロックで動作していたが、複数のクロックラインを配し、演算動作クロックを変えても良い。
さらに、マルチスレッドプロセッサ1000は、複数スレッドをサポートしないプロセッサであってもよく、複数のコアを集積したマルチコアの構成でもよく、また、内部構成が再構成可能演算回路であっても良い。
(3)実施形態1、2では、演算結果記憶手段5000への、マルチスレッドプロセッサ1000からの読み出し用の命令では、マルチスレッドプロセッサ1000で処理中のスレッドでの動的再構成演算回路2000の演算結果データのみ、読み出せていたが、これを他スレッドの演算結果も読み出せるようにしても良い。
その場合は、読み出し命令にスレッド番号を指定するオペランドを追加し、読み出し時に、マルチスレッドプロセッサ1000から演算結果記憶部5000にスレッド番号を与えるようにする。この時、演算結果記憶部5000は、与えられたスレッド番号のDMRAに切り替える。これにより、他のスレッドの演算結果の読み出しを実現できる。
更に、マルチスレッドプロセッサ1000は読み出し用命令をサポートしなくても良い。代わりに動的再構成演算回路2000への演算指示命令のオペランドに、マルチスレッドプロセッサ1000内のレジスタをデスティネーションとして指定できるようにし、動的再構成演算回路2000での演算が終わると、そのレジスタに演算結果データが書き込まれるようにしてもよい。
また、演算用命令のソースデータ個数を2、読み出し用命令のデータ個数を1としたが、この個数を変更しても良い。動的再構成演算回路2000への演算ソースデータ個数の増加に対応するためには、マルチスレッドプロセッサ1000から動的再構成演算回路2000へのデータ配線を増加し、マルチスレッドプロセッサ1000からの出力ポート個数、動的再構成演算回路2000への入力ポートを増加すればよい。
演算結果記憶部5000からの読み出しデータ個数の増加は、演算結果記憶部5000からマルチスレッドプロセッサ1000への配線を増やし、マルチスレッドプロセッサ1000の入力ポート個数、演算結果記憶部5000の出力ポートを増加すればよい。
更に、演算結果記憶部5000へのスレッド毎の領域アドレスを設定する命令にて、領域の終了アドレスも設定していたが、このオペランドが無くてもよい。全スレッドの領域開始アドレスが設定されれば、他のスレッド領域開始アドレスまでを、各スレッドの領域と判定すればよい。
なお、マルチスレッドプロセッサ1000の処理切り替えを1サイクルとしたが、複数サイクル要しても良い。この場合は、構成切り替え手段4000により動的再構成演算回路2000及び、演算結果記憶手段5000に対し、そのマルチスレッドプロセッサ1000の切り替え処理のサイクル数だけ、処理停止制御をすればよい。
(4)実施形態1、2、3では、演算結果記憶部5000にて、各スレッド用領域をFIFOで管理していたが、LIFO(Last In First Out)形式など、他の形式で管理しても良い。
また、演算結果記憶部5000にて管理されるDMWA、DMRAの管理を、マルチスレッドプロセッサ1000や構成切替部4000にて行っても良い。
(5)実施の形態4では、演算ソース記憶部7000にて、各スレッドFIFOで管理していたが、LIFO(Last In First Out)形式など、他の形式で管理しても良い。
また、演算ソース記憶部7000にて管理される書き込み、読み出しアドレスの管理を、構成切替部4000にて行っても良い。
(6)実施形態1、2.3では、構成情報記憶部3000内に、各スレッドの構成情報を保存していたが、これはなくても良い。代わりに、各演算セル、演算ソース選択器、出力データ選択器内に、全スレッドの構成情報を予め保持する記憶手段を設け、構成切り替わり時に、スレッド番号と切り替わり指示を構成切替部4000から受け、所望の構成に切り替わっても良い。
この場合、構成情報記憶部3000からの配線を削除できるが、全スレッドの構成情報を予め保持する記憶部はレジスタでの構成となる。構成情報記憶部3000は入出力ポートの少ないメモリで構成できるため、記憶手段分の面積が増加する。
(7)実施形態では、各演算セルの再構成のタイミングを、構成切替部4000からの指示によって行うこととしているが(図16:ステップS400〜ステップS420参照)、それぞれの演算セルで再構成のタイミングを判断することとしても良い。
例えば、全演算セル2100が、以下の判定を並列に行う。
構成切替部4000から待ちサイクルが経過し、再構成の指示があったら、各演算セル2100は、待機サイクルEを判定し、そのサイクルだけ切り替え制御を待機する。Eは、次スレッドでの、該当演算セルより前にある、演算セル2100の個数(演算段数)を表す。各演算セルEの値は、演算セル段数テーブル4100(図9(a)参照)を参照する。
例えば、各スレッドにおいて、演算セルaは、前の演算段数は、0であるから、再構成指示があれば、すぐに構成変更の処理が行われる。一方、演算セルmは、スレッドAでは3サイクル、スレッドBでは7サイクル、スレッドCでは15サイクル待たされることになる。
この待機サイクルEの算出が終わると、構成切替部4000は、構成情報記憶部3000に指示し、該当演算セル2100の次スレッドでの構成情報及び、その演算セル2100に対応する演算ソース選択器2210の次スレッドでの構成情報の読み出し処理を行う。この構成情報は、構成情報転送用のバスを通して、該当演算セル2100及び該当演算ソース選択器2210に供給される。
次に、該当演算セル2100及び該当演算ソース選択器2210に対して、構成切り替え信号を生成し、該当演算セル2100及び該当演算ソース選択器2210は、この信号を受けて、構成情報転送用のバスに供給されている構成情報を読み込み、次スレッドの構成に切り替わる。
構成切替部4000は、全演算セルが次スレッド用に再構成されるサイクルをスレッド段数テーブル4200(図9(b))を参照して求め、出力データ演算器2250の再構成を開始する。
(8)実施形態では、スレッド切り替え時に、現スレッドの演算セルと次スレッドの演算セルとを、同時に動作させることとしているが、現スレッドの処理が終了したら、すぐに次のサイクルで、次スレッドの実行を開始することとしても良い。現スレッド実行中に、演算の終了した演算セルから順に次スレッド用に再構成しているので、再構成の時間が不要だからである。
(9)実施形態で示したプロセッサの各機能を実現させる為の各制御処理(図14等参照)をCPUに実行させる為のプログラムを、記録媒体に記録し又は各種通信路等を介して、流通させ頒布することもできる。このような記録媒体には、ICカード、光ディスク、フレキシブルディスク、ROM、フラッシュメモリ等がある。流通、頒布されたプログラムは、機器におけるCPUで読み取り可能なメモリ等に格納されることにより利用に供され、そのCPUがそのプログラムを実行することにより実施形態で示したプロセッサの各機能が実現される。
本発明にかかるマルチスレッド対応プロセッサ100は、動的再構成演算回路2000内の構成切り替え時の性能劣化を抑制できる。
また、一度に読み出し書き込みを必要とする中間演算データを退避する必要が無く、順次読み出し書き込みが発生する演算結果データだけを格納すればよい。このため、記憶手段を少ない入出力ポートのメモリで実現でき、回路の面積を抑制できる。
更に、この記憶領域に格納された演算結果データは、FIFOでスレッド毎に管理される。このため、マルチスレッドプロセッサ1000で実行するプログラムでは、特に構成切り替え時の演算順番を意識せずに済み、スレッド毎の管理で良いため、読み出しのプログラムを容易に作成できる。
この構成により、時分割多重処理が必要となるメディア処理装置として有用である。また通信やセキュリティー等の用途にも応用できる。
プロセッサ100の構成例を表す図である。 動的再構成演算回路2000の構成を示す概略図である。 1つの演算セルと、関連する動的再構成接続部とを示す図である。 演算セルと演算データ選択器、出力データ選択器に構成情報と制御信号とを供給する信号線を示す図である。 演算セルに演算データを供給する信号線を示す図である。 スレッドAのデータの流れを示す図である。 スレッドBのデータの流れを示す図である。 スレッドCのデータの流れを示す図である。 図9(a)は、演算セル段数テーブルの構成及び内容例を示し、図9(b)は、スレッド段数テーブルの構成及び内容例を示す。 演算セル構成情報テーブル3100の構成及び内容例を示し、このデータは、構成情報記憶部3000が予め記憶しているデータである。 従来のスレッドの切り替えを示す図である。 スレッドに割当てられた時間の最後のサイクルに実行される演算セル2100を示した図である。 本発明のスレッドの切り替えを示す図である。 図14は、スレッド切り替え時のマルチスレッドプロセッサ1000と構成切替部4000との処理を示すフローチャートである。 待ちサイクル数の算出処理を示すフローチャートである。 演算セル、演算ソース選択器の再構成処理を示すフローチャートである。 スレッドAからスレッドBへの切り替え時の動的再構成演算回路の遷移図である。 スレッド切り替えの際の、マルチスレッドプロセッサ1000等からの制御信号と演算セル等の処理との関係を表すタイムチャートである。 これら制御信号と出力データ選択器2250の処理との関係を表すタイムチャートである。 これらの制御信号と演算結果記憶部5000の処理との関係を表すタイムチャートである。 演算結果記憶部5000内の各スレッドの領域を表す図である。 スレッドCからスレッドAへの切り替え時の動的再構成演算回路の遷移図である。 スレッド切り替えの際の、マルチスレッドプロセッサ1000等からの制御信号と演算セル等の処理との関係を表すタイムチャートである。 スレッドの切替スケジュールを表したタイムチャートである。 演算結果記憶部5000に関する命令例等である。 図26(a)は、マルチスレッドプロセッサ1000からの動的再構成演算回路2000への演算命令例であり、図26(b)は、演算結果記憶部5000に対する演算結果読み出し命令例である。 図27(a)は、スレッドAでのRcn_exe命令と、Rcn_rd命令のみのプログラム例であり、図27(b)は、Rcn_exe命令、Rcn_rd命令の間に4サイクル分の演算用命令を挿入してあるプログラム例である。 待ちサイクル期間が生じないスレッド切り替えのスケジュールを示したタイムチャートである。 命令仕様書のRcn_exe命令の記載例である。 本発明の実施形態3における動的再構成論理回路装置200の構成を示す機能ブロック図である。 本発明の実施形態4における動的再構成論理回路装置300の構成を示す機能ブロック図である。 本発明のプロセッサが搭載された移動体通信装置を示す図である。 動的再構成演算回路を備える、マルチスレッドプロセッサの従来例である。
符号の説明
100 200 300 プロセッサ
10 1000 マルチスレッドプロセッサ
20 2000 動的再構成演算回路
21 2100 演算セル
2200 動的再構成接続部
2210 演算ソース選択器
2250 出力データ選択器
3000 構成情報記憶部
3100 演算セル構成情報テーブル
4000 構成切替部
4100 演算セル段数テーブル
4200 スレッド段数テーブル
5000 演算結果記憶部
6000 演算結果選択器
7000 演算ソース記憶部
10000 移動通信装置

Claims (6)

  1. 複数のスレッドを巡回的に、各スレッドに割当てられた時間ずつ実行するプロセッサであって、
    複数の演算セルを含み、当該演算セルの構成と各演算セル間の接続とを再構成可能な演算回路と、
    演算セルの構成及び当該演算セルと他の演算セルとの接続を、セル構成情報に基づいて、再構成する再構成手段と、
    各々異なる特定数の演算セルを順番に繰り返し実行する複数のスレッド各々に対応する、各演算セルのセル構成情報を記憶する構成情報記憶手段と、
    順次、前記再構成手段に、現スレッドに割当てられた時間内で実行すべき演算を全て終了した演算セルを、前記構成情報記憶手段に記憶している次スレッドに対応する当該演算セルのセル構成情報に基づき再構成させ、次スレッドに対応する構成の演算セルと現スレッドの構成に対応する演算セルとをそれぞれ同時に実行させる制御手段と
    を備えることを特徴とするプロセッサ。
  2. 前記プロセッサは、更に、各スレッドの演算セルの演算結果を、それぞれ別の領域に記憶する演算結果記憶手段を備え、
    前記制御手段は、同時に実行させている現スレッドで順番に繰り返し実行する演算セルのうちの最後に演算を実行した演算セルの演算結果を前記演算結果記憶手段の現スレッドの領域に記憶させ、同時に実行させている次スレッドの領域に記憶されている演算結果を、次スレッドの最初に実行する演算セルに参照させて演算を実行させる
    ことを特徴とする請求項1記載のプロセッサ。
  3. 前記プロセッサは、更に、スレッドに割当てられた時間内で実行すべき演算を全て終了した演算セルであって、当該スレッドで順番に繰り返し実行する演算セルのうちの最後に演算を実行した演算セルの演算結果を記憶する演算結果記憶手段を備え、
    前記制御手段は、現スレッドで順番に繰り返し実行する演算セルのうちの最後に演算を実行した演算セルの演算結果に基づいて、次の繰り返しの最初に実行する演算セルを実行させ、スレッドを切り替える際には、次スレッドに対して前回割当てられた時間に前記演算結果記憶手段に記憶した演算結果を、次スレッドの最初に実行する演算セルに参照させて演算を実行させる
    ことを特徴とする請求項1記載のプロセッサ。
  4. 複数の演算セルを含み、当該演算セルの構成と各演算セル間の接続とを再構成可能な演算回路を備え、複数のスレッドを巡回的に、各スレッドに割当てられた時間ずつ実行するプロセッサで用いられる実行方法であって、
    演算セルの構成及び当該演算セルと他の演算セルとの接続を、セル構成情報に基づいて、再構成する再構成ステップと、
    各々異なる特定数の演算セルを順番に繰り返し実行する複数のスレッド各々に対応する、各演算セルのセル構成情報をメモリに記憶する構成情報記憶ステップと、
    順次、前記再構成ステップで、現スレッドに割当てられた時間内で実行すべき演算を全て終了した演算セルを、前記構成情報記憶ステップでメモリに記憶している次スレッドに対応する当該演算セルのセル構成情報に基づき再構成させ、次スレッドに対応する構成の演算セルと現スレッドの構成に対応する演算セルとをそれぞれ同時に実行させる制御ステップと
    を備えることを特徴とする実行方法。
  5. 複数の演算セルを含み、当該演算セルの構成と各演算セル間の接続とを再構成可能な演算回路を備え、複数のスレッドを巡回的に、各スレッドに割当てられた時間ずつ実行するプロセッサに実行処理を行わせるコンピュータプログラムであって、
    演算セルの構成及び当該演算セルと他の演算セルとの接続を、セル構成情報に基づいて、再構成する再構成ステップと、
    各々異なる特定数の演算セルを順番に繰り返し実行する複数のスレッド各々に対応する、各演算セルのセル構成情報をメモリに記憶する構成情報記憶ステップと、
    順次、前記再構成ステップで、現スレッドに割当てられた時間内で実行すべき演算を全て終了した演算セルを、前記構成情報記憶ステップでメモリに記憶している次スレッドに対応する当該演算セルのセル構成情報に基づき再構成させ、次スレッドに対応する構成の演算セルと現スレッドの構成に対応する演算セルとをそれぞれ同時に実行させる制御ステップと
    を備えることを特徴とするコンピュータプログラム。
  6. 複数のスレッドを巡回的に、各スレッドに割当てられた時間ずつ実行するプロセッサであって、
    複数の演算セルを含み、当該演算セルの構成と各演算セル間の接続とを再構成可能な演算回路と、
    演算セルの構成及び当該演算セルと他の演算セルとの接続を、セル構成情報に基づいて、再構成する再構成手段と、
    各々異なる特定数の演算セルを順番に繰り返し実行する複数のスレッド各々に対応する、各演算セルのセル構成情報を記憶する構成情報記憶手段と、
    順次、前記再構成手段に、現スレッドに割当てられた時間内で実行すべき演算を全て終了した演算セルを、前記構成情報記憶手段に記憶している次スレッドに対応する当該演算セルのセル構成情報に基づき再構成させ、現スレッドで実行する最後の演算セルの演算終了後、次スレッドの構成の演算セルを実行させる制御手段と
    を備えることを特徴とするプロセッサ。
JP2007546441A 2005-11-25 2006-11-21 動的再構成論理回路を有するマルチスレッドプロセッサ Active JP5096923B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007546441A JP5096923B2 (ja) 2005-11-25 2006-11-21 動的再構成論理回路を有するマルチスレッドプロセッサ

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2005339946 2005-11-25
JP2005339946 2005-11-25
PCT/JP2006/323177 WO2007060932A1 (ja) 2005-11-25 2006-11-21 動的再構成論理回路を有するマルチスレッドプロセッサ
JP2007546441A JP5096923B2 (ja) 2005-11-25 2006-11-21 動的再構成論理回路を有するマルチスレッドプロセッサ

Publications (2)

Publication Number Publication Date
JPWO2007060932A1 JPWO2007060932A1 (ja) 2009-05-07
JP5096923B2 true JP5096923B2 (ja) 2012-12-12

Family

ID=38067159

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007546441A Active JP5096923B2 (ja) 2005-11-25 2006-11-21 動的再構成論理回路を有するマルチスレッドプロセッサ

Country Status (3)

Country Link
US (1) US7949860B2 (ja)
JP (1) JP5096923B2 (ja)
WO (1) WO2007060932A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5151311B2 (ja) * 2007-08-17 2013-02-27 富士通株式会社 集積回路装置
CN101578768A (zh) * 2007-11-12 2009-11-11 松下电器产业株式会社 可重构电路、复位方法及结构信息生成装置
JP5359142B2 (ja) * 2008-09-18 2013-12-04 富士通株式会社 伝送装置
US8176212B1 (en) * 2009-08-18 2012-05-08 Quickflex, Inc. Method and system for hierarchical and joinable behavior containers for reconfigurable computing

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10240549A (ja) * 1997-02-24 1998-09-11 Hitachi Ltd 並列ジョブ多重スケジューリング方法及び装置
JP2000311156A (ja) * 1999-04-27 2000-11-07 Mitsubishi Electric Corp 再構成可能並列計算機
JP2001068993A (ja) * 1999-08-25 2001-03-16 Fuji Xerox Co Ltd 情報処理システム
JP2001320271A (ja) * 2000-05-02 2001-11-16 Fuji Xerox Co Ltd プログラマブル論理回路への回路の再構成方法および情報処理システム
JP2005165961A (ja) * 2003-12-05 2005-06-23 Matsushita Electric Ind Co Ltd 動的再構成論理回路装置、割込制御方法、及び、半導体集積回路

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US125642A (en) * 1872-04-09 Improvement in bit-braces
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US6052773A (en) * 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US7320065B2 (en) * 2001-04-26 2008-01-15 Eleven Engineering Incorporated Multithread embedded processor with input/output capability
US20030120896A1 (en) * 2001-06-29 2003-06-26 Jason Gosior System on chip architecture
US7428732B2 (en) * 2001-12-05 2008-09-23 Intel Corporation Method and apparatus for controlling access to shared resources in an environment with multiple logical processors
CA2438559C (en) * 2002-08-28 2011-04-26 Msi Machineering Solutions Inc. Downhole latch
US7389403B1 (en) * 2005-08-10 2008-06-17 Sun Microsystems, Inc. Adaptive computing ensemble microprocessor architecture
JP2007133456A (ja) * 2005-11-08 2007-05-31 Hitachi Ltd 半導体装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10240549A (ja) * 1997-02-24 1998-09-11 Hitachi Ltd 並列ジョブ多重スケジューリング方法及び装置
JP2000311156A (ja) * 1999-04-27 2000-11-07 Mitsubishi Electric Corp 再構成可能並列計算機
JP2001068993A (ja) * 1999-08-25 2001-03-16 Fuji Xerox Co Ltd 情報処理システム
JP2001320271A (ja) * 2000-05-02 2001-11-16 Fuji Xerox Co Ltd プログラマブル論理回路への回路の再構成方法および情報処理システム
JP2005165961A (ja) * 2003-12-05 2005-06-23 Matsushita Electric Ind Co Ltd 動的再構成論理回路装置、割込制御方法、及び、半導体集積回路

Also Published As

Publication number Publication date
WO2007060932A1 (ja) 2007-05-31
US7949860B2 (en) 2011-05-24
JPWO2007060932A1 (ja) 2009-05-07
US20090307470A1 (en) 2009-12-10

Similar Documents

Publication Publication Date Title
KR100733943B1 (ko) 프로세서 시스템, dma 제어 회로, dma 제어 방법,dma 제어기의 제어 방법, 화상 처리 방법, 및 화상처리 회로
JP4996519B2 (ja) 仮想マルチプロセッサ、システムlsi、携帯電話機器、及び仮想マルチプロセッサの制御方法
US7724984B2 (en) Image processing apparatus
US6675289B1 (en) System and method for executing hybridized code on a dynamically configurable hardware environment
JP5096923B2 (ja) 動的再構成論理回路を有するマルチスレッドプロセッサ
US20100174884A1 (en) Processor having reconfigurable arithmetic element
KR20090083596A (ko) 다중 모드를 제공하는 재구성 가능한 장치 및 방법
JP2008152409A (ja) 半導体集積回路
JP4865960B2 (ja) データ処理装置およびその制御方法
KR20070114690A (ko) 프로세서
JPWO2006022202A1 (ja) 情報処理装置、例外制御回路
TW202107408A (zh) 波槽管理之方法及裝置
JP4728083B2 (ja) メディア処理装置
JP2006313479A (ja) 半導体集積回路装置及びデータ転送方法
JP2007200106A (ja) データ処理装置、制御方法、及びプログラム
JP2006285724A (ja) 情報処理装置および情報処理方法
CN117112466B (zh) 一种数据处理方法、装置、设备、存储介质及分布式集群
JP4758538B2 (ja) データ処理装置および制御方法
JP2008129851A (ja) 演算処理装置
JP2006195598A (ja) リアルタイム処理システム
JP2007207121A (ja) データ処理装置及びその制御方法
JP3767529B2 (ja) マイクロプロセッサ
JP2007329760A (ja) プログラマブル論理デバイス、回路情報入力制御装置および半導体装置
JP2002268876A (ja) パイプライン処理方法、及び情報処理装置
CN114787775A (zh) 数据处理系统、数据转发装置以及上下文切换方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120515

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120712

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120828

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120921

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5096923

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150928

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250