説明

情報処理装置及びシステム

【課題】メインメモリの異なる複数のキャッシュラインへのアクセス時にキャッシュメモリの同一のキャッシュラインを使用する際、キャッシュミスの発生を抑制可能な情報処理技術を提供する。
【解決手段】出力プログラム生成部303は、入力プログラム解析部302が出力した内部表現プログラムに含まれるメモリアクセス命令に対して、ロードキャッシュ命令、キャッシュヒット判定命令、キャッシュヒット判定命令に従って行われる判定結果に応じて行うキャッシュミス処理命令を生成し、メインメモリの異なる複数のキャッシュラインへのアクセス時に使用されるキャッシュメモリのキャッシュラインが同一である可能性がある複数のメモリアクセス命令が内部表現プログラムに含まれる場合、キャッシュヒット判定命令に従って行われる判定の判定結果を1つに融合する融合命令を生成してこれらを含む出力プログラム103を出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、第1プログラムを、プロセッサが解釈可能なマシン語で記述された第2プログラムに変換する情報処理技術、および、メインメモリに記憶されたデータを一時的に記憶するキャッシュメモリを有する情報処理技術に関する。
【背景技術】
【0002】
従来一般的なプロセッサは、そのプロセッサ用の命令セットアーキテクチャで規定されたマシン語で記述されたプログラム(オブジェクトコード)を実行することができる。一方、プログラマは、マシン語よりも分かりやすいC言語などの高級プログラミング言語を用いてプログラミングすることが多い。その為、プログラムをプロセッサで実行する前に、高級プログラミング言語を用いて記述されたプログラムを、コンパイラなどのプログラム変換手段を用いて、オブジェクトコードに変換する必要がある。また、バイナリトランスレータなどのプログラム変換手段を用いて、あるプロセッサ用のオブジェクトコードを、他のプロセッサ用のオブジェクトコードに変換することもある。例えば、特許文献1には、プログラム実行時にあるプロセッサ用のオブジェクトコードを、他のプロセッサ用のオブジェクトコードに変換する技術が記載されている。
【0003】
また、近年の計算機の中には、プロセッサのデータ処理性能とメインメモリのデータ供給性能との差を埋めるために、プロセッサとメインメモリ間に、メインメモリより少量ではあるがデータ供給性能が高いキャッシュメモリやローカルメモリなどの一時記憶装置を備えるものも多い。このような計算機では、メインメモリに記憶されたデータを一時記憶装置に一時的に記憶することで、データ供給性能を高め、プロセッサのデータ処理性能を活かすことができる。しかし、一時記憶装置は、メインメモリよりも少量であり、メインメモリ上の全てのデータを記憶することはできない。このため、プロセッサのデータアクセス等に伴って、一時記憶装置に記憶させるデータを適宜置換する必要がある。尚、キャッシュメモリとメインメモリ間のデータ転送は自動的に行われるが、ローカルメモリとメインメモリ間のデータ転送は、プログラムからデータ転送装置に対して明示的に指示されることにより行われる。
【0004】
このキャッシュメモリとメインメモリとは、キャッシュラインと呼ばれる部分メモリ領域に分割される。キャッシュメモリとメインメモリとの間のデータ置換はキャッシュライン単位で行われる。プロセッサがメインメモリ上のデータにアクセスするアクセス処理を行う際には、メインメモリ上のデータがキャッシュメモリ上に一時的に記憶されているか(キャッシュヒット)を確認するキャッシュヒット判定を行う。このキャッシュヒット判定において、アクセスするデータがキャッシュメモリ上に一時的に記憶されていないと判定した場合、即ち、キャッシュミスが発生した場合には、アクセスする対象のデータを含むメインメモリのキャッシュライン上のデータをキャッシュメモリのキャッシュライン上に転送する。この際、キャッシュメモリのキャッシュラインに空き領域が存在しない場合には、既に他のデータが一時的に記憶されている使用中のキャッシュラインを再利用する。この結果キャッシュメモリにおけるデータが置換される。尚、再利用するキャッシュラインのデータが変更されていた場合には、このキャッシュラインを再利用する前にこのキャッシュラインに記憶されているデータをメインメモリに転送する。
【0005】
このような構成において、例えば、メインメモリの異なる2つのキャッシュライン(キャッシュラインA,Bとする)があり、各キャッシュライン上のデータに各々アクセスする場合に、キャッシュメモリの同一のキャッシュラインXを使用することがある。始めに、メインメモリのキャッシュラインA上のデータ(データAとする)にアクセスすると、データAが、キャッシュメモリのキャッシュラインXに転送される。次に、メインメモリのキャッシュラインB上のデータ(データBとする)にアクセスすると、このときキャッシュメモリのキャッシュラインXには上述のデータAが一時的に保持されているためキャッシュミスが発生し、データBが、キャッシュメモリのキャッシュラインXに転送される。仮に、メインメモリのキャッシュラインA上のデータAとキャッシュラインB上のデータAとに交互にアクセスするとした場合、常にキャッシュミスが発生し、メインメモリとキャッシュメモリとの間でデータA及びデータBのデータ転送を繰り返し行なうことになる。
【0006】
【特許文献1】特表2002―536712号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
即ち、従来のキャッシュメモリでは、メインメモリの異なる複数のキャッシュラインへのアクセス時にキャッシュメモリ上の同一キャッシュラインを使用する際、メインメモリの異なる複数のキャッシュラインへのアクセスを交互に行う場合、常にキャッシュミスが発生し、頻繁なキャッシュミスヒットにより処理速度が低下するというスラッシング現象が起こる恐れがあった。この場合、メインメモリとキャッシュメモリとの間でデータ転送を繰り返し行なうことになり、メモリのデータ供給性能が悪化してしまうという問題があった。
【0008】
本発明は、上記に鑑みてなされたものであって、メインメモリの異なる複数のキャッシュラインへのアクセス時にキャッシュメモリの同一のキャッシュラインを使用する際、メインメモリの異なる複数のキャッシュラインへのアクセスを交互に行う場合にも、キャッシュミスの発生を抑制可能な情報処理装置及びシステムを提供することを目的とする。
【課題を解決するための手段】
【0009】
上述した課題を解決し、目的を達成するために、本発明は、情報処理装置であって、少なくとも1つの処理命令を含む第1プログラムを、プログラムの実行時に用いるデータを一時的に記憶するレジスタを有するプロセッサとキャッシュライン単位で分割されるメモリであり且つ複数の前記データを当該データのアドレスに対応する第1キャッシュラインに各々記憶するメインメモリとキャッシュライン単位で分割され前記データへのアクセス時に少なくとも1つの第2キャッシュラインが使用されるキャッシュメモリとを備える第1情報処理装置が実行可能な第2プログラムに変換するプログラム変換手段と、前記第2プログラムを出力する出力手段とを備え、前記プログラム変換手段は、前記第1プログラムに含まれる処理命令であって前記データへアクセスする命令を表すメモリアクセス命令に対して、前記データを記憶する前記第1キャッシュラインに対応して使用される前記第2キャッシュラインに記憶されている記憶データを前記レジスタに転送する命令を表すロードキャッシュ命令を生成する第1命令生成手段と、前記メモリアクセス命令に対して、前記データを記憶する前記第1キャッシュラインに対応して使用される前記第2キャッシュラインに前記データが記憶されているか否かを判定する命令を表すキャッシュヒット判定命令を生成する第2命令生成手段と、異なる前記第1キャッシュラインに記憶されている前記データへのアクセス時に使用される前記第2キャッシュラインが同一である可能性のある複数の前記メモリアクセス命令が前記第1プログラムに含まれる場合、当該複数のメモリアクセス命令に対して各々生成された前記キャッシュヒット判定命令による判定結果を1つに融合する融合命令を生成する第3命令生成手段とを有することを特徴とする。
【0010】
また、本発明は、情報処理装置であって、プログラムの実行時に用いるデータを一時的に記憶するレジスタを有するプロセッサとキャッシュライン単位で分割されるメモリであり且つ複数の前記データを当該データのアドレスに対応する第1キャッシュラインに各々記憶するメインメモリとキャッシュライン単位で分割され前記データへのアクセス時に少なくとも1つの第2キャッシュラインが使用されるローカルメモリと、前記メインメモリに記憶された前記データを前記ローカルメモリに転送する転送手段と、前記プロセッサが前記プログラムの実行時において前記データへアクセスする際に、前記データが前記ローカルメモリに記憶されているか否かを判定する判定処理を行うとともに、当該判定処理が完了する前に、前記ローカルメモリにおいて前記データへのアクセス時に使用するメモリ領域に記憶されている記憶データを、前記レジスタに転送する転送処理を行うキャッシュデータ制御手段とを備え、前記キャッシュデータ制御手段は、複数の前記データに対して行う前記判定処理及び前記転送処理を並行して行い、異なる前記第1キャッシュラインに記憶されている複数の前記データへのアクセス時に使用する前記第2キャッシュラインが同一である可能性がある場合、複数の前記データに対する各前記判定処理の判定結果を融合し、当該融合した判定結果に応じて、前記転送手段を介して前記データを前記メインメモリから前記ローカルメモリに転送し、その後、当該データを前記ローカルメモリから前記レジスタに転送する第2転送処理を行うことを特徴とする。
【0011】
また、本発明は、情報処理装置であって、プログラムの実行時に用いるデータを一時的に記憶するレジスタを有するプロセッサとキャッシュライン単位で分割されるメモリであり且つ複数の前記データを当該データのアドレスに対応する第1キャッシュラインに各々記憶するメインメモリとキャッシュライン単位で分割され前記データへのアクセス時に少なくとも1つの第2キャッシュラインが使用されるローカルメモリとを備える情報処理装置であって、少なくとも1つの処理命令を含む第1プログラムを、前記プロセッサが実行可能な第2プログラムに変換するプログラム変換手段と、前記プロセッサが前記第2プログラムの実行時において前記データへアクセスする際に、前記データが前記ローカルメモリに記憶されているか否かを判定する判定処理を行うとともに、当該判定処理が完了する前に、前記ローカルメモリにおいて前記データへのアクセス時に使用するメモリ領域に記憶されている記憶データを、前記レジスタに転送する転送処理を行うキャッシュデータ制御手段とを備え、前記プログラム変換手段は、前記データを記憶する前記第1キャッシュラインに対応して使用される前記第2キャッシュラインに記憶されている記憶データを前記レジスタに転送する命令を表すロードキャッシュ命令を生成する第1命令生成手段と、前記メモリアクセス命令に対して、前記データを記憶する前記第1キャッシュラインに対応して使用される前記第2キャッシュラインに前記データが記憶されているか否かを判定する命令を表すキャッシュヒット判定命令を生成する第2命令生成手段と、異なる前記第1キャッシュラインに記憶されている前記データへのアクセス時に使用される前記第2キャッシュラインが同一である可能性のある複数の前記メモリアクセス命令が前記第1プログラムに含まれる場合、当該複数のメモリアクセス命令に対して各々生成された前記キャッシュヒット判定命令による判定結果を1つに融合する融合命令を生成する第3命令生成手段とを有し、前記ロードキャッシュ命令及び前記キャッシュヒット判定命令を少なくとも含む前記第2プログラムを生成し、前記キャッシュデータ制御手段は、複数の前記データに対して行う前記判定処理及び前記転送処理を並行して行い、異なる前記第1キャッシュラインに記憶されている複数の前記データへのアクセス時に使用する前記第2キャッシュラインが同一である可能性がある場合、複数の前記データに対する各前記判定処理の判定結果を融合し、当該融合した判定結果に応じて、前記転送手段を介して前記データを前記メインメモリから前記ローカルメモリに転送し、その後、当該データを前記ローカルメモリから前記レジスタに転送する第2転送処理を行うことを特徴とする。
【発明の効果】
【0012】
本発明によれば、メインメモリの異なる複数のキャッシュラインへのアクセス時にキャッシュメモリの同一のキャッシュラインを使用する際、メインメモリの異なる複数のキャッシュラインへのアクセスを交互に行う場合にも、キャッシュミスの発生を抑制することができる。
【発明を実施するための最良の形態】
【0013】
以下に添付図面を参照して、この発明にかかる情報処理装置及びシステムの最良な実施の形態を詳細に説明する。
【0014】
(1)構成
<計算機システムの構成>
図1は、本実施の形態にかかる計算機システムの構成を例示するブロック図である。計算機システムは、ホスト計算機101と、ターゲット計算機102とから構成される。ホスト計算機101は、入力された入力プログラムから、ターゲット計算機102が解釈可能なマシン語で記述された出力プログラム103を生成してこれを出力する。ターゲット計算機102は、出力プログラム103を実行する。尚、出力プログラム103の出力は、フロッピー(登録商標)ディスクやCD−Rなどの記録媒体を用いて行うようにしても良いし、ホスト計算機101とターゲット計算機102とを通信路で接続し、当該通信路を介して行うようにしても良い。また、ホスト計算機101とターゲット計算機102とを単一の計算機で実現しても良い。
【0015】
尚、入力プログラムは、C言語などの高級プログラミング言語で記述されたプログラムであっても良いし、所定のプロセッサ用の命令セットアーキテクチャで規定されたマシン語で記述されたプログラムであっても良い。
【0016】
<ホスト計算機の構成>
図2は、ホスト計算機101の構成を例示するブロック図である。ホスト計算機101は、プロセッサ201と、プログラムメモリ202と、メインメモリ203と、入力プログラム入力装置204と、出力プログラム出力装置205と、バス206とから構成される。プロセッサ201は、プログラムメモリ202、メインメモリ203、入力プログラム入力装置204及び出力プログラム出力装置205にバス206を介して接続される。プロセッサ201は、プログラムメモリ202上に記憶されるプログラム又はメインメモリ203上に記憶されるプログラムを実行する。プログラムメモリ202は、プロセッサ201が実行するプログラムを記憶するためのメモリであり、例えばリードオンリーメモリ(ROM)により構成される。また、このプログラムメモリ202には、入力プログラムから出力プログラムを生成するためのプログラム変換プログラムが記憶される。このプログラム変換プログラムの詳細については後述する。メインメモリ203は、プロセッサ201が実行するプログラムとそのプログラムの実行中に使用するデータとを記憶するためのメモリであり、例えばランダムアクセスメモリ(RAM)により構成される。入力プログラム入力装置204は、入力プログラムを入力するための入力装置であり、例えば、キーボード、フロッピー(登録商標)ディスクドライブ、CD-ROMドライブなどにより構成される。出力プログラム出力装置205は、入力プログラム入力装置204に入力された入力プログラムから生成された出力プログラムを出力するための出力装置であり、例えば、フロッピー(登録商標)ディスクドライブ、CD-Rドライブなどにより構成される。
【0017】
次に、ホスト計算機101のプロセッサ201が上述のプログラム変換プログラムを実行することにより実現される機能について説明する。図3は、プロセッサ201がプログラム変換プログラムを実行することにより実現される機能的構成を例示するブロック図である。同図に示されるように、プログラム変換プログラム301により、入力プログラム解析部302と、出力プログラム生成部303との機能が実現される。入力プログラム解析部302は、入力プログラム入力装置204に入力された入力プログラム304の入力を受け付け、これを解析し、内部処理用のデータ表現形式で記述されたプログラムである内部表現プログラム305を出力する。出力プログラム生成部303は、入力プログラム解析部302が出力した内部表現プログラム305を解析し、ターゲット計算機102で実行可能な出力プログラム103を生成してこれを出力する。
【0018】
具体的には、出力プログラム生成部303は、内部表現プログラムに含まれる処理命令であって処理対象のデータへアクセスする命令を表すメモリアクセス命令に対して、以下の処理命令を生成してこれらを含む出力プログラム103を出力する。尚、以下に記載したメインメモリ、ローカルメモリ及びレジスタは、出力プログラム103を実行する情報処理装置(ここでは、ターゲット計算機102である)に備わるものである。ターゲット計算機102に備わるメインメモリ、ローカルメモリ及びレジスタの構成と、出力プログラム103の具体例とについては後述する。
(a)処理対象のデータのメインメモリにおけるアドレス(メインメモリアドレス)に対応するメインメモリのキャッシュラインに対応して使用されるローカルメモリのキャッシュラインに記憶されているデータをレジスタに転送する命令を表すロードキャッシュ命令
(b)処理対象のデータがローカルメモリに記憶されているか否か、即ち、上述のメインメモリアドレスに対応するメインメモリのキャッシュラインに対応して使用されるローカルメモリのキャッシュラインに、処理対象のデータが記憶されているかを判定する命令を表すキャッシュヒット判定命令
(c)メインメモリの異なるキャッシュラインに記憶されているデータへのアクセス時に使用されるローカルメモリのキャッシュラインが同一である可能性のある複数のメモリアクセス命令が内部表現プログラムに含まれる場合、キャッシュヒット判定命令に従って行われる判定の判定結果を1つに融合する融合命令
(d)キャッシュヒット判定命令に従って行われる判定の判定結果又は融合命令によって融合された判定結果が、処理対象のデータが上述のキャッシュラインに記憶されていないことを示す場合に当該処理対象のデータをメインメモリからローカルメモリに転送した後当該ローカルメモリからレジスタに転送する命令を表すキャッシュミス処理命令
【0019】
<ターゲット計算機の構成>
図4は、ターゲット計算機102の構成を例示する図である。ターゲット計算機102は、プロセッサ401と、プログラムメモリ402と、ローカルメモリ403と、内部バス404と、データ転送装置405と、メインメモリ406と、外部バス407と、出力プログラム入力装置409とから構成される。プロセッサ401は、内部バス404を介して、プログラムメモリ402とローカルメモリ403とに接続される。データ転送装置405は、プロセッサ401とローカルメモリ403とに接続され、さらに、外部バス407を介してメインメモリ406に接続される。
【0020】
プロセッサ401は、内部にレジスタファイル408を備え、これを、演算に用いる入力データや出力データの記憶領域として使用する。レジスタファイル408は、内部に複数のレジスタを備える。プロセッサ401は、プログラムメモリ402上に記憶されるプログラム又はローカルメモリ403上に記憶されるプログラムを実行する。また、プロセッサ401は、データ転送装置405を制御する。プログラムメモリ402は、プロセッサ401で実行されるプログラムを記憶するためのメモリであり、例えばリードオンリーメモリ(ROM)により構成される。プログラムメモリ402には、後述するキャッシュメモリ制御プログラムが記憶される。ローカルメモリ403は、プロセッサ401で実行されるプログラムとプログラムの実行中に使用するデータとを記憶するためのメモリであり、例えばランダムアクセスメモリ(RAM)により構成される。データ転送装置405は、プロセッサ401からの制御により、指定されたサイズのデータを、ローカルメモリ403からメインメモリ406に転送したり、あるいは、メインメモリ406からローカルメモリ403に転送したりする。データ転送装置405には、例えばダイレクトメモリアクセスコントローラ(DMAコントローラ)を用いることができる。出力プログラム入力装置409は、ホスト計算機101が出力した出力プログラム103を、ローカルメモリ403に入力するための入力装置であり、例えば、キーボード、フロッピー(登録商標)ディスクドライブ、CD−ROMドライブなどにより構成される。
【0021】
尚、本実施の形態においては、プロセッサ401は、メインメモリ406に直接アクセスすることができない構成としているが、直接アクセスできるように構成しても良い。その場合、ローカルメモリ403のアクセス時間は、メインメモリ406のアクセス時間よりも短いことが望ましい。
【0022】
次に、プロセッサ401がプログラムメモリ402に記憶された上述のキャッシュ制御プログラムを実行することにより実現される機能について説明する。図5は、プロセッサ401がプログラムメモリ402に記憶されたキャッシュ制御プログラムを実行することにより実現される機能を例示する図である。キャッシュデータ制御部504が、当該キャッシュ制御プログラムをプロセッサ401が実行することによって実現される機能を表す。タグアレイ505とデータアレイ506とは、ローカルメモリ403上に用意されるメモリである。タグアレイ505は、データアレイ506上のデータを管理するための情報を記憶する。データアレイ506は、メインメモリ406上のデータを一時的に記憶する。データ転送部507の機能は、上述したデータ転送装置405によって実現される。これらのキャッシュデータ制御部504、タグアレイ505、データアレイ506及びデータ転送部507により、同図に示されるキャッシュメモリ部502が構成される。キャッシュメモリ部502は、プロセッサ401とメインメモリ406とに接続され、プロセッサ401がメインメモリ406上のデータにアクセスするための手段を提供する。
【0023】
上述したプロセッサ401は、レジスタファイル408に加え、さらに制御装置508と演算装置509とを備える。制御装置508は、プロセッサ401がプログラムの実行中に、メインメモリ406上のデータへのアクセスを行う場合には、アクセス要求をキャッシュメモリ部502に通知する。この時、アクセスが書き込みの場合には、プロセッサ401は、レジスタファイル408内のレジスタ上のデータをキャッシュメモリ部502に出力する。アクセスが読み出しの場合には、プロセッサ401は、キャッシュメモリ部502上のデータをレジスタファイル408を構成するレジスタに記憶(複製)する。演算装置509は、レジスタファイル408内のレジスタ上のデータを用いて演算を行い、演算結果をレジスタファイル408を構成するレジスタに記憶する。
【0024】
以上のような構成において、キャッシュデータ制御部504は、プロセッサ401の制御装置508、タグアレイ505、データアレイ506及びデータ転送部507に接続され、プロセッサ401からのアクセス要求を受信し、当該アクセス要求に応じたアクセス処理を制御する。アクセス処理においては、キャッシュデータ制御部504は、タグアレイ505を用いてデータアレイ506上のデータを管理し、データ転送部507を介してデータアレイ506とメインメモリ406との間のデータ転送を制御する。
【0025】
図6は、プロセッサ401が出力するメインメモリアドレスのデータ構成を例示する図である。メインメモリアドレス601は、16ビット幅のタグアドレス602と、8ビット幅のライン番号603と、8ビット幅のオフセット604との計32ビットで構成される。例えば、メインメモリアドレス601が「0x12345678」である場合には、タグアドレス602は「0x1234」であり、ライン番号603は「0x56」であり、オフセット604は「0x78」である。尚、メインメモリアドレス601のビット幅は、メインメモリ406の容量以上であれば良く、例えば、メインメモリアドレス601が32ビット幅であり、メインメモリ406が1バイト単位でアクセス可能である場合には、最大4GBまでの容量に対応することができる。また、ライン番号603は、8ビット幅であるため、「0」から「255」までのライン番号を用いることができる。
【0026】
図7は、ローカルメモリ403の構成を例示する図である。同図では、データアレイのキャッシュラインとタグアレイのタグ(管理情報)を、「キャッシュライン(ウェイ番号)−(ライン番号)」、「タグ(ウェイ番号)−(ライン番号)」と記載している。例えば、「キャッシュライン0−255」は、ウェイ番号「0」、ライン番号「255(0xFF)」のキャッシュラインを示す。
【0027】
ローカルメモリ403は、メインメモリ406上のデータをキャッシュライン(キャッシュラインの容量は256バイト)ごとに一時的に記憶するデータアレイ506と、データアレイ506に記憶されるデータのタグ(管理情報)をキャッシュラインごとに記憶するタグアレイ505とを記憶する。このローカルメモリ403には、「0x000000」から「0xFFFFFF」までのローカルメモリアドレスがふられている。ここで、例えば、ローカルメモリ403の容量を16MBとし、各ローカルメモリアドレスによってローカルメモリ403に記憶された1バイトのデータが指定されるものとする。
【0028】
なお、メインメモリアドレスのライン番号は、データアレイ506のキャッシュラインを識別するために用いられる。メインメモリアドレスのタグアドレスは、データアレイ506のキャッシュラインに記憶されたデータを識別するために用いられる。オフセットは、データアレイ506のキャッシュラインに記憶されたデータ(256バイト)のうちの何バイト目のデータかを識別するために用いられる。
【0029】
なお、データアレイ506が有するキャッシュラインの数と、タグアレイ505が有するタグの数とは同一である。尚、説明の便宜上、図7においては、データアレイ506とタグアレイ505とを1ウェイとしているが、これらを複数のウェイにより構成するようにしても良い。
【0030】
図8は、メインメモリ406の構成を例示する図である。メインメモリ406は、キャッシュライン単位に分割されている。また、キャッシュラインは、ローカルメモリ403のデータアレイ506が備えるキャッシュラインの数と同数のキャッシュラインの数毎に、グループ化されている。同図に示すメインメモリ406の各キャッシュラインには、「グループ番号―キャッシュライン番号」を示すキャッシュライン番号が付与されている。メインメモリ406の各キャッシュラインにアクセスする際には、メインメモリ406のキャッシュラインに付与されたキャッシュライン番号と同じキャッシュライン番号が付与された、データアレイ506のキャッシュラインが使用される。その為、例えば、メインメモリ406のキャッシュライン「0−0」、キャッシュライン「1−0」、キャッシュライン「2−0」及びキャッシュライン「65535−0」にアクセルする場合は、全て、データアレイ506のキャッシュライン「0−0」が使用される。
【0031】
図9は、図3に示した入力プログラム解析部302が出力する内部表現プログラム305を例示する図である。内部表現プログラム305には、内部表現コード701a,701b,701c,701d,701e,701f,701g,701h,701i,701kが含まれている。内部表現コード701a、701b、701g、701hは、即値をレジスタに設定する即値ロード命令である。内部表現コード701aは、即値「0x00010400」を、レジスタr1にロードする命令である。内部表現コード701bは、即値「0x00020400」を、レジスタr8にロードする命令である。内部表現コード701gは、即値「0x000A0800」を、レジスタr10にロードする命令である。内部表現コード701hは、即値「0x000B0800」を、レジスタr18にロードする命令である。
【0032】
内部表現コード701c,701d,701eは、ベースアドレスレジスタ値にオフセット値を加算した、メインメモリ406のアドレスからデータをレジスタにロードする、第一のレジスタ間接アドレッシングを用いたロード命令の例である。内部表現コード701cは、ベースアドレスレジスタであるレジスタr0の値に、オフセット値「4」を加えたアドレスからデータをロードし、レジスタr2に記録する命令である。内部表現コード701dは、ベースアドレスレジスタであるレジスタr1の値に、オフセット値「4」を加えたアドレスからデータをロードし、レジスタr3に記録する命令である。内部表現コード701eは、ベースアドレスレジスタであるレジスタr8の値に、オフセット値「8」を加えたアドレスからデータをロードし、レジスタr4に記録する命令である。内部表現コード701fおよび701kは、2つのレジスタ値を加算する命令の例である。内部表現コード701fは、レジスタr3の値とレジスタr4の値を加算し、レジスタr5に記録する命令である。内部表現コード701kは、レジスタr13の値とレジスタr14の値を加算し、レジスタr15に記録する命令である。
【0033】
内部表現コード701iおよび701jは、ベースアドレスレジスタ値にオフセットレジスタ値を加算した、メインメモリ406のアドレスからデータをレジスタにロードする、第二のレジスタ間接アドレッシングを用いたロード命令の例である。内部表現コード701iは、ベースアドレスレジスタであるレジスタr10の値に、オフセットレジスタであるレジスタr11の値を加えたアドレスからデータをロードし、レジスタr13に記録する命令である。内部表現コード701jは、ベースアドレスレジスタであるレジスタr18の値に、オフセットレジスタであるレジスタr12の値を加えたアドレスからデータをロードし、レジスタr14に記録する命令である。
【0034】
尚、内部表現プログラム305は入力プログラム304の一部であり、さらに、ループ中の基本ブロックであるとする。加えて、内部表現プログラム305におけるシーケンスを保持した出力プログラム103がホスト計算機101から出力され、ターゲット計算機102で実行されるものとする。
【0035】
(2)動作
<ホスト計算機101の動作>
次に、本実施の形態にかかるホスト計算機101が出力プログラムを出力する処理について説明する。上述したように、図2に示したホスト計算機101のプロセッサ201がプログラム変換プログラムを実行することにより、図3に示した入力プログラム解析部302及び出力プログラム生成部303の機能が実現される。ここでは、入力プログラム304が入力を受け付けた入力プログラム304を解析して出力した内部表現プログラム305を出力プログラム生成部303が解析して出力プログラム103を生成する生成処理の手順について詳細に説明する。図10は、出力プログラム生成部303が内部表現プログラム305を解析して出力プログラム103を生成する生成処理の手順を示すフローチャートである。
【0036】
出力プログラム生成部303は、まず、内部表現プログラム305に含まれる全ての内部表現コードを処理したか否かを判定し(ステップS801)、全ての内部表現コードに対する処理が完了していれば(ステップS801:YES)、生成処理を終了する。全ての内部表現コードに対する処理が完了していない場合(ステップS801:NO)、出力プログラム生成部303は、処理対象の内部表現コードが、ロード命令などのメモリアクセス命令であるか否かを判定し(ステップS802)。当該判定結果が否定的である場合には、内部表現コードに対応する通常のコード(マシン語)を生成する(ステップS805)。処理対象の内部表現コードがメモリアクセス命令である場合には(ステップS802:YES)、出力プログラム生成部303は、近隣の内部表現コードに、メインメモリ406の異なるキャッシュラインにアクセスするメモリアクセス命令であって、アクセス時に使用するデータアレイ506のキャッシュラインが処理対象の内部表現コードと同一である可能性のあるメモリアクセス命令があるか否かを判定する(ステップS803)。即ち、出力プログラム生成部303は、メインメモリ406の異なるキャッシュラインにアクセスするメモリアクセス命令のうち、データアレイ506の同一のキャッシュラインへアクセスする可能性があるメモリアクセス命令が複数あるか否かを判定する。
【0037】
尚、「近隣の内部表現コード」とは、例えば、以下の(a)〜(c)のいずれかの条件を満たすものとする。
(a)内部表現プログラム305において処理対象の内部表現コードと同じベーシックブロックに含まれる内部表現コード
(b)上記(a)に該当する内部表現コードのうち、処理対象の内部表現コードから後続する1つあるいは複数の内部表現コード
(c) 上記(b)に該当する内部表現コードのうち、メモリアクセス命令である処理対象の内部表現コードとその内部表現コードの間に、処理対象の内部表現コードが使用するレジスタの値を変更する命令を表す内部表現コードが無い、内部表現コード
【0038】
また、近隣の内部表現コードと処理対象の内部表現コードとが、データアレイ506の同一のキャッシュラインを使用する可能性があるものか否かは、例えば、双方のベースアドレスレジスタの値のキャッシュライン番号が同一か否かにより判定することができる。例えば、内部表現コード701dのベースアドレスレジスタr1の値「0x00010400」については、キャッシュライン番号が「04」であるため、このデータへのアクセス時には、データアレイ506のキャッシュライン番号が「0−4」のキャッシュラインが使用される。一方、内部表現コード701eのベースアドレスレジスタr8の値「0x00020400」については、キャッシュライン番号が「04」であるため、このデータへのアクセス時には、データアレイ506のキャッシュライン番号が「0−4」のキャッシュラインが使用される。この場合、内部表現コード701eと内部表現コード701dとはデータアレイ506の同一のキャッシュラインを使用するものと判定することができる。尚、ベースアドレスレジスタの値のキャッシュライン番号に限らず、ベースアドレスレジスタとオフセットレジスタ、あるいは、オフセットレジスタ同士を用いてデータアレイ506の同一のキャッシュラインを使用するか否かを判定しても良い。
【0039】
そして、近隣の内部表現コードに該当のメモリアクセス命令がある場合には(ステップS803:YES)、出力プログラム生成部303は、複数のメモリアクセスを行なうキャッシュメモリアクセス命令を生成して(ステップS804)、ステップS807に進む。近隣の内部表現コードに該当のメモリアクセス命令が無い場合には(ステップS803:NO)、出力プログラム生成部303は、単一のメモリアクセスを行なうキャッシュメモリアクセス命令を生成し(ステップS806)、ステップS807に進む。ステップS807では、出力プログラム生成部303は、次の内部表現コードに処理を進め、ステップS801より処理を継続する。
【0040】
例えば、図9に示した内部表現プログラム305においては、処理対象の内部表現コードが内部表現コード701aである場合、出力プログラム生成部303は、内部表現コード701aから、単一のメモリアクセスを行なうキャッシュメモリアクセス命令を生成する。処理対象の内部表現コードが内部表現コード701bである場合、これの近隣の内部表現コードは内部表現コード701cであるから、出力プログラム生成部303は、内部表現コード701b,701cから、複数のメモリアクセスを行なうキャッシュメモリアクセス命令を生成する。また、処理対象の内部表現コードが内部表現コード701eである場合、これの近隣の内部表現コードは内部表現コード701fであるから、出力プログラム生成部303は、内部表現コード701e,701fから、複数のメモリアクセスを行なうキャッシュメモリアクセス命令を生成する。
【0041】
尚、出力プログラム生成部303がここで生成する出力プログラムは、ターゲット計算機102のローカルメモリ403にアクセスするデータが既に記憶されているか否かの判定処理(キャッシュヒット判定処理)と、キャッシュヒット判定処理が完了する前にローカルメモリ403に記憶されているデータをレジスタに複製する処理(先行ロード処理)とを、ターゲット計算機102のプロセッサ401に並列に実行させるように構成されている。このような構成によれば、ターゲット計算機102のプロセッサ401が先行ロード処理とキャッシュヒット判定処理とを並列に実行するため、プロセッサ401がローカルメモリ403上のデータへアクセスするのに要する時間(データアクセス時間)は、キャッシュヒット判定処理後に通常のロード処理を行ってデータアクセスする場合と比較して、削減される。即ち、キャッシュヒット判定処理後に通常のロード処理を行う場合と比較して、先行ロード処理に要する時間あるいはキャッシュヒット判定処理に要する時間のうち、処理時間の短い一方の処理時間を、データアクセス時間から削減することができる。
【0042】
ここで、ステップS806における単一のメモリアクセスを行なうキャッシュメモリアクセス命令を生成する処理の手順について説明する。図11は、単一のメモリアクセスを行なうキャッシュメモリアクセス命令を生成する処理の手順を示すフローチャートである。
【0043】
出力プログラム生成部303は、始めに、メインメモリアドレスを用いて、データアレイ506上のデータをレジスタに読み出す命令(ロードキャッシュ命令)を生成する(ステップS901)。次に、出力プログラム生成部303は、メインメモリアドレス上のデータがデータアレイ506上にあるのか否かを判定する命令(キャッシュヒット判定命令)を生成する(ステップS902)。最後に、出力プログラム生成部303は、メインメモリアドレス上のデータがデータアレイ506上にないと判定した場合、即ち、判定結果がキャッシュミスであった場合にキャッシュミス処理を行うためのキャッシュミス処理ルーチンへ分岐する条件分岐命令を生成する(ステップS903)。尚、キャッシュミス処理とは、上述のキャッシュヒット判定の対象となったデータをデータアレイ506に記憶(複製)する処理である。
【0044】
図12は、ステップS806の結果生成されたキャッシュメモリアクセス命令を例示する図である。同図に示される部分出力プログラム1001は、出力プログラム103の一部であり、内部表現コード701cを処理した結果生成したものである。出力コード1002aは、第一のロードキャッシュ命令であり、ベースアドレスレジスタ値にオフセット値を加算した、メインメモリ406のアドレスに対応する、データアレイ506の対応するキャッシュライン上のデータをロードすることを示す。出力コード1002aは、ベースアドレスレジスタであるレジスタr0の値に、オフセット値「4」を加えたアドレスのデータをデータアレイ506からロードし、レジスタr2に記録することを示す。ここで、ロードキャッシュ命令は、後続の命令と並行して処理を継続し、処理の完了を待たずに後続の命令を実行できることとする。尚、本実施の形態では、ロードキャッシュ命令を単一マシン語としているが、複数のマシン語を組み合わせて同様の機能を実現するように構成しても良い。
【0045】
出力コード1002bは、第一のキャッシュヒット判定命令であり、ベースアドレスレジスタ値にオフセット値を加算した、メインメモリ406のアドレス上のデータが、データアレイ506の対応するキャッシュライン上に記憶されているか判定し、その結果を指定レジスタに記録することを示す。出力コード1002bは、ベースアドレスレジスタであるレジスタr0の値に、オフセット値「4」を加えたアドレスのデータが、データアレイ506の対応するキャッシュライン上に記憶されているか判定し、記憶されている場合には「0」を、記憶されていない場合には「1」を、レジスタr6に記録することを示す。尚、本実施の形態では、キャッシュヒット判定命令を単一マシン語としているが、複数のマシン語を組み合わせて同様の機能を実現するように構成しても良い。
【0046】
出力コード1002cは、条件分岐命令であり、条件レジスタの値が「1」である場合には、リターンアドレスレジスタに次の命令のアドレスを記録し、指定アドレスに分岐することを示す。出力コード1002cは、条件レジスタであるレジスタr6の値が「1」である場合には、リターンアドレスレジスタであるレジスタr0に次の命令のアドレスを記録し、指定アドレスである「cache_miss_handler」で示されるアドレスに分岐することを示す。この「cache_miss_handler」は、キャッシュミス処理ルーチンのアドレスとする。
【0047】
次に、ステップS804における複数のメモリアクセスを行なうキャッシュメモリアクセス命令を生成する処理の手順について説明する。図13は、複数のメモリアクセスを行なうキャッシュメモリアクセス命令を生成する処理の手順を示すフローチャートである。
【0048】
出力プログラム生成部303は、始めに、対象となる全てのメモリアクセス命令に関し、各メインメモリアドレスを用いて、データアレイ506上のデータをレジスタに読み出す命令(ロードキャッシュ命令)を複数生成する(ステップS1101)。次に、出力プログラム生成部303は、対象となる全てのメモリアクセス命令に関し、メインメモリアドレス上のデータがデータアレイ506上にあるのかを判定する命令(キャッシュヒット判定命令)を複数生成する(ステップS1102)。さらに、出力プログラム生成部303は、複数の判定結果を1つにまとめる命令を生成する(ステップS1103)。最後に、出力プログラム生成部303は、判定結果がキャッシュミスであった場合にキャッシュミス処理ルーチンへ分岐する条件分岐命令を生成する(ステップS1104)。
【0049】
図14は、ステップS804の処理の結果生成されたキャッシュメモリアクセス命令を例示する図である。同図に示される部分出力プログラム1201は、出力プログラム103の一部であり、内部表現コード701dと701eとを処理した結果生成したものである。出力コード1202aは、第一のロードキャッシュ命令であり、ベースアドレスレジスタであるレジスタr1の値に、オフセット値「4」を加えたアドレスのデータをデータアレイ506からロードし、レジスタr3に記録することを示す。
【0050】
出力コード1202bは、第一のロードキャッシュ命令であり、ベースアドレスレジスタであるレジスタr8の値に、オフセット値「8」を加えたアドレスのデータをデータアレイ506からロードし、レジスタr4に記録することを示す。
【0051】
出力コード1202cは、第一のキャッシュヒット判定命令であり、ベースアドレスレジスタであるレジスタr1の値に、オフセット値「4」を加えたアドレスのデータが、データアレイ506の対応するキャッシュライン上に記憶されているか判定し、記憶されている場合には「0」を、記憶されていない場合には「1」を、レジスタr6に記録することを示す。
【0052】
出力コード1202dは、第一のキャッシュヒット判定命令であり、ベースアドレスレジスタであるレジスタr8の値に、オフセット値「8」を加えたアドレスのデータが、データアレイ506の対応するキャッシュライン上に記憶されているか判定し、記憶されている場合には「0」を、記憶されていない場合には「1」を、レジスタr7に記録することを示す。
【0053】
出力コード1202eは、複数の判定結果を1つに融合する融合命令として論理和Or命令を使用した例で、レジスタr6の値とレジスタr7の値の論理和を取り、結果をレジスタr9に記録することを示す。
【0054】
出力コード1202fは、条件レジスタであるレジスタr9の値が「1」である場合には、リターンアドレスレジスタであるr0に次の命令のアドレスを記録し、指定アドレスである「cache_miss_handler」で示されるアドレスに分岐することを示す。
【0055】
このようにして、出力プログラム生成部303は、同一のキャッシュラインへアクセスする可能性がある複数のメモリアクセス命令(ここでは、出力コード1202a,1202bである)に対するキャッシュヒット判定命令(ここでは、出力コード1202c,1202dである)の判定結果を出力コード1202eにより1つに融合して当該判定結果に応じてキャッシュミス処理を行う命令を1つの部分出力プログラム1201に含ませる。
【0056】
また、ステップS804の処理の結果生成されたキャッシュメモリアクセス命令の他の例について説明する。図15は、ステップS804の処理の結果生成されたキャッシュメモリアクセス命令を例示する図である。同図に示される部分出力プログラム1301は、出力プログラム103の一部であり、内部表現コード701iと701jとを処理した結果生成したものである。
【0057】
出力コード1302aと出力コード1302bとは、第二のロードキャッシュ命令であり、ベースアドレスレジスタ値にオフセットレジスタ値を加算した、メインメモリ406のアドレスに対応する、データアレイ506の対応するキャッシュライン上のデータをロードすることを示す。出力コード1302aは、ベースアドレスレジスタであるレジスタr10の値に、オフセットレジスタであるレジスタr11の値を加えたアドレスのデータをデータアレイ506からロードし、レジスタr13に記録することを示す。出力コード1302bは、ベースアドレスレジスタであるレジスタr18の値に、オフセットレジスタであるレジスタr12の値を加えたアドレスのデータをデータアレイ506からロードし、レジスタr14に記録することを示す。
【0058】
出力コード1302cと出力コード1302dは、第二のキャッシュヒット判定命令であり、ベースアドレスレジスタ値にオフセットレジスタ値を加算した、メインメモリ406のアドレス上のデータが、データアレイ506の対応するキャッシュライン上に記憶されているか判定し、その結果を指定レジスタに記録することを示す。出力コード1302cは、ベースアドレスレジスタであるレジスタr10の値に、オフセットレジスタであるレジスタr11の値を加えたアドレスのデータが、データアレイ506の対応するキャッシュライン上に記憶されているか判定し、記憶されている場合には「0」を、記憶されていない場合には「1」を、レジスタr6に記録することを示す。出力コード1302dは、ベースアドレスレジスタであるレジスタr18の値に、オフセットレジスタであるレジスタr12の値を加えたアドレスのデータが、データアレイ506の対応するキャッシュライン上に記憶されているか判定し、記憶されている場合には「0」を、記憶されていない場合には「1」を、レジスタr7に記録することを示す。
【0059】
出力コード1302eは、複数の判定結果を1つに融合する融合命令として論理和Or命令を使用した例で、レジスタr6の値とレジスタr7の値の論理和を取り、結果をレジスタr9に記録することを示す。出力コード1302fは、条件レジスタであるレジスタr9の値が「1」である場合には、リターンアドレスレジスタであるr0に次の命令のアドレスを記録し、指定アドレスである「cache_miss_handler」で示されるアドレスに分岐することを示す。
【0060】
出力プログラム生成部303は、以上のようにして内部表現プログラム305を解析し、各種命令を含む出力プログラム103を生成することにより、内部表現プログラム305から出力プログラム103を生成する。この出力プログラム103は出力プログラム出力装置205を介してターゲット計算機102に出力される。ターゲット計算機102は、出力プログラム103を出力プログラム入力装置409を介してローカルメモリ403に入力する。そして、ターゲット計算機102のプロセッサ401は、出力プログラム103の実行時にこれをローカルメモリ403から読み出す。尚、出力プログラム103は、上述したように、メモリアクセス命令に対応するロードキャッシュ命令やキャッシュヒット判定命令の他演算命令を含み、プロセッサ401は、出力プログラム103に含まれる各種命令に従って、処理を行う。
【0061】
<ターゲット計算機102の動作>
次に、ターゲット計算機102のプロセッサ401が出力プログラム103を実行する場合の処理の手順について説明する。プロセッサ401は、ローカルメモリ403に出力プログラム103を実行すると共に、キャッシュデータ制御プログラムを実行する。そして、プロセッサ401は、出力プログラム103に含まれるメモリアクセス命令に従う際、キャッシュデータ制御プログラムに従い、キャッシュヒット判定処理と、先行ロード処理とを並列に実行する。
【0062】
ここで、具体的に、上述の出力プログラム103のうち図14に示される部分出力プログラム1201に従ったプロセッサ401の動作について説明する。例えば、データアレイ506のキャッシュライン番号が「0−4」のキャッシュライン上に、メインメモリ406のアドレス「0x00010400」のデータが一時的に保持されている場合、プロセッサ401は、内部表現コード701dに対応する第1のロードキャッシュ命令(出力コード1202a)に従って、データアレイ506の対応するキャッシュライン上のデータをレジスタr3にロードしたとき、レジスタr3には処理対象である正しいデータがロードされたことになる。このため、プロセッサ401は、出力コード1202cによる第1のキャッシュヒット判定命令に従ってキャッシュヒット判定処理を行った結果、キャッシュヒットしたと判定して、レジスタr6に「0」を記録する。一方、内部表現コード701eに対応する第1のロードキャッシュ命令(出力コード1202b)に従って、データアレイ506の対応するキャッシュライン上のデータをレジスタr4にロードしたとき、レジスタr4には処理対象ではない誤ったデータがロードされたことになる。このため、プロセッサ401は、出力コード1202dによる第1のキャッシュヒット判定命令に従ってキャッシュヒット判定処理を行った結果、キャッシュミスが発生したと判定して、レジスタr7に「1」を記録する。続いて、プロセッサ401は、出力コード1202eによる融合命令に従って、レジスタr6の値「0」とレジスタr7の値「1」との論理和を取り、レジスタr9に「1」を記録する。最後に、プロセッサ401は、出力コード1202fによる条件分岐命令に従って、指定アドレスである「cache_miss_handler」で示されるアドレスに分岐し、キャッシュミスが発生したと判定されたロードキャッシュ命令(出力コード1202b)に対応するキャッシュミス処理を行なう。
【0063】
メインメモリ406の異なるキャッシュラインにアクセスするメモリアクセス命令のうち、データアレイ506の同一のキャッシュラインへアクセスする可能性がある2つのメモリアクセス命令に対して各々行う2回のキャッシュヒット判定において、従来であれば、キャッシュミスと判定する回数は2回となる恐れがあったが、本実施の形態においては、その回数を1回に低減することができる。この結果、キャッシュミス処理を行う回数を低減することができる。
【0064】
尚、キャッシュミス処理では、プロセッサ401は、データ転送装置405を制御し、メインメモリアドレスに指定されるデータをメインメモリ406からローカルメモリ403へ転送し、そのデータのメインメモリアドレスのライン番号と対応するローカルメモリ403上のキャッシュラインのいずれかに複製する。その後、プロセッサ401は、ローカルメモリ403に複製したデータを、レジスタファイル408を構成するレジスタへ複製する処理(ロード処理)を行う。
【0065】
ここで、キャッシュミスが発生したと判定された第1のロードキャッシュ命令(出力コード1202b)のベースアドレスレジスタであるレジスタr8の値は「0x00020400」であるので、キャッシュミス処理の結果、データアレイ506のキャッシュライン番号「0−4」のキャッシュライン上には、メインメモリ406のアドレス「0x00010400」上のデータに代わって、メインメモリ406のアドレス「0x00020400」上のデータが一時的に保持される。この結果、部分出力プログラム1201を繰り返し実行するループ処理において、次に部分出力プログラム1201をプロセッサ401が実行するときには、出力コード1202aによる第1のロードキャッシュ命令に従ってデータをロードしたとき、出力コード1202cによる第1のキャッシュヒット判定命令に従って行うキャッシュヒット判定の結果、キャッシュミスが発生したと判定する。一方、プロセッサ401は、出力コード1202bによる第1のロードキャッシュ命令に従ってデータをロードしたとき、出力コード1202dによる第1のキャッシュヒット判定命令に従って行う判定の結果、キャッシュヒットと判定する。
【0066】
この場合も、メインメモリ406の異なるキャッシュラインにアクセスするメモリアクセス命令のうち、データアレイ506の同一のキャッシュラインへアクセスする可能性がある2つのメモリアクセス命令に対して各々行う2回のキャッシュヒット判定において、従来2回発生する恐れのあったキャッシュミスと判定する回数を1回に低減することができる。
【0067】
即ち、ループ処理によって、部分出力プログラム1201を繰り返し実行する場合、内部表現コード701dに対応する先行ロード処理及びキャッシュヒット判定処理と、内部表現コード701eに対応する先行ロード処理及びキャッシュヒット判定処理とを交互に実行しても、各ループ処理においてキャッシュミスが発生したと判定する回数を低減することができる。
【0068】
尚、プロセッサ401が部分出力プログラム1301を実行した場合も、部分出力プログラム1201を実行した場合と同様に、2つのメモリアクセス命令に対し、キャッシュミスと判定する回数を1回に低減することができる。
【0069】
以上のようにして、メインメモリの異なるキャッシュラインへのアクセス時に使用されるキャッシュメモリのキャッシュラインが同一である可能性のある複数のメモリアクセス命令に対する各キャッシュ判定処理の判定結果1つに融合することにより、キャッシュミス処理を行うか否かの判定回数を低減させることができる。そして、融合した判定結果に応じてキャッシュミス処理を行うことにより、キャッシュミス処理の回数を低減させることができる。この結果、スラッシングの発生を抑制して、メモリのデータ供給性能の悪化を抑制することができる。
【0070】
[変形例]
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要
旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示され
ている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【0071】
<変形例1>
上述した実施の形態のホスト計算機101で実行されるプログラム変換プログラムやターゲット計算機102で実行されるキャッシュデータ制御プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより各々提供するように構成しても良い。また、これらのプログラムをインストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して各々提供するように構成してもよい。
【0072】
<変形例2>
上述した実施の形態においては、メインメモリ406の異なるキャッシュラインへのアクセス時に使用されるローカルメモリ403のキャッシュラインが同一である可能性のあるメモリアクセス命令の数として2つを例示したが、本実施の形態においては、この数に限らない。
【0073】
また、メインメモリ406のメインメモリアドレス、メインメモリ406のキャッシュライン及びローカルメモリ403のキャッシュラインの対応関係は、上述のものに限らない。
【0074】
<変形例3>
上述した実施の形態においては、ホスト計算機101とターゲット計算機102とを別体で構成するようにした。しかし、ホスト計算機101及びターゲット計算機102の少なくとも一方が、他方の上述した機能を有するように構成しても良い。
【産業上の利用可能性】
【0075】
以上のように、本発明は、第1プログラムを、プロセッサが解釈可能なマシン語で記述された第2プログラムに変換する情報処理装置、および、メインメモリに記憶されたデータを一時的に記憶するキャッシュメモリを有する情報処理装置、ならびに情報処理システムに有用である。特に、キャッシュメモリへの複数のアクセスを並行して行う情報処理装置及び情報処理システムに用いて好適である。
【図面の簡単な説明】
【0076】
【図1】本実施の形態にかかる計算機システムの構成を例示するブロック図である。
【図2】ホスト計算機101の構成を例示するブロック図である。
【図3】プロセッサ201がプログラム変換プログラムを実行することにより実現される機能的構成を例示するブロック図である。
【図4】ターゲット計算機102の構成を例示する図である。
【図5】プロセッサ401がプログラムメモリ402に記憶されたキャッシュ制御プログラムを実行することにより実現される機能を例示する図である。
【図6】プロセッサ401が出力するメインメモリアドレスのデータ構成を例示する図である。
【図7】ローカルメモリ403の構成を例示する図である。
【図8】メインメモリ406の構成を例示する図である。
【図9】図3に示した入力プログラム解析部302が出力する内部表現プログラム305を例示する図である。
【図10】出力プログラム生成部303が内部表現プログラム305を解析して出力プログラム103を生成する生成処理の手順を示すフローチャートである。
【図11】単一のメモリアクセスを行なうキャッシュメモリアクセス命令を生成する処理の手順を示すフローチャートである。
【図12】ステップS806の結果生成されたキャッシュメモリアクセス命令を例示する図である。
【図13】複数のメモリアクセスを行なうキャッシュメモリアクセス命令を生成する処理の手順を示すフローチャートである。
【図14】ステップS804の処理の結果生成されたキャッシュメモリアクセス命令を例示する図である。
【図15】ステップS804の処理の結果生成されたキャッシュメモリアクセス命令を例示する図である。
【符号の説明】
【0077】
101 ホスト計算機
102 ターゲット計算機
103 出力プログラム
201 プロセッサ
202 プログラムメモリ
203 メインメモリ
204 入力プログラム入力装置
205 出力プログラム出力装置
206 バス
302 入力プログラム解析部
303 出力プログラム生成部(プログラム変換手段、出力手段)
304 入力プログラム
305 内部表現プログラム
401 プロセッサ
402 プログラムメモリ
403 ローカルメモリ
404 内部バス
405 データ転送装置
406 メインメモリ407 外部バス
408 レジスタファイル409 出力プログラム入力装置
502 キャッシュメモリ部
504 キャッシュデータ制御部(キャッシュデータ制御手段)
505 タグアレイ506 データアレイ
507 データ転送部
508 制御装置509 演算装置

【特許請求の範囲】
【請求項1】
少なくとも1つの処理命令を含む第1プログラムを、プログラムの実行時に用いるデータを一時的に記憶するレジスタを有するプロセッサとキャッシュライン単位で分割されるメモリであり且つ複数の前記データを当該データのアドレスに対応する第1キャッシュラインに各々記憶するメインメモリとキャッシュライン単位で分割され前記データへのアクセス時に少なくとも1つの第2キャッシュラインが使用されるキャッシュメモリとを備える第1情報処理装置が実行可能な第2プログラムに変換するプログラム変換手段と、
前記第2プログラムを出力する出力手段とを備え、
前記プログラム変換手段は、
前記第1プログラムに含まれる処理命令であって前記データへアクセスする命令を表すメモリアクセス命令に対して、前記データを記憶する前記第1キャッシュラインに対応して使用される前記第2キャッシュラインに記憶されている記憶データを前記レジスタに転送する命令を表すロードキャッシュ命令を生成する第1命令生成手段と、
前記メモリアクセス命令に対して、前記データを記憶する前記第1キャッシュラインに対応して使用される前記第2キャッシュラインに前記データが記憶されているか否かを判定する命令を表すキャッシュヒット判定命令を生成する第2命令生成手段と、
異なる前記第1キャッシュラインに記憶されている前記データへのアクセス時に使用される前記第2キャッシュラインが同一である可能性のある複数の前記メモリアクセス命令が前記第1プログラムに含まれる場合、当該複数のメモリアクセス命令に対して各々生成された前記キャッシュヒット判定命令による判定結果を1つに融合する融合命令を生成する第3命令生成手段とを有する
ことを特徴とする情報処理装置。
【請求項2】
前記メモリアクセス命令は、前記データの前記メインメモリにおけるアドレスを、ベースアドレスを表す第1レジスタに対する定数値の加算により求める第1のレジスタ間接アドレス方式のメモリアクセス命令であり、
前記第3命令生成手段は、前記第1レジスタが表す前記ベースアドレスに対応する前記第1キャッシュラインに対応して使用される前記第2キャッシュラインが同一である複数の前記メモリアクセス命令が前記第1プログラムに含まれる場合に、前記融合命令を生成する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記メモリアクセス命令は、前記データの前記メインメモリにおけるアドレスを、第1レジスタと第2レジスタとの加算により求める第2のレジスタ間接アドレス方式のメモリアクセス命令であり、
前記第3命令生成手段は、前記第1レジスタ及び前記第2レジスタのうち少なくとも一方により、異なる前記第1キャッシュラインに記憶されている前記データへのアクセス時に使用される前記第2キャッシュラインが同一である複数の前記メモリアクセス命令が前記第1プログラムに含まれると判定した場合に、前記融合命令を生成する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記第3命令生成手段は、異なる前記第1キャッシュラインに記憶されている前記データへのアクセス時に使用される前記第2キャッシュラインが同一である可能性のある複数の前記メモリアクセス命令が前記第1プログラムに含まれる場合、前記判定結果の論理和を求める命令を前記融合命令として生成する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記プログラム変換手段は、前記キャッシュヒット判定命令による前記判定結果又は前記融合命令によって融合された前記判定結果が、前記データが前記第2キャッシュラインに記憶されていないことを示す場合に前記メインメモリにおけるアドレスを用いて当該データを前記メインメモリから前記キャッシュメモリに転送した後当該キャッシュメモリから前記レジスタに転送する命令を表すキャッシュミス処理命令を生成する第4命令生成手段を更に有する
請求項1乃至請求項4のいずれか一項に記載の情報処理装置。
【請求項6】
前記プログラム変換手段は、前記ロードキャッシュ命令、前記キャッシュヒット判定命令、前記融合命令及び前記キャッシュミス処理命令を含む第2プログラムを生成する
ことを特徴とする請求項5に記載の情報処理装置。
【請求項7】
前記第3命令生成手段は、前記第1のプログラムにおいて所定の処理単位で分割される基本ブロック毎に、異なる前記第1キャッシュラインに記憶されている前記データへのアクセス時に使用される前記第2キャッシュラインが同一である可能性のある複数のメモリアクセス命令が含まれるか否かを判定し、当該判定結果が肯定的である場合、前記融合命令を生成する
ことを特徴とする請求項1乃至請求項6のいずれか一項に記載の情報処理装置。
【請求項8】
前記第1プログラムは、高級プログラミング言語で記述されたプログラムである
ことを特徴とする請求項1乃至請求項7のいずれか一項に記載の情報処理装置。
【請求項9】
前記第1プログラムは、前記プロセッサ以外の他のプロセッサが解釈可能なマシン語で記述されたプログラムである
ことを特徴とする請求項1乃至請求項7のいずれか一項に記載の情報処理装置。
【請求項10】
前記第2プログラムは、前記プロセッサが解釈可能なマシン語で記述されたプログラムである
ことを特徴とする請求項1乃至請求項9のいずれか一項に記載の情報処理装置。
【請求項11】
プログラムの実行時に用いるデータを一時的に記憶するレジスタを有するプロセッサとキャッシュライン単位で分割されるメモリであり且つ複数の前記データを当該データのアドレスに対応する第1キャッシュラインに各々記憶するメインメモリとキャッシュライン単位で分割され前記データへのアクセス時に少なくとも1つの第2キャッシュラインが使用されるローカルメモリと、
前記メインメモリに記憶された前記データを前記ローカルメモリに転送する転送手段と、
前記プロセッサが前記プログラムの実行時において前記データへアクセスする際に、前記データが前記ローカルメモリに記憶されているか否かを判定する判定処理を行うとともに、当該判定処理が完了する前に、前記ローカルメモリにおいて前記データへのアクセス時に使用するメモリ領域に記憶されている記憶データを、前記レジスタに転送する転送処理を行うキャッシュデータ制御手段とを備え、
前記キャッシュデータ制御手段は、複数の前記データに対して行う前記判定処理及び前記転送処理を並行して行い、異なる前記第1キャッシュラインに記憶されている複数の前記データへのアクセス時に使用する前記第2キャッシュラインが同一である可能性がある場合、複数の前記データに対する各前記判定処理の判定結果を融合し、当該融合した判定結果に応じて、前記転送手段を介して前記データを前記メインメモリから前記ローカルメモリに転送し、その後、当該データを前記ローカルメモリから前記レジスタに転送する第2転送処理を行う
ことを特徴とする情報処理装置。
【請求項12】
プログラムの実行時に用いるデータを一時的に記憶するレジスタを有するプロセッサとキャッシュライン単位で分割されるメモリであり且つ複数の前記データを当該データのアドレスに対応する第1キャッシュラインに各々記憶するメインメモリとキャッシュライン単位で分割され前記データへのアクセス時に少なくとも1つの第2キャッシュラインが使用されるローカルメモリとを備える情報処理装置であって、
少なくとも1つの処理命令を含む第1プログラムを、前記プロセッサが実行可能な第2プログラムに変換するプログラム変換手段と、
前記プロセッサが前記第2プログラムの実行時において前記データへアクセスする際に、前記データが前記ローカルメモリに記憶されているか否かを判定する判定処理を行うとともに、当該判定処理が完了する前に、前記ローカルメモリにおいて前記データへのアクセス時に使用するメモリ領域に記憶されている記憶データを、前記レジスタに転送する転送処理を行うキャッシュデータ制御手段とを備え、
前記プログラム変換手段は、前記データを記憶する前記第1キャッシュラインに対応して使用される前記第2キャッシュラインに記憶されている記憶データを前記レジスタに転送する命令を表すロードキャッシュ命令を生成する第1命令生成手段と、前記メモリアクセス命令に対して、前記データを記憶する前記第1キャッシュラインに対応して使用される前記第2キャッシュラインに前記データが記憶されているか否かを判定する命令を表すキャッシュヒット判定命令を生成する第2命令生成手段と、異なる前記第1キャッシュラインに記憶されている前記データへのアクセス時に使用される前記第2キャッシュラインが同一である可能性のある複数の前記メモリアクセス命令が前記第1プログラムに含まれる場合、当該複数のメモリアクセス命令に対して各々生成された前記キャッシュヒット判定命令による判定結果を1つに融合する融合命令を生成する第3命令生成手段とを有し、前記ロードキャッシュ命令及び前記キャッシュヒット判定命令を少なくとも含む前記第2プログラムを生成し、
前記キャッシュデータ制御手段は、複数の前記データに対して行う前記判定処理及び前記転送処理を並行して行い、異なる前記第1キャッシュラインに記憶されている複数の前記データへのアクセス時に使用する前記第2キャッシュラインが同一である可能性がある場合、複数の前記データに対する各前記判定処理の判定結果を融合し、当該融合した判定結果に応じて、前記転送手段を介して前記データを前記メインメモリから前記ローカルメモリに転送し、その後、当該データを前記ローカルメモリから前記レジスタに転送する第2転送処理を行う
ことを特徴とする情報処理装置。
【請求項13】
請求項1乃至請求項10のいずれか一項に記載の情報処理装置と、前記第1情報処理装置とを備え、
前記第1情報処理装置が、請求項11に記載の情報処理装置である
ことを特徴とする情報処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2009−20695(P2009−20695A)
【公開日】平成21年1月29日(2009.1.29)
【国際特許分類】
【出願番号】特願2007−182618(P2007−182618)
【出願日】平成19年7月11日(2007.7.11)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】