JP3879002B2 - 自己最適化演算装置 - Google Patents

自己最適化演算装置 Download PDF

Info

Publication number
JP3879002B2
JP3879002B2 JP2003434625A JP2003434625A JP3879002B2 JP 3879002 B2 JP3879002 B2 JP 3879002B2 JP 2003434625 A JP2003434625 A JP 2003434625A JP 2003434625 A JP2003434625 A JP 2003434625A JP 3879002 B2 JP3879002 B2 JP 3879002B2
Authority
JP
Japan
Prior art keywords
processing unit
optimization
processing
program
unit group
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.)
Expired - Lifetime
Application number
JP2003434625A
Other languages
English (en)
Other versions
JP2005190430A (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.)
Utsunomiya University
Original Assignee
Utsunomiya University
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 Utsunomiya University filed Critical Utsunomiya University
Priority to JP2003434625A priority Critical patent/JP3879002B2/ja
Priority to US11/020,153 priority patent/US20050166207A1/en
Publication of JP2005190430A publication Critical patent/JP2005190430A/ja
Application granted granted Critical
Publication of JP3879002B2 publication Critical patent/JP3879002B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Description

本発明は、演算装置に関し、特に、複数の処理ユニットを具える自己最適化演算装置に関する。
ひとつの計算機システム内に複数の処理ユニットを擁し、各処理ユニットにプログラムの実行局面に応じた役割を分担させることで、効果的な最適化処理とその結果による処理速度の向上を図ることができる。
第1の従来技術として、特開2003−30050「マルチスレッド実行方法及び並列プロセッサシステム」に記載されているような、並列計算機、マルチスレッドプロセッサ技術がある。この技術は、複数の処理ユニットを用いて二種類の並列性を引き出すことにより高速化を実現する。具体的には、演算処理装置において複数の命令を同時に実行する命令レベル並列と、さらに命令列(スレッド)を単位として並列化するスレッドレベル並列である。これら二種の並列化の組み合わせにより高速化が実現される。並列計算機やマルチスレッド方式による演算処理装置では、内包する複数の処理装置を有効に使用し高速化を果たすために、命令レベル、および、スレッドレベル(ないし並列処理)の各レベルでの並列性を十分に引き出すことが必須である。しかし、一般のアプリケーションプログラムはこれらのレベルでの並列性を十分に引き出す意図では記述されていないために、コンパイラによる並列性抽出を十分に行えない問題がある。すなわち、複数の処理装置があっても、それらを同時並行的に稼動させ高速処理を実現すること、また、その高速処理を持続させることが難しいことが問題である。
第2の従来技術として、特開2001−147820「コード最適化方法および記録媒体」に記載されているような、静的最適化、最適化コンパイラ技術がある。この技術は、プログラムとして記述された処理内容を論理的に解析し、上記二種の並列化技術(命令レベル並列、スレッドレベル並列)を適用することで高速化を実現する。いったんプログラムを実行しその時の挙動を記録(プロファイリング)することにより、最適化効果を向上するコンパイラ技術も用いられている。最適化コンパイラは、上述の並列性抽出の問題に応えようとするものであるが、一般的にコンパイルの時点で解析できる範囲は限られており、したがって最適化の効果が限られる問題がある。また、プロファイリングの結果をもとに、より高度な最適化効果を得る方法も行われているが、収集されるプログラム実行挙動情報が、観測期間を通しての累積的な結果であるため、実行時間全体を通して平均的な高速化は可能であるが、細かな挙動の変化には追随できない問題がある。また、プログラムの処理内容が入力データの性質に依存する場合には、この技術による高速化効果が得られない問題がある。
第3の従来技術として、特開2002−222088「コンパイルシステム、コンパイル方法およびプログラム」に記載されているような、動的最適化技術がある。プログラムの挙動に適応して、プログラム実行中に採取された情報をもとにプログラムコードを最適化する(ないし再コンパイルする)技術も存在する。プログラムの動的な挙動に追随した最適化を行うため、プログラム実行中の挙動を監視し、必要に応じてより適切なプログラムコードを生成する動的最適化がある。この技術では、本来のアプリケーションプログラムに挙動監視用の処理を追加するか、あるいは別個に監視用のプログラムを動作させる必要があり、いずれの場合でも監視の分だけ効率が低下する。さらに、実行途中に最適化処理を行うためのオーバーヘッドが課されるため、最適化による性能向上が相殺される問題がある。
プログラムの実行挙動に応じて計算機の内部構成やプログラムのコードを変えることにより性能を向上させることが望まれる。本発明は、最適化対象の計算機およびその上で実行されているプログラムを、同じ計算機システム中にありながら第三者的に観測することのできる機構を設置し、その時々のプログラムの実行挙動に応じた最適化を動的に行うことで究極の最適化(高速化)を達成した自己最適化演算装置を提供することを目的とする。本発明では、複数の演算器を持つ処理ユニットを複数個配置するシステムを前提とする。処理ユニット内では命令レベル並列性を抽出可能であり、また、複数の処理ユニットを用いることで並列処理ないしスレッドレベル並列性の抽出を可能にする。そしてマルチスレッド方式の演算処理装置に対して上に述べられた問題を解決し、効率よく動的に最適化を行うための自己最適化演算装置を実現するため、以下の方策をとる。
本発明の第1発明による自己最適化演算装置は、複数の単位処理ユニットを具え、各々の単位処理ユニットが、プログラムを実行する演算処理ユニット、実行中のプログラムの挙動を観測する観測処理ユニット、観測結果に基づいて最適化処理を行う最適化処理ユニット、及び、実行内容の変更など装置全体の資源管理を行う資源管理処理ユニットのうち少なくとも1つとして動作することを特徴とする。すなわち、本来目的とするアプリケーションプログラムの実行を担当する演算処理ユニット群の状況を、アプリケーションプログラムの実行を行わず挙動観測を行う観測処理ユニット群が観測し、その結果を使って最適化処理ユニット群が最適化を行い、全体の動作の管理・制御は資源管理処理ユニット群が司る。
本発明の第2発明による自己最適化演算装置は、前記単位処理ユニットの各々が、前記演算処理ユニットの実行状態および実行プログラムそのものを動的に変更できる機能を有し、前記最適化処理ユニットが、前記観測処理ユニットによって観測されたプログラムの挙動の観測結果をもとに実時間で最適なプログラムコードを生成し、前記演算処理ユニットの実行内容を動的に変更することを特徴とする。これにより、アプリケーションプログラムは常に効率の良い最適なコードで実行されることになる。
本発明の第3発明による自己最適化演算装置は、プログラムの最適化状況に応じて、前記演算処理ユニット、観測処理ユニット、最適化処理ユニット及び資源管理処理ユニットの数の比率を変えることを特徴とする。最適化が進んでいない状況では観測や最適化処理に単位処理ユニットを多く割当てることで早期に実行効率を改善した最適化コードを得ることが可能になり、最適化時間を短縮する。最適化が進んだ段階では、それ以上の最適化の必要性が薄れるため、アプリケーションプログラムの実行を担当する演算処理ユニット群を多くすることで一層の処理速度の向上を得る。こうしてプログラムの実行局面に応じた最適な役割配分が行える。また、最適化処理が進んだ状況では、プログラムによっては、いったん最適な状態になってもそのまま最適状態が持続するとは限らないが、その場合は、観測処理ユニット群が挙動の変化を検知し、再び観測・最適化処理に多くの処理群ユニットを用いる変更を行うことで、プログラムの挙動変化に対して早期に対応し、早期に最適なプログラムコードを得ることができる。こうした動的な役割変更の処理は、資源管理処理ユニット群が行う。
プログラムの実行状況をリアルタイムに観察しながら最適化を行えるため、常にハードウェアの最大能力を出すための制御を行える効果がある。複数の均質な処理ユニットを用い、それらを上記最適化機能により常に最適な状態に保つことで、本発明で目的とする命令レベル並列およびスレッドレベル並列の最大限の抽出が可能になる効果がある。さらに、アプリケーションプログラムを担当する処理ユニットと、観測・最適化・資源管理の処理を行う処理ユニットとに役割分担すること、また、その役割分担を、最適化の状況により動的に変えられる機能を有することで、システム内にある処理ユニットの機能・能力を最大限に引き出せる効果がある。すなわち、最適化が進んでいない状況では、プログラム挙動の観測と最適化処理に注力することで早期に最適化コードを得ることが可能であり、また一方で、最適化が進んだ段階では本来のアプリケーションプログラムの実行に注力することで最大限の実行性能を達成することが可能になる。またさらに、演算処理のために使われることのない処理ユニットを観測・最適化・資源管理の機能に割当てることで、本来のアプリケーションの実行性能に全く影響を与えずに、動的最適化を行うことが可能になる。
図1は、本発明による自己最適化演算装置の一実施例の構成を示すブロック図である。本自己最適化演算装置は、複数個の単位処理ユニット100、101、...を具える。図1には、明瞭にするために、単位処理ユニット100及び101のみを示す。これらの複数の処理ユニットは並列動作し、命令レベル並列性とスレッドレベル並列性の両方を引き出す。
代表的に、単位処理ユニット100は、処理内容保持部400と、演算処理部500と、メモリ制御部600と、ユニット間通信部700と、プロファイル情報収集部300と、ユニット制御部200とを具える。他の単位処理ユニット101、...も同様の構成要素を具え、例えば、単位処理ユニット101は、処理内容保持部401と、演算処理部501と、メモリ制御部601と、ユニット間通信部701と、プロファイル情報収集部301と、ユニット制御部201とを具える。以後、代表的に単位処理ユニット100及びその構成要素のみを参照して説明する。前記単位処理ユニット間は、制御バス800と、ユニット間通信路820−1、2...で接続され、各単位処理ユニットと記憶装置(図示せず)との間をメモリバス810で接続する。
例えば、処理内容保持部400と、演算処理部500と、メモリ制御部600との組で、通常のプロセッサ(VLIW:Very Long Instruction Word processor)として動作可能である。たとえば、同じ機能をFPGA(Field Programmable Gate Array)と同様の技術を使った「可塑的ハードウェア」で実現することも可能である。
処理内容保持部400に格納される処理内容(プログラム)によって、当該単位処理ユニットの動作を変えられるようにする。具体的には、システム全体の資源管理を行う資源管理スレッド(RC(resource core)と略記)、最適化処理を行う最適化スレッド(OF(optimizing fork)と略記)、プログラムの挙動を観測しプロファイル情報を収集・解析する観測スレッド(PF(profiling fork)と略記)、アプリケーションプログラムの実行を行う演算スレッド(CF(computing fork)と略記)の4つの種類がある。各スレッドは、単位処理ユニットで実行可能な4つの機能、すなわち、実行内容の変更など資源管理をする機能、最適化コードを生成する機能、プログラムの挙動観測機能、アプリケーション実行機能、に対応している。
単位処理ユニット100には、プログラムのプロファイル情報を収集するための回路が設けられている(プロファイル情報収集部300)。プロファイル情報収集部300は、演算機能や記憶機能を持っていても良いし、隣接の単位処理ユニットに情報を転送するだけの機能でも良い。ここで収集されたプロファイル情報は、ユニット間通信部700によりユニット開通信路820−1、2、...を介して他の単位処理ユニットに伝えることができる。
・資源管理スレッド(RC)を実行中の単位処理ユニット100は、制御バス800を使い他の単位処理ユニットの処理制御部をアクセスすることによって、他の単位処理ユニットの内部状態を変更できる機能を持つ。たとえば、処理内容保持部400の内容を変更することで、各単位処理ユニットを任意の役割に変更することができる。また、単位処理ユニットで実行されるアプリケーションプログラムのコード(演算スレッド)を、より最適化されたコードに変更することも可能である。
単位処理ユニットの役割は、実行前に静的に決めることもできるが、上記の変更機能を使うことでプログラム実行中に動的に変更することもできる。
演算処理スレッド(CF)でのプログラムの実行の状態を、観測スレッド(PF)が監視する。観測スレッド(PF)が求めたプロファイル結果を用いて、最適化スレッド(OF)がより適したプログラム(オブジェクトコード)および処理形態を求める。その結果、実行効率が向上すると判断されれば、資源管理スレッド(RC)が上記の変更機能を用いることで、システムをより実行に適した状態に変更する。逆に、観測スレッド(PF)での監視の結果、演算スレッド(CF)での実行効率が悪化していると判断されれば、資源管理スレッド(RC)が各処理ユニットの役割分担を変更することにより、プログラムの挙動観測と最適化に.より適した構成に変更することができる。
図2は、前記記憶装置へのアクセスのためにユニット間通信路を使用するように図1の構成を変更した変形例のブロック図である。
図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にアクセスすることができる。
図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)。
図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つの図の間を遷移することにより、状況に応じた最適な処理形態とする(図中の双方向矢印)。
図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)。
図9および図10は、各処理ユニット群の配置に関する一例を示す図である。処理ユニット群の範囲を図上で見やすくするため、ハッチングを施している。上述の説明では処理ユニット群に割当てる処理ユニットの個数に言及するだけで、配置方法については触れていなかった。上に挙げた本発明による実施例では、処理ユニット問の通信がユニット間通信路(図1中の820)を介して行われるため、通信の状況を勘案して処理ユニット群を配置しないと、ユニット間通信路を通る情報が輻輳し、性能向上を妨げる要因になる可能性がある。このため、現実的には、ユニット間通信路の負荷が最も少なくなるように処理ユニット群の配置を考える必要がある。図9は、最適化があまり進んでいない状態(あるいは初期状態)での、処理ユニット群の配置例である。ここでは演算処理ユニット群930に2つの処理ユニットが割当てられ、相互に通信している。この演算処理ユニット群930を取り囲むように観測処理ユニット群920を配置する。演算処理ユニット群での実行挙動の情報は、演算処理ユニット群930から外側に向かって流れるため、演算処理ユニット群内部での通信を阻害しない。さらにこの図では、観測処理ユニット群920の結果が、最適化処理ユニット群910に抵抗なく流れるように考慮されている。図10は、最適化が進んだ状態での、処理ユニット群の配置例である。この例では、演算処理ユニット群930が環状の通信路を形成している。この環状通信路に沿った通信を阻害しないように観測処理ユニット群920、資源管理・最適化処理ユニット群940を配置している。
本発明によれば、処理ユニットを複数用いることによりアプリケーションプログラムの高速化を実現する演算処理装置において、該アプリケーションプログラム実行中に得られる情報を用いることで動的な最適化を行い、一層の高速化を果たすことができる。したがって、本発明は、高速な処理性能が求められる高性能電子計算機、汎用マイクロプロセッサ、機器組み込み装置など広い分野で適用が可能である。
本発明による自己最適化演算装置の一実施例の構成を示すブロック図である。 図1の自己最適化演算装置の変形例の構成を示すブロック図である。 本発明による自己最適化演算装置の基本的な考え方を説明するブロック図である。 本発明による自己最適化演算装置の各処理ユニット群の動作を時間順に説明した図である。 本発明による自己最適化演算装置の各単位処理ユニットの役割分担の変更の様子を説明する図である。 図5中に示した各構成を、図1を元に説明した図である。 図5中に示した各構成を、図1を元に説明した図である。 図5中に示した各構成を、図1を元に説明した図である。 本発明による自己最適化装置の各処理ユニット群の配置に関する一例を示す図である。 本発明による自己最適化装置の各処理ユニット群の配置に関する他の例を示す図である。
符号の説明
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 記憶装置

Claims (2)

  1. 複数の均質な単位処理ユニットを具える自己最適化演算装置において、
    各々の単位処理ユニットが、プログラムを実行する演算処理ユニット、実行中のプログラムの挙動を観測する観測処理ユニット、観測結果に基づいて最適化処理を行う最適化処理ユニット、及び、実行内容の変更など装置全体の資源管理を行う資源管理処理ユニットのうち少なくとも1つとして動作し、
    前記単位処理ユニットの各々が、前記演算処理ユニットの実行状態および実行プログラムそのものを動的に変更できる機能を有し、
    前記最適化処理ユニットが、
    前記観測処理ユニットによって観測されたプログラムの挙動の観測結果をもとに実時間で最適なプログラムコードを生成し、前記演算処理ユニットの実行内容を動的に変更する、
    ことを特徴とする自己最適化演算装置。
  2. 請求項に記載の自己最適化演算装置において、
    プログラムの最適化状況に応じて、前記演算処理ユニット、観測処理ユニット、最適化処理ユニット及び資源管理処理ユニットの数の比率を変える、
    ことを特徴とする自己最適化演算装置。
JP2003434625A 2003-12-26 2003-12-26 自己最適化演算装置 Expired - Lifetime JP3879002B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003434625A JP3879002B2 (ja) 2003-12-26 2003-12-26 自己最適化演算装置
US11/020,153 US20050166207A1 (en) 2003-12-26 2004-12-27 Self-optimizing computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003434625A JP3879002B2 (ja) 2003-12-26 2003-12-26 自己最適化演算装置

Publications (2)

Publication Number Publication Date
JP2005190430A JP2005190430A (ja) 2005-07-14
JP3879002B2 true JP3879002B2 (ja) 2007-02-07

Family

ID=34791630

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003434625A Expired - Lifetime JP3879002B2 (ja) 2003-12-26 2003-12-26 自己最適化演算装置

Country Status (2)

Country Link
US (1) US20050166207A1 (ja)
JP (1) JP3879002B2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7961194B2 (en) 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
US7808499B2 (en) 2003-11-19 2010-10-05 Lucid Information Technology, Ltd. PC-based computing system employing parallelized graphics processing units (GPUS) interfaced with the central processing unit (CPU) using a PC bus and a hardware graphics hub having a router
US20090027383A1 (en) 2003-11-19 2009-01-29 Lucid Information Technology, Ltd. Computing system parallelizing the operation of multiple graphics processing pipelines (GPPLs) and supporting depth-less based image recomposition
WO2006117683A2 (en) * 2005-01-25 2006-11-09 Lucid Information Technology, Ltd. Graphics processing and display system employing multiple graphics cores on a silicon chip of monolithic construction
US20070291040A1 (en) * 2005-01-25 2007-12-20 Reuven Bakalash Multi-mode parallel graphics rendering system supporting dynamic profiling of graphics-based applications and automatic control of parallel modes of operation
US8497865B2 (en) * 2006-12-31 2013-07-30 Lucid Information Technology, Ltd. Parallel graphics system employing multiple graphics processing pipelines with multiple graphics processing units (GPUS) and supporting an object division mode of parallel graphics processing using programmable pixel or vertex processing resources provided with the GPUS
US8085273B2 (en) 2003-11-19 2011-12-27 Lucid Information Technology, Ltd Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US20080079737A1 (en) 2003-11-19 2008-04-03 Reuven Bakalash Multi-mode parallel graphics rendering and display system supporting real-time detection of mode control commands (MCCS) programmed within pre-profiled scenes of the graphics-based application
US7546588B2 (en) * 2004-09-09 2009-06-09 International Business Machines Corporation Self-optimizable code with code path selection and efficient memory allocation
US7398369B2 (en) * 2004-10-28 2008-07-08 International Business Machines Corporation Memory leakage management
US9275430B2 (en) 2006-12-31 2016-03-01 Lucidlogix Technologies, Ltd. Computing system employing a multi-GPU graphics processing and display subsystem supporting single-GPU non-parallel (multi-threading) and multi-GPU application-division parallel modes of graphics processing operation
US11714476B2 (en) 2006-12-31 2023-08-01 Google Llc Apparatus and method for power management of a computing system
US20130290688A1 (en) * 2013-04-22 2013-10-31 Stanislav Victorovich Bratanov Method of Concurrent Instruction Execution and Parallel Work Balancing in Heterogeneous Computer Systems
US9405531B2 (en) * 2013-07-16 2016-08-02 Software Ag Methods for building application intelligence into event driven applications through usage learning, and systems supporting such applications
US9756147B1 (en) 2013-12-20 2017-09-05 Open Text Corporation Dynamic discovery and management of page fragments
US9170786B1 (en) 2013-12-20 2015-10-27 Emc Corporation Composable context menus
US10466872B1 (en) 2013-12-20 2019-11-05 Open Text Corporation Composable events for dynamic user interface composition
US9529572B1 (en) 2013-12-20 2016-12-27 Emc Corporation Composable application session parameters
US9851951B1 (en) 2013-12-20 2017-12-26 Emc Corporation Composable action flows
US11461112B2 (en) * 2019-02-07 2022-10-04 International Business Machines Corporation Determining feature settings for code to deploy to a system by training a machine learning module
US11521116B2 (en) 2019-06-25 2022-12-06 Nxp Usa, Inc. Self-optimizing multi-core integrated circuit
US20210406693A1 (en) * 2020-06-25 2021-12-30 Nxp B.V. Data sample analysis in a dataset for a machine learning model

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6954923B1 (en) * 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US6820255B2 (en) * 1999-02-17 2004-11-16 Elbrus International Method for fast execution of translated binary code utilizing database cache for low-level code correspondence
US6622300B1 (en) * 1999-04-21 2003-09-16 Hewlett-Packard Development Company, L.P. Dynamic optimization of computer programs using code-rewriting kernal module
US6567974B1 (en) * 2000-02-25 2003-05-20 Sun Microsystems, Inc. Small memory footprint system and method for separating applications within a single virtual machine
US6862729B1 (en) * 2000-04-04 2005-03-01 Microsoft Corporation Profile-driven data layout optimization
US7210129B2 (en) * 2001-08-16 2007-04-24 Pact Xpp Technologies Ag Method for translating programs for reconfigurable architectures
US6848099B2 (en) * 2001-10-11 2005-01-25 Intel Corporation Method and system for bidirectional bitwise constant propogation by abstract interpretation
US7140006B2 (en) * 2001-10-11 2006-11-21 Intel Corporation Method and apparatus for optimizing code
US20030117971A1 (en) * 2001-12-21 2003-06-26 Celoxica Ltd. System, method, and article of manufacture for profiling an executable hardware model using calls to profiling functions
US7278137B1 (en) * 2001-12-26 2007-10-02 Arc International Methods and apparatus for compiling instructions for a data processor
US7146607B2 (en) * 2002-09-17 2006-12-05 International Business Machines Corporation Method and system for transparent dynamic optimization in a multiprocessing environment
US7275242B2 (en) * 2002-10-04 2007-09-25 Hewlett-Packard Development Company, L.P. System and method for optimizing a program
US7203935B2 (en) * 2002-12-05 2007-04-10 Nec Corporation Hardware/software platform for rapid prototyping of code compression technologies

Also Published As

Publication number Publication date
US20050166207A1 (en) 2005-07-28
JP2005190430A (ja) 2005-07-14

Similar Documents

Publication Publication Date Title
JP3879002B2 (ja) 自己最適化演算装置
US8868623B2 (en) Enhanced garbage collection in a multi-node environment
US8205200B2 (en) Compiler-based scheduling optimization hints for user-level threads
US9396021B2 (en) Techniques for dynamically assigning jobs to processors in a cluster using local job tables
US8239524B2 (en) Techniques for dynamically assigning jobs to processors in a cluster based on processor workload
US8214814B2 (en) Sharing compiler optimizations in a multi-node system
US9384042B2 (en) Techniques for dynamically assigning jobs to processors in a cluster based on inter-thread communications
EP2281236B1 (en) Just-ahead-of-time compilation
JP4949157B2 (ja) Numaコンピュータシステムにおけるローカリティドメインおよびスレッドアフィニティに基づいてコードを再コンパイルするためのシステムおよび方法
US8122441B2 (en) Sharing compiler optimizations in a multi-node system
Da Costa et al. Exascale machines require new programming paradigms and runtimes
JP2014504768A (ja) 領域に基づくガベージ・コレクタを用いてクラスを漸進的にアンロードするための方法、コンピュータ・プログラム製品、および装置
Giorgi et al. An introduction to DF-Threads and their execution model
US20080184214A1 (en) Routing Performance Analysis and Optimization Within a Massively Parallel Computer
US11163677B2 (en) Dynamically allocated thread-local storage
US8489700B2 (en) Analysis of nodal affinity behavior
JP3810735B2 (ja) スケーラブル・メモリの効率的なスレッドローカル・オブジェクト割り当て方法
Choi et al. Interference-aware co-scheduling method based on classification of application characteristics from hardware performance counter using data mining
Naik et al. A review of adaptive approaches to MapReduce scheduling in heterogeneous environments
Dominico et al. An elastic multi-core allocation mechanism for database systems
Li Orchestrating thread scheduling and cache management to improve memory system throughput in throughput processors
Cremonesi et al. Performance evaluation of parallel systems
JP4535784B2 (ja) プロセス配置装置、プロセス配置方法及びプロセス配置プログラム
Berthold et al. Comparing and optimising parallel Haskell implementations for multicore machines
EP3929743A1 (en) Technology for optimizing hybrid processor utilization

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20031226

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20040521

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20041112

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20041221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060328

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060526

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060601

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: 20061010

R150 Certificate of patent or registration of utility model

Ref document number: 3879002

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

EXPY Cancellation because of completion of term