JP2004527054A - コンピュータ・システムにおいて命令を処理する方法および装置 - Google Patents

コンピュータ・システムにおいて命令を処理する方法および装置 Download PDF

Info

Publication number
JP2004527054A
JP2004527054A JP2002589971A JP2002589971A JP2004527054A JP 2004527054 A JP2004527054 A JP 2004527054A JP 2002589971 A JP2002589971 A JP 2002589971A JP 2002589971 A JP2002589971 A JP 2002589971A JP 2004527054 A JP2004527054 A JP 2004527054A
Authority
JP
Japan
Prior art keywords
memory
instruction
instructions
processor
location
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2002589971A
Other languages
English (en)
Other versions
JP3752224B2 (ja
Inventor
ビラルディ、ジアンフランコ
パットナイク、プラタプ、チャンドラ
エカナドハム、カタムリ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2004527054A publication Critical patent/JP2004527054A/ja
Application granted granted Critical
Publication of JP3752224B2 publication Critical patent/JP3752224B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • G06F9/383Operand prefetching
    • 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
    • G06F9/3834Maintaining memory consistency
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Complex Calculations (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】パイプライン形態で処理しうるメモリ要求を無限個発行しうるプロセッサを構築する。
【解決手段】コンピュータ・システムにおいて、(1)高度にパイプライン化したメモリに発行する要求の個数を最大化し、唯一の限界がプログラムにおけるデータ依存性のみであるようにするとともに、(2)メモリ(10)への対応するライトより前のメモリからのリードを避けうるようにメモリ命令を発行し実行する方法と装置を提供する。メモリ命令は明示的に移動(move)命令(21)を使用してメモリに対するリードとライトを構成する。これにより、プロセッサ(9)におけるデータ記憶の限界を避けることができる。メモリ要求は完全な情報を運ぶように構成する。これにより、メモリが要求されたデータを返したらすぐにメモリ要求を処理することが可能になる。メモリは多数の領域に分割する。各領域はフェンス・カウンタ(18)に関連付けられている。あるメモリ領域用のフェンス・カウンタは当該メモリ領域を目標とするメモリ命令を発行するごとにインクリメントし、当該メモリ領域へのライトが存在するごとにデクリメントする。フェンス命令を発行したら、フェンス命令が特定しているメモリ領域用のカウンタがしきい値を超えている場合にはさらなるメモリ命令(23)を発行しない。未決の発行済み命令を十分な個数実行すると、カウンタはしきい値未満にデクリメントされているから、さらなる命令を発行することができる。
【選択図】図1

Description

【技術分野】
【0001】
本発明はコンピュータ・システムにおいて命令を発行し実行する方法と装置に関する。
【背景技術】
【0002】
現在のプロセッサが複雑なのはメモリ・アクセスの待ち時間を覆い隠そうとしている点にその理由の大部分があるといえる。マルチスレッド、アウト・オブ・オーダー処理、メモリ・データのプリフェッチ、投機的実行はすべてこれの例である。技術動向が示すところによれば、メモリ速度はプロセッサ速度に追いつきそうもない。現在のメモリ設計はパイプライン機能と階層機能の極限を呈しているが、本発明者らは同時係属出願において一定の帯域幅で線形の待ち時間機能を実現するスケーラブル(拡張が容易な)パイプライン階層の設計を提示した。その同時係属出願(IBMドケット番号YOR920010439US1)は本願と同時に出願したが、「スケーラブル・メモリ」なる名称である。しかし、現在のプロセッサは未処理のメモリ要求を記憶しておこうとするから、このような無限のパイプラインを利用することはできない。現在のプロセッサは限られたリソースしか保持していないから、メモリ・パイプラインをきわめて限定された程度にしか利用することができない。リソースはタグに付随する命令に関する情報を格納するバッファを有限個備えている。たとえば、IBM PowerPC(R)が保持しうる未処理のメモリ・オペレーションは高々8〜16個であるが、競合する他のプロセッサが保持しうる限界はこれより少ない。この限界が存在する理由は、プロセッサは、保留中のメモリ要求を記憶しておきそれが到着したらデータをさらに処理するよう指示する専用のリソースを備えているからである。たとえば、発行済みのメモリ命令に対する応答がコンピュータ・システムのメモリから返ってくるとき、その応答にはメモリから取得したデータとメモリ・タグしか含まれていない。上記発行済みの命令を実行するためには、タグを用いて命令コードとプロセッサのバッファに格納されている目標アドレスを取得する。限界の別の要因はプロセッサに設けられているレジスタが有限個であること、およびプロセッサはレジスタに存在しないデータを処理できないことである。現在のプロセッサでは命令はプロセッサのレジスタに存在するオペランドを用いないと実行できないから、レジスタの個数によって同時並行的に実行しうる命令の個数の限界が決まる。
【発明の開示】
【発明が解決しようとする課題】
【0003】
本発明の目的はパイプライン形態で処理しうるメモリ要求を無限個発行しうるプロセッサを構築することである。
【課題を解決するための手段】
【0004】
本発明の一側面はパイプライン形態で処理しうるメモリ要求を無限個発行しうるプロセッサを構築することである。この側面はすべての命令をメモリからのデータを操作しうるように構成し、返りデータを独立に処理するのに十分な情報をメモリ要求に詰め込むことにより達成する。この側面によって、プロセッサの命令発行コンポーネントと命令実行コンポーネントとが分離される。これらの各々はきわめて少ない状態情報しか保持しておらず、ほとんど「無状態」の形態で動作する。このきわめて少ない状態情報にはプログラム・カウンタといくつかのフェンス・カウンタが含まれる。
【0005】
本発明の別の側面はメモリへの対応するライトの前にメモリからデータをリードするのを避けること、すなわち、いわゆるリード・アフター・ライト・ハザードを避けることである。この側面は、プロセッサが多数の命令を発行するが、発行した命令のすべてが実行されるわけではない、すなわち、完了していないメモリへの未決のライトが多数個存在する場合に特に重要である。このような多数個の扱いは(本願の譲受人と同じ譲受人に承継された)上述した同時係属出願に記載されている線形メモリを使用することにより可能になる。本発明ではフェンス・カウンタすなわち多数のメモリ領域の各々用のカウンタを保持することにより、リード・アフター・ライト・ハザードを避けている。この場合、カウンタ値を用いてプロセッサが命令をさらに発行するのを制御している。本発明によると、特定のメモリ領域を指定したフェンス命令を発行すると、その特定のメモリ領域用のカウンタがしきい値を超えている場合にはさらなる命令を発行しない。各メモリ領域について、その目標の場所があるメモリ領域に存在する命令を発行するごとに、当該メモリ領域用のカウンタをインクリメントする。そして、ある命令が当該メモリ領域へのライトを実行するごとに、当該メモリ領域用のカウンタをデクリメントする。
しきい値は通常、ゼロに設定する。
【発明を実施するための最良の形態】
【0006】
図1はスケーラブル・プロセッサ・システム100の一般的な概略図である。それは上述したIBMドケット番号YOR920010439に記載されている線形メモリ16を使用している。説明を便宜にするために、リード要求用に1つのポート3を備え、ライト要求用に2つのポート4を備えるように当該メモリを拡張した。このようにしたのは純粋に各サイクルで2つの結果を供給しうる線形メモリ16に適合するためである。2つの実行ユニット17はこれらの結果14を利用し、ライト要求を独立に出す。この構成により、これらの線12上にある要求は互いに干渉しないことが保証される。
【0007】
上(のぼ)り経路は3つの同時並行的な経路11〜12に分割されている。1つの経路11はメモリへのリード要求を運び、残りの2つの経路12はメモリへのライト要求を運ぶ。こうするのは純粋に便宜上であり、こうすることにより入力帯域幅が広くなることは全くない。
【0008】
リード要求は2つの目標アドレスxとyを運ぶ。リード要求はまず始めの場所に行ってデータを収集し、次いで上り経路を辿り第2の場所へ行って第2のデータ片をを収集する。結果は要求されたデータ項目対を運びながら下り経路13を辿る。この結果、経路の待ち時間は確実に増大するが、帯域幅に対する配慮は全く変化しない。
【0009】
〔命令形式:〕
プロセッサはレジスタを持たず、そのすべてのデータに対して線形メモリ階層(レジスタを表わす最下層レベル)を使用する。命令の一般形式は、
op(x,y,z)(ただしx、y、zはメモリ上の場所のアドレスである)
である。その意味は場所xおよびyにあるデータについて演算(op)を実行し、その結果を場所zにストアするということである。単項演算の場合には第2のオペランドを省略してもよい。単項命令が頻繁に使用されるのはmove(x,z)命令である。この命令は場所xから場所zにデータをコピーするものである。
【0010】
〔命令の発行と実行〕
図1を参照する。プロセッサ9は命令50を発行する単一の発行ユニット19と2つの実行ユニット17から成る。各実行ユニット17はデータが利用できるときにはすべての演算を実行することができる。発行ユニットと実行ユニットのうちのいくつかは単一のハードウェア・チップ上に形成されるハードウェアに実装することができる。命令は2つのフェーズすなわち発行フェーズと実行フェーズを経る。発行フェーズでは、線形メモリ10にデュアル・オペランド・フェッチを依頼する。その要求には演算コードと宛先情報を付加するが、それらはデータとともに返される。実行フェーズはメモリがデュアル・オペランド・データを返したときに始まる。各実行ユニットはオペランド・データ14を受け取り、演算を実行し、結果をストアするライト要求をメモリ10に出す。命令はプログラム中に列挙されているのと同じ順序で発行する。メモリは命令が特定している以外のデータ移動を行わないから、プログラムはメモリを完全に制御しており、それが必要なときおよび場合にデータをプロセッサに近づける移動命令を発行することにより明示的にメモリ管理を行う。メモリのパイプライン化された性質により、他の命令の実行中にデータを同時並行的に移動させることが容易になる。通常、本発明を使用すると、プログラマーは移動命令を使用してプロセッサがあるデータを必要とするときまでに当該データを当該プロセッサに届けることができるようになる。
【0011】
〔リード・アフター・ライト・ハザード〕
発行ユニットと実行ユニットは同時並行的に動作しているから、ある場所へのライト・オペレーションを実行依頼したあとに該場所への対応するリード・オペレーションを実行依頼することを保証する必要がある。以下、図2を参照して説明する。命令op(x,y,z)の場合、zへのライト要求は当該命令の発行と実行の間は未決であると言われる。後述するように、メモリ領域への未決のライトを追跡することによりハザードを避けることができる。図2では、実線の経路で移動(move)命令21の実行方法を示している。移動(move)命令21が発行されると、場所yがリード(read)され、データは実行ユニット17に流入する。実行ユニット17が実行すると、結果は場所xに送られてストア(store)される。しかし、発行ユニットが同時並行的に進行しており、移動(move)命令21に続いて別の命令を発行する。引き続く命令の一例は加算(add)命令22である。加算(add)命令22の経路を破線11aで示す。もし、この加算(add)命令が先行するxへのストア(store)を実行する前に発行されると、ハザードが発生する。
【0012】
〔フェンス(fence)カウンタ〕
プロセッサは有限組のフェンス・カウンタを備えている。各フェンス・カウンタは1つのメモリ領域に関連付けられている。メモリ領域のサイズを2の巾(べき)乗で選定すると、log N個必要になるだけである。したがって、log N個のカウンタを保持することは実際上、深刻な限界ではない。図3を参照する。op(x,y,z)のような命令を発行する(31)ごとに、zを含む範囲に関連付けられたフェンス・カウンタをインクリメントする(36)。そして、たとえば場所xとyにあるデータをリードする要求をメモリに送る(図3の37を参照)。取得したデータたとえば(データ1,データ2)は実行ユニットに転送する(図3の38を参照)。実行ユニットが当該演算すなわちop(データ1,データ2)を実行し(33)、場所zにライト要求を出したら(33)、対応するフェンス・カウンタ(図1の18を参照)をデクリメントする(34)。したがって、フェンス・カウンタはそれに関連付けられた範囲の場所への未決のライトの個数を保持している。フェンス(fencing:防護)は(リリース・コンシステンシー・モデル(release consistency model)様式の) プログラムによって、fence(メモリ領域)なる形をした特別の命令を挿入することにより明示的に行う(図2の23を参照)。発行ユニットがフェンス命令に遭遇すると(32)、発行ユニットは対応するフェンス・カウンタがゼロになるまでストールする(35)。プログラムはリード・ライト・ハザードを避けるためにこのメカニズムを使用することができる。また、このメカニズムはフェンス・オペレーション用に範囲と配置を賢明に選定することにより効果的に実現することができる。通常、カウンタはハードウェアで実装する。
【0013】
極端な場合、すべての演算がその目標の場所についてフェンスによってうまくいく。これが正しく機能している間、実行はほとんど順次に行われる。ある領域にライトしたのち、その領域から別の領域にアクセスする前にフェンス命令を提示する命令群をできるかぎり多く集積するようにプログラムを構成することができる。フェンス・オペレーションの位置を賢明に選定しうるようにコンパイラ技術を開発することができる。
【0014】
図4はスケーラブル・プロセッサ・システム100の一般的な概略図である。それは線形メモリ16を使用している。説明を便宜にするために、リード要求用に1つのポート3を備え、ライト要求用に2つのポート4を備えるように当該メモリを拡張した。このようにしたのは純粋に各サイクルで2つの結果を供給しうる線形メモリ10に適合するためである。2つの実行ユニット17はこれらの結果14を利用し、ライト要求を独立に出す。この構成により、これらの線12上にある要求は互いに干渉しないことが保証される。
【0015】
リード要求は2つの目標アドレスxとyを運ぶ。リード要求はまず始めの場所に行ってデータを収集し、次いで上り経路を辿り第2の場所へ行って第2のデータ片をを収集する。結果は要求されたデータ項目対を運びながら下り経路13を辿る。
【0016】
ここで提案するメモリ・システム10の構造を図4に示す。説明を容易にするために、システムは1次元に並べた一連の基本構成要素を備えているように示してある。基本構成要素はプロセッサに近いL1から始まりプロセッサから離れるのにつれて増加するように番号が付されている。i番目の基本構成要素Liは各々、miと表記された単位メモリおよび2つのコントローラuiとdiを備えている。コントローラuiはすべて単一のリンク5によって接続され、プロセッサからメモリ・セルまで要求を運ぶ「上り経路」を形成している。コントローラdiはリンク対7によって接続され、メモリ・セルからプロセッサまで応答を運ぶ「帰り経路」を形成している。この構成では、プロセッサからの上り経路に単位時間に1つの要求を保持するが、プロセッサは帰り経路には単位時間に最大2つの応答を受け取りうることが必要である。したがって、この構成では、入力帯域幅の2倍の出力帯域幅を必要とする。また、このメモリ・システムに接続された単一のプロセッサ9が示してある。本発明のメモリ・システムには、(本願の譲受人が同時並行的に出願した)関連出願に記載したようなプロセッサを用いることができる。メモリ要求には目標メモリ・セル・アドレス、オペレーション(リード/ライト)、およびデータ(ライト・オペレーションの場合)が特定されている。サイズnのメモリの場合、目標アドレスは1〜nの任意の整数である。nより大きな任意の数を用いてノーオペレーション(すなわちプロセッサが実際の要求を出さなかった)をシミュレートすることができる。
【0017】
要求と応答はメモリが解釈しない追加の情報も運ぶ。たとえば、プロセッサが
op(x,z)(ただし、x、zはメモリ上の場所のアドレス)
という形の命令を実行する場合、その意味はメモリ上の場所xからデータを取得し演算(op)を実行し結果をメモリ上の場所zにストアするということである。この命令の場合、出されるメモリ要求は
[read,x,データなし,<op,z>]
という形をしている。この要求に対する応答は
[read,x,データ,<op,z>]
という形をしている。この場合、データは場所xから取得した情報である。この応答は帰り経路上を一連の第2のコントローラを通りプロセッサに転送される。上に示した例において、プロセッサが応答を受け取ると、データについて演算を実行し結果たとえばwを得る。次いで、結果wをメモリ上の場所zにストアする別の要求がプロセッサから上り経路上を第1のコントローラを通って転送される。この要求の形式は
[write,z,w,情報なし]
のような形をしている。これは値wを場所zに格納するということを意味している。
【0018】
目標アドレスiを備えた要求は各々、上り経路を辿り、そのコピーがあらゆるレベルのメモリ・ユニットに到達する。メモリ・ユニットmiはオペレーションに応じてデータをリードまたはストアし、それをコントローラdiに転送する。ライト・オペレーションは応答を生成することなくここで終了する。一方、リード・オペレーションは要求を応答に変換させる。この応答は帰り経路を辿ってプロセッサに到達する。いま1通信リンクを行くのに1単位時間を要しメモリをリードするのに1単位時間要するものと仮定すると、目標アドレスiに対するリード要求はその行程の間に輻輳(ふくそう)がない場合、(2i+1)単位時間要する。コントローラは輻輳を処理し、かつ、要求または応答の流れが先行する節で述べた要件に従うことを保証するように設計されている。以下、図5を参照してui、mi、およびdiの詳細な論理を詳述する。
【0019】
〔各サイクルにおけるオペレーション〕
〔図4参照〕
・ uiが各要求を受け取るごとに、1つのコピーをmiに送り別のコピーをui+1に送る。最上位では(すなわちiがnの場合)、第2のコピーは単に破棄する。
・ miはリード・オペレーションの場合にはメモリから要求にデータをコピーしたのち、ライト・オペレーションの場合には要求からメモリにデータをコピーしたのち要求を常にdiに転送する。
・ 図4に示すように、diはFIFOキューとして構成された内部バッファ6を3個備えている。各サイクルの始めに、diはdi+1からの2つのリンクに存在する要求に対する応答をすべてその内部バッファに転送する。次いで、次に示すアルゴリズム(図5のフローチャートを参照)を用いて応答をdi-1へ外出する2つのリンクにのせる。
(1)miが出す要求が場所iに対するリードである場合、それを応答に変換したのち外出するリンクにのせる。さらに、(もしあれば)diの内部バッファが出す応答を1つ除去して外出するリンクにのせる(図5の51を参照)。
(2)miが出す要求が場所iに対するライトである場合(52)、あるいは要求がより高い場所を目標としている場合、(もしあれば)diの内部バッファが出す応答を最大限2つ除去して外出するリンクにのせる(54)。
(3)miが出す要求が低い場所に対するものである場合(55)、(もしあれば)diの内部バッファが出す応答を1つ除去して外出するリンクにのせる(56)。
【0020】
〔モデルの性質〕
次に、スケーラビリティ(拡張容易性)に必要な2つの性質、すなわち各ユニットにおけるバッファ・サイズが一定でるあこと、およびアクセス待ち時間が線形であることを示す。
・ すべてのdiの内部バッファのサイズは決して3を超えることがない。図6は各サイクル後のdiにおける満たされたバッファの個数であるxiに対する可能な遷移を示す図である。状態xi=3に対するインバリアント(不変数)が明確に示すところによれば、該状態では入来するリンクを通じて入来しうる応答は高々1個であり、これによりxiは決して3を超えることがないことが保証される。このインバリアントを示すために、状態xi=3に入る2つの可能な遷移を調べる。まず、状態xi=3への第1の遷移を考える。この遷移は始めにxi=2のときに起こり、di+1からのリンクである2つの入来する弧(図4の7を参照)は両方とも応答を運んでおり、miへの要求は場所i以下へのものである。これにより、次のサイクルでは、di+1から入来する弧には高々1つの応答しか存在しえないということが保証される。その理由は、mi+1は次のサイクルで、miがこのサイクルで処理したのと同じ応答のコピーを処理するから、di+1は上述したアルゴリズムの場合3を行い、1つの応答しか出力しない(図5の55と56を参照)からである。次に、状態xi=3への第2の遷移を考える。この遷移は始めにxi=3のときに起こり、di+1から入来する要求は1つであり、miへの要求は場所i以下のものである。これによりここでも、次のサイクルでは、di+1から入来する弧には高々1つの応答しか存在しえないということが保証される。
・ 場所iに対するリード要求は対応する応答を(4i+1)サイクル以内にプロセッサに返す。リード要求に対する応答は(i+1)サイクル後にdiに到達する。なぜなら、その経路長が(i+1)であり、これらの経路における遅延はないからである。コントローラdiはそれをすぐに外出する弧にのせる。というのは、コントローラdiは上記アルゴリズムの場合1を実行するからである。上記アルゴリズムによると、バッファはすべてFIFO順に空(から)にし、毎サイクルごとに1つのバッファが出す少なくとも1つの応答を除去する。したがって、diが出す応答はプロセッサに到達する前に最大3i単位時間の遅延に遭遇する。それゆえ、上り経路に要求を転送し対応する応答をプロセッサへの帰り経路に転送するのに要する合計遅延は高々(4i+1)である。
【0021】
この構成によれば各場所におけるメモリ・オペレーションの順序が保存されるが、様々な場所におけるオペレーション完了の順序は不明であることが観察される。ここで提案するメモリ・システムはメモリ・チップに組み込まれている標準のメモリ論理回路を用いて実装することができる。
【図面の簡単な説明】
【0022】
【図1】本発明に係るスケーラブル・プロセッサの概略図である。
【図2】リード・オペレーションが対応するライト・オペレーションより前に出されると起こるリード・アフター・ライト・ハザードの概略を説明する図である。
【図3】本発明のプロセッサとともに使用しうる線形メモリ・システムの概略図である。
【図4】プロセッサへの要求に対する応答を転送する、コントローラで使用する論理のフローチャートを示す図である。
【図5】各状態が、コントローラdiのバッファに格納されている応答の個数を示す状態図である。
【符号の説明】
【0023】
3 リード要求用のポート
4 ライト要求用のポート
5 リンク
6 バッファ
7 リンク
9 プロセッサ
10 線形メモリ
11 上り経路
12 上り経路
13 下り経路
14 オペランド・データ
17 実行ユニット
18 フェンス・カウンタ
19 発行ユニット
21 移動(move)命令
22 加算(add)命令
23 フェンス(fence)命令
50 命令
100 スケーラブル・プロセッサ・システム

Claims (10)

  1. コンピュータ・システムにおいて命令を処理する方法であって、
    前記プロセッサが発行し指定したメモリ領域を目標とする未決のライト命令の個数がしきい値を超えているか否かを判断するステップと、
    前記メモリ領域を指定したフェンス命令を発行するステップと
    を備え、
    前記指定した領域を目標とする未決のライトの前記個数が前記しきい値未満になるまで前記プロセッサがさらなる命令を発行しない、
    方法。
  2. コンピュータ・システムにおいて命令を処理する装置であって、
    前記プロセッサが発行し指定したメモリ領域を目標とする未決のライト命令の個数がしきい値を超えているか否かを判断するとともに、前記メモリ領域を指定したフェンス命令を発行する発行ユニット
    を備え、
    前記指定した領域を目標とする未決のライトの前記個数が前記しきい値未満になるまで前記プロセッサがさらなる命令を発行しない
    装置。
  3. 命令を処理するシステムであって、
    データを格納するメモリと、
    発行ユニットであって、多数の命令の各々に応答して前記メモリからオペランド・データを取得し、前記メモリまたは前記発行ユニットに格納することなく、前記各命令の演算コードおよび前記各命令の目標の場所を転送する発行ユニットと、
    前記演算コードに従い前記データをオペレーションし、前記データについての前記オペレーションの結果を前記目標の場所が特定している前記メモリ中の場所に格納する実行ユニットと
    を備え、
    前記目標の場所、前記演算コード、および前記オペランド・データを前記実行ユニットが取得する
    システム。
  4. コンピュータ・システムにおいて命令を処理する方法であって、
    多数の命令の各々に応答して、
    メモリからオペランド・データを取得し、該オペランド・データ、演算コード、および目標の場所を前記システムに関連付けられた実行ユニットに転送するステップと、
    前記演算コードに従い前記オペランド・データについてオペレーションすることにより各命令を実行し、前記オペランド・データについてのオペレーション結果を前記目標の場所が特定している前記メモリ中の場所に格納するステップと
    を備えた
    方法。
  5. コンピュータ・システムにおいてメモリ命令を処理する方法であって、
    多数のメモリ命令の各々に応答して、
    メモリからオペランド・データを取得し、該オペランド・データ、演算コード、および目標の場所を前記システムに関連付けられた実行ユニットに転送し、前記演算コードに従い前記オペランド・データについてオペレーションすることにより各命令を実行し、前記オペランド・データについてのオペレーション結果を前記目標の場所が特定している前記メモリ中の場所に格納するステップと、
    メモリ領域を指定したフェンス命令を発行するステップと
    を備え、
    前記指定した領域へのライトの個数が前記しきい値未満になるまでプロセッサがさらなる命令を発行しない
    方法。
  6. 命令を処理するシステムであって、
    データを格納するメモリと、
    多数のメモリ命令の各々に応答して、前記メモリからオペランド・データ、前記各メモリ命令の演算コード、および前記各メモリ命令の目標の場所を取得する発行ユニットと、
    前記演算コードに従い前記データについてオペレーションすることにより前記多数のメモリ命令の各々を実行し、前記目標の場所が特定している前記メモリ中の場所に前記データについてのオペレーション結果を格納する実行ユニットと
    を備え、
    前記目標の場所、前記演算コード、および前記オペランド・データは前記実行ユニットが前記メモリを通じて前記発行ユニットから取得し、
    前記発行ユニットはメモリ領域を指定するフェンス命令をも発行し、前記指定した領域の各々について、前記各領域への未決のライトの個数が対応するしきい値未満になるまでさらなるメモリ命令を発行しない
    システム。
  7. コンピュータ・システムにおいて命令を処理する方法であって、
    前記システムのプロセッサが、メモリに対してリードまたはライトするメモリ命令を発行したら、前記発行した命令の目標アドレスが特定しているメモリ上の場所を含むメモリ領域に関連付けられたカウンタをインクリメントするステップと、
    前記システムのプロセッサがメモリ命令を実行したら、前記実行した命令の目標アドレスが特定しているメモリ上の場所を含むメモリ領域に関連付けられたカウンタをデクリメントするステップと、
    メモリ領域を指定したフェンス命令を発行するステップと
    を備え、
    前記指定した領域に関連付けられた前記カウンタがしきい値未満になるまで、さらなる命令を発行しない
    方法。
  8. コンピュータ・システムにおいて命令を処理する装置であって、
    前記システムのプロセッサが、メモリに対してリードまたはライトするメモリ命令を発行したら、前記発行した命令の目標アドレスが特定しているメモリ上の場所を含むメモリ領域に関連付けられたカウンタをインクリメントする手段と、
    前記システムのプロセッサがメモリ命令を実行したら、前記実行した命令の目標アドレスが特定しているメモリ上の場所を含むメモリ領域に関連付けられたカウンタをデクリメントする手段と、
    フェンス命令を発行する手段と
    を備え、
    前記指定した領域に関連付けられた前記カウンタがしきい値未満になるまで、さらなる命令を発行しない
    装置。
  9. コンピュータ・システムにおいて命令を処理する方法であって、
    前記システムのプロセッサが、メモリに対してリードまたはライトする命令を発行したら、前記発行した命令の目標アドレスが特定しているメモリ上の場所を含むメモリ領域に関連付けられたカウンタをインクリメントするステップと、
    前記システムのプロセッサがメモリ命令を実行したら、前記実行した命令の目標アドレスが特定しているメモリ上の場所を含むメモリ領域に関連付けられたカウンタをデクリメントするステップと、
    メモリ領域を指定したフェンス命令を発行するステップと
    を備え、
    前記発行した各命令は前記メモリから取得したデータ、演算コード、および目標の場所を含み、
    前記指定した領域に関連付けられた前記カウンタがしきい値未満になるまで、さらなる命令を発行しない
    方法。
  10. コンピュータ・システムにおいて命令を処理する装置であって、
    前記システムのプロセッサが、メモリに対してリードまたはライトする命令を発行したら、前記発行した命令の目標アドレスが特定しているメモリ上の場所を含むメモリ領域に関連付けられたカウンタをインクリメントする手段と、
    前記システムのプロセッサがメモリ命令を実行したら、前記実行した命令の目標アドレスが特定しているメモリ上の場所を含むメモリ領域に関連付けられたカウンタをデクリメントする手段と、
    メモリ領域を指定したフェンス命令を発行する手段と
    を備え、
    前記発行した各命令は前記メモリから取得したデータ、演算コード、および目標の場所を含み、これにより前記発行した各命令は発行した各命令に含まれていない情報とは無関係に実行することができ、
    前記指定した領域に関連付けられた前記カウンタがしきい値未満になるまで、さらなる命令を発行しない
    装置。
JP2002589971A 2001-05-11 2001-12-21 コンピュータ・システムにおいて命令を処理する方法および装置 Expired - Fee Related JP3752224B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/854,243 US6978360B2 (en) 2001-05-11 2001-05-11 Scalable processor
PCT/US2001/049282 WO2002093362A1 (en) 2001-05-11 2001-12-21 Issuance and execution of memory instructions to avoid read-after-write hazards

Publications (2)

Publication Number Publication Date
JP2004527054A true JP2004527054A (ja) 2004-09-02
JP3752224B2 JP3752224B2 (ja) 2006-03-08

Family

ID=25318133

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002589971A Expired - Fee Related JP3752224B2 (ja) 2001-05-11 2001-12-21 コンピュータ・システムにおいて命令を処理する方法および装置

Country Status (10)

Country Link
US (1) US6978360B2 (ja)
EP (1) EP1388053A4 (ja)
JP (1) JP3752224B2 (ja)
CN (2) CN100489770C (ja)
CA (1) CA2447425C (ja)
CZ (1) CZ20032948A3 (ja)
HU (1) HUP0400049A3 (ja)
PL (1) PL364643A1 (ja)
TW (1) TW567435B (ja)
WO (1) WO2002093362A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10503512B2 (en) 2014-11-13 2019-12-10 Arm Limited Context sensitive barriers with an implicit access ordering constraint for a victim context
KR20200135717A (ko) * 2019-05-24 2020-12-03 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 액세스 요청 처리 방법, 장치, 기기 및 저장 매체

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4434534B2 (ja) * 2001-09-27 2010-03-17 株式会社東芝 プロセッサ・システム
US7730282B2 (en) 2004-08-11 2010-06-01 International Business Machines Corporation Method and apparatus for avoiding data dependency hazards in a microprocessor pipeline architecture using a multi-bit age vector
US7603544B2 (en) * 2004-12-23 2009-10-13 Intel Corporation Dynamic allocation of a buffer across multiple clients in multi-threaded processor without performing a complete flush of data associated with allocation
US8271765B2 (en) * 2009-04-08 2012-09-18 International Business Machines Corporation Managing instructions for more efficient load/store unit usage
CN101853150B (zh) * 2009-05-29 2013-05-22 威盛电子股份有限公司 非循序执行的微处理器及其操作方法
CN102789439B (zh) * 2012-06-16 2016-02-10 北京忆恒创源科技有限公司 控制数据传输过程中的中断的方法与存储设备
US9026720B2 (en) * 2013-02-07 2015-05-05 Apple Inc. Non-volatile memory monitoring
US10489158B2 (en) * 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
US10095637B2 (en) * 2016-09-15 2018-10-09 Advanced Micro Devices, Inc. Speculative retirement of post-lock instructions
US11048633B2 (en) * 2016-09-27 2021-06-29 Spin Memory, Inc. Determining an inactive memory bank during an idle memory cycle to prevent error cache overflow
US11119910B2 (en) 2016-09-27 2021-09-14 Spin Memory, Inc. Heuristics for selecting subsegments for entry in and entry out operations in an error cache system with coarse and fine grain segments
US11151042B2 (en) 2016-09-27 2021-10-19 Integrated Silicon Solution, (Cayman) Inc. Error cache segmentation for power reduction
US11119936B2 (en) 2016-09-27 2021-09-14 Spin Memory, Inc. Error cache system with coarse and fine segments for power optimization
US11386010B2 (en) 2016-09-27 2022-07-12 Integrated Silicon Solution, (Cayman) Inc. Circuit engine for managing memory meta-stability
US11074075B2 (en) * 2017-02-24 2021-07-27 Advanced Micro Devices, Inc. Wait instruction for preventing execution of one or more instructions until a load counter or store counter reaches a specified value
US11132145B2 (en) * 2018-03-14 2021-09-28 Apple Inc. Techniques for reducing write amplification on solid state storage devices (SSDs)
WO2021072370A1 (en) * 2019-10-10 2021-04-15 Spin Memory, Inc. Error cache system with coarse and fine segments for power optimization
US11720360B2 (en) * 2020-09-11 2023-08-08 Apple Inc. DSB operation with excluded region
US11868287B2 (en) * 2020-12-17 2024-01-09 Micron Technology, Inc. Just-in-time (JIT) scheduler for memory subsystems
WO2023235003A1 (en) * 2022-06-02 2023-12-07 Micron Technology, Inc. Command fencing for memory-based communication queues

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4646237A (en) * 1983-12-05 1987-02-24 Ncr Corporation Data handling system for handling data transfers between a cache memory and a main memory
JPH0776917B2 (ja) * 1984-12-29 1995-08-16 ソニー株式会社 マイクロコンピユ−タ
US6006325A (en) * 1996-12-19 1999-12-21 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for instruction and data serialization in a computer processor
US6092158A (en) * 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams
US6108737A (en) * 1997-10-24 2000-08-22 Compaq Computer Corporation Method and apparatus for reducing latency of inter-reference ordering in a multiprocessor system
US6163821A (en) * 1998-12-18 2000-12-19 Compaq Computer Corporation Method and apparatus for balancing load vs. store access to a primary data cache
US6647489B1 (en) * 2000-06-08 2003-11-11 Ip-First, Llc Compare branch instruction pairing within a single integer pipeline
US6671747B1 (en) * 2000-08-03 2003-12-30 Apple Computer, Inc. System, apparatus, method, and computer program for execution-order preserving uncached write combine operation

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10503512B2 (en) 2014-11-13 2019-12-10 Arm Limited Context sensitive barriers with an implicit access ordering constraint for a victim context
KR20200135717A (ko) * 2019-05-24 2020-12-03 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 액세스 요청 처리 방법, 장치, 기기 및 저장 매체
KR102292527B1 (ko) 2019-05-24 2021-08-25 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 액세스 요청 처리 방법, 장치, 기기 및 저장 매체
US11307801B2 (en) 2019-05-24 2022-04-19 Beijing Baidu Netcom Science And Technology Co., Ltd. Method, apparatus, device and storage medium for processing access request

Also Published As

Publication number Publication date
PL364643A1 (en) 2004-12-13
CN100385389C (zh) 2008-04-30
CZ20032948A3 (cs) 2004-01-14
WO2002093362A1 (en) 2002-11-21
CN100489770C (zh) 2009-05-20
JP3752224B2 (ja) 2006-03-08
CN1507587A (zh) 2004-06-23
CN1855033A (zh) 2006-11-01
EP1388053A1 (en) 2004-02-11
EP1388053A4 (en) 2008-04-16
CA2447425A1 (en) 2002-11-21
US6978360B2 (en) 2005-12-20
HUP0400049A2 (hu) 2004-04-28
US20020169947A1 (en) 2002-11-14
CA2447425C (en) 2008-09-09
TW567435B (en) 2003-12-21
HUP0400049A3 (en) 2004-07-28

Similar Documents

Publication Publication Date Title
JP3752224B2 (ja) コンピュータ・システムにおいて命令を処理する方法および装置
US20230418764A1 (en) Tracking streaming engine vector predicates to control processor execution
JP5764265B2 (ja) 複数のハードウェア・スレッドにわたる仮想スレッドの細粒化並列処理のための低遅延変数伝達ネットワークを利用する回路装置、集積回路デバイス、プログラム製品および方法(複数のハードウェア・スレッドにわたる仮想スレッドの細粒化並列処理のための低遅延変数伝達ネットワーク)
TW581950B (en) Multiple logical interfaces to a shared coprocessor resource
US11907721B2 (en) Inserting predefined pad values into a stream of vectors
US11461096B2 (en) Method and apparatus for vector sorting using vector permutation logic
US11249759B2 (en) Two-dimensional zero padding in a stream of matrix elements
US11755456B2 (en) Tracking debug events from an autonomous module through a data pipeline
US20220179652A1 (en) Inserting null vectors into a stream of vectors
US20230385063A1 (en) Streaming engine with early exit from loop levels supporting early exit loops and irregular loops
US7107399B2 (en) Scalable memory
US11900117B2 (en) Mechanism to queue multiple streams to run on streaming engine
US20230065512A1 (en) Pseudo-First In, First Out (FIFO) Tag Line Replacement
US11500784B2 (en) Pseudo-first in, first out (FIFO) tag line replacement
US10963255B2 (en) Implied fence on stream open
US20240184586A1 (en) Mechanism to queue multiple streams to run on streaming engine
US20230251970A1 (en) Padding and suppressing rows and columns of data
Bilardi et al. An address dependence model of computation for hierarchical memories with pipelined transfer
JPH0277840A (ja) データ処理装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050426

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050722

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050729

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051019

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051115

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051209

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20081216

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20091216

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091216

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101216

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101216

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111216

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111216

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20121216

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees