説明

カウンタを用いて遅延を生成するための方法および装置

カウンタを用いて遅延時間を生成するための製造の複数の方法、装置、および複数の製品が開示される。特に、製造の前記複数の方法、装置、および複数の製品は、前記遅延時間に関連する複数のループの数の値およびカウンタに関連する少なくとも1つの特性値を決定する。残りのカウント値は、前記複数のループの数の値に基づいて、その後決定される。前記遅延時間は、前記カウンタと共に、前記複数のループの数の値および前記残りのカウント値に基づいて、生成される。


【発明の詳細な説明】
【技術分野】
【0001】
本開示は、広くは複数のプロセッサシステムに関し、より具体的には、複数のプロセッサシステム内で複数の遅延時間を生成するためにカウンタを用いるための複数の方法、装置および複数の製品に関する。
【背景技術】
【0002】
プロセッサシステムの動作は、例えば、プロセッサコアデザイン、複数の命令セット実装および複数のハードウェア互換性などの、重要な複数のデザイン検討に依存する。多くのデザイン検討は、一般的にプロセッサシステムの複数のハードウェアコンポーネントに関するが、デザイン検討の幾つかは、プロセッサシステムのランタイム段階の間のこれら複数のハードウェアコンポーネントの性能に関する。
【0003】
正確な複数の遅延時間または複数のタイミングを生成することは、プロセッサシステムのランタイム段階の間の特に重要なハードウェアに関するデザイン検討である。複数の遅延時間は、一般的にプロセッサシステムのハードウェア、ファームウェア、ソフトウェア、およびその複数の組み合わせを含むいろいろな部分に関係する。例えば、ハードウェア初期化プロセス間に特定の複数の周辺機器を初期化することは、しばしば、正確な複数の遅延時間の生成を要求する。特に、周辺機器を初期化することは、周辺機器内の複数のレジスタビットが、正確に制御される時間系列に従う連続的な方法でセットされることを要求する。しばしば、制御される時間系列は、ファームウェアを用いて実装され、それが実行された場合、所定の複数の遅延時間および/または複数のタイミング割り込みを生成する。
【0004】
複数のタイミングまたは複数の遅延時間の重要性の別の例は、プロセッサシステムが特定の複数のタイミング要求を有する外部周辺機器と通信する複数の周辺機器通信を含む。この様な複数のタイミング要求は、例えば、特定の時間間隔で、デバイスをポーリングすることを含む。
【0005】
複数の遅延時間または複数のタイミングは、しばしば、例えば、複数のタイマ割り込みおよび複数のクロック割り込みなどの複数の割り込みを用いて実装される。一般的に、複数の割り込みは、適切な複数のタイミングまたは複数の遅延時間を生成するために用いられる信頼できるおよび効果的な複数のリソースである。しかしながら、複数の割り込みは、プロセッサシステムのランタイム段階の間、常には利用可能でなく、それによって、これら複数のリソースなしに適切な複数のタイミングまたは複数の遅延時間を生成することを難しくする。
【0006】
複数の割り込みが利用可能でない一例のシナリオは、プロセッサシステムのプリブート環境において、オペレーティングシステムを起動することに備えて、プロセッサおよび複数の周辺機器が初期化される場合、生じる。特に、複数の割り込みは、プリブート環境において、拡張可能ファームウェアインターフェース規格、1.02版、Intel Corporation、Santa Claraにより2000年12月12日刊行、に適合する拡張可能ファームウェアインターフェース(EFI)の実行の間、利用可能でない。結果として、プリブート環境において複数の割り込みの使用なしで正確な複数のタイミングまたは複数遅延時間を生成することは、しばしば、実現可能ではない。
【図面の簡単な説明】
【0007】
【図1】所望の遅延時間を生成するために用いられる一例のシステムの機能ブロック図である。
【0008】
【図2】図1のタイマ/カウンタを用いた所望の遅延時間の生成に関連したタイマ/カウンタの一例のカウントラインおよび複数の特性値である。
【0009】
【図3】図2の一例のカウントラインおよび複数のカウント値に基づく、一例のカウンタポーリングプロセスの図である。
【0010】
【図4】図1の一例のシステムにより実装される一例の遅延時間生成方法のフロー図である。
【0011】
【図5】図1の一例のシステムにより実装される別の例の遅延時間生成方法のフロー図である。
【0012】
【図6】ここで説明される製造の複数の装置、複数の方法、および複数の製品を実装するために用いられる一例のプロセッサシステムのブロック図である。
【発明の詳細な説明】
【0013】
図1は、所望の遅延時間を生成するために用いられる一例のシステム100の機能ブロック図である。しかしながら、図1のシステム100を詳細に論じる前に、図1に示される構造は、ハードウェアおよび/またはソフトウェアの任意の所望の組み合わせを用いて実装されることを認識することが重要である。例えば、1つ以上の集積回路、複数のディスクリート半導体コンポーネント、または複数の受動電子コンポーネントが使用される。加えて、またはあるいは、構造の幾つかもしくは全て、またはその複数の部分は、機械可読媒体上に記憶される複数の命令、コード、または多のソフトウェアおよび/またはファームウェア等を用いて実装され、それらが例えば、プロセッサシステム(例えば、図6のプロセッサシステム610)により実行される場合、ここで開示される複数の方法を実行する(例えば、図4および図5に示される複数の方法)。
【0014】
一般的に、一例のシステム100は、複数の割り込みまたは同様なものの使用なしに、正確な遅延時間を生成するために、カウンタ(例えば、タイマ/カウンタ)を用いる。結果として、一例のシステム100は、例えば、プロセッサシステムのプリブート環境または任意の他のランタイム段階または複数の割り込みおよび/または他の複数のタイミングリソースが利用可能でない動作状態において、正確な複数の遅延時間を生成するために、使用される。より具体的には、下記でより詳細に説明されるように、一例のシステム100は、正確な遅延時間を生成するために、例えば、複数の最小および最大カウント値ならびにカウンタが最小カウント値から最大カウント値までカウントするのに要する時間量などの、カウンタ(またはタイマ/カウンタ)の既知の複数の特性を使用する。
【0015】
幾つかの例では、一例のシステム100は、カウンタを用いて、所望の遅延時間を生成するために要求される複数のループの数の値(例えば、複数のタイマ/カウンタ転覆イベント)および残りのまたは残余のカウント値を計算する。一例のシステム100は、例えば、ポーリングプロセスにおいて、カウンタの値(例えば、カウント値)を読むように、また、構成される。一例のシステム100は、遅延時間を生成するために、得られた複数のカウント値および計算された複数の値に基づいて、複数の比較を実行する。
【0016】
ここで、図1の詳細に戻る。一例のシステム100は、タイマ/カウンタ102、カウントリーダ104、値修正器106、比較器108、値生成器110、およびループカウンタ112を備え、それらの全ては、図示されるように、通信的に結合される。タイマ/カウンタ102は、カウント値を増やすことまたは減らすことにより、複数のカウント値を生成する、任意の所望のビット長のリセット不可能またはリセット可能カウンタおよび/またはタイマ(例えば、8ビットタイマ/カウンタ、16ビットタイマ/カウンタ等)である。特に、タイマ/カウンタ102は、カウント値を最小カウント値から最大カウント値まで増やすように、および、下で図2に関連してより詳細に説明されるように複数の転覆イベントを生成するように構成される。タイマ/カウンタ102は、カウントリーダ104に通信的に結合され、カウントリーダ104がその複数の値を読むことを可能とし、および/またはその複数の値をカウントリーダ104に送るように構成される。加えて、タイマ/カウンタ102は、値生成器110に通信的に結合され、タイマ/カウンタ102の複数の特性値を値生成器110に提供する。
【0017】
図1に示されるように、カウントリーダ104は、タイマ/カウンタ102、値修正器106、比較器108、および値生成器110に通信的に結合される。カウントリーダ104は、カウント値をタイマ/カウンタ102から得り、ポーリングプロセスまたは複数のカウント値を得るための任意の他の所望の技術を介して、タイマ/カウンタ102の1つの読み出し(すなわち、1つのカウント値を得ること)をするようにおよび/またはタイマ/カウンタ102の複数の読み出しをするように構成される。カウントリーダ104は、カウント値をタイマ/カウンタ102から値修正器106、比較器108、および値生成器110に運ぶように、また、構成される。
【0018】
値修正器106は、例えば、以下により詳細に説明されるように、カウントリーダ104に読まれるタイマ/カウンタ102の複数のカウント値を記憶するために用いられる複数のカウント変数値などの、複数の値を修正するおよび/または更新するように構成される。特に、値修正器106は、カウントリーダ104から複数のカウント値(例えば、タイマ/カウンタ102から読まれる複数のカウント値)および比較器108からの複数の比較結果を受信するまたは取り出すように構成される。値修正器106は、複数のカウント値および/または複数の比較結果に基づいて、例えば、複数のカウント変数値を修正または更新する。加えて、複数のカウント変数値は、比較器108に伝えられる。
【0019】
比較器108は、カウントリーダ104から複数のカウント値を、値修正器106から複数の変数カウント値を、値生成器110から複数の遅延時間生成値を、およびループカウンタ112から複数のループカウント値を受信するまたは取り出すように構成される。比較器108は、複数のカウント値に基づいて複数の比較を実行するようにおよび複数の比較に基づいて複数の比較結果を生成するように構成される加えて、複数の比較結果は、値修正器106、値生成器110、およびループカウンタ112に伝えられる。
【0020】
値生成器110は、例えば、所望の遅延時間を生成することに関連する複数の遅延時間生成値などの複数の値を生成するように構成される。加えて、値生成器110は、カウントリーダ104から複数のカウント値をおよびタイマ/カウンタ102から複数のタイマ/カウンタ特性値を受信するまたは取り出すように構成される。複数のタイマ/カウンタ特性値は、タイマ/カウンタ102の最小カウント値、最大カウント値、およびループ周期値(すなわち、最小カウント値から最大カウント値までカウント値を増やすのに要する時間)を含む。値生成器110は、複数のカウント値および複数のタイマ/カウンタ特性値に基づいて、例えば、複数の遅延時間生成値を生成するように構成される。複数の遅延時間生成値は、比較器108およびループカウンタ112に伝えられる。
【0021】
一般的に、ループカウンタ112は、値生成器110から複数の遅延時間生成値および比較器108から複数の比較結果を受信するまたは取り出すように構成される。加えて、ループカウンタ112は、タイマ/カウンタ102により生成される複数の転覆イベントの数に関連する複数のループカウント値を生成するように構成される。タイマ/カウンタ102により生成される複数の転覆イベントの数は、比較器108により実行される比較動作を介して検出される。ループカウンタ112は、例えば、複数の比較結果および複数の遅延時間生成値に基づき、複数のループの数の値を増やすことまたは減らすことにより、複数のループカウント値を生成する。
【0022】
図2は、一例のカウントライン200および図1のタイマ/カウンタ102を用いて所望の遅延時間を実装することに関連した、タイマ/カウンタ(例えば、図1のタイマ/カウンタ102)の複数の特性値である。一般的に、カウントライン200は、図式的にタイマ/カウンタ102内に記憶されるカウント値および経過時間の間の関係を表す。特定のタイマ/カウンタに対するカウント値および経過時間の間の関係は、例えば、レートの関数であり、カウントライン200により表されるタイマ/カウンタは、このレートでクロックされる。
【0023】
図2に示されるように、一例のカウントライン200は、ゼロカウント値202、ループ周期値T204、および最大カウント値C206により特徴付けられる。これら複数の特性値は、例えば、ランタイム段階の間に所望の遅延時間(T)を実装するために、用いられる。ほんの一例として、一例のカウントライン200は、図1のタイマ/カウンタ102に関連するとして、説明される。しかしながら、一例のカウントライン200は、同様の方法で、任意の他のカウンタ、タイマ、またはタイマ/カウンタに応用される。例を続けて、ゼロカウント値202は、タイマ/カウンタ102により表されるゼロのカウント値または最小値である。最大カウント値C206は、タイマ/カウンタ102が転覆イベントに先立ってカウントできる最大値である。転覆イベントは、タイマ/カウンタ102がその最大カウント値C206に達した場合生じ、続くカウント値は、ゼロカウント値202に等しい(すなわち、C+1=0)。例えば、8ビットカウンタの最大カウント値C206は、数量2−1(すなわち、255)に等しい。このような8ビットカウンタが255のカウント値(すなわち、最大カウント値C206)に達する場合、8ビットカウンタがゼロカウント値202である8ビットカウンタの次のカウント値に増やされる時、転覆イベントは、生じる。8ビットカウンタのループ周期値T204は、タイマ/カウンタ102(図1)がカウント値をそのゼロカウント値202からその最大カウント値C206まで増やすのに要する時間量に等しい。
【0024】
図3は、図2の一例のカウントライン200に基づく、一例のカウンタポーリングプロセスおよび複数のカウント値の図である。図3のカウンタポーリングプロセスは、例えば、図1のタイマ/カウンタ102などのタイマ/カウンタユニットと組み合わせて使用される場合、所望の遅延時間の生成を可能にする。図3に示されるカウンタポーリングプロセスは、タイマ/カウンタ102の1つ以上のカウンタサイクルもしくはループの間に動作しているカウント値をポーリングすること(すなわち、読み出すことまたは別の方法で得ること)により、ランタイム段階の間に得られる複数のカウント値を含む。タイマ/カウンタ102が有効にされてるおよびカウント値を増やしているまたは動作している場合、逐次的な複数のカウント値の一連は、タイマ/カウンタ102により生成される各動作中のカウント値(すなわち、複数のカウント値の一連内の特定のカウント値)は、前回のカウント値C(例えば、前回の複数のカウント値302、306、および308)ならびに/または現在のカウント値C(例えば、現在の複数のカウント値304、308、および310)に関連する。現在のカウント値Cは、タイマ/カウンタ102の現在の値を読むことで得られる。前回のカウント値Cは、タイマ/カウンタ102の動作中のカウント値の前回の読み出しの間に得られた現在のカウント値Cである。
【0025】
各前回のカウント値Cおよび現在のカウント値Cは、前回のカウント変数値XCおよび現在のカウント変数値XCに、それぞれ記憶される(示されない)。複数のカウント変数値XCおよびXCは、それぞれの前回の複数のカウント値Cおよび現在の複数のカウント値Cにより、タイマ/カウンタ102の各読み出しまたはポーリングの後に上書きされる。
【0026】
タイマ/カウンタ102の一例の読み出しは、現在のカウント値C304および前回のカウント値C306により示される。特に、タイマ/カウンタ102の動作中のカウント値は、現在のカウント変数値XCに記憶される現在のカウント値C304を得るために読み出される。以下で図4および5に関連してより詳細に説明されるように、現在のカウント変数値XCは、前回のカウント変数値XCに記憶される前回のカウント値C(すなわち、前回のカウント値C302)と比較される。比較に基づいて、例えば、前回のカウント値C306などの次の前回のカウント値Cは、現在のカウント値C304に等しくセットされ、前回のカウント変数値XCに記憶され、それによって、前回のカウント値C302を上書きする。この方法で、プロセッサシステム(例えば、図6のプロセッサシステム610)は、前回の複数のカウント値Cおよび複数の現在のカウント値Cを得るために、タイマ/カウンタ102(図1)をポーリングすることで、所望の遅延時間を実装する。
【0027】
複数のカウンタサイクルまたは複数のループは、複数の添え字(0)、(1)、および(n)を用いて示される。ここで、値nは複数のカウンタサイクルまたは複数のループの数を表す。一例として、図3のカウンタポーリングプロセスは、前回のカウント値C302および現在のカウント値C310に縛られる2つのカウンタサイクルまたはループを示す。加えて、各カウンタサイクルは、1つの転覆イベントを有する。転覆イベントは、現在のカウント値Cを前回のカウント値Cと比較することで検出される。前回のカウント値Cが現在のカウント値C(前回のカウント値C308および現在のカウント値C310により図示されるように)より大きい場合、転覆イベントは、生成されたまたは生じた。
【0028】
図4は、図1の一例のシステム100に実装される一例の遅延時間生成方法400のフロー図である。一例の遅延時間生成方法400は、プリブート段階または初期化プロセスの間(すなわち、非割り込み環境において)および/または任意の他のランタイム段階の間に実行される。所望の遅延時間は、複数のタイマ/カウンタ特性値(例えば、上で図2の一例のカウントライン200に関連して説明されたループ周期値T204および最大カウント値C206)ならびに上で図3に関連して説明された複数のカウント変数値XCおよびXCを得ることで実装される。
【0029】
所望の遅延時間を生成することに関連する追加の複数の値は、遅延時間生成方法400を用いて得られるおよび/または決定される。追加の複数の値は、初期のカウント値C、遅延カウント値C、複数のループの数の値L、および残りのカウント値Cを含み、全ては、以下においてより詳細に説明される。複数の値は、ランタイム段階の間またはランタイム段階に先立って決定され、ランタイム段階の間に、何度もメモリに記憶され、および取り出される。加えて、複数の値は、例えば、プロセッサシステムを用いてそれらを計算するおよび/またはそれらをメモリから取り出す、などの多くの方法で決定される。
【0030】
初期のカウント値Cは、例えば、図1のタイマ/カウンタ102などのタイマ/カウンタのカウント値を読み出すことで得られる最初のカウント値に関連する。加えて、初期のカウント値Cは、タイマ/カウンタ102に表される任意の値でよく、それは、ゼロカウント値202(図2)より大きくまたは等しく、最大カウント値C206(図2)より小さいまたは等しい(すなわち、ゼロカウント値202≦C≦C206)。初期のカウント値Cは、以下で数1−数3に関連して説明されるように、遅延カウント値C、複数のループの数の値L、および残りのカウント値Cを決定するために使用される。
【0031】
遅延カウント値Cは、所望の遅延時間を生成するために要するタイマ/カウンタ102の複数のカウントの数を決定する。例えば、所望の遅延時間がループ周期値T204(図2)に示される時間量と等しい場合、遅延カウント値Cは、最大カウント値C206に等しくセットされる。この場合、タイマ/カウンタ102は、所望の遅延時間を実装するために、最大カウント値C206に等しい複数のカウントの数を増やす。
【0032】
複数のループの数の値Lは、タイマ/カウンタ102が特定のカウント値に達した回数で定義され、一般的に複数の転覆イベントに関連する。例えば、特定のカウント値がゼロカウント値202(図2)として定義される場合、複数のループの数の値Lは、タイマ/カウンタ102のカウント値がゼロカウント値202(図2)に達する回数と等しくなる。この方法では、タイマ/カウンタ102は、複数のループの数の値Lと等しい多くの転覆イベントを生成する。加えて、一例として、複数のループの数の値Lは、複数の添え字(0)、(1)、および(n)により図3に示される。図3に関連して、上でより詳細に説明されたように、添え字の値nは、複数のカウンタサイクルまたは複数のループの数に等しい。
【0033】
残りのカウント値Cは、タイマ/カウンタ102(図1)に表される任意の値であり、ゼロカウント値202より大きいか等しく、また、最大カウント値C206より小さいか等しい。一般的に、残りのカウント値CRは、タイマ/カウンタ102の最後のループの後に、所望の遅延時間に達した時を判断するために使用される。言い換えれば、所望の遅延時間は、タイマ/カウンタ102が複数のループの数の値Lに等しい複数のカウンタサイクルまたは複数のループの数を完了することを可能にし、その後に、所望の遅延時間に達したかを判断するために、複数の残りのカウント値Cおよびタイマ/カウンタ102をポーリングすることにより得られる複数のカウンタ値に基づいて、複数の比較が実行されることにより生成される。
【0034】
ここで図4の一例の遅延時間生成方法400の詳細に戻る。タイマ/カウンタ102(図1)は、有効にされ(ブロック402)、それにより、タイマ/カウンタ102がカウント値を増やすことを実行または開始することを起こす。初期のカウント値Cは、タイマ/カウンタ102の動作中のカウント値を読み出すことで得られる(ブロック404)。遅延カウント値C、複数のループの数の値L、および残りのカウント値Cを含む複数の遅延時間生成値は、例えば、値生成器110(図1)により、その後決定される(ブロック406)。
【0035】
遅延カウント値Cは、遅延時間値T、ループ周期値T204、および最大カウント値C206に基づいて、下記数1に従って決定される。
【数1】

数1に示されるように、遅延カウント値Cは、遅延時間値Tをループ周期値T204で割り、結果に最大カウント値C206を掛けることで決定される。
【0036】
一般的に、複数のループの数の値Lは、遅延カウント値C、および最大カウント値C206に基づいて、以下の数2に従って決定される。
【数2】

数2に示されるように、複数のループの数の値Lは、遅延カウント値Cを最大カウント値C206で割り、結果を最近の整数値に丸め込むことで決定される。あるいは、複数のループの数の値Lは、遅延時間値Tをループ周期値T204で割り、結果を最近の整数値に丸め込むことで、また決定される。
【0037】
残りのカウント値Cは、遅延カウント値C、複数のループの数の値L、および最大カウント値C206に基づいて、下記の数3に従って決定される。
【数3】

【0038】
数3に示されるように、残りのカウント値Cは、複数のループの数の値Lに最大カウント値C206を掛け、結果を遅延カウント値Cから引くことで決定される。あるいは、残りのカウント数は、複数のループの数の値Lをループ周期値T204に割られる遅延時間値Tの商から引き、結果に最大カウント値C206を掛けることで、また決定される。
【0039】
最初の前回のカウント値は、例えば、前回のカウント値C302(図3)を初期のカウント値Cに等しくセットし、前回のカウント値C302を前回のカウント変数値XCに記憶することで、初期化される(ブロック408)。タイマ/カウンタ102(図1)は、ポーリングされ、現在のカウント値C304(図3)がタイマ/カウンタ102(ブロック410)から読み出され、現在のカウント変数値XCに記憶される。現在のカウント変数値XC、初期のカウント値C、および前回のカウント変数値XCの比較は、タイマ/カウンタ102のループが完了したかを判断するために実行される(ブロック412)。
【0040】
前回のカウント変数値XCPが初期のカウント値Cより小さく、また、初期のカウント値CIが現在のカウント変数XCより小さいまたはに等しい場合(すなわち、XC<C≦XC)、転覆イベントは、検出され、複数のループの数の値Lは、減らされる(ブロック414)。ブロック414で複数のループの数の値Lを減らした後、またはブロック412で前回のカウント変数値XCが初期のカウント値より小さくない、および/または初期のカウント値Cが現在のカウント変数XCより小さくまたはと等しくない場合、制御は、ブロック416に渡される。ブロック416において、前回のカウント値C306(図3)は、現在のカウント値C304に等しくセットされ、前回のカウント変数値XCに記憶される。
【0041】
ゼロテストは、複数のループの数の値Lがゼロより大きいかどうかを判別するために、複数のループの数の値L上で実行される(ブロック418)。複数のループの数の値Lがゼロより大きい場合、制御は、ブロック410に渡される。一方、複数のループの数の値Lがブロック418においてゼロより大きくない場合、別の現在のカウント値Cが得られ(ブロック420)、現在のカウント変数値XCに記憶される。
【0042】
現在のカウント変数値XCが初期のカウント値Cより小さいかどうかを判別するために、比較がなされる(ブロック422)。現在のカウント変数値XCが初期のカウント値Cより小さい場合、現在のカウント変数値XCは、現在のカウント変数値XCに最大カウント値Cを加え、結果を現在のカウント変数値XCCに記憶することで更新される(すなわち、XC=XC+C)(ブロック424)。
【0043】
現在のカウント変数値XCが更新された後(ブロック424)、またはブロック422において現在のカウント変数値XCが初期のカウント値より小さくないと判断される場合、現在のカウント変数値XC、初期のカウント値C、および残りのカウント値Cに基づいて、遅延時間に達したかどうかを判断するために比較がなされる(ブロック426)。ブロック426において、初期のカウント値Cが引かれる現在のカウント変数XCが残りのカウント値Cより小さいことが判断される場合(すなわち、(XC−C)<C)、制御は、ブロック420に渡される。しかしながら、ブロック426において、初期のカウント値Cが引かれる現在のカウント変数値XCが残りのカウント値Cより小さくないと判断される場合、所望の遅延時間に達した。
【0044】
図5は、図1の一例のシステム100により実装される別の例の遅延時間生成方法500のフロー図である。一例の遅延時間生成方法500は、プリブート段階または初期化プロセスの間(すなわち、非割り込み環境)および/または任意の他のランタイム段階の間に実行される。一例の遅延時間生成方法500は、初期のカウント値(例えば、上で図4に関連して詳細に説明された初期のカウント値C)に基づいて、複数の遅延時間生成値を決定することで所望の遅延時間を生成するために使用される。より具体的には、以下に数4−数6に関連して説明されるように、初期のカウント値Cは、遅延カウント値C、複数のループの数の値L、および残りのカウント値Cを決定するために使用される。さらに、所望の遅延時間は、一例の遅延時間生成方法500により、複数の遅延時間生成値、ループ周期値T204(図2)、および最大カウント値C206(図2)ならびに複数のカウント変数値XCおよびXC(図3)に基づいて生成される。
【0045】
ここで図5の一例の遅延時間生成方法500の詳細に戻る。タイマ/カウンタ(例えば、図1のタイマ/カウンタ102)は、有効にされ(ブロック502)、それにより、タイマ/カウンタ102が複数のカウント値を増やすことを実行または開始することを引き起こす。初期のカウント値Cは、タイマ/カウンタ102の実行中のカウント値を読み出すことで得られる。遅延カウント値C、複数のループの数の値L、および残りのカウント値Cを含む複数の遅延時間生成値は、例えば、値生成器110(図1)により決定される(ブロック506)。
【0046】
遅延カウント値Cは、遅延時間値T、ループ周期値T204、最大カウント値C206、および初期のカウント値Cに基づき、以下の数4に従って決定される。
【数4】

数4に示されるように、遅延カウント値Cは、遅延時間値Tをループ周期値T204で割り、その結果に最大カウント値C206を掛け、その結果に初期のカウント値Cを足すことで決定される。
【0047】
一般的に、複数のループの数の値Lは、遅延カウント値CDおよび最大カウント値CM206に基づき、以下の数5に従って決定される。
【数5】

数5に示されるように、複数のループの数の値Lは、遅延カウント値Cを最大カウント値C206(図2)で割り、その結果を最近の整数値に丸め込むことで決定される。あるいは、複数のループの数の値Lは、遅延時間値Tをループ周期値T204で割り、その結果に最大カウント値C206に割られる初期カウント値Cの商を足し、最近の整数値に丸め込むことでまた決定される。
【0048】
残りのカウント値Cは、遅延カウント値C、複数のループの数の値L、および最大カウント値C206に基づき、以下の数6に従って決定される。
【数6】

【0049】
数6に示されるように、残りのカウント値Cは、複数のループの数の値Lに最大カウント値CM206を掛け、その結果を遅延カウント値Cから引くことで決定される。あるいは、残りのカウント数Cは、初期のカウント値Cを最大カウント値C206およびループ周期値T204に割られる遅延時間値Tの商から引かれる複数のループの数の値Lの数量の積にたすことで決定される。
【0050】
最初の前回のカウント値は、例えば、前回のカウント値C302(図3)を初期のカウント値Cに等しくセットし、前回のカウント値C302を前回のカウント変数値XCに記憶することで初期化される(ブロック508)。現在のカウント値C304(図3)は、タイマ/カウンタ102読み出され(ブロック510)、現在のカウント変数値XCに記憶される。現在のカウント変数値XCCは、タイマ/カウンタ102のループが完了したかを判断するために前回のカウント変数値XCPと比較される(ブロック512)。
【0051】
現在のカウント変数値XCが前回のカウント変数値XCより小さい場合(すなわち、XC<XC)、転覆イベントが検出され、複数のループの数の値Lは、減らされる(ブロック514)。ブロック514において複数のループの数の値Lを減らした後、またはブロック512において現在のカウント変数値XCが前回のカウント変数値XCより小さくない場合、制御はブロック516に渡される。ブロック516において、前回のカウント値C306(図3)は、現在のカウント値C304(図3)に等しくセットされ、前回のカウント変数XCに記憶される。
【0052】
ゼロテストは、複数のループの数の値Lがゼロより大きいかどうかを判断するために、複数のループの数の値Lに対し実行される(ブロック518)。複数のループの数の値Lがゼロより大きい場合、制御はブロック510に渡される。一方で、複数のループの数の値Lがゼロより大きくない場合、前回のカウント値C306(図3)は、現在のカウント値C304(図3)に等しくセットされ、前回のカウント変数値XCに記憶される(ブロック520)。別の現在のカウント値Cが得られ(ブロック522)、現在のカウント変数値XCに記憶される。
【0053】
現在のカウント変数値XCは、残りのカウント変数値Cおよび前回のカウント変数値XCと比較される(ブロック524)。現在のカウント変数値XCが残りのカウント値Cより小さく、かつ、前回のカウント変数値XCが現在のカウント変数値XCより小さい場合(すなわち、XC<CかつXC<XC)、制御はブロック520に渡される。しかしながら、現在のカウント変数XCが残りのカウント値Cより小さくなく、および/または、前回のカウント変数値XCが現在のカウント変数値XCより小さくない場合、所望の遅延時間に達した。
【0054】
図6は、ここで説明された製造の複数の装置、複数の方法、および複数の製品を実装するために用いられる一例のプロセッサシステム610のブロック図である。図6に示されるように、プロセッサシステム610は、相互接続バスまたはネットワーク614に結合されたプロセッサ612を備える。プロセッサ612は、レジスタセットまたはレジスタスペース616を有し、これは、図6に全体的にオンチップであるように描かれているが、これは、あるいは、全体的にまたは部分的にオフチップでよく、およびプロセッサ612に専用の電気的な複数の接続を介しておよび/または相互接続ネットワークまたはバス614を介して結合されてよい。プロセッサ612は、例えば、Intel X−Scale(登録商標)ファミリ、Intel Pentium(登録商標)ファミリ等からのプロセッサなどの任意の適したプロセッサ、プロセッシングユニットまたはマイクロプロセッサでよい。図6には示されていないが、プロセッサシステム610は、プロセッサ612と同一のまたは同様の1つ以上の付加的なプロセッサを備え、それらは相互接続バスまたはネットワーク614に結合されるマルチプロセッサシステムでよい。
【0055】
図6のプロセッサ612は、メモリコントローラ620、入力/出力(I/O)コントローラ622、およびタイマ/カウンタユニット623を有するチップセット618に結合される。良く知られるように、チップセットは、代表的に、複数の汎用および/または特定用途レジスタ、タイマ等のみならず複数のI/Oおよびメモリ制御機能提供し、これらは、チップセットに結合される1つ以上のプロセッサからアクセス可能であり、または使用される。メモリコントローラ620は、プロセッサ612(または、複数のプロセッサがある場合は、複数のプロセッサ)がシステムメモリ624および不揮発性メモリ625にアクセスすることを可能にする複数の機能を実行する。
【0056】
システムメモリ624は、例えば、静的ランダムアクセスメモリ(SRAM)、動的ランダムアクセスメモリ(DRAM)などの揮発性メモリの所望のタイプを有する。不揮発性メモリ625は、例えば、フラッシュメモリまたは読み出し専用メモリ(ROM)などの不揮発性メモリの所望のタイプを有する。その上、基本入出力システム(BIOS)またはEFIの部分を構成する複数のプリブートシステム初期化命令は、プリブートシステム初期化プロセス間(すなわち、オペレーティングシステムブートプロセス前)のアクセスのために、不揮発性メモリ625上に記憶される。
【0057】
I/Oコントローラ622は、プロセッサ612が複数の周辺入力/出力(I/O)デバイス626および628とI/Oバス630を介して通信することを可能にする複数の機能を実行する。複数のI/Oデバイス626および628は、例えば、キーボード、ビデオディスプレイもしくはモニタ、マウスなどのI/Oデバイスの任意の所望のタイプでよい。
【0058】
タイマ/カウンタユニット623は、図1のタイマ/カウンタ102と実質的に同様または同一であり、プロセッサシステム610のランタイム段階の間に、複数の遅延時間および/または指定時間に動作する複数のシステムイベントを実装するために使用される。タイマ/カウンタユニット623は、電力制御インターフェース(ACPI)タイマおよびまたはリセット不可能なタイマをまた含むACPIタイマは、プリブートプロセッサシステム初期化プロセス間に機能するように構成される。
【0059】
メモリコントローラ620、I/Oコントローラ622およびタイマ/カウンタユニット623は、図6にチップセット618内の分離した複数の機能ブロックとして描かれるが、これら複数のブロックに実行される複数の機能は、1つの半導体回路に集積されるまたは2つ以上の分離した集積回路を用いて実装される。
【0060】
ここで説明される複数の方法は、コンピュータ可読媒体上に記憶され、プロセッサ612に実行される複数の命令を用いて実装される。コンピュータ可読媒体は、複数の大容量記憶デバイス(例えば、ディスクドライブ)、複数の取り外し可能記憶デバイス(例えば、複数のフロッピーディスク、複数のメモリカードもしくはスティック等)、および/または複数の集積メモリデバイス(例えば、ランダムアクセスメモリ、フラッシュメモリ等)の任意の所望の組み合わせを用いて実装される半導体、磁気、および/または光学媒体の任意の所望の組み合わせを含む。
【0061】
製造の特定の複数の方法、複数の装置、複数の製品がここで説明されたが、本特許の請求の範囲は、それらに制限されない。それどころか、本特許は、文言上または均等論に基づき、添付された複数の請求項の適切な範囲内の製造の全ての方法、装置、および製品を網羅する。

【特許請求の範囲】
【請求項1】
遅延時間を生成する方法であって、
遅延時間に関連した複数のループの数の値およびカウンタに関連した少なくとも1つ以上の特性値を決定する段階と、
前記複数のループの数の値に基づいて、残りのカウント値を決定する段階と、
前記複数のループの数の値および前記残りのカウント値に基づいて、前記カウンタと共に遅延時間を生成する段階と
を備える方法。
【請求項2】
現在のカウント値を得る段階と、
前記現在のカウント値および前回のカウント値に基づいて、少なくとも前記複数のループの数の値に等しい回数、比較を実行する段階と
をさらに備える請求項1に定義される方法。
【請求項3】
前記比較に基づいて、前記遅延時間に達したかを判断する段階をさらに備える請求項2に定義される方法。
【請求項4】
前記現在のカウント値を得る段階は、前記カウンタの動作中のカウント値を読み出す段階を備える請求項2に定義される方法。
【請求項5】
初期のカウント値を得る段階をさらに備える請求項1に定義される方法。
【請求項6】
前記複数のループの数の値を決定する段階は、少なくとも前記初期のカウント値に基づいて、前記複数のループの数の値を決定する段階を備える請求項5に定義される方法。
【請求項7】
前記残りのカウント値を決定する段階は、少なくとも前記初期のカウント値に基づいて、前記残りのカウント値を決定する段階を備える請求項5に定義される方法。
【請求項8】
前記カウンタをポーリングする段階をさらに備える請求項1に定義される方法。
【請求項9】
前記カウンタをポーリングする段階は、非割り込み環境において前記カウンタをポーリングする段階を備える請求項8に定義される方法。
【請求項10】
前記複数のループの数の値を決定する段階は、前記カウンタにより生成される複数の転覆イベントの数を決定する段階を備える請求項1に定義される方法。
【請求項11】
前記遅延時間を生成する段階は、ブートプロセスに先立って前記遅延時間を生成する請求項1に定義される方法。
【請求項12】
遅延時間を生成するための装置であって、
メモリを有するプロセッサシステムと、
前記メモリに記憶される複数の命令と
を備え、
前記複数の命令は、前記プロセッサシステムが、
遅延時間に関連した複数のループの数の値およびカウンタに関連した少なくとも1つの特性値を決定すること、
前記複数のループの数の値に基づいて、残りのカウント値を決定すること、および
前記複数のループの数の値および前記残りのカウント値に基づいて、前記カウンタと共に前記遅延時間を生成すること
を可能にする装置。
【請求項13】
前記メモリに記憶される前記複数の命令は、前記プロセッサシステムが、現在のカウント値を得ることおよび前記現在のカウント値および前回のカウント値に基づいて、少なくとも前記複数のループの数の値に等しい回数、比較を実行することを可能にする請求項0に定義される装置。
【請求項14】
前記メモリに記憶される前記複数の命令は、前記プロセッサシステムが、前記比較に基づいて、前記遅延時間に達したかを判断することを可能にする請求項13に定義される装置。
【請求項15】
前記メモリに記憶される前記複数の命令は、前記プロセッサシステムが、初期のカウント値を得ることを可能にする請求項0に定義される装置。
【請求項16】
前記メモリに記憶される前記複数の命令は、前記プロセッサシステムが、少なくとも前記初期のカウント値に基づいて前記複数のループの数の値を決定することを可能にする請求項15に定義される装置。
【請求項17】
前記複数の命令は、前記プロセッサシステムが、非割り込み環境において、前記カウンタをポーリングすることを可能にする請求項0に定義される装置。
【請求項18】
前記複数の命令は、前記プロセッサシステムが、前記複数のループの数の値に基づいて、生成される複数の転覆イベントの数を決定することを可能にする請求項0に定義される装置。
【請求項19】
前記複数の命令は、前記プロセッサシステムが、ブートプロセスに先立って、前記遅延時間を生成することを可能にする請求項0に定義される装置。
【請求項20】
前記メモリは、フラッシュメモリおよび読み出し専用メモリの少なくとも1つである請求項0に定義される装置。
【請求項21】
遅延時間を生成するためのシステムであって、
カウンタから複数のカウント値を得るように構成されるカウントリーダと、
前記カウントリーダに通信的に結合され、前記複数のカウント値の少なくとも幾つかに基づく複数の比較を実行するように構成される比較器と、
前記比較器に通信的に結合され、前記複数の比較の少なくとも幾つかに基づいて、複数のループの数の値を修正するように構成されるループカウンタと
を備え、
前記システムは、前記複数の比較、前記複数のループの数の値、および残りのカウント値に基づいて、遅延時間を生成するシステム。
【請求項22】
前記カウントリーダは、初期のカウント値を得るように構成される請求項21に定義されるシステム。
【請求項23】
前記初期のカウント値に基づいて、前記残りのカウント値および前記複数のループの数の値を生成するように構成される値生成器をさらに備える請求項22に定義されるシステム。
【請求項24】
前記複数のカウント値の少なくとも幾つかは、前回のカウント値および現在のカウント値の少なくとも1つを含む請求項21に定義されるシステム。
【請求項25】
前記比較器は、前記前回のカウント値および前記現在のカウント値の少なくとも1つに基づいて、前記複数の比較を実行する請求項24に定義されるシステム。
【請求項26】
前記カウンタは、リセット不可能なカウンタおよびリセット不可能なタイマの少なくとも1つである請求項21に定義されるシステム。
【請求項27】
前記システムは、非割り込み環境において、前記遅延時間を生成する請求項21に定義されるシステム。
【請求項28】
前記システムは、ブート段階に先立って前記遅延時間を生成する請求項21に定義されるシステム。
【請求項29】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、
遅延時間に関連した複数のループの数の値およびカウンタに関連した少なくとも1つの特性値を決定する手順と、
前記複数のループの数の値に基づいて、残りのカウント値を決定する手順と、
前記複数のループの数の値および前記残りのカウント値に基づいて、前記カウンタと共に前記遅延時間を生成する手順と
を実行させるコンピュータ可読媒体。
【請求項30】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、
現在のカウント値を得る手順と、
前記カウント値および前回のカウント値に基づいて、少なくとも前記複数のループの数の値に等しい回数、比較を実行する手順と
を実行させる請求項29に定義されるコンピュータ可読媒体。
【請求項31】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、前記比較に基づいて、前記遅延時間に達したかを判断する手順を実行させる請求項30に定義されるコンピュータ可読媒体。
【請求項32】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、初期のカウント値を得る手順を実行させる請求項29に定義されるコンピュータ可読媒体。
【請求項33】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、少なくとも前記初期のカウント値に基づいて、前記複数のループの数の値を決定する手順を実行させる請求項32に定義されるコンピュータ可読媒体。
【請求項34】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、少なくとも前記初期のカウント値に基づいて、前記残りのカウント値を決定する手順を実行させる請求項32に定義されるコンピュータ可読媒体。
【請求項35】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、前記カウンタをポーリングする手順を実行させる請求項29に定義されるコンピュータ可読媒体。
【請求項36】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、非割り込み環境において、前記カウンタをポーリングする手順を実行させる請求項29に定義されるコンピュータ可読媒体。
【請求項37】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、前記カウンタの少なくとも1つの転覆イベントに基づいて、前記複数のループの数の値を減らす手順を実行させる請求項29に定義されるコンピュータ可読媒体。
【請求項38】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、ブートプロセスに先立って、前記遅延時間を生成する手順を実行させる請求項29に定義されるコンピュータ可読媒体。
【請求項39】
遅延時間を生成するための装置であって、
フラッシュメモリを備えるプロセッサシステムと、
前記フラッシュメモリに記憶される複数の命令と
を備え、
前記複数の命令は、プロセッサシステムが、
遅延時間に関連した複数のループの数の値およびカウンタに関連した少なくとも1つの特性値を決定すること、
前記複数のループの数の値に基づいて、残りのカウント値を決定すること、および
前記複数のループの数の値および前記残りのカウント値に基づいて、前記カウンタと共に前記遅延時間を生成すること
を可能にする装置。
【請求項40】
前記複数の命令は、前記プロセッサシステムが、ブートプロセスに先立って、前記遅延時間を生成することを可能にする請求項39に定義される装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2007−512771(P2007−512771A)
【公表日】平成19年5月17日(2007.5.17)
【国際特許分類】
【出願番号】特願2006−541267(P2006−541267)
【出願日】平成16年11月12日(2004.11.12)
【国際出願番号】PCT/US2004/037772
【国際公開番号】WO2005/055027
【国際公開日】平成17年6月16日(2005.6.16)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】