JP2005190161A - データ処理装置およびコンパイラ装置 - Google Patents

データ処理装置およびコンパイラ装置 Download PDF

Info

Publication number
JP2005190161A
JP2005190161A JP2003430546A JP2003430546A JP2005190161A JP 2005190161 A JP2005190161 A JP 2005190161A JP 2003430546 A JP2003430546 A JP 2003430546A JP 2003430546 A JP2003430546 A JP 2003430546A JP 2005190161 A JP2005190161 A JP 2005190161A
Authority
JP
Japan
Prior art keywords
data
instruction
memory
logical address
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2003430546A
Other languages
English (en)
Inventor
Shohei Domoto
昌平 道本
Takehito Heiji
岳人 瓶子
Hazuki Okabayashi
はづき 岡林
Hajime Ogawa
一 小川
Kiyoshi Nakajima
聖志 中島
Ryuta Nakanishi
龍太 中西
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2003430546A priority Critical patent/JP2005190161A/ja
Priority to US10/995,148 priority patent/US20050144420A1/en
Priority to CNB2004100615888A priority patent/CN1326036C/zh
Publication of JP2005190161A publication Critical patent/JP2005190161A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】 キャッシュメモリの効率的な利用を図ることができるデータ処理装置を提供する。
【解決手段】 物理アドレスで定められる領域ごとに、命令またはデータを格納するキャッシュメモリ28およびメモリ30と、前記物理アドレスと予め定められた処理を示す処理判定データとを含む論理アドレスを出力し、当該論理アドレスに含まれる前記物理アドレスに対応する前記命令または前記データを取得し、かつ当該命令を実行する演算処理部22と、前記演算処理部22が出力する論理アドレスを前記物理アドレスに変換するアドレス変換部26とを備え、前記キャッシュメモリ28およびメモリ30は、前記物理アドレスで定められる領域に格納されている前記命令または前記データを読み出すとともに、前記処理判定データに基づいて定められる処理を実行する。
【選択図】 図2

Description

本発明は、データ処理装置およびコンパイラ装置に関し、特に、キャッシュメモリを備えるデータ処理装置および当該データ処理装置で実行される機械語プログラムを生成するコンパイラ装置に関する。
キャッシュメモリを備えるデータ処理装置(コンピュータ)では、キャッシュメモリのヒット率を向上させるために各種の工夫がなされている。
例えば、従来のキャッシュメモリを備えたデータ処理装置では、2次元配列データをタイル状に区切り、各タイルに対応する配列ごとに演算を行う方法が提案されている(例えば、特許文献1参照。)。この方法では、データの空間的局所性を利用しているため、キャッシュメモリのヒット率を向上させることができる。
特開平8−297605号公報
しかしながら、特許文献1に記載のデータ処理装置は、2次元配列データを対象としているため、それ以外のデータアクセスに対しては適用できない。このため、キャッシュメモリの効率的な利用を必ずしも図ることができないという課題がある。
本発明は、上述の課題を解決するためになされたもので、2次元配列データ以外についてもキャッシュメモリの効率的な利用を図ることができるデータ処理装置を提供することを第1の目的とする。
また、2次元配列データ以外についてもキャッシュメモリの効率的な利用を図ることができるデータ処理装置で実行される機械語プログラムを生成するコンパイラ装置を提供することを第2の目的とする。
上記目的を達成するために、本発明に係るデータ処理装置は、物理アドレスで定められる領域ごとに、命令またはデータを格納する格納手段と、前記物理アドレスと予め定められた処理を示す処理判定データとを含む論理アドレスを出力し、当該論理アドレスに含まれる前記物理アドレスに対応する前記命令または前記データを取得し、かつ当該命令を実行する命令実行手段と、前記命令実行手段が出力する論理アドレスを前記物理アドレスに変換するアドレス変換手段とを備え、前記格納手段は、前記物理アドレスで定められる領域に格納されている前記命令または前記データを読み出すとともに、前記処理判定データに基づいて定められる処理を実行する。
論理アドレスには、物理アドレスの他に処理を示す処理判定データが含まれる。命令またはデータを含む格納手段は、当該処理判定データに基づいて定められる処理を実行する。このため、データ等の格納手段を効率的に利用することができるようになる。
例えば、前記格納手段は、前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納するメモリと、前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納し、かつ前記メモリよりも高速にデータの読出しおよび書込みが可能なキャッシュメモリと、前記処理判定データに基づいて定められる処理を実行する処理実行部とを有し、前記論理アドレスの前記処理判定データには、前記メモリに格納されている前記命令または前記データをプリフェッチして、前記キャッシュメモリに格納する処理に対応するプリフェッチ対応データが含まれ、前記命令実行手段により、前記プリフェッチ判定データが含まれる前記論理アドレスへのアクセスが行われる場合には、前記処理実行部は、前記アドレス変換手段により出力される前記物理アドレスにより特定される前記メモリの格納領域に格納されている前記命令または前記データをプリフェッチし、前記キャッシュメモリに格納する。
このようにすることにより、データをキャッシュメモリにプリフェッチするか否かを論理アドレスにより判断することができる。このため、高速なデータアクセスが可能となるとともに、キャッシュメモリを効率的に利用可能となる。
本発明の他の局面に係るコンパイラ装置は、高級プログラミング言語で記述されたソースプログラムを機械語プログラムに変換するコンパイラ装置であって、前記ソースプログラムに含まれるソースコードを中間コードに変換する中間コード変換手段と、前記中間コードを最適化する最適化手段と、最適化された前記中間コードを機械語命令に変換するコード生成手段とを備え、前記最適化手段は、前記中間コードに基づいて、データへのアクセス時に用いられる物理アドレスに所定の処理を示す処理判定データを付加した論理アドレスを生成する論理アドレス生成部と、前記論理アドレスを用いて前記データをアクセスする中間コードを生成する中間コード生成部とを有する。
論理アドレスには、物理アドレスの他に所定の処理を示す処理判定データが含まれる。コンパイラ装置は、論理アドレスを用いてデータをアクセスする中間コードを生成する。そのため、データへのアクセス時に、合わせて所定の処理を実行させることができるようになる。
例えば、前記処理判定データには、メモリに格納されているデータをプリフェッチして、キャッシュメモリに格納する処理に対応するプリフェッチ判定データが含まれ、上述のコンパイラ装置は、さらに、キャッシュミスを起こすデータおよび当該データの配置位置を解析する解析手段を備え、前記論理アドレス生成部は、前記中間コードに含まれる前記データのアクセスごとに、前記解析手段での解析結果に基づいて、アクセスされるデータを、アクセス時までに予め前記キャッシュメモリに格納する必要があるか否かを判断するプリフェッチ判断部と、前記プリフェッチ判断部の判断結果に基づいて、前記データをアクセス時までに予め前記キャッシュメモリに格納する必要があると判断した場合には、当該データの論理アドレスに前記プリフェッチ判定データを付加した論理アドレスを生成するプリフェッチ判定データ付加部とを含む。
このようにすることにより、データアクセス時までにプリフェッチを行うような処理を合わせて実行させることができる。このため、キャッシュメモリの効率的な利用を図ることができる。また、当該処理を実行するデータ処理装置で実行される機械語プログラムを生成することができる。
なお、本発明は、このような特徴的な命令を実行するデータ処理装置や特徴的な命令を生成するコンパイラ装置として実現することができるだけでなく、当直的な命令を含むプログラムとして実現したり、コンパイラ装置に含まれる特徴的な手段をステップとするコンパイル方法として実現したり、当該方法をコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM等の記録媒体やインターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
本発明によると、キャッシュメモリの効率的な利用を図ることができるデータ処理装置を提供することができる。
また、キャッシュメモリの効率的な利用を図ることができるデータ処理装置で実行される機械語プログラムを生成するコンパイラ装置を提供することができる。
本発明の実施の形態に係るデータ処理装置について図面を参照しながら説明する。
図1は、データ処理装置の外観図である。図2は、図1に示すデータ処理装置の主要なハードウェア構成を示す図である。データ処理装置20は、実行形式のプログラムに従って処理を実行する装置であり、演算処理部22と、メモリ管理部24とを備えている。
演算処理部22は、メモリ管理部24との間でデータ(上述のプログラムを含む)のやり取りを行い、上述のプログラムに従い演算処理を行う処理部である。演算処理部22は、アドレスバスA1を介して後述する32ビットの論理アドレスでメモリ管理部24にアクセスし、データバスD1またはD2を介してメモリ管理部24よりデータを読み出したり、メモリ管理部24にデータを書き込んだりする。
メモリ管理部24は、データを記憶するための各種メモリを管理する処理部であり、アドレス変換部26と、キャッシュメモリ28と、メモリ30とを備えている。
アドレス変換部26は、アドレスバスA1を介して演算処理部22より受取った32ビットの論理アドレスを後述する28ビットの物理アドレスに変換する処理部である。また、アドレス変換部26は、アドレスバスA2およびA3を介して当該物理アドレスでキャッシュメモリ28およびメモリ30にそれぞれアクセスする。さらに、アドレス変換部26は、キャッシュメモリ28を制御する制御信号を、制御信号バスC1を介してキャッシュメモリ28に送信する。
キャッシュメモリ28は、メモリ30よりも高速な記憶装置であり、データを記憶するメモリ部32と、キャッシュメモリ28の各種制御を行なうキャッシュコントローラ34と、加算器36とを備えている。キャッシュコントローラ34は、アドレスバスA4を介してメモリ30にアクセスし、データバスD3を介してメモリ30にデータを書き込んだり、メモリ30よりデータを読み出したりする。
メモリ30は、データを記憶するための記憶装置である。メモリ30に記憶されている各バイトデータは、28ビットの物理アドレスにより指定される。このため、メモリ30は、256メガ(=228)バイトの記憶容量を有する。
図3は、論理アドレスのビット構成を示す図である。論理アドレスは上述のように32ビットからなり、下位28ビットが物理アドレスに相当し、上位4ビット(以下「空間判定ビット」という。)が後述する空間判定に用いられる。すなわち、論理アドレスを16進数表現した場合「0x00000000」〜「0xFFFFFFFF」の範囲の値で示される。このうち、上位1桁が空間判定に用いられる。よって、最大16個の空間を定義することが可能である。
図4は、論理アドレス空間と物理アドレス空間との対応関係を説明するための図である。論理アドレス空間は、16個のサブ空間に分けられ、各サブ空間は空間判定ビットにより指定される。各サブ空間の記憶容量はメモリ30の記憶容量と同じ256メガバイトである。したがって、論理アドレス空間で指定可能なデータのサイズは、4ギガ(=16×256メガ)バイトである。
各サブ空間は、物理アドレス空間と一対一に対応付けられており、上述のように論理アドレスの下位28ビットが物理アドレスに対応付けられている。図4に示されるように、例えば、論理アドレス「0x0CCCCCCC」で示されるデータ64(変数a)にアクセスすることは、メモリ30の物理アドレス「0xCCCCCCC」に格納されているデータ74(変数a)にアクセスすることを意味する。ただし、各サブ空間は、その空間ごとに処理が対応付けられている。図中には、サブ空間の一例として「フェッチ空間」、「プリフェッチ空間」、「領域確保空間」、「アンキャッシャブル空間」および「値更新空間」が示されている。
「フェッチ空間」の論理アドレスは、「0x00000000〜0x0FFFFFFF」である。「プリフェッチ空間」の論理アドレスは、「0x10000000〜0x1FFFFFFF」である。「領域確保空間」の論理アドレスは「0x20000000」〜「0x2FFFFFFF」である。「アンキャッシャブル空間」の論理アドレスは「0x30000000」〜「0x3FFFFFFF」である。「値更新空間」の論理アドレスは「0xF0000000〜0xFFFFFFFF」である。すなわち、論理アドレスの先頭4ビットでサブ空間の違いを示している。
「フェッチ空間」とは、キャッシュメモリを備える通常のデータ処理装置におけるメモリアクセスと同様の処理を行うために使用される論理アドレス空間である。例えば、演算処理部22が「フェッチ空間」の論理アドレス「0x0CCCCCCC」で示されるデータ64(変数a)にアクセスすると、キャッシュメモリ28に変数aが記憶されている場合にはキャッシュメモリ28より、変数aが演算処理部22に転送される。キャッシュメモリ28に変数aが記憶されていない場合には、メモリ30の物理アドレス「0xCCCCCCC」に格納されているデータ74(変数a)がキャッシュメモリ28に転送された後に、当該データが演算処理部22に転送される。
「プリフェッチ空間」とは、所望のデータを予めキャッシュメモリ28にプリフェッチするために使用される論理アドレス空間である。例えば、演算処理部22が「プリフェッチ空間」の論理アドレス「0x1CCCCCCC」で示されるデータ66(変数a)にアクセスすると、メモリ30の物理アドレス「0xCCCCCCC」に格納されているデータ74(変数a)がキャッシュメモリ28にプリフェッチされる。
「領域確保空間」とは、所望のデータを格納するための領域をキャッシュメモリ28上に確保するために使用される論理アドレス空間である。領域確保空間は、値の書込みから始まる処理で使用されるデータへのアクセスで使用される。当該データは、予めキャッシュメモリ28にプリフェッチをしたとしても、そのデータがすぐに書換えられてしまう。このため、キャッシュメモリ28上にデータをプリフェッチせずに、領域の確保のみが行われる。例えば、演算処理部22が「領域確保空間」の論理アドレス「0x2CCCCCCC」で示されるデータ68(変数a)にアクセスすると、メモリ30の物理アドレス「0xCCCCCCC」に格納されているデータ74(変数a)がキャッシュメモリ28に格納されることなく、キャッシュメモリ28上に変数aを格納するための領域が確保される。なお、当該領域は、メモリ30の物理アドレス「0xCCCCCCC」と対応付けられている。
「アンキャッシャブル空間」とは、所望のデータをキャッシュメモリ28を介さずにメモリ30から直接読み出したり、メモリ30に直接書き込んだりする際に使用される論理アドレス空間である。例えば、演算処理部22が「アンキャッシャブル空間」の論理アドレス「0x3CCCCCCC」で示されるデータ70(変数a)にアクセスすると、メモリ30の物理アドレス「0xCCCCCCC」に格納されているデータ74(変数a)はキャッシュメモリ28に格納されることなく、演算処理部22へ転送される。
「値更新空間」とは、所望のデータへのアクセス後に当該データを何らかの規則に従い更新するために使用される論理アドレス空間である。例えば、演算処理部22が「値更新空間」の論理アドレス「0xFCCCCCCC」を用いてデータ72(変数a)にアクセスすると、「フェッチ空間」と同様の動きが実行される。その後、キャッシュメモリ28に格納されている変数aの値が予め設定された値だけ加算される。
図5は、フェッチ空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。演算処理部22がフェッチ空間の論理アドレスによりメモリアクセスを行うと(S2)、アドレス変換部26は、当該論理アドレスを物理アドレスへ変換する(S4)。フェッチ空間の論理アドレスによりメモリアクセスが行われたか否かの判断は、アドレス変換部26が行い、論理アドレスの上位4ビットが16進数表現した場合に「0x0」であるか否かにより判断される。また、論理アドレスから物理アドレスへの変換は、論理アドレスの下位28ビットを抽出することにより行われる。
アドレス変換部26は、当該物理アドレスに格納されているデータをキャッシュメモリ28に要求する(S6)。当該物理アドレスに対応するデータがキャッシュメモリ28にある場合には(S8でYES)、キャッシュメモリ28は、当該データを演算処理部22に転送する。当該物理アドレスに対応するデータがキャッシュメモリにない場合には(S8でNO)、キャッシュメモリ28は、メモリ30に対して当該物理アドレスに格納されているデータを要求し(S10)、当該データをキャッシュメモリ28に転送し、格納する(S12)。その後、キャッシュメモリ28は、そのデータを演算処理部22に転送する(S14)。
図6は、プリフェッチ空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。演算処理部22がプリフェッチ空間の論理アドレスによりメモリアクセスを行うと(S22)、アドレス変換部26は、当該論理アドレスを物理アドレスに変換する(S24)。プリフェッチ空間の論理アドレスによりメモリアクセスが行われたか否かの判断は、アドレス変換部26が行い、論理アドレスの上位4ビットが16進数表現した場合に「0x1」であるか否かにより判断される。論理アドレスから物理アドレスへの変換は、上述の通りである。
アドレス変換部26は、当該物理アドレスに格納されているデータをキャッシュメモリ28に要求する(S26)。当該物理アドレスに対応するデータがキャッシュメモリ28にある場合には(S28でYES)、処理を終了する。当該物理アドレスに対応するデータがキャッシュメモリ28にない場合には(S28でNO)、キャッシュメモリ28は、メモリ30に対して当該物理アドレスに格納されているデータを要求し(S30)、当該データをキャッシュメモリ28に転送し、格納する(S32)。
図7は、領域確保空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。演算処理部22が領域確保空間の論理アドレスによりメモリアクセスを行うと(S42)、アドレス変換部26は、当該論理アドレスを物理アドレスへ変換する(S44)。領域確保空間の論理アドレスによりメモリアクセスが行われたか否かの判断は、アドレス変換部26が行い、論理アドレスの上位4ビットが16進数表現した場合に「0x2」であるか否かにより判断される。論理アドレスから物理アドレスへの変換は、上述の通りである。
アドレス変換部26は、当該物理アドレスに格納されているデータをキャッシュメモリ28に要求する(S46)。当該物理アドレスに対応するデータがキャッシュメモリ28にある場合には(S48でYES)、処理を終了する。当該物理アドレスに対応するデータがキャッシュメモリ28にない場合には(S48でNO)、キャッシュメモリ28は、キャッシュメモリ28に当該物理アドレスに対応するデータを格納するための領域(ブロック)を確保し(S50)、処理を終了する。
図8は、図7に示した領域確保処理(S50)を詳細に説明するフローチャートである。キャッシュメモリ28のキャッシュコントローラ34は、物理アドレス変換処理(図7のS44)で求められた物理アドレスに格納されているデータが格納されるメモリ部32内のブロックを特定する(S72)。ここで、キャッシュメモリ28は、ダイレクトマッピング方式に従い、データを記憶するものとする。したがって、物理アドレスが決まれば、メモリ部32内のブロックは一意に特定される。なお、キャッシュメモリ28のデータ記憶方法は、セットアソシアティブ方式であってもよいし、フルアソシアティブ方式であってもよい。この場合には、有効フラグ(対応するブロックに記憶されているデータが有効か否かを特定するためのデータ)が偽のブロックが優先的にメモリ部32内のブロックとして特定される。
メモリ部32内のブロックが特定された後、アドレス変換部26は、当該ブロックに対応する有効フラグが真か否かを調べる(S74)。有効フラグが偽の場合には(S74でNO)、当該ブロックを有効にするために、有効フラグを真にする(S82)。その後、当該ブロックのタグ(物理アドレス)をセットし(S82)、処理を終了する。
有効フラグが真の場合には(S74でYES)、キャッシュコントローラ34は、当該ブロックに対応するダーティーフラグが真か否かを調べる(S76)。ここで、ダーティーフラグとは、当該ブロックに記憶されているデータが記憶時とは異なる値に更新されているか否かを示すフラグである。すなわち、ダーティーフラグが真の場合には、当該ブロックに記憶されているデータと当該ブロックに対応するメモリ30に記憶されているデータとが異なっていることを示している。このため、ダーティーフラグが真の場合には(S76でYES)、キャッシュコントローラ34は、当該ブロックに記憶されているデータを対応するメモリ30上の記憶領域に書き戻す処理(ライトバック)を実行する(S78)。その後、キャッシュコントローラ34は、当該ダーティーフラグを偽にし(S80)、当該ブロックのタグをセットし(S82)、処理を終了する。
有効フラグが真で、かつダーティーフラグが偽の場合には(S74でYES、かつS76でNO)、キャッシュコントローラ34は、フラグの操作は行わず、当該ブロックに新たなタグをセットした後(S84)、処理を終了する。
以上説明したようにして、キャッシュメモリ28上にデータを格納するための領域が確保される。
図9は、アンキャッシャブル空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。演算処理部22がアンキャッシャブル空間の論理アドレスによりメモリアクセスを行うと(S62)、アドレス変換部26は、当該論理アドレスを物理アドレスに変換する(S64)。アンキャッシャブル空間の論理アドレスによりメモリアクセスが行われたか否かの判断は、アドレス変換部26が行い、論理アドレスの上位4ビットが16進表現した場合に「0x3」であるか否かにより判断される。論理アドレスから物理アドレスへの変換は、上述の通りである。
アドレス変換部26は、物理アドレスでメモリ30にアクセスすることによりデータを要求する(S66)。メモリ30は、当該物理アドレスに格納されているデータを演算処理部22に転送する(S68)。
図10は、値更新空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。演算処理部22がデータを取得するまでの処理(S122〜S134)は、図5に示した、演算処理部22がフェッチ空間の論理アドレスでメモリアクセスを行った場合の処理(S2〜S14)と同様である。このため、その詳細な説明は繰返さない。演算処理部22がデータを取得した後、キャッシュコントローラ34は、加算器36を使用して、当該データを所定値だけインクリメントし(S136)、処理を終了する。
図11は、データ処理装置20で実行される実行形式のプログラムを生成するコンパイラ装置の構成を示す図である。
コンパイラ装置40は、C言語等の高級プログラミング言語で記述されたソースプログラム52を、データ処理装置20で実行可能な実行形式プログラム54に変換する装置であり、ソースコード解析部42と、データアクセス解析部44と、論理アドレス決定部46と、最適化部48と、オブジェクトコード生成部50とを備えている。
ソースコード解析部42は、コンパイルの対象となるソースプログラム52に対して、予約語(キーワード)等を抽出して軸解析した後、ソースプログラム52の各ステートメントを一定規則に基づいて中間コードに変換する処理部である。
データアクセス解析部44は、メモリアクセスされるデータの配置パターン等に基づいて、キャッシュミスを起こしやすいデータや位置等を解析する処理部である。データアクセス解析部44の実行する処理については、本願の主題ではないため、その詳細な説明はここでは省略する。
論理アドレス決定部46は、メモリアクセスされるデータが論理アドレス空間中のどのサブ空間に配置されるかを調べ、当該データの論理アドレスを決定する処理部である。論理アドレス決定部46の実行する処理については、後述する。
最適化部48は、論理アドレス決定処理以外の最適化処理を実行する処理部である。
オブジェクトコード生成部50は、最適化された中間コードよりオブジェクトコードを生成し、各種ライブラリプログラム(図示せず)等とリンクすることにより、実行形式プログラム54を生成する処理部である。
図12は、論理アドレス決定部46が実行する処理のフローチャートである。論理アドレス決定部46は、中間コードに含まれるすべてのデータアクセスの各々について以下の処理を繰返す。まず、論理アドレス決定部46は、当該アクセスに対して、論理アドレス空間のどのサブ空間を用いてアクセスするかについて、ユーザからの指定があるか否かを調べる(S94)。ユーザからの指定としては、プラグマによる指定方法と、組み込み関数による指定方法とがある。
「プラグマ」とは、ソースプログラム52中に記載されたコンパイラ装置40に対する指示である。図13は、プラグマによるデータのサブ空間が指定されたソースプログラムの一例を示す図である。
図13(a)の「#pragma a[45] fetch_access」は、「配列要素a[45]へアクセスする際には、フェッチ空間の論理アドレスを用いてアクセスを行え」とのコンパイラ装置40に対する指示である。
図13(b)の「#pragma a prefetch_access」は、「配列aへのアクセス時までに配列aをキャッシュメモリ28にプリフェッチせよ」とのコンパイラ装置40に対する指示である。
図13(c)の「#pragma a book_access」は、「配列aを格納するためのデータをキャッシュメモリ28に予め確保せよ」とのコンパイラ装置40に対する指示である。
図13(d)の「#pragma z uncache_access」は、「変数zへアクセスする際には、アンキャッシャブル空間の論理アドレスを用いてアクセスを行え」とのコンパイラ装置40に対する指示である。
図14は、組み込み関数によりデータのサブ空間が指定されたソースプログラムの一例を示す図である。図14(a)の「prefetch(a[i])」は、配列要素a[i]をプリフェッチする命令が記載された組み込み関数である。図14(b)の「book(a[i])」は、配列要素a[i]を格納するための領域をキャッシュメモリ28上に確保する命令が記載された組み込み関数である。
図15は、プラグマや組み込み関数などのユーザ指定がない場合のソースプログラムの一例を示す図である。図15(a)は、変数sumに配列要素a[45]の値を代入する処理を示している。図15(b)は、変数sumに配列aの各要素を順次加算する処理を示している。図15(c)は、配列要素a[i]にループカウンタiの値を順次代入する処理を示している。
図13または図14に示したようなプラグマまたは組み込み関数によるユーザ指定がある場合には(S94でYES)、その指定に従った論理アドレスが用いられる(S96)。例えば、図13(a)に示すプラグマ指定に対し、配列要素a[45]の物理アドレスが「0x1234567」であったとすると、当該物理アドレスの先頭にフェッチ空間を示す4ビットのデータ「0x0」を付加し、論理アドレス「0x01234567」を作成する。配列要素a[45]にアクセスする際には、その論理アドレスが用いられることになる。
次に、必要であれば、論理アドレス決定部46は、アクセスコードの挿入を実行する(S98)。アクセスコードの挿入が行われるのは、プリフェッチ空間でのデータアクセスおよび領域確保空間でのデータアクセスの場合である。
例えば、図13(b)に示すように、プラグマによりプリフェッチ空間でのデータアクセスが指定された場合には、実際にデータアクセスが行われるまでにデータのプリフェッチを完了させなければならない。このため、メモリアクセスのレイテンシを考慮して、中間コードの最適な位置にプリフェッチ空間アクセスコードが挿入される。プリフェッチ空間アクセスコードの詳細な処理は、図6を参照して説明した通りである。
図14(a)に示すように、組み込み関数によりプリフェッチ空間でのデータアクセスが指定された場合には、当該組み込み関数が記載された位置に対応する中間コードの位置にプリフェッチ空間アクセスコードが挿入される。したがって、プログラマがメモリアクセスのレイテンシを十分考慮したうえで、ソースプログラム52中の組み込み関数の位置を決定しなければならない。
図13(c)に示すプラグマによる領域確保空間でのデータアクセス指定および図14(b)に示す組み込み関数による領域確保空間でのデータアクセス指定の場合も、プリフェッチ空間でのデータアクセス指定の場合と同様にして、領域確保空間アクセスコードが挿入される。領域確保空間アクセスコードの詳細な処理は、図7を参照して説明した通りである。
データアクセスについてのユーザ指定がない場合には(S94でNO)、論理アドレス決定部46は、データアクセス解析部44での解析結果に基づいて、当該データアクセスにおいて、キャッシュミスが発生するか否か調べる(S100)。キャッシュミスが発生しない場合には(S100でNO)、当該データアクセスをフェッチ空間で行うように論理アドレスを生成し、当該論理アドレスでデータアクセスするようなコードを生成する(S102)。
キャッシュミスが発生する場合には(S100でYES)、論理アドレス決定部46は、キャッシュミスを防ぐ必要があるか否かを判断する(S104)。例えば、この判断は、コンパイルオプション等に従うようにしてもよい。
キャッシュミスを防ぐ必要がある場合には(S104でYES)、フェッチ空間を使用して当該データへのアクセスを行うようなコードを生成する(S106)。次に、論理アドレス決定部46は、データアクセス解析部44の解析結果に基づいて、そのデータが格納されている領域への書込みから開始する処理で用いられるか否かを調べる(S108)。すなわち、そのデータが参照されることなく、変更されるか否かを調べる。例えば、図15(c)に示す配列要素a[i]のように、配列要素a[i]の値は参照されることなく、変数iの値が書き込まれるので(S108でYES)、アクセス前に当該データをキャッシュメモリ28にプリフェッチする必要がない。このため、当該データへのアクセスが行われる前にキャッシュメモリ28上に当該データを格納するための領域を確保する。このため、領域確保空間アクセスコードが挿入される。領域確保空間アクセスコードが挿入される位置は、メモリアクセスのレイテンシを考慮して定められる。なお、領域確保空間アクセスコードの詳細な処理は、図7を参照して説明した通りである。
アクセスされるデータが書込みから開始する処理以外で用いられる場合(例えば、図15(b)に示す配列要素a[i])には(S108でNO)、高速にデータアクセスを行うために、アクセス前に当該データをキャッシュメモリ28にプリフェッチする。このため、プリフェッチ空間アクセスコードが挿入される。プリフェッチ空間アクセスコードが挿入される位置は、メモリアクセスのレイテンシを考慮して定められ、実際にデータがアクセスされる時点では、プリフェッチが完了しているような位置に挿入される。なお、プリフェッチ空間アクセスコードの詳細な説明は、図6を参照して説明した通りである。
キャッシュミスを防ぐ必要がない場合には(S104でNO)、論理アドレス決定部46は、データアクセス解析部44の解析結果に基づいて、着目しているデータをキャッシュメモリ28に格納する必要があるか否かを判断する(S114)。例えば、当該データをキャッシュメモリ28に格納することにより、頻繁に使われるデータが追い出され、キャッシュミスを引き起こすような場合や、1回しか使用されないようなデータ(例えば、図15(a)に示した配列要素a[45])の場合には、当該データをキャッシュメモリ28に格納する必要がないと判断し、それ以外の場合にはキャッシュメモリ28に格納する必要があると判断してもよい。
着目しているデータをキャッシュメモリ28に格納する必要があると判断した場合には(S114でYES)、当該データを論理アドレス空間のフェッチ空間を利用してアクセスするようなコードを生成する(S118)。すなわち、物理アドレスの先頭にフェッチ空間を示す4ビットのデータ「0x0」を付加し、論理アドレスを生成する。
着目しているデータをキャッシュメモリ28に格納する必要がないと判断した場合には(S114でNO)、当該データを論理空間のアンキャッシャブル空間を利用してアクセスするようなコードを生成する(S116)。すなわち、物理アドレスの先頭にアンキャッシャブル空間を示す4ビットのデータ「0x3」を付加し、論理アドレスを生成する。
論理アドレス決定部46は、以上の処理(S94〜S118)をすべてのデータアクセスについて実行し(ループ1)、処理を終了する。
以上説明したように、本発明の実施の形態によると、物理アドレスに空間判定ビットが付された論理アドレスによりデータへのアクセスが行われる。このため、データアクセスに所定の処理を付加させることができる。例えば、上述したように、データアクセスに先立ってデータをキャッシュメモリにプリフェッチしたりすることができる。このため、キャッシュメモリを効率的に使用することができるようになる。
また、そのようなデータ処理装置で実行される機械語プログラムを生成するコンパイラ装置を提供することもできる。
なお、以上説明した実施の形態は本発明の一例にすぎず、本発明は上述の実施の形態に限定されるものではない。
例えば、上述の論理アドレス空間のサブ空間は一例にすぎず、他の処理を実行させるようにしてもよい。例えば、「値更新空間」における値更新の方法は、加算のみに限られるものではなく、減算、乗算および除算等の四則演算であってもよいし、論理演算であってもよい。また、より複雑な処理を実行し、値を更新するようにしてもよい。
また、サブ空間にアクセスすることにより、データ処理装置が備える他のハードウェアに対する実行指示を行うようにしてもよい。例えば、サブ空間の一例として「ハードウェアAへの指示空間」を設けてもよい。このサブ空間の論理アドレスを用いてデータにアクセスした場合には、当該データをキャッシュメモリ28またはメモリ30より読み出して、ハードウェアAに転送する。ハードウェアAは、当該データの転送をトリガとして処理を開始する。なお、その際に、ハードウェアAが当該データを用いて所定の処理をするようにしてもよい。また、サブ空間の他の一例として「ハードウェアBへの指示空間」を設けてもよい。このサブ空間の論理アドレスを用いてデータにアクセスした場合には、当該データへのアクセスをトリガとして、ハードウェアBは所定の処理を開始する。
本発明は、キャッシュメモリを有するプロセッサ等に適用できる。
本発明の実施の形態に係るデータ処理装置の外観図である。 図1に示すデータ処理装置の主要なハードウェア構成を示す図である。 論理アドレスのビット構成を示す図である。 論理アドレス空間と物理アドレス空間との対応関係を説明するための図である。 フェッチ空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。 プリフェッチ空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。 領域確保空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。 図7に示した領域確保処理(S50)を詳細に説明するフローチャートである。 アンキャッシャブル空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。 値更新空間の論理アドレスでメモリアクセスを行った場合の処理のフローチャートである。 データ処理装置20で実行される実行形式のプログラムを生成するコンパイラ装置の構成を示す図である。 論理アドレス決定部46が実行する処理のフローチャートである。 プラグマによるデータのサブ空間が指定されたソースプログラムの一例を示す図である。 組み込み関数によりデータのサブ空間が指定されたソースプログラムの一例を示す図である。 プラグマや組み込み関数などのユーザ指定がない場合のソースプログラムの一例を示す図である。
符号の説明
20 データ処理装置
22 演算処理部
24 メモリ管理部
26 アドレス変換部
28 キャッシュメモリ
30 メモリ
32 メモリ部
34 キャッシュコントローラ
36 加算器

Claims (15)

  1. 物理アドレスで定められる領域ごとに、命令またはデータを格納する格納手段と、
    前記物理アドレスと予め定められた処理を示す処理判定データとを含む論理アドレスを出力し、当該論理アドレスに含まれる前記物理アドレスに対応する前記命令または前記データを取得し、かつ当該命令を実行する命令実行手段と、
    前記命令実行手段が出力する論理アドレスを前記物理アドレスに変換するアドレス変換手段とを備え、
    前記格納手段は、前記物理アドレスで定められる領域に格納されている前記命令または前記データを読み出すとともに、前記処理判定データに基づいて定められる処理を実行する
    ことを特徴とするデータ処理装置。
  2. 前記格納手段は、
    前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納するメモリと、
    前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納し、かつ前記メモリよりも高速にデータの読出しおよび書込みが可能なキャッシュメモリと、
    前記処理判定データに基づいて定められる処理を実行する処理実行部とを有し、
    前記論理アドレスの前記処理判定データには、前記メモリに格納されている前記命令または前記データをフェッチして、前記キャッシュメモリに格納する処理に対応するフェッチ判定データが含まれ、
    前記命令実行手段により、前記フェッチ判定データが含まれる前記論理アドレスへのアクセスが行われる場合には、前記処理実行部は、前記アドレス変換手段より出力される前記物理アドレスにより特定される前記メモリの格納領域に格納されている前記命令または前記データをフェッチし、前記キャッシュメモリに格納する
    ことを特徴とする請求項1に記載のデータ処理装置。
  3. 前記格納手段は、
    前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納するメモリと、
    前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納し、かつ前記メモリよりも高速にデータの読出しおよび書込みが可能なキャッシュメモリと、
    前記処理判定データに基づいて定められる処理を実行する処理実行部とを有し、
    前記論理アドレスの前記処理判定データには、前記メモリに格納されている前記命令または前記データをプリフェッチして、前記キャッシュメモリに格納する処理に対応するプリフェッチ対応データが含まれ、
    前記命令実行手段により、前記プリフェッチ判定データが含まれる前記論理アドレスへのアクセスが行われる場合には、前記処理実行部は、前記アドレス変換手段により出力される前記物理アドレスにより特定される前記メモリの格納領域に格納されている前記命令または前記データをプリフェッチし、前記キャッシュメモリに格納する
    ことを特徴とする請求項1に記載のデータ処理装置。
  4. 前記格納手段は、
    前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納するメモリと、
    前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納し、かつ前記メモリよりも高速にデータの読出しおよび書込みが可能なキャッシュメモリと、
    前記処理判定データに基づいて定められる処理を実行する処理実行部とを有し、
    前記論理アドレスの前記処理判定データには、前記メモリに格納されている前記命令または前記データを格納するための領域を前記キャッシュメモリに確保する処理に対応する領域確保対応データが含まれ、
    前記命令実行手段により、前記領域確保対応データが含まれる前記論理アドレスへのアクセスが行われる場合には、前記処理実行部は、前記アドレス変換手段より出力される前記物理アドレスにより特定される前記メモリの格納領域に格納されている前記命令または前記データを格納するための領域を前記キャッシュメモリに確保する
    ことを特徴とする請求項1に記載のデータ処理装置。
  5. 前記格納手段は、
    前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納するメモリと、
    前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納し、かつ前記メモリよりも高速にデータの読出しおよび書込みが可能なキャッシュメモリと、
    前記処理判定データに基づいて定められる処理を実行する処理実行部とを有し、
    前記論理アドレスの前記処理判定データには、前記メモリに格納されている前記命令または前記データを前記キャッシュメモリに格納せずに、前記命令実行手段に転送する処理に対応するアンキャッシャブル対応データが含まれ、
    前記命令実行手段により、前記アンキャッシャブル対応データが含まれる前記論理アドレスへのアクセスが行われる場合には、前記処理実行部は、前記アドレス変換手段より出力される前記物理アドレスにより特定される前記キャッシュメモリの格納領域に前記命令または前記データを格納することなく、前記メモリの当該物理アドレスに格納されている前記命令および前記データを前記処理実行部との間でやり取りさせる
    ことを特徴とする請求項1に記載のデータ処理装置。
  6. 前記格納手段は、
    前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納するメモリと、
    前記物理アドレスで定められる領域ごとに、前記命令または前記データを格納し、かつ前記メモリよりも高速にデータの読出しおよび書込みが可能なキャッシュメモリと、
    前記処理判定データに基づいて定められる処理を実行する処理実行部とを有し、
    前記論理アドレスの前記処理判定データには、前記メモリまたは前記キャッシュメモリに格納されている前記データへのアクセス後に、当該データを所定の規則に従い更新する処理に対応する値更新対応データが含まれ、
    前記命令実行手段により、前記値更新対応データが含まれる前記論理アドレスへのアクセスが行われる場合には、前記処理実行部は、前記アドレス変換手段より出力される前記物理アドレスにより特定される前記メモリまたは前記キャッシュメモリの格納領域に格納されている前記データを当該データへのアクセス後に所定の規則に従い更新する
    ことを特徴とする請求項1に記載のデータ処理装置。
  7. データ処理装置で実行されるプログラムであって、
    前記データ処理装置は、物理アドレスで定められる領域ごとに、命令またはデータを格納する格納手段と、前記物理アドレスと予め定められた処理を示す処理判定データとを含む論理アドレスを出力し、当該論理アドレスに含まれる前記物理アドレスに対応する前記命令または前記データを取得し、かつ当該命令を実行する命令実行手段と、前記命令実行手段が出力する論理アドレスを前記物理アドレスに変換するアドレス変換手段とを備え、前記格納手段は、前記物理アドレスで定められる領域に格納されている前記命令または前記データを読み出すとともに、前記処理判定データに基づいて定められる処理を実行し、
    前記論理アドレスを用いて前記格納手段にアクセスする機械語命令を含む
    ことを特徴とする前記データ処理装置で実行可能なプログラム。
  8. 高級プログラミング言語で記述されたソースプログラムを機械語プログラムに変換するコンパイラ装置であって、
    前記ソースプログラムに含まれるソースコードを中間コードに変換する中間コード変換手段と、
    前記中間コードを最適化する最適化手段と、
    最適化された前記中間コードを機械語命令に変換するコード生成手段とを備え、
    前記最適化手段は、
    前記中間コードに基づいて、データへのアクセス時に用いられる物理アドレスに所定の処理を示す処理判定データを付加した論理アドレスを生成する論理アドレス生成部と、
    前記論理アドレスを用いて前記データをアクセスする中間コードを生成する中間コード生成部とを有する
    ことを特徴とするコンパイラ装置。
  9. 前記論理アドレス生成部は、
    前記中間コードに含まれる前記データのアクセスごとに、前記ソースプログラム中に当該アクセスに対する処理の指示が含まれるか否かを調べる指示調査部と、
    前記指示が含まれる場合には、当該データの物理アドレスに当該指示で定められる処理に対応する処理判定データを付加し、論理アドレスを生成する処理判定データ付加部とを含む
    ことを特徴とする請求項8に記載のコンパイラ装置。
  10. 前記処理判定データには、メモリに格納されているデータをフェッチして、キャッシュメモリに格納する処理に対応するフェッチ判定データが含まれ、
    さらに、キャッシュミスを起こすデータおよび当該データの配置位置を解析する解析手段を備え、
    前記論理アドレス生成部は、
    前記中間コードに含まれる前記データのアクセスごとに、前記解析手段での解析結果に基づいて、アクセスされるデータがキャッシュミスを起こすか否かを判断するキャッシュミス判断部と、
    前記キャッシュミス判断部の判断結果に基づいて、前記データがキャッシュミスを起こさないと判断した場合に、当該データの論理アドレスに前記フェッチ判定データを付加した論理アドレスを生成するフェッチ判定データ付加部とを含む
    ことを特徴とする請求項8に記載のコンパイラ装置。
  11. 前記処理判定データには、メモリに格納されているデータをプリフェッチして、キャッシュメモリに格納する処理に対応するプリフェッチ判定データが含まれ、
    さらに、キャッシュミスを起こすデータおよび当該データの配置位置を解析する解析手段を備え、
    前記論理アドレス生成部は、
    前記中間コードに含まれる前記データのアクセスごとに、前記解析手段での解析結果に基づいて、アクセスされるデータを、アクセス時までに予め前記キャッシュメモリに格納する必要があるか否かを判断するプリフェッチ判断部と、
    前記プリフェッチ判断部の判断結果に基づいて、前記データをアクセス時までに予め前記キャッシュメモリに格納する必要があると判断した場合には、当該データの論理アドレスに前記プリフェッチ判定データを付加した論理アドレスを生成するプリフェッチ判定データ付加部とを含む
    ことを特徴とする請求項8に記載のコンパイラ装置。
  12. 前記処理判定データには、メモリに格納されているデータを格納するための領域をキャッシュメモリに確保する処理に対応する領域確保対応データが含まれ、
    さらに、データが書込みから開始する処理で用いられるか否かを解析する解析手段を備え、
    前記論理アドレス生成部は、前記中間コードに含まれる前記データのアクセスごとに、前記解析手段での解析結果に基づいて、アクセスされるデータが書込みから開始する処理で用いられる場合には、当該データの論理アドレスに前記領域確保対応データを付加した論理アドレスを生成する
    ことを特徴とする請求項8に記載のコンパイラ装置。
  13. 前記処理判定データには、メモリに格納されているデータをキャッシュメモリに格納せずに、命令を実行する命令実行手段に転送する処理に対応するアンキャッシャブル対応データが含まれ、
    キャッシュミスを起こすデータおよび当該データの配置位置を解析する解析手段を備え、
    前記論理アドレス生成部は、
    前記中間コードに含まれる前記データのアクセスごとに、前記解析手段での解析結果に基づいて、アクセスされるデータを前記キャッシュメモリに格納する必要があるか否かを判断する格納判断部と、
    前記格納判断部の判断結果に基づいて、前記データを前記キャッシュメモリに格納する必要がないと判断した場合に、前記データの論理アドレスに前記アンキャッシャブル対応データを付加した論理アドレスを生成するアンキャッシャブル対応データ付加部とを含む
    ことを特徴とする請求項8に記載のコンパイラ装置。
  14. 高級プログラミング言語で記述されたソースプログラムを機械語プログラムに変換するコンパイル方法であって、
    前記ソースプログラムに含まれるソースコードを中間コードに変換する中間コード変換ステップと、
    前記中間コードを最適化する最適化ステップと、
    最適化された前記中間コードを機械語命令に変換するコード生成ステップとを含み、
    前記最適化ステップは、
    前記中間コードに基づいて、データへのアクセス時に用いられる物理アドレスに所定の処理を示す処理判定データを付加した論理アドレスを生成する論理アドレス生成サブステップと、
    前記論理アドレスを用いて前記データへアクセスする中間コードを生成する中間コード生成サブステップとを含む
    ことを特徴とするコンパイル方法。
  15. 高級プログラミング言語で記述されたソースプログラムを機械語プログラムに変換するコンパイラであって、
    請求項14に記載のコンパイル方法に含まれる各ステップをコンピュータに実行させる
    ことを特徴とするコンパイラ。
JP2003430546A 2003-12-25 2003-12-25 データ処理装置およびコンパイラ装置 Withdrawn JP2005190161A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2003430546A JP2005190161A (ja) 2003-12-25 2003-12-25 データ処理装置およびコンパイラ装置
US10/995,148 US20050144420A1 (en) 2003-12-25 2004-11-24 Data processing apparatus and compiler apparatus
CNB2004100615888A CN1326036C (zh) 2003-12-25 2004-12-27 数据处理装置、数据处理方法和编译装置及编译方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003430546A JP2005190161A (ja) 2003-12-25 2003-12-25 データ処理装置およびコンパイラ装置

Publications (1)

Publication Number Publication Date
JP2005190161A true JP2005190161A (ja) 2005-07-14

Family

ID=34697615

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003430546A Withdrawn JP2005190161A (ja) 2003-12-25 2003-12-25 データ処理装置およびコンパイラ装置

Country Status (3)

Country Link
US (1) US20050144420A1 (ja)
JP (1) JP2005190161A (ja)
CN (1) CN1326036C (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266605B2 (en) * 2006-02-22 2012-09-11 Wind River Systems, Inc. Method and system for optimizing performance based on cache analysis
CN102722451B (zh) * 2012-06-25 2015-04-15 杭州中天微系统有限公司 采用物理地址预测访问高速缓存的装置
WO2015061970A1 (zh) * 2013-10-29 2015-05-07 华为技术有限公司 一种访问内存的方法及设备
US10402355B2 (en) * 2017-02-08 2019-09-03 Texas Instruments Incorporated Apparatus and mechanism to bypass PCIe address translation by using alternative routing

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ZA954460B (en) * 1994-09-30 1996-02-05 Intel Corp Method and apparatus for processing memory-type information within a microprocessor
TW335466B (en) * 1995-02-28 1998-07-01 Hitachi Ltd Data processor and shade processor
JPH10207770A (ja) * 1997-01-20 1998-08-07 Fujitsu Ltd 複数のキャッシュ・メモリを備えたデータ処理装置
US6216215B1 (en) * 1998-04-02 2001-04-10 Intel Corporation Method and apparatus for senior loads
US6668307B1 (en) * 2000-09-29 2003-12-23 Sun Microsystems, Inc. System and method for a software controlled cache
JPWO2003009301A1 (ja) * 2001-07-17 2004-11-11 三菱電機株式会社 記憶装置
US6839826B2 (en) * 2002-02-06 2005-01-04 Sandisk Corporation Memory device with pointer structure to map logical to physical addresses

Also Published As

Publication number Publication date
CN1637703A (zh) 2005-07-13
US20050144420A1 (en) 2005-06-30
CN1326036C (zh) 2007-07-11

Similar Documents

Publication Publication Date Title
JP4374221B2 (ja) コンピュータシステムおよび記録媒体
US8561043B2 (en) Data transfer optimized software cache for irregular memory references
JP4934267B2 (ja) コンパイラ装置
JP3601341B2 (ja) 並列プログラム生成方法
US8527974B2 (en) Data transfer optimized software cache for regular memory references
US7243195B2 (en) Software managed cache optimization system and method for multi-processing systems
JP6457200B2 (ja) プロセッシング装置
JP2007048296A (ja) 複数のアドレス・キャッシュ・エントリーを無効にする方法、装置およびシステム
US20090019266A1 (en) Information processing apparatus and information processing system
JP5255049B2 (ja) データをキャッシュ・メモリにプリフェッチする方法、コンピュータ・プログラム、及びシステム
JP2008293378A (ja) プログラム書き換え装置
JP2008003882A (ja) コンパイラプログラム,リストベクトルの領域割当て最適化方法,コンパイル処理装置およびコンパイラプログラムを記録したコンピュータ読み取り可能な記録媒体
JPWO2005050454A1 (ja) キャッシュメモリおよびその制御方法
JP3973129B2 (ja) キャッシュメモリ装置及びそれを用いた中央演算処理装置
JP2005190161A (ja) データ処理装置およびコンパイラ装置
US8166252B2 (en) Processor and prefetch support program
JP2954178B1 (ja) 可変式キャッシュ方式
JP2009020695A (ja) 情報処理装置及びシステム
JP5238797B2 (ja) コンパイラ装置
JP2008009857A (ja) キャッシュ制御回路およびプロセッサシステム
JP5293609B2 (ja) マルチプロセッサ並びにそのキャッシュ同期制御方法及びプログラム
JP2002007213A (ja) キャッシュメモリ制御方法及びプログラム処理方法
JP3755804B2 (ja) オブジェクトコードの再合成方法および生成方法
WO2018168264A1 (ja) 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
JP2003030046A (ja) 命令キャッシュのプリフェッチ機構を備えたキャッシュ制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061011

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20081113