説明

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

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

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、第1プログラムを、プロセッサが解釈可能なマシン語で記述された第2プログラムに変換する情報処理技術、および、メインメモリに記憶されたデータを一時的に記憶するキャッシュメモリを有する情報処理技術に関する。
【背景技術】
【0002】
従来一般的なプロセッサは、そのプロセッサ用の命令セットアーキテクチャで規定されたマシン語で記述されたプログラム(オブジェクトコード)を実行することができる。一方、プログラマは、マシン語よりも分かりやすいC言語などの高級プログラミング言語を用いてプログラミングすることが多い。その為、プログラムをプロセッサで実行する前に、高級プログラミング言語を用いて記述されたプログラムを、コンパイラなどのプログラム変換手段を用いて、オブジェクトコードに変換する必要がある。また、バイナリトランスレータなどのプログラム変換手段を用いて、あるプロセッサ用のオブジェクトコードを、他のプロセッサ用のオブジェクトコードに変換することもある。例えば、特許文献1には、プログラム実行時にあるプロセッサ用のオブジェクトコードを、他のプロセッサ用のオブジェクトコードに変換する技術が記載されている。
【0003】
【特許文献1】特表2002―536712号公報
【0004】
また、近年の計算機の中には、プロセッサのデータ処理性能とメインメモリのデータ供給性能との差を埋めるために、プロセッサとメインメモリ間に、メインメモリより少量ではあるがデータ供給性能が高いキャッシュメモリやローカルメモリなどの一時記憶装置を備えるものも多い。このような計算機では、メインメモリに記憶されたデータを一時記憶装置に一時的に記憶することで、データ供給性能を高め、プロセッサのデータ処理性能を活かすことができる。しかし、一時記憶装置は、メインメモリよりも少量であり、メインメモリ上の全てのデータを記憶することはできない。このため、プロセッサのデータアクセス等に伴って、一時記憶装置に記憶させるデータを適宜置換する必要がある。尚、キャッシュメモリとメインメモリ間のデータ転送は自動的に行われるが、ローカルメモリとメインメモリ間のデータ転送は、プログラムからデータ転送装置に対して明示的に指示されることにより行われる。
【0005】
このキャッシュメモリは、キャッシュラインと呼ばれる部分メモリ領域に分割される。キャッシュメモリにおいてはキャッシュライン単位でデータの置換を行う。プロセッサがメインメモリ上のデータにアクセスするアクセス処理を行う際には、メインメモリ上のデータがキャッシュメモリ上に一時的に記憶されているか(キャッシュヒット)を確認するキャッシュヒット判定を行う。このキャッシュヒット判定において、アクセスするデータがキャッシュメモリ上に一時的に記憶されていないと判定した場合、即ち、キャッシュミスが発生した場合には、アクセスする対象のデータを含むメモリ領域をキャッシュライン単位でメインメモリからキャッシュメモリに転送する。この際、キャッシュメモリのキャッシュラインに空き領域が存在しない場合には、既に他のデータが一時的に記憶されている使用中のキャッシュラインを再利用する。この結果キャッシュメモリにおけるデータが置換される。尚、再利用するキャッシュラインのデータが変更されていた場合には、このキャッシュラインを再利用する前にこのキャッシュラインに記憶されているデータをメインメモリに転送する。
【0006】
以上のように、アクセス処理毎のキャッシュヒット判定に応じてデータの置換を行う場合、例えば、同一のキャッシュラインを使用するメインメモリ上の近隣データにアクセスするアクセス処理が複数あったとする。この場合、先行するアクセス処理でキャッシュミスが発生したと判定した際には、該当データをメインメモリからキャッシュラインに転送することにより、データの置換を行う。これにより、後続のアクセス処理では該当データがキャッシュラインに記憶されているため、キャッシュミスは発生せず、データの置換を行う必要がない。
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、従来のキャッシュメモリにおいては、同一キャッシュラインにアクセスする複数のアクセス処理を並行させる場合、先行するアクセス処理でキャッシュミスが発生した際、キャッシュメモリにおけるデータの置換が完了する前に、後続のアクセス処理を行なってしまう場合がある。この場合、後続のアクセス処理においてもキャッシュミスが発生してしまうという恐れがあった。
【0008】
本発明は、上記に鑑みてなされたものであって、同一キャッシュラインにアクセスする複数のアクセス処理を並行させる場合にも、不必要なキャッシュミスの発生を抑制可能な情報処理装置及びシステムを提供することを目的とする。
【課題を解決するための手段】
【0009】
上述した課題を解決し、目的を達成するために、本発明は、情報処理装置であって、少なくとも1つの処理命令を含む第1プログラムを、プログラムの実行時に用いるデータを一時的に記憶するレジスタを有するプロセッサと複数の前記データを記憶するメインメモリとキャッシュライン単位で分割され前記データへのアクセス時に少なくとも1つのキャッシュラインが使用されるキャッシュメモリとを備える第1情報処理装置が実行可能な第2プログラムに変換するプログラム変換手段と、前記第2プログラムを出力する出力手段とを備え、前記プログラム変換手段は、前記第1プログラムに含まれる処理命令であって前記データへアクセスする命令を表すメモリアクセス命令に対して、前記データのアクセス時に使用される前記キャッシュラインに記憶されている記憶データを前記レジスタに転送する命令を表すロードキャッシュ命令を生成する第1命令生成手段と、前記メモリアクセス命令に対して、前記データのアクセス時に使用される前記キャッシュラインに前記データが記憶されているか否かを判定する命令を表すキャッシュヒット判定命令を生成する第2命令生成手段と、前記データへのアクセス時に使用される前記キャッシュラインが同一である可能性のある複数の前記メモリアクセス命令が前記第1プログラムに含まれる場合、当該複数のメモリアクセス命令に対して各々生成された前記キャッシュヒットによる判定結果を1つに融合する融合命令を生成する第3命令生成手段とを有することを特徴とする。
【0010】
また、本発明は、プログラムの実行時に用いるデータを一時的に記憶するレジスタを有するプロセッサと、複数の前記データを記憶するメインメモリと、前記メインメモリに記憶された前記データを一時的に記憶するメモリ領域を有するローカルメモリと、前記プロセッサが前記プログラムの実行時において前記データへアクセスする際に、前記データが前記ローカルメモリに記憶されているか否かを判定する判定処理を行うとともに、当該判定処理が完了する前に、前記ローカルメモリにおいて前記データへのアクセス時に使用する前記メモリ領域に記憶されている記憶データを、前記レジスタに転送する転送処理を行うキャッシュデータ制御手段とを備え、前記キャッシュデータ制御手段は、複数の前記データに対して行う前記判定処理及び前記転送処理を並行して行うことを特徴とする。
【0011】
また、本発明は、プログラムの実行時に用いるデータを一時的に記憶するレジスタを有するプロセッサと複数の前記データを記憶するメインメモリとキャッシュライン単位で分割され前記データへのアクセス時に少なくとも1つのキャッシュラインが使用されるローカルメモリとを備える情報処理装置であって、少なくとも1つの処理命令を含む第1プログラムを、前記プロセッサが解釈可能なマシン語で記述された第2プログラムに変換するプログラム変換手段と、前記プロセッサが前記プログラムの実行時において前記データへのアクセスする際に、前記データが前記ローカルメモリに記憶されているか否かを判定する判定処理を行うとともに、当該判定処理が完了する前に、前記ローカルメモリにおいて前記データへのアクセス時に使用する前記メモリ領域に記憶されている記憶データを、前記レジスタに転送する転送処理を行うキャッシュデータ制御手段とを備え、前記プログラム変換手段は、前記第1プログラムに含まれる処理命令であって前記データへアクセスする命令を表すメモリアクセス命令に対して、前記データのアクセス時に使用される前記キャッシュラインに記憶されている記憶データを前記レジスタに転送する命令を表すロードキャッシュ命令を生成する第1命令生成手段と、前記メモリアクセス命令に対して、前記データのアクセス時に使用される前記キャッシュラインに前記データが記憶されているか否かを判定する命令を表すキャッシュヒット判定命令を生成する第2命令生成手段と、前記データへのアクセス時に使用される前記キャッシュラインが同一である可能性のある複数の前記メモリアクセス命令が前記第1プログラムに含まれる場合、当該複数のメモリアクセス命令に対して各々生成された前記キャッシュヒット判定命令による判定結果を1つに融合する融合命令を生成する第3命令生成手段とを有し、前記ロードキャッシュ命令及び前記キャッシュヒット判定命令を少なくとも含む前記第2プログラムを生成し、前記キャッシュデータ制御手段は、前記プロセッサが前記第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は、内部表現プログラムに含まれる処理命令であって処理対象のデータへアクセスする命令を表すメモリアクセス命令に対して、以下の(a),(b),(d)の各処理命令を生成してこれらを含む出力プログラム103を出力する。更に、本実施の形態においては、出力プログラム生成部303は、内部表現プログラムに含まれる処理命令の満たす条件に応じて、以下の(c)の融合命令を適宜生成してこれを含む出力プログラム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の構成を例示する図である。同図では、データアレイのキャッシュラインとタグアレイのタグ(管理情報)を、「キャッシュライン(ウェイ番号)−(ライン番号)」、「タグ(ウェイ番号)−(ライン番号)」と記載している。例えば、「キャッシュライン1−255」は、ウェイ番号「1」、ライン番号「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が含まれている。内部表現コード701a,701b,701cは、ベースアドレスレジスタ値にオフセット値を加算した、メインメモリ406のアドレスからデータをレジスタにロードする、第一のレジスタ間接アドレッシングを用いたロード命令の例である。内部表現コード701aは、ベースアドレスレジスタであるレジスタr0の値に、オフセット値「4」を加えたアドレスからデータをロードし、レジスタr1に記録する命令である。内部表現コード701bは、ベースアドレスレジスタであるレジスタr1の値に、オフセット値「4」を加えたアドレスからデータをロードし、レジスタr3に記録する命令である。内部表現コード701cは、ベースアドレスレジスタであるレジスタr1の値に、オフセット値「8」を加えたアドレスからデータをロードし、レジスタr4に記録する命令である。
【0032】
内部表現コード701dおよび701gは、2つのレジスタ値を加算する命令の例である。内部表現コード701dは、レジスタr3の値とレジスタr4の値を加算し、レジスタr5に記録する命令である。内部表現コード701gは、レジスタr13の値とレジスタr14の値を加算し、レジスタr15に記録する命令である。
【0033】
内部表現コード701eおよび701fは、ベースアドレスレジスタ値にオフセットレジスタ値を加算した、メインメモリ406のアドレスからデータをレジスタにロードする、第二のレジスタ間接アドレッシングを用いたロード命令の例である。内部表現コード701eは、ベースアドレスレジスタであるレジスタr10の値に、オフセットレジスタであるレジスタr11の値を加えたアドレスからデータをロードし、レジスタr13に記録する命令である。内部表現コード701fは、ベースアドレスレジスタであるレジスタr10の値に、オフセットレジスタであるレジスタr13の値を加えたアドレスからデータをロードし、レジスタr14に記録する命令である。
【0034】
尚、ここで例示した内部表現プログラム305は、内部表現コード701a〜701gを含む1つの基本ブロックを有するものとしたが、本実施の形態においては、内部表現プログラム305は、複数の基本ブロックを有するものであっても良い。また、基本ブロックは、プログラムを所定の処理単位に分割した処理ブロックであり、所定の処理とは、例えば、ループ処理や分岐処理などである。
【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は、近隣の内部表現コードに、同じベースアドレスレジスタを使用するメモリアクセス命令があるか否かを判定する(ステップS803)。即ち、出力プログラム生成部303は、同一のキャッシュラインへアクセスする可能性があるメモリアクセス命令が複数あるか否かを判定する。
【0037】
尚、「近隣の内部表現コード」とは、例えば、以下の(a)〜(c)のいずれかの条件を満たすものとする。
(a)内部表現プログラム305において処理対象の内部表現コードと同じベーシックブロックに含まれる内部表現コード
(b)上記(a)に該当する内部表現コードのうち、処理対象の内部表現コードから後続する1つあるいは複数の内部表現コード
(c)上記(b)に該当する内部表現コードのうち、メモリアクセス命令である処理対象の内部表現コードとその内部表現コードとの間に、処理対象の内部表現コードが使用するレジスタの値を変更する命令を表す内部表現コードが無い、内部表現コード
【0038】
また、ここでは、メモリアクセス命令が同一のキャッシュラインへアクセスする可能性があるか否かを、同じベースアドレスレジスタを使用するか否かにより判定したが、ベースアドレスレジスタ同士に限らず、ベースアドレスレジスタとオフセットレジスタ、あるいは、オフセットレジスタ同士が同一であるか否かにより判定しても良い。
【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の一部であり、内部表現コード701aを処理した結果生成したものである。出力コード1002aは、第一のロードキャッシュ命令であり、ベースアドレスレジスタ値にオフセット値を加算した、メインメモリ406のアドレスに対応する、データアレイ506の対応するキャッシュライン上のデータをロードすることを示す。出力コード1002aは、ベースアドレスレジスタであるレジスタr0の値に、オフセット値「4」を加えたアドレスのデータをデータアレイ506からロードし、レジスタr1に記録することを示す。ここで、ロードキャッシュ命令は、後続の命令と並行して処理を継続し、処理の完了を待たずに後続の命令を実行できることとする。尚、本実施の形態では、ロードキャッシュ命令を単一マシン語としているが、複数のマシン語を組み合わせて同様の機能を実現するように構成しても良い。
【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の一部であり、内部表現コード701bと701cとを処理した結果生成したものである。出力コード1202aは、第一のロードキャッシュ命令であり、ベースアドレスレジスタであるレジスタr1の値に、オフセット値「4」を加えたアドレスのデータをデータアレイ506からロードし、レジスタr3に記録することを示す。
【0050】
出力コード1202bは、第一のロードキャッシュ命令であり、ベースアドレスレジスタであるレジスタr1の値に、オフセット値「8」を加えたアドレスのデータをデータアレイ506からロードし、レジスタr4に記録することを示す。
【0051】
出力コード1202cは、第一のキャッシュヒット判定命令であり、ベースアドレスレジスタであるレジスタr1の値に、オフセット値「4」を加えたアドレスのデータが、データアレイ506の対応するキャッシュライン上に記憶されているか判定し、記憶されている場合には「0」を、記憶されていない場合には「1」を、レジスタr6に記録することを示す。
【0052】
出力コード1202dは、第一のキャッシュヒット判定命令であり、ベースアドレスレジスタであるレジスタr1の値に、オフセット値「8」を加えたアドレスのデータが、データアレイ506の対応するキャッシュライン上に記憶されているか判定し、記憶されている場合には「0」を、記憶されていない場合には「1」を、レジスタr7に記録することを示す。
【0053】
出力コード1202eは、複数の判定結果を1つに融合する融合命令として論理和Or命令を使用した例で、レジスタr6の値とレジスタr7の値の論理和を取り、結果をレジスタr6に記録することを示す。
【0054】
出力コード1202fは、条件レジスタであるレジスタr6の値が「1」である場合には、リターンアドレスレジスタであるr0に次の命令のアドレスを記録し、指定アドレスである「cache_miss_handler」で示されるアドレスに分岐することを示す。
【0055】
このようにして、出力プログラム生成部303は、同一のキャッシュラインへアクセスする可能性がある複数のメモリアクセス命令(ここでは、出力コード1202a,1202bである)に対するキャッシュヒット判定命令(ここでは、出力コード1202c,1202dである)の判定結果を出力コード1202eにより1つに融合して当該判定結果に応じてキャッシュミス処理を行う命令を1つの部分出力プログラム1201に含ませる。
【0056】
また、ステップS804の処理の結果生成されたキャッシュメモリアクセス命令の他の例について説明する。図15は、ステップS804の処理の結果生成されたキャッシュメモリアクセス命令を例示する図である。同図に示される部分出力プログラム1301は、出力プログラム103の一部であり、内部表現コード701eと701fとを処理した結果生成したものである。
【0057】
出力コード1302aと出力コード1302bとは、第二のロードキャッシュ命令であり、ベースアドレスレジスタ値にオフセットレジスタ値を加算した、メインメモリ406のアドレスに対応する、データアレイ506の対応するキャッシュライン上のデータをロードすることを示す。出力コード1302aは、ベースアドレスレジスタであるレジスタr10の値に、オフセットレジスタであるレジスタr11の値を加えたアドレスのデータをデータアレイ506からロードし、レジスタr13に記録することを示す。出力コード1302bは、ベースアドレスレジスタであるレジスタr10の値に、オフセットレジスタであるレジスタr12の値を加えたアドレスのデータをデータアレイ506からロードし、レジスタr14に記録することを示す。
【0058】
出力コード1302cと出力コード1302dは、第二のキャッシュヒット判定命令であり、ベースアドレスレジスタ値にオフセットレジスタ値を加算した、メインメモリ406のアドレス上のデータが、データアレイ506の対応するキャッシュライン上に記憶されているか判定し、その結果を指定レジスタに記録することを示す。出力コード1302cは、ベースアドレスレジスタであるレジスタr10の値に、オフセットレジスタであるレジスタr11の値を加えたアドレスのデータが、データアレイ506の対応するキャッシュライン上に記憶されているか判定し、記憶されている場合には「0」を、記憶されていない場合には「1」を、レジスタr6に記録することを示す。出力コード1302dは、ベースアドレスレジスタであるレジスタr10の値に、オフセットレジスタであるレジスタr12の値を加えたアドレスのデータが、データアレイ506の対応するキャッシュライン上に記憶されているか判定し、記憶されている場合には「0」を、記憶されていない場合には「1」を、レジスタr7に記録することを示す。
【0059】
出力コード1302eは、複数の判定結果を1つに融合する融合命令として論理和Or命令を使用した例で、レジスタr6の値とレジスタr7の値の論理和を取り、結果をレジスタr6に記録することを示す。出力コード1302fは、条件レジスタであるレジスタr6の値が「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は、内部表現プログラム305のうちメモリアクセス命令である内部表現コード701bに対応するロードキャッシュ命令(出力コード1202a)に従って、データアレイ506の対応するキャッシュライン上のデータのロード(先行ロード処理)を開始する。そして、プロセッサ401は、先行ロード処理の完了を待たずに、ロードキャッシュ命令(出力コード1202a)に対するキャッシュヒット判定命令(出力コード1202c)に従って、キャッシュヒット判定処理を開始する。
【0063】
このように、キャッシュヒット判定処理が完了する前に先行ロード処理を開始することにより、先行ロード処理とキャッシュヒット判定処理とを並列に実行することができ、データアクセス時間の短縮化を実現することができる。
【0064】
更に、プロセッサ401は、内部表現プログラム305のうちメモリアクセス命令である内部表現コード701cに対応するロードキャッシュ命令(出力コード1202b)に従って、データアレイ506の対応するキャッシュライン上のデータのロード(先行ロード処理)を開始する。そして、プロセッサ401は、先行ロード処理の完了を待たずに、ロードキャッシュ命令(出力コード1202b)に対するキャッシュヒット判定命令(出力コード1202d)に従って、キャッシュヒット判定処理を開始する。
【0065】
即ち、ここでは、プロセッサ401は、内部表現コード701bに対する先行ロード処理及びキャッシュヒット判定処理と、内部表現コード701cに対する先行ロード処理及びキャッシュヒット判定処理とを並列に実行する。これにより、データアクセス時間を更に短縮することができる。
【0066】
また、ここでは、同一のキャッシュラインにアクセスする可能性のある複数のメモリアクセス命令が複数ある場合、各メモリアクセス命令に対する各キャッシュ判定処理の結果が1つに融合される。この判定結果に応じて、プロセッサ401は、キャッシュミス処理を行う。具体的には、各出力コード1202c,1202dによるキャッシュヒット判定処理の判定結果が出力コード1202eにより1つに融合される。そして、この判定結果に応じて、プロセッサ401は、出力コード1202fによりキャッシュミス処理を行う。
【0067】
ここで、プロセッサ401がキャッシュミス処理を行う場合の処理手順について説明する。プロセッサ401は、例えば、図14示した出力コード1202fを読み出し「cache_miss_handler」で示されるアドレスに分岐した場合、キャッシュミス処理を行うことになる。即ち、プロセッサ401は、該当のデータがデータアレイ506の対応するキャッシュライン上に記憶されていない場合に、キャッシュミス処理を行うことになる。キャッシュミス処理では、プロセッサ401は、データ転送装置405を制御し、メインメモリアドレスに指定されるデータをメインメモリ406からローカルメモリ403へ転送し、そのデータのメインメモリアドレスのライン番号と対応するローカルメモリ403上のキャッシュラインのいずれかに複製する。その後、プロセッサ401は、ローカルメモリ403に複製したデータを、レジスタファイル408を構成するレジスタへ複製する処理(ロード処理)を行う。このロード処理が完了した後、プロセッサ401は、レジスタに複製したデータを用いて、出力プログラム103に含まれる演算命令に従った演算処理を行う。
【0068】
以上のようにして、同一のキャッシュラインにアクセスする可能性のある複数のメモリアクセス命令に対する各キャッシュ判定処理の判定結果1つに融合することにより、キャッシュミス処理を行うか否かの判定回数を低減させることができる。そして、融合した判定結果に応じてキャッシュミス処理を行うことにより、キャッシュミス処理の回数を低減させることができる。何故なら、先行ロード処理とキャッシュヒット判定処理とを並列に行う構成においては、同一のキャッシュラインにアクセスする可能性のある複数のメモリアクセス命令に対する各キャッシュ判定処理の各判定結果に応じてキャッシュミス処理を各々行う場合、先のメモリアクセス命令に対するキャッシュ判定処理の結果キャッシュミスと判定した場合には、不必要なキャッシュミス処理を行う可能性があり、この不必要なキャッシュミス処理の回数を本実施の形態の構成によって低減することができるからである。具体的には、先行ロード処理とキャッシュヒット判定処理とを並列に行う構成においては、先のメモリアクセス命令に対するキャッシュ判定処理の結果キャッシュミスと判定した場合、キャッシュミス処理によって対象のデータをローカルメモリ403(データアレイ506)に記憶する前に、後続するメモリアクセス命令に対するキャッシュ判定処理を行う可能性があり、この結果、後続するメモリアクセス命令に対してもキャッシュミスと判定する恐れがある。即ち、この場合、キャッシュミス処理を行うか否かの判定回数は2回となり、この結果、先のメモリアクセス命令に対するキャッシュミス処理を行った後、後続するメモリアクセス命令に対するキャッシュミス処理を再度行うことになる。しかし、後続するメモリアクセス命令に対しては、先のメモリアクセス命令に対するキャッシュミス処理の結果、処理対象のデータがローカルメモリ403に記憶されるため、本来キャッシュミス処理を行う必要がない。このため、本実施の形態においては、このような不要なキャッシュミス処理を省略すべく、上述したように、同一のキャッシュラインにアクセスする可能性のある複数のメモリアクセス命令に対する各キャッシュ判定処理の判定結果を1つに融合することにより、キャッシュミス処理を行うか否かの判定回数を低減させることができ、更に、融合した判定結果に応じてキャッシュミス処理を行うことにより、キャッシュミス処理の回数を低減させることができる。
【0069】
尚、同一のキャッシュラインにアクセスする可能性のあるメモリアクセス命令が複数ない場合には、単一のメモリアクセス命令に対するキャッシュヒット判定処理を行うが、このキャッシュヒット判定処理が完了する前に先行ロード処理を完了していれば、キャッシュヒット判定処理の判定結果が決定した直後に、プロセッサ401は、先行ロード処理でレジスタに複製したデータへアクセスすることができる。従って、データアクセス時間を短縮することができる。
【0070】
即ち、本実施の形態においては、ターゲット計算機102が、メモリアクセス命令に対応して行う先行ロード処理及びキャッシュヒット判定処理を並列に実行する構成において、更に、複数のメモリアクセス命令を同時に処理できるような出力プログラムをホスト計算機101が生成する。そして、ターゲット計算機102がキャッシュデータ制御プログラムを実行すると共にこのような出力プログラムを実行したとき、同一のキャッシュラインにアクセスする可能性のある複数のメモリアクセス命令に従ってデータへのアクセスする場合におけるメモリアクセスのスループットを向上させることができる。
【0071】
[変形例]
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要
旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示され
ている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【0072】
<変形例1>
上述した実施の形態のホスト計算機101で実行されるプログラム変換プログラムやターゲット計算機102で実行されるキャッシュデータ制御プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより各々提供するように構成しても良い。また、これらのプログラムをインストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して各々提供するように構成してもよい。
【0073】
<変形例2>
上述した実施の形態においては、データへのアクセス時に使用されるローカルメモリ403のキャッシュラインが同一である可能性のあるメモリアクセス命令の数として2つを例示したが、本実施の形態においては、この数に限らない。
【0074】
また、メインメモリ406のメインメモリアドレス、メインメモリ406のキャッシュライン及びローカルメモリ403のキャッシュラインの対応関係は、上述のものに限らない。
【0075】
<変形例3>
上述した実施の形態においては、ホスト計算機101とターゲット計算機102とを別体で構成するようにした。しかし、ホスト計算機101及びターゲット計算機102の少なくとも一方が、他方の上述した機能を有するように構成しても良い。
【産業上の利用可能性】
【0076】
以上のように、本発明は、第1プログラムを、プロセッサが解釈可能なマシン語で記述された第2プログラムに変換する情報処理装置、および、メインメモリに記憶されたデータを一時的に記憶するキャッシュメモリを有する情報処理装置、ならびに情報処理システムに有用である。特に、キャッシュメモリへの複数のアクセスを並行して行う情報処理装置及び情報処理システムに用いて好適である。
【図面の簡単な説明】
【0077】
【図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の処理の結果生成されたキャッシュメモリアクセス命令を例示する図である。
【符号の説明】
【0078】
101 ホスト計算機(情報処理装置)
102 ターゲット計算機(第1情報処理装置)
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プログラムに変換するプログラム変換手段と、
前記第2プログラムを出力する出力手段とを備え、
前記プログラム変換手段は、
前記第1プログラムに含まれる処理命令であって前記データへアクセスする命令を表すメモリアクセス命令に対して、前記データのアクセス時に使用される前記キャッシュラインに記憶されている記憶データを前記レジスタに転送する命令を表すロードキャッシュ命令を生成する第1命令生成手段と、
前記メモリアクセス命令に対して、前記データのアクセス時に使用される前記キャッシュラインに前記データが記憶されているか否かを判定する命令を表すキャッシュヒット判定命令を生成する第2命令生成手段と、
前記データへのアクセス時に使用される前記キャッシュラインが同一である可能性のある複数の前記メモリアクセス命令が前記第1プログラムに含まれる場合、当該複数のメモリアクセス命令に対して各々生成された前記キャッシュヒットによる判定結果を1つに融合する融合命令を生成する第3命令生成手段とを有する
ことを特徴とする情報処理装置。
【請求項2】
前記メモリアクセス命令は、前記データの前記メインメモリにおけるアドレスを、第1レジスタに対する定数値の加算により求める第1のレジスタ間接アドレス方式のメモリアクセス命令であり、
前記第3命令生成手段は、前記第1レジスタが同一である複数の前記メモリアクセス命令が前記第1プログラムに含まれる場合に、前記融合命令を生成する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記メモリアクセス命令は、前記データの前記メインメモリにおけるアドレスを、第1レジスタと第2レジスタとの加算により求める第2のレジスタ間接アドレス方式のメモリアクセス命令であり、
前記第3命令生成手段は、前記第1レジスタ及び前記第2レジスタのうち少なくともいずれかが同一である複数の前記メモリアクセス命令が前記第1プログラムに含まれる場合に、前記融合命令を生成する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記第3命令生成手段は、前記データへのアクセス時に使用される前記キャッシュラインが同一である可能性のある複数の前記メモリアクセス命令が前記第1プログラムに含まれる場合、前記判定結果の論理和を求める命令を前記融合命令として生成する
ことを特徴とする請求項1乃至請求項3のいずれか一項に記載の情報処理装置。
【請求項5】
前記プログラム変換手段は、前記キャッシュヒット判定命令による判定結果又は前記融合命令によって融合された前記判定結果が、前記データが前記キャッシュラインに記憶されていないことを示す場合に前記メインメモリにおけるアドレスを用いて当該データを前記メインメモリから前記キャッシュメモリに転送した後当該キャッシュメモリから前記レジスタに転送する命令を表すキャッシュミス処理命令を生成する第4命令生成手段を更に有する
請求項1乃至請求項3のいずれか一項に記載の情報処理装置。
【請求項6】
前記プログラム変換手段は、前記ロードキャッシュ命令、前記キャッシュヒット判定命令、前記融合命令及び前記キャッシュミス処理命令を含む第2プログラムを生成する
ことを特徴とする請求項5に記載の情報処理装置。
【請求項7】
前記第3命令生成手段は、前記第1のプログラムにおいて所定の処理単位で分割される基本ブロック毎に、前記データへのアクセス時に使用される前記キャッシュラインが同一である可能性のある複数の前記メモリアクセス命令が含まれるか否かを判定し、当該判定結果が肯定的である場合、前記融合命令を生成する
ことを特徴とする請求項1乃至請求項6のいずれか一項に記載の情報処理装置。
【請求項8】
前記第1プログラムは、高級プログラミング言語で記述されたプログラムである
ことを特徴とする請求項1乃至請求項7のいずれか一項に記載の情報処理装置。
【請求項9】
前記第1プログラムは、前記プロセッサ以外の他のプロセッサが解釈可能なマシン語で記述されたプログラムである
ことを特徴とする請求項1乃至請求項8のいずれか一項に記載の情報処理装置。
【請求項10】
前記第2プログラムは、前記プロセッサが解釈可能なマシン語で記述されたプログラムである
ことを特徴とする請求項1乃至請求項9のいずれか一項に記載の情報処理装置。
【請求項11】
前記キャッシュラインは、前記データの前記メインメモリにおけるアドレスに対応して使用される
ことを特徴とする請求項1乃至請求項10のいずれか一項に記載の情報処理装置。
【請求項12】
プログラムの実行時に用いるデータを一時的に記憶するレジスタを有するプロセッサと、
複数の前記データを記憶するメインメモリと、
前記メインメモリに記憶された前記データを一時的に記憶するメモリ領域を有するローカルメモリと、
前記プロセッサが前記プログラムの実行時において前記データへアクセスする際に、前記データが前記ローカルメモリに記憶されているか否かを判定する判定処理を行うとともに、当該判定処理が完了する前に、前記ローカルメモリにおいて前記データへのアクセス時に使用する前記メモリ領域に記憶されている記憶データを、前記レジスタに転送する転送処理を行うキャッシュデータ制御手段とを備え、
前記キャッシュデータ制御手段は、複数の前記データに対して行う前記判定処理及び前記転送処理を並行して行う
ことを特徴とする情報処理装置。
【請求項13】
前記メインメモリに記憶された前記データを前記ローカルメモリに転送する転送手段を更に備え、
前記キャッシュデータ制御手段は、前記判定処理の結果、前記データが前記ローカルメモリに記憶されていないと判定した場合、前記転送手段を介して前記データを前記メインメモリから前記ローカルメモリに転送し、その後、当該データを前記ローカルメモリから前記レジスタに転送する第2転送処理を行う
ことを特徴とする請求項12に記載の情報処理装置。
【請求項14】
前記メモリ領域は、前記ローカルメモリが複数に分割されたキャッシュラインのうち少なくとも1つであり、
前記キャッシュデータ制御手段は、複数の前記データへのアクセス時に使用する前記キャッシュラインが同一である可能性がある場合、複数の前記データに対する各前記判定処理の判定結果を融合し、当該融合した判定結果に応じて、前記第2転送処理を行う
ことを特徴とする請求項12又は請求項13に記載の情報処理装置。
【請求項15】
プログラムの実行時に用いるデータを一時的に記憶するレジスタを有するプロセッサと複数の前記データを記憶するメインメモリとキャッシュライン単位で分割され前記データへのアクセス時に少なくとも1つのキャッシュラインが使用されるローカルメモリとを備える情報処理装置であって、
少なくとも1つの処理命令を含む第1プログラムを、前記プロセッサが解釈可能なマシン語で記述された第2プログラムに変換するプログラム変換手段と、
前記プロセッサが前記プログラムの実行時において前記データへのアクセスする際に、前記データが前記ローカルメモリに記憶されているか否かを判定する判定処理を行うとともに、当該判定処理が完了する前に、前記ローカルメモリにおいて前記データへのアクセス時に使用する前記メモリ領域に記憶されている記憶データを、前記レジスタに転送する転送処理を行うキャッシュデータ制御手段とを備え、
前記プログラム変換手段は、前記第1プログラムに含まれる処理命令であって前記データへアクセスする命令を表すメモリアクセス命令に対して、前記データのアクセス時に使用される前記キャッシュラインに記憶されている記憶データを前記レジスタに転送する命令を表すロードキャッシュ命令を生成する第1命令生成手段と、前記メモリアクセス命令に対して、前記データのアクセス時に使用される前記キャッシュラインに前記データが記憶されているか否かを判定する命令を表すキャッシュヒット判定命令を生成する第2命令生成手段と、前記データへのアクセス時に使用される前記キャッシュラインが同一である可能性のある複数の前記メモリアクセス命令が前記第1プログラムに含まれる場合、当該複数のメモリアクセス命令に対して各々生成された前記キャッシュヒット判定命令による判定結果を1つに融合する融合命令を生成する第3命令生成手段とを有し、前記ロードキャッシュ命令及び前記キャッシュヒット判定命令を少なくとも含む前記第2プログラムを生成し、
前記キャッシュデータ制御手段は、前記プロセッサが前記第2プログラムを実行するときに、当該第2プログラムに含まれる前記キャッシュヒット判定命令及び前記ロードキャッシュ命令に従って前記判定処理及び前記転送処理を各々行い、更に、前記プロセッサが複数の前記データを用いる場合、複数の前記データに対して各々行う前記判定処理及び前記転送処理を並行して行う
ことを特徴とする情報処理装置。
【請求項16】
請求項1乃至請求項11のいずれか一項に記載の情報処理装置と、前記第1情報処理装置とを備え、
前記第1情報処理装置が、請求項12乃至請求項14のいずれか一項に記載の情報処理装置である
ことを特徴とする情報処理システム。

【図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−20696(P2009−20696A)
【公開日】平成21年1月29日(2009.1.29)
【国際特許分類】
【出願番号】特願2007−182619(P2007−182619)
【出願日】平成19年7月11日(2007.7.11)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】