JP2008262390A - プログラム - Google Patents
プログラム Download PDFInfo
- Publication number
- JP2008262390A JP2008262390A JP2007104582A JP2007104582A JP2008262390A JP 2008262390 A JP2008262390 A JP 2008262390A JP 2007104582 A JP2007104582 A JP 2007104582A JP 2007104582 A JP2007104582 A JP 2007104582A JP 2008262390 A JP2008262390 A JP 2008262390A
- Authority
- JP
- Japan
- Prior art keywords
- data
- function
- main memory
- processor
- storage device
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】プロセッサが、キャッシュヒット判定が完了する前に、一時記憶装置に記憶されたデータをレジスタへ書き込む処理を開始することにより、プロセッサからの一時記憶装置へのデータアクセス時間を小さくできる。
【解決手段】本発明のローカルメモリの制御プログラム10aは、アクセスデータを指定するタグアドレスと、アクセスデータを指定するライン番号と対応する一時記憶装置の記憶領域上のデータのタグアドレス20bと、が一致するか否かを判定する判定機能と、判定処理が完了する前に、一時記憶装置上のその記憶領域に記憶されているデータ20aをレジスタに複製する処理を開始する複製機能と、判定機能で一致すると判定された場合にレジスタからデータを読み出す読出機能とをプロセッサ10に実現させることを特徴とする。
【選択図】 図5
【解決手段】本発明のローカルメモリの制御プログラム10aは、アクセスデータを指定するタグアドレスと、アクセスデータを指定するライン番号と対応する一時記憶装置の記憶領域上のデータのタグアドレス20bと、が一致するか否かを判定する判定機能と、判定処理が完了する前に、一時記憶装置上のその記憶領域に記憶されているデータ20aをレジスタに複製する処理を開始する複製機能と、判定機能で一致すると判定された場合にレジスタからデータを読み出す読出機能とをプロセッサ10に実現させることを特徴とする。
【選択図】 図5
Description
本発明は、プログラムに関するものである。
近年の計算機システムでは、プロセッサのデータ処理速度とメインメモリのデータ供給速度との差を埋めるために、メインメモリよりも容量が小さく、データ供給速度が速い、キャッシュメモリやローカルメモリなどの一時記憶装置が広く使用されている。このような計算機システムでは、一時記憶装置にメインメモリ上の一部のデータを一時的に記憶させることで、メインメモリ上のデータの実効的な供給速度を高め、プロセッサのデータ処理速度を活かすことができる。
しかし、一時記憶装置には、メインメモリ上のすべてのデータを記憶することができないため、プロセッサが一時記憶装置上のデータにアクセスする前に、アクセスするデータが一時記憶装置に記憶されているか否かの判定、即ちキャッシュヒット判定が行われる。ここで、特に、ソフトウェアでキャッシュヒット判定を行う場合、キャッシュヒット判定に要する時間が大きく、一時記憶装置へのデータアクセスに要する時間が長くなるという問題点がある。
そこで、以前に行ったキャッシュヒット判定の結果から一時記憶装置に記憶されているデータを予測し、キャッシュヒット判定を行う前にそのデータを一時記憶装置から出力する手法が報告されている(例えば、特許文献1参照。)。
しかしながら、上記の特許文献1に記載される発明では、キャッシュヒット判定を行う前にデータが一時記憶装置から出力されるものの、キャッシュヒット判定が完了した後にその出力データがプロセッサに内蔵されるレジスタに記憶され、演算処理に用いられる。そのため、プロセッサからの一時記憶装置へのデータアクセス時間を十分に小さくできなかった。
特開平5−120135号公報
上述したように、特許文献1に開示されている手法では、キャッシュヒット判定が完了した後に、一時記憶装置からの出力データをレジスタに記憶していたため、一時記憶装置へのデータアクセス時間を十分に小さくできないという問題があった。
本発明は、上記従来技術の問題点を解決するためになされたものであって、プロセッサからの一時記憶装置へのデータアクセス時間を小さくできるプログラムを提供することを目的とする。
上記目的を達成するために、本発明の実施形態に係るプログラムは、一時記憶装置に複数ある記憶領域を識別するためのライン番号と前記記憶領域に複数記憶されるデータを識別するためのタグアドレスとを有するメインメモリアドレスによりアクセスするデータを指定し、メインメモリに記憶されるデータの一部をキャッシュ記憶する前記一時記憶装置にアクセスし、前記一時記憶装置に記憶されるデータをレジスタに複製して当該データを演算処理に用いるプロセッサに、前記プロセッサがアクセスするデータのメインメモリアドレスを取得する取得機能と、前記取得機能で取得した前記メインメモリアドレスのライン番号で指定される前記一時記憶装置のn個(nは2以上の整数)の記憶領域に記憶されているデータのタグアドレスのそれぞれと、前記取得機能で取得した前記メインメモリアドレスのタグアドレスとが一致するか否かを判定する判定機能と、前記一時記憶装置のn個の記憶領域のうち、m個(mは1以上n以下の整数)の記憶領域に記憶されているデータをそれぞれ前記レジスタに複製する複製機能と、前記判定機能で行われる判定処理を完了する前に前記複製機能で行われる複製処理を開始する開始機能と、前記判定機能で前記メインメモリアドレスのタグアドレスと前記一時記憶装置のn個の記憶領域に記憶されている前記データのタグアドレスのいずれかとが一致すると判定され、かつ、その一致すると判定されたデータが前記複製機能で前記レジスタに複製されていた場合に、前記複製機能によって当該データが複製された前記レジスタから、当該データを読み出す読出機能とを実現させることを特徴とする。
本発明によれば、プロセッサからの一時記憶装置へのデータアクセス時間を小さくできる。
以下、本発明の実施形態について説明する。
(第1の実施形態)
図1は、本発明の第1の実施形態に係る情報処理装置100を示すブロック図である。
この第1の実施形態に係る情報処理装置100は、メインメモリ50に記憶されたデータを用いて演算処理を行うプロセッサ10と、プロセッサ10により実行されるプログラムが記憶されるプログラムメモリ30と、メインメモリ50に記憶されるデータの一部が記憶されるローカルメモリ20と、プロセッサ10からの要求に応じてメインメモリ50とローカルメモリ20との間のデータ転送を行うデータ転送装置40と、データ転送装置40を介してローカルメモリ20にデータを供給するメインメモリ50とを備える。
図1は、本発明の第1の実施形態に係る情報処理装置100を示すブロック図である。
この第1の実施形態に係る情報処理装置100は、メインメモリ50に記憶されたデータを用いて演算処理を行うプロセッサ10と、プロセッサ10により実行されるプログラムが記憶されるプログラムメモリ30と、メインメモリ50に記憶されるデータの一部が記憶されるローカルメモリ20と、プロセッサ10からの要求に応じてメインメモリ50とローカルメモリ20との間のデータ転送を行うデータ転送装置40と、データ転送装置40を介してローカルメモリ20にデータを供給するメインメモリ50とを備える。
プロセッサ10は、演算処理に使用するデータを記憶するレジスタファイル11を内蔵する。レジスタファイル11は、複数のレジスタ(図示せず)から構成される。それぞれのレジスタの記憶容量、および、ローカルメモリ20とレジスタファイル11との間でプロセッサ10によってデータ転送される際のデータ単位を、例えば、32ビットとする。
なお、プロセッサ10、ローカルメモリ20、およびプログラムメモリ30は、内部バス60により接続される。また、データ転送装置40およびメインメモリ50は、外部バス70により接続される。
プロセッサ10は、プログラムメモリ30あるいはローカルメモリ20に記憶されたプログラムを実行する。なお、プロセッサ10が実行するプログラムは、メインメモリ50に記憶されたデータを使用するものであれば良く、ファームウェア、ミドルウェア、オペレーティングシステムであっても良い。
データ転送装置40は、例えば、ダイレクトメモリアクセスコントローラ(DMAコントローラ)などにより実現され、プロセッサ10からの要求に応じて、指定されるデータをローカルメモリ20からメインメモリ50へ、あるいは、メインメモリ50からローカルメモリ20へ転送する。
プログラムメモリ30は、プロセッサ10により実行されるプログラムを記憶する。プログラムメモリ30は、RAM(Randam Access Memory)あるいはROM(Read Only Memory)により構成される。ローカルメモリ20はRAMにより構成され、メインメモリ50のデータを一時的に記憶(キャッシュ)する。
図2に、プロセッサ10が出力するメインメモリアドレスの構成を示す。
メインメモリアドレスのビット幅を、例えば、32ビットとし、各メインメモリアドレスがメインメモリ50に記憶された1バイトのデータを指定するものとする。このとき、メインメモリアドレスは、メインメモリ上の4GBのデータを指定することができる。
メインメモリアドレスのビット幅を、例えば、32ビットとし、各メインメモリアドレスがメインメモリ50に記憶された1バイトのデータを指定するものとする。このとき、メインメモリアドレスは、メインメモリ上の4GBのデータを指定することができる。
メインメモリアドレスは、16ビット幅のタグアドレス、8ビット幅のライン番号、8ビット幅のオフセットで構成される。ここで、図2に示すとおり、タグアドレスは「0x1234」、ライン番号は「0x56」、オフセットは「0x78」となる。なお、タグアドレス、ライン番号、およびオフセットについては後述する。
図3に、第1の実施形態に係るローカルメモリ20の構成を示す。なお、図3では、データアレイのキャッシュラインとタグアレイのタグ(管理情報)を、「キャッシュライン(ウェイ番号)−(ライン番号)」、「タグ(ウェイ番号)−(ライン番号)」と記載している。例えば、「キャッシュライン3−255」は、ウェイ番号「3」、ライン番号「255(0xFF)」のキャッシュラインを示す。
ローカルメモリ20は、メインメモリ50上のデータをキャッシュライン(キャッシュラインの容量は256バイト)ごとに一時的に記憶するデータアレイ20aと、データアレイ20aに記憶されるデータのタグ(管理情報)をキャッシュラインごとに記憶するタグアレイ20bと、を記憶する。このローカルメモリ20には、「0x000000」から「0xFFFFFF」までのローカルメモリアドレスがふられている。ここで、例えば、ローカルメモリ20の容量を16MBとし、各ローカルメモリアドレスによってローカルメモリ20に記憶された1バイトのデータが指定されるものとする。
なお、メインメモリアドレスのライン番号は、データアレイ20aのキャッシュラインを識別するために用いられる。メインメモリアドレスのタグアドレスは、データアレイ20aのキャッシュラインに記憶されたデータを識別するために用いられる。オフセットは、データアレイ20aのキャッシュラインに記憶されたデータ(256バイト)のうちの何バイト目のデータかを識別するために用いられる。
また、例えば、データアレイ20aとタグアレイ20bを4ウェイとする。即ち、1つのライン番号(例えば、ライン番号「0x01」)により、4つのキャッシュライン(キャッシュライン1−1、2−1、3−1、4−1)、および、キャッシュラインごとに付された管理情報(タグ1−1、2−1、3−1、4−1)が指定されるものとする。なお、データアレイ20aが有するキャッシュラインの数と、タグアレイ20bが有するタグの数は同一である。
図2に示すメインメモリアドレスのライン番号は8ビット幅であり、「0から255まで」のライン番号を指定することができる。そのため、データアレイ20aが保持するキャッシュライン、およびタグアレイ20bが保持するキャッシュラインごとに付されたタグの数は、ライン番号の指定できる数「256」とウェイの数「4」を積算した「1024」となる。
なお、データアレイ20aのウェイ1の先頭アドレスはローカルメモリアドレス「0xA10000」である。データアレイ20aのウェイ2の先頭アドレスはローカルメモリアドレス「0xA20000」である。データアレイ20aのウェイ3の先頭アドレスはローカルメモリアドレス「0xA30000」である。データアレイ20aのウェイ4の先頭アドレスはローカルメモリアドレス「0xA40000」である。
図4に、ウェイ1のタグアレイ20bが記憶するキャッシュラインごとに付された管理情報(タグ)の例を示す。
タグアレイ20bは、ウェイ1において、「タグ1−0」から「タグ1−255」までの256個のタグを有する。各タグは、16ビット幅のタグアドレスと、1ビット幅の有効フラグと、1ビット幅のダーティフラグとにより構成される。
タグアドレスは、対応するデータアレイ20aのキャッシュラインに記憶されているデータのタグアドレスを示すものである。有効フラグは、対応するデータアレイ20aのキャッシュラインに記憶されているデータが有効“1”か、無効“0”を示す。有効フラグが“1”であって、ダーティフラグが“1”の場合、対応するデータアレイ20aのキャッシュラインに記憶されているデータに対して書き込みが行われたことを示す。なお、各タグのタグアドレス、有効フラグ、およびダーティフラグは、プロセッサ10がローカルメモリ20へデータ書込みを行う際などに、設定される。
図4では、「タグ1−0」が記憶する内容は、「キャッシュライン1−0」に記憶されているデータが有効(有効フラグ“1”)であって、かつ、そのデータに上書きが行われており(ダーティフラグ“1”)、そのタグアドレスが「0x10F0」であることを示す。以下同様に、「タグ1−1」は、「キャッシュライン1−1」に記憶されているデータが無効(有効フラグ“0”)であることを示す。また、「タグ1−2」は、「キャッシュライン1−2」に記憶されているデータが有効(有効フラグ“1”)であり、そのタグアドレスが「0x30F0」であることを示す。さらにまた、「タグ1−3」は、「キャッシュライン1−3」に記憶されているデータが有効(有効フラグ“1”)であり、そのタグアドレスが「0x4F00」であることを示す。
図5は、本発明の第1の実施形態に係るプロセッサ10がキャッシュデータ制御プログラム10aを実行する際に用いるデータの入出力関係を示す図である。ローカルメモリ20のデータアレイ20aとタグアレイ20bは、キャッシュデータ制御プログラム10aを実行するプロセッサ10によりアクセスされる。キャッシュデータ制御プログラム10aを実行するプロセッサ10は、ローカルメモリ20のデータアレイ20aに記憶されているデータを、レジスタファイル11を構成するレジスタに複製(記憶)する。
図6、図7は、本発明の第1の実施形態に係る情報処理装置100の動作を示すフローチャートである。
以下に、図6に示す、プロセッサ10が、ローカルメモリ20上のデータへアクセスし、そのデータを用いて演算処理を行う際の動作を説明する。
以下に、図6に示す、プロセッサ10が、ローカルメモリ20上のデータへアクセスし、そのデータを用いて演算処理を行う際の動作を説明する。
プログラムを実行するプロセッサ10は、演算処理に用いるデータへアクセスする処理を開始する。まず、プロセッサ10は、キャッシュデータ制御プログラム10aに従い、演算処理に用いるデータをローカルメモリ20からレジスタへ複製する(ステップS101)。ここで、プロセッサ10は、ローカルメモリ20にアクセスするデータが既に記憶されているか否かの判定処理(キャッシュヒット判定処理)と、キャッシュヒット判定処理が完了する前にローカルメモリ20に記憶されているデータをレジスタに複製する処理(先行ロード処理)とを、並列に実行することにより、データアクセス処理の高速化を行う。なお、プロセッサ10が、アクセスするデータをローカルメモリ20からレジスタへ複製する際に行う処理の詳細については後述する。
次に、プロセッサ10は、ローカルメモリ20からレジスタへ複製したデータを用いて演算処理を行い、演算結果をレジスタに記憶する(ステップS102)。
次に、プロセッサ10は、レジスタに記憶した演算結果を、ローカルメモリ20に書き込む(ステップS103)。
以上のように、プロセッサ10は、ローカルメモリ20に記憶されるデータへアクセスし、実行するプログラムに応じた演算処理を行う。
次に、図7に示す、プロセッサ10が、キャッシュデータ制御プログラム10aに従い、先行ロード処理とキャッシュヒット判定処理を並列に行い、アクセスするデータをローカルメモリ20からレジスタへ複製する際の動作(ステップS101)を説明する。
まず、プロセッサ10は、アクセスするデータのメインメモリアドレス、およびそのメインメモリアドレスに対応するローカルメモリアドレスを計算する。ここで、ローカルメモリ20は4ウェイであるので、メインメモリアドレス(例えば、0xFFFF0000)で指定されるデータは、そのメインメモリアドレスのライン番号(0x00)で指定されるローカルメモリ20上の4つのキャッシュライン(キャッシュライン1−0「0xA10000」、キャッシュライン2−0「0xA20000」、キャッシュライン3−0「0xA30000」、キャッシュライン4−0「0xA40000」)のいずれかにキャッシュ記憶される。よって、メインメモリアドレス(0xFFFF0000)に対応するローカルメモリアドレスは、「0xA10000」、「0xA20000」、「0xA30000」、「0xA40000」である。
まず、プロセッサ10は、アクセスするデータのメインメモリアドレス、およびそのメインメモリアドレスに対応するローカルメモリアドレスを計算する。ここで、ローカルメモリ20は4ウェイであるので、メインメモリアドレス(例えば、0xFFFF0000)で指定されるデータは、そのメインメモリアドレスのライン番号(0x00)で指定されるローカルメモリ20上の4つのキャッシュライン(キャッシュライン1−0「0xA10000」、キャッシュライン2−0「0xA20000」、キャッシュライン3−0「0xA30000」、キャッシュライン4−0「0xA40000」)のいずれかにキャッシュ記憶される。よって、メインメモリアドレス(0xFFFF0000)に対応するローカルメモリアドレスは、「0xA10000」、「0xA20000」、「0xA30000」、「0xA40000」である。
次に、プロセッサ10は、取得したメインメモリアドレスのライン番号(0x00)に指定される4つのキャッシュライン(キャッシュライン1−0,2−0,3−0,4−0)に記憶されたデータのうち、2つのキャッシュライン(例えば、キャッシュライン1−0,2−0)上のデータをローカルメモリ20からレジスタへ複製する処理を、キャッシュライン判定処理に先行して開始する(先行ロード処理、ステップS201)。
即ち、ローカルメモリ20とレジスタ間では32ビット単位でデータの転送処理が行われるため、プロセッサ10は、ローカルメモリアドレス(「0xA10000」乃至「0xA10003」)に指定されるデータ(32ビット)と、ローカルメモリアドレス(「0xA20000」乃至「0xA20003」)に指定されるデータ(32ビット)と、を2つのレジスタに複製する処理を開始する。
なお、プロセッサ10は、先行ロード処理を行う際に、取得したメインメモリアドレスのライン番号に指定される4つのキャッシュラインのそれぞれに記憶された4つのデータのうち、先行ロード処理を行うデータの個数を1つ乃至4つのいずれとしてもよい。
次に、先行ロード処理(ステップS201)の完了を待つことなく、即座に、プロセッサ10はキャッシュヒット判定処理を開始する。即ち、プロセッサ10は、取得したメインメモリアドレスのタグアドレス(0xFFFF)と、取得したメインメモリアドレスと対応するローカルメモリアドレスに指定される4つのデータのタグアドレス(タグ1−0のタグアドレス「0x10F0」、タグ2−0のタグアドレス「0xFFFF」、タグ3−0のタグアドレス「0x2020」、タグ4−0のタグアドレス「0x3F30」)のいずれかと、が一致するか否かを判定する(ステップS202)。
(ヒット判定)
取得したメインメモリアドレスのタグアドレスと、そのメインメモリアドレスと対応するローカルメモリアドレスに指定される4つのデータのタグアドレスのいずれかとが一致した場合(ヒット判定、ステップS202のはい)、プロセッサ10によりアクセスされるデータは、ローカルメモリ20に記憶されている。
取得したメインメモリアドレスのタグアドレスと、そのメインメモリアドレスと対応するローカルメモリアドレスに指定される4つのデータのタグアドレスのいずれかとが一致した場合(ヒット判定、ステップS202のはい)、プロセッサ10によりアクセスされるデータは、ローカルメモリ20に記憶されている。
ここで、取得したメインメモリアドレスのタグアドレス(0xFFFF)と、先行ロード処理を行っている2つのデータ(キャッシュライン1−0,2−0)のタグアドレス(タグ1−0のタグアドレス「0x10F0」,タグ2−0のタグアドレス「0xFFFF」)のいずれかとが一致する場合(ステップS203のはい)、プロセッサ10は、アクセスするデータの先行ロード処理を行っている。
そのため、プロセッサ10は、先行ロード処理が完了し次第、ローカルメモリ20上のデータを複製した2つのレジスタのうち、取得したメインメモリアドレスのタグアドレス(0xFFFF)と同一のタグアドレスを有するデータが記憶されたレジスタを選択し、そのレジスタからデータを読み出して演算処理に用いる。
即ち、プロセッサ10は、タグアドレスが「0xFFFF」であるローカルメモリ20のキャッシュライン2−0に記憶されていたデータであって、ローカルメモリアドレス(「0xA20000」乃至「0xA20003」)に記憶されていたデータ(32ビット)を、レジスタから読み込む。そして、プロセッサ10は、そのデータを用いた演算処理を行う。
一方、取得したメインメモリアドレスのタグアドレスと、ローカルメモリ20からレジスタへ先行して複製処理を行っている2つのデータのタグアドレスのいずれともが一致しない場合(ステップS203のいいえ)、取得したメインメモリアドレスのライン番号に指定されるローカルメモリ20の4つのキャッシュライン上にアクセスするデータはあるものの、プロセッサ10はそのデータの先行ロード処理を行っていない。
そこで、プロセッサ10は、キャッシュヒット判定処理でヒット判定とされたデータ、即ち、メインメモリアドレスのタグアドレスと同一のタグアドレスを持つデータを、レジスタへ複製する処理(ロード処理)をあらためて行う(ステップS205)。このロード処理が完了し次第、プロセッサ10は、レジスタに複製したデータを用いて、演算処理を行う。
(ミス判定)
取得したメインメモリアドレスのタグアドレスと、そのメインメモリアドレスと対応するローカルメモリアドレスに指定される4つのデータのタグアドレスのいずれともが一致しなかった場合(ミス判定、ステップS202のいいえ)、プロセッサ10によりアクセスされるデータは、ローカルメモリ20に記憶されていない。
取得したメインメモリアドレスのタグアドレスと、そのメインメモリアドレスと対応するローカルメモリアドレスに指定される4つのデータのタグアドレスのいずれともが一致しなかった場合(ミス判定、ステップS202のいいえ)、プロセッサ10によりアクセスされるデータは、ローカルメモリ20に記憶されていない。
そこで、プロセッサ10は、データ転送装置40を制御し、メインメモリアドレスに指定されるデータをメインメモリ50からローカルメモリ20へ転送し、そのデータのメインメモリアドレスのライン番号と対応するローカルメモリ20上のキャッシュラインのいずれかに複製する(ステップS204)。
プロセッサ10が、「メインメモリ50上のデータを複製するキャッシュライン」を選択する方法を以下に示す。
まず、プロセッサ10は、有効フラグが“0”であるキャッシュラインを、「メインメモリ50上のデータを複製するキャッシュライン」と選択する。次に、メインメモリアドレスのライン番号と対応する4つのキャッシュラインのすべての有効フラグが“1”である場合には、プロセッサ10は、ダーティフラグが“0”のキャッシュラインを選択し、「メインメモリ50上のデータを複製するキャッシュライン」とする。
まず、プロセッサ10は、有効フラグが“0”であるキャッシュラインを、「メインメモリ50上のデータを複製するキャッシュライン」と選択する。次に、メインメモリアドレスのライン番号と対応する4つのキャッシュラインのすべての有効フラグが“1”である場合には、プロセッサ10は、ダーティフラグが“0”のキャッシュラインを選択し、「メインメモリ50上のデータを複製するキャッシュライン」とする。
さらに、メインメモリアドレスのライン番号に指定される4つのキャッシュラインのすべての有効フラグが“1”、ダーティフラグが“1”である場合には、プロセッサ10は、いずれかの1つのキャッシュラインに記憶されているデータをメインメモリ50に書込み、「メインメモリ50上のデータを複製するキャッシュライン」と選択する。
即ち、プロセッサ10は、データ転送装置40を制御して、選択したキャッシュラインに記憶されているデータをメインメモリ50へ転送し、そのキャッシュラインの有効フラグ“0”、ダーティフラグ“0”を設定する。ここで、プロセッサ10は、選択したキャッシュラインに記憶されているデータのメインメモリアドレスを、そのライン番号と、対応するタグに記憶されたタグアドレスと、オフセット(0x00)とを用いて復元する。そして、プロセッサ10は、選択したキャッシュラインに記憶されているデータを、復元したメインメモリアドレスに指定されるメインメモリ50上の領域に書き込む。そして、プロセッサ10は、その選択したキャッシュラインを、「メインメモリ50上のデータを複製するキャッシュライン」とする。
次に、取得したメインメモリアドレスに指定されるデータをメインメモリ50からローカルメモリ20へ複製した後に、プロセッサ10は、そのローカルメモリ20に複製したデータを、さらにレジスタへ複製する処理(ロード処理)を行う(ステップS205)。このロード処理が完了し次第、プロセッサ10は、レジスタに複製したデータを用いて、演算処理を行う。
以上のように、プロセッサ10は、キャッシュデータ制御プログラム10aに従い、先行ロード処理とキャッシュヒット判定処理を並列に行い、アクセスするデータをローカルメモリ20からレジスタへ複製する。
プロセッサ10は、ローカルメモリ20に記憶されるデータへアクセスする際に、先行ロード処理(ステップS201)を開始し、先行ロード処理の完了を待たずに、キャッシュヒット判定処理(ステップS202)を開始する。即ち、プロセッサ10は、先行ロード処理(ステップS201)とキャッシュヒット判定処理(ステップS202)とを並列に実行する。
キャッシュヒット判定処理でヒット判定であり(ステップS202の一致する)、かつ、先行ロード処理を行ったデータへプロセッサ10がアクセスする場合(ステップS203のはい)、プロセッサ10は、先行ロード処理とキャッシュヒット判定処理を並列実行し、そのキャッシュヒット判定処理の判定結果に基づいて、先行ロード処理でレジスタに複製していたデータへアクセスする。
上記のように先行ロード処理とキャッシュヒット判定処理を並列に実行するため、プロセッサ10がローカルメモリ20上のデータへアクセスするのに要する時間(データアクセス時間)は、キャッシュヒット判定処理後に通常のロード処理を行ってデータアクセスする場合と比較して、削減される。
即ち、キャッシュヒット判定処理後に通常のロード処理を行う場合と比較して、先行ロード処理に要する時間あるいはキャッシュヒット判定処理に要する時間のうち、処理時間の短い一方の処理時間を、データアクセス時間から削減することができる。
なお、キャッシュヒット判定処理が完了する前に先行ロード処理を開始することにより、先行ロード処理とキャッシュヒット判定処理を並列実行でき、データアクセス時間の短縮化を実現できる。
また、キャッシュヒット判定処理が完了する前に先行ロード処理を完了していれば、キャッシュヒット判定処理の判定結果が決定した直後に、プロセッサ10は、先行ロード処理でレジスタに複製したデータへアクセスすることができる。
一方、キャッシュヒット判定処理でミス判定であった場合(ステップS202の一致しない)、あるいは、キャッシュヒット判定処理でヒット判定であったものの、キャッシュヒット判定に先行してロード処理を行ったデータへプロセッサ10がアクセスしない場合(ステップS203のいいえ)、プロセッサ10は、ミス判定時の通常処理、あるいは、ヒット判定時の通常処理を行う。このときのプロセッサ10のデータアクセス時間は、ミス判定時あるいはヒット判定時の通常のデータアクセス時間に、先行ロード処理を開始するのに要する時間が加算されるだけであり、キャッシュヒット判定処理に先行してロード処理を行うことによるオーバーヘッドは小さい。
このように、第1の実施形態に係る情報処理装置100によれば、キャッシュヒット判定処理が完了する前に、ローカルメモリ20に記憶されたデータをレジスタへ複製する処理を開始することにより、プロセッサ10からのローカルメモリ20へのデータアクセス時間を小さくできる。
なお、プロセッサ10は、メインメモリアドレスのライン番号に指定される4つのキャッシュラインに記憶されたすべてのデータを、レジスタに先行ロード処理しても良い。また、ローカルメモリ20のデータアレイとタグアレイを1ウェイとし、プロセッサ10は、メインメモリアドレスのライン番号に指定される1つのキャッシュラインに記憶された1つのデータを、レジスタに先行ロード処理しても良い。
上記2つの場合では、プロセッサ10は、メインメモリアドレスのライン番号に指定されるキャッシュラインに記憶されたすべてのデータを、ローカルメモリ20に先行ロード処理する。そのため、キャッシュヒット判定処理でヒット判定とされた場合、プロセッサ10によりアクセスされるデータは、必ずレジスタに先行ロード処理されることになる。
そのため、キャッシュヒット判定処理を行った後に、プロセッサ10によりアクセスされるデータが先行ロード処理されたか否かに応じて、プロセッサ10が行う処理を変更する必要がなくなり、処理の制御を簡便にすることができる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
10・・・プロセッサ
10a・・キャッシュデータ制御プログラム
20・・・ローカルメモリ
20a・・データアレイ
20b・・タグアレイ
30・・・プログラムメモリ
40・・・データ転送装置
50・・・メインメモリ
60・・・内部バス
70・・・外部バス
100・・・情報処理装置
10a・・キャッシュデータ制御プログラム
20・・・ローカルメモリ
20a・・データアレイ
20b・・タグアレイ
30・・・プログラムメモリ
40・・・データ転送装置
50・・・メインメモリ
60・・・内部バス
70・・・外部バス
100・・・情報処理装置
Claims (4)
- 一時記憶装置に複数ある記憶領域を識別するためのライン番号と前記記憶領域に複数記憶されるデータを識別するためのタグアドレスとを有するメインメモリアドレスによりアクセスするデータを指定し、メインメモリに記憶されるデータの一部をキャッシュ記憶する前記一時記憶装置にアクセスし、前記一時記憶装置に記憶されるデータをレジスタに複製して当該データを演算処理に用いるプロセッサに、
前記プロセッサがアクセスするデータのメインメモリアドレスを取得する取得機能と、
前記取得機能で取得した前記メインメモリアドレスのライン番号で指定される前記一時記憶装置のn個(nは2以上の整数)の記憶領域に記憶されているデータのタグアドレスのそれぞれと、前記取得機能で取得した前記メインメモリアドレスのタグアドレスとが一致するか否かを判定する判定機能と、
前記一時記憶装置のn個の記憶領域のうち、m個(mは1以上n以下の整数)の記憶領域に記憶されているデータをそれぞれ前記レジスタに複製する複製機能と、
前記判定機能で行われる判定処理を完了する前に前記複製機能で行われる複製処理を開始する開始機能と、
前記判定機能で前記メインメモリアドレスのタグアドレスと前記一時記憶装置のn個の記憶領域に記憶されている前記データのタグアドレスのいずれかとが一致すると判定され、かつ、その一致すると判定されたデータが前記複製機能で前記レジスタに複製されていた場合に、前記複製機能によって当該データが複製された前記レジスタから、当該データを読み出す読出機能とを実現させることを特徴とするプログラム。 - 一時記憶装置に複数ある記憶領域を識別するためのライン番号と前記記憶領域に複数記憶されるデータを識別するためのタグアドレスとを有するメインメモリアドレスによりアクセスするデータを指定し、メインメモリに記憶されるデータの一部をキャッシュ記憶する前記一時記憶装置にアクセスし、前記一時記憶装置に記憶されるデータをレジスタに複製して当該データを演算処理に用いるプロセッサに、
前記プロセッサがアクセスするデータのメインメモリアドレスを取得する取得機能と、
前記取得機能で取得した前記メインメモリアドレスのライン番号で指定される前記一時記憶装置の記憶領域に記憶されているデータのタグアドレスと、前記取得機能で取得した前記メインメモリアドレスのタグアドレスとが一致するか否かを判定する判定機能と、
前記一時記憶装置の記憶領域に記憶されているデータを前記レジスタに複製する複製機能と、
前記判定機能で行われる判定処理を完了する前に前記複製機能で行われる複製処理を開始する開始機能と、
前記判定機能で前記メインメモリアドレスの前記タグアドレスと前記一時記憶装置の記憶領域に記憶されている前記データの前記タグアドレスとが一致すると判定された場合に、前記複製機能によって当該データが複製された前記レジスタから、当該データを読み出す読出機能とを実現させることを特徴とするプログラム。 - 前記開始機能で、前記プロセッサに、
前記判定機能で行われる判定処理を開始する前に前記複製機能で行われる複製処理を開始させることを特徴とする請求項1または請求項2に記載のプログラム。 - 前記開始機能で、前記プロセッサに、
前記判定機能で行われる判定処理を完了する前に前記複製機能で行われる複製処理を完了させることを特徴とする請求項1または請求項2に記載のプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007104582A JP2008262390A (ja) | 2007-04-12 | 2007-04-12 | プログラム |
US12/035,977 US20080256296A1 (en) | 2007-04-12 | 2008-02-22 | Information processing apparatus and method for caching data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007104582A JP2008262390A (ja) | 2007-04-12 | 2007-04-12 | プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008262390A true JP2008262390A (ja) | 2008-10-30 |
Family
ID=39854802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007104582A Pending JP2008262390A (ja) | 2007-04-12 | 2007-04-12 | プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20080256296A1 (ja) |
JP (1) | JP2008262390A (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5300407B2 (ja) | 2008-10-20 | 2013-09-25 | 株式会社東芝 | 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法 |
JP2011095852A (ja) * | 2009-10-27 | 2011-05-12 | Toshiba Corp | キャッシュメモリ制御回路 |
TW201118749A (en) * | 2009-11-23 | 2011-06-01 | zhi-ang Yao | Anti-counterfeit battery pack and authentication system thereof |
JP2011198091A (ja) * | 2010-03-19 | 2011-10-06 | Toshiba Corp | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム |
KR20120094778A (ko) * | 2011-02-17 | 2012-08-27 | 삼성전자주식회사 | 캐시 레이턴시 저감을 위한 캐시 메모리 제어방법 및 캐시 메모리 시스템 |
JP2017167582A (ja) * | 2016-03-14 | 2017-09-21 | 富士通株式会社 | 演算処理装置、情報処理装置、及び演算処理装置の制御方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5924121A (en) * | 1996-12-23 | 1999-07-13 | International Business Machines Corporation | Adaptive writeback of cache line data in a computer operated with burst mode transfer cycles |
US6542968B1 (en) * | 1999-01-15 | 2003-04-01 | Hewlett-Packard Company | System and method for managing data in an I/O cache |
EP1150213B1 (en) * | 2000-04-28 | 2012-01-25 | TELEFONAKTIEBOLAGET LM ERICSSON (publ) | Data processing system and method |
US6832296B2 (en) * | 2002-04-09 | 2004-12-14 | Ip-First, Llc | Microprocessor with repeat prefetch instruction |
US7035979B2 (en) * | 2002-05-22 | 2006-04-25 | International Business Machines Corporation | Method and apparatus for optimizing cache hit ratio in non L1 caches |
US7073030B2 (en) * | 2002-05-22 | 2006-07-04 | International Business Machines Corporation | Method and apparatus providing non level one information caching using prefetch to increase a hit ratio |
US6990558B2 (en) * | 2002-06-18 | 2006-01-24 | Ip-First, Llc | Microprocessor, apparatus and method for selective prefetch retire |
US20040243767A1 (en) * | 2003-06-02 | 2004-12-02 | Cierniak Michal J. | Method and apparatus for prefetching based upon type identifier tags |
-
2007
- 2007-04-12 JP JP2007104582A patent/JP2008262390A/ja active Pending
-
2008
- 2008-02-22 US US12/035,977 patent/US20080256296A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20080256296A1 (en) | 2008-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7613884B2 (en) | Multiprocessor system and method ensuring coherency between a main memory and a cache memory | |
JP3016575B2 (ja) | 複数キャッシュ・メモリ・アクセス方法 | |
JP2010191638A (ja) | キャッシュ装置 | |
WO2008005687A2 (en) | Global overflow method for virtualized transactional memory | |
JP2006277762A (ja) | 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ | |
JP2008262390A (ja) | プログラム | |
US7472227B2 (en) | Invalidating multiple address cache entries | |
US7260674B2 (en) | Programmable parallel lookup memory | |
JP4434534B2 (ja) | プロセッサ・システム | |
JP2008226141A (ja) | プログラムおよび情報処理装置 | |
JP5587539B2 (ja) | ローカルメモリデータのコヒーレントなキャッシュ処理 | |
US10489300B1 (en) | Increasing caching efficiency using cache data patterns | |
US8244983B2 (en) | Memory control systems with directory caches and methods for operation thereof | |
JP2006331391A (ja) | データ処理装置及びデータ処理方法 | |
JP2005346582A (ja) | システムlsi及び画像処理装置 | |
JP3006204B2 (ja) | 情報処理装置 | |
JP4427393B2 (ja) | 半導体集積回路 | |
JP3260566B2 (ja) | 情報処理システムにおける記憶制御方法および記憶制御装置 | |
US20230066662A1 (en) | Instruction Cache for Hardware Multi-Thread Microprocessor | |
CN112579481B (zh) | 数据处理方法、数据处理装置和计算装置 | |
JP2006146817A (ja) | メモリ制御システム及びメモリ制御装置 | |
JPH01279342A (ja) | キャッシュ制御方式 | |
KR100201671B1 (ko) | 컴퓨팅 시스템 및 컴퓨팅 시스템의 캐시 메모리 이용방법 | |
JPS5815877B2 (ja) | バツフア・メモリ制御方式 | |
JP2011192012A (ja) | データ処理システム及びアクセス制御方法 |