JP2010086496A - キャッシュメモリを備えるベクトル計算機システム、及びその動作方法 - Google Patents

キャッシュメモリを備えるベクトル計算機システム、及びその動作方法 Download PDF

Info

Publication number
JP2010086496A
JP2010086496A JP2008258032A JP2008258032A JP2010086496A JP 2010086496 A JP2010086496 A JP 2010086496A JP 2008258032 A JP2008258032 A JP 2008258032A JP 2008258032 A JP2008258032 A JP 2008258032A JP 2010086496 A JP2010086496 A JP 2010086496A
Authority
JP
Japan
Prior art keywords
write
pattern
allocate
vector
block
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.)
Granted
Application number
JP2008258032A
Other languages
English (en)
Other versions
JP4888839B2 (ja
Inventor
Koji Kobayashi
浩二 小林
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2008258032A priority Critical patent/JP4888839B2/ja
Priority to US12/573,400 priority patent/US8151058B2/en
Publication of JP2010086496A publication Critical patent/JP2010086496A/ja
Application granted granted Critical
Publication of JP4888839B2 publication Critical patent/JP4888839B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data

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

【課題】ベクトルプロセッサ用のライトバック方式のキャッシュメモリにおいて、ライトアロケート方式と非ライトアロケート方式とを動的に切り替えること。
【解決手段】ベクトル計算機システムは、複数のストアリクエストを含むベクトルストア命令を発行するベクトルプロセッサと、ベクトルプロセッサとメインメモリとの間に設けられたライトバック方式のキャッシュメモリと、そのキャッシュメモリがライトアロケート方式で動作するか非ライトアロケート方式で動作するかを指定するアロケート制御信号を生成するライトアロケート決定部と、を備える。ベクトルプロセッサがベクトルストア命令を発行した時、ライトアロケート決定部は、複数のストアリクエストの対象アドレスのパターンである書き込みパターンに基づいてアロケート制御信号を生成する。キャッシュメモリは、ライトアロケート方式と非ライトアロケート方式のうちアロケート制御信号で指定される一方に従って、各々のストアリクエストを処理する。
【選択図】図2

Description

本発明は、ライトバック方式のキャッシュメモリの制御技術に関する。特に、本発明は、ベクトルプロセッサ用のライトバック方式キャッシュメモリの制御技術に関する。
計算機システムの分野において、プロセッサによるデータアクセスを高速化するために、キャッシュメモリ技術が広く用いられている。キャッシュメモリは、メインメモリよりも小規模で高速なメモリであり、プロセッサとメインメモリとの間に設けられる。キャッシュメモリは階層的に設けられる場合もあるが、以下では簡単のため、1つのキャッシュメモリと下位記憶階層としてのメインメモリだけを考える。複数のキャッシュメモリが階層的に設けられる場合であっても、同じ議論が適用され得る。
キャッシュメモリには、メインメモリに記憶されているデータの一部が格納される。より詳細には、キャッシュメモリには、「ライン(あるいはブロック)」と呼ばれる単位でデータが格納される。すなわち、キャッシュメモリは複数のラインを有しており、各ラインにラインサイズ分のデータが格納される。ラインサイズとは、1ライン当たりのデータサイズであり、例えば32バイトである。メインメモリに格納されているあるデータがキャッシュメモリに転送される際は、当該データを含むラインサイズ分のブロックデータが、メインメモリからキャッシュメモリ中のあるラインにコピーされる。
プロセッサがデータアクセス命令を発行すると、キャッシュメモリは、アクセス対象アドレスのデータがいずれかのラインに格納されているか否かを調べる。アクセス対象アドレスのデータがいずれかのラインに格納されている場合は、以下「キャッシュヒット」と参照される。一方、アクセス対象アドレスのデータがいずれのラインにも格納されていない場合は、以下「キャッシュミス」と参照される。
データリード時の処理は、次の通りである。キャッシュミスの場合、データはメインメモリから読み出され、プロセッサに送られる。また、当該データを含むラインサイズ分のブロックデータが、キャッシュメモリ中のあるラインにコピーされる。一方、キャッシュヒットの場合、データは、キャッシュメモリ中の該当ラインから読み出され、プロセッサへ送られる。すなわち、メインメモリへのアクセスは発生せず、データはより高速なキャッシュメモリから読み出される。従って、データ読み出し速度が向上する。
データライト時の処理に関しては、図1に示されるような様々な方式が提案されている。データライト方式は、おおまかに「ライトスルー(write-through)方式」と「ライトバック方式(write-back)方式」の2つに分類される。更に、ライトバック方式は、「非ライトアロケート(no-write-allocate)方式」と「ライトアロケート(write-allocate)方式」に分類される。
ライトスルー方式の場合の処理は、次の通りである。キャッシュミスの場合、書き込みデータは、キャッシュメモリには書き込まれず、メインメモリにだけ書き込まれる。一方、キャッシュヒットの場合、書き込みデータは、キャッシュメモリ中の該当ラインと共に、メインメモリにも書き込まれる。従って、ライトスルー方式の場合は、データリード時にしかキャッシュメモリの恩恵が得られない。
ライトバック方式の場合の処理は、次の通りである。キャッシュヒットの場合、書き込みデータは、メインメモリには書き込まれず、キャッシュメモリ中の該当ラインのみに書き込まれる。従って、データ書き込み速度が向上する。尚、キャッシュメモリにのみ格納されており、メインメモリに反映されていない最新データは、どこかのタイミングでメインメモリに書き戻される。キャッシュミスの場合は、非ライトアロケート方式とライトアロケート方式とで処理が異なる。
非ライトアロケート方式の場合、ライトスルー方式と同じように、書き込みデータは、キャッシュメモリには書き込まれずメインメモリにだけ書き込まれる。一方、ライトアロケート方式の場合、アクセス対象アドレスのデータを含むラインサイズ分のブロックデータが、メインメモリから読み出される。読み出されたブロックデータはキャッシュメモリ中のあるラインに格納され、その後、書き込みデータが当該ラインに書き込まれる。このように、ライトアロケート方式の場合、メインメモリからキャッシュメモリにブロックデータを転送する必要があり、非ライトアロケート方式よりも時間がかかる。但し、局所性(メインメモリ上で連続するアドレスが連続的にアクセスされる傾向や、短期間に同じアドレスが繰り返しアクセスされる傾向がある)の観点から言えば、ライトアロケート方式によって、続くデータ書き込み要求時のキャッシュヒットの確率が高まることが期待される。
このように、ライトアロケート方式と非ライトアロケート方式は、それぞれ一長一短を有している。ライトアロケート方式と非ライトアロケート方式のいずれを採用するか決定することは、システム処理効率の観点から重要である。
特許文献1(特開平11−312123号公報)によれば、ユーザが、ライトアロケート方式と非ライトアロケート方式のいずれか一方を指定可能である。具体的には、キャッシュ制御装置は、ライトアロケート方式あるいは非ライトアロケート方式を指定する情報が格納されるレジスタを有している。ユーザは、レジスタの内容を書き換えることにより、方式を指定することができる。
特許文献2(特開平7−152650号公報)に記載されているキャッシュ制御装置は、ライトバック方式のキャッシュメモリと、レジスタと、比較器と、制御回路とを備えている。あるデータの書き込み要求時にキャッシュミスが発生した場合、当該データを含むブロックアドレスがレジスタに格納される。その後のデータ書き込み要求の際、比較器は、レジスタに格納されているブロックアドレスと、現在アクセス対象となっているブロックアドレスとを比較する。制御回路は、比較器による比較結果に基づいて、キャッシュミス時の処理方法を決定する。具体的には、比較結果が一致の場合、制御回路はライトアロケート方式で処理を行う。一方、比較結果が不一致の場合、制御回路は非ライトアロケート方式で処理を行い、また、レジスタを更新する。すなわち、メモリ上のあるブロックに対するデータ書き込み要求時、まずは非ライトアロケート方式で処理が行われる。続くデータ書き込み要求が同じブロックに対するものである場合、その時に初めて、ライトアロケート方式によりメモリ上の当該ブロックデータがキャッシュメモリにコピーされる。同じブロックに対するデータ書き込み要求は連続すると予測されるため、3回目以降のデータ書き込み要求時にはキャッシュヒットが期待される。
特許文献3(特開平7−210463号公報)には、ファーストキャッシュメモリとセカンドキャッシュメモリを備えるキャッシュメモリシステムが開示されている。ストア(書き込み)命令に対するファーストキャッシュメモリでのキャッシュミス時、ライトアロケート方式に従ってセカンドキャッシュメモリからファーストキャッシュメモリへブロック転送を行うか否かは、場合による。そのブロック転送(ライトアロケート)の可否を判定するために判定部が設けられている。この判定部は、単一ラインに含まれる全てのキャッシュデータが連続的に書き換えられる操作に対してのみブロック転送を禁止し、それ以外に対してはブロック転送を許容する。例として、1ラインが4個のキャッシュデータを含む場合を考える。命令バッファレジスタは、直列4段の命令プリフェッチキューを備える。判定部は、直列4段の命令プリフェッチキューのそれぞれが保持する情報を並列的に受け取る。更に、判定部は、それぞれの命令がストア(書き込み)かロード(読み出し)かを検出し、また、それぞれの命令のアクセス対象が同一ブロックかどうかを検出する。そして、単一ラインの全てのキャッシュデータが連続的に書き換えられるような連続ストア命令の場合、判定部はライトアロケートを禁止する。例えば、当該特許文献の図10に示されているような「4連続ストア」の場合、判定部はライトアロケートを禁止する。一方、ストアが1回だけである「1ストア−3ロード」の場合、判定部はライトアロケートを許可する。
特開平11−312123号公報 特開平7−152650号公報 特開平7−210463号公報
ライトバック方式のキャッシュメモリにおいて、ライトアロケート方式と非ライトアロケート方式のいずれを使用するか決定することは、システム処理効率の観点から重要である。
上述の関連技術では、同じブロックに対する連続的なデータ書き込み要求や、単一ラインに含まれる全てのキャッシュデータが連続的に書き換えられる操作を検出する必要がある。しかしながら、スカラプロセッサの場合、あるデータ書き込み要求の次にアクセスされるアドレスを予測することは一般に困難である。従って、同じブロックに対する連続的なデータ書き込み要求や、単一ラインに含まれる全てのキャッシュデータが連続的に書き換えられる操作を検出するためには、上述の関連技術に記載されているような複雑な構成及び処理が必要となる。
本発明の1つの目的は、ベクトルプロセッサ用のライトバック方式のキャッシュメモリにおいて、ライトアロケート方式と非ライトアロケート方式とを動的に切り替えることにある。
本発明の第1の観点において、ベクトル計算機システムが提供される。そのベクトル計算機システムは、複数のストアリクエストを含むベクトルストア命令を発行するベクトルプロセッサと、ベクトルプロセッサとメインメモリとの間に設けられたライトバック方式のキャッシュメモリと、そのキャッシュメモリがライトアロケート方式で動作するか非ライトアロケート方式で動作するかを指定するアロケート制御信号を生成するライトアロケート決定部と、を備える。ベクトルプロセッサがベクトルストア命令を発行した時、ライトアロケート決定部は、複数のストアリクエストの対象アドレスのパターンである書き込みパターンに基づいて、複数のストアリクエストの各々に関してアロケート制御信号を生成する。キャッシュメモリは、ライトアロケート方式と非ライトアロケート方式のうちアロケート制御信号で指定される一方に従って、各々のストアリクエストを処理する。
本発明の第2の観点において、ベクトルプロセッサ用のライトバック方式のキャッシュメモリが提供される。そのキャッシュメモリは、当該キャッシュメモリがライトアロケート方式で動作するか非ライトアロケート方式で動作するかを指定するアロケート制御信号を生成するライトアロケート決定部と、ライトアロケート方式と非ライトアロケート方式のうちアロケート制御信号で指定される一方に従って、ストアリクエストを処理する書き込みコントローラと、を備える。ベクトルプロセッサが複数のストアリクエストを含むベクトルストア命令を発行した時、ライトアロケート決定部は、複数のストアリクエストの対象アドレスのパターンである書き込みパターンに基づいて、複数のストアリクエストの各々に関してアロケート制御信号を生成する。
本発明の第3の観点において、ベクトルプロセッサとライトバック方式のキャッシュメモリとを備えるベクトル計算機システムの動作方法が提供される。その動作方法は、(A)ベクトルプロセッサが、複数のストアリクエストを含むベクトルストア命令を発行するステップと、(B)複数のストアリクエストの対象アドレスのパターンである書き込みパターンに基づいて、複数のストアリクエストの各々をライトアロケート方式と非ライトアロケート方式のどちらで処理するかを指定するステップと、(C)キャッシュメモリが、ライトアロケート方式と非ライトアロケート方式のうち指定された一方に従って、各々のストアリクエストを処理するステップと、を含む。
本発明によれば、ベクトルプロセッサ用のライトバック方式のキャッシュメモリにおいて、ライトアロケート方式と非ライトアロケート方式とを動的に切り替えることが可能となる。それにより、システム処理効率を向上させることが可能となる。
添付図面を参照して、本発明の実施の形態を説明する。本実施の形態は、ベクトル演算を実行するベクトルプロセッサが搭載されたベクトル計算機システムにおけるキャッシュ制御に関する。
1.基本構成
図2は、本実施の形態に係るベクトル計算機システム1の構成を概略的に示すブロック図である。ベクトル計算機システム1は、ベクトルプロセッサ10、キャッシュメモリ20、メインメモリ30、及びライトアロケート決定部40を備えている。
キャッシュメモリ20は、ベクトルプロセッサ10用のキャッシュメモリであり、ベクトルプロセッサ10とメインメモリ30との間に設けられている。典型的には、ベクトルプロセッサ10とキャッシュメモリ20は1チップで構成される。尚、キャッシュメモリは階層的に設けられる場合もあるが、ここでは簡単のため、キャッシュメモリ20の下位記憶階層としてメインメモリ30だけを考える。複数のキャッシュメモリが階層的に設けられる場合であっても、同じ議論が適用され得る。本実施の形態において、キャッシュメモリ20は、ライトバック方式でデータライト処理を行い、ライトアロケート方式と非ライトアロケート方式の両方をサポートしている。後に詳しく説明されるように、ライトアロケート方式と非ライトアロケート方式とを動的に切り替え可能である。
キャッシュメモリ20には、メインメモリ30に記憶されているデータの一部が格納される。そのデータの格納領域が、データアレイ21である。データアレイ21はn本(nは2以上の整数)のラインL0〜L(n−1)を有しており、各ラインにラインサイズ分のデータが格納される。メインメモリ30に格納されているあるデータがキャッシュメモリ20に転送される際は、当該データを含むラインサイズ分のブロックデータが、メインメモリ30からあるラインにコピーされる。
図3は、キャッシュメモリ20のラインとメインメモリ30のブロックとの間の対応関係を示している。例として、1データ単位が8バイトであり、1ラインのラインサイズが32バイトである場合を考える。この場合、メインメモリ30の1つのブロックの大きさは、ラインサイズと同じ32バイトである。そして、キャッシュメモリ20の1つのラインとメインメモリ30の1つのブロックとが、互いに対応付けられる。より詳細には、メインメモリ30の先頭から順番に、ブロックが1つずつラインL0〜L(n−1)に対応付けられる。すなわち、メインメモリ30の先頭からn個のブロックBL00〜BL0(n−1)が、ラインL0〜L(n−1)のそれぞれに割り当てられる。これらブロックBL00〜BL0(n−1)は、1つのフレームFR0を構成している。また、続くフレームFR1も同様にn個のブロックBL10〜BL1(n−1)を含み、それらブロックBL10〜BL1(n−1)が、ラインL0〜L(n−1)のそれぞれに割り当てられる。つまり、異なるフレームに属する複数のブロックが、同じ1つのラインに割り当てられる。メインメモリ30は、例えばm個のフレームFR0〜FR(m−1)を備える。
尚、セットアソシアティブ(set associative)方式のキャッシュメモリ20の場合、図3に示されるように、同様のデータアレイ21が複数設けられる(その数は“way”と呼ばれる)。例えば2−wayの場合、同様の構成を有する2つのデータアレイ21−0、21−1が設けられる。そして、データアレイ21−0、21−1のそれぞれは、同じ1つのラインに対応付けられている異なるフレームのブロックデータを格納することができる。例えば、一方のデータアレイ21−0のラインL0に、フレームFR0のブロックBL00のデータが格納され、他方のデータアレイ21−1のラインL0に、異なるフレームFR1のブロックデータBL10のデータが格納され得る。
メインメモリ30に格納されているあるデータがキャッシュメモリ20に転送される際は、当該データを含む32バイトのブロックデータが、当該ブロックに割り当てられた1つのラインにコピーされる。このとき、その1つのラインに元々格納されているブロックデータは、必要に応じてメインメモリ30に書き戻される。
再度図2を参照して、ベクトルプロセッサ10は、ベクトル演算処理を行うプロセッサであり、複数要素からなるベクトルデータ(データ構造が配列)を扱う。より詳細には、ベクトルプロセッサ10は、「ベクトルロード」、「ベクトル演算」、「ベクトルストア」等のベクトル命令を発行する。ベクトルロードは、メインメモリ30からベクトルデータを読み出す命令であり、ベクトルストアは、メインメモリ30へベクトルデータを書き込む命令である。通常のスカラプロセッサの場合と異なり、ベクトルロード/ベクトルストア命令は、開始アドレス、データサイズ、アクセス対象データ間隔(ストライド、ディスタンス)等により規定される。それら情報はベクトル制御レジスタにセットされ、それにより、各要素に対するロード/ストアが順次実行される。
図4は、ベクトルストア命令の一例を概念的に示している。ここでは、ベクトル1要素は8バイトであり、256要素からなるベクトルデータのベクトルストア命令が例として示されている。より詳細には、ベクトルストア命令は、ベクトルデータの256要素のそれぞれに対応する時間的に連続した256個のストアリクエストを含んでいる。ディスタンスは、1ベクトル要素分の8バイトである。つまり、ストアリクエストの対象アドレスは連続的であり、開始アドレス“a”から終了アドレス“a+8B×255”にわたっている。それら開始アドレス、終了アドレス、及びディスタンスは、このベクトルストア命令の発行時に明らかになる。すなわち、どのアドレスに対してデータストアが行われるかを、ベクトルストア命令の発行時に認識することが可能である。
尚、図4に示されるように、ベクトルストア命令の開始アドレスは、あるブロックの先頭アドレスになるとは限らない。また、ベクトルストア命令の終了アドレスは、あるブロックの最終アドレスになるとは限らない。従って、全てのデータに対してアクセスが発生するようなブロックもあれば、一部のデータに対してだけアクセスが発生するようなブロックもあり得る。言い換えれば、ストアリクエストの対象アドレスのパターンは、1つのブロックに対して1回だけアクセスするパターン、2回アクセスするパターン、3回アクセスするパターン、最大の4回アクセスするパターンを含み得る。そのようなストアリクエストの対象アドレスのパターンは、以下、「書き込みパターンPAT」と参照される。あるベクトルストア命令の書き込みパターンPATは、そのベクトルストア命令の発行時点で知ることができることに留意されたい。
本実施の形態は、上記ベクトルストア命令に関する書き込みパターンPATに応じて、キャッシュメモリ20の動作方式をライトアロケート方式と非ライトアロケート方式との間で動的に切り替えることを特徴とする。そのための構成が、図2で示される「ライトアロケート決定部(ライトアロケート決定部)40」である。このライトアロケート決定部40は、ベクトルプロセッサ10内に構築されてもよいし、キャッシュメモリ20内に構築されてもよい。
ベクトルプロセッサ10がベクトルストア命令を発行した時、ライトアロケート決定部40は、上述の書き込みパターンPATを認識し、その書き込みパターンPATに基づいて「アロケート制御信号CON」を生成する。アロケート制御信号CONは、キャッシュメモリ20におけるライトアロケートの可否、すなわち、キャッシュメモリ20がライトアロケート方式で動作するか非ライトアロケート方式で動作するかを指定する。このアロケート制御信号CONは、ベクトルストア命令の各ストアリクエストに関して生成される。キャッシュメモリ20は、アロケート制御信号CONを受け取り、受け取ったアロケート制御信号CONで指定される方式に従って、各ストアリクエストを処理する。
2.ライトアロケートの可否
次に、ライトアロケートの可否の判断基準の一例を説明する。尚、下記の判断基準はあくまでも一例であり、システム構成に応じて適宜変更されてもよい。図5は、ベクトルストア命令に関する書き込みパターンPATが含み得る3種類のパターンP1〜P3を概念的に示している。書き込みパターンPATは、これら3種類のパターンP1〜P3のうち少なくとも1つを含む。
第1パターンP1は、ある1つのブロックに含まれる全てのデータに対してストアリクエストが発生するパターンである。この第1パターンP1の場合、当該1つのブロックに対して8バイト書き込みが連続的に4回行われ、全てのデータが更新される。仮に、キャッシュメモリ20がライトアロケート方式で動作する場合を考える。1回目の8バイト書き込み時にキャッシュミスであれば、当該8バイトデータを含む32バイトのブロックデータが、キャッシュメモリ20中の該当ラインにロードされる(ラインリプレース)。その後、当該8バイトデータがそのラインに書き込まれる。続く2〜4回目の8バイト書き込み時には、キャッシュヒットが保証される。しかしながらこの場合、ライトアロケートにより最初にキャッシュメモリ20にロードされた32バイトのブロックデータは、1度も参照されることなく、全て書き換えられてしまう。すなわち、最初の32バイトのブロックデータのロードは、結果的に無意味な操作となってしまう。このことは、下位記憶階層であるメインメモリ30に不要な要求(ロードリクエスト)を与えてしまったことを意味する。従って、第1パターンP1の場合にライトアロケート方式を指示することは好ましくない。本実施の形態では、第1パターンP1の場合、ライトアロケート決定部40は、「非ライトアロケート方式」を指定するアロケート制御信号CONを生成する。その結果、メインメモリ30にかかる負荷が軽減される。また、不要なラインリプレースも行われないため、その後のキャッシュヒット率の向上も期待される。
第2パターンP2は、ある1つのブロックに対して、1回だけストアリクエストが発生するパターンである。この第2パターンP2の場合、当該1つのブロックに対して8バイト書き込みが1回だけ行われる。仮に、キャッシュメモリ20がライトアロケート方式で動作する場合を考える。キャッシュミスであれば、当該8バイトデータを含む32バイトのブロックデータが、キャッシュメモリ20中の該当ラインにロードされる(ラインリプレース)。その後、当該8バイトデータがそのラインに書き込まれる。しかしながら、その後は当該1つのブロックに対して書き込みは行われず、キャッシュヒットの恩恵が得られない。すなわち、最初の32バイトのブロックデータのロードは、ベクトルストア動作の高速化に一切寄与しない。このことは、下位記憶階層であるメインメモリ30に不要な要求(ロードリクエスト)を与えてしまったことを意味する。従って、第2パターンP2の場合にライトアロケート方式を指示することは好ましくない。本実施の形態では、第2パターンP2の場合、ライトアロケート決定部40は、「非ライトアロケート方式」を指定するアロケート制御信号CONを生成する。その結果、メインメモリ30にかかる負荷が軽減される。また、不要なラインリプレースも行われないため、その後のキャッシュヒット率の向上も期待される。
第3パターンP3は、第1パターンP1及び第2パターンP2以外のパターンである。すなわち、第3パターンP3の場合、ある1つのブロックに対して、2回あるいは3回のストアリクエストが発生する。仮に、キャッシュメモリ20がライトアロケート方式で動作する場合を考える。1回目の8バイト書き込み時にキャッシュミスであれば、当該8バイトデータを含む32バイトのブロックデータが、キャッシュメモリ20中の該当ラインにロードされる。その後、当該8バイトデータがそのラインに書き込まれる。続く2回目(及び3回目)の8バイト書き込み時には、キャッシュヒットが保証される。このことは、ベクトルストア動作の高速化に寄与する。更に、ライトアロケートにより最初にキャッシュメモリ20にロードされた32バイトのブロックデータの一部は、書き換えられることなく、そのまま残る。つまり、最初の32バイトのブロックデータのロードは、無意味ではなく、その後のキャッシュヒット率の向上が期待される。従って、第3パターンP3の場合はライトアロケート方式が好適である。本実施の形態では、第3パターンP3の場合、ライトアロケート決定部40は、「ライトアロケート方式」を指定するアロケート制御信号CONを生成する。
図6は、ベクトルストア命令の一例を概念的に示している。本例では、メインメモリ30上で連続的に位置する40要素に対するベクトルストア命令が発行される。そのベクトルストア命令は、それら40要素のそれぞれに対するストアリクエストを含んでおり、アクセス対象データ間隔は1ベクトル要素分の8バイトである。つまり、それぞれのストアリクエストの対象アドレスは連続している。全ての対象アドレス(書き込みパターンPAT)は、当該ベクトルストア命令の発行時に判明することに留意されたい。最初のブロックBL(i)に対する書き込みパターンは、2回のストアリクエストが発生する上述の第3パターンP3である。従って、それら2回のストアリクエストに関しては、ライトアロケート方式が指定される。続くブロックBL(i+1)〜BL(i+9)に対する書き込みパターンは上述の第1パターンP1であるため、非ライトアロケート方式が指定される。最後のブロックBL(i+10)に対する書き込みパターンは再び第3パターンP3であるため、ライトアロケート方式が指定される。
図7は、ベクトルストア命令の他の例を概念的に示している。本例では、メインメモリ30上で離散的に位置する20要素に対するベクトルストア命令が発行される。そのベクトルストア命令は、それら20要素のそれぞれに対するストアリクエストを含んでおり、アクセス対象データ間隔は2ベクトル要素分の16バイトである。つまり、それぞれのストアリクエストの対象アドレスは、16バイト置きに飛び飛びで変化する。全ての対象アドレス(書き込みパターンPAT)は、当該ベクトルストア命令の発行時に判明することに留意されたい。最初のブロックBL(i)に対する書き込みパターンは、ストアリクエストが1回だけ発生する上述の第2パターンP2である。従って、その1回のストアリクエストに関しては、非ライトアロケート方式が指定される。続くブロックBL(i+1)〜BL(i+9)に対する書き込みパターンは上述の第3パターンP3であるため、ライトアロケート方式が指定される。最後のブロックBL(i+10)に対する書き込みパターンは再び第2パターンP2であるため、非ライトアロケート方式が指定される。
以上に説明されたように、本実施の形態によれば、ベクトルストア命令の書き込みパターンPATが着目される。その書き込みパターンPATは、そのベクトルストア命令の発行時点で知ることができる。そして、その書き込みパターンPATに応じて、キャッシュメモリ20の動作方式が、ライトアロケート方式と非ライトアロケート方式との間で動的に切り替えられる。具体的には、第1パターンP1あるいは第2パターンP2のストアリクエストに関しては、非ライトアロケート方式が採用される。その結果、不要なライトアロケートが排除され、下位記憶階層であるメインメモリ30にかかる負荷が軽減される。従って、メインメモリ30の性能低下が防止される。また、不要なラインリプレースも行われないため、その後のキャッシュヒット率の向上も期待される。このように、システム処理効率を向上させることが可能となる。
3.キャッシュメモリ20
図8は、本実施の形態に係るベクトル計算機システム1に搭載されるキャッシュメモリ20の基本構成の一例を示している。例として、セットアソシアティブ方式のキャッシュメモリ20を考える。そのキャッシュメモリ20は、上述のデータアレイ21に加えて、タグアレイ22、LRUアレイ23、比較器24、及び書き込みコントローラ25を有している。
上述の通り、キャッシュメモリ20の各ラインとメインメモリ30の各ブロックとの間の対応関係は、予め定められている(図3参照)。そして、データアレイ21のラインL0〜L(n−1)の各々には、対応付けられたブロックのデータが格納される。また、セットアソシアティブ方式の場合、Way数分のデータアレイ21が設けられる。例えば図8において、同様の構成を有する2つのデータアレイ21−0、21−1が設けられている。異なるWayの同じ1つのラインには、当該1つのラインに対応付けられている異なるフレームのブロックデータを格納することができる(図3参照)。例えば図3を参照して、データアレイ21−0のラインL0に、フレームFR0のブロックBL00のデータが格納され、データアレイ21−1のラインL0に、異なるフレームFR1のブロックデータBL10のデータが格納され得る。
タグアレイ22は、データアレイ21の各ラインにどのフレームのブロックデータが格納されているかを示す。より詳細には、タグアレイ22は、ラインL0〜L(n−1)のそれぞれに対応するライン数分のエントリを有している。各エントリには「タグ情報」が格納される。タグ情報は、対応ラインにどのフレームのデータが格納されているかを示し、典型的には、当該ブロックのアドレスの上位ビットで構成される。また、セットアソシアティブ方式の場合、データアレイ21と同様に、Way数分のタグアレイ22が設けられる。例えば図8において、同様の構成を有する2つのタグアレイ22−0、22−1が設けられている。タグアレイ22−0、22−1のそれぞれには、データアレイ21−0、21−1のそれぞれに関するタグ情報が格納される。
上述の通り、異なるWayの同じ1つのラインには、当該1つのラインに対応付けられている異なるフレームのブロックデータが格納され得る。例えば、データアレイ21−0のラインL0に、フレームFR0のブロックBL00のデータが格納され、データアレイ21−1のラインL0に、異なるフレームFR1のブロックデータBL10のデータが格納されているとする(図3参照)。ここで、更に異なるフレームのブロックデータであって、同じラインL0に割り当てられているブロックデータが、新たにキャッシュメモリ20に格納される場合を考える。この場合、ラインリプレースが必要であり、いずれかWayのラインL0を解放する必要がある。いずれのWayのラインL0を解放するかは、所定のアルゴリズムに従って決定される。例えば、一番長く使われていない方のWayのラインL0が解放される。このような方式は、「LRU(Least Recently Used)方式」と呼ばれている。各ラインに関して最も長く使われていないWayを示す情報は、以下「LRU情報LRU」と参照される。LRU情報LRUは、ラインリプレース時にどのWayを解放するかを示す指針であると言える。
キャッシュメモリ20のラインL0〜L(n−1)のそれぞれに関するLRU情報LRUを示すのが、図8に示されるLRUアレイ23である。より詳細には、LRUアレイ23は、ラインL0〜L(n−1)のそれぞれに対応するライン数分のエントリを有している。各エントリには、対応ラインに関するLRU情報LRUが格納される。あるラインのリプレース時には、当該ラインのLRU情報LRUが参照される。
メインメモリ30上のあるアドレスに対して、書き込みデータDWが書き込まれる場合を考える。このとき、キャッシュメモリ20には、書き込みデータDWと書き込み対象アドレスを示すアドレス信号ADDが入力される。アドレス信号ADDからは、どのラインに対応付けられたブロックがアクセス対象か判明する。従って、アドレス信号ADDを用いることにより、該当ラインの情報を読み出すことができる。具体的には、タグアレイ22が参照され、タグアレイ22−0、22−1の各々から該当ラインのタグ情報が読み出される。また、LRUアレイ23が参照され、LRUアレイ23から該当ラインのLRU情報LRUが読み出される。
比較器24は、アドレス信号ADDに含まれるタグ情報と、各タグアレイ22から読み出されたタグ情報との比較を行う。比較結果が一致の場合、それはキャッシュヒットを意味する。一方、比較結果が不一致の場合、それはキャッシュミスを意味する。比較器24は、キャッシュヒットあるいはキャッシュミスを示すヒット/ミス信号HMを出力する。
書き込みコントローラ25は、ヒット/ミス信号HM、LRU情報LRU、及び書き込みデータDWを受け取る。更に、本実施の形態によれば、書き込みコントローラ25は、上述のライトアロケート決定部40によって生成されたアロケート制御信号CONを受け取る。その後の書き込みコントローラ25の処理は、ヒット/ミス信号HM及びアロケート制御信号CONに依存して変わる。
図9は、本実施の形態に係るベクトル計算機1の動作を示すフローチャートである。まず、ベクトルプロセッサ10がベクトルストア命令を発行する(ステップS10)。次に、ライトアロケート決定部40は、各ストアリクエストに関してライトアロケート方式あるいは非ライトアロケート方式を指定する(ステップS20)。具体的には、ライトアロケート決定部40は、ベクトルストア命令の書き込みパターンPATに基づいて、各ストアリクエストに関して上述のアロケート制御信号CONを生成する。そして、ライトアロケート決定部40は、生成したアロケート制御信号CONを書き込みコントローラ25に出力する。キャッシュメモリ20において、書き込みコントローラ25は、ヒット/ミス信号HM及びアロケート制御信号CONに応じて適切な書き込み処理を実行する(ステップS30)。
ヒット/ミス信号HMがキャッシュヒットを示している場合(ステップS31;Yes)、書き込みコントローラ25は、キャッシュメモリ20中の該当ラインへ書き込みデータDWを書き込む(ステップS32)。これにより、書き込み処理が高速化される。
ヒット/ミス信号HMがキャッシュミスを示している場合(ステップS31;No)、書き込みコントローラ25は、アロケート制御信号CONに従って、ライトアロケート方式あるいは非ライトアロケート方式のいずれかで動作する。アロケート制御信号CONが非ライトアロケート方式を指定している場合(ステップS33;Yes)、書き込みコントローラ25は、メインメモリ30へ書き込みデータDWを書き込む(ステップS34)。
一方、アロケート制御信号CONがライトアロケート方式を指定している場合(ステップS33;No)、書き込みコントローラ25はライトアロケートを実施する。具体的には、書き込みコントローラ25は、メインメモリ30に対して、書き込み対象アドレスを含むブロックを要求するロードリクエストLREQを発行する(ステップS35)。メインメモリ30は、そのロードリクエストLREQに応答して当該ブロックデータDLINE’を読み出し、読み出したブロックデータDLINE’を書き込みコントローラ25に送る。書き込みコントローラ25は、当該ブロックデータDLINE’を受け取り、そのブロックデータDLINE’を用いてラインリプレースを行う(ステップS36)。具体的には、書き込みコントローラ25は、LRU情報LRUで示されるWayの該当ラインを解放する。この時、必要に応じて、書き込みコントローラ25は、該当ラインに元々格納されているラインデータDLINEをメインメモリ30にライトバックする。そして、書き込みコントローラ25は、上記ブロックデータDLINE’を新たなラインデータとして、該当ラインに書き込む。この時、該当ラインのタグ情報やLRU情報も更新される。その後、書き込みコントローラ25は、該当ラインへ書き込みデータDWを書き込む(ステップS37)。
以上に説明されたように、書き込みコントローラ25は、アロケート制御信号CONに従って、ライトアロケート方式と非ライトアロケート方式を切り替える。そのアロケート制御信号CONを生成するライトアロケート決定部40としては、以下に説明されるように、様々な形態が考えられる。
4.ライトアロケート決定部40
4−1.第1の例
図10は、ライトアロケート決定部40の第1の例を示すブロック図である。アドレスレジスタ51には、対象アドレスが格納される。対象アドレスは、ディスタンスずつ更新される。ディスタンスレジスタ52には、ディスタンスが格納される。残要素数レジスタ53には、ストアリクエストの残数、すなわち、書き込み対象要素の残数が格納される。全要素数レジスタ53には、ベクトルストア命令に含まれるストアリクエストの総数、すなわち、書き込み対象要素の総数が格納される。
ブロック変化判定部61は、現在の対象アドレスとディスタンスに基づいて、次の対象アドレスがブロック境界を超えるか否かを判定する。具体的には、現在の対象アドレスのうち上位ビットが示す現在のブロック境界アドレス(32B境界アドレス)が、レジスタに保持される。現在のブロック境界アドレスにブロックサイズ(32バイト)を足すことにより、次のブロック境界アドレスが得られる。また、現在の対象アドレスにディスタンスを足すことにより、次の対象アドレスが得られる。ブロック変化判定部61は、次の対象アドレスを次のブロック境界アドレスと比較し、その比較結果を出力する。次の対象アドレスが次のブロック境界アドレスより小さい場合、すなわち、書き込み対象ブロックが次も同じである場合、ブロック変化判定部61は「1」を出力する。一方、次の対象アドレスが次のブロック境界アドレス以上である場合、すなわち、書き込み対象ブロックが次に変化する場合、ブロック変化判定部61は「0」を出力する。
ディスタンス判定部62は、ディスタンスが1要素分(8バイト)か否かを判定する。すなわち、ディスタンス判定部62は、ベクトルストア命令が連続的(図6参照)か離散的(図7参照)かを判定する。ディスタンスが8バイトである場合、ディスタンス判定部62は「0」を出力する。それ以外の場合、ディスタンス判定部62は「1」を出力する。
ANDゲート66は、ブロック変化判定部61の出力とディスタンス判定部62の出力を受け取る。書き込み対象ブロックが次も同じであり、且つ、ディスタンスが8バイトではない場合、ANDゲート66の出力は「1」となる。この場合は、例えば図7で示された第3パターンP3に相当する。ANDゲート66の出力が「1」であるため、ORゲート67の出力、すなわちアロケート制御信号CONは「1」となる。このように、図7で示された第3パターンP3の場合、ライトアロケートを指定するアロケート制御信号CONが出力される。
また、図6で示されたように、ディスタンスが8バイトである場合も第3パターンP3を含み得る。図6で示された第3パターンP3の場合も、ORゲート67の出力、すなわちアロケート制御信号CONが「1」である必要がある。しかしながら、ディスタンスが8バイトである場合、ディスタンス判定部62は「0」を出力するため、ANDゲート66の出力も「0」となる。ORゲート67の出力を「1」にするためには、ANDゲート66以外から「1」をORゲート67に入力する必要がある。そのために、開始ブロック判定部63及び最終ブロック判定部64が設けられている。開始ブロック判定部63は、開始ブロックに対する書き込みパターンが第3パターンP3である場合に、「1」を出力する。最終ブロック判定部64は、最終ブロックに対する書き込みパターンが第3パターンP3である場合に、「1」を出力する。その結果、図6で示された第3パターンP3の場合も、ORゲート67の出力、すなわちアロケート制御信号CONが「1」となる。
より詳細には、開始ブロック判定部63は、対象アドレスの下位ビット(32B境界以下アドレス)をディスタンスで割る。比較器68は、その割り算で得られた商が1あるいは2であることを検出する。つまり、比較器68は、例えば図6で示された第3パターンP3を検出する。その一方で、比較器65は、残要素数レジスタ53に格納されている残要素数と全要素数レジスタ54に格納されている全要素数との比較を行う。残要素数が全要素数と同じである場合、すなわち、開始ブロックの場合、比較器65は「1」を出力する。ANDゲート69は、比較器65、68の出力を受け取る。そして、開始ブロックにおいて第3パターンP3が発生する場合、ANDゲート69(開始ブロック判定部63)は、「1」を出力する。
最終ブロック判定部64は、上記ブロック変化判定部61の出力と、残要素数レジスタ53に格納されている残要素数を受け取る。書き込み対象ブロックが次も同じであり、且つ、残要素数が2あるいは3である場合、それは最終ブロックにおいて第3パターンP3が発生することを意味する。従って、その場合、最終ブロック判定部64は「1」を出力する。
以上に説明されたように、第3パターンP3の場合、ORゲート67の出力は「1」となり、ライトアロケートを指定するアロケート制御信号CONが出力される。それ以外の場合は、ORゲート67の出力は「0」となり、非ライトアロケートを指定するアロケート制御信号CONが出力される。このように、書き込みパターンPATに応じてライトアロケートと非ライトアロケートとを切り替えることが可能である。本例では、ベクトルストア命令から判明する対象アドレス、ディスタンス及び要素数が、書き込みパターンPATに相当していると言える。図10で示された構成は、例えばベクトルプロセッサ10内に構築される。
4−2.第2の例
図11は、ベクトル計算機システム1の一例を概略的に示している。図11の例では、1ブロック分(32バイト)のデータがベクトルプロセッサ10からキャッシュメモリ20に転送される。このとき、ベクトルプロセッサ10は、ライトイネーブル信号WEも出力する。ライトイネーブル信号WEは、1ブロック分(32バイト)のデータに含まれる各要素(8バイト)が書き込み対象か否かを示す4ビットの信号である。例えば、WE=「1001」の場合、最初と最後の要素が書き込み対象である。また、WE=「1111」の場合、全ての要素が書き込み対象である。このように、ライトイネーブル信号WEは、上述の書き込みパターンPATに相当すると言える。従って、ライトアロケート決定部40は、ライトイネーブル信号WEを書き込みパターンPATとして受け取り、そのライトイネーブル信号WEに基づいてアロケート制御信号CONを生成することができる。
図12は、本例におけるライトアロケート決定部40の構成を示している。ライトアロケート決定部40は、パターン判定部70を有している。このパターン判定部70は、ライトイネーブルキューからライトイネーブル信号WEを受け取る。そして、パターン判定部70は、ライトイネーブル信号WEが上述の第1〜第3パターンP1〜P3のいずれに相当するかの判定を行い、その判定結果に応じたアロケート制御信号CONを出力する。
より詳細には、パターン判定部70は、EXORゲート71、ANDゲート72〜77、ORゲート78、及びANDゲート79を備えている。EXORゲート71の出力は、WE=「1111」の場合に「0」となり、それ以外の場合は「1」となる。また、WE=「1000」、「0100」、「0010」、「0001」の場合にANDゲート72〜77の全ての出力が「0」となり、それ以外の場合はANDゲート72〜77の少なくとも1つの出力が「1」となる。従って、ORゲート78の出力は、WE=「1000」、「0100」、「0010」、「0001」の場合に「0」となり、それ以外の場合は「1」となる。その結果、ANDゲート79の出力は、WE=「1111」、「1000」、「0100」、「0010」、「0001」の場合に「0」となり、それ以外の場合は「1」となる。すなわち、第1パターンP1あるいは第2パターンP2の場合、アロケート制御信号CONは「0」となり、第3パターンP3の場合、アロケート制御信号CONは「1」となる。このように、書き込みパターンPAT(ライトイネーブル信号WE)に応じてライトアロケートと非ライトアロケートとを切り替えることが可能である。
4−3.第3の例
図13は、マルチコアの場合のベクトル計算機システム1を概略的に示している。この場合、キャッシュメモリ20は、複数のベクトルプロセッサ10によって共有される。例えば図13において、キャッシュメモリ20は、ベクトルプロセッサ10−0、10−1によって共有される。このとき、上述の第2の例のような転送バンド幅の大きなデータパスを設けることが実装的に不可能な場合がある。
そこで、各ベクトルプロセッサ10は、同一ブロックに対するストアリクエストを示す「同一ブロックフラグFLG」を出力する。同一ブロックフラグFLGは、同一ブロックへのストアリクエストに関しては同じ値に設定され、また、対象ブロックが変わるたびに反転させられる。つまり、同一ブロックフラグFLGは、ブロック毎に反転(トグル)させられる。例えば、同一ブロックフラグFLGの列が「11000011」の場合、1番目と2番目が同じブロックへのストアリクエストであり、3番目から6番目が次の同じブロックへのストアリクエストであり、7番目と8番目が更に次の同じブロックへのストアリクエストである。リクエストアービタ80は、同一ブロックフラグFLGを参照し、同一ブロックフラグFLGが同じ値を示す間は、連続してストアリクエストをアービトレーションする。
本例では、複数のストアリクエストに関する同一ブロックフラグFLGが、上述の書き込みパターンPATに相当する。従って、ライトアロケート決定部40は、同一ブロックフラグFLGを書き込みパターンPATとして受け取り、その同一ブロックフラグFLGに基づいてアロケート制御信号CONを生成することができる。つまり、ライトアロケート決定部40は、同一ブロックフラグFLGの列が上述の第1〜第3パターンP1〜P3のいずれに相当するかの判定を行い、その判定結果に応じたアロケート制御信号CONを出力する。
図14は、本例におけるライトアロケート決定部40の構成を示している。ライトアロケート決定部40は、パターン判定部90、ブロック変化検出部100、及びレジスタ110を有している。
パターン判定部90は、直近の複数の同一ブロックフラグFLGに基づいて、同一ブロックへのストアリクエストが何回続くか判定する。つまり、パターン判定部90は、直近の同一ブロックフラグFLGの列が第1〜第3パターンP1〜P3のいずれに相当するかの判定を行う。具体的には、図14に示されるように、パターン判定部90は、NORゲート91〜93、ANDゲート94〜96、ORゲート97、NORゲート98、及びANDゲート99を含んでいる。NORゲート91とANDゲート94は、直近の2個の同一ブロックフラグFLGの状態を検出する。NORゲート92とANDゲート95は、直近の3個の同一ブロックフラグFLGの状態を検出する。NORゲート93とANDゲート96は、直近の4個の同一ブロックフラグFLGの状態を検出する。同一ブロックへのストアリクエストが2回あるいは3回続く場合、ANDゲート99の出力は「1」となり、それ以外の場合、ANDゲート99の出力は「0」となる。すなわち、パターン判定部90は、第3パターンP3の場合に「1」を出力し、第1パターンP1あるいは第2パターンP2の場合に「0」を出力する。
ブロック変化検出部100は、ストアリクエストの対象ブロックの変化を検出する。直近の2個の同一ブロックフラグFLGが反転(トグル)していれば、それは対象ブロックの変化を意味する。従って、ブロック変化検出部100は、直近の2個の同一ブロックフラグFLGに基づいて、対象ブロックの変化を検出することができる。対象ブロックの変化を検出すると、ブロック変化検出部100はリセット信号をレジスタ110に出力する。
レジスタ110は、パターン判定部90の出力データを受け取り、リセット信号が入力されるまでそのデータを保持する。そして、レジスタ100で保持されているデータが、アロケート制御信号CONとして出力される。すなわち、第1パターンP1あるいは第2パターンP2の場合、アロケート制御信号CONは「0」となり、第3パターンP3の場合、アロケート制御信号CONは「1」となる。このように、書き込みパターンPAT(ライトイネーブル信号WE)に応じてライトアロケートと非ライトアロケートとを切り替えることが可能である。
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
図1は、キャッシュメモリを備える計算機システムにおけるデータライト方式を示している。 図2は、本発明の実施の形態に係るベクトル計算機システムの構成を概略的に示すブロック図である。 図3は、キャッシュメモリのラインとメインメモリのブロックとの間の対応関係を概念的に示している。 図4は、ベクトルプロセッサによって発行されるベクトルストア命令の一例を概念的に示している。 図5は、ベクトルストア命令に関する書き込みパターンが含み得る3種類のパターンを概念的に示している。 図6は、ベクトルストア命令の一例を概念的に示している。 図7は、ベクトルストア命令の他の例を概念的に示している。 図8は、本実施の形態に係るベクトル計算機システムに搭載されるキャッシュメモリの基本構成の一例を示すブロック図である。 図9は、本実施の形態に係るベクトル計算機の動作を示すフローチャートである。 図10は、本実施の形態に係るライトアロケート決定部の第1の例を示すブロック図である。 図11は、本実施の形態に係るベクトル計算機システムの一例を示すブロック図である。 図12は、本実施の形態に係るライトアロケート決定部の第2の例を示すブロック図である。 図13は、本実施の形態に係るベクトル計算機システムの他の例を示すブロック図である。 図14は、本実施の形態に係るライトアロケート決定部の第3の例を示すブロック図である。
符号の説明
1 ベクトル計算機システム
10 ベクトルプロセッサ
20 キャッシュメモリ
21 データアレイ
22 タグアレイ
23 LRUアレイ
24 比較器
25 書き込みコントローラ
30 メインメモリ
40 ライトアロケート決定部
70 パターン判定部
80 リクエストアービタ
90 パターン判定部
CON アロケート制御信号

Claims (10)

  1. 複数のストアリクエストを含むベクトルストア命令を発行するベクトルプロセッサと、
    前記ベクトルプロセッサとメインメモリとの間に設けられたライトバック方式のキャッシュメモリと、
    前記キャッシュメモリがライトアロケート方式で動作するか非ライトアロケート方式で動作するかを指定するアロケート制御信号を生成するライトアロケート決定部と
    を備え、
    前記ベクトルプロセッサが前記ベクトルストア命令を発行した時、前記ライトアロケート決定部は、前記複数のストアリクエストの対象アドレスのパターンである書き込みパターンに基づいて、前記複数のストアリクエストの各々に関して前記アロケート制御信号を生成し、
    前記キャッシュメモリは、前記ライトアロケート方式と前記非ライトアロケート方式のうち前記アロケート制御信号で指定される一方に従って、前記各々のストアリクエストを処理する
    ベクトル計算機システム。
  2. 請求項1に記載のベクトル計算機システムであって、
    前記メインメモリの1ブロックは、前記キャッシュメモリの1ラインに対応付けられ、
    前記書き込みパターンは、
    前記メインメモリのあるブロックに含まれる全てのデータに対してストアリクエストが発生する第1パターンと、
    前記メインメモリのあるブロックに対して1回だけストアリクエストが発生する第2パターンと、
    前記第1パターン及び前記第2パターン以外の第3パターンと
    のうち少なくとも1つを含み、
    前記第1パターンあるいは前記第2パターンの場合、前記ライトアロケート決定部は、前記非ライトアロケート方式を指定する前記アロケート制御信号を生成し、
    前記第3パターンの場合、前記ライトアロケート決定部は、前記ライトアロケート方式を指定する前記アロケート制御信号を生成する
    ベクトル計算機システム。
  3. 請求項2に記載のベクトル計算機システムであって、
    前記複数のストアリクエストの対象データは、前記メインメモリ上で連続的に位置し、
    前記書き込みパターンは、少なくとも前記第1パターンを含む
    ベクトル計算機システム。
  4. 請求項2に記載のベクトル計算機システムであって、
    前記複数のストアリクエストの対象データは、前記メインメモリ上で離散的に位置し、
    前記書き込みパターンは、前記第2パターンと前記第3パターンのうち少なくとも一方を含む
    ベクトル計算機システム。
  5. 請求項2乃至4のいずれか一項に記載のベクトル計算機システムであって、
    前記ベクトルプロセッサは、1ブロック分のデータと共に、前記1ブロック分のデータに含まれる各要素が書き込み対象か否かを示すライトイネーブル信号を出力し、
    前記ライトアロケート決定部は、前記ライトイネーブル信号を前記書き込みパターンとして受け取り、前記ライトイネーブル信号が前記第1パターン、前記第2パターン及び前記第3パターンのいずれに相当するか判定する
    ベクトル計算機システム。
  6. 請求項2乃至4のいずれか一項に記載のベクトル計算機システムであって、
    前記ベクトルプロセッサは、前記複数のストアリクエストに関して、ブロック毎に反転する同一ブロックフラグを出力し、
    前記ライトアロケート決定部は、前記同一ブロックフラグを前記書き込みパターンとして受け取り、前記同一ブロックフラグが前記第1パターン、前記第2パターン及び前記第3パターンのいずれに相当するか判定する
    ベクトル計算機システム。
  7. ベクトルプロセッサ用のライトバック方式のキャッシュメモリであって、
    前記キャッシュメモリがライトアロケート方式で動作するか非ライトアロケート方式で動作するかを指定するアロケート制御信号を生成するライトアロケート決定部と、
    前記ライトアロケート方式と前記非ライトアロケート方式のうち前記アロケート制御信号で指定される一方に従って、ストアリクエストを処理する書き込みコントローラと
    を備え、
    前記ベクトルプロセッサが複数のストアリクエストを含むベクトルストア命令を発行した時、前記ライトアロケート決定部は、前記複数のストアリクエストの対象アドレスのパターンである書き込みパターンに基づいて、前記複数のストアリクエストの各々に関して前記アロケート制御信号を生成する
    キャッシュメモリ。
  8. 請求項7に記載のキャッシュメモリであって、
    メインメモリの1ブロックは、前記キャッシュメモリの1ラインに対応付けられ、
    前記書き込みパターンは、
    前記メインメモリのあるブロックに含まれる全てのデータに対してストアリクエストが発生する第1パターンと、
    前記メインメモリのあるブロックに対して1回だけストアリクエストが発生する第2パターンと、
    前記第1パターン及び前記第2パターン以外の第3パターンと
    のうち少なくとも1つを含み、
    前記第1パターンあるいは前記第2パターンの場合、前記ライトアロケート決定部は、前記非ライトアロケート方式を指定する前記アロケート制御信号を生成し、
    前記第3パターンの場合、前記ライトアロケート決定部は、前記ライトアロケート方式を指定する前記アロケート制御信号を生成する
    キャッシュメモリ。
  9. ベクトルプロセッサとライトバック方式のキャッシュメモリとを備えるベクトル計算機システムの動作方法であって、
    前記ベクトルプロセッサが、複数のストアリクエストを含むベクトルストア命令を発行するステップと、
    前記複数のストアリクエストの対象アドレスのパターンである書き込みパターンに基づいて、前記複数のストアリクエストの各々をライトアロケート方式と非ライトアロケート方式のどちらで処理するかを指定するステップと、
    前記キャッシュメモリが、前記ライトアロケート方式と前記非ライトアロケート方式のうち前記指定された一方に従って、前記各々のストアリクエストを処理するステップと
    を含む
    ベクトル計算機システムの動作方法。
  10. 請求項9に記載のベクトル計算機システムの動作方法であって、
    メインメモリの1ブロックは、前記キャッシュメモリの1ラインに対応付けられ、
    前記書き込みパターンは、
    前記メインメモリのあるブロックに含まれる全てのデータに対してストアリクエストが発生する第1パターンと、
    前記メインメモリのあるブロックに対して1回だけストアリクエストが発生する第2パターンと、
    前記第1パターン及び前記第2パターン以外の第3パターンと
    のうち少なくとも1つを含み、
    前記第1パターンあるいは前記第2パターンの場合、前記非ライトアロケート方式が指定され、
    前記第3パターンの場合、前記ライトアロケート方式が指定される
    ベクトル計算機システムの動作方法。
JP2008258032A 2008-10-03 2008-10-03 キャッシュメモリを備えるベクトル計算機システム、及びその動作方法 Expired - Fee Related JP4888839B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008258032A JP4888839B2 (ja) 2008-10-03 2008-10-03 キャッシュメモリを備えるベクトル計算機システム、及びその動作方法
US12/573,400 US8151058B2 (en) 2008-10-03 2009-10-05 Vector computer system with cache memory and operation method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008258032A JP4888839B2 (ja) 2008-10-03 2008-10-03 キャッシュメモリを備えるベクトル計算機システム、及びその動作方法

Publications (2)

Publication Number Publication Date
JP2010086496A true JP2010086496A (ja) 2010-04-15
JP4888839B2 JP4888839B2 (ja) 2012-02-29

Family

ID=42076711

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008258032A Expired - Fee Related JP4888839B2 (ja) 2008-10-03 2008-10-03 キャッシュメモリを備えるベクトル計算機システム、及びその動作方法

Country Status (2)

Country Link
US (1) US8151058B2 (ja)
JP (1) JP4888839B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015232879A (ja) * 2014-06-05 2015-12-24 エイアールエム リミテッド データ処理装置における動的なキャッシュ・アロケーション・ポリシーの適応
US9753799B2 (en) 2014-12-13 2017-09-05 Via Alliance Semiconductor Co., Ltd. Conditional pattern detector for detecting hangs
US9946651B2 (en) 2014-12-13 2018-04-17 Via Alliance Semiconductor Co., Ltd Pattern detector for detecting hangs
US10067871B2 (en) 2014-12-13 2018-09-04 Via Alliance Semiconductor Co., Ltd Logic analyzer for detecting hangs
US10324842B2 (en) 2014-12-13 2019-06-18 Via Alliance Semiconductor Co., Ltd Distributed hang recovery logic

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8533396B2 (en) * 2010-11-19 2013-09-10 Advanced Micro Devices, Inc. Memory elements for performing an allocation operation and related methods
US10108548B2 (en) 2014-08-19 2018-10-23 MIPS Tech, LLC Processors and methods for cache sparing stores
GB2543303B (en) * 2015-10-14 2017-12-27 Advanced Risc Mach Ltd Vector data transfer instruction

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58118083A (ja) * 1981-12-30 1983-07-13 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 多重処理システムにおけるキヤツシユ制御機構
JPH0512114A (ja) * 1991-07-04 1993-01-22 Nec Corp キヤツシユメモリ
JPH0520190A (ja) * 1991-07-10 1993-01-29 Koufu Nippon Denki Kk キヤツシユ無効化処理回路
JPH07152650A (ja) * 1993-11-30 1995-06-16 Oki Electric Ind Co Ltd キャッシュ制御装置
JPH07210463A (ja) * 1994-01-21 1995-08-11 Hitachi Ltd キャッシュメモリシステム及びデータプロセッサ
JPH11143774A (ja) * 1997-11-06 1999-05-28 Hitachi Ltd キャッシュ制御機構
JPH11312123A (ja) * 1998-04-28 1999-11-09 Matsushita Electric Ind Co Ltd キャッシュ制御装置
JP2001331475A (ja) * 2000-05-23 2001-11-30 Nec Corp ベクトル命令処理装置およびベクトル命令処理方法
JP3770091B2 (ja) * 2001-02-09 2006-04-26 日本電気株式会社 キャッシュ制御方法及びキャッシュ制御回路

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0325421B1 (en) * 1988-01-20 1994-08-10 Advanced Micro Devices, Inc. Organization of an integrated cache unit for flexible usage in supporting multiprocessor operations
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US6360298B1 (en) * 2000-02-10 2002-03-19 Kabushiki Kaisha Toshiba Load/store instruction control circuit of microprocessor and load/store instruction control method
US7356651B2 (en) * 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58118083A (ja) * 1981-12-30 1983-07-13 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 多重処理システムにおけるキヤツシユ制御機構
JPH0512114A (ja) * 1991-07-04 1993-01-22 Nec Corp キヤツシユメモリ
JPH0520190A (ja) * 1991-07-10 1993-01-29 Koufu Nippon Denki Kk キヤツシユ無効化処理回路
JPH07152650A (ja) * 1993-11-30 1995-06-16 Oki Electric Ind Co Ltd キャッシュ制御装置
JPH07210463A (ja) * 1994-01-21 1995-08-11 Hitachi Ltd キャッシュメモリシステム及びデータプロセッサ
JPH11143774A (ja) * 1997-11-06 1999-05-28 Hitachi Ltd キャッシュ制御機構
JPH11312123A (ja) * 1998-04-28 1999-11-09 Matsushita Electric Ind Co Ltd キャッシュ制御装置
JP2001331475A (ja) * 2000-05-23 2001-11-30 Nec Corp ベクトル命令処理装置およびベクトル命令処理方法
JP3770091B2 (ja) * 2001-02-09 2006-04-26 日本電気株式会社 キャッシュ制御方法及びキャッシュ制御回路

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015232879A (ja) * 2014-06-05 2015-12-24 エイアールエム リミテッド データ処理装置における動的なキャッシュ・アロケーション・ポリシーの適応
US9753799B2 (en) 2014-12-13 2017-09-05 Via Alliance Semiconductor Co., Ltd. Conditional pattern detector for detecting hangs
US9946651B2 (en) 2014-12-13 2018-04-17 Via Alliance Semiconductor Co., Ltd Pattern detector for detecting hangs
US10067871B2 (en) 2014-12-13 2018-09-04 Via Alliance Semiconductor Co., Ltd Logic analyzer for detecting hangs
KR101890021B1 (ko) * 2014-12-13 2018-09-20 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 행 검출을 위한 패턴 검출기
US10324842B2 (en) 2014-12-13 2019-06-18 Via Alliance Semiconductor Co., Ltd Distributed hang recovery logic

Also Published As

Publication number Publication date
US20100088473A1 (en) 2010-04-08
JP4888839B2 (ja) 2012-02-29
US8151058B2 (en) 2012-04-03

Similar Documents

Publication Publication Date Title
JP4888839B2 (ja) キャッシュメモリを備えるベクトル計算機システム、及びその動作方法
US6317811B1 (en) Method and system for reissuing load requests in a multi-stream prefetch design
US8171239B2 (en) Storage management method and system using the same
US6427188B1 (en) Method and system for early tag accesses for lower-level caches in parallel with first-level cache
US7260686B2 (en) System, apparatus and method for performing look-ahead lookup on predictive information in a cache memory
JP7340326B2 (ja) メンテナンス動作の実行
JPH1196074A (ja) 交換アルゴリズム動的選択コンピュータシステム
US8595443B2 (en) Varying a data prefetch size based upon data usage
JP5059609B2 (ja) メモリへの様々なタイプのアクセスを予測するため、およびキャッシュメモリに関連付けられた予測を管理するための、システム、装置、および方法
US20170168957A1 (en) Aware Cache Replacement Policy
JP5336423B2 (ja) 計算機システム
US11301250B2 (en) Data prefetching auxiliary circuit, data prefetching method, and microprocessor
JP2023507078A (ja) プリフェッチレベルの降格
EP1605360A1 (en) Cache coherency maintenance for DMA, task termination and synchronisation operations
US11055025B2 (en) Semiconductor memory device performing command merge operation and operation method thereof
US7219197B2 (en) Cache memory, processor and cache control method
US7461211B2 (en) System, apparatus and method for generating nonsequential predictions to access a memory
US8266381B2 (en) Varying an amount of data retrieved from memory based upon an instruction hint
KR102482516B1 (ko) 메모리 어드레스 변환
US11321235B2 (en) Cache memory device, system including the same, and method of operating the same
JP5699854B2 (ja) 記憶制御システムおよび方法、置換方式および方法
US8356141B2 (en) Identifying replacement memory pages from three page record lists
US11080195B2 (en) Method of cache prefetching that increases the hit rate of a next faster cache
US20230359560A1 (en) Hybrid allocation of data lines in a streaming cache memory
US7143239B2 (en) Cache structure and methodology

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110316

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111121

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

R150 Certificate of patent or registration of utility model

Ref document number: 4888839

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111204

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141222

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees