JP2009507299A - 決定性処理を遂行するシステム及び方法 - Google Patents

決定性処理を遂行するシステム及び方法 Download PDF

Info

Publication number
JP2009507299A
JP2009507299A JP2008529161A JP2008529161A JP2009507299A JP 2009507299 A JP2009507299 A JP 2009507299A JP 2008529161 A JP2008529161 A JP 2008529161A JP 2008529161 A JP2008529161 A JP 2008529161A JP 2009507299 A JP2009507299 A JP 2009507299A
Authority
JP
Japan
Prior art keywords
time
execution
execution time
instructions
deterministic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008529161A
Other languages
English (en)
Other versions
JP2009507299A5 (ja
Inventor
メンデス,パウロ
ハイル,カルロス
ブランカ,バリー・エドワード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Asterion Inc
Original Assignee
Asterion Inc
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 Asterion Inc filed Critical Asterion Inc
Publication of JP2009507299A publication Critical patent/JP2009507299A/ja
Publication of JP2009507299A5 publication Critical patent/JP2009507299A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • 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/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter

Abstract

非決定性コンピュータシステムで決定性処理を遂行するシステム及び方法が提供される。一実施例において、システムは、1つ以上のコンピュータ命令の実行が一定の実行時間内で実行されるよう強制する。決定性エンジンは、コンピュータ命令の実行が一定の実行時間にわたって遂行されることを保証するため、必要に応じ、不定の時間量にわたり待機する。実行時間は一定であるから、その実行は決定性であり、それ故決定性挙動を要するアプリケーションにおいて使用することができる。例えば、自動テスト装置(ATE)アプリケーションにおいてかかる決定性エンジンを使用することができる。

Description

発明の背景
1.発明の分野
本発明は、一般的には処理に関し、より具体的には非決定性コンピュータシステムにおける処理に関する。
2.関係技術の論述
自動テストシステム(ATE)で成功の鍵を握るのは再現性である。再現可能テストシステムを得るということは、2つの同じデバイスにおける所定テストシーケンスの実行から同じ結果が出ることを意味する。したがって、もしもテストの対象となる全デバイスに適用される刺激が同じなら、そのテスト結果は信頼できるソースとしてデバイス品質の査定に用いることができる。「同じ」刺激とは、関係テスト条件(電圧、電流、温度、その他)の係数が同じであることを意味するばかりでなく、テスト条件が適用される相対的時間が同じであることをも意味する。
今日、ATE分野におけるテスト装置のほとんどは1つ以上のコンピュータシステムを伴う。このため、テストステップを実施するコンピュータシステムは、全体的な決定性が保たれるようにこれらのテストステップを決定的に生成しなければならない。かかるコンピュータに伴う1つの問題にコストがある。テスト用として相応しい完全なコンピューティングシステム(例えば一貫性のある結果を出すもの)の設計には、高価なハードウェア設計とメンテナンスとが要求されるばかりでなく、オペレーティングシステム、ユーザインターフェイス、ドライバ、ツール、その他を含む高価なソフトウェア設計をも要求される。その結果、ATEに相応しいコンピュータシステムは、ほとんどの企業にとって、その購入とメンテナンスにあたって非常に高くつく。
かかるシステムのコストを抑える1つの方法として、既製のコンピュータコンポーネント及びシステムの使用がある。ただし上述した決定性要求のため、既製の汎用コンピュータシステムは概してかかる用途にとって相応しくない。もしも汎用コンピュータシステムをATEで使用することができるなら、ATEの所有・運転コストを抑えることができる。
発明の要旨
本発明の一態様によると、決定性処理を遂行するシステムが提供される。このシステムは、1つ以上の命令を実行するように構成される処理実体と、1つ以上の命令の実行時間を一定の値となるよう調整するように構成されるコンポーネントとを備える。一実施形態によると、コンポーネントは、実行時間を1つ以上の命令の最大実行時間となるよう調整するように構成されている。別の実施形態によると、コンポーネントは、1つ以上の命令の実行時間を、1つ以上の命令の複数の実行にわたって同じ一定値となるよう調整するように構成されている。別の実施形態によると、複数の実行は異なるコンピュータシステムで起こる。別の実施形態によると、異なるコンピュータシステムは異なる処理能力を有する。別の実施形態によると、コンポーネントは、1つ以上の命令の実行を所定の期間内に遂行するように構成されている。別の実施形態によると、コンポーネントは、実行時間を一定値に調整するためある期間にわたり待機するように構成されている。
一実施形態によると、システムはさらに時間基準を備え、ここでコンポーネントはこの時間基準を用いて相対的時間を判定するように構成されている。別の実施形態によると、コンポーネントは、プロセッササイクルのカウンタ値に基づき相対的時間を判定するように構成されている。別の実施形態によると、時間基準はインターフェイスを含み、ここでコンポーネントは、このインターフェイスを通じて処理サイクルのカウンタを入手するように構成されている。別の実施形態によると、コンポーネントは、1つ以上の命令の実行に使われる時間量を判定するように構成されており、さらに実行時間を一定値に調整するためある期間にわたり待機するように構成されている。別の実施形態によると、コンポーネントは、複数のカウンタ値に基づき経過時間を判定するように構成されている。別の実施形態によると、カウンタ値はプロセッサのタイムスタンプカウンタである。別の実施形態によると、プロセッサはPENTIUM(登録商標)タイプのプロセッサである。別の実施形態によると、システムは自動テストシステムの一部である。
本発明の一態様によると、決定性処理を遂行するためにコンピュータ実装される方法が提供される。この方法は、コンピュータシステムで1つ以上の命令を実行する動作と、実行する動作の実行時間を測定する動作と、実行時間を一定値に調整するためある期間にわたり待機する動作とを備える。別の実施形態によると、ある期間にわたり待機する動作は、実行する動作の後に一定値の実行時間が経過するまである期間にわたり待機することを含む。別の実施形態によると、方法は、1つ以上の命令の実行を測定する動作と、測定する動作に基づき1つ以上の命令の最大実行時間を判定する動作とをさらに備える。別の実施形態によると、方法は、一定値を最大実行時間に設定する動作をさらに備える。別の実施形態によると、方法は、1つ以上の命令の最大実行時間を判定する動作をさらに備える。別の実施形態によると、方法は、一定値を最大実行時間に設定する動作をさらに備える。
一実施形態によると、方法は、1つ以上の命令の実行時間を1つ以上の命令の複数の実行にわたって同じ一定値となるよう調整する動作をさらに備える。別の実施形態によると、複数の実行は異なるコンピュータシステムで起こる。別の実施形態によると、異なるコンピュータシステムは異なる処理能力を有する。別の実施形態によると、方法は、コンピュータシステムで1つ以上の命令を実行する動作を所定の期間内に遂行する動作をさらに備える。別の実施形態によると、方法は、実行時間を一定値に調整するためある期間にわたり待機する動作をさらに備える。別の実施形態によると、方法は、相対的時間を判定する動作をさらに備える。
一実施形態によると、方法は、時間基準を提供する動作と、時間基準を用いて相対的時間を判定する動作とをさらに備える。別の実施形態によると、方法は、プロセッササイクルのカウンタ値に基づき相対的時間を判定する動作をさらに備える。別の実施形態によると、方法は、1つ以上の命令の実行に使われる時間量を判定する動作と、実行時間を一定値に調整するためある期間にわたり待機する動作とをさらに備える。別の実施形態によると、方法は、複数のカウンタ値に基づき経過時間を判定する動作をさらに備える。別の実施形態によると、カウンタ値はプロセッサのタイムスタンプカウンタである。別の実施形態によると、プロセッサはPENTIUM(登録商標)タイプのプロセッサである。別の実施形態によると、方法は自動テストシステムによって遂行される。
本発明のさらなる特徴及び利点、ならびに本発明の様々な実施形態の構造及び作動を、添付の図面を参照しながら以下に詳述する。図面において、同様の参照番号は同様のまたは機能的に類似する要素を指す。加えて、参照番号の左端から1つ目または2つ目までの数字は、その参照番号が最初に現れる図面を識別する。
添付の図面は実寸で描かれることを意図していない。図面において、様々な図に描かれている同じまたはほぼ同じコンポーネントは同様の番号で表されている。明確にするため、全ての図面で全てのコンポーネントに標示が付されているとは限らない。
詳細な説明
本発明用途は、以降の説明に記載された、または図面に描かれた、構造の詳細とコンポーネントの配置とに限定されない。本発明はほかの実施形態が可能であり、様々な仕方で実践または遂行できる。また、ここで用いる言葉遣いと用語は説明を目的とするものであって、制限するものとみなすべきではない。ここでの「含む(including)」、「備える(comprising)」、または「有する(having)」、「包含する(containing)」、「含む(involving)」、ならびにこれらのバリエーションの使用は、後ろに続く品目とその同等物を、ならびに付加的品目を、網羅することを意味する。
決定性処理を遂行するためのシステム及び方法が提供される。本発明の一態様によると、決定的結果を要するシステムで非決定性コンピュータシステムを実装すると有益な場合がある。例えば汎用のコンピュータシステム、プロセッサ、及び/またはソフトウェアを実装すると、かかるシステムの所有・保守コストを抑えるのに役に立つ場合がある。一実施例において、ATEシステムを実装する汎用コンピュータシステムのコストは専用システムの10分の1である。この目的を果たすため、かかる非決定性システムが決定的に作動することを可能にするための方法が提供される。
本発明の一態様によると、テストエンジニアによって使用されるATEシステム等の決定性システムには数通りの態様が認められる。
(a)テストエンジニアが以降のテストステップの基準となる基準時間(例えば時間ゼロ(t))として参照できる緩和点がある。
(b)基準時間(t)を基準とする所定の相対的時間にテストステップを開始する決定性テストスケジューラがある。
条件(a)は従来のシステムを用いて容易く満たされ、その実装は概して取るに足りない。例えばデバイスは、基準時間tにて刺激から切断でき、その温度は部屋(ハンドラ)温度に設定される。同時にテストエンジニアはテストシステムにて刺激を「テスト開始」(SOT)条件に設定できる。
しかし条件(b)を満たすことはより困難である。一実施例において、条件(b)を満たすための解決策は、安定的な時間基準を用いてテストステップを実行するシーケンス回路を含む。もしも純粋なシーケンス回路としてコンピュータを設計するならば、そのコンピュータのために記述されるプログラムは、テストステップを決定的に生成するシーケンサである。ただしそのようなコンピュータは通常、ステップの決定的遂行を徹底するため特別に開発されたオペレーティングシステムと対応するアプリケーションプログラムとを要する。
本発明の一態様によると、例えばもしも既製コンピュータを使って条件(b)を満たそうとしたならば問題が生じる。具体的に、汎用コンピュータシステムの場合、そのハードウェア及びソフトウェア設計は最大性能の達成を試みる。ATEプログラムの実行の場合、汎用コンピュータは何としても全てのテストステップを可能な限り速やかに完了することを試みるであろう。本発明の一態様によると、条件(b)は、現在の既製コンピュータと関連ソフトウェアの場合のように可能な限り速やかに遂行するのではなく、所定の時間に新しいテストステップを開始することを規定している。
現在の既製コンピュータは、例えばキャッシュメモリ、パイプライン、複数実行パス(探索的実行)、分岐予測等を含む様々なメカニズムを用いて最大性能を達成する。これらのメカニズムのほとんどは、プロセッサ状態の既往の及び/または現在のコンテキストに依拠する学習推測に基づき決定を下す。つまり、実行の履歴(またはパターン)(例えば、データにアクセスしたことがある等)に基づき次のタスクステップを予測する(例えば、何らかのデータがキャッシュメモリにロードされる、各パイプラインレベルで復号化されている命令は何か、何らかのデータがディスクから取得される等)。勿論、推測を誤ると性能が損なわれ、タスクの実行速度は落ちる。さらに、かかるメカニズムは他のプログラムの性能に、及び/またはコンピュータのオペレーティングシステム状態に、左右されるから、概して異なるランタイムに異なる動きをする。結果的に、コンピュータ性能を向上させる今日の手法のほとんどは、システム内の数々の不定要因のため、性能を予測することが、及び/または再現することが、困難なコンピュータシステムに帰結し、不定要因の多くはランタイムに定まる。
性能を予測することが困難なため、ほとんどのATE会社はシステム設計時に上述の条件(b)を無視し(これは設計コストの増大を理由に正当化される)、満足な再現性が達成されるまでテストアプリケーションを調整する問題はテストエンジニアにまかせる。勿論、テストアプリケーションを綿密に調整することは条件(b)を模擬するひとつの戦略ではあるが、この戦略は面倒であり、できあがったアプリケーションはすこぶる脆弱である。基礎となるコンピュータハードウェアまたはソフトウェアの作動パラメータまたは構成に変更があると、このカスタム調整に影響が及び、決定性オペレーションを失うおそれがある。
よって、ATEシステム等の決定性アプリケーションにとっては、再現性に優れるシステムをもたらすばかりでなく、基礎となるコンピュータハードウェア及びソフトウェアから独立したシステムをももたらす手法が有益だろう。本発明の一態様によると、もしもコンピュータオペレーションの最大実行時間を予測できるならば、コンピュータオペレーションに決定的に作動することを強いることができる。より具体的に、もしもコンピュータオペレーションを最大実行時間で遂行できるなら、コンピュータシステムの実行は予測可能である。一実施例においては、ある特定のオペレーションを適切な実行時間に遂行するため、コンピュータのオペレーション実行を遅らせることができる。
本発明の一態様によると、汎用コンピュータシステムのための決定性エンジンが提供される。一実施形態によると、決定性エンジンは、命令セットの合計実行時間を一定にすることができる。所望の合計実行時間が最大実行時間に等しいかこれを上回るなら、合計実行時間を一定の値に設定できる。最大実行時間は、関与する命令を解析することによって(さらにその最大実行時間を測定することによって)、または様々なプロセッサコンテキストにおける命令セットの実行によって経験的に、判定することができる。
所望の実行時間は一定値として設定されるから、実際の実行時間が最大実行時間を超過しないと仮定すると、異なるコンピュータシステムで実行時間は同じになる。より豊富な能力とより高い性能を有する新しいプロセッサが導入されており、かかる決定性エンジンを利用するソフトウェアアプリケーションは、決定的挙動をなくさずにこれらの新しい環境に移すことができる。つまり、所望実行時間はある1つのコンピュータシステムにおける最大実行時間より長いから、命令セットの最大実行時間がこれよりも短いより有能なコンピュータシステムにソフトウェアアプリケーションを移すことができる。かくしてソフトウェアアプリケーションは異なるコンピュータシステムで実行されるときに決定的に作動でき、システムからシステムにかけてアプリケーション設計投資は保護される。能力が劣るシステムや疑わしいシステムへアプリケーションを移す場合は、設計最大実行時間を
超過しないことを確認するため検証を行うことができる。
汎用コンピュータシステム
本発明による様々な実施形態は1つ以上のコンピュータシステムで実装できる。これらのコンピュータシステムは、例えばIntel PENTIUM(登録商標)タイププロセッサ、Motorola PowerPC、AMD AthlonまたはTurion(登録商標)、Sun UltraSPARC、Hewlett−Packard PA−RISC(登録商標)プロセッサに、またはタイプの異なるその他のプロセッサに、基づく汎用コンピュータ等、汎用コンピュータであってよい。本発明の様々な実施形態による決定性処理を遂行するため、1つまたは複数のどんなタイプのコンピュータシステムでも使用することができることは理解されよう。さらに、システムは単一のコンピュータ上に位置してよく、あるいは通信ネットワークによって接続された複数のコンピュータに分散してよい。
本発明の一実施形態による汎用コンピュータシステムは、テストプログラムのテストステップを遂行することを含みただしこれに限定されない、説明する決定性機能のいずれかを遂行するよう構成される。決定性機能を要する別の用途を含む別の機能をシステムが遂行できること、そして本発明が特定の機能を、または機能セットを、有することに限定されないことは理解されよう。
図1は、本発明の様々な態様を実践できる汎用コンピュータとネットワークシステムのブロック図を示す。例えば本発明の様々な態様は、図1に示す汎用コンピュータシステム101を含む1つ以上のコンピュータシステムで実行する特化ソフトウェアとして実装できる。コンピュータシステム101は、ディスクドライブ、メモリ、データを格納するその他のデバイス等、1つ以上のメモリデバイス105へ接続されたプロセッサ104を含んでよい。メモリ105は通例、コンピュータシステム101の作動中にプログラムとデータとを格納するために使われる。コンピュータシステム101のコンポーネントはネットワーク110等の相互接続メカニズムによって結合されてよく、この相互接続メカニズムは1つ以上のバス(例えば、同一マシンの中で一元化されたコンポーネント間)、及び/またはネットワーク(例えば、別個のマシンに存在するコンポーネント間)を含んでよい。相互接続メカニズムは、システム101のシステムコンポーネント間で通信(例えばデータ、命令)のやり取りを可能にする。
コンピュータシステム101はまた、1つ以上の入力/出力(I/O)装置106を、例えばキーボード、マウス、トラックボール、マイクロフォン、タッチスクリーン、印刷装置、ディスプレイ画面、スピーカー、その他を含む。加えてコンピュータシステム101は、コンピュータシステム101を通信ネットワークへ接続する1つ以上のインターフェイス(例えば、ネットワーク通信デバイス108)を、ネットワーク110に加えて、またはこれの代わりに、包含してよい。
ストレージシステム109は通例、コンピュータ読み取り可能・書き込み可能不揮発性記録媒体を含み、ここに格納される信号は、プロセッサによるプログラムの実行を、または媒体に格納された情報のプログラムによる処理を、規定する。媒体は、例えばディスクまたはフラッシュメモリであってよい。通例、作動中はプロセッサによって不揮発性記録媒体から別のメモリへデータが読み込まれ、こうすることによりプロセッサによる情報へのアクセスは媒体より速くなる。このメモリは通例、ダイナミックランダムアクセスメモリ(DRAM)やスタティックメモリ(SRAM)等、揮発性のランダムアクセスメモリである。メモリは、図示されたとおりストレージシステム109に位置してよく、あるいはメモリシステム105に位置してよい。プロセッサ104は普通、集積回路メモリ104の中でデータを操作し、処理が完了した後にはストレージ109と連携する媒体へデー
タをコピーする。媒体と集積回路メモリ素子との間でデータ移動を管理するにあたっては様々なメカニズムが知られており、本発明はこれに限定されない。本発明は特定のメモリシステムまたはストレージシステムに限定されない。
コンピュータシステムは、特別にプログラムされた専用ハードウェアを、例えば特定用途向け集積回路(ASIC)を、含んでよい。本発明の態様は、ソフトウェア、ハードウェア、またはファームウェア、またはこれらの組み合わせで実装できる。さらに、かかる方法、動作、システム、その構成要素及びコンポーネントは、上述したコンピュータシステムの一部として、または独立コンポーネントとして、実装できる。
コンピュータシステム101は、本発明の様々な態様を実践できるコンピュータシステムの一種として例示されているが、本発明の態様が図1に示すコンピュータシステムでの実装に限定されないことは理解されよう。本発明の様々な態様は、図1に示されたものとは異なるアーキテクチャまたはコンポーネントを有する1つ以上のコンピュータで実践できる。
コンピュータシステム101は、高級コンピュータプログラミング言語を用いてプログラムできる汎用コンピュータシステムであってよい。コンピュータシステム101はまた、特別にプログラムされた専用ハードウェアを用いて実装できる。コンピュータシステム101において、プロセッサ104は通例、Intel Corporationから入手できる周知のPentium(登録商標)クラスのプロセッサ等、市販のプロセッサである。このほかにも数多くのプロセッサが入手可能である。
かかるプロセッサは普通、オペレーティングシステムを実行し、同オペレーティングシステムは、例えばMicrosoft Corporationから入手できるWindows(登録商標)ベースのオペレーティングシステム(例えば、Windows NT(登録商標)、Windows 2000(Windows ME(登録商標))、Windows XPオペレーティングシステム)、Apple Computerから入手できるMAC OS System Xオペレーティングシステム、Sun Microsystemsから入手できるSolarisオペレーティングシステム、または様々な供給元から入手できるUNIX(登録商標)オペレーティングシステムであってよい。このほかにも数多くのオペレーティングシステムを利用でき、本発明は特定のオペレーティングシステムに限定されない。
プロセッサとオペレーティングシステムとによってコンピュータプラットフォームが決まり、このコンピュータプラットフォームに向けて高級プログラミング言語によるアプリケーションプログラムが記述される。1つ以上の請求項によって指定される場合を除き、本発明がある特定のコンピュータシステムプラットフォーム、プロセッサ、オペレーティングシステム、またはネットワークに限定されないことは理解されよう。また、本発明が特定のプログラミング言語またはコンピュータシステムに限定されないことは当業者にとって明白であろう。さらに、他の適切なプログラミング言語を、そして他の適切なコンピュータシステムを、使用することができることは理解されよう。
コンピュータシステムの1つ以上の部分は、通信ネットワークへ結合された1つ以上のコンピュータシステムに分散してよい。これらのコンピュータシステムもまた汎用コンピュータシステムであってよい。例えば、1つ以上のクライアントコンピュータへサービスを提供するべく構成された、または分散システムの一部として全体的タスクを遂行するべく構成された、1つ以上のコンピュータシステム(例えばサーバ)に本発明の様々な態様を分散してよい。例えば、本発明の様々な実施形態に従って様々な機能を遂行する1つ以上のサーバシステムに分散されたコンポーネントを含む、クライアント−サーバまたは多
層システムで、本発明の様々な態様を遂行できる。これらのコンポーネントは、通信プロトコル(例えばTCP/IP)を用いて通信ネットワーク(例えばインターネット)上で伝達される実行可能コード、中間コード(例えばIL)、またはインタープリタ型コード(例えばJava(登録商標))であってよい。
本発明が特定のシステムまたはシステムのグループでの実行に限定されないことは理解されよう。また、本発明が特定の分散アーキテクチャ、ネットワーク、または通信プロトコルに限定されないことは理解されよう。
本発明の様々な実施形態は、SmallTalk、Java(登録商標)、C++、Ada、C#(C−Sharp)等、オブジェクト指向プログラミング言語を用いてプログラムできる。このほかのオブジェクト指向プログラミング言語を使用することもできる。代わりに、関数型言語、スクリプト言語、アセンブリ言語、及び/または論理プログラミング言語を使用することができる。本発明の様々な態様は非プログラム型環境で実装できる(例えば、ブラウザプログラムのウィンドウで見るときにグラフィカルユーザインターフェイス(GUI)の態様を表示する、またはその他の機能を遂行する、HTML、XML、その他形式で作成された文書)。本発明の様々な態様は、プログラム型構成要素、または非プログラム型構成要素として、あるいはこれらの組み合わせとして、実装できる。
このシステムの様々な態様は、システム100の中の1つ以上のシステムによって実装できる。例えば、システムはシングルまたはマルチプロセッサシステムであってよい。一実施例において、システムはパーソナルコンピュータ(PC)等のシステムで実行するソフトウェアプロセスを含む。かかるシステムは、例えば決定的挙動を要する1つ以上の機能をユーザが遂行することを可能にする。かかるシステムは、例えば数ある中でテストシステム、制御システム、航空宇宙業界で使われているシステムを含み得る。
システムアーキテクチャ例
図2は、本発明の一実施形態によるシステム例のアーキテクチャ図を示す。図2が専ら例証用であること、そして本発明の1つ以上の態様を促進するためほかのアーキテクチャを使用することができることは理解されよう。
図2に示すとおり、コンピュータシステム200(例えば、図1を参照しながら上述した汎用コンピュータシステム)は決定性システムを実装するため使用することができる。コンピュータシステム200は、アプリケーションプログラム204が決定的に作動することを可能にする決定性エンジンプログラム201を含んでよい。本発明の一実施形態によると、システム200は決定性システムでなくともよく、図1を参照しながら上述した汎用コンピュータシステムであってもよい。この目的を果たすため、システム200はオペレーティングシステム202と、1つ以上のプロセッサ203と、1つ以上のI/Oコンポーネント206とを含んでよい。任意に、コンピュータシステム200は、アプリケーションプログラムのリアルタイム作動を支援するリアルタイムオペレーティングシステムを、及び/またはリアルタイムコンポーネント205を、含んでよい。かかるリアルタイムコンポーネントは、例えばオレゴン州ビーバートンのTenAsys Corporationから市販されているINtimeリアルタイムプログラミングエクステンションを含む。
本発明の一実施形態による決定性エンジンは、コンピュータシステム200でオペレーションが実行されるときを判定するため安定的な時間基準を提供する。決定性エンジンプログラムはさらに、他のプログラムに対して指示を提供することができ、オペレーションが実行されるべきときを指示することができる。
上述したとおり、ある特定のオペレーションの、またはオペレーションのセット(例え
ばコンピュータ命令)の、最大実行時間は判定できる。最大実行時間は、例えばオペレーションの実行の直接的測定によって判定(例えば多数の実行にわたって判定)でき、あるいは公知の方法を用いて発見的に判定できる。あるコンピュータシステム(例えばコンピュータシステム200)によるオペレーションの実行が最大実行時間を超過しない場合、そのコンピュータシステムには決定的に作動することを強いることができる。
上記のコンセプトを実装するソリューションを求めるため、オペレーションを、任意の回数で繰り返すことのできるコンピュータタスクとして、そしてその実行時間を測定できるものとして、検討する。
以下の定理を立てる。
もしもオペレーション実行の時間に上限があるなら、オペレーション実行を一定の実行時間に強制することは可能である。
証明:Oはオペレーションを表すとする。オペレーションOは反復可能だから、T(n)は、オペレーションOがn回目の実行に要する時間と定義できる。この定理はオペレーションOの時間に上限があると仮定しているから、Tmaxが存在し、以下の等式は真である:
Figure 2009507299
ここでオペレーションは定義できると仮定し、これ以降オペレーションwasteと呼び、その実行時間は以下の等式によって定義する。
Figure 2009507299
ここで値Eは、オペレーションwasteが実行するときに生じる固有誤差(例えばオーバーヘッド)である。もしもコンピュータシステムがオリジナルのオペレーションの実行のたびにオペレーションwasteを実行できるなら、合同実行時間は一定値である。
Figure 2009507299
上記の定理は、既述の特性を持つオペレーションとして実装できる。つまりオペレーションは、合同実行が一定値となるよう時間を浪費するものと定義できる。よって実行時間は一定であり、それ故予測可能だから、例えば汎用コンピュータシステム等の非決定性システムでオペレーションを決定的に実行することは可能である。
よって、もしも1セットのオペレーションの実行時間を一定の実行期間内に限定できるなら、その実行は予測可能であり、それ故再現可能である。図3は、本発明の一実施形態に従い決定性処理を遂行するプロセス例300を示しており、ここで総実行時間は一定に保たれる。プロセス300はブロック301で始まる。ブロック302では最大実行時間
を判定する。例えば、1つ以上のオペレーションの最大実行時間を、測定により、発見的に、その他により、判定できる。ブロック303では1つ以上のオペレーションが実行され、経過時間の測定が行われる。ブロック304で、決定性エンジンはオペレーションの合計実行時間が一定値となるよう判定最大実行時間まで遅延する。プロセス300はブロック305で終わる。
上述したとおり、決定性エンジンプログラムによって安定的な時間基準が提供されるため、経過時間を測定できる。一実施形態によると、決定性エンジンプログラムは、プロセッサによって、または決定性エンジンが実行するところのコンピュータシステムのその他の構成要素によって、提供される情報に基づき時間を判定できる。一実施例において、決定性エンジンは、周知のPENTIUM(登録商標)タイプのプロセッサを内蔵するIntelベースの汎用コンピュータシステムで実行する。例えば、PENTIUM(登録商標)クラスのプロセッサとともに導入されたCPU命令RDTSC(read timestamp counter)は、プロセッサが最後にリセットされたときから経過したクロックサイクル数を読み取る。タイムスタンプカウンタは64ビット幅であり、コンピュータの寿命より長きにわたり十分なデータを提供する(1.0GHzで、タイムスタンプカウンタは584年以上たって繰り越される)。
もしもコンピュータシステム(例えば決定性エンジン)が解析対象コード部分の前後でタイムスタンプカウンタを読み取るなら、2つの測定値の差は、問題のコードの実行に費やされた総CPUクロックサイクル数を提供する。残された唯一の問題は、このクロックサイクル数をいかに時間に結び付けるかである。オペレーションOの実行に費やされるクロックサイクル数をkと仮定し、以下の等式はそのオペレーションを実行する時間を求める。
Figure 2009507299
ここで、fcpuはCPUクロック周波数である。残念ながらCPUクロック周波数を取得するCPU命令はないから、この値を提供する方法は開発する。
CPU周波数の測定
一実施例において、プログラム可能タイマーは1.193181MHzの公知の固定カウント周波数を有する。もしもコンピュータプログラムがオペレーションの前後にタイマーカウンタを読み取ることができるなら、実行されるオペレーションの実行時間を判定することは可能である。オペレーションOの実行に費やされるタイマーカウント数をkとすると、そのオペレーションを実行する時間は次のとおりに判定される。
Figure 2009507299
もしも説明した両方の方法が同じオペレーションOに適用されるなら、実行時間Tはまったく同じであり、以下の等式に帰結する。
Figure 2009507299
最後に、
Figure 2009507299
上記の論述に基づき、上述したオペレーションwaste W(n)の例を等式(2)で実装することが可能となる。
(a)タイムスタンプカウンタを読み取り、保存する。
(b)オペレーションOを実行する。
(c)保存したタイムスタンプカウンタへTmaxに等しいクロックサイクル数を加える。この値はkendと呼ぶことができる。
(d)タイムスタンプカウンタを読み取る。
(e)タイムスタンプカウンタの値がkendに満たない間は(d)へループする。
以下のことに注意されたい。
・等式(2)及び(3)に提示された誤差Eはステップ(a)、(c)、(d)、及び(e)によるものである。
・ステップ(d)及び(e)の実行にはある程度の時間がかかるため、このループは誤差Eに変動(ループ誤差)を引き起こすことがある。
・シーケンス(a)〜(e)はここで決定性オペレーションOと呼ぶ。
・オペレーション(a)及び(c)〜(e)はここで、決定性エンジンによって遂行される決定性エンベロープまたは関数と呼ぶ。
図4は、本発明の一実施形態による決定性処理の遂行に使われるシステム400の一実施例を示す。より具体的に、システム400は上述したオペレーションの内1つ以上を実装できる決定性エンジン406を含む。システム400は、決定性エンジン406と外部実体403とを含む。外部実体403は、例えば決定性エンジンを使って1つ以上のオペレーションを決定的に遂行させるハードウェア及び/またはソフトウェアコンポーネント(例えばアプリケーション)であってよい。
決定性システム406は、時間基準401とプロセッサ402とを含む。時間基準402は時間保守オペレーションを遂行する。プロセッサ402は、例えば決定性エンジン406の1つ以上の機能を遂行する汎用コンピュータシステムで実行するソフトウェアプログラムを含んでよい。エンジン406は、最大実行時間を一定値に保つことを促進するため指示を受け付けることができる、及び/または提供することができる。この目的を果たすため、プロセッサは1つ以上の指示404を外部実体403へ提供することができる。同様に、外部実体403は1つ以上の指示405をプロセッサ402へ提供することができる。
図4に示す実装例では、時間の経過を追跡するため時間基準401が提供される。時間基準401はまた、既知イベントからの時間による距離と(直接的に、または間接的に)相関する値を提供する。この値は時間の経過に伴い絶えず変化する。この値はここでタイムカウントと呼ぶ。
また、タイムカウントの変動に照らして時間単位をプロットする数学関数を使用することができる。換言するとこの数学関数は、2つのタイムカウント値の差をもとに、2つのタイムカウント値が得られた2つの瞬時の間にどれだけ時間が経過したかを指摘する。この数学関数はこれ以降デルタタイム関数と呼ぶ。
ある特定の時間基準の実装とデルタタイム関数の実装で、いかなる2つの連続するタイムカウント値の間の差と関連した最大タイムスパンがある。この最大タイムスパンは以下において時間基準分解能と呼ぶ。
一実施例において、時間基準401は外部実体へ至るインターフェイスを提供する。このインターフェイスは、プロセッサが時間基準からタイムカウント値を入手することを可能にする。プロセッサが時間基準にタイムカウントを要求するときには、プロセッサによる要求の発行とプロセッサシステムによるタイムカウントの受領との間に遅延が生じることがある。この遅延はここでインターフェイス遅延と呼ぶ。一実施形態によると、このインターフェイス遅延はどんなインターフェイス実装でも予測可能である。特定のインターフェイス実装で、最小インターフェイス遅延と最大インターフェイス遅延との差はインターフェイスジッタと呼ばれる。
図5は、本発明の一実施形態に従い決定性オペレーションを遂行するプロセス500を示す。例えば図4を参照しながら上述したシステム400の1つ以上の構成要素によって、プロセッサ500に関連する1つ以上の動作を遂行できる。
プロセス500はブロック501で始まる。ブロック502ではhold/go信号が生成され、このhold/go信号は外部実体(例えば実体403)によって監視できる。より具体的に、決定性エンジンによってhold/go信号を生成できる。一実施形態によると、hold/go信号は、外部実体による処理のタイミングを制御するため、外部実体に対しインジケータとして機能する。
ブロック503では、決定性エンジンが外部実体から待機要求を受け取る。待機要求は、hold/go信号が状態を変えるまでの時間量を指定できる。決定性エンジンはブロック504で待機期間をタイムカウント単位に変換する。決定性エンジンはブロック505で時間基準からタイムカウント値を入手し、ブロック506ではタイムカウント値に基づき経過時間(例えばタイムスパン)を判定する。
決定性エンジンはブロック507で待機状態に入り、経過時間が待機要求を上回るかこれと等しくなるまではこの状態を保ち、その後ブロック508でhold/go信号が設定される。プロセス500はブロック509で終わる。
本発明の一実施形態によると、プロセッサは、例えば以下のタスクを遂行できるコンピュータを含んでよい。
1.外部実体(例えば外部実体403)によって監視できるhold/go信号(例えば信号404)を、(例えば決定性エンジン406によって)生成する。
2.外部実体から待機要求(例えば信号405)を受け取る。この待機要求は、hold/go信号が状態を変えるまでの時間量を指示する。
3.要求された待機期間を時間単位からタイムカウント単位のそれに変換する。
4.時間基準から(例えばインターフェイスを介し)タイムカウント値を入手する
5.2つのタイムカウント値を用いてデルタタイム関数を適用し、2つのタイムカウント値の差に関連するタイムスパンを判定する。
6.次のとおりに定義された決定性ループアルゴリズムを実行する。
a.待機要求を受け取る
b.要求された期間をタイムカウント単位に変換する
c.hold/go信号をクリアする
d.初期タイムカウントを得る
e.デルタタイム結果が待機要求を上回るかこれに等しくなるまで(>=)、下のブロックを遂行する

Obtain a current time count
Apply delta time function to current−initial time count

Set hold/go signal

もしも逆デルタタイム関数を使用することができるなら、別の実施形態に従い決定性ループアルゴリズムの代替バージョンを下記のとおりに実装できる。
a.待機要求を受け取る
b.要求された期間をタイムカウント単位に変換する
c.hold/go信号をクリアする
d.逆デルタタイム関数を待機要求に適用する
e.逆デルタタイム結果>現在タイムカウントとなる間は下のブロックを遂行する

Obtain the current time count

Set hold/go signal
プロセッサにおける決定性ループアルゴリズムの実行にはある程度の時間量がかかり、この時間は、プロセッサがアルゴリズムをどれくらい速く実行できるかに左右される。この時間量はここで決定性ループアルゴリズムオーバーヘッドと呼ぶ。
決定性ループアルゴリズムオーバーヘッドは2つの要素を、すなわちセットアップオーバーヘッドとループオーバーヘッドとを含む。セットアップオーバーヘッドはプロセッサシステム実装に依存し、ループに先立ち新しいタイムカウント値を取得する初期化命令に関係する。ループオーバーヘッドはプロセッサが1回の実行にかかる時間であり、インターフェイスオーバーヘッドを含み、このインターフェイスは時間基準がプロセッサの外にある場合にはプロセッサシステムに関係しない。
一実施形態によるセットアップオーバーヘッドとループオーバーヘッドはいずれも(そして結果的には決定性ループアルゴリズムオーバーヘッドは)、プロセッサ実装と決定性ループアルゴリズム実装にとって予測可能でなければならない。特定のプロセッサ実装と決定性ループアルゴリズム実装において、セットアップオーバーヘッドの最小値と最大値との差は、ここでセットアップジッタと呼ぶ。同様に、ループオーバーヘッドの最小値と最大値との差はループジッタと呼び、インターフェイスジッタを含む。合計システムジッタは、所与の実装におけるセットアップジッタとループジッタの総合効果を反映する。
前述したいかなるシステム実装で、待機要求の中で要求される期間が時間分解能+セットアップオーバーヘッド+ループオーバーヘッド+set hold/go signal遷移時間を上回るかこれに等しいなら、合計システムジッタに等しい精度で待機要求の
中で要求される期間内にhold/go信号の状態を変えることは可能である。
外部システムは決定性エンジンへ待機要求を送信し、hold/go信号がアサートされるのを待つ。待機要求が決定性エンジンへ達するのに要する時間量は待機要求遅延として知られている。本発明の一実施形態によると、決定性エンジンのユーザ実装にとって待機要求遅延は予測可能でなければならない。前述した他の遅延と同様、待機要求のシグナリングと関連した待機要求ジッタもある。もしも外部システムで待機要求遅延が分かるなら、外部システムは待機要求を通じて送信される期間の数学的操作によって遅延を補償できる。
hold/go信号が外部システムに達するのに要する時間量はhold/go信号遅延として知られている。本発明の一実施形態によると、決定性エンジンのユーザ実装にとってhold/go信号遅延は予測可能でなければならない。前述した他の遅延と同様、hold/go信号と関連したhold/go信号ジッタもある。
外部システムがhold/go信号の状態変化に応答するのにかかる時間量はここでシステム反応レイテンシと呼ぶ。一実施形態によると、決定性エンジン(例えば外部実体403)のユーザ実装にとってシステム反応レイテンシは予測可能でなければならない。前述した他の遅延と同様、システム反応レイテンシと関連したシステム反応ジッタがある。
最小待機要求期間が時間分解能+セットアップオーバーヘッド+インターフェイス遅延+set hold/go signal遷移時間+システム反応レイテンシを上回るなら、決定性エンジンのユーザが所与の待機要求について達成できる精度は合計システムジッタ+システム反応ジッタに等しい。
様々な実施形態による決定性エンジンの用途は、例えばソフトウェア自動テスト装置(ATE)分野に見出すことができ、テスト機能にかかる時間をすこぶる精密な既定の時間にするのに役立てることができる。既存自動テスト装置ソフトウェアの決定性精度は精々10分の数マイクロ秒である。本発明の一実施形態によると、合計システムジッタが比較的小さく、システム反応ジッタが小さく、遅延とオーバーヘッドが最小限の決定性エンジンのソフトウェア実装により、ATEソフトウェアの決定的挙動は大幅に向上する。
本発明の一実施形態によると、上述した決定性エンジンは、カリフォルニア州サンタクララのIntel Corporationから入手できる周知のIntel PENTIUM(登録商標) IVプロセッサを用いて実装できる。Intel PENTIUM(登録商標) IVクラスのプロセッサは、分解能が比較的高くアクセスに伴う遅延が非常に短い埋め込み時間基準を含む。この埋め込み時間基準はタイムスタンプカウンタ(TSC)と呼ばれている。
TSCは、カウンタの初期化以降に発生したプロセッサクロックサイクル数を累積するカウンタである。PENTIUM(登録商標)プロセッサのクロック周波数は(ある種の状況下で)固定されていると考えることができ、これは時間基準分解能が一定で1/プロセッサ周波数に等しいことを意味する。例えば、3.0GHzの公称周波数で実行するPENTIUM(登録商標) IVプロセッサは333psの時間基準分解能を提供する。
さらに、TSCの内容は単一のプロセッサ命令(RDTSC)で読み取ることができる。これは、インターフェイス遅延がその単一命令の実行時間となることを意味し、これは3.0GHzで実行するPENTIUM(登録商標) IVプロセッサで40ns程度である。このプロセッサの場合、インターフェイス遅延ジッタは3ns程度である。
PENTIUM(登録商標) IVプロセッサを使用する上述の実装で、凡その決定性ループアルゴリズムオーバーヘッドは356ns、セットアップオーバーヘッドは312ns、ループオーバーヘッドは44nsである。命令パイプラインが広く使われるPENTIUM(登録商標) IVプロセッサの内部アーキテクチャのため、標準的な実測合計システムジッタ値を検知することはできない。
一実施形態によると、決定性エンジンによって遂行されるオペレーションは、汎用コンピュータシステム上で実行するソフトウェアプログラムによって遂行できる。例えば、本発明の様々な態様を1つ以上のソフトウェアプログラムで実装できる。一実施例においては、これ以降SMX_Timingと呼ぶ単一クラスの中で決定性エンジンを埋め込むことができる。以降の節では、かかるクラスの一実装を説明する。以下の方法が専ら実施例として提示されていること、そして本発明が特定の方法に、または方法の組み合わせに、限定されないことは理解されよう。
基本的オペレーション
SMX_Timingは、インクルードファイル(例えばSMX_Timing.hxx)と支援DLL(例えばSMX_Timing.xyz、ここで「xyz」は、Windows(登録商標)プログラミング環境なら「dll」プログラムであり、INtimeプログラミング環境なら「rsl」プログラムである)として実装できる。インクルードファイルに包含されるクラス記述は、時間的に重要なメソッドの実装を(インラインメソッドとして)含む。DLLファイルは、クラス較正ルーチンを含むユーティリティメソッドを提供することができる。
SMX_Timing DLLはロード時にクラス較正を遂行し、CPU周波数を判定する。一実施形態によると、この較正プロセスは自動的に実行し、CPUクロックが変わらない限り再び実行する必要はない。クロックは、例えばCPU保護メカニズムが電力損失を抑えるためスピードスロットルを使用しない限り、変わらない。
ひとたびクラスが較正されCPU周波数が判明したら、新しいクラスオブジェクトを作成でき、利用可能なユーティリティメソッドはどれでも使用することができる。較正プロセスは非常に重要であるため、その成功を、クラスのオブジェクトをインスタンス化する前に、またはDLLで利用可能なユーティリティ関数のほとんどを使用する前に、チェックするべきである。較正プロセスの確認は容易く果たすことができ、例えば静的クラスメソッド(例えば、これ以降IsInitializedメソッドと呼ぶもの)をコールすることによって果たすことができる。これより、かかるメソッドの使用を他のルーチン例と併せてより具体的に説明する。
SMX_Timingクラスメソッド
一実施形態によると、このクラスにおける時間的に重要なメソッドは、性能上の理由からアセンブリ言語でインライン関数として実装する。それらは単純であるため、主要なメソッドを以下に説明する。
SMX_Timing(void)
一実施形態によると、タイミングクラスで作成されるオブジェクトは独自の較正係数を含む。タイミングクラス構成子はグローバル較正係数をオブジェクトの中にコピーし、かくしてオブジェクトは、必要に応じてオブジェクト単位で修正できる。
SMX_U64 Start(void)
Startメソッドは現在のタイムスタンプカウンタを読み取り、そのカウンタ値をマーカー属性に保存する。このマーカー属性は、経過時間を計算するため(例えば、Elapsedメソッドと呼ばれるメソッドを使用)、または所定の時間が過ぎるまで待つため(例えば、WaitUntilメソッドと呼ばれるメソッドを使用)、基準として使用することができる。以下のコード例は説明した機能を実装する。
Figure 2009507299
上記のコードは次のとおりに機能する。行1及び2はCPUの同期をとる。実行されている命令はどれも、行4でタイムスタンプカウンタがサンプリングされる前に終了する。行6は現在のオブジェクトデータエリアのポインタを取得する。行8及び9はタイムスタンプをマーカー属性に保存する。このメソッドは終了時に、タイムスタンプカウンタをCPUクロックティック数で表す符号無し64ビット値を戻す。
SMX_S64 Elapsed(void)
Elapsedメソッドは、現在のタイムスタンプと、Startメソッドが最後にコールされるまでにサンプリングされるタイムスタンプとの差を計算する。所望のオーバーヘッドの除去を可能にするためオプションの較正係数があってよい。以下のコード例はElapsedメソッドの実装を実証するものである。
Figure 2009507299
このコードはStartメソッドとよく似ており、違いは、サンプリングしたばかりのタイムスタンプとマーカーとして保存されたタイムスタンプとの差を計算する行8及び9と、eCF属性に格納されたcalfactorを差し引く行11及び12だけである。このメソッドの計算結果は符号付き64ビット値として戻される(較正係数次第では負の値が返される)。
クラス初期化プロセス(例えば、DLLがロードされるとき、またはCalibrateTimingメソッドがコールされるとき)で計算されるコールファクタは、StartメソッドとElapsedメソッドの相継ぐコールの間に存在するオーバーヘッドである。較正係数により、以下のコードシーケンスでElapsedメソッドによって戻される値はゼロである。
Figure 2009507299
オペレーションにどれくらいかかるかを計算するにはデフォルトの較正係数を使用するとよい。以下の実施例に示すオペレーションの前にはStartメソッドのコールを、そして後ろにはElapsedメソッドのコールを、追加できる。
Figure 2009507299
デフォルトの較正係数が満足のいくものでなければ、較正係数を変更するためSetElapsedCalFactorメソッドをコールできる。
SMX_U64 WaitUntil(SMX_U64 delta)
WaitUntilメソッドは、上述したwaste機能を実装するルーチンの一例である。このメソッド例は、Startメソッドが最後にコールされたときからのフォワードデルタを計算し、タイムスタンプが算出された終了時間に等しくなるかこれを超過するまでタイトループの中で待機する。
このメソッド例では2つの変更可能オプションが、すなわち実行時間を調整するための較正係数と(平均ループ誤差)、メソッドをその値に応じてイネーブル/ディスエーブルするイネーブルフラグとが認められる。較正係数はSetWaitUntilCalFactorメソッドによって変えることができ、イネーブルフラグはEnableメソッドとDisableメソッドを使って変更できる。一実施形態によると、イネーブルフラグのデフォルト値は偽(WaitUntilメソッドはディスエーブル)である。
以下のコード例はWaitUntilメソッドを実装するものである。
Figure 2009507299
記載されたコードは次のとおりに作用する。行1及び2は実行フローの同期をとる。行4は現在のオブジェクト(これ)のポインタを取得する。行6乃至8は要求された待機期間をロードする。行10及び11はメソッドがイネーブルか否かをチェックする。行12及び13は、メソッドがイネーブルである場合に要求期間をゼロに変更する。行17及び18は、要求待機期間からプログラムされた較正係数を引く。行20及び21は、前の計算を、結果が負である場合に、ゼロに調整する。行23及び24は最終的なタイムスタンプを計算する。最後に、行26乃至29のループは算出タイムスタンプに達するまで待機する。戻り値は、ループ誤差をCPUクロック数で表す符合無し64ビット値である。
WaitUntilメソッドは較正のときに様々なデルタ値で実行される。このプロシージャは2つの興味深い数字を、すなわちメソッドの実行にかかる最小時間(オーバーヘッド)とループ誤差とをもたらす。デフォルトの較正係数は、オーバーヘッドとループ誤差の値の半分との和である。
WaitUntilメソッドを上記のように提案するとおりに使用するため、以下のコード例を実装できる。
Figure 2009507299
上記の実施例において、もしもcomputedDelayに相当する時間がRunCodeHere関数の最大実行時間より大きければ、上記の抜粋は上述した決定性オペレーションOである。他方、もしもRunCodeHere関数の実行時間が値computedDelayに相当する時間より大きければ、オペレーションは決定性でなく、Start及びWaitUntilメソッドによって遂行されるRunCodeHere関数を取り巻くエンベロープは無用である。上記のコードを決定性にするため値computedDelayを求める方法を以下に記す。
SMX_U64 WaitUntilEx(SMX_U64 delta)
WaitUntilメソッドとは対照的に、ここでWaitUntilExメソッドと呼ぶメソッド例は、時間の浪費を援助するためオペレーティングシステム(例えば、Windows(登録商標)またはINtimeオペレーティングシステム関数)を使用する。かかるメソッドを使用する開発者は長い待機時間を設け(例えば100ミリ秒)、マウスを動かす、ネットワーク上でパケットを交換する等、オペレーティングシステムに仕事をするための時間を与えつつ、消費時間のコントロールを維持することができる。上記のWaitUntilメソッド例を使用すると、適切なタイムスタンプを待つタイトループはCPUをロックし、見かけ上の活動はなくなり、ユーザにはCPUがハングしたような誤った印象を与える。
WaitUntilExメソッド例は浪費する時間を2つの部分に分ける。第1の部分は、スリープ関数の内1つを使用するオペレーティングシステムによって浪費され(例えば、Windows(登録商標)の場合はSleep関数、INtimeの場合はknRtSleep関数)、第2の部分は、合計消費時間の良好なコントロールを提供するためWaitUntilメソッドによって浪費される。戻り値はWaitUntilメソッドによって戻されるループ誤差である。
SMX_U64 Wait(SMX_U64 clks)
このメソッドは、例えば次のとおりに実装できる。
Figure 2009507299
このWaitメソッドは、ようするに所定のクロック数(clks)が浪費されるのを待つ。戻り値はWaitUntilメソッドによって戻されるループ誤差である。
SMX_U64 WaitEx(SMX_U64 clks)
このメソッドは、例えば次のとおりに実装できる。
Figure 2009507299
このWaitExメソッドは、所定のクロック数(clks)が浪費されるのを待つ。
戻り値はWaitUntilExメソッドによって戻されるループ誤差である。
SMX_U64 GetElapsedCalFactor(void)
このメソッド例は、Elapsedメソッドによって較正係数として使用されるCPUクロックティック数を表す符号無し64ビット値を戻す。
void SetElapsedCalFactor(SMX_U64 newCF)
このメソッドは、Elapsedメソッドによって使用される較正係数を、パラメータとして渡される符号無し64ビット値に設定する。このパラメータには、CPUクロックティック数になることが見込まれる。
void ResetElapsedCalFactor(void)
ResetElapsedCalFactorメソッドは、Elapsedメソッドによって使用される本来の較正係数を回復させる。現在の較正係数は失われる。
SMX_U64 GetWaitUntilCalFactor(void)
このメソッドは、WaitUntilメソッドによって較正係数として使われるCPUクロックティック数を表す符合無し64ビット値を戻す。
void SetWaitUntilCalFactor(SMX_U64 newCF)
このメソッドは、WaitUntilメソッドによって使用される較正係数を、パラメータとして渡される符号無し64ビット値に設定する。このパラメータには、CPUクロックティック数になることが見込まれる。
void ResetWaitUntilCalFactor(void)
ResetWaitUntilCalFactorメソッドは、WaitUntilメソッドによって使用される本来の較正係数を回復させる。現在の較正係数は失われる。
SMX_U64 GetCPUFrequency(void)
この静的メソッドは、較正プロセスで判明するCPU周波数をヘルツ単位で戻す。戻り値は符号無し64ビット数である。
SMX_U64 GetKernelTickClk(void)
この静的メソッドGetKernelTickClkは、1カーネルティックに相当するCPUクロックティック数を表す符号無し64ビット数を戻す。Windows(登録商標)オペレーティングシステムにおけるカーネルティックは10msであり、INtime環境におけるカーネルティックは値100us、200us、250us、500us、1ms、2ms、5ms、及び10msのいずれかになる。
bool IsInitialized(void)
この静的メソッドは較正結果の検証に役立てることができる。較正に失敗するとクラスオブジェクトは常軌を逸した挙動を見せ、使用するべきではない。このメソッドは、最後の較正に問題がなければ真を戻し、さもなくば偽を戻す。
void Enable(void)
この静的メソッドはイネーブルされた属性を真に設定する。この属性は、WaitUntilメソッドがその機能をイネーブル/ディスエーブルするのに使用することができる。このメソッドはまた、INtime環境で実行する場合にカーネルスケジューラを停止させる。一実施形態によると、WaitUntilメソッドはデフォルトによりディスエーブルになる。
void Disable(void)
この静的メソッドは、イネーブルされた属性を偽にリセットする。この属性は、WaitUntilメソッドがその機能をイネーブル/ディスエーブルするのに使用することができる。詳細についてはWaitUntilメソッドの説明を参照せよ。このメソッドはまた、INtime環境で実行する場合にカーネルスケジューラを再起動する。一実施形態によると、WaitUntilメソッドはデフォルトによる。
bool IsEnabled(void)
この静的メソッドはWaitUntilメソッドの状態を確認し、もしもこれがイネーブルなら真を戻し、さもなくば偽を戻す。
SMX_U64 GetLoopError(void)
上記のWaitUntilメソッドのコード例で見てとれるように、行26〜29のループは、タイムスタンプカウンタが値(マーカー+デルタ−calfactor)に等しくなるか、またはループ誤差によりこれを超過すると直ちに終了する。WaitUntilメソッドは較正のときに様々なデルタパラメータ値で実行され、一連のループ誤差値をもたらす。
この静的メソッドは、較正プロセスで判明する最大ループ誤差をCPUクロックティック数で表す符号無し64ビット数を戻す。
SMX_U64 GetWaitUntilOverhead(void)
このメソッドは、WaitUntilメソッドの実行にかかる最小実行時間として判明するCPUクロックティック数を表す符号無し64ビット値を戻す。
void DisableAllInterrupts(void)
この静的メソッドは全ての割り込みをディスエーブルし、現在イネーブルになっている割り込みを保存する。外的イベントが実行中プログラムの決定的挙動に支障をきたさないことを保証するのに役立てることができる。割り込みは、I/Oオペレーションやオペレーティングシステムコールの前にRestoreInterruptsメソッドを使って復元できる。
void RestoreInterrupts(void)
この静的メソッドは、上記のDisableAllInterruptsメソッドがコールされたときにアクティブだった割り込みをイネーブルする。
bool CalibrateTiming(void)
この静的メソッドは較正プロセスを実行し、ElapsedメソッドとWaitUntilメソッドとによって使用される較正係数と、CPU周波数とを判定する。このメソッドは、較正に成功した場合は真を戻し、さもなくば偽を戻す。
SMX_U64 Clk2Time(SMX_U64 clks, enum TimeUnits unit)
これは、CPUクロックティックを所定の時間単位に変換するために使用する静的メソッドである。使用可能な単位には、例えば秒(SEC)、ミリ秒(MILLISEC)、マイクロ秒(MICROSEC)、ナノ秒(NANOSEC)、ピコ秒(PICOSEC)がある。
SMX_U64 Time2Clk(SMX_U64 time, enum TimeUnits unit)
これは、所定の時間単位による時間をCPUクロックティックに変換するために使用する静的メソッドである。使用可能な単位には、例えば秒(SEC)、ミリ秒(MILLISEC)、マイクロ秒(MICROSEC)、ナノ秒(NANOSEC)、ピコ秒(PICOSEC)がある。
void FlushCaches(void)
これは、全てのキャッシュを消去するために使用する静的メソッドである。このメソッドは、ワーストケースシナリオを助長するためベンチマークの前に使用することができる。
決定性ドライバを作成するステップ例
決定性ドライバの作成は概して多数の時間測定を要するプロセスであり、概して時間のかかる作業である。露出するAPIは、様々なパラメータで実行されているときに計時しなければならない。決定性ドライバの設計にあたってソフトウェア開発者を支援するため、これよりいくつかのガイドラインを含む決定性ドライバ作成プロセスを説明する。
ステップ1−アルゴリズムの選択
ドライバの記述者は開発過程でアルゴリズムの選択に細心の注意を払わなければならない。決定性ドライバの作成にあたっては、変動を補償するためその実行時間にある程度の「クッション」を加えることになるため、安定的で高速のアルゴリズムを選ぶことが大切
である。
実行時間が、まったく同じとまではいかなくともほぼ同じ、実行パスを作成する。これは均衡実行(balanced execution)と呼ばれている。この方法は一般的に実装が困難ではあるが、達成できるなら実装するだけの価値はある。この均衡実行手法を例証する一実施例を以下に示す。
Figure 2009507299
この実施例で、もしも比較に強い傾向があるなら、例えばaが大抵はbより大きいなら、またはbより小さいなら(不均衡実行時間)、この方法に実際的効果はなく、実行時間の最適化を優先するべきである。
Figure 2009507299
均衡実行を提供するもうひとつの手法は、if文を完全に取り除くことを含む。上記と同じオペレーションを、例えば次のとおりに実装できる。
Figure 2009507299
前の場合より僅かに複雑ではあるが、上記のソリューションの実行時間は均一であり、分岐がない。条件分岐を使用する場合、例えばif文を使う場合には、条件に失格するたびに実行時間が犠牲になるので注意されたい。
ステップ2−実行時間の解析
アルゴリズムを慎重に選んだら、今度はその入力パラメータに応じた実行時間を解析する。以下の2つの実施例は、APIの入力がその実行時間にどう影響するかを示すものである。
Figure 2009507299
上記の関数の論理的解析から、func1の実行時間がその入力とは無関係に一定であること、そしてfunc2の実行時間がその入力に大きく左右され不定であることが分かる。ここではfunc1のような関数を単純関数と呼び、func2のような関数は複雑関数と呼ぶ。
所与のルーチンの実行時間がその入力の変化に大きく左右されない場合は、そのルーチンを単純関数として扱うとより好都合である。例えば、もしも上記の関数func2が10未満の値だけでコールされるなら、その実行時間を単純関数としてモデル化すると非常に好都合である。func2がゼロ以下の入力の場合に単純関数として挙動すること、そしてその実行時間がxの増加に伴い直線的に増加することに注意されたい。
ステップ3−ベンチマーク
残念ながら、関数の実行時間を判断するにあたって関数挙動の単純な論理的解析では不十分である。他方、適切なベンチマークプロシージャを設計するにあたって解析は重要である。前の節で示したとおり、単純関数の刺激を変える必要はないが、複雑関数にはその必要がある。数通りのサンプルベンチマークルーチンを以下に記す。
単純関数のベンチマーク
単純関数のベンチマークは以下に記すようなルーチンによって遂行できる。入力パラメータは重要でないから、有効なパラメータならどれでも選択できることに注意されたい。
Figure 2009507299
上記のベンチマークルーチンの実行は次のとおりに進行する。行1はWaitUntilメソッド(及び決定性エンジン)をディスエーブルし、かくして行8、9、及び10によって形成される決定性オペレーションOは通常のオペレーション(非決定性オペレーション)になる。WaitUntilメソッドはディスエーブルされるから、値anyValueは重要でない。
行5は、実行時間のワーストケースを生起させるため全てのキャッシュ(コードとデー
タ)を消去する。行6及び12は、関数func1と行8、9、及び10によって形成されるその決定性エンベロープを実行する時間を測定する。Tが、行8、9、及び10によって形成される決定性オペレーションOによって費やされる合計時間を測定する点に注意されたい。
決定性エンジンはディスエーブルされるから、行12で測定される値は、関数func1の実行時間に、決定性エンジンに固有の少量のオーバーヘッドを加えたものに相当する(上記の等式(2)及び(3)におけるE)。
上記のコード断片の実行後は、サンプルの配列の中で最大値を検索できる。一実施形態によると、配列の中で実行時間がサンプリングされ、収集データに対して統計解析を行うことができる。具体的に、ピーク・トゥ・ピーク実行時間変動(ジッタ)と平均実行時間をチェックすれば、関数の挙動をよりよくつかむことができ、前に行った解析の誤りが指摘されることもある。
ベンチマーク対象の関数の実行時間の最大値が定まったら変数computedDelayを定めることができ、予測された挙動を確認するため以下の抜粋コード例を実行できる。
Figure 2009507299
サンプル配列をプロットするとフラットな線になり、場合によっては微細な変動を伴う。WaitUntilメソッドには固有の誤差があること、そしてループ誤差の範囲内で誤差が見込まれるということを憶えておかなければならない。開発者はループ誤差値を求めるため、上述したGetLoopErrorメソッドをコールできる。前の実施例で、当初の解析が正しかったことをチェックする安全措置として関数func1が可変引数jとともにコールされたことに注意されたい。
複雑関数のベンチマーク
複雑関数のベンチマークは予想どおり、より複雑である。上記の関数例func2では2次元行列を作成する必要がある。一方の次元は入力値(x値)を表し、他方の次元は特定の入力値(固定x)で抽出されるサンプルを表す。func2はただひとつの従属関係(xパラメータ)を持つから、2つの次元を持つ行列を作成できる。一般的に、各従属変数につき1つの次元が作成され、もうひとつは全ての変数が固定された場合に抽出されるサンプルのために作成される。関数func2のベンチマークルーチンの実施例を以下に示す。
Figure 2009507299
上記のリストと単純関数に使ったそれとの主な違いは、関数func2の入力xを変化させるためもうひとつのforループが追加されたことにある。刺激は、値の範囲全体をカバーする必要はないが、ベンチマーク対象の関数で全ての実行パスを使用するべきである。func2の挙動は、入力パラメータがゼロ以下のときとこれが正のときとで異なるから、上記のベンチマークルーチンではMINの値をゼロに満たない何らかの値に設定し、MAXの値はゼロを上回る何らかの値に設定しなければならない。実行パス当たりの適切な(最小の)点数は関数次第であり、開発者は、実行時間内で挙動パターンが監察されるまでベンチマークを遂行する必要がある。
この関数はx値ごとに最大値を持つから、開発者には2つのオプションがある。つまり、全ての入力xを特定の入力で判明する最大値に結び付ける表を作成するか、または入力xに対する実行時間を表す関数を作成する。第1のオプションは、入力スパンが大きく表をメモリに収めることができないことから、必ずしも可能であるとは限らない。第2のオプションは実装がより複雑ではあるが、通常はこの方法を用いる。
我々は前の解析から、関数func2の実行時間がゼロ以下のx値で一定となり、x値の増加に伴い増加すると推定した。この挙動を具体化する関数は次のとおりである。
Figure 2009507299
上記の関数は次のとおりに実行する。もしもxがゼロ以下なら、論理オペレーションは()まで評価し、executionTime関数はB nsを戻す。もしもxの値がゼロを上回るなら、実行時間はxの単位につきAずつ増加する。例えば、もしもxが100に設定されるなら実行時間は(100 * A + B)nsになる。A及びBの値はベンチマークの実行後に判定される。WaitUntilメソッドは実行にあたってクロックティック数による値を期待するから、executionTime関数ではTime2Clkメソッドをコールしてクロックティック数への変換が行われることに注意されたい。このベンチマークルーチンは新しいアーキテクチャを考慮に入れるため変更できる。変数anyValueは、以下に示す関数コールに置き換えることができる。
Figure 2009507299
実行時間を計算するための新しい関数コールに伴い全体的な実行時間が増えることに注意されたい。executionTime関数はWaitUntilメソッドが作用する前にコールされるから、実行時間の増加を除けば決定性オペレーションOに影響は及ばない。
ベンチマークルーチンを用意した開発者は、A及びBの値を定めることができる。1つの目標は、executionTime関数の中で差し替えられたときに、同関数によって戻される結果が常に実際の実行時間(非決定的時間)より高くなるような1対の値を作成することである。選択される1対の値がこの目標を満たすことを確認するため、単純関数func1の場合と同様のベンチマークルーチンを再び実行してよい。
executionTime関数で計算された時間がns単位で明示的に計算され、その後クロックティック数に変換されたことに気づくであろう。これは、一実施形態によると、ATEシステムの望ましい特性のひとつが相関性だからである。
2つのシステムを比較した場合の必然的な違いのひとつにCPUクロック周波数がある。たとえ仕様が一致する場合でも、各CPUの実効速度は異なる。さらに、テストアプリケーションの寿命にわたって実行時間を一定に保つ必要があるから、機能不全やインストールベースの拡張等、数多くの要因のため、当然のコンピュータアップグレードが必要となる。これを踏まえ、実行時間をクロックティック数で測定することがなぜ得策でないかを開発者は理解するであろう。
ステップ4−タイミング表の組み立て
SMXアーキテクチャでは全てのドライバが少なくとも1つのタイミング表を有する。理論上は、顧客へ出荷される異なるコンピュータごとに1つのタイミング表を作成しなければならない。
タイミング表は、データ表と、複雑関数のタイミング挙動を表す実行時間モデル(タイミング関数)と、タイミング表に関する情報を報告するいくつかの標準関数とを保持するDLLとして実装する。
一実施形態によるデータ表は配列であり、ここで各要素は以下の構造例によって表される。
Figure 2009507299
上記の構造例で、pFuncは複雑関数によって使用されるタイミング関数のアドレスを所持するvoidポインタであり、timeは単純関数によって使用される実行時間を所持し、unitはtimeフィールドで使用する単位であり、clockTicksは、現在CPUクロック速度への対(time、unit)の変換結果を包含する。この変換プロセスはDLLがロードされるときに1度だけ行われるということに注意されたい。
タイミング関数はいくつものパラメータを持つことができるが、一実施例においては、クロックティック単位の実行時間を戻すべきである。事実、タイミング関数はすこぶる頻繁に使われるから、可能な限り高速であるべきである。実際のドライバにおいて、もしも上記のexecutionTime関数を次のように実装したならば、より有用且つ高速のものになる。
Figure 2009507299
ここで、値A及びBはDLLのロード時に時間からクロックティック数に変換される。この方法を用いれば、時間のかかる変換プロセスを1回で実行できる。
以下のタイミング表は、1つの単純関数と1つの複雑関数がリストされている一実施例である。
Figure 2009507299
タイミング表DLLは、タイミング表に関する情報を提供するため3つのルーチンを含むことができる。それらは一定で以下に類似してよい。
Figure 2009507299
第1のルーチンはタイミング表のアドレスを戻し、第2のルーチンはタイミング表の要素サイズを戻し、最後のルーチンはタイミング表の中の列数を戻す。
標準プロシージャとして、DLL main(SMX_DLL_MAIN)は時間を表す全ての定数をクロックティック数に変換するため必要とされるコードを包含する。次のリストはその実装を例証するものである。
Figure 2009507299
SMX_Timingプロジェクトでは、タイミング表の管理にあたって開発者を支援するクラスを定義できる。クラス名はSMX_TimingTableManagerであり、ドライバはこれを継承し使用することができる。
Figure 2009507299
決定性エンジンの用途
一実施形態による決定性エンジンの一用途は、時間の点で本質的に非決定性であるシステムで決定性の挙動を提供することである。説明したとおり、Intel PENTIUM(登録商標)クラスのプロセッサを使用するコンピュータシステムは本質的に非決定性である。PENTIUM(登録商標)プロセッサは数レベルのパイプラインと、分岐予測アルゴリズムと、内部キャッシュメモリとを使用するため、命令セットの実行時間はプロセッサの現在の「コンテキスト」に左右される(つまり、各々のパイプラインレベルで復号化されている命令は何か、内部キャッシュメモリの内容と配置、その他)。このため、命令セットの正確な実行時間を演繹的に決定することはできない。決定できるのは最大実行時間である。このため、PENTIUM(登録商標)タイプのプロセッサに基づくシステムは予測可能ではあるが決定性ではない。
本発明の一実施形態によると、所望の一定時間が最大実行時間に等しいかまたはこれを上回るなら、決定性エンジンは命令セットの実行時間を一定にできる。最大実行時間は、関与する命令を解析することによって(さらにその最大実行時間を突き止めることによって)、または様々なプロセッサコンテキストにおける命令セットの実行によって経験的に、判定することができる。
図6及び7では、本発明の様々な実施形態に従いオペレーションを決定的に実行する結果を見ることができる。図6は、非決定性システムによるコード実行例を示す。図示された実施例においては、同じコード部分の実行が3回果たされる。これらの実行は、同じコンピュータによって、または異なるコンピュータによって、遂行されてよい。図示されたとおり、3通りの実行は3通りの総実行時間t、t、及びtに帰結する。決定性の実行を要するソフトウェアシステムは、図6に示す実行時間を提供するコンピュータシステムに一貫性のある実行を当てにできない。
図7は、本発明の様々な態様を実装する1つ以上のシステムによるコード実行例を示す。図示された実施例においては、同じコード部分の実行が同じ総実行時間tで果たされる。ひとつひとつの実行の実行時間は一定であるから、コードによって遂行されるオペレーションは再現可能である。
例えば決定性エンジンは、図7に示された「DE」と呼ばれるオブジェクトの1対のC++メソッドとしてソフトウェアで実装できる。Start()メソッドは実行時間が始まる時点をしるし、Wait()メソッドは時間tが経過するまで決定性エンジンを拘束する。これにより、この命令セットの合計実行時間は常に一定となり、tに等しくなる。
事前に実行時間を把握できることが実行速度より望まれる環境には、決定性エンジンの用途が数多くある。これは、半導体自動テスト装置(ATE)業界のシステムで、特に線
形(アナログ)及び混合信号デバイステストの場合に見られる共通の特色である。かかるシステムではいくつかの異なる入力がテスト対象デバイス(DUT)に提供され、それらの入力に対するDUTの応答を測定する。こうして得た測定値に基づきDUTは機能可能と、または欠陥ありと、判断される。線形及び混合信号デバイスはアナログ信号を生成し、これを測定しなければならないから、測定を行う正確な時点が極めて重要となる。
図8は仮定的デバイス出力と、デバイスが機能可能か否かを確認するため行われる2つの測定(M及びM)とを示す。もしもこれらの測定が非決定性システムでソフトウェアコマンドを使って行われるなら、測定が行われる正確な時間と関連した不正確(ジッタ)が生じるであろう。もしも測定を行う同じソフトウェアを続けて数回(この例では3回)実行するなら、たとえデバイス出力が毎回まったく同じであっても、MとMはまず間違いなく測定ソフトウェアの実行のたびに異なる値を示すだろう。
図8は、測定実行に伴うタイミングジッタから直接的な誤差が測定値に生じることを示している。タイミングジッタの程度によっては測定誤差があまりにも大きくなり、機能可能なデバイスが誤って機能不能と判断されたり、機能不能のデバイスが誤って機能可能と判断されるおそれがある。線形及び混合信号デバイスのためのテストアプリケーションは従来よりこの種の問題に取り組んできており、いくつかのソリューションはあるが、それらはいずれも多大なテスト時間(多数の測定値の平均化)かコスト(より精緻な測定ハードウェア)を余分に伴う。
測定が行われる時間を正確にコントロールするため決定性エンジンの一実装を使用すればタイミングジッタは解消し、さもなくば極端に低下し、多大な時間的犠牲を伴わず、ことによるとさほど精緻ではない測定ハードウェアを使用し、再現性の高い結果が得られるであろう。
測定が行われる時間を指定できることの直接的結果として、テストアプリケーションソフトウェアは、それが実行するところのプロセッサ速度から独立する。例えば、ある特定の速度(例えば2.0GHz)で実行するコンピュータプラットフォームでテストアプリケーションを開発する場合、そのアプリケーションによって遂行される測定は間接的にそのプロセッサ速度に縛られることになる。もしもそのテストアプリケーションをより速いコンピュータシステム(例えば3.0GHz)へ移すと、おそらく測定は想定以上に速く実行され、そのようなより速い作動も間違った結果をもたらす。既存のテストアプリケーションをより高速なプロセッサシステムへ移すことは、システム開発者にとって多大な時間とコストがかかる作業である。
逆に、テストアプリケーションにおいて決定性エンジンを利用すれば、定義上、全ての測定は常に同じ所定の時点に行われる。これは、テストアプリケーションをより高速なプロセッサへ移すにあたって、アプリケーションに対する変更が不要であることを意味する。このためユーザは、テストアプリケーション全体(通常は何千もの測定を含む)の移植に取り組む代わりに、特定の測定に絞ってテスト時間の改善を図ることができる。
これまで本発明の少なくとも1つの実施形態の態様をいくつか説明してきたが、当業者が様々な変更、修正、及び改良を容易く考え付くことは理解されよう。かかる変更、修正、及び改良はこの開示の一部をなすと意図され、本発明の精神と範囲の中にあると意図される。相応に、上記の説明と図面は例証に過ぎない。
本発明の様々な態様が実装できるコンピュータシステム例を示す。 本発明の一実施形態によるシステムアーキテクチャ例を示す。 本発明の一実施形態による決定性処理を遂行するプロセスである。 本発明の一実施形態による決定性エンジン例のブロック図である。 本発明の別の実施形態による決定性処理を遂行する別のプロセスである。 非決定性システムによるコード実行例を示す。 本発明の一実施形態による1つ以上の決定性システムによるコード実行例を示す。 本発明の態様を提示する仮定的デバイス出力と測定とを示す。

Claims (34)

  1. 決定性処理を遂行するシステムであって、
    1つ以上の命令を実行するように構成される処理実体と、
    前記1つ以上の命令の実行時間を一定値となるよう調整するように構成されるコンポーネントとを備える、システム。
  2. 前記コンポーネントは、前記1つ以上の命令の最大実行時間を調整するように構成される、請求項1に記載のシステム。
  3. 前記コンポーネントは、前記1つ以上の命令の前記実行時間を前記1つ以上の命令の複数の実行にわたって同じ一定値となるよう調整するように構成される、請求項1に記載のシステム。
  4. 前記複数の実行は、異なるコンピュータシステムで起こる、請求項3に記載のシステム。
  5. 前記異なるコンピュータシステムは、異なる処理能力を有する、請求項4に記載のシステム。
  6. 前記コンポーネントは、前記1つ以上の命令の実行を所定の期間内に遂行するように構成される、請求項1に記載のシステム。
  7. 前記コンポーネントは、前記実行時間を前記一定値に調整するためある期間にわたり待機するように構成される、請求項1に記載のシステム。
  8. 時間基準をさらに備え、前記コンポーネントは前記時間基準を用いて相対的時間を判定するように構成される、請求項7に記載のシステム。
  9. 前記コンポーネントは、プロセッササイクルのカウンタ値に基づき相対的時間を判定するように構成される、請求項8に記載のシステム。
  10. 前記時間基準はインターフェイスを含み、前記コンポーネントは前記インターフェイスを通じて処理サイクルのカウンタを入手するように構成される、請求項8に記載のシステム。
  11. 前記コンポーネントは、前記1つ以上の命令の実行に使われる時間量を判定するように構成されており、且つ前記実行時間を前記一定値に調整するためある期間にわたり待機するように構成される、請求項1に記載のシステム。
  12. 前記コンポーネントは、複数のカウンタ値に基づき経過時間を判定するように構成される、請求項9に記載のシステム。
  13. 前記カウンタ値は、プロセッサのタイムスタンプカウンタである、請求項9に記載のシステム。
  14. 前記プロセッサは、PENTIUM(登録商標)タイプのプロセッサである、請求項13に記載のシステム。
  15. 前記システムは、自動テストシステムの一部である、請求項1に記載のシステム。
  16. 決定性処理を遂行するためにコンピュータ実装される方法であって、
    コンピュータシステムで1つ以上の命令を実行する動作と、
    実行する前記動作の実行時間を測定する動作と、
    前記実行時間を一定値に調整するためある期間にわたり待機する動作とを備える、方法。
  17. ある期間にわたり待機する前記動作は、実行する前記動作の後に前記一定値の実行時間が経過するまである期間にわたり待機することを含む、請求項16に記載の方法。
  18. 前記1つ以上の命令の実行を測定する動作と、測定する前記動作に基づき前記1つ以上の命令の最大実行時間を判定する動作とをさらに備える、請求項16に記載の方法。
  19. 前記一定値を前記最大実行時間に設定する動作をさらに備える、請求項18に記載の方法。
  20. 前記1つ以上の命令の最大実行時間を判定する動作をさらに備える、請求項16に記載の方法。
  21. 前記一定値を前記最大実行時間に設定する動作をさらに備える、請求項20に記載の方法。
  22. 前記1つ以上の命令の前記実行時間を前記1つ以上の命令の複数の実行にわたって同じ一定値となるよう調整する動作をさらに備える、請求項16に記載の方法。
  23. 前記複数の実行は、異なるコンピュータシステムで起こる、請求項22に記載の方法。
  24. 前記異なるコンピュータシステムは、異なる処理能力を有する、請求項16に記載の方法。
  25. コンピュータシステムで1つ以上の命令を実行する前記動作を所定の期間内に遂行する動作をさらに備える、請求項16に記載の方法。
  26. 前記実行時間を前記一定値に調整するためある期間にわたり待機する動作をさらに備える、請求項16に記載の方法。
  27. 相対的時間を判定する動作をさらに備える、請求項16に記載の方法。
  28. 時間基準を提供する動作と、前記時間基準を用いて前記相対的時間を判定する動作とをさらに備える、請求項27に記載の方法。
  29. プロセッササイクルのカウンタ値に基づき前記相対的時間を判定する動作をさらに備える、請求項27に記載の方法。
  30. 前記1つ以上の命令の実行に使われる時間量を判定する動作と、前記実行時間を前記一定値に調整するためある期間にわたり待機する動作とをさらに備える、請求項16に記載の方法。
  31. 複数のカウンタ値に基づき経過時間を判定する動作をさらに備える、請求項16に記載の方法。
  32. 前記カウンタ値は、プロセッサのタイムスタンプカウンタである、請求項16に記載の方法。
  33. 前記プロセッサは、PENTIUM(登録商標)タイプのプロセッサである、請求項32に記載の方法。
  34. 自動テストシステムによって遂行される、請求項16に記載の方法。
JP2008529161A 2005-09-02 2006-08-29 決定性処理を遂行するシステム及び方法 Pending JP2009507299A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/218,915 US8074059B2 (en) 2005-09-02 2005-09-02 System and method for performing deterministic processing
PCT/US2006/033511 WO2007027595A2 (en) 2005-09-02 2006-08-29 System and method for performing deterministic processing

Publications (2)

Publication Number Publication Date
JP2009507299A true JP2009507299A (ja) 2009-02-19
JP2009507299A5 JP2009507299A5 (ja) 2009-11-05

Family

ID=37809407

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008529161A Pending JP2009507299A (ja) 2005-09-02 2006-08-29 決定性処理を遂行するシステム及び方法

Country Status (7)

Country Link
US (3) US8074059B2 (ja)
EP (1) EP1922611A2 (ja)
JP (1) JP2009507299A (ja)
KR (1) KR20080100330A (ja)
CN (1) CN101278259A (ja)
TW (1) TW200720968A (ja)
WO (1) WO2007027595A2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074059B2 (en) 2005-09-02 2011-12-06 Binl ATE, LLC System and method for performing deterministic processing
US8370537B2 (en) * 2008-09-07 2013-02-05 EADS North America, Inc. Trigger router and test system including the trigger router
US8700943B2 (en) * 2009-12-22 2014-04-15 Intel Corporation Controlling time stamp counter (TSC) offsets for mulitple cores and threads
US20110191675A1 (en) * 2010-02-01 2011-08-04 Nokia Corporation Sliding input user interface
US9572648B2 (en) 2010-12-21 2017-02-21 Justin M. Crank Implantable slings and anchor systems
US8910188B1 (en) 2011-07-14 2014-12-09 Google Inc. Deterministic data processing
US9111072B1 (en) * 2011-08-23 2015-08-18 Tectonic Labs, LLC Anti-reverse engineering unified process
WO2013100896A1 (en) * 2011-12-27 2013-07-04 Intel Corporation Methods and apparatus to manage workload memory allocation
US9348359B2 (en) * 2013-01-31 2016-05-24 Red Hat, Inc. Updating a desired tick rate for a kernel
CN103530227B (zh) * 2013-09-24 2016-02-17 福建星云电子股份有限公司 一种开放式脚本编程系统
CN104572383B (zh) * 2014-11-28 2017-05-03 深圳市芯海科技有限公司 一种基于ate的mcu/soc芯片的测试方法
JP5901870B1 (ja) * 2015-09-15 2016-04-13 株式会社ワコム タッチ検出方法、タッチ検出装置、及びタッチセンサコントローラ
DE102015226249A1 (de) * 2015-12-21 2017-06-22 Siemens Aktiengesellschaft Vorrichtung und Verfahren zum Bereitstellen einer Mehrzahl von reproduzierbaren Werten
CN107665159B (zh) * 2016-07-27 2022-07-12 上海华虹集成电路有限责任公司 安全处理器跳转指令固定执行时间的测试方法
DE102017109239A1 (de) * 2017-04-28 2018-10-31 Ilnumerics Gmbh Computerimplementiertes verfahren, computerlesbares medium und heterogenes rechnersystem
DE102020118563A1 (de) * 2019-07-17 2021-01-21 Steering Solutions Ip Holding Corporation Middleware-system und -verfahren
KR102348256B1 (ko) * 2020-05-11 2022-01-07 한국과학기술원 정형 검증을 이용한 i/o 커널 구현의 강화
US11726817B2 (en) 2020-09-25 2023-08-15 Red Hat, Inc. Scheduling multiple processes with varying delay sensitivity

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03189823A (ja) * 1989-12-20 1991-08-19 Fujitsu Ltd 命令実行方式
JPH04205028A (ja) * 1990-11-29 1992-07-27 Toshiba Corp プログラマブルウェイト信号生成装置
JPH0573296A (ja) * 1991-09-13 1993-03-26 Nec Ic Microcomput Syst Ltd マイクロコンピユータ
JPH05233277A (ja) * 1992-02-21 1993-09-10 Fujitsu Ltd マイクロプロセッサ
JP2000330785A (ja) * 1999-05-18 2000-11-30 Sharp Corp 実時間プロセッサおよび命令実行方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3810119A (en) * 1971-05-04 1974-05-07 Us Navy Processor synchronization scheme
US4733353A (en) * 1985-12-13 1988-03-22 General Electric Company Frame synchronization of multiply redundant computers
US4965717A (en) * 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
US5636367A (en) * 1991-02-27 1997-06-03 Vlsi Technology, Inc. N+0.5 wait state programmable DRAM controller
JPH0773059A (ja) * 1993-03-02 1995-03-17 Tandem Comput Inc フォールトトレラント型コンピュータシステム
US5802360A (en) * 1996-05-01 1998-09-01 Lucent Technologies Inc. Digital microprocessor device having dnamically selectable instruction execution intervals
US5987598A (en) * 1997-07-07 1999-11-16 International Business Machines Corporation Method and system for tracking instruction progress within a data processing system
US6230263B1 (en) * 1998-09-17 2001-05-08 Charles P. Ryan Data processing system processor delay instruction
US6336191B1 (en) * 1999-03-08 2002-01-01 International Business Machines Corporation Method and system for clock compensation in instruction level tracing in a symmetrical multi-processing system
GB2406943B (en) * 2002-12-12 2005-10-05 Advanced Risc Mach Ltd Processing activity masking in a data processing system
US8074059B2 (en) 2005-09-02 2011-12-06 Binl ATE, LLC System and method for performing deterministic processing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03189823A (ja) * 1989-12-20 1991-08-19 Fujitsu Ltd 命令実行方式
JPH04205028A (ja) * 1990-11-29 1992-07-27 Toshiba Corp プログラマブルウェイト信号生成装置
JPH0573296A (ja) * 1991-09-13 1993-03-26 Nec Ic Microcomput Syst Ltd マイクロコンピユータ
JPH05233277A (ja) * 1992-02-21 1993-09-10 Fujitsu Ltd マイクロプロセッサ
JP2000330785A (ja) * 1999-05-18 2000-11-30 Sharp Corp 実時間プロセッサおよび命令実行方法

Also Published As

Publication number Publication date
KR20080100330A (ko) 2008-11-17
WO2007027595A2 (en) 2007-03-08
US20150012733A1 (en) 2015-01-08
TW200720968A (en) 2007-06-01
EP1922611A2 (en) 2008-05-21
US8074059B2 (en) 2011-12-06
US8719556B2 (en) 2014-05-06
WO2007027595A3 (en) 2007-10-11
US20120159131A1 (en) 2012-06-21
CN101278259A (zh) 2008-10-01
US20070055846A1 (en) 2007-03-08
US9189239B2 (en) 2015-11-17

Similar Documents

Publication Publication Date Title
JP2009507299A (ja) 決定性処理を遂行するシステム及び方法
Tsai et al. Nvbitfi: Dynamic fault injection for gpus
Sridharan et al. Eliminating microarchitectural dependency from architectural vulnerability
US7546598B2 (en) Measuring software system performance using benchmarks
Sridharan et al. Using hardware vulnerability factors to enhance AVF analysis
US6374369B1 (en) Stochastic performance analysis method and apparatus therefor
US20100268523A1 (en) System Level Power Profiling of Embedded Applications Executing on Virtual Multicore System-on-Chip Platforms
US20130159977A1 (en) Open kernel trace aggregation
KR20130008035A (ko) 에러 마스킹 팩터를 결정하기 위한 후방 방향 분석의 개선
US6807522B1 (en) Methods for predicting instruction execution efficiency in a proposed computer system
US6651153B1 (en) Methods for predicting cache memory performance in a proposed computer system
Villa et al. Need for speed: Experiences building a trustworthy system-level gpu simulator
Parasyris et al. A framework for evaluating software on reduced margins hardware
Djupdal et al. Lynsyn and LynsynLite: The STHEM power measurement units
Cros et al. Dynamic software randomisation: Lessons learnec from an aerospace case study
US7100027B1 (en) System and method for reproducing system executions using a replay handler
Kästner et al. Confidence in timing
US6493841B1 (en) Method and apparatus for determining expected values during circuit design verification
Mittal et al. Integrating sampling approach with full system simulation: Bringing together the best of both
Busnot et al. Standard-compliant parallel SystemC simulation of loosely-timed transaction level models: From baremetal to Linux-based applications support
Cioroaica et al. Accelerated simulated fault injection testing
González et al. Multicore shared memory interference analysis through hardware performance counters
Schaelicke et al. Profiling I/O interrupts in modern architectures
Chopey et al. The model of software execution time remote testing
Zoubek et al. Overview of worst case execution time analysis in single-and multicore environments

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090109

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090827

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090909

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120626

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120627

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121211