図面 (/)

技術 プロセッサ、プロセッサでのプログラム実行方法、コンパイラ装置及びプログラム

出願人 ソナック株式会社
発明者 岩本信一榊原泰徳菅原崇之松岡正城所泉
出願日 2005年9月22日 (14年7ヶ月経過) 出願番号 2005-275529
公開日 2007年4月5日 (13年1ヶ月経過) 公開番号 2007-087132
状態 特許登録済
技術分野 ストアードプログラム制御 特別なプログラム実行装置 データフローマシン ストアードプログラム ストアードプログラム
主要キーワード C言語 データ駆動型 各基本ブロック メモリアクセス効率 ブロックポインタ 演算器間 各演算器 ノイマン
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2007年4月5日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (10)

課題

高級プログラミング言語との親和性が高く、従来のソフトウェア資産の利用が可能であり、かつ、従来のプロセッサよりもパフォーマンスを向上させることができるプロセッサを提供する。

解決手段

プロセッサは、基本ブロック境界を特定する情報と、各基本ブロックについて、制御フローグラフ上で次に位置する基本ブロックである次位基本ブロックを特定する情報を含む実行可能プログラムを実行するものであり、ロードされる基本ブロックを実行する1つ以上の実行計算手段と、実行計算手段に対応して設けられる保存手段と、基本ブロックを単位とした、実行可能プログラムの実行計算手段へのロード制御を行うと共に、ロードした基本ブロックの次位基本ブロックを、ロード先の実行計算手段に対応する保存手段に保存するローディング手段とを備えている。

概要

背景

コンピュータアーキテクチャの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

概要

高級プログラミング言語との親和性が高く、従来のソフトウェア資産の利用が可能であり、かつ、従来のプロセッサよりもパフォーマンスを向上させることができるプロセッサを提供する。 プロセッサは、基本ブロック境界を特定する情報と、各基本ブロックについて、制御フローグラフ上で次に位置する基本ブロックである次位基本ブロックを特定する情報を含む実行可能プログラムを実行するものであり、ロードされる基本ブロックを実行する1つ以上の実行計算手段と、実行計算手段に対応して設けられる保存手段と、基本ブロックを単位とした、実行可能プログラムの実行計算手段へのロード制御を行うと共に、ロードした基本ブロックの次位基本ブロックを、ロード先の実行計算手段に対応する保存手段に保存するローディング手段とを備えている。

目的

従って、本発明は、従来よりもパフォーマンスを向上させることができるプロセッサを提供することを目的とする。また、プログラム開発環境として、専用のプログラム言語を必要とせず、従来のノイマン型アーキテクチャによるコンピュータのためのソフトウェア開発に主に用いられている、C言語等の高級プログラミング言語との親和性が高く、従来のソフトウェア資産の利用が可能なプロセッサを提供することも目的とする。

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

基本ブロック境界を特定する情報と、各基本ブロックについて、制御フローグラフ上で次に位置する基本ブロックである次位基本ブロックを特定する情報とを含む実行可能プログラムを実行するプロセッサであって、ロードされる基本ブロックを実行する、1つ以上の実行計算手段と、実行計算手段に対応して設けられる保存手段と、基本ブロックを単位とした、実行可能プログラムの実行計算手段へのロード制御を行うと共に、ロードした基本ブロックの次位基本ブロックを特定する情報を、ロード先の実行計算手段に対応する保存手段に保存するローディング手段と、を有することを特徴とするプロセッサ。

請求項2

実行計算手段は、基本ブロックの実行を終了したときに処理結果情報を含むロード指示を出力し、ローディング手段は、処理結果情報に基づき、保存手段を参照して次に実行する基本ブロックを判定し、判定した基本ブロックが実行計算手段にロードされていない場合には、判定した基本ブロックの実行計算手段へのロード制御を行うこと、を特徴とする請求項1に記載のプロセッサ。

請求項3

保存手段は、それぞれが1つの次位基本ブロックを特定する情報を保存する複数のフィールドから構成され、前記処理結果情報には、保存手段のフィールドを指定する情報が含まれており、ローディング手段は、ロード指示を出力した実行計算手段に対応する保存手段の、処理結果情報で指定されたフィールドを参照することにより、次に実行する基本ブロックを判定すること、を特徴とする請求項2に記載のプロセッサ。

請求項4

前記実行計算手段は、データ駆動型であることを特徴とする請求項1から3のいずれか1項に記載のプロセッサ。

請求項5

基本ブロック境界を特定する情報と、各基本ブロックについて、制御フローグラフ上で次に位置する基本ブロックである次位基本ブロックを特定する情報を含む実行可能プログラムの、プロセッサにおける実行方法であって、基本ブロックをロードするステップと、基本ブロックを実行するステップと、実行した基本ブロックの処理結果に基づき、実行した基本ブロックの次位基本ブロックから次に実行する基本ブロックを判定するステップと、を有することを特徴とする方法。

請求項6

ソースプログラム制御フロー解析して制御フローグラフを生成する制御フローグラフ生成手段と、基本ブロック境界を特定する情報と、各基本ブロックについて、制御フローグラフ上で次に位置する基本ブロックを特定する情報を含む実行可能プログラムを生成するコード生成手段と、を有することを特徴とするコンパイラ装置

請求項7

コンピュータを、ソースプログラムの制御フローを解析して制御フローグラフを生成する制御フローグラフ生成手段と、基本ブロック境界を特定する情報と、各基本ブロックについて、制御フローグラフ上で次に位置する基本ブロックを特定する情報を含む実行可能プログラムを生成するコード生成手段と、して機能させることを特徴とするプログラム

技術分野

0001

本発明は、基本ブロックを単位として実行可能プログラムをロードして実行するプロセッサ及び該プロセッサに対するコンパイラ装置に関する。

背景技術

0002

コンピュータアーキテクチャの1つであるノイマン型は、主記憶装置に保存されている命令を順に読み出して処理を行う逐次処理方式であり、コンピュータで実行する処理を順に記述するC言語等の高級プロググラム言語と親和性が高く、現在最も広く使用されているアーキテクチャである。

0003

ノイマン型アーキテクチャによるコンピュータは、クロック速度の増加と共に、そのパフォーマンスも向上するが、同時に消費電力及び発熱量が増大するという問題がある。クロック速度を増加させずにパフォーマンスを向上させる試みとしては、複数の演算器をプロセッサ内に設けて並列処理を行う方法がある。非特許文献1には、複数の演算器を設け、プロセッサが処理する単位である命令語の中に、各演算器で実行する命令をそれぞれ記述したVLIW(Very Long Instruction Word)方式について記載がされている。

0004

また、非ノイマン型のアーキテクチャとして、演算対象のデータが揃った時点で演算を行うデータ駆動型があり、プロセッサに設けた複数の演算器間の接続及び各演算器で実行する命令をプログラムで設定する再構成可能なプロセッサが非特許文献2に記載されている。

0005

John L Hennessy、David A.Patterson著、富田眞治、上和彰、新實治訳、“コンピュータ・アーキテクチャ”、第1版、日経BP社、1993年5月、p.316‐p.319
デザインウェーブマガジン、CQ出版社、2004年8月号、p.24‐p.29

発明が解決しようとする課題

0006

上述したように、現在のところノイマン型アーキテクチャのコンピュータが主流であるが、パフォーマンスの向上のためクロック速度を上げると消費電力及び発熱量が増大するという問題があり、また、VLIW(Very Long Instruction Word)方式といった、クロック速度を上げずにパフォーマンスを向上させる工夫による効果も頭打ちとなってきている。

0007

一方、非ノイマン型アーキテクチャは、対象となるアプリケーションによっては非常に高いパフォーマンスを発揮するが、そのソフトウェアは、現在のところ、主に、専用のプログラム言語により開発されているため、過去のプログラム資産を利用できず、そのために、非ノイマン型アーキテクチャのコンピュータが広まらないという問題点がある。

0008

従って、本発明は、従来よりもパフォーマンスを向上させることができるプロセッサを提供することを目的とする。また、プログラム開発環境として、専用のプログラム言語を必要とせず、従来のノイマン型アーキテクチャによるコンピュータのためのソフトウェア開発に主に用いられている、C言語等の高級プログラミング言語との親和性が高く、従来のソフトウェア資産の利用が可能なプロセッサを提供することも目的とする。

0009

また、本発明は、上記プロセッサでの実行可能プログラムの実行方法を、更に、上記プロセッサに対するコンパイラ装置を提供することも目的とする。

課題を解決するための手段

0010

本発明におけるプロセッサによれば、
基本ブロック境界を特定する情報と、各基本ブロックについて、制御フローグラフ上で次に位置する基本ブロックである次位基本ブロックを特定する情報とを含む実行可能プログラムを実行するプロセッサであって、ロードされる基本ブロックを実行する、1つ以上の実行計算手段と、実行計算手段に対応して設けられる保存手段と、基本ブロックを単位とした、実行可能プログラムの実行計算手段へのロード制御を行うと共に、ロードした基本ブロックの次位基本ブロックを特定する情報を、ロード先の実行計算手段に対応する保存手段に保存するローディング手段とを有することを特徴とする。

0011

本発明のプロセッサにおける他の実施形態によれば、
実行計算手段は、基本ブロックの実行を終了したときに処理結果情報を含むロード指示を出力し、ローディング手段は、処理結果情報に基づき、保存手段を参照して次に実行する基本ブロックを判定し、判定した基本ブロックが実行計算手段にロードされていない場合には、判定した基本ブロックの実行計算手段へのロード制御を行うことも好ましい。

0012

更に、本発明のプロセッサにおける他の実施形態によれば、
保存手段は、それぞれが1つの次位基本ブロックを特定する情報を保存する複数のフィールドから構成され、前記処理結果情報には、保存手段のフィールドを指定する情報が含まれており、ローディング手段は、ロード指示を出力した実行計算手段に対応する保存手段の、処理結果情報で指定されたフィールドを参照することにより、次に実行する基本ブロックを判定することも好ましい。

0013

更に、本発明のプロセッサにおける他の実施形態によれば、
前記実行計算手段は、データ駆動型であることも好ましい。

0014

本発明における実行可能プログラムの実行方法によれば、
基本ブロック境界を特定する情報と、各基本ブロックについて、制御フローグラフ上で次に位置する基本ブロックである次位基本ブロックを特定する情報を含む実行可能プログラムの、プロセッサにおける実行方法であって、基本ブロックをロードするステップと、基本ブロックを実行するステップと、実行した基本ブロックの処理結果に基づき、実行した基本ブロックの次位基本ブロックから次に実行する基本ブロックを判定するステップとを有することを特徴とする。

0015

本発明におけるコンパイラ装置によれば、
ソースプログラム制御フロー解析して制御フローグラフを生成する制御フローグラフ生成手段と、基本ブロック境界を特定する情報と、各基本ブロックについて、制御フローグラフ上で次に位置する基本ブロックを特定する情報を含む実行可能プログラムを生成するコード生成手段とを有することを特徴とする。

0016

本発明におけるプログラムによれば、
コンピュータを、前記コンパイラ装置として機能させることを特徴とする。

発明の効果

0017

本発明によるプロセッサは、基本ブロックを単位として実行可能プログラムを実行計算手段にロードし実行する。従って、プロセッサ外部にあり、実行可能プログラムを保存している主記憶装置へのアクセス数が低減し、メモリアクセス効率が向上する。基本ブロックは制御フローグラフに基づくものであり、単に主記憶装置の近傍にある命令列の塊を、予めより高速メモリに格納しておく命令キャッシュと異なり、キャッシュミスは発生せず、本発明によるプロセッサではより高速に、プログラムの実行が可能となる。

0018

また、制御フローグラフの解析は、従来の高級プログラム言語用のコンパイラ装置で通常行われているものであり、基本ブロックを単位として実行可能プログラムを生成する本発明によるコンパイラ装置は高級プログラム言語との親和性が高い。

0019

また、実行計算手段をデータ駆動型とした場合には、基本ブロック内で使用するローカル変数に対しては、ロード/ストア命令が発生しないため、更に処理速度が向上するという利点がある。

発明を実施するための最良の形態

0020

本発明を実施するための最良の実施形態について、以下では図面を用いて詳細に説明する。

0021

図1は、本発明によるプロセッサ1のブロック図である。図1によると、プロセッサ1は、実行計算部11と、ブロックポインタ12と、ローディング部13とを備えている。また、ローディング部13は、プロセッサ1の外部にある主記憶装置2と接続するためのインタフェースを有している。

0022

図2(a)は、本発明によるコンパイラ装置3のブロック図であり、コンパイラ装置3は、ソースプログラム4を入力として、プロセッサ1が実行する実行可能プログラム5を生成する。図2(b)は、実行可能プログラム5の構成を示す概略図であり、実行可能プログラム5は、基本ブロック6を単位として構成されている。以下に基本ブロックについて説明を行う。

0023

高級プログラム言語のコンパイラ装置は、ソースプログラムを入力として、字句解析及び構文解析を行い、対象とするプロセッサへの最適化後にコードの生成を行う。この最適化の前に、通常、プログラムの制御の流れを示す制御フローグラフを生成するが、この制御フローグラフの単位が基本ブロックである。基本ブロックにおいては、入力となる命令及び出力となる命令、即ち、最初に実行する命令及び最後に実行する命令はただ1つであり、最後に実行する命令を経由することなく他の基本ブロックに分岐したり、停止したりすることがなく、最初に実行する命令から最後に実行する命令まで1直線に実行することができるという特徴がある。以後、ある基本ブロックから見て、制御フローグラフで次に位置する1つ以上の基本ブロックを、その基本ブロックの次位基本ブロックと呼ぶ。

0024

続いて、図2を用いて本発明によるコンパイラ装置3について説明を行う。構文解析部31は、ソースプログラム4の字句解析及び構文解析を行い、制御フローグラフ生成部32は、構文解析部31での字句解析及び構文解析後に、ソースプログラム4の制御の流れを示す制御フローグラフを生成する。続いて、最適化部33は、対象とするプロセッサ1に応じて、処理速度又はプログラムサイズ等の最適化を行う。最後にコード生成部34は、対象とするプロセッサ1が実行でき、基本ブロック6を単位として構成される実行可能プログラム5を生成して出力する。

0025

ここでコード生成部34が出力する実行可能プログラム5は、基本ブロック6内の命令列を解析することなく、実行可能プログラム5を構成する基本ブロック6の境界を特定する情報と、各基本ブロック6の次位基本ブロックを特定する情報を有している。これは、例えば、各基本ブロック6に、そのサイズ情報と、基本ブロックの先頭位置から、各次位基本ブロックまでのビット数又はバイト数の情報を付加することで実現できる。また、実行可能プログラム5の先頭部分にヘッダ部を設け、総ての基本ブロックの位置と、その次位基本ブロックの位置を、実行可能プログラム5の先頭からのビット数又はバイト数で示す情報を設定すること、或いは、上記方法の組合せにより実現できる。尚、本発明によるコンパイラ装置3は、コンピュータに上記機能を実行させるプログラムによっても実現できる。

0026

図3は、コンパイラ装置3が出力する実行可能プログラム5をより具体的に説明する図である。図3(a)は、C言語プログラムの一部分であり、sum及びiを0に初期化した後、10未満のiに対して、sumに、(x+i)*hの値を積算していく処理を表している。図3(b)は、図3(a)のプログラムに対する制御フローグラフであり、図3(c)は、各基本ブロックでの処理内容をC言語に似た記述方法により表現したものである。

0027

図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としている。)の実行を開始する流れとなる。

0028

図3(c)に示す様に、基本ブロックB1には、基本ブロックB1の次位基本ブロックである基本ブロックB3が記述され、基本ブロックB2には、基本ブロックB2の次位基本ブロックである基本ブロックB3が記述され、基本ブロックB3には、基本ブロックB3の次位基本ブロックである基本ブロックB2及びB4が記述されている。図3(c)は理解のためC言語に似た記述方法により表現しているが、実際にはコード化されており、また、上述したように、プロセッサ1が、実行可能プログラム5の命令を解析することなく基本ブロック6の境界を認識でき、かつ、各基本ブロック6を見れば、制御フローグラフで次に位置する基本ブロック6を認識できる構造となっている。

0029

例えば、基本ブロック6の境界認識のために、各基本ブロック6に、そのサイズ情報を付加し、次位基本ブロックを特定するために、各基本ブロック6の先頭位置から次位基本ブロックまでのバイト数の情報を用いた場合、実行可能プログラム5を保存する主記憶装置2では、これらサイズ情報及びバイト数の情報は、主記憶装置2のアドレス値変位、即ちアドレス情報となり、アドレス情報により基本ブロック6の境界及び次位基本ブロックが特定できる。

0030

続いて、図1を用いて、本発明によるプロセッサ1の各部の動作について説明を行う。前提条件として、主記憶装置2は、図2(b)に示す実行可能プログラム5を保存しており、各基本ブロック6の境界及び次位基本ブロックは、主記憶装置2のアドレス情報により特定されるものとする。更に、図3(c)に示す基本ブロックB3のように、次位基本ブロックが複数示されている場合には、記載順の番号で参照を行うものとする。つまり、プロセッサ1内では、基本ブロックB3の処理において、基本ブロックB2を1番目の次位基本ブロックと、基本ブロックB4を2番目の次位基本ブロックとして参照するものとする。

0031

ローディング部13は、基本ブロック6を単位として、実行計算部11に実行可能プログラム5をロードすると共に、ロードした基本ブロック6の次位基本ブロックを特定するための情報、本例ではアドレス情報を、ブロックポインタ12に保存する。このとき、実行計算部11にロードした基本ブロック6をローディング部13は管理しておく。続いて、実行計算部11からの、処理結果情報を含むロード指示に対して、ブロックポインタ12を参照して次に実行する基本ブロック6のアドレス情報を取得し、取得したアドレス情報に基づき主記憶装置2から実行計算部11に、次に実行する基本ブロック6をロードする。

0032

ブロックポインタ12は、第1から第K(Kは2以上の整数)のフィールドを有し、各フィールドにはそれぞれ、1つの次位基本ブロックのアドレス情報が保存される。ローディング部13は、基本ブロック6の次位基本ブロック6のアドレス情報を、その記載順にブロックポインタ12に保存する。例えば、図3(c)の基本ブロックB1のように、次位基本ブロックがB3のみである場合には、基本ブロックB3のアドレス情報を第1のフィールドに保存し、基本ブロックB3のように、次位基本ブロックが複数ある場合には、最初に記載されている基本ブロック、即ち基本ブロックB2のアドレス情報を第1のフィールドに、次に記載されている基本ブロックB4のアドレス情報を、第2のフィールドに保存する。

0033

実行計算部11は、ローディング部13がロードする基本ブロック6の命令内容を解析して命令内容に従った処理を行う。即ち、ローディング部13により、基本ブロック6を単位としてロードされる実行可能プログラムを実行する。また、ロードされた基本ブロック6の実行が終了した場合は、ローディング部13にロード指示を行う。このロード指示には、ローディング部13が次に実行計算部11で実行すべき基本ブロックを判定するために必要な処理結果情報が含まれている。即ち、実行計算部11は、図3(c)に示す基本ブロックB3の実行を終了した場合、iが10未満のときは1番目を、iが10のときは2番目を示す処理結果情報を含むロード指示をローディング部13に出力し、ローディング部13は、この情報を元にブロックポインタ12の複数のフィールドから、次に実行計算部11で実行させる基本ブロック6を認識する。

0034

尚、実行可能プログラム5の最初に実行する基本ブロックの特定は、公知の方法を使用することができる。例えば、最初に実行する基本ブロック6は、主記憶装置2の所定の位置に必ず保存するものとし、前記所定の位置を図示しない外部メモリに保存しておき、実行時に、図示しないメモリから前記所定の位置をブロックポインタ12の第1のフィールドに書き込み、実行計算部1がローディング部13に1番目を示す処理結果情報を含むロード指示を行うことで、実行計算部1にロードさせる等の方法がある。

0035

図4は、実行計算部11がデータ駆動型である場合のブロック図であり、図4(a)は初期状態を、図4(b)は基本ブロック6がロードされた状態を示している。図4によると、実行計算部11は複数の演算器111を備えており、これら複数の演算器111がマトリックス状に配置されている。各演算器111での処理内容及び演算器111間の接続は、ロードする基本ブロック6により決定され、ロードする基本ブロック6を変更することで異なる処理を実行することができる。

0036

実行計算部11がデータ駆動型の場合において、本発明によるコンパイラ装置3では、制御フローグラフ生成部32が制御フローグラフを生成し、最適化部33が基本ブロックごとにデータフローグラフを生成して最適化処理を行い、コード生成部34が実行計算部11にロードする実行可能プログラム5を生成して出力する。

0037

例えば、図3(c)に示す基本ブロックB2のデータフローグラフは図6(a)のようになり、本発明によるコンパイラ装置3は、図6(a)に示す基本ブロックB2のデータフローグラフから、基本ブロックB2を実行計算部11にロードしたときに実行計算部11が図6(b)に示す状態となるように、演算器111の処理内容及び演算器111間の接続を制御するコードを生成する。この様に、基本ブロックごとに、データフローグラフを生成して実行計算部11を制御するコードを生成することで、実行計算部11がデータ駆動型であっても、高級プログラム言語と親和性が高いプロセッサを実現できる。

0038

図4のデータ駆動型の実行計算部11では、各演算器111がそれぞれプログラミングされており、独立して同時に処理を実行することができるため処理速度が向上する。

0039

図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で順に実行される。

0040

実行計算部11がVLIW型の場合において、本発明によるコンパイラ装置3では、制御フローグラフ生成部32が制御フローグラフを生成し、最適化部33がデータ依存関係を解析して同時に実行可能な命令を求め、コード生成部34が実行計算部1にロードする実行可能プログラム5を生成して出力する。

0041

尚、実行計算部11には、上記データ駆動型やVLIW型のみならず、その他のアーキテクチャも使用可能である。

0042

図7は、図3(c)に示す基本ブロックを実行する場合のシーケンス図である。

0043

(S71)ローディング部13は、実行計算部11に基本ブロックB1をロードして、実行計算部11で実行させるためのトリガである実行指示を行う。尚、本例では実行計算部11が1つであるため、基本ブロックをロードしたことをもって実行指示の代わりとすることも可能である。同時に、基本ブロックB1の次位基本ブロックである基本ブロックB3を、ブロックポインタ12の第1のフィールドに書き込む。

0044

(S72)実行計算部11は、基本ブロックB1の実行が終了したときに処理結果情報を含むロード指示を出力し、ローディング部13は、処理結果情報に基づきブロックポインタ12を参照して、次に実行する基本ブロックB3のアドレス情報を取得する。続いて、ローディング部13は、次に実行する基本ブロックB3を実行計算部11にロードすると共に、基本ブロックB1の次位基本ブロックのうち1番目に記載されている基本ブロックB2を、ブロックポインタ12の第1のフィールドに、2番目に記載されている基本ブロックB4を、ブロックポインタ12の第2のフィールドに書き込む。

0045

(S73)実行計算部11は、基本ブロックB3を実行する。この時点ではi=0であるため、1番目を示す処理結果情報を含むロード指示を出力し、ローディング部13は、処理結果情報に基づきブロックポインタ12の第1のフィールドを参照して、基本ブロックB2のアドレス情報を取得し、基本ブロックB2を実行計算部11にロードすると共に、基本ブロックB2の次位基本ブロックである基本ブロックB3を、ブロックポインタ12の第1のフィールドに書き込む。

0046

(S74)以後、基本ブロックB2と基本ブロックB3が繰り返し実行され、基本ブロックB2の10回目の実行が終了したときに、実行計算部11は、処理結果情報を含むロード指示を出力し、ローディング部13は、処理結果情報に基づきブロックポインタ12を参照して、基本ブロックB3のアドレス情報を取得し、基本ブロックB3を実行計算部11にロードすると共に、基本ブロックB3の次位基本ブロックのうち1番目に記載されている基本ブロックB2を、ブロックポインタ12の第1のフィールドに、2番目に記載されている基本ブロックB4を、ブロックポインタ12の第2のフィールドに書き込む。

0047

(S75)実行計算部11は、基本ブロックB3を実行する。この時点ではi=10であるため、2番目を示す処理結果情報を含むロード指示を出力し、ローディング部13は、処理結果情報に基づきブロックポインタ12の第2のフィールドを参照して、基本ブロックB4のアドレス情報を取得し、基本ブロックB4を実行計算部11にロードする。

0048

以上、本発明によるプロセッサ1は、複数の命令を並行して実行可能な実行計算部11を備え、主記憶装置2から、基本ブロックを単位として実行可能プログラム5を実行計算部11にロードし実行する。従って、主記憶装置2へのアクセス数が低減し、メモリアクセス効率が向上する。基本ブロックは制御フローグラフに基づくものであり、単に主記憶装置2の近傍にある命令列の塊を、予めより高速なメモリに格納しておく命令キャッシュと異なり、キャッシュミスは発生せず、本発明によるプロセッサ1ではより高速に、プログラムの実行が可能となる。また、実行計算部1をデータ駆動型とした場合には、基本ブロック内で使用するローカル変数に対しては、ロード/ストア命令が発生しないため、更に処理速度が向上するという利点がある。

0049

また、基本ブロック6に基づく制御フローグラフの解析は、従来の高級プログラム言語用のコンパイラ装置で通常行われているものであり、基本ブロック6を単位として実行可能プログラム5のロードを行い実行する本発明によるプロセッサ1は、実行計算部11のアーキテクチャに係らず、高級プログラム言語との親和性が高く、本発明によるプロセッサ1では、過去のプログラム資産の利用が可能である。

0050

図8は、本発明によるプロセッサ1の他の実施形態におけるブロック図である。図8によると、プロセッサ1は、実行計算部11−1〜11−3と、ブロックポインタ12と、ローディング部14と、実行計算部11−1〜11−3に対応して設けられるバンク15−1〜15−3とを有する。また、ローディング部14は、プロセッサ1外部にある主記憶装置2と接続するためのインタフェースを有している。尚、実行計算部の数は例示であり、3つに限定されない。

0051

実行計算部11−1〜11−3は、既に説明した図1の実行計算部11と同じであり、データ駆動型や、VLIW型等、任意のアーキテクチャが使用可能である。

0052

ブロックポインタ12は、実行計算部11−1〜11−3にロードされた基本ブロック6の次位基本ブロックを特定する情報を、それぞれ、実行計算部11−1〜11−3毎に独立して保持する以外は、図1のブロックポインタ12と同じである。ローディング部14は、図1のローディング部13の機能に、複数ある実行計算部11−1〜11−3に対するスケジューリング機能を追加したものである。

0053

本実施形態によるプロセッサ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のいずれかにロードしている場合には、次に実行する基本ブロックをロードしている実行計算部に実行指示を行うことで進んでいく。

0054

また、実行計算部において実行終了した基本ブロック6が、ブロックポインタ12が保存している次位基本ブロックに含まれていない場合、ローディング部14は、ブロックポインタ12が保存している次位基本ブロックのうち実行計算部に未だロードされていない基本ブロック6を、前記実行終了した実行計算部に予めロードしておく。同様に、ローディング部14は、基本ブロック6がロードされていない実行計算部が存在する場合には、ブロックポインタ12が保存している次位基本ブロックのうち実行計算部に未だロードされていない基本ブロック6を、基本ブロックがロードされていない実行計算部に予めロードしておく。以下に具体例を示す。

0055

図9は、図8に示す実施形態において、図3(c)に示す基本ブロックを実行する場合のシーケンス図である。尚、簡単のため、ブロックポインタ12はシーケンス図には含めていない。

0056

(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はプログラムをロードするのみで実行は行わない。

0057

(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はプログラムをロードするのみで実行は行わない。

0058

尚、実行計算部11−1からのローディング指示に対して、次に実行する基本ブロックである基本ブロックB3が実行計算部のいずれにもロードされていない場合、ローディング部14は、基本ブロックB3を実行計算部のいずれかにロードして実行させる。

0059

(S93)実行計算部11−2での基本ブロックB3の実行が終了した場合、実行計算部11−2は、ローディング部14に、処理結果情報を含むロード指示を行う。この段階では、処理結果情報は1番目の基本ブロックを示しており、実行計算部11−2に対応するブロックポインタ12の第1のフィールドを参照することで、ローディング部14は次に実行すべき基本ブロックが、実行計算部11−3にロードしている基本ブロックB2であると判定し、よって、実行計算部11−3に実行指示を行う。

0060

(S94)実行計算部11−3での基本ブロックB2の実行が終了した場合、実行計算部11−3は、ローディング部14にロード指示を行い、ローディング部14は、ブロックポインタ12を参照することで、次に実行すべき基本ブロックが、実行計算部11−2にロードしている基本ブロックB3であることを認識し、実行計算部11−2に実行指示を行う。

0061

(S95)以後、実行計算部11−3にロードされている基本ブロックB2と、実行計算部11−2にロードされている基本ブロックB3が繰り返し実行される。

0062

(S96)実行計算部11−2による基本ブロックB3の実行が11回行われたのち、実行計算部11−2は、ローディング部14に、2番目の基本ブロックを示す処理結果情報を含むロード指示を行う。ローディング部14は、実行計算部11−2に対応するブロックポインタ12の第2のフィールドを参照することで、次に実行すべき基本ブロックが、実行計算部11−1にロードしている基本ブロックB4であると判定し、よって、実行計算部11−1に実行指示を行う。

0063

以上、複数の実行計算部11−1〜11−3を備え、ローディング部14が各実行計算部にロードする基本ブロックを管理し、調整することで、更に、主記憶装置2にアクセスする回数を減少させることができ、よって処理速度が向上する。

0064

また、実行可能プログラム5の制御フローグラフから、例えば、複数の基本ブロック6が並列で処理可能な場合や、異なるプログラムの基本ブロック6を、複数の実行計算部11を備えることで同時に実行することが可能となり、プログラム処理の柔軟性が増し、かつ、全体の処理速度を向上させることができる。

0065

図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をロードする必要はなくなる。よって、主記憶装置へのアクセス回数を減らすことができ処理速度が向上する。

0066

また、図9のS91において、基本ブロックB3の次位基本ブロックである基本ブロックB4は実行計算部にはロードされないが、いずれかのバンクに予め基本ブロックB4を保存させておくことも可能となる。

0067

以上、バンク15−1〜15−3を設けることにより、反復して使用される基本ブロック6について、その都度プロセッサ1の外部にある主記憶装置2から取得する必要がなくなるため、実行計算部11−1〜11−3の数を増やすことなく、処理速度を向上させることができる。

0068

また、上記説明において、ローディング部13及び14が主記憶装置2から実行可能プログラム5を取得して実行計算部11にロードする形態で説明を行ったが、ローディング部13及び14は、基本ブロックを単位とした、実行可能プログラムの実行計算部11へのロード制御を行うものであれば、他のロード方法であってもよい。例えば、ローディング部13及び14が、実行計算部11に対してロードすべき基本ブロック6のアドレス情報を通知して実行計算部11が直接、主記憶装置2から通知されたアドレス情報に基づき基本ブロック6を取得する構成とすることもできる。この場合、実行計算部11と主記憶装置2とローディング部13又は14とを同一バス上に接続する等、実行計算部11が直接、主記憶装置2にアクセスできる構成とする。

図面の簡単な説明

0069

本発明によるプロセッサのブロック図である。
本発明によるコンパイラ装置のブロック図である。
本発明によるコンパイラ装置が出力する実行可能プログラムを説明する図である。
データ駆動型の実行計算部のブロック図である。
VLIW型の実行計算部のブロック図である。
データフローグラフ及び対応するデータ駆動型の実行計算部の設定を示す図である。
本発明によるプロセッサのシーケンス図である。
本発明によるプロセッサの他の実施形態におけるブロック図である。
本発明によるプロセッサの他の実施形態におけるシーケンス図である。

符号の説明

0070

1プロセッサ
2主記憶装置
3コンパイラ装置
4ソースプログラム
5実行可能プログラム
6基本ブロック
11 実行計算部
12ブロックポインタ
13、14ローディング部
15バンク
31構文解析部
32制御フローグラフ生成部
33 最適化部
34コード生成部
61VLIW命令語
111演算器
112−1〜112−Nバッファ
113 VLIW演算器

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

  • 富士通株式会社の「 情報処理装置、ブート方法及びブートプログラム」が 公開されました。( 2020/02/13)

    【課題】レガシーブートにおいてMMIO−Lが割り当てられるPCIデバイスの数を減らし、MMIO−L不足の発生を抑えること。【解決手段】前処理部47が、MMIO−Lを割り当てるルートポートを特定し、特定... 詳細

  • 富士通株式会社の「 分析支援方法および分析支援プログラム」が 公開されました。( 2020/02/13)

    【課題】システムのロジック変更箇所の特定を可能にする分析支援方法および分析支援プログラムを提供する。【解決手段】処理部12は、業務システム20を使用するユーザ60により指示されたロジックL1の業務シス... 詳細

  • トヨタ自動車株式会社の「 車載装置」が 公開されました。( 2020/02/13)

    【課題】プログラム更新のための通信量および所要時間を短縮できる車載装置を提供する。【解決手段】車載装置は、取得した更新データに基づいてプログラム更新を行う。車載装置は、プログラムを記憶する記憶部と、更... 詳細

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ