数値積分のハードウエアおよび方法
移動時間データ容量からのX軸、Y軸およびZ軸に沿ったX、YおよびZの値によって定められる平面上の単一の点のルンゲ−クッタ積分を介してデータを変換するための、システム、方法およびチップ。前記システムは、少なくとも1つのメモリーバンクと、少なくとも1つの代替のメモリーバンクと、および前記メモリーバンクと連絡する少なくとも1つの単一サイクルのルンゲ−クッタ移動時間発生器を含む。前記単一サイクルのルンゲ−クッタ移動時間発生器は、前記少なくとも1つのメモリーバンクからのデータを読み出し、半工程によって進められる積分による値の別の平面を作り出すために、移動時間データ容量および緩慢データにおけるX軸、Y軸およびZ軸に沿ったX、YおよびZの値によって定められる平面の点上においてルンゲ−クッタ積分を行うことによって前記データを変換し、および前記データを、前記少なくとも1つの代替のメモリーバンクにライトバックする。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2009年3月10日に出願の、米国仮出願第61/15,839号(発明の名称「数値積分のハードウエアおよび方法(HARDWARE AND METHOD OF NUMERICAL INTEGRATION)」)に開示された1以上の発明を請求するものである。
米国仮特許出願のアメリカ合衆国法典第35巻第119条第(e)項の利益は、本明細書によって請求され、前述の出願は、引用によって本明細書に組み込まれる。
【背景技術】
【0002】
本発明は、コンピュータシステムおよびデータを処理する方法の分野に関する。特に、本発明は、移動時間の処理を加速するために、アプリケーション特有の集積回路(ASIC)またはフィールド・プログラマブル・ゲート・アレイ(FPGA)コプロセッサの形でハードウエア加速を使用するコンピュータシステムに関する。
【0003】
科学的な計算での多くの応用は微分方程式の解法を含んでおり、重要な決定を下すために使用される結果を生む。例えば、地球科学では、光線トレーシングの技術は、微分方程式のシステムのための初期値問題の数値解法になる。これらの光線方程式は、アイコナール方程式の特徴的な線を記載する。当該解法は、移動時間の数値の格子を生じ、地震波トレースとあいまってアルゴリズム(例えば、キルヒホッフ・マイグレーション)への入力として用いられ、地球の表面画像を生成する。これらの画像は、石油及びガス産業における調査と掘削の決定に重要な役割を果たす。
【0004】
地球の地表下の土壌の多数のトレースは、どこに炭化水素が存在するか、および炭化水素が存在するか否かを、正確に決定するために要求される。現在、多数のトレースはデータで得られ、コンピュータに送信され、コンピュータは地球の表面下の画像を生成するために、音波の移動時間に近似させる。数値微分方程式の解法の計算上集約的な本質が、これらの決定手順の多くをバッチ処理に変える。従って、微分方程式解法のスピードアップが多くの決定手順を可能にし、集約的な方向に向かい、多くの「仮定」のシナリオの試みを利用する。したがって、これらの計算の加速は、大きな経済的価値を有する。
【0005】
本発明は、データを変換し、計算のためにハードウエアでの直接的実行を提供することによってデータについての計算を加速する手段を提供し、それにより、中央処理装置(CPU)上の計算上の負荷を軽減すると共にデータの変換を等価のソフトウェアより著しく速く行なう。
【発明の概要】
【課題を解決するための手段】
【0006】
移動時間データ容量から、X軸、Y軸およびZ軸に沿ってX、YおよびZの値によって定められた平面上の単一の点のルンゲ−クッタ積分を介したデータ変換のためのシステム、方法及びチップ。前記システムは少なくとも1つのメモリーバンクおよび少なくとも1つの代替のメモリーバンク並びに前記メモリーバンクと通信する少なくとも1つの単一サイクルのルンゲ−クッタ移動時間発生器を含む。単一サイクルのルンゲ−クッタ移動時間発生器は、前記少なくとも1つのメモリーバンクからデータを読み出し、移動時間データ容量及び緩慢データにおけるX軸、Y軸およびZ軸に沿ったX、YおよびZの値によって定められた平面の点でルンゲ−クッタ積分を行なうことにより、データを変換し、積分によって半工程だけ進めて数値の他の平面を発生させ、前記少なくとも1つの代替のメモリーバンクにデータをライトバックする。
【図面の簡単な説明】
【0007】
【図1】図1は、ルンゲ−クッタ積分の第2オーダーの各半工程が連続的に実行されるダイアグラムを示す。
【図2】図2は、ルンゲ−クッタ積分の第2オーダーの各半工程が同時に実行されるダイアグラムを示す。
【図3】図3は、図1および2から単一サイクルのルンゲ−クッタ移動時間発生器の詳細を示す。
【図4】図4は、第1実施形態の図1〜3での移動時間発生器によって行なわれた移動時間発生の工程のフローダイアグラムを示す。
【図5】図5は、各Zに対するX−Y平面を算出するための工程を示す。
【図6】図6は、移動時間容量全体でのX軸とZ軸とのスワップのための工程を示す。
【図7】図7は、各Xに対するZ−Y平面を算出するための工程を示す。
【図8】図8は、移動時間容量全体でのZ軸とX軸とのスワップのための工程を示す。
【図9】図9は、各Yに対するX−Z平面を算出するための工程を示す。
【図10】図10は、第2実施形態の図1〜3での移動時間発生器によって行なわれた移動時間発生の工程のフローダイアグラムを示す。
【図11】図11は、各Yに対するX−Z平面を算出して、Z−X平面としてメモリーにライトバックするための工程を示す。
【図12】図12は、各Yに対するZ−X平面を算出して、X−Z平面としてメモリーにライトバックするための工程を示す。
【図13】図13は、ルンゲ−クッタ移動時間発生器に対するメモリーインターフェースの概要を示す。
【発明を実施するための形態】
【0008】
本発明は、ルンゲ−クッタ積分の第2オーダーを用いる方法を実行して、ソース・トレースデータおよび速度モデルから移動時間を発生するシステムである。好ましくは、前記方法は、専用の集積回路(「チップ」)などの特殊目的のハードウエアで実行される。
【0009】
ルンゲ−クッタ積分は、オリジナルのソフトウェアのハードウエア内の実行からXilinxからVirtex−IIProまたはVirtex−5FPGAデバイスなどのフィールド・プログラマブル・ゲート・アレイ(FPGA)に元々移植されたが、これが高い容量のアプリケーションのために特定用途の集積回路(ASIC)を含む他のハードウエア構成への取り込みにも適していることが理解されるだろう。FPGAは、仕様が更新され得るという利点、または同じハードウエアが他のアプリケーションを実行するために構成され得るという利点を有している。しかしながら、ASICは、高性能を示し、大きな生産量に対して、低コストを示し得る。
【0010】
上述されたハードウエアで実行されるルンゲ−クッタ(数値)積分は、多くのアプリケーション用のデータを処理するために使用され得る。一実施形態において、ハードウエアで実行される数値積分は、地球の地表下の地震のデータに関係する移動時間の値を処理するために使用される。
【0011】
図3は、ルンゲ−クッタコアの構造を示す。コアは、トレースデータのソースと速度モデルから移動時間の値の平面上で、ルンゲ−クッタ積分を実行し、図4〜12に記載されたとおり半工程だけ前に進められた積分(すなわち、深さを増加させて下向き)による値の別の平面を発生させる。したがって、これらのコアのいずれか2つは、図2に示されるような1工程だけ積分を進めることが要求されるか、又は2つのコアが図1に示されるのと同じコアを通過する。これは、ハードウエアコストと速度の間で何らかのトレードオフができる。言いかえれば、ルンゲ−クッタ積分は、次の1Dベクトルに移る前にデータの1Dベクトル上での両方の半工程で行なわれる。第2オーダー近似が3つのデータポイントを必要とするので、各々のベクトルはパイプライン構造で保持される各方向に、その2つの至近の隣接対を有している必要がある。したがって、5つのベクトルへの同時アクセスが必要である。
【0012】
単一サイクルのルンゲ−クッタ移動時間発生器(60)、(61)はメモリーインターフェース(82)と相互作用する。当該メモリーインターフェース(82)は中央コントローラ(80)を含んでいて、図13に示されるように、移動時間外部メモリー(54)、(55)と、緩慢外部メモリー(44)、(45)とを制御する。中央コントローラ(80)は、中央処理装置(CPU)(83)と相互作用するメモリーインターフェース(82)によって制御される。中央処理装置(83)は、中央コントローラ(80)によって制御されるレジスタに書き込んだり、レジスタから読み出したりすることができる。図3の単一サイクルのルンゲ−クッタ移動時間発生器ブロック(60)は、移動時間外部メモリー(54)、(55)に存在する現在の平面から移動時間の入力を受け取り、緩慢外部メモリー(44)、(45)に存在する速度モデルから局所的緩慢値を受け取る。
【0013】
移動時間外部メモリー(54)、(55)は、好ましくはSSRAMなどの高速アクセスメモリーである。SSRAMなどのスタティックメモリーはそのメモリー空間内の任意のアドレスに高速アクセスを提供する。しかしながら、スタティックメモリー容量は制限されており、本明細書では一例として100万ワードと仮定した。高速ランダムアクセスメモリーは、インデクサ(84)と、中央コントローラ(80)によって制御されるレジスタマップを有している。高速ランダムアクセスメモリーは、X−Y平面を算出するためにXに対して、Yに対するX−Z平面を算出する際のZに対して、およびZ−Y平面を算出する際のZに対して1のユニットを算入する(counts in units)。高速ランダムアクセスメモリーは、各Zに対するX−Y平面を算出する際のYに対して、および各Yに対するX−Z平面を算出する際にZに対してXサイズのユニットを算入する。高速ランダムアクセスメモリーは、データの移動時間容量におけるX軸及びY軸またはZ軸及びX軸をスワップするために、1及びXサイズ又はZサイズのユニットを算入する。移動時間データ全体におけるX軸及びZ軸はスワップされ得るか、又はデータの一部がアプリケーションに応じてスワップされ得る。
【0014】
緩慢外部メモリー(44)、(45)は、好ましくはDDRAMなどの大容量メモリーである。バルクストレージは、典型的な配置で、10億ワードを提供する。それは、一連の列および行として内部に配列される。また、このメモリの位置へのアクセスは3段階の手順であり、潜在的に非常に遅い。まず、列がアクセスに開かれる。ついで、その列内の任意の位置またはカラムへのアクセス(「カラムアクセス」)が行なわれる。この段階で、一連のカラムアクセスは高速で行なわれることがあり、すべてのデータの提供は同じ列内にある。最後に、列は「プレチャージ」動作を行なうことにより閉じられる。少数の列(典型的に4つの列)が一度に開かれることを可能にする拡張がある。しかし、これは明らかに、一般的な場合に任意の記憶場所への高速アクセスを許さない。したがって、大容量メモリーは、リニアアクセス、例えば内部ループでのX上の反復など、高度に局所的なアクセスパターンに適する。大容量メモリーは外部ループまたはY軸及びZ軸に対して同じアクセス時間を有している。
【0015】
大容量メモリーは、内側の方向においてアドレスをインクリメントせず、Y軸に対して単独に又はZ軸に対してYサイズずつのいずれかで列アドレスをインデックスする(indexes)。大容量メモリーは、算出と書き込みを同時にすることができる。
【0016】
移動時間外部メモリー(54)、(55)が「代替のメモリーバンク」と等価であり、また、緩慢外部メモリー(44)、(45)が、図4乃至12に関連して記述された「メモリーバンク」と等価であることは注目されるべきである。ルンゲ−クッタ移動時間発生器(60)、(61)は、半工程だけ進められた積分によって移動時間を生成する。各クロックサイクルにおいて、完全な積分は1つの移動時間点上で行なわれる。
【0017】
図3を参照すると、現在の平面に対するTT(X)(Y+2)の移動時間データ(2)は、移動時間外部メモリー(54)、(55)から単一サイクルのルンゲ−クッタ移動時間発生器(60)へ送られる。TT(X)(Y+2)の移動時間データ(2)は、移動時間データの現在の平面の到着ベクトルであり、追加の4つのベクトルは、Y軸計算のためのライン格納器(4)、(6)、(8)、(10)内に格納される。同様に、X軸計算に対してTT(X+2)(Y)のライン格納器(6)から移動時間データの現在の平面から到着するベクトルは、レジスタ(28)、(30)、(32)及び(34)における4つの他のベクトルと共に格納される。ライン格納器又はレジスタのいずれか内に格納された利用可能な到着するベクトルおよび4つの他のベクトルをもつことによって、5つのベクトルへの同時アクセスは、利用可能な第1及び第2オーダーの近似である。
【0018】
ルンゲ−クッタ移動時間発生器(60)内では、移動時間データTT(X)(Y+2)は直接入力としてライン格納器(4)と微分ブロック(12)へ送られる。ライン格納器(4)はループカウンターおよびアドレス発生器(46)からX アドレス Addr Xを受け取る。ライン格納器(4)からTT(X)(Y+1)の直接出力は、直接入力としてライン格納器(6)へ送られ、および微分ブロック(12)と微分ブロック(14)へ送られる。ライン格納器(6)はX書き込みアドレス Addr X W Addrを受け取り、そしてX+2は読み出しアドレスAddr X+2 Rd Addrを受け取る。ライン格納器(6)に送られたX+2読み出しアドレスは、TT(X+2)(Y)のライン格納器(6)に格納されたベクトルがライン格納器の他のベクトルの少なくとも2サイクル前に読まれることを可能にし、X軸計算のために使用されるレジスタ(28)に送られた出力を生成する。ループカウンターおよびアドレス発生器(46)からライン格納器(6)への別々の書き込みアドレスW addrと読み出しアドレスRd Addr入力を有することによって、書き込みアドレスは、読み出しアドレスに影響を及ぼすことなく、読み出しアドレスから別々に計算することができる。
【0019】
ライン格納器(6)の直接出力TT(X+2)(Y)は、レジスタ(28)およびYブロック(36)に関する
【0020】
【化1】
【0021】
に送られる。レジスタ(28)からのTT(X+1)(Y)の出力は、Yブロック(36)に関する
【0022】
【化2】
【0023】
と、パイプラインにおける次のレジスタ(30)に送られる。レジスタ(30)からのTT(X)(Y)の出力は、Yブロック(36)に関する
【0024】
【化3】
【0025】
と、パイプラインの次のレジスタ(32)に送られる。レジスタ(32)からのTT(X−1)(Y)の出力は、Yブロック(36)に関する
【0026】
【化4】
【0027】
と、パイプラインの次のレジスタ(34)に送られる。TT(X−2)(Y)の出力はレジスタ(34)からYブロック(36)に関する
【0028】
【化5】
【0029】
に送られる。図3には示されていないが、レジスタ(28)、(30)、(32)および(34)からの出力が、Y軸計算のために図3に示された微分ブロック(12)、(14)、(16)、(18)、(20)、(22)および(24)に類似した微分ブロック(示されず)を用いて微分されていることを留意されたい。Yブロック(36)に関する
【0030】
【化6】
【0031】
は、数値の現在の平面内のX軸に等しく間隔をあけられた5つの微分計算された移動時間の値の配列を分析し、当該値の導関数を比較し、中心点で波頭伝達の方向を推定する。Yブロック(36)に関する
【0032】
【化7】
【0033】
は、ハミルトニアン(および緩慢補間)ブロック(38)に送られる。
【0034】
レジスタ(30)からTT(X)(Y)の出力もまた、直接入力として、ライン格納器(8)及び微分ブロック(14)及び(16)に送られる。ライン格納器(8)はループカウンター及びアドレス発生器(46)からXアドレス、AddrXを受け取る。ライン格納器(8)の直接出力は、微分ブロック(16)および(18)に送られ、かつライン格納器(10)の直接入力として送られる。ライン格納器(10)は、ループカウンターおよびアドレス発生器(46)からXアドレス、AddrXを受け取る。ライン格納器(10)の直接出力は、TT(X)(Y−2)およびDelayedTTである。DelayedTTは、一連のライン格納器(4)、(6)、(8)及び(10)において遅延した、入力された移動時間TT(X)(Y+2)である。DelayedTTは、ルンゲ−クッタ移動時間発生器(60)ブロックから出力され、TT(X)(Y−2)は微分ブロック(18)に送られる。
【0035】
微分ブロック(12)の出力dTT/dY(2)は、微分ブロック(20)およびENO決定論理ブロック(26)に送られる。微分ブロック(14)からの出力dTT/dY(1)は、微分ブロック(20)および(22)、ならびにENO決定論理ブロック(26)に送られる。微分ブロック(16)からの出力dTT/dY(0)は、微分ブロック(22)および(24)、ならびにENO決定論理ブロック(26)に送られる。微分ブロック(18)からの出力dTT/dY(−1)は、微分ブロック(24)およびENO決定論理ブロック(26)に送られる。代わりに、微分ブロック(20)、(22)及び(24)からのd2TT(1)dY2、d2TT(0)dY2及びd2TT(0)dY2の出力は、それぞれ、すべてENO決定論理ブロック(26)に送られる。ENO決定論理ブロック(36)は、数値の現在の平面内のY軸に等しく間隔をあけられた、5つの微分計算された移動時間の値の配列を分析し、当該値の導関数を比較し、中心点で波頭伝達の方向を推定する。
【0036】
ENO決定論理ブロック(26)の出力
【0037】
【化8】
【0038】
は、ハミルトニアン(及び緩慢補間)ブロック(38)に送られる。ハミルトニアン(及び緩慢補間)ブロック(38)はまた、緩慢外部メモリー(44)に格納される速度モデルから緩慢データ(44)を受け取る。ハミルトニアン(及び緩慢補間)ブロック(38)は、ENO決定論理ブロック(26)の出力
【0039】
【化9】
【0040】
から次の平面、および時間=距離/速度の関係を使用して緩慢外部メモリー(44)に格納される速度モデルから緩慢データ(44)に達するために、波頭に要する時間を計算する。ハミルトニアン(及び緩慢補間)ブロック(38)の出力Ham(X、Y)は、ルンゲ−クッタ半工程ブロック(40)に送られ、TT2(X、Y)(52)の出力は、計算されているトレースのためのメモリに送られ、書き込まれる。緩慢データが、積分が行なわれる移動時間容量内のすべての点のために格納されないことを留意されたい。したがって、緩慢の局所値は、隣接点での緩慢値間のブロック(38)の緩慢補間部分によって計算される。
【0041】
2つの単一サイクルのルンゲ−クッタ移動時間発生器(60)、(61)が、半工程を計算するために各々使用されているのであれば、古い移動時間データ、OldTT(X、Y)は、図2に示されるように、他の半工程移動時間データを出力するためにルンゲ−クッタ半工程ブロック(40)に入力されるだろう。第2のルンゲ−クッタ移動時間発生器(61)は、第1のルンゲ−クッタ移動時間発生器(60)と同じであることが好ましい。
【0042】
一方の半工程における現在の(過去の)平面、他方の半工程における次の平面、およびそれらの間の補間を読み出すことによって、始めるためのデータがないかもしれないことを留意されたい。もし1つの緩慢外部メモリーだけが存在し、それにより、1つの緩慢データ値だけが一度に読み出されることがあると、2つの値が必要とされるので、補間は起こり得ない。通常、第2の値は、ライン格納器または移動時間外部メモリーのような他のメモリーから供給されるが、移動時間発生の開始時では、あらかじめ格納されている値はないことがある。その場合、補間は、前半工程に必要ではなく、平面境界上にある必要もない(the first half step and needs to be on a plane boundary to that no interpolation is necessary)(例えば、単一の値は直接読み出され得る)。半工程を使用することによって、インクリメンタルな移動時間発生がどこで開始し得るかに制限ができる。言いかえれば、移動時間のインクリメントは、速度モデルのグリッド境界上で開始しなければならない。
【0043】
本願における用語
【0044】
【化10】
【0045】
は、X軸またはY軸いずれかに沿った距離の予想値、およびそれによる波頭方向の水平成分を表す。この予想値は、伝播波の方向のZと比較した、XまたはYにおける導関数であり得る。
【0046】
図4乃至12は、現在の平面からの移動時間、および速度モデルからの第1実施形態および第2実施形態において実行される半工程進められた移動時間までの局所的緩慢値の変換を示す。
【0047】
下方積分だけでは、全データ容量にわたって十分に正確ではない。(初期のショット(initial shot)の位置からの水平移動が比較的大きい)データ容量の外側領域における精度には、各水平軸に沿った積分を必要とし;この積分のパスは「サイドスウィープ(sidesweep)」として言及されるであろう。
【0048】
単一サイクルのルンゲ−クッタ移動時間発生器(60)、(61)はサイドスウィープに使用される。サイドスウィープを使用することにより、移動時間容量の周辺領域における精度が向上する。しかしながら、上述されるインデクシングは、(+)Z方向の計算を進めるために,計算がX−Y平面に沿って生じることを示唆する。サイドスウィープは、(+及び−)Y方向に進むためのX−Z平面、及び(+及び−)X方向に進むためのY−Z平面を交互に算出する、このプロセスに従うことを必要とする。−Z方向(上向きのスウィープ)に進むことが、移動時間の正確な積分を提供するためには必要ではないことを留意されたい。サイドスウィープは、図4乃至12に、より詳細に記載される。
【0049】
大容量メモリーのこのアクセスパターンの制限は、(X上の反復に続いてY上を反復し、その後Z上の最も外側を反復する)下向きのサイドスウィープが、(X上の反復に続いてZ上を反復し、その後(+及び−)Y上を反復する)Y軸のサイドスウィープの次に直接来ることが可能であるが、X軸のサイドスウィープが同じ方法では達し得ないことを意味する。これは、X軸が主軸であることを、X軸のサイドスウィープが要求するからであり、高性能順次アクセスに必要なように、それが短軸ではあり得ない。引用により本明細書に組み込まれる、2001年5月22日に公表の、米国特許第6,237,021号(発明の名称「データ集約型アプリケーションの能率的に処理するための方法および装置(METHOD AND APPARATUS FOR THE EFFICIENT PROCESSING OF DATA-INTENSIVE APPLICATIONS)」)の単一サイクルの構造を使用することにより、(ZまたはYいずれかの)反復の主軸は、大容量のダイナミックメモリーを利用することができる一方で、反復の残りの(短)軸は、高速アクセスのスタティックメモリーを利用する。
【0050】
本発明の1つの実施形態において、大容量メモリーに関係するアクセスパターンの制限を克服するために、データの移動時間容量(および緩慢データの関連するセクション)は、コピーされ、X軸のスウィープの前に、そのプロセスにおいて軸をスワップし;(容量全体にわたるセカンドパスが一般的に精度を必要とするために)その後、プロセスを逆行させる。したがって、Y軸は、X軸のサイドスウィープのための短軸になる。このスワップが可能なのは、全X−Y平面がスタティックメモリーに格納されることができ、一方の軸に沿った高速アクセスが可能であるからである。各平面は全体的に、その短軸としてX軸を備える、スタティックメモリーに順番に読み込まれる。それは、その後、その短軸としてY軸を備える大容量(ダイナミック)メモリーにライトバックされる。この軸スワップを他の処理と組み合わせることは可能であり、軸スワップには、更なる時間を消費する必要はない。この技術が、任意の3つの軸を、その軸におけるデータへの高速アクセスのための短軸に変換させる、または任意の3つの軸が、アルゴリズム考察のための主軸となることを可能にするように拡張され得ることを留意されたい。しかしながら、現在の埋め込みは、XおよびY軸が主軸として3つのすべての軸をカバーする短軸として扱われることを必要とするのみである。これらの工程は、以下に詳細に記載される。
【0051】
図4
総体的な方法記述−第1の実施形態
【0052】
(104).各Zに対するX−Y平面を算出し、メモリーにライトバックする。
【0053】
移動時間は、メモリーバンク、好ましくはDDRメモリーのような大容量メモリーから代替のメモリーバンクに、またはSSRAMメモリーのような高速アクセスメモリーであることが好ましい、図1および図2に示された移動時間外部メモリー(54)、(55)にコピーされる。代替のメモリーバンクは、比較的小さな高速アクセスメモリーバンクであるため、移動時間容量全体を包含することができない。したがって、各X−Y平面が工程(104)で各Zに対して算出された後、データはメモリーバンクまたは大容量メモリーにコピーバックされる。メモリーバンクのデータは、次のZ平面を発生させるための始点として使用される。したがって、移動時間容量全体は、大容量メモリーに蓄積され、1つの平面は代替のメモリーバンクに格納される。
【0054】
新しい移動時間容量の第1のスウィープの第1の平面に関して、メモリーバンクからロードするデータはない。代わりに、CPUは、関連する値を、直接代替のメモリーバンクに初期化する。
【0055】
代替のメモリーバンクは、比較的小さな高速アクセスメモリーバンクであるため、移動時間容量全体を包含することができない。したがって、各X−Y平面が工程(104)で各Zに対して算出された後、データはメモリーバンクまたは大容量メモリーにコピーバックされる。
【0056】
(106).その後、移動時間容量のX軸およびZ軸はスワップされる。
【0057】
工程(104)で計算され、メモリーバンクにコピーバックされた移動時間容量は、代替のメモリーバンクにロードされ、その後、メモリーバンクの異なる部分にライトバックされ、X軸およびZ軸をスワップする。
【0058】
(108). 各Xに対するZ−Y平面は、いずれかのX方向において算出され、メモリーにライトバックされる。
【0059】
用語「いずれかのX方向」は、2つの方向、増加するX座標、または減少するX座標を指す。代替のメモリーバンクは、比較的小さな高速アクセスメモリーバンクであるため、移動時間容量全体を包含することができない。したがって、各Z−Y平面が工程(108)で各Xに対して算出された後、データはメモリーバンクまたは大容量メモリーにコピーバックされる。
【0060】
(110).その後、移動時間容量のZ軸およびX軸はスワップされる。
【0061】
工程(108)で計算され、メモリーバンクにコピーバックされた移動時間容量は、代替のメモリーバンクにロードされ、その後、メモリーバンクの異なる部分にライトバックされ、Z軸およびX軸をスワップする。
【0062】
(112).次に、いずれかの方向における各Yに対するX−Z平面は、算出され、メモリーにライトバックされる。
【0063】
用語「いずれかのY方向」は、2つの方向、増加するY座標、または減少するY座標を指す。
【0064】
(116).メモリーまたはCPUに完全な移動時間を送る。
【0065】
他の半工程がまだ完了していなければ、工程(112)からのデータは、別のパスのために工程(104)に送り返される。全工程が完了していれば、その後、移動時間データは外部メモリーまたはCPUへ送信される。
【0066】
図5乃至9
図4におけるブロック104乃至112の詳細。
【0067】
図5− ブロック104の詳細
各Zに対するX−Y平面を算出し、メモリーにライトバックするための工程。
【0068】
(120). 第1の工程において、データは初期化される。
【0069】
第1のZ平面ループ:
【0070】
(121).その後、第1のZ平面で開始し、
【0071】
(122).各Yに対するXデータを読み出し、代替のメモリーバンクにコピーする。
【0072】
(123).YサイズずつZをインクリメントする(123)。
【0073】
(124).各Yに対するすべてのXデータが読み出されたか否かを決定する(124)。各Yに対するXデータの読み出しが終了していなければ、工程(122)に戻る。
各Yに対するXデータの読み出しが終了していれば、先に進む。
【0074】
現在のZ平面ループ:
【0075】
読み出しループ:
【0076】
(125)現在のZ平面に対するX緩慢データを読み出す。
【0077】
(126).次のZ平面に対するX緩慢データを読み出す。
【0078】
(127).1ずつYをインクリメントする。
【0079】
(128).(128)が終了していなければ、工程(125)に戻る。(128)が終了していれば、先に進む。
【0080】
書き込みループ:
【0081】
(129).次のZに対するXデータを代替のメモリーバンクに読み込む。
【0082】
(130).最小値を算出する。
【0083】
算出された最小値は、以前の格納されたデータ、および平面内の各ポイントに対する現在の平面のその新しく計算されたデータの間の最小値である。最小値のデータは、代替のメモリーバンク、好ましくは、SSRAMのような高速アクセスメモリーに格納される。最小値のデータは、新しい平面の開始として使用され、メモリーバンク、好ましくは、DDRAMのような大容量メモリーにライトバックもされる。
【0084】
(131).メモリーバンクにデータまたは最小値を書き込み、代替のメモリーバンクにデータのコピーを保存する。
【0085】
最小値は、代替のメモリーバンク、好ましくは、SSRAMのような高速アクセスメモリー、およびメモリーバンク、好ましくは、DDRAMのような大容量メモリーの両方に書き込まれる。最小値のデータは、新しい平面の開始として使用される。
【0086】
(132).YサイズずつZをインクリメントする(132)。
【0087】
(133).すべてのYのインクリメントが終了していなければ、工程(134)において現在のおよび代替のメモリーバンクをスワップし、工程(125)に戻る。
【0088】
(133).終了していれば、移動時間容量全体においてX軸およびZ軸をスワップする工程(106)(図6)に進む。
【0089】
(134).現在のおよび代替のメモリーバンクをスワップする。
【0090】
図6−ブロック(106)の詳細
移動時間容量全体においてX軸およびZ軸をスワップするための工程
【0091】
(135).第1の工程において、Y、Xを初期化する。
【0092】
読み出しX移動時間ループ:
【0093】
(136).Zに対するX移動時間データを読み出し、代替のメモリーバンクにコピーする。
【0094】
(137).YサイズずつZをインクリメントする(137)。
【0095】
工程(141)からのXのインクリメントが、工程(137)におけるZのインクリメントと異なるならば、データは、メモリーバンク内の別々のエントリーに書き込まれる。
【0096】
(138).Zに対するすべての移動時間データが読み出されたか否かを決定する。各Zに対するXデータの読み出しが終了していなければ、工程(136)に戻る。各Zに対するXデータの読み出しが終了していれば、先に進む。
【0097】
書き込みZ移動時間ループ:
【0098】
(139).YおよびXを初期化する。
【0099】
(140).Xに対するZ移動時間データをメモリーバンクに書き込む。
【0100】
(141).その後、YサイズずつXをインクリメントする(141)。
【0101】
工程(141)からのXのインクリメントが、工程(137)におけるZのインクリメントと異なるならば、データは、メモリーバンク内の別々のエントリーに書き込まれる。
【0102】
(142).Xに対するすべてのZ移動時間データがメモリーに書き込まれたかどうかを決定する。各Xに対するZ移動時間データの書き込みが終了していなければ、工程(140)に戻る。各Xに対するZ移動時間の書き込みが終了していれば、いずれかのX方向において各Xに対するZ−Y平面を算出する工程(108)(図7)に進む。
【0103】
図7−ブロック(108)の詳細
いずれかのX方向において各Xに対するZ−Y平面を算出し、メモリーにライトバックするための工程
【0104】
(143).第1の工程において、データは初期化される。
【0105】
第1のX平面ループ:
【0106】
(144).その後、第1のX平面で開始し、
【0107】
(145).各Yに対するZデータを読み出し、代替のメモリーバンクにコピーする。
【0108】
(146).+/−YサイズずつXをインクリメントする(123)。
【0109】
用語「+/−」は、直後の(immediately after)変数の増加または減少のいずれかとして定義される。
【0110】
(147).各Yに対するすべてのZデータが読み出されたかどうかを決定する。
各Yに対するZデータの読み出しが終了していなければ、工程(144)に戻る。各Yに対するZデータの読み出しが終了していれば、先に進む。
【0111】
現在のX平面ループ:
【0112】
読み出しループ:
【0113】
(148).現在のX平面に対するZ緩慢データを読み出す。
【0114】
(149).次のX平面に対するZ緩慢データを読み出す。
【0115】
(150).+/−1ずつYをインクリメントする。
【0116】
用語「+/−」は、直後の変数の増加または減少のいずれかとして定義される。
【0117】
(151).終了していなければ、工程(148)に戻る。終了していれば、先に進む。
【0118】
書き込みープ:
【0119】
(152).次のXに対するZデータを代替のメモリーバンクに読み込む。
【0120】
(153).最小値を算出する。
【0121】
算出された最小値は、以前の格納されたデータ、および平面内の各ポイントに対する現在の平面のその新しく計算されたデータの間の最小値である。最小値のデータは、代替のメモリーバンク、好ましくは、SSRAMのような高速アクセスメモリーに格納される。最小値のデータは、新しい平面の開始として使用され、メモリーバンク、好ましくは、DDRAMのような大容量メモリーにライトバックもされる。
【0122】
(154).メモリーバンクにデータまたは最小値を書き込み、代替のメモリーバンクにデータのコピーを保存する。
【0123】
最小値は、代替のメモリーバンク、好ましくは、SSRAMのような高速アクセスメモリー、およびメモリーバンク、好ましくは、DDRAMのような大容量メモリーの両方に書き込まれる。最小値のデータは、新しい平面の開始として使用される。
【0124】
(155).+/−YサイズずつXをインクリメントする。
【0125】
用語「+/−」は、直後の変数の増加または減少のいずれかとして定義される。
【0126】
(156).すべてのYインクリメントが終了していなければ、工程(157)において現在のおよび代替のメモリーバンクをスワップし、工程(148)に戻る。終了していれば、移動時間容量全体においてZ軸およびX軸をスワップする工程(110)(図8)に進む。
【0127】
(157).現在のおよび代替のメモリーバンクをスワップする。
【0128】
図8− ブロック(110)の詳細
移動時間容量全体においてZ軸およびX軸をスワップするための工程(110)。
【0129】
(158).第1の工程において、Y、Xを初期化する。
【0130】
読み出しZ移動時間ループ:
【0131】
(159).Xに対するZ移動時間データを読み出し、代替のメモリーのバンクにコピーする。
【0132】
(160).YサイズずつXをインクリメントする。
【0133】
(161).Xに対するすべてのZ移動時間データが読み出されたかどうかを決定する。各Xに対するZデータの読み出しが終了していなければ、工程(159)に戻る。各Xに対するZデータの読み出しが終了していれば、先に進む。
【0134】
書き込みX移動時間ループ:
【0135】
(162).YおよびZを初期化する。
【0136】
(163).Zに対するX移動時間データをメモリーバンクに書き込む。
【0137】
(164).その後、YサイズずつZをインクリメントする。
【0138】
(165).Zに対するすべてのX移動時間データがメモリーに書き込まれたかどうかを決定する。各Zに対するX移動時間の書き込みが終了していなければ、工程(163)に戻る。各Zに対するX移動時間の書き込みが終了していれば、いずれかのY方向において各Yに対するX−Z平面を算出する工程(112)(図9)に進む。
【0139】
図9−ブロック(112)の詳細
いずれかのY方向において各Yに対するX−Z平面を算出し、メモリーへライトバックするための工程
【0140】
(166).第1の工程において、データは初期化される。
【0141】
第1のZ平面ループ:
【0142】
(167).その後、第1のY平面で始める。
【0143】
(168).各Zに対するXのデータを読み出し、代替のメモリーバンクへとコピーする。
【0144】
(169).+/−1ずつZをインクリメントする。
【0145】
用語「+/−」は、その後すぐ変数を増加させるか、または減少させるかのいずれかとして定義される。
【0146】
(170).各Zに対する全てのXデータが読み出されたか否かを判断する。各Zに対するXのデータの読み出しが終了していないならば、工程(168)に戻る。各Zに対するXのデータの読み出しが終了しているならば、先へ進む。
【0147】
現在のZ平面ループ:
【0148】
読み出しループ:
【0149】
(171).現在のY平面に対するX緩慢データを読み出す。
【0150】
(172).次のY平面に対するX緩慢データを読み出す。
【0151】
(173).+/−1ずつYをインクリメントする。
【0152】
用語「+/−」は、その後すぐ変数を増加させるか、または減少させるかのいずれかとして定義される。
【0153】
(174).終了していなければ、工程(171)に戻る。終了しているならば、先に進む。
【0154】
書き込みループ:
【0155】
(175).代替のメモリーバンクに次のYに対するXデータを読み出す。
【0156】
(176).最小値を算出する。
【0157】
算出された最小値は、以前に格納されたデータと、平面内の各点に対する現在の平面の新しく算出されたデータとの間の最小値である。最小値は、代替のメモリーバンク、好ましくはSSRAMのような高速アクセスメモリーに格納される。最小値は、新しい平面のスタートとして使用され、メモリーバンク、好ましくはDDRAMのような大容量メモリーにもライトバックされる。
【0158】
(177).データまたは最小値をメモリーバンクへ書き込み、代替のメモリーバンクにコピーを保存する。
【0159】
最小値は、代替のメモリーバンク、好ましくはSRAMのような高速アクセスメモリーバンクと、メモリーバンク、好ましくはDDRAMのような大容量メモリーの両方に書き込まれる。最小値のデータは、新しい平面のスタートとして使用される。
【0160】
(178).+/−YサイズずつZをインクリメントする。
【0161】
用語「+/−」は、その後すぐ変数を増加させるか、または減少させるかのいずれかとして定義される。
【0162】
(179).すべてのZインクリメントが終了していないならば、工程(180)における現在および代替のメモリーバンクをスワップして、工程(171)に戻る。終了していれば、データを介するセカンドパスが必要か否かを決定する工程(114)(図4)へ進む。
【0163】
(180).現在および代替のメモリーバンクをスワップする。
【0164】
図10−全体の方法の記載−第2の実施形態
代替的に、第2の実施形態では、軸スワップは処理時間を減らすためにY軸算出と組み合わされる。
【0165】
(104).X−Y平面が各Zに対して算出され、メモリーにライトバックされる。
【0166】
移動時間はメモリーバンク、好ましくはDDRメモリーのような大容量メモリーから、代替のメモリーバンクまたは図1および2に示される移動時間外部メモリー(54)、(55)、(これは、好ましくは、SSRAMメモリーのような高速アクセスメモリーである)へコピーされる。代替のメモリーバンクは、比較的小さな高速アクセスメモリーバンクであるので、それは移動時間容量全体を包含することができない。従って、工程(104)において各X−Y平面が各Zに対して算出された後、データは、メモリーバンクまたは大容量メモリーにコピーされる。メモリーバンクのデータは、次のZ平面を作り出すための始点として使用される。その後、全体の移動時間容量が大容量メモリーに構築され、1つの平面が代替のメモリーバンクに格納される。
【0167】
新しい移動時間容量の第1のスワップの第1の平面に対して、メモリーバンクからロードするデータはない。その代わり、CPUは、代替のメモリーバンクへ関連する値を直接初期化する。
【0168】
代替のメモリーバンクは、比較的小さな高速アクセスメモリーバンクであるので、それは移動時間容量全体を包含することができない。従って、工程(104)において、各Zに対して各X−Y平面が算出された後、データはメモリーバンクまたは大容量メモリーにコピーされる。
【0169】
(118).1つのY方向における各YのX−Z平面を算出して、メモリーをZ−X平面としてライトバックする。
【0170】
(108).各Xに対するZ−Y平面がいずれかのX方向において算出され、メモリーにライトバックされる。
【0171】
用語「いずれかのX方向」は、2つの方向、X座標を増加させること、または、X座標を減少させること、を指す。代替のメモリーバンクは、比較的小さな高速アクセスメモリーバンクであるので、それは移動時間容量全体を包含することができない。従って、工程(108)において各Xに対して各Z−Y平面が算出された後、データはメモリーバンクまたは大容量メモリーにコピーされる。
【0172】
(120).他方のY方向における各Yに対するZ−X平面を算出して、X−Z平面としてメモリーにライトバックする。
【0173】
(116).メモリーまたはCPUに完全な移動時間を送る。
【0174】
別の半工程がまだ完了していないならば、工程(112)からのデータは別のパスのために工程(104)に送られる。全工程が完了しているならば、移動時間データは外部メモリーまたはCPUへ送られる。
【0175】
ブロック(104)、(108)および(116)の詳細は上論され、これによって参照によってここで繰り返される。ブロック(118)および(120)の詳細を以下に示す。
【0176】
図11−ブロック(118)の詳細
1方のY方向において各Yに対するX−Z平面を算出し、Z−X平面としてメモリーに書き込むための工程
【0177】
(181).第1の工程で、データは初期化される。
【0178】
第1のY平面ループ:
【0179】
(182).その後、第1のX平面から始めて、
【0180】
(183).各Zに対するXのデータを読み出し、代替のメモリーバンクにコピーする。
【0181】
(184).+あるいは−YサイズずつZをインクリメントする(123)。
【0182】
(185).各Zに対する全てのXデータが読み出されたか否かを判断する。各Zに対するXのデータの読み出しが終了していないならば、工程(183)に戻る。各Zに対するXのデータの読み出しが終了しているならば、先に進む。
【0183】
現在のY平面ループ:
【0184】
読み出しループ:
【0185】
(186).現在のY平面に対するX緩慢データを読み出す。
【0186】
(187).次のY平面に対するX緩慢データを読み出す。
【0187】
(188).+/−1ずつZをインクリメントする。
【0188】
用語「+/−」は、その後すぐ変数を増加させるか、または減少させるかのいずれかとして定義される。
【0189】
(189).終了していないならば、工程(186)に戻る。終了しているならば、先へ進む。
【0190】
書き込みループ:
【0191】
(190).次のYのためのXデータを代替のメモリーバンクに読み込む。
【0192】
(191).最小値を算出する。
【0193】
算出された最小値は、以前に格納されたデータと、平面内の各点に対する現在の平面の新しく算出されたデータとの間の最小値である。最小値のデータは、代替のメモリーバンク、好ましくは、SSRAMのような高速アクセスメモリーに格納される。最小値のデータは、新しい平面のスタートとして使用され、メモリーバンク、好ましくはDDRAMのような大容量メモリーにもライトバックされる。
【0194】
(192).データをZ−Xオーダーにおける次のYへまたはメモリーバンクへの最小値にライトバックし、代替のメモリーバンクにコピーを保存する。
【0195】
最小値は、代替のメモリーバンク、好ましくは、SSRAMのような高速アクセスメモリーと、メモリーバンク、好ましくはDDRAMのような大容量メモリーの両方に書き込まれる。最小値のデータは、新しい平面のスタートとして使用される。
【0196】
(193).+あるいは−YサイズずつZをインクリメントする。
【0197】
(194).すべてのZのインクリメントが終了していないならば、工程(195)で現在および代替のメモリーバンクをスワップして、工程(186)に戻る。終了しているならば、いずれかのY方向における各Yに対するZ−X平面を算出し、X−Z平面としてメモリーにライトバックする工程(116)(図11)へ進む。
【0198】
(195).現在および代替のメモリーバンクをスワップする。
【0199】
図12−ブロック(120)の詳細
他方のY方向における各YのZ−X平面を算出し、X−Z平面としてメモリーにライトバックするための工程
【0200】
(196).第1の工程において、データは初期化される。
【0201】
第1のY平面ループ:
【0202】
(197).その後、第1のY平面で始めて、
【0203】
(198).各Xに対するZデータを読み出し、代替のメモリーバンクにコピーする。
【0204】
(199).他方の+又は−YサイズずつZをインクリメントする(123)。
【0205】
(200).各Xに対する全てのZデータが読み出されたか否かを判断する。各Xに対するZデータの読み出しが終了していないならば、工程(198)に戻る。各Xに対するZデータの読み出しが終了しているならば、先へ進む。
【0206】
現在のY平面ループ:
【0207】
読み出しループ:
【0208】
(201).現在のY平面に対するZ緩慢データを読み出す。
【0209】
(202).次のY平面に対するZ緩慢データを読み出す。
【0210】
(203).+/−1ずつZをインクリメントする。
【0211】
用語「+/−」は、その後すぐ変数を増加させるか、または減少させるかのいずれかとして定義される。
【0212】
(204).終了していないならば、工程(201)に戻る。終了しているならば、先へ進む。
【0213】
書き込みループ:
【0214】
(205).次のYに対するZデータを代替のメモリーバンクに読み込む。
【0215】
(206).最小値を算出する。
【0216】
算出された最小値は、前に格納されたデータと、平面内の各点に対する現在の平面の新しく計算されたデータとの間の最小値である。最小値のデータは、代替のメモリーバンク、好ましくは、SSRAMのような高速アクセスメモリーに格納される。最小値のデータは、新しい平面のスタートとして使用され、メモリーバンク、好ましくはDDRAMのような大容量メモリーにもライトバックされる。
【0217】
(207).データを、X−Zオーダーの次のYへまたはメモリーバンクへの最小値へライトバックし、代替のメモリーバンクにコピーを保存する。
最小値は、代替のメモリーバンク、好ましくは、SSRAMのような高速アクセスメモリーと、メモリーバンク、好ましくはDDRAMのような大容量メモリーの両方に書き込まれる。最小値のデータは、新しい平面のスタートとして使用される。
【0218】
(208).他の+または−YサイズずつZをインクリメントする。
【0219】
(209).すべてのZのインクリメントが終了していないならば、工程(210)において現在および代替のメモリーバンクをスワップし、工程(201)に戻る。終了しているならば、図2に示されるような別の単一サイクルのルンゲ−クッタ移動時間発生器、または図1に示されるようなライン格納器(64)およびマルチプレクサ(62)に、データを送る工程(118)へ進む。
【0220】
(210).現在および代替のメモリーバンクをスワップする。
【0221】
図1−3のハードウエア実行の詳細な記載
図3の単一サイクル移動時間発生器を使用する2つの方法が、図1および2に例証される。図1は、2つのルンゲ−クッタの半工程を連続的に実行するための、上記のコアの1つを使用する実行の図式を示す。図2は、パラレルに2つのルンゲ−クッタの半工程を実行するために、上記のコアの2つを使用する実行の図式を示す。
【0222】
図1について、1つの単一サイクルのルンゲ−クッタ移動時間発生器(60)は、2つのルンゲ−クッタ半工程の実行において連続して用いられる。移動時間TT In/Outは、移動時間外部メモリー(54)からマルチプレクサ(58)に送られる。マルチプレクサ(58)はまた、第2の半工程から移動時間を受け取る。マルチプレクサ(58)の出力TT(X)(Y+2)は、単一サイクルのルンゲ−クッタ移動時間発生器(60)へ送られる。緩慢データSlownessは、緩慢外部メモリー(44)からライン格納器(66)および緩慢補間器(68)へ送られる。
【0223】
緩慢補間器(68)から、緩慢データSlownessは、2つのライン遅延(70)およびマルチプレクサ(72)に送られる。マルチプレクサから、緩慢データは、単一サイクルのルンゲ−クッタ移動時間発生器(60)に入力される。単一サイクルのルンゲ−クッタ移動時間発生器(60)は、また第2の半工程の間に第1の半工程からの古い移動時間データ0ldTT(X)(Y)を受け取る。
【0224】
第1の半工程で、単一サイクルのルンゲ−クッタ移動時間発生器(60)は、図3に示されるように、および、図4−9に示される工程にわたって、入力データTT(X)(Y+2)およびSlownessを、出力TT2(X)(Y)およびDelayedTTに変換する。出力TT2(X)(Y)はライン格納器(64)に格納される。
【0225】
第2の工程で、単一サイクルのルンゲ−クッタ移動時間発生器(60)は、入力データ、TT In−第2の半工程のみ(マルチプレクサ(58)をTT(X)(Y+2)と組み合わせた)、0ldTT(X)(Y)およびSlownessを、移動時間の外部メモリー(54)にライトバックされている出力TT2(X)(Y)に変換する。OldTT(X)(Y)の入力が、単に単一サイクルのルンゲ−クッタ移動時間発生器(60)内の適切な数のライン格納器によって遅延されたオリジナルの入力データTT(X)(Y+2)であること、およびそのTT In−第2の工程のみの入力は、第1の半工程からの出力であることに注目されるべきである。
【0226】
図1に示されるように、シーケンシャルモードにおいて、移動時間出力TT2(X)(Y)は、マルチプレクサ(58)の入力へフィードバックされて、単一のライン格納器(64)に保持されることが注目されるべきである。従って、第1の半工程は、全平面にわたってではなく、単一のライン(XおよびYにわたるループの代わりに、一定のYでXにわたるループ)にわたって行なわれる。その後、第2の半工程は、次のYの値に関する第1の半工程に進む前に同じライン上で行なわれる。
【0227】
図2は、パラレルに2つのルンゲ−クッタ半工程を行うための上記のコアの2つを使用する実施形態における図式である。第1の単一サイクルのルンゲ−クッタ移動時間発生器(60)は、第1の移動時間外部メモリー(55)から古い移動時間データOldTT(X)(Y)および移動時間入力TT(X)(Y+2)を受け取る。それぞれ、第1および第2の緩慢外部メモリー(44)、(45)からの、現在の緩慢平面および次の緩慢平面からの緩慢データCurrent Slowness PlaneおよびNext Slowness Planeは、緩慢補間器(68)に入力される。
【0228】
緩慢補間器(68)から、緩慢データSlownessは、単一サイクルのルンゲ−クッタ移動時間発生器(60)と、2ライン遅延(70)へ送られる。単一サイクルのルンゲ−クッタ移動時間発生器(60)は、遅延した移動時間Delyed TTおよびTT2(X)(Y)を出力し、これらは、2ライン遅延(70)からの遅延した緩慢Slownessを持つ入力として、第2の単一サイクルのルンゲ−クッタ移動時間発生器(61)へと送られる。
【0229】
第2のサイクルのルンゲ−クッタ移動時間発生器(61)、その後、遅延した移動時間Delayed TTおよびTT2(X)(Y)を出力し、これは、第2の移動時間外部メモリー(54)へ送られる。
【0230】
ハードウエアへとインプリメントされた数値積分は、多数の適用のためのデータを処理するために使用され得、本明細書において論じられた例に限定されない。
【0231】
従って、本明細書に記載された発明の実施形態は、本発明の原理の適用の単に例示であることは理解されるべきである。例示された実施形態の詳細への本明細書における言及は、請求項の範囲を制限するようことは意図されず、それら自身は、本発明にとって不可欠であると見なされたそれらの特徴について述べるものである。
【技術分野】
【0001】
本出願は、2009年3月10日に出願の、米国仮出願第61/15,839号(発明の名称「数値積分のハードウエアおよび方法(HARDWARE AND METHOD OF NUMERICAL INTEGRATION)」)に開示された1以上の発明を請求するものである。
米国仮特許出願のアメリカ合衆国法典第35巻第119条第(e)項の利益は、本明細書によって請求され、前述の出願は、引用によって本明細書に組み込まれる。
【背景技術】
【0002】
本発明は、コンピュータシステムおよびデータを処理する方法の分野に関する。特に、本発明は、移動時間の処理を加速するために、アプリケーション特有の集積回路(ASIC)またはフィールド・プログラマブル・ゲート・アレイ(FPGA)コプロセッサの形でハードウエア加速を使用するコンピュータシステムに関する。
【0003】
科学的な計算での多くの応用は微分方程式の解法を含んでおり、重要な決定を下すために使用される結果を生む。例えば、地球科学では、光線トレーシングの技術は、微分方程式のシステムのための初期値問題の数値解法になる。これらの光線方程式は、アイコナール方程式の特徴的な線を記載する。当該解法は、移動時間の数値の格子を生じ、地震波トレースとあいまってアルゴリズム(例えば、キルヒホッフ・マイグレーション)への入力として用いられ、地球の表面画像を生成する。これらの画像は、石油及びガス産業における調査と掘削の決定に重要な役割を果たす。
【0004】
地球の地表下の土壌の多数のトレースは、どこに炭化水素が存在するか、および炭化水素が存在するか否かを、正確に決定するために要求される。現在、多数のトレースはデータで得られ、コンピュータに送信され、コンピュータは地球の表面下の画像を生成するために、音波の移動時間に近似させる。数値微分方程式の解法の計算上集約的な本質が、これらの決定手順の多くをバッチ処理に変える。従って、微分方程式解法のスピードアップが多くの決定手順を可能にし、集約的な方向に向かい、多くの「仮定」のシナリオの試みを利用する。したがって、これらの計算の加速は、大きな経済的価値を有する。
【0005】
本発明は、データを変換し、計算のためにハードウエアでの直接的実行を提供することによってデータについての計算を加速する手段を提供し、それにより、中央処理装置(CPU)上の計算上の負荷を軽減すると共にデータの変換を等価のソフトウェアより著しく速く行なう。
【発明の概要】
【課題を解決するための手段】
【0006】
移動時間データ容量から、X軸、Y軸およびZ軸に沿ってX、YおよびZの値によって定められた平面上の単一の点のルンゲ−クッタ積分を介したデータ変換のためのシステム、方法及びチップ。前記システムは少なくとも1つのメモリーバンクおよび少なくとも1つの代替のメモリーバンク並びに前記メモリーバンクと通信する少なくとも1つの単一サイクルのルンゲ−クッタ移動時間発生器を含む。単一サイクルのルンゲ−クッタ移動時間発生器は、前記少なくとも1つのメモリーバンクからデータを読み出し、移動時間データ容量及び緩慢データにおけるX軸、Y軸およびZ軸に沿ったX、YおよびZの値によって定められた平面の点でルンゲ−クッタ積分を行なうことにより、データを変換し、積分によって半工程だけ進めて数値の他の平面を発生させ、前記少なくとも1つの代替のメモリーバンクにデータをライトバックする。
【図面の簡単な説明】
【0007】
【図1】図1は、ルンゲ−クッタ積分の第2オーダーの各半工程が連続的に実行されるダイアグラムを示す。
【図2】図2は、ルンゲ−クッタ積分の第2オーダーの各半工程が同時に実行されるダイアグラムを示す。
【図3】図3は、図1および2から単一サイクルのルンゲ−クッタ移動時間発生器の詳細を示す。
【図4】図4は、第1実施形態の図1〜3での移動時間発生器によって行なわれた移動時間発生の工程のフローダイアグラムを示す。
【図5】図5は、各Zに対するX−Y平面を算出するための工程を示す。
【図6】図6は、移動時間容量全体でのX軸とZ軸とのスワップのための工程を示す。
【図7】図7は、各Xに対するZ−Y平面を算出するための工程を示す。
【図8】図8は、移動時間容量全体でのZ軸とX軸とのスワップのための工程を示す。
【図9】図9は、各Yに対するX−Z平面を算出するための工程を示す。
【図10】図10は、第2実施形態の図1〜3での移動時間発生器によって行なわれた移動時間発生の工程のフローダイアグラムを示す。
【図11】図11は、各Yに対するX−Z平面を算出して、Z−X平面としてメモリーにライトバックするための工程を示す。
【図12】図12は、各Yに対するZ−X平面を算出して、X−Z平面としてメモリーにライトバックするための工程を示す。
【図13】図13は、ルンゲ−クッタ移動時間発生器に対するメモリーインターフェースの概要を示す。
【発明を実施するための形態】
【0008】
本発明は、ルンゲ−クッタ積分の第2オーダーを用いる方法を実行して、ソース・トレースデータおよび速度モデルから移動時間を発生するシステムである。好ましくは、前記方法は、専用の集積回路(「チップ」)などの特殊目的のハードウエアで実行される。
【0009】
ルンゲ−クッタ積分は、オリジナルのソフトウェアのハードウエア内の実行からXilinxからVirtex−IIProまたはVirtex−5FPGAデバイスなどのフィールド・プログラマブル・ゲート・アレイ(FPGA)に元々移植されたが、これが高い容量のアプリケーションのために特定用途の集積回路(ASIC)を含む他のハードウエア構成への取り込みにも適していることが理解されるだろう。FPGAは、仕様が更新され得るという利点、または同じハードウエアが他のアプリケーションを実行するために構成され得るという利点を有している。しかしながら、ASICは、高性能を示し、大きな生産量に対して、低コストを示し得る。
【0010】
上述されたハードウエアで実行されるルンゲ−クッタ(数値)積分は、多くのアプリケーション用のデータを処理するために使用され得る。一実施形態において、ハードウエアで実行される数値積分は、地球の地表下の地震のデータに関係する移動時間の値を処理するために使用される。
【0011】
図3は、ルンゲ−クッタコアの構造を示す。コアは、トレースデータのソースと速度モデルから移動時間の値の平面上で、ルンゲ−クッタ積分を実行し、図4〜12に記載されたとおり半工程だけ前に進められた積分(すなわち、深さを増加させて下向き)による値の別の平面を発生させる。したがって、これらのコアのいずれか2つは、図2に示されるような1工程だけ積分を進めることが要求されるか、又は2つのコアが図1に示されるのと同じコアを通過する。これは、ハードウエアコストと速度の間で何らかのトレードオフができる。言いかえれば、ルンゲ−クッタ積分は、次の1Dベクトルに移る前にデータの1Dベクトル上での両方の半工程で行なわれる。第2オーダー近似が3つのデータポイントを必要とするので、各々のベクトルはパイプライン構造で保持される各方向に、その2つの至近の隣接対を有している必要がある。したがって、5つのベクトルへの同時アクセスが必要である。
【0012】
単一サイクルのルンゲ−クッタ移動時間発生器(60)、(61)はメモリーインターフェース(82)と相互作用する。当該メモリーインターフェース(82)は中央コントローラ(80)を含んでいて、図13に示されるように、移動時間外部メモリー(54)、(55)と、緩慢外部メモリー(44)、(45)とを制御する。中央コントローラ(80)は、中央処理装置(CPU)(83)と相互作用するメモリーインターフェース(82)によって制御される。中央処理装置(83)は、中央コントローラ(80)によって制御されるレジスタに書き込んだり、レジスタから読み出したりすることができる。図3の単一サイクルのルンゲ−クッタ移動時間発生器ブロック(60)は、移動時間外部メモリー(54)、(55)に存在する現在の平面から移動時間の入力を受け取り、緩慢外部メモリー(44)、(45)に存在する速度モデルから局所的緩慢値を受け取る。
【0013】
移動時間外部メモリー(54)、(55)は、好ましくはSSRAMなどの高速アクセスメモリーである。SSRAMなどのスタティックメモリーはそのメモリー空間内の任意のアドレスに高速アクセスを提供する。しかしながら、スタティックメモリー容量は制限されており、本明細書では一例として100万ワードと仮定した。高速ランダムアクセスメモリーは、インデクサ(84)と、中央コントローラ(80)によって制御されるレジスタマップを有している。高速ランダムアクセスメモリーは、X−Y平面を算出するためにXに対して、Yに対するX−Z平面を算出する際のZに対して、およびZ−Y平面を算出する際のZに対して1のユニットを算入する(counts in units)。高速ランダムアクセスメモリーは、各Zに対するX−Y平面を算出する際のYに対して、および各Yに対するX−Z平面を算出する際にZに対してXサイズのユニットを算入する。高速ランダムアクセスメモリーは、データの移動時間容量におけるX軸及びY軸またはZ軸及びX軸をスワップするために、1及びXサイズ又はZサイズのユニットを算入する。移動時間データ全体におけるX軸及びZ軸はスワップされ得るか、又はデータの一部がアプリケーションに応じてスワップされ得る。
【0014】
緩慢外部メモリー(44)、(45)は、好ましくはDDRAMなどの大容量メモリーである。バルクストレージは、典型的な配置で、10億ワードを提供する。それは、一連の列および行として内部に配列される。また、このメモリの位置へのアクセスは3段階の手順であり、潜在的に非常に遅い。まず、列がアクセスに開かれる。ついで、その列内の任意の位置またはカラムへのアクセス(「カラムアクセス」)が行なわれる。この段階で、一連のカラムアクセスは高速で行なわれることがあり、すべてのデータの提供は同じ列内にある。最後に、列は「プレチャージ」動作を行なうことにより閉じられる。少数の列(典型的に4つの列)が一度に開かれることを可能にする拡張がある。しかし、これは明らかに、一般的な場合に任意の記憶場所への高速アクセスを許さない。したがって、大容量メモリーは、リニアアクセス、例えば内部ループでのX上の反復など、高度に局所的なアクセスパターンに適する。大容量メモリーは外部ループまたはY軸及びZ軸に対して同じアクセス時間を有している。
【0015】
大容量メモリーは、内側の方向においてアドレスをインクリメントせず、Y軸に対して単独に又はZ軸に対してYサイズずつのいずれかで列アドレスをインデックスする(indexes)。大容量メモリーは、算出と書き込みを同時にすることができる。
【0016】
移動時間外部メモリー(54)、(55)が「代替のメモリーバンク」と等価であり、また、緩慢外部メモリー(44)、(45)が、図4乃至12に関連して記述された「メモリーバンク」と等価であることは注目されるべきである。ルンゲ−クッタ移動時間発生器(60)、(61)は、半工程だけ進められた積分によって移動時間を生成する。各クロックサイクルにおいて、完全な積分は1つの移動時間点上で行なわれる。
【0017】
図3を参照すると、現在の平面に対するTT(X)(Y+2)の移動時間データ(2)は、移動時間外部メモリー(54)、(55)から単一サイクルのルンゲ−クッタ移動時間発生器(60)へ送られる。TT(X)(Y+2)の移動時間データ(2)は、移動時間データの現在の平面の到着ベクトルであり、追加の4つのベクトルは、Y軸計算のためのライン格納器(4)、(6)、(8)、(10)内に格納される。同様に、X軸計算に対してTT(X+2)(Y)のライン格納器(6)から移動時間データの現在の平面から到着するベクトルは、レジスタ(28)、(30)、(32)及び(34)における4つの他のベクトルと共に格納される。ライン格納器又はレジスタのいずれか内に格納された利用可能な到着するベクトルおよび4つの他のベクトルをもつことによって、5つのベクトルへの同時アクセスは、利用可能な第1及び第2オーダーの近似である。
【0018】
ルンゲ−クッタ移動時間発生器(60)内では、移動時間データTT(X)(Y+2)は直接入力としてライン格納器(4)と微分ブロック(12)へ送られる。ライン格納器(4)はループカウンターおよびアドレス発生器(46)からX アドレス Addr Xを受け取る。ライン格納器(4)からTT(X)(Y+1)の直接出力は、直接入力としてライン格納器(6)へ送られ、および微分ブロック(12)と微分ブロック(14)へ送られる。ライン格納器(6)はX書き込みアドレス Addr X W Addrを受け取り、そしてX+2は読み出しアドレスAddr X+2 Rd Addrを受け取る。ライン格納器(6)に送られたX+2読み出しアドレスは、TT(X+2)(Y)のライン格納器(6)に格納されたベクトルがライン格納器の他のベクトルの少なくとも2サイクル前に読まれることを可能にし、X軸計算のために使用されるレジスタ(28)に送られた出力を生成する。ループカウンターおよびアドレス発生器(46)からライン格納器(6)への別々の書き込みアドレスW addrと読み出しアドレスRd Addr入力を有することによって、書き込みアドレスは、読み出しアドレスに影響を及ぼすことなく、読み出しアドレスから別々に計算することができる。
【0019】
ライン格納器(6)の直接出力TT(X+2)(Y)は、レジスタ(28)およびYブロック(36)に関する
【0020】
【化1】
【0021】
に送られる。レジスタ(28)からのTT(X+1)(Y)の出力は、Yブロック(36)に関する
【0022】
【化2】
【0023】
と、パイプラインにおける次のレジスタ(30)に送られる。レジスタ(30)からのTT(X)(Y)の出力は、Yブロック(36)に関する
【0024】
【化3】
【0025】
と、パイプラインの次のレジスタ(32)に送られる。レジスタ(32)からのTT(X−1)(Y)の出力は、Yブロック(36)に関する
【0026】
【化4】
【0027】
と、パイプラインの次のレジスタ(34)に送られる。TT(X−2)(Y)の出力はレジスタ(34)からYブロック(36)に関する
【0028】
【化5】
【0029】
に送られる。図3には示されていないが、レジスタ(28)、(30)、(32)および(34)からの出力が、Y軸計算のために図3に示された微分ブロック(12)、(14)、(16)、(18)、(20)、(22)および(24)に類似した微分ブロック(示されず)を用いて微分されていることを留意されたい。Yブロック(36)に関する
【0030】
【化6】
【0031】
は、数値の現在の平面内のX軸に等しく間隔をあけられた5つの微分計算された移動時間の値の配列を分析し、当該値の導関数を比較し、中心点で波頭伝達の方向を推定する。Yブロック(36)に関する
【0032】
【化7】
【0033】
は、ハミルトニアン(および緩慢補間)ブロック(38)に送られる。
【0034】
レジスタ(30)からTT(X)(Y)の出力もまた、直接入力として、ライン格納器(8)及び微分ブロック(14)及び(16)に送られる。ライン格納器(8)はループカウンター及びアドレス発生器(46)からXアドレス、AddrXを受け取る。ライン格納器(8)の直接出力は、微分ブロック(16)および(18)に送られ、かつライン格納器(10)の直接入力として送られる。ライン格納器(10)は、ループカウンターおよびアドレス発生器(46)からXアドレス、AddrXを受け取る。ライン格納器(10)の直接出力は、TT(X)(Y−2)およびDelayedTTである。DelayedTTは、一連のライン格納器(4)、(6)、(8)及び(10)において遅延した、入力された移動時間TT(X)(Y+2)である。DelayedTTは、ルンゲ−クッタ移動時間発生器(60)ブロックから出力され、TT(X)(Y−2)は微分ブロック(18)に送られる。
【0035】
微分ブロック(12)の出力dTT/dY(2)は、微分ブロック(20)およびENO決定論理ブロック(26)に送られる。微分ブロック(14)からの出力dTT/dY(1)は、微分ブロック(20)および(22)、ならびにENO決定論理ブロック(26)に送られる。微分ブロック(16)からの出力dTT/dY(0)は、微分ブロック(22)および(24)、ならびにENO決定論理ブロック(26)に送られる。微分ブロック(18)からの出力dTT/dY(−1)は、微分ブロック(24)およびENO決定論理ブロック(26)に送られる。代わりに、微分ブロック(20)、(22)及び(24)からのd2TT(1)dY2、d2TT(0)dY2及びd2TT(0)dY2の出力は、それぞれ、すべてENO決定論理ブロック(26)に送られる。ENO決定論理ブロック(36)は、数値の現在の平面内のY軸に等しく間隔をあけられた、5つの微分計算された移動時間の値の配列を分析し、当該値の導関数を比較し、中心点で波頭伝達の方向を推定する。
【0036】
ENO決定論理ブロック(26)の出力
【0037】
【化8】
【0038】
は、ハミルトニアン(及び緩慢補間)ブロック(38)に送られる。ハミルトニアン(及び緩慢補間)ブロック(38)はまた、緩慢外部メモリー(44)に格納される速度モデルから緩慢データ(44)を受け取る。ハミルトニアン(及び緩慢補間)ブロック(38)は、ENO決定論理ブロック(26)の出力
【0039】
【化9】
【0040】
から次の平面、および時間=距離/速度の関係を使用して緩慢外部メモリー(44)に格納される速度モデルから緩慢データ(44)に達するために、波頭に要する時間を計算する。ハミルトニアン(及び緩慢補間)ブロック(38)の出力Ham(X、Y)は、ルンゲ−クッタ半工程ブロック(40)に送られ、TT2(X、Y)(52)の出力は、計算されているトレースのためのメモリに送られ、書き込まれる。緩慢データが、積分が行なわれる移動時間容量内のすべての点のために格納されないことを留意されたい。したがって、緩慢の局所値は、隣接点での緩慢値間のブロック(38)の緩慢補間部分によって計算される。
【0041】
2つの単一サイクルのルンゲ−クッタ移動時間発生器(60)、(61)が、半工程を計算するために各々使用されているのであれば、古い移動時間データ、OldTT(X、Y)は、図2に示されるように、他の半工程移動時間データを出力するためにルンゲ−クッタ半工程ブロック(40)に入力されるだろう。第2のルンゲ−クッタ移動時間発生器(61)は、第1のルンゲ−クッタ移動時間発生器(60)と同じであることが好ましい。
【0042】
一方の半工程における現在の(過去の)平面、他方の半工程における次の平面、およびそれらの間の補間を読み出すことによって、始めるためのデータがないかもしれないことを留意されたい。もし1つの緩慢外部メモリーだけが存在し、それにより、1つの緩慢データ値だけが一度に読み出されることがあると、2つの値が必要とされるので、補間は起こり得ない。通常、第2の値は、ライン格納器または移動時間外部メモリーのような他のメモリーから供給されるが、移動時間発生の開始時では、あらかじめ格納されている値はないことがある。その場合、補間は、前半工程に必要ではなく、平面境界上にある必要もない(the first half step and needs to be on a plane boundary to that no interpolation is necessary)(例えば、単一の値は直接読み出され得る)。半工程を使用することによって、インクリメンタルな移動時間発生がどこで開始し得るかに制限ができる。言いかえれば、移動時間のインクリメントは、速度モデルのグリッド境界上で開始しなければならない。
【0043】
本願における用語
【0044】
【化10】
【0045】
は、X軸またはY軸いずれかに沿った距離の予想値、およびそれによる波頭方向の水平成分を表す。この予想値は、伝播波の方向のZと比較した、XまたはYにおける導関数であり得る。
【0046】
図4乃至12は、現在の平面からの移動時間、および速度モデルからの第1実施形態および第2実施形態において実行される半工程進められた移動時間までの局所的緩慢値の変換を示す。
【0047】
下方積分だけでは、全データ容量にわたって十分に正確ではない。(初期のショット(initial shot)の位置からの水平移動が比較的大きい)データ容量の外側領域における精度には、各水平軸に沿った積分を必要とし;この積分のパスは「サイドスウィープ(sidesweep)」として言及されるであろう。
【0048】
単一サイクルのルンゲ−クッタ移動時間発生器(60)、(61)はサイドスウィープに使用される。サイドスウィープを使用することにより、移動時間容量の周辺領域における精度が向上する。しかしながら、上述されるインデクシングは、(+)Z方向の計算を進めるために,計算がX−Y平面に沿って生じることを示唆する。サイドスウィープは、(+及び−)Y方向に進むためのX−Z平面、及び(+及び−)X方向に進むためのY−Z平面を交互に算出する、このプロセスに従うことを必要とする。−Z方向(上向きのスウィープ)に進むことが、移動時間の正確な積分を提供するためには必要ではないことを留意されたい。サイドスウィープは、図4乃至12に、より詳細に記載される。
【0049】
大容量メモリーのこのアクセスパターンの制限は、(X上の反復に続いてY上を反復し、その後Z上の最も外側を反復する)下向きのサイドスウィープが、(X上の反復に続いてZ上を反復し、その後(+及び−)Y上を反復する)Y軸のサイドスウィープの次に直接来ることが可能であるが、X軸のサイドスウィープが同じ方法では達し得ないことを意味する。これは、X軸が主軸であることを、X軸のサイドスウィープが要求するからであり、高性能順次アクセスに必要なように、それが短軸ではあり得ない。引用により本明細書に組み込まれる、2001年5月22日に公表の、米国特許第6,237,021号(発明の名称「データ集約型アプリケーションの能率的に処理するための方法および装置(METHOD AND APPARATUS FOR THE EFFICIENT PROCESSING OF DATA-INTENSIVE APPLICATIONS)」)の単一サイクルの構造を使用することにより、(ZまたはYいずれかの)反復の主軸は、大容量のダイナミックメモリーを利用することができる一方で、反復の残りの(短)軸は、高速アクセスのスタティックメモリーを利用する。
【0050】
本発明の1つの実施形態において、大容量メモリーに関係するアクセスパターンの制限を克服するために、データの移動時間容量(および緩慢データの関連するセクション)は、コピーされ、X軸のスウィープの前に、そのプロセスにおいて軸をスワップし;(容量全体にわたるセカンドパスが一般的に精度を必要とするために)その後、プロセスを逆行させる。したがって、Y軸は、X軸のサイドスウィープのための短軸になる。このスワップが可能なのは、全X−Y平面がスタティックメモリーに格納されることができ、一方の軸に沿った高速アクセスが可能であるからである。各平面は全体的に、その短軸としてX軸を備える、スタティックメモリーに順番に読み込まれる。それは、その後、その短軸としてY軸を備える大容量(ダイナミック)メモリーにライトバックされる。この軸スワップを他の処理と組み合わせることは可能であり、軸スワップには、更なる時間を消費する必要はない。この技術が、任意の3つの軸を、その軸におけるデータへの高速アクセスのための短軸に変換させる、または任意の3つの軸が、アルゴリズム考察のための主軸となることを可能にするように拡張され得ることを留意されたい。しかしながら、現在の埋め込みは、XおよびY軸が主軸として3つのすべての軸をカバーする短軸として扱われることを必要とするのみである。これらの工程は、以下に詳細に記載される。
【0051】
図4
総体的な方法記述−第1の実施形態
【0052】
(104).各Zに対するX−Y平面を算出し、メモリーにライトバックする。
【0053】
移動時間は、メモリーバンク、好ましくはDDRメモリーのような大容量メモリーから代替のメモリーバンクに、またはSSRAMメモリーのような高速アクセスメモリーであることが好ましい、図1および図2に示された移動時間外部メモリー(54)、(55)にコピーされる。代替のメモリーバンクは、比較的小さな高速アクセスメモリーバンクであるため、移動時間容量全体を包含することができない。したがって、各X−Y平面が工程(104)で各Zに対して算出された後、データはメモリーバンクまたは大容量メモリーにコピーバックされる。メモリーバンクのデータは、次のZ平面を発生させるための始点として使用される。したがって、移動時間容量全体は、大容量メモリーに蓄積され、1つの平面は代替のメモリーバンクに格納される。
【0054】
新しい移動時間容量の第1のスウィープの第1の平面に関して、メモリーバンクからロードするデータはない。代わりに、CPUは、関連する値を、直接代替のメモリーバンクに初期化する。
【0055】
代替のメモリーバンクは、比較的小さな高速アクセスメモリーバンクであるため、移動時間容量全体を包含することができない。したがって、各X−Y平面が工程(104)で各Zに対して算出された後、データはメモリーバンクまたは大容量メモリーにコピーバックされる。
【0056】
(106).その後、移動時間容量のX軸およびZ軸はスワップされる。
【0057】
工程(104)で計算され、メモリーバンクにコピーバックされた移動時間容量は、代替のメモリーバンクにロードされ、その後、メモリーバンクの異なる部分にライトバックされ、X軸およびZ軸をスワップする。
【0058】
(108). 各Xに対するZ−Y平面は、いずれかのX方向において算出され、メモリーにライトバックされる。
【0059】
用語「いずれかのX方向」は、2つの方向、増加するX座標、または減少するX座標を指す。代替のメモリーバンクは、比較的小さな高速アクセスメモリーバンクであるため、移動時間容量全体を包含することができない。したがって、各Z−Y平面が工程(108)で各Xに対して算出された後、データはメモリーバンクまたは大容量メモリーにコピーバックされる。
【0060】
(110).その後、移動時間容量のZ軸およびX軸はスワップされる。
【0061】
工程(108)で計算され、メモリーバンクにコピーバックされた移動時間容量は、代替のメモリーバンクにロードされ、その後、メモリーバンクの異なる部分にライトバックされ、Z軸およびX軸をスワップする。
【0062】
(112).次に、いずれかの方向における各Yに対するX−Z平面は、算出され、メモリーにライトバックされる。
【0063】
用語「いずれかのY方向」は、2つの方向、増加するY座標、または減少するY座標を指す。
【0064】
(116).メモリーまたはCPUに完全な移動時間を送る。
【0065】
他の半工程がまだ完了していなければ、工程(112)からのデータは、別のパスのために工程(104)に送り返される。全工程が完了していれば、その後、移動時間データは外部メモリーまたはCPUへ送信される。
【0066】
図5乃至9
図4におけるブロック104乃至112の詳細。
【0067】
図5− ブロック104の詳細
各Zに対するX−Y平面を算出し、メモリーにライトバックするための工程。
【0068】
(120). 第1の工程において、データは初期化される。
【0069】
第1のZ平面ループ:
【0070】
(121).その後、第1のZ平面で開始し、
【0071】
(122).各Yに対するXデータを読み出し、代替のメモリーバンクにコピーする。
【0072】
(123).YサイズずつZをインクリメントする(123)。
【0073】
(124).各Yに対するすべてのXデータが読み出されたか否かを決定する(124)。各Yに対するXデータの読み出しが終了していなければ、工程(122)に戻る。
各Yに対するXデータの読み出しが終了していれば、先に進む。
【0074】
現在のZ平面ループ:
【0075】
読み出しループ:
【0076】
(125)現在のZ平面に対するX緩慢データを読み出す。
【0077】
(126).次のZ平面に対するX緩慢データを読み出す。
【0078】
(127).1ずつYをインクリメントする。
【0079】
(128).(128)が終了していなければ、工程(125)に戻る。(128)が終了していれば、先に進む。
【0080】
書き込みループ:
【0081】
(129).次のZに対するXデータを代替のメモリーバンクに読み込む。
【0082】
(130).最小値を算出する。
【0083】
算出された最小値は、以前の格納されたデータ、および平面内の各ポイントに対する現在の平面のその新しく計算されたデータの間の最小値である。最小値のデータは、代替のメモリーバンク、好ましくは、SSRAMのような高速アクセスメモリーに格納される。最小値のデータは、新しい平面の開始として使用され、メモリーバンク、好ましくは、DDRAMのような大容量メモリーにライトバックもされる。
【0084】
(131).メモリーバンクにデータまたは最小値を書き込み、代替のメモリーバンクにデータのコピーを保存する。
【0085】
最小値は、代替のメモリーバンク、好ましくは、SSRAMのような高速アクセスメモリー、およびメモリーバンク、好ましくは、DDRAMのような大容量メモリーの両方に書き込まれる。最小値のデータは、新しい平面の開始として使用される。
【0086】
(132).YサイズずつZをインクリメントする(132)。
【0087】
(133).すべてのYのインクリメントが終了していなければ、工程(134)において現在のおよび代替のメモリーバンクをスワップし、工程(125)に戻る。
【0088】
(133).終了していれば、移動時間容量全体においてX軸およびZ軸をスワップする工程(106)(図6)に進む。
【0089】
(134).現在のおよび代替のメモリーバンクをスワップする。
【0090】
図6−ブロック(106)の詳細
移動時間容量全体においてX軸およびZ軸をスワップするための工程
【0091】
(135).第1の工程において、Y、Xを初期化する。
【0092】
読み出しX移動時間ループ:
【0093】
(136).Zに対するX移動時間データを読み出し、代替のメモリーバンクにコピーする。
【0094】
(137).YサイズずつZをインクリメントする(137)。
【0095】
工程(141)からのXのインクリメントが、工程(137)におけるZのインクリメントと異なるならば、データは、メモリーバンク内の別々のエントリーに書き込まれる。
【0096】
(138).Zに対するすべての移動時間データが読み出されたか否かを決定する。各Zに対するXデータの読み出しが終了していなければ、工程(136)に戻る。各Zに対するXデータの読み出しが終了していれば、先に進む。
【0097】
書き込みZ移動時間ループ:
【0098】
(139).YおよびXを初期化する。
【0099】
(140).Xに対するZ移動時間データをメモリーバンクに書き込む。
【0100】
(141).その後、YサイズずつXをインクリメントする(141)。
【0101】
工程(141)からのXのインクリメントが、工程(137)におけるZのインクリメントと異なるならば、データは、メモリーバンク内の別々のエントリーに書き込まれる。
【0102】
(142).Xに対するすべてのZ移動時間データがメモリーに書き込まれたかどうかを決定する。各Xに対するZ移動時間データの書き込みが終了していなければ、工程(140)に戻る。各Xに対するZ移動時間の書き込みが終了していれば、いずれかのX方向において各Xに対するZ−Y平面を算出する工程(108)(図7)に進む。
【0103】
図7−ブロック(108)の詳細
いずれかのX方向において各Xに対するZ−Y平面を算出し、メモリーにライトバックするための工程
【0104】
(143).第1の工程において、データは初期化される。
【0105】
第1のX平面ループ:
【0106】
(144).その後、第1のX平面で開始し、
【0107】
(145).各Yに対するZデータを読み出し、代替のメモリーバンクにコピーする。
【0108】
(146).+/−YサイズずつXをインクリメントする(123)。
【0109】
用語「+/−」は、直後の(immediately after)変数の増加または減少のいずれかとして定義される。
【0110】
(147).各Yに対するすべてのZデータが読み出されたかどうかを決定する。
各Yに対するZデータの読み出しが終了していなければ、工程(144)に戻る。各Yに対するZデータの読み出しが終了していれば、先に進む。
【0111】
現在のX平面ループ:
【0112】
読み出しループ:
【0113】
(148).現在のX平面に対するZ緩慢データを読み出す。
【0114】
(149).次のX平面に対するZ緩慢データを読み出す。
【0115】
(150).+/−1ずつYをインクリメントする。
【0116】
用語「+/−」は、直後の変数の増加または減少のいずれかとして定義される。
【0117】
(151).終了していなければ、工程(148)に戻る。終了していれば、先に進む。
【0118】
書き込みープ:
【0119】
(152).次のXに対するZデータを代替のメモリーバンクに読み込む。
【0120】
(153).最小値を算出する。
【0121】
算出された最小値は、以前の格納されたデータ、および平面内の各ポイントに対する現在の平面のその新しく計算されたデータの間の最小値である。最小値のデータは、代替のメモリーバンク、好ましくは、SSRAMのような高速アクセスメモリーに格納される。最小値のデータは、新しい平面の開始として使用され、メモリーバンク、好ましくは、DDRAMのような大容量メモリーにライトバックもされる。
【0122】
(154).メモリーバンクにデータまたは最小値を書き込み、代替のメモリーバンクにデータのコピーを保存する。
【0123】
最小値は、代替のメモリーバンク、好ましくは、SSRAMのような高速アクセスメモリー、およびメモリーバンク、好ましくは、DDRAMのような大容量メモリーの両方に書き込まれる。最小値のデータは、新しい平面の開始として使用される。
【0124】
(155).+/−YサイズずつXをインクリメントする。
【0125】
用語「+/−」は、直後の変数の増加または減少のいずれかとして定義される。
【0126】
(156).すべてのYインクリメントが終了していなければ、工程(157)において現在のおよび代替のメモリーバンクをスワップし、工程(148)に戻る。終了していれば、移動時間容量全体においてZ軸およびX軸をスワップする工程(110)(図8)に進む。
【0127】
(157).現在のおよび代替のメモリーバンクをスワップする。
【0128】
図8− ブロック(110)の詳細
移動時間容量全体においてZ軸およびX軸をスワップするための工程(110)。
【0129】
(158).第1の工程において、Y、Xを初期化する。
【0130】
読み出しZ移動時間ループ:
【0131】
(159).Xに対するZ移動時間データを読み出し、代替のメモリーのバンクにコピーする。
【0132】
(160).YサイズずつXをインクリメントする。
【0133】
(161).Xに対するすべてのZ移動時間データが読み出されたかどうかを決定する。各Xに対するZデータの読み出しが終了していなければ、工程(159)に戻る。各Xに対するZデータの読み出しが終了していれば、先に進む。
【0134】
書き込みX移動時間ループ:
【0135】
(162).YおよびZを初期化する。
【0136】
(163).Zに対するX移動時間データをメモリーバンクに書き込む。
【0137】
(164).その後、YサイズずつZをインクリメントする。
【0138】
(165).Zに対するすべてのX移動時間データがメモリーに書き込まれたかどうかを決定する。各Zに対するX移動時間の書き込みが終了していなければ、工程(163)に戻る。各Zに対するX移動時間の書き込みが終了していれば、いずれかのY方向において各Yに対するX−Z平面を算出する工程(112)(図9)に進む。
【0139】
図9−ブロック(112)の詳細
いずれかのY方向において各Yに対するX−Z平面を算出し、メモリーへライトバックするための工程
【0140】
(166).第1の工程において、データは初期化される。
【0141】
第1のZ平面ループ:
【0142】
(167).その後、第1のY平面で始める。
【0143】
(168).各Zに対するXのデータを読み出し、代替のメモリーバンクへとコピーする。
【0144】
(169).+/−1ずつZをインクリメントする。
【0145】
用語「+/−」は、その後すぐ変数を増加させるか、または減少させるかのいずれかとして定義される。
【0146】
(170).各Zに対する全てのXデータが読み出されたか否かを判断する。各Zに対するXのデータの読み出しが終了していないならば、工程(168)に戻る。各Zに対するXのデータの読み出しが終了しているならば、先へ進む。
【0147】
現在のZ平面ループ:
【0148】
読み出しループ:
【0149】
(171).現在のY平面に対するX緩慢データを読み出す。
【0150】
(172).次のY平面に対するX緩慢データを読み出す。
【0151】
(173).+/−1ずつYをインクリメントする。
【0152】
用語「+/−」は、その後すぐ変数を増加させるか、または減少させるかのいずれかとして定義される。
【0153】
(174).終了していなければ、工程(171)に戻る。終了しているならば、先に進む。
【0154】
書き込みループ:
【0155】
(175).代替のメモリーバンクに次のYに対するXデータを読み出す。
【0156】
(176).最小値を算出する。
【0157】
算出された最小値は、以前に格納されたデータと、平面内の各点に対する現在の平面の新しく算出されたデータとの間の最小値である。最小値は、代替のメモリーバンク、好ましくはSSRAMのような高速アクセスメモリーに格納される。最小値は、新しい平面のスタートとして使用され、メモリーバンク、好ましくはDDRAMのような大容量メモリーにもライトバックされる。
【0158】
(177).データまたは最小値をメモリーバンクへ書き込み、代替のメモリーバンクにコピーを保存する。
【0159】
最小値は、代替のメモリーバンク、好ましくはSRAMのような高速アクセスメモリーバンクと、メモリーバンク、好ましくはDDRAMのような大容量メモリーの両方に書き込まれる。最小値のデータは、新しい平面のスタートとして使用される。
【0160】
(178).+/−YサイズずつZをインクリメントする。
【0161】
用語「+/−」は、その後すぐ変数を増加させるか、または減少させるかのいずれかとして定義される。
【0162】
(179).すべてのZインクリメントが終了していないならば、工程(180)における現在および代替のメモリーバンクをスワップして、工程(171)に戻る。終了していれば、データを介するセカンドパスが必要か否かを決定する工程(114)(図4)へ進む。
【0163】
(180).現在および代替のメモリーバンクをスワップする。
【0164】
図10−全体の方法の記載−第2の実施形態
代替的に、第2の実施形態では、軸スワップは処理時間を減らすためにY軸算出と組み合わされる。
【0165】
(104).X−Y平面が各Zに対して算出され、メモリーにライトバックされる。
【0166】
移動時間はメモリーバンク、好ましくはDDRメモリーのような大容量メモリーから、代替のメモリーバンクまたは図1および2に示される移動時間外部メモリー(54)、(55)、(これは、好ましくは、SSRAMメモリーのような高速アクセスメモリーである)へコピーされる。代替のメモリーバンクは、比較的小さな高速アクセスメモリーバンクであるので、それは移動時間容量全体を包含することができない。従って、工程(104)において各X−Y平面が各Zに対して算出された後、データは、メモリーバンクまたは大容量メモリーにコピーされる。メモリーバンクのデータは、次のZ平面を作り出すための始点として使用される。その後、全体の移動時間容量が大容量メモリーに構築され、1つの平面が代替のメモリーバンクに格納される。
【0167】
新しい移動時間容量の第1のスワップの第1の平面に対して、メモリーバンクからロードするデータはない。その代わり、CPUは、代替のメモリーバンクへ関連する値を直接初期化する。
【0168】
代替のメモリーバンクは、比較的小さな高速アクセスメモリーバンクであるので、それは移動時間容量全体を包含することができない。従って、工程(104)において、各Zに対して各X−Y平面が算出された後、データはメモリーバンクまたは大容量メモリーにコピーされる。
【0169】
(118).1つのY方向における各YのX−Z平面を算出して、メモリーをZ−X平面としてライトバックする。
【0170】
(108).各Xに対するZ−Y平面がいずれかのX方向において算出され、メモリーにライトバックされる。
【0171】
用語「いずれかのX方向」は、2つの方向、X座標を増加させること、または、X座標を減少させること、を指す。代替のメモリーバンクは、比較的小さな高速アクセスメモリーバンクであるので、それは移動時間容量全体を包含することができない。従って、工程(108)において各Xに対して各Z−Y平面が算出された後、データはメモリーバンクまたは大容量メモリーにコピーされる。
【0172】
(120).他方のY方向における各Yに対するZ−X平面を算出して、X−Z平面としてメモリーにライトバックする。
【0173】
(116).メモリーまたはCPUに完全な移動時間を送る。
【0174】
別の半工程がまだ完了していないならば、工程(112)からのデータは別のパスのために工程(104)に送られる。全工程が完了しているならば、移動時間データは外部メモリーまたはCPUへ送られる。
【0175】
ブロック(104)、(108)および(116)の詳細は上論され、これによって参照によってここで繰り返される。ブロック(118)および(120)の詳細を以下に示す。
【0176】
図11−ブロック(118)の詳細
1方のY方向において各Yに対するX−Z平面を算出し、Z−X平面としてメモリーに書き込むための工程
【0177】
(181).第1の工程で、データは初期化される。
【0178】
第1のY平面ループ:
【0179】
(182).その後、第1のX平面から始めて、
【0180】
(183).各Zに対するXのデータを読み出し、代替のメモリーバンクにコピーする。
【0181】
(184).+あるいは−YサイズずつZをインクリメントする(123)。
【0182】
(185).各Zに対する全てのXデータが読み出されたか否かを判断する。各Zに対するXのデータの読み出しが終了していないならば、工程(183)に戻る。各Zに対するXのデータの読み出しが終了しているならば、先に進む。
【0183】
現在のY平面ループ:
【0184】
読み出しループ:
【0185】
(186).現在のY平面に対するX緩慢データを読み出す。
【0186】
(187).次のY平面に対するX緩慢データを読み出す。
【0187】
(188).+/−1ずつZをインクリメントする。
【0188】
用語「+/−」は、その後すぐ変数を増加させるか、または減少させるかのいずれかとして定義される。
【0189】
(189).終了していないならば、工程(186)に戻る。終了しているならば、先へ進む。
【0190】
書き込みループ:
【0191】
(190).次のYのためのXデータを代替のメモリーバンクに読み込む。
【0192】
(191).最小値を算出する。
【0193】
算出された最小値は、以前に格納されたデータと、平面内の各点に対する現在の平面の新しく算出されたデータとの間の最小値である。最小値のデータは、代替のメモリーバンク、好ましくは、SSRAMのような高速アクセスメモリーに格納される。最小値のデータは、新しい平面のスタートとして使用され、メモリーバンク、好ましくはDDRAMのような大容量メモリーにもライトバックされる。
【0194】
(192).データをZ−Xオーダーにおける次のYへまたはメモリーバンクへの最小値にライトバックし、代替のメモリーバンクにコピーを保存する。
【0195】
最小値は、代替のメモリーバンク、好ましくは、SSRAMのような高速アクセスメモリーと、メモリーバンク、好ましくはDDRAMのような大容量メモリーの両方に書き込まれる。最小値のデータは、新しい平面のスタートとして使用される。
【0196】
(193).+あるいは−YサイズずつZをインクリメントする。
【0197】
(194).すべてのZのインクリメントが終了していないならば、工程(195)で現在および代替のメモリーバンクをスワップして、工程(186)に戻る。終了しているならば、いずれかのY方向における各Yに対するZ−X平面を算出し、X−Z平面としてメモリーにライトバックする工程(116)(図11)へ進む。
【0198】
(195).現在および代替のメモリーバンクをスワップする。
【0199】
図12−ブロック(120)の詳細
他方のY方向における各YのZ−X平面を算出し、X−Z平面としてメモリーにライトバックするための工程
【0200】
(196).第1の工程において、データは初期化される。
【0201】
第1のY平面ループ:
【0202】
(197).その後、第1のY平面で始めて、
【0203】
(198).各Xに対するZデータを読み出し、代替のメモリーバンクにコピーする。
【0204】
(199).他方の+又は−YサイズずつZをインクリメントする(123)。
【0205】
(200).各Xに対する全てのZデータが読み出されたか否かを判断する。各Xに対するZデータの読み出しが終了していないならば、工程(198)に戻る。各Xに対するZデータの読み出しが終了しているならば、先へ進む。
【0206】
現在のY平面ループ:
【0207】
読み出しループ:
【0208】
(201).現在のY平面に対するZ緩慢データを読み出す。
【0209】
(202).次のY平面に対するZ緩慢データを読み出す。
【0210】
(203).+/−1ずつZをインクリメントする。
【0211】
用語「+/−」は、その後すぐ変数を増加させるか、または減少させるかのいずれかとして定義される。
【0212】
(204).終了していないならば、工程(201)に戻る。終了しているならば、先へ進む。
【0213】
書き込みループ:
【0214】
(205).次のYに対するZデータを代替のメモリーバンクに読み込む。
【0215】
(206).最小値を算出する。
【0216】
算出された最小値は、前に格納されたデータと、平面内の各点に対する現在の平面の新しく計算されたデータとの間の最小値である。最小値のデータは、代替のメモリーバンク、好ましくは、SSRAMのような高速アクセスメモリーに格納される。最小値のデータは、新しい平面のスタートとして使用され、メモリーバンク、好ましくはDDRAMのような大容量メモリーにもライトバックされる。
【0217】
(207).データを、X−Zオーダーの次のYへまたはメモリーバンクへの最小値へライトバックし、代替のメモリーバンクにコピーを保存する。
最小値は、代替のメモリーバンク、好ましくは、SSRAMのような高速アクセスメモリーと、メモリーバンク、好ましくはDDRAMのような大容量メモリーの両方に書き込まれる。最小値のデータは、新しい平面のスタートとして使用される。
【0218】
(208).他の+または−YサイズずつZをインクリメントする。
【0219】
(209).すべてのZのインクリメントが終了していないならば、工程(210)において現在および代替のメモリーバンクをスワップし、工程(201)に戻る。終了しているならば、図2に示されるような別の単一サイクルのルンゲ−クッタ移動時間発生器、または図1に示されるようなライン格納器(64)およびマルチプレクサ(62)に、データを送る工程(118)へ進む。
【0220】
(210).現在および代替のメモリーバンクをスワップする。
【0221】
図1−3のハードウエア実行の詳細な記載
図3の単一サイクル移動時間発生器を使用する2つの方法が、図1および2に例証される。図1は、2つのルンゲ−クッタの半工程を連続的に実行するための、上記のコアの1つを使用する実行の図式を示す。図2は、パラレルに2つのルンゲ−クッタの半工程を実行するために、上記のコアの2つを使用する実行の図式を示す。
【0222】
図1について、1つの単一サイクルのルンゲ−クッタ移動時間発生器(60)は、2つのルンゲ−クッタ半工程の実行において連続して用いられる。移動時間TT In/Outは、移動時間外部メモリー(54)からマルチプレクサ(58)に送られる。マルチプレクサ(58)はまた、第2の半工程から移動時間を受け取る。マルチプレクサ(58)の出力TT(X)(Y+2)は、単一サイクルのルンゲ−クッタ移動時間発生器(60)へ送られる。緩慢データSlownessは、緩慢外部メモリー(44)からライン格納器(66)および緩慢補間器(68)へ送られる。
【0223】
緩慢補間器(68)から、緩慢データSlownessは、2つのライン遅延(70)およびマルチプレクサ(72)に送られる。マルチプレクサから、緩慢データは、単一サイクルのルンゲ−クッタ移動時間発生器(60)に入力される。単一サイクルのルンゲ−クッタ移動時間発生器(60)は、また第2の半工程の間に第1の半工程からの古い移動時間データ0ldTT(X)(Y)を受け取る。
【0224】
第1の半工程で、単一サイクルのルンゲ−クッタ移動時間発生器(60)は、図3に示されるように、および、図4−9に示される工程にわたって、入力データTT(X)(Y+2)およびSlownessを、出力TT2(X)(Y)およびDelayedTTに変換する。出力TT2(X)(Y)はライン格納器(64)に格納される。
【0225】
第2の工程で、単一サイクルのルンゲ−クッタ移動時間発生器(60)は、入力データ、TT In−第2の半工程のみ(マルチプレクサ(58)をTT(X)(Y+2)と組み合わせた)、0ldTT(X)(Y)およびSlownessを、移動時間の外部メモリー(54)にライトバックされている出力TT2(X)(Y)に変換する。OldTT(X)(Y)の入力が、単に単一サイクルのルンゲ−クッタ移動時間発生器(60)内の適切な数のライン格納器によって遅延されたオリジナルの入力データTT(X)(Y+2)であること、およびそのTT In−第2の工程のみの入力は、第1の半工程からの出力であることに注目されるべきである。
【0226】
図1に示されるように、シーケンシャルモードにおいて、移動時間出力TT2(X)(Y)は、マルチプレクサ(58)の入力へフィードバックされて、単一のライン格納器(64)に保持されることが注目されるべきである。従って、第1の半工程は、全平面にわたってではなく、単一のライン(XおよびYにわたるループの代わりに、一定のYでXにわたるループ)にわたって行なわれる。その後、第2の半工程は、次のYの値に関する第1の半工程に進む前に同じライン上で行なわれる。
【0227】
図2は、パラレルに2つのルンゲ−クッタ半工程を行うための上記のコアの2つを使用する実施形態における図式である。第1の単一サイクルのルンゲ−クッタ移動時間発生器(60)は、第1の移動時間外部メモリー(55)から古い移動時間データOldTT(X)(Y)および移動時間入力TT(X)(Y+2)を受け取る。それぞれ、第1および第2の緩慢外部メモリー(44)、(45)からの、現在の緩慢平面および次の緩慢平面からの緩慢データCurrent Slowness PlaneおよびNext Slowness Planeは、緩慢補間器(68)に入力される。
【0228】
緩慢補間器(68)から、緩慢データSlownessは、単一サイクルのルンゲ−クッタ移動時間発生器(60)と、2ライン遅延(70)へ送られる。単一サイクルのルンゲ−クッタ移動時間発生器(60)は、遅延した移動時間Delyed TTおよびTT2(X)(Y)を出力し、これらは、2ライン遅延(70)からの遅延した緩慢Slownessを持つ入力として、第2の単一サイクルのルンゲ−クッタ移動時間発生器(61)へと送られる。
【0229】
第2のサイクルのルンゲ−クッタ移動時間発生器(61)、その後、遅延した移動時間Delayed TTおよびTT2(X)(Y)を出力し、これは、第2の移動時間外部メモリー(54)へ送られる。
【0230】
ハードウエアへとインプリメントされた数値積分は、多数の適用のためのデータを処理するために使用され得、本明細書において論じられた例に限定されない。
【0231】
従って、本明細書に記載された発明の実施形態は、本発明の原理の適用の単に例示であることは理解されるべきである。例示された実施形態の詳細への本明細書における言及は、請求項の範囲を制限するようことは意図されず、それら自身は、本発明にとって不可欠であると見なされたそれらの特徴について述べるものである。
【特許請求の範囲】
【請求項1】
少なくとも1つのメモリーバンクと、少なくとも1つの代替のメモリーバンクと、および前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクと相互作用する少なくとも1つの決定ブロックを含む、移動時間データにおけるX軸、Y軸およびZ軸に沿ったX、YおよびZの値によって定められる単一の点に関する移動時間の半工程を生み出すためのルンゲ−クッタ積分を実行する方法であって、該方法は、以下:
前記移動時間データ容量のX−Y平面における一連の点に対する各Zに対してX−Y平面を算出し、各Zに対するX−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクにライトバックする工程、
前記移動時間データ容量のX軸およびZ軸をスワップする工程、
前記移動時間データ容量のZ−Y平面上の一連の点に対するいずれかのX方向における各Xに対するZ−Y平面を算出し、Z−Y平面を、いずれかのX方向における各Xに対して、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程、
前記移動時間データ容量におけるZ軸とX軸をスワップする工程、
前記移動時間データ容量のX−Z平面上の一連の点に対していずれかのY方向における各Yに対してX−Z平面を算出し、X−Z平面を、いずれかのY方向における各Yに対して、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程、
単一の点に対する第2の半工程が算出されないならば、前記移動時間データ容量のX−Y平面における一連の点に対する各Zに対するX−Y平面を算出するために戻り、各Zに対するX−Y平面を、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程、
単一の点に対する第2の半工程が算出されたならば、前記移動時間データ容量を、前記少なくとも1つのメモリーバンクに送る工程、
を含むことを特徴とする方法。
【請求項2】
前記代替のメモリーバンクが、高速アクセスの、スタティックメモリーであり、前記メモリーバンクが、大容量ダイナミックメモリーであることを特徴とする請求項1に記載の方法。
【請求項3】
前記移動時間データ容量のX−Y平面における一連の点に対する各Zに対するX−Y平面を算出し、各Zに対するX−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクへライトバックする工程が、以下:
各Yに対するXデータを読み出し、メモリーの代替のバンクへ各Yに対する前記Xデータをコピーする工程、
YサイズずつZをインクリメントする工程、
現在のZ−平面に対するX緩慢データを読み出し、次のZ−平面に対するX緩慢データを読み出す工程、
1ずつYをインクリメントする工程、
前記代替のメモリーバンクへ次のZに対するXデータを読み出す工程、
最小値を算出する工程、
移動データまたは最小値を前記メモリーバンクへ書き込み、前記移動データまたは最小値のコピーを、前記代替メモリーバンクに保存する工程、および
YサイズずつZをインクリメントする工程、
各Zに対するX−Y平面が算出されないならば、前記メモリーバンクと前記代替のメモリーバンクをスワップし、各Yに対するXデータを読み出し、メモリーの代替のバンクへ各Yに対する前記Xデータをコピーする工程、
を含むことを特徴とする請求項1に記載の方法。
【請求項4】
前記移動時間データ容量のZ−Y平面上の一連の点に対するいずれかのX方向における各Xに対するZ−Y平面を算出し、Z−Y平面を、いずれかのX方向における各Xに対して、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程が、以下:
各Yに対するZデータを読み出し、メモリーの代替のバンクへ各Yに対するZデータをコピーする工程、
+/−YサイズずつXをインクリメントする工程、
現在のX平面に対するZ緩慢データを読み出し、次のX平面に対する前記Z緩慢データを読み出す工程、
+/−1ずつYをインクリメントする工程、
前記代替のメモリーバンクへ次のXに対するZデータを読み出す工程、
最小値を算出する工程、
移動データまたは最小値を前記メモリーバンクへ書き込み、前記移動データまたは最小値のコピーを前記代替のメモリーバンクに保存する工程、および
+/−YサイズずつXをインクリメントする工程、
各Xに対するZ−Y平面が算出されないならば、前記メモリーバンクと前記代替のメモリーバンクをスワップし、各Yに対するZデータを読み出し、メモリーの代替のバンクへ各Yに対する前記Zデータをコピーする工程に戻る工程、
を含むことを特徴とする請求項1に記載の方法。
【請求項5】
前記移動時間データ容量のX−Z平面上の一連の点に対するいずれかのY方向における各Yに対してX−Z平面を算出し、X−Z平面をいずれかのY方向における各Yに対して、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程が、以下:
各Zに対するXデータを読み出し、メモリーの代替のバンクへ各Zに対するXデータをコピーする工程、
+/−YサイズずつZをインクリメントする工程、
現在のY−平面に対するX緩慢データを読み出し、次のY−平面に対する前記X緩慢データを読み出す工程、
1ずつYをインクリメントする工程、
前記代替のメモリーバンクへ次のYに対するXデータを読み出す工程、
最小値を算出する工程、
移動データまたは最小値を前記メモリーバンクへ書き込み、前記移動データまたは最小値のコピーを前記代替のメモリーバンクに保存する工程、および
+/−YサイズずつZをインクリメントする工程、
各Yに対するX−Z平面が算出されないならば、前記メモリーバンクと前記代替のメモリーバンクをスワップし、各Zに対するXデータを読み出し、メモリーの代替のバンクへ各Zに対する前記Xデータをコピーする工程に戻る工程、
を含むことを特徴とする請求項1に記載の方法。
【請求項6】
前記移動時間データ容量における軸をスワップする工程は、移動時間データ容量全体にわたることを特徴とする請求項1に記載の方法。
【請求項7】
前記移動時間データ容量における軸をスワップする工程は、移動時間データ容量の一部にわたることを特徴とする請求項1に記載の方法。
【請求項8】
少なくとも1つのメモリーバンクと、少なくとも1つの代替のメモリーバンクと、および前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクと相互作用する少なくとも1つの決定ブロックを含む、移動時間データ容量におけるX軸、Y軸およびZ軸に沿ったX、YおよびZの値によって定められる単一の点に関する移動時間の半工程を生み出すためのルンゲ−クッタ積分を実行する方法であって、該方法は、以下:
前記移動時間データ容量のX−Y平面上の一連の点に対する各Zに対するX−Y平面を算出し、各Zに対してX−Y平面を、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程、
前記移動時間データ容量のX−Z平面上の一連の点に対して一方のY方向における各Yに対してX−Z平面を算出し、X−Z平面をいずれかのY方向における各Yに対して、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへ書き込む工程、
前記移動時間データ容量のZ−Y平面上の一連の点に対するいずれかのX方向における各Xに対するZ−Y平面を算出し、各Zに対してZ−Y平面を、いずれかのXの方向において、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程、
前記移動時間データ容量のZ−X平面上の一連の点に対して他方のY方向における各Yに対してZ−X平面を算出し、X−Z平面を他方のY方向における各Yに対して、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程、
単一の点に対する第2の半工程が算出されないならば、前記移動時間データ容量のX−Y平面における一連の点に対する各Zに対するX−Y平面を算出し、各Zに対するX−Y平面を、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程に戻る工程、
単一の点に対する第2の半工程を算出されたならば、前記移動時間データ容量を、前記少なくとも1つのメモリーバンクに送る工程、
を含むことを特徴とする請求項1に記載の方法。
【請求項9】
前記代替のメモリーバンクが、高速アクセスの、スタティックメモリーであり、前記メモリーバンクが、大容量ダイナミックメモリーであることを特徴とする請求項8に記載の方法。
【請求項10】
前記移動時間データ容量のX−Y平面における一連の点に対する各Zに対するX−Y平面を算出し、各Zに対するX−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクへライトバックする工程が、以下:
各Yに対するXデータを読み出し、メモリーの代替のバンクへ各Yに対する前記Xデータをコピーする工程、
YサイズずつZをインクリメントする工程、
現在のZ−平面に対するX緩慢データを読み出し、次のZ−平面に対するX緩慢データを読み出す工程、
1ずつYをインクリメントする工程、
前記代替のメモリーバンクへ次のZに対するXデータを読み込む工程、
最小値を算出する工程、
移動データまたは最小値を前記メモリーバンクへライトバックし、前記移動データまたは最小値のコピーを、前記代替メモリーバンクに保存する工程、および
YサイズずつZをインクリメントする工程、
各Zに対するX−Y平面が算出されないならば、前記メモリーバンクと前記代替のメモリーバンクをスワップし、各Yに対するXデータを読み出し、メモリーの代替のバンクへ各Yに対する前記Xデータをコピーする工程に戻る工程、
を含むことを特徴とする請求項8に記載の方法。
【請求項11】
前記移動時間データ容量のX−Z平面上の一連の点に対する一方のY方向における各Yに対するX−Z平面を算出し、Z−X平面をいずれかのY方向における各Yに対して、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへ書き込む工程が、以下:
各Zに対するXデータを読み出し、メモリーの代替のバンクへ各Zに対するXデータをコピーする工程、
+/−YサイズずつZをインクリメントする工程、
現在のY−平面に対するX緩慢データを読み出し、次のY−平面に対する前記X緩慢データを読み出す工程、
+/−1ずつZをインクリメントする工程、
前記代替のメモリーバンクへ次のYに対するXデータを読み出す工程、
最小値を算出する工程、
移動データまたは最小値を前記メモリーバンクへ書き込み、前記移動データまたは最小値のコピーを前記代替のメモリーバンクに保存する工程、および
+/−YサイズずつZをインクリメントする工程、
各Xに対するZ−Y平面が算出されないならば、前記メモリーバンクと前記代替のメモリーバンクをスワップし、各Yに対するZデータを読み込み、メモリーの代替のバンクへ各Zに対する前記Xデータをコピーする工程に戻る工程、
を含むことを特徴とする請求項8に記載の方法。
【請求項12】
前記移動時間データ容量のZ−Y平面上の一連の点に対するいずれかのX方向における各Xに対するZ−Y平面を算出し、各Xに対してZ−Y平面を、いずれかのXの方向において、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程が、以下:
各Yに対するZデータを読み出し、メモリーの代替のバンクへ各Yに対するZデータをコピーする工程、
+/−YサイズずつXをインクリメントする工程、
現在のX−平面に対するZ緩慢データを読み出し、次のX−平面に対する前記Z緩慢データを読み出す工程、
+/−1ずつYをインクリメントする工程、
前記代替のメモリーバンクへ次のXに対するZデータを読み込む工程、
最小値を算出する工程、
移動データまたは最小値を前記メモリーバンクへ書き込み、前記移動データまたは最小値のコピーを前記代替のメモリーバンクに保存する工程、および
+/−YサイズずつXをインクリメントする工程、
各Xに対するZ−Y平面が算出されないならば、前記メモリーバンクと前記代替のメモリーバンクをスワップし、各Yに対するZデータを読み込み、メモリーの代替のバンクへ各Yに対する前記Zデータをコピーする工程に戻る工程、
を含むことを特徴とする請求項8に記載の方法。
【請求項13】
前記移動時間データ容量のZ−X平面上の一連の点に対する他方のY方向における各Yに対してZ−X平面を算出し、X−Z平面を他方のY方向における各Yに対して、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程が、以下:
各Xに対するZデータを読み出し、メモリーの前記バンクへ各Xに対するZデータをコピーする工程、
他の+または−YサイズずつZをインクリメントする工程、
現在のY−平面に対するX緩慢データを読み出し、次のY−平面に対する前記X緩慢データを読み出す工程、
+/−1ずつZをインクリメントする工程、
前記代替のメモリーバンクへ次のYに対するZデータを読み込む工程、
最小値を算出する工程、
前記メモリーバンクへ移動時間または最小値をライトバックし、前記移動時間又は最小値のコピーを、前記代替のメモリーバンクに保存する工程、および
他の+/−YサイズずつZをインクリメントする工程、
各Yに対するZ−X平面が算出されないならば、前記メモリーバンクと前記代替のメモリーバンクをスワップし、各Zに対するXデータを読み出し、メモリーの代替のバンクへ各Zに対する前記Xデータをコピーする工程に戻る工程、
を含むことを特徴とする請求項8に記載の方法。
【請求項14】
移動時間データ容量からのX軸、Y軸、およびZ軸に沿ったX、YおよびZの値によって定められる単一の点のルンゲ−クッタ積分を介したデータの変換のためのシステムであって、該システムは、以下:
少なくとも1つのメモリーバンクおよび少なくとも1つの代替のメモリーバンク、
前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクと連絡する少なくとも1つの単一サイクルのルンゲ−クッタ移動時間発生器、
を含み、
ここで、前記少なくとも1つの単一サイクルのルンゲ−クッタ移動時間発生器は、少なくとも1つのメモリーバンクからデータを読み出し、半工程によって前に進められる積分による値の別の平面を作り出すために、移動時間データ容量および緩慢データにおけるX軸、Y軸およびZ軸に沿ったX、YおよびZの値によって定められる平面の点上でルンゲ−クッタ積分を行うことによってデータを変換し、および前記少なくとも1つの代替のメモリーバンクへ前記データをライトバックする、
ことを特徴とするシステム。
【請求項15】
前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクに結合されるCPUをさらに含むことを特徴とする請求項14に記載のシステム。
【請求項16】
前記データが、2つのルンゲ−クッタ移動時間発生器によって連続的に変換されることを特徴とする請求項14に記載のシステム。
【請求項17】
前記データが、2つのルンゲ−クッタ移動時間発生器によってパラレルになされて変換されることを特徴とする請求項14に記載のシステム。
【請求項18】
ルンゲ−クッタ移動時間発生器による前記データの変換が、以下、
移動時間データ容量のX−Y平面における一連の点に対する各Zに対するX−Y平面を算出し、各Zに対する前記X−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクにライトバックする工程、
前記移動時間データ容量におけるX軸およびZ軸をスワップする工程、
前記移動時間データ容量のZ−Y平面上の一連の点に対するいずれかのX方向における各Xに対するZ−Y平面を算出し、いずれかのX方向における各Xに対する前記Z−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクにライトバックする工程、
前記移動時間データ容量におけるZ軸およびX軸をスワップする工程、
前記移動時間データ容量のX−Z平面上の一連の点に対するいずれかのY方向における各Yに対するX−Z平面を算出し、いずれかのY方向における各Yに対するX−Z平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクにライトバックする工程、
単一の点に対する第2の半工程が算出されないならば、前記移動時間データ容量のX−Y平面における一連の点に対する各Zに対してX−Y平面を算出し、各Zに対するX−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクにライトバックする工程に戻る工程、
単一の点に対する第2の半工程が算出されたならば、前記移動時間データ容量を、前記少なくとも1つのメモリーバンクに送る工程、
を含むことを特徴とする請求項14に記載のシステム。
【請求項19】
前記ルンゲ−クッタ移動時間発生器によるデータの変換が、以下:
前記移動時間データ容量のX−Y平面における一連の点に対する各Zに対するX−Y平面を算出し、各Zに対するX−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクにライトバックする工程、
前記移動時間データ容量のX−Z平面における一連の点に対するいずれかのY方向における各Yに対するX−Z平面を算出し、いずれかのY方向における各Yに対するX−Z平面として、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクへ書き込む工程、
前記移動時間データ容量のZ−Y平面における一連の点に対するいずれかのX方向における各Xに対するZ−Y平面を算出し、いずれかのX方向における各Xに対する前記Z−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクにライトバックする工程、
前記移動時間データ容量のZ−X平面における一連の点に対する他方のY方向における各Yに対するZ−X平面を算出し、他方のY方向における各Yに対する前記X−Z平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクにライトバックする工程、
単一の点に対する第2の半工程が算出されていないならば、前記移動時間データ容量のX−Y平面における一連の点に対する各Zに対してX−Y平面を算出し、各Zに対するX−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクへライトバックする工程に戻る工程、
単一の点に対する第2の半工程が算出されたならば、前記移動時間データ容量を、前記少なくとも1つのメモリーバンクに送る工程、
を含むことを特徴とする請求項14に記載のシステム。
【請求項20】
現在の平面に対する移動時間データの入力を受け入れるための第1のポート、
速度モデルからの緩慢データの入力を受け入れるポート、
ルンゲ−クッタ積分を介して入力を変換する工程、
半工程及び遅延した移動時間データによって進められる積分による移動時間データの平面を出力する工程、
を含むルンゲ−クッタ積分を実行するためのチップであって、
前記平面を出力する工程は、
前記移動時間データのX−Y平面における一連の点に対する各Zに対するX−Y平面を算出する工程、
移動時間データ容量におけるX軸およびZ軸をスワップする工程、
移動時間データ容量のZ−Y平面上の一連の点に対するいずれかのX方向における各Xに対するZ−Y平面を算出する工程、
移動時間データ容量におけるZ軸およびX軸をスワップする工程、
移動時間データ容量のX−Z平面上の一連の点に対するいずれかのY方向における各Yに対するX−Z平面を算出する工程、
単一の点に対する第2の半工程が算出されないならば、移動時間データ容量の前記X−Y平面における一連の点に対する各Zに対するX−Y平面を算出する工程に戻る工程、
を含むことを特徴とするチップ。
【請求項21】
第1の半工程によって進められる積分による移動時間データの平面の出力の入力をさらに含むことを特徴とする請求項19に記載のチップ。
【請求項1】
少なくとも1つのメモリーバンクと、少なくとも1つの代替のメモリーバンクと、および前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクと相互作用する少なくとも1つの決定ブロックを含む、移動時間データにおけるX軸、Y軸およびZ軸に沿ったX、YおよびZの値によって定められる単一の点に関する移動時間の半工程を生み出すためのルンゲ−クッタ積分を実行する方法であって、該方法は、以下:
前記移動時間データ容量のX−Y平面における一連の点に対する各Zに対してX−Y平面を算出し、各Zに対するX−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクにライトバックする工程、
前記移動時間データ容量のX軸およびZ軸をスワップする工程、
前記移動時間データ容量のZ−Y平面上の一連の点に対するいずれかのX方向における各Xに対するZ−Y平面を算出し、Z−Y平面を、いずれかのX方向における各Xに対して、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程、
前記移動時間データ容量におけるZ軸とX軸をスワップする工程、
前記移動時間データ容量のX−Z平面上の一連の点に対していずれかのY方向における各Yに対してX−Z平面を算出し、X−Z平面を、いずれかのY方向における各Yに対して、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程、
単一の点に対する第2の半工程が算出されないならば、前記移動時間データ容量のX−Y平面における一連の点に対する各Zに対するX−Y平面を算出するために戻り、各Zに対するX−Y平面を、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程、
単一の点に対する第2の半工程が算出されたならば、前記移動時間データ容量を、前記少なくとも1つのメモリーバンクに送る工程、
を含むことを特徴とする方法。
【請求項2】
前記代替のメモリーバンクが、高速アクセスの、スタティックメモリーであり、前記メモリーバンクが、大容量ダイナミックメモリーであることを特徴とする請求項1に記載の方法。
【請求項3】
前記移動時間データ容量のX−Y平面における一連の点に対する各Zに対するX−Y平面を算出し、各Zに対するX−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクへライトバックする工程が、以下:
各Yに対するXデータを読み出し、メモリーの代替のバンクへ各Yに対する前記Xデータをコピーする工程、
YサイズずつZをインクリメントする工程、
現在のZ−平面に対するX緩慢データを読み出し、次のZ−平面に対するX緩慢データを読み出す工程、
1ずつYをインクリメントする工程、
前記代替のメモリーバンクへ次のZに対するXデータを読み出す工程、
最小値を算出する工程、
移動データまたは最小値を前記メモリーバンクへ書き込み、前記移動データまたは最小値のコピーを、前記代替メモリーバンクに保存する工程、および
YサイズずつZをインクリメントする工程、
各Zに対するX−Y平面が算出されないならば、前記メモリーバンクと前記代替のメモリーバンクをスワップし、各Yに対するXデータを読み出し、メモリーの代替のバンクへ各Yに対する前記Xデータをコピーする工程、
を含むことを特徴とする請求項1に記載の方法。
【請求項4】
前記移動時間データ容量のZ−Y平面上の一連の点に対するいずれかのX方向における各Xに対するZ−Y平面を算出し、Z−Y平面を、いずれかのX方向における各Xに対して、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程が、以下:
各Yに対するZデータを読み出し、メモリーの代替のバンクへ各Yに対するZデータをコピーする工程、
+/−YサイズずつXをインクリメントする工程、
現在のX平面に対するZ緩慢データを読み出し、次のX平面に対する前記Z緩慢データを読み出す工程、
+/−1ずつYをインクリメントする工程、
前記代替のメモリーバンクへ次のXに対するZデータを読み出す工程、
最小値を算出する工程、
移動データまたは最小値を前記メモリーバンクへ書き込み、前記移動データまたは最小値のコピーを前記代替のメモリーバンクに保存する工程、および
+/−YサイズずつXをインクリメントする工程、
各Xに対するZ−Y平面が算出されないならば、前記メモリーバンクと前記代替のメモリーバンクをスワップし、各Yに対するZデータを読み出し、メモリーの代替のバンクへ各Yに対する前記Zデータをコピーする工程に戻る工程、
を含むことを特徴とする請求項1に記載の方法。
【請求項5】
前記移動時間データ容量のX−Z平面上の一連の点に対するいずれかのY方向における各Yに対してX−Z平面を算出し、X−Z平面をいずれかのY方向における各Yに対して、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程が、以下:
各Zに対するXデータを読み出し、メモリーの代替のバンクへ各Zに対するXデータをコピーする工程、
+/−YサイズずつZをインクリメントする工程、
現在のY−平面に対するX緩慢データを読み出し、次のY−平面に対する前記X緩慢データを読み出す工程、
1ずつYをインクリメントする工程、
前記代替のメモリーバンクへ次のYに対するXデータを読み出す工程、
最小値を算出する工程、
移動データまたは最小値を前記メモリーバンクへ書き込み、前記移動データまたは最小値のコピーを前記代替のメモリーバンクに保存する工程、および
+/−YサイズずつZをインクリメントする工程、
各Yに対するX−Z平面が算出されないならば、前記メモリーバンクと前記代替のメモリーバンクをスワップし、各Zに対するXデータを読み出し、メモリーの代替のバンクへ各Zに対する前記Xデータをコピーする工程に戻る工程、
を含むことを特徴とする請求項1に記載の方法。
【請求項6】
前記移動時間データ容量における軸をスワップする工程は、移動時間データ容量全体にわたることを特徴とする請求項1に記載の方法。
【請求項7】
前記移動時間データ容量における軸をスワップする工程は、移動時間データ容量の一部にわたることを特徴とする請求項1に記載の方法。
【請求項8】
少なくとも1つのメモリーバンクと、少なくとも1つの代替のメモリーバンクと、および前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクと相互作用する少なくとも1つの決定ブロックを含む、移動時間データ容量におけるX軸、Y軸およびZ軸に沿ったX、YおよびZの値によって定められる単一の点に関する移動時間の半工程を生み出すためのルンゲ−クッタ積分を実行する方法であって、該方法は、以下:
前記移動時間データ容量のX−Y平面上の一連の点に対する各Zに対するX−Y平面を算出し、各Zに対してX−Y平面を、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程、
前記移動時間データ容量のX−Z平面上の一連の点に対して一方のY方向における各Yに対してX−Z平面を算出し、X−Z平面をいずれかのY方向における各Yに対して、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへ書き込む工程、
前記移動時間データ容量のZ−Y平面上の一連の点に対するいずれかのX方向における各Xに対するZ−Y平面を算出し、各Zに対してZ−Y平面を、いずれかのXの方向において、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程、
前記移動時間データ容量のZ−X平面上の一連の点に対して他方のY方向における各Yに対してZ−X平面を算出し、X−Z平面を他方のY方向における各Yに対して、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程、
単一の点に対する第2の半工程が算出されないならば、前記移動時間データ容量のX−Y平面における一連の点に対する各Zに対するX−Y平面を算出し、各Zに対するX−Y平面を、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程に戻る工程、
単一の点に対する第2の半工程を算出されたならば、前記移動時間データ容量を、前記少なくとも1つのメモリーバンクに送る工程、
を含むことを特徴とする請求項1に記載の方法。
【請求項9】
前記代替のメモリーバンクが、高速アクセスの、スタティックメモリーであり、前記メモリーバンクが、大容量ダイナミックメモリーであることを特徴とする請求項8に記載の方法。
【請求項10】
前記移動時間データ容量のX−Y平面における一連の点に対する各Zに対するX−Y平面を算出し、各Zに対するX−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクへライトバックする工程が、以下:
各Yに対するXデータを読み出し、メモリーの代替のバンクへ各Yに対する前記Xデータをコピーする工程、
YサイズずつZをインクリメントする工程、
現在のZ−平面に対するX緩慢データを読み出し、次のZ−平面に対するX緩慢データを読み出す工程、
1ずつYをインクリメントする工程、
前記代替のメモリーバンクへ次のZに対するXデータを読み込む工程、
最小値を算出する工程、
移動データまたは最小値を前記メモリーバンクへライトバックし、前記移動データまたは最小値のコピーを、前記代替メモリーバンクに保存する工程、および
YサイズずつZをインクリメントする工程、
各Zに対するX−Y平面が算出されないならば、前記メモリーバンクと前記代替のメモリーバンクをスワップし、各Yに対するXデータを読み出し、メモリーの代替のバンクへ各Yに対する前記Xデータをコピーする工程に戻る工程、
を含むことを特徴とする請求項8に記載の方法。
【請求項11】
前記移動時間データ容量のX−Z平面上の一連の点に対する一方のY方向における各Yに対するX−Z平面を算出し、Z−X平面をいずれかのY方向における各Yに対して、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへ書き込む工程が、以下:
各Zに対するXデータを読み出し、メモリーの代替のバンクへ各Zに対するXデータをコピーする工程、
+/−YサイズずつZをインクリメントする工程、
現在のY−平面に対するX緩慢データを読み出し、次のY−平面に対する前記X緩慢データを読み出す工程、
+/−1ずつZをインクリメントする工程、
前記代替のメモリーバンクへ次のYに対するXデータを読み出す工程、
最小値を算出する工程、
移動データまたは最小値を前記メモリーバンクへ書き込み、前記移動データまたは最小値のコピーを前記代替のメモリーバンクに保存する工程、および
+/−YサイズずつZをインクリメントする工程、
各Xに対するZ−Y平面が算出されないならば、前記メモリーバンクと前記代替のメモリーバンクをスワップし、各Yに対するZデータを読み込み、メモリーの代替のバンクへ各Zに対する前記Xデータをコピーする工程に戻る工程、
を含むことを特徴とする請求項8に記載の方法。
【請求項12】
前記移動時間データ容量のZ−Y平面上の一連の点に対するいずれかのX方向における各Xに対するZ−Y平面を算出し、各Xに対してZ−Y平面を、いずれかのXの方向において、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程が、以下:
各Yに対するZデータを読み出し、メモリーの代替のバンクへ各Yに対するZデータをコピーする工程、
+/−YサイズずつXをインクリメントする工程、
現在のX−平面に対するZ緩慢データを読み出し、次のX−平面に対する前記Z緩慢データを読み出す工程、
+/−1ずつYをインクリメントする工程、
前記代替のメモリーバンクへ次のXに対するZデータを読み込む工程、
最小値を算出する工程、
移動データまたは最小値を前記メモリーバンクへ書き込み、前記移動データまたは最小値のコピーを前記代替のメモリーバンクに保存する工程、および
+/−YサイズずつXをインクリメントする工程、
各Xに対するZ−Y平面が算出されないならば、前記メモリーバンクと前記代替のメモリーバンクをスワップし、各Yに対するZデータを読み込み、メモリーの代替のバンクへ各Yに対する前記Zデータをコピーする工程に戻る工程、
を含むことを特徴とする請求項8に記載の方法。
【請求項13】
前記移動時間データ容量のZ−X平面上の一連の点に対する他方のY方向における各Yに対してZ−X平面を算出し、X−Z平面を他方のY方向における各Yに対して、前記少なくとも1つのメモリーバンクと前記少なくとも1つの代替のメモリーバンクへライトバックする工程が、以下:
各Xに対するZデータを読み出し、メモリーの前記バンクへ各Xに対するZデータをコピーする工程、
他の+または−YサイズずつZをインクリメントする工程、
現在のY−平面に対するX緩慢データを読み出し、次のY−平面に対する前記X緩慢データを読み出す工程、
+/−1ずつZをインクリメントする工程、
前記代替のメモリーバンクへ次のYに対するZデータを読み込む工程、
最小値を算出する工程、
前記メモリーバンクへ移動時間または最小値をライトバックし、前記移動時間又は最小値のコピーを、前記代替のメモリーバンクに保存する工程、および
他の+/−YサイズずつZをインクリメントする工程、
各Yに対するZ−X平面が算出されないならば、前記メモリーバンクと前記代替のメモリーバンクをスワップし、各Zに対するXデータを読み出し、メモリーの代替のバンクへ各Zに対する前記Xデータをコピーする工程に戻る工程、
を含むことを特徴とする請求項8に記載の方法。
【請求項14】
移動時間データ容量からのX軸、Y軸、およびZ軸に沿ったX、YおよびZの値によって定められる単一の点のルンゲ−クッタ積分を介したデータの変換のためのシステムであって、該システムは、以下:
少なくとも1つのメモリーバンクおよび少なくとも1つの代替のメモリーバンク、
前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクと連絡する少なくとも1つの単一サイクルのルンゲ−クッタ移動時間発生器、
を含み、
ここで、前記少なくとも1つの単一サイクルのルンゲ−クッタ移動時間発生器は、少なくとも1つのメモリーバンクからデータを読み出し、半工程によって前に進められる積分による値の別の平面を作り出すために、移動時間データ容量および緩慢データにおけるX軸、Y軸およびZ軸に沿ったX、YおよびZの値によって定められる平面の点上でルンゲ−クッタ積分を行うことによってデータを変換し、および前記少なくとも1つの代替のメモリーバンクへ前記データをライトバックする、
ことを特徴とするシステム。
【請求項15】
前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクに結合されるCPUをさらに含むことを特徴とする請求項14に記載のシステム。
【請求項16】
前記データが、2つのルンゲ−クッタ移動時間発生器によって連続的に変換されることを特徴とする請求項14に記載のシステム。
【請求項17】
前記データが、2つのルンゲ−クッタ移動時間発生器によってパラレルになされて変換されることを特徴とする請求項14に記載のシステム。
【請求項18】
ルンゲ−クッタ移動時間発生器による前記データの変換が、以下、
移動時間データ容量のX−Y平面における一連の点に対する各Zに対するX−Y平面を算出し、各Zに対する前記X−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクにライトバックする工程、
前記移動時間データ容量におけるX軸およびZ軸をスワップする工程、
前記移動時間データ容量のZ−Y平面上の一連の点に対するいずれかのX方向における各Xに対するZ−Y平面を算出し、いずれかのX方向における各Xに対する前記Z−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクにライトバックする工程、
前記移動時間データ容量におけるZ軸およびX軸をスワップする工程、
前記移動時間データ容量のX−Z平面上の一連の点に対するいずれかのY方向における各Yに対するX−Z平面を算出し、いずれかのY方向における各Yに対するX−Z平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクにライトバックする工程、
単一の点に対する第2の半工程が算出されないならば、前記移動時間データ容量のX−Y平面における一連の点に対する各Zに対してX−Y平面を算出し、各Zに対するX−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクにライトバックする工程に戻る工程、
単一の点に対する第2の半工程が算出されたならば、前記移動時間データ容量を、前記少なくとも1つのメモリーバンクに送る工程、
を含むことを特徴とする請求項14に記載のシステム。
【請求項19】
前記ルンゲ−クッタ移動時間発生器によるデータの変換が、以下:
前記移動時間データ容量のX−Y平面における一連の点に対する各Zに対するX−Y平面を算出し、各Zに対するX−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクにライトバックする工程、
前記移動時間データ容量のX−Z平面における一連の点に対するいずれかのY方向における各Yに対するX−Z平面を算出し、いずれかのY方向における各Yに対するX−Z平面として、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクへ書き込む工程、
前記移動時間データ容量のZ−Y平面における一連の点に対するいずれかのX方向における各Xに対するZ−Y平面を算出し、いずれかのX方向における各Xに対する前記Z−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクにライトバックする工程、
前記移動時間データ容量のZ−X平面における一連の点に対する他方のY方向における各Yに対するZ−X平面を算出し、他方のY方向における各Yに対する前記X−Z平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクにライトバックする工程、
単一の点に対する第2の半工程が算出されていないならば、前記移動時間データ容量のX−Y平面における一連の点に対する各Zに対してX−Y平面を算出し、各Zに対するX−Y平面を、前記少なくとも1つのメモリーバンクおよび前記少なくとも1つの代替のメモリーバンクへライトバックする工程に戻る工程、
単一の点に対する第2の半工程が算出されたならば、前記移動時間データ容量を、前記少なくとも1つのメモリーバンクに送る工程、
を含むことを特徴とする請求項14に記載のシステム。
【請求項20】
現在の平面に対する移動時間データの入力を受け入れるための第1のポート、
速度モデルからの緩慢データの入力を受け入れるポート、
ルンゲ−クッタ積分を介して入力を変換する工程、
半工程及び遅延した移動時間データによって進められる積分による移動時間データの平面を出力する工程、
を含むルンゲ−クッタ積分を実行するためのチップであって、
前記平面を出力する工程は、
前記移動時間データのX−Y平面における一連の点に対する各Zに対するX−Y平面を算出する工程、
移動時間データ容量におけるX軸およびZ軸をスワップする工程、
移動時間データ容量のZ−Y平面上の一連の点に対するいずれかのX方向における各Xに対するZ−Y平面を算出する工程、
移動時間データ容量におけるZ軸およびX軸をスワップする工程、
移動時間データ容量のX−Z平面上の一連の点に対するいずれかのY方向における各Yに対するX−Z平面を算出する工程、
単一の点に対する第2の半工程が算出されないならば、移動時間データ容量の前記X−Y平面における一連の点に対する各Zに対するX−Y平面を算出する工程に戻る工程、
を含むことを特徴とするチップ。
【請求項21】
第1の半工程によって進められる積分による移動時間データの平面の出力の入力をさらに含むことを特徴とする請求項19に記載のチップ。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公表番号】特表2012−520512(P2012−520512A)
【公表日】平成24年9月6日(2012.9.6)
【国際特許分類】
【出願番号】特願2011−554136(P2011−554136)
【出願日】平成22年3月10日(2010.3.10)
【国際出願番号】PCT/US2010/026772
【国際公開番号】WO2010/104916
【国際公開日】平成22年9月16日(2010.9.16)
【出願人】(511217658)コンプレックス データ テクノロジーズ (1)
【Fターム(参考)】
【公表日】平成24年9月6日(2012.9.6)
【国際特許分類】
【出願日】平成22年3月10日(2010.3.10)
【国際出願番号】PCT/US2010/026772
【国際公開番号】WO2010/104916
【国際公開日】平成22年9月16日(2010.9.16)
【出願人】(511217658)コンプレックス データ テクノロジーズ (1)
【Fターム(参考)】
[ Back to top ]