[go: up one dir, main page]

JP2006092519A - スプレッドシート連鎖計算の多重スレッド処理のための方法およびシステム - Google Patents

スプレッドシート連鎖計算の多重スレッド処理のための方法およびシステム Download PDF

Info

Publication number
JP2006092519A
JP2006092519A JP2005184988A JP2005184988A JP2006092519A JP 2006092519 A JP2006092519 A JP 2006092519A JP 2005184988 A JP2005184988 A JP 2005184988A JP 2005184988 A JP2005184988 A JP 2005184988A JP 2006092519 A JP2006092519 A JP 2006092519A
Authority
JP
Japan
Prior art keywords
formula
recalculation
auxiliary
expression
engine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005184988A
Other languages
English (en)
Other versions
JP5025919B2 (ja
Inventor
Bruce C Jones
コーデル ジョーンズ ブルース
Chad B Rothschiller
ビー.ロスシラー チャド
David F Gainer
エフ.ゲイナー デビッド
Duane Campbell
チャンプベル デュアン
Jeffrey J Duzak
ジェー.デュザック ジェフリー
Matthew J Androski
ジェー.アンドロスキ マシュー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006092519A publication Critical patent/JP2006092519A/ja
Application granted granted Critical
Publication of JP5025919B2 publication Critical patent/JP5025919B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • G06F40/18Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

【課題】 スプレッドシートプログラムにおいて個別の再計算エンジンをそれぞれ有する複数のプロセッサを使用して連鎖計算を同時に処理する方法を提供する。
【解決手段】 処理は、まず利用可能なプロセッサの数を決定し、次いで各利用可能なプロセッサに再計算エンジンを割り当て、再計算エンジン間に式を分配し、次いでスプレッドシートプログラムにおいて再計算処理が要求されたときに各再計算エンジンに分配された式を同時に評価することを含む。
【選択図】 図1

Description

本発明は、スプレッドシート演算処理に関し、より詳細には、多重プロセッサ環境で実行されるスプレッドシートプログラムにおける連鎖計算に関する。
マイクロソフトエクセルのような従来のスプレッドシートプログラムは、基本的には、現在エクセルによってロードされているすべてのワークシートに入力されたすべての式の順序リストである、単一の計算鎖を利用するスプレッドシート内での式の計算および再計算を扱う。さらに、この計算鎖に関係する各変数の単一のコピーが存在する。式がワークシートに入力されると、その式は、全計算鎖の最初に追加される。式が依存するセルの内容を修正するか、または手動で再計算工程を要求することによって、再計算工程が開始されると、エクセルは、計算鎖を反復し、「ダーティ」(すなわち再計算待ち)と標示されたあらゆる式を再計算する。したがって、単一の制御スレッドが、式の単一鎖を反復する。計算鎖は保存されて、その順序を保存するための情報とともにファイルされる。次いで、スプレッドシートおよび計算鎖の鎖を再ロードすると、式は、式を処理するために、それらの依存性に応じて適切な順序に配置される。これにより、エクセルは、作業を繰り返して、計算鎖を順序付けなくてもよくなる。
以下のシナリオは、従来のスプレッドシートプログラム連鎖計算ルーチンが各式間の依存性をどのように扱うかを例示するものである。図15に示されたワークシート10を考えてみる。スプレッドシート10のための計算鎖12を図16のように表すことができる。この従来のスプレッドシート鎖12において、符号は、常に左側の第1のセルから評価する。上記の場合は、符号は、第1のセルC4を評価することから開始する。式「=A4+B4」を評価しようとするときに、計算符号は、式がセルA4に依存すること、およびセルA4が「ダーティ」である、すなわちまだ計算されていないことを発見する。この状況において、式「=A4+B4」を「従属」式と呼び、セルA4における式を「補助」式と呼ぶ。符号は、式=A4+B4の評価を停止し、セルA4に対する式を計算鎖から引き抜き、セルC4に対する式の直前にそれを再挿入する。次いで、計算符号は、セルA4に対する式から、その作業を再開する。計算符号は、A4を問題なく評価し、C4に移る。式=A4+B4を(二度目に)評価しようとするときに、計算符号は、計算符号は、現在A4が計算されている(「ダーティ」ではない)ことを知るが、式はセルB4にも依存し、B4もダーティであることを発見する。そこで、符号は、再度式の評価を停止し、B4に対する式をC4に対する式の直前まで移動させる。次いで、符号は、B4を問題なく評価し、C4に移る(これで三度目)。ここでC4を評価し、プロセスを完了することができる。再順序付けされた鎖14が図17に示されている。
次いで、スプレッドシートに加えられた何らかの変化により再計算が手動または自動で要求される毎に、スプレッドシートプログラムがこの解析および再順序付けを再度行わなくてもよいように、この再順序鎖14を次に再計算工程に向けて保存する。特に大規模な財務予測シナリオにおける極めて複雑なスプレッドシートの需要により、上述のようにして長い連鎖計算を実行するに、実質的な時間量が必要とされている。ユーザは、彼らの予測のシナリオを変更するときに、長時間にわたって結果を待つことを好まない。したがって、この工程時間を短くしようとする動機が存在する。本発明がなされたのは、これらの問題および他の問題に対してである。
本発明によれば、連鎖計算を扱うのに利用可能なときに多重プロセッサを利用する独自の能力を有するスプレッドシートプログラムは、上記の問題および他の問題を解決する。
本発明の実施形態は、スプレッドシートプログラムにおいて補助式および従属式を処理する方法を含む。それらの処理は、基本的には、まず利用可能なプロセッサの数を決定し、次いで再計算エンジンを各々の利用可能なプロセッサに割り当て、式を再計算エンジン間に分配し、次いで、スプレッドシートプログラムで再計算工程が必要とされるときに、各再計算エンジンに分配された式を同時に評価することを含む。より詳細には、例えば2つのプロセッサを有するオペレーティングコンピューティングシステム上のスプレッドシートプログラムにおいて複数の式を処理する方法は、1)第1の再計算エンジンを2つのプロセッサの一方に割り当て、第2の再計算エンジンを2つのプロセッサの他方に割り当てる処理と、2)各式を第1および第2の再計算エンジンの一方に分配する処理と、3)第1および第2の再計算エンジンの各々において、第1の式/次の式が従属式であるか否かを判断し、第1の式/次の式が従属式でない場合は、第1の式/次の式を評価し、あるいは第1の式/次の式が従属式である場合は、補助式の位置を決定する処理と、4)補助式が同じ再計算エンジンに存在する場合は、補助式を第1の式/次の式の前方に移動させ、補助式を評価する処理とを含む。補助式が同じ再計算エンジンに存在しない場合は、従属式を受け取って処理するために、補助式を含むエンジンと調整を行う。
本発明は、コンピュータプロセス、コンピューティングシステム、またはコンピュータプログラム製品のような製造品として具現化されうる。コンピュータプログラム製品は、コンピュータシステムにより読取り可能で、コンピュータプロセスを実行するための命令のコンピュータプログラムを符号化するコンピュータ記憶媒体であってもよい。コンピュータプログラム製品は、コンピューティングシステムにより読取り可能で、コンピュータプロセスを実行するための命令のコンピュータプログラムを符号化する担体上の伝搬信号であってもよい。
以下に簡単に説明する添付の図面、本発明の現在好ましい実施形態についての以下の詳細な説明、および添付の請求項を参照することによって、本発明およびその改良型をより完璧に理解することが可能である。
次に、本発明の実施形態を示す添付の図面を参照しながら、以下に本発明をより詳しく説明する。しかし、本発明を多くの異なる形態で具現化することができ、本明細書に記載されている実施形態に限定されるものと見なすべきではない。むしろ、これらの実施形態は、開示が十分かつ完全なものとなり、本発明の範囲を当業者に十分に伝えるように提示される。
概して、本発明は、スプレッドシート再計算を処理することに関し、特に、2つ以上のプロセッサまたは処理エンジンが利用可能であるときに、多重同時スレッドで連鎖計算を処理することに関する。次に図1を参照すると、スプレッドシートプログラムに使用される機能的構成要素モジュールが、本発明の一実施形態に従って論理的に示されている。基本的には、システム100は、各々が、その上で動作する再計算エンジン104と、データベース106と、データベース106とデータを送受信するとともに、ロード制御モジュール110と通信するように動作可能な入出力すなわち送受信モジュール108とを有する、オペレーティングシステムにおけるN個の利用可能なプロセッサを含む処理モジュール102を備える。ロード制御モジュール110は、再計算命令が送受信モジュール108から受け取られた場合に再計算しなければならないダーティセルの範囲および領域を決定する境界検知モジュール112と通信する。
図2および図3は、第1に示されるシステム100によって実施される基本的処理を示す図である。まず、本発明によるスプレッドシートアプリケーションが最初にロードされるか、または呼び出されるときに、処理の初期化シーケンス200が実施される。シーケンス200は、プログラムが例えばコンピュータシステム410上に最初にロードされるときにロードアプリケーション処理202において開始する。この処理は、プログラム処理に対する初期情報を設定する。次いで、操作が処理204に移行する。処理204では、コンピュータシステム410における利用可能なプロセッサの数が決定される。これらは、以下に記載するコンピュータシステム410における環境に応じて、個別のプロセッサであってもよいし、単一のチップ上の埋め込まれたコプロセッサであってもよい。次いで、操作が処理206に移行する。
処理206では、利用可能プロセッサおよびそれらのアクセス位置の数が、後の繰り返しおよび使用に向けてデータベース106に記憶される。次いで、操作が処理208に戻って、特定のスプレッドシートのローディングおよび処理に関するユーザ特有の命令を待つ。
システム100上で実行される任意のスプレッドシートにおいて、スプレッドシート内の連鎖計算を処理するための手動または自動計算または再計算要求が行われると、図3に示される処理300が実施される。まず、処理302において、再計算要求が、送受信モジュール108によって受け取られ、データが、要求が必要とする通りにデータベース106から受け取られる。処理302は、表示されているスプレッドシートを再計算するためのユーザによる手動要求によって開始されるか、または呼出ルーチンからの要求により自動的に開始されるか、あるいはユーザが式を含むスプレッドシートのセルの値を変更するとき、またはユーザが他の式をスプレッドシートに追加するときに開始されうる。いずれの場合も、再計算要求は、処理302で確認される。次いで、操作が処理304に移行する。
処理304において、再計算要求の効果の領域および範囲が決定される。これは、ただ1つのセル、あるいは変化したセル内容に依存するか、またはそれを補助するセルのアレイを含むことができる。これらは、「ダーティ」セルと呼ばれる。次いで、操作が処理306に移行し、本発明による再計算の手法を実施する。再計算が完了すると、操作が移行して、処理308を戻し、処理を呼出符号またはユーザインターフェースに戻す。
本発明の実施形態による方法は、基本的には、スプレッドシートアプリケーションの起動時に利用可能なプロセッサの数を決定し、セルおよびそれらの式を利用可能なプロセッサに分配し、次いでダーティセルに対して手動または自動で再計算要求が示される毎に、ダーティ式を同時に評価して、ダーティセルを「クリーン」にする。
本発明の実施形態によれば、本明細書に記載されている方法を単一の独立型コンピュータシステム上で実施してもよいが、典型的には、分散型コンピュータネットワークを形成するように相互接続された多重コンピュータシステム上で実施してもよい。本発明によって想定されるようにスプレッドシート計算を実施するための環境400を図4に示す。環境400は、一時的なコンピュータシステムと見なされるコンピュータシステム410を有する。本明細書に用いられる「コンピュータシステム」は、広義に捉えられるべきで、「テキスト、図形、符号、音声、ビデオおよび/または数字の表示および操作を行うためのプログラムを実行する1つまたは複数の装置または機械」と定義される。
本発明は、他の多くの汎用または特殊用途のコンピューティングシステム環境または構成で動作可能である。本発明との使用に好適でありうる、よく知られているコンピューティングシステム、環境および/または構成としては、パーソナルコンピュータ、サーバコンピュータ、手持型または卓上用装置、タブレット装置、多重プロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な大衆消費電子製品、ネットワークPC、ミニコンピュータ、大型コンピュータ、および上記システムまたは装置の分散型コンピューティング環境等が挙げられるが、それらに限定されない。
コンピュータによって実行されるプログラムモジュールのようなコンピュータ実行可能命令の広い脈絡のなかで本発明を説明することができる。一般に、プログラムモジュールは、特定の作業を実施し、または特定の抽象データ型を具現化するルーチン、プログラム、オブジェクト、構成要素およびデータ構造等を含むことができる。作業が、通信ネットワークを通じて連結される遠隔処理装置によって実施される分散型コンピューティング環境においても本発明を実践することができる。分散型コンピューティング環境では、メモリ記憶装置を含むローカルまたは遠隔コンピュータ記憶媒体にプログラムモジュールを配置することができる。
図4を参照すると、本発明を具現化するための例示的なシステムは、コンピュータ410の形態の汎用コンピューティング装置を含む。コンピュータ410の構成要素としては、処理装置420、システムメモリ430、システムメモリを含む様々なシステム構成要素を処理装置420に結合するシステムバス421を挙げることができるが、それらに限定されない。システムバス421は、メモリバスまたはメモリコントローラ、周辺バス、および様々な構成のいずれかを使用するローカルバスを含むいくつかの種類のバス構造のいずれかであってもよい。限定ではなく、例として、そのような構成としては、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、AGP(Accelerated Graphics Port)バス、およびメザニンバスとしても知られているPCI(Peripheral Component Interconnect)バスが挙げられる。
コンピュータ410は、典型的には、様々なコンピュータ読取り可能媒体を含む。コンピュータ読取り可能媒体は、コンピュータ410によってアクセスできる任意の利用可能な媒体とすることができ、揮発性および不揮発性媒体、取外し可能および取外し不可能媒体を含む。限定ではなく、例として、コンピュータ読取り可能媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュールまたは他のデータのような情報を記憶するための任意の方法または技術で実装される揮発性および不揮発性媒体を含む。コンピュータ記憶媒体としては、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他のディスク記憶機構、磁気カセット、磁気テープ、磁気ディスク記憶機構または他の磁気記憶装置、あるいは所望の情報を記憶するのに使用でき、コンピュータ410によってアクセスできる任意の他の媒体が挙げられるが、それらに限定されない。通信媒体は、典型的には、コンピュータ読取り可能命令、データ構造、プログラムモジュール、または搬送波または他の輸送機構のような変調データ信号における他のデータを具体化し、任意の情報配信媒体を含む。「変調データ信号」という用語は、その特性の1つ以上を、信号内の情報を符号化するように設定または変更する信号を意味する。限定ではなく、例として、通信媒体としては、有線ネットワークまたは直接有線接続のような有線媒体、ならびに音響、RF、赤外および他の無線媒体のような無線媒体が挙げられる。上記のいずれかの組合せもコンピュータ読取り可能媒体内に含まれるべきである。
システムメモリ430は、読取り専用メモリ(ROM)431およびランダムアクセスメモリ(RAM)432のような揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。典型的には、起動時のようにコンピュータ410内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム433(BIOS)が、ROM431に記憶される。RAM432は、典型的には、処理装置420によりすぐにアクセス可能で、かつ/または現在処理されているデータおよび/またはプログラムモジュールを含む。限定ではなく、例として、図4は、オペレーティングシステム434、アプリケーションプログラム435、他のプログラムモジュール436およびプログラムデータ437を示す図である。
コンピュータ410は、他の取外し可能/取外し不可能、揮発性/不揮発性記憶媒体を含むこともできる。例示のみを目的として、図4は、取外し不可能な不揮発性磁気媒体に対して読取りまたは書込みを行うハードディスクドライブ441、取外し可能な不揮発性磁気ディスク452に対して読取り書込みを行う磁気ディスクドライブ451、CD ROMまたは他の光媒体のような取外し可能な不揮発性光ディスク456に対して読取りまたは書込みを行う光ディスクドライブ455を示す図である。例示的な動作環境で使用できる他の取外し可能/取外し不可能な揮発性/不揮発性コンピュータ記憶媒体としては、磁気テープカセット、フラッシュメモリカード、デジタルビデオディスク、デジタルビデオテープ、固体RAMおよび固体ROM等が挙げられるが、それらに限定されない。ハードディスクドライブ441は、典型的には、インターフェース440のような取外し不可能メモリインターフェースを通じてシステムバス421に接続され、磁気ディスクドライブ451および光ディスクドライブ455は、典型的には、インターフェース450のような取外し可能メモリインターフェースによってシステムバス421に接続される。
上述し、図4に例示したドライブおよびそれぞれの関連コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、およびコンピュータ410のための他のデータを記憶する。例えば、図4では、オペレーティングシステム444、アプリケーションプログラム445、他のプログラムモジュール446およびプログラムデータ447の記憶としてハードディスクドライブ441が示されている。これらの構成要素は、オペレーティングシステム434、アプリケーションプログラム435、他のプログラムモジュール436、およびプログラムデータ437と同じ、または異なるものとすることができることに留意されたい。ここでは、オペレーティングシステム444、アプリケーションプログラム445、他のプログラムモジュール446、およびプログラムデータ447に異なる番号を割り当てて、最低限、それらが異なるコピーであることを示している。ユーザは、タブレット(電子デジタイザ)464、マイクロフォン463、キーボード462、および一般にはマウスと称するポインティングデバイス461、トラックボールまたはタッチパッドを通じて指令および情報をコンピュータ410に入力することができる。他の入力装置(不図示)は、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ等を含むことができる。これらおよび他の入力装置は、システムバスに結合されるユーザ入力インターフェース460を通じて処理装置420にしばしば接続されるが、他のインターフェース、および並列ポート、ゲームポートまたはユニバーサルシリアルバス(USB)のようなバス構造によって接続されてもよい。モニタ491または他の種類の表示装置も、ビデオインターフェース490のようなインターフェースを介してシステムバス421に接続される。モニタ491は、タッチスクリーンインターフェース492のようなインターフェースを介してコンピュータシステム410に手書きのようなデジタル化入力を入力することができるタッチスクリーンパネル493等と一体化されてもよい。モニタおよび/またはタッチスクリーンパネルを、タブレット型パーソナルコンピュータのようにコンピューティング装置410が組み込まれる筐体に物理的に結合することができ、タッチスクリーンパネル493は、基本的にタブレット464として機能することに留意されたい。加えて、コンピューティング装置410のようなコンピュータは、出力周辺インターフェース494等を通じて接続されうるスピーカ495およびプリンタ496のような他の周辺出力装置を含むこともできる。
コンピュータ410は、リモートコンピュータ480のような1つまたは複数のリモートコンピュータへの論理接続を用いたネットワーク化環境で動作することができる。リモートコンピュータ480は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、同位装置または他の共通ネットワークノードであってもよく、典型的には、コンピュータ410に対して上述した要素の多くまたは全てを含むが、図4にはメモリ記憶装置481のみが示されている。図4に示された論理接続は、ローカルエリアネットワーク(LAN)471および高域エリアネットワーク(WAN)473を含むが、他のネットワークを含むこともできる。そのようなネットワーキング環境は、オフィス、企業内コンピュータネットワーク、イントラネットおよびインターネットに多く見られる。
LANネットワーキング環境に使用されるときは、コンピュータ410は、ネットワークインターフェースまたはアダプタ470を通じてLAN471に接続される。WANネットワーキング環境で使用されるときは、コンピュータ410は、典型的には、モデム472、またはインターネットのようなWAN473上に通信を確立する他の手段を含む。内部または外部に存在しうるモデム472を、ユーザ入力インターフェース460または他の適切な機構を介してシステムバス421に接続することができる。ネットワーク化環境において、コンピュータ410に対して示されるプログラムモジュール、またはその部分を遠隔メモリ記憶装置に記憶することができる。限定ではなく、例として、図4は、メモリ装置481に存在する遠隔アプリケーションプログラム485を示す図である。示されているネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を使用できることが理解されるであろう。
コンピューティング環境を想定し、本発明の様々な実施形態を具体化するプロセスを実施するように実行される論理処理に関して本発明の実施形態を説明する。これらの論理処理は、(1)コンピューティングシステム上で実行されるコンピュータ実施工程またはプログラムモジュールのシーケンスとして、かつ/または(2)コンピューティングシステム内の相互接続機械論理回路または回路モジュールとして実施される。その実施は、本発明を具現化するコンピューティングシステムの性能要件に応じて選択されるものである。よって、本明細書に記載されている本発明の実施形態を構成する論理処理は、処理、構造装置、作用またはモジュールと様々に呼ばれる。これらの処理、構造装置、作用およびモジュールは、本明細書に添付されている請求項に記載されている本発明の主旨および範囲から逸脱することなく、ソフトウェア、ファームウェア、特殊用途デジタル論理、およびそれらの任意の組合せで具現化されうることを当業者なら認識するであろう。
図5は、再計算要求を受け取ったときに行われる基本的な処理500のプロセスフロー図である。再計算は、処理502で開始する。操作が処理504に移行して、再計算要求が関係するセルに含まれるダーティ式が存在するか否かを問い合わせる。そのような式が存在しない場合は、操作が終了処理506に移行して、再計算要求が終了する。式を含むセルが存在する場合は、操作が処理508に移行して、鎖のなかの第1の式を選択する。次いで、操作が処理509に移行する。
問い合わせ処理509は、第1の式/次の式がダーティ式、すなわち再計算を必要とする処理であるか否かを尋ねる。そうでない場合は、操作が処理508に戻って、次の式を選択する。処理509における式がダーティである場合は、操作が、問い合わせ処理509から、式が従属式であるか否かを判断する問い合わせ処理510に移行する。
問い合わせ処理510は、第1の式/次の式が従属式、すなわち変数がそのセルに存在しない1つまたは複数の変数に従属する式であるか否かを尋ねる。そうでない場合は、操作が処理512に移行する。処理510における式が他の式、すなわち補助式である場合は、操作は、処理510から、補助式を取り込み、従属式の前方に配置する処理514に移行する。次いで、操作が問い合わせ処理516に移る。
問い合わせ処理516は、補助式を直ちに評価しようとする。この評価の一部として、処理516は、この補助式がそれ自体従属式であるか否かを尋ねる。そうでない場合は、操作が処理512に移行し、補助式を評価し、次いで従属式を評価する。次いで、操作は処理504に戻り、鎖において再計算すべき他の式が存在するか否かを尋ねる。
問い合わせ処理516において、答えが肯定的である場合は、第1の補助式がそれ自体従属式であり、操作は、次の式、すなわち第2の補助式を決定し、第1の補助式の前方に配置する処理514に戻る。次いで、操作が、問い合わせ処理516に再び移行する。ここでも、質問処理516は、新たな(第2の)補助式がそれ自体従属式であるか否かを尋ねる。そうである場合は、操作が再び処理514に戻り、次の補助式を検索し、前の補助式の前方に配置する。このプロセスは、従属式である補助式が検出されなくなるまで繰り返される。次いで、操作が問い合わせ処理516から処理512に移行し、第2の補助式を評価し、第1の補助式を評価し、処理512において最後に従属式を評価する。次いで、操作が処理504に戻り、式がなくなるまで上記のプロセスを繰り返す。次いで、処理506において再計算プロセスが終了する。
スプレッドシートプログラムによって使用される利用可能な各再計算エンジン104は、上述したのと同様にして処理される計算鎖の部分を受け取って処理する。処理302において再計算要求が受け取られ、処理304において従属および/または補助式を有する変更セルの範囲および領域が決定されると、データベース106は、送受信モジュール108を介してロード制御モジュール110にセル情報を提供する。境界検知モジュール112からの入力を備え、処理のために利用可能な再計算エンジン104に変更セルを分配するのはロード制御モジュールの作業である。例えば、2つのプロセッサが利用可能である場合は、プロセッサ毎に1つずつの2つの再計算エンジン104が利用可能になる。ロード制御モジュール110は、鎖における式を、利用可能なプロセッサ102の間に好ましくは公平に分配する。どのエンジンを割り当てるかを選択する1つの方法は、各セルおよびその式を割り当てる再計算エンジン104を無作為に選択することである。これは、ロード制御モジュール無作為番号生成器によって、そのセルに割り当てられたエンジンに対応する各セルにフラグを添付することによって行うことができる。理論では、そのような無作為配置は、長期間のうちに各再計算エンジンへのロードを均等化することになる。あるいは、単純に数字的に再割当を分配し、すなわち第1の式を第1のエンジンに、第2の式を第2のエンジンに、第3の式を第3のエンジンにという具合に分配し、次いでプロセッサの数が底をついたときに繰り返すことができる。
本発明の場合のような多重プロセッサ環境において、再計算エンジン処理は、変数の再計算を処理する個別の並列スレッドを構成する。再計算エンジン内のセルのローディングは好ましくは無作為であるため、各スレッドへのロードは、無作為配置の結果として、一般には均衡化する。ロード制御モジュールは、また、いくつかの再計算エンジンのローディングを監視し、各エンジン間にセルを再度割り当てることができる。あるいは、ロード制御モジュールをユーザの要望に応じて、または特定の鎖の演算要件を均衡化するために自動的に1つのエンジンまたは他のエンジンに偏らせることが可能である。
並列プロセッサ処理による式および式内のデータの操作は、結果を無効にする意図せぬ結果を招く可能性がある。例えば、2つの異なるスレッドが、個々のセルへのアクセスを競い、または共通セルに記憶されたデータを変化させるおそれがある。この理由により、本発明の実施形態では、そのような意図せぬ結果を防ぐために、様々な再計算エンジンによって行われるあらゆるデータ操作に適応する一連の規則が設けられている。
以下のソフトウェア規則は、利用可能な再計算エンジンの各々によって行われる評価方法に適応する。本明細書において以下にさらに説明する例では、2つの再計算エンジンが利用されるが、それらの規則の処理を例示するための例として示されるにすぎない。
これらの一般的規則を以下に列記する。
1.オーナ再計算エンジンしか、その再計算鎖における項目(式およびそれらの配置)を修正することができない。
2.オーナ再計算エンジンおよび他の再計算エンジンは、再計算エンジン余剰鎖上の項目を修正することができる。
3.ロッキングは、いずれかの余剰鎖上の項目の同時修正を防ぐ。例えば、再計算エンジン1が、式を再計算エンジン2に移動させたい場合は、まず再計算エンジン2の余剰鎖に対するロックを要求しなければならない。
4.一度ロックを有すると、セルの「余剰」値をTRUEに設定し、再計算エンジン1からのセルのエンジン値を再計算エンジン2に設定し、式を他のエンジン、すなわち再計算エンジン2に移動し、ロックを解除する。
5.その間、再計算エンジン2は、それ自身の再計算エンジン余剰鎖からセル式を引き抜こうとしてもよい。しかし、その再計算エンジン余剰鎖がロックされている場合は、そのような移動の前にロック解除されるまで待たなければならない。
図6は、本発明の例示的な実施形態における各再計算エンジンによって行われる処理の詳細流れ図600である。個々の処理のシーケンスが変更されうることを理解すべきである。以下の説明は、一実施形態の説明にすぎない。当業者に容易に理解されるようなそのようなすべての説明が本明細書に組み込まれている。
処理602において処理が開始する。ここで、各再計算エンジン104が開始され、式の受取りが開始する。ロード制御モジュール110が、再計算処理のための式がすべて分配されたことを再計算エンジンに知らせると、操作が処理604に移行する。
処理604では、再計算エンジン104における第1の式が標示されて、評価される。操作は、式が従属式であるか否かを尋ねる問い合わせ処理605に移行する。単に一定の、または既に求められた変数が式のなかに存在するか、または参照される場合は、操作が処理626に移行し、式が単純に評価され、次いで再計算エンジンにおける鎖のなかのすべての式が評価されるまでシーケンスにおける次の式が同様にして評価される。しかし、遭遇した式のいずれか1つが従属式である場合、すなわち補助式と呼ばれる他のダーティ式を参照する場合は、評価が停止し、操作が問い合わせ処理606に移行する。
問い合わせ処理606は、補助式が同じ再計算エンジン上に位置するか、他の再計算エンジン上に位置するかを尋ねる。調査対象の従属式における補助式が同じ再計算エンジン上にあることが確認された場合は、操作が問い合わせ処理608に移行する。調査対象の従属式における補助式が同じ再計算エンジン上にない場合は、操作が処理610に移行する。
処理610では、補助式が存在する再計算エンジンにロック要求が送られ、ロックが確立されると、操作が問い合わせ処理612に移行する。問い合わせ処理612は、補助式を含む再計算エンジンが現在その計算を処理しているか、完了したかを判断する。補助再計算エンジンがアイドル状態で、ロック要求を受け取る前にその計算を完了し、ロックを処理610に発した場合は、ロックが解除され、操作が処理604に戻って、従属式の評価を再度試みる。一方、補助再計算エンジンが計算でビジー状態にあるときは、問い合わせ処理612に対する答えは否定的であり、操作が処理616に移行する。
処理616では、従属式が再計算エンジンから移動され、補助再計算エンジンの通常の計算鎖に付加された余剰鎖に配置される。次いで、操作が処理618に移行し、補助再計算エンジンにおけるロックを解除する。次いで、操作が問い合わせ処理620に移行する。
問い合わせ処理620では、最初の再計算エンジンが、その通常の計算セルに、評価を必要とするさらなる式を有するか否かについての質問が行われる。答えが肯定的である場合は、操作が処理604に移行し、通常の計算鎖における次の式を調査し、評価する。一方、最初の再計算エンジンの通常の鎖に評価すべき式が存在しない場合は、図7に示される最初の再計算エンジンの余剰鎖の評価を行うために、操作がルーチン700に移行する。したがって、操作が処理702に移行して、再計算エンジン独自の余剰鎖のためにロックを要求し、取得することになる。これにより、ロックが活動状態である間は、再計算エンジン独自の余剰鎖における値または式が修正されることはない。ロックが取得されると、操作が問い合わせ処理704に移行する。
問い合わせ処理704では、余剰鎖上に何らかの式が存在するか否かを問い合わせる。余剰鎖上に式が存在する場合は、操作が処理706に移行する。処理706は、再計算エンジンの余剰鎖からすべての式を除去し、エンジンの通常鎖の上のシーケンスに配置する。次いで、操作が処理708に移行し、セルフロックを解除する。次いで、操作が処理710に移る。
処理710では、現在通常鎖の上にある式に対して、604から再計算が再開される。式の評価は、余剰鎖から採取された第1の式から始まり、上述のようにすべての式が評価されるまで、通常鎖の上のすべての式にわたって順次進められる。
問い合わせ処理704における答えが否定的である場合は、エンジンの余剰鎖上の式が存在せず、次いで操作が処理714に移行する。ここで、再計算エンジンは、それ自体に計算済の標識を貼り、操作を処理716に移行させて、再計算エンジンのセルフロックを解除する。次いで、操作は、この再計算エンジンについて計算および評価が完了している状態を提示する処理712に移行する。すべての再計算エンジンが、計算および評価が完了していることを提示すると、全体としての再計算が完了する。
問い合わせ処理606に戻って、再計算エンジンにおける第1の式が補助式を有し、補助式が実際に同じ再計算エンジンに存在すると判断される場合は、制御が問い合わせ処理608に移行する。問い合わせ処理608において、この補助式が、再計算エンジンにおける通常の、すなわち通常の鎖の上に存在するか否かという質問を行い、そこに存在しない場合は、再計算エンジンの余剰鎖上に存在することになる。補助式が、再計算エンジンの通常の鎖の上にある場合は、操作が処理622に移る。ここで、補助式は、鎖におけるその位置から従属式の直前まで単純に移動され、直ちに評価される。次いで、操作が問い合わせ処理624に移る。
問い合わせ処理624では、まずこの補助式を調査して、それ自体が従属式であるか否かを判断する。従属式である場合は、操作が問い合わせ処理606に戻って、この補助式に対して補助式を調査する。先述のように、処理606から処理の流れが続く。
一方、問い合わせ処理624における答えが否定的である場合は、補助式は従属式ではなく、操作が処理626に移行して、式をそのまま評価する。処理626における評価に続いて、操作は、再計算エンジンの通常鎖上にさらなる式が存在するか否かを尋ねる問い合わせ処理620に再び移る。通常鎖上に残留する式が存在しない場合は、上述のように操作が処理ルーチン700に移る。再計算エンジンの通常鎖上にさらなる式が存在する場合は、操作が処理604に戻って、通常鎖における次の式を評価する。
問い合わせ処理608における答えが否定的である場合は、補助式は再計算エンジンの通常鎖上に存在せず、エンジンの余剰鎖の上に存在するはずである。したがって、操作は処理628に移り、セルフロック要求を発行する。セルフロックが確立されると、操作は処理630に移る。処理630において、補助式が、余剰鎖から除去される。次いで、操作が処理632に移行する。処理632では、除去された補助式が、再計算エンジンの通常鎖の呼出従属式の直前に配置される。次いで、操作が処理634に移行する。処理634では、セルフロックが解除され、操作が上述の問い合わせ処理624に移行する。
このプロセスが、図8に示される単純な3×3スプレッドシート800上で、どのようにして実行されるかについてのいくつかの例を図9から図14に示す。
図9および図10は、図8に示される例示的なスプレッドシート800の式を上述の本発明の方法に従って処理する第1の例を示す図である。図11および図12は、図8に示される式の異なるローディングによる同じ方法の第2の例を示す図である。図13および図14は、図8に示される同じ式の他の異なるローディングの第3の例を示す図である。
図9は、任意の式の評価の前の時点での図8のスプレッドシートにおける式の無作為分散ローディングの結果として、2つのプロセッサによりシステム900上で動作するスプレッドプログラムにおける、2つのエンジン、すなわちそれぞれエンジン902および904として示される再計算エンジン1および2への式の例示的なローディングを示す図である。各エンジン902および904は、この時点では、式の通常鎖および空の余剰鎖を有する。再計算エンジン1は、セルA1、B1およびB2の式を保持する。セルA2、A3およびC2における定数は再計算エンジン1にロードされず、処理時に再計算エンジン1および2から評価用に利用可能である。再計算エンジン2は、この時点では、セルB3、C1およびC3の式を保持する。
示されるように、各エンジンにおける各項目またはセル式は、左側から評価され、図9および図10における右側に進む。さらに、評価は、各エンジン内で、独立的に、同時に、順次行われる。
まず、再計算エンジン1は、項目A1、すなわち式=4*B3を評価しようとする。しかし、セルB3における式は、再計算エンジン1に存在せず、まだ評価されていない。B3は再計算エンジン2に存在するため、再計算エンジン1は、エンジン2の余剰鎖上のロックを取得し、項目A1は、再計算エンジン2の余剰鎖に移動される。これは、この移動を示す矢印906によって図10に示されている。次いで、ロックが解除される。次いで、エンジン1における操作が移行して、次の項目、すなわちセルB1を評価する。セルB1は、式「=A1*C3」を含む。項目A1は、評価されておらず、再計算エンジン2に残留している。よって、再計算エンジン2の余剰鎖に対してロック要求が再び発行され、それが受け取られてロックが確立されると、項目B1が、再計算エンジン2の余剰鎖に移動され、項目A1の後に配置される。これは、図10の矢印908によって示されている。
次いで、エンジン1における操作が移行して、次の項目、すなわちセルB2を評価する。セルB2は、式「=3*B1」を含む。項目B1は、評価されておらず、再計算エンジン2に残留している。よって、再計算エンジン2の余剰鎖に対してロック要求が再び発行され、それが受け取られてロックが確立されると、項目B1が、再計算エンジン2の余剰鎖に移動され、項目B1の後に配置される。これは、図10の矢印910によって示されている。
再計算エンジン1における上述の処理の第1の処理と同時に、再計算エンジン2は、項目B3、すなわち式「=A3*4」の評価を開始する。項目B3は、定数2であるため、従属式ではないA3を含む。よって、計算が直ちに完了され、エンジン2は、C1における式の評価に進む。セルC1は、式「=A1+B1+C2」を含む。この式は従属式である。したがって、エンジン2は、A1の補助式が位置する場所を判断する。それは、エンジン2の余剰鎖上に存在する。したがって、セルフロック要求が発行され、それが確立されると、式は、余剰鎖から、矢印912によって示されるセルC1における式の直前のプロセス位置まで移動される。セルA1の式がエンジン2の余剰鎖上に存在しないため、その中間位置は、長方形の点線によって示される。次いで、エンジン2は式=4*B3を評価し、次いで式=A1+B1+C2に戻る。エンジン2は、セルB1における式で停止する。この式は、再計算エンジン2の余剰鎖上に見られる補助式である。したがって、セルフロック要求が再び発行され、それが確立されると、式=A1*C3は、矢印914に示されるように、セルC1における式の前の通常鎖に移動する。エンジン2は、B1における式を評価し、A1は計算されたが、C3は、計算を必要とする補助式であることを確認する。したがって、セルフロック要求が発行され、それが確立されると、C3における式は、B1の直前の通常鎖に移動される。ここで、エンジン2は、C3における式を評価する。したがって、C3における式が直ちに計算される。次に、ここでA1およびC3が計算されるため、エンジン2はB1における式を直ちに計算する。ここで、式=A1+B1+C2のすべての要素が把握され、セルC1における式が評価される。これによって、再計算エンジン2における通常鎖の処理が完了する。
次いで、エンジン2は移動して、その余剰鎖を調べる。余剰鎖は、1つの式、すなわちセルB2における=3*B1を含む。再計算2の鎖にセルフロックが確立され、この式が、余剰鎖から、再計算エンジン2における通常鎖に移動される。通常鎖への移動を示す矢印は、複雑な図を複雑にするだけであるため、示されていない。セルB1における式がここで計算され、把握されるため、セルB1における式を直ちに評価し、計算を完了する。エンジン2は、その通常および余剰鎖に計算を有しないことを確認し、自らを完了の状態に設定する。
エンジン1は、その通常および余剰鎖に計算を有しないことを確認し、自らを完了の状態に設定する。これにより、エンジン1および2における処理が完了する。
図11および図12は、任意の式の評価の前の時点での図8のスプレッドシートにおける式の異なる無作為分散ローディングの結果として、システム1100のプロセッサ1102および1104での処理における、再計算エンジン1および2への式の異なる例示的なローディングが生じる第2の例を示す図である。再計算エンジン1は、セルA1、C1およびC3の式を保持する。セルA2、A3およびC2における定数は、ここでも再計算エンジン1にロードされず、処理時に再計算エンジン1および2から評価のために利用可能である。再計算エンジン2は、セルB1、B3およびB2の式を同時に保持する。
示されるように、各エンジンにおける各項目またはセル式が左側から評価され、図11および図12において右側に進行する。さらに、評価は、各エンジン内で同時に、かつ順次行われる。
まず、再計算エンジン1は、項目A1、すなわち式=「4*B3」を評価しようとする。しかし、セルB3における式は、再計算エンジン1に存在せず、まだ評価されていない。セルB3の式は再計算エンジン2に存在するため、再計算エンジン1は、エンジン2の余剰鎖上のロックを取得し、項目A1は、矢印1202によって示されるように、再計算エンジン2の余剰鎖に移動される。ロックが解除される。次いで、エンジン1における操作が移行して、次の項目、すなわちセルC1の式を評価する。セルC1は、式=A1+B1+C2を含む。項目A1は評価されておらず、ここで再計算エンジン2に残留している。よって、再計算エンジン2の余剰鎖に対してロック要求が再び発行され、それが受け取られると、矢印1204で示されるように、項目C1が再計算エンジン2の余剰鎖に移動され、項目A1の後に配置される。
再計算エンジン1における上記処理の第1の処理と同時に、再計算エンジン2は、項目B1、すなわち式=A1*C3を評価しようとする。しかし、項目B1はA1を含む。次いで、ソフトウェアは、A1が再計算エンジン2に存在するか、再計算エンジン1に存在するかを判断する。それらのエンジンは並行して動作するため、A1はこの時点では再計算エンジン1に存在する可能性が高い。したがって、項目B1は、矢印1206によって示されるように、再計算エンジン1の余剰鎖上のロックを最初に取得した後で、再計算エンジン1における余剰鎖に移動される。移動すると、ロックが解除される。次いで、再計算エンジン2における操作が移行して、セルB3の式を評価する。セルB3は、式=A3*4を有する。セルA3は定数2を含むため、セルB3の式は従属式ではなく、直ちに「8」と評価され、次いで操作が移行して、セルB2の式を評価する。これと同時に、セルC1の式が再計算エンジン1から再計算エンジン2の余剰鎖に移されている可能性が高い。セルB2の式は「=3*B1」である。セルB1の式は、再計算エンジン1の余剰鎖に移された。その結果として、ここでセルB2は、矢印1208によって示されるように、再計算エンジン1における余剰鎖に移される。
次いで、再計算エンジン2は、自らをロックし、現在余剰鎖上にあるすべての式を、処理に向けてその通常鎖に移動させる(簡潔にするために、図12に示していない)。ここで、計算すべき次の式はA1(=4*B3)に存在する。B3は、既に「8」と評価されたため、「クリーン」にされている。したがって、項目A1は、直ちに評価され、「32」になる。
再計算エンジン2がB3を計算するのと同時に、再計算エンジン1はセルC3の式を評価している。この従属式は、=B3*A3である。B3は補助式である。B3の評価を既に完了できるため、式をすぐに評価できる可能性がある。しかし、そうでない場合は、セルC3の式は、点線の矢印1210で示されるように、再計算エンジン2の余剰鎖に移されることになる。そのような移送は、2つのエンジンの間で必要とされる処理時間に全面的に依存することを読者は理解すべきである。
再計算エンジン2について継続すると、項目B3が計算され、項目A1が計算されたため、次の式C1の評価が試みられる。セルC1の式は従属式で、補助式B1、定数C2および評価項目A1に依存する。ここで、項目B1は再計算エンジン1の余剰鎖に存在する。再計算エンジン1において、余剰鎖に存在するセルB1およびB2の2つの式は、ここで通常鎖に移動され、計算が開始されている可能性が高い(簡潔にするために、図示していない)。セルB1の式が計算された場合は、セルC1の式が直ちに計算される。そうでない場合は、エンジン1の余剰鎖に対してロックが要求され、セルC1の式は、再計算エンジン1の余剰鎖に戻って、処理を待つことになる。この処理は、簡潔にするため、矢印で示されていない。次いで、再び、エンジン2における操作が進行して、セルC3の式を評価する。B3はこの時点で計算されており、A3は定数であるため、セルC3の式が直ちに計算される。エンジン2は、その通常鎖および余剰鎖に計算を有さないことを確認し、自らを完了の状態に設定する。これにより、再計算エンジン2における処理が完了する。
最後に、再び再計算エンジン1では、セルフロックが要求され、余剰鎖の式が通常鎖に移動され、ロックが解除され、式が評価される。セルA1の式が求められ、C3の式が求められたため、セルB1の式、=A1*C3が直ちに計算される。操作がセルB2の式に移る。セルB1の値が既に求められているため、セルB2の式の値が直ちに計算される。エンジン1は、その通常鎖および余剰鎖に計算を有さないことを確認し、自らを完了の状態に設定する。これにより、再計算鎖1における処理が完了する。これにより、本例における処理が完了する。
図13および図14は、上述の本発明の方法に従って、図8に示される例示的なスプレッドシートの式を処理する第3の例を示す図である。図13は、任意の式の評価の前の時点での図8のスプレッドシートにおける式の無作為分散ローディングの結果としての再計算エンジン1および2への式の例示的なローディング1300を示す図である。プロセッサ1302上の再計算エンジン1は、セルA1、C1、B2およびC3の式を保持する。セルA2、A3およびC2の定数は再計算エンジン1にロードされず、処理時に再計算エンジン1および2から評価のために利用可能である。再計算エンジン2は、この時点でプロセッサ1304上のセルB1およびB3の式を保持する。
示されるように、各エンジンにおける各項目またはセル式が左側から評価され、図13および図14において右側に進行する。さらに、評価は、各エンジン内で同時に、かつ順次行われる。
まず、再計算エンジン1は、項目A1、すなわち式=4*B3を評価しようとする。しかし、セルB3は再計算エンジン1に存在せず、まだ評価されていない。セルB3の式は再計算エンジン2に存在するため、再計算エンジン1は、エンジン2の余剰鎖上のロックを取得し、項目A1は、矢印1402で示されるように、再計算エンジン2の余剰鎖に移動される。ロックが解除される。次いで、操作が移行して、次の項目、すなわちセルC1を評価する。セルC1は、式=A1+B1+C2を含む。項目A1は評価されておらず、ここで再計算エンジン2に存在する。よって、再計算エンジン2の余剰鎖に対してロック要求が再び発行され、それが受け取られると、矢印1404で示されるように、項目C1が再計算エンジン2の余剰鎖に移動され、項目A1の後に配置される。
再計算エンジン1における上記の処理の第1の処理と同時に、再計算エンジン2は、項目B1、すなわち式=A1*C3を評価しようとする。しかし、項目B1はA1を含む。次いで、ソフトウェアは、A1が再計算エンジン2に存在するか、再計算エンジン1に存在するかを判断する。それらのエンジンは並行して動作するため、A1は、この時点ではまだ再計算エンジン1に存在するものと想定されうる。したがって、項目B1は、矢印1406で示されるように、再計算エンジン1の余剰鎖上のロックを取得した後で再計算エンジン1における余剰鎖に移動される。移動すると、ロックが解除される。次いで、再計算エンジン2における操作が移行して、項目B3を評価する。項目B3は、式=A3*4を有する。セルA3は定数2を含むため、セルB3の式が直ちに評価され、再計算エンジン2における通常鎖でのさらなる活動は行われない。これと同時に、項目C1は、再計算エンジン1から再計算エンジン2の余剰鎖に移されている可能性が高い。
再計算エンジン2は、その通常鎖におけるすべての処理を完了した。よって、次いで余剰鎖式を通常鎖に引き込み、評価を開始する(簡潔にするため、図14に示さない)。次いで、再計算エンジン2は、第1の式、セルA1の評価を開始する。セルA1の式は、=4*B3である。B3は、評価され、ここでは「8」であるため、「クリーン」になる。したがって、項目A1が直ちに評価され、クリーンの「32」になる。
再計算エンジン2がB3を計算するのと同時に、再計算エンジン1は、セルB2の式を評価している。この従属式は、=3*B1である。B1は補助式である。次いで、プログラムは、セルB1の式がその余剰鎖におけるそれ自体の再計算エンジン1上に存在すると判断し、セルフロックを確立し、セルB1の式を、矢印1408で示されるようにセルB2の直前の位置に移動し、セルB1の式を評価しようとする。セルB1の式は、=A1*C3である。この時点で、項目A1は再計算エンジン2の余剰鎖上に存在し、A1は計算されていないと想定する。したがって、再計算エンジン1は、再計算エンジン2の余剰鎖上のロックを取得し、セルB1の式を矢印1410で示されるように再計算エンジン2の余剰鎖に移し、ロックを解除する。再計算エンジン1では、再びセルB2の式の評価が試みられるが、セルB2の式は従属式であり、B1は、再計算エンジン2に移された補助式である。したがって、再計算エンジン1は、ロックを取得し、矢印1412で示されるように、セルB2の式を再計算エンジン2の余剰鎖に移す。
その間、再計算エンジン2では、セルB3の式が計算され、セルA1の式が計算されたため、セルC1の次の式が評価される。セルC1の式は従属式で、セルB1の補助式、セルC2の定数、およびセルA1の評価式に依存する。ここでセルB1の式は再計算エンジン2に存在するため、矢印1414で示されるようにセルC1の式の前方に移動され、直ちに評価される。セルB1の式は従属式で、A1およびC3に依存する。このとき、セルA1の式は評価されたが、セルC3の式はまだ評価されていないかも知れず、この場合は再計算エンジン1に配置される。しかし、このときまでにC3が評価されていない場合は、その値(16)を用いて、セルB1の式が評価され、次いでセルC1の式が評価される。一方、C3がまだ評価されていない場合は、再計算エンジン1の余剰鎖に対するロックを要求し、ロックされると、項目B1が再び再計算エンジン1の余剰鎖に移動される(点線の矢印1416)。
最後に、再計算エンジン2では、セルB2の式の評価が試みられる。B2の式は従属式で、B1に依存する。このときまでに、セルB1の式が評価されている可能性が高いため、B2が評価され、再計算が完了する。再計算エンジン1では、処理は、セルC3の式の評価とともに、あるいはセルB1の式が再び再計算エンジン1の余剰鎖に移動された場合はセルB1の式の評価とともに既に完了している。これにより、第3の例における処理が完了する。
構造的特徴、手法的作用、およびそのような作用を含むコンピュータ読取り可能媒体に特有の言葉で本発明を説明したが、添付の請求項に定められている本発明は、記載されている具体的な構造、作用または媒体に必ずしも限定されない。例として、式の評価の処理は、実施例に示されるように左から右に行われなくてもよい。エンジン間で式を物理的に移動させる必要はない。含まれるセルにフラグを割り当て、フラグ、そして処理すべき式、または既に処理または「クリーン」にされた式を示すポインタを単に変更することによっても同じ効果を達成することができる。したがって、具体的な構造、作用または媒体は、主張する発明を具現化する好ましい形態として開示されている。
本発明の一実施形態による例示的なモジュラソフトウェアシステムを示す図である。 本発明の一実施形態によるソフトウェアが起動時に完了する初期の処理を示す図である。 スプレッドシートのセル値が修正されたときに本発明の一実施形態におけるソフトウェアで実施される包括的な処理全体の構成図である。 本発明の特定の態様に従って使用できるコンピュータシステムを示す図である。 本発明の特定の実施形態による連鎖再計算における式を評価するための基本的な処理を示す構成図である。 本発明の一実施形態による多重スレッド再計算エンジンにおける処理を示す詳細流れ図である。 図6の再計算エンジンにおける余剰鎖上の史記を処理するための処理を示す流れ図である。 いくつかの式を示す例示的な3×3スプレッドシートである。 本発明の一実施形態に従って動作する2つの再計算エンジンに最初にロードされる、図8に示されるセルを示す図である。 図9に示される再計算エンジン1および2における式の処理を示す図である。 本発明の一実施形態に従って動作する2つの再計算エンジンに最初にロードされる、図8に示されるセルを示す図である。 図11に示される再計算エンジン1および2における式の処理を示す図である。 本発明の一実施形態に従って動作する2つの再計算エンジンに最初にロードされる、図8に示されるセルのさらなる例を示す図である。 図13に示される再計算エンジン1および2における式の処理を示す図である。 例示的な従来のスプレッドシートである。 図15に示されるスプレッドシートに対する計算鎖の図である。 図15に示されるスプレッドシートに対する再順序付けされた計算鎖の図である。
符号の説明
12、14 計算鎖
100 システム
102 処理モジュール
900、1100、1300 システム
902、904、1102、1104、1302、1304 エンジン

Claims (26)

  1. 利用可能なプロセッサの数を決定するステップと、
    利用可能なプロセッサの前記数が少なくとも2である場合、各利用可能なプロセッサに再計算エンジンを割り当てるステップと、
    前記式を前記再計算エンジンの間に分配するステップと、
    各再計算エンジンに分配された前記式を評価するステップと
    を備えたことを特徴とするスプレッドシートプログラムにおいて補助式および従属式を処理する方法。
  2. 前記処理は、オペレーティングシステムによって実施されることを特徴とする請求項1に記載の方法。
  3. 前記決定するステップは、プログラムが起動すると、多重プロセッサが利用可能であるか否かをコンピュータ動作システムに問い合わせるステップを含むことを特徴とする請求項1に記載の方法。
  4. 前記分配するステップは、
    第1の式を選択するステップと、
    前記第1の式を前記再計算エンジンの任意の1つに無作為に割り当てるステップと、
    すべての式が前記再計算エンジンの1つに割り当てられるまで、次の式毎に前記選択および割り当て工程を繰り返すステップと
    を含むことを特徴とする請求項1に記載の方法。
  5. 各再計算エンジン上での前記評価するステップは、
    第1の式を選択するステップと、
    前記第1の式が従属式か補助式かを判断するステップと、
    前記第1の式が補助式である場合は、該補助式を評価するステップと、
    前記第1の式が従属式である場合は、該従属式に対する補助式が前記再計算エンジンに存在するか否かを判断するステップと、
    前記従属式に対する前記補助式が前記計算エンジンに存在する場合は、前記補助式を前記第1の式の前に配置するステップと
    を含むことを特徴とする請求項1に記載の方法。
  6. 前記第1の式の前に配置された前記補助式が従属式であるか否かを判断するステップと、
    前記補助式が従属式でない場合は、該補助式を評価するステップと、
    前記補助式が従属式である場合は、該従属式に対する他の補助式が前記再計算エンジンに存在するか否かを判断し、そうである場合は、前記他の補助式を前記補助式の前に配置し、前記他の補助式を評価するステップと
    をさらに備えたことを特徴とする請求項5に記載の方法。
  7. 前記評価するステップは、
    前記第1の式が従属式であり、該従属式に対する前記補助式が前記再計算エンジンに存在しない場合は、前記補助式の前記再計算エンジン位置を決定し、前記第1の式をその再計算エンジンに移動するステップをさらに含むことを特徴とする請求項5に記載の方法。
  8. 前記評価するステップは、
    前記第1の式が従属式であり、該従属式に対する前記補助式が前記再計算エンジンに存在しない場合は、前記補助式の前記再計算エンジン位置を決定し、前記補助式を有する前記再計算エンジンが計算を終了しているか否かを問い合わせ、そうである場合は、前記従属式の評価を再度試み、そうでない場合は、前記補助式を有する前記再計算エンジンに前記従属式を移動するステップをさらに含むことを特徴とする請求項5に記載の方法。
  9. 前記補助式を有する前記再計算エンジンに移動された前記従属式は、その再計算エンジンにおける余剰鎖に配置されることを特徴とする請求項8に記載の方法。
  10. コンピュータシステムにより読取り可能で、請求項1に記載の方法を実施するように前記コンピュータシステムにより実行可能な命令のプログラムを明確に具体化することを特徴とするコンピュータプログラム製品。
  11. コンピュータシステムにより読取り可能で、請求項5に記載の方法を実施するように前記コンピュータシステムにより実行可能な命令のプログラムを明確に具体化することを特徴とするコンピュータプログラム製品。
  12. 2つのプロセッサを有するオペレーティングコンピューティングシステム上でスプレッドシートプログラムにおける複数の式を処理する方法であって、
    第1の再計算エンジンを前記2つのプロセッサの一方に割り当て、第2の再計算エンジンを前記2つのプロセッサの他方に割り当てるステップと、
    各式を前記第1および第2の再計算エンジンの一方に分配するステップとを備え、
    前記第1および第2の再計算エンジンの各々において、
    第1の式/次の式が従属式であるか否かを判断し、
    前記第1の式/次の式が従属式でない場合は、前記第1の式/次の式を評価し、
    前記第1の式/次の式が従属式である場合は、補助式の位置を決定し、
    前記補助式が同じ再計算エンジンに存在する場合は、前記補助式を前記第1の式/次の式の前まで移動し、および
    前記補助式を評価することを特徴とする方法。
  13. 前記再計算エンジンにおける前記次の式に対して前記判断するステップおよび評価するステップを繰り返すことをさらに備えたことを特徴とする請求項12に記載の処理方法。
  14. 前記補助式が従属式であるか否かを判断するステップと、
    前記補助式が従属式である場合は、前記補助式の位置を決定するステップとをさらに備え、
    その補助式が同じ再計算エンジンに存在する場合は、その補助式を、それが補助する前記補助式の前まで移動し、および
    その補助式を評価し、次いで、前記補助式を評価することを特徴とする請求項12に記載の処理方法。
  15. 前記第1および第2の再計算エンジンにおける次の式毎に、前記判断、評価、移動および評価工程を繰り返すステップをさらに備えたことを特徴とする請求項14に記載の処理方法。
  16. 前記補助式が同じ再計算エンジンに存在しない場合は、前記従属式を前記第1および第2の再計算エンジンの他方に移動するステップをさらに備えたことを特徴とする請求項12に記載の処理方法。
  17. 前記従属式を移動するステップは、前記従属式を前記第1および第2の再計算エンジンの他方の余剰鎖に追加するステップを含むことを特徴とする請求項16に記載の処理方法。
  18. スプレッドシートプログラムにおいて式鎖における補助式および従属式を処理するためのシステムであって、
    利用可能なプロセッサの数を決定し、再計算エンジンを各々の利用可能なプロセッサに割り当てるモジュールと、
    前記再計算エンジン間で前記式を分配するロード制御モジュールと、
    各再計算エンジンに分配された前記式を同時に評価する処理モジュールと
    を備えたことを特徴とするシステム。
  19. 前記処理モジュールは、オペレーティングシステム内に存在することを特徴とする請求項1に記載のシステム。
  20. 前記決定モジュールは、プログラムが起動すると、多重プロセッサが利用可能であるか否かをコンピュータオペレーティングシステムに問い合わせ、再計算エンジンを各々の利用可能なプロセッサに割り当てることを特徴とする請求項1に記載のシステム。
  21. 前記ロード制御モジュールは、第1の式を選択し、前記第1の式を前記再計算エンジンの任意の1つに無作為に割り当て、すべての式が前記再計算エンジンに割り当てられるまで、次の式毎に前記選択および割り当て工程を繰り返すことを特徴とする請求項3に記載のシステム。
  22. コンピュータによって実行されると、スプレッドシートプログラムにおける補助および従属式を処理する方法であって、
    利用可能なプロセッサの数を決定するステップと、
    利用可能なプロセッサの前記数が少なくとも2である場合に、各利用可能なプロセッサに再計算エンジンを割り当てるステップと、
    前記式を前記再計算エンジンの間で分配するステップと、
    各再計算エンジンに分配された前記式を評価するステップと
    を含む方法を実行するコンピュータ実行可能命令を備えたことを特徴とするコンピュータ読取り可能媒体。
  23. 前記処理方法における前記決定するステップは、プログラムが起動すると、多重プロセッサが利用可能であるか否かをコンピュータ動作システムに問い合わせるステップを含むことを特徴とする請求項22に記載のコンピュータ読取り可能媒体。
  24. 前記処理方法における前記分配工程は、
    第1の式を選択するステップと、
    前記第1の式を前記再計算エンジンの任意の1つに無作為に割り当てるステップと、
    すべての式が前記再計算エンジンの1つに割り当てられるまで、次の式毎に前記選択および割り当てるステップを繰り返すステップと
    を含むことを特徴とする請求項22に記載のコンピュータ読取り可能媒体。
  25. 前記処理方法における各再計算エンジン上での前記評価するステップは、
    第1の式を決定するステップと、
    前記第1の式が従属式か補助式かを判断するステップと、
    前記第1の式が補助式である場合は、前記式を評価するステップと、
    前記第1の式が従属式である場合は、この従属式に対する補助式が前記再計算エンジンに存在するか否かを判断するステップと、
    この従属式に対する前記補助式が前記計算エンジンに存在する場合は、前記補助式を前記第1の式の前に配置するステップと
    を含むことを特徴とする請求項22に記載のコンピュータ読取り可能媒体。
  26. コンピュータによって実行されると、2つのプロセッサを有するオペレーティングコンピューティングシステム上でスプレッドシートプログラムにおける複数の式を処理する方法を実行するコンピュータ実行可能命令を含むコンピュータ読取り可能媒体であって、前記方法は、
    第1の再計算エンジンを前記2つのプロセッサの一方に割り当て、第2の再計算エンジンを前記2つのプロセッサの他方に割り当てるステップと、
    各式を前記第1および第2の再計算エンジンの一方に分配するステップとを備え、
    前記第1および第2の再計算エンジンの各々において、
    第1の式/次の式が従属式であるか否かを判断し、
    前記第1の式/次の式が従属式でない場合は、前記第1の式/次の式を評価し、
    前記第1の式/次の式が従属式である場合は、補助式の位置を決定し、
    前記補助式が同じ再計算エンジンに存在する場合は、前記補助式を前記第1の式/次の式の前まで移動し、および
    前記補助式を評価することを特徴とするコンピュータ読取り可能媒体。
JP2005184988A 2004-09-27 2005-06-24 スプレッドシート連鎖計算の多重スレッド処理のための方法およびシステム Expired - Fee Related JP5025919B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/951,576 US7533139B2 (en) 2004-09-27 2004-09-27 Method and system for multithread processing of spreadsheet chain calculations
US10/951,576 2004-09-27

Publications (2)

Publication Number Publication Date
JP2006092519A true JP2006092519A (ja) 2006-04-06
JP5025919B2 JP5025919B2 (ja) 2012-09-12

Family

ID=35560572

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005184988A Expired - Fee Related JP5025919B2 (ja) 2004-09-27 2005-06-24 スプレッドシート連鎖計算の多重スレッド処理のための方法およびシステム

Country Status (5)

Country Link
US (1) US7533139B2 (ja)
EP (1) EP1640875B1 (ja)
JP (1) JP5025919B2 (ja)
KR (1) KR101183303B1 (ja)
CN (1) CN100562851C (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009134687A (ja) * 2007-11-29 2009-06-18 Hitachi Ltd アプリケーションマイグレーションのための候補データセンタを見つける方法および装置[0001]
JP2009536766A (ja) * 2006-05-08 2009-10-15 マイクロソフト コーポレーション 依存レベルを用いたマルチスレッドスプレッドシートの処理
JP2011510397A (ja) * 2008-01-15 2011-03-31 マイクロソフト コーポレーション 構造化されたデータ要素にアクセスして更新するためのマルチクライアントのコラボレーション
US11886916B2 (en) 2020-06-30 2024-01-30 Microsoft Technology Licensing, Llc System for adaptive multithreaded recalculation operations

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7533139B2 (en) 2004-09-27 2009-05-12 Microsoft Corporation Method and system for multithread processing of spreadsheet chain calculations
US7451397B2 (en) * 2004-12-15 2008-11-11 Microsoft Corporation System and method for automatically completing spreadsheet formulas
WO2006095365A2 (en) * 2005-03-11 2006-09-14 Suresh Sambandam A system and method of defining a hierarchical datamodel and related computation and instruction rules using spreadsheet like user interface
US8234293B2 (en) * 2005-09-08 2012-07-31 Microsoft Corporation Autocompleting with queries to a database
US8006175B2 (en) * 2007-10-29 2011-08-23 Microsoft Corporation Calculation of spreadsheet data
US20090172063A1 (en) * 2007-12-26 2009-07-02 Microsoft Corporation Multi-Threaded Codeless User-Defined Functions
US9037959B2 (en) * 2008-09-30 2015-05-19 Apple Inc. Formula display and search in a spreadsheet
US8527866B2 (en) 2010-04-30 2013-09-03 Microsoft Corporation Multi-threaded sort of data items in spreadsheet tables
US20110276868A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Multi-Threaded Adjustment of Column Widths or Row Heights
US8856234B2 (en) 2013-02-28 2014-10-07 Workiva Llc System and method for performing distributed asynchronous calculations in a networked environment
US20140306964A1 (en) * 2013-04-12 2014-10-16 Microsoft Corporation Incremental compiling of a declarative program
CN104281636B (zh) * 2014-05-05 2017-09-08 神华集团有限责任公司 海量报表数据并发分布式处理方法
US10289672B1 (en) * 2015-12-21 2019-05-14 Workday, Inc. Threading spreadsheet calculations
KR102266073B1 (ko) * 2020-02-03 2021-06-17 주식회사 한글과컴퓨터 멀티 스레드를 기반으로 스프레드시트 문서를 구성하는 각 시트에 대한 효율적 로드를 제어하는 전자 장치 및 그 동작 방법
US20220318232A1 (en) * 2021-03-31 2022-10-06 Microsoft Technology Licensing, Llc Dynamically limiting the scope of spreadsheet recalculations

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694603A (en) * 1982-09-28 1997-12-02 Reiffin; Martin G. Computer memory product with preemptive multithreading software
US5276607A (en) * 1990-03-28 1994-01-04 Wordperfect Corporation Method for optimal recalculation
US5943663A (en) * 1994-11-28 1999-08-24 Mouradian; Gary C. Data processing method and system utilizing parallel processing
US6138130A (en) * 1995-12-08 2000-10-24 Inventure Technologies, Inc. System and method for processing data in an electronic spreadsheet in accordance with a data type
US6055548A (en) * 1996-06-03 2000-04-25 Microsoft Corporation Computerized spreadsheet with auto-calculator
US6304866B1 (en) * 1997-06-27 2001-10-16 International Business Machines Corporation Aggregate job performance in a multiprocessing system by incremental and on-demand task allocation among multiple concurrently operating threads
JP3209205B2 (ja) * 1998-04-28 2001-09-17 日本電気株式会社 プロセッサにおけるレジスタ内容の継承装置
US6349295B1 (en) * 1998-12-31 2002-02-19 Walker Digital, Llc Method and apparatus for performing supplemental searches over a network
US6957191B1 (en) * 1999-02-05 2005-10-18 Babcock & Brown Lp Automated financial scenario modeling and analysis tool having an intelligent graphical user interface
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
EP1109105A1 (en) * 1999-12-14 2001-06-20 Sun Microsystems, Inc. Inserting a data object into a text document
EP1152331B1 (en) 2000-03-16 2017-11-22 Kabushiki Kaisha Square Enix (also trading as Square Enix Co., Ltd.) Parallel task processing system and method
CA2408313A1 (en) * 2000-06-21 2001-12-27 Microsoft Corporation System and method for integrating spreadsheets and word processing tables
US7155667B1 (en) * 2000-06-21 2006-12-26 Microsoft Corporation User interface for integrated spreadsheets and word processing tables
AUPQ836500A0 (en) * 2000-06-26 2000-07-20 Dstc Pty Ltd Parallel execution mechanism for spreadsheets
JP2002133360A (ja) * 2000-10-27 2002-05-10 Mitsuyoshi Yamane 表計算処理におけるセルのレイアウトによる入出力方法及びそのプログラムを記録した記録媒体
US7010779B2 (en) * 2001-08-16 2006-03-07 Knowledge Dynamics, Inc. Parser, code generator, and data calculation and transformation engine for spreadsheet calculations
US7028167B2 (en) * 2002-03-04 2006-04-11 Hewlett-Packard Development Company, L.P. Core parallel execution with different optimization characteristics to decrease dynamic execution path
US8793176B2 (en) * 2002-06-13 2014-07-29 Cfph, Llc Systems and methods for providing a customizable spreadsheet application interface for an electronic trading system
US7266763B2 (en) * 2002-11-26 2007-09-04 Microsoft Corporation User defined spreadsheet functions
US7207043B2 (en) * 2002-12-31 2007-04-17 International Business Machines Corporation Programmatic response-time based workload distribution techniques
US7228543B2 (en) * 2003-01-24 2007-06-05 Arm Limited Technique for reaching consistent state in a multi-threaded data processing system
US7243096B2 (en) * 2003-04-29 2007-07-10 International Business Machines Corporation Method and system in an electronic data table for managing order oriented criteria
US7664804B2 (en) * 2004-06-01 2010-02-16 Microsoft Corporation Method, system, and apparatus for exposing workbook ranges as data sources
US7533139B2 (en) 2004-09-27 2009-05-12 Microsoft Corporation Method and system for multithread processing of spreadsheet chain calculations
US7810032B2 (en) * 2004-12-01 2010-10-05 International Business Machines Corporation System and method for performing over time statistics in an electronic spreadsheet environment
US8032821B2 (en) * 2006-05-08 2011-10-04 Microsoft Corporation Multi-thread spreadsheet processing with dependency levels

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009536766A (ja) * 2006-05-08 2009-10-15 マイクロソフト コーポレーション 依存レベルを用いたマルチスレッドスプレッドシートの処理
JP2009134687A (ja) * 2007-11-29 2009-06-18 Hitachi Ltd アプリケーションマイグレーションのための候補データセンタを見つける方法および装置[0001]
US8380853B2 (en) 2007-11-29 2013-02-19 Hitachi, Ltd. Method and apparatus for locating candidate data centers for application migration
JP2011510397A (ja) * 2008-01-15 2011-03-31 マイクロソフト コーポレーション 構造化されたデータ要素にアクセスして更新するためのマルチクライアントのコラボレーション
US8862979B2 (en) 2008-01-15 2014-10-14 Microsoft Corporation Multi-client collaboration to access and update structured data elements
US9880992B2 (en) 2008-01-15 2018-01-30 Microsoft Technology Licensing, Llc Multi-client collaboration to access and update structured data elements
US11886916B2 (en) 2020-06-30 2024-01-30 Microsoft Technology Licensing, Llc System for adaptive multithreaded recalculation operations

Also Published As

Publication number Publication date
EP1640875B1 (en) 2013-11-06
KR20060048515A (ko) 2006-05-18
CN100562851C (zh) 2009-11-25
JP5025919B2 (ja) 2012-09-12
EP1640875A2 (en) 2006-03-29
EP1640875A3 (en) 2008-04-16
CN1755633A (zh) 2006-04-05
US20060069993A1 (en) 2006-03-30
KR101183303B1 (ko) 2012-09-14
US7533139B2 (en) 2009-05-12

Similar Documents

Publication Publication Date Title
JP5025919B2 (ja) スプレッドシート連鎖計算の多重スレッド処理のための方法およびシステム
CN104980454B (zh) 一种资源数据共享方法、服务器及系统
CA2648875C (en) Multithread spreadsheet processing with dependency levels
US9256448B2 (en) Process grouping for improved cache and memory affinity
EP0523863B1 (en) Digital data processor for high level instructions
NZ550480A (en) Modified computer architecture with coordinated objects
JP2004326753A (ja) 仮想計算機環境におけるロックの管理
JP2007193776A (ja) ロジカル・パーティションのメモリ・アフィニティを動的に改善するための装置および方法
US8694575B2 (en) Data-intensive computer architecture
Goh et al. Design and performance evaluation of combined first-fit task allocation and migration strategies in mesh multiprocessor systems
Patwary et al. Parallel greedy graph matching using an edge partitioning approach
EP2951691A1 (en) System and method for supporting work sharing muxing in a cluster
US5918243A (en) Computer mechanism for reducing DASD arm contention during parallel processing
CN112783651B (zh) 一种云平台vGPU负载均衡调度方法、介质及装置
JPH08180018A (ja) 分散処理システム及び分散処理方法
Cole et al. Efficient resource oblivious algorithms for multicores
CN107562510A (zh) 一种应用实例的管理方法及管理设备
CN112506598B (zh) 一种节点显示方法及装置
KR100283622B1 (ko) 분산 다중처리기 구조 고속병렬컴퓨터에서의 디스크 공유 방법
Darden et al. MULTI: a shared memory approach to cooperative molecular modeling
US6996665B2 (en) Hazard queue for transaction pipeline
JPH07271739A (ja) スワップ領域分散方式
CN118245191A (zh) 一种多模态的计算任务动态调度方法、装置、设备及介质
CN111309384A (zh) 针对硬件加速器的软硬件交互方法、装置和存储介质
WO2020005596A1 (en) Actor model programming

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110329

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110629

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110704

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110714

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111125

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: 20120615

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120620

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

Free format text: PAYMENT UNTIL: 20150629

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5025919

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees