JP3575572B2 - データ転送方法及びシステム - Google Patents
データ転送方法及びシステム Download PDFInfo
- Publication number
- JP3575572B2 JP3575572B2 JP19357096A JP19357096A JP3575572B2 JP 3575572 B2 JP3575572 B2 JP 3575572B2 JP 19357096 A JP19357096 A JP 19357096A JP 19357096 A JP19357096 A JP 19357096A JP 3575572 B2 JP3575572 B2 JP 3575572B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- address
- memory
- transfer
- transferred
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
- G06F13/423—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus with synchronous protocol
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/655—Same page detection
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)
- Bus Control (AREA)
Description
【発明が属する技術分野】
本発明はデータ転送方法及びデータ処理システムに関し、特にシステム・メモリと前記データ処理システムに接続された装置との間でデータを転送するデータ転送方法及びデータ処理システムに関する。
【0002】
【従来の技術】
現在、最近のコンピュータ・システムは、アプリケーション・プログラムに利用可能とするメモリがその機械(いわゆるリアル・メモリ)に実際に存在するメモリよりも多く存在するバーチャル・メモリの概念を用いている。オペレーティング・システム及びハードウエアはアプリケーションにこのメモリが実在していると思わせるので、このメモリはバーチャルと呼ばれるが、プロセッサ(又は複数のプロセッサ)によりアクセス可能な物理メモリに実際に存在していなくともよく、代わってシステムのハード・ディスクに割り付けられる。ハードウエア及びソフトウェアは、プログラムが発行するバーチャル・アドレスをリアル物理メモリか又はハード・ディスクのどこかに実際に存在するアドレスに変換する。これは、典型的には4Kバイトである1ページを単位として実行される。
【0003】
これらの変換は、常時実行され、かつ速やかに行われる必要があるので、プロセッサ・ハードウエアにおける「アドレス変換バッファ(translation lookaside buffer : TLB )」に保持されている。あるページがプロセッサによりアクセスされ、それがリアル・メモリに存在していないときは、ページ・フォールト割り込みが発生し、ソフトウェアはディスクからページを持ち込み、メモリ内のリアル・ページに対してこれをマップさせる。これをディスクからのページにより置換する前に、ディスクからのページを置くリアル・メモリ空間に空きがないときは、ソフトウェアは、まず、ディスクにコピーすべきページを選択してメモリ空間を凍結させる。これはページ・スワッピングと呼ばれる。
【0004】
ソフトウェアは、メモリからリアル・ページを除去するためにアドレス変換バッファ(TLB)を変更させるので、古いアドレスがこれ以上古いリアル・ページ位置にマップすることはない。これをTLBの無効化と呼ぶ。そのときに、このバーチャル・アドレスを参照すると、ソフトウェアはページ・フォールトを検出し、これがリアル・メモリに存在せず、ハード・ディスクについて探すべきことを知る。ハード・ディスクから新しいページを開いたときは、TLBを変更してメモリ内の当該リアル・ページ・アドレスに新しいバーチャル・アドレスをマップさせる。
【0005】
更に、今日のコンピュータ・システムも1以上のプロセッサからなり、各プロセッサは実行を高速化するためにリアル・メモリから最近に使用したデータのコピーを含むキャッシュ・メモリを有する。プロセッサがデータをメモリからフェッチする又はメモリに記憶するときは、このデータをキャッシュ・メモリにロード又はセーブする。同じような技術は、最近使用していなかったときにメモリにデータをセーブさせるため、及びプロセッサ(又は複数のプロセッサ)により現在アクセスされているキャッシュのあるセクションをデータにより更新するために用いられる。通常、これは、動作の速度を増加させるために完全にハードウエアにより実行される。プロセッサがキャッシュされたデータをアクセスしているときは、外部バス又はメモリを作動させることはないので、極めて効果的となる。
【0006】
これら型式のコンピュータ・システムでは、メモリ(又はプロセッサ・キャッシュにおいてデータを変更してもよいときはプロセッサ・キャッシュ)とI/O(入出力)装置との間でデータを移動させるためにいくつかの代替が現在存在する。第1の代替はプロセッサ発行ロードを有することであり、そのときはPIO(プログラムI/O)を用いて装置に直接記憶させる。
プロセッサは、その内部レジスタのうちの一つにロード命令を用いてメモリ(又はキャッシュ)をアクセスする。ハードウエアはTLBを用いてバーチャル・アドレスを変換して、リアル・メモリ(キャッシュ)位置からデータを検索する。前述のように、データがリアル・メモリに現在存在しないときには、ページ・フォールトが発生し、またオペレーティング・システム(「OS」)ソフトウェアはデータをスワップしてアクセスが発生する。データがプロセッサ・レジスタに存在するときには、I/O位置に対するストアを用いてI/O装置に書き込まれる。
【0007】
この方法は、プログラムに関しては簡単であるが、プロセッサはI/O装置の速度により遅くされるので、多くのプロセッサ・サイクルを費やすと共に、バースト転送が利用できず、また転送がプロセッサのオペランド・サイズ(ワード、二重ワード等)に限定されるので、システム・バス及びI/Oバス帯域幅を費やす欠点がある。このようにして4Kページのデータ転送は、典型的なワード・サイズのオペランドのロード及びストアを用いたときに、このようなオペレーションを1000も必要とすることになる。
【0008】
一般的な他の代替は、メモリからI/Oに、又はその逆に複数ブロックのデータを転送するために直接メモリ・アクセス(DMA)オペレーションを用いることである。これは、更に効果的なバースト転送を用い、かつ(もしシステム構成のために、トラフィックがメイン・システム(プロセッサ/メモリ・バス)から切り離されたままとなり得るときは、)潜在的にシステム・バスの帯域幅を使用しないことにより、第1の代替よりも多くのCPUサイクルをセーブする利点がある。しかし、以下で詳細に説明するように、依然としてDMAセットアップを含み、かつ終了の割り込みを取り扱う際に、ここでもOSカーネルに係わる大きなオーバーヘッドが存在する。
【0009】
【発明が解決しようとする課題】
DMAセットアップは、アプリケーションがI/Oのバーチャル・ページのうちの1ページからいくつかのデータを書き込みたい、又は読み出したいときに、I/O DMA装置がこれらのバーチャル・アドレスを典型的には判断できず、またデータがメモリに存在するのか、又はハード・ディスクに存在するのかも判らないことから複雑なものとなる。前述のように、OSのソフトウェアはアプリケーション・データをディスクに一時的にページアウトしてスワップさせてしまっているかもしれない。
【0010】
DMA転送をセットアップするために、プロセッサは、バーチャル・アドレスからリアル・メモリ・アドレスに変換したソース(又は目標)メモリ・アドレスを得て、かつ転送を実行している間中、リアル・ページをメモリに「保持する(pin)」OSソフトウェアを有する必要がある。これらのオペレーションは共にOSカーネル呼び出しに係わり、OSカーネル呼び出しはプロセッサ・サイクルにおいて高価になる恐れがある。「保持(pinning)」するオペレーションとは、OS ソフトウェアによってリアル・ページがディスクにページアウトされたり置換されたりしないように、リアル・ページ・マネジャにマークさせることである。万が一、このようなことができるのであれば、I/O装置は、破滅的な結果となる転送を要求するものを除き、アプリケーションにデータを転送することができるであろう。
【0011】
更に、グラフィック・スクリーン・ペインティング又はマルチメディア装置転送のようなデータ集約的な転送のときは、CPUオーバーヘッド又はシステム・バス帯域幅が限定要素となる。
【0012】
従って、当該技術分野において、データを転送する改良された、バーチャル・メモリ・データ処理システムにおけるシステム及び方法が要求されている。
【0013】
【課題を解決するための手段】
本発明は、ソースから目標(ターゲット)にデータを転送する方法に関連したデータ処理システム及び方法を提供することにより、以上の要求を満足させるものであって、前記システム及び方法は、(1)目標のアドレスを判断するステップと、(2)転送すべきデータの量を判断するステップと、(3)転送すべきデータのアドレスを判断するステップであって、前記転送すべきデータのアドレスが前記ソースに対応しているステップと、(4)転送エンジンのアドレスを判断して前記データの転送を実行するステップと、(5)ステータス情報を記憶すべきメモリ位置のアドレスを判断するステップであって、前記ステータス情報がデータの転送に関連しているステップと、(6)前記目標の前記アドレス、転送すべき前記データの前記量、及びステータス情報を記憶すべき前記メモリ位置の前記アドレスを前記転送エンジンに送出するステップと、(7)前記転送エンジンに転送すべき前記データの前記アドレスを送出するステップと、(8)前記目標の前記アドレス、転送すべき前記データの前記量、ステータス情報を記憶すべき前記メモリ位置の前記アドレス、及び前記転送エンジンにより転送すべき前記データの前記アドレスを受け取るステップと、(9)既存のデータの転送が既に進行しているか否かを判断するステップと、(10)前記既存のデータの転送が進行していることを判断したときは、前記データの前記転送を破棄するステップと、(11)前記ソースから複数のデータ部分を読み出し、かつ前記目標にこれらのデータ部分を書き込む複数対の読み出し/書き込み命令を発行するステップと、(12)あるカウントに到達したときに前記複数対の読み出し/書き込み命令を停止させるステップであって、前記カウントが転送すべき前記データの前記量に依存しているステップと、(13)前記データを前記ソースから、前記ステータス情報を記憶すべき前記メモリ位置に対する前記目標へ転送したこと標識を書き込むステップと、(14)前記メモリ位置に関連するアドレスの前記プロセッサによりポーリ
ングするステップと、(15)前記ポーリングするステップに応答して他のデータ転送を開始するステップとを含む。
【0014】
本発明の一実施例において、前記データ処理システムはパワー・ピー・シー(PowerPC(IBMの登録商標))アーキテクチャのものであり、前記転送エンジンにより転送されるべき前記データの前記アドレスには、下記命令、
eciwx(インデックスされたワードによる外部制御イン)、又は
ecowx(インデックスされたワードによる外部制御アウト)
のうちの一つが付随する。
【0015】
以上、以下に続く本発明の詳細な説明を良く理解できるようにするために、本発明の特徴及び技術的な効果を概要的に説明した。以下、本発明の請求の範囲の要旨を形成する本発明の付加的な特徴及び効果を説明する。
【0016】
【発明の実施の形態】
以下の説明では、本発明の十分な理解を得るために特定のワード又はバイト長のような多くの特定的な詳細を説明する。しかし、このような特定的な詳細がなくても本発明を実施できることは、当該技術分野に習熟する者に明らかであろう。他の場合では、不必要な詳細により説明が不明確とならないように、周知の回路はブロック図形式により示されている。大抵の部分において、タイミング要件に関する詳細等については、本発明の完全な理解を得るために、詳細は不必要、かつ当該技術分野に通常に習熟する者の習熟範囲内である限り、削除した。
【0017】
ここで、図面を参照すると、説明した要素は必ずしも一定の割合で示されてはいない。また、同一又は類似の要素はいくつかの図面を通して同一参照番号により表されている。
【0018】
以下に詳細に説明するように、本発明は、データ処理システム用のメモリ・コントローラ内でデータ移動エンジンを用いることにより、メモリとデータ処理システムに接続された装置との間でより効率的なデータの転送を得ることである。このデータ移動エンジンは転送に固有のパラメータ及び命令を受け取って、起動したプロセッサと更に係わることなく、転送を実行するように進行する。
【0019】
本発明は、IBM及びモトローラにより製造されているPowerPCコンピュータ・アーキテクチャによる実施について説明されている。しかし、本発明の要旨はメモリと他の装置との間のブロック・データの転送を用いて任意型式のコンピュータ・アーキテクチャにより実施されてもよい。(本発明は、データ処理システム内の別個の2つのメモリ位置間におけるデータの転送に対しても動作し得ることに注意すべきである。)
【0020】
本発明はPowerPCアーキテクチャ内で以下で説明する2つの命令を効率的に使用するようにしている。これらの命令は一連のオペレーションを実行するようにPowerPCアーキテクチャにより設計されている。これらの命令は、PowerPCアーキテクチャにより、又は本発明を用いて他の任意のコンピュータ・アーキテクチャにより、対応する一組のプログラム命令により置換されてもよい。
【0021】
以下の説明は、システム・メモリからデータ処理システムに接続されたI/O装置にデータを転送することに関連している。しかし、ここで指摘する任意の他の転送も同じようにして実行されてもよい。
【0022】
PowerPCアーキテクチャでは、メモリからロードする又はメモリに記憶するように機能する2つの外部装置制御命令が存在し、プロセッサがバーチャル・アドレスをリアル物理アドレスに変換し、かつプロセッサのアドレス・バス上に送出し、次いでその(システム)データ・バスからのデータ・ワードによりレジスタをロードするか、又は汎用レジスタ(GPR)からのデータ・ワードをプロセッサ(システム)データ・バスを通して記憶する。これに加えて、これらの命令は、付加的なピンを用いてこれらのオペレーションと共にリソース識別パラメータ(RID)を指定できる。このために、PowerPCアーキテクチャは、システムにおいて32リソースまで許容する5ビット・フィールドまでを提供する。このRIDは、アドレス・バス上の物理アドレス、及びデータ・バス上のそれ自身に固有な目的のデータを用いるリソースを選択するために一つのアドレスとして用いられてもよい。これらの命令は、ストア型式の命令用にインデックスされた外部制御出力ワード(ecowx)、及びロード型式命令用にインデックスされた外部制御入力ワード(eciwx)と呼ばれる。本発明は、以下でこれらの命令を用いてデータ移動エンジン(リソース)に対して通信をする。
【0023】
図1を参照すると、対称的なマルチプロセシング・システム100が示されている。システム100は、システム・アドレス及びデータ・バス104により、システムに接続されたN(Nは正の整数である。)プロセッサ102、103と、メモリ・コントローラ101とを含み、メモリ・コントローラ101はシステム100用のメモリ105を制御すると共に、プロセッサ102、103を種々のI/Oバス108にブリッジさせている。I/Oアダプタ106はI/Oバス108に接続されているのが示されている。I/Oアダプタ106は、知られている任意の又は意図しているI/O装置、例えばディスプレイ・アダプタ、グラフィック・アダプタ、又はマルチメディア装置用のアダプタであってもよい。更に、システムのメモリ・コントローラ101に配置されているのは、固有のRIDアドレスを有するデータ移動エンジン(転送リソース)109である。メモリ・コントローラ101にデータ移動エンジン109を配置させると、メモリ105が他のプロセッサ要求をサービスしてビジーでないときは、メモリ・バースト・サイズ転送を用いて転送を行えるようにする。
【0024】
データ移動エンジン109はメモリ・コントローラ101内に実施され、かつここで説明したように固有な方法により構築された周知の直接メモリ・アクセス(DMA)装置を含むものでよい。
【0025】
データ移動エンジン109に接続されているのは、以下で説明される転送を制御するプロセッサ102、103により直接プログラム可能な制御レジスタ(CR)111〜制御レジスタ(RA)114である。制御レジスタ(CR)111〜制御レジスタ(RA)114はデータ移動エンジン109内に配置されてもよいことに注意すべきである。
【0026】
制御レジスタ(CR)111は、データ転送の長さ、(メモリ105への又はメモリ105からの)データ転送の方向を表すビット、及びデータ転送中に目標アドレスを増加させるか否かを表すビットにより初期化される制御レジスタ(CR)である。
【0027】
制御レジスタ(AR)112は、I/Oアダプタ106のリアル・アドレスに初期化されるアダプタ・アドレス・レジスタである。制御レジスタ(AR)112はメモリ・メモリ転送用のリアル・メモリ・アドレスによりロードされてもよいことに注意すべきである。
【0028】
制御レジスタ(WAR)113は、オペレーションの完了ステータス・インジケータを置くために用いられるメモリ位置のリアル・アドレスに初期化される書き戻しアドレス・レジスタ(WAR)である。このステータスは転送進行についてチェックするためにプロセッサ102、103によりポーリング(読み出)されてもよい。しかし、プロセッサ102、103にとっては、指示されたメモリ位置をWAR により読み出すのがより効率的である。なぜならば、メモリ位置をそのキャッシュにキャッシュさせることができ、かつプロセッサ102、103がシステム・バス104をアクセスして完了ステータスをポーリングする必要がないからである。
【0029】
データ移動エンジン109が転送を終了すると、制御レジスタ(WAR)113の指示されたメモリ位置にステータスを記憶し、制御レジスタ(WAR)113はプロセッサのキャッシュ・データを無効にし、プロセッサ102、103はメモリ105からの完了ステータスを含む更新位置を自動的に読み出す。換言すれば、制御レジスタ(WAR)113はメモリ105内の位置を指すことができ、ここでデータ移動エンジン109は、データの転送を完了したこと、又は以下で説明する他の種々のステータス情報を表しているデータを記憶する。これがバス107上で発生すると、このステータスの書き戻しもシステム・バス104上に送出されるので、プロセッサ102、103はメモリ位置のアドレス及び書き込み命令を調べることができる。これはデータ転送を開始するプロセッサにおけるキャッシュ・ライン(例えばキャッシュ115)を無効にする。
【0030】
データ移動エンジン109は、プロセッサ・オペランド・サイズではなく、かつバーチャル・リアル・メモリ・アドレスを変換してメモリ・ページを「固定」する際に係わるセットアップ・オーバーヘッドなしに、メモリ・アクセスを集中的に行うバースト転送を用いて、1ページのデータまで転送するのに用いられてもよい。
【0031】
次に図2を参照すると、本発明による処理がステップ201から開始する。この処理は、システム100にプログラムされた一組の命令としてハードワイヤされても即ち記憶されてもよい。
【0032】
この転送は、転送すべきデータのソース又は行き先であるI/Oアダプタ106のリアル・アドレスを有する第1のプログラムの制御レジスタ(AR)112と、データ移動エンジン109のRIDを有する内部プロセッサ・レジスタ(EAR)(外部アクセス・レジスタ)117とをプログラムする。これらの値は、転送アプリケーション(グラフィック・インテンシブ・コンピュータ・プログラムのようなデータを転送するアプリケーション・プログラム)、典型的にはデバイス・ドライバにより通常知られており、ハードウエアにより構成されている。即ち、システムが初期化されれば、これらの値は変化しない。
【0033】
次に、プロセッサは、ステータス・メールボックスとして用いるように、システムのメモリ105におけるメモリ位置を制御レジスタ(WAR)113にプログラムする。
【0034】
次に、ステップ203において、処理は前述のように制御レジスタ(CR)111に長さ、方向及び自動増加値を書き込む。
【0035】
図3を参照すると、前記レジスタ値を制御レジスタ(CR)111〜制御レジスタ(WAR)113に記憶するためにメモリ・コントローラ101内で実行される処理が説明されている。ステップ301において、レジスタ値がプロセッサ102からメモリ・コントローラ101内の制御レジスタ(CR)111〜制御レジスタ(RA)114に記憶される。ステップ302において、これらのレジスタ値がこれら制御レジスタに配置される。ステップ303は、この処理が終了したことを示す。
【0036】
ステップ204において、メモリ105から又はメモリ105へ移動するデータ領域を指示させるecowx又はeciwx命令を発行する。プロセッサ102は、リアル・アドレスに対するecowx又はeciwx命令が用いるバーチャル・アドレスの変換を行い、これと内部プロセッサ・レジスタ(EAR)117に記憶されているRIDをシステム・バス104に転送する。
【0037】
ecowx又はeciwx命令を用いる代わりに、プロセッサ102は、図5のフローチャートに示したと同様に対応する一組のプログラム命令を実行してもよい。ステップ51において、プロセッサ102は転送すべきデータのメモリ位置に対する実効アドレス(バーチャル・アドレス)を計算する。次に、ステップ52において、プロセッサ102はこの実効アドレスを評価する。次に、ステップ53において、この実効アドレスをレジスタ(TLB)116を用いてリアル・アドレスに変換する。その後、ステップ54において、このリアル・アドレスをシステム・バス104に送出する。
【0038】
この残りの説明ではecowx又はeciwx命令の使用について行う。しかしながら、図5に示すプログラム命令セットを代わりに使用しもよい。図5に示すプログラム命令セットを使用するときは、プロセッサ102からシステム・バス104を介してメモリ・コントローラ101へ送出されるリアル・アドレスは、制御レジスタ(RA)114内に記憶されてもよい。
【0039】
ステップ204に応答して、メモリ・コントローラ101は、ecowx/ecowx命令コードを捕捉し、RIDをそれ自身のものとしてデコードし、そのアドレスをデータ移動エンジン109に転送する。データ移動エンジン109はecowxにより渡されたデータを使用せず、またeciwxに対してダミー・データを渡す。データ移動エンジン109が必要とするデータは制御レジスタ(CR)111、制御レジスタ(WAR)113及び制御レジスタ(AR)112に既に存在するので、データ移動エンジン109は何のデータも必要としない。ecowx/eciwx命令を受け取った後にデータ移動エンジン109内で実行される処理については、図4に関連して以下で更に詳細に説明する。
【0040】
図2を再び参照すると、ステップ205において、プロセッサ102はキャッシュ115から完了ステータス・ワードを読み取る。この完了ステータス・ワードは、転送を完了したことを表す、転送したパラメータが「不正」であったことを表す、ページを過ぎたことを表す、又はページをスワップしたことを表す。
【0041】
次に、ステップ206において、読み出し完了ステータス・ワードに応答して、プロセッサ102は、前記パラメータが正しく転送され、かつ/又は「正常」パラメータであったかを判断する。ノーならば、ステップ207において処理は終了し、かつプログラムは異常終了となる。しかしながら、パラメータが「正常」であると判断されると、処理はステップ208に進み、転送は完了したか否かを判断する。ノーのときは、処理がステップ209に進み、転送はページ境界を越えたこと、又はTLBオペレーションを調べたためにデータ移動エンジン109が終結してページがスワップされた恐れがあることを表していることを完了ステータスが表しているかどうかを判断する。いずれも発生しなかったときは、プロセッサ102内の処理はステップ205に戻り、ステータス・ワードを再び読み出す。
【0042】
このループは、制御レジスタ(WAR)113に示すメモリ位置にステータス書き戻しの調べによりステップ206、208、209について異なる一組のデータが得られるまで、プロセッサ102内で継続する。ステップ208において、完了ステータス・ワードが、メモリ105からI/Oアダプタ106へ又はその逆のデータの転送を完了したことを表しているときは、処理はステップ210に進み、システム100に接続されている新しいデバイスへの転送が要求されているか否かを判断する。イエスのときは、処理はステップ202に進み、EAR、AR及びWAR値をプログラムする。
【0043】
新しいデバイスを表していなかったときは、処理がステップ211に進み、I/Oアダプタ106へ又はI/O アダプタ106からの他の転送が要求されているか否かを判断する。I/Oアダプタ106へ又はI/O アダプタ106から他のデータ・ブロックを転送すべきときは、処理はステップ203に進み、メモリ105からI/Oアダプタ106へ又はその逆へ新しいデータの転送のために長さ、方向及び自動増加値に関する新しい情報により、レジスタ(CR)111がプログラムされる。他の転送が要求されていないときは、処理はステップ212において終了する。
【0044】
リアル・メモリ位置を固定するパフォーマンス問題を解決するために、データ移動エンジン109は、ページを固定することなく動作する。このために、データ移動エンジン109は、プロセッサ102、103がページをディスクにスワップする前に、互いに無効ページに送出するTLBオペレーションについて、システム・バス104を常時「調べる」。図6を参照して、データ移動エンジン109がシステム・バス104を調べることによりTLBオペレーションを検出したときは(ステップ501)、このようなスワップが発生するかも知れないことを表す。転送が活性のときは、TLBオペレーションは無視される(ステップ502、505、506)。転送が進行中であり、かつこれが制御レジスタ(CR)111に転送する現在長がある実施の定義値より小さいということによって表される「ほとんど」完了(ステップ503)であるときは、メモリ・コントローラ101はTLBオペレーションを「再試行」することになり、これをプロセッサにより再発行させる。これは、転送が終了するまで継続する。ステップ503において、転送が完了間近でないないときは、ロジックはステップ504に進み、次の便宜的な点で終了するために転送エンジンをテストするフラグをセットする(ステップ209で使用)。次いで、ステップ509において、メモリ・コントローラ101はTLBを無視し、ステップ510において調べを終了する。
【0045】
図2を参照して、ステップ209において、ステータスを読み込んだプロセッサ102がページを越えた、又はTLB停止が発生したことを検出すると、ステップ213に進み、完了したデータ転送の長さを読み出し、ステップ214においてこれを転送開始アドレス+1バイトに加算し、ステップ215において通常のメモリからの読み出しを行う。これは、新しいページ位置がまだメモリにあるか否かを調べるために行われる。ステップ216においてページ・フォールトが発生していると、オペレーティング・システムはこの処理を中断し、ステップ217において参照したページをスワップし、次いでステップ215において読み出しを反復する処理に戻る。ページ・フォールトが発生していないときは、処理はステップ218に進み、もとの転送サイズから既に転送した長さを引いてステップ219に進み、新しい長さを制御レジスタ(CR)111に記憶する。次いで、処理はステップ220に進み、新しい開始点を反映するようにもとのアドレスを調整し、次いで制御はステップ204に戻り、ecowx/eciwx命令を再発行する。そこで、データ転送が再開される。
【0046】
次に図4に戻り、ステップ401においてecowx/eciwx命令を受け取ることにより、メモリ・コントローラ101内で実施した処理を開始する。次に、ステップ402において、処理は、データの転送が既に進行しているか否かを判断する。イエスのときは、新しいデータ転送を終了し、ステータス書き戻しオペレーション内で制御レジスタ(WAR)113により指示されたメモリ位置にこの終了が書き込まれる。ステップ413においてこのステータスの記憶を実行する。メモリ・コントローラ101内の処理はステップ414により完了する。この終了ステータスはプロセッサ102により調べられ、キャッシュ115内の対応するキャッシュ・ラインを無効にし、従ってステップ205においてこのステータス・ワードを読み出すことができる。
【0047】
転送が進行していないときは、処理がステップ403に進み、制御レジスタ(CR)111〜制御レジスタ(RA)114内の転送されたパラメータが「正常」か否かを判断する。いずれかのパラメータが「不正」のときは、ステップ412においてこのステータスがセットされ、ステップ412において制御レジスタ(WAR)113内の値により指示されたメモリ位置に記憶される。しかし、全てのパラメータが「正常」のときは、処理はステップ404に進み、データ移動エンジン109により1単位又はブロックのデータが転送される。これは、対をなす読み出し/書き込み命令をメモリ・コントローラ101に発行することにより、実行される。これは、図1において読み出し/書き込み命令の複数対をデータ・バッファ110に転送するものとして示されており、データ・バッファ110はメモリ105から読み出したデータを受け取り、続いてI/Oアダプタ106に書き込むこととなり、もし制御レジスタ(CR)111内の方向ビットがI/Oアダプタ106からメモリ105への転送を示しているのであれば、I/Oアダプタ106からの読み出し及び次のメモリ105への書き込みが対をなす。
【0048】
次に、ステップ405において、処理は、データ転送が完了したか否かを判断する。イエスのときは、ステップ408において制御レジスタ(WAR)113内の値により指示されたメモリ位置に対する次の書き込みのために、この完了ステータスをセットする。この完了ステータスは、図2の判断ブロック208に示す処理において用いられる。
【0049】
データの転送が完了していないときは、処理がステップ406に進み、処理は前述のようにTLB停止フラグがセットされているか否かを判断する。データ移動エンジン109がTLB停止フラグのセットを検出すると(ステップ406)、処理はステップ409に進み、「ページ・スワップの可能性のために転送を停止」として完了ステータスをセットさせる。ステップ406においてTLB停止フラグのセットが検出されないときは、オペレーションはステップ407に進み、ページ境界を越えようとしているか否かを調べるためにテストを実行する。イエスのときは、ステータスをセットしてページ越えを表す。ステップ409及び410はいずれも制御レジスタ(CR)111内の長さを更新して転送を終了するまでに何回バイトを転送したかを表す(ステップ415)。処理はステップ413に進み、制御レジスタ(WAR)113を用いてステータスをメモリに記憶し、ステップ414において転送を終了する。
【0050】
ステップ407において、ページ境界を越えていないときは、処理はステップ404に戻ってデータの転送を継続する。
【0051】
PowerPC外部制御命令を用いて変換したアドレスをメモリ・コントローラ101内に前にセットアップした制御レジスタ(CR)111〜制御レジスタ(RA)114と共に、メモリ・コントローラ101に配置されているデータ移動エンジン109に転送すると、高速データ転送が最小のCPUオーバーヘッド及び小さなシステム帯域幅の使用により達成される。この方法はメモリとグラフィック又はマルチメディア装置との間で多量のデータを転送するために特に有用である。
【0052】
まとめとして、本発明の構成に関して以下の項を開示する。
【0053】
(1)データ処理システムにおいて、ソース装置から目標装置へデータを転送するデータ転送方法であって、パラメータ及び1以上の命令をプロセッサからメモリ・コントローラへ送出して前記ソース装置から前記目標装置へ前記データの前記転送を実行するステップであって、前記パラメータには前記目標装置のアドレス、及び転送する前記データの量の指定が含まれ、かつ前記1以上の命令には転送する前記データのアドレスが含まれている前記ステップと、データ移動エンジンにより制御された前記メモリ内の前記パラメータ及び前記1以上の命令を受け取るステップと、前記ソース装置から前記目標装置へ前記データの前記転送を実行するステップとを含むデータ転送方法。
(2)前記ソース装置は前記メモリ・コントローラに接続されたメモリ装置である上記(1)に記載のデータ転送方法。
(3)前記目標装置は前記メモリ・コントローラに接続されたメモリ装置である上記(1)に記載のデータ転送方法。
(4)前記目標装置は前記メモリ装置に接続されたI/O装置である上記(2)に記載のデータ転送方法。
(5)前記I/O装置はマルチメディア・アダプタである上記(4)に記載のデータ転送方法。
(6)前記ソース装置は前記メモリ・コントローラに接続されたI/O装置である上記(3)に記載のデータ転送方法。
(7)前記データ処理システムは前記メモリ・コントローラに接続された複数のプロセッサを有する対称マルチプロセッサ・システムである上記(1)に記載のデータ転送方法。
(8)前記実行するステップは、更に、前記ソース装置から複数のデータ部分を読み出し、かつ前記目標装置へこれら複数のデータ部分を書き込む複数対の読み出し/書き込み命令のを発行するステップと、あるカウントに到達したときに複数対の前記読み出し/書き込み命令の発行を停止させるステップであって、前記カウントは転送する前記データの前記量を指定する前記パラメータに従っている前記ステップとを含む上記(1)に記載のデータ転送方法。
(9)前記パラメータは、更に、前記データの前記転送のステータスを指定するステータス・データを記憶するシステム・メモリ内におけるアドレスを含み、前記データ転送方法は、更に、前記システム・メモリ内の前記アドレスに前記ステータス・データを書き込み、前記データの前記転送の前記ステータスを指定するステップと、前記システム・メモリ内の前記アドレスに前記ステータス・データを書き込み、前記データの転送の前記ステータスを指定するステップとを含む上記(1)に記載のデータ転送方法。
(10)前記ステータス・データは、前記ソース装置から前記目標装置に前記データが転送されたか否かを指定する上記(9)に記載の方法。
(11)前記ステータス・データはページの境界を越えたことを指定する上記(9)に記載のデータ転送方法。
(12)前記ステータス・データはTLBオペレーションを検出したことを表示し、かつ前記データ移動エンジンは前記調べるオペレーションにより前記TLB オペレーションを検出する上記(9)に記載のデータ転送方法。
(13)更に、前記ステータス・データを記憶するために前記プロセッサにより前記システム・メモリ内の前記アドレスをポーリングするステップを含む上記(9)に記載のデータ転送方法。
(14)更に、前記ポーリングするステップに応答して他のデータ転送を開始させるステップを含む上記(13)に記載のデータ転送方法。
(15)更に、転送する前記データの前記アドレスに対応する実効アドレスを計算するステップと、前記データ移動エンジンのアドレスを計算するステップと、前記実効アドレスをリアル・アドレスに変換するステップとを含み、前記リアル・アドレスは前記データ移動エンジンに送出される上記(1)に記載のデータ転送方法。
(16)前記データ処理システムはPowerPCアーキテクチャのものであり、かつ前記1以上の命令は次のeciwx(インデックスされたワードにおける外部制御)、及びecowx(インデックスされたワードにおける外部制御)のうちの一つからなる上記(12)に記載のデータ転送方法。
(17)更に、前のデータ転送が進行中であることを判断したのときは、前記転送を破棄するステップを含む上記(1)に記載のデータ転送方法。
(18)更に、パラメータが不正であることを判断したのときは、前記転送を破棄するステップを含む上記(1)に記載のデータ転送方法。
(19)データ処理システムにおいて、プロセッサと、メモリ・コントローラであって、データ移動エンジンを含む前記メモリ・コントローラと、前記メモリ・コントローラに接続されたメモリと、前記メモリ・コントローラに前記プロセッサを接続させるバスと、前記メモリ・コントローラに接続されたI/O装置と、前記プロセッサから前記メモリ・コントローラに複数のパラメータ及び1以上の命令を送出して前記メモリから前記I/O装置へデータの転送を実行させる手段であって、前記パラメータは前記I/O装置のアドレス及び転送すべき前記データの量の指定を含み、かつ前期以上の命令が転送すべき前期データのアドレスを含む前記手段と、前記データ移動エンジンにより前記メモリ・コントローラ内に前記複数のパラメータ及び前記1以上の命令を受け取る手段と、前記メモリから前記I/O装置へ前記データの転送を実行する手段とを含むデータ処理システム。
(20)前記I/O装置はグラフィック・アダプタである、上記(19)に記載のデータ処理システム。
(21)前記データ処理システムは、前記メモリ・コントローラに接続された複数のプロセッサを有する対称マルチプロセッサ・システムである、上記(19)に記載のデータ処理システム。
(22)前記実行する手段は、更に、前記メモリからデータの複数部分を読み出し、かつ前記I/O装置にこれらデータの複数部分を書き込む複数対の読み出し/書き込み命令を発行する手段と、あるカウントに到達したときに複数対の前記読み出し/書き込み命令の発行を停止させるステップであって、前記カウントは転送する前記データの前記量を指定する前記パラメータに従っている前記手段とを含む、上記(19)に記載のデータ処理システム。
(23)前記パラメータは、更に、前記メモリ・コントローラ内の複数のレジスタに記憶され、更に、前記データの前記転送のステータスを指定するステータス・データを記憶するシステム・メモリ内のアドレスを含み、更に、前記システム・メモリ内の前記アドレスに前記ステータス・データを書き込み、前記データの前記転送の前記ステータスを指定する手段を含む、上記(19)に記載のデータ処理システム。
(24)前記ステータス・データは、前記メモリ装置から前記I/O装置に前記データが転送されたか否かを指定する、上記(23)に記載のデータ処理システム。
(25)更に、前記システム・メモリ内に前記アドレスのプロセッサによりポーリングして前記ステータス・データを記憶する手段を含む、上記(24)に記載のデータ処理システム。
(26)更に、転送する前記データの前記アドレスに対応する実効アドレスを計算する前記プロセッサにおける手段と、前記データ移動エンジンのアドレスを計算する前記プロセッサにおける手段と、前記実効アドレスをリアル・アドレスに変換する前記プロセッサにおける手段とを含み、前記リアル・アドレスは前記データ移動エンジンに送出される、上記(22)に記載のデータ処理システム。
(27)前記データ処理システムはPowerPCアーキテクチャのものであり、かつ前記1以上の命令は次のeciwx(インデックスされたワードにおける外部制御)、及びecowx(インデックスされたワードにおける外部制御)のうちの一つからなる、上記(19)に記載のデータ処理システム。
(28)ソースから目標にデータを転送する、データ処理システムにおけるデータ転送方法であって、前記目標のアドレスを判断するステップと、転送すべきデータの量を判断するステップと、転送すべきデータのアドレスを判断するステップであって、前記転送すべきデータのアドレスが前記ソースに対応しているステップと、転送エンジンのアドレスを判断して前記データの前記転送を実行するステップと、ステータス情報を記憶すべきメモリ位置のアドレスを判断するステップであって、前記ステータス情報が前記データの前記転送に関連しているステップと、前記目標の前記アドレス、転送すべき前記データの前記量、及びステータス情報を記憶すべき前記メモリ位置の前記アドレスを前記転送エンジンに送出するステップと、前記転送エンジンに転送すべき前記データの前記アドレスを送出するステップと、前記目標の前記アドレス、転送すべき前記データの前記量、ステータス情報を記憶すべき前記メモリ位置の前記アドレス、及び前記転送エンジンにより転送すべき前記データの前記アドレスを受け取るステップと、既存のデータの転送が既に進行しているか否かを判断するステップと、前記既存のデータの転送が進行していることを判断したときは、前記データの前記転送を破棄するステップと、前記ソースから複数のデータ部分を読み出し、かつ前記目標にこれらのデータ部分を書き込む複数対の読み出し/書き込み命令を発行するステップと、あるカウントに到達したときに前記複数対の読み出し/書き込み命令を停止させるステップであって、前記カウントが転送すべき前記データの前記量に依存しているステップと、前記データを前記ソースから、前記ステータス情報を記憶すべき前記メモリ位置に対する前記目標へ転送したことの指定を書き込むステップと、前記メモリ位置に関連するアドレスの前記プロセッサによりポーリングするステップと、前記ポーリングするステップに応答して他のデータ転送を開始するステップとを含むデータ転送方法。
(29)前記データ処理システムがパワー・ピー・シー(PowerPC)アーキテクチャのものであり、前記転送エンジンにより転送されるべき前記データの前記アドレスには下記命令eciwx(インデックスされたワードによる外部制御イン)、又はecowx(インデックスされたワードによる外部制御アウト)のうちの一つが付随する、上記(28)に記載のデータ転送方法。
(30)更に、ページ除去オペレーションを検出したときは、前記データの前記転送を一時的に中断するステップを含む、上記(28)に記載のデータ転送方法。
【図面の簡単な説明】
【図1】本発明により構築されたデータ処理システムを示したものである。
【図2】本発明によるフローチャートである。
【図3】図1に示すメモリ・コントローラ内のレジスタの値を記憶するフローチャートである。
【図4】本発明による転送エンジンのオペレーションに従ったフローチャートである。
【図5】バーチャル・アドレスをリアル・アドレスに変換するフローチャートである。
【図6】TLBオペレーションを検出するフローチャートである。
【符号の説明】
101 メモリ・コントローラ
102、103 プロセッサ
104 システム・バス
105 メモリ
106 I/Oアダプタ
109 データ移動エンジン
110 データ・バッファ
111〜114 制御レジスタ
Claims (27)
- データ処理システムにおいて、ソース装置から目標装置へデータを転送するデータ転送方法であって、
(A)パラメータ及び1以上の命令をプロセッサからデータ移動エンジンへ送出するステップであって、
(a)前記データ移動エンジンは、前記ソース装置から前記目標装置へ前記データの転送を実行するためのメモリ・コントローラ内に設けられ、
(b)前記パラメータには前記目標装置のアドレス、転送する前記データの量の指定、及び前記データの転送のステータスを指定するステータス・データを記憶するシステム・メモリ内のアドレスが含まれ、
(c)前記1以上の命令には転送する前記データのアドレスが含まれている、
前記送出するステップと、
(B)前記メモリ・コントローラ内において、前記パラメータ及び前記1以上の命令を前記データ移動エンジンにより受け取るステップと、
(C)前記ソース装置から前記目標装置へ前記データの転送を実行するステップと、
(D)前記システム・メモリ内のアドレスに、前記データの転送のステータスを指定するステータス・データを書き込むステップと、
を含むデータ転送方法。 - 前記ソース装置は前記メモリ・コントローラに接続されたメモリ装置である請求項1に記載のデータ転送方法。
- 前記目標装置は前記メモリ・コントローラに接続されたメモリ装置である請求項1に記載のデータ転送方法。
- 前記目標装置は前記メモリ・コントローラに接続されたI/O装置である請求項2に記載のデータ転送方法。
- 前記I/O装置はマルチメディア・アダプタである請求項4に記載のデータ転送方法。
- 前記ソース装置は前記メモリ・コントローラに接続されたI/O装置である請求項3に記載のデータ転送方法。
- 前記データ処理システムは前記メモリ・コントローラに接続された複数のプロセッサを有する対称マルチプロセッサ・システムである請求項1に記載のデータ転送方法。
- 前記実行するステップは、更に、
前記ソース装置から複数のデータ部分を読み出し、かつ前記目標装置へこれら複数のデータ部分を書き込む複数対の読み出し/書き込み命令を発行するステップと、
あるカウントに到達したときに複数対の前記読み出し/書き込み命令の発行を停止させる停止ステップであって、前記カウントは転送する前記データの前記量を指定する前記パラメータに従っている、前記停止ステップと
を含む請求項1に記載のデータ転送方法。 - 前記ステータス・データは、前記ソース装置から前記目標装置に前記データが転送されたか否かを指定する請求項1に記載のデータ転送方法。
- 前記ステータス・データはページの境界を越えたことを指定する請求項1に記載のデータ転送方法。
- 前記ステータス・データは、前記プロセッサがページをスワップする前に無効ページに送出するTLBオペレーションを検出したことを表示し、かつ前記データ移動エンジンは調べるオペレーションにより前記TLB オペレーションを検出する請求項1に記載のデータ転送方法。
- 更に、前記ステータス・データを記憶するために前記プロセッサにより前記システム・メモリ内のアドレスをポーリングするステップを含む請求項1に記載のデータ転送方法。
- 更に、前記ポーリングするステップに応答して他のデータ転送を開始させるステップを含む請求項1に記載のデータ転送方法。
- 更に、
転送する前記データのアドレスに対応する実効アドレスを計算するステップと、
前記データ移動エンジンのアドレスを計算するステップと、前記実効アドレスをリアル・アドレスに変換するステップと
を含み、前記リアル・アドレスは前記データ移動エンジンに送出される請求項1に記載のデータ転送方法。 - 更に、
前のデータ転送が進行中であることを判断したのときは、前記転送を破棄するステップを含む請求項1に記載のデータ転送方法。 - 更に、
パラメータが不正であることを判断したのときは、前記転送を破棄するステップを含む請求項1に記載のデータ転送方法。 - データ処理システムにおいて、ソース装置から目標装置へデータを転送するデータ転送方法であって、
(A)前記ソース装置から前記目標装置へ前記データの転送を実行するために、パラメータ及び1以上の命令を、プロセッサからメモリ・コントローラに送出するステップであって、
(a)前記パラメータには前記目標装置のアドレス、転送する前記データの量の指定、及び前記データの転送のステータスを指定するステータス・データを記憶するシステム・メモリ内のアドレスが含まれ、
(b)前記1以上の命令には転送する前記データのアドレスが含まれている、
前記送出するステップと、
(B)前記メモリ・コントローラ内において、前記パラメータ及び前記1以上の命令をデータ移動エンジンにより受け取るステップと、
(C)前記ソース装置から前記目標装置へ前記データの前記転送を実行する実行ステップであって、
前記データ処理システムは、メモリからロードする又はメモリに記憶するように機能する2つの外部制御命令が存在するPowerPCアーキテクチャのものであり、かつ前記1以上の命令は次の
eciwx(インデックスされたワードによる外部制御イン)、及び
ecowx(インデックスされたワードによる外部制御アウト)
の2つの外部制御命令のうちの一つを含む、実行ステップと、
(D)前記システム・メモリ内のアドレスに、前記データの転送のステータスを指定するステータス・データを書き込むステップと、
を含むデータ転送方法。 - データ処理システムにおいて、
(A)プロセッサと、
(B)データ移動エンジンを含み、メモリから I/O 装置へデータの転送を実行するためのメモリ・コントローラと、
(C)前記メモリ・コントローラに接続された前記メモリと、
(D)前記メモリ・コントローラに前記プロセッサを接続させるバスと、
(E)前記メモリ・コントローラに接続された前記I/O装置と、
(F)前記プロセッサから前記メモリ・コントローラ内の前記データ移動エンジンに複数のパラメータ及び1以上の命令を送出する送出手段であって、
(a)前記パラメータは前記メモリ・コントローラ内の複数のレジスタに記憶され、前記I/O装置のアドレス、転送すべき前記データの量の指定、及び前記データの転送のステータスを指定するステータス・データを記憶するシステム・メモリ内のアドレスを含み、
(b)前記1以上の命令が転送すべき前記データのアドレスを含む、
前記送出手段と、
(G)前記データ移動エンジンにより前記メモリ・コントローラ内に前記複数のパラメータ及び前記1以上の命令を受け取る手段と、
(H)前記メモリから前記I/O装置へ前記データの転送を実行する実行手段と、
(I)前記システム・メモリ内のアドレスに、前記データの転送のステータスを指定するステータス・データを書き込む手段と
を含むデータ処理システム。 - 前記I/O装置はグラフィック・アダプタである、請求項18に記載のデータ処理システム。
- 前記データ処理システムは、前記メモリ・コントローラに接続された複数のプロセッサを有する対称マルチプロセッサ・システムである、請求項18に記載のデータ処理システム。
- 前記実行手段は、更に、
前記メモリから複数のデータ部分を読み出し、かつ前記I/O装置にこれら複数のデータ部分を書き込む複数対の読み出し/書き込み命令を発行する手段と、
あるカウントに到達したときに複数対の前記読み出し/書き込み命令の発行を停止させる停止手段であって、前記カウントは転送する前記データの前記量を指定する前記パラメータに従っている前記停止手段と
を含む、請求項18に記載のデータ処理システム。 - 前記ステータス・データは、前記メモリから前記I/O装置に前記データが転送されたか否かを指定する、請求項18に記載のデータ処理システム。
- 更に、前記ステータス・データを記憶するために前記プロセッサにより前記システム・メモリ内のアドレスをポーリングする手段
を含む、請求項18に記載のデータ処理システム。 - 更に、
転送する前記データの前記アドレスに対応する実効アドレスを計算する前記プロセッサにおける手段と、
前記データ移動エンジンのアドレスを計算する前記プロセッサにおける手段と、
前記実効アドレスをリアル・アドレスに変換する前記プロセッサにおける手段と
を含み、前記リアル・アドレスは前記データ移動エンジンに送出される、請求項18に記載のデータ処理システム。 - データ処理システムにおいて、
(A)プロセッサと、
(B)メモリ・コントローラであって、データ移動エンジンを含む前記メモリ・コントローラと、
(C)前記メモリ・コントローラに接続されたメモリと、
(D)前記メモリ・コントローラに前記プロセッサを接続させるバスと、
(E)前記メモリ・コントローラに接続されたI/O装置と、
(F)前記メモリから前記I/O装置へデータの転送を実行するための前記メモリ・コントローラに、前記プロセッサから複数のパラメータ及び1以上の命令を送出する送出手段であって、
前記パラメータは前記I/O装置のアドレス、転送すべき前記データの量の指定、及び前記データの転送のステータスを指定するステータス・データを記憶するシステム・メモリ内のアドレスを含み、かつ前記1以上の命令が転送すべき前記データのアドレスを含む、前記送出手段と、
(G)前記データ移動エンジンにより前記メモリ・コントローラ内に前記複数のパラメータ及び前記1以上の命令を受け取る手段と、
(H)前記メモリから前記I/O装置へ前記データの転送を実行する実行手段であって、
前記データ処理システムは、メモリからロードする又はメモリに記憶するように機能する2つの外部制御命令が存在するPowerPCアーキテクチャのものであり、かつ前記1以上の命令は次の
eciwx(インデックスされたワードによる外部制御イン)、及び
ecowx(インデックスされたワードによる外部制御アウト)
の2つの外部制御命令のうちの一つを含む、実行手段と、
(I)前記システム・メモリ内のアドレスに、前記データの転送のステータスを指定するステータス・データを書き込む手段と
を含む、データ処理システム。 - ソースから目標にデータを転送する、データ処理システムにおけるデータ転送方法であって、
(A)前記目標のアドレスを判断するステップと、
(B)転送すべき前記データの量を判断するステップと、
(C)転送すべき前記データのアドレスを判断するステップであって、転送すべき前記データのアドレスが前記ソースに対応しているステップと、
(D)ステータス情報を記憶すべきメモリ位置のアドレスを判断するステップであって、前記ステータス情報が前記データの転送に関連しているステップと、
(E)(A)のステップで判断された前記目標のアドレスと、(B)のステップで判断された転送すべき前記データの前記量と、(D)のステップで判断されたステータス情報を記憶すべき前記メモリ位置のアドレスと、を前記転送エンジンに送出するステップと、
(F)(C)のステップで判断された転送すべき前記データのアドレスを、前記転送エンジンに送出するステップと、
(G)前記目標のアドレス、転送すべき前記データの前記量、ステータス情報を記憶すべき前記メモリ位置のアドレス、及び転送すべき前記データのアドレスを、前記転送エンジンにより受け取るステップと、
(H)既存のデータの転送が既に進行しているか否かを判断するステップと、
(I)(H)のステップで前記既存のデータの転送が進行していると判断したときは、前記データの転送を破棄するステップと、
(J)前記ソースから複数のデータ部分を読み出し、かつ前記目標にこれらのデータ部分を書き込む複数対の読み出し/書き込み命令を発行するステップと、
(K)あるカウントに到達したときに前記複数対の読み出し/書き込み命令を停止させる停止ステップであって、前記カウントが転送すべき前記データの前記量に依存している、停止ステップと、
(L)前記データが前記ソースから前記目標へ転送されたという指定を、前記ステータス情報を記憶すべき前記メモリ位置に書き込むステップと、
(M)前記プロセッサにより前記メモリ位置に関連するアドレスをポーリングするステップと、
(N)前記ポーリングするステップに応答して他のデータ転送を開始するステップと、
を含むデータ転送方法。 - 前記データ処理システムが、メモリからロードする又はメモリに記憶するように機能する2つの命令が存在するパワー・ピー・シー(PowerPC)アーキテクチャのものであり、前記転送エンジンにより転送されるべき前記データのアドレスには下記2つの命令
eciwx(インデックスされたワードによる外部制御イン)、又は
ecowx(インデックスされたワードによる外部制御アウト)
のうちの一つが付随する、請求項26に記載のデータ転送方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US536560 | 1995-09-29 | ||
US08/536,560 US5765022A (en) | 1995-09-29 | 1995-09-29 | System for transferring data from a source device to a target device in which the address of data movement engine is determined |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0997230A JPH0997230A (ja) | 1997-04-08 |
JP3575572B2 true JP3575572B2 (ja) | 2004-10-13 |
Family
ID=24139017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP19357096A Expired - Fee Related JP3575572B2 (ja) | 1995-09-29 | 1996-07-23 | データ転送方法及びシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US5765022A (ja) |
JP (1) | JP3575572B2 (ja) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3256442B2 (ja) * | 1996-08-27 | 2002-02-12 | 日本電気株式会社 | データ転送制御回路 |
US5915124A (en) * | 1997-01-03 | 1999-06-22 | Ncr Corporation | Method and apparatus for a first device accessing computer memory and a second device detecting the access and responding by performing sequence of actions |
US6105113A (en) * | 1997-08-21 | 2000-08-15 | Silicon Graphics, Inc. | System and method for maintaining translation look-aside buffer (TLB) consistency |
US6449665B1 (en) | 1999-10-14 | 2002-09-10 | Lexmark International, Inc. | Means for reducing direct memory access |
US6567902B1 (en) * | 2000-08-15 | 2003-05-20 | Juniper Networks. Inc. | Systems and methods for packing data into a destination register |
US6662289B1 (en) * | 2001-05-15 | 2003-12-09 | Hewlett-Packard Development Company, Lp. | Method and apparatus for direct conveyance of physical addresses from user level code to peripheral devices in virtual memory systems |
US6973520B2 (en) * | 2002-07-11 | 2005-12-06 | International Business Machines Corporation | System and method for providing improved bus utilization via target directed completion |
US6981072B2 (en) * | 2003-06-05 | 2005-12-27 | International Business Machines Corporation | Memory management in multiprocessor system |
US7739479B2 (en) * | 2003-10-02 | 2010-06-15 | Nvidia Corporation | Method for providing physics simulation data |
US7895411B2 (en) * | 2003-10-02 | 2011-02-22 | Nvidia Corporation | Physics processing unit |
US20050086040A1 (en) * | 2003-10-02 | 2005-04-21 | Curtis Davis | System incorporating physics processing unit |
US7219170B2 (en) * | 2003-12-04 | 2007-05-15 | Intel Corporation | Burst transfer register arrangement |
US20050251644A1 (en) * | 2004-05-06 | 2005-11-10 | Monier Maher | Physics processing unit instruction set architecture |
JP2006072473A (ja) * | 2004-08-31 | 2006-03-16 | Fuji Xerox Co Ltd | データ転送方法および装置 |
WO2006045216A1 (fr) * | 2004-10-28 | 2006-05-04 | Magima Digital Information Co., Ltd. | Dispositif et procede d'arbitrage |
US7650266B2 (en) * | 2005-05-09 | 2010-01-19 | Nvidia Corporation | Method of simulating deformable object using geometrically motivated model |
US7636800B2 (en) * | 2006-06-27 | 2009-12-22 | International Business Machines Corporation | Method and system for memory address translation and pinning |
US8239657B2 (en) * | 2007-02-07 | 2012-08-07 | Qualcomm Incorporated | Address translation method and apparatus |
US7627744B2 (en) * | 2007-05-10 | 2009-12-01 | Nvidia Corporation | External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level |
US8458371B2 (en) * | 2009-08-03 | 2013-06-04 | National Instruments Corporation | Peripheral devices integrated into a processing chain |
US8307136B2 (en) * | 2009-08-03 | 2012-11-06 | National Instruments Corporation | Data movement system and method |
US8924685B2 (en) * | 2010-05-11 | 2014-12-30 | Qualcomm Incorporated | Configuring surrogate memory accessing agents using non-priviledged processes |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4016545A (en) * | 1975-07-31 | 1977-04-05 | Harris Corporation | Plural memory controller apparatus |
JPS57138079A (en) * | 1981-02-20 | 1982-08-26 | Toshiba Corp | Information processor |
US5251303A (en) * | 1989-01-13 | 1993-10-05 | International Business Machines Corporation | System for DMA block data transfer based on linked control blocks |
EP0439260B1 (en) * | 1990-01-23 | 1998-08-19 | Hewlett-Packard Company | Distributed processing apparatus and method for use in global rendering |
KR930008050B1 (ko) * | 1990-02-16 | 1993-08-25 | 가부시끼가이샤 히다찌세이사꾸쇼 | 원칩 마이크로프로세서 및 그 버스시스템 |
DE69132300T2 (de) * | 1990-03-12 | 2000-11-30 | Hewlett Packard Co | Durch Anwender festgelegter direkter Speicherzugriff mit Anwendung von virtuellen Adressen |
US5390304A (en) * | 1990-09-28 | 1995-02-14 | Texas Instruments, Incorporated | Method and apparatus for processing block instructions in a data processor |
US5379381A (en) * | 1991-08-12 | 1995-01-03 | Stratus Computer, Inc. | System using separate transfer circuits for performing different transfer operations respectively and scanning I/O devices status upon absence of both operations |
US5341494A (en) * | 1993-02-12 | 1994-08-23 | Compaq Computer Corporation | Memory accessing system with an interface and memory selection unit utilizing write protect and strobe signals |
US5596376A (en) * | 1995-02-16 | 1997-01-21 | C-Cube Microsystems, Inc. | Structure and method for a multistandard video encoder including an addressing scheme supporting two banks of memory |
-
1995
- 1995-09-29 US US08/536,560 patent/US5765022A/en not_active Expired - Fee Related
-
1996
- 1996-07-23 JP JP19357096A patent/JP3575572B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0997230A (ja) | 1997-04-08 |
US5765022A (en) | 1998-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3575572B2 (ja) | データ転送方法及びシステム | |
KR0154533B1 (ko) | 데이타 프로세서 | |
US6226695B1 (en) | Information handling system including non-disruptive command and data movement between storage and one or more auxiliary processors | |
US5524233A (en) | Method and apparatus for controlling an external cache memory wherein the cache controller is responsive to an interagent communication for performing cache control operations | |
JP3016575B2 (ja) | 複数キャッシュ・メモリ・アクセス方法 | |
US7047320B2 (en) | Data processing system providing hardware acceleration of input/output (I/O) communication | |
JP3289661B2 (ja) | キャッシュメモリシステム | |
EP0408058A2 (en) | Microprocessor | |
US8255591B2 (en) | Method and system for managing cache injection in a multiprocessor system | |
JPH0345407B2 (ja) | ||
US5671231A (en) | Method and apparatus for performing cache snoop testing on a cache system | |
JPH0612327A (ja) | キャッシュメモリを有するデータプロセッサ | |
EP0766177A1 (en) | Information handling system including effective address translation for one or more auxiliary processors | |
JPH06231043A (ja) | 仮想記憶システムにおけるデータ転送装置及びその方法 | |
JPH06309230A (ja) | バススヌ−プ方法 | |
KR100322223B1 (ko) | 대기행렬및스누프테이블을갖는메모리제어기 | |
US7581042B2 (en) | I/O hub resident cache line monitor and device register update | |
JP4490585B2 (ja) | 周辺ステータスについての内部レジスタを有するプロセッサまたはコア論理演算装置 | |
US20240086195A1 (en) | Monitor exclusive instruction | |
JPS5927994B2 (ja) | コンピユ−タシステム | |
JP3378270B2 (ja) | マルチプロセッサシステム | |
JP3161422B2 (ja) | マイクロコンピュータ | |
KR20040047398A (ko) | 캐쉬 메모리를 이용한 데이터 억세스 방법 | |
JP3145479B2 (ja) | マルチプロセッサシステムとそのキャッシュメモリ制御方法および装置 | |
JP2791319B2 (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040105 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040108 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040218 |
|
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: 20040615 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20040616 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040630 |
|
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: 20070716 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080716 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |