JPH10214227A - マルチポートのインターリーブ・キャッシュ・メモリ - Google Patents

マルチポートのインターリーブ・キャッシュ・メモリ

Info

Publication number
JPH10214227A
JPH10214227A JP9289333A JP28933397A JPH10214227A JP H10214227 A JPH10214227 A JP H10214227A JP 9289333 A JP9289333 A JP 9289333A JP 28933397 A JP28933397 A JP 28933397A JP H10214227 A JPH10214227 A JP H10214227A
Authority
JP
Japan
Prior art keywords
bank
memory
write
port
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP9289333A
Other languages
English (en)
Inventor
Arnold Luic David
デビッド・アーノルド・ルイック
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH10214227A publication Critical patent/JPH10214227A/ja
Pending legal-status Critical Current

Links

Classifications

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00—Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02—Addressing or allocation; Relocation
    • G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00—Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02—Addressing or allocation; Relocation
    • G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0851—Cache with interleaved addressing

Landscapes

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

Abstract

(57)【要約】 【課題】 16以上の同時メモリ・アクセスに対応し、
16以上の疑似ポートを備え、インターリーブされるキ
ャッシュ・メモリを提供する。 【解決手段】 8、16またはそれ以上のポートを持つ
高速疑似キャッシュ・メモリ、及び関連する有効アドレ
ス生成スキーム。キャッシュ・メモリは、2ポートのビ
ルディング・ブロックまたは2倍のシングル・ポートの
ビルディング・ブロックのいずれかをもとに、真の8、
16またはそれ以上のポートを持ち、インターリーブさ
れたキャッシュ・メモリと機能的に同等なものとして構
成される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、複数の、つまりコ
ンピュータへのロード操作等、少なくとも2つの同時メ
モリ・アクセスに対応するキャッシュ・メモリに関し、
特にマルチポートのインターリーブ・キャッシュ・メモ
リに、更に1サイクルで複数回の同時メモリ・アクセス
が行える"VLIW(Very Long Instruction Word)"コ
ンピュータに特に適したマルチポートのインターリーブ
・キャッシュ・メモリに関する。
【0002】
【従来の技術】Nウェイ・スーパースカラ、VLIW、
DATAFLOWプロセッサ等の並列性の高いコンピュ
ータ・アーキテクチャは、多くのロード操作や格納操作
をサイクルごとに同時に実行し、従って帯域幅のかなり
大きいキャッシュ・メモリを要する。VLIWアーキテ
クチャを例にとると、これはきめの細かい並列性を活用
して、多くのロード操作や格納操作を1サイクル当たり
同時に実行する。
【0003】コンピュータ・システムでの従来の並列性
には複数のプロセッサが関係する。プロセッサは通信網
により接続され、2つ以上のプロセッサが同時にアクテ
ィブになるように制御される。あるアプリケーションで
従来の並列プロセッサを使用するには、プログラマまた
は高度なコンパイラが問題を切り分け、適切な通信と制
御を設定しなければならない。一般にこの方法は、大き
な部分に無理なく分けられ、互いに通信する必要がほと
んどない問題には最も容易に適用できる。ただし多くの
アプリケーションはこのようには作られていない。その
ため従来の並列処理は、"科学的"数値解析法等、構造化
の進んだ問題を除いては、あまり効率的ではなかった。
【0004】きめの細かい並列性は、いくつかの面で命
令レベルの並列性の延長である。コンパイラは、プログ
ラム内の同時に実行できるマシン命令を見つける。これ
ら個別の命令は、複合命令である"VLIW(Very Long
Instruction Word)"にまとめられる。VLIW命令の
各部はALU(算術論理装置)、主記憶域へのパス、レ
ジスタへのパス等、コンピュータのハードウェアの個別
の部分を制御する。1つのVLIWマシン・サイクル
で、VLIWコンピュータ内のこれらの個別リソースを
全て独立に使用できるので、数個の基本的マシン命令を
同時に実行できる。従来のユニット・プロセッサ(ユニ
プロセッサ)よりも少ないマシン・サイクルでタスクを
改良できるという利点が得られる。
【0005】VLIW法は、ユニプロセッサでの性能を
改良する。そのため、これはコンピュータ内並列性を活
用しているとみることができる。コンピュータ内並列性
は、きめの細かい並列性を意味するもう1つの用語であ
る。逆に従来の、つまりきめの荒い並列性はコンピュー
タ間並列性とみることができる。もちろん数個のVLI
Wコンピュータを1つの動作単位として接続することに
よってコンピュータ内並列性とコンピュータ間並列性を
活用することは可能である。
【0006】図1は、関連するメモリ階層を含む従来の
VLIWアーキテクチャのブロック図である。レジスタ
・ファイル110は機能ユニット102乃至108に接
続される。特にロード/格納ユニット102、浮動小数
点(FP)加算ユニット104、整数ALU106、及
び分岐ユニット108はそれぞれ、レジスタ・ファイル
110からデータを配布する2つのロード・ラインと、
機能ユニットからレジスタ・ファイル110へデータを
格納する1つの格納ラインを持つ。レジスタ・ファイル
110はL0メモリ・レベルと呼ばれる。
【0007】図1はまた、レジスタ・ファイル110と
L2メモリ・レベル114に双方向に接続されるL1メ
モリ・レベル、またはキャッシュ112を含む。L2メ
モリ・レベル114はL3メモリ・レベル116と双方
向に接続される。L3メモリ・レベル116はまたL4
メモリ・レベル118と双方向に接続される。図1に示
したメモリ階層の一般原理は周知の通りである。
【0008】歴史的に、コンピュータの動作速度に影響
を与える要因は2つあり、1つはプロセッサ、例えば最
も遅い機能ユニットが現在利用できるデータを操作する
速度である。第2の要因は、機能ユニットに必要とされ
るデータを取得できる速度である。歴史的には第1の要
因より第2の要因を改良する方が難しい。
【0009】VLIWの考え方は、あるメモリ・アクセ
ス時間について同時に処理できる部分が多い場合は、有
効動作速度を改良できることを前提としている。例えば
8つの機能ユニットは1サイクルで16個のデータを操
作できる。逆に、どのサイクルでもその機能ユニットの
1つしか使用できないコンピュータは、1サイクル当た
り2データとして16個のデータを操作するために8サ
イクルを必要とする。この例でVLIWコンピュータ
は、メモリ・アクセス時間が同じであっても、従来のコ
ンピュータよりも8倍高速である。
【0010】しかしVLIWコンピュータが改良を達成
できるのは、16個のデータを同時に8つの機能ユニッ
トそれぞれに供給できる場合である。8ポート以上の真
のキャッシュ・アレイは、配線性、性能、電流密度及
び、例えばアクセス時間1ナノ秒未満等の高速でのノイ
ズ耐性の観点から非実用的とみられている。8ポート以
上の真のキャッシュ・アレイは極めて複雑である。性能
の問題は大きい。例えばNポートでは、電流ソーシング
(sourcing)能力とセル出力デバイスのキャパシタンス
に大きな負荷がかかりやすい。回路のレイアウトを考え
ると、1つの出力ポートでパイプ/バスの1つを駆動で
きなければならない。
【0011】逆に、キャッシュを個別に機能する部分ま
たはモジュールとして形成すること、つまりインターリ
ーブする場合、各インターリーフがパイプ・ラインを1
つだけ駆動する必要がある。インターリーブを介してキ
ャッシュを展開することにより配線性が改良され、よっ
て性能が向上する。駆動する必要のある出力ポートは1
つか2つなので各セルを小さく構成できる。
【0012】
【発明が解決しようとする課題】本発明の目的は、VL
IWコンピュータへのロード操作等、複数の同時メモリ
・アクセスに対応するキャッシュ・メモリを提供するこ
とである。
【0013】本発明の他の目的は、真の8ポートのイン
ターリーブ・キャッシュ・メモリと同等に機能するが真
に8ポートではない、つまり8つの同時メモリ・アクセ
スに対応する疑似8ポートのインターリーブ・キャッシ
ュ・メモリを提供することである。
【0014】本発明の他の目的は、16以上の同時メモ
リ・アクセスに対応し、16以上の疑似ポートを備えた
インターリーブ・キャッシュ・メモリを提供することで
ある。
【0015】本発明の他の目的は、8、16またはそれ
以上のポートを持つインターリーブ・キャッシュ・メモ
リにデータを格納する有効アドレスを生成する方法及び
装置を提供することである。
【0016】本発明の他の目的は、8、16またはそれ
以上のポートを持つインターリーブ・キャッシュ・メモ
リの使用を最適化するようプログラムをコンパイルする
方法を提供することである。
【0017】
【課題を解決するための手段】本発明は、VLIWコン
ピュータによって要求される複数のロード操作等、複数
の同時メモリ・アクセスに対応するキャッシュ・メモリ
を提供する。
【0018】本発明はまた、疑似マルチポート・キャッ
シュ・メモリは論理的ビルディング・ブロックから形成
されるので、配線性、性能、電流密度及びノイズ耐性の
観点から、コストをかけずに真のマルチポートのキャッ
シュ・メモリの複数の同時メモリ・アクセスに対応する
キャッシュ・メモリを提供する。その結果、疑似マルチ
ポート・キャッシュ・メモリは、真のマルチポート・キ
ャッシュ・メモリの、技術面或いは製造面の複雑さでは
なく機能性を持つ。
【0019】真のマルチポート・メモリの問題点、例え
ば配線性や電流密度等が解決される、つまり本発明は、
論理的ビルディング・ブロックから形成され、前記の問
題が生じない、疑似8、16またはそれ以上のポートを
持つインターリーブ・メモリを提供する。ある実施例で
論理的ビルディング・ブロックには、書込みポート1
つ、読取りポート1つ、及び専用行アドレス・バスを持
つ。他の実施例では、論理ブロックに、専用読取りアド
レス・バスに動作可能に接続された書込みポート1つと
読取りポート1つの第1セット、及びもう1つの専用読
取りアドレス・バスに動作可能に接続された書込みポー
トと読取りポートの第2セットがある。
【0020】本発明の目的はまた、複数のデータ・ユニ
ットを格納する疑似マルチポートのインターリーブ・キ
ャッシュ・メモリを提供することにより満足される。こ
のメモリは第1論理部と第2論理部に分けられる。各論
理部は複数のデータ・ユニットを格納する。各論理部は
M個のバンクにインターリーブされる(M≧2)。各バ
ンクは、少なくとも第1書込み/制御ポート、及び少な
くとも第1読取りポートを含む。各バンクに書込みポー
トと読取りポートの1ペア当たり専用行アドレス・バス
が1つある。各論理部の第1書込み/制御ポートは、第
1書込み/制御バスに動作可能に接続され、各論理部の
第2書込み/制御ポートは、第2書込み/制御バスに動
作可能に接続される。これにより第1書込み/制御バス
での書込み動作は、第2書込み/制御バスでの書込み操
作から独立する。
【0021】本発明の他の適用範囲は、次の説明から明
らかになる。ただし、詳細な説明や具体例は、本発明の
好適な実施例を示すものであるが、説明の便宜上示して
いるだけであることは理解されたい。本発明の主旨と範
囲から逸脱しない様々な変形例は、当業者には、この詳
細な説明から明らかになるからである。
【0022】
【発明の実施の形態】物理的、つまり真の8以上のポー
トを持つ高速キャッシュ・アレイは、現在は非実用的な
ので、本発明の実施例はビルディング・ブロック法を採
用する。この方法では複数の実用的物理ビルディング・
ブロック、好適には最大のブロック1つにより、疑似
8、16またはそれ以上のポートを持つインターリーブ
・キャッシュ・メモリが論理的に形成される。
【0023】図2、図3は、本発明のキャッシュ・メモ
リの第1の好適な実施例のブロック図を示す。図2、図
3のキャッシュ・メモリ200は、好適には純粋なデー
タ・キャッシュであるが、命令とデータの混合キャッシ
ュでもよく、図1のL1キャッシュ112に代えるため
のものである。L1キャッシュ・メモリ200は、第1
論理部A(アイテム202)、第2論理部B(アイテム
204)、8×8クロスバー・スイッチA206、及び
8×8クロスバー・スイッチB208を含む。
【0024】論理部202、204はそれぞれ、例えば
8つのバンクまたはビルディング・ブロック(バンク0
乃至バンク7)に分けられる。bankjはそれぞれ書
込みポートWPjと読取りポートRPjを含む。書込みポ
ートWPjは、8バイト幅の書込みラインWLjに接続さ
れる。
【0025】クロスバー・スイッチ206、208はそ
れぞれ8つの入力ポート、IP0乃至IP7、及び8つ
の出力ポートOP0乃至OP7を持つ。クロスバー・ス
イッチ202の出力ポートはそれぞれ書込みライン、R
LA0乃至RLA7に接続される。同様にクロスバー・
スイッチ208の出力ポートはそれぞれ読取りラインR
LB0乃至RLB7に接続される。アドレス・ラインR
LA0乃至RLA7及びRLB0乃至RLB7はそれぞ
れ図1のレジスタ・ファイル110に接続される。
【0026】クロスバー・スイッチ206の入力ポート
は論理部202の読取りポートに接続される。同様にク
ロスバー・スイッチ208の入力ポートは論理部204
の読取りポートに接続される。
【0027】書込みラインWL0乃至WL7、論理部の
読取りポートをクロスバー・スイッチ入力ポートに接続
するバス、並びに読取りラインRLA0乃至RLA7及
びRLB0乃至RLB7はそれぞれ、例えば8バイト幅
であり、8バイトのデータはダブルワードを表す。
【0028】図4は、8、16またはそれ以上のポート
を持ちインターリーブされる本発明のキャッシュ・メモ
リにデータを格納する有効アドレスを生成する方法を実
現する好適な構造のブロック図を示す。基底レジスタ3
02は加算器306の1入力に接続される。命令レジス
タ304の変位フィールドは加算器306のもう1つの
入力に接続される。加算器306の出力は3−8デコー
ダ308に接続される。デコーダ308の出力ラインは
バンク・セレクト・ラインBS0乃至BS7として用い
られる。
【0029】図5、図6は、本発明のキャッシュ・メモ
リの第2実施例を示す。これは図2、図3の好適な実施
例に代わるものである。格納デバイス400は8つのバ
ンク、バンク0乃至バンク7を持つものとして示してあ
る。各バンクは2ポートの論理ビルディング・ブロック
であり、2つの論理部AとBを持つ。bankjのポー
トAには書込みポートA−WPjと読取りポートA−R
Pjがあり、専用読取りアドレス・バスRA(A)jを持
つ。同様にbankjのポートBは書込みポートB−W
Pjと読取りポートB−RPj、及び専用読取りアドレス
・バスRA(B)jを持つ。書込みポートA−WPjとB
−WPjはそれぞれ共に書込みラインWLjに接続され
る。言い換えるとバンク0乃至バンク7のそれぞれにつ
いて書込みラインWL0乃至WL7がある。
【0030】図2、図3のように、8×8のクロスバー
・スイッチ206と8×8のクロスバー・スイッチ20
8があり、クロスバー・スイッチ206の入力は格納構
造400の論理部の読取りポートに接続され、クロスバ
ー・スイッチ208の入力ポートは論理部Bの読取りポ
ートに接続される。
【0031】また図2、図3のように、書込みラインW
L0乃至WL7、読取りラインRLA0乃至RLA7、
及びRLB0乃至RLB7、並びに格納構造400の読
取りポートをクロスバー・スイッチ206、208の入
力ポートに接続するラインは全て8バイト幅である。
【0032】図7は、図2、図3に示した第1実施例に
追加するオプションのブロック図を示す。図2、図3に
示すように、格納デバイスは200、204の2つあ
り、それぞれバンク0乃至バンク7を持つ。各バンクは
更に4つのクオドラントQ0乃至Q3に分けられる。ク
オドラントはそれぞれ、図1のL2メモリ・レベル11
4から8バイト幅のデータ・ラインに接続される。例え
ばバンク0で、クオドラントQ0はL2再ロード・ライ
ンL2R0に接続され、Q1はL2R1に接続され、Q
2はL2R2に接続され、Q3はL2R3に接続され
る。同様に、例えばバンク7でQ0はL2再ロード・ラ
インL2R28に接続され、Q1はL2R29に接続さ
れ、Q2はL2R30に接続され、Q3はL2R31に
接続される。
【0033】図2、図3を参照する。ここで論理部A、
Bの対応するポートの書込みラインは連結され、図5、
図6のL2再ロード・ラインは例えばデータ構造204
のバンク0でQ0はL2R0にも接続され、Q1はL2
R1にも接続され、Q2はL2R2にも接続され、Q3
はL2R3にも接続されるように、連結される。図7で
は簡単のため、L2再ロード・ラインとほかのバンク/
クオドラントの間の接続は省略されている。
【0034】各バンクの4つのクオドラントはまた、そ
れぞれORゲートに接続される。例えばORゲート50
0は格納構造200のバンク0のクオドラント0乃至3
に接続される。ORゲート502は格納構造200のバ
ンク7のクオドラントQ0乃至Q3のそれぞれに接続さ
れる。ORゲート504はデータ構造204のバンク0
のクオドラントQ0乃至Q3のそれぞれに接続され、O
Rゲート506はバンク7のクオドラントQ1乃至Q3
のそれぞれに接続される。ORゲート500のそれぞれ
は図1のレジスタ・ファイル110に接続される。L2
再ロード・ラインと同様に、クオドラントをORゲート
に接続する各ラインは8バイト幅である。L2再ロード
・ライン0乃至31は、図1のL2メモリ・レベル11
4と図2、図3の書込みラインWL0乃至WL7の接続
に代わる。ここでも簡単のため図7ではORゲートの全
ては示していない。
【0035】図8は、第1実施例に追加する好適なバッ
ファリング・オプションに関係する構造のブロック図で
ある。図8では、簡単のため論理部の1つの一部、部分
Aのbankjしか示していない。サイクル・スティー
ル・ロジック600(後述)は読取りアドレス・ライン
RA(A)jでアドレス信号を受信する。
【0036】格納命令("ストア・オプ")・バッファ
が、bankjに直列に接続されたものとして示してあ
る。つまり書込みラインWjはストア・オプ・バッファ
606にフィードするものとして示してある。ストア・
オプ・バッファ606はストア・オプ・バッファ604
に、ストア・オプ・バッファ604はストア・オプ・バ
ッファ602に、ストア・オプ・バッファ602はba
nkjの書込みポートWPjにフィードする。
【0037】サイクル・スティール・ロジック600は
制御信号を信号ライン608を介してストア・オプ・バ
ッファ602、604及び606のそれぞれに送る。ま
たアドレス比較機能ロジック610が示してある。これ
は読取りアドレス・ラインRA(A)jで読取りアドレ
ス信号を、また信号ライン612乃至616を介してス
トア・オプ・バッファ602乃至606それぞれから、
バッファされた格納命令のターゲットとなっている場所
のアドレスを受信する。アドレス比較機能ロジック61
0(後述)は信号ライン618を介してフェッチ/ロー
ド中断制御信号を処理する。
【0038】図9は、本発明のキャッシュ・メモリのバ
ッファリングに関する側面について詳しく示したブロッ
ク図である。図9には、"bankj"と呼ばれるキャッ
シュ・メモリ200または400の代表的バンク702
が示してある。同様にbankjつまりアイテム702
に関連する3つの代表的ストア・オプ・バッファはアイ
テム704A、704B、及び704Cである。
【0039】図9で、固定小数点プロセッサ902は双
方向16バイトのレジスタ間データ・バス906により
浮動小数点プロセッサ904に接続される。浮動小数点
プロセッサ904は32バイト幅の書込みバス932に
よりストア・オプ・バッファ704Cに接続される。
【0040】図9のbankjは複数の8バイト・ダブ
ルワードを格納できる。更にこれはbankjを固定小
数点プロセッサ902と浮動小数点プロセッサ904
に、ライン920j、セレクタ918を介して、更にそ
れぞれライン922、924を介して接続する読取りポ
ートを持つ。セレクタ918は、例えば図2、図3また
は図5、図6のクロスバー・スイッチ206、208の
1つにもなる。
【0041】図9の浮動小数点プロセッサ904は、3
2バイト幅の書込みアドレス・バス932を介してスト
ア・オプ・バッファ704Cに接続される。ストア・オ
プ・バッファ704Cは32バイト幅のバス705Cによ
りストア・オプ・バッファ704Bに接続される。スト
ア・オプ・バッファ704Bは32バイト幅のバス70
5Bによってストア・オプ・バッファ704Aに接続され
る。ストア・オプ・バッファ704Aは32バイト幅の
バス705Aによってbankj702に接続される。
【0042】図9のストア・オプ・バッファ704Cは
またバッファバイパス・バス720によってbankj
702に直接接続される。同様にストア・オプ・バッフ
ァ704Bはまたバッファバイパス・バス722によっ
てbankj702に直接接続される。
【0043】図9はまたサイクル・スティール・ロジッ
ク706を含む。ロジック706は、双方向バス710
によって固定小数点プロセッサ902に、また双方向バ
ス712によって浮動小数点プロセッサ904に接続さ
れる。サイクル・スティール・ロジック706はまた制
御信号をストア・オプ・バッファ704A、704B、7
04Cそれぞれに、それぞれ信号ライン714、71
6、718によって送る。
【0044】図9はまたアドレス比較ロジック708を
含む。ロジック708はアドレス信号を受信する。アド
レス信号の送信元は固定小数点プロセッサ902とバス
710、浮動小数点プロセッサ904とバス712、ス
トア・オプ・バッファ704Aと信号ライン728、ス
トア・オプ・バッファ704Bと信号ライン726、及
びストア・オプ・バッファ704↓Cと信号ライン72
4である。アドレス比較ロジック708は制御信号をス
トア・オプ・バッファ704A、704B、及び704C
に、それぞれ信号ライン725、727、729により
送る。アドレス比較ロジック708はまた制御信号を固
定小数点プロセッサ902に信号ライン730を介し
て、また浮動小数点プロセッサ904に、信号ライン7
32を介して送る。
【0045】バッファバイパス・バス720、722の
代用として、図9にバンクバイパス・バス734、73
6、738が示してある(破線)。バンクバイパス・バ
ス734はストア・オプ・バッファ704Cを固定小数
点プロセッサ902、また浮動小数点プロセッサ904
に直接接続する。バンクバイパス・バス736はストア
・オプ・バッファ704Bを固定小数点プロセッサ90
2と浮動小数点プロセッサ904の両方に直接接続す
る。同様にバンクバイパス・バス738はストア・オプ
・バッファ704Aをプロセッサ902、904に直接
接続する。
【0046】図10は、プロセッサ902、904のい
ずれかにより発行される格納命令800のフィールドを
示す。格納命令800は、命令フィールド802、実ア
ドレス・フィールド804、有効ビット806、排他ビ
ット808、及びオペランド・フィールド810を含
む。
【0047】図2、図3の好適な実施例の動作について
説明する。論理部Aつまり格納デバイス202の各バン
クの書込みポートは、論理部B、つまり格納デバイス2
04の対応するバンクにある書込みポートに接続される
ので、図2、図3のキャッシュ・メモリ200は8つの
8バイト格納操作を同時に行える。対称的に、キャッシ
ュ・メモリ200は独立した16の読取りポート、具体
的には論理部A(アイテム202)の読取りポートRP
0乃至RP7及び論理部B(アイテム204)の読取り
ポートRP0乃至RP7を持ち、16の8バイト読取り
操作を同時に行える。
【0048】論理部Aつまりアイテム206のクロスバ
ー・スイッチにより、書込みポートRP0乃至RP7の
いずれも、書込みラインRLA0乃至RLA7のいずれ
かに接続できる。例えばアイテム202の書込みポート
RP0をアイテム206の読取りラインRLA2に、読
取りポートRP1を読取りラインRLA7に接続するこ
とができる。残りの読取りポートRP2乃至RP7も同
様に、任意の形で残りの読取りラインRLA0乃至RL
A1及びRLA3乃至RLA6に接続できる。このよう
な任意の相互接続は、1つのメモリ・アクセス・サイク
ル内で全て可能である。
【0049】キャッシュ・メモリ200は、2つの論理
部AとBに分けられるかまたはインターリーブされる。
コンパイラはユーザによって書かれたプログラムを、き
めの細かい並列性を活用することによって、VLIWコ
ンピュータ等の並列プロセッサによって実行されるプロ
グラムに変換する。コンパイラは同じバンクへの同時ラ
ンダム・ロード、つまり非シーケンシャルで無関係のロ
ードの回数を制限する基準になる(2を超えない)。2
つの論理部を用意することによって、同じバンクに対す
る1サイクルでの2回のロードの問題が解決される。ロ
ード操作の1つは論理部Aのbankjで、もう1つは
論理部Bのbankjで起こるからである。例えばVL
IWの偶数のパーセルを第1論理ポートからロードで
き、奇数のパーセルを第2論理ポートからロードでき
る。
【0050】本発明は、コンパイラに依存して同じバン
クに対する同じサイクルのロードの回数を制限すること
は、使用できるアドレス指定の種類を制限するというこ
とを認識している。図4はこのような認識を反映した実
施例を示す。スーパースカラ・プロセッサのほとんどは
少なくとも2種類のアドレス指定をサポートする。1)
X型またはX形式のアドレス指定と、2)基底プラス変
位型またはD形式のアドレス指定である。X型アドレス
指定の場合、アドレスは2つのレジスタの内容を加算す
ることによって形成される。しかしこれはコンパイラに
関しては問題がある。
【0051】コンパイラはレジスタの内容を確認できな
い。これはコンパイル時には未知の変数だからである。
逆に基底プラス変位型アドレス指定では、変位はオペラ
ンドとして、コンパイラによって並列化されているプロ
グラムの命令に含まれるので既知である。しかし基底レ
ジスタの内容は、技術的に不定の変数である。
【0052】本発明の、図4に示したアドレス・ジェネ
レータはまた、基底レジスタの内容は基底レジスタの特
定のビット(例えば58乃至63)について値0を持つ
可能性が高いという認識を反映している。例えば一般の
RISC(Reduced Instruction Set Computing)コー
ドの場合、最もよく参照されるオブジェクト、つまりメ
モリの集まりの大半はアライメントが上位で、通常は3
2バイト以上の境界にある。上位アライメントのオブジ
ェクトは、キャッシュ・ページやキャッシュ・ラインの
先頭等、決まった境界から始まる。コンパイラはこの状
況を更に改良するためレジスタを強制的に整列させる。
そのため、ある値を基底レジスタのアドレスに加える。
これにより、後の補正は与えられたその値を変位レジス
タの後続の値から差し引く形になる。
【0053】図4のアドレス・ジェネレータは、基底レ
ジスタのビット58乃至63は0であるとの仮定をもと
に変位型またはD型のアドレスを生成する。これにより
コンパイラは同じバンクに対する同じサイクルのランダ
ム・ロードの回数を最大2に制限することができる。1
バンク1サイクルに2回以上のランダム・ロードを扱う
必要がない場合、サイクル・メモリは、2つの論理部だ
けから形成することができ、マルチポートのメモリと機
能的に同等になる。
【0054】本発明のキャッシュ・メモリに関連したプ
ロセッサを、基底プラス変位型のアドレス指定を使用す
るよう制限することで、また基底レジスタのビット58
乃至63がほぼ常に0であることを認識することによっ
て、コンパイラはキャッシュ・メモリに対する格納命令
のアドレスを、コンパイル時にかなり高い確率で確認す
ることができる。言い換えると、変位レジスタのビット
10乃至12は、格納命令の対象であるキャッシュ・メ
モリ内のバンクのかなり正確な予報値になる。
【0055】図4の加算器306は、常に0である確率
がかなり高い基底レジスタ302のビット58乃至6
3、及び変位レジスタ304のビット10乃至12を操
作する。有効アドレスを生成する目的からは、加算器3
06による65ビットの合計の出力のうちビット58乃
至60だけが必要である。そのため図4の3−8デコー
ダは、加算器306によって出力された合計のうちビッ
ト58乃至60のみ操作する。デコーダ308の8つの
出力ラインは、バンク・セレクト・ラインBS0乃至B
S7として用いられる。
【0056】図5、図6等の2重ポートのビルディング
・ブロックに対する図2、図3等の単一ポートのビルデ
ィング・ブロックの相対的な利点は次のようである。キ
ャッシュ・アレイが小さい場合は、セルに対してデータ
書込みライン1つ、セルからデータ読取りライン1つを
実現することが自然である。セルに別々の読取りノード
と書込みノードがあるからである、単一ポート・セルで
は、データ・バスを読取りノードか書込みノードいずれ
かに接続するため別にスイッチング回路が必要になる。
アレイ・レベルではしかし、セルに入るワイヤ1つとセ
ルから出るワイヤ1つが、単一ワイヤとその関連のスイ
ッチング回路よりわずかに多い空間を消費するが、2つ
のワイヤはわずかに高速である。読取りと書込みを切り
替えるときに構成を変更する必要がないからである。
【0057】先に述べた通り、8つのバンクを使用する
のは一例である。例えば4バンクまたは16バンク、ま
たはそれ以上も使用できる。16バンクが用いられる場
合、加算器306は、変位レジスタ304から3ビット
ではなく4ビットを操作する。同様にデコーダ308
は、加算器306の合計から選択された3ビットではな
く4ビットを操作する3乃至16デコーダになる。
【0058】メモリ階層技術では周知の通り、図1のL
2メモリ・レベル114は、1回のメモリ・アクセスで
L1キャッシュ・メモリのブロックとも呼ばれるライン
全体の書込みが同時に行える。この機能は、図1のL2
メモリ・レベル114に接続されたキャッシュ・メモリ
200の論理部A、Bそれぞれの書込みポートWP0乃
至WP7に反映される。
【0059】ここで図5、図6のキャッシュ・メモリの
第2実施例の動作について説明する。論理部A、Bは組
み合わせられ、2ポートのビルディング・ブロックまた
はバンクのセットで形成される1つの格納デバイス40
2にされる。インターリーブされるバンク0乃至7には
論理部Aと論理部Bがあり、それぞれ読取りポートと書
込みポート、専用読取りアドレス・バス、及びこれに接
続される専用書込みアドレス・バスを持つ。動作は図
2、図3の実施例と似ているが、論理部Aと論理部Bの
対応する部分へのアクセスは、結果的に、図2、図3の
ような別々のビルディング・ブロックではなく同じ物理
ビルディング・ブロックへのアクセスになる。
【0060】図7に示した第1実施例に追加するオプシ
ョンの動作についてここで説明する。これら追加される
側面は第2実施例に等しく適用可能である。各バンクの
各クオドラントに接続されたL2再ロード・ラインL2
R0乃至L2R31により、図1のL2メモリ・レベル
114はキャッシュ・メモリ全体、つまり格納デバイス
202、204の両方を1回のメモリ・アクセスの時間
に同時に再ロードすることができる。これはL1キャッ
シュとL2メモリ・レベルの間の帯域幅を大きく改良す
る。繰り返すがL2メモリ・レベル114はL1キャッ
シュ・メモリ200に256バイトを同時に送信でき
る。
【0061】各バンクに関連するORゲート500は、
クオドラントQ0乃至Q3のそれぞれに接続された4ウ
ェイ・セレクタの代わりに用いられる。サブレベルまた
はクオドラントは一度に1つしか読取られないので、ク
オドラントの出力をORゲートと組み合わせるだけでよ
い。これには、他の場合に用いられる4ウェイ・スイッ
チより高速になるという利点がある。
【0062】ここで図8に示した実施例に追加するオプ
ションの動作について説明する。これら追加される側面
は、図5、図6に示した実施例に等しく適用できる。
【0063】16以上のインターリーブの場合、実用的
な結果を得るためには格納命令のバッファリングを行う
必要がある。また格納命令を、元のプログラムにより示
されるように同じ順序で実行する必要のあるオペレーテ
ィング・システムの場合、格納命令のバッファリングは
極めて重要である。
【0064】本発明のキャッシュ・メモリの論理部、例
えば図2、図3または図5、図6のAとB、いずれかま
たは両方に対してメモリ・アクセスの1サイクルで8回
のロード操作が行われるインスタンスがある。このよう
な状況では、そのサイクルに対して格納命令も予定され
ている場合は競合が起こる。競合する格納命令はバッフ
ァに"棚上げ"される。
【0065】ロード操作は格納操作より優先される。一
般にロード命令は2:1の比率で格納命令を上回る。図
8の追加されるオプションでは、格納命令の対象である
バンクがロード操作を介してアクセスされないサイクル
までは、キャッシュ・メモリ、例えば図2、図3の実施
例200が格納命令をバッファすることができる。
【0066】図8のストア・オプ・バッファ602、6
04、606はそれぞれ、格納命令が向けられるバンク
内の場所のID及び格納される関連データを含む格納命
令を保持する。
【0067】図8のサイクル・スティール・ロジック6
00は、次のサイクルでロード操作によってアクセスさ
れないバンクを決定する。サイクル・スティール・ロジ
ック600の比較器(図示なし)は、読取りアドレス・
ラインRA(A)jの読取りアドレスの3つのバンク・
インターリーブ・ビットから、次のサイクルの間にバン
クに対するロード操作があるかどうか確認する。ロード
操作が次のサイクルで行われない場合、サイクル・ステ
ィール・ロジック600により、ストア・オプ・バッフ
ァの内容がバンクに対して開放され、次のサイクルで格
納命令が実行できるようになる。同時にサイクル・ステ
ィール・ロジック600はまた制御信号をストア・オプ
・バッファ604、606に送る。これにより、後の実
行サイクルに備えて、ストア・オプ・バッファ606、
606の内容(ある場合)がそれぞれ、ストア・オプ・
バッファ602、604に転送される。
【0068】例えば図8の3つのストア・オプ・バッフ
ァは、ルーチン・ベースで累積できる格納命令の個数に
対して充分なものとして開示されている。ストア・オプ
・バッファ数は、アプリケーションに応じて増減するか
または、図2、図3及び図5、図6に示すように完全に
なくしてしまうこともできる。
【0069】1つのサイクル・スティール・ロジック6
00と3つのバッファ602、604、606のセット
が、本発明のキャッシュ・メモリの各バンクに対して用
意される。
【0070】図8はまたアドレス比較機能ロジック61
0を示す。格納命令がバッファされるとき、ストア・オ
プ・バッファの1つにバッファされているためにキャッ
シュ・メモリのバンクにまだ書込まれていないデータに
対してロード命令がアクセスしようとする可能性があ
る。このような状況を検出するため、アドレス比較機能
ロジック610の比較器(図示なし)が、全てのバンク
の全てのストア・オプ・バッファの対象アドレス全体
を、各サイクルの各ロード操作の対象になっているアド
レスと比較する。ストア・オプ・バッファが現在空いて
いる場合、そのストア・オプ・バッファのアドレス比較
は、スプリアスな(偽の)結果を防止するため、ロジッ
ク610によって有効にはならない。
【0071】一致があれば、つまりロード命令の対象で
あるアドレスが、バッファの1つの格納命令の対象であ
るアドレスと同じ場合、アドレス比較機能ロジック61
0は、対応する格納操作がストア・オプ・バッファのキ
ューから除外されるまで、ロード操作の実行を中断す
る。全ての比較の出力が、例えばORゲート(図示な
し)と組み合わせられ、生の中断信号が生成される。言
い換えると、ロード操作は中断されるか、または、一致
する格納命令がバッファから転送されてバンクに対して
実行されるに充分な実行サイクルが経過するまでは、実
行が防止される。
【0072】バッファリング操作について図9を参照し
て詳しく説明する。ここでも図9は、代表的なバンク、
bankj702とこれに関連する代表的なストア・オ
プ・バッファ704A−704Cを示す。後者は、例えば
論理部AまたはB、図2、図の202または204のバ
ンク(バンク0乃至バンク7)のいずれか1つに対応す
る。図9の代表例を図5、図6の代表例に適用するのに
必要な変更の内容は、当業者には容易に理解されよう。
【0073】図9の固定小数点プロセッサ902または
浮動小数点プロセッサ904のいずれかによって発行さ
れる格納命令、例えば図10に示したものは、書込みバ
ス932を通して第3ストア・オプ・バッファ704C
に転送される。格納命令が第2ストア・オプ・バッファ
704Bに保持されていない場合、バッファ704Cの格
納命令がバッファ704Bに転送される。同様に第1ス
トア・オプ・バッファ704Aに格納命令が保持されて
いない場合、格納命令は第2バッファ704Bから第1
バッファ704Aに転送される。
【0074】図9のサイクル・スティール・ロジック7
06は、プロセッサ902、904によって発行された
ロード/フェッチ命令を開始する。サイクル・スティー
ル・ロジック706の比較器(図示なし)は、例えばラ
イン710、712の読取りアドレスの2つのバンク・
インターリーブ・ビットから、次のサイクルの間にバン
ク702にロード操作があるかどうかを判断する。次の
マシン・サイクルで、bankj702がプロセッサ9
02、904いずれかによってアクセスされない場合、
サイクル・スティール・ロジックは通信ライン741を
通して第1バッファ704Aに制御信号を送る。これに
よりバッファ704Aに保持された格納命令は、次の命
令サイクルの間にbankj702の書込み操作によっ
て改良できる。比較器の出力は、例えばORゲート(図
示なし)によって組み合わせられ、バッファに送られる
制御信号の一部を構成する生信号が形成される。サイク
ル・スティール・ロジック706からの制御信号には、
ある格納命令アドレスに対して、あるサイクルの間に処
理されたバンク書込みクロック・イネーブル信号が含ま
れる。
【0075】サイクル・スティール・ロジック706は
また、バッファ704B、704Cに制御信号を送る。こ
れによりそれぞれが保持しうる格納命令が、次の格納バ
ッファに転送される。つまりバッファ704Cの格納命
令はバッファ704Bに、バッファ704Bの格納命令は
バッファ704Aに転送される。
【0076】好適な実施例は、どの時間についても累積
される可能性のある格納命令は3つを超えないという仮
定を反映している。従ってストア・オプ・バッファは3
つしか示されていない。格納命令バッファの適切な個数
は、アプリケーションに応じて変わる。そうした変動は
当業者には理解されよう。例えばプロセッサが浮動小数
点プロセッサであれば、大きい格納操作のバーストと大
きいロード操作のバーストが予想される。ストア・オプ
・バッファ数は、その場合は大きくする必要がある。
【0077】通常のパイプ停止、例えばキャッシュ・ミ
スでは、5サイクルから10サイクルの遅れが出る。こ
れは、キャッシュ・コントローラ(図示なし)の制御下
でストア・オプ・バッファがキャッシュ・バンクに除外
されるもう1つの機会である。
【0078】レベルL1キャッシュ・メモリ200また
は400とプロセッサ902、904のの好適な構成
は、プロセッサ902、904それぞれにアドレス・ジ
ェネレータは1つしか必要ないという仮定を反映してい
る。これにより各プロセッサは1つのバンクから一度に
データのロード/フェッチしか行わない。データ・ロー
ド・アドレス・ジェネレータ数は、アプリケーションに
よって変わり、そうした変動は当業者には理解されよ
う。
【0079】通常、格納命令のバンク内順序だけでな
く、バンク間の格納命令順序も保持される。排他的キャ
ッシュ・ラインを用意すると、バンク間順序を無視する
ことができる。キャッシュ・アドレスの排他ビットはキ
ャッシュ・ディレクトリ(図示なし)によって用いられ
る。これはセットされると、このキャッシュに関係した
プロセッサが、このキャッシュ・ラインを持つ唯一のプ
ロセッサであることが示される。普通、キャッシュ・ラ
インのほかのコピーがあるので、格納命令は、プログラ
ムによってセットされた順序で完了する。排他的キャッ
シュ・ラインを用意することで、このキャッシュに対す
る格納命令を任意の順序で除外することができる。例え
ば3つのストア・オプ・バッファがすでに一杯で、それ
でも他の格納命令が送り出された場合、最近の格納命令
は、すでにストア・オプ・バッファにあるものをバイパ
スするよう制御できる。
【0080】排他的キャッシュ・ラインに対する格納操
作のほかに、コンパイラとキャッシュのハードウェアは
また、既知の非共有格納デバイス(つまりスタック、ヒ
ープ等)も順不同に実行できることを認識する。この状
況では別にオプコード・ビットが必要である。
【0081】プロセッサ902、904の1つが、先に
格納命令によってデータが書込まれる予定だったban
kj702の場所を対象にしたロード/フェッチ命令を
発行できる状況が起こり得るが、その格納命令は、スト
ア・オプ・バッファ704A−704Cの1つに保持され
ている。アドレス比較ロジック708の比較器(図示な
し)は、各ロード/フェッチ命令のアドレスを、バッフ
ァ704A−704Cの格納命令の対象であるフル・アド
レスと比較する。
【0082】一致がある、つまりロード/フェッチ命令
の対象になる場所が、バッファされた格納命令の対象に
なる場所と同じである場合、アドレス比較ロジック70
8は、bankj702に対する格納命令が完了するま
で、プロセッサによるロード/フェッチ命令の実行を中
断する。アドレス比較ロジック708の比較器の出力
は、例えばORゲート(図示なし)により組み合わせら
れ、この生の中断信号が生成される。ストア・オプ・バ
ッファが現在空いている場合、そのストア・オプ・バッ
ファのアドレス比較は、スプリアスな結果を防止するた
めに、ロジック708により有効にならない。繰り返す
がアドレス比較ロジック708はこのような比較を、全
てのストア・オプ・バッファについて行い、全てのスト
ア・オプ・バッファを制御する。
【0083】アドレス比較ロジック708によって格納
命令をバッファ704A−704Cから除外/パーコレー
トする方法が3つある。
【0084】好適な除外/パーコレーション、つまりバ
ッファのバイパスの方法は、速度と配線性を考慮した妥
協案である。ロード命令に一致する格納命令が、例えば
バッファ704C内に見つかった場合、アドレス比較ロ
ジック708によって、バッファ704Bを、そして7
04Aを通して間接的にではなく、バッファバイパス・
バス720を介してbankj702に格納命令が直接
転送される。同様にバッファ704Bに一致する格納命
令が見つかった場合、アドレス比較ロジック708によ
って、格納命令が、バッファ704Aを通して間接的に
ではなく、バッファバイパス・バス722を介してba
nkj702に直接転送される。
【0085】このバッファ・バイパス法に代わるものと
して、アドレス比較ロジック708は、ただ、一致する
格納命令の、前の全ての格納命令が実行される、つまり
bankj702によって格納されるようにする。しか
しこの方法では、バッファ704A、704Bの格納命令
を実行するのに必要な時間と等しい時間はロード操作が
中断される。これはバッファ704Cで一致する格納命
令が見つかり、バッファ704A、704Bの格納命令が
バイパスされる状況による。
【0086】配線の問題があるため実現は比較的難しい
が、バッファ・バイパスより高速な方法として、バンク
・バイパス法と呼ぶことのできる方法がある。これは、
バッファバイパス・バス720、722の代わりに用い
られる図4の破線のバンクバイパス・バス734、73
6、738により示される方法である。ただしバンクバ
イパス・バスとバッファバイパス・バスは必ずしも相互
に排他的ではない。つまり共に使用できる。一致する格
納命令が例えば第3バッファ704Cで見つかった場
合、アドレス比較ロジックは、ロード命令を発行したプ
ロセッサにデータをバッファ704Bまたは704Aか
ら、それぞれバンクバイパス・バス736または738
を介して直接ロードするよう指示する。
【0087】アドレス比較ロジック708は、バッファ
704A−704Cの格納命令をロード命令と比較すると
き、バッファ内に格納命令があることを図10の有効ビ
ット806が論理1にセットされているかどうかで認識
する。格納命令が、例えばバッファ704Cからバッフ
ァ704Bに転送されると、バッファ704Cの有効ビッ
ト位置806は論理0にセットされ、格納命令は保持さ
れていないことが示される。
【0088】他の実施例では、もう1つのプロセッサに
よるスヌーピングの可能性が考慮される。スヌーピング
が生じるのは、プロセッサが他のプロセッサのデータ・
キャッシュ("Dcache")ディレクトリを調べる。スヌー
ピング・プロセッサは、バッファされた格納命令によっ
てまだ更新されていないデータを探すことがある。アド
レス比較ロジックのもう1つのセットを追加して、スヌ
ープされるデータがバッファされている状況をはアクセ
スするか、または、単にスヌーピングの後にバッファを
自動的に除外することができるが後者の方法が望まし
い。スヌーピングと、結果として生じるバッファの除外
の頻度は、アドレス比較ロジックのセットを追加するコ
ストを上回るとは考えられないからである。
【0089】図9の動作の説明からわかるように、異な
るバンクの格納命令は、それらが発行された順序に関し
て非同期に、ロード/フェッチ命令によってバンクがア
クセスされないインスタンスの頻度に応じて実行され
る。同様に、バッファ・バイパス法とバンク・バイパス
法により、特定のバンクの格納命令を、それらが発行さ
れた順序とは非同期に実行することができる。
【0090】キャッシュ・ミスが生じる場合、またバン
クの1つに少なくとも1つのストア・オプ・バッファが
ある場合、アドレス比較ロジックは、L2レベル等、メ
モリ・システムの他の部分によって実行されるキャッシ
ュの再ロードを、格納命令全てがストア・オプ・バッフ
ァから除外されるまで中断する。このような除外では、
全ての格納命令が除外されるまで各格納命令が順に実行
される。ここで必要なサイクルは、多くても3サイクル
である。異なるバンクからの格納命令は同じサイクルで
並列に実行できるからである。
【0091】キャッシュ・メモリは、L2メモリ・レベ
ルによるL1キャッシュのライン/ブロック再ロードよ
りも前に、書戻し操作が行えるように、L2メモリ・レ
ベルに対してデータの変更があることを示すためダーテ
ィ・ビットを使用する機能を持つ等、これまでに知られ
ているキャッシュ・メモリの機能を実行できる。
【0092】繰り返すが本発明のキャッシュ・メモリ
は、純粋なデータ・キャッシュかまたは命令とデータの
組み合わせキャッシュとして使用できる。命令/データ
組み合わせキャッシュの場合、プロセッサはここから命
令をロードする、つまり"Iフェッチ"を実行する。この
ようなフェッチは、1つのバンクまたは8つの全てのバ
ンク等、長さが可変である。従って、Iフェッチはキャ
ッシュ・メモリにより、単なるもう1つのロードまたは
複数のロードとして処理される。サイクルをスティール
する機会は監視され、格納命令はバッファされる等であ
る。
【0093】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0094】(1)複数のデータ・ユニットを格納する
マルチポートのインターリーブ・キャッシュ・メモリで
あって、第1論理部と第2論理部に分けられたメモリを
含み、各論理部が複数のデータ・ユニットを格納し、M
≧2のとき、M個のバンクにインターリーブされるもの
であり、各バンクが、少なくとも第1書込み/制御ポー
トと、少なくとも第1読取りポートと、を含み、各バン
クが、書込みポートと読取りポートのペア当たり1つの
専用行アドレス・バスを持ち、M個のバンク書込みバス
であって、前記第1論理部のバンクの書込みポートと前
記第2論理部の対応するバンクの書込みポートのペアが
それぞれ、該M個のバンク書込みバスの1つに接続され
ることにより対応するバンクの書込みポートが同時に書
込まれるものと、を含み、各読取りポートは他から独立
している、キャッシュ・メモリ。 (2)各バンクに第2書込みポートと第2読取りポート
があって第2ペアを形成し、前記第1論理部は前記バン
クの前記第1書込みポートと第1読取りポートに対応
し、前記第2論理部は前記バンクの第2書込みポートと
第2読取りポートに対応することにより、前記第1論理
部が前記第2論理部とバンクを共有し、各バンクの1つ
の専用行アドレス・バスが前記第1書込みポートと第1
読取りポートのペアに関連付けられ、1つの専用行アド
レス・バスが前記第2書込みポートと第2読取りポート
のペアに関連付けられ、各バンクは2ポートの論理ビル
ディング・ブロックを表す、前記(1)記載のマルチポ
ート・メモリ。 (3)読取りポート当たりバンク読取りバスが1つの割
合であり、各バンクが第1バンク読取りバスと第2バン
ク読取りバスを持つ、複数のバンク読取りバスと、前記
バンク読取りバスと動作可能に接続され、Nがバンク読
取りデータ・バスの個数に等しく、N≧2のとき、N個
の出力ポートを持つ、Nウェイ・クロスバー・スイッチ
と、を含む、前記(2)記載のマルチポート・メモリ。 (4)前記マルチポート・メモリは16のポートを持
ち、M=8であることから、各論理部は8個の書込みポ
ートと8個の読取りポートを持つ、前記(2)記載のマ
ルチポート・メモリ。 (5)前記マルチポート・メモリは8ポートで、M=4
であるため、各論理部は4個の書込みポートと4個の読
取りポートを持つ、前記(2)記載のマルチポート・メ
モリ。 (6)前記データ・ユニットは8バイトであり、ダブル
ワードを表す、前記(1)記載のマルチポート・メモ
リ。 (7)各バンクに書込みポートが1つのみ、読取りポー
トが1つのみ、及び専用行アドレス・バスが1つのみで
あり、各バンクはシングル・ポートの論理ビルディング
・ブロックを表し、前記第1及び第2の論理部は前記バ
ンクのいずれも共有しない、前記(1)記載のマルチポ
ート・メモリ。 (8)前記マルチポート・メモリは16のポートを持
ち、M=8であることから、各論理部は8個の書込みポ
ートと8個の読取りポートを持つ、前記(7)記載のマ
ルチポート・メモリ。 (9)前記マルチポート・メモリは8ポートで、M=4
であるため、各論理部は4個の書込みポートと4個の読
取りポートを持つ、前記(7)記載のマルチポート・メ
モリ。 (10)バンク当たりバンク読取りバスが1つの割合の
複数のバンク読取りバスと、前記第1論理部の各バンク
読取りバスと動作可能に接続され、前記第1論理部のバ
ンク読取りデータ・バスの個数に等しいN個の出力ポー
トを持つ、第1Nウェイ・クロスバー・スイッチと、前
記第2論理部の各バンク読取りバスと動作可能に接続さ
れ、前記第2論理部のバンク読取りデータ・バスの個数
に等しいN個の出力ポートを持つ、第2Nウェイ・クロ
スバー・スイッチと、を含む、前記(7)記載のマルチ
ポート・メモリ。 (11)前記マルチポート・メモリは64Kバイトを保
持する、前記(7)記載のマルチポート・メモリ。 (12)前記マルチポート・メモリのアクセス時間は1
ナノ秒未満である、前記(1)記載のマルチポート・メ
モリ。 (13)前記第1書込み/制御バス及び前記第2書込み
/制御バスはそれぞれ、次に遅いレベルのメモリに動作
可能に接続され、前記第1書込み/制御バス及び前記第
2書込み/制御バスはそれぞれ、次に遅いレベルのメモ
リが前記キャッシュ・メモリの行全体を同時に再ロード
するのに充分なサイズである、前記(1)記載のマルチ
ポート・メモリ。 (14)各バンクは4つのクオドラントに分けられ、各
クオドラントはサイズが前記データ・ユニットに等し
く、前記マルチポート・メモリは、各バンクについて、
次に遅いレベルのメモリからの、該次に遅いレベルのメ
モリが前記マルチポート・メモリ全体を同時に再ロード
するのに充分なサイズの各クオドラントに対する、専用
クオドラント書込みバスを含む、前記(13)記載のマ
ルチポート・メモリ。 (15)前記マルチポート・メモリは、各バンクについ
て、サイズが前記データ・ユニットに等しいバンク出力
バスと、前記4つのクオドラント・バスの1つを前記バ
ンク出力バスに選択的に接続する4:1スイッチと、を
含む、前記(14)記載のマルチポート・メモリ。 (16)前記マルチポート・メモリは、各バンクの各論
理部について、前記書込みポートと前記第1書込み/制
御バスに動作可能に接続され、第1格納命令を前記バン
クに格納する、少なくとも第1ストア・オプ・バッファ
と、次のサイクルで前記バンクに対してロード操作が実
行されるという第1条件の発生を確認する次サイクル使
用判断回路と、前記条件が発生した場合、前記第1スト
ア・オプ・バッファの格納命令が前記次のサイクルで前
記バンクに対して実行されるようになる、サイクル・ス
ティール回路と、を含む、前記(1)記載のマルチポー
ト・メモリ。 (17)前記バンクのいずれかのバッファ内の格納命令
によってアドレス指定された位置が、前記次のサイクル
で前記マルチポート・キャッシュ・メモリに対して実行
されるロード命令のアドレスと同じという第2条件の発
生を確認するアドレス比較回路と、前記第2条件が発生
した場合、一致する格納命令が対応するバンクに対して
実行できるまで、一致するロード命令を中断する、一致
中断回路と、を含む、前記(16)記載のマルチポート
・メモリ。 (18)前記第1ストア・オプ・バッファと前記第1書
込み/制御バスの間に動作可能に接続され、第2格納命
令を前記バンクに格納する、第2ストア・オプ・バッフ
ァと、前記第2ストア・オプ・バッファと前記第1書込
み/制御バスの間に動作可能に接続され、第3格納命令
を前記バンクに格納する、第3ストア・オプ・バッファ
と、を含み、前記サイクル・スティール回路はまた、前
記第2及び第3のストア・オプ・バッファを制御して、
それらの内容をそれぞれ前記第1及び第2のストア・オ
プ・バッファに転送するパーコレーション信号を生成す
る、前記(16)記載のマルチポート・メモリ。 (19)前記マルチポート・キャッシュ・メモリは純粋
なデータ・キャッシュである、前記(1)記載のマルチ
ポート・メモリ。 (20)基底プラス変位型のアドレス指定により、M≧
2のときM個のバンクにインターリーブされ、複数のデ
ータ・ユニットを格納するマルチポート・キャッシュ・
メモリにデータを格納する有効アドレスを生成する有効
アドレス生成デバイスであって、変位レジスタと、基底
レジスタの内容が論理0であることを前もって推定する
前推定回路と、U≧2のとき、変位レジスタのUビット
の所定セットを受信し、M個のバンクの1つを、前記イ
ンターリーブされたマルチポート・キャッシュ・メモリ
のデータの有効アドレスとして識別するに充分なビット
数を持つ、Vビット数を処理するU:Vデコーダと、を
含む、デバイス。 (21)基底プラス変位型のアドレス指定により、M≧
2のときM個のバンクにインターリーブされ、複数のデ
ータ・ユニットを格納するマルチポート・キャッシュ・
メモリにデータを格納する有効アドレスを生成する方法
であって、基底レジスタの内容が論理0であることを前
もって推定するステップと、U≧2のとき、変位レジス
タのUビットの所定セットをもとに、M個のバンクの1
つの識別情報をデコードするステップと、前記インター
リーブされたマルチポート・キャッシュ・メモリのデー
タの有効アドレスとして前記識別情報を処理するステッ
プと、を含む、方法。 (22)前記ベース・レジスタの内容が0であることを
確認するステップを含む、前記(21)記載の方法。 (23)複数のバンクにインターリーブされ、複数のデ
ータ・ユニットを格納する、マルチポート・キャッシュ
・メモリの使用を最適化するようプログラムをコンパイ
ルする方法であって、前記キャッシュ・メモリの基底プ
ラス変位型のアドレス指定のみを可能にするステップ
と、ベース・レジスタについて、該ベース・レジスタの
所定グループのビットが論理0値に等しいかどうかの条
件を判断するステップと、前記条件が満たされた場合、
前記ベース・レジスタの内容を再位置合わせし、変位レ
ジスタの内容を調整するステップと、を含む、方法。
【図面の簡単な説明】
【図1】従来のVLIW(Very Long Instruction Wor
d)コンピュータとこれに関連するメモリ階層のブロッ
ク図である。
【図2】本発明のキャッシュ・メモリの第1の好適な実
施例のブロック図である。
【図3】本発明のキャッシュ・メモリの第1の好適な実
施例のブロック図である。
【図4】本発明のキャッシュ・メモリと共に用いられる
アドレス指定法に関係するハードウェアのブロック図で
ある。
【図5】本発明のキャッシュ・メモリの第2実施例を示
すブロック図である。
【図6】本発明のキャッシュ・メモリの第2実施例を示
すブロック図である。
【図7】第1実施例に追加するオプションのブロック図
である。
【図8】第1実施例に追加する、バッファリングに関す
る好適なオプションのブロック図である。
【図9】図8のバッファリング・オプションを詳しく示
すブロック図である。
【図10】本発明のキャッシュ・メモリのバッファリン
グ・オプションを使用し、プロセッサにより発行される
格納命令の構成を示す図である。
【符号の説明】 102 ロード/格納ユニット 104 浮動小数点(FP)加算ユニット 106 整数ALU 108 分岐ユニット 110 レジスタ・ファイル 112 キャッシュ 114 L2メモリ・レベル 116 L3メモリ・レベル 118 L4メモリ・レベル 200 キャッシュ・メモリ 202 第1論理部 204 第2論理部 206 8×8クロスバー・スイッチA 208 8×8クロスバー・スイッチB 302 基底レジスタ 304 命令レジスタ 306 加算器 308 デコーダ 400 格納デバイス 500、502、504、506 ORゲート 600、706 サイクル・スティール・ロジック 602、604、606 ストア・オプ・バッファ 608、618、724、726、728、730、7
32 信号ライン 610 アドレス比較機能ロジック 702 代表的ロジック 708 アドレス比較ロジック 710、712 双方向バス 720、722 バッファバイパス・バス 734、736 バンクバイパス・バス 800 格納命令 802 命令フィールド 804 実アドレス・フィールド 806 有効ビット 808 排他ビット 810 オペランド・フィールド 902 固定小数点プロセッサ 904 浮動小数点プロセッサ 906 データ・バス 918 セレクタ 932 書込みバス

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】複数のデータ・ユニットを格納するマルチ
    ポートのインターリーブ・キャッシュ・メモリであっ
    て、 第1論理部と第2論理部に分けられたメモリを含み、 各論理部が複数のデータ・ユニットを格納し、M≧2の
    とき、M個のバンクにインターリーブされるものであ
    り、 各バンクが、 少なくとも第1書込み/制御ポートと、 少なくとも第1読取りポートと、を含み、 各バンクが、書込みポートと読取りポートのペア当たり
    1つの専用行アドレス・バスを持ち、 M個のバンク書込みバスであって、前記第1論理部のバ
    ンクの書込みポートと前記第2論理部の対応するバンク
    の書込みポートのペアがそれぞれ、該M個のバンク書込
    みバスの1つに接続されることにより対応するバンクの
    書込みポートが同時に書込まれるものと、 を含み、各読取りポートは他から独立している、マルチ
    ポート・メモリ。
  2. 【請求項2】各バンクに第2書込みポートと第2読取り
    ポートがあって第2ペアを形成し、 前記第1論理部は前記バンクの前記第1書込みポートと
    第1読取りポートに対応し、前記第2論理部は前記バン
    クの第2書込みポートと第2読取りポートに対応するこ
    とにより、前記第1論理部が前記第2論理部とバンクを
    共有し、 各バンクの1つの専用行アドレス・バスが前記第1書込
    みポートと第1読取りポートのペアに関連付けられ、1
    つの専用行アドレス・バスが前記第2書込みポートと第
    2読取りポートのペアに関連付けられ、 各バンクは2ポートの論理ビルディング・ブロックを表
    す、 請求項1記載のマルチポート・メモリ。
  3. 【請求項3】読取りポート当たりバンク読取りバスが1
    つの割合であり、各バンクが第1バンク読取りバスと第
    2バンク読取りバスを持つ、複数のバンク読取りバス
    と、 前記バンク読取りバスと動作可能に接続され、Nがバン
    ク読取りデータ・バスの個数に等しく、N≧2のとき、
    N個の出力ポートを持つ、Nウェイ・クロスバー・スイ
    ッチと、 を含む、請求項2記載のマルチポート・メモリ。
  4. 【請求項4】前記マルチポート・メモリは16のポート
    を持ち、M=8であることから、各論理部は8個の書込
    みポートと8個の読取りポートを持つ、請求項2記載の
    マルチポート・メモリ。
  5. 【請求項5】前記マルチポート・メモリは8ポートで、
    M=4であるため、各論理部は4個の書込みポートと4
    個の読取りポートを持つ、請求項2記載のマルチポート
    ・メモリ。
  6. 【請求項6】前記データ・ユニットは8バイトであり、
    ダブルワードを表す、請求項1記載のマルチポート・メ
    モリ。
  7. 【請求項7】各バンクに書込みポートが1つのみ、読取
    りポートが1つのみ、及び専用行アドレス・バスが1つ
    のみであり、各バンクはシングル・ポートの論理ビルデ
    ィング・ブロックを表し、前記第1及び第2の論理部は
    前記バンクのいずれも共有しない、請求項1記載のマル
    チポート・メモリ。
  8. 【請求項8】前記マルチポート・メモリは16のポート
    を持ち、M=8であることから、各論理部は8個の書込
    みポートと8個の読取りポートを持つ、請求項7記載の
    マルチポート・メモリ。
  9. 【請求項9】前記マルチポート・メモリは8ポートで、
    M=4であるため、各論理部は4個の書込みポートと4
    個の読取りポートを持つ、請求項7記載のマルチポート
    ・メモリ。
  10. 【請求項10】1バンク当たりバンク読取りバスが1つ
    の割合の複数のバンク読取りバスと、 前記第1論理部の各バンク読取りバスと動作可能に接続
    され、前記第1論理部のバンク読取りデータ・バスの個
    数に等しいN個の出力ポートを持つ、第1Nウェイ・ク
    ロスバー・スイッチと、 前記第2論理部の各バンク読取りバスと動作可能に接続
    され、前記第2論理部のバンク読取りデータ・バスの個
    数に等しいN個の出力ポートを持つ、第2Nウェイ・ク
    ロスバー・スイッチと、 を含む、請求項7記載のマルチポート・メモリ。
  11. 【請求項11】前記マルチポート・メモリは64Kバイ
    トを保持する、請求項7記載のマルチポート・メモリ。
  12. 【請求項12】前記マルチポート・メモリのアクセス時
    間は1ナノ秒未満である、請求項1記載のマルチポート
    ・メモリ。
  13. 【請求項13】前記第1書込み/制御バス及び前記第2
    書込み/制御バスはそれぞれ、次に遅いレベルのメモリ
    に動作可能に接続され、 前記第1書込み/制御バス及び前記第2書込み/制御バ
    スはそれぞれ、次に遅いレベルのメモリが前記キャッシ
    ュ・メモリの行全体を同時に再ロードするのに充分なサ
    イズである、 請求項1記載のマルチポート・メモリ。
  14. 【請求項14】各バンクは4つのクオドラントに分けら
    れ、各クオドラントはサイズが前記データ・ユニットに
    等しく、 前記マルチポート・メモリは、各バンクについて、 次に遅いレベルのメモリからの、該次に遅いレベルのメ
    モリが前記マルチポート・メモリ全体を同時に再ロード
    するのに充分なサイズの各クオドラントに対する、専用
    クオドラント書込みバスを含む、 請求項13記載のマルチポート・メモリ。
  15. 【請求項15】前記マルチポート・メモリは、各バンク
    について、 サイズが前記データ・ユニットに等しいバンク出力バス
    と、 前記4つのクオドラント・バスの1つを前記バンク出力
    バスに選択的に接続する4:1スイッチと、 を含む、請求項14記載のマルチポート・メモリ。
  16. 【請求項16】前記マルチポート・メモリは、各バンク
    の各論理部について、 前記書込みポートと前記第1書込み/制御バスに動作可
    能に接続され、第1格納命令を前記バンクに格納する、
    少なくとも第1ストア・オプ・バッファと、 次のサイクルで前記バンクに対してロード操作が実行さ
    れるという第1条件の発生を確認する次サイクル使用判
    断回路と、 前記条件が発生した場合、前記第1ストア・オプ・バッ
    ファの格納命令が前記次のサイクルで前記バンクに対し
    て実行されるようになる、サイクル・スティール回路
    と、 を含む、請求項1記載のマルチポート・メモリ。
  17. 【請求項17】前記バンクのいずれかのバッファ内の格
    納命令によってアドレス指定された位置が、前記次のサ
    イクルで前記マルチポート・キャッシュ・メモリに対し
    て実行されるロード命令のアドレスと同じという第2条
    件の発生を確認するアドレス比較回路と、 前記第2条件が発生した場合、一致する格納命令が対応
    するバンクに対して実行できるまで一致するロード命令
    を中断する、一致中断回路と、 を含む、請求項16記載のマルチポート・メモリ。
  18. 【請求項18】前記第1ストア・オプ・バッファと前記
    第1書込み/制御バスの間に動作可能に接続され、第2
    格納命令を前記バンクに格納する、第2ストア・オプ・
    バッファと、 前記第2ストア・オプ・バッファと前記第1書込み/制
    御バスの間に動作可能に接続され、第3格納命令を前記
    バンクに格納する、第3ストア・オプ・バッファと、を
    含み、 前記サイクル・スティール回路はまた、前記第2及び第
    3のストア・オプ・バッファを制御して、それらの内容
    をそれぞれ前記第1及び第2のストア・オプ・バッファ
    に転送するパーコレーション信号を生成する、 請求項16記載のマルチポート・メモリ。
  19. 【請求項19】前記マルチポート・キャッシュ・メモリ
    は純粋なデータ・キャッシュである、請求項1記載のマ
    ルチポート・メモリ。
  20. 【請求項20】基底プラス変位型のアドレス指定によ
    り、M≧2のときM個のバンクにインターリーブされ、
    複数のデータ・ユニットを格納するマルチポート・キャ
    ッシュ・メモリにデータを格納する有効アドレスを生成
    する有効アドレス生成デバイスであって、 変位レジスタと、 基底レジスタの内容が論理0であることを前もって推定
    する前推定回路と、 U≧2のとき、変位レジスタのUビットの所定セットを
    受信し、M個のバンクの1つを、前記インターリーブさ
    れたマルチポート・キャッシュ・メモリのデータの有効
    アドレスとして識別するに充分なビット数を持つ、Vビ
    ット数を処理するU:Vデコーダと、 を含む、デバイス。
  21. 【請求項21】基底プラス変位型のアドレス指定によ
    り、M≧2のときM個のバンクにインターリーブされ、
    複数のデータ・ユニットを格納するマルチポート・キャ
    ッシュ・メモリにデータを格納する有効アドレスを生成
    する方法であって、 基底レジスタの内容が論理0であることを前もって推定
    するステップと、 U≧2のとき、変位レジスタのUビットの所定セットを
    もとに、M個のバンクの1つの識別情報をデコードする
    ステップと、 前記インターリーブされたマルチポート・キャッシュ・
    メモリのデータの有効アドレスとして前記識別情報を処
    理するステップと、 を含む、方法。
  22. 【請求項22】前記ベース・レジスタの内容が0である
    ことを確認するステップを含む、請求項21記載の方
    法。
  23. 【請求項23】複数のバンクにインターリーブされ、複
    数のデータ・ユニットを格納する、マルチポート・キャ
    ッシュ・メモリの使用を最適化するようプログラムをコ
    ンパイルする方法であって、 前記キャッシュ・メモリの基底プラス変位型のアドレス
    指定のみを可能にするステップと、 ベース・レジスタについて、該ベース・レジスタの所定
    グループのビットが論理0値に等しいかどうかの条件を
    判断するステップと、 前記条件が満たされた場合、前記ベース・レジスタの内
    容を再位置合わせし、変位レジスタの内容を調整するス
    テップと、 を含む、方法。
JP9289333A 1996-12-16 1997-10-22 マルチポートのインターリーブ・キャッシュ・メモリ Pending JPH10214227A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/767,384 US5924117A (en) 1996-12-16 1996-12-16 Multi-ported and interleaved cache memory supporting multiple simultaneous accesses thereto
US08/767384 1996-12-16

Publications (1)

Publication Number Publication Date
JPH10214227A true JPH10214227A (ja) 1998-08-11

Family

ID=25079311

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9289333A Pending JPH10214227A (ja) 1996-12-16 1997-10-22 マルチポートのインターリーブ・キャッシュ・メモリ

Country Status (5)

Country Link
US (1) US5924117A (ja)
EP (1) EP0848331A1 (ja)
JP (1) JPH10214227A (ja)
KR (1) KR19980063475A (ja)
CN (2) CN1131479C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9256531B2 (en) 2012-06-19 2016-02-09 Samsung Electronics Co., Ltd. Memory system and SoC including linear addresss remapping logic

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11212864A (ja) * 1998-01-29 1999-08-06 Sanyo Electric Co Ltd メモリ装置
US6304954B1 (en) * 1998-04-20 2001-10-16 Rise Technology Company Executing multiple instructions in multi-pipelined processor by dynamically switching memory ports of fewer number than the pipeline
US6493800B1 (en) * 1999-03-31 2002-12-10 International Business Machines Corporation Method and system for dynamically partitioning a shared cache
US6397324B1 (en) * 1999-06-18 2002-05-28 Bops, Inc. Accessing tables in memory banks using load and store address generators sharing store read port of compute register file separated from address register file
DE19936080A1 (de) * 1999-07-30 2001-02-15 Siemens Ag Multiprozessorsystem zum Durchführen von Speicherzugriffen auf einen gemeinsamen Speicher sowie dazugehöriges Verfahren
DE19937176A1 (de) * 1999-08-06 2001-02-15 Siemens Ag Multiprozessor-System
US6694421B2 (en) * 1999-12-29 2004-02-17 Intel Corporation Cache memory bank access prediction
US6320813B1 (en) * 2000-03-02 2001-11-20 Sun Microsystems, Inc. Decoding of a register file
US6665768B1 (en) * 2000-10-12 2003-12-16 Chipwrights Design, Inc. Table look-up operation for SIMD processors with interleaved memory systems
US6732253B1 (en) * 2000-11-13 2004-05-04 Chipwrights Design, Inc. Loop handling for single instruction multiple datapath processor architectures
US6931518B1 (en) 2000-11-28 2005-08-16 Chipwrights Design, Inc. Branching around conditional processing if states of all single instruction multiple datapaths are disabled and the computer program is non-deterministic
US6784889B1 (en) 2000-12-13 2004-08-31 Micron Technology, Inc. Memory system and method for improved utilization of read and write bandwidth of a graphics processing system
US6741253B2 (en) * 2001-10-09 2004-05-25 Micron Technology, Inc. Embedded memory system and method including data error correction
US6775735B2 (en) 2001-10-11 2004-08-10 International Business Machines Corporation Instruction pair detection and pseudo ports for cache array
US6763421B2 (en) 2001-10-11 2004-07-13 International Business Machines Corporation Instruction pair detection and pseudo ports for cache array
US6970985B2 (en) 2002-07-09 2005-11-29 Bluerisc Inc. Statically speculative memory accessing
US7073026B2 (en) * 2002-11-26 2006-07-04 Advanced Micro Devices, Inc. Microprocessor including cache memory supporting multiple accesses per cycle
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US8713286B2 (en) * 2005-04-26 2014-04-29 Qualcomm Incorporated Register files for a digital signal processor operating in an interleaved multi-threaded environment
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US20080154379A1 (en) * 2006-12-22 2008-06-26 Musculoskeletal Transplant Foundation Interbody fusion hybrid graft
JP4327863B2 (ja) * 2007-03-19 2009-09-09 株式会社東芝 映像蓄積装置とその制御方法
US9710384B2 (en) * 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US20110197031A1 (en) * 2010-02-05 2011-08-11 Nokia Corporation Update Handler For Multi-Channel Cache
JP5493954B2 (ja) * 2010-02-10 2014-05-14 富士通株式会社 キャッシュシステム
KR101635395B1 (ko) * 2010-03-10 2016-07-01 삼성전자주식회사 멀티포트 데이터 캐시 장치 및 멀티포트 데이터 캐시 장치의 제어 방법
KR101788245B1 (ko) 2011-02-25 2017-11-16 삼성전자주식회사 다중 포트 캐시 메모리 장치 및 그 구동 방법
US9110795B2 (en) * 2012-12-10 2015-08-18 Qualcomm Incorporated System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components
US9092327B2 (en) 2012-12-10 2015-07-28 Qualcomm Incorporated System and method for allocating memory to dissimilar memory devices using quality of service
US9093160B1 (en) * 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
CN104407992B (zh) * 2014-12-17 2017-04-05 中国人民解放军国防科学技术大学 一种基于双端口寄存器阵列的四端口存储器
CN110704369B (zh) * 2019-10-09 2023-06-06 苏州盛科通信股份有限公司 存储器及其控制方法
US12423241B1 (en) * 2022-12-28 2025-09-23 Advanced Micro Devices, Inc. Shadow tag management for accelerator partitions

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4363091A (en) * 1978-01-31 1982-12-07 Intel Corporation Extended address, single and multiple bit microprocessor
JPS59177782A (ja) * 1983-03-25 1984-10-08 Nec Corp バツフアメモリ制御方式
US4633434A (en) * 1984-04-02 1986-12-30 Sperry Corporation High performance storage unit
US4783736A (en) * 1985-07-22 1988-11-08 Alliant Computer Systems Corporation Digital computer with multisection cache
JP2561261B2 (ja) * 1987-02-18 1996-12-04 株式会社日立製作所 バッファ記憶アクセス方法
JPS63257853A (ja) * 1987-04-03 1988-10-25 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン キヤツシユ・メモリ・システム
US5179680A (en) * 1987-04-20 1993-01-12 Digital Equipment Corporation Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus
US4888679A (en) * 1988-01-11 1989-12-19 Digital Equipment Corporation Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements
EP0340901A3 (en) * 1988-03-23 1992-12-30 Du Pont Pixel Systems Limited Access system for dual port memory
JPH01303543A (ja) * 1988-05-31 1989-12-07 Fujitsu Ltd メモリアクセス制御装置
JPH0291740A (ja) * 1988-09-29 1990-03-30 Nec Corp 記憶装置
US4888741A (en) * 1988-12-27 1989-12-19 Harris Corporation Memory with cache register interface structure
US5313551A (en) * 1988-12-28 1994-05-17 North American Philips Corporation Multiport memory bypass under software control
US5172379A (en) * 1989-02-24 1992-12-15 Data General Corporation High performance memory system
JPH0368045A (ja) * 1989-08-07 1991-03-25 Fujitsu Ltd 主記憶制御方式
JP3039557B2 (ja) * 1989-11-01 2000-05-08 日本電気株式会社 記憶装置
US5261066A (en) * 1990-03-27 1993-11-09 Digital Equipment Corporation Data processing system and method with small fully-associative cache and prefetch buffers
US5317718A (en) * 1990-03-27 1994-05-31 Digital Equipment Corporation Data processing system and method with prefetch buffers
US5333280A (en) * 1990-04-06 1994-07-26 Nec Corporation Parallel pipelined instruction processing system for very long instruction word
JP2822588B2 (ja) * 1990-04-30 1998-11-11 日本電気株式会社 キャッシュメモリ装置
US5299321A (en) * 1990-12-18 1994-03-29 Oki Electric Industry Co., Ltd. Parallel processing device to operate with parallel execute instructions
US5333291A (en) * 1991-06-14 1994-07-26 International Business Machines Corporation Stride enhancer for high speed memory accesses with line fetching mode and normal mode employing boundary crossing determination
US5355335A (en) * 1991-06-25 1994-10-11 Fujitsu Limited Semiconductor memory device having a plurality of writing and reading ports for decreasing hardware amount
US5323489A (en) * 1991-11-14 1994-06-21 Bird Peter L Method and apparatus employing lookahead to reduce memory bank contention for decoupled operand references
WO1993013481A1 (en) * 1991-12-23 1993-07-08 Intel Corporation Interleaved cache for multiple accesses per clock in a microprocessor
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5440713A (en) * 1992-05-29 1995-08-08 Industrial Technology Research Institute M-way N-port paged-interleaved memory system
US5581734A (en) * 1993-08-02 1996-12-03 International Business Machines Corporation Multiprocessor system with shared cache and data input/output circuitry for transferring data amount greater than system bus capacity
US5440523A (en) * 1993-08-19 1995-08-08 Multimedia Communications, Inc. Multiple-port shared memory interface and associated method
US5644780A (en) * 1995-06-02 1997-07-01 International Business Machines Corporation Multiple port high speed register file with interleaved write ports for use with very long instruction word (vlin) and n-way superscaler processors

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9256531B2 (en) 2012-06-19 2016-02-09 Samsung Electronics Co., Ltd. Memory system and SoC including linear addresss remapping logic
US10817199B2 (en) 2012-06-19 2020-10-27 Samsung Electronics Co., Ltd. Memory system and SoC including linear address remapping logic
US11169722B2 (en) 2012-06-19 2021-11-09 Samsung Electronics Co., Ltd. Memory system and SoC including linear address remapping logic
US11573716B2 (en) 2012-06-19 2023-02-07 Samsung Electronics Co., Ltd. Memory system and SoC including linear address remapping logic
US11681449B2 (en) 2012-06-19 2023-06-20 Samsung Electronics Co., Ltd. Memory system and SoC including linear address remapping logic
US11704031B2 (en) 2012-06-19 2023-07-18 Samsung Electronics Co., Ltd. Memory system and SOC including linear address remapping logic
US12001698B2 (en) 2012-06-19 2024-06-04 Samsung Electronics Co., Ltd. Memory system and SoC including linear address remapping logic

Also Published As

Publication number Publication date
CN1347033A (zh) 2002-05-01
CN1215413C (zh) 2005-08-17
EP0848331A1 (en) 1998-06-17
CN1131479C (zh) 2003-12-17
US5924117A (en) 1999-07-13
CN1188277A (zh) 1998-07-22
KR19980063475A (ko) 1998-10-07

Similar Documents

Publication Publication Date Title
US5924117A (en) Multi-ported and interleaved cache memory supporting multiple simultaneous accesses thereto
JP4829541B2 (ja) マルチレベル・レジスタ・ファイルを有するディジタル・データ処理装置
KR100305310B1 (ko) 멀티스레드프로세서의명령어및연관된인출요청의백그라운드완료
US6801997B2 (en) Multiple-thread processor with single-thread interface shared among threads
US6351808B1 (en) Vertically and horizontally threaded processor with multidimensional storage for storing thread data
US6507862B1 (en) Switching method in a multi-threaded processor
US6938147B1 (en) Processor with multiple-thread, vertically-threaded pipeline
US6067616A (en) Branch prediction device with two levels of branch prediction cache
US6341347B1 (en) Thread switch logic in a multiple-thread processor
US5758176A (en) Method and system for providing a single-instruction, multiple-data execution unit for performing single-instruction, multiple-data operations within a superscalar data processing system
KR100308677B1 (ko) 복수l1캐쉬라인의파이프라인형스누핑
US6282505B1 (en) Multi-port memory and a data processor accessing the same
KR100308682B1 (ko) 다중방향연관외부마이크로프로세서캐쉬
US5835949A (en) Method of identifying and self-modifying code
JPH04245540A (ja) 条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステム
US5596735A (en) Circuit and method for addressing segment descriptor tables
US6101589A (en) High performance shared cache
US6539457B1 (en) Cache address conflict mechanism without store buffers
JPWO1996027833A1 (ja) 情報処理装置
US7631149B2 (en) Systems and methods for providing fixed-latency data access in a memory system having multi-level caches
US20020099910A1 (en) High speed low power cacheless computer system
US20030014612A1 (en) Multi-threaded processor by multiple-bit flip-flop global substitution
US11061817B2 (en) Memory node with cache for emulated shared memory computers
JP4068828B2 (ja) 統合型分離型切替えキャッシュメモリ及び該キャッシュメモリを備えたプロセッサシステム
Appleton et al. High Performance Computer Architecture Team The University of Adelaide South Australia