(57)【要約】【課題】  キャッシュメモリの効率的な利用を図ることができるデータ処理装置を提供する。【解決手段】  物理アドレスで定められる領域ごとに、命令またはデータを格納するキャッシュメモリ２８およびメモリ３０と、前記物理アドレスと予め定められた処理を示す処理判定データとを含む論理アドレスを出力し、当該論理アドレスに含まれる前記物理アドレスに対応する前記命令または前記データを取得し、かつ当該命令を実行する演算処理部２２と、前記演算処理部２２が出力する論理アドレスを前記物理アドレスに変換するアドレス変換部２６とを備え、前記キャッシュメモリ２８およびメモリ３０は、前記物理アドレスで定められる領域に格納されている前記命令または前記データを読み出すとともに、前記処理判定データに基づいて定められる処理を実行する。【選択図】      図２
2005190161.tif 000002
【特許請求の範囲】
【請求項１】
物理アドレスで定められる領域ごとに、命令またはデータを格納する格納手段と、
前記物理アドレスと予め定められた処理を示す処理判定データとを含む論理アドレスを出力し、当該論理アドレスに含まれる前記物理アドレスに対応する前記命令または前記データを取得し、かつ当該命令を実行する命令実行手段と、
前記命令実行手段が出力する論理アドレスを前記物理アドレスに変換するアドレス変換手段とを備え、
前記格納手段は、前記物理アドレスで定められる領域に格納されている前記命令または前記データを読み出すとともに、前記処理判定データに基づいて定められる処理を実行する
ことを特徴とするデータ処理装置。
【請求項２】
前記格納手段は、
前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納するメモリと、
前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納し、かつ前記メモリよりも高速にデータの読出しおよび書込みが可能なキャッシュメモリと、
前記処理判定データに基づいて定められる処理を実行する処理実行部とを有し、
前記論理アドレスの前記処理判定データには、前記メモリに格納されている前記命令または前記データをフェッチして、前記キャッシュメモリに格納する処理に対応するフェッチ判定データが含まれ、
前記命令実行手段により、前記フェッチ判定データが含まれる前記論理アドレスへのアクセスが行われる場合には、前記処理実行部は、前記アドレス変換手段より出力される前記物理アドレスにより特定される前記メモリの格納領域に格納されている前記命令または前記データをフェッチし、前記キャッシュメモリに格納する
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記格納手段は、
前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納するメモリと、
前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納し、かつ前記メモリよりも高速にデータの読出しおよび書込みが可能なキャッシュメモリと、
前記処理判定データに基づいて定められる処理を実行する処理実行部とを有し、
前記論理アドレスの前記処理判定データには、前記メモリに格納されている前記命令または前記データをプリフェッチして、前記キャッシュメモリに格納する処理に対応するプリフェッチ対応データが含まれ、
前記命令実行手段により、前記プリフェッチ判定データが含まれる前記論理アドレスへのアクセスが行われる場合には、前記処理実行部は、前記アドレス変換手段により出力される前記物理アドレスにより特定される前記メモリの格納領域に格納されている前記命令または前記データをプリフェッチし、前記キャッシュメモリに格納する
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
前記格納手段は、
前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納するメモリと、
前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納し、かつ前記メモリよりも高速にデータの読出しおよび書込みが可能なキャッシュメモリと、
前記処理判定データに基づいて定められる処理を実行する処理実行部とを有し、
前記論理アドレスの前記処理判定データには、前記メモリに格納されている前記命令または前記データを格納するための領域を前記キャッシュメモリに確保する処理に対応する領域確保対応データが含まれ、
前記命令実行手段により、前記領域確保対応データが含まれる前記論理アドレスへのアクセスが行われる場合には、前記処理実行部は、前記アドレス変換手段より出力される前記物理アドレスにより特定される前記メモリの格納領域に格納されている前記命令または前記データを格納するための領域を前記キャッシュメモリに確保する
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
前記格納手段は、
前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納するメモリと、
前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納し、かつ前記メモリよりも高速にデータの読出しおよび書込みが可能なキャッシュメモリと、
前記処理判定データに基づいて定められる処理を実行する処理実行部とを有し、
前記論理アドレスの前記処理判定データには、前記メモリに格納されている前記命令または前記データを前記キャッシュメモリに格納せずに、前記命令実行手段に転送する処理に対応するアンキャッシャブル対応データが含まれ、
前記命令実行手段により、前記アンキャッシャブル対応データが含まれる前記論理アドレスへのアクセスが行われる場合には、前記処理実行部は、前記アドレス変換手段より出力される前記物理アドレスにより特定される前記キャッシュメモリの格納領域に前記命令または前記データを格納することなく、前記メモリの当該物理アドレスに格納されている前記命令および前記データを前記処理実行部との間でやり取りさせる
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項６】
前記格納手段は、
前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納するメモリと、
前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納し、かつ前記メモリよりも高速にデータの読出しおよび書込みが可能なキャッシュメモリと、
前記処理判定データに基づいて定められる処理を実行する処理実行部とを有し、
前記論理アドレスの前記処理判定データには、前記メモリまたは前記キャッシュメモリに格納されている前記データへのアクセス後に、当該データを所定の規則に従い更新する処理に対応する値更新対応データが含まれ、
前記命令実行手段により、前記値更新対応データが含まれる前記論理アドレスへのアクセスが行われる場合には、前記処理実行部は、前記アドレス変換手段より出力される前記物理アドレスにより特定される前記メモリまたは前記キャッシュメモリの格納領域に格納されている前記データを当該データへのアクセス後に所定の規則に従い更新する
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項７】
データ処理装置で実行されるプログラムであって、
前記データ処理装置は、物理アドレスで定められる領域ごとに、命令またはデータを格納する格納手段と、前記物理アドレスと予め定められた処理を示す処理判定データとを含む論理アドレスを出力し、当該論理アドレスに含まれる前記物理アドレスに対応する前記命令または前記データを取得し、かつ当該命令を実行する命令実行手段と、前記命令実行手段が出力する論理アドレスを前記物理アドレスに変換するアドレス変換手段とを備え、前記格納手段は、前記物理アドレスで定められる領域に格納されている前記命令または前記データを読み出すとともに、前記処理判定データに基づいて定められる処理を実行し、
前記論理アドレスを用いて前記格納手段にアクセスする機械語命令を含む
ことを特徴とする前記データ処理装置で実行可能なプログラム。
【請求項８】
高級プログラミング言語で記述されたソースプログラムを機械語プログラムに変換するコンパイラ装置であって、
前記ソースプログラムに含まれるソースコードを中間コードに変換する中間コード変換手段と、
前記中間コードを最適化する最適化手段と、
最適化された前記中間コードを機械語命令に変換するコード生成手段とを備え、
前記最適化手段は、
前記中間コードに基づいて、データへのアクセス時に用いられる物理アドレスに所定の処理を示す処理判定データを付加した論理アドレスを生成する論理アドレス生成部と、
前記論理アドレスを用いて前記データをアクセスする中間コードを生成する中間コード生成部とを有する
ことを特徴とするコンパイラ装置。
【請求項９】
前記論理アドレス生成部は、
前記中間コードに含まれる前記データのアクセスごとに、前記ソースプログラム中に当該アクセスに対する処理の指示が含まれるか否かを調べる指示調査部と、
前記指示が含まれる場合には、当該データの物理アドレスに当該指示で定められる処理に対応する処理判定データを付加し、論理アドレスを生成する処理判定データ付加部とを含む
ことを特徴とする請求項８に記載のコンパイラ装置。
【請求項１０】
前記処理判定データには、メモリに格納されているデータをフェッチして、キャッシュメモリに格納する処理に対応するフェッチ判定データが含まれ、
さらに、キャッシュミスを起こすデータおよび当該データの配置位置を解析する解析手段を備え、
前記論理アドレス生成部は、
前記中間コードに含まれる前記データのアクセスごとに、前記解析手段での解析結果に基づいて、アクセスされるデータがキャッシュミスを起こすか否かを判断するキャッシュミス判断部と、
前記キャッシュミス判断部の判断結果に基づいて、前記データがキャッシュミスを起こさないと判断した場合に、当該データの論理アドレスに前記フェッチ判定データを付加した論理アドレスを生成するフェッチ判定データ付加部とを含む
ことを特徴とする請求項８に記載のコンパイラ装置。
【請求項１１】
前記処理判定データには、メモリに格納されているデータをプリフェッチして、キャッシュメモリに格納する処理に対応するプリフェッチ判定データが含まれ、
さらに、キャッシュミスを起こすデータおよび当該データの配置位置を解析する解析手段を備え、
前記論理アドレス生成部は、
前記中間コードに含まれる前記データのアクセスごとに、前記解析手段での解析結果に基づいて、アクセスされるデータを、アクセス時までに予め前記キャッシュメモリに格納する必要があるか否かを判断するプリフェッチ判断部と、
前記プリフェッチ判断部の判断結果に基づいて、前記データをアクセス時までに予め前記キャッシュメモリに格納する必要があると判断した場合には、当該データの論理アドレスに前記プリフェッチ判定データを付加した論理アドレスを生成するプリフェッチ判定データ付加部とを含む
ことを特徴とする請求項８に記載のコンパイラ装置。
【請求項１２】
前記処理判定データには、メモリに格納されているデータを格納するための領域をキャッシュメモリに確保する処理に対応する領域確保対応データが含まれ、
さらに、データが書込みから開始する処理で用いられるか否かを解析する解析手段を備え、
前記論理アドレス生成部は、前記中間コードに含まれる前記データのアクセスごとに、前記解析手段での解析結果に基づいて、アクセスされるデータが書込みから開始する処理で用いられる場合には、当該データの論理アドレスに前記領域確保対応データを付加した論理アドレスを生成する
ことを特徴とする請求項８に記載のコンパイラ装置。
【請求項１３】
前記処理判定データには、メモリに格納されているデータをキャッシュメモリに格納せずに、命令を実行する命令実行手段に転送する処理に対応するアンキャッシャブル対応データが含まれ、
キャッシュミスを起こすデータおよび当該データの配置位置を解析する解析手段を備え、
前記論理アドレス生成部は、
前記中間コードに含まれる前記データのアクセスごとに、前記解析手段での解析結果に基づいて、アクセスされるデータを前記キャッシュメモリに格納する必要があるか否かを判断する格納判断部と、
前記格納判断部の判断結果に基づいて、前記データを前記キャッシュメモリに格納する必要がないと判断した場合に、前記データの論理アドレスに前記アンキャッシャブル対応データを付加した論理アドレスを生成するアンキャッシャブル対応データ付加部とを含む
ことを特徴とする請求項８に記載のコンパイラ装置。
【請求項１４】
高級プログラミング言語で記述されたソースプログラムを機械語プログラムに変換するコンパイル方法であって、
前記ソースプログラムに含まれるソースコードを中間コードに変換する中間コード変換ステップと、
前記中間コードを最適化する最適化ステップと、
最適化された前記中間コードを機械語命令に変換するコード生成ステップとを含み、
前記最適化ステップは、
前記中間コードに基づいて、データへのアクセス時に用いられる物理アドレスに所定の処理を示す処理判定データを付加した論理アドレスを生成する論理アドレス生成サブステップと、
前記論理アドレスを用いて前記データへアクセスする中間コードを生成する中間コード生成サブステップとを含む
ことを特徴とするコンパイル方法。
【請求項１５】
高級プログラミング言語で記述されたソースプログラムを機械語プログラムに変換するコンパイラであって、
請求項１４に記載のコンパイル方法に含まれる各ステップをコンピュータに実行させる
ことを特徴とするコンパイラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置およびコンパイラ装置に関し、特に、キャッシュメモリを備えるデータ処理装置および当該データ処理装置で実行される機械語プログラムを生成するコンパイラ装置に関する。
【背景技術】
【０００２】
キャッシュメモリを備えるデータ処理装置（コンピュータ）では、キャッシュメモリのヒット率を向上させるために各種の工夫がなされている。
例えば、従来のキャッシュメモリを備えたデータ処理装置では、２次元配列データをタイル状に区切り、各タイルに対応する配列ごとに演算を行う方法が提案されている（例えば、特許文献１参照。）。この方法では、データの空間的局所性を利用しているため、キャッシュメモリのヒット率を向上させることができる。
【特許文献１】特開平８−２９７６０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、特許文献１に記載のデータ処理装置は、２次元配列データを対象としているため、それ以外のデータアクセスに対しては適用できない。このため、キャッシュメモリの効率的な利用を必ずしも図ることができないという課題がある。
本発明は、上述の課題を解決するためになされたもので、２次元配列データ以外についてもキャッシュメモリの効率的な利用を図ることができるデータ処理装置を提供することを第１の目的とする。
【０００４】
また、２次元配列データ以外についてもキャッシュメモリの効率的な利用を図ることができるデータ処理装置で実行される機械語プログラムを生成するコンパイラ装置を提供することを第２の目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明に係るデータ処理装置は、物理アドレスで定められる領域ごとに、命令またはデータを格納する格納手段と、前記物理アドレスと予め定められた処理を示す処理判定データとを含む論理アドレスを出力し、当該論理アドレスに含まれる前記物理アドレスに対応する前記命令または前記データを取得し、かつ当該命令を実行する命令実行手段と、前記命令実行手段が出力する論理アドレスを前記物理アドレスに変換するアドレス変換手段とを備え、前記格納手段は、前記物理アドレスで定められる領域に格納されている前記命令または前記データを読み出すとともに、前記処理判定データに基づいて定められる処理を実行する。
【０００６】
論理アドレスには、物理アドレスの他に処理を示す処理判定データが含まれる。命令またはデータを含む格納手段は、当該処理判定データに基づいて定められる処理を実行する。このため、データ等の格納手段を効率的に利用することができるようになる。
例えば、前記格納手段は、前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納するメモリと、前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納し、かつ前記メモリよりも高速にデータの読出しおよび書込みが可能なキャッシュメモリと、前記処理判定データに基づいて定められる処理を実行する処理実行部とを有し、前記論理アドレスの前記処理判定データには、前記メモリに格納されている前記命令または前記データをプリフェッチして、前記キャッシュメモリに格納する処理に対応するプリフェッチ対応データが含まれ、前記命令実行手段により、前記プリフェッチ判定データが含まれる前記論理アドレスへのアクセスが行われる場合には、前記処理実行部は、前記アドレス変換手段により出力される前記物理アドレスにより特定される前記メモリの格納領域に格納されている前記命令または前記データをプリフェッチし、前記キャッシュメモリに格納する。
【０００７】
このようにすることにより、データをキャッシュメモリにプリフェッチするか否かを論理アドレスにより判断することができる。このため、高速なデータアクセスが可能となるとともに、キャッシュメモリを効率的に利用可能となる。
本発明の他の局面に係るコンパイラ装置は、高級プログラミング言語で記述されたソースプログラムを機械語プログラムに変換するコンパイラ装置であって、前記ソースプログラムに含まれるソースコードを中間コードに変換する中間コード変換手段と、前記中間コードを最適化する最適化手段と、最適化された前記中間コードを機械語命令に変換するコード生成手段とを備え、前記最適化手段は、前記中間コードに基づいて、データへのアクセス時に用いられる物理アドレスに所定の処理を示す処理判定データを付加した論理アドレスを生成する論理アドレス生成部と、前記論理アドレスを用いて前記データをアクセスする中間コードを生成する中間コード生成部とを有する。
【０００８】
論理アドレスには、物理アドレスの他に所定の処理を示す処理判定データが含まれる。コンパイラ装置は、論理アドレスを用いてデータをアクセスする中間コードを生成する。そのため、データへのアクセス時に、合わせて所定の処理を実行させることができるようになる。
例えば、前記処理判定データには、メモリに格納されているデータをプリフェッチして、キャッシュメモリに格納する処理に対応するプリフェッチ判定データが含まれ、上述のコンパイラ装置は、さらに、キャッシュミスを起こすデータおよび当該データの配置位置を解析する解析手段を備え、前記論理アドレス生成部は、前記中間コードに含まれる前記データのアクセスごとに、前記解析手段での解析結果に基づいて、アクセスされるデータを、アクセス時までに予め前記キャッシュメモリに格納する必要があるか否かを判断するプリフェッチ判断部と、前記プリフェッチ判断部の判断結果に基づいて、前記データをアクセス時までに予め前記キャッシュメモリに格納する必要があると判断した場合には、当該データの論理アドレスに前記プリフェッチ判定データを付加した論理アドレスを生成するプリフェッチ判定データ付加部とを含む。
【０００９】
このようにすることにより、データアクセス時までにプリフェッチを行うような処理を合わせて実行させることができる。このため、キャッシュメモリの効率的な利用を図ることができる。また、当該処理を実行するデータ処理装置で実行される機械語プログラムを生成することができる。
なお、本発明は、このような特徴的な命令を実行するデータ処理装置や特徴的な命令を生成するコンパイラ装置として実現することができるだけでなく、当直的な命令を含むプログラムとして実現したり、コンパイラ装置に含まれる特徴的な手段をステップとするコンパイル方法として実現したり、当該方法をコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ等の記録媒体やインターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
【発明の効果】
【００１０】
本発明によると、キャッシュメモリの効率的な利用を図ることができるデータ処理装置を提供することができる。
また、キャッシュメモリの効率的な利用を図ることができるデータ処理装置で実行される機械語プログラムを生成するコンパイラ装置を提供することができる。
【発明を実施するための最良の形態】
【００１１】
本発明の実施の形態に係るデータ処理装置について図面を参照しながら説明する。
図１は、データ処理装置の外観図である。図２は、図１に示すデータ処理装置の主要なハードウェア構成を示す図である。データ処理装置２０は、実行形式のプログラムに従って処理を実行する装置であり、演算処理部２２と、メモリ管理部２４とを備えている。
演算処理部２２は、メモリ管理部２４との間でデータ（上述のプログラムを含む）のやり取りを行い、上述のプログラムに従い演算処理を行う処理部である。演算処理部２２は、アドレスバスＡ１を介して後述する３２ビットの論理アドレスでメモリ管理部２４にアクセスし、データバスＤ１またはＤ２を介してメモリ管理部２４よりデータを読み出したり、メモリ管理部２４にデータを書き込んだりする。
【００１２】
メモリ管理部２４は、データを記憶するための各種メモリを管理する処理部であり、アドレス変換部２６と、キャッシュメモリ２８と、メモリ３０とを備えている。
アドレス変換部２６は、アドレスバスＡ１を介して演算処理部２２より受取った３２ビットの論理アドレスを後述する２８ビットの物理アドレスに変換する処理部である。また、アドレス変換部２６は、アドレスバスＡ２およびＡ３を介して当該物理アドレスでキャッシュメモリ２８およびメモリ３０にそれぞれアクセスする。さらに、アドレス変換部２６は、キャッシュメモリ２８を制御する制御信号を、制御信号バスＣ１を介してキャッシュメモリ２８に送信する。
【００１３】
キャッシュメモリ２８は、メモリ３０よりも高速な記憶装置であり、データを記憶するメモリ部３２と、キャッシュメモリ２８の各種制御を行なうキャッシュコントローラ３４と、加算器３６とを備えている。キャッシュコントローラ３４は、アドレスバスＡ４を介してメモリ３０にアクセスし、データバスＤ３を介してメモリ３０にデータを書き込んだり、メモリ３０よりデータを読み出したりする。
【００１４】
メモリ３０は、データを記憶するための記憶装置である。メモリ３０に記憶されている各バイトデータは、２８ビットの物理アドレスにより指定される。このため、メモリ３０は、２５６メガ（＝２28）バイトの記憶容量を有する。
図３は、論理アドレスのビット構成を示す図である。論理アドレスは上述のように３２ビットからなり、下位２８ビットが物理アドレスに相当し、上位４ビット（以下「空間判定ビット」という。）が後述する空間判定に用いられる。すなわち、論理アドレスを１６進数表現した場合「０ｘ００００００００」〜「０ｘＦＦＦＦＦＦＦＦ」の範囲の値で示される。このうち、上位１桁が空間判定に用いられる。よって、最大１６個の空間を定義することが可能である。
【００１５】
図４は、論理アドレス空間と物理アドレス空間との対応関係を説明するための図である。論理アドレス空間は、１６個のサブ空間に分けられ、各サブ空間は空間判定ビットにより指定される。各サブ空間の記憶容量はメモリ３０の記憶容量と同じ２５６メガバイトである。したがって、論理アドレス空間で指定可能なデータのサイズは、４ギガ（＝１６×２５６メガ）バイトである。
【００１６】
各サブ空間は、物理アドレス空間と一対一に対応付けられており、上述のように論理アドレスの下位２８ビットが物理アドレスに対応付けられている。図４に示されるように、例えば、論理アドレス「０ｘ０ＣＣＣＣＣＣＣ」で示されるデータ６４（変数ａ）にアクセスすることは、メモリ３０の物理アドレス「０ｘＣＣＣＣＣＣＣ」に格納されているデータ７４（変数ａ）にアクセスすることを意味する。ただし、各サブ空間は、その空間ごとに処理が対応付けられている。図中には、サブ空間の一例として「フェッチ空間」、「プリフェッチ空間」、「領域確保空間」、「アンキャッシャブル空間」および「値更新空間」が示されている。
【００１７】
「フェッチ空間」の論理アドレスは、「０ｘ００００００００〜０ｘ０ＦＦＦＦＦＦＦ」である。「プリフェッチ空間」の論理アドレスは、「０ｘ１０００００００〜０ｘ１ＦＦＦＦＦＦＦ」である。「領域確保空間」の論理アドレスは「０ｘ２０００００００」〜「０ｘ２ＦＦＦＦＦＦＦ」である。「アンキャッシャブル空間」の論理アドレスは「０ｘ３０００００００」〜「０ｘ３ＦＦＦＦＦＦＦ」である。「値更新空間」の論理アドレスは「０ｘＦ０００００００〜０ｘＦＦＦＦＦＦＦＦ」である。すなわち、論理アドレスの先頭４ビットでサブ空間の違いを示している。
【００１８】
「フェッチ空間」とは、キャッシュメモリを備える通常のデータ処理装置におけるメモリアクセスと同様の処理を行うために使用される論理アドレス空間である。例えば、演算処理部２２が「フェッチ空間」の論理アドレス「０ｘ０ＣＣＣＣＣＣＣ」で示されるデータ６４（変数ａ）にアクセスすると、キャッシュメモリ２８に変数ａが記憶されている場合にはキャッシュメモリ２８より、変数ａが演算処理部２２に転送される。キャッシュメモリ２８に変数ａが記憶されていない場合には、メモリ３０の物理アドレス「０ｘＣＣＣＣＣＣＣ」に格納されているデータ７４（変数ａ）がキャッシュメモリ２８に転送された後に、当該データが演算処理部２２に転送される。
【００１９】
「プリフェッチ空間」とは、所望のデータを予めキャッシュメモリ２８にプリフェッチするために使用される論理アドレス空間である。例えば、演算処理部２２が「プリフェッチ空間」の論理アドレス「０ｘ１ＣＣＣＣＣＣＣ」で示されるデータ６６（変数ａ）にアクセスすると、メモリ３０の物理アドレス「０ｘＣＣＣＣＣＣＣ」に格納されているデータ７４（変数ａ）がキャッシュメモリ２８にプリフェッチされる。
【００２０】
「領域確保空間」とは、所望のデータを格納するための領域をキャッシュメモリ２８上に確保するために使用される論理アドレス空間である。領域確保空間は、値の書込みから始まる処理で使用されるデータへのアクセスで使用される。当該データは、予めキャッシュメモリ２８にプリフェッチをしたとしても、そのデータがすぐに書換えられてしまう。このため、キャッシュメモリ２８上にデータをプリフェッチせずに、領域の確保のみが行われる。例えば、演算処理部２２が「領域確保空間」の論理アドレス「０ｘ２ＣＣＣＣＣＣＣ」で示されるデータ６８（変数ａ）にアクセスすると、メモリ３０の物理アドレス「０ｘＣＣＣＣＣＣＣ」に格納されているデータ７４（変数ａ）がキャッシュメモリ２８に格納されることなく、キャッシュメモリ２８上に変数ａを格納するための領域が確保される。なお、当該領域は、メモリ３０の物理アドレス「０ｘＣＣＣＣＣＣＣ」と対応付けられている。
【００２１】
「アンキャッシャブル空間」とは、所望のデータをキャッシュメモリ２８を介さずにメモリ３０から直接読み出したり、メモリ３０に直接書き込んだりする際に使用される論理アドレス空間である。例えば、演算処理部２２が「アンキャッシャブル空間」の論理アドレス「０ｘ３ＣＣＣＣＣＣＣ」で示されるデータ７０（変数ａ）にアクセスすると、メモリ３０の物理アドレス「０ｘＣＣＣＣＣＣＣ」に格納されているデータ７４（変数ａ）はキャッシュメモリ２８に格納されることなく、演算処理部２２へ転送される。
【００２２】
「値更新空間」とは、所望のデータへのアクセス後に当該データを何らかの規則に従い更新するために使用される論理アドレス空間である。例えば、演算処理部２２が「値更新空間」の論理アドレス「０ｘＦＣＣＣＣＣＣＣ」を用いてデータ７２（変数ａ）にアクセスすると、「フェッチ空間」と同様の動きが実行される。その後、キャッシュメモリ２８に格納されている変数ａの値が予め設定された値だけ加算される。
【００２３】
図５は、フェッチ空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。演算処理部２２がフェッチ空間の論理アドレスによりメモリアクセスを行うと（Ｓ２）、アドレス変換部２６は、当該論理アドレスを物理アドレスへ変換する（Ｓ４）。フェッチ空間の論理アドレスによりメモリアクセスが行われたか否かの判断は、アドレス変換部２６が行い、論理アドレスの上位４ビットが１６進数表現した場合に「０ｘ０」であるか否かにより判断される。また、論理アドレスから物理アドレスへの変換は、論理アドレスの下位２８ビットを抽出することにより行われる。
【００２４】
アドレス変換部２６は、当該物理アドレスに格納されているデータをキャッシュメモリ２８に要求する（Ｓ６）。当該物理アドレスに対応するデータがキャッシュメモリ２８にある場合には（Ｓ８でＹＥＳ）、キャッシュメモリ２８は、当該データを演算処理部２２に転送する。当該物理アドレスに対応するデータがキャッシュメモリにない場合には（Ｓ８でＮＯ）、キャッシュメモリ２８は、メモリ３０に対して当該物理アドレスに格納されているデータを要求し（Ｓ１０）、当該データをキャッシュメモリ２８に転送し、格納する（Ｓ１２）。その後、キャッシュメモリ２８は、そのデータを演算処理部２２に転送する（Ｓ１４）。
【００２５】
図６は、プリフェッチ空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。演算処理部２２がプリフェッチ空間の論理アドレスによりメモリアクセスを行うと（Ｓ２２）、アドレス変換部２６は、当該論理アドレスを物理アドレスに変換する（Ｓ２４）。プリフェッチ空間の論理アドレスによりメモリアクセスが行われたか否かの判断は、アドレス変換部２６が行い、論理アドレスの上位４ビットが１６進数表現した場合に「０ｘ１」であるか否かにより判断される。論理アドレスから物理アドレスへの変換は、上述の通りである。
【００２６】
アドレス変換部２６は、当該物理アドレスに格納されているデータをキャッシュメモリ２８に要求する（Ｓ２６）。当該物理アドレスに対応するデータがキャッシュメモリ２８にある場合には（Ｓ２８でＹＥＳ）、処理を終了する。当該物理アドレスに対応するデータがキャッシュメモリ２８にない場合には（Ｓ２８でＮＯ）、キャッシュメモリ２８は、メモリ３０に対して当該物理アドレスに格納されているデータを要求し（Ｓ３０）、当該データをキャッシュメモリ２８に転送し、格納する（Ｓ３２）。
【００２７】
図７は、領域確保空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。演算処理部２２が領域確保空間の論理アドレスによりメモリアクセスを行うと（Ｓ４２）、アドレス変換部２６は、当該論理アドレスを物理アドレスへ変換する（Ｓ４４）。領域確保空間の論理アドレスによりメモリアクセスが行われたか否かの判断は、アドレス変換部２６が行い、論理アドレスの上位４ビットが１６進数表現した場合に「０ｘ２」であるか否かにより判断される。論理アドレスから物理アドレスへの変換は、上述の通りである。
【００２８】
アドレス変換部２６は、当該物理アドレスに格納されているデータをキャッシュメモリ２８に要求する（Ｓ４６）。当該物理アドレスに対応するデータがキャッシュメモリ２８にある場合には（Ｓ４８でＹＥＳ）、処理を終了する。当該物理アドレスに対応するデータがキャッシュメモリ２８にない場合には（Ｓ４８でＮＯ）、キャッシュメモリ２８は、キャッシュメモリ２８に当該物理アドレスに対応するデータを格納するための領域（ブロック）を確保し（Ｓ５０）、処理を終了する。
【００２９】
図８は、図７に示した領域確保処理（Ｓ５０）を詳細に説明するフローチャートである。キャッシュメモリ２８のキャッシュコントローラ３４は、物理アドレス変換処理（図７のＳ４４）で求められた物理アドレスに格納されているデータが格納されるメモリ部３２内のブロックを特定する（Ｓ７２）。ここで、キャッシュメモリ２８は、ダイレクトマッピング方式に従い、データを記憶するものとする。したがって、物理アドレスが決まれば、メモリ部３２内のブロックは一意に特定される。なお、キャッシュメモリ２８のデータ記憶方法は、セットアソシアティブ方式であってもよいし、フルアソシアティブ方式であってもよい。この場合には、有効フラグ（対応するブロックに記憶されているデータが有効か否かを特定するためのデータ）が偽のブロックが優先的にメモリ部３２内のブロックとして特定される。
【００３０】
メモリ部３２内のブロックが特定された後、アドレス変換部２６は、当該ブロックに対応する有効フラグが真か否かを調べる（Ｓ７４）。有効フラグが偽の場合には（Ｓ７４でＮＯ）、当該ブロックを有効にするために、有効フラグを真にする（Ｓ８２）。その後、当該ブロックのタグ（物理アドレス）をセットし（Ｓ８２）、処理を終了する。
有効フラグが真の場合には（Ｓ７４でＹＥＳ）、キャッシュコントローラ３４は、当該ブロックに対応するダーティーフラグが真か否かを調べる（Ｓ７６）。ここで、ダーティーフラグとは、当該ブロックに記憶されているデータが記憶時とは異なる値に更新されているか否かを示すフラグである。すなわち、ダーティーフラグが真の場合には、当該ブロックに記憶されているデータと当該ブロックに対応するメモリ３０に記憶されているデータとが異なっていることを示している。このため、ダーティーフラグが真の場合には（Ｓ７６でＹＥＳ）、キャッシュコントローラ３４は、当該ブロックに記憶されているデータを対応するメモリ３０上の記憶領域に書き戻す処理（ライトバック）を実行する（Ｓ７８）。その後、キャッシュコントローラ３４は、当該ダーティーフラグを偽にし（Ｓ８０）、当該ブロックのタグをセットし（Ｓ８２）、処理を終了する。
【００３１】
有効フラグが真で、かつダーティーフラグが偽の場合には（Ｓ７４でＹＥＳ、かつＳ７６でＮＯ）、キャッシュコントローラ３４は、フラグの操作は行わず、当該ブロックに新たなタグをセットした後（Ｓ８４）、処理を終了する。
以上説明したようにして、キャッシュメモリ２８上にデータを格納するための領域が確保される。
【００３２】
図９は、アンキャッシャブル空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。演算処理部２２がアンキャッシャブル空間の論理アドレスによりメモリアクセスを行うと（Ｓ６２）、アドレス変換部２６は、当該論理アドレスを物理アドレスに変換する（Ｓ６４）。アンキャッシャブル空間の論理アドレスによりメモリアクセスが行われたか否かの判断は、アドレス変換部２６が行い、論理アドレスの上位４ビットが１６進表現した場合に「０ｘ３」であるか否かにより判断される。論理アドレスから物理アドレスへの変換は、上述の通りである。
【００３３】
アドレス変換部２６は、物理アドレスでメモリ３０にアクセスすることによりデータを要求する（Ｓ６６）。メモリ３０は、当該物理アドレスに格納されているデータを演算処理部２２に転送する（Ｓ６８）。
図１０は、値更新空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。演算処理部２２がデータを取得するまでの処理（Ｓ１２２〜Ｓ１３４）は、図５に示した、演算処理部２２がフェッチ空間の論理アドレスでメモリアクセスを行った場合の処理（Ｓ２〜Ｓ１４）と同様である。このため、その詳細な説明は繰返さない。演算処理部２２がデータを取得した後、キャッシュコントローラ３４は、加算器３６を使用して、当該データを所定値だけインクリメントし（Ｓ１３６）、処理を終了する。
【００３４】
図１１は、データ処理装置２０で実行される実行形式のプログラムを生成するコンパイラ装置の構成を示す図である。
コンパイラ装置４０は、Ｃ言語等の高級プログラミング言語で記述されたソースプログラム５２を、データ処理装置２０で実行可能な実行形式プログラム５４に変換する装置であり、ソースコード解析部４２と、データアクセス解析部４４と、論理アドレス決定部４６と、最適化部４８と、オブジェクトコード生成部５０とを備えている。
【００３５】
ソースコード解析部４２は、コンパイルの対象となるソースプログラム５２に対して、予約語（キーワード）等を抽出して軸解析した後、ソースプログラム５２の各ステートメントを一定規則に基づいて中間コードに変換する処理部である。
データアクセス解析部４４は、メモリアクセスされるデータの配置パターン等に基づいて、キャッシュミスを起こしやすいデータや位置等を解析する処理部である。データアクセス解析部４４の実行する処理については、本願の主題ではないため、その詳細な説明はここでは省略する。
【００３６】
論理アドレス決定部４６は、メモリアクセスされるデータが論理アドレス空間中のどのサブ空間に配置されるかを調べ、当該データの論理アドレスを決定する処理部である。論理アドレス決定部４６の実行する処理については、後述する。
最適化部４８は、論理アドレス決定処理以外の最適化処理を実行する処理部である。
オブジェクトコード生成部５０は、最適化された中間コードよりオブジェクトコードを生成し、各種ライブラリプログラム（図示せず）等とリンクすることにより、実行形式プログラム５４を生成する処理部である。
【００３７】
図１２は、論理アドレス決定部４６が実行する処理のフローチャートである。論理アドレス決定部４６は、中間コードに含まれるすべてのデータアクセスの各々について以下の処理を繰返す。まず、論理アドレス決定部４６は、当該アクセスに対して、論理アドレス空間のどのサブ空間を用いてアクセスするかについて、ユーザからの指定があるか否かを調べる（Ｓ９４）。ユーザからの指定としては、プラグマによる指定方法と、組み込み関数による指定方法とがある。
【００３８】
「プラグマ」とは、ソースプログラム５２中に記載されたコンパイラ装置４０に対する指示である。図１３は、プラグマによるデータのサブ空間が指定されたソースプログラムの一例を示す図である。
図１３（ａ）の「＃ｐｒａｇｍａ  ａ［４５］  ｆｅｔｃｈ＿ａｃｃｅｓｓ」は、「配列要素ａ［４５］へアクセスする際には、フェッチ空間の論理アドレスを用いてアクセスを行え」とのコンパイラ装置４０に対する指示である。
【００３９】
図１３（ｂ）の「＃ｐｒａｇｍａ  ａ  ｐｒｅｆｅｔｃｈ＿ａｃｃｅｓｓ」は、「配列ａへのアクセス時までに配列ａをキャッシュメモリ２８にプリフェッチせよ」とのコンパイラ装置４０に対する指示である。
図１３（ｃ）の「＃ｐｒａｇｍａ  ａ  ｂｏｏｋ＿ａｃｃｅｓｓ」は、「配列ａを格納するためのデータをキャッシュメモリ２８に予め確保せよ」とのコンパイラ装置４０に対する指示である。
【００４０】
図１３（ｄ）の「＃ｐｒａｇｍａ  ｚ  ｕｎｃａｃｈｅ＿ａｃｃｅｓｓ」は、「変数ｚへアクセスする際には、アンキャッシャブル空間の論理アドレスを用いてアクセスを行え」とのコンパイラ装置４０に対する指示である。
図１４は、組み込み関数によりデータのサブ空間が指定されたソースプログラムの一例を示す図である。図１４（ａ）の「ｐｒｅｆｅｔｃｈ（ａ［ｉ］）」は、配列要素ａ［ｉ］をプリフェッチする命令が記載された組み込み関数である。図１４（ｂ）の「ｂｏｏｋ（ａ［ｉ］）」は、配列要素ａ［ｉ］を格納するための領域をキャッシュメモリ２８上に確保する命令が記載された組み込み関数である。
【００４１】
図１５は、プラグマや組み込み関数などのユーザ指定がない場合のソースプログラムの一例を示す図である。図１５（ａ）は、変数ｓｕｍに配列要素ａ［４５］の値を代入する処理を示している。図１５（ｂ）は、変数ｓｕｍに配列ａの各要素を順次加算する処理を示している。図１５（ｃ）は、配列要素ａ［ｉ］にループカウンタｉの値を順次代入する処理を示している。
【００４２】
図１３または図１４に示したようなプラグマまたは組み込み関数によるユーザ指定がある場合には（Ｓ９４でＹＥＳ）、その指定に従った論理アドレスが用いられる（Ｓ９６）。例えば、図１３（ａ）に示すプラグマ指定に対し、配列要素ａ［４５］の物理アドレスが「０ｘ１２３４５６７」であったとすると、当該物理アドレスの先頭にフェッチ空間を示す４ビットのデータ「０ｘ０」を付加し、論理アドレス「０ｘ０１２３４５６７」を作成する。配列要素ａ［４５］にアクセスする際には、その論理アドレスが用いられることになる。
【００４３】
次に、必要であれば、論理アドレス決定部４６は、アクセスコードの挿入を実行する（Ｓ９８）。アクセスコードの挿入が行われるのは、プリフェッチ空間でのデータアクセスおよび領域確保空間でのデータアクセスの場合である。
例えば、図１３（ｂ）に示すように、プラグマによりプリフェッチ空間でのデータアクセスが指定された場合には、実際にデータアクセスが行われるまでにデータのプリフェッチを完了させなければならない。このため、メモリアクセスのレイテンシを考慮して、中間コードの最適な位置にプリフェッチ空間アクセスコードが挿入される。プリフェッチ空間アクセスコードの詳細な処理は、図６を参照して説明した通りである。
【００４４】
図１４（ａ）に示すように、組み込み関数によりプリフェッチ空間でのデータアクセスが指定された場合には、当該組み込み関数が記載された位置に対応する中間コードの位置にプリフェッチ空間アクセスコードが挿入される。したがって、プログラマがメモリアクセスのレイテンシを十分考慮したうえで、ソースプログラム５２中の組み込み関数の位置を決定しなければならない。
【００４５】
図１３（ｃ）に示すプラグマによる領域確保空間でのデータアクセス指定および図１４（ｂ）に示す組み込み関数による領域確保空間でのデータアクセス指定の場合も、プリフェッチ空間でのデータアクセス指定の場合と同様にして、領域確保空間アクセスコードが挿入される。領域確保空間アクセスコードの詳細な処理は、図７を参照して説明した通りである。
【００４６】
データアクセスについてのユーザ指定がない場合には（Ｓ９４でＮＯ）、論理アドレス決定部４６は、データアクセス解析部４４での解析結果に基づいて、当該データアクセスにおいて、キャッシュミスが発生するか否か調べる（Ｓ１００）。キャッシュミスが発生しない場合には（Ｓ１００でＮＯ）、当該データアクセスをフェッチ空間で行うように論理アドレスを生成し、当該論理アドレスでデータアクセスするようなコードを生成する（Ｓ１０２）。
【００４７】
キャッシュミスが発生する場合には（Ｓ１００でＹＥＳ）、論理アドレス決定部４６は、キャッシュミスを防ぐ必要があるか否かを判断する（Ｓ１０４）。例えば、この判断は、コンパイルオプション等に従うようにしてもよい。
キャッシュミスを防ぐ必要がある場合には（Ｓ１０４でＹＥＳ）、フェッチ空間を使用して当該データへのアクセスを行うようなコードを生成する（Ｓ１０６）。次に、論理アドレス決定部４６は、データアクセス解析部４４の解析結果に基づいて、そのデータが格納されている領域への書込みから開始する処理で用いられるか否かを調べる（Ｓ１０８）。すなわち、そのデータが参照されることなく、変更されるか否かを調べる。例えば、図１５（ｃ）に示す配列要素ａ［ｉ］のように、配列要素ａ［ｉ］の値は参照されることなく、変数ｉの値が書き込まれるので（Ｓ１０８でＹＥＳ）、アクセス前に当該データをキャッシュメモリ２８にプリフェッチする必要がない。このため、当該データへのアクセスが行われる前にキャッシュメモリ２８上に当該データを格納するための領域を確保する。このため、領域確保空間アクセスコードが挿入される。領域確保空間アクセスコードが挿入される位置は、メモリアクセスのレイテンシを考慮して定められる。なお、領域確保空間アクセスコードの詳細な処理は、図７を参照して説明した通りである。
【００４８】
アクセスされるデータが書込みから開始する処理以外で用いられる場合（例えば、図１５（ｂ）に示す配列要素ａ［ｉ］）には（Ｓ１０８でＮＯ）、高速にデータアクセスを行うために、アクセス前に当該データをキャッシュメモリ２８にプリフェッチする。このため、プリフェッチ空間アクセスコードが挿入される。プリフェッチ空間アクセスコードが挿入される位置は、メモリアクセスのレイテンシを考慮して定められ、実際にデータがアクセスされる時点では、プリフェッチが完了しているような位置に挿入される。なお、プリフェッチ空間アクセスコードの詳細な説明は、図６を参照して説明した通りである。
【００４９】
キャッシュミスを防ぐ必要がない場合には（Ｓ１０４でＮＯ）、論理アドレス決定部４６は、データアクセス解析部４４の解析結果に基づいて、着目しているデータをキャッシュメモリ２８に格納する必要があるか否かを判断する（Ｓ１１４）。例えば、当該データをキャッシュメモリ２８に格納することにより、頻繁に使われるデータが追い出され、キャッシュミスを引き起こすような場合や、１回しか使用されないようなデータ（例えば、図１５（ａ）に示した配列要素ａ［４５］）の場合には、当該データをキャッシュメモリ２８に格納する必要がないと判断し、それ以外の場合にはキャッシュメモリ２８に格納する必要があると判断してもよい。
【００５０】
着目しているデータをキャッシュメモリ２８に格納する必要があると判断した場合には（Ｓ１１４でＹＥＳ）、当該データを論理アドレス空間のフェッチ空間を利用してアクセスするようなコードを生成する（Ｓ１１８）。すなわち、物理アドレスの先頭にフェッチ空間を示す４ビットのデータ「０ｘ０」を付加し、論理アドレスを生成する。
着目しているデータをキャッシュメモリ２８に格納する必要がないと判断した場合には（Ｓ１１４でＮＯ）、当該データを論理空間のアンキャッシャブル空間を利用してアクセスするようなコードを生成する（Ｓ１１６）。すなわち、物理アドレスの先頭にアンキャッシャブル空間を示す４ビットのデータ「０ｘ３」を付加し、論理アドレスを生成する。
【００５１】
論理アドレス決定部４６は、以上の処理（Ｓ９４〜Ｓ１１８）をすべてのデータアクセスについて実行し（ループ１）、処理を終了する。
以上説明したように、本発明の実施の形態によると、物理アドレスに空間判定ビットが付された論理アドレスによりデータへのアクセスが行われる。このため、データアクセスに所定の処理を付加させることができる。例えば、上述したように、データアクセスに先立ってデータをキャッシュメモリにプリフェッチしたりすることができる。このため、キャッシュメモリを効率的に使用することができるようになる。
【００５２】
また、そのようなデータ処理装置で実行される機械語プログラムを生成するコンパイラ装置を提供することもできる。
なお、以上説明した実施の形態は本発明の一例にすぎず、本発明は上述の実施の形態に限定されるものではない。
例えば、上述の論理アドレス空間のサブ空間は一例にすぎず、他の処理を実行させるようにしてもよい。例えば、「値更新空間」における値更新の方法は、加算のみに限られるものではなく、減算、乗算および除算等の四則演算であってもよいし、論理演算であってもよい。また、より複雑な処理を実行し、値を更新するようにしてもよい。
【００５３】
また、サブ空間にアクセスすることにより、データ処理装置が備える他のハードウェアに対する実行指示を行うようにしてもよい。例えば、サブ空間の一例として「ハードウェアＡへの指示空間」を設けてもよい。このサブ空間の論理アドレスを用いてデータにアクセスした場合には、当該データをキャッシュメモリ２８またはメモリ３０より読み出して、ハードウェアＡに転送する。ハードウェアＡは、当該データの転送をトリガとして処理を開始する。なお、その際に、ハードウェアＡが当該データを用いて所定の処理をするようにしてもよい。また、サブ空間の他の一例として「ハードウェアＢへの指示空間」を設けてもよい。このサブ空間の論理アドレスを用いてデータにアクセスした場合には、当該データへのアクセスをトリガとして、ハードウェアＢは所定の処理を開始する。
【産業上の利用可能性】
【００５４】
本発明は、キャッシュメモリを有するプロセッサ等に適用できる。
【図面の簡単な説明】
【００５５】
【図１】本発明の実施の形態に係るデータ処理装置の外観図である。
【図２】図１に示すデータ処理装置の主要なハードウェア構成を示す図である。
【図３】論理アドレスのビット構成を示す図である。
【図４】論理アドレス空間と物理アドレス空間との対応関係を説明するための図である。
【図５】フェッチ空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。
【図６】プリフェッチ空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。
【図７】領域確保空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。
【図８】図７に示した領域確保処理（Ｓ５０）を詳細に説明するフローチャートである。
【図９】アンキャッシャブル空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。
【図１０】値更新空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。
【図１１】データ処理装置２０で実行される実行形式のプログラムを生成するコンパイラ装置の構成を示す図である。
【図１２】論理アドレス決定部４６が実行する処理のフローチャートである。
【図１３】プラグマによるデータのサブ空間が指定されたソースプログラムの一例を示す図である。
【図１４】組み込み関数によりデータのサブ空間が指定されたソースプログラムの一例を示す図である。
【図１５】プラグマや組み込み関数などのユーザ指定がない場合のソースプログラムの一例を示す図である。
【符号の説明】
【００５６】
２０  データ処理装置
２２  演算処理部
２４  メモリ管理部
２６  アドレス変換部
２８  キャッシュメモリ
３０  メモリ
３２  メモリ部
３４  キャッシュコントローラ
３６  加算器
【図１】
2005190161.tif 000003
【図２】
2005190161.tif 000004
【図３】
2005190161.tif 000005
【図４】
2005190161.tif 000006
【図５】
2005190161.tif 000007
【図６】
2005190161.tif 000008
【図７】
2005190161.tif 000009
【図８】
2005190161.tif 000010
【図９】
2005190161.tif 000011
【図１０】
2005190161.tif 000012
【図１１】
2005190161.tif 000013
【図１２】
2005190161.tif 000014
【図１３】
2005190161.tif 000015
【図１４】
2005190161.tif 000016
【図１５】
2005190161.tif 000017