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
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またはそれ以上のポートを持ち、インターリーブさ
れたキャッシュ・メモリと機能的に同等なものとして構
成される。
16以上の疑似ポートを備え、インターリーブされるキ
ャッシュ・メモリを提供する。 【解決手段】 8、16またはそれ以上のポートを持つ
高速疑似キャッシュ・メモリ、及び関連する有効アドレ
ス生成スキーム。キャッシュ・メモリは、2ポートのビ
ルディング・ブロックまたは2倍のシングル・ポートの
ビルディング・ブロックのいずれかをもとに、真の8、
16またはそれ以上のポートを持ち、インターリーブさ
れたキャッシュ・メモリと機能的に同等なものとして構
成される。
Description
【0001】
【発明の属する技術分野】本発明は、複数の、つまりコ
ンピュータへのロード操作等、少なくとも2つの同時メ
モリ・アクセスに対応するキャッシュ・メモリに関し、
特にマルチポートのインターリーブ・キャッシュ・メモ
リに、更に1サイクルで複数回の同時メモリ・アクセス
が行える"VLIW(Very Long Instruction Word)"コ
ンピュータに特に適したマルチポートのインターリーブ
・キャッシュ・メモリに関する。
ンピュータへのロード操作等、少なくとも2つの同時メ
モリ・アクセスに対応するキャッシュ・メモリに関し、
特にマルチポートのインターリーブ・キャッシュ・メモ
リに、更に1サイクルで複数回の同時メモリ・アクセス
が行える"VLIW(Very Long Instruction Word)"コ
ンピュータに特に適したマルチポートのインターリーブ
・キャッシュ・メモリに関する。
【0002】
【従来の技術】Nウェイ・スーパースカラ、VLIW、
DATAFLOWプロセッサ等の並列性の高いコンピュ
ータ・アーキテクチャは、多くのロード操作や格納操作
をサイクルごとに同時に実行し、従って帯域幅のかなり
大きいキャッシュ・メモリを要する。VLIWアーキテ
クチャを例にとると、これはきめの細かい並列性を活用
して、多くのロード操作や格納操作を1サイクル当たり
同時に実行する。
DATAFLOWプロセッサ等の並列性の高いコンピュ
ータ・アーキテクチャは、多くのロード操作や格納操作
をサイクルごとに同時に実行し、従って帯域幅のかなり
大きいキャッシュ・メモリを要する。VLIWアーキテ
クチャを例にとると、これはきめの細かい並列性を活用
して、多くのロード操作や格納操作を1サイクル当たり
同時に実行する。
【0003】コンピュータ・システムでの従来の並列性
には複数のプロセッサが関係する。プロセッサは通信網
により接続され、2つ以上のプロセッサが同時にアクテ
ィブになるように制御される。あるアプリケーションで
従来の並列プロセッサを使用するには、プログラマまた
は高度なコンパイラが問題を切り分け、適切な通信と制
御を設定しなければならない。一般にこの方法は、大き
な部分に無理なく分けられ、互いに通信する必要がほと
んどない問題には最も容易に適用できる。ただし多くの
アプリケーションはこのようには作られていない。その
ため従来の並列処理は、"科学的"数値解析法等、構造化
の進んだ問題を除いては、あまり効率的ではなかった。
には複数のプロセッサが関係する。プロセッサは通信網
により接続され、2つ以上のプロセッサが同時にアクテ
ィブになるように制御される。あるアプリケーションで
従来の並列プロセッサを使用するには、プログラマまた
は高度なコンパイラが問題を切り分け、適切な通信と制
御を設定しなければならない。一般にこの方法は、大き
な部分に無理なく分けられ、互いに通信する必要がほと
んどない問題には最も容易に適用できる。ただし多くの
アプリケーションはこのようには作られていない。その
ため従来の並列処理は、"科学的"数値解析法等、構造化
の進んだ問題を除いては、あまり効率的ではなかった。
【0004】きめの細かい並列性は、いくつかの面で命
令レベルの並列性の延長である。コンパイラは、プログ
ラム内の同時に実行できるマシン命令を見つける。これ
ら個別の命令は、複合命令である"VLIW(Very Long
Instruction Word)"にまとめられる。VLIW命令の
各部はALU(算術論理装置)、主記憶域へのパス、レ
ジスタへのパス等、コンピュータのハードウェアの個別
の部分を制御する。1つのVLIWマシン・サイクル
で、VLIWコンピュータ内のこれらの個別リソースを
全て独立に使用できるので、数個の基本的マシン命令を
同時に実行できる。従来のユニット・プロセッサ(ユニ
プロセッサ)よりも少ないマシン・サイクルでタスクを
改良できるという利点が得られる。
令レベルの並列性の延長である。コンパイラは、プログ
ラム内の同時に実行できるマシン命令を見つける。これ
ら個別の命令は、複合命令である"VLIW(Very Long
Instruction Word)"にまとめられる。VLIW命令の
各部はALU(算術論理装置)、主記憶域へのパス、レ
ジスタへのパス等、コンピュータのハードウェアの個別
の部分を制御する。1つのVLIWマシン・サイクル
で、VLIWコンピュータ内のこれらの個別リソースを
全て独立に使用できるので、数個の基本的マシン命令を
同時に実行できる。従来のユニット・プロセッサ(ユニ
プロセッサ)よりも少ないマシン・サイクルでタスクを
改良できるという利点が得られる。
【0005】VLIW法は、ユニプロセッサでの性能を
改良する。そのため、これはコンピュータ内並列性を活
用しているとみることができる。コンピュータ内並列性
は、きめの細かい並列性を意味するもう1つの用語であ
る。逆に従来の、つまりきめの荒い並列性はコンピュー
タ間並列性とみることができる。もちろん数個のVLI
Wコンピュータを1つの動作単位として接続することに
よってコンピュータ内並列性とコンピュータ間並列性を
活用することは可能である。
改良する。そのため、これはコンピュータ内並列性を活
用しているとみることができる。コンピュータ内並列性
は、きめの細かい並列性を意味するもう1つの用語であ
る。逆に従来の、つまりきめの荒い並列性はコンピュー
タ間並列性とみることができる。もちろん数個のVLI
Wコンピュータを1つの動作単位として接続することに
よってコンピュータ内並列性とコンピュータ間並列性を
活用することは可能である。
【0006】図1は、関連するメモリ階層を含む従来の
VLIWアーキテクチャのブロック図である。レジスタ
・ファイル110は機能ユニット102乃至108に接
続される。特にロード/格納ユニット102、浮動小数
点(FP)加算ユニット104、整数ALU106、及
び分岐ユニット108はそれぞれ、レジスタ・ファイル
110からデータを配布する2つのロード・ラインと、
機能ユニットからレジスタ・ファイル110へデータを
格納する1つの格納ラインを持つ。レジスタ・ファイル
110はL0メモリ・レベルと呼ばれる。
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に示
したメモリ階層の一般原理は周知の通りである。
L2メモリ・レベル114に双方向に接続されるL1メ
モリ・レベル、またはキャッシュ112を含む。L2メ
モリ・レベル114はL3メモリ・レベル116と双方
向に接続される。L3メモリ・レベル116はまたL4
メモリ・レベル118と双方向に接続される。図1に示
したメモリ階層の一般原理は周知の通りである。
【0008】歴史的に、コンピュータの動作速度に影響
を与える要因は2つあり、1つはプロセッサ、例えば最
も遅い機能ユニットが現在利用できるデータを操作する
速度である。第2の要因は、機能ユニットに必要とされ
るデータを取得できる速度である。歴史的には第1の要
因より第2の要因を改良する方が難しい。
を与える要因は2つあり、1つはプロセッサ、例えば最
も遅い機能ユニットが現在利用できるデータを操作する
速度である。第2の要因は、機能ユニットに必要とされ
るデータを取得できる速度である。歴史的には第1の要
因より第2の要因を改良する方が難しい。
【0009】VLIWの考え方は、あるメモリ・アクセ
ス時間について同時に処理できる部分が多い場合は、有
効動作速度を改良できることを前提としている。例えば
8つの機能ユニットは1サイクルで16個のデータを操
作できる。逆に、どのサイクルでもその機能ユニットの
1つしか使用できないコンピュータは、1サイクル当た
り2データとして16個のデータを操作するために8サ
イクルを必要とする。この例でVLIWコンピュータ
は、メモリ・アクセス時間が同じであっても、従来のコ
ンピュータよりも8倍高速である。
ス時間について同時に処理できる部分が多い場合は、有
効動作速度を改良できることを前提としている。例えば
8つの機能ユニットは1サイクルで16個のデータを操
作できる。逆に、どのサイクルでもその機能ユニットの
1つしか使用できないコンピュータは、1サイクル当た
り2データとして16個のデータを操作するために8サ
イクルを必要とする。この例でVLIWコンピュータ
は、メモリ・アクセス時間が同じであっても、従来のコ
ンピュータよりも8倍高速である。
【0010】しかしVLIWコンピュータが改良を達成
できるのは、16個のデータを同時に8つの機能ユニッ
トそれぞれに供給できる場合である。8ポート以上の真
のキャッシュ・アレイは、配線性、性能、電流密度及
び、例えばアクセス時間1ナノ秒未満等の高速でのノイ
ズ耐性の観点から非実用的とみられている。8ポート以
上の真のキャッシュ・アレイは極めて複雑である。性能
の問題は大きい。例えばNポートでは、電流ソーシング
(sourcing)能力とセル出力デバイスのキャパシタンス
に大きな負荷がかかりやすい。回路のレイアウトを考え
ると、1つの出力ポートでパイプ/バスの1つを駆動で
きなければならない。
できるのは、16個のデータを同時に8つの機能ユニッ
トそれぞれに供給できる場合である。8ポート以上の真
のキャッシュ・アレイは、配線性、性能、電流密度及
び、例えばアクセス時間1ナノ秒未満等の高速でのノイ
ズ耐性の観点から非実用的とみられている。8ポート以
上の真のキャッシュ・アレイは極めて複雑である。性能
の問題は大きい。例えばNポートでは、電流ソーシング
(sourcing)能力とセル出力デバイスのキャパシタンス
に大きな負荷がかかりやすい。回路のレイアウトを考え
ると、1つの出力ポートでパイプ/バスの1つを駆動で
きなければならない。
【0011】逆に、キャッシュを個別に機能する部分ま
たはモジュールとして形成すること、つまりインターリ
ーブする場合、各インターリーフがパイプ・ラインを1
つだけ駆動する必要がある。インターリーブを介してキ
ャッシュを展開することにより配線性が改良され、よっ
て性能が向上する。駆動する必要のある出力ポートは1
つか2つなので各セルを小さく構成できる。
たはモジュールとして形成すること、つまりインターリ
ーブする場合、各インターリーフがパイプ・ラインを1
つだけ駆動する必要がある。インターリーブを介してキ
ャッシュを展開することにより配線性が改良され、よっ
て性能が向上する。駆動する必要のある出力ポートは1
つか2つなので各セルを小さく構成できる。
【0012】
【発明が解決しようとする課題】本発明の目的は、VL
IWコンピュータへのロード操作等、複数の同時メモリ
・アクセスに対応するキャッシュ・メモリを提供するこ
とである。
IWコンピュータへのロード操作等、複数の同時メモリ
・アクセスに対応するキャッシュ・メモリを提供するこ
とである。
【0013】本発明の他の目的は、真の8ポートのイン
ターリーブ・キャッシュ・メモリと同等に機能するが真
に8ポートではない、つまり8つの同時メモリ・アクセ
スに対応する疑似8ポートのインターリーブ・キャッシ
ュ・メモリを提供することである。
ターリーブ・キャッシュ・メモリと同等に機能するが真
に8ポートではない、つまり8つの同時メモリ・アクセ
スに対応する疑似8ポートのインターリーブ・キャッシ
ュ・メモリを提供することである。
【0014】本発明の他の目的は、16以上の同時メモ
リ・アクセスに対応し、16以上の疑似ポートを備えた
インターリーブ・キャッシュ・メモリを提供することで
ある。
リ・アクセスに対応し、16以上の疑似ポートを備えた
インターリーブ・キャッシュ・メモリを提供することで
ある。
【0015】本発明の他の目的は、8、16またはそれ
以上のポートを持つインターリーブ・キャッシュ・メモ
リにデータを格納する有効アドレスを生成する方法及び
装置を提供することである。
以上のポートを持つインターリーブ・キャッシュ・メモ
リにデータを格納する有効アドレスを生成する方法及び
装置を提供することである。
【0016】本発明の他の目的は、8、16またはそれ
以上のポートを持つインターリーブ・キャッシュ・メモ
リの使用を最適化するようプログラムをコンパイルする
方法を提供することである。
以上のポートを持つインターリーブ・キャッシュ・メモ
リの使用を最適化するようプログラムをコンパイルする
方法を提供することである。
【0017】
【課題を解決するための手段】本発明は、VLIWコン
ピュータによって要求される複数のロード操作等、複数
の同時メモリ・アクセスに対応するキャッシュ・メモリ
を提供する。
ピュータによって要求される複数のロード操作等、複数
の同時メモリ・アクセスに対応するキャッシュ・メモリ
を提供する。
【0018】本発明はまた、疑似マルチポート・キャッ
シュ・メモリは論理的ビルディング・ブロックから形成
されるので、配線性、性能、電流密度及びノイズ耐性の
観点から、コストをかけずに真のマルチポートのキャッ
シュ・メモリの複数の同時メモリ・アクセスに対応する
キャッシュ・メモリを提供する。その結果、疑似マルチ
ポート・キャッシュ・メモリは、真のマルチポート・キ
ャッシュ・メモリの、技術面或いは製造面の複雑さでは
なく機能性を持つ。
シュ・メモリは論理的ビルディング・ブロックから形成
されるので、配線性、性能、電流密度及びノイズ耐性の
観点から、コストをかけずに真のマルチポートのキャッ
シュ・メモリの複数の同時メモリ・アクセスに対応する
キャッシュ・メモリを提供する。その結果、疑似マルチ
ポート・キャッシュ・メモリは、真のマルチポート・キ
ャッシュ・メモリの、技術面或いは製造面の複雑さでは
なく機能性を持つ。
【0019】真のマルチポート・メモリの問題点、例え
ば配線性や電流密度等が解決される、つまり本発明は、
論理的ビルディング・ブロックから形成され、前記の問
題が生じない、疑似8、16またはそれ以上のポートを
持つインターリーブ・メモリを提供する。ある実施例で
論理的ビルディング・ブロックには、書込みポート1
つ、読取りポート1つ、及び専用行アドレス・バスを持
つ。他の実施例では、論理ブロックに、専用読取りアド
レス・バスに動作可能に接続された書込みポート1つと
読取りポート1つの第1セット、及びもう1つの専用読
取りアドレス・バスに動作可能に接続された書込みポー
トと読取りポートの第2セットがある。
ば配線性や電流密度等が解決される、つまり本発明は、
論理的ビルディング・ブロックから形成され、前記の問
題が生じない、疑似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書込み/制御バスでの書込み操
作から独立する。
ットを格納する疑似マルチポートのインターリーブ・キ
ャッシュ・メモリを提供することにより満足される。こ
のメモリは第1論理部と第2論理部に分けられる。各論
理部は複数のデータ・ユニットを格納する。各論理部は
M個のバンクにインターリーブされる(M≧2)。各バ
ンクは、少なくとも第1書込み/制御ポート、及び少な
くとも第1読取りポートを含む。各バンクに書込みポー
トと読取りポートの1ペア当たり専用行アドレス・バス
が1つある。各論理部の第1書込み/制御ポートは、第
1書込み/制御バスに動作可能に接続され、各論理部の
第2書込み/制御ポートは、第2書込み/制御バスに動
作可能に接続される。これにより第1書込み/制御バス
での書込み動作は、第2書込み/制御バスでの書込み操
作から独立する。
【0021】本発明の他の適用範囲は、次の説明から明
らかになる。ただし、詳細な説明や具体例は、本発明の
好適な実施例を示すものであるが、説明の便宜上示して
いるだけであることは理解されたい。本発明の主旨と範
囲から逸脱しない様々な変形例は、当業者には、この詳
細な説明から明らかになるからである。
らかになる。ただし、詳細な説明や具体例は、本発明の
好適な実施例を示すものであるが、説明の便宜上示して
いるだけであることは理解されたい。本発明の主旨と範
囲から逸脱しない様々な変形例は、当業者には、この詳
細な説明から明らかになるからである。
【0022】
【発明の実施の形態】物理的、つまり真の8以上のポー
トを持つ高速キャッシュ・アレイは、現在は非実用的な
ので、本発明の実施例はビルディング・ブロック法を採
用する。この方法では複数の実用的物理ビルディング・
ブロック、好適には最大のブロック1つにより、疑似
8、16またはそれ以上のポートを持つインターリーブ
・キャッシュ・メモリが論理的に形成される。
トを持つ高速キャッシュ・アレイは、現在は非実用的な
ので、本発明の実施例はビルディング・ブロック法を採
用する。この方法では複数の実用的物理ビルディング・
ブロック、好適には最大のブロック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を含む。
リの第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に接続さ
れる。
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に接続される。
れぞれ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
の読取りポートに接続される。
は論理部202の読取りポートに接続される。同様にク
ロスバー・スイッチ208の入力ポートは論理部204
の読取りポートに接続される。
【0027】書込みラインWL0乃至WL7、論理部の
読取りポートをクロスバー・スイッチ入力ポートに接続
するバス、並びに読取りラインRLA0乃至RLA7及
びRLB0乃至RLB7はそれぞれ、例えば8バイト幅
であり、8バイトのデータはダブルワードを表す。
読取りポートをクロスバー・スイッチ入力ポートに接続
するバス、並びに読取りラインRLA0乃至RLA7及
びRLB0乃至RLB7はそれぞれ、例えば8バイト幅
であり、8バイトのデータはダブルワードを表す。
【0028】図4は、8、16またはそれ以上のポート
を持ちインターリーブされる本発明のキャッシュ・メモ
リにデータを格納する有効アドレスを生成する方法を実
現する好適な構造のブロック図を示す。基底レジスタ3
02は加算器306の1入力に接続される。命令レジス
タ304の変位フィールドは加算器306のもう1つの
入力に接続される。加算器306の出力は3−8デコー
ダ308に接続される。デコーダ308の出力ラインは
バンク・セレクト・ラインBS0乃至BS7として用い
られる。
を持ちインターリーブされる本発明のキャッシュ・メモ
リにデータを格納する有効アドレスを生成する方法を実
現する好適な構造のブロック図を示す。基底レジスタ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がある。
リの第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の読取りポ
ートに接続される。
・スイッチ206と8×8のクロスバー・スイッチ20
8があり、クロスバー・スイッチ206の入力は格納構
造400の論理部の読取りポートに接続され、クロスバ
ー・スイッチ208の入力ポートは論理部Bの読取りポ
ートに接続される。
【0031】また図2、図3のように、書込みラインW
L0乃至WL7、読取りラインRLA0乃至RLA7、
及びRLB0乃至RLB7、並びに格納構造400の読
取りポートをクロスバー・スイッチ206、208の入
力ポートに接続するラインは全て8バイト幅である。
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に
接続される。
追加するオプションのブロック図を示す。図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再ロード・ラインとほかのバンク/
クオドラントの間の接続は省略されている。
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ゲートの全
ては示していない。
れぞれ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でアドレス信号を受信する。
ファリング・オプションに関係する構造のブロック図で
ある。図8では、簡単のため論理部の1つの一部、部分
Aのbankjしか示していない。サイクル・スティー
ル・ロジック600(後述)は読取りアドレス・ライン
RA(A)jでアドレス信号を受信する。
【0036】格納命令("ストア・オプ")・バッファ
が、bankjに直列に接続されたものとして示してあ
る。つまり書込みラインWjはストア・オプ・バッファ
606にフィードするものとして示してある。ストア・
オプ・バッファ606はストア・オプ・バッファ604
に、ストア・オプ・バッファ604はストア・オプ・バ
ッファ602に、ストア・オプ・バッファ602はba
nkjの書込みポートWPjにフィードする。
が、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を介してフェッチ/ロー
ド中断制御信号を処理する。
制御信号を信号ライン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である。
ッファリングに関する側面について詳しく示したブロッ
ク図である。図9には、"bankj"と呼ばれるキャッ
シュ・メモリ200または400の代表的バンク702
が示してある。同様にbankjつまりアイテム702
に関連する3つの代表的ストア・オプ・バッファはアイ
テム704A、704B、及び704Cである。
【0039】図9で、固定小数点プロセッサ902は双
方向16バイトのレジスタ間データ・バス906により
浮動小数点プロセッサ904に接続される。浮動小数点
プロセッサ904は32バイト幅の書込みバス932に
よりストア・オプ・バッファ704Cに接続される。
方向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つにもなる。
ルワードを格納できる。更にこれは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に接続される。
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に直接接続される。
またバッファバイパス・バス720によってbankj
702に直接接続される。同様にストア・オプ・バッフ
ァ704Bはまたバッファバイパス・バス722によっ
てbankj702に直接接続される。
【0043】図9はまたサイクル・スティール・ロジッ
ク706を含む。ロジック706は、双方向バス710
によって固定小数点プロセッサ902に、また双方向バ
ス712によって浮動小数点プロセッサ904に接続さ
れる。サイクル・スティール・ロジック706はまた制
御信号をストア・オプ・バッファ704A、704B、7
04Cそれぞれに、それぞれ信号ライン714、71
6、718によって送る。
ク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を介して送る。
含む。ロジック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に直接
接続する。
代用として、図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を含
む。
ずれかにより発行される格納命令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バイト読取り
操作を同時に行える。
説明する。論理部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つのメモリ・アクセス・サイク
ル内で全て可能である。
ー・スイッチにより、書込みポート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論理ポートからロードでき
る。
部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つのレジスタの内容を加算す
ることによって形成される。しかしこれはコンパイラに
関しては問題がある。
クに対する同じサイクルのロードの回数を制限すること
は、使用できるアドレス指定の種類を制限するというこ
とを認識している。図4はこのような認識を反映した実
施例を示す。スーパースカラ・プロセッサのほとんどは
少なくとも2種類のアドレス指定をサポートする。1)
X型またはX形式のアドレス指定と、2)基底プラス変
位型またはD形式のアドレス指定である。X型アドレス
指定の場合、アドレスは2つのレジスタの内容を加算す
ることによって形成される。しかしこれはコンパイラに
関しては問題がある。
【0051】コンパイラはレジスタの内容を確認できな
い。これはコンパイル時には未知の変数だからである。
逆に基底プラス変位型アドレス指定では、変位はオペラ
ンドとして、コンパイラによって並列化されているプロ
グラムの命令に含まれるので既知である。しかし基底レ
ジスタの内容は、技術的に不定の変数である。
い。これはコンパイル時には未知の変数だからである。
逆に基底プラス変位型アドレス指定では、変位はオペラ
ンドとして、コンパイラによって並列化されているプロ
グラムの命令に含まれるので既知である。しかし基底レ
ジスタの内容は、技術的に不定の変数である。
【0052】本発明の、図4に示したアドレス・ジェネ
レータはまた、基底レジスタの内容は基底レジスタの特
定のビット(例えば58乃至63)について値0を持つ
可能性が高いという認識を反映している。例えば一般の
RISC(Reduced Instruction Set Computing)コー
ドの場合、最もよく参照されるオブジェクト、つまりメ
モリの集まりの大半はアライメントが上位で、通常は3
2バイト以上の境界にある。上位アライメントのオブジ
ェクトは、キャッシュ・ページやキャッシュ・ラインの
先頭等、決まった境界から始まる。コンパイラはこの状
況を更に改良するためレジスタを強制的に整列させる。
そのため、ある値を基底レジスタのアドレスに加える。
これにより、後の補正は与えられたその値を変位レジス
タの後続の値から差し引く形になる。
レータはまた、基底レジスタの内容は基底レジスタの特
定のビット(例えば58乃至63)について値0を持つ
可能性が高いという認識を反映している。例えば一般の
RISC(Reduced Instruction Set Computing)コー
ドの場合、最もよく参照されるオブジェクト、つまりメ
モリの集まりの大半はアライメントが上位で、通常は3
2バイト以上の境界にある。上位アライメントのオブジ
ェクトは、キャッシュ・ページやキャッシュ・ラインの
先頭等、決まった境界から始まる。コンパイラはこの状
況を更に改良するためレジスタを強制的に整列させる。
そのため、ある値を基底レジスタのアドレスに加える。
これにより、後の補正は与えられたその値を変位レジス
タの後続の値から差し引く形になる。
【0053】図4のアドレス・ジェネレータは、基底レ
ジスタのビット58乃至63は0であるとの仮定をもと
に変位型またはD型のアドレスを生成する。これにより
コンパイラは同じバンクに対する同じサイクルのランダ
ム・ロードの回数を最大2に制限することができる。1
バンク1サイクルに2回以上のランダム・ロードを扱う
必要がない場合、サイクル・メモリは、2つの論理部だ
けから形成することができ、マルチポートのメモリと機
能的に同等になる。
ジスタのビット58乃至63は0であるとの仮定をもと
に変位型またはD型のアドレスを生成する。これにより
コンパイラは同じバンクに対する同じサイクルのランダ
ム・ロードの回数を最大2に制限することができる。1
バンク1サイクルに2回以上のランダム・ロードを扱う
必要がない場合、サイクル・メモリは、2つの論理部だ
けから形成することができ、マルチポートのメモリと機
能的に同等になる。
【0054】本発明のキャッシュ・メモリに関連したプ
ロセッサを、基底プラス変位型のアドレス指定を使用す
るよう制限することで、また基底レジスタのビット58
乃至63がほぼ常に0であることを認識することによっ
て、コンパイラはキャッシュ・メモリに対する格納命令
のアドレスを、コンパイル時にかなり高い確率で確認す
ることができる。言い換えると、変位レジスタのビット
10乃至12は、格納命令の対象であるキャッシュ・メ
モリ内のバンクのかなり正確な予報値になる。
ロセッサを、基底プラス変位型のアドレス指定を使用す
るよう制限することで、また基底レジスタのビット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として用いられる。
がかなり高い基底レジスタ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つ
のワイヤはわずかに高速である。読取りと書込みを切り
替えるときに構成を変更する必要がないからである。
・ブロックに対する図2、図3等の単一ポートのビルデ
ィング・ブロックの相対的な利点は次のようである。キ
ャッシュ・アレイが小さい場合は、セルに対してデータ
書込みライン1つ、セルからデータ読取りライン1つを
実現することが自然である。セルに別々の読取りノード
と書込みノードがあるからである、単一ポート・セルで
は、データ・バスを読取りノードか書込みノードいずれ
かに接続するため別にスイッチング回路が必要になる。
アレイ・レベルではしかし、セルに入るワイヤ1つとセ
ルから出るワイヤ1つが、単一ワイヤとその関連のスイ
ッチング回路よりわずかに多い空間を消費するが、2つ
のワイヤはわずかに高速である。読取りと書込みを切り
替えるときに構成を変更する必要がないからである。
【0057】先に述べた通り、8つのバンクを使用する
のは一例である。例えば4バンクまたは16バンク、ま
たはそれ以上も使用できる。16バンクが用いられる場
合、加算器306は、変位レジスタ304から3ビット
ではなく4ビットを操作する。同様にデコーダ308
は、加算器306の合計から選択された3ビットではな
く4ビットを操作する3乃至16デコーダになる。
のは一例である。例えば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に反映される。
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の
ような別々のビルディング・ブロックではなく同じ物理
ビルディング・ブロックへのアクセスになる。
第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バイトを同時に送信でき
る。
ョンの動作についてここで説明する。これら追加される
側面は第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ウェイ・スイッ
チより高速になるという利点がある。
クオドラントQ0乃至Q3のそれぞれに接続された4ウ
ェイ・セレクタの代わりに用いられる。サブレベルまた
はクオドラントは一度に1つしか読取られないので、ク
オドラントの出力をORゲートと組み合わせるだけでよ
い。これには、他の場合に用いられる4ウェイ・スイッ
チより高速になるという利点がある。
【0062】ここで図8に示した実施例に追加するオプ
ションの動作について説明する。これら追加される側面
は、図5、図6に示した実施例に等しく適用できる。
ションの動作について説明する。これら追加される側面
は、図5、図6に示した実施例に等しく適用できる。
【0063】16以上のインターリーブの場合、実用的
な結果を得るためには格納命令のバッファリングを行う
必要がある。また格納命令を、元のプログラムにより示
されるように同じ順序で実行する必要のあるオペレーテ
ィング・システムの場合、格納命令のバッファリングは
極めて重要である。
な結果を得るためには格納命令のバッファリングを行う
必要がある。また格納命令を、元のプログラムにより示
されるように同じ順序で実行する必要のあるオペレーテ
ィング・システムの場合、格納命令のバッファリングは
極めて重要である。
【0064】本発明のキャッシュ・メモリの論理部、例
えば図2、図3または図5、図6のAとB、いずれかま
たは両方に対してメモリ・アクセスの1サイクルで8回
のロード操作が行われるインスタンスがある。このよう
な状況では、そのサイクルに対して格納命令も予定され
ている場合は競合が起こる。競合する格納命令はバッフ
ァに"棚上げ"される。
えば図2、図3または図5、図6のAとB、いずれかま
たは両方に対してメモリ・アクセスの1サイクルで8回
のロード操作が行われるインスタンスがある。このよう
な状況では、そのサイクルに対して格納命令も予定され
ている場合は競合が起こる。競合する格納命令はバッフ
ァに"棚上げ"される。
【0065】ロード操作は格納操作より優先される。一
般にロード命令は2:1の比率で格納命令を上回る。図
8の追加されるオプションでは、格納命令の対象である
バンクがロード操作を介してアクセスされないサイクル
までは、キャッシュ・メモリ、例えば図2、図3の実施
例200が格納命令をバッファすることができる。
般にロード命令は2:1の比率で格納命令を上回る。図
8の追加されるオプションでは、格納命令の対象である
バンクがロード操作を介してアクセスされないサイクル
までは、キャッシュ・メモリ、例えば図2、図3の実施
例200が格納命令をバッファすることができる。
【0066】図8のストア・オプ・バッファ602、6
04、606はそれぞれ、格納命令が向けられるバンク
内の場所のID及び格納される関連データを含む格納命
令を保持する。
04、606はそれぞれ、格納命令が向けられるバンク
内の場所のID及び格納される関連データを含む格納命
令を保持する。
【0067】図8のサイクル・スティール・ロジック6
00は、次のサイクルでロード操作によってアクセスさ
れないバンクを決定する。サイクル・スティール・ロジ
ック600の比較器(図示なし)は、読取りアドレス・
ラインRA(A)jの読取りアドレスの3つのバンク・
インターリーブ・ビットから、次のサイクルの間にバン
クに対するロード操作があるかどうか確認する。ロード
操作が次のサイクルで行われない場合、サイクル・ステ
ィール・ロジック600により、ストア・オプ・バッフ
ァの内容がバンクに対して開放され、次のサイクルで格
納命令が実行できるようになる。同時にサイクル・ステ
ィール・ロジック600はまた制御信号をストア・オプ
・バッファ604、606に送る。これにより、後の実
行サイクルに備えて、ストア・オプ・バッファ606、
606の内容(ある場合)がそれぞれ、ストア・オプ・
バッファ602、604に転送される。
00は、次のサイクルでロード操作によってアクセスさ
れないバンクを決定する。サイクル・スティール・ロジ
ック600の比較器(図示なし)は、読取りアドレス・
ラインRA(A)jの読取りアドレスの3つのバンク・
インターリーブ・ビットから、次のサイクルの間にバン
クに対するロード操作があるかどうか確認する。ロード
操作が次のサイクルで行われない場合、サイクル・ステ
ィール・ロジック600により、ストア・オプ・バッフ
ァの内容がバンクに対して開放され、次のサイクルで格
納命令が実行できるようになる。同時にサイクル・ステ
ィール・ロジック600はまた制御信号をストア・オプ
・バッファ604、606に送る。これにより、後の実
行サイクルに備えて、ストア・オプ・バッファ606、
606の内容(ある場合)がそれぞれ、ストア・オプ・
バッファ602、604に転送される。
【0068】例えば図8の3つのストア・オプ・バッフ
ァは、ルーチン・ベースで累積できる格納命令の個数に
対して充分なものとして開示されている。ストア・オプ
・バッファ数は、アプリケーションに応じて増減するか
または、図2、図3及び図5、図6に示すように完全に
なくしてしまうこともできる。
ァは、ルーチン・ベースで累積できる格納命令の個数に
対して充分なものとして開示されている。ストア・オプ
・バッファ数は、アプリケーションに応じて増減するか
または、図2、図3及び図5、図6に示すように完全に
なくしてしまうこともできる。
【0069】1つのサイクル・スティール・ロジック6
00と3つのバッファ602、604、606のセット
が、本発明のキャッシュ・メモリの各バンクに対して用
意される。
00と3つのバッファ602、604、606のセット
が、本発明のキャッシュ・メモリの各バンクに対して用
意される。
【0070】図8はまたアドレス比較機能ロジック61
0を示す。格納命令がバッファされるとき、ストア・オ
プ・バッファの1つにバッファされているためにキャッ
シュ・メモリのバンクにまだ書込まれていないデータに
対してロード命令がアクセスしようとする可能性があ
る。このような状況を検出するため、アドレス比較機能
ロジック610の比較器(図示なし)が、全てのバンク
の全てのストア・オプ・バッファの対象アドレス全体
を、各サイクルの各ロード操作の対象になっているアド
レスと比較する。ストア・オプ・バッファが現在空いて
いる場合、そのストア・オプ・バッファのアドレス比較
は、スプリアスな(偽の)結果を防止するため、ロジッ
ク610によって有効にはならない。
0を示す。格納命令がバッファされるとき、ストア・オ
プ・バッファの1つにバッファされているためにキャッ
シュ・メモリのバンクにまだ書込まれていないデータに
対してロード命令がアクセスしようとする可能性があ
る。このような状況を検出するため、アドレス比較機能
ロジック610の比較器(図示なし)が、全てのバンク
の全てのストア・オプ・バッファの対象アドレス全体
を、各サイクルの各ロード操作の対象になっているアド
レスと比較する。ストア・オプ・バッファが現在空いて
いる場合、そのストア・オプ・バッファのアドレス比較
は、スプリアスな(偽の)結果を防止するため、ロジッ
ク610によって有効にはならない。
【0071】一致があれば、つまりロード命令の対象で
あるアドレスが、バッファの1つの格納命令の対象であ
るアドレスと同じ場合、アドレス比較機能ロジック61
0は、対応する格納操作がストア・オプ・バッファのキ
ューから除外されるまで、ロード操作の実行を中断す
る。全ての比較の出力が、例えばORゲート(図示な
し)と組み合わせられ、生の中断信号が生成される。言
い換えると、ロード操作は中断されるか、または、一致
する格納命令がバッファから転送されてバンクに対して
実行されるに充分な実行サイクルが経過するまでは、実
行が防止される。
あるアドレスが、バッファの1つの格納命令の対象であ
るアドレスと同じ場合、アドレス比較機能ロジック61
0は、対応する格納操作がストア・オプ・バッファのキ
ューから除外されるまで、ロード操作の実行を中断す
る。全ての比較の出力が、例えばORゲート(図示な
し)と組み合わせられ、生の中断信号が生成される。言
い換えると、ロード操作は中断されるか、または、一致
する格納命令がバッファから転送されてバンクに対して
実行されるに充分な実行サイクルが経過するまでは、実
行が防止される。
【0072】バッファリング操作について図9を参照し
て詳しく説明する。ここでも図9は、代表的なバンク、
bankj702とこれに関連する代表的なストア・オ
プ・バッファ704A−704Cを示す。後者は、例えば
論理部AまたはB、図2、図の202または204のバ
ンク(バンク0乃至バンク7)のいずれか1つに対応す
る。図9の代表例を図5、図6の代表例に適用するのに
必要な変更の内容は、当業者には容易に理解されよう。
て詳しく説明する。ここでも図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に転送される。
浮動小数点プロセッサ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からの制御信号には、
ある格納命令アドレスに対して、あるサイクルの間に処
理されたバンク書込みクロック・イネーブル信号が含ま
れる。
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に転送される。
また、バッファ704B、704Cに制御信号を送る。こ
れによりそれぞれが保持しうる格納命令が、次の格納バ
ッファに転送される。つまりバッファ704Cの格納命
令はバッファ704Bに、バッファ704Bの格納命令は
バッファ704Aに転送される。
【0076】好適な実施例は、どの時間についても累積
される可能性のある格納命令は3つを超えないという仮
定を反映している。従ってストア・オプ・バッファは3
つしか示されていない。格納命令バッファの適切な個数
は、アプリケーションに応じて変わる。そうした変動は
当業者には理解されよう。例えばプロセッサが浮動小数
点プロセッサであれば、大きい格納操作のバーストと大
きいロード操作のバーストが予想される。ストア・オプ
・バッファ数は、その場合は大きくする必要がある。
される可能性のある格納命令は3つを超えないという仮
定を反映している。従ってストア・オプ・バッファは3
つしか示されていない。格納命令バッファの適切な個数
は、アプリケーションに応じて変わる。そうした変動は
当業者には理解されよう。例えばプロセッサが浮動小数
点プロセッサであれば、大きい格納操作のバーストと大
きいロード操作のバーストが予想される。ストア・オプ
・バッファ数は、その場合は大きくする必要がある。
【0077】通常のパイプ停止、例えばキャッシュ・ミ
スでは、5サイクルから10サイクルの遅れが出る。こ
れは、キャッシュ・コントローラ(図示なし)の制御下
でストア・オプ・バッファがキャッシュ・バンクに除外
されるもう1つの機会である。
スでは、5サイクルから10サイクルの遅れが出る。こ
れは、キャッシュ・コントローラ(図示なし)の制御下
でストア・オプ・バッファがキャッシュ・バンクに除外
されるもう1つの機会である。
【0078】レベルL1キャッシュ・メモリ200また
は400とプロセッサ902、904のの好適な構成
は、プロセッサ902、904それぞれにアドレス・ジ
ェネレータは1つしか必要ないという仮定を反映してい
る。これにより各プロセッサは1つのバンクから一度に
データのロード/フェッチしか行わない。データ・ロー
ド・アドレス・ジェネレータ数は、アプリケーションに
よって変わり、そうした変動は当業者には理解されよ
う。
は400とプロセッサ902、904のの好適な構成
は、プロセッサ902、904それぞれにアドレス・ジ
ェネレータは1つしか必要ないという仮定を反映してい
る。これにより各プロセッサは1つのバンクから一度に
データのロード/フェッチしか行わない。データ・ロー
ド・アドレス・ジェネレータ数は、アプリケーションに
よって変わり、そうした変動は当業者には理解されよ
う。
【0079】通常、格納命令のバンク内順序だけでな
く、バンク間の格納命令順序も保持される。排他的キャ
ッシュ・ラインを用意すると、バンク間順序を無視する
ことができる。キャッシュ・アドレスの排他ビットはキ
ャッシュ・ディレクトリ(図示なし)によって用いられ
る。これはセットされると、このキャッシュに関係した
プロセッサが、このキャッシュ・ラインを持つ唯一のプ
ロセッサであることが示される。普通、キャッシュ・ラ
インのほかのコピーがあるので、格納命令は、プログラ
ムによってセットされた順序で完了する。排他的キャッ
シュ・ラインを用意することで、このキャッシュに対す
る格納命令を任意の順序で除外することができる。例え
ば3つのストア・オプ・バッファがすでに一杯で、それ
でも他の格納命令が送り出された場合、最近の格納命令
は、すでにストア・オプ・バッファにあるものをバイパ
スするよう制御できる。
く、バンク間の格納命令順序も保持される。排他的キャ
ッシュ・ラインを用意すると、バンク間順序を無視する
ことができる。キャッシュ・アドレスの排他ビットはキ
ャッシュ・ディレクトリ(図示なし)によって用いられ
る。これはセットされると、このキャッシュに関係した
プロセッサが、このキャッシュ・ラインを持つ唯一のプ
ロセッサであることが示される。普通、キャッシュ・ラ
インのほかのコピーがあるので、格納命令は、プログラ
ムによってセットされた順序で完了する。排他的キャッ
シュ・ラインを用意することで、このキャッシュに対す
る格納命令を任意の順序で除外することができる。例え
ば3つのストア・オプ・バッファがすでに一杯で、それ
でも他の格納命令が送り出された場合、最近の格納命令
は、すでにストア・オプ・バッファにあるものをバイパ
スするよう制御できる。
【0080】排他的キャッシュ・ラインに対する格納操
作のほかに、コンパイラとキャッシュのハードウェアは
また、既知の非共有格納デバイス(つまりスタック、ヒ
ープ等)も順不同に実行できることを認識する。この状
況では別にオプコード・ビットが必要である。
作のほかに、コンパイラとキャッシュのハードウェアは
また、既知の非共有格納デバイス(つまりスタック、ヒ
ープ等)も順不同に実行できることを認識する。この状
況では別にオプコード・ビットが必要である。
【0081】プロセッサ902、904の1つが、先に
格納命令によってデータが書込まれる予定だったban
kj702の場所を対象にしたロード/フェッチ命令を
発行できる状況が起こり得るが、その格納命令は、スト
ア・オプ・バッファ704A−704Cの1つに保持され
ている。アドレス比較ロジック708の比較器(図示な
し)は、各ロード/フェッチ命令のアドレスを、バッフ
ァ704A−704Cの格納命令の対象であるフル・アド
レスと比較する。
格納命令によってデータが書込まれる予定だったban
kj702の場所を対象にしたロード/フェッチ命令を
発行できる状況が起こり得るが、その格納命令は、スト
ア・オプ・バッファ704A−704Cの1つに保持され
ている。アドレス比較ロジック708の比較器(図示な
し)は、各ロード/フェッチ命令のアドレスを、バッフ
ァ704A−704Cの格納命令の対象であるフル・アド
レスと比較する。
【0082】一致がある、つまりロード/フェッチ命令
の対象になる場所が、バッファされた格納命令の対象に
なる場所と同じである場合、アドレス比較ロジック70
8は、bankj702に対する格納命令が完了するま
で、プロセッサによるロード/フェッチ命令の実行を中
断する。アドレス比較ロジック708の比較器の出力
は、例えばORゲート(図示なし)により組み合わせら
れ、この生の中断信号が生成される。ストア・オプ・バ
ッファが現在空いている場合、そのストア・オプ・バッ
ファのアドレス比較は、スプリアスな結果を防止するた
めに、ロジック708により有効にならない。繰り返す
がアドレス比較ロジック708はこのような比較を、全
てのストア・オプ・バッファについて行い、全てのスト
ア・オプ・バッファを制御する。
の対象になる場所が、バッファされた格納命令の対象に
なる場所と同じである場合、アドレス比較ロジック70
8は、bankj702に対する格納命令が完了するま
で、プロセッサによるロード/フェッチ命令の実行を中
断する。アドレス比較ロジック708の比較器の出力
は、例えばORゲート(図示なし)により組み合わせら
れ、この生の中断信号が生成される。ストア・オプ・バ
ッファが現在空いている場合、そのストア・オプ・バッ
ファのアドレス比較は、スプリアスな結果を防止するた
めに、ロジック708により有効にならない。繰り返す
がアドレス比較ロジック708はこのような比較を、全
てのストア・オプ・バッファについて行い、全てのスト
ア・オプ・バッファを制御する。
【0083】アドレス比較ロジック708によって格納
命令をバッファ704A−704Cから除外/パーコレー
トする方法が3つある。
命令をバッファ704A−704Cから除外/パーコレー
トする方法が3つある。
【0084】好適な除外/パーコレーション、つまりバ
ッファのバイパスの方法は、速度と配線性を考慮した妥
協案である。ロード命令に一致する格納命令が、例えば
バッファ704C内に見つかった場合、アドレス比較ロ
ジック708によって、バッファ704Bを、そして7
04Aを通して間接的にではなく、バッファバイパス・
バス720を介してbankj702に格納命令が直接
転送される。同様にバッファ704Bに一致する格納命
令が見つかった場合、アドレス比較ロジック708によ
って、格納命令が、バッファ704Aを通して間接的に
ではなく、バッファバイパス・バス722を介してba
nkj702に直接転送される。
ッファのバイパスの方法は、速度と配線性を考慮した妥
協案である。ロード命令に一致する格納命令が、例えば
バッファ704C内に見つかった場合、アドレス比較ロ
ジック708によって、バッファ704Bを、そして7
04Aを通して間接的にではなく、バッファバイパス・
バス720を介してbankj702に格納命令が直接
転送される。同様にバッファ704Bに一致する格納命
令が見つかった場合、アドレス比較ロジック708によ
って、格納命令が、バッファ704Aを通して間接的に
ではなく、バッファバイパス・バス722を介してba
nkj702に直接転送される。
【0085】このバッファ・バイパス法に代わるものと
して、アドレス比較ロジック708は、ただ、一致する
格納命令の、前の全ての格納命令が実行される、つまり
bankj702によって格納されるようにする。しか
しこの方法では、バッファ704A、704Bの格納命令
を実行するのに必要な時間と等しい時間はロード操作が
中断される。これはバッファ704Cで一致する格納命
令が見つかり、バッファ704A、704Bの格納命令が
バイパスされる状況による。
して、アドレス比較ロジック708は、ただ、一致する
格納命令の、前の全ての格納命令が実行される、つまり
bankj702によって格納されるようにする。しか
しこの方法では、バッファ704A、704Bの格納命令
を実行するのに必要な時間と等しい時間はロード操作が
中断される。これはバッファ704Cで一致する格納命
令が見つかり、バッファ704A、704Bの格納命令が
バイパスされる状況による。
【0086】配線の問題があるため実現は比較的難しい
が、バッファ・バイパスより高速な方法として、バンク
・バイパス法と呼ぶことのできる方法がある。これは、
バッファバイパス・バス720、722の代わりに用い
られる図4の破線のバンクバイパス・バス734、73
6、738により示される方法である。ただしバンクバ
イパス・バスとバッファバイパス・バスは必ずしも相互
に排他的ではない。つまり共に使用できる。一致する格
納命令が例えば第3バッファ704Cで見つかった場
合、アドレス比較ロジックは、ロード命令を発行したプ
ロセッサにデータをバッファ704Bまたは704Aか
ら、それぞれバンクバイパス・バス736または738
を介して直接ロードするよう指示する。
が、バッファ・バイパスより高速な方法として、バンク
・バイパス法と呼ぶことのできる方法がある。これは、
バッファバイパス・バス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にセットされ、格納命令は保持さ
れていないことが示される。
704A−704Cの格納命令をロード命令と比較すると
き、バッファ内に格納命令があることを図10の有効ビ
ット806が論理1にセットされているかどうかで認識
する。格納命令が、例えばバッファ704Cからバッフ
ァ704Bに転送されると、バッファ704Cの有効ビッ
ト位置806は論理0にセットされ、格納命令は保持さ
れていないことが示される。
【0088】他の実施例では、もう1つのプロセッサに
よるスヌーピングの可能性が考慮される。スヌーピング
が生じるのは、プロセッサが他のプロセッサのデータ・
キャッシュ("Dcache")ディレクトリを調べる。スヌー
ピング・プロセッサは、バッファされた格納命令によっ
てまだ更新されていないデータを探すことがある。アド
レス比較ロジックのもう1つのセットを追加して、スヌ
ープされるデータがバッファされている状況をはアクセ
スするか、または、単にスヌーピングの後にバッファを
自動的に除外することができるが後者の方法が望まし
い。スヌーピングと、結果として生じるバッファの除外
の頻度は、アドレス比較ロジックのセットを追加するコ
ストを上回るとは考えられないからである。
よるスヌーピングの可能性が考慮される。スヌーピング
が生じるのは、プロセッサが他のプロセッサのデータ・
キャッシュ("Dcache")ディレクトリを調べる。スヌー
ピング・プロセッサは、バッファされた格納命令によっ
てまだ更新されていないデータを探すことがある。アド
レス比較ロジックのもう1つのセットを追加して、スヌ
ープされるデータがバッファされている状況をはアクセ
スするか、または、単にスヌーピングの後にバッファを
自動的に除外することができるが後者の方法が望まし
い。スヌーピングと、結果として生じるバッファの除外
の頻度は、アドレス比較ロジックのセットを追加するコ
ストを上回るとは考えられないからである。
【0089】図9の動作の説明からわかるように、異な
るバンクの格納命令は、それらが発行された順序に関し
て非同期に、ロード/フェッチ命令によってバンクがア
クセスされないインスタンスの頻度に応じて実行され
る。同様に、バッファ・バイパス法とバンク・バイパス
法により、特定のバンクの格納命令を、それらが発行さ
れた順序とは非同期に実行することができる。
るバンクの格納命令は、それらが発行された順序に関し
て非同期に、ロード/フェッチ命令によってバンクがア
クセスされないインスタンスの頻度に応じて実行され
る。同様に、バッファ・バイパス法とバンク・バイパス
法により、特定のバンクの格納命令を、それらが発行さ
れた順序とは非同期に実行することができる。
【0090】キャッシュ・ミスが生じる場合、またバン
クの1つに少なくとも1つのストア・オプ・バッファが
ある場合、アドレス比較ロジックは、L2レベル等、メ
モリ・システムの他の部分によって実行されるキャッシ
ュの再ロードを、格納命令全てがストア・オプ・バッフ
ァから除外されるまで中断する。このような除外では、
全ての格納命令が除外されるまで各格納命令が順に実行
される。ここで必要なサイクルは、多くても3サイクル
である。異なるバンクからの格納命令は同じサイクルで
並列に実行できるからである。
クの1つに少なくとも1つのストア・オプ・バッファが
ある場合、アドレス比較ロジックは、L2レベル等、メ
モリ・システムの他の部分によって実行されるキャッシ
ュの再ロードを、格納命令全てがストア・オプ・バッフ
ァから除外されるまで中断する。このような除外では、
全ての格納命令が除外されるまで各格納命令が順に実行
される。ここで必要なサイクルは、多くても3サイクル
である。異なるバンクからの格納命令は同じサイクルで
並列に実行できるからである。
【0091】キャッシュ・メモリは、L2メモリ・レベ
ルによるL1キャッシュのライン/ブロック再ロードよ
りも前に、書戻し操作が行えるように、L2メモリ・レ
ベルに対してデータの変更があることを示すためダーテ
ィ・ビットを使用する機能を持つ等、これまでに知られ
ているキャッシュ・メモリの機能を実行できる。
ルによるL1キャッシュのライン/ブロック再ロードよ
りも前に、書戻し操作が行えるように、L2メモリ・レ
ベルに対してデータの変更があることを示すためダーテ
ィ・ビットを使用する機能を持つ等、これまでに知られ
ているキャッシュ・メモリの機能を実行できる。
【0092】繰り返すが本発明のキャッシュ・メモリ
は、純粋なデータ・キャッシュかまたは命令とデータの
組み合わせキャッシュとして使用できる。命令/データ
組み合わせキャッシュの場合、プロセッサはここから命
令をロードする、つまり"Iフェッチ"を実行する。この
ようなフェッチは、1つのバンクまたは8つの全てのバ
ンク等、長さが可変である。従って、Iフェッチはキャ
ッシュ・メモリにより、単なるもう1つのロードまたは
複数のロードとして処理される。サイクルをスティール
する機会は監視され、格納命令はバッファされる等であ
る。
は、純粋なデータ・キャッシュかまたは命令とデータの
組み合わせキャッシュとして使用できる。命令/データ
組み合わせキャッシュの場合、プロセッサはここから命
令をロードする、つまり"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論理部と第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)コンピュータとこれに関連するメモリ階層のブロッ
ク図である。
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 書込みバス
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論理部と第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論理部の各バンク読取りバスと動作可能に接続
され、前記第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値に等しいかどうかの条件を
判断するステップと、 前記条件が満たされた場合、前記ベース・レジスタの内
容を再位置合わせし、変位レジスタの内容を調整するス
テップと、 を含む、方法。
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)
| 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)
| 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)
| 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 |
-
1996
- 1996-12-16 US US08/767,384 patent/US5924117A/en not_active Expired - Fee Related
-
1997
- 1997-09-20 KR KR1019970047947A patent/KR19980063475A/ko not_active Ceased
- 1997-10-22 JP JP9289333A patent/JPH10214227A/ja active Pending
- 1997-11-13 CN CN97122689A patent/CN1131479C/zh not_active Expired - Fee Related
- 1997-12-15 EP EP97310088A patent/EP0848331A1/en not_active Withdrawn
-
2001
- 2001-09-11 CN CNB011329394A patent/CN1215413C/zh not_active Expired - Fee Related
Cited By (7)
| 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 |