(57)【要約】    【課題】  複数の読み出し処理を同時に行う際に発生するバンク競合の発生確率を低減するマルチポートキャッシュメモリを提供する。    【解決手段】  キャッシュメモリの構成要素であるアドレスアレイ１１０−０、１１０−１，１１０−２，１１０−３及びデータアレイ１７０−０、１７０−１、１７０−２、１７０−３に登録されているキャッシュブロックデータ１７１−０、１７１−１、１７１−２、１７１−３を複数のアクセスアドレス１００−０、１００−１により索引し、複数のアクセスアドレス１００−０、１００−１に対応したターゲットデータの読み出し処理を同時に行う、マルチポートキャッシュメモリであって、アドレスアレイ１１０−０、１１０−１，１１０−２，１１０−３とデータアレイ１７０−０、１７０−１、１７０−２、１７０−３を、アクセスアドレス１００−０、１００−１のインデックス部下位ビット１０４−０、１０４−１により一意に識別できる複数のバンクに分割する。【選択図】      図１
2006139401.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリの構成要素であるアドレスアレイ及びデータアレイに登録されているキャッシュブロックデータを複数のアクセスアドレスにより索引し、前記複数のアクセスアドレスに対応したそれぞれのターゲットデータの読み出し処理を同時に行う、マルチポートキャッシュメモリであって、
前記アドレスアレイとデータアレイを、前記アクセスアドレスのインデックス部下位ビットにより一意に識別できる複数のバンクに分割することを特徴とするマルチポートキャッシュメモリ。
【請求項２】
複数のブロックにメモリを分割するセットアソシアティブ方式のキャッシュメモリであることを特徴とする請求項１に記載のマルチポートキャッシュメモリ。
【請求項３】
演算の対象となる値、変数を記憶するオペランドキャッシュメモリであることを特徴とする請求項２に記載のマルチポートキャッシュメモリ。
【請求項４】
前記アクセスアドレスのインデックス部下位ビットを指定することにより、前記複数のバンクのそれぞれに独立してアクセス可能としたことを特徴とする請求項２又は請求項３に記載のマルチポートキャッシュメモリ。
【請求項５】
前記複数のバンクに分割されたデータアレイへのアクセスビット幅と前記データアレイに登録されているキャッシュブロックデータのデータ幅を同一とし、前記読み出し処理の要求がなされたターゲットデータを、複数のデータで構成された前記キャッシュブロックデータから選択する構成としたことを特徴とする請求項４に記載のマルチポートキャッシュメモリ。
【請求項６】
前記複数のアクセスアドレスによりキャッシュブロックデータを索引する際、前記複数のアクセスアドレスを構成するそれぞれのタグ部を互いに比較すると共に、それぞれのインデックス部を互いに比較することを特徴とする請求項５に記載のマルチポートキャッシュメモリ。
【請求項７】
前記複数のアクセスアドレスの情報を保持するラッチを備えることを特徴とする請求項６に記載のマルチポートキャッシュメモリ。
【請求項８】
前記複数のアクセスアドレスのタグ部が互いに一致し、前記複数のアクセスアドレスのインデックス部が互いに一致した場合、優先順位の高いアクセスアドレスのみを有効とすることを特徴とする請求項７に記載のマルチポートキャッシュメモリ。
【請求項９】
前記優先順位の高いアクセスアドレスのインデックス部を索引アドレスとして、当該インデックス部の下位ビットにより一意に識別できるバンクのデータアレイからキャッシュブロックデータを読み出すことを特徴とする請求項８に記載のマルチポートキャッシュメモリ。
【請求項１０】
前記キャッシュブロックデータが、前記複数のアクセスアドレスに対応するそれぞれのバンク選択回路から出力されることを特徴とする請求項９に記載のマルチポートキャッシュメモリ。
【請求項１１】
前記複数のアクセスアドレスのブロック部に対応して、前記キャッシュブロックデータからターゲットデータをそれぞれ選択することを特徴とする請求項１０に記載のマルチポートキャッシュメモリ。
【請求項１２】
前記複数のアクセスアドレスのタグ部が互いに一致しないで、前記複数のアクセスアドレスのインデックス部が互いに一致した場合、前記複数のアクセスアドレスの内、優先順位の高いアクセスアドレスのインデックス部下位ビットにより一意に識別できるバンクにアクセスすることを特徴とする請求項７に記載のマルチポートキャッシュメモリ。
【請求項１３】
前記インデックス部下位ビットにより一意に識別できるバンクにアクセスする際、セットアソシアティブ方式で分割された当該バンクの複数のセットに同時にアクセスして、当該セット毎に設置したバンク選択回路から、キャッシュブロックデータを出力することを特徴とする請求項１２に記載のマルチポートキャッシュメモリ。
【請求項１４】
前記複数のアクセスアドレス毎に、それぞれのタグ部と一致したキャッシュヒット判定信号に従い、それぞれのアクセスアドレスに対応したキャッシュブロックデータを選択することを特徴とする請求項１３に記載のマルチポートキャッシュメモリ。
【請求項１５】
前記アクセスアドレスに対応したキャッシュブロックデータから、前記アクセスアドレスのブロック部に対応したターゲットデータを選択することを特徴とする請求項１４に記載のマルチポートキャッシュメモリ。
【請求項１６】
読み出し処理を前回行った複数のアクセスアドレスのタグ部情報及びインデックス部情報を保持するラッチと、前記複数のバンクに分割されたデータアレイから前回出力されたキャッシュブロックデータを保持するホールドラッチを備えることを特徴とする請求項７に記載のマルチポートキャッシュメモリ。
【請求項１７】
前記複数のアクセスアドレスのタグ部及びインデックス部と、読み出し処理を今回行う複数のアクセスアドレスのタグ部及びインデックス部をそれぞれ比較し、タグ部及びインデックス部が前回と一致したアクセスアドレスに対応したデータアレイからの読み出し処理を実行しないことを特徴とする請求項１６に記載のマルチポートキャッシュメモリ。
【請求項１８】
前記データアレイに接続されたホールドラッチに保持されているキャッシュブロックデータを、前記アクセスアドレスに対応したバンク選択回路へ出力することを特徴とする請求項１７に記載のマルチポートキャッシュメモリ。
【請求項１９】
ロウデコーダ、ワード線ドライバ、メモリセルアレイ及びラッチ型センスアンプを備えるＳＲＡＭバンクを複数配置し、前記複数のラッチ型センスアンプを通過した信号を全てデータアレイの読み出しデータとして使用するＳＲＡＭにより、前記キャッシュメモリの構成要素であるデータアレイを構成することを特徴とする請求項７に記載のマルチポートキャッシュメモリ。
【請求項２０】
キャッシュメモリの構成要素であるアドレスアレイ及びデータアレイに登録されているキャッシュブロックデータを複数のアクセスアドレスにより索引し、前記複数のアクセスアドレスに対応したそれぞれのターゲットデータの読み出し処理を同時に行う、マルチポートキャッシュメモリのアクセス制御方式であって、
前記アクセスアドレスのインデックス部下位ビットにより、前記アドレスアレイとデータアレイを一意に識別できる複数のバンクに分割したマルチポートキャッシュメモリとし、前記インデックス部下位ビットを指定することにより、前記各バンクに独立してアクセスすることを特徴とするマルチポートキャッシュメモリのアクセス制御方式。
【請求項２１】
前記マルチポートキャッシュメモリは、複数のブロックにメモリを分割するセットアソシアティブ方式のキャッシュメモリであることを特徴とする請求項２０に記載のマルチポートキャッシュメモリのアクセス制御方式。
【請求項２２】
前記マルチポートキャッシュメモリは、演算の対象となる値、変数を記憶するオペランドキャッシュメモリであることを特徴とする請求項２１に記載のマルチポートキャッシュメモリのアクセス制御方式。
【請求項２３】
前記複数のバンクに分割されたデータアレイへのアクセスビット幅と前記データアレイに登録されているキャッシュブロックデータのデータ幅を同一とし、前記読み出し処理の要求がなされたターゲットデータを、複数のデータで構成された前記キャッシュブロックデータから選択することを特徴とする請求項２１又は請求項２２に記載のマルチポートキャッシュメモリのアクセス制御方式。
【請求項２４】
前記複数のアクセスアドレスによりキャッシュブロックデータを索引する際、前記複数のアクセスアドレスを構成するそれぞれのタグ部を互いに比較すると共に、それぞれのインデックス部を互いに比較することを特徴とする請求項２３に記載のマルチポートキャッシュメモリのアクセス制御方式。
【請求項２５】
前記複数のアクセスアドレスのタグ部が互いに一致し、前記複数のアクセスアドレスのインデックス部が互いに一致した場合、優先順位の高いアクセスアドレスのみを有効とすることを特徴とする請求項２４に記載のマルチポートキャッシュメモリのアクセス制御方式。
【請求項２６】
前記優先順位の高いアクセスアドレスのインデックス部を索引アドレスとして、当該インデックス部の下位ビットにより一意に識別できるバンクのデータアレイからキャッシュブロックデータを読み出すことを特徴とする請求項２５に記載のマルチポートキャッシュメモリのアクセス制御方式。
【請求項２７】
前記キャッシュブロックデータが、前記複数のアクセスアドレスに対応するそれぞれのバンク選択回路から出力されることを特徴とする請求項２６に記載のマルチポートキャッシュメモリのアクセス制御方式。
【請求項２８】
前記複数のアクセスアドレスのブロック部に対応して、前記キャッシュブロックデータからターゲットデータをそれぞれ選択することを特徴とする請求項２７に記載のマルチポートキャッシュメモリのアクセス制御方式。
【請求項２９】
前記複数のアクセスアドレスのタグ部が互いに一致しないで、前記複数のアクセスアドレスのインデックス部が互いに一致した場合、前記複数のアクセスアドレスの内、優先順位の高いアクセスアドレスのインデックス部下位ビットにより一意に識別できるバンクにアクセスすることを特徴とする請求項２４に記載のマルチポートキャッシュメモリのアクセス制御方式。
【請求項３０】
前記インデックス部下位ビットにより一意に識別できるバンクにアクセスする際、セットアソシアティブ方式で分割された当該バンクの複数のセットに同時にアクセスして、当該セット毎に設置したバンク選択回路から、キャッシュブロックデータを出力することを特徴とする請求項２９に記載のマルチポートキャッシュメモリのアクセス制御方式。
【請求項３１】
前記複数のアクセスアドレス毎に、それぞれのタグ部と一致したキャッシュヒット判定信号に従い、それぞれのアクセスアドレスに対応したキャッシュブロックデータを選択することを特徴とする請求項３０に記載のマルチポートキャッシュメモリのアクセス制御方式。
【請求項３２】
前記アクセスアドレスに対応したキャッシュブロックデータから、前記アクセスアドレスのブロック部に対応したターゲットデータを選択することを特徴とする請求項３１に記載のマルチポートキャッシュメモリのアクセス制御方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリに関し、特に、複数の読み出し処理を同時に行う際に発生するバンク競合の発生確率を低減するマルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式に関する。
【背景技術】
【０００２】
複数の読み出し処理を同時に行うマルチポートキャッシュメモリにおいては、従来のバンク構成による手法では、同時に複数の読み出し処理を行うことができなくなるバンク競合が発生する確率が高くなるという問題がある。
【０００３】
一方、バンク競合の発生する確率を低くしようとすると、ＬＳＩに実装した場合のキャッシュメモリの面積が大きくなり、信号配線長の増加による伝搬遅延増加等による動作周波数の低下や、ＬＳＩサイズの増加によるコスト上昇、消費電力の増加等が起こる。
【０００４】
最近のスーパースカラプロセッサ等では、同時に複数のロード／ストア命令が発行できるようになっている。このため、オペランドキャッシュメモリは、これら複数のロード／ストア命令を処理できるようにマルチポート構成になっている。特に、プロセッサにおけるアプリケーション実行時の性能、すなわち実効性能を向上させるためには、複数のロード命令を同時に実行することが必要であり、オペランドキャッシュメモリとしては同時に複数の読み出し処理が実行できることが望まれている。同時に複数の読み出し処理を実現するマルチポートキャッシュメモリは、いくつかの構成で実現することができる。以下で３つの例について説明する。
【０００５】
方式１：１ポートのＲＡＭ（Random Access Memory）セルを使用してデータアレイをバンク構成にすることで、バンク競合が起こらない限りマルチポートアクセスを行う方式。
【０００６】
方式２：ポートアクセス構成のキャッシュメモリを多重化して、ストア命令実行時は全てのキャッシュメモリに同一データを書き込み、ロード命令実行時には各キャッシュメモリから異なるデータを読み出すことでマルチポートアクセスを行う方式。
【０００７】
方式３：キャッシュメモリに使用するメモリセル自体をマルチポートＲＡＭセルとして、アドレスデコーダやセンスアンプ等のキャッシュメモリ構成部品を全て複数持つことでマルチポートアクセスを行う方式。
【０００８】
図９は、マルチポートキャッシュメモリの方式１の構成を示すブロック図である。ここでは、同時に２つの読み出し処理を行うオペランドキャッシュメモリについて説明する。
【０００９】
オペランドキャッシュメモリとしてはセットアソシアティブ方式を想定しており、図９では、２ウェイセットアソシアティブ方式による構成例としている。
【００１０】
異なる２つのアクセスアドレス９００−０、９００−１を保持するラッチ１０、１１があり、そのアドレスは上位側から順にタグ（Tag）部、インデックス（Index）部、ブロック（Block）部の３つに分割されている。
【００１１】
タグ部９０１−０、９０１−１は、アドレスアレイ９１０−０、９１０−１に登録されているアドレスと比較するためにタグアドレス比較器９２０−０、９２０−１へと送られ、インデックス部９０２−０、９０２−１は、アドレスアレイ９１０−０、９１０−１からの読み出しアドレスとなる。
【００１２】
アドレスアレイ９１０−０、９１０−１から読み出された登録アドレス９１１−０、９１１−１とタグ部９０１−０、９０１−１は、タグアドレス比較器９２０−０、９２０−１で比較されて、その値が一致したかどうかによってキャッシュヒット判定信号９２１−０、９２１−１が生成される。
【００１３】
アドレスアレイ９１０−０、９１０−１は２つのアクセスアドレス９００−０、９００−１のそれぞれに対応するように同一内容のコピーを持つように２重化されており、アドレスアレイ９１０−０、９１０−１への書き込みデータとなる登録タグアドレス更新情報９１２は２つのアドレスアレイ９１０−０、９１０−１に同時に与えられて同時に更新される。
【００１４】
タグアドレス比較器９２０−０、９２０−１も２重化されていて、２つのアクセスアドレス９００−０、９００−１にそれぞれ対応して比較処理を行う。
【００１５】
データアレイ９７０−０、９７０−１、９７０−２、９７０−３はアドレスのブロック部下位ビット９０４−０、９０４−１に応じて複数のバンクに分割されている。
【００１６】
図９では、このビット数を２としてデータアレイが４つのバンクに分割されている構成を示している。下位ビット９０４−０、９０４−１を除くブロック部とインデックス部とを合わせたアドレス９０３−０、９０３−１は、データアレイ９７０−０、９７０−１、９７０−２、９７０−３への読み出しアドレスとなる。アドレス９０３−０、９０３−１は、それぞれのデータアレイに対して２系統のアクセスアドレスのいずれからアクセスするかを選択するセレクタ９６０−０、９６０−１、９６０−２、９６０−３を経由した後、データアレイ９７０−０、９７０−１、９７０−２、９７０−３への読み出しアドレス９６１−０、９６１−１、９６１−２、９６１−３となる。
【００１７】
ブロック部下位ビット９０４−０、９０４−１は、それぞれデコーダ９３０−０、９３０−１に入力され、そのデコード信号９３１−０、９３１−１は、バンクに分割された各データアレイ９７０−０、９７０−１、９７０−２、９７０−３からの読み出しデータ９７１−０、９７１−１、９７１−２、９７１−３を選択するためのセレクタ９８０−０、９８０−１に対する選択制御信号となる。
【００１８】
データアレイを読み出す、データセレクタ９８０−０、９８０−１からの出力は、それぞれ２つの異なるアクセスアドレス９００−０、９００−１に対応するオペランドキャッシュメモリ内のターゲットデータ９８１−０、９８１−１となる。
【００１９】
また、デコード信号９３１−０、９３１−１と、それぞれのブロック部下位ビット９０４−０、９０４−１を比較器９４０に入力して得られる比較結果信号９４１とは、データアレイへの読み出しアドレスセレクタ９６０−０、９６０−１、９６０−２、９６０−３の選択制御信号９５１−０、９５１−１、９５１−２、９５１−３を生成するために、選択制御信号制御回路９５０に入力される。
【００２０】
ブロック部下位ビット９０４−０、９０４−１の比較結果信号９４１が不一致である場合には、２つの異なるアクセスアドレス９００−０、９００−１は、それぞれ異なるバンクのデータアレイから読み出し処理を行えることになるので、選択制御信号生成回路９５０では、ブロック部下位ビット９０４−０、９０４−１のデコード結果９３１−０、９３１−１に従ってデータアレイ読み出しアドレス情報選択制御信号９５１−０、９５１−１，９５１−２、９５１−３に適切な値を出力する。
【００２１】
一方、比較結果信号９４１が一致した場合には、２つの異なるアクセスアドレス９００−０、９００−１は同一バンクのデータアレイから読み出し処理を行わなければならないため、バンク競合が発生することになる。この場合には、優先順位に従って一方のアクセスアドレスからの読み出し処理を無効化して、片方のアクセスアドレスからの読み出しを行うように、データアレイを読み出すためのアドレス情報選択制御信号９５１−０、９５１−１，９５１−２、９５１−３に適切な値を出力する。
【００２２】
以上述べたように、この方式では同時に２つのオペランドキャッシュ読み出し処理を行うために、アドレスアレイの２重化と若干の周辺論理の追加で実現することが可能であり、ＬＳＩ上に実装した場合の面積増加を小さくすることができるという特徴を有している。
【００２３】
図１０は、マルチポートキャッシュメモリの方式２の構成を示すブロック図である。
【００２４】
方式２は、異なる２つのアクセスアドレス１０００−０、１０００−１を保持するラッチ１０、１１と、アクセスアドレスのタグ部１００１−０、１００１−１と、インデックス部１００２−０、１００２−１と、アドレスアレイ１０１０−０、１０１０−１と、アドレスアレイ１０１０−０、１０１０−１から読み出された登録アドレス１０１１−０、１０１１−１と、タグアドレス比較器１０２０−０、１０２０−１と、キャッシュヒット判定信号１０２１−０、１０２１−１と、アドレスアレイ１０１０−０、１０１０−１への登録タグ更新データ１０１２から構成されている。
【００２５】
方式２の場合、データアレイ１０７０−０、１０７０−１は、アドレスアレイ１０１０−０、１０１０−１と同様に、異なる２つのアクセスアドレス１０００−０、１０００−１のそれぞれに対応するように、同一内容のコピーを持つように２重化されている。
【００２６】
データアレイ１０７０−０、１０７０−１への書き込みデータとなるライト（Write）データやキャッシュメモリ登録データ更新のためのキャッシュフィル（Fill）データ（以下ではライトデータ／フィルデータと略す）１０７２は、２つのデータアレイ１０７０−０、１０７０−１に同時に与えられて同時に更新される。異なる２つのアクセスアドレス１０００−０、１０００−１のインデックス部とブロック部を合わせたアドレス１００３−０、１００３−１が、それぞれの対応するデータアレイ１０７０−０、１０７０−１に索引アドレスとして与えられ、必要とするターゲットデータ１０７１−０、１０７１−１として読み出されることで同時に２つの読み出し処理を行うことができる。
【００２７】
方式２では、図９に示した方式１とは異なり、あらゆるケースで同時に２つの読み出し処理を実行できるオペランドキャッシュメモリを構成できる特徴がある。
【００２８】
図１１は、マルチポートキャッシュメモリの方式３の構成を示すブロック図である。
【００２９】
方式３は、異なる２つのアクセスアドレス１１００−０、１１００−１を保持するラッチ１０、１１と、そのアドレスのタグ部１１０１−０、１１０１−１と、インデックス部１１０２−０、１１０２−１と、アドレスアレイ１１１０−０、１１１０−１と、アドレスアレイ１１１０−０、１１１０−１からそれぞれ読み出された登録アドレス１１１１−０、１１１１−１と、タグアドレス比較器１１２０−０、１１２０−１と、キャッシュヒット判定信号１１２１−０、１１２１−１と、アドレスアレイ１１１０−０、１１１０−１への登録タグ更新データ１１１２で構成されている。
【００３０】
また、登録タグ更新データ１１１２、キャッシュフィルデータ１１７２は方式２の場合と同様である。
【００３１】
方式３では、通常のメモリセルとは異なり同時に２つのアクセスを処理できる２ポートＲＡＭセルによって構成されている。
【００３２】
異なる２つのアクセスアドレス１１００−０、１１００−１のインデックス部及びブロック部を合わせたアドレス１１０３−０、１１０３−１は、データアレイ１１７０−０の２つのポートに直接入力され、読み出しデータ１１７１−０、１１７１−１はそれぞれ対応するポートに出力されて、キャッシュメモリからのターゲットデータとなる。
【００３３】
ここで、方式３の主要要素である２ポートＲＡＭセルについて、方式１、２の通常のＲＡＭセルと対比して説明する。
【００３４】
図１２は、図９及び図１０のデータアレイで使用されている通常のＲＡＭセルの構成を示す図である。
【００３５】
ＲＡＭセルでのデータ保持は、２つのインバータ１２００、１２１０をループ状に接続することで行われる。この外側にワード線１２２１によって制御される２つのスイッチングトランジスタ１２２０−０、１２２０−１が接続される。
【００３６】
ワード線１２２１が選択された状態になると２つのスイッチングトランジスタ１２２０−０、１２２０−１は導通状態となり、２つのインバータ１２００、１２１０に保持されていたデータは、ビット線１２２２−０、１２２２−１と呼ばれるデータ読み出し信号線に出力される。
【００３７】
この時、それぞれのビット線１２２２−０、１２２２−１に現れる読み出しデータは互いに論理的に反転した信号となっている。このようなＲＡＭセルをＬＳＩ上に実装する場合には、デザインルールと呼ばれるトランジスタ素子の寸法や配線幅、配線間隔等の基準を、通常の論理回路を構成するトランジスタや配線とは別に定義して、より小さい面積でＲＡＭセルを形成できるようにすることが一般的である。
【００３８】
図１３は、図１１のデータアレイで使用される２ポートＲＡＭセルの構成を示した図である。
【００３９】
ＲＡＭセルでのデータ保持を行う２つのインバータ１３００、１３１０をループ状に接続して、ワード線１３２１によって制御されてビット線１３２２−０、１３２２−１へのデータ読み出しを行う２つのスイッチングトランジスタ１３２０−０、１３２０−１が接続されている点では、図１２に示したＲＡＭセルと同様の構成である。
【００４０】
しかしながら、図１３に示した２ポートＲＡＭセルでは、別のワード線１３３１によって制御される別の２つのスイッチングトランジスタ１３３０−０、１３３０−１がループ状に接続された２つのインバータ１３００、１３１０に接続される。ワード線１３３１が選択されると、２つのスイッチングトランジスタ１３３０−０、１３３０−１は導通状態となり、データは別の２つのビット線１３３２−０、１３３２−１に出力される。
【００４１】
図１２の構成と比較すると、図１３の２ポートＲＡＭセルでは１つのＲＡＭセル当たりでトランジスタ２個、横方向の配線（ワード線）が１本、縦方向の配線（ビット線）が２本、それぞれ増加することがわかる。
【００４２】
また、２ポートＲＡＭセルでは通常のＲＡＭで適用された面積を小さくするための特別なデザインルールを適用することは一般的にはできない。このためトランジスタ数や配線数の増加以上に２ポートＲＡＭセルの面積は大きくなり、一般には面積は通常のＲＡＭセルの２〜２．５倍程度になる。
【００４３】
以上に説明した方式１〜方式３の３つの方式以外にも、バンク競合の発生の解決に類する方法の一例が、例えば特開昭６３−２０１８５１号公報（特許文献１）及び例えば特開平６−１３９１４４号公報（特許文献２）に記載されている。
【００４４】
特許文献１に開示される方法は、複数の要求元が同時にバッファ記憶にアクセスする場合の記憶方式に関するもので、アドレスアレイを複数バンクに分割し、キャッシュブロック単位にインタリーブさせる構成とする。また、データアレイは複数バンクに分割し、アクセスデータ幅単位にインタリーブさせる。
【００４５】
このような構成で、複数の要求元から、アドレスアレイとデータアレイが共に異なるアクセス要求がなされた場合には、複数の要求元が同時に読み出し処理を行うことができるというものである。
【００４６】
また、特許文献２の方法は、ブロックをまたいだアクセスに対応するキャッシュメモリ回路に関するものであって、アクセスがブロックをまたいでいる場合は、またいでいる２つのブロックのタグアドレスを比較し、２つのブロックの位置関係に応じて、同時に必要な２つの異なるブロックを読み出すことができるというものである。
【特許文献１】特開昭６３−２０１８５１号公報
【特許文献２】特開平６−１３９１４４号公報
【発明の開示】
【発明が解決しようとする課題】
【００４７】
上述した従来の技術は、いずれも以下に述べるような問題点があった。
【００４８】
最初に、方式１〜方式３について説明し、次に特許文献１、特許文献２の方法について説明する。
【００４９】
方式１は、１ポートのＲＡＭセルを使用してデータアレイをバンク構成にすることで、バンク競合が起こらない限りマルチポートアクセスを行う方法である。
【００５０】
しかしながら、方式１は、アクセスアドレスによっては、データアレイでのバンク競合により同時に読み出せないケースが発生することになる。このバンク競合発生確率を低減しようとするとバンク分割数を増やす必要があり、その場合はデータアレイの分割数増加による分割損による面積増加や、周辺論理の規模増大、セレクタ制御回路の論理複雑化によるクリティカルパス遅延増加による動作周波数低下などの問題が発生する。
【００５１】
また、方式２は、ポートアクセス構成のキャッシュメモリを多重化して、ストア命令実行時は全てのキャッシュメモリに同一データを書き込みロード命令実行時には各キャッシュメモリから異なるデータを読み出すことでマルチポートアクセスを行う方法である。
【００５２】
しかし、オペランドキャッシュメモリの主要な構成要素でありその大部分の面積を占めるデータアレイが完全に２重化されているため、通常の構成と比較してほぼ２倍の面積が必要になる。また、同時に２つの読み出し処理を行うためには、２重化されたデータアレイが常に動作し続けることになるため、消費電力もほぼ２倍になるという問題を有している。
【００５３】
また、方式３は、キャッシュメモリに使用するメモリセル自体をマルチポートＲＡＭセルとして、アドレスデコーダやセンスアンプ等のキャッシュメモリ構成部品を全て複数持つことでマルチポートアクセスを行う方法である。
【００５４】
方式３では、オペランドキャッシュメモリの主要な構成要素であり、その大部分の面積を占めるデータアレイの面積が通常の構成と比較して２倍から２．５倍程度に大きくなるという問題を有している。更に、ＲＡＭセル自体の面積が大きくなることから、全ＲＡＭセルを横断するワード線長や全ＲＡＭセルを縦断するビット線長が増大してデータアレイのアクセスタイムが増大することになる。これにより、オペランドキャッシュメモリ全体の動作周波数が低下するという問題も有している。
【００５５】
次に特許文献１、特許文献２の方法について説明する。
【００５６】
特許文献１の方法は、アドレスアレイを複数バンクに分割し、またデータアレイは複数バンクに分割することにより、複数の要求元から、アドレスアレイとデータアレイが共に異なるアクセス要求がなされた場合には、複数の要求元が同時に読み出し処理を行うことができるというものである。
【００５７】
しかしながら、特許文献１の方法の場合、アドレスアレイ又はデータアレイの何れかに一致が発生した場合には、一方の要求は待たされ、同時の読み出し処理はできなくなるという問題がある。
【００５８】
また、特許文献２の方法は、ブロックをまたいだアクセスに対応するキャッシュメモリ回路に関するものであって、アクセスがブロックをまたいでいる場合に、２つの異なるブロックを読み出すことができるというものである。
【００５９】
しかしながら、特許文献２の方法は、あくまで１つのアクセス要求を前提とし、かつまたブロックをまたいだアクセスに対応する方法であって、複数の要求元からの同時読み出し要求時のバンク競合を解決するものではない。
【００６０】
本発明の目的は、上記従来技術の欠点を解決し、複数の読み出し処理を同時に行う際に発生するバンク競合の発生確率を低減するマルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式を提供することにある。
【課題を解決するための手段】
【００６１】
上記目的を達成するための本発明は、キャッシュメモリの構成要素であるアドレスアレイ及びデータアレイに登録されているキャッシュブロックデータを複数のアクセスアドレスにより索引し、前記複数のアクセスアドレスに対応したそれぞれのターゲットデータの読み出し処理を同時に行う、マルチポートキャッシュメモリであって、前記アドレスアレイとデータアレイを、前記アクセスアドレスのインデックス部下位ビットにより一意に識別できる複数のバンクに分割することを特徴とする。
【００６２】
また、複数のブロックにメモリを分割するセットアソシアティブ方式のキャッシュメモリであることを特徴とする。
【００６３】
本発明は、複数のアクセスアドレスのタグ部、インデックス部の一致の程度による場合わけを行い、それぞれの場合についてバンク競合の発生確率を低減するものである。
【００６４】
すなわち、読み出し処理を同時に行う２系統のアクセスアドレスのタグ部、インデックス部が一致した場合には、２系統のアクセスアドレスのターゲットデータは共に、同一バンク内であり、また同一キャッシュブロック内のデータになる。このため、予め設定した優先順位の高いアクセスアドレスを用いて、データアレイからキャッシュブロックデータを読み出す。優先順位の低いアクセスアドレスについては、読み出しを行わない。
【００６５】
次に、優先順位の高いアクセスアドレスを用いてデータアレイから読み出したキャッシュブロックデータを、２系統の読み出しポートに分配して、各アクセスアドレスのブロック部に応じて必要なターゲットデータをキャッシュブロックデータからそれぞれ選択して出力する。
【００６６】
このように、同一バンク内の読み出し処理であっても、バンク競合することなく、同時に読み出し処理をすることができる。
【００６７】
また、読み出し処理を同時に行う２系統のアクセスアドレスのタグ部が不一致を示し、インデックス部が一致した場合については、インデックス部が一致するため同一バンクとなる。しかし、タグ部が一致しないためセットアソシアティブ方式による、同一バンク内の異なるキャッシュセット内のデータになる。このため、該当するバンクにおけるデータアレイの２つのキャッシュセットからキャッシュブロックデータをそれぞれ読み出す。
【００６８】
次に、２つのキャッシュブロックデータを、それぞれのアクセスアドレスに対応した読み出しポートにそれぞれ転送し、各アクセスアドレスのブロック部に応じて必要なターゲットデータをそれぞれ選択して出力する。
【００６９】
このように、同一バンク内の読み出し処理であっても、バンク競合することなく、同時に読み出し処理をすることができる。
【発明の効果】
【００７０】
本発明のマルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式によれば、以下の効果が達成される。
【００７１】
複数の読み出し処理を同時に行う際に発生する、バンク競合の発生確率を低減することが可能となる。
【００７２】
その理由は、キャッシュメモリの構成要素であるアドレスアレイ及びデータアレイに登録されているキャッシュブロックデータを複数のアクセスアドレスにより索引し、複数のアクセスアドレスに対応したそれぞれのターゲットデータの読み出し処理を同時に行う、マルチポートキャッシュメモリにおいて、アドレスアレイとデータアレイを共に、アクセスアドレスのインデックス部下位ビットにより一意に識別できる複数のバンクに分割するためである。
【実施例１】
【００７３】
以下、本発明の好適な実施例について図面を参照して詳細に説明する。
【００７４】
図１は、本実施例によるマルチポートキャッシュメモリの構成を示すブロック図である。
【００７５】
図１を参照すると、本実施例によるマルチポートキャッシュメモリは、ラッチ１０、１１と、比較器１４０−０、１４０−１、１４０−２と、選択制御信号生成回路１５０と、セレクタ１６０−０、１６０−１、１６０−２、１６０−３と、アドレスアレイ（ＡＡ）１１０−０、１１０−１，１１０−２，１１０−３と、タグアドレス比較器１２０−０、１２０−１、１２０−２、１２０−３と、データアレイ（ＤＡ）１７０−０、１７０−１、１７０−２、１７０−３と、バンク選択回路１８０−０、１８０−１と、選択回路１９０−０、１９０−１による構成となっている。
【００７６】
ラッチ１０、１１は、同時読み出し処理の対象であるターゲットデータ１９１−０、１９１−１にアクセスするためのアクセスアドレス１００−０、１００−１をそれぞれ保持することができる。
【００７７】
アクセスアドレス１００−０、１００−１は、それぞれ上位側からタグ部（Tag）１０１−０、１０１−１、インデックス部（Index）１０２−０、１０２−１、ブロック部（Block）１０３−０、１０３−１の３つに分けられている。
【００７８】
また、インデックス部の下位ビット１０４−０、１０４−１によって、アドレスアレイとデータアレイは、共にバンクに分割されている。
【００７９】
なお、タグ部アドレスは、アドレスアレイに登録されている。
【００８０】
また、インデックス部アドレスは、アドレスアレイ、データアレイのエントリアドレスとなる。
【００８１】
また、ブロック部アドレスは、ターゲットデータの位置を表す。
【００８２】
また、インデックス部下位アドレスは、バンクの位置を表す。
【００８３】
図１では、インデックス部の下位ビット１０４−０、１０４−１を共に２ビットとして、４バンクで構成する場合を図示している。すなわち、インデックス部の下位ビット１０４−０、１０４−１は、バンク位置に対応する。
【００８４】
アドレスアレイは、４つのアドレスアレイ１１０−０、１１０−１，１１０−２，１１０−３に分割されている。
【００８５】
データアレイも、４つのデータアレイ１７０−０、１７０−１、１７０−２、１７０−３に分割されている。
【００８６】
インデックス部１０２−０、１０２−１は、キャッシュメモリに登録されているエントリを表すことになるため、本発明ではオペランドキャッシュメモリのアドレスアレイとデータアレイは、それぞれエントリ毎にバンクに分割されていることになる。
【００８７】
本実施例では、演算の対象となる値、変数などを記憶するオペランドキャッシュメモリを対象に説明を行うが、メモリの種類については、オペランドキャッシュメモリ以外のキャッシュメモリであっても同様に実現できることは言うまでもない。
【００８８】
バンク分割されたデータアレイ１７０−０、１７０−１、１７０−２、１７０−３のデータ幅は、１つのキャッシュエントリのデータ幅であるキャッシュブロックサイズと同じデータ幅となっている。これはターゲットデータ幅×ブロック部アドレス数に相当する値になる。
【００８９】
一数値例であるが、データアレイ１７０−０、１７０−１、１７０−２、１７０−３のデータ幅が６４バイトで、ターゲットデータ幅は８ビットの場合、ブロック部アドレス数は８となる。
【００９０】
また、図１においてアドレスアレイ１１０−０、１１０−１、１１０−２、１１０−３やデータアレイ１７０−０、１７０−１、１７０−２、１７０−３が２重化して記述されている（２枚重ねて表示）が、これは２ウェイのセットアソシアティブ方式のオペランドキャッシュを想定して、アドレスアレイやデータアレイが２つのセットで構成されていることを図示している。
【００９１】
なお、２重化して図示されているがそれぞれのセットは異なり、またデータ内容も異なる。
【００９２】
セレクタ１６０−０、１６０−１、１６０−２、１６０−３は、それぞれのアドレスアレイ１１０−０、１１０−１、１１０−２、１１０−３、データアレイ１７０−０、１７０−１、１７０−２、１７０−３に対して、２系統のアクセスアドレス１００−０、１００−１のいずれからアクセスするかを選択することができる。
【００９３】
すなわち、セレクタ１６０−０、１６０−１、１６０−２、１６０−３においては、タグ部１０１−０とタグ部１０１−１のいずれか一方が選択されて、バンク分割された各アドレスアレイ１１０−０、１１０−１、１１０−２、１１０−３とデータアレイ１７０−０、１７０−１、１７０−２、１７０−３、及びタグアドレス比較器１２０−０、１２０−１、１２０−２、１２０−３に供給される。
【００９４】
また、同様にセレクタ１６０−０、１６０−１、１６０−２、１６０−３においては、インデックス部１０２−０とインデックス部１０２−１のいずれか一方が選択されて、バンク分割された各アドレスアレイ１１０−０、１１０−１、１１０−２、１１０−３とデータアレイ１７０−０、１７０−１、１７０−２、１７０−３、及びタグアドレス比較器１２０−０、１２０−１、１２０−２、１２０−３に供給される。
【００９５】
セレクタ１６０−０、１６０−１、１６０−２、１６０−３で選択されたインデックス部１６２−０、１６２−１、１６２−２、１６２−３は、それぞれアドレスアレイ１１０−０、１１０−１、１１０−２、１１０−３及びデータアレイ１７０−０、１７０−１、１７０−２、１７０−３の読み出しアドレスとなる。
【００９６】
ここで、アドレスアレイ１１０−０、１１０−１、１１０−２、１１０−３から読み出されたタグ情報１１１−０、１１１−１、１１１−２、１１１−３は、それぞれセレクタ１６０−０、１６０−１、１６０−２、１６０−３で選択されたタグ部１６１−０、１６１−１、１６１−２、１６１−３と、それぞれタグアドレス比較器１２０−０、１２０−１、１２０−２、１２０−３で比較され、該当するタグアドレスのデータがオペランドキャッシュメモリに登録されているかどうかのキャッシュヒット判定信号１２１−０、１２１−１、１２１−２、１２１−３がそれぞれ生成される。
【００９７】
２つの異なるアクセスアドレス１００−０、１００−１のタグ部１０１−０とタグ部１０１−１は、２系統のタグ部ビット値を比較する比較器１４０−０に入力される。
【００９８】
２つの異なるアクセスアドレス１００−０、１００−１のインデックス部１０２−０とインデックス部１０２−１は、２系統のインデックス部ビット値を比較する比較器１４０−１に入力される。
【００９９】
２つの異なるアクセスアドレス１００−０、１００−１のインデックス部下位ビット１０４−０とインデックス部下位ビット１０４−１は、２系統のインデックス部下位ビット値を比較する比較器１４０−２に入力される。
【０１００】
比較器１４０−０、１４０−１、１４０−２では、タグ部１０１−０、１０１−１、インデックス部１０２−０、１０２−１、インデックス部下位ビット１０４−０、１０４−１に対応したそれぞれのタグ部一致判定信号１４１−０、インデックス部一致判定信号１４１−１、バンク一致判定信号１４１−２を生成することができる。
【０１０１】
なお、バンク一致判定信号１４１−２は、インデックス部下位ビットの一致を判定するものであるが、インデックス部下位ビット１０４−０、１０４−１が分割されたバンクに対応するため、バンク一致判定信号１４１−２と記述することにする。
【０１０２】
これら３つの判定信号は、選択制御信号生成回路１５０に入力される。
【０１０３】
選択制御信号生成回路１５０では、これら３つの判定信号に基づいて、セレクタ１６０−０、１６０−１、１６０−２、１６０−３に入力するアドレス情報選択制御信号１５１−０、１５１−１、１５１−２、１５１−３を生成することができる。
【０１０４】
以上に述べた構成により、各バンクのデータアレイ１７０−０、１７０−１、１７０−２、１７０−３からは、２つの異なるアクセスアドレス１００−０、１００−１のいずれかに対応するキャッシュブロックデータ１７１−０、１７１−１、１７１−２、１７１−３が出力される。
【０１０５】
キャッシュブロックデータ１７１−０、１７１−１、１７１−２、１７１−３は、２つの異なるアクセスアドレス１００−０、１００−１のそれぞれに対応する２つのバンク選択回路１８０−０、１８０−１に入力される。
【０１０６】
バンク選択回路１８０−０、１８０−１は、インデックス部下位ビット１０４−０、１０４−１に従って、ただ１つのバンクにおけるデータアレイのキャッシュブロックデータのみを選択することができる。
【０１０７】
前述の処理により、アクセスアドレス１００−０、１００−１に対応したバンク選択回路１８０−０、１８０−１からキャッシュブロックデータが出力される。
【０１０８】
選択回路１９０−０、１９０−１は、出力されたキャッシュブロックデータのブロック部１０３−０、１０３−１を識別することによって必要なターゲットデータ１９１−０、１９１−１を選択することができる。
【０１０９】
選択回路１９０−０、１９０−１は、キャッシュブロックデータのブロック部１０３−０、１０３−１を識別することによって必要なターゲットデータ１９１−０、１９１−１を選択し、２つの異なるアクセスアドレス１００−０、１００−１で表された２つのターゲットデータ１９１−０、１９１−１を出力する。
【０１１０】
なお、実際のオペランドキャッシュメモリには、ストア命令におけるストアデータの処理や、オペランドキャッシュメモリ登録データの更新に伴うデータアレイ書き換え処理等を行う必要があり、これらの処理のために図１に図示した以外にも周辺論理が必要である。この中には、オペランドキャッシュに登録されているデータが有効であるか、もしくは無効であるかを表す有効ビット情報とそれに伴うオペランドキャッシュメモリからの読み出しターゲットデータ無効化処理も含まれる。
【０１１１】
図１に示した構成は、２ウェイのセットアソシアティブ方式によるオペランドキャッシュメモリの構成に対応する。
【０１１２】
セットアソシアティブ方式のオペランドキャッシュメモリでは、セット数と同じ数のキャッシュヒット判定信号１２１−０、１２１−１、１２１−２、１２１−３が存在することになる。また、これらをバンク選択回路１８０−０、１８０−１にて選択後、複数のセットから出力されたキャッシュブロックデータをキャッシュヒット判定信号に応じて選択する処理も必要になる。
【０１１３】
ただし、これらの処理は本発明の対象外であり、図面の煩雑化を避けるために、図示していない。
【０１１４】
また、図１の構成ではアクセスアドレスを２系統として同時に２つの読み出し処理を実行する実施例を記述しているが、当然のことながらアクセスアドレスは２系統の場合に限定されず、３系統以上の複数系統の場合にも拡張することができる。
【０１１５】
また、オペランドキャッシュメモリのセットアソシアティブ構成におけるセット数についても同様であって、図１に示した２セットの例に限らず、３セット以上の複数セットのセットアソシアティブ方式に本発明を適用できることは、言うまでもない。
【０１１６】
次に、本実施例によるマルチポートキャッシュメモリのアクセス制御動作について、図を用いて詳細に説明する。
【０１１７】
図１に示した本実施例の構成を用いて、動作を説明する。なお、以下では必要に応じて図１の主要な部分を参照して説明する。
【０１１８】
以下では、特に、本発明で最も特徴的な動作となる、異なる２つのアクセスアドレス１００−０とアクセスアドレス１００−１の内、いずれからのアドレス情報を選択するかを決定するアドレス情報選択制御信号１５１−０、１５１−１、１５１−２、１５１−３の選択制御信号生成回路１５０における生成方法に重点をおいて動作を説明する。
【０１１９】
選択制御信号生成回路１５０には、タグ部１０１−０とタグ部１０１−１を比較器１４０−０で比較したタグ部一致判定信号１４１−０、インデックス部１０２−０とインデックス部１０２−１を比較器１４０−１で比較したインデックス部一致判定信号１４１−１及びインデックス部下位ビット１０４−０とインデックス部下位ビット１０４−１を比較器１４０−２で比較したバンク一致判定信号１４１−２の３つの信号が入力される。ここで、インデックス部下位ビットは、バンク構成を表すビットである。
【０１２０】
以下に、上記３つの信号が一致する程度に応じて分類した４つのケースＡ、ケースＢ、ケースＣ及びケースＤの場合について、同時読み出し処理を説明する。
【０１２１】
ケースＡとして、タグ部一致を判定するタグ部一致判定信号１４１−０が一致を示し、インデックス部一致を判定するインデックス部一致判定信号１４１−１も一致した場合を考える。
【０１２２】
この場合は、２系統のアクセスアドレスの両方が同一のキャッシュブロック内のターゲットデータをアクセスしていることになる。しかしながら、ブロック部は一致していないため、両方のターゲットデータは異なり、２系統のアクセスアドレス１００−０、１００−１のブロック部１０３−０、１０３−１で判別できる。
【０１２３】
このようなケースでは、２系統のアクセスアドレス１００−０、１００−１の内、片方のアクセスアドレスのみを有効として、そのインデックス部下位ビットで示されるアドレスアレイ及びデータアレイのみからキャッシュブロックデータを読み出せばいいことになる。
【０１２４】
２系統のアクセスアドレスには、優先順位を予め設定しておき、アドレスアレイ、データアレイへの読み出し処理においてどちらか一方しか必要としないケースＡの場合、優先順位の高いアクセスアドレスからのタグ部、インデックス部を使用するようにする。ここでは説明の便宜上、アクセスアドレス１００−０をより高い優先順位に設定する。
【０１２５】
以下、処理の流れを説明する。
【０１２６】
図２は、本実施例によるケースＡの同時読み出し処理の流れを説明するためのフローチャートである。なお、以下では必要に応じて図１の主要な部分を参照して説明する。
【０１２７】
図２を参照すると、最初に優先順位の高いアクセスアドレスのみを有効とする（ステップ２０１）。
【０１２８】
次に、アクセスアドレス１００−０のインデックス部下位ビット１０４−０に応じてアクセスすべきバンクを確定すると（ステップ２０２）、そのバンクのアドレス情報選択制御信号１５１−０、１５１−１、１５１−２、１５１−３は、アクセスアドレス１００−０のタグ部１０１−０、及びインデックス部１０２−０を選択するように設定する（ステップ２０３）。
【０１２９】
このインデックス部１０２−０を索引アドレスとして、データアレイから読み出されたキャッシュブロックデータは（ステップ２０４）、アクセスアドレス１００−０、及びアクセスアドレス１００−１のそれぞれに対応するバンク選択回路１８０−０、１８０−１に入力される（ステップ２０５）。
【０１３０】
バンク選択回路１８０−０、１８０−１の選択制御信号は、それぞれインデックス部下位ビット１０４−０、１０４−１であり、これらの値は一致することから、２つのバンク選択回路１８０−０、１８０−１からは、同一のバンクにおけるデータアレイから読み出されたキャッシュブロックデータが出力されることになる（ステップ２０６）。
【０１３１】
後は、アクセスアドレス１００−０、１００−１のそれぞれのブロック部１０３−０、１０３−１に応じて、当該キャッシュブロックデータからターゲットデータ１９１−０、１９１−１を選択出力すれば、２系統のアクセスアドレス１００−０、１００−１に対応したターゲットデータ１９１−０、１９１−１を同時に読み出すことができる（ステップ２０７）。
【０１３２】
図３は、本実施例によるケースＡにおけるキャッシュブロックデータからターゲットデータを読み出す一例を説明するための図である。なお、以下では必要に応じて図１の主要な部分を参照して説明する。
【０１３３】
図３を参照すると、２つのバンク選択回路１８０−０、１８０−１から読み出された、アクセスアドレス１００−０、１００−１に対応する、２つのキャッシュブロックデータが示されている。２つのキャッシュブロックデータの内容は同一である。
【０１３４】
キャッシュブロックデータ幅は６４バイトであり、またターゲットデータ幅は８バイトである。ブロック部アドレス幅は３ビットの場合の例であり、８つのデータが格納されている。
【０１３５】
キャッシュブロックデータがターゲットデータを選択する選択回路１９０−０、１９０−１を通過した後は、２つのアクセスアドレス１００−０、１００−１で指定された２つのターゲットデータ１９１−０、１９１−１が出力される。
【０１３６】
図３に示した、ブロック部１０３−０のデータとブロック部１０３−１のデータを読み出すことにより、２つのターゲットデータ１９１−０、１９１−１を読み出すことができる。
【０１３７】
なお、この際アクセスアドレス１００−０のインデックス部下位ビット１０４−０によって選択されなかった残り３つのバンクにおけるアドレス情報選択制御信号は、デフォルト状態として優先順位の高いアクセスアドレス１００−０を選択するように設定するのが一般的ではあるが、更に改良した構成では、このようなアクセスの発生しないバンクのクロック供給を停止したり、アドレスアレイやデータアレイをパワーセーブモードに設定するようにしたりすることも可能である。
【０１３８】
ケースＢとして、タグ部一致判定信号１４１−０が不一致を示し、インデックス部一致判定信号１４１−１が一致を示した場合を考える。この場合は、ケースＡと同様にアクセスアドレス１００−０のインデックス部下位ビット１０４−０と、アクセスアドレス１００−１のインデックス部下位ビット１０４−１とは一致することになり、同一のバンクにアクセスすることになる。
【０１３９】
ただし、ケースＡとは異なりタグ部１４１−０とタグ部１４１−１が一致しないため、これはセットアソシアティブ方式のキャッシュメモリにおいて異なるセットにターゲットとなるキャッシュブロックデータが格納されていることを表す。
【０１４０】
以下、処理の流れを説明する。
【０１４１】
図４は、本実施例によるケースＢの同時読み出し処理の流れを説明するためのフローチャートである。なお、以下では必要に応じて図１の主要な部分を参照して説明する。
【０１４２】
図４を参照すると、ケースＢでは、ケースＡと同様に優先順位の高いアクセスアドレス１００−０のバンク構成ビットであるインデックス部下位ビット１０４−０によって選択されたバンクのみにアクセスする（ステップ４０１）。
【０１４３】
しかし、その際、セットアソシアティブ方式の２つのセットを同時にアクセスして（ステップ４０２）、セット毎に存在するバンク選択回路１８０−０、１８０−１からキャッシュブロックデータを出力する（ステップ４０３）。
【０１４４】
なお、バンク選択回路１８０−０、１８０−１は、それぞれが２つのセットで構成されているが、図が複雑となるため図示していない。図示していない部分について、説明する。
【０１４５】
例えば、バンク０（Bank #0と表示）のセットアソシアティブ方式による２つのセットからキャッシュブロックデータを読み出す場合を想定すると、タグアドレス比較器１２０−０で、アドレスアレイ１１０−０に登録された２セットのタグ部と、タグ部１０１−０、１０１−１とを比較することになる。アドレスアレイ１１０−０に登録されたタグ部は、セットアソシアティブ方式であるためキャッシュセットにより異なり、２セットある。また、実際には、タグアドレス比較器１２０−０も２個ある（図示していないが、実際には２重になっている）。
【０１４６】
このため、アドレスアレイ１１０−０に登録された２セットのタグ部と、タグ部１０１−０、１０１−１とを、上記２個のタグアドレス比較器１２０−０でそれぞれ比較することになる。
【０１４７】
次に、アクセスアドレス１００−０、１００−１毎にそれぞれのタグ部１０１−０、１０１−１と一致したキャッシュヒット判定信号１２１−０に従う。なお、キャッシュヒット信号１２１−０は１つしか図示していないが、実際には２つある。
【０１４８】
以上で、図示していない部分の説明を終える。
【０１４９】
以上により、複数セットのキャッシュブロックデータから、アクセスアドレス１００−０、１００−１に対応したそれぞれのキャッシュブロックデータを選択する（ステップ４０４）。
【０１５０】
後は、アクセスアドレス１００−０、アクセスアドレス１００−１のそれぞれのブロック部１０３−０、１０３−１に応じてターゲットデータを選択出力すれば、ケースＢにおける２系統のアクセスアドレス１００−０、１００−１が必要としているターゲットデータを同時に読み出すことができる（ステップ４０５）。
【０１５１】
なお、この際アクセスアドレス１００−０のインデックス部下位ビット１０４−０によって選択されなかった残り３つのバンクにおけるアドレス情報選択制御信号は、デフォルト状態として優先順位の高いアクセスアドレス１００−０側を選択するように設定するのが一般的ではあるが、更に改良した構成では、このようなアクセスの発生しないバンクのクロック供給を停止したり、アドレスアレイやデータアレイをパワーセーブモードに設定することも可能である。
【０１５２】
次に述べるケースＣ、ケースＤでは、いずれもタグ部が不一致であることを前提としている。
【０１５３】
ケースＣとして、インデックス部一致判定信号１４１−１が不一致を示し、バンク一致判定信号１４１−２も不一致を示した場合を考える。この場合は、アクセスアドレス１００−０とアクセスアドレス１００−１はバンク競合をしないため、それぞれのアドレスが異なるバンクにアクセスすることを示す。
【０１５４】
この場合、アクセスアドレス１００−０のインデックス部下位ビット１０４−０に応じてアクセスすべきバンクを確定して、そのバンクのアドレス情報選択制御信号は、アクセスアドレス１００−０のタグ部１０１−０、及びインデックス部１０２−０を選択するように設定する。
【０１５５】
一方、アクセスアドレス１００−１のインデックス部下位ビット１０４−１に対してもアクセスすべきバンクを確定して、そのバンクのアドレス情報選択制御信号はアクセスアドレス１００−１のタグ部１０１−１、及びインデックス部１０２−１を選択するように設定する。
【０１５６】
それぞれのインデックス部１０２−０、１０２−１を索引アドレスとして、データアレイから読み出されたキャッシュブロックデータは、アクセスアドレス１００−０、及びアクセスアドレス１００−１のそれぞれに対応するバンク選択回路１８０−０、１８０−１に入力される。
【０１５７】
バンク選択回路１８０−０、１８０−１の選択制御信号は、それぞれインデックス部下位ビット１０４−０、１０４−１であるため、２つのバンクからキャッシュブロックデータを読み出すことになる。
【０１５８】
すなわち、アドレス情報選択制御信号によりアクセスアドレス１００−０のタグ部１０１−０、及びインデックス部１０２−０を選択するように設定したバンクと、アドレス情報選択制御信号によりアクセスアドレス１００−１のタグ部１０１−１、及びインデックス部１０２−１を選択するように設定したバンクから読み出された２つのキャッシュブロックデータがバンク選択回路１８０−０、１８０−１から出力されることになる。
【０１５９】
後は、アクセスアドレス１００−０、アクセスアドレス１００−１のそれぞれのブロック部１０３−０、１０３−１に応じてターゲットデータ１９１−０、１９１−１を、それぞれのキャッシュブロックデータから選択出力すれば、ケースＣにおける２系統のアクセスアドレスが必要としているターゲットデータ１９１−０、１９１−１を同時に読み出すことができる。
【０１６０】
なお、この際アクセスアドレス１００−０のインデックス部下位ビット１０４−０とアクセスアドレス１００−１のインデックス部下位ビット１０４−１によって選択されなかった残り２つのバンクにおけるアドレス情報選択制御信号は、デフォルト状態として優先順位の高いアクセスアドレス１００−０を選択するように設定するのが一般的ではあるが、更に改良した構成では、このようなアクセスの発生しないバンクのクロック供給を停止したり、アドレスアレイやデータアレイをパワーセーブモードに設定するようにしたりすることも可能である。
【０１６１】
ケースＤとして、インデックス部一致判定信号１４１−１が不一致を示し、バンク一致判定信号１４１−２は一致を示した場合を考える。この場合は、アクセスアドレス１００−０のアクセスするアドレスとアクセスアドレス１００−１のアクセスするアドレスはバンク競合を起こすことになるため、どちらか一方のアドレスしかアクセスできないことを示す。この場合、一般的には優先順位の高いアクセスアドレス１００−０のアクセスを優先して、アクセスアドレス１００−１からのアクセスを無効化する処理を行う。
【０１６２】
以上のことから、従来のバンク構成のオペランドキャッシュメモリではケースＣの場合しか同時に２つのアドレスのアクセスを行うことができなかったが、本発明のバンク構成のオペランドキャッシュメモリではケースＡ、ケースＢの場合にも同時に２つのアクセスを行うことができる。具体的には、以下の３つのケースにおいて同時に複数の読み出し処理をすることができる。
【０１６３】
ケースＡ：各系統のアクセスアドレスにおけるタグ部とインデックス部が一致した場合は、同一キャッシュブロック内のデータになるため、該当するバンクにおけるデータアレイから読み出したキャッシュブロックデータを、読み出しポートに分配して、各アクセスアドレスのブロック部に応じて必要なターゲットデータをそれぞれ選択して出力する。
【０１６４】
ケースＢ：各系統のアクセスアドレスにおけるタグ部が不一致でインデックス部が一致した場合は、同一バンク内の異なるキャッシュセット内のデータになるため、該当するバンクにおけるデータアレイの複数のキャッシュセットからキャッシュブロックデータを複数読み出し、それぞれのキャッシュセットに登録されたタグ部と一致したアクセスアドレスに対応する２つの読み出しポートにそれぞれ転送して、各アクセスアドレスのブロック部に応じて必要なターゲットデータをそれぞれ選択して出力する。
【０１６５】
ケースＣ：各系統のアクセスアドレスにおけるタグ部、インデックス部が共に不一致で、なおかつバンク分割を定めているインデックス部の下位ビットも不一致の場合は、異なるバンク内のデータになるため、各系統のアクセスアドレスに従ってバンク毎に独立してアクセスを行ってデータアレイからキャッシュブロックデータを読み出し、各アクセスアドレスのブロック部に応じて必要なターゲットデータをそれぞれ選択して出力する。
【０１６６】
また、従来のバンク構成のマルチポートキャッシュメモリと比較して、本発明ではデータアレイはバンク分割するだけなので面積増加はほとんどなく、アドレスアレイは２重化からバンク分割に変更することから面積削減の可能性もある。ただし、バンク分割による分割損により面積が増加するというデメリットもあることから、総合的に考えるとほぼ従来と同等の面積で実現することが可能である。
【０１６７】
以上述べたように、本実施例によるマルチポートキャッシュメモリでは、キャッシュメモリの構成要素であるアドレスアレイ１１０−０、１１０−１，１１０−２，１１０−３及びデータアレイ１７０−０、１７０−１、１７０−２、１７０−３に登録されているキャッシュブロックデータ１７１−０、１７１−１、１７１−２、１７１−３を複数のアクセスアドレス１００−０、１００−１により索引し、複数のアクセスアドレス１００−０、１００−１に対応した複数のターゲットデータの読み出し処理を同時に行い、アドレスアレイ１１０−０、１１０−１，１１０−２，１１０−３とデータアレイ１７０−０、１７０−１、１７０−２、１７０−３を、アクセスアドレス１００−０、１００−１のインデックス部下位ビット１０４−０、１０４−１により一意に識別できる複数のバンクに分割することを特徴とする。
【０１６８】
次に、本発明の特徴的な構成要素であるデータアレイの構成について説明する。
【０１６９】
背景技術の図９〜図１１に示したような従来技術によるオペランドキャッシュメモリでは、データアレイのデータ幅はターゲットデータ幅と同一になっている。ターゲットデータ幅とは、そのプロセッサにおける最も典型的なアクセスデータ幅であり、例えば６４ビットのプロセッサではターゲットデータ幅は６４ビット、すなわち８バイトというのが一般的である。
【０１７０】
図３に示した本実施例による一例では、データアレイのデータ幅は６４バイトと大きく、ブロック部のビット数により区別される数のターゲットデータが含まれる。
【０１７１】
図５は、従来のオペランドキャッシュメモリにおけるデータアレイに使用されるＳＲＡＭ（Static Random Access Memory）の内部構成の一例を示した図である。
【０１７２】
データアレイは比較的容量が大きく、典型的な例では、２ウェイセットアソシアティブ方式で６４Ｋバイトの容量を有するオペランドキャッシュメモリでは１つのデータアレイの容量は３２Ｋバイトとなる。
【０１７３】
このように比較的大容量でありながら高速でのアクセスが要求されるオペランドキャッシュメモリのデータアレイでは、一般に図５に示したように、アドレスの上位ビットをデコードするロウ（ROW）デコーダ５００とアドレスの下位ビットをデコードするカラム（COLUMN）デコーダ５３０を中心部に配置して、その両側にデコードした信号を増幅駆動するワード線ドライバ５１０−０、５１０−１とカラム線ドライバ５４０−０、５４０−１を配置する。
【０１７４】
ワード線ドライバ５１０−０、５１０−１の更に両側には、記憶素子となるＲＡＭセルを２次元状に配置したメモリセルアレイ５２０−０、５２０−１が存在する。
【０１７５】
１つ１つのメモリセルの構造は、背景技術の図１２に示した構造と同様であって、ワード線５１１−０、５１１−１は、それぞれ互いに論理反転の関係にある２つのビット線５２１−０及び５２２−０、５２１−１及び５２２−１に接続されている。データアレイのデータ幅に対する１ビット分のデータは、隣接する複数のメモリセルから読み出されたデータから、カラムデコーダ５３０のデコード結果を選択制御信号とするカラムセレクタ５５０−０、５５０−１によって１つだけを選択する。
【０１７６】
ビット線を伝搬する信号は、通常の論理回路を伝搬する信号とは異なり、ノイズマージンを確保できる限界程度に低い電圧振幅の信号であるため、カラムセレクタ５５０−０、５５０−１で選択されたデータはラッチ（Latch）型センスアンプ５６０−０、５６０−１にて信号振幅増幅が行われると同時に、タイミング規定を満たすようにラッチされて信号波形を保持する。
【０１７７】
以上の説明から、データアレイのアクセスタイムは、ロウデコード→ワード線駆動→ビット線駆動→カラム選択→ラッチ型センスアンプのパスを経由する時の合計遅延時間によって決定されることがわかる。
【０１７８】
オペランドキャッシュメモリのデータアレイのように比較的大容量である場合、低い電圧振幅での信号伝送を行うビット線の信号配線長が長くなることからアクセスタイムを高速化することが困難になりつつある。
【０１７９】
そこで、現在ではオペランドキャッシュメモリのデータアレイのように比較的大容量で、なおかつ高速アクセスが必要なＳＲＡＭに対しては、以下に述べるような内部構成を採ることが多くなりつつある。
【０１８０】
図６は、本実施例を説明するためのＳＲＡＭの内部構成を示す図である。
【０１８１】
図６を参照すると、ＳＲＡＭは、ラッチ型センスアンプ６６０−０ａ、６６０−１ａ、６６０−０ｂ、６６０−１ｂ、・・・、６６０−０ｎ、６６０−１ｎを信号が通過した後に、カラムセレクタ６５０−０、６５０−１を配置するとともに、ロウデコーダ６００−ａ、６００−ｂ、・・・、６００−ｎ、ワード線ドライバ６１０−０ａ、６１０−１ａ、６１０−０ｂ、６１０−１ｂ、・・・、６１０−０ｎ、６１０−１ｎ、メモリセルアレイ６２０−０ａ、６２０−１ａ、６２０−０ｂ、６２０−１ｂ、・・・、６２０−０ｎ、ラッチ型センスアンプ６６０−０ａ、６６０−１ａ、６６０−０ｂ、６６０−１ｂ、・・・、６６０−０ｎ、６６０−１ｎからなるＳＲＡＭバンクをカラム数分並列配置する。
【０１８２】
メモリセルアレイ６２０−０ａ、６２０−１ａ、６２０−０ｂ、６２０−１ｂ、・・・、６２０−０ｎ、６２０−１ｎに対応したそれぞれの１組のビット線６２１−０ａと６２２−０ａ、６２１−１ａと６２２−１ｂ、６２１−０ｂと６２２−０ｂ、６２１−１ｂと６２２−１ｂ、・・・、６２１−０ｎと６２２−０ｎ、６２１−１ｎと６２２−１ｎから読み出された低い電圧振幅の信号は、それぞれラッチ型センスアンプ６６０−０ａ、６６０−１ａ、６６０−０ｂ、６６０−１ｂ、・・・、６６０−０ｎ、６６０−１ｎで信号振幅増幅が行われる。
【０１８３】
カラムセレクタ６５０−０、６５０−１には、ラッチ型センスアンプ６６０−０ａ、６６０−１ａ、６６０−０ｂ、６６０−１ｂ、・・・、６６０−０ｎ、６６０−１ｎによって信号振幅増幅が行われた信号が入力され、並列配置したＳＲＡＭバンクの中からカラムデコーダ６３０のデコード結果に従って選択される。
【０１８４】
このようにすることによって、データアレイのアクセスタイムに最も影響を与えるビット線の信号配線長を短縮することができ、また従来はビット線に接続されていたカラムセレクタがビット線には接続されなくなることから、ビット線に接続される負荷容量も削減され、アクセスタイムの高速化を実現することが可能になる。
【０１８５】
図６に示したようにＳＲＡＭの内部構成が変化してきている。図１に示した本実施例におけるデータアレイ１７０−０、１７０−１、１７０−２、１７０−３のような、オペランドキャッシュブロックデータを１回のアクセスで全て読み出すようなＳＲＡＭは、次のようにして実現する。
【０１８６】
すなわち、次に述べるように、図６に示したＳＲＡＭ内部構成から、カラムデコーダ６３０、カラム線ドライバ６４０−０、６４０−１、カラムセレクタ６５０−０、６５０−１を削除して、ラッチ型センスアンプ６６０−０ａ、６６０−１ａ、６６０−０ｂ、６６０−１ｂ、・・・、６６０−０ｎ、６６０−１ｎからの出力を全てデータアレイの読み出しデータとして使用することで、実現することができる。
【０１８７】
図７は、本実施例によるＳＲＡＭの内部構成を示す図である。
【０１８８】
図７を参照すると、ラッチ（Latch）型センスアンプ７６０−０ａ、７６０−１ａ、７６０−０ｂ、７６０−１ｂ、・・・、７６０−０ｎ、７６０−１ｎを信号が通過し、ロウデコーダ７００−ａ、７００−ｂ、・・・、７００−ｎ、ワード線ドライバ７１０−０ａ、７１０−１ａ、７１０−０ｂ、７１０−１ｂ、・・・、７１０−０ｎ、７１０−１ｎ、メモリセルアレイ７２０−０ａ、７２０−１ａ、７２０−０ｂ、７２０−１ｂ、・・・、７２０−０ｎ、ラッチ型センスアンプ７６０−０ａ、７６０−１ａ、７６０−０ｂ、７６０−１ｂ、・・・、７６０−０ｎ、７６０−１ｎからなるＳＲＡＭバンクを並列配置する。
【０１８９】
ラッチ型センスアンプ７６０−０ａ、７６０−１ａ、７６０−０ｂ、７６０−１ｂ、・・・、７６０−０ｎ、７６０−１ｎからの出力７０１−０ａ、７０１−１ａ、７０１−０ｂ、７０１−１ｂ、・・・、７０１−０ｎ、７０１−１ｎは、全てデータアレイの読み出しデータとして使用する。
【０１９０】
このように、本発明で使用するデータアレイは現在オペランドキャッシュメモリとしてアクセスタイム高速化のために実施されているＳＲＡＭ内部構成の改良と整合性がよく、バンク競合の低減による実効性能向上だけでなくオペランドキャッシュメモリのアクセスタイム高速化に伴う動作周波数向上に対しても有利であると言える。
【０１９１】
以上説明した実施例によれば、複数の読み出し処理を同時に行う際に発生するバンク競合の発生確率を低減することが可能となる。
【０１９２】
その理由は、読み出し処理を同時に行う複数系統のアクセスアドレス１００−０、１００−１のタグ部１０１−０、１０１−１、インデックス部１０２−０、１０２−１が一致した場合には、同一キャッシュブロック内のデータになるため、該当するバンクにおけるデータアレイから読み出した１つのキャッシュブロックデータを、複数の読み出しポートに分配して、各アクセスアドレス１００−０、１００−１のブロック部に応じて必要なターゲットデータをそれぞれ選択して出力するためである。
【０１９３】
また、タグ部１０１−０、１０１−１が不一致を示し、インデックス部１０２−０、１０２−１が一致した場合には、セットアソシアティブ方式による、同一バンク内の異なるキャッシュセット内のデータになるため、該当するバンクにおけるデータアレイの複数のキャッシュセットから複数のキャッシュブロックデータを読み出し、キャッシュブロックデータのアクセスアドレスに対応する複数の読み出しポートにそれぞれ転送して、各アクセスアドレス１００−０、１００−１のブロック部に応じて必要なターゲットデータをそれぞれ選択して出力するためである。
【０１９４】
また、バンク競合の発生確率を低減する際に、動作周波数低下の発生しないマルチポートキャッシュメモリを提供することが可能になる。
【０１９５】
その理由は、本発明で使用するデータアレイ１７０−０、１７０−１、１７０−２、１７０−３は現在オペランドキャッシュメモリとしてアクセスタイム高速化のために実施されているＳＲＡＭ内部構成の改良と整合性がよいためである。
【実施例２】
【０１９６】
次に、本発明の第２の実施例について図面を用いて説明する。
【０１９７】
図８は、本実施例によるマルチポートキャッシュメモリの構成を示すブロック図である。
【０１９８】
図１に示した実施例との構成の主な相違は、ラッチ８０５−０、８０５−１及びホールドラッチ８７５−０、８７５−１、８７５−２、８７５−３の追加である。
【０１９９】
なお、タグアドレス比較器８２０−０、８２０−１、８２０−２、８２０−３、セレクタ８６０−０、８６０−１、８６０−２、８６０−３、選択回路８９０−０、８９０−１、アドレスアレイ８１０−０、８１０−１，８１０−２，８１０−３については、図１と同じ機能であるため、説明はしない。
【０２００】
以下で、追加した部分について説明する。
【０２０１】
まず、前回ラッチ１０、１１に保持されたアクセスアドレス８００−０、８００−１のタグ部８０１−０、８０１−１とインデックス部８０２−０、８０２−１を保持するラッチ８０５−０、８０５−１を追加する。
【０２０２】
また、前回のアクセスアドレス８００−０、８００−１のタグ部８０１−０、８０１−１と今回のアクセスアドレス８００−０、８００−１のタグ部８０２−０、８０２−１をそれぞれ比較する比較器８０６−０、８０６−１と、前回のアクセスアドレス８００−０、８００−１のインデックス部８０２−０、８０２−１と今回のアクセスアドレス８００−０、８００−１のインデックス部８０２−０、８０２−１をそれぞれ比較する比較器８０７−０、８０７−１を設ける。
【０２０３】
比較器８０６−０、８０６−１から出力されるタグ部一致判定信号８０８−０、８０８−１及び比較器８０７−０、８０７−１から出力されるインデックス部一致判定信号８０９−０、８０９−１は、選択制御信号生成回路８５０に入力される。
【０２０４】
次に、ホールドラッチ（Hold Latch）８７５−０、８７５−１、８７５−２、８７５−３の追加について説明する。
【０２０５】
各バンクのデータアレイ８７０−０、８７０−１、８７０−２、８７０−３から出力されたキャッシュブロックデータ８７７−０、８７７−１、８７７−２、８７７−３をそれぞれ保持するホールドラッチ８７５−０、８７５−１、８７５−２、８７５−３を追加する。
【０２０６】
また、これらのホールドラッチ８７５−０、８７５−１、８７５−２、８７５−３から出力されるデータ８７８−０、８７８−１、８７８−２、８７８−３と、データアレイ８７０−０、８７０−１、８７０−２、８７０−３から出力されたキャッシュブロックデータ８７７−０、８７７−１、８７７−２、８７７−３とを選択するキャッシュブロックデータセレクタ８７６−０、８７６−１、８７６−２、８７６−３を設ける。
【０２０７】
キャッシュブロックデータセレクタ８７６−０、８７６−１、８７６−２、８７６−３により選択された結果は、各バンクからバンク選択回路８８０−０、８８０−１に入力される、キャッシュブロックデータ８７１−０、８７１−１、８７１−２、８７１−３となるように構成する。
【０２０８】
次に、以上の構成の追加に伴う動作について説明する。
【０２０９】
選択制御信号生成回路８５０では、入力されたタグ部一致判定信号８０８−０、８０８−１、インデックス部一致判定信号８０９−０、８０９−１がそれぞれ一致した場合を検出する。ここで、それぞれが一致するとは、これら４つの信号の内、タグ部一致判定信号８０８−０とインデックス部一致判定信号８０９−０が一致し、他の２つは不一致を示した場合と、タグ部一致判定信号８０８−１とインデックス部一致判定信号８０９−１が一致し、他の２つは不一致を示した場合の、２つの場合がある。
【０２１０】
これら２つの場合は、前者ではラッチ１０で前回と今回のアクセスアドレスが同じであり、後者ではラッチ１１で前回と今回のアクセスアドレスが同じであることを示す。いずれもアクセスアドレスが同じであるため、前回と今回共に同じキャッシュブロックをアクセスすることになる。
【０２１１】
以下でこのような場合の動作の説明を行うが、最初に全体の説明を行い、次に１つの例について説明する。
【０２１２】
上記のようなケースでは、前回アクセスしたキャッシュブロックと同一のキャッシュブロックをアクセスすることが判定できる。この判定結果と各アクセスアドレス８００−０、８００−１がいずれのバンクをアクセスするかに応じて選択されるセレクタ選択制御信号８５１−０、８５１−１、８５１−２、８５１−３とから、各バンクへのホールド信号８５２−０、８５２−１、８５２−２、８５２−３を生成する。
【０２１３】
各バンクへのホールド信号８５２−０、８５２−１、８５２−２、８５２−３が生成されると、データアレイ８７０−０、８７０−１、８７０−２、８７０−３は現状に固定され、ホールドラッチ８７５−０、８７５−１、８７５−２、８７５−３は更新ができなくなる。
【０２１４】
また、ホールド信号８５２−０、８５２−１、８５２−２、８５２−３が有効な場合には、データアレイ８７０−０、８７０−１、８７０−２、８７０−３は、パワーセーブモードに設定して読み出し処理を実行しないようにすると共に、キャッシュブロックデータ保持ラッチ８７５−０、８７５−１、８７５−２、８７５−３に保持されているデータをバンク選択回路８８０−０、８８０−１へ出力するように、キャッシュブロックデータセレクタ８７６−０、８７６−１、８７６−２、８７６−３の選択制御信号を設定する。
【０２１５】
次に１つの例について説明する。
【０２１６】
例えば、ラッチ１０で、前回と今回のアクセスアドレスのタグ部、インデックス部が共に一致し、前回はバンク０にアクセスしており、またラッチ１１では、前回と今回のアクセスアドレスのタグ部、インデックス部が共に一致しないものとする。
【０２１７】
この場合、アクセスアドレス８００−０で前回と同じキャッシュブロックをアクセスすることが判定できる。
【０２１８】
今回のアクセスアドレス８００−０に対応したバンク０を選択するセレクタ制御信号８５１−０が生成されると、バンク０へのホールド信号８５２−０が生成される。
【０２１９】
これにより、データアレイ８７０−０は、現状に固定され、ホールドラッチ８７５−０は、更新ができなくなる。
【０２２０】
ここで、ホールド信号８５２−０によりデータアレイ８７０−０は、パワーセーブモードに設定して読み出し処理を実行しないようにすると共に、ホールドラッチ８７５−０に保持されている前回のデータをバンク選択回路８８０−０へ出力するように、キャッシュブロックデータセレクタ８７６−０の選択制御信号を設定する。
【０２２１】
このように構成の追加を行うことで、連続して同じキャッシュブロックからの読み出し処理を行うような場合において、データアレイの動作を止めて消費電力を削減することが可能になる。オペランドキャッシュメモリへのアクセスでは、このようなケースは比較的多いと推測されるため、効果があると考えられる。
【０２２２】
本実施例では、同一系統のアクセスアドレス間においてタグ部とインデックス部の比較を行ってホールド信号を生成しているが、別系統のアクセスアドレス間においても同様にタグ部とインデックス部の比較を行うようにすることで、よりホールド信号が有効になるケースを増やすこともできる。
【０２２３】
また、本発明のデータアレイでは、第１の実施例の図７に例示したように１回のアクセスでキャッシュブロック全体を読み出せるようにＳＲＡＭ内部の構成にも改良を行っている。
【０２２４】
このため、図７のＳＲＡＭ内部に設置されたラッチ型センスアンプ７６０−０ａ、７６０−１ａ、７６０−０ｂ、７６０−１ｂ・・・、７６０−０ｎ、７６０−１ｎに対して、外部からの制御信号に応じてラッチしているデータを保持し続ける機能を追加すれば、本実施例におけるキャッシュブロックデータを保持するホールドラッチ８７５−０、８７５−１、８７５−２、８７５−３とキャッシュブロックデータセレクタ８７６−０、８７６−１、８７６−２、８７６−３で構成している機能を代用させることもできる。
【０２２５】
以上説明した実施例によれば、連続して同じキャッシュブロックからの読み出し処理を行うような場合において、データアレイの動作を止めて消費電力を削減することが可能になる。
【０２２６】
その理由は、ラッチ８０５−０、８０５−１の追加及びホールドラッチ８７５−０、８７５−１、８７５−２、８７５−３の追加により、連続して同じキャッシュブロックからの読み出し処理を行う場合には、データアレイの動作を止めて、ホールドラッに保持された前回のキャッシュブロックからの読み出し情報を提供するためである。
【０２２７】
以上好ましい複数の実施例をあげて本発明を説明したが、本発明は必ずしも、上記実施例に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【図面の簡単な説明】
【０２２８】
【図１】本発明の第１の実施例によるマルチポートキャッシュメモリの構成を示すブロック図である。
【図２】本発明の第１の実施例によるケースＡの同時読み出し処理の流れを説明するためのフローチャートである。
【図３】本発明の第１の実施例によるケースＡにおけるキャッシュブロックデータからターゲットデータを読み出す一例を説明するための図である。
【図４】本発明の第１の実施例によるケースＢの同時読み出し処理の流れを説明するためのフローチャートである。
【図５】本発明の第１の実施例による従来のオペランドキャッシュメモリにおけるデータアレイに使用されるＳＲＡＭの内部構成の一例を示した図である。
【図６】本発明の第１の実施例を説明するためのＳＲＡＭの内部構成を示す図である。
【図７】本発明の第１の実施例によるＳＲＡＭの内部構成を示す図である。
【図８】本発明の第２の実施例によるマルチポートキャッシュメモリの構成を示すブロック図である。
【図９】従来技術によるマルチポートキャッシュメモリの方式１の構成を示すブロック図である。
【図１０】従来技術によるマルチポートキャッシュメモリの方式２の構成を示すブロック図である。
【図１１】従来技術によるマルチポートキャッシュメモリの方式３の構成を示すブロック図である。
【図１２】従来技術によるＲＡＭセルの構成を示す図である。
【図１３】従来技術による２ポートＲＡＭセルの構成を示した図である。
【符号の説明】
【０２２９】
１０、１１：ラッチ（Latch）
１００−０、１００−１、８００−０、８００−１、９００−０、９００−１、１０００−０、１０００−１、１１００−０、１１００−１：アクセスアドレス
１０１−０、１０１−１、８０１−０、８０１−１、９０１−０、９０１−１、１００１−０、１００１−１、１１０１−０、１１０１−１：タグ部（Tag）
１０２−０、１０２−１、８０２−０、８０２−１、９０２−０、９０２−１、１００２−０、１００２−１、１１０２−０、１１０２−１：インデックス部（Index）
１０３−０、１０３−１、８０３−０、８０３−１：ブロック部（Block）
１０４−０、１０４−１：インデックス部下位ビット
１１０−０、１１０−１，１１０−２，１１０−３、９１０−０、９１０−１、１０１０−０、１０１０−１、１１１０−０、１１１０−１：アドレスアレイ（ＡＡ）
１１１−０、１１１−１、１１１−２、１１１−３：タグ情報
１２０−０、１２０−１、１２０−２、１２０−３、８２０−０、８２０−１、８２０−２、８２０−３、９２０−０、９２０−１、１０２０−０、１０２０−１、１１２０−０、１１２０−１：タグアドレス比較器
１２１−０、１２１−１、１２１−２、１２１−３、９２１−０、９２１−１、１０２１−０、１０２１−１、１１２１−０、１１２１−１：キャッシュヒット判定信号
１４０−０、１４０−１、１４０−２、８０６−０、８０６−１、８０７−０、８０７−１、９４０：比較器
１４１−０：タグ部一致判定信号
１４１−１：インデックス部一致判定信号
１４１−２：バンク一致判定信号
１５０：選択制御信号生成回路
１５１−０、１５１−１、１５１−２、１５１−３：アドレス情報選択制御信号
１６０−０、１６０−１、１６０−２、１６０−３、８６０−０、８６０−１、８６０−２、８６０−３、９６０−０、９６０−１、９６０−２、９６０−３：セレクタ
１６１−０、１６１−１、１６１−２、１６１−３：選択されたタグ部
１６２−０、１６２−１、１６２−２、１６２−３：インデックス部
１７０−０、１７０−１、１７０−２、１７０−３、８７０−０、８７０−１、８７０−２、８７０−３、９７０−０、９７０−１、９７０−２、９７０−３、１０７０−０、１０７０−１、１１７０−０：データアレイ（ＤＡ）
１７１−０、１７１−１、１７１−２、１７１−３、８７１−０、８７１−１、８７１−２、８７１−３：キャッシュブロックデータ
１８０−０、１８０−１：バンク選択回路
１９０−０、１９０−１：選択回路
１９１−０、１９１−１：ターゲットデータ
５００：ロウ（ROW）デコーダ
５１０−０、５１０−１： ワード線ドライバ
５１１−０、５１１−１：ワード線
５２０−０、５２０−１：メモリセルアレイ
５２１−０、５２２−０、５２１−１、５２２−１：ビット線
５３０：カラム（COLUMN）デコーダ
５４０−０、５４０−１：カラム線ドライバ
５５０−０、５５０−１：カラムセレクタ
５６０−０、５６０−１：ラッチ（Latch）型センスアンプ
６００−ａ、６００−ｂ、・・・、６００−ｎ、７００−ａ、７００−ｂ、・・・、７００−ｎ：ロウ（ROW）デコーダ
６１０−０ａ、６１０−１ａ、６１０−０ｂ、６１０−１ｂ、・・・、６１０−０ｎ、６１０−１ｎ、７１０−０ａ、７１０−１ａ、７１０−０ｂ、７１０−１ｂ、・・・、７１０−０ｎ、７１０−１ｎ：ワード線ドライバ
６２０−０ａ、６２０−１ａ、６２０−０ｂ、６２０−１ｂ、・・・、６２０−０ｎ、６２０、７２０−０ａ、７２０−１ａ、７２０−０ｂ、７２０−１ｂ、・・・、７２０−０ｎ、７２０：メモリセルアレイ
６２１−０ａ、６２２−０ａ、６２１−１ａ、６２２−１ｂ、６２１−０ｂ、６２２−０ｂ、６２１−１ｂ、６２２−１ｂ、・・・、６２１−０ｎ、６２２−０ｎ、６２１−１ｎ、６２２−１ｎ、７２１−０ａ、７２２−０ａ、７２１−１ａ、７２２−１ｂ、７２１−０ｂ、７２２−０ｂ、７２１−１ｂ、７２２−１ｂ、・・・、７２１−０ｎ、７２２−０ｎ、７２１−１ｎ、７２２−１ｎ：ビット線
６３０、７３０：カラム（COLUMN）デコーダ
６５０−０、６５０−１、７５０−０、７５０−１：カラムセレクタ
６６０−０ａ、６６０−１ａ、６６０−０ｂ、６６０−１ｂ、・・・、６６０−０ｎ、６６０−１ｎ、７６０−０ａ、７６０−１ａ、７６０−０ｂ、７６０−１ｂ、・・・、７６０−０ｎ、７６０−１ｎ：ラッチ（Latch）型センスアンプ
７０１−０ａ、７０１−１ａ、７０１−０ｂ、７０１−１ｂ、・・・、７０１−０ｎ、７０１−１ｎ：ラッチ型センスアンプからの出力
８０４−０、８０４−１：インデックス部下位ビット
８０５−０、８０５−１：ラッチ
８０８−０、８０８−１：タグ部一致判定信号
８０９−０、８０９−１：インデックス部一致判定信号
８５０：選択制御信号生成回路
８５１−０、８５１−１、８５１−２、８５１−３：セレクタ選択制御信号
８５２−０、８５２−１、８５２−２、８５２−３：ホールド信号
８７５−０、８７５−１、８７５−２、８７５−３：ホールドラッチ（Hold Latch）
８７６−０、８７６−１、８７６−２、８７６−３：キャッシュブロックデータセレクタ
８７７−０、８７７−１、８７７−２、８７７−３：キャッシュブロックデータ
８７８−０、８７８−１、８７８−２、８７８−３：データ
８８０−０、８８０−１：バンク選択回路
８９０−０、８９０−１：選択回路
９０３−０、９０３−１：下位ビットを除くブロック部とインデックス部とを合わせたアドレス
９０４−０、９０４−１：ブロック部下位ビット
９１２：登録タグアドレス更新情報
９３０−０、９３０−１：デコーダ
９３１−０、９３１−１：デコード信号
９４１：比較結果信号
９５０：選択制御信号生成回路
９５１−０、９５１−１、９５１−２、９５１−３：アドレス情報選択制御信号
９６１−０、９６１−１、９６１−２、９６１−３：読み出しアドレス
９７１−０、９７１−１、９７１−２、９７１−３：読み出しデータ
９８０−０、９８０−１：セレクタ
９８１−０、９８１−１：ターゲットデータ
１００３−０、１００３−１：インデックス部とブロック部を合わせたアドレス
１０１１−０、１０１１−１：登録アドレス
１０１２：登録タグ更新データ
１０７１−０、１０７１−１：ターゲットデータ
１０７２、１１７２：ライトデータ／フィルデータ
１１０３−０、１１０３−１：インデックス部及びブロック部を合わせたアドレス
１１１１−０、１１１１−１：登録アドレス
１１１２：登録タグ更新データ
１１７１−０、１１７１−１：読み出しデータ
１２００、１２１０、１３００、１３１０：インバータ
１２２０−０、１２２０−１：スイッチングトランジスタ
１２２１、１３２１、１３３１：ワード線
１２２２−０、１２２２−１、１３２２−０、１３２２−１、１３３２−０、１３３２−１：ビット線
１３２０−０、１３２０−１、１３３０−０、１３３０−１：スイッチングトランジスタ
【図１】
2006139401.tif 000003
【図２】
2006139401.tif 000004
【図３】
2006139401.tif 000005
【図４】
2006139401.tif 000006
【図５】
2006139401.tif 000007
【図６】
2006139401.tif 000008
【図７】
2006139401.tif 000009
【図８】
2006139401.tif 000010
【図９】
2006139401.tif 000011
【図１０】
2006139401.tif 000012
【図１１】
2006139401.tif 000013
【図１２】
2006139401.tif 000014
【図１３】
2006139401.tif 000015