JP4013972B2 - プロセッサ、プロセッサでのプログラム実行方法 - Google Patents

プロセッサ、プロセッサでのプログラム実行方法 Download PDF

Info

Publication number
JP4013972B2
JP4013972B2 JP2005275529A JP2005275529A JP4013972B2 JP 4013972 B2 JP4013972 B2 JP 4013972B2 JP 2005275529 A JP2005275529 A JP 2005275529A JP 2005275529 A JP2005275529 A JP 2005275529A JP 4013972 B2 JP4013972 B2 JP 4013972B2
Authority
JP
Japan
Prior art keywords
basic block
execution
execution calculation
block
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.)
Expired - Fee Related
Application number
JP2005275529A
Other languages
English (en)
Other versions
JP2007087132A (ja
Inventor
信一 岩本
泰徳 榊原
崇之 菅原
正 松岡
泉 城所
Original Assignee
ソナック株式会社
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 ソナック株式会社 filed Critical ソナック株式会社
Priority to JP2005275529A priority Critical patent/JP4013972B2/ja
Priority to PCT/JP2006/318715 priority patent/WO2007034862A1/ja
Publication of JP2007087132A publication Critical patent/JP2007087132A/ja
Application granted granted Critical
Publication of JP4013972B2 publication Critical patent/JP4013972B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

本発明は、基本ブロックを単位として実行可能プログラムをロードして実行するプロセッサに関する。
コンピュータアーキテクチャの1つであるノイマン型は、主記憶装置に保存されている命令を順に読み出して処理を行う逐次処理方式であり、コンピュータで実行する処理を順に記述するC言語等の高級プロググラム言語と親和性が高く、現在最も広く使用されているアーキテクチャである。
ノイマン型アーキテクチャによるコンピュータは、クロック速度の増加と共に、そのパフォーマンスも向上するが、同時に消費電力及び発熱量が増大するという問題がある。クロック速度を増加させずにパフォーマンスを向上させる試みとしては、複数の演算器をプロセッサ内に設けて並列処理を行う方法がある。非特許文献1には、複数の演算器を設け、プロセッサが処理する単位である命令語の中に、各演算器で実行する命令をそれぞれ記述したVLIW(Very Long Instruction Word)方式について記載がされている。
また、非ノイマン型のアーキテクチャとして、演算対象のデータが揃った時点で演算を行うデータ駆動型があり、プロセッサに設けた複数の演算器間の接続及び各演算器で実行する命令をプログラムで設定する再構成可能なプロセッサが非特許文献2に記載されている。
John L Hennessy、David A.Patterson著、富田眞治、村上和彰、新實治男 訳、"コンピュータ・アーキテクチャ"、第1版、日経BP社、1993年5月、p.316‐p.319 デザインウェーブマガジン、CQ出版社、2004年8月号、p.24‐p.29
上述したように、現在のところノイマン型アーキテクチャのコンピュータが主流であるが、パフォーマンスの向上のためクロック速度を上げると消費電力及び発熱量が増大するという問題があり、また、VLIW(Very Long Instruction Word)方式といった、クロック速度を上げずにパフォーマンスを向上させる工夫による効果も頭打ちとなってきている。
一方、非ノイマン型アーキテクチャは、対象となるアプリケーションによっては非常に高いパフォーマンスを発揮するが、そのソフトウェアは、現在のところ、主に、専用のプログラム言語により開発されているため、過去のプログラム資産を利用できず、そのために、非ノイマン型アーキテクチャのコンピュータが広まらないという問題点がある。
従って、本発明は、従来よりもパフォーマンスを向上させることができるプロセッサを提供することを目的とする。また、プログラム開発環境として、専用のプログラム言語を必要とせず、従来のノイマン型アーキテクチャによるコンピュータのためのソフトウェア開発に主に用いられている、C言語等の高級プログラミング言語との親和性が高く、従来のソフトウェア資産の利用が可能なプロセッサを提供することも目的とする。
また、本発明は、上記プロセッサでの実行可能プログラムの実行方法を提供することも目的とする。
本発明におけるプロセッサによれば、
基本ブロック境界を特定する情報と、各基本ブロックについて、制御フローグラフ上で次に位置する基本ブロックである次位基本ブロックを特定する情報とを含む実行可能プログラムを実行するプロセッサであって、ロードされる基本ブロックを実行する、1つ以上の実行計算手段と、実行計算手段に対応して設けられる保存手段と、基本ブロックを単位とした、実行可能プログラムの実行計算手段へのロード制御を行うと共に、ロードした基本ブロックの次位基本ブロックを特定する情報を、ロード先の実行計算手段に対応する保存手段に保存するローディング手段とを有することを特徴とする。
本発明のプロセッサにおける他の実施形態によれば、
実行計算手段は、基本ブロックの実行を終了したときに処理結果情報を含むロード指示を出力し、ローディング手段は、処理結果情報に基づき、保存手段を参照して次に実行する基本ブロックを判定し、判定した基本ブロックが実行計算手段にロードされていない場合には、判定した基本ブロックの実行計算手段へのロード制御を行うことも好ましい。
更に、本発明のプロセッサにおける他の実施形態によれば、
保存手段は、それぞれが1つの次位基本ブロックを特定する情報を保存する複数のフィールドから構成され、前記処理結果情報には、保存手段のフィールドを指定する情報が含まれており、ローディング手段は、ロード指示を出力した実行計算手段に対応する保存手段の、処理結果情報で指定されたフィールドを参照することにより、次に実行する基本ブロックを判定することも好ましい。
更に、本発明のプロセッサにおける他の実施形態によれば、
前記実行計算手段は、データ駆動型であることも好ましい。
本発明における実行可能プログラムの実行方法によれば、
基本ブロック境界を特定する情報と、各基本ブロックについて、制御フローグラフ上で次に位置する基本ブロックである次位基本ブロックを特定する情報を含む実行可能プログラムの、プロセッサにおける実行方法であって、基本ブロックをロードするステップと、基本ブロックを実行するステップと、実行した基本ブロックの処理結果に基づき、実行した基本ブロックの次位基本ブロックから次に実行する基本ブロックを判定するステップとを有することを特徴とする。
本発明によるプロセッサは、基本ブロックを単位として実行可能プログラムを実行計算手段にロードし実行する。従って、プロセッサ外部にあり、実行可能プログラムを保存している主記憶装置へのアクセス数が低減し、メモリアクセス効率が向上する。基本ブロックは制御フローグラフに基づくものであり、単に主記憶装置の近傍にある命令列の塊を、予めより高速なメモリに格納しておく命令キャッシュと異なり、キャッシュミスは発生せず、本発明によるプロセッサではより高速に、プログラムの実行が可能となる。
また、制御フローグラフの解析は、従来の高級プログラム言語用のコンパイラ装置で通常行われているものであり、基本ブロックを単位として実行可能プログラムを生成する本発明によるコンパイラ装置は高級プログラム言語との親和性が高い。
また、実行計算手段をデータ駆動型とした場合には、基本ブロック内で使用するローカル変数に対しては、ロード/ストア命令が発生しないため、更に処理速度が向上するという利点がある。
本発明を実施するための最良の実施形態について、以下では図面を用いて詳細に説明する。
図1は、本発明によるプロセッサ1のブロック図である。図1によると、プロセッサ1は、実行計算部11と、ブロックポインタ12と、ローディング部13とを備えている。また、ローディング部13は、プロセッサ1の外部にある主記憶装置2と接続するためのインタフェースを有している。
図2(a)は、本発明によるコンパイラ装置3のブロック図であり、コンパイラ装置3は、ソースプログラム4を入力として、プロセッサ1が実行する実行可能プログラム5を生成する。図2(b)は、実行可能プログラム5の構成を示す概略図であり、実行可能プログラム5は、基本ブロック6を単位として構成されている。以下に基本ブロックについて説明を行う。
高級プログラム言語のコンパイラ装置は、ソースプログラムを入力として、字句解析及び構文解析を行い、対象とするプロセッサへの最適化後にコードの生成を行う。この最適化の前に、通常、プログラムの制御の流れを示す制御フローグラフを生成するが、この制御フローグラフの単位が基本ブロックである。基本ブロックにおいては、入力となる命令及び出力となる命令、即ち、最初に実行する命令及び最後に実行する命令はただ1つであり、最後に実行する命令を経由することなく他の基本ブロックに分岐したり、停止したりすることがなく、最初に実行する命令から最後に実行する命令まで1直線に実行することができるという特徴がある。以後、ある基本ブロックから見て、制御フローグラフで次に位置する1つ以上の基本ブロックを、その基本ブロックの次位基本ブロックと呼ぶ。
続いて、図2を用いて本発明によるコンパイラ装置3について説明を行う。構文解析部31は、ソースプログラム4の字句解析及び構文解析を行い、制御フローグラフ生成部32は、構文解析部31での字句解析及び構文解析後に、ソースプログラム4の制御の流れを示す制御フローグラフを生成する。続いて、最適化部33は、対象とするプロセッサ1に応じて、処理速度又はプログラムサイズ等の最適化を行う。最後にコード生成部34は、対象とするプロセッサ1が実行でき、基本ブロック6を単位として構成される実行可能プログラム5を生成して出力する。
ここでコード生成部34が出力する実行可能プログラム5は、基本ブロック6内の命令列を解析することなく、実行可能プログラム5を構成する基本ブロック6の境界を特定する情報と、各基本ブロック6の次位基本ブロックを特定する情報を有している。これは、例えば、各基本ブロック6に、そのサイズ情報と、基本ブロックの先頭位置から、各次位基本ブロックまでのビット数又はバイト数の情報を付加することで実現できる。また、実行可能プログラム5の先頭部分にヘッダ部を設け、総ての基本ブロックの位置と、その次位基本ブロックの位置を、実行可能プログラム5の先頭からのビット数又はバイト数で示す情報を設定すること、或いは、上記方法の組合せにより実現できる。尚、本発明によるコンパイラ装置3は、コンピュータに上記機能を実行させるプログラムによっても実現できる。
図3は、コンパイラ装置3が出力する実行可能プログラム5をより具体的に説明する図である。図3(a)は、C言語プログラムの一部分であり、sum及びiを0に初期化した後、10未満のiに対して、sumに、(x+i)*hの値を積算していく処理を表している。図3(b)は、図3(a)のプログラムに対する制御フローグラフであり、図3(c)は、各基本ブロックでの処理内容をC言語に似た記述方法により表現したものである。
図3(a)のC言語プログラムは、3つの基本ブロックB1、B2、B3に分割されている。ここで、図3(c)に示す様に、基本ブロックB1は変数の初期化を、基本ブロックB2はforループ内の積算処理及び変数iのインクリメントを、基本ブロックB3は条件判定を行うブロックである。処理は図3(b)に示す様に、基本ブロックB1を実行したのち、基本ブロックB3で条件判定を行い、iが10未満である限りはB2を実行することを繰り返し、iが10となった場合には、他のブロック(図3(c)においては基本ブロックB4としている。)の実行を開始する流れとなる。
図3(c)に示す様に、基本ブロックB1には、基本ブロックB1の次位基本ブロックである基本ブロックB3が記述され、基本ブロックB2には、基本ブロックB2の次位基本ブロックである基本ブロックB3が記述され、基本ブロックB3には、基本ブロックB3の次位基本ブロックである基本ブロックB2及びB4が記述されている。図3(c)は理解のためC言語に似た記述方法により表現しているが、実際にはコード化されており、また、上述したように、プロセッサ1が、実行可能プログラム5の命令を解析することなく基本ブロック6の境界を認識でき、かつ、各基本ブロック6を見れば、制御フローグラフで次に位置する基本ブロック6を認識できる構造となっている。
例えば、基本ブロック6の境界認識のために、各基本ブロック6に、そのサイズ情報を付加し、次位基本ブロックを特定するために、各基本ブロック6の先頭位置から次位基本ブロックまでのバイト数の情報を用いた場合、実行可能プログラム5を保存する主記憶装置2では、これらサイズ情報及びバイト数の情報は、主記憶装置2のアドレス値の変位、即ちアドレス情報となり、アドレス情報により基本ブロック6の境界及び次位基本ブロックが特定できる。
続いて、図1を用いて、本発明によるプロセッサ1の各部の動作について説明を行う。前提条件として、主記憶装置2は、図2(b)に示す実行可能プログラム5を保存しており、各基本ブロック6の境界及び次位基本ブロックは、主記憶装置2のアドレス情報により特定されるものとする。更に、図3(c)に示す基本ブロックB3のように、次位基本ブロックが複数示されている場合には、記載順の番号で参照を行うものとする。つまり、プロセッサ1内では、基本ブロックB3の処理において、基本ブロックB2を1番目の次位基本ブロックと、基本ブロックB4を2番目の次位基本ブロックとして参照するものとする。
ローディング部13は、基本ブロック6を単位として、実行計算部11に実行可能プログラム5をロードすると共に、ロードした基本ブロック6の次位基本ブロックを特定するための情報、本例ではアドレス情報を、ブロックポインタ12に保存する。このとき、実行計算部11にロードした基本ブロック6をローディング部13は管理しておく。続いて、実行計算部11からの、処理結果情報を含むロード指示に対して、ブロックポインタ12を参照して次に実行する基本ブロック6のアドレス情報を取得し、取得したアドレス情報に基づき主記憶装置2から実行計算部11に、次に実行する基本ブロック6をロードする。
ブロックポインタ12は、第1から第K(Kは2以上の整数)のフィールドを有し、各フィールドにはそれぞれ、1つの次位基本ブロックのアドレス情報が保存される。ローディング部13は、基本ブロック6の次位基本ブロック6のアドレス情報を、その記載順にブロックポインタ12に保存する。例えば、図3(c)の基本ブロックB1のように、次位基本ブロックがB3のみである場合には、基本ブロックB3のアドレス情報を第1のフィールドに保存し、基本ブロックB3のように、次位基本ブロックが複数ある場合には、最初に記載されている基本ブロック、即ち基本ブロックB2のアドレス情報を第1のフィールドに、次に記載されている基本ブロックB4のアドレス情報を、第2のフィールドに保存する。
実行計算部11は、ローディング部13がロードする基本ブロック6の命令内容を解析して命令内容に従った処理を行う。即ち、ローディング部13により、基本ブロック6を単位としてロードされる実行可能プログラムを実行する。また、ロードされた基本ブロック6の実行が終了した場合は、ローディング部13にロード指示を行う。このロード指示には、ローディング部13が次に実行計算部11で実行すべき基本ブロックを判定するために必要な処理結果情報が含まれている。即ち、実行計算部11は、図3(c)に示す基本ブロックB3の実行を終了した場合、iが10未満のときは1番目を、iが10のときは2番目を示す処理結果情報を含むロード指示をローディング部13に出力し、ローディング部13は、この情報を元にブロックポインタ12の複数のフィールドから、次に実行計算部11で実行させる基本ブロック6を認識する。
尚、実行可能プログラム5の最初に実行する基本ブロックの特定は、公知の方法を使用することができる。例えば、最初に実行する基本ブロック6は、主記憶装置2の所定の位置に必ず保存するものとし、前記所定の位置を図示しない外部メモリに保存しておき、実行時に、図示しないメモリから前記所定の位置をブロックポインタ12の第1のフィールドに書き込み、実行計算部1がローディング部13に1番目を示す処理結果情報を含むロード指示を行うことで、実行計算部1にロードさせる等の方法がある。
図4は、実行計算部11がデータ駆動型である場合のブロック図であり、図4(a)は初期状態を、図4(b)は基本ブロック6がロードされた状態を示している。図4によると、実行計算部11は複数の演算器111を備えており、これら複数の演算器111がマトリックス状に配置されている。各演算器111での処理内容及び演算器111間の接続は、ロードする基本ブロック6により決定され、ロードする基本ブロック6を変更することで異なる処理を実行することができる。
実行計算部11がデータ駆動型の場合において、本発明によるコンパイラ装置3では、制御フローグラフ生成部32が制御フローグラフを生成し、最適化部33が基本ブロックごとにデータフローグラフを生成して最適化処理を行い、コード生成部34が実行計算部11にロードする実行可能プログラム5を生成して出力する。
例えば、図3(c)に示す基本ブロックB2のデータフローグラフは図6(a)のようになり、本発明によるコンパイラ装置3は、図6(a)に示す基本ブロックB2のデータフローグラフから、基本ブロックB2を実行計算部11にロードしたときに実行計算部11が図6(b)に示す状態となるように、演算器111の処理内容及び演算器111間の接続を制御するコードを生成する。この様に、基本ブロックごとに、データフローグラフを生成して実行計算部11を制御するコードを生成することで、実行計算部11がデータ駆動型であっても、高級プログラム言語と親和性が高いプロセッサを実現できる。
図4のデータ駆動型の実行計算部11では、各演算器111がそれぞれプログラミングされており、独立して同時に処理を実行することができるため処理速度が向上する。
図5(a)は、実行計算部11がVLIW型である場合のブロック図であり、図5(b)は、実行計算部11に対するVLIW命令語61を示す図である。図5(a)によると、実行計算部11は、それぞれが1つのVLIW命令語61を蓄積するバッファ112−1〜112−Nと、L個の演算器を有するVLIW演算器113とを備えている。基本ブロック6を単位としてロードされるVLIW命令語61は、VLIW演算器113の各演算器でそれぞれ同時に実行されるL個の命令を有し、バッファ112−1から処理順で蓄積され、VLIW演算器113で順に実行される。
実行計算部11がVLIW型の場合において、本発明によるコンパイラ装置3では、制御フローグラフ生成部32が制御フローグラフを生成し、最適化部33がデータ依存関係を解析して同時に実行可能な命令を求め、コード生成部34が実行計算部1にロードする実行可能プログラム5を生成して出力する。
尚、実行計算部11には、上記データ駆動型やVLIW型のみならず、その他のアーキテクチャも使用可能である。
図7は、図3(c)に示す基本ブロックを実行する場合のシーケンス図である。
(S71)ローディング部13は、実行計算部11に基本ブロックB1をロードして、実行計算部11で実行させるためのトリガである実行指示を行う。尚、本例では実行計算部11が1つであるため、基本ブロックをロードしたことをもって実行指示の代わりとすることも可能である。同時に、基本ブロックB1の次位基本ブロックである基本ブロックB3を、ブロックポインタ12の第1のフィールドに書き込む。
(S72)実行計算部11は、基本ブロックB1の実行が終了したときに処理結果情報を含むロード指示を出力し、ローディング部13は、処理結果情報に基づきブロックポインタ12を参照して、次に実行する基本ブロックB3のアドレス情報を取得する。続いて、ローディング部13は、次に実行する基本ブロックB3を実行計算部11にロードすると共に、基本ブロックB1の次位基本ブロックのうち1番目に記載されている基本ブロックB2を、ブロックポインタ12の第1のフィールドに、2番目に記載されている基本ブロックB4を、ブロックポインタ12の第2のフィールドに書き込む。
(S73)実行計算部11は、基本ブロックB3を実行する。この時点ではi=0であるため、1番目を示す処理結果情報を含むロード指示を出力し、ローディング部13は、処理結果情報に基づきブロックポインタ12の第1のフィールドを参照して、基本ブロックB2のアドレス情報を取得し、基本ブロックB2を実行計算部11にロードすると共に、基本ブロックB2の次位基本ブロックである基本ブロックB3を、ブロックポインタ12の第1のフィールドに書き込む。
(S74)以後、基本ブロックB2と基本ブロックB3が繰り返し実行され、基本ブロックB2の10回目の実行が終了したときに、実行計算部11は、処理結果情報を含むロード指示を出力し、ローディング部13は、処理結果情報に基づきブロックポインタ12を参照して、基本ブロックB3のアドレス情報を取得し、基本ブロックB3を実行計算部11にロードすると共に、基本ブロックB3の次位基本ブロックのうち1番目に記載されている基本ブロックB2を、ブロックポインタ12の第1のフィールドに、2番目に記載されている基本ブロックB4を、ブロックポインタ12の第2のフィールドに書き込む。
(S75)実行計算部11は、基本ブロックB3を実行する。この時点ではi=10であるため、2番目を示す処理結果情報を含むロード指示を出力し、ローディング部13は、処理結果情報に基づきブロックポインタ12の第2のフィールドを参照して、基本ブロックB4のアドレス情報を取得し、基本ブロックB4を実行計算部11にロードする。
以上、本発明によるプロセッサ1は、複数の命令を並行して実行可能な実行計算部11を備え、主記憶装置2から、基本ブロックを単位として実行可能プログラム5を実行計算部11にロードし実行する。従って、主記憶装置2へのアクセス数が低減し、メモリアクセス効率が向上する。基本ブロックは制御フローグラフに基づくものであり、単に主記憶装置2の近傍にある命令列の塊を、予めより高速なメモリに格納しておく命令キャッシュと異なり、キャッシュミスは発生せず、本発明によるプロセッサ1ではより高速に、プログラムの実行が可能となる。また、実行計算部1をデータ駆動型とした場合には、基本ブロック内で使用するローカル変数に対しては、ロード/ストア命令が発生しないため、更に処理速度が向上するという利点がある。
また、基本ブロック6に基づく制御フローグラフの解析は、従来の高級プログラム言語用のコンパイラ装置で通常行われているものであり、基本ブロック6を単位として実行可能プログラム5のロードを行い実行する本発明によるプロセッサ1は、実行計算部11のアーキテクチャに係らず、高級プログラム言語との親和性が高く、本発明によるプロセッサ1では、過去のプログラム資産の利用が可能である。
図8は、本発明によるプロセッサ1の他の実施形態におけるブロック図である。図8によると、プロセッサ1は、実行計算部11−1〜11−3と、ブロックポインタ12と、ローディング部14と、実行計算部11−1〜11−3に対応して設けられるバンク15−1〜15−3とを有する。また、ローディング部14は、プロセッサ1外部にある主記憶装置2と接続するためのインタフェースを有している。尚、実行計算部の数は例示であり、3つに限定されない。
実行計算部11−1〜11−3は、既に説明した図1の実行計算部11と同じであり、データ駆動型や、VLIW型等、任意のアーキテクチャが使用可能である。
ブロックポインタ12は、実行計算部11−1〜11−3にロードされた基本ブロック6の次位基本ブロックを特定する情報を、それぞれ、実行計算部11−1〜11−3毎に独立して保持する以外は、図1のブロックポインタ12と同じである。ローディング部14は、図1のローディング部13の機能に、複数ある実行計算部11−1〜11−3に対するスケジューリング機能を追加したものである。
本実施形態によるプロセッサ1での処理は、ローディング部14が基本ブロック6を実行計算部11−1〜11−3のいずれかにロードし、実行計算部11−1〜11−3がロードされた基本ブロック6を実行して処理結果情報を含むロード指示を出力し、ローディング部14が処理結果情報に基づき、次に実行する基本ブロックを判定し、次に実行する基本ブロックを実行計算部11−1〜11−3のいずれにもロードしていない場合には、次に実行する基本ブロックを実行計算部11−1〜11−3のいずれかにロードして実行させ、次に実行する基本ブロックを既に、実行計算部11−1〜11−3のいずれかにロードしている場合には、次に実行する基本ブロックをロードしている実行計算部に実行指示を行うことで進んでいく。
また、実行計算部において実行終了した基本ブロック6が、ブロックポインタ12が保存している次位基本ブロックに含まれていない場合、ローディング部14は、ブロックポインタ12が保存している次位基本ブロックのうち実行計算部に未だロードされていない基本ブロック6を、前記実行終了した実行計算部に予めロードしておく。同様に、ローディング部14は、基本ブロック6がロードされていない実行計算部が存在する場合には、ブロックポインタ12が保存している次位基本ブロックのうち実行計算部に未だロードされていない基本ブロック6を、基本ブロックがロードされていない実行計算部に予めロードしておく。以下に具体例を示す。
図9は、図8に示す実施形態において、図3(c)に示す基本ブロックを実行する場合のシーケンス図である。尚、簡単のため、ブロックポインタ12はシーケンス図には含めていない。
(S91)まず、実行計算部11−1に基本ブロックB1がロードされたものとする。このときロード先である実行計算部11−1に対応するブロックポインタ12の第1のフィールドには基本ブロックB3が書き込まれる。ローディング部14は、各実行計算部11−1〜11−3にロードした基本ブロックを管理しており、実行計算部11−1にロードした基本ブロックB1の次位基本ブロックである基本ブロックB3を、空いている実行計算部11−2にロードする。基本ブロックB3の実行計算部11−2へのロードにより、実行計算部11−2に対応するブロックポインタ12の第1のフィールドには基本ブロックB2が、第2のフィールドには基本ブロックB4が書き込まれることになる。ローディング部14は、空いている実行計算部がこの時点では実行計算部11−3のみであるため、第1のフィールドに示されている基本ブロックB2を実行計算部11−3にロードする。但し、実行計算部11−2及び実行計算部11−3はプログラムをロードするのみで実行は行わない。
(S92)実行計算部11−1での基本ブロックB1の実行が終了した場合、実行計算部11−1は、ローディング部14に処理結果情報を含むロード指示を行う。処理結果情報に基づき実行計算部11−1に対応するブロックポインタ12の第1のフィールドを参照し、ローディング部14は、次に実行する基本ブロックが既に実行計算部11−2にロードしている基本ブロックB3であることを認識し、よって、ローディング部14は、実行計算部11−2に実行開始を指示する。また、ロードしたのみで未だ実行が終了していない、実行計算部11−2及び11−3にロードした基本ブロックB2及びB3の次位基本ブロックには、実行終了した基本ブロックB1は含まれておらず、逆に基本ブロックB2の次位基本ブロックB4を未だロードしていないため、ローディング部14は、基本ブロックB4を実行計算部11−1にロードする。但し、実行計算部11−1はプログラムをロードするのみで実行は行わない。
尚、実行計算部11−1からのローディング指示に対して、次に実行する基本ブロックである基本ブロックB3が実行計算部のいずれにもロードされていない場合、ローディング部14は、基本ブロックB3を実行計算部のいずれかにロードして実行させる。
(S93)実行計算部11−2での基本ブロックB3の実行が終了した場合、実行計算部11−2は、ローディング部14に、処理結果情報を含むロード指示を行う。この段階では、処理結果情報は1番目の基本ブロックを示しており、実行計算部11−2に対応するブロックポインタ12の第1のフィールドを参照することで、ローディング部14は次に実行すべき基本ブロックが、実行計算部11−3にロードしている基本ブロックB2であると判定し、よって、実行計算部11−3に実行指示を行う。
(S94)実行計算部11−3での基本ブロックB2の実行が終了した場合、実行計算部11−3は、ローディング部14にロード指示を行い、ローディング部14は、ブロックポインタ12を参照することで、次に実行すべき基本ブロックが、実行計算部11−2にロードしている基本ブロックB3であることを認識し、実行計算部11−2に実行指示を行う。
(S95)以後、実行計算部11−3にロードされている基本ブロックB2と、実行計算部11−2にロードされている基本ブロックB3が繰り返し実行される。
(S96)実行計算部11−2による基本ブロックB3の実行が11回行われたのち、実行計算部11−2は、ローディング部14に、2番目の基本ブロックを示す処理結果情報を含むロード指示を行う。ローディング部14は、実行計算部11−2に対応するブロックポインタ12の第2のフィールドを参照することで、次に実行すべき基本ブロックが、実行計算部11−1にロードしている基本ブロックB4であると判定し、よって、実行計算部11−1に実行指示を行う。
以上、複数の実行計算部11−1〜11−3を備え、ローディング部14が各実行計算部にロードする基本ブロックを管理し、調整することで、更に、主記憶装置2にアクセスする回数を減少させることができ、よって処理速度が向上する。
また、実行可能プログラム5の制御フローグラフから、例えば、複数の基本ブロック6が並列で処理可能な場合や、異なるプログラムの基本ブロック6を、複数の実行計算部11を備えることで同時に実行することが可能となり、プログラム処理の柔軟性が増し、かつ、全体の処理速度を向上させることができる。
図8に戻り、バンク15−1〜15−3は、基本ブロック6を記憶保存する機能を有する。実行計算部11−1〜11−3に対して新たな基本ブロック6をロードすると、既にロードされている基本ブロック6は上書き消去されてしまうが、これら既に実行した基本ブロック6を保存するためにバンク15−1〜15−3を使用する。例えば、実行計算部11が1つの場合のシーケンス図である図7のS73において、実行計算部11にロードする基本ブロックB2の次位基本ブロックは、基本ブロックB3であるため、実行計算部11に既にロードされている基本ブロックB3を、バンクに保存しておくことで、基本ブロックB2の実行を終了したときにはバンクから基本ブロックB3を実行計算部11にロードさせることができ、あらためて主記憶装置2から基本ブロックB3をロードする必要はなくなる。よって、主記憶装置へのアクセス回数を減らすことができ処理速度が向上する。
また、図9のS91において、基本ブロックB3の次位基本ブロックである基本ブロックB4は実行計算部にはロードされないが、いずれかのバンクに予め基本ブロックB4を保存させておくことも可能となる。
以上、バンク15−1〜15−3を設けることにより、反復して使用される基本ブロック6について、その都度プロセッサ1の外部にある主記憶装置2から取得する必要がなくなるため、実行計算部11−1〜11−3の数を増やすことなく、処理速度を向上させることができる。
また、上記説明において、ローディング部13及び14が主記憶装置2から実行可能プログラム5を取得して実行計算部11にロードする形態で説明を行ったが、ローディング部13及び14は、基本ブロックを単位とした、実行可能プログラムの実行計算部11へのロード制御を行うものであれば、他のロード方法であってもよい。例えば、ローディング部13及び14が、実行計算部11に対してロードすべき基本ブロック6のアドレス情報を通知して実行計算部11が直接、主記憶装置2から通知されたアドレス情報に基づき基本ブロック6を取得する構成とすることもできる。この場合、実行計算部11と主記憶装置2とローディング部13又は14とを同一バス上に接続する等、実行計算部11が直接、主記憶装置2にアクセスできる構成とする。
本発明によるプロセッサのブロック図である。 本発明によるコンパイラ装置のブロック図である。 本発明によるコンパイラ装置が出力する実行可能プログラムを説明する図である。 データ駆動型の実行計算部のブロック図である。 VLIW型の実行計算部のブロック図である。 データフローグラフ及び対応するデータ駆動型の実行計算部の設定を示す図である。 本発明によるプロセッサのシーケンス図である。 本発明によるプロセッサの他の実施形態におけるブロック図である。 本発明によるプロセッサの他の実施形態におけるシーケンス図である。
符号の説明
1 プロセッサ
2 主記憶装置
3 コンパイラ装置
4 ソースプログラム
5 実行可能プログラム
6 基本ブロック
11 実行計算部
12 ブロックポインタ
13、14 ローディング部
15 バンク
31 構文解析部
32 制御フローグラフ生成部
33 最適化部
34 コード生成部
61 VLIW命令語
111 演算器
112−1〜112−N バッファ
113 VLIW演算器

Claims (5)

  1. 基本ブロック境界を特定する情報と、各基本ブロックについて、制御フローグラフ上で次に位置する基本ブロックである次位基本ブロックを特定する情報とを含む実行可能プログラムを実行するプロセッサであって、
    ロードされる基本ブロックを実行する、1つ以上の実行計算手段と、
    実行計算手段に対応して設けられる保存手段と、
    基本ブロックを単位とした、実行可能プログラムの実行計算手段へのロード制御を行うと共に、ロードした基本ブロックの次位基本ブロックを特定する情報を、ロード先の実行計算手段に対応する保存手段に保存するローディング手段と、
    を有することを特徴とするプロセッサ。
  2. 実行計算手段は、基本ブロックの実行を終了したときに処理結果情報を含むロード指示を出力し、
    ローディング手段は、処理結果情報に基づき、保存手段を参照して次に実行する基本ブロックを判定し、判定した基本ブロックが実行計算手段にロードされていない場合には、判定した基本ブロックの実行計算手段へのロード制御を行うこと、
    を特徴とする請求項1に記載のプロセッサ。
  3. 保存手段は、それぞれが1つの次位基本ブロックを特定する情報を保存する複数のフィールドから構成され、
    前記処理結果情報には、保存手段のフィールドを指定する情報が含まれており、
    ローディング手段は、ロード指示を出力した実行計算手段に対応する保存手段の、処理結果情報で指定されたフィールドを参照することにより、次に実行する基本ブロックを判定すること、
    を特徴とする請求項2に記載のプロセッサ。
  4. 前記実行計算手段は、データ駆動型であることを特徴とする請求項1から3のいずれか1項に記載のプロセッサ。
  5. 基本ブロック境界を特定する情報と、各基本ブロックについて、制御フローグラフ上で次に位置する基本ブロックである次位基本ブロックを特定する情報を含む実行可能プログラムの、プロセッサにおける実行方法であって、
    基本ブロックをロードするステップと、
    基本ブロックを実行するステップと、
    実行した基本ブロックの処理結果に基づき、実行した基本ブロックの次位基本ブロックから次に実行する基本ブロックを判定するステップと、
    を有することを特徴とする方法。
JP2005275529A 2005-09-22 2005-09-22 プロセッサ、プロセッサでのプログラム実行方法 Expired - Fee Related JP4013972B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005275529A JP4013972B2 (ja) 2005-09-22 2005-09-22 プロセッサ、プロセッサでのプログラム実行方法
PCT/JP2006/318715 WO2007034862A1 (ja) 2005-09-22 2006-09-21 プロセッサ、プロセッサでのプログラム実行方法、コンパイラ装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005275529A JP4013972B2 (ja) 2005-09-22 2005-09-22 プロセッサ、プロセッサでのプログラム実行方法

Publications (2)

Publication Number Publication Date
JP2007087132A JP2007087132A (ja) 2007-04-05
JP4013972B2 true JP4013972B2 (ja) 2007-11-28

Family

ID=37888905

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005275529A Expired - Fee Related JP4013972B2 (ja) 2005-09-22 2005-09-22 プロセッサ、プロセッサでのプログラム実行方法

Country Status (2)

Country Link
JP (1) JP4013972B2 (ja)
WO (1) WO2007034862A1 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0764939A (ja) * 1993-08-24 1995-03-10 Sony Corp 信号処理装置
US7024538B2 (en) * 2001-12-21 2006-04-04 Hewlett-Packard Development Company, L.P. Processor multiple function units executing cycle specifying variable length instruction block and using common target block address updated pointers
JP3851228B2 (ja) * 2002-06-14 2006-11-29 松下電器産業株式会社 プロセッサ、プログラム変換装置及びプログラム変換方法、並びにコンピュータプログラム

Also Published As

Publication number Publication date
JP2007087132A (ja) 2007-04-05
WO2007034862A1 (ja) 2007-03-29

Similar Documents

Publication Publication Date Title
JP5681473B2 (ja) プログラムの最適化装置、最適化方法および最適化プログラム
US9513922B2 (en) Computer system and a method for generating an optimized program code
JP3377419B2 (ja) 命令列生成方法及び装置、変換方法、及びコンピュータ
US9696966B2 (en) Software development tool to automatically generate an optimized executable
US10860300B2 (en) Direct function call substitution using preprocessor
US20120066668A1 (en) C/c++ language extensions for general-purpose graphics processing unit
KR20180021812A (ko) 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐
JP4751510B2 (ja) メモリアクセス最適化方法
JP2002532775A (ja) インタープリタプログラム実行方法
US6301652B1 (en) Instruction cache alignment mechanism for branch targets based on predicted execution frequencies
JP2009059246A (ja) マイクロプロセッサ
KR20210156860A (ko) True/false 벡터 인덱스 레지스터
US10338926B2 (en) Processor with conditional instructions
US9361109B2 (en) System and method to evaluate a data value as an instruction
US20230315471A1 (en) Method and system for hardware-assisted pre-execution
WO2021036173A1 (zh) 解释执行字节码指令流的方法及装置
JP4013972B2 (ja) プロセッサ、プロセッサでのプログラム実行方法
CN113791770B (zh) 代码编译器、代码编译方法、代码编译***和计算机介质
JP2004240953A (ja) コンピュータシステム、その同時多重スレッディング方法およびキャッシュコントローラシステム。
JPH11242599A (ja) コンピュータプログラム製品
US7886133B2 (en) Information processing apparatus and method for accelerating information processing
US11740906B2 (en) Methods and systems for nested stream prefetching for general purpose central processing units
CN111752614A (zh) 一种处理器、指令执行设备及方法
US10606602B2 (en) Electronic apparatus, processor and control method including a compiler scheduling instructions to reduce unused input ports
WO2022130883A1 (ja) コンパイル装置、コンパイル方法、及びコンパイルプログラム記録媒体

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070522

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070619

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070619

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070725

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070903

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

Free format text: PAYMENT UNTIL: 20100921

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees