TOP > 国内特許検索 > 自己最適化演算装置 > 明細書

明細書 :自己最適化演算装置

発行国 日本国特許庁(JP)
公報種別 特許公報(B2)
特許番号 特許第3879002号 (P3879002)
公開番号 特開2005-190430 (P2005-190430A)
登録日 平成18年11月17日(2006.11.17)
発行日 平成19年2月7日(2007.2.7)
公開日 平成17年7月14日(2005.7.14)
発明の名称または考案の名称 自己最適化演算装置
国際特許分類 G06F   9/50        (2006.01)
FI G06F 9/46 462Z
請求項の数または発明の数 2
全頁数 12
出願番号 特願2003-434625 (P2003-434625)
出願日 平成15年12月26日(2003.12.26)
審査請求日 平成15年12月26日(2003.12.26)
特許権者または実用新案権者 【識別番号】304036743
【氏名又は名称】国立大学法人宇都宮大学
発明者または考案者 【氏名】馬場 敬信
【氏名】横田 隆史
【氏名】大津 金光
個別代理人の代理人 【識別番号】100072051、【弁理士】、【氏名又は名称】杉村 興作
【識別番号】100101096、【弁理士】、【氏名又は名称】徳永 博
【識別番号】100086645、【弁理士】、【氏名又は名称】岩佐 義幸
【識別番号】100107227、【弁理士】、【氏名又は名称】藤谷 史朗
【識別番号】100114292、【弁理士】、【氏名又は名称】来間 清志
【識別番号】100119530、【弁理士】、【氏名又は名称】冨田 和幸
審査官 【審査官】殿川 雅也
参考文献・文献 米国特許出願公開第2003/0117971(US,A1)
特表2003-521072(JP,A)
特開2002-163150(JP,A)
特表2001-511325(JP,A)
HARTENSTEIN, R. W., et al.,Two-level Partitioning of Image Processing Algorithms for the Parallel Map-oriented Machine,Hardware/Software Co-Design, 1996.(Codes/CASHE '96), Proceedings Fourth International Workshop on,IEEE,1996年 3月20日,pp. 77 - 84
HARTENSTEIN, R., et al.,A Partitioning Programming Environment for a Novel Parallel Architecture,Parallel Processing Symposium, 1996., Proceedings of IPPS '96, The 10th International,IEEE,1996年 4月19日,pp. 544 - 548
横田隆史、外3名,動的最適化のためのCPUマイニングの試み,情報処理学会第65回(平成15年)全国大会公園論文集(1),日本,社団法人情報処理学会,2003年 3月25日,1-69頁乃至1-70頁
小池汎平,動的情報収集機構および投機実行支援機構を備えたチップマルチプロセッサに関する検討,情報処理学会研究報告,日本,社団法人情報処理学会,2001年 1月26日,ARC-141-9,第47頁乃至第52頁
LYSAGHT, P., et al.,CONFIGURATION CONTROLLER SYNTHESIS FOR DYNAMICALLY RECONFIGURABLE SYSTEMS,Hardware-Software Cosynthesis for Reconfigurable Systems (Digest No:1996/036), IEE Colloquium on,IEE,1996年 2月22日,pp. 9/1 - 9/9
DONTHI, S., et al.,A Survey of Dynamically Reconfigurable FPGA Devices,System Theory, 2003. Proceedings of the 35th Southeastern Symposium on,IEEE,2003年 3月18日,pp. 422 - 426
調査した分野 G06F 9/38
G06F 9/46 - 9/54
特許請求の範囲 【請求項1】
複数の均質な単位処理ユニットを具える自己最適化演算装置において、
各々の単位処理ユニットが、プログラムを実行する演算処理ユニット、実行中のプログラムの挙動を観測する観測処理ユニット、観測結果に基づいて最適化処理を行う最適化処理ユニット、及び、実行内容の変更など装置全体の資源管理を行う資源管理処理ユニットのうち少なくとも1つとして動作し、
前記単位処理ユニットの各々が、前記演算処理ユニットの実行状態および実行プログラムそのものを動的に変更できる機能を有し、
前記最適化処理ユニットが、
前記観測処理ユニットによって観測されたプログラムの挙動の観測結果をもとに実時間で最適なプログラムコードを生成し、前記演算処理ユニットの実行内容を動的に変更する、
ことを特徴とする自己最適化演算装置。
【請求項2】
請求項に記載の自己最適化演算装置において、
プログラムの最適化状況に応じて、前記演算処理ユニット、観測処理ユニット、最適化処理ユニット及び資源管理処理ユニットの数の比率を変える、
ことを特徴とする自己最適化演算装置。
発明の詳細な説明 【技術分野】
【0001】
本発明は、演算装置に関し、特に、複数の処理ユニットを具える自己最適化演算装置に関する。
【背景技術】
【0002】
ひとつの計算機システム内に複数の処理ユニットを擁し、各処理ユニットにプログラムの実行局面に応じた役割を分担させることで、効果的な最適化処理とその結果による処理速度の向上を図ることができる。
【0003】
第1の従来技術として、特開2003-30050「マルチスレッド実行方法及び並列プロセッサシステム」に記載されているような、並列計算機、マルチスレッドプロセッサ技術がある。この技術は、複数の処理ユニットを用いて二種類の並列性を引き出すことにより高速化を実現する。具体的には、演算処理装置において複数の命令を同時に実行する命令レベル並列と、さらに命令列(スレッド)を単位として並列化するスレッドレベル並列である。これら二種の並列化の組み合わせにより高速化が実現される。並列計算機やマルチスレッド方式による演算処理装置では、内包する複数の処理装置を有効に使用し高速化を果たすために、命令レベル、および、スレッドレベル(ないし並列処理)の各レベルでの並列性を十分に引き出すことが必須である。しかし、一般のアプリケーションプログラムはこれらのレベルでの並列性を十分に引き出す意図では記述されていないために、コンパイラによる並列性抽出を十分に行えない問題がある。すなわち、複数の処理装置があっても、それらを同時並行的に稼動させ高速処理を実現すること、また、その高速処理を持続させることが難しいことが問題である。
【0004】
第2の従来技術として、特開2001-147820「コード最適化方法および記録媒体」に記載されているような、静的最適化、最適化コンパイラ技術がある。この技術は、プログラムとして記述された処理内容を論理的に解析し、上記二種の並列化技術(命令レベル並列、スレッドレベル並列)を適用することで高速化を実現する。いったんプログラムを実行しその時の挙動を記録(プロファイリング)することにより、最適化効果を向上するコンパイラ技術も用いられている。最適化コンパイラは、上述の並列性抽出の問題に応えようとするものであるが、一般的にコンパイルの時点で解析できる範囲は限られており、したがって最適化の効果が限られる問題がある。また、プロファイリングの結果をもとに、より高度な最適化効果を得る方法も行われているが、収集されるプログラム実行挙動情報が、観測期間を通しての累積的な結果であるため、実行時間全体を通して平均的な高速化は可能であるが、細かな挙動の変化には追随できない問題がある。また、プログラムの処理内容が入力データの性質に依存する場合には、この技術による高速化効果が得られない問題がある。
【0005】
第3の従来技術として、特開2002-222088「コンパイルシステム、コンパイル方法およびプログラム」に記載されているような、動的最適化技術がある。プログラムの挙動に適応して、プログラム実行中に採取された情報をもとにプログラムコードを最適化する(ないし再コンパイルする)技術も存在する。プログラムの動的な挙動に追随した最適化を行うため、プログラム実行中の挙動を監視し、必要に応じてより適切なプログラムコードを生成する動的最適化がある。この技術では、本来のアプリケーションプログラムに挙動監視用の処理を追加するか、あるいは別個に監視用のプログラムを動作させる必要があり、いずれの場合でも監視の分だけ効率が低下する。さらに、実行途中に最適化処理を行うためのオーバーヘッドが課されるため、最適化による性能向上が相殺される問題がある。
【発明の開示】
【発明が解決しようとする課題】
【0006】
プログラムの実行挙動に応じて計算機の内部構成やプログラムのコードを変えることにより性能を向上させることが望まれる。本発明は、最適化対象の計算機およびその上で実行されているプログラムを、同じ計算機システム中にありながら第三者的に観測することのできる機構を設置し、その時々のプログラムの実行挙動に応じた最適化を動的に行うことで究極の最適化(高速化)を達成した自己最適化演算装置を提供することを目的とする。本発明では、複数の演算器を持つ処理ユニットを複数個配置するシステムを前提とする。処理ユニット内では命令レベル並列性を抽出可能であり、また、複数の処理ユニットを用いることで並列処理ないしスレッドレベル並列性の抽出を可能にする。そしてマルチスレッド方式の演算処理装置に対して上に述べられた問題を解決し、効率よく動的に最適化を行うための自己最適化演算装置を実現するため、以下の方策をとる。
【課題を解決するための手段】
【0007】
本発明の第1発明による自己最適化演算装置は、複数の単位処理ユニットを具え、各々の単位処理ユニットが、プログラムを実行する演算処理ユニット、実行中のプログラムの挙動を観測する観測処理ユニット、観測結果に基づいて最適化処理を行う最適化処理ユニット、及び、実行内容の変更など装置全体の資源管理を行う資源管理処理ユニットのうち少なくとも1つとして動作することを特徴とする。すなわち、本来目的とするアプリケーションプログラムの実行を担当する演算処理ユニット群の状況を、アプリケーションプログラムの実行を行わず挙動観測を行う観測処理ユニット群が観測し、その結果を使って最適化処理ユニット群が最適化を行い、全体の動作の管理・制御は資源管理処理ユニット群が司る。
【0008】
本発明の第2発明による自己最適化演算装置は、前記単位処理ユニットの各々が、前記演算処理ユニットの実行状態および実行プログラムそのものを動的に変更できる機能を有し、前記最適化処理ユニットが、前記観測処理ユニットによって観測されたプログラムの挙動の観測結果をもとに実時間で最適なプログラムコードを生成し、前記演算処理ユニットの実行内容を動的に変更することを特徴とする。これにより、アプリケーションプログラムは常に効率の良い最適なコードで実行されることになる。
【0009】
本発明の第3発明による自己最適化演算装置は、プログラムの最適化状況に応じて、前記演算処理ユニット、観測処理ユニット、最適化処理ユニット及び資源管理処理ユニットの数の比率を変えることを特徴とする。最適化が進んでいない状況では観測や最適化処理に単位処理ユニットを多く割当てることで早期に実行効率を改善した最適化コードを得ることが可能になり、最適化時間を短縮する。最適化が進んだ段階では、それ以上の最適化の必要性が薄れるため、アプリケーションプログラムの実行を担当する演算処理ユニット群を多くすることで一層の処理速度の向上を得る。こうしてプログラムの実行局面に応じた最適な役割配分が行える。また、最適化処理が進んだ状況では、プログラムによっては、いったん最適な状態になってもそのまま最適状態が持続するとは限らないが、その場合は、観測処理ユニット群が挙動の変化を検知し、再び観測・最適化処理に多くの処理群ユニットを用いる変更を行うことで、プログラムの挙動変化に対して早期に対応し、早期に最適なプログラムコードを得ることができる。こうした動的な役割変更の処理は、資源管理処理ユニット群が行う。
【発明の効果】
【0010】
プログラムの実行状況をリアルタイムに観察しながら最適化を行えるため、常にハードウェアの最大能力を出すための制御を行える効果がある。複数の均質な処理ユニットを用い、それらを上記最適化機能により常に最適な状態に保つことで、本発明で目的とする命令レベル並列およびスレッドレベル並列の最大限の抽出が可能になる効果がある。さらに、アプリケーションプログラムを担当する処理ユニットと、観測・最適化・資源管理の処理を行う処理ユニットとに役割分担すること、また、その役割分担を、最適化の状況により動的に変えられる機能を有することで、システム内にある処理ユニットの機能・能力を最大限に引き出せる効果がある。すなわち、最適化が進んでいない状況では、プログラム挙動の観測と最適化処理に注力することで早期に最適化コードを得ることが可能であり、また一方で、最適化が進んだ段階では本来のアプリケーションプログラムの実行に注力することで最大限の実行性能を達成することが可能になる。またさらに、演算処理のために使われることのない処理ユニットを観測・最適化・資源管理の機能に割当てることで、本来のアプリケーションの実行性能に全く影響を与えずに、動的最適化を行うことが可能になる。
【発明を実施するための最良の形態】
【0011】
図1は、本発明による自己最適化演算装置の一実施例の構成を示すブロック図である。本自己最適化演算装置は、複数個の単位処理ユニット100、101、...を具える。図1には、明瞭にするために、単位処理ユニット100及び101のみを示す。これらの複数の処理ユニットは並列動作し、命令レベル並列性とスレッドレベル並列性の両方を引き出す。
【0012】
代表的に、単位処理ユニット100は、処理内容保持部400と、演算処理部500と、メモリ制御部600と、ユニット間通信部700と、プロファイル情報収集部300と、ユニット制御部200とを具える。他の単位処理ユニット101、...も同様の構成要素を具え、例えば、単位処理ユニット101は、処理内容保持部401と、演算処理部501と、メモリ制御部601と、ユニット間通信部701と、プロファイル情報収集部301と、ユニット制御部201とを具える。以後、代表的に単位処理ユニット100及びその構成要素のみを参照して説明する。前記単位処理ユニット間は、制御バス800と、ユニット間通信路820-1、2...で接続され、各単位処理ユニットと記憶装置(図示せず)との間をメモリバス810で接続する。
【0013】
例えば、処理内容保持部400と、演算処理部500と、メモリ制御部600との組で、通常のプロセッサ(VLIW:Very Long Instruction Word processor)として動作可能である。たとえば、同じ機能をFPGA(Field Programmable Gate Array)と同様の技術を使った「可塑的ハードウェア」で実現することも可能である。
【0014】
処理内容保持部400に格納される処理内容(プログラム)によって、当該単位処理ユニットの動作を変えられるようにする。具体的には、システム全体の資源管理を行う資源管理スレッド(RC(resource core)と略記)、最適化処理を行う最適化スレッド(OF(optimizing fork)と略記)、プログラムの挙動を観測しプロファイル情報を収集・解析する観測スレッド(PF(profiling fork)と略記)、アプリケーションプログラムの実行を行う演算スレッド(CF(computing fork)と略記)の4つの種類がある。各スレッドは、単位処理ユニットで実行可能な4つの機能、すなわち、実行内容の変更など資源管理をする機能、最適化コードを生成する機能、プログラムの挙動観測機能、アプリケーション実行機能、に対応している。
【0015】
単位処理ユニット100には、プログラムのプロファイル情報を収集するための回路が設けられている(プロファイル情報収集部300)。プロファイル情報収集部300は、演算機能や記憶機能を持っていても良いし、隣接の単位処理ユニットに情報を転送するだけの機能でも良い。ここで収集されたプロファイル情報は、ユニット間通信部700によりユニット開通信路820-1、2、...を介して他の単位処理ユニットに伝えることができる。
【0016】
・資源管理スレッド(RC)を実行中の単位処理ユニット100は、制御バス800を使い他の単位処理ユニットの処理制御部をアクセスすることによって、他の単位処理ユニットの内部状態を変更できる機能を持つ。たとえば、処理内容保持部400の内容を変更することで、各単位処理ユニットを任意の役割に変更することができる。また、単位処理ユニットで実行されるアプリケーションプログラムのコード(演算スレッド)を、より最適化されたコードに変更することも可能である。
【0017】
単位処理ユニットの役割は、実行前に静的に決めることもできるが、上記の変更機能を使うことでプログラム実行中に動的に変更することもできる。
【0018】
演算処理スレッド(CF)でのプログラムの実行の状態を、観測スレッド(PF)が監視する。観測スレッド(PF)が求めたプロファイル結果を用いて、最適化スレッド(OF)がより適したプログラム(オブジェクトコード)および処理形態を求める。その結果、実行効率が向上すると判断されれば、資源管理スレッド(RC)が上記の変更機能を用いることで、システムをより実行に適した状態に変更する。逆に、観測スレッド(PF)での監視の結果、演算スレッド(CF)での実行効率が悪化していると判断されれば、資源管理スレッド(RC)が各処理ユニットの役割分担を変更することにより、プログラムの挙動観測と最適化に.より適した構成に変更することができる。
【0019】
図2は、前記記憶装置へのアクセスのためにユニット間通信路を使用するように図1の構成を変更した変形例のブロック図である。
【0020】
図3は本発明による自己最適化演算装置の基本的な考え方を説明するブロック図である。単位処理ユニット100~115は、図1のような内部構成を持つ単位処理ユニットである。図中丸印の中に書かれている記号(RC、PF、OF、CF)は、各単位処理ユニットで行われている処理機能に該当するスレッドの略称である。楕円900~920で表現されているものは、前記単位処理ユニットを実行中の処理機能ごとに分けたグループ(処理ユニット群)を表している。資源管理処理ユニット群900、最適化処理ユニット群910、観測処理ユニット群920、演算処理ユニット群930からなる。資源管理ユニット群900は、システム内の各処理ユニットの制御を行う機能を持つ。このために制御バス(800-1、2、...)を介して各単位処理ユニットをアクセスする。アプリケーションプログラムは演算処理ユニット群930で実行する。実行中のプログラムの挙動情報はユニット間通信路820-1を介して観測処理ユニット群920に逐一伝えられる。観測処理ユニット群920では、この情報を解析してプログラム実行の様子を観測する。もし演算処理ユニット群930での実行効率が不十分でありさらに最適化する余地があれば、収集したプロファイル情報をユニット間通信路820-2を経由することで最適化処理ユニット群910に伝える。最適化処理ユニット群910では、プログラムをより効率的に実行するためのコードを生成する。生成したコードは、資源管理処理ユニット群900の制御の下で、演算処理ユニット群930に伝えられる。この際、各処理ユニットの役割分担の変更が必要と判断されれば、資源管理処理ユニット群900の制御により、各処理ユニット群に属する処理ユニットを変更する。各処理ユニット群とも、所定の処理を行うために必要な情報を保持するため、メモリバス810-1、-2、-3を介して記憶装置1000にアクセスすることができる。
【0021】
図4は、各処理ユニット群の動作を時間順に説明した図である。図中、100、101-1~n、102-1~n、103-1~n、104-1~n、105-1~n、106-1~nは前記単位処理ユニットを示している。上の説明と同様に、各単位処理ユニットで実行している機能スレッドを丸印の中に略記している。図中の楕円900は資源管理処理ユニット群であり、930-1、930-2は演算処理ユニット群、920-1、920-2は観測処理ユニット群、910-1、910-2は最適化処理ユニット群である。各処理ユニット群の中に単位処置ユニットが記されている。各処理ユニット群に割当てられた単位処理ユニットを重畳して書くことで、当該処理ユニット群の内部で並列的に処理されていることを表現している。また、重畳度の増減により、処理ユニット群に割当てられた単位処理ユニットの数の増減を表現している。図4は、システム内でアプリケーションプログラムの実行を開始したときの状態から示している。アプリケーションプログラムは、あらかじめコンパイルされており、実行可能なオブジェクトコードが用意されているものとする。まず、資源管理処理ユニット群900が動作し、他の各処理ユニットの役割分担を決め、演算処理ユニット群930-1、観測処理ユニット群920-1、最適化処理ユニット群910-1に属する単位処理ユニットを決定する。資源管理処理ユニット群900は、制御バスを介して他の処理ユニット群で実行するスレッドを決め、必要な設定をするなどの準備を行う(b100)。準備が完了したら、演算処理ユニット群930-1、観測処理ユニット群920-1に対して指令(b110-1、b110-2)を送り、各々の処理ユニット群の実行を開始する(b101)。実行開始後は、当面、資源管理処理スレッド群の役割はなく、処理スレッドを休止する(b102)。演算処理ユニット群930-1は、与えられたプログラムの実行を行い(b120)、実行中の情報を観測処理スレッドに送る(b130-1~n)。観測処理ユニット群920-1は、演算処理ユニット群930-1から送られてくる実行情報を逐一解析し、最適化が必要な状況に達したか否かを判断している(b140)。もし最適化が必要と判断すれば(b141)、その情報を資源管理処理ユニット群900に送る(b111-1)。資源管理処理ユニット群900は、この情報を受けると休止状態から復帰し(b103)、最適化処理ユニット群910-1の動作を起動する(b111-2)。その後、資源管理処理ユニット群900は休止状態となり、次のイベントが発生するまで待つ(b104)。最適化処理ユニット群910-1は、起動後、観測処理ユニット群920-1から、プログラムのプロファイル情報(b150-1~n)を受け取り、この情報を元に最適化処理を行う(b160)。最適化処理が終わると(b-161)、資源管理処理ユニット群900に対してその旨を通知し(b112-1)、自身は休止状態になる(b162)。演算処理ユニット群930-1、観測処理ユニット群920-1は、最適化処理ユニット群910-1で最適化処理を行っている間も、そのまま各々の実行を継続する(b120、b142)。最適化処理終了の通知を受けた資源管理処理ユニット群900は、休止状態から復帰し(b105)、演算処理ユニット930-1、観測処理ユニット920-1を一時停止させる(b112-2、b112-3)。ここで各処理ユニットは、資源管理処理ユニット群900の管理下で役割分担の変更を施される(b121、b143)。その結果、新たな構成に変更され、演算処理ユニット群930-2、観測処理ユニット群920-2となる。こうして、プログラムをより効率的に実行できるように変更した後、各処理ユニット群930-2、920-2の動作を起動する(b122、b144)。ここで、アプリケーションプログラムはb121で中断したときの続きを実行することになる。演算処理ユニット群930-2の実行中の情報を逐一、観測処理ユニット群920-2に転送する(b131-1~n)動作は、前と同様に行われる。観測処理ユニット群920-2が、再度、最適化の必要な状況を検出すれば(b145)、b141以降の動作と同様に、最適化が必要な旨の情報を資源管理処理ユニット群900に送り(b113-1)、これを受けて資源管理処理ユニット群900が休止状態から回復し(b107)、最適化処理ユニット群(910-2)に対して指示を送り(b113-2)、処理を起動する(b163)。最適化処理ユニット群910-2は、必要なプロファイル情報を観測処理ユニット群920-2から受け取り(b151-1)、最適化処理を行う(b163)。この間も、演算処理ユット群930-2、観測処理ユニット群920-2は継続して実行している(b122、b146)。
【0022】
図5は、図4で説明した各単位処理ユニットの役割分担の変更の様子を説明する図である。この図はシステムの単位処理ユニットの役割分担の状況を示した3つの図からなる。上段の図は、プログラムの初期段階において最適化があまり進んでいない状況を示している。観測処理ユニット群920-1、最適化処理ユニット群910-1に多くの単位処理ユニットを割当てることで、プログラム実行の早期に最適化対象を特定し、最適化処理結果を求めることが可能となる。下段左側の図は、中程度に最適化が進んだ状況を示している。演算処理ユニット群930-2にやや多くの単位処理ユニットを割り当て、処理性能を向上させながら、それと並行して、観測処理ユニット群920-2、最適化処理ユニット群910-2で更に最適化ができるポイントを探し、最適化する。下段右側の図は、高度に最適化が進んだ状況を示している。高度に最適化された結果、それ以上に最適化を行う可能性は低くなる。このために、観測処理ユニット群(920-3)、最適化処理ユニット群(910-3)に割当てる単位処理ユニットの数を抑える。その分を演算処理ユニット群(930-3)に割り当てて最大の処理性能を達成する。観測処理ユニット群(920-3)での観測の結果、演算処理ユニット群(930-3)での実行効率が悪化していると判断されれば、資源管理処理ユニット群900が制御することにより、各処理ユニット群の割り振りを変更し、これら3つの図の間を遷移することにより、状況に応じた最適な処理形態とする(図中の双方向矢印)。
【0023】
図6~図8は、図5中に示した各構成を、図1を元に説明した図である。図中、100~111は単位処理ユニットを示す。単位処理ユニット内の各部の番号は記載を省略している。ただし、各単位処理ユニットで実行している機能処理の内容を、処理内容保持部(図1の400、401)の位置に、処理スレッドの略称で表示している。たとえば、図6の単位処理ユニット100は資源管理スレッドを実行するため、処理内容保持部にRCと記されている。アプリケーションプログラムの実行を開始するとき(初期状態)、たとえば、図6のような役割分担を行う。すなわち、資源管理処理ユニット群900の管理の下で、最適化処理ユニット群910、観測処理ユニット群920、演算処理ユニット群930に分かれる。最適化処理が進むと、図7に示すように、演算処理ユニット群930の比率を上げ、観測処理ユニット群920、最適化処理ユニット群910の比率を相対的に下げる。全体の単位処理ユニットの数が少ない場合には、ひとつの単位処理ユニットが複数の役割を分担することも可能である。図7の場合、単位処理ユニット100が、資源管理スレッド(RC)と最適化スレッド(OF)の2つを担当している。このため、資源管理・最適化処理ユニット群940ができている。さらに最適化が進み、最大限に最適化された状態を示したものが図8である。ここでは、最適化を最大限に施した結果、プログラムの実行を司る演算処理ユニット群930に単位処理ユニットの大半を割当てている状況を示している。残りのごく少数の単位処理ユニット(図8では1個)を、資源管理・最適化・観測の処理(RC、OF、PF)に割当てている(資源管理・最適化・観測処理ユニット群950)。
【0024】
図9および図10は、各処理ユニット群の配置に関する一例を示す図である。処理ユニット群の範囲を図上で見やすくするため、ハッチングを施している。上述の説明では処理ユニット群に割当てる処理ユニットの個数に言及するだけで、配置方法については触れていなかった。上に挙げた本発明による実施例では、処理ユニット問の通信がユニット間通信路(図1中の820)を介して行われるため、通信の状況を勘案して処理ユニット群を配置しないと、ユニット間通信路を通る情報が輻輳し、性能向上を妨げる要因になる可能性がある。このため、現実的には、ユニット間通信路の負荷が最も少なくなるように処理ユニット群の配置を考える必要がある。図9は、最適化があまり進んでいない状態(あるいは初期状態)での、処理ユニット群の配置例である。ここでは演算処理ユニット群930に2つの処理ユニットが割当てられ、相互に通信している。この演算処理ユニット群930を取り囲むように観測処理ユニット群920を配置する。演算処理ユニット群での実行挙動の情報は、演算処理ユニット群930から外側に向かって流れるため、演算処理ユニット群内部での通信を阻害しない。さらにこの図では、観測処理ユニット群920の結果が、最適化処理ユニット群910に抵抗なく流れるように考慮されている。図10は、最適化が進んだ状態での、処理ユニット群の配置例である。この例では、演算処理ユニット群930が環状の通信路を形成している。この環状通信路に沿った通信を阻害しないように観測処理ユニット群920、資源管理・最適化処理ユニット群940を配置している。
【産業上の利用可能性】
【0025】
本発明によれば、処理ユニットを複数用いることによりアプリケーションプログラムの高速化を実現する演算処理装置において、該アプリケーションプログラム実行中に得られる情報を用いることで動的な最適化を行い、一層の高速化を果たすことができる。したがって、本発明は、高速な処理性能が求められる高性能電子計算機、汎用マイクロプロセッサ、機器組み込み装置など広い分野で適用が可能である。
【図面の簡単な説明】
【0026】
【図1】本発明による自己最適化演算装置の一実施例の構成を示すブロック図である。
【図2】図1の自己最適化演算装置の変形例の構成を示すブロック図である。
【図3】本発明による自己最適化演算装置の基本的な考え方を説明するブロック図である。
【図4】本発明による自己最適化演算装置の各処理ユニット群の動作を時間順に説明した図である。
【図5】本発明による自己最適化演算装置の各単位処理ユニットの役割分担の変更の様子を説明する図である。
【図6】図5中に示した各構成を、図1を元に説明した図である。
【図7】図5中に示した各構成を、図1を元に説明した図である。
【図8】図5中に示した各構成を、図1を元に説明した図である。
【図9】本発明による自己最適化装置の各処理ユニット群の配置に関する一例を示す図である。
【図10】本発明による自己最適化装置の各処理ユニット群の配置に関する他の例を示す図である。
【符号の説明】
【0027】
100、101、102 単位処理ユニット
200、201 ユニット制御部
300、301 プロファイル情報収集部
400、401 処理内容保持部
500、501 演算処理部
600、601 メモリ制御部
700、701 ユニット間通信部
800 制御バス
810 メモリバス
820 ユニット間通信路
900 資源管理処理ユニット群
910 最適化処理ユニット群
920 観測処理ユニット群
930 演算処理ユニット群
940 資源管理・最適化処理ユニット群
950 資源管理・最適化・観測処理ユニット群
1000 記憶装置
図面
【図1】
0
【図2】
1
【図3】
2
【図4】
3
【図5】
4
【図6】
5
【図7】
6
【図8】
7
【図9】
8
【図10】
9