JPH1173365A - データ移動操作を最適化する方法 - Google Patents

データ移動操作を最適化する方法

Info

Publication number
JPH1173365A
JPH1173365A JP10174400A JP17440098A JPH1173365A JP H1173365 A JPH1173365 A JP H1173365A JP 10174400 A JP10174400 A JP 10174400A JP 17440098 A JP17440098 A JP 17440098A JP H1173365 A JPH1173365 A JP H1173365A
Authority
JP
Japan
Prior art keywords
message
memory
register
status
copy
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
JP10174400A
Other languages
English (en)
Inventor
M Brewer Tony
トニー・エム・ブルーアー
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH1173365A publication Critical patent/JPH1173365A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency

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)
  • Memory System (AREA)

Abstract

(57)【要約】 【課題】 システム間のデータ移動操作の処理時間を
速める。 【解決手段】データ移動操作は、第1に、データ移動を
許可するようにメモリを割り当て、第2に、データ移動
が実施され、第3に、データ移動の完了が成功したこと
をプロセッサに通知することからなる。上記第1および
第3のステップを、ソフトウェアではなくハードウェア
を利用して実施する。アーキテクチャは、プロセッサ・
エージェントおよびメモリ・アクセス・コントローラを
含む。プロセッサ・エージェントは、入力レジスタと、
メッセージ/コピー表明マシンと、操作ステータス待ち
行列を含む。メモリアクセス・コントローラは、メッセ
ージ割当て表明マシンと、メッセージ完了ステータス待
ち行列を含む。メッセージ割当てマシンおよびメッセー
ジ完了ステータス待ち行列は、それぞれメッセージ/コ
ピー表明マシンからの制御情報に応じて、メモリの割当
ておよび操作の完了の通知を行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、一般にコンピュ
ータ上のメモリ管理に関し、特に、通常ソフトウェアに
よって実施されるデータ移動の工程が、ハードウェア上
で同じことを実施することによって最適化されるアーキ
テクチャに関する。
【0002】
【従来の技術】データ移動は、メッセージング、データ
コピーまたはメモリのゼロへのクリアのような、多くの
標準の通常使用されるシステム操作に組み込まれる、シ
ステムの重要な「コア」機能である。複数のシステム内
のデータ移動は、典型的に、3つの一般的なステップを
含む。第1に、データの移動を許可するように、メモリ
が割り当てられる。第2に、データ移動自体が、実施さ
れる。第3に、データ移動がうまく完了し、処理がデー
タの新しい位置に基づいて続行できることを、プロセッ
サまたはプロセッサ・エージェントのような適当な成分
に通知する。
【0003】今日の技術のシステムで、第1および第3
のステップ(メモリ割当ておよび通知)は、典型的にソフ
トウェアによって実施され、第2のステップ(データ移
動)は、ハードウェアによって実施される。データ移動
ハードウェアは、典型的にメッセージ/コピー表明(stat
e)マシンを含み、それは、その操作がデータ移動を実現
する中枢となる高価なハードウェア要素である。
【0004】
【発明が解決しようとする課題】データ移動の第1およ
び第3のステップ(メモリ割当ておよび通知)のためのソ
フトウェア操作は、必然的に、いくつかのマシン・サイ
クルが完了することを必要とする。ソフトウェアは典型
的に、データ移動操作を求める要求を発行しているプロ
セッサにローカルなメモリ・ノードにロードされている
マイクロカーネルの中にある。従って、マイクロカーネ
ル・ソフトウェアを参照する必要なく、これら第1およ
び第3のステップをハードウェア上で実施し、それによ
ってデータ移動操作を実行するための処理時間を速めら
れることは非常に有利である。
【0005】メッセージ/コピー表明マシンは、第2(デ
ータ移動)のステップを実施するためにいずれにしても
必要とされるので、メッセージ/コピー表明マシン内の
(レジスタのような)資源が、これら第1および第3のデ
ータ移動ステップ(メモリ割当ておよび通知)を実施する
ことを支援できればさらに有利である。ソフトウェア操
作をハードウェア操作と置き換えることによって処理効
率が最適化されるだけでなく、メッセージ/コピー表明
マシン(高価なハードウェア要素)の資源も、より良い利
益を受ける。さらに、進行中(仮想から物理メモリへの
変換のようなアプリケーション内)のデータ変換のよう
な効率を向上させる機構、およびオーバラップする操作
のパイプライン化が、ソフトウェア環境ではなくハード
ウェア環境でより容易に実現され、促進される。
【0006】
【課題を解決するための手段】ここで使用されるとき、
「アーキテクチャ」とは、能力および性能の計画された
レベルを提供するために、コンピュータ設計、ハードウ
ェアおよびソフトウェアが相互に作用する態様を意味す
る。ここで使用されるとき、「アーキテクチャ構成」
は、プロセッサ、レジスタ、メモリ、命令セットおよび
入力/出力資源を含むコンピュータの内部操作の物理構
造の幾何的レイアウトを意味し、特定のあらかじめ決め
られたアーキテクチャを実現するように設計される。
【0007】この発明は、メモリ割当ておよび通知のよ
うなデータ移動に必須の操作をソフトウェアではなくハ
ードウェアを用いて実施することによって、システム内
のデータ移動が最適化されるアーキテクチャを提供す
る。
【0008】その結果、データ移動を含む多くのシステ
ム操作も相応じて最適化される。ノード間のメッセージ
ングが、よい例である。全体で共有されるメモリをもつ
システムの中で、あるメモリ・ノード上に常駐するマイ
クロカーネルが、他のメモリ・ノード上に常駐するマイ
クロカーネルにメッセージを送信できることは一般的で
ある。しかし、データ移動が、ソフトウェアによって実
施されるメモリ割当ておよび通知のステップを含む場
合、プロセッサ効率は、通常、これらのメッセージが、
1キャッシュライン長の長さに制限されることを指示す
る。今日の技術で使用される一般的な4つのキャッシュ
ライン長は、16バイト、32バイト、64バイトおよび128
バイトである。しかし、あるマイクロカーネルから別の
マイクロカーネルへのメッセージは、典型的に、これら
の固定された1キャッシュライン長よりもかなり長くな
る必要がある。従って、例えば32バイトの長さでメッセ
ージを保持する制約は、重要なオーバーヘッド負担をオ
ペレーティング・システムに課し、メッセージを複数の
32バイトの「コンテナ」に制限する。このオーバーヘッ
ド負担は、必然的に性能の低下をもたらす。
【0009】しかし、この発明のアーキテクチャ下での
データ移動は、制限のない長さの連続するメッセージ
が、あるノードから他のノードへ複数のキャッシュライ
ンで送信されることを許す。全体のメッセージ長は、操
作が完了したときに送信ノードによって提示される完了
ステータスによって指定される。制限のないメッセージ
ングのこのタイプは、メッセージ/コピー表明マシン
に、データ移動操作と同様にメモリ割当ておよび通知操
作を実施する能力を与えることにより、この発明で実現
される。ノード間のメッセージングに関する制約が解か
れると、システムは、オーバーヘッド負担から解放され
る。したがって、システムからこのオーバーヘッドを無
くすとき、この発明は、物理的なデータ移動レベルで達
成される実際の効率をはるかに越えるシステム処理効率
をもたらす。
【0010】データコピーは、この発明によって最適化
されるデータ移動を含むシステム操作の更なる例であ
る。最適化は、具体的にはメモリ内の仮想ページからの
データコピーを含む操作の中で改善される。仮想ページ
は、最初に物理ページに変換されなければならない。し
かし、データコピー操作が発行され、実行される間に、
同時に走るシステムの他の成分が、仮想ページを物理ペ
ージに変換するために信頼される物理マッピングを変更
することがある。今日の技術のシステムで、変換の正確
さを維持するためのこのマッピングの監視は、プロセッ
サ・ハードウェアによって実施される。この発明の好ま
しい形態で、この監視は、非プロセッサ・ハードウェア
によって付加的に実施される。マッピングに対する変更
は、アドレス変換バッファ(「TLB:translation lookasi
de buffer」)のパージを生成し、その発生は、ここで開
示される機構によって監視され、検出される。TLBパー
ジが検出されると、機構は、データコピー操作を中止
し、データ転送が中止された点に関連するステータス情
報を待ち行列に入れ、それによって、正確なマッピング
が再び確立され、データ転送が再開するときに、その点
からの先への進行を保証する。
【0011】パイプライン化は、パイプライン処理され
る機能の利用が高められる設計最適化の一例である。デ
ータ移動を含むシステム操作は、ここで開示されるよう
なパイプライン化を利用することによって最適化するこ
とができる。「パイプライン」を生成する際、一連の機
能または操作は、あらかじめ定義されるように、同時
に、連続的に、またはオーバラップして実行されるよう
セットアップされる。それぞれのパイプライン処理され
る操作の個々のサイクルまたは命令が、一緒に実行さ
れ、全てのパイプライン化される操作を同時に処理する
という全体的な効果を提供する。ここで開示されるよう
なパイプライン化は、個々のデータ移動命令がパイプラ
インにきたとき、それらを同時に実行するように利用で
きることによって、アーキテクチャを改善する。従っ
て、パイプラインは潜在的に、同時にパイプライン処理
される多様なデータ移動操作から各々が抽出されるデー
タ移動命令の1ストリーム(例えばメモリを割り当て、
データを移動させ、通知する)を与えうることが分かる
であろう。こうして、(メッセージ/コピー表明マシンの
ような)データ移動ハードウェアは、ほぼ連続的に最大
限に使用することができ、多様なパイプライン処理され
る操作がパイプラインにきたとき、それら操作からデー
タ移動命令の間で「取り出し、選択する」。全体の効果
は、ほぼ連続的にパイプライン処理されるデータ移動命
令を速めることによって、パイプラインを最適化するこ
とであると分かるであろう。
【0012】好ましい形態で、この発明のアーキテクチ
ャ構成は、(1)第1のプロセッサからデータを受信する
第1の入力レジスタ、および第2のプロセッサから入力
を受信する第2の入力レジスタと、(2)入力レジスタか
ら制御情報を受信するメッセージ/コピー表明マシン
と、(3)データ・ムーバと、(4)オーバラップする環境で
個々のデータ移動操作をパイプライン処理する手段と、
(5)メッセージ/コピー表明マシンから、第1のプロセッ
サに提供される制御情報を受信する第1のステータス待
ち行列、およびメッセージ/コピー表明マシンから、第
2のプロセッサに提供される制御情報を受信する第2の
ステータス待ち行列と、をもつプロセッサ・エージェン
トを含む。好ましい形態のアーキテクチャ構成は、さら
に、プロセッサ・エージェントと通信するメモリ・アク
セス・コントローラを含み、メモリ・アクセス・コント
ローラは、(1)操作を許可するように、メッセージ/コピ
ー表明マシンからの制御情報に応じてメモリを割り当て
る手段と、(2)メッセージ/コピー表明マシンからの制御
情報に応じて動作するメッセージ割当て表明マシンと、
(3)メッセージ/コピー表明マシンからの制御情報に応じ
て動作するメッセージ完了ステータス待ち行列と、をも
つ。
【0013】従ってこの発明の技術的な利点は、データ
移動のメモリ割当ておよび通知の工程を、ソフトウェア
でなくハードウェアによって実施できるようにすること
によって、マイクロプロセッサ内のデータ移動操作を最
適化することである。
【0014】この発明の更なる技術的な利点は、制限の
ないライン長のノード間のメッセージングを可能にする
ことによって、メッセージング操作を最適化することで
ある。メッセージは、1つの連続するマルチ・キャッシ
ュライン・メッセージとみなされる。オペレーティング
・システムは、メモリ内のメッセージをフォーマット
し、受信ノードの完了ステータスの受信に応じてプロセ
ッサに割込みするだけでよい。
【0015】この発明の更なる技術的な利点は、TLBパ
ージを検出し、応答するためのハードウェアベースの警
告システムを実現にすることによって、データ移動操作
を最適化することである。
【0016】この発明の別の技術的な利点は、パイプラ
イン処理されるデータ移動命令がパイプラインにきたと
き、実質的に連続するそれらの命令の速度を選択的に速
めることによって、パイプライン化を最適化する能力で
ある。
【0017】上述は、以下のこの発明の詳細な記述をよ
りよく理解することができるように、この発明の特徴お
よび技術的な利点を広く概略で説明した。この発明の追
加の特徴および利点は、以下に記述される。当業者であ
れば、開示される概念および特定の実施例は、変更する
又はこの発明と同じ目的を達成する他の構造を設計する
ための基準として、容易に利用できることが分かるであ
ろう。また当業者であれば、そのような同等の構造は、
この発明の理念から逸脱しないことが分かるであろう。
【0018】
【発明の実施の形態】上述したように、この発明は、メ
モリ割当ておよび通知のようなデータ移動に必須の操作
を、ソフトウェアでなくハードウェアを用いて実施する
ことによって、システム内のデータ移動が最適化される
アーキテクチャを提供する。
【0019】好ましい実施例で、典型的なアーキテクチ
ャ構成は、(1)第1のプロセッサからデータを受信する
第1の入力レジスタおよび第2のプロセッサから入力を
受信する第2の入力レジスタと、(2)入力レジスタから
制御情報を受信するメッセージ/コピー表明マシンと、
(3)データ・ムーバと、(4)オーバラップする環境で、個
々のデータ移動操作をパイプライン処理する手段と、
(5)メッセージ/コピー表明マシンから、第1のプロセッ
サに提供される制御情報を受信する第1のステータス待
ち行列、およびメッセージ/コピー表明マシンから、第
2のプロセッサに提供される制御情報を受信する第2の
ステータス待ち行列と、を有するプロセッサ・エージェ
ントを含む。好ましい実施例のアーキテクチャ構成は、
さらに、プロセッサ・エージェントと通信するメモリ・
アクセス・コントローラを含み、メモリ・アクセス・コ
ントローラは、(1)メッセージ/コピー表明マシンからの
制御情報に応じて、操作を許可するように、メモリを割
り当てる手段と、(2)メッセージ/コピー表明マシンから
の制御情報に応じて動作するメッセージ割当て表明マシ
ンと、(3)メッセージ/コピー表明マシンからの制御情報
に応じて動作するメッセージ完了ステータス待ち行列
と、をもつ。
【0020】図1を参照すると、この発明を具体化する
典型的なアーキテクチャ構成が示されており、その中で
EPAC(エクスキャリバ・プロセッサ・エージェント・チ
ップ)150は、メッセージ/コピー表明マシン153が利用で
きるCPU入力レジスタ151および152(CPU0およびCPU1にそ
れぞれ対応する)を含む。データ移動操作の一部および
特に有利にはデータ移動の通知フェーズで、メッセージ
/コピー表明マシン153は、情報をCPUステータス待ち行
列154および155に送信する。CPUステータス待ち行列154
および155もまた、それぞれCPU0およびCPU1に対応し、E
PAC150に常駐する。
【0021】EPAC150はさらに、メッセージ/コピー表明
マシン153を通して、メッセージ割当て表明マシン161お
よびメッセージ完了ステータス待ち行列162を含むEMAC
(エクスキャリバ・メモリ・アクセス・チップ)160とデ
ータ通信する。
【0022】この発明に従って、データ移動操作は、図
1に示されるようなハードウェアをほぼ排他的に使用し
て実現される。慣例的に、メモリ割当ておよび通知のよ
うなデータ移動のフェーズまたは工程は、ソフトウェア
によって実現される。例えばメッセージングに言及して
以下で述べられるように、これらのフェーズまたは工程
は、この発明に従ってハードウェアによって実現され
る。
【0023】しかし最初に、図1のハードウェア成分
を、マルチプロセッサ、マルチノード環境を表す広範な
図で視覚化することが有用である。図16を参照すると、
そのような環境の中のEPAC150およびEMAC160と他のハー
ドウェアとの相互作用を示す典型的なアーキテクチャ構
成が示されている。EPAC150は、プロセッサ1401(有利に
はEPACあたり2つのプロセッサ)に結合される。図16に
示されるように、I/Oサブシステムを、単方向のパスを
使用して各々のEPACに結合することもできる。さらにEP
AC150は、コア論理バス1402に結合され、それらを介し
てEPAC150は、電気的消去可能なプログラム読出し専用
メモリ(「EEPROM」)、静的ランダムアクセス・メモリ
(「SRAM」)、リアルタイム・クロック、RS-232およびイ
ーサネットのような他のコンピュータ・システム成分と
インターフェースすることができる。さらにコア論理バ
ス1402は、プロセッサ1401が、バスを使用してアクセス
される制御およびステータス・レジスタ(「CSR」)に書
込みして、クロス・バー・ゲート・アレイ(「ERAC」)14
03を初期化し構成することを可能にする。
【0024】図16から、EPAC150は、トランザクション
をERAC1403へまたはそこから送信し、受信することが分
かるであろう。好ましい実施例で、4つの単方向データ
・パスを使用して、この通信を実現することができ、各
々のEPAC150は、2つのERAC1403と通信する。
【0025】ERAC1403は、トランザクションをEPAC150
からEMAC160に進めるクロスバーを形成する。好ましい
実施例で、ERAC1403へおよびそこからのデータ・パス
は、幅が32ビットで、単方向である。ERAC1403は、それ
自体のCSR空間なしでクロス・バーを形成する。代わり
に、上で述べたように、ERAC1403は、コア論理バス1402
上に常駐するCSRに書き込むことによって初期化され
る。これらのCSRは、どのポートがアクティブであるか
を制御し、エラー検出を実現する。
【0026】図16に示される典型的なアーキテクチャ構
成で、各々のERAC1403は、4つのEMAC160とトランザク
ションを交換する。組合せの中で、EMAC160は、コヒー
レントなメモリへのアクセスを制御する。有利には、4
つのメモリ・バンク1406が、各々のEMAC160によって制
御され、8EMACシステムで32バンクまでを許す。メモリ
・バンク1406は、同期DRAMのSIMMから成る。EMAC160に
よって制御されるメモリは、ノード・ローカル・メモ
リ、ネットワーク・キャッシュおよびメッセージングの
ために使用される。
【0027】さらに図16は、トランザクションをEMAC16
0と交換するリング・インタフェース・コントローラ
(「ETAC」)1407を示す。各々のETAC1407は、2つのオペ
レーティング・プラットホーム・リング(x次元およびy
次元)とインターフェースし、上記インタフェースは、
リングが、EMAC160を通してメモリにアクセスできるよ
うにする。
【0028】図16に示される典型的なアーキテクチャ構
成に従う操作で、プロセッサ1401は、対応するEPAC150
を通してクロス・バーERAC1403に要求を送信することに
よって、メモリ・バンク1406にアクセスする。EMAC160
は、利用できるメモリ・バンク1406にアクセスし、ECC
およびあらゆるタグ付けされたコヒーレンス情報を調べ
る。追加のコヒーレンス操作が要求されないとすると、
メモリ1406からアクセスされたデータは、ERAC1403およ
び対応するEPAC150を通して、要求を出しているプロセ
ッサ1401に返される。
【0029】図16に加えて、この発明を実現するアーキ
テクチャおよびトポロジーの他の具体化があり得ること
も分かるであろう。
【0030】上述したように、従ってこの発明は、ソフ
トウェアでなくハードウェアの中で、(メモリ割当てま
たは通知のような)データ移動のフェーズまたは工程を
実現する。これは、コンピュータ処理すなわちメッセー
ジングのときの一般的なデータ移動操作に言及すること
によって最もよく説明される。しかし、メッセージング
に関連する以下の記述は、この発明の適用の一例にすぎ
ず、この発明は、他のデータ移動操作に等しく適用され
ることが分かるであろう。
【0031】ここで図2を参照して、この発明に従うメ
ッセージングは、ブロック101から始まり、そこでソー
ス・プロセッサは、送信されるメッセージをフォーマッ
トする。メッセージは、任意の長さであり得る。メッセ
ージの実際のフォーマッティングは、ソフトウェアによ
って行われ、システム・メモリを使用して実施される。
【0032】ブロック102で、ソース・プロセッサは、
コマンドを発行し、メッセージング操作を開始する。こ
のコマンドは、ローカル・プロセッサ・エージェント
(図1および図16のEPAC150)上の入力コマンド・レジスタ
に書き込むことによって、ローカル・ノード上のハード
ウェアに発行される。
【0033】ブロック103で、EPAC内のメッセージ/コピ
ー表明マシンは、トランザクションを受信ノード上のメ
モリ・アクセス・コントローラ(図1および図16上のEMAC
160)に送信する。このトランザクションは、受信するEM
AC内のメッセージ割当て表明マシン(図1の要素161)へ向
けられ、またメモリ内のメッセージのソース・アドレス
およびメッセージの大きさを含む。
【0034】ブロック104で、EMACメッセージ割当て表
明マシンは、その制御下で、メモリのプールから受信ノ
ード上のメモリを割り当てる。割り当てられるメモリの
量は、そこに格納されなければならないメッセージの大
きさに一致する。EMACは、トランザクションをソースEP
AC内のメッセージ/コピー表明マシン(図1の要素153)に
返し、そこでそのメッセージは、受信ノード・メモリ内
の受信EMACによって割り当てられた宛先アドレスを含む
(ブロック105)。
【0035】ブロック106で、ソース・プロセッサは、
キャッシュライン長の量のインクリメントで、メッセー
ジをソース・メモリから宛先メモリにコピーする。任意
のライン長が実施可能であるが、好ましい実施例で、こ
のキャッシュライン長は、32バイトである。メッセージ
をコピーするとき、キャッシュライン長のインクリメン
トは、任意の順序で、およびソース・ノードから宛先ノ
ードに同時に送信される他のメッセージと一緒に、送信
することができることに注意されたい。結果として、処
理オーバーヘッドを最適化することができる。
【0036】メッセージ全体が、うまくコピーされる
と、ソース・ノードは、完了ステータスを受信ノードに
送信する(ブロック107)。完了ステータスの送信は、ソ
ースEPAC上のメッセージ/コピー表明マシンが、受信ノ
ード上のEMACに完了ステータス・トランザクションを送
信することによって実現される。EMACは、完了ステータ
ス・トランザクションを、そのノード(図1の要素162)の
ための待ち行列に入れる。空の待ち行列に完了ステータ
スが入れられると(すなわち空であることから空でない
ことへの待ち行列の移行)、そのノードにローカルなプ
ロセッサに割込みが送信され、それによってソフトウェ
アは、受信されたメッセージを処理することができる
(ブロック107A)。割込みは、送信プロセッサにも任意に
送信される(ブロック107B)。このように、送信プロセッ
サは、メッセージング操作が完了し、従って先に進める
ことを知る。
【0037】ここで、好ましい実施例の実現の更なる説
明は、具体的には、典型的な32バイト・キャッシュライ
ンをもつ環境でこの発明を具体化するHewlett-Packard
の「Excalibur」という製品に言及する。しかし、Excal
ibur製品は、この発明の1つの可能な実現にすぎず、こ
の発明は、Excalibur製品の特定の詳細に限定されない
ことが分かるであろう。
【0038】従って、再び図1を参照して、この発明に
よって最適化されるメッセージングを、特定のハードウ
ェア成分に言及して説明する。EPAC150は、そこからメ
ッセージが送信されることが望まれるソースまたは送信
ノードに常駐する。EMAC160は、メッセージのための受
信または宛先ノードに常駐する。上述したように、EPAC
150は、2つの別々のプロセッサCPU0およびCPU1によっ
てそれぞれプログラムされることができるCPU入力レジ
スタ151および152を含む。EPAC150はさらに、メッセー
ジ/コピー表明マシン153と、プロセッサCPU0およびCPU1
を制御するために利用できるCPUステータス待ち行列154
および155とを含む。EMAC160は、メッセージ割当て表明
マシン161および完了ステータス待ち行列162を含む。
【0039】入力レジスタ151および152 EPAC150は、ここに物理的に結合される2つのプロセッ
サCPU0およびCPU1によって専用に使用するための入力レ
ジスタの2組をもつ。操作を起動するために、最初にプ
ロセッサは、それが起動した最後の操作が、もはや入力
レジスタ段階にないことを判断しなければならない。入
力レジスタが利用可能であれば、プロセッサは、入力レ
ジスタをプログラムすることによって操作を起動する。
【0040】メッセージ/コピー表明マシン153 入力レジスタの1組がセットアップされ、かつメッセー
ジ/コピー表明マシンがアイドルであるとき、メッセー
ジ/コピー表明マシン153は、メッセージング操作を実行
し始める。入力レジスタの両方の組が、実行する準備が
できている操作をもつ場合、ハードウェアが入力レジス
タの2組の間の仲裁を行って、先への進行を保証する。
【0041】メッセージング操作の実行は、3つのフェ
ーズに分割される。第1のフェーズは、メッセージのた
めの宛先アドレスを決定する。現在の操作がコピー操作
である場合、実行のこのフェーズはスキップされる。図
1に示されるように、宛先アドレスは、トランザクショ
ン170を、宛先ノード上のEMAC160に送信することによっ
て決定される。EMAC160は、メモリ割当て操作を実施
し、宛先ノード・メモリ・アドレスを使って応答する
(トランザクション175)。
【0042】第2のフェーズは、データをソース・メモ
リから宛先メモリにコピーすることである。コピー操作
は、操作が完了するか、アドレス変換バッファ(「TL
B」)のパージが起こるか、あるいはエラーが起こるま
で、実行する。
【0043】実行の最後のフェーズは、メッセージ完了
トランザクション185をEMAC160に送信することである。
操作がデータコピーである場合、このフェーズは実施さ
れない。EMAC160は、完了ステータスをメモリベースの
待ち行列(要素162)に入れ、割込みによってメッセージ
の宛先ノード上のプロセッサに知らせる。
【0044】操作ステータス待ち行列154および155 操作ステータス待ち行列154および155は、EPAC150に物
理的に接続する各々のプロセッサに対応付けられる。図
1で、これらのプロセッサは、CPU0およびCPU1である。
メッセージまたはコピー操作の完了から生じるステータ
スは、2つのステータス待ち行列のうちの1つに入れら
れる。CPU0によって始められた操作は、それが完了する
とき、ステータスをその割り当てられたステータス待ち
行列154に書き込む。同様に、CPU1のステータスは、ス
テータス待ち行列155に書き込まれる。各々のステータ
ス待ち行列は、入力レジスタおよびメッセージ/コピー
表明マシン段階のためにステータス空間を提供する3エ
ントリの深さである。
【0045】ステータスが待ち行列に入れられると、割
込みが、操作を起動したプロセッサに送信され、メッセ
ージが配送されたことをそのプロセッサに知らせること
ができる。
【0046】図3ないし図13は、メッセージングおよび
データコピー・ハードウェアを制御するために必要とさ
れるCSR(制御およびステータス・レジスタ)を説明す
る。図1に示すように、CSRは全て、EPAC150またはEMAC1
60のいずれかに属する。CSRは、以下を含む。 ・入力コマンド・レジスタ ・操作コンテクスト・レジスタ ・ソースおよび宛先物理ページ・フレーム・レジスタ ・ソースおよび宛先オフセット・レジスタ ・操作ステータス・レジスタ ・メッセージ受信エリア構成レジスタ ・メッセージ受信エリア・オフセット・レジスタ ・メッセージ完了待ち行列構成レジスタ ・メッセージ完了待ち行列オフセット・レジスタ ・メモリ割当てアドレス ・メッセージ完了エンキュー(enqueue)・アドレス ・メッセージ完了デキュー(dequeue)・アドレス
【0047】入力コマンド・レジスタ 各々のEPAC150は、メッセージングおよびデータコピー
操作の多様なモードおよび長さを設定する2つの入力コ
マンド・レジスタをもつ。
【0048】入力コマンド・レジスタは、CSRの準備ビ
ットがゼロであって、CSR操作コンテクスト・レジスタ
の装備ビットが1であるとき、書き込むことができる。
このレジスタを読み出す制限はない。
【0049】入力コマンド・レジスタのフォーマット
は、図3に示される。入力コマンド・レジスタのフィー
ルドは、以下のように定義される。
【0050】・準備フィールド(ビット23) 入力レジスタが操作を実施する準備ができていることを
示す。通常、このビットは、ソフトウェアによって設定
され、ハードウェアによってクリアされる。入力レジス
タが、操作のためのセットアップを完了するとき、この
ビットが、ソフトウェアによって設定されなければなら
ない。メッセージングおよびコピー表明マシンが、操作
のために入力レジスタからの全ての必要とされる情報に
アクセスすると、ハードウェアが、このビットをクリア
する。準備ビットは、CSR書込みアクセスによって書き
込まれる。CSR読出しは、現在の値を読み出す。リセッ
トは、ビットをクリアする。
【0051】・ステータス索引フィールド(ビット24:2
5) 完了ステータス待ち行列管理のためにソフトウェアによ
って使用される。フィールドは、CSR読出しによって読
み出される。フィールドの値は、操作完了ステータス待
ち行列の中のステータスの一部である。リセットは、フ
ィールドをクリアする。
【0052】・TLBパージ・アボート許可フィールド(ビ
ット26) 操作の前またはその間にTLBパージ・トランザクション
が検出される場合、操作をアボートすることができる。
システム操作で、ソフトウェアが、ビットを設定し、ク
リアする。仮想アドレスが使用されるとき、それはソフ
トウェアによって設定されなければならない。メッセー
ジングおよびコピー表明マシンが操作を始めるとき、TL
Bパージ検知およびTLBパージ・アボート許可ビットが設
定されている場合、操作は、始まる前にアボートされる
ことに注意されたい。アボートされた操作について完了
ステータスは、適当なステータス待ち行列に書き込まれ
る。TLBパージ・アボート許可ビットは、CSR書込みによ
って書き込まれ、CSR読出しによって読み出される。リ
セットが、ビットをクリアする。
【0053】・TLBパージ検知フィールド(ビット27) TLBパージ検知トランザクションが、EPACによって検出
されたことを示す。ビットは、ソフトウェアによってク
リアされ、ハードウェアによって設定される。それは、
CSR書込みによって書き込まれる。CSR読出しは、現在の
値を読み出す。リセットは、ビットをクリアする。
【0054】・ソースBTT許可フィールド(ビット28) ソース物理ページ・フレーム・レジスタが、操作のソー
ス・メモリ領域にアクセスするために使用されるブロッ
ク変換テーブル(BTT)のアドレスを含むことを示す。ビ
ットは、CSR書込みによって書き込まれ、CSR読出しによ
って読み出される。
【0055】・宛先BTT許可フィールド(ビット29) 宛先物理ページ・フレーム・レジスタが、操作の宛先メ
モリ領域にアクセスするために使用されるブロック変換
テーブルのアドレスを含むことを示す。ビットは、CSR
書込みによって書き込まれ、CSR読出しによって読み出
される。
【0056】・メッセージング操作フィールド(ビット3
0) メッセージングおよびコピー表明マシンに、入力レジス
タの宛先アドレスではなく、宛先アドレスを決定するた
めのメッセージング機構を使用させる。ビットは、CSR
書込みによって書き込まれ、CSR読出しによって読み出
される。
【0057】・Bゼロ操作フィールド(ビット31) メッセージングおよびコピー表明マシンに、ソースを宛
先メモリ領域にコピーするのではなく宛先メモリ領域を
クリアさせる。ビットは、CSR書込みによって書き込ま
れ、CSR読出しによって読み出される。
【0058】・ギャザー(gather)操作フィールド(ビッ
ト32-33) ギャザー操作のために使用されるストライドを指定す
る。ここで、このフィールドは、具体化されずゼロとし
て読み出される。
【0059】・入力割込み許可フィールド(ビット34) 入力コマンド・レジスタがソフトウェアによって再プロ
グラミングするために利用できるとき、関連するプロセ
ッサへの割込みを許可する。送信される割込み番号の最
上位5ビットは、このフィールドによって指定される。
送信される割込み番号の最下位ビットは、ゼロである。
このビットは、CSR書込みによって書き込まれ、CSR読出
しによって読み出される。
【0060】・完了割込みフィールド(ビット35-36) メッセージングおよびコピー表明マシンが操作を完了す
るとき、関連するプロセッサへの割込みを許可する。さ
らにフィールドは、操作がエラーで完了するとき、また
はそれが操作のステータスに関係なく送信される場合、
割込みが送信されるか決定する。下の表1は、このフィ
ールドについて符号化を指定する。
【0061】
【表1】
【0062】・割込み番号フィールド(ビット37-41) 要求を起動したプロセッサに送信される割込み番号の最
上位5ビットを指定する。割込みは、次の2つのイベン
トのどちらかが生じるときに送信される。 --メッセージングおよびコピー表明マシンが、入力レジ
スタへのアクセスを完了するとき。 --メッセージングおよびコピー表明マシンが、操作を完
了するとき。 割込み番号の最下位ビットは、第1のイベントの場合は
ゼロ、第2の場合は1である。ビットは、CSR書込みに
よって書き込まれ、CSR読出しによって読み出される。
【0063】・長さ−1・フィールド(ビット42-63) メッセージングおよびコピー操作の長さを指定する。メ
ッセージング操作は、最下位5ビットを無視し、長さ
が、整数個のメモリ・ライン(32バイトのインクリメン
ト)になるようにする。しかしコピーは、どんなバイト
長でもよい。フィールド内のゼロの値は、1バイトをコ
ピーし(メッセージングの場合は1メモリ・ライン)、フ
ィールド内の全ての1の値は、メモリの4メガバイトを
コピーする。フィールドは、CSR書込みによって書き込
まれ、CSR読出しによって読み出される。
【0064】操作コンテクスト・レジスタ 各々のEPAC150は、2つの操作コンテクストCSRをもち、
各々のプロセッサに1つある。操作コンテクストは、2
通りの方法で他のCSRに適用される。1つは、CSRを装備
することにより、もう1つは、装備されたCSRがトリガ
されたこと、すなわちそれが特定の機能を実行したこと
を示すことによる。
【0065】操作コンテクスト・レジスタのフォーマッ
トは、図4に示される。CSR操作コンテクスト・レジスタ
のフィールドは、次のように定義される。 ・装備フィールド(ビット63) 特定のEPACのプロセッサCSRの機能を装備するようにソ
フトウェアによって設定される。このビットによって装
備されるEPAC CSRは、データ・ムーバ入力コマンド・レ
ジスタを含む。装備ビットは、ソフトウェアによって設
定され、ハードウェアまたはソフトウェアのいずれかに
よってクリアされる。 ・トリガ・フィールド(ビット62) 装備ビットが設定されたときに、CSR操作が実行された
ことを示す。トリガ・ビットは、ソフトウェアによって
クリアされ、ハードウェアによって設定される。
【0066】以下の表2は、操作が発行されたとき、す
なわちソフトウェアが操作アドレスCSRのうちの1つに
アクセスするとき、ハードウェアによって制御されるよ
うな装備およびトリガ・ビットの移行を示す。
【0067】
【表2】
【0068】以下の表3は、TLB無効トランザクション
が検出されるとき、ハードウェアによって制御されるよ
うな装備およびトリガ・ビットの移行を示す。
【0069】
【表3】
【0070】ソース/宛先物理ページ・フレーム・レジ
スタ 各々のEPAC150上には、メッセージングおよびデータコ
ピー操作のソースおよび宛先を指定する2つのソース/
宛先物理ページ・フレームCSRがある。
【0071】レジスタは、入力コマンド・レジスタの準
備ビットがゼロであり、CSR操作コンテクスト・レジス
タの装備ビットが1であるときのみ、書き込まれる。レ
ジスタは、いつでも読み出すことができる。
【0072】物理ページ・フレーム・レジスタのフォー
マットは、図5に示される。このレジスタのフィールド
は、次のように定義される。 ・物理ページ・フレーム・フィールド(ビット24-51) ここで典型的な目的のために使用される40ビット・アド
レスの物理ページ・フレームを示す。ブロック変換テー
ブル(BTT)が使用される場合、フィールドはBTTのアドレ
スを指定する。そうでない場合、フィールドは、コピー
操作のためのソースまたは宛先ページを指定する。
【0073】メッセージング操作の場合、宛先物理ペー
ジ・フレーム・レジスタは、メッセージを受信する宛先
EMAC160のノードIDおよび仮想リングでプログラムされ
なければならない。
【0074】ソース/宛先オフセット・レジスタ 各々のEPAC150に、メッセージまたはコピー操作のソー
スおよび宛先のオフセットを指定する2つのソース/宛
先オフセットCSRがある。
【0075】レジスタは、入力コマンド・レジスタの準
備ビットがゼロであり、CSR操作コンテクスト・レジス
タの装備ビットが1であるときのみ書き込まれる。レジ
スタは、いつでも読み出すことができる。
【0076】オフセット・レジスタのフォーマットは、
図6に示される。レジスタのフィールドは、次のように
定義される。 ・BTT/ページ・オフセット・フィールド(ビット42-63) 2通りの方法の1つで使用される。ブロック変換テーブ
ルが使用されているとき、最上位10ビットが、BTTへの
索引を指定し、最下位12ビットが、選択されるブロック
テーブル・エントリ(「BTE」)・メモリページへのオフ
セットを指定する。ブロック変換テーブルが使用されて
いないとき、フィールドは、メモリのページへのオフセ
ットとして使用される。22ビットを用いると、1ページ
内のオフセットは、より大きいページ・サイズを支援す
るために4メガバイトの大きさまで可能である。
【0077】メッセージング操作の場合、宛先オフセッ
ト・レジスタをプログラムする必要はない。
【0078】操作ステータス待ち行列レジスタ 複数の操作ステータス待ち行列レジスタが各々のEPAC15
0上に提供され、そこに結合される各々のプロセッサに
対して1つある。図1に示される実施例で、2つのプロ
セッサCPU0およびCPU1があるので、2つの操作ステータ
ス待ち行列レジスタが提供される。ステータスは、操作
が完了する順にステータス待ち行列に挿入される。エラ
ーが生じた場合、この順序は、操作が発行された順序で
はないことに注意されたい。
【0079】プロセッサの操作ステータス待ち行列レジ
スタのフォーマットは、図7に示される。操作ステータ
ス待ち行列レジスタのフィールドは、次のように定義さ
れる。
【0080】・有効フィールド(ビット0) ステータス待ち行列が、有効なメッセージングおよびコ
ピー表明マシン完了ステータスをもつことを示す。表明
マシンが完了し、ステータスを待ち行列に書き込むと
き、ビットが設定される。ビットは、ステータスが読み
出されるときにクリアされ、ステータス待ち行列に残る
他の有効なステータスはない。CSR読出しが値を読み出
し、CSR書込みは影響を及ぼさない。リセットが、ビッ
トをクリアする。
【0081】・オーバフロー・フィールド(ビット1) ステータス待ち行列オーバフローが生じ、ステータス情
報の損失を引き起こしたことを示す。ステータス待ち行
列が満杯であって、メッセージングおよびコピー表明マ
シンが操作を完了するとき、ビットが設定され、そのス
テータスは、その待ち行列に対するものである。ステー
タス・レジスタが読み出されるとき、ビットがクリアさ
れる。CSR書込みは、ビットの値に影響を及ぼさない。
リセットが、ビットをクリアする。
【0082】・ステータス索引フィールド(ビット2-3) 操作ステータスを適当なソフトウェア起動される操作に
関連づけるために、ソフトウェアによって使用される。
2つのビットは、準備ビットが設定されたときの入力コ
マンド・レジスタのステータス索引フィールドの直接の
コピーである。
【0083】・完了ステータス・フィールド(ビット4-
7) メッセージングおよびコピー表明マシン完了ステータス
を示す。下の表4は、起こりうる完了ステータス・フィ
ールド値を示す。
【0084】
【表4】 CSR読出しが、値を読み出し、CSR書込みは、影響を及ぼ
さない。
【0085】操作が、ステータス値0(成功した操作)で
終了するとき、検出チップ、検出Xバー・ポートおよび
エラーコードのフィールドは、有用な情報を含まない。
1のステータス値の場合、エラーコード・フィールド
は、検出されたエラーのタイプを示す。これらのエラー
コードは、以下のエラーコード定義で規定される。ステ
ータス値が2ないし8の場合、検出チップ、検出Xバー・
ポートおよびエラーコードのフィールドは、エラーを返
したトランザクションから返される値である。 ・検出チップ(ビット8-9)および検出Xバー・ポート(ビ
ット10-13)フィールド トランザクション・エラー応答から直接取得される。フ
ィールドは、どのチップまたはクロスバー・ポートがエ
ラーを検出したかを特定する。 ・エラーコード・フィールド(ビット14-18) 操作を失敗させたエラーのタイプを指定する。1の完了
ステータス値に対するエラーコードは、以下の表5に挙
げられる。
【0086】
【表5】
【0087】・完了長さ−1・フィールド(ビット42-6
3) 操作が終了したとき、コピーし残している量を示す。フ
ィールドは、操作がTLBパージの検出でアボートされた
場合のみ有効であることに注意されたい。フィールド
は、操作がうまく完了したとき、マイナス1の値をも
ち、操作がアボートされた場合、ゼロまたはより大き
い。操作が、TLBパージの検出によりアボートされたと
き、この値を使用して操作を再発行する。CSR読出し
が、値を読み出し、CSR書込みは、影響を及ぼさない。
【0088】メッセージ受信エリア構成レジスタ 各々のEMAC160上に、メッセージを受信するのに使用さ
れるメモリの領域のための基準アドレスを指定する1つ
のメッセージ受信エリア構成レジスタがある。構成レジ
スタのフォーマットは、図8に示される。メッセージ受
信エリア構成レジスタのフィールドは、次のように定義
される。 ・非インタリーブ・アクセス(ビット29)、行(ビット30-
32)、仮想リング(ビット33-35)、仮想バンク(ビット36-
37)およびページ(ビット38-48)・フィールド メッセージ受信エリアの基準アドレスを指定する。 ・サイズ・フィールド(ビット62-63) メッセージ受信エリアのサイズを指定する。表6は、メ
ッセージ受信エリアについて起こりうるサイズを示す。
【0089】
【表6】
【0090】メッセージ受信エリア・オフセット・レジ
スタ 2つのメッセージ受信エリア・オフセットCSRが各々のE
MAC160上にある。 ・メッセージ受信エリア利用可能オフセット・レジスタ 新しいメッセージのために利用できるメッセージ受信エ
リアの領域を指定する。 ・メッセージ受信エリア占有オフセット・レジスタ 現在メッセージで占有されている領域を指定する。
【0091】一方のCSRは、メッセージを受信するため
に利用できる空間が始まるメッセージ受信エリアへのオ
フセットを指定し、もう一方は、占有メモリが始まると
ころを指定する。
【0092】メッセージ受信エリア・オフセット・レジ
スタのフォーマットは、図9に示される。レジスタのフ
ィールドは、次のように定義される。 ・オフセット・フィールド(ビット39-58) メッセージ受信エリアへのオフセットを指定する。レジ
スタは通常、(新しいメッセージについて空間を割り当
てるために)ハードウェアによって読み出され、書き込
まれる。それは、十分な利用可能エリアが新しいメッセ
ージのために存在するか調べるためにハードウェアによ
って読み出され、以前に受信されたメッセージによって
消費されたメモリを解放するために、ソフトウェアによ
って書き込まれる。
【0093】メッセージ受信エリア構成レジスタのサイ
ズ・フィールドに依存して、オフセット・フィールドの
最上位ビットのいくつかは、使用されず、ソフトウェア
によって書き込まれるときゼロに設定されなければなら
ないことに注意されたい。以下の表7は、メッセージ受
信エリアの各々の起こりうるサイズに対して使用される
ビットを示す。
【0094】
【表7】
【0095】メッセージ受信エリア利用可能オフセット
が、表7に指定されるビットの中のメッセージ受信エリ
ア占有オフセットに等しく、表で指定されるものより上
位の1ビットが、異なるとき、メッセージ受信エリア
は、満杯である。オフセット・フィールドのビット39
は、メッセージ受信エリアへのオフセットとして使用さ
れないが、サイズが16メガバイトであるとき、メッセー
ジ受信エリアの満杯ステータスを決定するためにのみ使
用されることに注意されたい。
【0096】メッセージ完了待ち行列構成レジスタ 各々のEMAC160は、1つのメッセージ完了待ち行列構成レ
ジスタをもち、このレジスタは、メッセージ完了ステー
タスを書き込むために使用されるメモリの領域のための
基準アドレスを指定する(「メッセージ完了待ち行列エ
リア」のセクションを参照されたい)。
【0097】構成レジスタのフォーマットは、図10に示
される。レジスタの全てのフィールドは、読出しアクセ
スによって読み出され、書込みアクセスによって書き込
まれる。メッセージ完了待ち行列構成レジスタのフィー
ルドは、次のように定義される。 ・行(ビット30-32)およびページ(ビット38-49)・フィー
ルド メッセージ完了待ち行列の基準アドレスを指定する。基
準アドレスは、40ビット物理アドレスの行およびページ
・フィールドによって指定される。ハードウェアは、特
定のEMAC上の全てのバンクを使用するので、仮想リング
および仮想バンク・フィールドは基準アドレスの一部で
はない。 ・割込みプロセッサ・フィールド(ビット53-56) メッセージ完了ステータスがメッセージ完了待ち行列に
入れられるとき、宛先ノード内の16プロセッサのうちの
どれに割り込むかを指定する。 ・割込み番号フィールド(ビット57-62) メッセージ完了ステータスがメッセージ完了待ち行列に
入れられるとき、宛先ノード上のプロセッサに割り込む
ために使用される割込み番号を指定する。 ・待ち行列許可フィールド(ビット63) 関連するメッセージ受信エリアにメッセージを受信する
ことを許可する。ビットは、リセットによってクリアさ
れる。
【0098】メッセージ完了待ち行列オフセット・レジ
スタ 各々のEMAC160は、3つのメッセージ完了待ち行列オフ
セットCSRをもつ。 ・メッセージ完了待ち行列予約オフセット メッセージ完了ステータスのための空間が予約されてい
るメッセージ完了待ち行列メモリ・エリアへのオフセッ
トを指定する。 ・メッセージ完了待ち行列書込みオフセット 受信されたメッセージ・ステータスが書き込まれるオフ
セットを指定する。 ・メッセージ完了待ち行列読出しオフセット メッセージ完了ステータスが読み出されるオフセットを
指定する。
【0099】ソフトウェアは、ゼロ値を書き込むことに
よってこれらのCSRを初期化しなければならないが、そ
の後ハードウェアのみが、レジスタを読む出しまたは書
き込む必要がある。
【0100】メッセージ完了待ち行列オフセット・レジ
スタのフォーマットは、図11に示される。レジスタのフ
ィールドは、次のように定義される。 ・オフセット・フィールド(ビット49-60) メッセージ完了待ち行列メモリ・エリアへのオフセット
を指定する。フィールドの最上位ビット(ビット49)は、
オフセットの一部でないが、待ち行列の満杯または空の
ステータスを決定する。メッセージ完了待ち行列読出し
オフセットのビット50-60は、メッセージ完了待ち行列
書込みオフセット・レジスタのビット50-60に等しく、
各々のレジスタのビット49が異なるとき、メッセージ完
了待ち行列は満杯である。各々のオフセットのレジスタ
のビット49-60が同じ値をもつとき、待ち行列は空であ
る。
【0101】メッセージ割当てアドレス 各々のEMAC160は、メッセージ割当てアドレスをもつ。
このCSRアドレスは、それに関連するレジスタをもたな
いが、アクセスされるとき他のCSRを操作するという点
で、特別である。実施される操作は、メッセージ受信エ
リアおよびメッセージ完了待ち行列に空間が存在するこ
とを調べ、それが存在する場合、受信エリアに空間を割
り当て、メッセージ完了待ち行列にエントリを予約する
ことである。
【0102】以下の機能が、このアドレスへのアクセス
によって実施される。 ・メッセージ受信エリアがメッセージを受信できること
を確認する。これは、メッセージ完了待ち行列構成レジ
スタの待ち行列許可ビットを調べることによって実施さ
れる。 ・エントリが、メッセージ完了待ち行列に存在すること
を確認する。確認に必要とされる情報は、メッセージ完
了待ち行列予約オフセットおよびメッセージ完了待ち行
列読出しオフセット・レジスタである。行われる確認
は、2つのオフセットの比較が待ち行列を満杯にしない
ことである。 ・空間が、メッセージ受信エリアに存在することを確認
する。この確認に必要とされる情報は、メッセージの長
さ、メッセージ受信エリア利用可能メモリ・オフセット
CSR、およびメッセージ受信エリア占有メモリ・オフセ
ットCSRである。行われる確認は、占有オフセットから
利用可能なオフセットを引いたものが、メッセージの長
さより大きいことである。 ・上記の確認のどれかが失敗である場合、割当ての試み
の不成功のステータスを返す。そうでない場合、メッセ
ージ受信エリア構成レジスタおよびメッセージ受信エリ
ア利用可能オフセット・レジスタからの情報が、メモリ
・アドレスを指定するソース・ノードに返される。 ・メッセージ受信エリア利用可能オフセット・レジスタ
を、メッセージの長さずつインクリメントする。 ・メッセージ完了待ち行列予約オフセットを、1ずつイ
ンクリメントし、1少ないエントリが利用可能であるこ
とを示す。
【0103】表8は、宛先ノード上のEMAC160上のメモ
リ割当てCSRアドレスに送信される要求パケットに含ま
れる情報を指定する。
【0104】
【表8】
【0105】表9は、応答パケットで返されなければな
らない情報を示す。
【0106】
【表9】
【0107】メモリ割当てCSRアドレスにアクセスする
操作は、要求および応答の両方に情報を含まれなければ
ならない。
【0108】メッセージ完了エンキュー・アドレス 各々のEMAC160は、メッセージ完了エンキュー・アドレ
スをもち、このアドレスは、それに関連するレジスタを
もたないが、アドレスが書き込まれるときに他のCSRが
操作される点で、特別である。実施される操作は、完了
ステータスを、メモリベースのメッセージ完了待ち行列
に書き込むことである。
【0109】メッセージ割当てCSRアドレスへの以前の
アクセスが、完了ステータスのための空間を待ち行列に
予約するので、メッセージ完了待ち行列は、満杯であっ
てはいけない。
【0110】このアドレスへの書込みによって実施され
る機能は以下に挙げられる。 ・完了ステータスをメモリベースのメッセージ完了待ち
行列に書き込む。書き込まれるメモリ・アドレスは、メ
ッセージ完了待ち行列構成レジスタの行およびページ・
フィールドと、メッセージ完了待ち行列書込みオフセッ
ト・レジスタのオフセット・フィールドとによって形成
される。書き込まれるデータは、書込み要求パケットに
含まれる。 ・メッセージ完了待ち行列書込みオフセット・レジスタ
のオフセット・フィールドを、1ずつインクリメントす
る。 ・メッセージ完了待ち行列が、メッセージ完了エンキュ
ー・アドレスにアクセスする前に空である場合、メッセ
ージ完了待ち行列構成レジスタによって指定されるプロ
セッサが、割り込まれる。
【0111】図12は、メッセージ完了エンキューCSRア
ドレスへの書込みで送信される要求データについてフォ
ーマットを示す。
【0112】メッセージ完了デキュー・アドレス 各々のEMAC160は、メッセージ完了デキュー・アドレス
をもち、そのアドレスは、関連するレジスタをもたない
が、アドレスが読み出されるときに他のCSRを操作する
点で特別である。実施される操作は、メモリベースのメ
ッセージ完了待ち行列から完了ステータスを読み出すこ
とである。
【0113】このアドレスの読出しによって実施される
機能を以下に挙げる。 ・メッセージ完了待ち行列が空である場合、有効ビット
をゼロとして応答を返す。 ・メモリベースのメッセージ完了待ち行列から完了ステ
ータスを読み出す。読み出されるメモリ・アドレスは、
メッセージ完了待ち行列構成レジスタの行およびページ
・フィールドと、メッセージ完了待ち行列読出しオフセ
ット・レジスタのオフセット・フィールドとを使用する
ことによって形成される。読み出されるデータは、応答
パケットで返される。 ・メッセージ完了待ち行列読出しオフセット・レジスタ
のオフセット・フィールドを、1ずつインクリメントす
る。
【0114】図13は、メッセージ完了デキューCSRアド
レスの読出しから返される応答データについてフォーマ
ットを示す。アドレスの読出しから返される応答データ
のフィールドは、次のように定義される。 ・有効フィールド(ビット0) 読出しアクセスのとき、メッセージ完了待ち行列の空の
ステータスを示す。 ・完了ステータス・フィールド(ビット1-2) 受信されたメッセージの完了ステータスを指定する。表
10は、起こりうる完了ステータス・フィールド値を示
す。有効ビットは、読出しアクセスのとき、メッセージ
完了待ち行列の空のステータスを示す。
【0115】
【表10】
【0116】完了ステータス値0および1の場合、メッセ
ージのための空間が、メッセージ受信エリアに割り当て
られており、メモリは、解放されなければならない。 ・長さ−1・フィールド(ビット10-26) メッセージの場合、割り当てられるメモリの長さを、メ
モリ・ライン(32バイトのインクリメント)で指定する。
ゼロ値は、1メモリ・ライン(32バイト)を指定し、全て
が1の値は、131,072メモリ・ライン(4メガバイト)を指
定する。 ・開始オフセット・フィールド(ビット40-58) メッセージの開始に対するメモリ受信エリアへのオフセ
ットを指定する。
【0117】図14および図15は、メッセージングおよび
データコピー・ハードウェアによって使用されるメモリ
構造を記述する。3つのデータ構造は、 ・メッセージ受信エリア ・メッセージ完了待ち行列 ・ブロック変換テーブル である。
【0118】メッセージ受信エリア メッセージ受信エリアは、メッセージを書き込むことが
できる、メモリのオペレーティング・システム割当ての
領域である。メッセージ受信エリアは、メッセージが受
信されるとき、メッセージ空間を割り当て、メッセージ
を書き込むハードウェアによって制御される。
【0119】メッセージ受信エリアへのアクセスは全
て、コヒーレントなメモリ・アクセスによる。プロセッ
サは、メッセージ受信エリアから直接、またはデータコ
ピー・ハードウェアを使用することによって、メッセー
ジをコピーすることができる。
【0120】メッセージ完了待ち行列エリア メッセージ完了待ち行列エリアは、受信したメッセージ
をソフトウェアが処理できるようになるまで、メッセー
ジ完了ステータスを保有する。
【0121】この発明の実現の一例として使用されるHe
wlett-PackardのExcalibur製品で、各々のメッセージ完
了待ち行列エリアのサイズは、16Kバイトに固定され
る。各々のエントリは、大きさが8バイトであり、待ち
行列あたり2048エントリになる。メッセージ完了待ち行
列エリアは、制御EMAC160に物理的に接続されるメモリ
にある。
【0122】待ち行列エントリのその物理メモリ・アド
レスへのマッピングは、表11に示される。メッセージ
完了待ち行列構成レジスタのページ・フィールドは、Co
nfig.ページと呼ばれ、メッセージ完了待ち行列オフセ
ット・レジスタのオフセット・フィールドは、エントリ
・オフセットと呼ばれる。アドレスは、システム構成レ
ジスタのノーマル・メモリ・インタリーブ・フィールド
の値に基づいてそれぞれ生成されることに注意された
い。これは、ソフトウェアが、ローカル・ノード上のEM
ACに対する全てのメッセージ完了待ち行列エリアによっ
て使用されるメモリの連続する領域を割り当てることを
可能にする。
【0123】
【表11】
【0124】図14は、メッセージ完了待ち行列およびそ
のエントリの1つについてフォーマットを示す。メッセ
ージ・ステータス・エントリCSRのフィールドは、次の
通りである。 ・完了ステータス・フィールド(ビット0-1) 受信されたメッセージの完了ステータスを指定する。表
12は、起こりうる完了ステータス・フィールド値を示
す。
【0125】
【表12】
【0126】完了ステータス値が0および1の場合、メッ
セージのための空間がメッセージ受信エリアに割り当て
られており、メモリは解放されなければならない。 ・長さ−1・フィールド(ビット10-26) メッセージのために、メモリ・ライン(32バイトのイン
クリメント)の数で割り当てられたメモリを指定する。
ゼロの値は、1メモリ・ライン(32バイト)を指定し、全
てが1の値は、131,072メモリ・ライン(4Mバイト)を指
定する。 ・開始オフセット・フィールド(ビット40-58) メッセージの開始に対するメモリ受信エリアへのオフセ
ットを指定する。
【0127】ブロック変換テーブル定義 ブロック変換テーブル(BTT)は、周辺装置のアドレス空
間から物理メモリへの変換の手段を、I/Oシステムに提
供する。それは、連続するアドレスから物理メモリのペ
ージへのマッピングを指定する。テーブルは、各々のエ
ントリがワード(有利には4バイト)の大きさをもつメモ
リの1ページに限定される。
【0128】表の中の各々のエントリは、ブロック変換
エントリ(BTE)と呼ばれ、それは、物理メモリのページ
のためのページ・フレームを指定する。好ましい実施例
で、ページは4096バイトであり、BTTは、4メガバイトの
最大アドレス空間を指定する。しかし、この発明の理念
に基づいて他の構成が選択されてもよいことがわかるで
あろう。
【0129】図15は、ブロック変換テーブルおよびその
エントリの1つについてフォーマットを示す。BTE CSR
のフィールドは、次の通りである。 ・有効フィールド(ビット0) 有効エントリを示す。メッセージングおよびコピー表明
マシンが、有効ビットセットが設定されていないエント
リを使用する必要がある場合、操作は、問題を示す完了
ステータスでアボートされる。 ・読出し/書込みフィールド(ビット1) メッセージングおよびコピー表明マシンによって無視さ
れる。 ・物理ページ・フレーム・フィールド(ビット4-31) 操作のソースまたは宛先のいずれかについてページ・フ
レームを示す。
【0130】ソフトウェア・インタフェース メッセージングおよびデータコピー・ハードウェアのた
めのソフトウェア・インタフェースは、以下の機能から
構成される。 ・リセットし、初期化する。 ・入力レジスタをプログラムする。 ・操作完了ステータスを取得する。 ・メッセージ完了ステータスを取得する。 ・メッセージを読み出す。
【0131】リセットおよび初期化 システムがリセットされたあと、全てのハードウェア
は、コピー操作を受け入れ、実行する準備ができている
状態になる。リセットは、全てのメッセージ受信待ち行
列を不許可にする。メッセージを送信するために、宛先
ノード・メッセージ受信エリアおよびメッセージ完了待
ち行列CSRが、初期化されなければならない。
【0132】図示され個別に上述したが、完全に構成さ
れたノードには、有利な複数のEMACがあり、各々は、メ
ッセージ受信エリアの独立した制御を提供する。どのメ
ッセージ待ち行列も、メッセージング・メモリの量を低
減するために不許可にすることができる。これは、メッ
セージングのために使用される帯域幅を低減しないが、
別々に管理されるメッセージ受信エリアの数を低減す
る。
【0133】メッセージ受信エリアおよびメッセージ完
了待ち行列のために使用されるメモリは全て、ワイヤー
ドダウン(wired-down)されなければならない。(ワイヤ
ードダウンとう用語は、仮想から物理アドレスへの変換
が、同一のもののままでなければならないことを示
す)。要求は、(ブート時間に)メッセージングが初期化
される時間から始まる。
【0134】入力レジスタをプログラムする メッセージまたはデータコピー操作は、入力レジスタを
プログラムすることによって起動される。以下のシーケ
ンスは、コピー操作のために入力レジスタを初期化す
る。 ステップ1:CSR操作コンテクスト・レジスタ装備ビッ
トを設定する。 ステップ2:ソース物理ページ・フレーム・レジスタに
書き込む。 ステップ3:ソース・オフセット・レジスタに書き込
む。 ステップ4:宛先物理ページ・フレーム・レジスタに書
き込む。 ステップ5:宛先オフセット・レジスタに書き込む。 ステップ6:入力コマンド・レジスタに書き込み、全て
のフィールドを指定し、準備ビットを設定する。 ステップ7:CSR操作コンテクスト・レジスタのトリガ
・ビットを調べる。
【0135】ステップ1は、割込み/トラップが、デー
タ・ムーバ入力レジスタに上書きする、または仮想から
物理へのアドレス・マッピングを変更するときを検出す
るように、操作を装備する。これら2つのイベントのい
ずれかが生じる場合、トリガ・ビットは、ステップ7に
ついて設定されない。
【0136】ステップ2は、ソース物理ページ・フレー
ム・レジスタを初期化する。レジスタは、2つのアドレ
スの一方で書き込まれる。BTTを使用してソース領域を
指定する場合、レジスタは、BTTの基準アドレスで初期
化されなければならない。そうでない場合、ソース領域
は、メモリの1ページ内に含まれ、レジスタは、メモリ
のそのページのアドレスで初期化されなければならな
い。
【0137】ステップ3は、ソース・オフセット・レジ
スタを初期化する。レジスタは、ソース領域の開始への
オフセットで初期化される。コピーがメモリの1ページ
からであるとき、オフセットは、メモリのそのページへ
のバイト数である。そうでない場合、オフセットは、BT
T(4メガバイトより少ない)の始まりからのバイト数であ
る。BTTが使用されるとき、最上位10ビットは、BTTテー
ブルへの索引であり、最下位12ビットは、ページへのオ
フセットである。
【0138】ステップ4およびステップ5は、ステップ
2およびステップ3のソース・レジスタと同様に、宛先物
理ページ・フレームおよび宛先オフセット・レジスタを
初期化する。
【0139】ステップ6は、入力コマンド・レジスタを
初期化して、操作の長さおよびモードを設定する。準備
ビットは、1に設定される。全ての他のフィールドの値
は、要求されるメッセージまたはコピーのタイプに基づ
いて設定される。このレジスタが、書き込まれると、メ
ッセージングおよびコピー表明マシンは、直ちに操作を
始めることができる。
【0140】ステップ7は、CSR操作コンテクスト・レ
ジスタのトリガ・ビットを調べて、操作が、うまく始ま
ったかどうかを判断する。
【0141】Bゼロ操作 メモリ・ゼロ操作は、ステップ2およびステップ3がスキ
ップされることを除いて、上述のようにセットアップさ
れる。
【0142】メッセージング操作 メッセージ操作は、宛先物理ページ・フレーム・レジス
タが、宛先ノードおよび仮想リング情報を含むだけでよ
いことを除いて、上述のようにセットアップされる。さ
らに、宛先オフセット・レジスタは、書き込まれる必要
がない。
【0143】仮想アドレスを使って初期化する ソースまたは宛先物理ページ・フレーム・レジスタは、
仮想アドレスに基づいて初期化することができる。仮想
アドレスを用いて初期化するために、LPA(ロード物理ア
ドレス)命令は、仮想から物理へのアドレス変換を提供
する。
【0144】ソースまたは宛先アドレスのいずれかが、
非ワイヤード仮想メモリから取得されるとき、入力コマ
ンド・レジスタのTLBパージ・アボート許可ビットが、
設定されなければならない。TLBパージ・トランザクシ
ョンが、コピー操作より前またはその間に検出される場
合、このビットは、メッセージングおよびコピー表明マ
シンに、操作をアボートさせることができる。アボート
された操作は、再開され、操作を完了することができ
る。
【0145】操作が、先への進行を保証しつつアボート
されたとき、コピー操作は、コピーし残している長さで
再開することができる。アボートされたメッセージ操作
は、オリジナルの長さで再開されなければならない。仮
想ソース・アドレッシングを使用するメッセージの場
合、先への進行は保証されない。
【0146】入力レジスタが利用可能であるときを判断
する 入力レジスタがプログラムされるために利用できるとき
を決定する2通りの方法がある。第1に、入力コマンド
・レジスタを任意の時間に読み出して、準備ビットの状
態を判断する。ビットが設定されているとき、メッセー
ジングおよびコピー表明マシンは、入力レジスタの制御
をもち、ソフトウェア書込みが、無視される。ビットが
ハードウェアによってクリアされると、ソフトウェア
は、入力レジスタをプログラムし、操作をセットアップ
することができる。ソフトウェアは、準備ビットを設定
することによって、入力レジスタをプログラムすること
を完了する。
【0147】第2に、ハードウェアが準備ビットをクリ
アするとき、割込みをプロセッサに送信することができ
る。割込みは、プロセッサ内でマスクされ、プロセッサ
は、割込みペンディング・レジスタをポーリングして、
入力レジスタの利用可能性を判断することができる。
【0148】操作完了ステータスを取得する メッセージングおよびコピー操作のステータスを取得す
るため、プロセッサは、操作ステータス待ち行列レジス
タを読み出す。EPACによって維持される2つのステータ
ス待ち行列があり、そこに結合される各々のプロセッサ
について1つある。各々の待ち行列は、3要素の深さで
ある。操作が終了すると、メッセージングおよびコピー
表明マシンは、ステータスを待ち行列に入れる。操作ス
テータス待ち行列レジスタが読み出されるとき、エント
リは、待ち行列から除去される。順序は、入力レジスタ
にプログラムされる操作および操作ステータス待ち行列
レジスタから読み出されるステータスの間で、維持され
ないことがある。入力コマンド・レジスタのステータス
索引フィールドを使用して、操作タグを指定する。操作
ステータス待ち行列レジスタから読み出されるステータ
ス索引フィールドの値を使用して、ステータスを起動操
作に関連付ける。
【0149】メッセージングまたはコピー操作の完了時
に、割込みをプロセッサに送信することができる。割込
み番号は、入力コマンド・レジスタの割込み番号フィー
ルドによって指定される。割込みが送信されるプロセッ
サは、操作で入力コマンド・レジスタを初期化したプロ
セッサである。
【0150】メッセージ完了ステータスを取得する メッセージ完了ステータスが待ち行列に入れられると、
プロセッサは、割込みされる。プロセッサは、各々のメ
ッセージ完了待ち行列エントリを1度に1つずつ読み出
し、メッセージが、うまく到着したかどうか、メッセー
ジの開始オフセット、および長さを判断する。クリアさ
れた有効ビットをもつメッセージ完了待ち行列エントリ
は、待ち行列が空であることを示す。
【0151】メッセージを読み出す メッセージの開始および長さは、前のセクションで記述
されたように、メッセージ完了待ち行列エントリを読み
出すことによって取得される、すなわち「メッセージを
読み出す」。メッセージは、データコピー・ハードウェ
アによって、またはプロセッサがメッセージを直接コピ
ーすることによって、メモリから(それがインタリーブ
であろうと非インタリーブであろうと)アクセスするこ
とができる。
【0152】メッセージ割当てエリア・メモリを解放す
メッセージが、メッセージ受信エリアからコピーされる
と、占有であったメモリは、再利用のために解放されな
ければならない。メモリを解放するプロセスは、メモリ
が割り当てられ、メモリが解放される順序が異なること
によって複雑化される。この複雑さのため、ソフトウェ
ア構造を使用して、単純なビットマップの使用によっ
て、解放されるメモリを整理し、ソートする。メッセー
ジを解放するために、ビットマップの適当なビットが、
設定される。解放されるメッセージの全てのビットが設
定されると、ビットは、現在のメッセージ受信エリア占
有オフセット・レジスタ値からスキャンされ、クリアさ
れたビットの最初の発生を探す。そしてメッセージ割当
てエリア占有オフセット・レジスタは、設定されたビッ
トのストリングの終端に関連するオフセットに更新され
る。最後に、設定されたビットのストリングが、クリア
される。
【0153】高度に利用可能なシステム上でのメッセー
ジング 高度に利用可能なシステムで、インタリーブおよび非イ
ンタリーブの両方のメッセージは、各々のノードによっ
て受信されなければならない。さらに、メッセージのこ
れら2つのタイプは、ソフトウェアまたはハードウェア
問題のいずれかをもつノードからの腐敗を避けるため
に、別々に管理されなければならない。
【0154】高度に利用可能なシステムは、ノード内の
EMACのいくつかが、インタリーブ・メッセージを受信
し、いくつかが、非インタリーブ・メッセージを受信
し、あるいはいくつかのEMACが、不許可のそれらのメッ
セージ受信エリアをもつように、セットアップされる。
【0155】前述の説明は、メッセージングのコンテク
ストの中で、この発明のデータ移動操作の最適化を詳し
く述べた。さらに、上述したように、データコピーおよ
びパイプライン処理のようなその他のデータ移動操作も
この発明によって最適化できることが分かるであろう。
【0156】さらに前述の説明は、データコピー操作が
ハードウェアによって実施される一方、操作の間、TLB
パージについて監視することによって、更なる新しさの
基礎を開示する。TLBパージ警告機構によって、ハード
ウェアベースのデータコピー操作の間、仮想メモリペー
ジから物理メモリページへの変換のマッピングの完全性
を維持することができる。従来技術で、データコピー操
作がソフトウェアによって一部実施される場合、ソフト
ウェアが、マッピングの完全性を制御することもでき
る。TLBパージ警告機構は、ソフトウェアによって以前
に実施された操作がハードウェアによって実施されると
ころで、この発明に従ってその制御を提供する。
【0157】一般に、データコピーは、メモリ内の物理
ページまたはメモリ内の仮想ページから指定することが
できる。データ移動が、物理メモリ位置の間で実際に始
まる前に、仮想ページは、その仮想ページを物理ページ
に変換する追加のマッピングを必要とする。しかし、デ
ータコピー操作を発行し、または実際にデータを移動す
るプロセスの間に、コンピュータの他の機能がマッピン
グを変更する場合、問題が生じる。これが生じるとき、
操作は中止され、正確なマッピングが再確立されたら
(有利に中止点から)再開されなければならない。中止
し、再開を待つ必要の検出は、TLBパージ警告によって
実現にされ、ここで図17に関して記述される。
【0158】上述したように、TLBパージは、アドレス
変換バッファのパージであり、プロセッサに、仮想ペー
ジから物理ページへの変換に変更があったことを示す。
図17を参照して、ブロック1501で、TLBパージ警告機構
が、データコピー操作を始める前に装備される。図1お
よび図16に関して上述した典型的なアーキテクチャ構成
で、これは、図4に関して上述した操作コンテクストCSR
に書き込むことによって行われる。図4では、操作コン
テクストCSRは、装備ビットおよびトリガ・ビットをも
つように示されていることに気付くであろう。従って、
装備ビットをその操作コンテクストCSRに設定すること
は、TLBパージ警告によって制御される操作がセットア
ップされていることを、ハードウェアに知らせる。
【0159】そしてブロック1502で、TLBパージ警告機
構は、TLBパージについて監視し始める。この監視が続
く一方、ブロック1503で、仮想から物理への変換が、現
在定められているマッピングに従って始まる。この変換
は、指定されるデータコピー操作の中でソースおよび宛
先位置の両方について行われる。この変換が完了する
と、データ・ムーバ・レジスタが、コピー操作に備えて
セットアップされ(ブロック1504)、入力コマンドCSR内
の「準備」ビット(図3を参照)が設定される(ブロック15
05)。ブロック1505における入力コマンドCSR「準備」ビ
ットの設定は、実際のデータ移動のための全ての準備が
完了したことを、ハードウェアに知らせる。
【0160】ここでブロック1506で、ハードウェアは、
ブロック1501で機構が装備されてからTLBパージが起こ
ったかどうか調べる。何も起こっていない場合、操作コ
ンテクストCSRの「装備」ビットは、クリアされ、操作
コンテクストCSRの「トリガ」ビットが、設定される(ブ
ロック1507)。あるいは、1つまたは複数のTLBパージが
起きた場合、操作コンテクストCSRの「装備」ビット
は、クリアされ、操作コンテクストCSRの「トリガ」ビ
ットも、クリアされる(ブロック1508)。次にブロック15
09で、操作コンテクストCSRの「トリガ」ビットを調べ
る。それが、クリアである(すなわちTLBパージが起き
た)場合、データコピー操作は、ブロック1501に戻る。
他方、それが設定されている(すなわちTLBパージが生じ
なかった)場合、データコピー操作を実施することがで
きる。
【0161】引き続き図17を参照して、ブロック1510
で、データコピー操作が開始される。ブロック1510でデ
ータコピーが行われている間、TLBパージの監視も続く
ことに注意されたい。これは、先への進行を保証する。
コピー操作が完了する前に、TLBパージが検出される場
合、機構は、その時点で操作を中止し、どれくらいのデ
ータが転送し残されているかを指定するステータス情報
を有利に待ち行列に入れ、操作を完了する(ブロック151
1および1513)。処理は、ブロック1501に戻る。データコ
ピー操作が、最終的に再開されるとき、データ・ムーバ
は、この待ち行列に入れられたステータス情報を使用し
て、データコピー操作を、それがアボートされた点から
再開する。
【0162】他方、ブロック1511で、TLBパージが、デ
ータコピー操作の間に検出されない場合、操作は、うま
く完了する(ブロック1512)。ブロック1514でハードウェ
アは、成功した完了を示すステータスを操作完了ステー
タス待ち行列に入れる。
【0163】さらに、TLBパージの監視は、変換されて
いるメモリ・アドレスに特化しないことに注意された
い。機構は、任意の(複数の)メモリ・アドレスに影響を
及ぼすどのTLBパージについても監視し、トリガする。
また一般に、TLBパージは、まれなイベントであるの
で、上述したようなTLBパージ警告機構によって提供さ
れる対応策は、実質的にランタイムに影響を及ぼさずに
ハードウェア駆動のデータコピー操作の完全性を維持す
ることに留意されたい。さらに、ハードウェア上のラン
タイムは、たとえTLBパージ警告が許可されていても、
ソフトウェアによって実施される同等の操作よりも劇的
に速い。
【0164】さらに、ここで述べたTLBパージ機構は、
データコピー操作に使用することに制限されないことが
分かるであろう。それは、「フェッチおよびインクリメ
ント」および「フェッチおよびデクリメント」のような
他のプロセッサ操作でも非常に有利である。
【0165】この発明およびその利点を詳細に記述して
きたが、多様な変更、置き換えおよび改造を、この発明
の理念から逸脱することなく行うことができることを理
解すべきである。特に、Hewlett-PackardのExcalibur製
品を例示的に使用してこの発明を説明したことは既に述
べたが、そのシステム設計は、この発明を実現できる1
つの構成のみを示すパラメータを選択する。上記システ
ム設計および構成の中の変えられる要素は、この発明の
理念から逸脱することなく変更できることが分かるであ
ろう。
【0166】本発明は例として次の実施態様を含む。 (1)(a)装置から、データ移動操作を実施する要求を
受け取るステップ(101,102,103)と、(b)操作を許可す
るように、メモリ空間を割り当てるステップ(104)と、
(c)データを移動させるステップ(l06)と、(d)ステップ
(c)が完了したとき、操作が完了したことを上記装置に
通知するステップ(107)と、を含むデータ移動操作を最
適化する方法であって、ステップ(b)ないしステップ(d)
のうちの選択されるものが、ハードウェア操作として実
施されることを特徴とする、データ移動操作を最適化す
る方法。
【0167】(2)ステップ(b)、(c)および(d)のうち
選択されるものは、他のシステム操作とパイプライン処
理される、上記(1)に記載のデータ移動操作を最適化す
る方法。
【0168】(3)上記装置はプロセッサ(1401)であ
る、上記(1)または(2)に記載のデータ移動操作を最適化
する方法。
【0169】(4)上記ハードウェアは、上記プロセッ
サ(140)に機能的に応答するプロセッサ・エージェント
(150)を含み、上記プロセッサ・エージェント(150)は、
メッセージ/コピー表明マシン(153)と、プロセッサ(140
1)からデータを受信し、メッセージ/コピー表明マシン
(153)にデータを供給する1組の入力レジスタ(151,152)
と、メッセージ/コピー表明マシン(153)からデータを受
信し、プロセッサ(150)にデータを供給するステータス
待ち行列(154,155)と、を含む、上記(3)に記載のデータ
移動操作を最適化する方法。
【0170】(5)上記ハードウェアはさらに、上記プ
ロセッサ・エージェント(150)に機能的に応答するメモ
リ・アクセス・コントローラ(160)を含み、上記メモリ
・アクセス・コントローラ(160)は、メッセージ割当て
表明マシン(161)と、メッセージ完了ステータス待ち行
列(162)と、を含む、上記(3)または(4)に記載のデータ
移動操作を最適化する方法。
【0171】(6)上記メッセージ/コピー表明マシン
(153)は、上記メッセージ割当て表明マシン(161)および
上記メッセージ完了ステータス待ち行列(162)とトラン
ザクション(170,175,180,185)を交換する、上記(3)ない
し(5)のいずれかに記載のデータ移動操作を最適化する
方法。
【0172】(7)上記データ移動操作は、固定された
キャッシュライン長の環境における、1対のノード間の
制限のない時間長のメッセージングであり、上記メッセ
ージングは、(a)ローカル・プロセッサに、リモート・
プロセッサに送信されることが望まれるメッセージをフ
ォーマットさせるステップと、(b)メッセージの転送を
起動するように、ローカル・プロセッサ・エージェント
(150)上の入力コマンド・レジスタ(151,152)に書き込む
ステップと、(c)ローカル・プロセッサ・エージェント
(150)上のメッセージ/コピー表明マシン(153)に、メモ
リ内のメッセージのソース・アドレスおよびメッセージ
の長さを指定するトランザクション(170,175)をリモー
ト・メモリ・アクセス・コントローラ(160)へ送信させ
るステップと、(d)リモート・ノード上の受信メモリを
割り当てるステップと、(e)ステップ(d)が完了したこ
とを、メッセージ/コピー表明マシン(153)に通知するス
テップと、(f)キャッシュライン長の量のインクリメン
トで、上記メッセージを上記受信メモリにコピーするス
テップと、(g)ステップ(f)が完了したとき、完了ステ
ータス情報を、ソース・プロセッサからリモート・ステ
ータス待ち行列に送信するステップと、(h)ステップ
(g)が完了したとき、メッセージがペンディングである
という情報と共にリモート・プロセッサに割り込むステ
ップと、を含む、上記(1)ないし(6)のいずれかに記載の
データ移動操作を最適化する方法。
【0173】(8)さらに、ステップ(g)が完了したと
き、メッセージが送信されたという情報と共にソース・
プロセッサに割り込むステップを含む、上記(7)に記載
のデータ移動操作を最適化する方法。
【0174】(9)上記データ移動操作のセットアップ
および実行の間の、仮想メモリから物理メモリへのマッ
ピングの変更は、ハードウェア操作としてアドレス変換
バッファ(TLB)のパージの発生を監視することによって
検出される、上記(1)ないし(8)のいずれかに記載のデー
タ移動操作を最適化する方法。
【0175】(10)上記データ移動操作はデータコピ
ー操作である、上記(9)記載のデータ移動操作を最適化
する方法。
【0176】
【発明の効果】本発明によると、データ移動操作の中
で、メモリの割当ておよび操作の完了の通知をソフトウ
ェアではなくハードウェア上で実施することによって、
処理時間を速め、データ移動に必要な資源を有利に利用
することができる。
【図面の簡単な説明】
【図1】この発明を実現することができる典型的なアー
キテクチャ構成を示すブロック図。
【図2】この発明によって行われる、制限のない長さの
ノード間のメッセージングを実現するステップを示すフ
ロー図。
【図3】この発明を実現する好ましい実施例の入力コマ
ンド・レジスタのレイアウトを示す図。
【図4】この発明を実現する好ましい実施例の操作コン
テクスト・レジスタのレイアウトを示す図。
【図5】この発明を実現する好ましい実施例のソース/
宛先物理ページ・フレーム・レジスタのレイアウトを示
す図。
【図6】この発明を実現する好ましい実施例のソース/
宛先オフセット・レジスタのレイアウトを示す図。
【図7】この発明を実現する好ましい実施例の操作ステ
ータス待ち行列レジスタのレイアウトを示す図。
【図8】この発明を実現する好ましい実施例のメッセー
ジ受信エリア構成レジスタのレイアウトを示す図。
【図9】この発明を実現する好ましい実施例のメッセー
ジ受信エリア・オフセット・レジスタのレイアウトを示
す図。
【図10】この発明を実現する好ましい実施例のメッセ
ージ完了待ち行列構成レジスタのレイアウトを示す図。
【図11】この発明を実現する好ましい実施例のメッセ
ージ完了待ち行列オフセット・レジスタのレイアウトを
示す図。
【図12】この発明を実現する好ましい実施例のメッセ
ージ完了エンキューCSRアドレスのレイアウトを示す
図。
【図13】この発明を実現する好ましい実施例のメッセ
ージ完了デキューCSRアドレスのレイアウトを示す図。
【図14】この発明を実現する好ましい実施例のメッセ
ージ完了待ち行列およびそのエントリの1つのフォーマ
ットを示す図。
【図15】この発明を実現する好ましい実施例のブロッ
ク変換テーブルおよびそのエントリの1つに関するフォ
ーマットを示す図。
【図16】マルチプロセッサ・マルチノード・システム
でこの発明を具体化する典型的なアーキテクチャ構成を
機能レベルで示すブロック図。
【図17】ここに示されるTLBパージ警告機構の操作を
示すフロー図。
【符号の説明】
150 エクスキャリバ・プロセッサ・エージ
ェント・チップ 151,152 入力レジスタ 153 メッセージ/コピー表明マシン 154,155 ステータス待ち行列 160 メモリ・アクセス・コントローラ 162 メッセージ完了表明マシン 170,175,180,185 トランザクション

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】(a)装置から、データ移動操作を実施する
    要求を受け取るステップと、(b)上記操作を許可するた
    めに、メモリ空間を割り当てるステップと、(c)データ
    を移動させるステップと、(d)上記ステップ(c)が完了し
    たとき、上記操作が完了したことを上記装置に通知する
    ステップと、を含むデータ移動操作を最適化する方法で
    あって、 上記ステップ(b)ないし上記ステップ(d)のうちの選択さ
    れるものは、ハードウェア操作として実施されることを
    特徴とする、データ移動操作を最適化する方法。
JP10174400A 1997-06-24 1998-06-22 データ移動操作を最適化する方法 Pending JPH1173365A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US881,346 1997-06-24
US08/881,346 US5966733A (en) 1997-06-24 1997-06-24 Optimizing data movement with hardware operations

Publications (1)

Publication Number Publication Date
JPH1173365A true JPH1173365A (ja) 1999-03-16

Family

ID=25378291

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10174400A Pending JPH1173365A (ja) 1997-06-24 1998-06-22 データ移動操作を最適化する方法

Country Status (2)

Country Link
US (1) US5966733A (ja)
JP (1) JPH1173365A (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6668314B1 (en) * 1997-06-24 2003-12-23 Hewlett-Packard Development Company, L.P. Virtual memory translation control by TLB purge monitoring
US6493807B1 (en) * 1999-07-01 2002-12-10 Intel Corporation Updating flash blocks
US6263403B1 (en) * 1999-10-31 2001-07-17 Hewlett-Packard Company Method and apparatus for linking translation lookaside buffer purge operations to cache coherency transactions
JP3714184B2 (ja) * 2001-03-29 2005-11-09 富士通株式会社 記憶装置のデータ領域間複写処理方法、及び記憶システム
US6807608B2 (en) 2002-02-15 2004-10-19 International Business Machines Corporation Multiprocessor environment supporting variable-sized coherency transactions
US6704836B1 (en) * 2002-11-13 2004-03-09 Crossroads Systems, Inc. Method for dynamic control of concurrent extended copy tasks
US20050021836A1 (en) * 2003-05-01 2005-01-27 Reed Carl J. System and method for message processing and routing
GB0317699D0 (en) * 2003-07-29 2003-09-03 Ibm A copy engine and a method for data movement
US7496690B2 (en) * 2003-10-09 2009-02-24 Intel Corporation Method, system, and program for managing memory for data transmission through a network
US20110296437A1 (en) * 2010-05-28 2011-12-01 Devendra Raut Method and apparatus for lockless communication between cores in a multi-core processor

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2253432A5 (ja) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
JPS6091462A (ja) * 1983-10-26 1985-05-22 Toshiba Corp 演算制御装置
US5276808A (en) * 1991-02-04 1994-01-04 International Business Machines Corporation Data storage buffer system and method
US5560003A (en) * 1992-12-21 1996-09-24 Iowa State University Research Foundation, Inc. System and hardware module for incremental real time garbage collection and memory management
US5502811A (en) * 1993-09-29 1996-03-26 International Business Machines Corporation System and method for striping data to magnetic tape units
JP2778913B2 (ja) * 1994-04-26 1998-07-23 株式会社東芝 マルチプロセッサシステム及びメモリアロケーション方法
US5581737A (en) * 1994-09-12 1996-12-03 International Business Machines Corporation Method and apparatus for expansion, contraction, and reapportionment of structured external storage structures

Also Published As

Publication number Publication date
US5966733A (en) 1999-10-12

Similar Documents

Publication Publication Date Title
JP3889879B2 (ja) 仮想メモリ変換を制御する方法
US7533197B2 (en) System and method for remote direct memory access without page locking by the operating system
US7356026B2 (en) Node translation and protection in a clustered multiprocessor system
US6925547B2 (en) Remote address translation in a multiprocessor system
EP0431467B1 (en) Multiprocessor system having distributed shared resources and dynamic global data replication
US5274789A (en) Multiprocessor system having distributed shared resources and dynamic and selective global data replication
US8370533B2 (en) Executing flash storage access requests
JP4977159B2 (ja) 特定のプロセッサを使ってアトミックなコンペア・アンド・スワップ命令を実行するための技術
JP4719655B2 (ja) ネットワーク上におけるプロセッサ制御技術
US5682551A (en) System for checking the acceptance of I/O request to an interface using software visible instruction which provides a status signal and performs operations in response thereto
JP3807250B2 (ja) クラスタシステム、コンピュータ及びプログラム
JP2001117859A (ja) バス制御装置
US10649686B2 (en) Memory cache pressure reduction for pointer rings
JP2001216194A (ja) 演算処理装置
JP4130465B2 (ja) メモリ転送処理サイズが異なるプロセッサに関してアトミックな処理を実行するための技術
JP2695017B2 (ja) データ転送方式
JPH1173365A (ja) データ移動操作を最適化する方法
JPH0926910A (ja) 情報処理装置及びその方法及び情報処理システム及びその制御方法
JP2001333137A (ja) 自主動作通信制御装置及び自主動作通信制御方法
WO2008057833A2 (en) System and method for remote direct memory access without page locking by the operating system
JP2004206424A (ja) データ処理装置及びデータ処理装置におけるデータ転送方法
JP3375649B2 (ja) 並列計算機
JP4965974B2 (ja) 半導体集積回路装置
Giacomini et al. Low-level SCI software functional specification
JP2008123333A5 (ja)

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050412

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050412

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080325

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080819