JP2006139401A - マルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式 - Google Patents

マルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式 Download PDF

Info

Publication number
JP2006139401A
JP2006139401A JP2004326740A JP2004326740A JP2006139401A JP 2006139401 A JP2006139401 A JP 2006139401A JP 2004326740 A JP2004326740 A JP 2004326740A JP 2004326740 A JP2004326740 A JP 2004326740A JP 2006139401 A JP2006139401 A JP 2006139401A
Authority
JP
Japan
Prior art keywords
cache memory
access
data
address
cache
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
JP2004326740A
Other languages
English (en)
Other versions
JP4336848B2 (ja
Inventor
Satoshi Nakazato
聡 中里
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 JP2004326740A priority Critical patent/JP4336848B2/ja
Priority to US11/269,716 priority patent/US7526612B2/en
Publication of JP2006139401A publication Critical patent/JP2006139401A/ja
Application granted granted Critical
Publication of JP4336848B2 publication Critical patent/JP4336848B2/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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0851Cache with interleaved addressing
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache

Abstract

【課題】 複数の読み出し処理を同時に行う際に発生するバンク競合の発生確率を低減するマルチポートキャッシュメモリを提供する。
【解決手段】 キャッシュメモリの構成要素であるアドレスアレイ110−0、110−1,110−2,110−3及びデータアレイ170−0、170−1、170−2、170−3に登録されているキャッシュブロックデータ171−0、171−1、171−2、171−3を複数のアクセスアドレス100−0、100−1により索引し、複数のアクセスアドレス100−0、100−1に対応したターゲットデータの読み出し処理を同時に行う、マルチポートキャッシュメモリであって、アドレスアレイ110−0、110−1,110−2,110−3とデータアレイ170−0、170−1、170−2、170−3を、アクセスアドレス100−0、100−1のインデックス部下位ビット104−0、104−1により一意に識別できる複数のバンクに分割する。
【選択図】 図1

Description

本発明は、キャッシュメモリに関し、特に、複数の読み出し処理を同時に行う際に発生するバンク競合の発生確率を低減するマルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式に関する。
複数の読み出し処理を同時に行うマルチポートキャッシュメモリにおいては、従来のバンク構成による手法では、同時に複数の読み出し処理を行うことができなくなるバンク競合が発生する確率が高くなるという問題がある。
一方、バンク競合の発生する確率を低くしようとすると、LSIに実装した場合のキャッシュメモリの面積が大きくなり、信号配線長の増加による伝搬遅延増加等による動作周波数の低下や、LSIサイズの増加によるコスト上昇、消費電力の増加等が起こる。
最近のスーパースカラプロセッサ等では、同時に複数のロード/ストア命令が発行できるようになっている。このため、オペランドキャッシュメモリは、これら複数のロード/ストア命令を処理できるようにマルチポート構成になっている。特に、プロセッサにおけるアプリケーション実行時の性能、すなわち実効性能を向上させるためには、複数のロード命令を同時に実行することが必要であり、オペランドキャッシュメモリとしては同時に複数の読み出し処理が実行できることが望まれている。同時に複数の読み出し処理を実現するマルチポートキャッシュメモリは、いくつかの構成で実現することができる。以下で3つの例について説明する。
方式1:1ポートのRAM(Random Access Memory)セルを使用してデータアレイをバンク構成にすることで、バンク競合が起こらない限りマルチポートアクセスを行う方式。
方式2:ポートアクセス構成のキャッシュメモリを多重化して、ストア命令実行時は全てのキャッシュメモリに同一データを書き込み、ロード命令実行時には各キャッシュメモリから異なるデータを読み出すことでマルチポートアクセスを行う方式。
方式3:キャッシュメモリに使用するメモリセル自体をマルチポートRAMセルとして、アドレスデコーダやセンスアンプ等のキャッシュメモリ構成部品を全て複数持つことでマルチポートアクセスを行う方式。
図9は、マルチポートキャッシュメモリの方式1の構成を示すブロック図である。ここでは、同時に2つの読み出し処理を行うオペランドキャッシュメモリについて説明する。
オペランドキャッシュメモリとしてはセットアソシアティブ方式を想定しており、図9では、2ウェイセットアソシアティブ方式による構成例としている。
異なる2つのアクセスアドレス900−0、900−1を保持するラッチ10、11があり、そのアドレスは上位側から順にタグ(Tag)部、インデックス(Index)部、ブロック(Block)部の3つに分割されている。
タグ部901−0、901−1は、アドレスアレイ910−0、910−1に登録されているアドレスと比較するためにタグアドレス比較器920−0、920−1へと送られ、インデックス部902−0、902−1は、アドレスアレイ910−0、910−1からの読み出しアドレスとなる。
アドレスアレイ910−0、910−1から読み出された登録アドレス911−0、911−1とタグ部901−0、901−1は、タグアドレス比較器920−0、920−1で比較されて、その値が一致したかどうかによってキャッシュヒット判定信号921−0、921−1が生成される。
アドレスアレイ910−0、910−1は2つのアクセスアドレス900−0、900−1のそれぞれに対応するように同一内容のコピーを持つように2重化されており、アドレスアレイ910−0、910−1への書き込みデータとなる登録タグアドレス更新情報912は2つのアドレスアレイ910−0、910−1に同時に与えられて同時に更新される。
タグアドレス比較器920−0、920−1も2重化されていて、2つのアクセスアドレス900−0、900−1にそれぞれ対応して比較処理を行う。
データアレイ970−0、970−1、970−2、970−3はアドレスのブロック部下位ビット904−0、904−1に応じて複数のバンクに分割されている。
図9では、このビット数を2としてデータアレイが4つのバンクに分割されている構成を示している。下位ビット904−0、904−1を除くブロック部とインデックス部とを合わせたアドレス903−0、903−1は、データアレイ970−0、970−1、970−2、970−3への読み出しアドレスとなる。アドレス903−0、903−1は、それぞれのデータアレイに対して2系統のアクセスアドレスのいずれからアクセスするかを選択するセレクタ960−0、960−1、960−2、960−3を経由した後、データアレイ970−0、970−1、970−2、970−3への読み出しアドレス961−0、961−1、961−2、961−3となる。
ブロック部下位ビット904−0、904−1は、それぞれデコーダ930−0、930−1に入力され、そのデコード信号931−0、931−1は、バンクに分割された各データアレイ970−0、970−1、970−2、970−3からの読み出しデータ971−0、971−1、971−2、971−3を選択するためのセレクタ980−0、980−1に対する選択制御信号となる。
データアレイを読み出す、データセレクタ980−0、980−1からの出力は、それぞれ2つの異なるアクセスアドレス900−0、900−1に対応するオペランドキャッシュメモリ内のターゲットデータ981−0、981−1となる。
また、デコード信号931−0、931−1と、それぞれのブロック部下位ビット904−0、904−1を比較器940に入力して得られる比較結果信号941とは、データアレイへの読み出しアドレスセレクタ960−0、960−1、960−2、960−3の選択制御信号951−0、951−1、951−2、951−3を生成するために、選択制御信号制御回路950に入力される。
ブロック部下位ビット904−0、904−1の比較結果信号941が不一致である場合には、2つの異なるアクセスアドレス900−0、900−1は、それぞれ異なるバンクのデータアレイから読み出し処理を行えることになるので、選択制御信号生成回路950では、ブロック部下位ビット904−0、904−1のデコード結果931−0、931−1に従ってデータアレイ読み出しアドレス情報選択制御信号951−0、951−1,951−2、951−3に適切な値を出力する。
一方、比較結果信号941が一致した場合には、2つの異なるアクセスアドレス900−0、900−1は同一バンクのデータアレイから読み出し処理を行わなければならないため、バンク競合が発生することになる。この場合には、優先順位に従って一方のアクセスアドレスからの読み出し処理を無効化して、片方のアクセスアドレスからの読み出しを行うように、データアレイを読み出すためのアドレス情報選択制御信号951−0、951−1,951−2、951−3に適切な値を出力する。
以上述べたように、この方式では同時に2つのオペランドキャッシュ読み出し処理を行うために、アドレスアレイの2重化と若干の周辺論理の追加で実現することが可能であり、LSI上に実装した場合の面積増加を小さくすることができるという特徴を有している。
図10は、マルチポートキャッシュメモリの方式2の構成を示すブロック図である。
方式2は、異なる2つのアクセスアドレス1000−0、1000−1を保持するラッチ10、11と、アクセスアドレスのタグ部1001−0、1001−1と、インデックス部1002−0、1002−1と、アドレスアレイ1010−0、1010−1と、アドレスアレイ1010−0、1010−1から読み出された登録アドレス1011−0、1011−1と、タグアドレス比較器1020−0、1020−1と、キャッシュヒット判定信号1021−0、1021−1と、アドレスアレイ1010−0、1010−1への登録タグ更新データ1012から構成されている。
方式2の場合、データアレイ1070−0、1070−1は、アドレスアレイ1010−0、1010−1と同様に、異なる2つのアクセスアドレス1000−0、1000−1のそれぞれに対応するように、同一内容のコピーを持つように2重化されている。
データアレイ1070−0、1070−1への書き込みデータとなるライト(Write)データやキャッシュメモリ登録データ更新のためのキャッシュフィル(Fill)データ(以下ではライトデータ/フィルデータと略す)1072は、2つのデータアレイ1070−0、1070−1に同時に与えられて同時に更新される。異なる2つのアクセスアドレス1000−0、1000−1のインデックス部とブロック部を合わせたアドレス1003−0、1003−1が、それぞれの対応するデータアレイ1070−0、1070−1に索引アドレスとして与えられ、必要とするターゲットデータ1071−0、1071−1として読み出されることで同時に2つの読み出し処理を行うことができる。
方式2では、図9に示した方式1とは異なり、あらゆるケースで同時に2つの読み出し処理を実行できるオペランドキャッシュメモリを構成できる特徴がある。
図11は、マルチポートキャッシュメモリの方式3の構成を示すブロック図である。
方式3は、異なる2つのアクセスアドレス1100−0、1100−1を保持するラッチ10、11と、そのアドレスのタグ部1101−0、1101−1と、インデックス部1102−0、1102−1と、アドレスアレイ1110−0、1110−1と、アドレスアレイ1110−0、1110−1からそれぞれ読み出された登録アドレス1111−0、1111−1と、タグアドレス比較器1120−0、1120−1と、キャッシュヒット判定信号1121−0、1121−1と、アドレスアレイ1110−0、1110−1への登録タグ更新データ1112で構成されている。
また、登録タグ更新データ1112、キャッシュフィルデータ1172は方式2の場合と同様である。
方式3では、通常のメモリセルとは異なり同時に2つのアクセスを処理できる2ポートRAMセルによって構成されている。
異なる2つのアクセスアドレス1100−0、1100−1のインデックス部及びブロック部を合わせたアドレス1103−0、1103−1は、データアレイ1170−0の2つのポートに直接入力され、読み出しデータ1171−0、1171−1はそれぞれ対応するポートに出力されて、キャッシュメモリからのターゲットデータとなる。
ここで、方式3の主要要素である2ポートRAMセルについて、方式1、2の通常のRAMセルと対比して説明する。
図12は、図9及び図10のデータアレイで使用されている通常のRAMセルの構成を示す図である。
RAMセルでのデータ保持は、2つのインバータ1200、1210をループ状に接続することで行われる。この外側にワード線1221によって制御される2つのスイッチングトランジスタ1220−0、1220−1が接続される。
ワード線1221が選択された状態になると2つのスイッチングトランジスタ1220−0、1220−1は導通状態となり、2つのインバータ1200、1210に保持されていたデータは、ビット線1222−0、1222−1と呼ばれるデータ読み出し信号線に出力される。
この時、それぞれのビット線1222−0、1222−1に現れる読み出しデータは互いに論理的に反転した信号となっている。このようなRAMセルをLSI上に実装する場合には、デザインルールと呼ばれるトランジスタ素子の寸法や配線幅、配線間隔等の基準を、通常の論理回路を構成するトランジスタや配線とは別に定義して、より小さい面積でRAMセルを形成できるようにすることが一般的である。
図13は、図11のデータアレイで使用される2ポートRAMセルの構成を示した図である。
RAMセルでのデータ保持を行う2つのインバータ1300、1310をループ状に接続して、ワード線1321によって制御されてビット線1322−0、1322−1へのデータ読み出しを行う2つのスイッチングトランジスタ1320−0、1320−1が接続されている点では、図12に示したRAMセルと同様の構成である。
しかしながら、図13に示した2ポートRAMセルでは、別のワード線1331によって制御される別の2つのスイッチングトランジスタ1330−0、1330−1がループ状に接続された2つのインバータ1300、1310に接続される。ワード線1331が選択されると、2つのスイッチングトランジスタ1330−0、1330−1は導通状態となり、データは別の2つのビット線1332−0、1332−1に出力される。
図12の構成と比較すると、図13の2ポートRAMセルでは1つのRAMセル当たりでトランジスタ2個、横方向の配線(ワード線)が1本、縦方向の配線(ビット線)が2本、それぞれ増加することがわかる。
また、2ポートRAMセルでは通常のRAMで適用された面積を小さくするための特別なデザインルールを適用することは一般的にはできない。このためトランジスタ数や配線数の増加以上に2ポートRAMセルの面積は大きくなり、一般には面積は通常のRAMセルの2〜2.5倍程度になる。
以上に説明した方式1〜方式3の3つの方式以外にも、バンク競合の発生の解決に類する方法の一例が、例えば特開昭63−201851号公報(特許文献1)及び例えば特開平6−139144号公報(特許文献2)に記載されている。
特許文献1に開示される方法は、複数の要求元が同時にバッファ記憶にアクセスする場合の記憶方式に関するもので、アドレスアレイを複数バンクに分割し、キャッシュブロック単位にインタリーブさせる構成とする。また、データアレイは複数バンクに分割し、アクセスデータ幅単位にインタリーブさせる。
このような構成で、複数の要求元から、アドレスアレイとデータアレイが共に異なるアクセス要求がなされた場合には、複数の要求元が同時に読み出し処理を行うことができるというものである。
また、特許文献2の方法は、ブロックをまたいだアクセスに対応するキャッシュメモリ回路に関するものであって、アクセスがブロックをまたいでいる場合は、またいでいる2つのブロックのタグアドレスを比較し、2つのブロックの位置関係に応じて、同時に必要な2つの異なるブロックを読み出すことができるというものである。
特開昭63−201851号公報 特開平6−139144号公報
上述した従来の技術は、いずれも以下に述べるような問題点があった。
最初に、方式1〜方式3について説明し、次に特許文献1、特許文献2の方法について説明する。
方式1は、1ポートのRAMセルを使用してデータアレイをバンク構成にすることで、バンク競合が起こらない限りマルチポートアクセスを行う方法である。
しかしながら、方式1は、アクセスアドレスによっては、データアレイでのバンク競合により同時に読み出せないケースが発生することになる。このバンク競合発生確率を低減しようとするとバンク分割数を増やす必要があり、その場合はデータアレイの分割数増加による分割損による面積増加や、周辺論理の規模増大、セレクタ制御回路の論理複雑化によるクリティカルパス遅延増加による動作周波数低下などの問題が発生する。
また、方式2は、ポートアクセス構成のキャッシュメモリを多重化して、ストア命令実行時は全てのキャッシュメモリに同一データを書き込みロード命令実行時には各キャッシュメモリから異なるデータを読み出すことでマルチポートアクセスを行う方法である。
しかし、オペランドキャッシュメモリの主要な構成要素でありその大部分の面積を占めるデータアレイが完全に2重化されているため、通常の構成と比較してほぼ2倍の面積が必要になる。また、同時に2つの読み出し処理を行うためには、2重化されたデータアレイが常に動作し続けることになるため、消費電力もほぼ2倍になるという問題を有している。
また、方式3は、キャッシュメモリに使用するメモリセル自体をマルチポートRAMセルとして、アドレスデコーダやセンスアンプ等のキャッシュメモリ構成部品を全て複数持つことでマルチポートアクセスを行う方法である。
方式3では、オペランドキャッシュメモリの主要な構成要素であり、その大部分の面積を占めるデータアレイの面積が通常の構成と比較して2倍から2.5倍程度に大きくなるという問題を有している。更に、RAMセル自体の面積が大きくなることから、全RAMセルを横断するワード線長や全RAMセルを縦断するビット線長が増大してデータアレイのアクセスタイムが増大することになる。これにより、オペランドキャッシュメモリ全体の動作周波数が低下するという問題も有している。
次に特許文献1、特許文献2の方法について説明する。
特許文献1の方法は、アドレスアレイを複数バンクに分割し、またデータアレイは複数バンクに分割することにより、複数の要求元から、アドレスアレイとデータアレイが共に異なるアクセス要求がなされた場合には、複数の要求元が同時に読み出し処理を行うことができるというものである。
しかしながら、特許文献1の方法の場合、アドレスアレイ又はデータアレイの何れかに一致が発生した場合には、一方の要求は待たされ、同時の読み出し処理はできなくなるという問題がある。
また、特許文献2の方法は、ブロックをまたいだアクセスに対応するキャッシュメモリ回路に関するものであって、アクセスがブロックをまたいでいる場合に、2つの異なるブロックを読み出すことができるというものである。
しかしながら、特許文献2の方法は、あくまで1つのアクセス要求を前提とし、かつまたブロックをまたいだアクセスに対応する方法であって、複数の要求元からの同時読み出し要求時のバンク競合を解決するものではない。
本発明の目的は、上記従来技術の欠点を解決し、複数の読み出し処理を同時に行う際に発生するバンク競合の発生確率を低減するマルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式を提供することにある。
上記目的を達成するための本発明は、キャッシュメモリの構成要素であるアドレスアレイ及びデータアレイに登録されているキャッシュブロックデータを複数のアクセスアドレスにより索引し、前記複数のアクセスアドレスに対応したそれぞれのターゲットデータの読み出し処理を同時に行う、マルチポートキャッシュメモリであって、前記アドレスアレイとデータアレイを、前記アクセスアドレスのインデックス部下位ビットにより一意に識別できる複数のバンクに分割することを特徴とする。
また、複数のブロックにメモリを分割するセットアソシアティブ方式のキャッシュメモリであることを特徴とする。
本発明は、複数のアクセスアドレスのタグ部、インデックス部の一致の程度による場合わけを行い、それぞれの場合についてバンク競合の発生確率を低減するものである。
すなわち、読み出し処理を同時に行う2系統のアクセスアドレスのタグ部、インデックス部が一致した場合には、2系統のアクセスアドレスのターゲットデータは共に、同一バンク内であり、また同一キャッシュブロック内のデータになる。このため、予め設定した優先順位の高いアクセスアドレスを用いて、データアレイからキャッシュブロックデータを読み出す。優先順位の低いアクセスアドレスについては、読み出しを行わない。
次に、優先順位の高いアクセスアドレスを用いてデータアレイから読み出したキャッシュブロックデータを、2系統の読み出しポートに分配して、各アクセスアドレスのブロック部に応じて必要なターゲットデータをキャッシュブロックデータからそれぞれ選択して出力する。
このように、同一バンク内の読み出し処理であっても、バンク競合することなく、同時に読み出し処理をすることができる。
また、読み出し処理を同時に行う2系統のアクセスアドレスのタグ部が不一致を示し、インデックス部が一致した場合については、インデックス部が一致するため同一バンクとなる。しかし、タグ部が一致しないためセットアソシアティブ方式による、同一バンク内の異なるキャッシュセット内のデータになる。このため、該当するバンクにおけるデータアレイの2つのキャッシュセットからキャッシュブロックデータをそれぞれ読み出す。
次に、2つのキャッシュブロックデータを、それぞれのアクセスアドレスに対応した読み出しポートにそれぞれ転送し、各アクセスアドレスのブロック部に応じて必要なターゲットデータをそれぞれ選択して出力する。
このように、同一バンク内の読み出し処理であっても、バンク競合することなく、同時に読み出し処理をすることができる。
本発明のマルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式によれば、以下の効果が達成される。
複数の読み出し処理を同時に行う際に発生する、バンク競合の発生確率を低減することが可能となる。
その理由は、キャッシュメモリの構成要素であるアドレスアレイ及びデータアレイに登録されているキャッシュブロックデータを複数のアクセスアドレスにより索引し、複数のアクセスアドレスに対応したそれぞれのターゲットデータの読み出し処理を同時に行う、マルチポートキャッシュメモリにおいて、アドレスアレイとデータアレイを共に、アクセスアドレスのインデックス部下位ビットにより一意に識別できる複数のバンクに分割するためである。
以下、本発明の好適な実施例について図面を参照して詳細に説明する。
図1は、本実施例によるマルチポートキャッシュメモリの構成を示すブロック図である。
図1を参照すると、本実施例によるマルチポートキャッシュメモリは、ラッチ10、11と、比較器140−0、140−1、140−2と、選択制御信号生成回路150と、セレクタ160−0、160−1、160−2、160−3と、アドレスアレイ(AA)110−0、110−1,110−2,110−3と、タグアドレス比較器120−0、120−1、120−2、120−3と、データアレイ(DA)170−0、170−1、170−2、170−3と、バンク選択回路180−0、180−1と、選択回路190−0、190−1による構成となっている。
ラッチ10、11は、同時読み出し処理の対象であるターゲットデータ191−0、191−1にアクセスするためのアクセスアドレス100−0、100−1をそれぞれ保持することができる。
アクセスアドレス100−0、100−1は、それぞれ上位側からタグ部(Tag)101−0、101−1、インデックス部(Index)102−0、102−1、ブロック部(Block)103−0、103−1の3つに分けられている。
また、インデックス部の下位ビット104−0、104−1によって、アドレスアレイとデータアレイは、共にバンクに分割されている。
なお、タグ部アドレスは、アドレスアレイに登録されている。
また、インデックス部アドレスは、アドレスアレイ、データアレイのエントリアドレスとなる。
また、ブロック部アドレスは、ターゲットデータの位置を表す。
また、インデックス部下位アドレスは、バンクの位置を表す。
図1では、インデックス部の下位ビット104−0、104−1を共に2ビットとして、4バンクで構成する場合を図示している。すなわち、インデックス部の下位ビット104−0、104−1は、バンク位置に対応する。
アドレスアレイは、4つのアドレスアレイ110−0、110−1,110−2,110−3に分割されている。
データアレイも、4つのデータアレイ170−0、170−1、170−2、170−3に分割されている。
インデックス部102−0、102−1は、キャッシュメモリに登録されているエントリを表すことになるため、本発明ではオペランドキャッシュメモリのアドレスアレイとデータアレイは、それぞれエントリ毎にバンクに分割されていることになる。
本実施例では、演算の対象となる値、変数などを記憶するオペランドキャッシュメモリを対象に説明を行うが、メモリの種類については、オペランドキャッシュメモリ以外のキャッシュメモリであっても同様に実現できることは言うまでもない。
バンク分割されたデータアレイ170−0、170−1、170−2、170−3のデータ幅は、1つのキャッシュエントリのデータ幅であるキャッシュブロックサイズと同じデータ幅となっている。これはターゲットデータ幅×ブロック部アドレス数に相当する値になる。
一数値例であるが、データアレイ170−0、170−1、170−2、170−3のデータ幅が64バイトで、ターゲットデータ幅は8ビットの場合、ブロック部アドレス数は8となる。
また、図1においてアドレスアレイ110−0、110−1、110−2、110−3やデータアレイ170−0、170−1、170−2、170−3が2重化して記述されている(2枚重ねて表示)が、これは2ウェイのセットアソシアティブ方式のオペランドキャッシュを想定して、アドレスアレイやデータアレイが2つのセットで構成されていることを図示している。
なお、2重化して図示されているがそれぞれのセットは異なり、またデータ内容も異なる。
セレクタ160−0、160−1、160−2、160−3は、それぞれのアドレスアレイ110−0、110−1、110−2、110−3、データアレイ170−0、170−1、170−2、170−3に対して、2系統のアクセスアドレス100−0、100−1のいずれからアクセスするかを選択することができる。
すなわち、セレクタ160−0、160−1、160−2、160−3においては、タグ部101−0とタグ部101−1のいずれか一方が選択されて、バンク分割された各アドレスアレイ110−0、110−1、110−2、110−3とデータアレイ170−0、170−1、170−2、170−3、及びタグアドレス比較器120−0、120−1、120−2、120−3に供給される。
また、同様にセレクタ160−0、160−1、160−2、160−3においては、インデックス部102−0とインデックス部102−1のいずれか一方が選択されて、バンク分割された各アドレスアレイ110−0、110−1、110−2、110−3とデータアレイ170−0、170−1、170−2、170−3、及びタグアドレス比較器120−0、120−1、120−2、120−3に供給される。
セレクタ160−0、160−1、160−2、160−3で選択されたインデックス部162−0、162−1、162−2、162−3は、それぞれアドレスアレイ110−0、110−1、110−2、110−3及びデータアレイ170−0、170−1、170−2、170−3の読み出しアドレスとなる。
ここで、アドレスアレイ110−0、110−1、110−2、110−3から読み出されたタグ情報111−0、111−1、111−2、111−3は、それぞれセレクタ160−0、160−1、160−2、160−3で選択されたタグ部161−0、161−1、161−2、161−3と、それぞれタグアドレス比較器120−0、120−1、120−2、120−3で比較され、該当するタグアドレスのデータがオペランドキャッシュメモリに登録されているかどうかのキャッシュヒット判定信号121−0、121−1、121−2、121−3がそれぞれ生成される。
2つの異なるアクセスアドレス100−0、100−1のタグ部101−0とタグ部101−1は、2系統のタグ部ビット値を比較する比較器140−0に入力される。
2つの異なるアクセスアドレス100−0、100−1のインデックス部102−0とインデックス部102−1は、2系統のインデックス部ビット値を比較する比較器140−1に入力される。
2つの異なるアクセスアドレス100−0、100−1のインデックス部下位ビット104−0とインデックス部下位ビット104−1は、2系統のインデックス部下位ビット値を比較する比較器140−2に入力される。
比較器140−0、140−1、140−2では、タグ部101−0、101−1、インデックス部102−0、102−1、インデックス部下位ビット104−0、104−1に対応したそれぞれのタグ部一致判定信号141−0、インデックス部一致判定信号141−1、バンク一致判定信号141−2を生成することができる。
なお、バンク一致判定信号141−2は、インデックス部下位ビットの一致を判定するものであるが、インデックス部下位ビット104−0、104−1が分割されたバンクに対応するため、バンク一致判定信号141−2と記述することにする。
これら3つの判定信号は、選択制御信号生成回路150に入力される。
選択制御信号生成回路150では、これら3つの判定信号に基づいて、セレクタ160−0、160−1、160−2、160−3に入力するアドレス情報選択制御信号151−0、151−1、151−2、151−3を生成することができる。
以上に述べた構成により、各バンクのデータアレイ170−0、170−1、170−2、170−3からは、2つの異なるアクセスアドレス100−0、100−1のいずれかに対応するキャッシュブロックデータ171−0、171−1、171−2、171−3が出力される。
キャッシュブロックデータ171−0、171−1、171−2、171−3は、2つの異なるアクセスアドレス100−0、100−1のそれぞれに対応する2つのバンク選択回路180−0、180−1に入力される。
バンク選択回路180−0、180−1は、インデックス部下位ビット104−0、104−1に従って、ただ1つのバンクにおけるデータアレイのキャッシュブロックデータのみを選択することができる。
前述の処理により、アクセスアドレス100−0、100−1に対応したバンク選択回路180−0、180−1からキャッシュブロックデータが出力される。
選択回路190−0、190−1は、出力されたキャッシュブロックデータのブロック部103−0、103−1を識別することによって必要なターゲットデータ191−0、191−1を選択することができる。
選択回路190−0、190−1は、キャッシュブロックデータのブロック部103−0、103−1を識別することによって必要なターゲットデータ191−0、191−1を選択し、2つの異なるアクセスアドレス100−0、100−1で表された2つのターゲットデータ191−0、191−1を出力する。
なお、実際のオペランドキャッシュメモリには、ストア命令におけるストアデータの処理や、オペランドキャッシュメモリ登録データの更新に伴うデータアレイ書き換え処理等を行う必要があり、これらの処理のために図1に図示した以外にも周辺論理が必要である。この中には、オペランドキャッシュに登録されているデータが有効であるか、もしくは無効であるかを表す有効ビット情報とそれに伴うオペランドキャッシュメモリからの読み出しターゲットデータ無効化処理も含まれる。
図1に示した構成は、2ウェイのセットアソシアティブ方式によるオペランドキャッシュメモリの構成に対応する。
セットアソシアティブ方式のオペランドキャッシュメモリでは、セット数と同じ数のキャッシュヒット判定信号121−0、121−1、121−2、121−3が存在することになる。また、これらをバンク選択回路180−0、180−1にて選択後、複数のセットから出力されたキャッシュブロックデータをキャッシュヒット判定信号に応じて選択する処理も必要になる。
ただし、これらの処理は本発明の対象外であり、図面の煩雑化を避けるために、図示していない。
また、図1の構成ではアクセスアドレスを2系統として同時に2つの読み出し処理を実行する実施例を記述しているが、当然のことながらアクセスアドレスは2系統の場合に限定されず、3系統以上の複数系統の場合にも拡張することができる。
また、オペランドキャッシュメモリのセットアソシアティブ構成におけるセット数についても同様であって、図1に示した2セットの例に限らず、3セット以上の複数セットのセットアソシアティブ方式に本発明を適用できることは、言うまでもない。
次に、本実施例によるマルチポートキャッシュメモリのアクセス制御動作について、図を用いて詳細に説明する。
図1に示した本実施例の構成を用いて、動作を説明する。なお、以下では必要に応じて図1の主要な部分を参照して説明する。
以下では、特に、本発明で最も特徴的な動作となる、異なる2つのアクセスアドレス100−0とアクセスアドレス100−1の内、いずれからのアドレス情報を選択するかを決定するアドレス情報選択制御信号151−0、151−1、151−2、151−3の選択制御信号生成回路150における生成方法に重点をおいて動作を説明する。
選択制御信号生成回路150には、タグ部101−0とタグ部101−1を比較器140−0で比較したタグ部一致判定信号141−0、インデックス部102−0とインデックス部102−1を比較器140−1で比較したインデックス部一致判定信号141−1及びインデックス部下位ビット104−0とインデックス部下位ビット104−1を比較器140−2で比較したバンク一致判定信号141−2の3つの信号が入力される。ここで、インデックス部下位ビットは、バンク構成を表すビットである。
以下に、上記3つの信号が一致する程度に応じて分類した4つのケースA、ケースB、ケースC及びケースDの場合について、同時読み出し処理を説明する。
ケースAとして、タグ部一致を判定するタグ部一致判定信号141−0が一致を示し、インデックス部一致を判定するインデックス部一致判定信号141−1も一致した場合を考える。
この場合は、2系統のアクセスアドレスの両方が同一のキャッシュブロック内のターゲットデータをアクセスしていることになる。しかしながら、ブロック部は一致していないため、両方のターゲットデータは異なり、2系統のアクセスアドレス100−0、100−1のブロック部103−0、103−1で判別できる。
このようなケースでは、2系統のアクセスアドレス100−0、100−1の内、片方のアクセスアドレスのみを有効として、そのインデックス部下位ビットで示されるアドレスアレイ及びデータアレイのみからキャッシュブロックデータを読み出せばいいことになる。
2系統のアクセスアドレスには、優先順位を予め設定しておき、アドレスアレイ、データアレイへの読み出し処理においてどちらか一方しか必要としないケースAの場合、優先順位の高いアクセスアドレスからのタグ部、インデックス部を使用するようにする。ここでは説明の便宜上、アクセスアドレス100−0をより高い優先順位に設定する。
以下、処理の流れを説明する。
図2は、本実施例によるケースAの同時読み出し処理の流れを説明するためのフローチャートである。なお、以下では必要に応じて図1の主要な部分を参照して説明する。
図2を参照すると、最初に優先順位の高いアクセスアドレスのみを有効とする(ステップ201)。
次に、アクセスアドレス100−0のインデックス部下位ビット104−0に応じてアクセスすべきバンクを確定すると(ステップ202)、そのバンクのアドレス情報選択制御信号151−0、151−1、151−2、151−3は、アクセスアドレス100−0のタグ部101−0、及びインデックス部102−0を選択するように設定する(ステップ203)。
このインデックス部102−0を索引アドレスとして、データアレイから読み出されたキャッシュブロックデータは(ステップ204)、アクセスアドレス100−0、及びアクセスアドレス100−1のそれぞれに対応するバンク選択回路180−0、180−1に入力される(ステップ205)。
バンク選択回路180−0、180−1の選択制御信号は、それぞれインデックス部下位ビット104−0、104−1であり、これらの値は一致することから、2つのバンク選択回路180−0、180−1からは、同一のバンクにおけるデータアレイから読み出されたキャッシュブロックデータが出力されることになる(ステップ206)。
後は、アクセスアドレス100−0、100−1のそれぞれのブロック部103−0、103−1に応じて、当該キャッシュブロックデータからターゲットデータ191−0、191−1を選択出力すれば、2系統のアクセスアドレス100−0、100−1に対応したターゲットデータ191−0、191−1を同時に読み出すことができる(ステップ207)。
図3は、本実施例によるケースAにおけるキャッシュブロックデータからターゲットデータを読み出す一例を説明するための図である。なお、以下では必要に応じて図1の主要な部分を参照して説明する。
図3を参照すると、2つのバンク選択回路180−0、180−1から読み出された、アクセスアドレス100−0、100−1に対応する、2つのキャッシュブロックデータが示されている。2つのキャッシュブロックデータの内容は同一である。
キャッシュブロックデータ幅は64バイトであり、またターゲットデータ幅は8バイトである。ブロック部アドレス幅は3ビットの場合の例であり、8つのデータが格納されている。
キャッシュブロックデータがターゲットデータを選択する選択回路190−0、190−1を通過した後は、2つのアクセスアドレス100−0、100−1で指定された2つのターゲットデータ191−0、191−1が出力される。
図3に示した、ブロック部103−0のデータとブロック部103−1のデータを読み出すことにより、2つのターゲットデータ191−0、191−1を読み出すことができる。
なお、この際アクセスアドレス100−0のインデックス部下位ビット104−0によって選択されなかった残り3つのバンクにおけるアドレス情報選択制御信号は、デフォルト状態として優先順位の高いアクセスアドレス100−0を選択するように設定するのが一般的ではあるが、更に改良した構成では、このようなアクセスの発生しないバンクのクロック供給を停止したり、アドレスアレイやデータアレイをパワーセーブモードに設定するようにしたりすることも可能である。
ケースBとして、タグ部一致判定信号141−0が不一致を示し、インデックス部一致判定信号141−1が一致を示した場合を考える。この場合は、ケースAと同様にアクセスアドレス100−0のインデックス部下位ビット104−0と、アクセスアドレス100−1のインデックス部下位ビット104−1とは一致することになり、同一のバンクにアクセスすることになる。
ただし、ケースAとは異なりタグ部141−0とタグ部141−1が一致しないため、これはセットアソシアティブ方式のキャッシュメモリにおいて異なるセットにターゲットとなるキャッシュブロックデータが格納されていることを表す。
以下、処理の流れを説明する。
図4は、本実施例によるケースBの同時読み出し処理の流れを説明するためのフローチャートである。なお、以下では必要に応じて図1の主要な部分を参照して説明する。
図4を参照すると、ケースBでは、ケースAと同様に優先順位の高いアクセスアドレス100−0のバンク構成ビットであるインデックス部下位ビット104−0によって選択されたバンクのみにアクセスする(ステップ401)。
しかし、その際、セットアソシアティブ方式の2つのセットを同時にアクセスして(ステップ402)、セット毎に存在するバンク選択回路180−0、180−1からキャッシュブロックデータを出力する(ステップ403)。
なお、バンク選択回路180−0、180−1は、それぞれが2つのセットで構成されているが、図が複雑となるため図示していない。図示していない部分について、説明する。
例えば、バンク0(Bank #0と表示)のセットアソシアティブ方式による2つのセットからキャッシュブロックデータを読み出す場合を想定すると、タグアドレス比較器120−0で、アドレスアレイ110−0に登録された2セットのタグ部と、タグ部101−0、101−1とを比較することになる。アドレスアレイ110−0に登録されたタグ部は、セットアソシアティブ方式であるためキャッシュセットにより異なり、2セットある。また、実際には、タグアドレス比較器120−0も2個ある(図示していないが、実際には2重になっている)。
このため、アドレスアレイ110−0に登録された2セットのタグ部と、タグ部101−0、101−1とを、上記2個のタグアドレス比較器120−0でそれぞれ比較することになる。
次に、アクセスアドレス100−0、100−1毎にそれぞれのタグ部101−0、101−1と一致したキャッシュヒット判定信号121−0に従う。なお、キャッシュヒット信号121−0は1つしか図示していないが、実際には2つある。
以上で、図示していない部分の説明を終える。
以上により、複数セットのキャッシュブロックデータから、アクセスアドレス100−0、100−1に対応したそれぞれのキャッシュブロックデータを選択する(ステップ404)。
後は、アクセスアドレス100−0、アクセスアドレス100−1のそれぞれのブロック部103−0、103−1に応じてターゲットデータを選択出力すれば、ケースBにおける2系統のアクセスアドレス100−0、100−1が必要としているターゲットデータを同時に読み出すことができる(ステップ405)。
なお、この際アクセスアドレス100−0のインデックス部下位ビット104−0によって選択されなかった残り3つのバンクにおけるアドレス情報選択制御信号は、デフォルト状態として優先順位の高いアクセスアドレス100−0側を選択するように設定するのが一般的ではあるが、更に改良した構成では、このようなアクセスの発生しないバンクのクロック供給を停止したり、アドレスアレイやデータアレイをパワーセーブモードに設定することも可能である。
次に述べるケースC、ケースDでは、いずれもタグ部が不一致であることを前提としている。
ケースCとして、インデックス部一致判定信号141−1が不一致を示し、バンク一致判定信号141−2も不一致を示した場合を考える。この場合は、アクセスアドレス100−0とアクセスアドレス100−1はバンク競合をしないため、それぞれのアドレスが異なるバンクにアクセスすることを示す。
この場合、アクセスアドレス100−0のインデックス部下位ビット104−0に応じてアクセスすべきバンクを確定して、そのバンクのアドレス情報選択制御信号は、アクセスアドレス100−0のタグ部101−0、及びインデックス部102−0を選択するように設定する。
一方、アクセスアドレス100−1のインデックス部下位ビット104−1に対してもアクセスすべきバンクを確定して、そのバンクのアドレス情報選択制御信号はアクセスアドレス100−1のタグ部101−1、及びインデックス部102−1を選択するように設定する。
それぞれのインデックス部102−0、102−1を索引アドレスとして、データアレイから読み出されたキャッシュブロックデータは、アクセスアドレス100−0、及びアクセスアドレス100−1のそれぞれに対応するバンク選択回路180−0、180−1に入力される。
バンク選択回路180−0、180−1の選択制御信号は、それぞれインデックス部下位ビット104−0、104−1であるため、2つのバンクからキャッシュブロックデータを読み出すことになる。
すなわち、アドレス情報選択制御信号によりアクセスアドレス100−0のタグ部101−0、及びインデックス部102−0を選択するように設定したバンクと、アドレス情報選択制御信号によりアクセスアドレス100−1のタグ部101−1、及びインデックス部102−1を選択するように設定したバンクから読み出された2つのキャッシュブロックデータがバンク選択回路180−0、180−1から出力されることになる。
後は、アクセスアドレス100−0、アクセスアドレス100−1のそれぞれのブロック部103−0、103−1に応じてターゲットデータ191−0、191−1を、それぞれのキャッシュブロックデータから選択出力すれば、ケースCにおける2系統のアクセスアドレスが必要としているターゲットデータ191−0、191−1を同時に読み出すことができる。
なお、この際アクセスアドレス100−0のインデックス部下位ビット104−0とアクセスアドレス100−1のインデックス部下位ビット104−1によって選択されなかった残り2つのバンクにおけるアドレス情報選択制御信号は、デフォルト状態として優先順位の高いアクセスアドレス100−0を選択するように設定するのが一般的ではあるが、更に改良した構成では、このようなアクセスの発生しないバンクのクロック供給を停止したり、アドレスアレイやデータアレイをパワーセーブモードに設定するようにしたりすることも可能である。
ケースDとして、インデックス部一致判定信号141−1が不一致を示し、バンク一致判定信号141−2は一致を示した場合を考える。この場合は、アクセスアドレス100−0のアクセスするアドレスとアクセスアドレス100−1のアクセスするアドレスはバンク競合を起こすことになるため、どちらか一方のアドレスしかアクセスできないことを示す。この場合、一般的には優先順位の高いアクセスアドレス100−0のアクセスを優先して、アクセスアドレス100−1からのアクセスを無効化する処理を行う。
以上のことから、従来のバンク構成のオペランドキャッシュメモリではケースCの場合しか同時に2つのアドレスのアクセスを行うことができなかったが、本発明のバンク構成のオペランドキャッシュメモリではケースA、ケースBの場合にも同時に2つのアクセスを行うことができる。具体的には、以下の3つのケースにおいて同時に複数の読み出し処理をすることができる。
ケースA:各系統のアクセスアドレスにおけるタグ部とインデックス部が一致した場合は、同一キャッシュブロック内のデータになるため、該当するバンクにおけるデータアレイから読み出したキャッシュブロックデータを、読み出しポートに分配して、各アクセスアドレスのブロック部に応じて必要なターゲットデータをそれぞれ選択して出力する。
ケースB:各系統のアクセスアドレスにおけるタグ部が不一致でインデックス部が一致した場合は、同一バンク内の異なるキャッシュセット内のデータになるため、該当するバンクにおけるデータアレイの複数のキャッシュセットからキャッシュブロックデータを複数読み出し、それぞれのキャッシュセットに登録されたタグ部と一致したアクセスアドレスに対応する2つの読み出しポートにそれぞれ転送して、各アクセスアドレスのブロック部に応じて必要なターゲットデータをそれぞれ選択して出力する。
ケースC:各系統のアクセスアドレスにおけるタグ部、インデックス部が共に不一致で、なおかつバンク分割を定めているインデックス部の下位ビットも不一致の場合は、異なるバンク内のデータになるため、各系統のアクセスアドレスに従ってバンク毎に独立してアクセスを行ってデータアレイからキャッシュブロックデータを読み出し、各アクセスアドレスのブロック部に応じて必要なターゲットデータをそれぞれ選択して出力する。
また、従来のバンク構成のマルチポートキャッシュメモリと比較して、本発明ではデータアレイはバンク分割するだけなので面積増加はほとんどなく、アドレスアレイは2重化からバンク分割に変更することから面積削減の可能性もある。ただし、バンク分割による分割損により面積が増加するというデメリットもあることから、総合的に考えるとほぼ従来と同等の面積で実現することが可能である。
以上述べたように、本実施例によるマルチポートキャッシュメモリでは、キャッシュメモリの構成要素であるアドレスアレイ110−0、110−1,110−2,110−3及びデータアレイ170−0、170−1、170−2、170−3に登録されているキャッシュブロックデータ171−0、171−1、171−2、171−3を複数のアクセスアドレス100−0、100−1により索引し、複数のアクセスアドレス100−0、100−1に対応した複数のターゲットデータの読み出し処理を同時に行い、アドレスアレイ110−0、110−1,110−2,110−3とデータアレイ170−0、170−1、170−2、170−3を、アクセスアドレス100−0、100−1のインデックス部下位ビット104−0、104−1により一意に識別できる複数のバンクに分割することを特徴とする。
次に、本発明の特徴的な構成要素であるデータアレイの構成について説明する。
背景技術の図9〜図11に示したような従来技術によるオペランドキャッシュメモリでは、データアレイのデータ幅はターゲットデータ幅と同一になっている。ターゲットデータ幅とは、そのプロセッサにおける最も典型的なアクセスデータ幅であり、例えば64ビットのプロセッサではターゲットデータ幅は64ビット、すなわち8バイトというのが一般的である。
図3に示した本実施例による一例では、データアレイのデータ幅は64バイトと大きく、ブロック部のビット数により区別される数のターゲットデータが含まれる。
図5は、従来のオペランドキャッシュメモリにおけるデータアレイに使用されるSRAM(Static Random Access Memory)の内部構成の一例を示した図である。
データアレイは比較的容量が大きく、典型的な例では、2ウェイセットアソシアティブ方式で64Kバイトの容量を有するオペランドキャッシュメモリでは1つのデータアレイの容量は32Kバイトとなる。
このように比較的大容量でありながら高速でのアクセスが要求されるオペランドキャッシュメモリのデータアレイでは、一般に図5に示したように、アドレスの上位ビットをデコードするロウ(ROW)デコーダ500とアドレスの下位ビットをデコードするカラム(COLUMN)デコーダ530を中心部に配置して、その両側にデコードした信号を増幅駆動するワード線ドライバ510−0、510−1とカラム線ドライバ540−0、540−1を配置する。
ワード線ドライバ510−0、510−1の更に両側には、記憶素子となるRAMセルを2次元状に配置したメモリセルアレイ520−0、520−1が存在する。
1つ1つのメモリセルの構造は、背景技術の図12に示した構造と同様であって、ワード線511−0、511−1は、それぞれ互いに論理反転の関係にある2つのビット線521−0及び522−0、521−1及び522−1に接続されている。データアレイのデータ幅に対する1ビット分のデータは、隣接する複数のメモリセルから読み出されたデータから、カラムデコーダ530のデコード結果を選択制御信号とするカラムセレクタ550−0、550−1によって1つだけを選択する。
ビット線を伝搬する信号は、通常の論理回路を伝搬する信号とは異なり、ノイズマージンを確保できる限界程度に低い電圧振幅の信号であるため、カラムセレクタ550−0、550−1で選択されたデータはラッチ(Latch)型センスアンプ560−0、560−1にて信号振幅増幅が行われると同時に、タイミング規定を満たすようにラッチされて信号波形を保持する。
以上の説明から、データアレイのアクセスタイムは、ロウデコード→ワード線駆動→ビット線駆動→カラム選択→ラッチ型センスアンプのパスを経由する時の合計遅延時間によって決定されることがわかる。
オペランドキャッシュメモリのデータアレイのように比較的大容量である場合、低い電圧振幅での信号伝送を行うビット線の信号配線長が長くなることからアクセスタイムを高速化することが困難になりつつある。
そこで、現在ではオペランドキャッシュメモリのデータアレイのように比較的大容量で、なおかつ高速アクセスが必要なSRAMに対しては、以下に述べるような内部構成を採ることが多くなりつつある。
図6は、本実施例を説明するためのSRAMの内部構成を示す図である。
図6を参照すると、SRAMは、ラッチ型センスアンプ660−0a、660−1a、660−0b、660−1b、・・・、660−0n、660−1nを信号が通過した後に、カラムセレクタ650−0、650−1を配置するとともに、ロウデコーダ600−a、600−b、・・・、600−n、ワード線ドライバ610−0a、610−1a、610−0b、610−1b、・・・、610−0n、610−1n、メモリセルアレイ620−0a、620−1a、620−0b、620−1b、・・・、620−0n、ラッチ型センスアンプ660−0a、660−1a、660−0b、660−1b、・・・、660−0n、660−1nからなるSRAMバンクをカラム数分並列配置する。
メモリセルアレイ620−0a、620−1a、620−0b、620−1b、・・・、620−0n、620−1nに対応したそれぞれの1組のビット線621−0aと622−0a、621−1aと622−1b、621−0bと622−0b、621−1bと622−1b、・・・、621−0nと622−0n、621−1nと622−1nから読み出された低い電圧振幅の信号は、それぞれラッチ型センスアンプ660−0a、660−1a、660−0b、660−1b、・・・、660−0n、660−1nで信号振幅増幅が行われる。
カラムセレクタ650−0、650−1には、ラッチ型センスアンプ660−0a、660−1a、660−0b、660−1b、・・・、660−0n、660−1nによって信号振幅増幅が行われた信号が入力され、並列配置したSRAMバンクの中からカラムデコーダ630のデコード結果に従って選択される。
このようにすることによって、データアレイのアクセスタイムに最も影響を与えるビット線の信号配線長を短縮することができ、また従来はビット線に接続されていたカラムセレクタがビット線には接続されなくなることから、ビット線に接続される負荷容量も削減され、アクセスタイムの高速化を実現することが可能になる。
図6に示したようにSRAMの内部構成が変化してきている。図1に示した本実施例におけるデータアレイ170−0、170−1、170−2、170−3のような、オペランドキャッシュブロックデータを1回のアクセスで全て読み出すようなSRAMは、次のようにして実現する。
すなわち、次に述べるように、図6に示したSRAM内部構成から、カラムデコーダ630、カラム線ドライバ640−0、640−1、カラムセレクタ650−0、650−1を削除して、ラッチ型センスアンプ660−0a、660−1a、660−0b、660−1b、・・・、660−0n、660−1nからの出力を全てデータアレイの読み出しデータとして使用することで、実現することができる。
図7は、本実施例によるSRAMの内部構成を示す図である。
図7を参照すると、ラッチ(Latch)型センスアンプ760−0a、760−1a、760−0b、760−1b、・・・、760−0n、760−1nを信号が通過し、ロウデコーダ700−a、700−b、・・・、700−n、ワード線ドライバ710−0a、710−1a、710−0b、710−1b、・・・、710−0n、710−1n、メモリセルアレイ720−0a、720−1a、720−0b、720−1b、・・・、720−0n、ラッチ型センスアンプ760−0a、760−1a、760−0b、760−1b、・・・、760−0n、760−1nからなるSRAMバンクを並列配置する。
ラッチ型センスアンプ760−0a、760−1a、760−0b、760−1b、・・・、760−0n、760−1nからの出力701−0a、701−1a、701−0b、701−1b、・・・、701−0n、701−1nは、全てデータアレイの読み出しデータとして使用する。
このように、本発明で使用するデータアレイは現在オペランドキャッシュメモリとしてアクセスタイム高速化のために実施されているSRAM内部構成の改良と整合性がよく、バンク競合の低減による実効性能向上だけでなくオペランドキャッシュメモリのアクセスタイム高速化に伴う動作周波数向上に対しても有利であると言える。
以上説明した実施例によれば、複数の読み出し処理を同時に行う際に発生するバンク競合の発生確率を低減することが可能となる。
その理由は、読み出し処理を同時に行う複数系統のアクセスアドレス100−0、100−1のタグ部101−0、101−1、インデックス部102−0、102−1が一致した場合には、同一キャッシュブロック内のデータになるため、該当するバンクにおけるデータアレイから読み出した1つのキャッシュブロックデータを、複数の読み出しポートに分配して、各アクセスアドレス100−0、100−1のブロック部に応じて必要なターゲットデータをそれぞれ選択して出力するためである。
また、タグ部101−0、101−1が不一致を示し、インデックス部102−0、102−1が一致した場合には、セットアソシアティブ方式による、同一バンク内の異なるキャッシュセット内のデータになるため、該当するバンクにおけるデータアレイの複数のキャッシュセットから複数のキャッシュブロックデータを読み出し、キャッシュブロックデータのアクセスアドレスに対応する複数の読み出しポートにそれぞれ転送して、各アクセスアドレス100−0、100−1のブロック部に応じて必要なターゲットデータをそれぞれ選択して出力するためである。
また、バンク競合の発生確率を低減する際に、動作周波数低下の発生しないマルチポートキャッシュメモリを提供することが可能になる。
その理由は、本発明で使用するデータアレイ170−0、170−1、170−2、170−3は現在オペランドキャッシュメモリとしてアクセスタイム高速化のために実施されているSRAM内部構成の改良と整合性がよいためである。
次に、本発明の第2の実施例について図面を用いて説明する。
図8は、本実施例によるマルチポートキャッシュメモリの構成を示すブロック図である。
図1に示した実施例との構成の主な相違は、ラッチ805−0、805−1及びホールドラッチ875−0、875−1、875−2、875−3の追加である。
なお、タグアドレス比較器820−0、820−1、820−2、820−3、セレクタ860−0、860−1、860−2、860−3、選択回路890−0、890−1、アドレスアレイ810−0、810−1,810−2,810−3については、図1と同じ機能であるため、説明はしない。
以下で、追加した部分について説明する。
まず、前回ラッチ10、11に保持されたアクセスアドレス800−0、800−1のタグ部801−0、801−1とインデックス部802−0、802−1を保持するラッチ805−0、805−1を追加する。
また、前回のアクセスアドレス800−0、800−1のタグ部801−0、801−1と今回のアクセスアドレス800−0、800−1のタグ部802−0、802−1をそれぞれ比較する比較器806−0、806−1と、前回のアクセスアドレス800−0、800−1のインデックス部802−0、802−1と今回のアクセスアドレス800−0、800−1のインデックス部802−0、802−1をそれぞれ比較する比較器807−0、807−1を設ける。
比較器806−0、806−1から出力されるタグ部一致判定信号808−0、808−1及び比較器807−0、807−1から出力されるインデックス部一致判定信号809−0、809−1は、選択制御信号生成回路850に入力される。
次に、ホールドラッチ(Hold Latch)875−0、875−1、875−2、875−3の追加について説明する。
各バンクのデータアレイ870−0、870−1、870−2、870−3から出力されたキャッシュブロックデータ877−0、877−1、877−2、877−3をそれぞれ保持するホールドラッチ875−0、875−1、875−2、875−3を追加する。
また、これらのホールドラッチ875−0、875−1、875−2、875−3から出力されるデータ878−0、878−1、878−2、878−3と、データアレイ870−0、870−1、870−2、870−3から出力されたキャッシュブロックデータ877−0、877−1、877−2、877−3とを選択するキャッシュブロックデータセレクタ876−0、876−1、876−2、876−3を設ける。
キャッシュブロックデータセレクタ876−0、876−1、876−2、876−3により選択された結果は、各バンクからバンク選択回路880−0、880−1に入力される、キャッシュブロックデータ871−0、871−1、871−2、871−3となるように構成する。
次に、以上の構成の追加に伴う動作について説明する。
選択制御信号生成回路850では、入力されたタグ部一致判定信号808−0、808−1、インデックス部一致判定信号809−0、809−1がそれぞれ一致した場合を検出する。ここで、それぞれが一致するとは、これら4つの信号の内、タグ部一致判定信号808−0とインデックス部一致判定信号809−0が一致し、他の2つは不一致を示した場合と、タグ部一致判定信号808−1とインデックス部一致判定信号809−1が一致し、他の2つは不一致を示した場合の、2つの場合がある。
これら2つの場合は、前者ではラッチ10で前回と今回のアクセスアドレスが同じであり、後者ではラッチ11で前回と今回のアクセスアドレスが同じであることを示す。いずれもアクセスアドレスが同じであるため、前回と今回共に同じキャッシュブロックをアクセスすることになる。
以下でこのような場合の動作の説明を行うが、最初に全体の説明を行い、次に1つの例について説明する。
上記のようなケースでは、前回アクセスしたキャッシュブロックと同一のキャッシュブロックをアクセスすることが判定できる。この判定結果と各アクセスアドレス800−0、800−1がいずれのバンクをアクセスするかに応じて選択されるセレクタ選択制御信号851−0、851−1、851−2、851−3とから、各バンクへのホールド信号852−0、852−1、852−2、852−3を生成する。
各バンクへのホールド信号852−0、852−1、852−2、852−3が生成されると、データアレイ870−0、870−1、870−2、870−3は現状に固定され、ホールドラッチ875−0、875−1、875−2、875−3は更新ができなくなる。
また、ホールド信号852−0、852−1、852−2、852−3が有効な場合には、データアレイ870−0、870−1、870−2、870−3は、パワーセーブモードに設定して読み出し処理を実行しないようにすると共に、キャッシュブロックデータ保持ラッチ875−0、875−1、875−2、875−3に保持されているデータをバンク選択回路880−0、880−1へ出力するように、キャッシュブロックデータセレクタ876−0、876−1、876−2、876−3の選択制御信号を設定する。
次に1つの例について説明する。
例えば、ラッチ10で、前回と今回のアクセスアドレスのタグ部、インデックス部が共に一致し、前回はバンク0にアクセスしており、またラッチ11では、前回と今回のアクセスアドレスのタグ部、インデックス部が共に一致しないものとする。
この場合、アクセスアドレス800−0で前回と同じキャッシュブロックをアクセスすることが判定できる。
今回のアクセスアドレス800−0に対応したバンク0を選択するセレクタ制御信号851−0が生成されると、バンク0へのホールド信号852−0が生成される。
これにより、データアレイ870−0は、現状に固定され、ホールドラッチ875−0は、更新ができなくなる。
ここで、ホールド信号852−0によりデータアレイ870−0は、パワーセーブモードに設定して読み出し処理を実行しないようにすると共に、ホールドラッチ875−0に保持されている前回のデータをバンク選択回路880−0へ出力するように、キャッシュブロックデータセレクタ876−0の選択制御信号を設定する。
このように構成の追加を行うことで、連続して同じキャッシュブロックからの読み出し処理を行うような場合において、データアレイの動作を止めて消費電力を削減することが可能になる。オペランドキャッシュメモリへのアクセスでは、このようなケースは比較的多いと推測されるため、効果があると考えられる。
本実施例では、同一系統のアクセスアドレス間においてタグ部とインデックス部の比較を行ってホールド信号を生成しているが、別系統のアクセスアドレス間においても同様にタグ部とインデックス部の比較を行うようにすることで、よりホールド信号が有効になるケースを増やすこともできる。
また、本発明のデータアレイでは、第1の実施例の図7に例示したように1回のアクセスでキャッシュブロック全体を読み出せるようにSRAM内部の構成にも改良を行っている。
このため、図7のSRAM内部に設置されたラッチ型センスアンプ760−0a、760−1a、760−0b、760−1b・・・、760−0n、760−1nに対して、外部からの制御信号に応じてラッチしているデータを保持し続ける機能を追加すれば、本実施例におけるキャッシュブロックデータを保持するホールドラッチ875−0、875−1、875−2、875−3とキャッシュブロックデータセレクタ876−0、876−1、876−2、876−3で構成している機能を代用させることもできる。
以上説明した実施例によれば、連続して同じキャッシュブロックからの読み出し処理を行うような場合において、データアレイの動作を止めて消費電力を削減することが可能になる。
その理由は、ラッチ805−0、805−1の追加及びホールドラッチ875−0、875−1、875−2、875−3の追加により、連続して同じキャッシュブロックからの読み出し処理を行う場合には、データアレイの動作を止めて、ホールドラッに保持された前回のキャッシュブロックからの読み出し情報を提供するためである。
以上好ましい複数の実施例をあげて本発明を説明したが、本発明は必ずしも、上記実施例に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
本発明の第1の実施例によるマルチポートキャッシュメモリの構成を示すブロック図である。 本発明の第1の実施例によるケースAの同時読み出し処理の流れを説明するためのフローチャートである。 本発明の第1の実施例によるケースAにおけるキャッシュブロックデータからターゲットデータを読み出す一例を説明するための図である。 本発明の第1の実施例によるケースBの同時読み出し処理の流れを説明するためのフローチャートである。 本発明の第1の実施例による従来のオペランドキャッシュメモリにおけるデータアレイに使用されるSRAMの内部構成の一例を示した図である。 本発明の第1の実施例を説明するためのSRAMの内部構成を示す図である。 本発明の第1の実施例によるSRAMの内部構成を示す図である。 本発明の第2の実施例によるマルチポートキャッシュメモリの構成を示すブロック図である。 従来技術によるマルチポートキャッシュメモリの方式1の構成を示すブロック図である。 従来技術によるマルチポートキャッシュメモリの方式2の構成を示すブロック図である。 従来技術によるマルチポートキャッシュメモリの方式3の構成を示すブロック図である。 従来技術によるRAMセルの構成を示す図である。 従来技術による2ポートRAMセルの構成を示した図である。
符号の説明
10、11:ラッチ(Latch)
100−0、100−1、800−0、800−1、900−0、900−1、1000−0、1000−1、1100−0、1100−1:アクセスアドレス
101−0、101−1、801−0、801−1、901−0、901−1、1001−0、1001−1、1101−0、1101−1:タグ部(Tag)
102−0、102−1、802−0、802−1、902−0、902−1、1002−0、1002−1、1102−0、1102−1:インデックス部(Index)
103−0、103−1、803−0、803−1:ブロック部(Block)
104−0、104−1:インデックス部下位ビット
110−0、110−1,110−2,110−3、910−0、910−1、1010−0、1010−1、1110−0、1110−1:アドレスアレイ(AA)
111−0、111−1、111−2、111−3:タグ情報
120−0、120−1、120−2、120−3、820−0、820−1、820−2、820−3、920−0、920−1、1020−0、1020−1、1120−0、1120−1:タグアドレス比較器
121−0、121−1、121−2、121−3、921−0、921−1、1021−0、1021−1、1121−0、1121−1:キャッシュヒット判定信号
140−0、140−1、140−2、806−0、806−1、807−0、807−1、940:比較器
141−0:タグ部一致判定信号
141−1:インデックス部一致判定信号
141−2:バンク一致判定信号
150:選択制御信号生成回路
151−0、151−1、151−2、151−3:アドレス情報選択制御信号
160−0、160−1、160−2、160−3、860−0、860−1、860−2、860−3、960−0、960−1、960−2、960−3:セレクタ
161−0、161−1、161−2、161−3:選択されたタグ部
162−0、162−1、162−2、162−3:インデックス部
170−0、170−1、170−2、170−3、870−0、870−1、870−2、870−3、970−0、970−1、970−2、970−3、1070−0、1070−1、1170−0:データアレイ(DA)
171−0、171−1、171−2、171−3、871−0、871−1、871−2、871−3:キャッシュブロックデータ
180−0、180−1:バンク選択回路
190−0、190−1:選択回路
191−0、191−1:ターゲットデータ
500:ロウ(ROW)デコーダ
510−0、510−1: ワード線ドライバ
511−0、511−1:ワード線
520−0、520−1:メモリセルアレイ
521−0、522−0、521−1、522−1:ビット線
530:カラム(COLUMN)デコーダ
540−0、540−1:カラム線ドライバ
550−0、550−1:カラムセレクタ
560−0、560−1:ラッチ(Latch)型センスアンプ
600−a、600−b、・・・、600−n、700−a、700−b、・・・、700−n:ロウ(ROW)デコーダ
610−0a、610−1a、610−0b、610−1b、・・・、610−0n、610−1n、710−0a、710−1a、710−0b、710−1b、・・・、710−0n、710−1n:ワード線ドライバ
620−0a、620−1a、620−0b、620−1b、・・・、620−0n、620、720−0a、720−1a、720−0b、720−1b、・・・、720−0n、720:メモリセルアレイ
621−0a、622−0a、621−1a、622−1b、621−0b、622−0b、621−1b、622−1b、・・・、621−0n、622−0n、621−1n、622−1n、721−0a、722−0a、721−1a、722−1b、721−0b、722−0b、721−1b、722−1b、・・・、721−0n、722−0n、721−1n、722−1n:ビット線
630、730:カラム(COLUMN)デコーダ
650−0、650−1、750−0、750−1:カラムセレクタ
660−0a、660−1a、660−0b、660−1b、・・・、660−0n、660−1n、760−0a、760−1a、760−0b、760−1b、・・・、760−0n、760−1n:ラッチ(Latch)型センスアンプ
701−0a、701−1a、701−0b、701−1b、・・・、701−0n、701−1n:ラッチ型センスアンプからの出力
804−0、804−1:インデックス部下位ビット
805−0、805−1:ラッチ
808−0、808−1:タグ部一致判定信号
809−0、809−1:インデックス部一致判定信号
850:選択制御信号生成回路
851−0、851−1、851−2、851−3:セレクタ選択制御信号
852−0、852−1、852−2、852−3:ホールド信号
875−0、875−1、875−2、875−3:ホールドラッチ(Hold Latch)
876−0、876−1、876−2、876−3:キャッシュブロックデータセレクタ
877−0、877−1、877−2、877−3:キャッシュブロックデータ
878−0、878−1、878−2、878−3:データ
880−0、880−1:バンク選択回路
890−0、890−1:選択回路
903−0、903−1:下位ビットを除くブロック部とインデックス部とを合わせたアドレス
904−0、904−1:ブロック部下位ビット
912:登録タグアドレス更新情報
930−0、930−1:デコーダ
931−0、931−1:デコード信号
941:比較結果信号
950:選択制御信号生成回路
951−0、951−1、951−2、951−3:アドレス情報選択制御信号
961−0、961−1、961−2、961−3:読み出しアドレス
971−0、971−1、971−2、971−3:読み出しデータ
980−0、980−1:セレクタ
981−0、981−1:ターゲットデータ
1003−0、1003−1:インデックス部とブロック部を合わせたアドレス
1011−0、1011−1:登録アドレス
1012:登録タグ更新データ
1071−0、1071−1:ターゲットデータ
1072、1172:ライトデータ/フィルデータ
1103−0、1103−1:インデックス部及びブロック部を合わせたアドレス
1111−0、1111−1:登録アドレス
1112:登録タグ更新データ
1171−0、1171−1:読み出しデータ
1200、1210、1300、1310:インバータ
1220−0、1220−1:スイッチングトランジスタ
1221、1321、1331:ワード線
1222−0、1222−1、1322−0、1322−1、1332−0、1332−1:ビット線
1320−0、1320−1、1330−0、1330−1:スイッチングトランジスタ

Claims (32)

  1. キャッシュメモリの構成要素であるアドレスアレイ及びデータアレイに登録されているキャッシュブロックデータを複数のアクセスアドレスにより索引し、前記複数のアクセスアドレスに対応したそれぞれのターゲットデータの読み出し処理を同時に行う、マルチポートキャッシュメモリであって、
    前記アドレスアレイとデータアレイを、前記アクセスアドレスのインデックス部下位ビットにより一意に識別できる複数のバンクに分割することを特徴とするマルチポートキャッシュメモリ。
  2. 複数のブロックにメモリを分割するセットアソシアティブ方式のキャッシュメモリであることを特徴とする請求項1に記載のマルチポートキャッシュメモリ。
  3. 演算の対象となる値、変数を記憶するオペランドキャッシュメモリであることを特徴とする請求項2に記載のマルチポートキャッシュメモリ。
  4. 前記アクセスアドレスのインデックス部下位ビットを指定することにより、前記複数のバンクのそれぞれに独立してアクセス可能としたことを特徴とする請求項2又は請求項3に記載のマルチポートキャッシュメモリ。
  5. 前記複数のバンクに分割されたデータアレイへのアクセスビット幅と前記データアレイに登録されているキャッシュブロックデータのデータ幅を同一とし、前記読み出し処理の要求がなされたターゲットデータを、複数のデータで構成された前記キャッシュブロックデータから選択する構成としたことを特徴とする請求項4に記載のマルチポートキャッシュメモリ。
  6. 前記複数のアクセスアドレスによりキャッシュブロックデータを索引する際、前記複数のアクセスアドレスを構成するそれぞれのタグ部を互いに比較すると共に、それぞれのインデックス部を互いに比較することを特徴とする請求項5に記載のマルチポートキャッシュメモリ。
  7. 前記複数のアクセスアドレスの情報を保持するラッチを備えることを特徴とする請求項6に記載のマルチポートキャッシュメモリ。
  8. 前記複数のアクセスアドレスのタグ部が互いに一致し、前記複数のアクセスアドレスのインデックス部が互いに一致した場合、優先順位の高いアクセスアドレスのみを有効とすることを特徴とする請求項7に記載のマルチポートキャッシュメモリ。
  9. 前記優先順位の高いアクセスアドレスのインデックス部を索引アドレスとして、当該インデックス部の下位ビットにより一意に識別できるバンクのデータアレイからキャッシュブロックデータを読み出すことを特徴とする請求項8に記載のマルチポートキャッシュメモリ。
  10. 前記キャッシュブロックデータが、前記複数のアクセスアドレスに対応するそれぞれのバンク選択回路から出力されることを特徴とする請求項9に記載のマルチポートキャッシュメモリ。
  11. 前記複数のアクセスアドレスのブロック部に対応して、前記キャッシュブロックデータからターゲットデータをそれぞれ選択することを特徴とする請求項10に記載のマルチポートキャッシュメモリ。
  12. 前記複数のアクセスアドレスのタグ部が互いに一致しないで、前記複数のアクセスアドレスのインデックス部が互いに一致した場合、前記複数のアクセスアドレスの内、優先順位の高いアクセスアドレスのインデックス部下位ビットにより一意に識別できるバンクにアクセスすることを特徴とする請求項7に記載のマルチポートキャッシュメモリ。
  13. 前記インデックス部下位ビットにより一意に識別できるバンクにアクセスする際、セットアソシアティブ方式で分割された当該バンクの複数のセットに同時にアクセスして、当該セット毎に設置したバンク選択回路から、キャッシュブロックデータを出力することを特徴とする請求項12に記載のマルチポートキャッシュメモリ。
  14. 前記複数のアクセスアドレス毎に、それぞれのタグ部と一致したキャッシュヒット判定信号に従い、それぞれのアクセスアドレスに対応したキャッシュブロックデータを選択することを特徴とする請求項13に記載のマルチポートキャッシュメモリ。
  15. 前記アクセスアドレスに対応したキャッシュブロックデータから、前記アクセスアドレスのブロック部に対応したターゲットデータを選択することを特徴とする請求項14に記載のマルチポートキャッシュメモリ。
  16. 読み出し処理を前回行った複数のアクセスアドレスのタグ部情報及びインデックス部情報を保持するラッチと、前記複数のバンクに分割されたデータアレイから前回出力されたキャッシュブロックデータを保持するホールドラッチを備えることを特徴とする請求項7に記載のマルチポートキャッシュメモリ。
  17. 前記複数のアクセスアドレスのタグ部及びインデックス部と、読み出し処理を今回行う複数のアクセスアドレスのタグ部及びインデックス部をそれぞれ比較し、タグ部及びインデックス部が前回と一致したアクセスアドレスに対応したデータアレイからの読み出し処理を実行しないことを特徴とする請求項16に記載のマルチポートキャッシュメモリ。
  18. 前記データアレイに接続されたホールドラッチに保持されているキャッシュブロックデータを、前記アクセスアドレスに対応したバンク選択回路へ出力することを特徴とする請求項17に記載のマルチポートキャッシュメモリ。
  19. ロウデコーダ、ワード線ドライバ、メモリセルアレイ及びラッチ型センスアンプを備えるSRAMバンクを複数配置し、前記複数のラッチ型センスアンプを通過した信号を全てデータアレイの読み出しデータとして使用するSRAMにより、前記キャッシュメモリの構成要素であるデータアレイを構成することを特徴とする請求項7に記載のマルチポートキャッシュメモリ。
  20. キャッシュメモリの構成要素であるアドレスアレイ及びデータアレイに登録されているキャッシュブロックデータを複数のアクセスアドレスにより索引し、前記複数のアクセスアドレスに対応したそれぞれのターゲットデータの読み出し処理を同時に行う、マルチポートキャッシュメモリのアクセス制御方式であって、
    前記アクセスアドレスのインデックス部下位ビットにより、前記アドレスアレイとデータアレイを一意に識別できる複数のバンクに分割したマルチポートキャッシュメモリとし、前記インデックス部下位ビットを指定することにより、前記各バンクに独立してアクセスすることを特徴とするマルチポートキャッシュメモリのアクセス制御方式。
  21. 前記マルチポートキャッシュメモリは、複数のブロックにメモリを分割するセットアソシアティブ方式のキャッシュメモリであることを特徴とする請求項20に記載のマルチポートキャッシュメモリのアクセス制御方式。
  22. 前記マルチポートキャッシュメモリは、演算の対象となる値、変数を記憶するオペランドキャッシュメモリであることを特徴とする請求項21に記載のマルチポートキャッシュメモリのアクセス制御方式。
  23. 前記複数のバンクに分割されたデータアレイへのアクセスビット幅と前記データアレイに登録されているキャッシュブロックデータのデータ幅を同一とし、前記読み出し処理の要求がなされたターゲットデータを、複数のデータで構成された前記キャッシュブロックデータから選択することを特徴とする請求項21又は請求項22に記載のマルチポートキャッシュメモリのアクセス制御方式。
  24. 前記複数のアクセスアドレスによりキャッシュブロックデータを索引する際、前記複数のアクセスアドレスを構成するそれぞれのタグ部を互いに比較すると共に、それぞれのインデックス部を互いに比較することを特徴とする請求項23に記載のマルチポートキャッシュメモリのアクセス制御方式。
  25. 前記複数のアクセスアドレスのタグ部が互いに一致し、前記複数のアクセスアドレスのインデックス部が互いに一致した場合、優先順位の高いアクセスアドレスのみを有効とすることを特徴とする請求項24に記載のマルチポートキャッシュメモリのアクセス制御方式。
  26. 前記優先順位の高いアクセスアドレスのインデックス部を索引アドレスとして、当該インデックス部の下位ビットにより一意に識別できるバンクのデータアレイからキャッシュブロックデータを読み出すことを特徴とする請求項25に記載のマルチポートキャッシュメモリのアクセス制御方式。
  27. 前記キャッシュブロックデータが、前記複数のアクセスアドレスに対応するそれぞれのバンク選択回路から出力されることを特徴とする請求項26に記載のマルチポートキャッシュメモリのアクセス制御方式。
  28. 前記複数のアクセスアドレスのブロック部に対応して、前記キャッシュブロックデータからターゲットデータをそれぞれ選択することを特徴とする請求項27に記載のマルチポートキャッシュメモリのアクセス制御方式。
  29. 前記複数のアクセスアドレスのタグ部が互いに一致しないで、前記複数のアクセスアドレスのインデックス部が互いに一致した場合、前記複数のアクセスアドレスの内、優先順位の高いアクセスアドレスのインデックス部下位ビットにより一意に識別できるバンクにアクセスすることを特徴とする請求項24に記載のマルチポートキャッシュメモリのアクセス制御方式。
  30. 前記インデックス部下位ビットにより一意に識別できるバンクにアクセスする際、セットアソシアティブ方式で分割された当該バンクの複数のセットに同時にアクセスして、当該セット毎に設置したバンク選択回路から、キャッシュブロックデータを出力することを特徴とする請求項29に記載のマルチポートキャッシュメモリのアクセス制御方式。
  31. 前記複数のアクセスアドレス毎に、それぞれのタグ部と一致したキャッシュヒット判定信号に従い、それぞれのアクセスアドレスに対応したキャッシュブロックデータを選択することを特徴とする請求項30に記載のマルチポートキャッシュメモリのアクセス制御方式。
  32. 前記アクセスアドレスに対応したキャッシュブロックデータから、前記アクセスアドレスのブロック部に対応したターゲットデータを選択することを特徴とする請求項31に記載のマルチポートキャッシュメモリのアクセス制御方式。
JP2004326740A 2004-11-10 2004-11-10 マルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式 Expired - Fee Related JP4336848B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004326740A JP4336848B2 (ja) 2004-11-10 2004-11-10 マルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式
US11/269,716 US7526612B2 (en) 2004-11-10 2005-11-09 Multiport cache memory which reduces probability of bank contention and access control system thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004326740A JP4336848B2 (ja) 2004-11-10 2004-11-10 マルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式

Publications (2)

Publication Number Publication Date
JP2006139401A true JP2006139401A (ja) 2006-06-01
JP4336848B2 JP4336848B2 (ja) 2009-09-30

Family

ID=36317687

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004326740A Expired - Fee Related JP4336848B2 (ja) 2004-11-10 2004-11-10 マルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式

Country Status (2)

Country Link
US (1) US7526612B2 (ja)
JP (1) JP4336848B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008046685A (ja) * 2006-08-10 2008-02-28 Fujitsu Ltd 二重化システム及び系切り換え方法
JP2008097572A (ja) * 2006-09-11 2008-04-24 Matsushita Electric Ind Co Ltd 演算装置、コンピュータシステム、および携帯機器
JP2011164948A (ja) * 2010-02-10 2011-08-25 Fujitsu Ltd キャッシュシステム
US8583873B2 (en) 2010-03-10 2013-11-12 Samsung Electronics Co., Ltd. Multiport data cache apparatus and method of controlling the same
US8977800B2 (en) 2011-02-25 2015-03-10 Samsung Electronics Co., Ltd. Multi-port cache memory apparatus and method

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008542945A (ja) * 2005-06-09 2008-11-27 エヌエックスピー ビー ヴィ マルチポートキャッシュメモリのアーキテクチャ
US7787324B2 (en) * 2006-10-13 2010-08-31 Marvell World Trade Ltd. Processor instruction cache with dual-read modes
US8027218B2 (en) 2006-10-13 2011-09-27 Marvell World Trade Ltd. Processor instruction cache with dual-read modes
KR100850515B1 (ko) * 2007-01-24 2008-08-05 삼성전자주식회사 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법
US8036061B2 (en) * 2009-02-13 2011-10-11 Apple Inc. Integrated circuit with multiported memory supercell and data path switching circuitry
US9910893B2 (en) 2011-12-01 2018-03-06 Oracle International Corporation Failover and resume when using ordered sequences in a multi-instance database environment
US9189295B2 (en) * 2011-12-01 2015-11-17 Oracle International Corporation Generating an ordered sequence in a database system using multiple interleaved caches
US9141609B2 (en) * 2011-12-01 2015-09-22 Oracle International Corporation Reducing sequence cache latch contention in a database system
US8868604B2 (en) 2012-09-26 2014-10-21 Oracle International Corporation Methods and apparatus for implementing Semi-distributed Lock Management
US9612970B2 (en) * 2014-07-17 2017-04-04 Qualcomm Incorporated Method and apparatus for flexible cache partitioning by sets and ways into component caches
SG11201908666VA (en) * 2017-03-21 2019-10-30 Tora Holdings Inc Secure order matching by distributing data and processing across multiple segregated computation nodes

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2561261B2 (ja) 1987-02-18 1996-12-04 株式会社日立製作所 バッファ記憶アクセス方法
JPH06139144A (ja) 1992-10-26 1994-05-20 Nec Corp キャッシュメモリ回路
JP3498673B2 (ja) * 2000-04-05 2004-02-16 日本電気株式会社 記憶装置
US20020108021A1 (en) * 2001-02-08 2002-08-08 Syed Moinul I. High performance cache and method for operating same
US7219185B2 (en) * 2004-04-22 2007-05-15 International Business Machines Corporation Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
US8886895B2 (en) * 2004-09-14 2014-11-11 Freescale Semiconductor, Inc. System and method for fetching information in response to hazard indication information

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008046685A (ja) * 2006-08-10 2008-02-28 Fujitsu Ltd 二重化システム及び系切り換え方法
JP2008097572A (ja) * 2006-09-11 2008-04-24 Matsushita Electric Ind Co Ltd 演算装置、コンピュータシステム、および携帯機器
JP2011164948A (ja) * 2010-02-10 2011-08-25 Fujitsu Ltd キャッシュシステム
US8583873B2 (en) 2010-03-10 2013-11-12 Samsung Electronics Co., Ltd. Multiport data cache apparatus and method of controlling the same
US8977800B2 (en) 2011-02-25 2015-03-10 Samsung Electronics Co., Ltd. Multi-port cache memory apparatus and method

Also Published As

Publication number Publication date
US7526612B2 (en) 2009-04-28
US20060101207A1 (en) 2006-05-11
JP4336848B2 (ja) 2009-09-30

Similar Documents

Publication Publication Date Title
JP4336848B2 (ja) マルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式
US5640534A (en) Method and system for concurrent access in a data cache array utilizing multiple match line selection paths
US7694077B2 (en) Multi-port integrated cache
US6877067B2 (en) Shared cache memory replacement control method and apparatus
US20070028051A1 (en) Time and power reduction in cache accesses
US8527708B2 (en) Detecting address conflicts in a cache memory system
EP0706131A2 (en) Method and system for efficient miss sequence cache line allocation
EP0708404A2 (en) Interleaved data cache array having multiple content addressable fields per cache line
US20080244187A1 (en) Pipelining d states for mru steerage during mru-lru member allocation
US6546465B1 (en) Chaining directory reads and writes to reduce DRAM bandwidth in a directory based CC-NUMA protocol
EP0284751B1 (en) Cache memory
US20100005244A1 (en) Device and Method for Storing Data and/or Instructions in a Computer System Having At Least Two Processing Units and At Least One First Memory or Memory Area for Data and/or Instructions
EP1179778B1 (en) Multi-port cache memory
US5802567A (en) Mechanism for managing offset and aliasing conditions within a content-addressable memory-based cache memory
JP4041402B2 (ja) サイクルあたりの多重キャッシュライン無効化をサポートするための方法および装置
EP0803818B1 (en) Single-cycle multi-accessible interleaved cache
US5890221A (en) Method and system for offset miss sequence handling in a data cache array having multiple content addressable field per cache line utilizing an MRU bit
JP2930071B2 (ja) 情報処理装置およびプロセッサ
JPH03147038A (ja) キャッシュメモリ
US20080276046A1 (en) Architecture for a Multi-Port Cache Memory
US7020752B2 (en) Apparatus and method for snoop access in a dual access, banked and pipelined data cache memory unit
JPH02294762A (ja) マルチプロセツサ・コンピユータ・システムおよびそのメモリ・アクセス方法
US6754791B1 (en) Cache memory system and method for accessing a cache memory having a redundant array without displacing a cache line in a main array
US6996675B2 (en) Retrieval of all tag entries of cache locations for memory address and determining ECC based on same
KR20190029270A (ko) 다중 캐시 메모리를 구비한 지능형 반도체 장치 및 지능형 반도체 장치에서의 메모리 접근 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090318

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090323

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090520

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4336848

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120710

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120710

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130710

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees