JP2006048181A - 記憶制御装置、ムーブインバッファ制御方法およびプログラム - Google Patents

記憶制御装置、ムーブインバッファ制御方法およびプログラム Download PDF

Info

Publication number
JP2006048181A
JP2006048181A JP2004224854A JP2004224854A JP2006048181A JP 2006048181 A JP2006048181 A JP 2006048181A JP 2004224854 A JP2004224854 A JP 2004224854A JP 2004224854 A JP2004224854 A JP 2004224854A JP 2006048181 A JP2006048181 A JP 2006048181A
Authority
JP
Japan
Prior art keywords
cache
instruction
buffer
data
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.)
Granted
Application number
JP2004224854A
Other languages
English (en)
Other versions
JP4691335B2 (ja
Inventor
Iwao Yamazaki
巌 山崎
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2004224854A priority Critical patent/JP4691335B2/ja
Priority to US10/995,560 priority patent/US7451274B2/en
Priority to EP04257447A priority patent/EP1622029B1/en
Publication of JP2006048181A publication Critical patent/JP2006048181A/ja
Application granted granted Critical
Publication of JP4691335B2 publication Critical patent/JP4691335B2/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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/3802Instruction 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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

Landscapes

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

Abstract

【課題】主記憶装置のデータに対する参照を効率的に制御することができること。
【解決手段】中央処理装置10は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、ロード命令とストア命令とプリフェッチ命令とを少なくとも実行し、有効MIB検出部1041aは、主記憶装置30のデータに対する一次キャッシュ1034の参照要求が保持された一次キャッシュMIB1036の数を検出し、MIB制御部1041cは、検出されたキャッシュバッファの数が所定の数に達した場合に、ロード命令またはストア命令による参照要求をプリフェッチ命令による参照要求に優先して一次キャッシュMIB1036に保持するよう制御する。
【選択図】 図1

Description

この発明は、記憶制御装置、ムーブインバッファ制御方法およびプログラムに関し、特に主記憶装置のデータに対する参照を効率的に制御することができる記憶制御装置、ムーブインバッファ制御方法およびプログラムに関するものである。
従来、中央処理装置の動作速度は、主記憶装置の動作速度に比較して大幅に高速化され、主記憶装置を参照すると中央処理装置の動作が長時間にわたって待たされるという問題があった。
この問題に対処するために、将来使用するデータを予めキャッシュに取り出しておくプリフェッチ命令により主記憶装置のデータに対する参照による中央処理装置の実行待ちを回避する従来技術が開示されている。すなわち、キャッシュまたは主記憶装置から取り出したデータを演算装置へ格納するロード命令、演算結果をキャッシュまたは主記憶装置へ書き込むストア命令など、中央処理装置がキャッシュまたは主記憶装置のデータに対する参照の完了を待つ処理であるデマンド要求が実行されるとき、デマンド要求に必要とされるキャッシュラインがプリフェッチ命令によりキャッシュ上にすでに準備されているように動作することにより、主記憶装置のデータに対する参照による中央処理装置の実行待ちを回避することができる。
また、キャッシュまたは主記憶装置のデータに対する参照要求をアウトオブオーダ処理することによって主記憶装置からのデータの取り出しを待つ時間、すなわちメモリレイテンシを短縮する従来技術が開示されている。すなわち、アウトオブオーダ処理とは命令をプログラム順序どおり実行するのではなく、実行可能な命令から実行していくというものである。例えば、先行する命令がキャッシュミスを起こして主記憶装置からデータの取り出しを待っている間に後続の命令を実行する。後続の命令がキャッシュヒットすればキャッシュから取り出したデータを演算装置のレジスタへ格納し、格納したデータを用いて演算を行い、プログラムの実行を可能な範囲で進める。後続の命令がキャッシュミスを起こした場合は、必要なキャッシュラインを主記憶装置から取り出す。こうして、複数のキャッシュミスを同時に処理した場合、キャッシュミスを逐次処理した場合と比較して、メモリレイテンシを短縮することができる。
また、キャッシュごとにキャッシュMIB(以下においては「ムーブインバッファ」をMIB(Move In Buffer)という。)を設け、キャッシュミスが生じて主記憶装置からキャッシュラインを取り出す場合に、参照要求中のキャッシュラインの物理アドレスを記憶することによって、キャッシュMIBの確保からキャッシュへの転送完了までの時間を短縮し、同一アドレスに対する複数の参照を要求することを回避しており、キャッシュMIBを無駄に確保することを回避すると共に、データ転送によるデータ転送バスの無駄な使用を回避する。
一方、多次元配列を参照して演算を行うプログラムのように、多くのデータを参照する場合、プリフェッチ命令により多数のキャッシュラインを一次キャッシュへ取り出す必要が生じるので、一次キャッシュの一次キャッシュMIBの枯渇が頻発する。このような場合、デマンド要求が一次キャッシュMIBを確保しようとしても、一次キャッシュMIBを確保できないので一次キャッシュMIBの空きができるまでデマンド要求の実行は待たされることになる。すなわち、将来必要になると思われるデータを用意するためのプリフェッチ要求により、今すぐに実行の完了を必要とするデマンド要求がさまたげられ、結果的に、主記憶装置のデータに対する参照を効率的に制御することができないという課題があった。
また、アウトオブオーダ処理によって後続のロード要求またはストア要求が一次キャッシュMIBを全て確保した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が一次キャッシュMIBを確保できずに実行が妨げられ、結果的に、主記憶装置のデータに対する参照を効率的に制御することができないという課題があった。
また、アウトオブオーダ処理によって後続のロード要求またはストア要求が一次キャッシュMIBを先に確保して、キャッシュラインのスラッシングが発生した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が長時間実行を待たされ、結果的に、主記憶装置のデータに対する参照を効率的に制御することができないという課題があった。
例えば、特許文献1では、キャッシュにロードする命令のプリフェッチ数をオペランドのプリフェッチ数より増やしてシステム性能を向上させる従来技術が開示されている。また、特許文献2では、ブロックフェッチの最大許容回数以内で要求される任意回数のプリフェッチを施行することができる従来技術が開示されている。また、特許文献3では、無駄なプリフェッチを削減することにより一次キャッシュMIBの枯渇を防止する従来技術が開示されている。
特開平4−21044号公報 特開平6―90681号公報 特開平8―16468号公報
特許文献1の従来技術では、キャッシュにロードする命令のプリフェッチ数をオペランドのプリフェッチ数より増やしてシステム性能を向上させることができる。また、特許文献2の従来技術では、ブロックフェッチの最大許容回数以内で要求される任意回数のプリフェッチを施行することができる。また、特許文献3の従来技術では、無駄なプリフェッチを削減することにより一次キャッシュMIBの枯渇を防止することができる。
しかし、特許文献1〜3の従来技術では、一次キャッシュMIBがプリフェッチ命令により占有されることが回避できないので、将来必要になると思われるデータを用意するためのプリフェッチ要求により、今すぐに実行の完了を必要とするデマンド要求がさまたげられ、結果的に、主記憶装置のデータに対する参照を効率的に制御することができないという課題が未解決であった。
また、アウトオブオーダ処理によって後続のロード要求またはストア要求が一次キャッシュMIBを全て確保した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が一次キャッシュMIBを確保できずに実行が妨げられ、結果的に、主記憶装置のデータに対する参照を効率的に制御することができないという課題が未解決であった。
また、アウトオブオーダ処理によって後続のロード要求またはストア要求が一次キャッシュMIBを先に確保して、キャッシュラインのスラッシングが発生した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が長時間実行を待たされ、結果的に、主記憶装置のデータに対する参照を効率的に制御することができないという課題が未解決であった。
この発明は、上述した従来技術による問題点を解消するためになされたものであり、主記憶装置のデータに対する参照を効率的に制御することができる記憶制御装置、ムーブインバッファ制御方法およびプログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明は、主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置であって、前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出手段と、前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御手段と、を備えたことを特徴とする。
また、本発明は、主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御方法であって、前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出工程と、前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御工程と、を含んだことを特徴とする。
また、本発明は、主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御プログラムであって、前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出手順と、前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御手順と、をコンピュータに実行させることを特徴とする。
かかる発明によれば、中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、キャッシュまたは主記憶装置から演算装置にデータを格納する命令であるロード命令と、演算装置の演算結果をキャッシュまたは主記憶装置に書き込むストア命令と、主記憶装置のデータをキャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、主記憶装置のデータに対するキャッシュの参照要求が保持されたキャッシュバッファの数を検出し、検出されたキャッシュバッファの数が所定の数に達した場合に、ロード命令またはストア命令による参照要求をプリフェッチ命令による参照要求に優先してキャッシュバッファに保持するよう制御することとしたので、記憶制御装置は、将来必要になると思われるデータを用意するためのプリフェッチ要求によって今すぐに実行の完了を必要とするロード命令またはストア命令がさまたげられることが回避でき、もって主記憶装置のデータに対する参照を効率的に制御することができる。
また、本発明は、前記バッファ制御手段は、前記命令の実行順序に基づいて前記ロード命令または前記ストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする。
また、本発明は、前記バッファ制御工程は、前記命令の実行順序に基づいて前記ロード命令または前記ストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする。
かかる発明によれば、命令の実行順序に基づいてロード命令またはストア命令による参照要求をキャッシュバッファに保持するよう制御することとしたので、記憶制御装置は、命令実行上一番先に実行されなければならないロード要求またはストア要求が一次キャッシュMIBを確保できずに実行が妨げられることを回避でき、もって主記憶装置のデータに対する参照を効率的に制御することができる。
また、本発明は、前記キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求を保持するバッファであるフェッチポートと、前記フェッチポートに保持されたフェッチ処理要求の実行を監視する命令実行監視手段と、をさらに備え、前記バッファ制御手段は、前記命令実行監視手段によってフェッチ処理が所定の時間停滞していることが検出された場合は、前記フェッチポートに保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御し、前記命令実行監視手段によってフェッチ処理が所定の時間停滞していることが検出されなかった場合は、前記フェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする。
また、本発明は、前記キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求をバッファであるフェッチポートに保持するフェッチポート保持工程と、
前記フェッチポート保持工程でフェッチポートに保持されたフェッチ処理要求の実行を監視する命令実行監視工程と、をさらに含み、前記バッファ制御工程は、前記命令実行監視工程によってフェッチ処理が所定の時間停滞していることが検出された場合は、前記フェッチポートに保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御し、前記命令実行監視工程によってフェッチ処理が所定の時間停滞していることが検出されなかった場合は、前記フェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする。
かかる発明によれば、キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求を保持し、保持されたフェッチ処理要求の実行を監視し、フェッチ処理が所定の時間停滞していることが検出された場合は、保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による参照要求をキャッシュバッファに保持するよう制御し、フェッチ処理が所定の時間停滞していることが検出されなかった場合は、フェッチ処理要求による参照要求をキャッシュバッファに保持するよう制御することとしたので、記憶制御装置は、キャッシュラインのスラッシングが発生した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が長時間実行を待たされることが回避でき、もって主記憶装置のデータに対する参照を効率的に制御することができる。
また、本発明は、前記ストア命令を保持するバッファであるストアポートをさらに備え、前記命令実行監視手段は、前記ストアポートに保持されたストア命令の実行をさらに監視し、前記バッファ制御手段は、前記命令実行監視手段によって、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、前記ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする。
また、本発明は、前記ストア命令をバッファであるストアポートに保持するストアポート保持工程をさらに含み、前記命令実行監視工程は、前記ストアポート保持工程でストアポートに保持されたストア命令の実行をさらに監視し、前記バッファ制御工程は、前記命令実行監視工程によって、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、前記ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする。
かかる発明によれば、ストア命令を保持し、保持されたストア命令の実行をさらに監視し、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による参照要求をキャッシュバッファに保持するよう制御することとしたので、記憶制御装置は、キャッシュラインのスラッシングが発生した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が長時間実行を待たされることが回避でき、もって主記憶装置のデータに対する参照を効率的に制御することができる。
また、本発明は、前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、前記一次キャッシュから前記二次キャッシュへ転送する前記参照要求を保持するバッファである参照要求転送ポートと、をさらに備え、前記バッファ制御手段は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポートによって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする。
かかる発明によれば、参照要求を一次キャッシュバッファに保持するよう制御し、一次キャッシュバッファに保持するよう制御した参照要求以外の参照要求を参照要求転送ポートによって一次キャッシュから二次キャッシュへ転送することとしたので、記憶制御装置は、一次キャッシュバッファの空きがなく、後続の命令がキャッシュミスを起こした場合、主記憶装置から二次キャッシュまでのムーブインを要求することができ、もって主記憶装置のデータに対する参照を効率的に制御することができる。
本発明によれば、中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、キャッシュまたは主記憶装置から演算装置にデータを格納する命令であるロード命令と、演算装置の演算結果をキャッシュまたは主記憶装置に書き込むストア命令と、主記憶装置のデータをキャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、主記憶装置のデータに対するキャッシュの参照要求が保持されたキャッシュバッファの数を検出し、検出されたキャッシュバッファの数が所定の数に達した場合に、ロード命令またはストア命令による参照要求をプリフェッチ命令による参照要求に優先してキャッシュバッファに保持するよう制御するよう構成したので、記憶制御装置は、将来必要になると思われるデータを用意するためのプリフェッチ要求によって今すぐに実行の完了を必要とするロード命令またはストア命令がさまたげられることが回避でき、もって主記憶装置のデータに対する参照を効率的に制御することができるという効果を奏する。
また、本発明によれば、命令の実行順序に基づいてロード命令またはストア命令による参照要求をキャッシュバッファに保持するよう制御するよう構成したので、記憶制御装置は、命令実行上一番先に実行されなければならないロード要求またはストア要求が一次キャッシュMIBを確保できずに実行が妨げられることを回避でき、もって主記憶装置のデータに対する参照を効率的に制御することができるという効果を奏する。
また、本発明によれば、キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求を保持し、保持されたフェッチ処理要求の実行を監視し、フェッチ処理が所定の時間停滞していることが検出された場合は、保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による参照要求をキャッシュバッファに保持するよう制御し、フェッチ処理が所定の時間停滞していることが検出されなかった場合は、フェッチ処理要求による参照要求をキャッシュバッファに保持するよう制御するよう構成したので、記憶制御装置は、キャッシュラインのスラッシングが発生した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が長時間実行を待たされることが回避でき、もって主記憶装置のデータに対する参照を効率的に制御することができるという効果を奏する。
また、本発明によれば、ストア命令を保持し、保持されたストア命令の実行をさらに監視し、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による参照要求をキャッシュバッファに保持するよう制御するよう構成したので、記憶制御装置は、キャッシュラインのスラッシングが発生した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が長時間実行を待たされることが回避でき、もって主記憶装置のデータに対する参照を効率的に制御することができるという効果を奏する。
また、本発明によれば、参照要求を一次キャッシュバッファに保持するよう制御し、一次キャッシュバッファに保持するよう制御した参照要求以外の参照要求を参照要求転送ポートによって一次キャッシュから二次キャッシュへ転送するよう構成したので、記憶制御装置は、一次キャッシュバッファの空きがなく、後続の命令がキャッシュミスを起こした場合、主記憶装置から二次キャッシュまでのムーブインを要求することができ、もって主記憶装置のデータに対する参照を効率的に制御することができるという効果を奏する。
以下に添付図面を参照して、この発明に係る記憶制御装置の好適な2つの実施例を詳細に説明する。実施例1では、本発明に係る記憶制御装置をコンピュータシステムに適用する場合について説明する。また、実施例2では、本発明に係る記憶制御装置と同じ機能を有するムーブインバッファ制御プログラムを実行する場合について説明する。
本実施例1では、本発明に係る記憶制御装置をコンピュータシステムに適用する場合について説明する。ここでは、(1)記憶制御装置の概要と主要な特徴、(2)コンピュータシステムの構成、(3)ストア命令およびフェッチ処理要求に対するMIB制御、(4)ロード命令/ストア命令の実行停滞に対するMIB制御、(5)プリフェッチ命令に対するMIB制御手順、(6)アウトオブオーダ処理に対するMIB制御手順、(7)ロード命令/ストア命令の実行停滞に対するMIB制御手順の順番で説明する。
(1)記憶制御装置の概要と主要な特徴
図1を参照して、記憶制御装置103の概要と主要な特徴について説明する。図1は、実施例1に係るコンピュータシステム1の構成を示す機能ブロック図である。
本発明に係る記憶制御装置103は、主記憶装置30と中央処理装置10に含まれる命令処理装置101および演算装置102との間に介在し、命令処理装置101および演算装置102から主記憶装置30のデータに対する参照を制御し、主記憶装置30のデータおよびデータに対応するアドレス情報を記憶する一次キャッシュ1034および二次キャッシュ1038と、主記憶装置30のデータに対する一次キャッシュ1034および二次キャッシュ1038の参照要求であるアドレス情報をそれぞれ保持する一次キャッシュMIB1036および二次キャッシュMIB1039と、を有する制御装置であり、主記憶装置30のデータに対する参照を効率的に制御することができることを特徴とする。
中央処理装置10は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、一次キャッシュ1034、二次キャッシュ1038、または主記憶装置30から演算装置102にデータを格納する命令であるロード命令と、演算装置102の演算結果を一次キャッシュ1034、二次キャッシュ1038または、主記憶装置30に書き込むストア命令と、主記憶装置30のデータを一次キャッシュ1034、二次キャッシュ1038へ格納する命令であるプリフェッチ命令と、を少なくとも実行する。また、有効MIB検出部1041aは、主記憶装置30のデータに対する一次キャッシュ1034の参照要求が保持された一次キャッシュMIB1036の数を検出し、MIB制御部1041cは、検出されたキャッシュバッファの数が所定の数に達した場合に、ロード命令またはストア命令による参照要求をプリフェッチ命令による参照要求に優先して一次キャッシュMIB1036に保持するよう制御する。したがって、記憶制御装置103は、将来必要になると思われるデータを用意するためのプリフェッチ要求によって今すぐに実行の完了を必要とするロード命令またはストア命令がさまたげられることが回避でき、もって主記憶装置30のデータに対する参照を効率的に制御することができる。
(2)コンピュータシステムの構成
次に、図1を参照して、実施例に係るコンピュータシステム1の構成について説明する。コンピュータシステム1は、中央処理装置10、50、システムコントローラ20、主記憶装置30、入出力装置40を有するマルチプロセッサシステムである。中央処理装置10、50は、主記憶装置30に格納されたプログラムに従い、データを処理した結果を再び主記憶装置30に格納する処理部であり、命令処理装置101、演算装置102、記憶制御装置103を有する。
命令処理装置101は、中央処理装置10の全体を制御する処理部であり、主記憶装置30からプログラムを構成している命令を読み出して、読み出した命令を解読し、解読した命令に基づいて各装置に要求を出し、プログラムの実行を制御する。また、演算装置102は、主記憶装置30からデータを読み出して、読み出したデータに基づいて各種の演算を実行する。また、記憶制御装置103は、命令処理装置101および演算装置102と主記憶装置30との間に介在し、命令処理装置101および演算装置102から主記憶装置30のデータに対する参照を制御する処理部である。なお、記憶制御装置103の詳細については、コンピュータシステム1の構成について説明した後に、詳細に説明する。
システムコントローラ20は、複数の中央処理装置10、50、主記憶装置30、入出力装置40からなるマルチプロセッサシステムであるコンピュータシステム1の全体を制御する制御部である。主記憶装置30は、プログラムおよびデータを記憶する記憶装置であり、SRAM(Static Random Access Memory)またはDRAM(Dynamic Random Access Memory)などの半導体記憶素子から構成される。
入出力装置40は、ユーザからの要求、指示を入力するキーボードやマウスなどの入力装置、プログラムおよびデータを入力するフロッピー(登録商標)ディスク、HDD(Hard Disk Drive)などの外部記憶装置、データを出力するLCD(Liquid Crystal Display)、プリンタなどの出力装置である。
続いて、記憶制御装置103の詳細について説明する。記憶制御装置103は、命令ポート1031、ストアポート1032、フェッチポート1033、一次キャッシュ1034、一次キャッシュMIB1036、二次キャッシュ1038、二次キャッシュMIB1039、プリフェッチポート1040、一次キャッシュ制御部1041、二次キャッシュ制御部1042を有する。
命令ポート1031は、一次キャッシュ1034から取り出された一連のプログラムの命令を一次的に記憶するバッファである。また、ストアポート1032は、演算結果を一次キャッシュ1034、二次キャッシュ1038または主記憶装置30に書き込む命令であるストア命令を一次的に記憶するバッファである。また、フェッチポート1033は、一次キャッシュ1034、二次キャッシュ1038または主記憶装置30から読み出すフェッチ処理要求を一時的に記憶するバッファである。
ここで、図2を参照して、図1に示す命令ポート1031、ストアポート1032、フェッチポート1033、一次キャッシュMIB1036/二次キャッシュMIB1039、プリフェッチポート1040のデータ構造の一例について説明する。図2は、図1に示す命令ポート1031、ストアポート1032、フェッチポート1033、一次キャッシュMIB1036/二次キャッシュMIB1039、プリフェッチポート1040のデータ構造の一例を示す図である。同図に示すように、命令ポート1031のデータは、64ビットの仮想アドレスと32バイトのデータから成っている。また、ストアポート1032のデータは、7ビットのOP(オペレーション)コードと43ビットの物理アドレスと8バイトのデータから成っている。また、フェッチポート1033のデータは、4ビットのOPコードと64ビットの仮想アドレスから成っている。また、一次キャッシュMIB1036/二次キャッシュMIB1039は、43ビットの物理アドレスと64バイトのデータから成っている。また、プリフェッチポート1040のデータは、43ビットの物理アドレスと1ビットの登録型フラグから成っている。なお、登録型フラグとは、キャッシュへのデータの登録型、すなわち共有型、排他型を識別するフラグである。
図1の説明に戻ると、一次キャッシュ1034は、二次キャッシュ1038のデータとデータに対応する物理アドレスを記憶するキャッシュであり、プログラムを記憶する命令キャッシュ1034a、データを記憶するオペランドキャッシュ1034bを有する。また、一次ャッシュMIB1036は、キャッシュミスを起こし二次キャッシュ1038からキャッシュラインのムーブイン、すなわちデータを参照する場合、参照要求であるキャッシュラインの物理アドレスを記憶するバッファであり、プログラムに対する物理アドレスを記憶する命令キャッシュMIB1036a、データに対する物理アドレスを記憶するオペランドキャッシュMIB1036bを有する。命令キャッシュMIB1036a、オペランドキャッシュMIB1036bはそれぞれ、例えば、4個のMIBを有する。なお、一次キャッシュ1034から一次キャッシュMIB1036の数を超えて二次キャッシュ1038に対してムーブインを要求することはできない。
二次キャッシュ1038は、主記憶装置30のプログラムまたはデータの一部を記憶するキャッシュである。二次キャッシュMIB1039は、キャッシュミスを起こし主記憶装置30からキャッシュラインの参照を行う場合、参照要求であるキャッシュラインの物理アドレスを記憶するバッファであり、例えば、16個のMIBを有する。なお、二次キャッシュ1038から二次キャッシュMIB1039の数を超えて主記憶装置30に対して参照を要求することはできない。
プリフェッチポート1040は、一次キャッシュMIB1036の空きがない場合、一次キャッシュ制御部1041が二次キャッシュ1038に対して主記憶装置30からデータの参照要求を転送するバッファであり、一次キャッシュMIB1036を経由する経路とは別に二次キャッシュMIB1039へプリフェッチを要求する。
さらに詳細に説明すると、プリフェッチポート1040は、一次キャッシュMIB1036の空きがなく、後続の命令がキャッシュミスを起こした場合、主記憶装置30から二次キャッシュまでのムーブインを要求することができる。また、プリフェッチポート1040は、一次キャッシュ1034までのムーブインを実行することはできないが、後で一次キャッシュ1034に空きができた場合に、一次キャッシュMIB1036を経由して一次キャッシュ1034へムーブインを要求する。
すなわち、プリフェッチポート1040は、予め二次キャッシュ1038までのムーブインを開始しておくことで、一次キャッシュMIB1036の空きができた場合に、一次キャッシュ1034へのムーブインを開始したときには、キャッシュラインがすでに二次キャッシュに届いているか、二次キャッシュの近くまで届いている。したがって、プリフェッチポート1040は、一次キャッシュMIB1036の確保からムーブイン完了までの時間、すなわちキャッシュミスレイテンシを短縮することができる。
一次キャッシュ制御部1041は、命令ポート1031、ストアポート1032、フェッチポート1033、一次キャッシュ1034、一次命令キャッシュMIB1036、プリフェッチポート1040を制御する制御部であり、有効MIB検出部1041a、命令識別部1041b、MIB制御部1041c、命令実行監視部1041dを有する。
有効MIB検出部1041aは、主記憶装置30のデータに対する一次キャッシュの参照要求が保持されたMIBの数を検出する検出部である。ここで、図3を参照して、図1に示す有効MIB検出部1041aの構成について説明する。図3は、図1に示す有効MIB検出部1041aの構成を示す機能ブロック図である。
同図に示すように、一次キャッシュMIB1036は、MIBごとに使用中であることを示す有効フラグを有する。この有効フラグが“1”である場合、該当するMIBが使用中であることを示す。有効MIB検出部1041aは、4つのMIBのうち少なくとも3つが有効であることを示す4つの組み合わせに関して、該当する有効フラグの出力を4つの論理積回路の入力とする。さらに、4つの論理積回路の出力を1つの論理和回路の入力とすると、有効MIB検出部1041aは、論理和回路の出力が“1”の場合に4つのMIBのうちの任意の3つが使用中であることを検出する。
図1の説明に戻ると、命令識別部1041bは、一次キャッシュ1034、二次キャッシュ1038または主記憶装置30から演算装置102にデータを格納する命令であるロード命令と、演算装置102の演算結果を一次キャッシュ1034、二次キャッシュ1038または主記憶装置30に書き込むストア命令と、データを一次キャッシュ1034または二次キャッシュ1038へ格納する命令であるプリフェッチ命令と、を少なくとも識別する識別部である。例えば、命令識別部1041bは、一次キャッシュ1034のパイプラインを流れている命令を識別するためのOPコード(図2参照)を参照することによってプリフェッチ命令であることが確認できる。また、命令識別部1041bは、一次キャッシュ1034のパイプラインを流れている処理を識別するためのパイプライン識別子を参照することによってプリフェッチポート1040を介して処理されるプリフェッチ処理であることが確認できる。
MIB制御部1041cは、有効MIB検出部1041aによって検出されたMIBの数が所定の数に達した場合に、ロード命令またはストア命令による参照要求をプリフェッチ命令による参照要求に優先して一次キャッシュMIB1036に保持するよう制御する制御部である。例えば、MIB制御部1041cは、一次キャッシュMIB1036のうち3つのMIBがすでに使用されている場合は、プリフェッチ命令のための新たなMIBの確保を禁止する。
MIB制御部1041cは、命令の実行順序に基づいてロード命令またはストア命令による参照要求を一次キャッシュMIB1036に保持するよう制御する。ここで、図4を参照して、図1に示すMIB制御部1041cによるプリフェッチ命令およびストア命令に対するMIB制御について説明する。図4は、図1に示すMIB制御部1041cによるプリフェッチ命令およびストア命令に対するMIB制御を示す図である。
同図に示すように、一次キャッシュ1034のパイプラインに投入された要求がプリフェッチ命令、プリフェッチポート1040を介した二次キャッシュ1034へのプリフェッチ処理、または突き放されたストア命令であり、MIBが3つ使用中であることが有効MIB検出部1041aによって検出された場合は、MIB制御部1041cは、これらの処理がキャッシュミスを起こしていても新たなMIBの確保を禁止する。そして、MIB制御部1041cは、4つのMIBのうち4つが使用中であることを示すMIB−BUSY信号をONにし、一次キャッシュMIB1036の新たな確保を禁止すると共に、プリフェッチポート1040を介して二次キャッシュ1038へムーブイン要求を転送する。なお、突き放されたストア命令とは、ストア命令がキャッシュミスを起こした場合、ストア命令を完了待ちの状態にしておいて、一次キャッシュMIB1036に空きがあればムーブイン要求を出しておき、ストア許可が出てから一次キャッシュメモリ1034、二次キャッシュメモリ1036または主記憶装置30への書き込みを実行する命令である。
このように、MIB制御部1041cは、一次キャッシュMIB1036がプリフェッチのためのムーブイン要求によって占有されることを回避しつつ、プリフェッチポート1040を介してデータのプリフェッチを二次キャッシュ1038まで実行することによってキャッシュミスレイテンシを短縮することができる。なお、ストア命令およびフェッチ命令に対するMIB制御、およびロード命令/ストア命令の実行停滞に対するMIB制御については別途詳細に説明する。
図1の説明に戻ると、命令実行監視部1041dは、ストアポート1032およびフェッチポート1033に記憶されているストア命令、フェッチ処理要求のTOQ(Top Of Queue、すなわち一番初めに処理しなければならない要求)の更新を監視する監視部である。ストアポート1032のTOQおよびフェッチポート1033のTOQは、ストアポート1032またはフェッチポート1033が開放された場合、開放信号をONにして、次に開放対象となるストアポート1032およびフェッチポート1033を示すように更新される。
(3)ストア命令およびフェッチ処理要求に対するMIB制御
次に、ストア命令に対するMIB制御について説明する。一次キャッシュ制御部1041は、ストア命令に例外、すなわちアドレス変換バッファのページ属性にアクセス不可があったか否かを確認し、確認結果を命令処理装置101に通知する。そして、命令処理装置101は、ストア命令に例外が発生せず、ストアデータを記憶制御装置103へ出力済みであり、ストア命令が実行中の先頭にきた場合は、記憶制御装置103に対しストア命令についてストア許可を出力する。
この時点では、ストア対象領域が一次キャッシュ1035にすでに搭載されている場合もあるし、未搭載の場合もある。一次キャッシュ制御部1041は、一次キャッシュ1034にストア対象領域が存在していない場合は、ST1−REQという要求を一次キャッシュ1034のパイプラインに投入する。さらに、一次キャッシュ制御部1041は、キャッシュタグを検索してキャッシュミスを起こしている場合は、MIBを確保し、二次キャッシュから一次キャッシュ1034へキャッシュラインを取り込むことを要求する。
そして、一次キャッシュ制御部1041は、一次キャッシュ1034へ新たなキャッシュが登録されたことを契機として、再度ST1−REQを一次キャッシュ1034のパイプラインへ投入し、キャッシュタグの検索とキャッシュデータのエラーの有無を確認し、一次キャッシュ1034への書き込みが可能かどうか判断する。さらに、一次キャッシュ制御部1041は、一次キャッシュ1034への書き込みが可能であれば、ST2−REQという要求を一次キャッシュ1034のパイプラインに投入し、ストアデータを一次キャッシュ1034に反映し、ST2−REQが割り当てられていたストアポート1032を開放する。
このように、ST1−REQは、アウトオブオーダ処理が可能であるが、ストアポート1032の複数のST1−REQによりスラッシングが発生していると、ストアポート1032のTOQによるMIBの確保が阻害される。そこで、一次キャッシュ制御部1041は、パイプラインに流れるパイプライン識別子によりST1−REQが実行されていることを確認すると共に、MIBの状態を確認する。
そして、一次キャッシュ制御部1041は、パイプラインを流れている要求がST1−REQであって、一次キャッシュMIB1036が3つ占有されていて、そのとき実行されているストア命令がストアポート1032のTOQでなければ、キャッシュミスを起こしていてもMIB−BISY信号をONにし、TOQを優先して実行する。これにより、ストア許可を受け取ったストア命令の間でスラッシングが発生しているときであっても、スラッシングを回避してTOQからMIBを確保して、ストア命令を完了させることが可能となる。
次に、フェッチ命令におけるMIB制御について説明する。一次キャッシュ制御部1041は、パイプラインを流れている要求がパイプライン識別子によりフェッチポート1033から投入された要求であることが確認され、一次キャッシュMIB1036が3つ占有されていて、そのとき実行されているフェッチ命令がフェッチポート1033のTOQでなければ、キャッシュミスを起こしていてもMIB−BISY信号をONにし、TOQを優先して実行する。これにより、一次キャッシュ制御部1041は、一次キャッシュMIB1036の新たな確保を禁止すると共に二次キャッシュ1038へのプリフェッチを起動する。その結果、一次キャッシュMIB1036を確保できなかった要求も二次キャッシュMIB1039を確保するように二次キャッシュ1038へ要求が送られる。
このようにして、一次キャッシュ制御部1041は、フェッチポート1033のTOQ以外の要求による二次キャッシュ1038への記憶領域参照が一次キャッシュMIB1036を占有することを回避しつつ、データのプリフェッチは二次キャッシュ1038まで実行しておくことで、プリフェッチ効果が現れるように制御する。同時に、これによりフェッチポート1033の間でのスラッシングを防止することが可能となる。
(4)ロード命令/ストア命令の実行停滞に対するMIB制御
次に、ロード命令/ストア命令の実行停滞、すなわちハング防止のためのMIB制御について説明する。命令実行監視部1041dは、開放信号がOFFであって、ストアポート1032およびフェッチポート1033に有効な命令が滞留している場合、ストアポート1032およびフェッチポート1033のそれぞれが有するハングカウンタを加算する。すなわち、命令実行監視部1041dは、実行完了による開放を待つポートが存在し、ポートの開放が行われない場合は、ハングカウンタを加算する。このハングカウンタが所定の閾値、例えば2000サイクルを超えた場合、ストアポート1032またはフェッチポート1033でハングが発生していると看做して、MIB制御部1041cは、ストアポート1032またはフェッチポート1033のTOQ以外の命令が一次キャッシュMIB1036を確保することを禁止する。
特に、命令実行監視部1041dは、ストアポート1032については、ハング検出条件として、書き込み許可を受けたストア命令を保持しつつ、一次キャッシュ1034または主記憶装置30への書き込みができない状態を監視する。これによりストアポート1032のハングカウンタが所定の閾値、例えば2000サイクルを超えて、ハングしたと看做される状態が発生したら、フェッチポート1033に格納されている命令はすべてストアポート1032のTOQよりも後に処理する命令であることが保障される。したがって、ストアポート1032のハングカウンタが所定の閾値を超えたら、MIB制御部1041cは、フェッチポート1033からパイプラインに投入される全要求とTOQ以外のストアポートから投入された全要求について一次キャッシュMIB1036の確保を禁止する。
このように、命令実行監視部1041dがハングを検出した場合、MIB制御部1041cは、アウトオブオーダ処理から逐次処理に移行することにより、少なくとも一つの命令の処理を完了することができる。一つの命令の処理が完了すると、ストアポート1032のTOQが更新されるため、ストアポート1032またはフェッチポート1033でのハングは解消し、速やかにストアポート1032のストア命令がMIB確保可能になって、最大限の性能を発揮する動作状態に復帰することができる。
(5)プリフェッチ命令に対するMIB制御手順
次に、図5を参照して、図1に示すMIB制御部1041cによるプリフェッチ命令に対するMIB制御手順について説明する。図5は、図1に示すMIB制御部1041cによるプリフェッチ命令に対するMIB制御手順を示すフローチャートである。同図に示すように、一次キャッシュ1034のパイプラインに投入されたロード命令、ストア命令、プリフェッチ命令のいずれか一つがキャッシュミスをすると(ステップS501)、MIB制御部1041cは、有効MIB検出部1041aに一次キャッシュMIB1036が満杯か否かを確認する(ステップS502)。なお、ストア命令には、突き放されたストア命令が含まれる。
その結果、一次キャッシュMIB1036が満杯である場合(ステップS502肯定)、MIB制御部1041cは、プリフェッチポート1040を確保して(ステップS503)、二次キャッシュ1038へのムーブインを要求する(ステップS504)。
一方、一次キャッシュMIB1036が満杯でない場合(ステップS502否定)、MIB制御部1041cは、さらに有効MIB検出部1041aによって一次キャッシュMIB1036の残りのエントリが1つか否かを確認する(ステップS505)。
その結果、一次キャッシュMIB1036の残りのエントリが2つ以上である場合は(ステップS505否定)、MIB制御部1041cは、一次キャッシュMIB1036を確保して(ステップS507)、一次キャッシュ1034へのムーブインを要求する(ステップS508)。
一方、一次キャッシュMIB1036の残りのエントリが1つである場合は(ステップS505肯定)、MIB制御部1041cは、さらに、一次キャッシュミスをした命令がプリフェッチ命令か否かを確認する(ステップS506)。
その結果、一次キャッシュミスをした命令がプリフェッチ命令である場合は(ステップS506肯定)、MIB制御部1041cは、プリフェッチポート1040を確保して(ステップS503)、二次キャッシュ1038へのムーブインを要求する(ステップS504)。
一方、一次キャッシュミスをした命令がプリフェッチ命令でない場合は(ステップS506否定)、MIB制御部1041cは、一次キャッシュMIB1036を確保して(ステップS507)、一次キャッシュ1034へのムーブインを要求する(ステップS508)。
このように、本手順によれば、MIB制御部1041cは、一次キャッシュ1034のパイプラインへ投入された命令がプリフェッチ命令であり、MIBの残りが1エントリである場合は、プリフェッチ命令のための一次キャッシュMIB1036の確保を禁止し、プリフェッチポート1040を確保して、二次キャッシュ1038へのムーブインを要求することとしたので、記憶制御装置103は、プリフェッチ命令によって一次キャッシュMIB1036が占有されることを回避しつつ、プリフェッチの効果は現れるようにすることができる。なお、一次キャッシュ1034のパイプラインへ投入された命令とは、パイプライン識別子を用いたプリフェッチポートを介したプリフェッチ処理要求を含む。
(6)アウトオブオーダ処理に対するMIB制御手順
次に、図6を参照して、図1に示すMIB制御部1041cによるアウトオブオーダ処理に対するMIB制御手順について説明する。図6は、図1に示すMIB制御部1041cによるアウトオブオーダ処理に対するMIB制御手順を示すフローチャートである。同図に示すように、一次キャッシュのパイプラインに投入されたロード命令、ストア命令、プリフェッチ命令のいずれか一つが一次キャッシュミスをすると(ステップS601)、MIB制御部1041cは、有効MIB検出部1041aに一次キャッシュMIB1036が満杯か否かを確認する(ステップS602)。なお、ストア命令には、突き放されたストア命令が含まれる。
その結果、一次キャッシュMIB1036が満杯である場合(ステップS602肯定)、MIB制御部1041cは、プリフェッチポート1040を確保して(ステップS603)、二次キャッシュ1038へのムーブインを要求する(ステップS604)。
一方、一次キャッシュMIB1036が満杯でない場合(ステップS602否定)、MIB制御部1041cは、さらに有効MIB検出部1041aによって一次キャッシュMIB1036の残りのエントリが1つか否かを確認する(ステップS605)。
その結果、一次キャッシュMIB1036の残りのエントリが2つ以上である場合は(ステップS605否定)、MIB制御部1041cは、一次キャッシュMIB1036を確保して(ステップS607)、一次キャッシュ1034へのムーブインを要求する(ステップS608)。
一方、一次キャッシュMIB1036の残りのエントリが1つである場合は(ステップS605肯定)、MIB制御部1041cは、さらに一次キャッシュミスした命令がフェッチポート1033のTOQの命令か否かを確認する(ステップS606)。
その結果、一次キャッシュミスした命令がフェッチポート1033のTOQの命令である場合は(ステップS606肯定)、MIB制御部1041cは、一次キャッシュMIB1036を確保して(ステップS607)、一次キャッシュ1034へのムーブインを要求する(ステップS608)。
一方、一次キャッシュミスした命令がフェッチポート1033のTOQの命令でない場合は(ステップS606否定)、MIB制御部1041cは、プリフェッチポート1040を確保して(ステップS603)、二次キャッシュ1038へのムーブインを要求する(ステップS604)。
このように、本手順によれば、MIB制御部1041cは、MIBの残りが1エントリである場合は、一次キャッシュミスをした命令がフェッチポートのTOQの命令に限り、一次キャッシュMIB1036を確保して、一次キャッシュ1034へのムーブインを要求することができ、それ以外の命令の場合は、プリフェッチポート1040を確保して、二次キャッシュへのムーブインを要求することとしたので、記憶制御装置103は、アウトオブオーダ処理によってTOP以外の命令によって一次キャッシュMIB1036が占有されることを回避しつつ、プリフェッチの効果は現れるようにすることができる。
(7)ロード命令/ストア命令の実行停滞に対するMIB制御手順
次に、図7を参照して、図1に示すMIB制御部1041cによるロード命令/ストア命令の実行停滞に対するMIB制御手順について説明する。図7は、図1に示すMIB制御部1041cによるロード命令/ストア命令の実行停滞に対するMIB制御手順を示すフローチャートである。同図に示すように、一次キャッシュのパイプラインに投入されたロード命令、ストア命令、プリフェッチ命令のいずれか一つが一次キャッシュミスをすると(ステップS701)、MIB制御部1041cは、有効MIB検出部1041aに一次キャッシュMIB1036が満杯か否かを確認する(ステップS702)。なお、ストア命令には、突き放されたストア命令が含まれる。
その結果、一次キャッシュMIB1036が満杯である場合(ステップS702肯定)、MIB制御部1041cは、プリフェッチポート1040を確保して(ステップS703)、二次キャッシュ1038へのムーブインを要求する(ステップS704)。
一方、一次キャッシュMIB1036が満杯でない場合(ステップS702否定)、MIB制御部1041cは、さらに有効MIB検出部1041aによって一次キャッシュMIB1036の残りのエントリが1つか否かを確認する(ステップS705)。
その結果、一次キャッシュMIB1036の残りのエントリが2つ以上である場合は(ステップS705否定)、MIB制御部1041cは、さらに命令実行監視部1041dに一次キャッシュミスした命令で、ストアポート1032でハングしているか否かを確認する(ステップS708)。
その結果、ストアポート1032でハングしており、ストアポートのTOQ以外の命令である場合は(ステップS708肯定)、MIB制御部1041cは、プリフェッチポート1040を確保して(ステップS703)、二次キャッシュ1038へのムーブインを要求する(ステップS704)。
一方、ストアポート1032でハングしていないか、またはストアポートのTOQの命令である場合は(ステップS708否定)、一次キャッシュMIB1036を確保して(ステップS709)、一次キャッシュ1034へのムーブインを要求する(ステップS710)。
一方、一次キャッシュMIB1036の残りのエントリが1つである場合は(ステップS705肯定)、MIB制御部1041cは、さらに一次キャッシュミスした命令がプリフェッチ命令であるか否かを確認する(ステップS706)。
その結果、一次キャッシュミスした命令がプリフェッチ命令である場合は(ステップS706肯定)、MIB制御部1041cは、プリフェッチポート1040を確保して(ステップS703)、二次キャッシュ1038へのムーブインを要求する(ステップS704)。
一方、一次キャッシュミスした命令がプリフェッチ命令でない場合は(ステップS706否定)、MIB制御部1041cは、さらに一次キャッシュミスした命令がフェッチポート1033のTOQの命令で、かつフェッチポート1033がハングしているか否かを確認する(ステップS707)。
その結果、一次キャッシュミスした命令がフェッチポート1033のTOQ命令か、またはフェッチポート1033がハングしていない場合は(ステップS707否定)、MIB制御部1041cは、さらに命令実行監視部1041dにストアポート1032でハングしているか否かを確認する(ステップS708)。
その結果、ストアポート1032でハングしている場合は(ステップS708肯定)、MIB制御部1041cは、プリフェッチポート1040を確保して(ステップS703)、二次キャッシュ1038へのムーブインを要求する(ステップS704)。
一方、ストアポート1032でハングしていないか、またはストアポートのTOQの命令である場合は(ステップS708否定)、一次キャッシュMIB1036を確保して(ステップS709)、一次キャッシュ1034へのムーブインを要求する(ステップS710)。
一方、一次キャッシュミスした命令がフェッチポート1033のTOQ以外の命令で、かつフェッチポート1033がハングしている場合は(ステップS707肯定)、MIB制御部1041cは、プリフェッチポート1040を確保して(ステップS703)、二次キャッシュ1038へのムーブインを要求する(ステップS704)。
このように、本手順によれば、MIB制御部1041cは、MIBの残りが1エントリであり、ストアポート1032でハングしていることが検出されていない場合で、TOQ以外の命令は、一次キャッシュミスをした命令がフェッチポート1033のTOQの命令か、フェッチポート1033がハングしてないときに限り、一次キャッシュMIB1036を確保して、一次キャッシュ1034へのムーブインを要求することができ、それ以外のときは、プリフェッチポート1040を確保して、二次キャッシュ1038へのムーブインを要求することとしたので、記憶制御装置103は、フェッチポート1033がハングしていることが検出された場合、アウトオブオーダ処理から逐次処理に移行することにより少なくとも一つのフェッチ処理要求を処理することができる。
また、ストアポート1032でハングしていることが検出された場合は、ストアポートのTOQ以外の一次キャッシュミスをした命令は、プリフェッチポート1040を確保して、二次キャッシュ1038へのムーブインを要求することとしたので、記憶制御装置103は、ストアポート1032がハングしていることが検出された場合、アウトオブオーダ処理から逐次処理に移行することにより少なくとも一つのストア命令を処理することができる。
上述してきたように、本実施例1では、中央処理装置10は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、一次キャッシュ1034、二次キャッシュ1038または主記憶装置30から演算装置102にデータを格納する命令であるロード命令と、演算装置102の演算結果を一次キャッシュ1034、二次キャッシュ1038または主記憶装置30に書き込むストア命令と、主記憶装置30のデータを一次キャッシュ1034または二次キャッシュ1038へ格納する命令であるプリフェッチ命令と、を少なくとも実行し、有効MIB検出部1041aは、主記憶装置30のデータに対する一次キャッシュ1034の参照要求が保持された一次キャッシュMIB1036の数を検出し、MIB制御部1041cは、検出された一次キャッシュMIB1034の数が所定の数に達した場合に、ロード命令またはストア命令による参照要求をプリフェッチ命令による参照要求に優先して一次キャッシュMIB1036に保持するよう制御することとしたので、記憶制御装置103は、将来必要になると思われるデータを用意するためのプリフェッチ要求により、今すぐに実行の完了を必要とするロード命令またはストア命令がさまたげられることが回避でき、もって主記憶装置30のデータに対する参照を効率的に制御することができる。
また、MIB制御部1041cは、命令の実行順序に基づいてロード命令またはストア命令による参照要求を一次キャッシュMIB1036に保持するよう制御することとしたので、記憶制御装置103は、命令実行上一番先に実行されなければならないロード要求またはストア要求が一次キャッシュMIB1036を確保できずに実行が妨げられることが回避でき、もって主記憶装置30のデータに対する参照を効率的に制御することができる。
また、フェッチポート1033は、一次キャッシュ1034、二次キャッシュ1038または主記憶装置30からデータを取り出す要求であるフェッチ処理要求を保持し、命令実行監視部1041dは、保持されたフェッチ処理要求の実行を監視し、MIB制御部1041cは、フェッチ処理が所定の時間停滞していることが検出された場合は、保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による参照要求を一次キャッシュMIB1036に保持するよう制御し、フェッチ処理が所定の時間停滞していることが検出されなかった場合は、フェッチ処理要求による参照要求を一次キャッシュMIB1036に保持するよう制御することとしたので、記憶制御装置103は、キャッシュラインのスラッシングが発生した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が長時間実行を待たされることが回避でき、もって主記憶装置30のデータに対する参照を効率的に制御することができる。
また、ストアポート1032は、ストア命令を保持し、命令実行監視部1041dは、保持されたストア命令の実行をさらに監視し、MIB制御部1041cは、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、ストアポート1032に保持されているストア命令のなかで最も古く格納されたストア命令による参照要求を一次キャッシュMIB1036に保持するよう制御することとしたので、記憶制御装置103は、キャッシュラインのスラッシングが発生した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が長時間実行を待たされることが回避でき、もって主記憶装置30のデータに対する参照を効率的に制御することができる。
また、MIB制御部1041cは、参照要求を一次キャッシュバッファに保持するよう制御し、一次キャッシュバッファに保持するよう制御した参照要求以外の参照要求を参照要求転送ポートによって一次キャッシュから二次キャッシュへ転送することとしたので、記憶制御装置103は、一次キャッシュMIB1034の空きがなく、後続の命令がキャッシュミスを起こした場合、主記憶装置30から二次キャッシュ1038までのムーブインを要求することができ、もって主記憶装置30のデータに対する参照を効率的に制御することができる。
ところで、上記実施例1で説明した記憶制御装置およびムーブインバッファ制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、本実施例2では、上記実施例1で説明した記憶制御装置と同様の機能を有するムーブインバッファ制御プログラムを実行するコンピュータシステムについて説明する。
図8は、実施例2に係るコンピュータシステムの構成を示すシステム構成図であり、図9は、図8に示すコンピュータシステムにおける本体部の構成を示すブロック図である。図8に示すように、実施例2に係るコンピュータシステム200は、本体部201と、本体部201からの指示によって表示画面202aに画像などの情報を表示するためのディスプレイ202と、このコンピュータシステム200に種々の情報を入力するためのキーボード203と、ディスプレイ202の表示画面202a上の任意の位置を指定するためのマウス204とを備える。
また、このコンピュータシステム200における本体部201は、図9に示すように、CPU221と、RAM222と、ROM223と、ハードディスクドライブ(HDD)224と、CD−ROM209を受け入れるCD−ROMドライブ225と、フレキシブルディスク(FD)208を受け入れるFDドライブ226と、ディスプレイ202、キーボード203並びにマウス204を接続するI/Oインターフェース227と、ローカルエリアネットワークまたは広域エリアネットワーク(LAN/WAN)206に接続するLANインターフェース228と、を備える。
さらに、このコンピュータシステム200には、インターネットなどの公衆回線207に接続するためのモデム205が接続されるとともに、LANインターフェース228およびLAN/WAN206を介して、他のコンピュータシステム(PC)211、サーバ212並びにプリンタ213などが接続される。
そして、このコンピュータシステム200は、所定の記録媒体に記録されたムーブインバッファ制御プログラムを読み出して実行することで記憶制御装置を実現する。ここで、所定の記録媒体とは、フレキシブルディスク(FD)208、CD−ROM209、MOディスク、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」の他に、コンピュータシステム200の内外に備えられるハードディスクドライブ(HDD)224や、RAM222、ROM223などの「固定用の物理媒体」、さらに、モデム205を介して接続される公衆回線207や、他のコンピュータシステム211並びにサーバ212が接続されるLAN/WAN206などのように、プログラムの送信に際して短期にプログラムを保持する「通信媒体」など、コンピュータシステム200によって読み取り可能なムーブインバッファ制御プログラムを記録する、あらゆる記録媒体を含むものである。
すなわち、ムーブインバッファ制御プログラムは、上記した「可搬用の物理媒体」、「固定用の物理媒体」、「通信媒体」などの記録媒体に、コンピュータ読み取り可能に記録されるものであり、コンピュータシステム200は、このような記録媒体からムーブインバッファ制御プログラムを読み出して実行することで記憶制御装置およびムーブインバッファ制御方法を実現する。なお、ムーブインバッファ制御プログラムは、コンピュータシステム200によって実行されることに限定されるものではなく、他のコンピュータシステム211またはサーバ212がムーブインバッファ制御プログラムを実行する場合や、これらが協働してムーブインバッファ制御プログラムを実行するような場合にも、本発明を同様に適用することができる。
(付記1)主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置であって、
前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、
前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出手段と、
前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御手段と、
を備えたことを特徴とする記憶制御装置。
(付記2)前記バッファ制御手段は、前記命令の実行順序に基づいて前記ロード命令または前記ストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記1に記載の記憶制御装置。
(付記3)前記キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求を保持するバッファであるフェッチポートと、
前記フェッチポートに保持されたフェッチ処理要求の実行を監視する命令実行監視手段と、をさらに備え、
前記バッファ制御手段は、前記命令実行監視手段によってフェッチ処理が所定の時間停滞していることが検出された場合は、前記フェッチポートに保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御し、前記命令実行監視手段によってフェッチ処理が所定の時間停滞していることが検出されなかった場合は、前記フェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記1または2に記載の記憶制御装置。
(付記4)前記ストア命令を保持するバッファであるストアポートをさらに備え、
前記命令実行監視手段は、前記ストアポートに保持されたストア命令の実行をさらに監視し、
前記バッファ制御手段は、前記命令実行監視手段によって、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、前記ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記3に記載の記憶制御装置。
(付記5)前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、
前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、
前記一次キャッシュから前記二次キャッシュへ転送する前記参照要求を保持するバッファである参照要求転送ポートと、をさらに備え、
前記バッファ制御手段は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポートによって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする付記1〜4のいずれか一つに記載の記憶制御装置。
(付記6)主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御方法であって、
前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、
前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出工程と、
前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御工程と、
を含んだことを特徴とするムーブインバッファ制御方法。
(付記7)前記バッファ制御工程は、前記命令の実行順序に基づいて前記ロード命令または前記ストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記6に記載のムーブインバッファ制御方法。
(付記8)前記キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求をバッファであるフェッチポートに保持するフェッチポート保持工程と、
前記フェッチポート保持工程でフェッチポートに保持されたフェッチ処理要求の実行を監視する命令実行監視工程と、をさらに含み、
前記バッファ制御工程は、前記命令実行監視工程によってフェッチ処理が所定の時間停滞していることが検出された場合は、前記フェッチポートに保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御し、前記命令実行監視工程によってフェッチ処理が所定の時間停滞していることが検出されなかった場合は、前記フェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記6または7に記載のムーブインバッファ制御方法。
(付記9)前記ストア命令をバッファであるストアポートに保持するストアポート保持工程をさらに含み、
前記命令実行監視工程は、前記ストアポート保持工程でストアポートに保持されたストア命令の実行をさらに監視し、
前記バッファ制御工程は、前記命令実行監視工程によって、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、前記ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記8に記載のムーブインバッファ制御方法。
(付記10)前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、
前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、
前記一次キャッシュから前記二次キャッシュへ転送する前記参照要求をバッファである参照要求転送ポートに保持する参照要求転送ポート保持工程と、をさらに含み、
前記バッファ制御工程は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポートによって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする付記6〜9に記載のムーブインバッファ制御方法。
(付記11)主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御プログラムであって、
前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、
前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出手順と、
前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御手順と、
をコンピュータに実行させることを特徴とするムーブインバッファ制御プログラム。
(付記12)前記バッファ制御手順は、前記命令の実行順序に基づいて前記ロード命令または前記ストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記11に記載のムーブインバッファ制御プログラム。
(付記13)前記キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求をバッファであるフェッチポートに保持するフェッチポート保持手順と、
前記フェッチポート保持手順でフェッチポートに保持されたフェッチ処理要求の実行を監視する命令実行監視手順と、をさらにコンピュータに実行させ、
前記バッファ制御手順は、前記命令実行監視手順によってフェッチ処理が所定の時間停滞していることが検出された場合は、前記フェッチポートに保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御し、前記命令実行監視手順によってフェッチ処理が所定の時間停滞していることが検出されなかった場合は、前記フェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記11または12に記載のムーブインバッファ制御プログラム。
(付記14)前記ストア命令をバッファであるストアポートに保持するストアポート保持手順をさらにコンピュータに実行させ、
前記命令実行監視手順は、前記ストアポート保持手順でストアポートに保持されたストア命令の実行をさらに監視し、
前記バッファ制御手順は、前記命令実行監視手順によって、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、前記ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記13に記載のムーブインバッファ制御プログラム。
(付記15)前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、
前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、
前記一次キャッシュから前記二次キャッシュへ転送する前記参照要求をバッファである参照要求転送ポートに保持する参照要求転送ポート保持手順と、をさらにコンピュータに実行させ、
前記バッファ制御手順は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポートによって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする付記11〜14のいずれか一つに記載のムーブインバッファ制御プログラム。
以上のように、本発明に係る記憶制御装置は、特に、コンピュータに適している。
実施例1に係るコンピュータシステムの構成を示す機能ブロック図である。 図1に示す命令ポート、ストアポート、フェッチポート、一次キャッシュMIB/二次キャッシュMIB、プリフェッチポートのデータ構造の一例を示す図である。 図1に示す有効MIB検出部の構成を示す機能ブロック図である。 図1に示すMIB制御部によるプリフェッチ命令およびストア命令に対するMIB制御を示す図である。 図1に示すMIB制御部によるプリフェッチ命令に対するMIB制御手順を示すフローチャートである。 図1に示すMIB制御部によるアウトオブオーダ処理に対するMIB制御手順を示すフローチャートである。 図1に示すMIB制御部によるロード命令/ストア命令の実行停滞に対するMIB制御手順を示すフローチャートである。 実施例2に係るコンピュータシステムの構成を示すシステム構成図である。 図8に示すコンピュータシステムにおける本体部の構成を示すブロック図である。
符号の説明
1 コンピュータシステム
10、50 中央処理装置
20 システムコントローラ
30 主記憶装置
40 入出力装置
101 命令処置装置
102 演算装置
103 記憶制御装置
1031 命令ポート
1032 ストアポート
1033 フェッチポート
1034 一次キャッシュ
1034a 命令キャッシュ
1034b オペランドキャッシュ
1036 一次キャッシュMIB
1036a 命令キャッシュMIB
1036b オペランドキャッシュMIB
1038 二次キャッシュ
1039 二次キャッシュMIB
1040 プリフェッチポート
1041 一次キャッシュ制御部
1041a 有効MIB検出部
1041b 命令識別部
1041c MIB制御部
1041d 命令実行監視部
1042 二次キャッシュ制御部
200 コンピュータシステム
201 本体部
202 ディスプレイ
202a 表示画面
203 キーボード
204 マウス
205 モデム
206 ローカルエリアネットワークまたは広域エリアネットワーク(LAN/WAN)
207 公衆回線
208 フレキシブルディスク(FD)
209 CD−ROM
211 他のコンピュータシステム(PC)
212 サーバ
213 プリンタ
221 CPU
222 RAM
223 ROM
224 ハードディスクドライブ(HDD)
225 CD−ROMドライブ
226 FDドライブ
227 I/Oインターフェース
228 LANインターフェース

Claims (10)

  1. 主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置であって、
    前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、
    前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出手段と、
    前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御手段と、
    を備えたことを特徴とする記憶制御装置。
  2. 前記バッファ制御手段は、前記命令の実行順序に基づいて前記ロード命令または前記ストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする請求項1に記載の記憶制御装置。
  3. 前記キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求を保持するバッファであるフェッチポートと、
    前記フェッチポートに保持されたフェッチ処理要求の実行を監視する命令実行監視手段と、をさらに備え、
    前記バッファ制御手段は、前記命令実行監視手段によってフェッチ処理が所定の時間停滞していることが検出された場合は、前記フェッチポートに保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御し、前記命令実行監視手段によってフェッチ処理が所定の時間停滞していることが検出されなかった場合は、前記フェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする請求項1または2に記載の記憶制御装置。
  4. 前記ストア命令を保持するバッファであるストアポートをさらに備え、
    前記命令実行監視手段は、前記ストアポートに保持されたストア命令の実行をさらに監視し、
    前記バッファ制御手段は、前記命令実行監視手段によって、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、前記ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする請求項3に記載の記憶制御装置。
  5. 前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、
    前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、
    前記一次キャッシュから前記二次キャッシュへ転送する前記参照要求を保持するバッファである参照要求転送ポートと、をさらに備え、
    前記バッファ制御手段は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポートによって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする請求項1〜4のいずれか一つに記載の記憶制御装置。
  6. 主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御方法であって、
    前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、
    前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出工程と、
    前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御工程と、
    を含んだことを特徴とするムーブインバッファ制御方法。
  7. 前記バッファ制御工程は、前記命令の実行順序に基づいて前記ロード命令または前記ストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする請求項6に記載のムーブインバッファ制御方法。
  8. 前記キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求をバッファであるフェッチポートに保持するフェッチポート保持工程と、
    前記フェッチポート保持工程でフェッチポートに保持されたフェッチ処理要求の実行を監視する命令実行監視工程と、をさらに含み、
    前記バッファ制御工程は、前記命令実行監視工程によってフェッチ処理が所定の時間停滞していることが検出された場合は、前記フェッチポートに保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御し、前記命令実行監視工程によってフェッチ処理が所定の時間停滞していることが検出されなかった場合は、前記フェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする請求項6または7に記載のムーブインバッファ制御方法。
  9. 前記ストア命令をバッファであるストアポートに保持するストアポート保持工程をさらに含み、
    前記命令実行監視工程は、前記ストアポート保持工程でストアポートに保持されたストア命令の実行をさらに監視し、
    前記バッファ制御工程は、前記命令実行監視工程によって、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、前記ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする請求項8に記載のムーブインバッファ制御方法。
  10. 主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御プログラムであって、
    前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、
    前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出手順と、
    前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御手順と、
    をコンピュータに実行させることを特徴とするムーブインバッファ制御プログラム。
JP2004224854A 2004-07-30 2004-07-30 記憶制御装置、中央処理装置、情報処理装置及び記憶制御装置の制御方法 Expired - Fee Related JP4691335B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004224854A JP4691335B2 (ja) 2004-07-30 2004-07-30 記憶制御装置、中央処理装置、情報処理装置及び記憶制御装置の制御方法
US10/995,560 US7451274B2 (en) 2004-07-30 2004-11-24 Memory control device, move-in buffer control method
EP04257447A EP1622029B1 (en) 2004-07-30 2004-11-30 Memory control device, move-in buffer control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004224854A JP4691335B2 (ja) 2004-07-30 2004-07-30 記憶制御装置、中央処理装置、情報処理装置及び記憶制御装置の制御方法

Publications (2)

Publication Number Publication Date
JP2006048181A true JP2006048181A (ja) 2006-02-16
JP4691335B2 JP4691335B2 (ja) 2011-06-01

Family

ID=34930865

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004224854A Expired - Fee Related JP4691335B2 (ja) 2004-07-30 2004-07-30 記憶制御装置、中央処理装置、情報処理装置及び記憶制御装置の制御方法

Country Status (3)

Country Link
US (1) US7451274B2 (ja)
EP (1) EP1622029B1 (ja)
JP (1) JP4691335B2 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007097029A1 (ja) 2006-02-27 2007-08-30 Fujitsu Limited プロセッサ装置および命令処理方法
WO2008155833A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited キャッシュメモリ制御装置およびキャッシュメモリ制御方法
JPWO2007099598A1 (ja) * 2006-02-28 2009-07-16 富士通株式会社 プリフェッチ機能を有するプロセッサ
WO2009104240A1 (ja) * 2008-02-18 2009-08-27 富士通株式会社 演算処理装置および演算処理装置の制御方法
JP2010176692A (ja) * 2010-03-15 2010-08-12 Fujitsu Ltd 演算処理装置、情報処理装置及び制御方法
JPWO2008155822A1 (ja) * 2007-06-19 2010-08-26 富士通株式会社 キャッシュ制御装置及び制御方法
JP2011013864A (ja) * 2009-06-30 2011-01-20 Fujitsu Ltd 命令制御装置、命令制御方法および演算回路
JP2011123608A (ja) * 2009-12-09 2011-06-23 Fujitsu Ltd 演算処理装置及び演算処理装置の制御方法
WO2011077549A1 (ja) * 2009-12-25 2011-06-30 富士通株式会社 演算処理装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9641809B2 (en) * 2014-03-25 2017-05-02 Nxp Usa, Inc. Circuit arrangement and method for processing a digital video stream and for detecting a fault in a digital video stream, digital video system and computer readable program product
US9826252B2 (en) 2014-07-29 2017-11-21 Nxp Usa, Inc. Method and video system for freeze-frame detection
KR102639784B1 (ko) * 2016-10-25 2024-02-26 삼성디스플레이 주식회사 모노아민 화합물 및 이를 포함하는 유기 전계 발광 소자

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6446145A (en) * 1987-08-13 1989-02-20 Fujitsu Ltd Cache memory control system
JPH0421044A (ja) * 1990-05-14 1992-01-24 Mitsubishi Electric Corp 1チップキャッシュメモリ
JPH05233441A (ja) * 1991-11-19 1993-09-10 Fujitsu Ltd メモリアクセス装置
JPH06222990A (ja) * 1992-10-16 1994-08-12 Fujitsu Ltd データ処理装置
JPH07253926A (ja) * 1994-02-14 1995-10-03 Hewlett Packard Co <Hp> キャッシュ・ミスによる時間ペナルティ減少方法
JPH0816468A (ja) * 1994-06-24 1996-01-19 Matsushita Electric Ind Co Ltd データプリフェッチ制御回路
US5551010A (en) * 1991-11-19 1996-08-27 Fujitsu Limited Arithmetic operation unit and memory accessing device for accessing primary and secondary cache memories independently of a CPU
US6073215A (en) * 1998-08-03 2000-06-06 Motorola, Inc. Data processing system having a data prefetch mechanism and method therefor

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6446145A (en) * 1987-08-13 1989-02-20 Fujitsu Ltd Cache memory control system
JPH0421044A (ja) * 1990-05-14 1992-01-24 Mitsubishi Electric Corp 1チップキャッシュメモリ
JPH05233441A (ja) * 1991-11-19 1993-09-10 Fujitsu Ltd メモリアクセス装置
US5551010A (en) * 1991-11-19 1996-08-27 Fujitsu Limited Arithmetic operation unit and memory accessing device for accessing primary and secondary cache memories independently of a CPU
JPH06222990A (ja) * 1992-10-16 1994-08-12 Fujitsu Ltd データ処理装置
US5828860A (en) * 1992-10-16 1998-10-27 Fujitsu Limited Data processing device equipped with cache memory and a storage unit for storing data between a main storage or CPU cache memory
JPH07253926A (ja) * 1994-02-14 1995-10-03 Hewlett Packard Co <Hp> キャッシュ・ミスによる時間ペナルティ減少方法
US5603004A (en) * 1994-02-14 1997-02-11 Hewlett-Packard Company Method for decreasing time penalty resulting from a cache miss in a multi-level cache system
JPH0816468A (ja) * 1994-06-24 1996-01-19 Matsushita Electric Ind Co Ltd データプリフェッチ制御回路
US6073215A (en) * 1998-08-03 2000-06-06 Motorola, Inc. Data processing system having a data prefetch mechanism and method therefor

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007097029A1 (ja) 2006-02-27 2007-08-30 Fujitsu Limited プロセッサ装置および命令処理方法
JP4574712B2 (ja) * 2006-02-28 2010-11-04 富士通株式会社 演算処理装置、情報処理装置及び制御方法
US8074029B2 (en) 2006-02-28 2011-12-06 Fujitsu Limited Processor equipped with a pre-fetch function and pre-fetch control method
JPWO2007099598A1 (ja) * 2006-02-28 2009-07-16 富士通株式会社 プリフェッチ機能を有するプロセッサ
JP4706030B2 (ja) * 2007-06-19 2011-06-22 富士通株式会社 キャッシュ制御装置及び制御方法
JPWO2008155822A1 (ja) * 2007-06-19 2010-08-26 富士通株式会社 キャッシュ制御装置及び制御方法
JPWO2008155833A1 (ja) * 2007-06-20 2010-08-26 富士通株式会社 キャッシュメモリ制御装置およびキャッシュメモリ制御方法
US8677070B2 (en) 2007-06-20 2014-03-18 Fujitsu Limited Cache memory control apparatus and cache memory control method
JP4710024B2 (ja) * 2007-06-20 2011-06-29 富士通株式会社 キャッシュメモリ制御装置およびキャッシュメモリ制御方法
WO2008155833A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited キャッシュメモリ制御装置およびキャッシュメモリ制御方法
US8190825B2 (en) 2008-02-18 2012-05-29 Fujitsu Limited Arithmetic processing apparatus and method of controlling the same
WO2009104240A1 (ja) * 2008-02-18 2009-08-27 富士通株式会社 演算処理装置および演算処理装置の制御方法
JP4843717B2 (ja) * 2008-02-18 2011-12-21 富士通株式会社 演算処理装置および演算処理装置の制御方法
JP2011013864A (ja) * 2009-06-30 2011-01-20 Fujitsu Ltd 命令制御装置、命令制御方法および演算回路
JP2011123608A (ja) * 2009-12-09 2011-06-23 Fujitsu Ltd 演算処理装置及び演算処理装置の制御方法
WO2011077549A1 (ja) * 2009-12-25 2011-06-30 富士通株式会社 演算処理装置
JP5482801B2 (ja) * 2009-12-25 2014-05-07 富士通株式会社 演算処理装置
JP2010176692A (ja) * 2010-03-15 2010-08-12 Fujitsu Ltd 演算処理装置、情報処理装置及び制御方法

Also Published As

Publication number Publication date
EP1622029B1 (en) 2011-07-06
EP1622029A2 (en) 2006-02-01
US7451274B2 (en) 2008-11-11
JP4691335B2 (ja) 2011-06-01
EP1622029A3 (en) 2006-08-09
US20060026363A1 (en) 2006-02-02

Similar Documents

Publication Publication Date Title
US5983325A (en) Dataless touch to open a memory page
JP5615927B2 (ja) データストリームのためのストアアウェアプリフェッチ
US6681295B1 (en) Fast lane prefetching
US5524233A (en) Method and apparatus for controlling an external cache memory wherein the cache controller is responsive to an interagent communication for performing cache control operations
US6725337B1 (en) Method and system for speculatively invalidating lines in a cache
US9892039B2 (en) Non-temporal write combining using cache resources
US8412888B2 (en) Cache-based speculation of stores following synchronizing operations
US7213126B1 (en) Method and processor including logic for storing traces within a trace cache
US9652385B1 (en) Apparatus and method for handling atomic update operations
JP4298800B2 (ja) キャッシュメモリにおけるプリフェッチ管理
JP4504132B2 (ja) 記憶制御装置、中央処理装置、情報処理装置及び記憶制御装置の制御方法
JP4691335B2 (ja) 記憶制御装置、中央処理装置、情報処理装置及び記憶制御装置の制御方法
US8375170B2 (en) Apparatus and method for handling data in a cache
US20090106498A1 (en) Coherent dram prefetcher
EP1782184B1 (en) Selectively performing fetches for store operations during speculative execution
US10997079B2 (en) Method and arrangement for saving cache power
US5909697A (en) Reducing cache misses by snarfing writebacks in non-inclusive memory systems
KR102590180B1 (ko) 자격 메타데이터를 관리하는 장치 및 방법
EP2416251A1 (en) A method of managing computer memory, corresponding computer program product, and data storage device therefor
US7133975B1 (en) Cache memory system including a cache memory employing a tag including associated touch bits
JP3007870B2 (ja) アーキテクチャ操作を管理する方法及び装置
US20100223624A1 (en) Method for pushing work request-associated contexts into an io device
US7310712B1 (en) Virtual copy system and method
US6643741B1 (en) Method and apparatus for efficient cache management and avoiding unnecessary cache traffic
US6393523B1 (en) Mechanism for invalidating instruction cache blocks in a pipeline processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100330

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100531

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: 20110215

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110221

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140225

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees