JPH08221311A - スーパースカラプロセッサにおけるロードバッファ及びストアバッファの優先順位の動的切換え - Google Patents

スーパースカラプロセッサにおけるロードバッファ及びストアバッファの優先順位の動的切換え

Info

Publication number
JPH08221311A
JPH08221311A JP7330839A JP33083995A JPH08221311A JP H08221311 A JPH08221311 A JP H08221311A JP 7330839 A JP7330839 A JP 7330839A JP 33083995 A JP33083995 A JP 33083995A JP H08221311 A JPH08221311 A JP H08221311A
Authority
JP
Japan
Prior art keywords
buffer
load
store
store buffer
priority
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
JP7330839A
Other languages
English (en)
Inventor
Greenlay Dale
グリーンレイ デール
Kohn Leslie
コーン レスリー
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH08221311A publication Critical patent/JPH08221311A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing

Landscapes

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

Abstract

(57)【要約】 【課題】バッファの容量が満杯になることによりプロセ
ッサのオペレーションが阻害されることを防止する方法
及び装置を提供する。 【解決手段】ストアバッファ61が一定の高水準62に
達するまで、ロードバッファ60が常時、優位に立つよ
うに、プロトコルは命令する。ストアバッファ61は優
先順位を得た後、低水準に減少するまで、メモリにアク
セスし続ける。ストアバッファ61が高水準62に達す
る時は常時、低水準に減少するまで優先順位を得る。ロ
ードバッファ60は高水準63を上回れば、常時、優位
に立つ。ロードバッファ60が高水準63を下回れば、
ストアバッファ61が高水準62に達するまで、ロード
バッファ60は優位に立つ。ストアバッファ61は優先
順位を得た後、ロードバッファ60が高水準63に達す
るまで、優先順位を保持する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロプロセッ
サのロード/ ストア実行ユニットに関し、詳細にはマイ
クロプロセッサのロード/ ストアユニットにおけるメモ
リ資源に対して競合するロードバッファとストアバッフ
ァとの間の優先順位の動的制御に関するものである。
【0002】
【従来の技術】RISCとは命令セットを簡略化した演算の
ことをいう。通常、RISCプロセッサは従来のCISC( 複雑
な命令セットをもつ演算) プロセッサより命令数が少な
い。使用命令数が少ないため、RISC技術を用いることに
より、少なくともある程度、RISCプロセッサにコンパイ
ラを書き込むタスクが簡略化される。更に、最大動作周
波数を制限する使用頻度の低い複雑な命令よりも、むし
ろ使用頻度の高い重要な命令を実行し、かつ最適化する
ことについて焦点を当ててプロセッサのデザインを行う
ことができる。こうした理由及びその他の理由により、
ワークステーション、更には末端のコンピュータの製造
業者の間ではRISCプロセッサが好評である。
【0003】一般的に、RISCプロセッサではメモリに実
際にアクセスする命令は非常に少ない。実際、メモリに
アクセスする2つの命令、LOAD及びSTOREのみを有する
インプリメンテーションもある。通常、並行処理により
同期及びメモリ更新を行うプロセッサにより、多少の特
殊な「アトミック」オペレーションが支援される。プレ
ンティスホール社発行、SPARCインターナショナル社制
作、ディー.エル.ウィーバー(D.L.Weaver)及びティ
ー.ガーモンド(T.Germond)(編)、「SPARCアーキテク
チャ説明書(The SPARC Architecture Manual)」、19
94年第9版、第17頁を参照されたい。このような場
合であっても、LOAD及びSTOREが最も使用頻度の高いメ
モリアクセス命令である。LOAD命令を実行することによ
り、プロセッサのレジスタにはメインメモリアドレスに
存在するデータが書き込まれる。STORE命令を実行する
ことにより、メインメモリアドレスにはプロセッサのレ
ジスタに存在するデータが書き込まれる。従って、LOAD
命令及びSTORE命令はレジスタ(1つ又は複数個)及び1
つのメモリにアドレスをオペランドとして特定する必要
がある。インプリメンテーションの中には2つ若しくは
1つのレジスタ及び1つの即値を用いてメモリアドレス
を計算するものもある。多くのインプリメンテーション
は、1つの命令を用いて1ワード以上のデータを転送す
るLOAD及びSTOREを数種類備える。従って、2つ以上の
ソースレジスタ又はデスティネーションレジスタが存在
し得る。また、これらソースレジスタ又はデスティネー
ションレジスタはそれぞれSTORE命令又はLOAD命令にお
いてオペランドとして指定される。
【0004】図1はスーパースカラプロセッサ12を示
す。スーパースカラプロセッサ12は幾つかの並行機能
ユニット10及び11を有している。通常のスーパスカ
ラインプリメンテーションは浮動小数点、整数、ブラン
チ及びロード/ストアの機能ユニット11を有してい
る。従って、4つの命令まで並行して実行可能である。
また、大部分のスーパースカラプロセッサは少なくとも
ある程度はパイプライン化されている。パイプライン化
により命令は段階的に処理され、命令処理が完了するま
でに数クロックサイクルを必要とする。しかし、パイプ
ライン化プロセッサのアーキテクチャでは、各段階にて
常時、命令を処理しているため、複数の命令を同時に処
理可能である。
【0005】図2はロード/ストアユニット10のブロ
ック図を示す。ロード/ストアユニット10の総スルー
プットを最大にすべ<、即時には供給不可能なロード及
びストアがプロセッサ12のオペレーションを阻止する
ことなく、依然としてディスパッチ可能であるとともに
供給待ち可能となるように、ロードバッファ20及びス
トアバッファ21が設けられている。ロードバッファ2
0は先入れ先出し(FIFO)待ち行列であり、LOADのソース
メモリアドレス22及びデスティネーションレジスタア
ドレス23を保持している。ストアバッファ21はFIFO
待ち行列であり、STOREのアドレス24及びこれらアド
レス24に記憶されるデータ25を保持している。LOAD
及びSTOREの待ち行列を保持することにより、現オペレ
ーションの完了後、即時に別のメモリオペレーションが
得られるため、LOAD命令及びSTORE命令が用いるメモリ
資源の利用が最大化される。
【0006】多層メモリシステムの一般的形態はキャッ
シュメモリ、即ちルックアサイド(lookaside)バッファ
メモリである。キャッシュメモリはプロセッサ12とメ
インメモリシステムとの間に配置された比較的小さい特
殊メモリ装置である。キャッシュメモリはプロセッサ1
2によりアクセスされようとするメインメモリからのワ
ードのコピーを保持している。キャッシュはメインメモ
リより高速であるため、アクセス頻度の高い記憶位置が
キャッシュにて見つかれば、メモリアクセスの平均時間
は短くなる。キャッシュメモリの各記憶位置はより低速
のメインメモリにも蓄積された情報のコピーを更にアク
セスし易くするように用いられるという意味から、キャ
ッシュメモリの記憶位置は冗長である。プログラマが見
てとれるように、アドレス可能な全記憶容量がキャッシ
ュの存在により増大することはない。小型内部キャッシ
ュ、及び別の集積回路上にて実行されるこれより遥かに
大型の外部キャッシュを有するプロセッサ12が多い。
他のシステムでは、プロセッサ12とメインメモリとの
間に存在するキャッシュは1つのみである。
【0007】図2は内部キャッシュ29並びにロードバ
ッファ20及びストアバッファ21と相互に接続された
ロード/ストア前処理ブロック19を示す。ロードバッ
ファ20及びストアバッファ21は外部キャッシュ26
と相互に接続されている。外部キャッシュ26は別の集
積回路上に存在するため、通常、外部キャッシュ26に
通じる読取り/書込みポートは1つのみである。今日の
プロセッサでは、記憶転送のユニット、即ちサブブロッ
クは約144ビット以上のオーダーであり、サブブロッ
クに対するアドレスは約20ビット以上のオーダーであ
る。大部分のシステムは高価すぎるという理由により外
部キャッシュにデュアルポートを設けていない。ポート
を2つ設けると、既に多数存在する外部キャッシュのメ
モリチップ上のピンを実質的に倍増させる必要がある。
このように改変すると、パッケージが複雑化し、外部キ
ャッシュのRAM(ランダムアクセスメモリ)が複雑化し、
回路基板上のワイヤの数が増加する。外部キャッシュの
型寸法が大きくなる可能性もある。更に、出力パッドド
ライバが総電力のうち比較的多量の電力を消費する性質
があるため、システムの電力消費量が著しく増大する。
こうした理由により、通常、外部キャッシュ26は一組
のアドレス線27及び双方向の一組のデータ線28のみ
を有している。
【0008】外部キャッシュ26のRAMは読取り/書込み
ポートを1つのみ有するため、ロードバッファ20にお
ける入力及びストアバッファ21における入力が外部キ
ャッシュ26のメモリ資源に対して競合しようとする。
如何なる所定の時間においても、ロードバッファ20及
びストアバッファ21の双方が入力を有することができ
る。如何なる所定の時間においても、外部キャッシュ2
6が処理可能であるLOAD命令又はSTORE命令は1つのみ
であるため、ロードバッファ20及びストアバッファ2
1の双方が入力を有すれば、このうちの1つのバッファ
は外部キャッシュ26に入力をディスパッチすることが
不可能である。
【0009】LOADは後続命令がオペランドとして使用す
るのに必要なデータを取り出すための要求である。従っ
て、LOADは比較的迅速に生じる必要がある。通常、コン
パイラは十分に長い時間、ロードされたデータを使用す
る命令からLOADを分離する命令ストリームを生じさせ
る。しかし、命令が使用するロードデータがロードされ
ないうちにこの命令が実行されようとすれば、プロセッ
サ12は機能停止に陥る。従って、LOADが生じるのに必
要なレイテンシは、ロードされたデータの使用からLOAD
を分離する命令が命令ストリーム中にどれ程存在するか
によって決まる。コンパイラに課する制約を緩和すると
ともにプロセッサの機能停止を回避することが当然に好
ましい。ロードレイテンシを短縮することにより、プロ
セッサを機能停止に陥らせることなく、LOADとロードデ
ータの使用との間に介入する命令の数を削減することが
可能である。
【0010】ロードバッファ20の背後にある理論は、
内部キャッシュ29に適合するには大きすぎる実効ペー
ジセットを有するコードでは、LOAD及びその後続使用は
少なくとも外部キャッシュ26のレイテンシを償うほど
長く分離可能であるということである。LOAD及びその使
用が分離可能であれば、LOADが生じている間に複数の介
入命令を実行可能である。ロードバッファ20はロード
/ストアユニット10及び他の実行パイプライン11(図
1)を幾分か減結合させる。即ち、データを即時に戻す
ことが不可能なLOADはパイプラインを機能停止させるの
ではなく、データを戻すことが可能になるまで緩衝処理
される。この典型的な例は、LOADが内部キャッシュ29
に達せず、外部キャッシュ26にアクセスせねばならな
い場合である。この場合、LOADはロードバッファ20に
配置され、他の機能ユニット11のパイプラインは「使
用」命令に遭遇しない限り動作し続ける。
【0011】一方、STORE命令はLOADが有するような厳
密な時間的制約を有していない。STOREが発せられる
時、プロセッサ12はメインメモリにデータを送り戻し
ている。蓄積されたデータは将来如何なる時にもおそら
く必要とされない。ストアデータが将来必要とされるの
であれば、メインメモリに蓄積されるのではな<、レジ
スタに保持されている。
【0012】LOADに対するレイテンシ要件の方がSTORE
に対するレイテンシ要件より厳格であるため、ロードバ
ッファ20及びストアバッファ21が外部キャッシュ2
6に対して競合する時、従来のデザインではストアバッ
ファ21の入力よりロードバッファ20の入力の方に優
先順位が与えられてきた。
【0013】ストアバッファ21における入力よりロー
ドバッファ20における入力の方に、常時優先順位を与
えることにより、ストアバッファ21は満杯になる傾向
にある。ロードバッファ20の入力が常時、ストアバッ
ファ21の入力前に供給されるのであれば、外部キャッ
シュ26にアクセスせねばならない入力をロードバッフ
ァ20が空にするまで、ストアバッファ21における入
力が供給されることはない。外部キャッシュ26にアク
セスせねばならない入力をロードバッファ20が有する
限り、STOREは処理されない。
【0014】通常、プログラムにおけるSTOREのオペレ
ーションはLOADのオペレーションより著しく頻度が低
い。しかし、ロードバッファが空になるまでストアバッ
ファにおけるSTOREが外部キャッシュにアクセスしなけ
れば、ストアバッファ21はその全入力により占められ
るまで満杯になり得る。ストアバッファが満杯になって
しまうと、プロセッサ12は別のSTORE命令をディスパ
ッチすることを阻止される。ストアバッファが満杯であ
るためにストアバッファに入力不可能なSTORE命令が発
せられてしまうと、ロード/ストア機能ユニット10の
パイプライン10(図1)は阻止される。今日のスーパー
スカラプロセッサの多くは、命令実行といったようなも
のを柔軟にすべく、コンパイルされたコードと協働する
ようになっている。しかし、ほぼ全てのブログラムモデ
ルが命令実行といったものに制約を課すため、プロセッ
サ12全体が阻止されてしまう可能性がある。命令スト
リームにおけるSTORE命令が処理不可能であれば、後続
の命令が依然として幾つか実行可能であるかもしれない
が、STORE命令が処理されなければ、やがてプロセッサ
12全体は機能停止に陥る。
【0015】従って、ロードバッファ20に常時優先順
位を持たせるという従来の方法は、ストアバッファ21
が満杯になり、プロセッサ12のオペレーションを阻止
するという問題点を有する。
【0016】
【発明が解決しようとする課題】本発明は上記問題点を
解決するためになされたものであって、その目的は、バ
ッファの容量が満杯になることによりプロセッサのオペ
レーションが阻害され、機能停止に陥ることを防止する
方法及び装置を提供することにある。
【0017】
【課題を解決するための手段】上記目的を達成するた
め、本発明の方法では、最初にロードバッファ及びスト
アバッファのいずれかに優先順位を与えるステップと、
ロードバッファ及びストアバッファの相互間にて優先順
位を動的に切り換えるステップとを備える。
【0018】第1の方法は、ロードバッファに優先順位
を与えるステップと、ストアバッファが高水準を上回る
か否かをテストするステップと、ストアバッファが高水
準を上回ると判定された時、ストアバッファが優先順位
を得るステップと、ストアバッファが高水準以下である
と判定された時、ロードバッファが優先順位を得るステ
ップに戻るステップと、更には、ストアバッファが低水
準を下回るか否かをテストするステップと、ストアバッ
ファが低水準以上であると判定された時、ストアバッフ
ァが優先順位を得て、ストアバッファの低水準テストス
テップに戻るステップと、ストアバッファが低水準以下
であると判定された時、ロードバッファが優先順位を得
るステップに戻るステップとを備える。
【0019】第2の方法は、ロードバッファに優先順位
を与えるステップと、ロードバッファがロードバッファ
の高水準を上回るか否かをテストするステップと、ロー
ドバッファがロードバッファの高水準を上回ると判定さ
れた時、ロードバッファが優先順位を得るステップに戻
るステップと、更には、ロードバッファがロードバッフ
ァの高水準以下であると判定された時、ストアバッファ
がストアバッファの高水準を上回るか否かをテストする
ステップと、ストアバッファがストアバッファの高水準
以下であると判定された時、ロードバッファが優先順位
を得るステップに戻るステップと、ストアバッファがス
トアバッファの高水準を上回ると判定された時、ストア
バッファが優先順位を得るステップと、ロードバッファ
の高水準テストに戻るステップとを備える。
【0020】本発明のメモリアドレスを供給するための
装置は、ロードバッファ要求入力、ストアバッファ優先
入力及びロードアクセス出力を有する抑止回路と、選択
入力及びメモリアドレスを伝達する出力を有し、1つの
入力がロードバッファアドレスに割り当てられ、別の入
力がストアバッファアドレスに割り当てられる2方向マ
ルチプレクサと、第1の入力及び第2の入力並びに出力
を有し、第1の入力はストアバッファ要求信号に割り当
てられ、第2の入力は抑止回路のロードアクセス出力に
割り当てられ、出力は2方向マルチプレクサの選択入力
を供給する判定回路とを備える。
【0021】本発明のメモリアドレス出力を供給するた
めの方法は、ストアバッファが優先順位を有する時にロ
ードバッファによるロードバッファ要求出力が生じるこ
とを抑止するステップと、ロードバッファ要求が生じる
時に出力用のロードバッファアドレスを選択するステッ
プと、ストアバッファによるストアバッファ要求出力が
ロードバッファ要求の非存在下にて生じる時に、出力用
のストアバッファアドレスを選択するステップとを備え
る。
【0022】本発明の制御装置は、最初にロードバッフ
ァ及びストアバッファのいずれかに優先順位を与えるた
めの優先回路と、ロードバッファ及びストアバッファの
相互間にて優先順位を動的に切り換えるためのスイッチ
回路とを備える。
【0023】本発明の優先順位を与えるための装置は、
ストアバッファが高水準を上回るか否かをテストするた
めの第1のテスト回路と、ストアバッファが高水準を上
回ればストアバッファに優先順位を与えるためのストア
バッファ優先回路とを備える。
【0024】更に、本発明の優先順位を与えるための装
置は、ロードバッファがロードバッファの高水準を上回
るか否かをテストするための第1のテスト回路と、ロー
ドバッファがロードバッファの高水準を上回ればロード
バッファに優先順位を与えるためのロードバッファ優先
回路とを備える。
【0025】更に、本発明のメモリアドレスを供給する
ための装置は、ストアバッファが優先順位を有する時に
ロードバッファによるロードバッファ要求出力が生じる
ことを抑止するための抑止回路と、ロードバッファ要求
が生じる時に出力用のロードバッファアドレスを選択
し、ストアバッファによるストアバッファ要求出力がロ
ードバッファ要求の非存在下にて生じる時に出力用のス
トアバッファアドレスを選択するための選択回路とを備
える。
【0026】
【発明の実施の形態】以下、本発明を具体化した一実施
形態を図1〜図7に従って説明する。図2はM入力ロー
ドバッファ20及びN入力ストアバッファ21を示す。
M入力ロードバッファ20及びN入力ストアバッファ2
1を使用する今日のマイクロプロセッサにおいて、これ
ら2つのバッファは同一のメモリ資源、即ち外部キャッ
シュメモリ26に対して競合せねばならない。本発明に
基づき、外部キャッシュメモリ26が満杯になった時に
はストアバッファ21が優先順位を得るようにする優先
プロトコルを用いる。ロードバッファ20の奥行、即ち
入力数はストアバッファ21の奥行と同等である必要は
ない。バッファにおける入力数は幾つかの要因に応じて
決まる。バッファにおける最適入力数を決める際に考慮
する要因としては、通常の命令ストリームにおけるLOAD
及びSTOREの頻度、内部キャッシュメモリのヒット率、
外部キャッシュメモリのレイテンシ、及び多数の入力を
供給する際のハードウェアの経費がある。出願人により
使用された装置では、ロードバッファ20は9入力から
なり、ストアバッファ21は8入力からなっている。
【0027】本発明の第1の実施形態によれば、優先プ
ロトコルは以下のようになる。ロードバッファ20(図
2)はストアバッファ30(図3)が「高水準」31に
達するまで優先順位を保持する。ストアバッファ30は
高水準31に達すると、「低水準」32に減少するまで
優先順位を得ている。ストアバッファ30が低水準32
に達すると、優先順位はロードバッファ20に再度シフ
トする。
【0028】例として、10入力の奥行を有するストア
バッファ30を図3に示す。各入力の左側にその索引を
示す。ロードバッファ20及びストアバッファ30の双
方とも先入れ先出し(FIFO)バッファである。図3に示す
ように、ストアバッファ30に対する入力はロード/ス
トア前処理ユニット19(図2)から付与される。STORE
はストアバッファ30に入力されると、そのSTOREは、
最下位の索引を有するとともに、供給待ち状態の別のST
OREによって占有されていない入力に書き込まれる。ス
トアバッファ30が空であって、ロードバッファ20が
外部キャッシュメモリ26を占有しているとすると、ST
OREはストアバッファ30の第1入力(図3における索引
1)に入力される。ストアバッファ30が外部キャッシ
ュメモリ26を利用している時、位置1における入力は
常時供給状態にある。同入力が処理されてしまうと、残
りの全入力(索引i)は1つだけ下位(索引i−1の入力)
にシフトされる。
【0029】バッファは穀物のサイロに似た動作を行
う。穀物は投げ入れられると、可能な限り低位に落下
し、先に投げ込まれた穀物の上部に直接落下する。スト
アバッファが外部キャッシュに対するアクセスを与えら
れると、サイロの下部が開放され、穀物の一部が抜け落
ち、残りの穀物が幾分か下方へ移動する。このFIFO動作
は、入力1〜9の使用状態の如何に拘わらず、新しいST
OREが10番目(最後)の入力に書き込まれるタイプのF
IFOとは明らかに異なっている。この場合、ストアバッ
ファは真のシフトレジスタに類似しており、STOREが供
給可能になるには最少10クロックサイクルを要する。
【0030】実際の装置では、バッファは実際のシフト
レジスタとして装備され、最下位の未使用入力まで書き
込む能力を備える。この場合、高水準ポインタ及び低水
準ポインタは固定値である。下部の入力が外部キャッシ
ュメモリに供給される時、各LOAD又はSTOREは1つのレ
ジスタをバッファの下部に接近するように移動させる。
【0031】しかし、より一般的には、バッファは小型
のメモリレジスタファイルとして装備される。この場
合、LOAD及びSTOREが処理される時、入力は実際には移
動しない。その代わりに、各バッファについて「スタッ
クポインタの上部」及び「スタックポインタの下部」が
保持される。スタックポインタの下部はバッファ内にて
次に供給される入力を指し示す。スタックポインタの上
部は待ち行列に入力される次のLOAD又はSTOREが書き込
まれる入力を指し示す。LOAD又はSTOREが供給される
時、スタックポインタの下部が増大する。新しいLOAD又
はSTOREがバッファに達すると、スタックポインタの上
部がインクリメントされる。レジスタファイル中の最上
位アドレスからインクリメントされるポインタは、最下
位アドレスを指し示す。従って、Nがバッファの奥行で
あり、Pがポインタであるとすると、ポインタがインク
リメントされる時、新P=(旧P+1)モジューロNとな
る。従って、各バッファは一対の循環ポインタを有する
レジスタファイルとして装備可能である。
【0032】物理的な装備に関しては、バッファのレベ
ルを探知するのに便利な方法は、バッファ中の入力数を
探知するカウンタを各バッファに割り当てることであ
る。バッファが空である時、カウンタは0を読み出す。
入力がバッファに入り込むと、カウンタの値は増加す
る。入力が供給され、従ってバッファから除去される
と、カウンタの値は減少する。そして、高水準及び低水
準は、バッファの優先順位の状態を判断するようにカウ
ンタ値と連続的に比較される固定値として保持可能であ
る。カウンタはレジスタファイルの循環ポインタの態様
に用いられると、カウンタの値はスタックポインタの上
部が増大する時には何時でもインクリメントされ、スタ
ックポインタの下部が増大する時には何時でもデクリメ
ントされる。
【0033】本発明の説明及び例示を簡略化すべく、図
及び説明は第1の実施形態に関し、同一のレジスタが常
時スタックの下部に存在している。本発明は上記以外の
実施形態に容易に適用され、請求の範囲は該実施形態も
含むものとする。
【0034】更に、本発明におけるロードバッファ及び
ストアバッファは、外部キャッシュメモリにインターフ
ェースで接続するように説明されている。しかし、本明
細書において説明する技術は、メインメモリに、或いは
プロセッサのメモリ実行における他のモジュールに直接
インターフェースで接続するロードバッファ及びストア
バッファにも好適に適用可能である。外部キャッシュメ
モリについての説明は例示を目的とするものである。請
求の範囲は他のメモリ型にインターフェースで接続する
ロードバッファ及びストアバッファも含むものとする。
【0035】LOADもSTOREもそれぞれのバッファが優先
順位を有する時にのみ、外部キャッシュメモリにアクセ
スするようには制限されていない。外部キャッシュメモ
リを同時に要求するLOADがロードバッファに存在しない
限り、ストアバッファにおけるSTOREはロードバッファ
が優先順位を有する時であっても外部キャッシュメモリ
にアクセス可能である。これは、従来技術の方法に基づ
きストアバッファが供給される唯一の方法である。
【0036】所定のプロセッサシステムの力学を理解す
ることで、ストアバッファ30が実行パイプラインを危
険にも遮断しようとしている時期を判断することが可能
になる。通常、外部キャッシュメモリ26に対するSTOR
Eオペレーションのレイテンシは1サイクルを上回る。S
TORE命令がサイクル毎に実行されれば、優先順位を有し
ていてもストアバッファ30は満杯になり、オーバフロ
ーとなる。しかし、命令ストリームにおけるSTORE命令
の頻度に対して何らかの制約を課せば、ストアバッファ
30が満杯であることに起因する遮断をなくすことが可
能である。
【0037】例えば、外部キャッシュ26に対するSTOR
EがSクロックサイグルを要し、かつSTORE命令がSサイ
クル毎に一回よりも頻繁に生じないようにスケジュール
を組まれていることが周知であれば、ストアバッファ3
0が実行パイプラインを遮断しないことが保証される。
LOADレイテンシもSクロックサイクルであると仮定する
と、高水準31はN入力ストアバッファ30の入力N−
1となり、ストアバッファ30の「上部」に近接するこ
とになる。ストアバッファ30の上部において高水準3
1の上方に必要とされるのは1入力のみであるが、それ
は、これがストアバッファ30における最も古いSTORE
が完了する前にディスパッチ可能なSTORE命令の最大数
であるからである。ストアバッファ30が高水準31に
達すると、優先順位はストアバッファ30に切り替わ
る。STORE命令が高水準31を表すストアバッファ入力
に達する時には、LOADが外部キャッシュ26にアクセス
している状態であると思われる。該LOADはSTOREが外部
キャッシュ26にアクセスし始める前に完了するように
しなければならない。該LOADはストアバッファ30にお
けるSTOREが外部キャッシュ26にアクセスし始めるこ
とが可能になる前にSクロックサイクルを要する。該LO
ADの完了後、最も古いSTOREを供給するのに必要なSク
ロックサイクルの間に、更にもう1つのSTOREがディス
パッチされる。従って、前記のように仮定すれば、高水
準31の上方に必要なのは1入力のみである。
【0038】しかし、更に典型的な場合には、STORE及
びLOADのレイテンシは周知であるが、STOREオペレーシ
ョンの回数には制限がない。この場合、プロセッサの機
能停止があり得る。例えば、STOREがクロックサイクル
毎に供給され、かつ外部キャッシュ26において処理す
るのに1クロックサイクルを上回ることを要するとすれ
ば、ストアバッファ30は優先順位を有するとしても満
杯になり、プロセッサを遮断してしまう。この筋書きで
は、高水準31の上方における入力の数は、確率的モデ
ルの命令分布を仮定すれば、性能及びコストを可能な限
り最適にトレードオフするように、オペレーションズリ
サーチ式の最適化法により選択される。高水準31の上
方における入力が多いほど、実行パイプラインが満杯の
STOREバッファ30により遮断される頻度は低くなる。
【0039】高水準31の上方における入力の数を増加
させるには多くのコストがかかる。ストアバッファの所
定の奥行において、高水準31の上方における入力の数
が増加すると、高水準31の下方における入力の数は減
少する。従って、高水準31の上方における入力の数を
増加させることにより、ストアバッファの遮断頻度は減
少するが、ロードバッファ20が早めに優先順位を失う
ために、LOADの平均レイテンシが増大する。LOADの平均
レイテンシを増大させると、次なる命令のオペランドと
して使用されるのに必要となるまでにデータがロードさ
れていないことに起因し、プロセッサの機能停止頻度が
高まる。更に、ロードバッファ20はストアバッファ2
1が優先順位を有する間に満杯になる可能性がある。満
杯のロードバッファ20にLOAD命令をディスパッチでき
ない時、ロードバッファ20が満杯になることによって
もプロセッサを遮断してしてしまう。従って、ストアバ
ッファ30において高水準31の下方における入力の数
が少なすぎると、ロードレイテンシに起因して機能停止
頻度が高まる可能性がある。
【0040】本発明の第1の実施形態に基づき、ストア
バッファ30が一旦優先順位を得てしまえば、その入力
は「低水準」32に達するまで処理される。ストアバッ
ファ21が低水準32に達すると、ロードバッファ20
は再度優先順位を得る。低水準32の適正位置は更に複
数の変数に依存している。ストアバッファ30が優先順
位を有している間、STOREは継続して外部キャッシュ2
6を用いている。従って、ストアバッファ30が優先順
位を保持するとともに外部キャッシュ26を占める最少
時間を計算することが可能である。ストアバッファ30
は、高水準31に達すると即時にその入力を外部キャッ
シュ26に供給し始めるとともに、低水準に達するまで
外部キャッシュ26に供給し続けるため、ストアバッフ
ァ30の外部キャッシュ26の最少占有時間は(STOREレ
イテンシ×高水準31から低水準32への入力数)であ
る。従って、低水準32の位置におけるキーパラメータ
は高水準31と低水準32との間における入力数であ
る。STOREはストアバッファが優先順位を有する間、ス
トアバッファに入力され、これに応じてストアバッファ
が外部キャッシュを占める時間を増大させる。低水準3
2の下方における入力数は、低水準32の下方における
入力数が多いほどSTOREの平均レイテンシが増大すると
いう程度にのみ意味があり、通常、いずれにせよ時間調
整に対して不可欠なことではない。
【0041】実施に当たっては、上記の一般規則には幾
つかの例外が存在する。場合によっては、ストアバッフ
ァは高水準に達した後であっても低水準に達する前に、
優先順位をロードバッファに戻してしまうこともある。
第1の例として、プロセッサはLOADに論理的に結合され
たタイプのSTOREを支持する。この場合、STOREはロック
されたLOADがロードバッファを離れるまでストアバッフ
ァを離れることが不可能である。この場合、ロードバッ
ファが優先順位を回復されないとすれば、双方のバッフ
ァが外部キャッシュにアクセス不可能であるため、デッ
ドロックが存在することになる。第2の例として、キャ
ッシュメモリに入れるのが不可能な初期のSTOREのよう
な他の事象が完了するまで、STOREはストアバッファを
離れることが不可能な時もある。キャッシュメモリに入
れるのが不可能なSTOREは外部キャッシュにアクセスす
るのではな<、メインメモリ又はその他に移行せねばな
らないため、キャッシュメモリに入れるのが不可能な初
期のSTOREには長時間を要する。この場合、ストアバッ
ファは低水準に達していなくとも優先順位を放棄するこ
とがある。現実の装置では、ストアバッファが高水準に
達する前に優先順位を得る場合もある。例えば、マルチ
プロセッサのアーキテクチャにおいて、ストアバッファ
はロードバッファに対する裁定(arbitration)を何度も
「喪失」してしまった時、優先順位を得ることを許容さ
れる。これが起こるのは、例えば、1つのプロセッサが
「メールボックス」位置に新データが伝送されたか否か
を確認するために、該メールボックス位置を継続的にロ
ードするタイトループを実行している時である。第2の
プロセッサがメールボックスにデータを蓄積しようとし
ている場合、STOREがその「メール」をディスパッチさ
せられないとすればデッドロックが生じる。それは第1
のプロセッサがメールボックスを継続的に監視している
ためである。本明細書において説明したような一般規則
に対する例外が存在し、請求の範囲はこのような差異も
その範囲に含むものとする。
【0042】図4はロードバッファ及びストアバッファ
の制御方法を示す。システムが初期化され、ロードバッ
ファ及びストアバッファの双方とも空である時、ステッ
プ40はロードバッファが優先順位を有する状態(ステ
ップ41)で、システムが稼動を開始することを命じ
る。ロードバッファが優先順位を有している間、ステッ
プ42はストアバッファが高水準にまで満杯になったか
否かを確認するようにチェックし続ける。ストアバッフ
ァにおけるSTORE数が高水準を下回っている限り、該制
御はブランチ43に従い、ロードバッファはステップ4
1における優先順位を保持する。ステップ42におい
て、ストアバッファが高水準以上にまで満杯になったと
判断されると、ブランチ44が選択され、ストアバッフ
ァがステップ45において優先順位を得る。ストアバッ
ファが優先順位を有している間、ステップ46はストア
バッファが低水準以下にまで減少したか否かを確認する
ようにチェックし続ける。ストアバッファにおけるSTOR
E数が低水準を上回っている限り、該制御はブランチ4
7に従い、ストアバッファはステップ45における優先
順位を保持する。ステップ46において、ストアバッフ
ァが低水準以下にまで減少したと判断されると、ブラン
チ48が選択され、ロードバッファがステップ41にお
いて優先順位を回復する。
【0043】図5はこのシステムの制御機構の1つの考
えられる実施形態を示す。外部キャッシュRAMは1セッ
トのアドレス入力51を有している。マルチプレクサ5
2は、ロードバッファアドレス53又はストアバッファ
アドレス54のいずれが外部キャッシュRAMアドレス入
力51を駆動するかを選択する。判定回路としての判定
ブロック55は極めて単純なアルゴリズムを実行する。
ロードアクセス出力としてのロードアクセス信号56が
確認されると、ロードバッファアドレス53が選択され
る。ロードアクセス信号56が確認されず、かつ「スト
アバッファ要求」信号57が確認されると、ストアバッ
ファアドレス54が選択される。第1の実施形態に基づ
き制御アルゴリズムを実行すべく、ロードアクセス信号
56を計算する抑止回路としての抑止ブロック58が導
入されている。高水準31に達すると、抑止ブロック5
8はストアバッファ優先入力としてのストアバッファ優
先信号50によりロードアクセス信号56を確認するこ
とが不可能になる。こうした場合には常時、ストアバッ
ファ要求信号57が確認されるよう保証されるが、それ
はストアバッファ30に入力が存在するためである(図
3)。ストアバッファ30の供給後であってストアバッ
ファ30における入力数が低水準32に達する時、ロー
ドアクセス信号56を生じさせる抑止ブロック58は、
ロードバッファ要求入力としてのロードバッファ要求信
号59が確認されれば、該信号の再度の確認を許容す
る。
【0044】実際には、ロードバッファ及びストアバッ
ファ以外にも同一のメモリ資源に対して競合するととも
に、ロードバッファ又はストアバッファより遥かに低い
優先順位を有する他のユニットが存在する。例えば、命
令取出しユニットも同一資源を使用する。この場合、判
定ブロック55は更に多くの入力を有し、マルチプレク
サ52も付加的入力を有する。
【0045】この第1の実施形態ではロードバッファ2
0における状況には注意を向けていない(図2)。従っ
て、ロードバッファ20はストアバッファ21が優先順
位を有している間に満杯になる。ストアバッファ21が
優先順位を有するとともに減少している間にロードバッ
ファ20に複数のLOADが供給されると、ロードバッファ
20は実行パイプを遮断する。
【0046】図6は本発明の第2の実施形態に基づくロ
ードバッファ60及びストアバッファ61を示す。この
実施形態に基づき、優先順位プロトコルは以下のように
なる。ロードバッファ60はストアバッファ61が「高
水準」62に達するまで優先順位を保持する。ストアバ
ッファ61が高水準62に達すると、ストアバッファ6
1はロードバッファ60がその高水準63に達するまで
優先順位を得ている。ロードバッファ60がその高水準
63に達すると、優先順位はロードバッファ60に再度
シフトする。ロードバッファ60及びストアバッファ6
1の双方がそれぞれの高水準63,62を上回ると、ロ
ードバッファ60が優先順位を有する。図6は8入力の
ロードバッファ60及び10入力のストアバッファ61
を示す。高水準63,62のレベルは独立して設計され
ている。
【0047】図7は本発明の第2の実施形態に基づく制
御の進行を示すフローチャートである。システムが初期
化されている時、開始ステップ70はロードバッファが
優先順位を有する状態(ステップ71)にシステムを配
置する。ステップ72ではロードバッファがその高水準
以上のレベルにあるか否かをテストする。ロードバッフ
ァがその高水準以上のレベルに満たされれば、ブランチ
73が選択され、ロードバッファはステップ71におい
て優先順位を保持する。ロードバッファが高水準を下回
ると、ブランチ74により処理フローはステップ75に
移行する。ステップ75はストアバッファがその高水準
以上のレベルにあるか否かを判定するテストである。ス
トアバッファがその高水準を下回れば、ブランチ76に
より処理はロードバッファが優先順位を有するステップ
71に復帰する。ストアバッファがその高水準以上であ
れば、ブランチ77はロードバッファが再度ステップ7
2において高水準に達するまでステップ78においてス
トアバッファに優先順位を付与する。
【0048】このシステムではいずれかのバッファが満
杯であることに起因するプロセッサの遮断を回避するこ
とに最大の意味をもたせている。遮断を回避するという
点からは、このシステムは第1の実施形態のシステムを
性能的に上回る。しかし、このシステムはストアバッフ
ァが長時間にわたって優先順位を得るとともに保持する
ことを許容してしまう。従って、この実施形態では、遮
断を回避すべく、LOAD命令に対するレイテンシ要件を妥
協的に処理している。従って、プロセッサは現命令によ
り使用される必要があるロードデータに可用性がないこ
とに起因し、機能停止してしまう。
【0049】ストアバッファ61(図6)が高水準62に
達して優先順位を得れば、ロードバッファ60は高水準
63に達するまで優先順位を回復しない。ストアバッフ
ァ61はロードバッファ60に複数の入力が存在する間
に優先順位を得ることがあり得る。そして、一連のSTOR
Eがディスパッチされれば、ストアバッファ61は、ス
トアバッファ61が空ではないと同時にロードバッファ
60が高水準63に達していない限り、外部キャッシュ
の制御を保持する。ロードバッファ60が高水準63を
上回るように付加的LOADがディスパッチされなければ、
ロードバッファ60における既存のLOADは益々古くなり
ながらここに存在し続ける。STOREが全て消耗され、又
はロードバッファ60における新しい入力がディスパッ
チされてロードバッファ60が高水準63に達するま
で、ロードバッファ60は再度供給されることはない。
ロードデータの実行準備を必要とするその後の「使用」
命令前にLOADが供給されなければ、プロセッサは機能停
止する。このシステムを用いると、一旦ストアバッファ
が優先順位を得てしまえば、空になったとしても優先順
位を保持する。ロードバッファは優先順位を回復するに
はその高水準に達せねばならない。
【0050】本発明の方法は、最初にロードバッファ及
びストアバッファのいずれかに優先順位を与えるステッ
プと、ロードバッファ及びストアバッファの相互間にて
優先順位を動的に切り換えるステップとを備えている。
また、本発明の方法は、ロードバッファに優先順位を与
えるステップ41と、ストアバッファが高水準を上回る
か否かをテストするステップ42と、ストアバッファが
高水準を上回ると判定された時、ストアバッファに優先
順位を与えるステップ44と、ストアバッファが高水準
以下であると判定された時、最初のステップに戻るステ
ップ43とを備えている。更に、この方法は、ストアバ
ッファが低水準を下回るか否かをテストするステップ4
6と、ストアバッファが低水準以上であると判定された
時、ストアバッファに優先順位を与え、最初のステップ
に戻るステップ48と、ストアバッファが低水準以下で
あると判定された時、ロードバッファに優先順位を与え
るステップに戻るステップ47とを備えている。
【0051】本発明の方法は、ロードバッファに優先順
位を与えるステップ71と、ロードバッファがロードバ
ッファの高水準を上回るか否かをテストするステップ7
2と、ロードバッファがロードバッファの高水準を上回
ると判定された時、最初のステップに戻るステップ73
とを備えている。更に、この方法は、ロードバッファが
ロードバッファの高水準以下であると判定された時、ス
トアバッファがストアバッファの高水準を上回るか否か
をテストするステップ75と、ストアバッファがストア
バッファの高水準以下であると判定された時、ロードバ
ッファに優先順位を与えるステップ71に戻るステップ
76と、ストアバッファがストアバッファの高水準を上
回ると判定された時、ストアバッファに優先順位を与え
るステップ78と、ロードバッファの高水準テストに戻
るステップとを備えている。
【0052】本発明のメモリアドレスを供給するための
装置は、ロードバッファ要求入力59、ストアバッファ
優先入力50及びロードアクセス出力56を有する抑止
回路58と、選択入力及びメモリアドレスを伝達する出
力を有し、1つの入力がロードバッファアドレス53に
割り当てられ、別の入力がストアバッファアドレス54
に割り当てられる2方向マルチプレクサ52と、第1の
入力及び第2の入力並びに出力を有し、第1の入力はス
トアバッファ要求信号57に割り当てられ、第2の入力
は抑止回路58のロードアクセス出力56に割り当てら
れ、出力は2方向マルチプレクサ52の選択入力を供給
する判定回路55とを備えている。ロードバッファ要求
入力59及びストアバッファ優先入力50の双方が確認
される時にロードアクセス出力56が確認され、ロード
バッファ要求入力59及びストアバッファ優先入力50
のいずれかが確認されない時にロードアクセス出力56
が確認されない。判定回路55はロードアクセス信号5
6が確認される時にロードバッファアドレス53を選択
する出力を生成し、ロードアクセス信号56が確認され
ず、かつストアバッファ要求信号57が確認される時に
ストアバッファアドレス54を選択する出力を生成す
る。
【0053】本発明のメモリアドレス出力を供給するた
めの方法は、ストアバッファが優先順位を有する時にロ
ードバッファによるロードバッファ要求出力が生じるこ
とを抑止するステップと、ロードバッファ要求が生じる
時に出力用のロードバッファアドレス53を選択するス
テップと、ストアバッファによるストアバッファ要求出
力がロードバッファ要求の非存在下にて生じる時に、出
力用のストアバッファアドレス54を選択するステップ
とを備えている。抑止ステップはストアバッファ優先信
号50によりロードバッファからの信号の論理積を形成
することにより遂行される。
【0054】本発明の装置は、最初にロードバッファ及
びストアバッファのいずれかに優先順位を与えるための
優先回路と、ロードバッファ及びストアバッファの相互
間にて優先順位を動的に切り換えるためのスイッチ回路
とを備えている。優先回路は最初にロードバッファに優
先順位を与える。
【0055】本発明の装置は、ストアバッファが高水準
を上回るか否かをテストするための第1のテスト回路
と、ストアバッファが高水準を上回ればストアバッファ
に優先順位を与えるためのストアバッファ優先回路とを
備えている。更に、この装置はストアバッファが低水準
を下回るか否かをテストするための第2のテスト回路
と、ストアバッファが低水準を下回ればロードバッファ
に優先順位を与えるためのロードバッファ優先回路とを
備えている。
【0056】本発明の装置は、ロードバッファがロード
バッファの高水準を上回るか否かをテストするための第
1のテスト回路と、ロードバッファがロードバッファの
高水準を上回ればロードバッファに優先順位を与えるた
めのロードバッファ優先回路とを備えている。更に、こ
の装置は、ストアバッファがストアバッファの高水準を
上回るか否かをテストするための第2のテスト回路と、
ストアバッファがストアバッファの高水準を上回り、か
つロードバッファがロードバッファの高水準を下回れ
ば、ストアバッファに優先順位を与えるためのストアバ
ッファ優先回路とを備えている。
【0057】本発明のメモリアドレスを供給するための
装置は、ストアバッファが優先順位を有する時にロード
バッファによるロードバッファ要求出力が生じることを
抑止するための抑止回路と、ロードバッファ要求が生じ
る時に出力用のロードバッファアドレス53を選択し、
ストアバッファによるストアバッファ要求出力がロード
バッファ要求の非存在下にて生じる時に出力用のストア
バッファアドレス54を選択するための選択回路とを備
えている。抑止回路はロードバッファからの信号及びス
トアバッファの優先信号の論理積(AND)回路である。
【0058】いずれの実施形態に基づいても、いずれの
システムにも柔軟性を付加する別の改変が可能である。
改変により、最適性能を可能にするように「水準」を設
定するために、オペレーティングシステム又はコンパイ
ラにより水準がプログラム可能になる。従って、第1の
実施形態では、ストアバッファの高水準及び低水準は動
的にプログラム可能になる。第1の実施形態でのストア
バッファ30における高水準31及び低水準32のレベ
ルは、実行中のプログラムの命令ストリームの性質に基
づいて動的に変更可能である。同様に、ストアバッファ
30の高水準31及びロードバッファの高水準のレベル
も動的に変更可能である。
【0059】今日のスーパースカラ・マイクロプロセッ
サでは、ロードバッファ及びストアバッファはそれぞれ
保留中のLOAD及びSTOREを待ち行列に入れるのに用いら
れている。これら2つのバッファはメモリへのアクセス
に対して競合することが多い。
【0060】本発明の第1の実施形態に基づき、ストア
バッファ30が一定の「高水準」31に達するまで、即
ちストアバッファ30が優先順位を得る時まで、ロード
バッファが常時、優位に立つようにとプロトコルは命令
している。ストアバッファ30は優先順位を得た後、
「低水準」32に減少するまで、即ちロードバッファが
優先順位を回復する時まで、メモリにアクセスし続け
る。ストアバッファ30が高水準31に達する時は常
時、低水準32に減少するまで優先順位を得ている。こ
うして、ストアバッファ30が満杯になってプロセッサ
を阻止する傾向が緩和されている。
【0061】本発明の第2の実施形態に基づき、ロード
バッファ60は高水準63を上回れば、常時、優位に立
っている。ロードバッファ60が高水準63を下回れ
ば、ストアバッファ61が高水準62に達するまで、即
ちストアバッファ61が優先順位を得る時まで、ロード
バッファ60は優位に立っている。ストアバッファ61
は優先順位を得た後、ロードバッファ60が高水準63
に達するまで、優先順位を保持している。こうして、何
れのバッファも満杯になってプロセッサを阻止する傾向
が緩和されている。
【0062】本発明の方法及び装置は、特に現時点にお
いて好ましい代替形態を参照して説明したが、当業者は
この開示により、本発明は請求の範囲の思想及び範囲内
にて変更及び改変が可能であると理解することができよ
う。従って、本明細書及び図面は限定するものではな
く、例示的なものであると考えるべきである。
【0063】
【発明の効果】以上詳述したように、本発明によれば、
バッファの容量が満杯になることによってプロセッサの
オペレーションが阻害され、機能停止に陥ることを防止
できるという優れた効果がある。
【図面の簡単な説明】
【図1】 従来のスーパースカラプロセッサのアーキテ
クチャの概略的なブロック図。
【図2】 ロードバッファ、ストアバッファ及び外部キ
ャッシュの間のインタフェースを詳細に示すロード/ス
トアユニットの概略的なブロック図。
【図3】 本発明の第1の実施形態に基づくストアバッ
ファの概略図。
【図4】 本発明の第1の実施形態に基づく方法を示す
フローチャート。
【図5】 本発明の第1の実施形態を実行するのに使用
可能な回路構造を示す図。
【図6】 本発明の第2の実施形態に基づくロードバッ
ファ及びストアバッファの概略図。
【図7】 本発明の第2の実施形態に基づく方法を示す
フローチャート。
【符号の説明】
20,60…ロードバッファ、21,30,61…スト
アバッファ、31,62;63…高水準、32…低水
準、40〜48;70〜78…ステップ,50…ストア
バッファ優先入力としてのストアバッファ優先信号、5
2…マルチプレクサ、53…ロードバッファアドレス、
54…ストアバッファアドレス、55…判定回路として
の判定ブロック、56…ロードアクセス出力としてのロ
ードアクセス信号、57…ストアバッファ要求信号、5
8…抑止回路としての抑止ブロック、59…ロードバッ
ファ要求入力としてのロードバッファ要求信号。
フロントページの続き (72)発明者 デール グリーンレイ アメリカ合衆国 95030 カリフォルニア 州 ロスゲトス オーバールック ロード 18401 (72)発明者 レスリー コーン アメリカ合衆国 94539 カリフォルニア 州 フレモント ローズメアー ドライブ 43967

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】 (a) 最初にロードバッファ及びストアバ
    ッファのいずれかに優先順位を与えるステップと、 (b) 前記ロードバッファ及びストアバッファの相互間に
    て優先順位を動的に切り換えるステップとを備えたメモ
    リ資源に対して競合するロードバッファ及びストアバッ
    ファを制御する方法。
  2. 【請求項2】 前記ステップ(a) において最初にロード
    バッファに優先順位を与える請求項1に記載の方法。
  3. 【請求項3】 (a)ロードバッファに優先順位を与えるス
    テップと、 (b) ストアバッファが高水準を上回るか否かをテストす
    るステップと、 (c) 前記ステップ(b) においてストアバッファが高水準
    を上回ると判定された時、ストアバッファに優先順位を
    与えるステップと、 (d) 前記ステップ(b) においてストアバッファが高水準
    以下であると判定された時、ステップ(a) に戻るステッ
    プとを備えたメモリ資源に対して競合するロードバッフ
    ァ及びストアバッファに優先順位を与える方法。
  4. 【請求項4】 (e)前記ストアバッファが低水準を下回る
    か否かをテストするステップと、 (f) 前記ステップ(e) においてストアバッファが低水準
    以上であると判定された時、ストアバッファに優先順位
    を与え、ステップ(e)に戻るステップと、 (g) 前記ステップ(e) においてストアバッファが低水準
    以下であると判定された時、前記ステップ(a)に戻る
    ステップとを更に備えた請求項3に記載の方法。
  5. 【請求項5】 (a)ロードバッファに優先順位を与えるス
    テップと、 (b)ロードバッファがロードバッファの高水準を上回る
    か否かをテストするステップと、 (c)前記ステップ(b)においてロードバッファがロード
    バッファの高水準を上回ると判定された時、ステップ
    (a)に戻るステップとを備えたメモリ資源に対して競合
    するロードバッファ及びストアバッファに優先順位を与
    える方法。
  6. 【請求項6】 (d)前記ステップ(b)においてロードバッ
    ファがロードバッファの高水準以下であると判定された
    時、ストアバッファがストアバッファの高水準を上回る
    か否かをテストするステップと、 (e)前記ステップ(d)においてストアバッファがストア
    バッファの高水準以下であると判定された時、ステップ
    (a)に戻るステップと、 (f)前記ステップ(d)においてストアバッファがストア
    バッファの高水準を上回ると判定された時、ストアバッ
    ファに優先順位を与えるステップと、 (g)前記ステップ(b)に戻るステップとを更に備えた請
    求項5に記載の方法。
  7. 【請求項7】 ロードバッファ要求入力、ストアバッフ
    ァ優先入力及びロードアクセス出力を有する抑止回路
    と、 選択入力及びメモリアドレスを伝達する出力を有し、1
    つの入力がロードバッファアドレスに割り当てられ、別
    の入力がストアバッファアドレスに割り当てられる2方
    向マルチプレクサと、 第1の入力及び第2の入力並びに出力を有し、第1の入
    力はストアバッファ要求信号に割り当てられ、第2の入
    力は抑止回路のロードアクセス出力に割り当てられ、出
    力は2方向マルチプレクサの選択入力を供給する判定回
    路とを備えたメモリアドレスを供給するための装置。
  8. 【請求項8】 前記ロードバッファ要求入力及びストア
    バッファ優先入力の双方が確認される時にロードアクセ
    ス出力が確認され、ロードバッファ要求入力及びストア
    バッファ優先入力のいずれかが確認されない時にロード
    アクセス出力が確認されない請求項7に記載の装置。
  9. 【請求項9】 前記判定回路はロードアクセス信号が確
    認される時にロードバッファアドレスを選択する出力を
    生成し、ロードアクセス信号が確認されず、かつストア
    バッファ要求信号が確認される時にストアバッファアド
    レスを選択する出力を生成する請求項7に記載の装置。
  10. 【請求項10】 ストアバッファが優先順位を有する時
    にロードバッファによるロードバッファ要求出力が生じ
    ることを抑止するステップと、 ロードバッファ要求が生じる時に出力用のロードバッフ
    ァアドレスを選択するステップと、 前記ストアバッファによるストアバッファ要求出力がロ
    ードバッファ要求の非存在下にて生じる時に、出力用の
    ストアバッファアドレスを選択するステップとを備えた
    メモリアドレス出力を供給するための方法。
  11. 【請求項11】 前記抑止ステップはストアバッファ優
    先信号によりロードバッファからの信号の論理積を形成
    することにより遂行される請求項10に記載の装置。
  12. 【請求項12】 最初にロードバッファ及びストアバッ
    ファのいずれかに優先順位を与えるための優先回路と、 前記ロードバッファ及びストアバッファの相互間にて優
    先順位を動的に切り換えるためのスイッチ回路とを備え
    たメモリ資源に対して競合するロードバッファ及びスト
    アバッファを制御するための装置。
  13. 【請求項13】 前記優先回路は最初にロードバッファ
    に優先順位を与える請求項12に記載の装置。
  14. 【請求項14】 前記ストアバッファが高水準を上回る
    か否かをテストするための第1のテスト回路と、 前記ストアバッファが高水準を上回ればストアバッファ
    に優先順位を与えるためのストアバッファ優先回路とを
    備えたメモリ資源に対して競合するロードバッファ及び
    ストアバッファに優先順位を与えるための装置。
  15. 【請求項15】 前記ストアバッファが低水準を下回る
    か否かをテストするための第2のテスト回路と、 前記ストアバッファが低水準を下回ればロードバッファ
    に優先順位を与えるためのロードバッファ優先回路とを
    更に備えた請求項14に記載の装置。
  16. 【請求項16】 前記ロードバッファがロードバッファ
    の高水準を上回るか否かをテストするための第1のテス
    ト回路と、 前記ロードバッファがロードバッファの高水準を上回れ
    ばロードバッファに優先順位を与えるためのロードバッ
    ファ優先回路とを備えたメモリ資源に対して競合するロ
    ードバッファ及びストアバッファに優先順位を与えるた
    めの装置。
  17. 【請求項17】 前記ストアバッファがストアバッファ
    の高水準を上回るか否かをテストするための第2のテス
    ト回路と、 前記ストアバッファがストアバッファの高水準を上回
    り、かつロードバッファがロードバッファの高水準を下
    回れば、ストアバッファに優先順位を与えるためのスト
    アバッファ優先回路とを更に備えた請求項16に記載の
    装置。
  18. 【請求項18】 ストアバッファが優先順位を有する時
    にロードバッファによるロードバッファ要求出力が生じ
    ることを抑止するための抑止回路と、 ロードバッファ要求が生じる時に出力用のロードバッフ
    ァアドレスを選択し、ストアバッファによるストアバッ
    ファ要求出力がロードバッファ要求の非存在下にて生じ
    る時に出力用のストアバッファアドレスを選択するため
    の選択回路とを備えたメモリアドレスを供給するための
    装置。
  19. 【請求項19】 前記抑止回路はロードバッファからの
    信号及びストアバッファの優先信号の論理積(AND) 回路
    である請求項18に記載の装置。
  20. 【請求項20】 前記高水準はプログラム可能である請
    求項3に記載の方法。
  21. 【請求項21】 前記低水準はプログラム可能である請
    求項4に記載の方法。
  22. 【請求項22】 前記ロードバッファの高水準はプログ
    ラム可能である請求項5に記載の方法。
  23. 【請求項23】 前記ストアバッファの高水準はプログ
    ラム可能である請求項6に記載の方法。
JP7330839A 1994-12-22 1995-12-19 スーパースカラプロセッサにおけるロードバッファ及びストアバッファの優先順位の動的切換え Pending JPH08221311A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US36129094A 1994-12-22 1994-12-22
US08/361290 1994-12-22

Publications (1)

Publication Number Publication Date
JPH08221311A true JPH08221311A (ja) 1996-08-30

Family

ID=23421438

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7330839A Pending JPH08221311A (ja) 1994-12-22 1995-12-19 スーパースカラプロセッサにおけるロードバッファ及びストアバッファの優先順位の動的切換え

Country Status (3)

Country Link
US (1) US5904732A (ja)
JP (1) JPH08221311A (ja)
KR (1) KR100404672B1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19982872B4 (de) * 1998-02-13 2006-11-30 Intel Corporation, Santa Clara System zum dynamischen Ändern der Ablaufpriorität eines Empfangsfifos
JP2016538629A (ja) * 2013-10-24 2016-12-08 クアルコム,インコーポレイテッド 抵抗メモリキャッシュの書込み動作の分割

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092158A (en) * 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams
US6029225A (en) * 1997-12-16 2000-02-22 Hewlett-Packard Company Cache bank conflict avoidance and cache collision avoidance
US6148372A (en) * 1998-01-21 2000-11-14 Sun Microsystems, Inc. Apparatus and method for detection and recovery from structural stalls in a multi-level non-blocking cache system
US6308214B1 (en) * 1998-09-23 2001-10-23 Inktomi Corporation Self-tuning dataflow I/O core
US6260090B1 (en) * 1999-03-03 2001-07-10 International Business Machines Corporation Circuit arrangement and method incorporating data buffer with priority-based data storage
KR20000060963A (ko) * 1999-03-22 2000-10-16 김영환 디지털 이동통신 시스템의 데이터 전송 자동 차단 방법
US6557095B1 (en) * 1999-12-27 2003-04-29 Intel Corporation Scheduling operations using a dependency matrix
US7343602B2 (en) * 2000-04-19 2008-03-11 Hewlett-Packard Development Company, L.P. Software controlled pre-execution in a multithreaded processor
US6757811B1 (en) * 2000-04-19 2004-06-29 Hewlett-Packard Development Company, L.P. Slack fetch to improve performance in a simultaneous and redundantly threaded processor
US6574707B2 (en) * 2001-05-07 2003-06-03 Motorola, Inc. Memory interface protocol using two addressing modes and method of operation
US6832280B2 (en) 2001-08-10 2004-12-14 Freescale Semiconductor, Inc. Data processing system having an adaptive priority controller
EP1341093B1 (fr) * 2002-02-26 2012-04-25 Nxp B.V. Accès à une ressource collective
KR100480605B1 (ko) * 2002-07-25 2005-04-06 삼성전자주식회사 네트워크 제어기의 송신부 버퍼 및 수신부 버퍼를제어하는 방법 및 네트워크 제어기
WO2005096162A1 (ja) * 2004-03-18 2005-10-13 Matsushita Electric Industrial Co., Ltd. アービトレーション方法及び装置
WO2005106648A2 (en) * 2004-04-15 2005-11-10 Sun Microsystems, Inc. Entering scout-mode when speculatiive stores exceed the capacity of the store buffer
WO2005121948A1 (en) * 2004-06-02 2005-12-22 Sun Microsystems, Inc. Method and apparatus for enforcing membar instruction semantics in an execute-ahead processor
US20070060135A1 (en) * 2005-08-22 2007-03-15 Jeng-Tay Lin Method and device for streaming wireless digital content
TWI326544B (en) * 2006-11-15 2010-06-21 Ind Tech Res Inst An intelligent heterogeneous network packet dispatcher methodology
US20080282050A1 (en) * 2007-05-07 2008-11-13 On Demand Microelectronics Methods and arrangements for controlling memory operations
US20150074357A1 (en) * 2013-09-09 2015-03-12 Qualcomm Incorporated Direct snoop intervention

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4298954A (en) * 1979-04-30 1981-11-03 International Business Machines Corporation Alternating data buffers when one buffer is empty and another buffer is variably full of data
US4860193A (en) * 1986-05-22 1989-08-22 International Business Machines Corporation System for efficiently transferring data between a high speed channel and a low speed I/O device
US4888739A (en) * 1988-06-15 1989-12-19 Cypress Semiconductor Corporation First-in first-out buffer memory with improved status flags
US5125096A (en) * 1988-10-31 1992-06-23 International Business Machines Corporation System for implementing to a packet switch protocol for a multinode data communications network utilizing separate data and control paths
US5369775A (en) * 1988-12-20 1994-11-29 Mitsubishi Denki Kabushiki Kaisha Data-flow processing system having an input packet limiting section for preventing packet input based upon a threshold value indicative of an optimum pipeline processing capacity
US4969164A (en) * 1989-04-27 1990-11-06 Advanced Micro Devices, Inc. Programmable threshold detection logic for a digital storage buffer
US5694553A (en) * 1994-01-04 1997-12-02 Intel Corporation Method and apparatus for determining the dispatch readiness of buffered load operations in a processor
US5524263A (en) * 1994-02-25 1996-06-04 Intel Corporation Method and apparatus for partial and full stall handling in allocation

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19982872B4 (de) * 1998-02-13 2006-11-30 Intel Corporation, Santa Clara System zum dynamischen Ändern der Ablaufpriorität eines Empfangsfifos
JP2016538629A (ja) * 2013-10-24 2016-12-08 クアルコム,インコーポレイテッド 抵抗メモリキャッシュの書込み動作の分割

Also Published As

Publication number Publication date
KR100404672B1 (ko) 2004-04-06
US5904732A (en) 1999-05-18

Similar Documents

Publication Publication Date Title
JPH08221311A (ja) スーパースカラプロセッサにおけるロードバッファ及びストアバッファの優先順位の動的切換え
TW502173B (en) Method and apparatus to force a thread switch in a multithreaded processor
KR100403658B1 (ko) 컴퓨터 프로세서 및 컴퓨터 처리 시스템
US5907702A (en) Method and apparatus for decreasing thread switch latency in a multithread processor
US6049867A (en) Method and system for multi-thread switching only when a cache miss occurs at a second or higher level
JP3714598B2 (ja) マルチスレッド式プロセッサでのスレッド優先順位の変更
JP3875738B2 (ja) ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置
EP1027645B1 (en) Thread switch control in a multithreaded processor system
US6105051A (en) Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US5500943A (en) Data processor with rename buffer and FIFO buffer for in-order instruction completion
JP3093639B2 (ja) プロセッサ内の資源割当て追跡方法及びそのシステム
KR100745904B1 (ko) 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로
US9436464B2 (en) Instruction-issuance controlling device and instruction-issuance controlling method
US6981133B1 (en) Zero overhead computer interrupts with task switching
US6671196B2 (en) Register stack in cache memory
WO2001038970A2 (en) Buffer memories, methods and systems for buffering having seperate buffer memories for each of a plurality of tasks
JP4381951B2 (ja) ネスト状割込みシステムの割込み優先順位制御
JP2004287883A (ja) プロセッサ、計算機及び優先度決定方法
WO2002046887A2 (en) Concurrent-multitasking processor
JP4631442B2 (ja) プロセッサ
JPH03134759A (ja) 割込み優先順位制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040906

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041012

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050405