(57)【要約】  カウンタを用いて遅延時間を生成するための製造の複数の方法、装置、および複数の製品が開示される。特に、製造の前記複数の方法、装置、および複数の製品は、前記遅延時間に関連する複数のループの数の値およびカウンタに関連する少なくとも１つの特性値を決定する。残りのカウント値は、前記複数のループの数の値に基づいて、その後決定される。前記遅延時間は、前記カウンタと共に、前記複数のループの数の値および前記残りのカウント値に基づいて、生成される。
2007512771.tif 000002
【特許請求の範囲】
【請求項１】
遅延時間を生成する方法であって、
遅延時間に関連した複数のループの数の値およびカウンタに関連した少なくとも１つ以上の特性値を決定する段階と、
前記複数のループの数の値に基づいて、残りのカウント値を決定する段階と、
前記複数のループの数の値および前記残りのカウント値に基づいて、前記カウンタと共に遅延時間を生成する段階と
を備える方法。
【請求項２】
現在のカウント値を得る段階と、
前記現在のカウント値および前回のカウント値に基づいて、少なくとも前記複数のループの数の値に等しい回数、比較を実行する段階と
をさらに備える請求項１に定義される方法。
【請求項３】
前記比較に基づいて、前記遅延時間に達したかを判断する段階をさらに備える請求項２に定義される方法。
【請求項４】
前記現在のカウント値を得る段階は、前記カウンタの動作中のカウント値を読み出す段階を備える請求項２に定義される方法。
【請求項５】
初期のカウント値を得る段階をさらに備える請求項１に定義される方法。
【請求項６】
前記複数のループの数の値を決定する段階は、少なくとも前記初期のカウント値に基づいて、前記複数のループの数の値を決定する段階を備える請求項５に定義される方法。
【請求項７】
前記残りのカウント値を決定する段階は、少なくとも前記初期のカウント値に基づいて、前記残りのカウント値を決定する段階を備える請求項５に定義される方法。
【請求項８】
前記カウンタをポーリングする段階をさらに備える請求項１に定義される方法。
【請求項９】
前記カウンタをポーリングする段階は、非割り込み環境において前記カウンタをポーリングする段階を備える請求項８に定義される方法。
【請求項１０】
前記複数のループの数の値を決定する段階は、前記カウンタにより生成される複数の転覆イベントの数を決定する段階を備える請求項１に定義される方法。
【請求項１１】
前記遅延時間を生成する段階は、ブートプロセスに先立って前記遅延時間を生成する請求項１に定義される方法。
【請求項１２】
遅延時間を生成するための装置であって、
メモリを有するプロセッサシステムと、
前記メモリに記憶される複数の命令と
を備え、
前記複数の命令は、前記プロセッサシステムが、
遅延時間に関連した複数のループの数の値およびカウンタに関連した少なくとも１つの特性値を決定すること、
前記複数のループの数の値に基づいて、残りのカウント値を決定すること、および
前記複数のループの数の値および前記残りのカウント値に基づいて、前記カウンタと共に前記遅延時間を生成すること
を可能にする装置。
【請求項１３】
前記メモリに記憶される前記複数の命令は、前記プロセッサシステムが、現在のカウント値を得ることおよび前記現在のカウント値および前回のカウント値に基づいて、少なくとも前記複数のループの数の値に等しい回数、比較を実行することを可能にする請求項０に定義される装置。
【請求項１４】
前記メモリに記憶される前記複数の命令は、前記プロセッサシステムが、前記比較に基づいて、前記遅延時間に達したかを判断することを可能にする請求項１３に定義される装置。
【請求項１５】
前記メモリに記憶される前記複数の命令は、前記プロセッサシステムが、初期のカウント値を得ることを可能にする請求項０に定義される装置。
【請求項１６】
前記メモリに記憶される前記複数の命令は、前記プロセッサシステムが、少なくとも前記初期のカウント値に基づいて前記複数のループの数の値を決定することを可能にする請求項１５に定義される装置。
【請求項１７】
前記複数の命令は、前記プロセッサシステムが、非割り込み環境において、前記カウンタをポーリングすることを可能にする請求項０に定義される装置。
【請求項１８】
前記複数の命令は、前記プロセッサシステムが、前記複数のループの数の値に基づいて、生成される複数の転覆イベントの数を決定することを可能にする請求項０に定義される装置。
【請求項１９】
前記複数の命令は、前記プロセッサシステムが、ブートプロセスに先立って、前記遅延時間を生成することを可能にする請求項０に定義される装置。
【請求項２０】
前記メモリは、フラッシュメモリおよび読み出し専用メモリの少なくとも１つである請求項０に定義される装置。
【請求項２１】
遅延時間を生成するためのシステムであって、
カウンタから複数のカウント値を得るように構成されるカウントリーダと、
前記カウントリーダに通信的に結合され、前記複数のカウント値の少なくとも幾つかに基づく複数の比較を実行するように構成される比較器と、
前記比較器に通信的に結合され、前記複数の比較の少なくとも幾つかに基づいて、複数のループの数の値を修正するように構成されるループカウンタと
を備え、
前記システムは、前記複数の比較、前記複数のループの数の値、および残りのカウント値に基づいて、遅延時間を生成するシステム。
【請求項２２】
前記カウントリーダは、初期のカウント値を得るように構成される請求項２１に定義されるシステム。
【請求項２３】
前記初期のカウント値に基づいて、前記残りのカウント値および前記複数のループの数の値を生成するように構成される値生成器をさらに備える請求項２２に定義されるシステム。
【請求項２４】
前記複数のカウント値の少なくとも幾つかは、前回のカウント値および現在のカウント値の少なくとも１つを含む請求項２１に定義されるシステム。
【請求項２５】
前記比較器は、前記前回のカウント値および前記現在のカウント値の少なくとも１つに基づいて、前記複数の比較を実行する請求項２４に定義されるシステム。
【請求項２６】
前記カウンタは、リセット不可能なカウンタおよびリセット不可能なタイマの少なくとも１つである請求項２１に定義されるシステム。
【請求項２７】
前記システムは、非割り込み環境において、前記遅延時間を生成する請求項２１に定義されるシステム。
【請求項２８】
前記システムは、ブート段階に先立って前記遅延時間を生成する請求項２１に定義されるシステム。
【請求項２９】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、
遅延時間に関連した複数のループの数の値およびカウンタに関連した少なくとも１つの特性値を決定する手順と、
前記複数のループの数の値に基づいて、残りのカウント値を決定する手順と、
前記複数のループの数の値および前記残りのカウント値に基づいて、前記カウンタと共に前記遅延時間を生成する手順と
を実行させるコンピュータ可読媒体。
【請求項３０】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、
現在のカウント値を得る手順と、
前記カウント値および前回のカウント値に基づいて、少なくとも前記複数のループの数の値に等しい回数、比較を実行する手順と
を実行させる請求項２９に定義されるコンピュータ可読媒体。
【請求項３１】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、前記比較に基づいて、前記遅延時間に達したかを判断する手順を実行させる請求項３０に定義されるコンピュータ可読媒体。
【請求項３２】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、初期のカウント値を得る手順を実行させる請求項２９に定義されるコンピュータ可読媒体。
【請求項３３】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、少なくとも前記初期のカウント値に基づいて、前記複数のループの数の値を決定する手順を実行させる請求項３２に定義されるコンピュータ可読媒体。
【請求項３４】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、少なくとも前記初期のカウント値に基づいて、前記残りのカウント値を決定する手順を実行させる請求項３２に定義されるコンピュータ可読媒体。
【請求項３５】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、前記カウンタをポーリングする手順を実行させる請求項２９に定義されるコンピュータ可読媒体。
【請求項３６】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、非割り込み環境において、前記カウンタをポーリングする手順を実行させる請求項２９に定義されるコンピュータ可読媒体。
【請求項３７】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、前記カウンタの少なくとも１つの転覆イベントに基づいて、前記複数のループの数の値を減らす手順を実行させる請求項２９に定義されるコンピュータ可読媒体。
【請求項３８】
記憶された複数の命令を備えるコンピュータ可読媒体であって、
前記複数の命令が実行された場合、前記複数の命令が機械に、ブートプロセスに先立って、前記遅延時間を生成する手順を実行させる請求項２９に定義されるコンピュータ可読媒体。
【請求項３９】
遅延時間を生成するための装置であって、
フラッシュメモリを備えるプロセッサシステムと、
前記フラッシュメモリに記憶される複数の命令と
を備え、
前記複数の命令は、プロセッサシステムが、
遅延時間に関連した複数のループの数の値およびカウンタに関連した少なくとも１つの特性値を決定すること、
前記複数のループの数の値に基づいて、残りのカウント値を決定すること、および
前記複数のループの数の値および前記残りのカウント値に基づいて、前記カウンタと共に前記遅延時間を生成すること
を可能にする装置。
【請求項４０】
前記複数の命令は、前記プロセッサシステムが、ブートプロセスに先立って、前記遅延時間を生成することを可能にする請求項３９に定義される装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、広くは複数のプロセッサシステムに関し、より具体的には、複数のプロセッサシステム内で複数の遅延時間を生成するためにカウンタを用いるための複数の方法、装置および複数の製品に関する。
【背景技術】
【０００２】
プロセッサシステムの動作は、例えば、プロセッサコアデザイン、複数の命令セット実装および複数のハードウェア互換性などの、重要な複数のデザイン検討に依存する。多くのデザイン検討は、一般的にプロセッサシステムの複数のハードウェアコンポーネントに関するが、デザイン検討の幾つかは、プロセッサシステムのランタイム段階の間のこれら複数のハードウェアコンポーネントの性能に関する。
【０００３】
正確な複数の遅延時間または複数のタイミングを生成することは、プロセッサシステムのランタイム段階の間の特に重要なハードウェアに関するデザイン検討である。複数の遅延時間は、一般的にプロセッサシステムのハードウェア、ファームウェア、ソフトウェア、およびその複数の組み合わせを含むいろいろな部分に関係する。例えば、ハードウェア初期化プロセス間に特定の複数の周辺機器を初期化することは、しばしば、正確な複数の遅延時間の生成を要求する。特に、周辺機器を初期化することは、周辺機器内の複数のレジスタビットが、正確に制御される時間系列に従う連続的な方法でセットされることを要求する。しばしば、制御される時間系列は、ファームウェアを用いて実装され、それが実行された場合、所定の複数の遅延時間および／または複数のタイミング割り込みを生成する。
【０００４】
複数のタイミングまたは複数の遅延時間の重要性の別の例は、プロセッサシステムが特定の複数のタイミング要求を有する外部周辺機器と通信する複数の周辺機器通信を含む。この様な複数のタイミング要求は、例えば、特定の時間間隔で、デバイスをポーリングすることを含む。
【０００５】
複数の遅延時間または複数のタイミングは、しばしば、例えば、複数のタイマ割り込みおよび複数のクロック割り込みなどの複数の割り込みを用いて実装される。一般的に、複数の割り込みは、適切な複数のタイミングまたは複数の遅延時間を生成するために用いられる信頼できるおよび効果的な複数のリソースである。しかしながら、複数の割り込みは、プロセッサシステムのランタイム段階の間、常には利用可能でなく、それによって、これら複数のリソースなしに適切な複数のタイミングまたは複数の遅延時間を生成することを難しくする。
【０００６】
複数の割り込みが利用可能でない一例のシナリオは、プロセッサシステムのプリブート環境において、オペレーティングシステムを起動することに備えて、プロセッサおよび複数の周辺機器が初期化される場合、生じる。特に、複数の割り込みは、プリブート環境において、拡張可能ファームウェアインターフェース規格、１．０２版、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ、Ｓａｎｔａ  Ｃｌａｒａにより２０００年１２月１２日刊行、に適合する拡張可能ファームウェアインターフェース（ＥＦＩ）の実行の間、利用可能でない。結果として、プリブート環境において複数の割り込みの使用なしで正確な複数のタイミングまたは複数遅延時間を生成することは、しばしば、実現可能ではない。
【図面の簡単な説明】
【０００７】
【図１】所望の遅延時間を生成するために用いられる一例のシステムの機能ブロック図である。
【０００８】
【図２】図１のタイマ／カウンタを用いた所望の遅延時間の生成に関連したタイマ／カウンタの一例のカウントラインおよび複数の特性値である。
【０００９】
【図３】図２の一例のカウントラインおよび複数のカウント値に基づく、一例のカウンタポーリングプロセスの図である。
【００１０】
【図４】図１の一例のシステムにより実装される一例の遅延時間生成方法のフロー図である。
【００１１】
【図５】図１の一例のシステムにより実装される別の例の遅延時間生成方法のフロー図である。
【００１２】
【図６】ここで説明される製造の複数の装置、複数の方法、および複数の製品を実装するために用いられる一例のプロセッサシステムのブロック図である。
【発明の詳細な説明】
【００１３】
図１は、所望の遅延時間を生成するために用いられる一例のシステム１００の機能ブロック図である。しかしながら、図１のシステム１００を詳細に論じる前に、図１に示される構造は、ハードウェアおよび／またはソフトウェアの任意の所望の組み合わせを用いて実装されることを認識することが重要である。例えば、１つ以上の集積回路、複数のディスクリート半導体コンポーネント、または複数の受動電子コンポーネントが使用される。加えて、またはあるいは、構造の幾つかもしくは全て、またはその複数の部分は、機械可読媒体上に記憶される複数の命令、コード、または多のソフトウェアおよび／またはファームウェア等を用いて実装され、それらが例えば、プロセッサシステム（例えば、図６のプロセッサシステム６１０）により実行される場合、ここで開示される複数の方法を実行する（例えば、図４および図５に示される複数の方法）。
【００１４】
一般的に、一例のシステム１００は、複数の割り込みまたは同様なものの使用なしに、正確な遅延時間を生成するために、カウンタ（例えば、タイマ／カウンタ）を用いる。結果として、一例のシステム１００は、例えば、プロセッサシステムのプリブート環境または任意の他のランタイム段階または複数の割り込みおよび／または他の複数のタイミングリソースが利用可能でない動作状態において、正確な複数の遅延時間を生成するために、使用される。より具体的には、下記でより詳細に説明されるように、一例のシステム１００は、正確な遅延時間を生成するために、例えば、複数の最小および最大カウント値ならびにカウンタが最小カウント値から最大カウント値までカウントするのに要する時間量などの、カウンタ（またはタイマ／カウンタ）の既知の複数の特性を使用する。
【００１５】
幾つかの例では、一例のシステム１００は、カウンタを用いて、所望の遅延時間を生成するために要求される複数のループの数の値（例えば、複数のタイマ／カウンタ転覆イベント）および残りのまたは残余のカウント値を計算する。一例のシステム１００は、例えば、ポーリングプロセスにおいて、カウンタの値（例えば、カウント値）を読むように、また、構成される。一例のシステム１００は、遅延時間を生成するために、得られた複数のカウント値および計算された複数の値に基づいて、複数の比較を実行する。
【００１６】
ここで、図１の詳細に戻る。一例のシステム１００は、タイマ／カウンタ１０２、カウントリーダ１０４、値修正器１０６、比較器１０８、値生成器１１０、およびループカウンタ１１２を備え、それらの全ては、図示されるように、通信的に結合される。タイマ／カウンタ１０２は、カウント値を増やすことまたは減らすことにより、複数のカウント値を生成する、任意の所望のビット長のリセット不可能またはリセット可能カウンタおよび／またはタイマ（例えば、８ビットタイマ／カウンタ、１６ビットタイマ／カウンタ等）である。特に、タイマ／カウンタ１０２は、カウント値を最小カウント値から最大カウント値まで増やすように、および、下で図２に関連してより詳細に説明されるように複数の転覆イベントを生成するように構成される。タイマ／カウンタ１０２は、カウントリーダ１０４に通信的に結合され、カウントリーダ１０４がその複数の値を読むことを可能とし、および／またはその複数の値をカウントリーダ１０４に送るように構成される。加えて、タイマ／カウンタ１０２は、値生成器１１０に通信的に結合され、タイマ／カウンタ１０２の複数の特性値を値生成器１１０に提供する。
【００１７】
図１に示されるように、カウントリーダ１０４は、タイマ／カウンタ１０２、値修正器１０６、比較器１０８、および値生成器１１０に通信的に結合される。カウントリーダ１０４は、カウント値をタイマ／カウンタ１０２から得り、ポーリングプロセスまたは複数のカウント値を得るための任意の他の所望の技術を介して、タイマ／カウンタ１０２の１つの読み出し（すなわち、１つのカウント値を得ること）をするようにおよび／またはタイマ／カウンタ１０２の複数の読み出しをするように構成される。カウントリーダ１０４は、カウント値をタイマ／カウンタ１０２から値修正器１０６、比較器１０８、および値生成器１１０に運ぶように、また、構成される。
【００１８】
値修正器１０６は、例えば、以下により詳細に説明されるように、カウントリーダ１０４に読まれるタイマ／カウンタ１０２の複数のカウント値を記憶するために用いられる複数のカウント変数値などの、複数の値を修正するおよび／または更新するように構成される。特に、値修正器１０６は、カウントリーダ１０４から複数のカウント値（例えば、タイマ／カウンタ１０２から読まれる複数のカウント値）および比較器１０８からの複数の比較結果を受信するまたは取り出すように構成される。値修正器１０６は、複数のカウント値および／または複数の比較結果に基づいて、例えば、複数のカウント変数値を修正または更新する。加えて、複数のカウント変数値は、比較器１０８に伝えられる。
【００１９】
比較器１０８は、カウントリーダ１０４から複数のカウント値を、値修正器１０６から複数の変数カウント値を、値生成器１１０から複数の遅延時間生成値を、およびループカウンタ１１２から複数のループカウント値を受信するまたは取り出すように構成される。比較器１０８は、複数のカウント値に基づいて複数の比較を実行するようにおよび複数の比較に基づいて複数の比較結果を生成するように構成される加えて、複数の比較結果は、値修正器１０６、値生成器１１０、およびループカウンタ１１２に伝えられる。
【００２０】
値生成器１１０は、例えば、所望の遅延時間を生成することに関連する複数の遅延時間生成値などの複数の値を生成するように構成される。加えて、値生成器１１０は、カウントリーダ１０４から複数のカウント値をおよびタイマ／カウンタ１０２から複数のタイマ／カウンタ特性値を受信するまたは取り出すように構成される。複数のタイマ／カウンタ特性値は、タイマ／カウンタ１０２の最小カウント値、最大カウント値、およびループ周期値（すなわち、最小カウント値から最大カウント値までカウント値を増やすのに要する時間）を含む。値生成器１１０は、複数のカウント値および複数のタイマ／カウンタ特性値に基づいて、例えば、複数の遅延時間生成値を生成するように構成される。複数の遅延時間生成値は、比較器１０８およびループカウンタ１１２に伝えられる。
【００２１】
一般的に、ループカウンタ１１２は、値生成器１１０から複数の遅延時間生成値および比較器１０８から複数の比較結果を受信するまたは取り出すように構成される。加えて、ループカウンタ１１２は、タイマ／カウンタ１０２により生成される複数の転覆イベントの数に関連する複数のループカウント値を生成するように構成される。タイマ／カウンタ１０２により生成される複数の転覆イベントの数は、比較器１０８により実行される比較動作を介して検出される。ループカウンタ１１２は、例えば、複数の比較結果および複数の遅延時間生成値に基づき、複数のループの数の値を増やすことまたは減らすことにより、複数のループカウント値を生成する。
【００２２】
図２は、一例のカウントライン２００および図１のタイマ／カウンタ１０２を用いて所望の遅延時間を実装することに関連した、タイマ／カウンタ（例えば、図１のタイマ／カウンタ１０２）の複数の特性値である。一般的に、カウントライン２００は、図式的にタイマ／カウンタ１０２内に記憶されるカウント値および経過時間の間の関係を表す。特定のタイマ／カウンタに対するカウント値および経過時間の間の関係は、例えば、レートの関数であり、カウントライン２００により表されるタイマ／カウンタは、このレートでクロックされる。
【００２３】
図２に示されるように、一例のカウントライン２００は、ゼロカウント値２０２、ループ周期値ＴＬ２０４、および最大カウント値ＣＭ２０６により特徴付けられる。これら複数の特性値は、例えば、ランタイム段階の間に所望の遅延時間（ＴＤ）を実装するために、用いられる。ほんの一例として、一例のカウントライン２００は、図１のタイマ／カウンタ１０２に関連するとして、説明される。しかしながら、一例のカウントライン２００は、同様の方法で、任意の他のカウンタ、タイマ、またはタイマ／カウンタに応用される。例を続けて、ゼロカウント値２０２は、タイマ／カウンタ１０２により表されるゼロのカウント値または最小値である。最大カウント値ＣＭ２０６は、タイマ／カウンタ１０２が転覆イベントに先立ってカウントできる最大値である。転覆イベントは、タイマ／カウンタ１０２がその最大カウント値ＣＭ２０６に達した場合生じ、続くカウント値は、ゼロカウント値２０２に等しい（すなわち、ＣＭ＋１＝０）。例えば、８ビットカウンタの最大カウント値ＣＭ２０６は、数量２８−１（すなわち、２５５）に等しい。このような８ビットカウンタが２５５のカウント値（すなわち、最大カウント値ＣＭ２０６）に達する場合、８ビットカウンタがゼロカウント値２０２である８ビットカウンタの次のカウント値に増やされる時、転覆イベントは、生じる。８ビットカウンタのループ周期値ＴＬ２０４は、タイマ／カウンタ１０２（図１）がカウント値をそのゼロカウント値２０２からその最大カウント値ＣＭ２０６まで増やすのに要する時間量に等しい。
【００２４】
図３は、図２の一例のカウントライン２００に基づく、一例のカウンタポーリングプロセスおよび複数のカウント値の図である。図３のカウンタポーリングプロセスは、例えば、図１のタイマ／カウンタ１０２などのタイマ／カウンタユニットと組み合わせて使用される場合、所望の遅延時間の生成を可能にする。図３に示されるカウンタポーリングプロセスは、タイマ／カウンタ１０２の１つ以上のカウンタサイクルもしくはループの間に動作しているカウント値をポーリングすること（すなわち、読み出すことまたは別の方法で得ること）により、ランタイム段階の間に得られる複数のカウント値を含む。タイマ／カウンタ１０２が有効にされてるおよびカウント値を増やしているまたは動作している場合、逐次的な複数のカウント値の一連は、タイマ／カウンタ１０２により生成される各動作中のカウント値（すなわち、複数のカウント値の一連内の特定のカウント値）は、前回のカウント値ＣＰ（例えば、前回の複数のカウント値３０２、３０６、および３０８）ならびに／または現在のカウント値ＣＣ（例えば、現在の複数のカウント値３０４、３０８、および３１０）に関連する。現在のカウント値ＣＣは、タイマ／カウンタ１０２の現在の値を読むことで得られる。前回のカウント値ＣＰは、タイマ／カウンタ１０２の動作中のカウント値の前回の読み出しの間に得られた現在のカウント値ＣＣである。
【００２５】
各前回のカウント値ＣＰおよび現在のカウント値ＣＣは、前回のカウント変数値ＸＣＰおよび現在のカウント変数値ＸＣＣに、それぞれ記憶される（示されない）。複数のカウント変数値ＸＣＰおよびＸＣＣは、それぞれの前回の複数のカウント値ＣＰおよび現在の複数のカウント値ＣＣにより、タイマ／カウンタ１０２の各読み出しまたはポーリングの後に上書きされる。
【００２６】
タイマ／カウンタ１０２の一例の読み出しは、現在のカウント値ＣＣ３０４および前回のカウント値ＣＰ３０６により示される。特に、タイマ／カウンタ１０２の動作中のカウント値は、現在のカウント変数値ＸＣＣに記憶される現在のカウント値ＣＣ３０４を得るために読み出される。以下で図４および５に関連してより詳細に説明されるように、現在のカウント変数値ＸＣＣは、前回のカウント変数値ＸＣＰに記憶される前回のカウント値ＣＰ（すなわち、前回のカウント値ＣＰ３０２）と比較される。比較に基づいて、例えば、前回のカウント値ＣＰ３０６などの次の前回のカウント値ＣＰは、現在のカウント値ＣＣ３０４に等しくセットされ、前回のカウント変数値ＸＣＰに記憶され、それによって、前回のカウント値ＣＰ３０２を上書きする。この方法で、プロセッサシステム（例えば、図６のプロセッサシステム６１０）は、前回の複数のカウント値ＣＰおよび複数の現在のカウント値ＣＣを得るために、タイマ／カウンタ１０２（図１）をポーリングすることで、所望の遅延時間を実装する。
【００２７】
複数のカウンタサイクルまたは複数のループは、複数の添え字（０）、（１）、および（ｎ）を用いて示される。ここで、値ｎは複数のカウンタサイクルまたは複数のループの数を表す。一例として、図３のカウンタポーリングプロセスは、前回のカウント値ＣＰ３０２および現在のカウント値ＣＣ３１０に縛られる２つのカウンタサイクルまたはループを示す。加えて、各カウンタサイクルは、１つの転覆イベントを有する。転覆イベントは、現在のカウント値ＣＣを前回のカウント値ＣＰと比較することで検出される。前回のカウント値ＣＰが現在のカウント値ＣＣ（前回のカウント値ＣＰ３０８および現在のカウント値ＣＣ３１０により図示されるように）より大きい場合、転覆イベントは、生成されたまたは生じた。
【００２８】
図４は、図１の一例のシステム１００に実装される一例の遅延時間生成方法４００のフロー図である。一例の遅延時間生成方法４００は、プリブート段階または初期化プロセスの間（すなわち、非割り込み環境において）および／または任意の他のランタイム段階の間に実行される。所望の遅延時間は、複数のタイマ／カウンタ特性値（例えば、上で図２の一例のカウントライン２００に関連して説明されたループ周期値ＴＬ２０４および最大カウント値ＣＭ２０６）ならびに上で図３に関連して説明された複数のカウント変数値ＸＣＰおよびＸＣＣを得ることで実装される。
【００２９】
所望の遅延時間を生成することに関連する追加の複数の値は、遅延時間生成方法４００を用いて得られるおよび／または決定される。追加の複数の値は、初期のカウント値ＣＩ、遅延カウント値ＣＤ、複数のループの数の値Ｌ、および残りのカウント値ＣＲを含み、全ては、以下においてより詳細に説明される。複数の値は、ランタイム段階の間またはランタイム段階に先立って決定され、ランタイム段階の間に、何度もメモリに記憶され、および取り出される。加えて、複数の値は、例えば、プロセッサシステムを用いてそれらを計算するおよび／またはそれらをメモリから取り出す、などの多くの方法で決定される。
【００３０】
初期のカウント値ＣＩは、例えば、図１のタイマ／カウンタ１０２などのタイマ／カウンタのカウント値を読み出すことで得られる最初のカウント値に関連する。加えて、初期のカウント値ＣＩは、タイマ／カウンタ１０２に表される任意の値でよく、それは、ゼロカウント値２０２（図２）より大きくまたは等しく、最大カウント値ＣＭ２０６（図２）より小さいまたは等しい（すなわち、ゼロカウント値２０２≦ＣＩ≦ＣＭ２０６）。初期のカウント値ＣＩは、以下で数１−数３に関連して説明されるように、遅延カウント値ＣＤ、複数のループの数の値Ｌ、および残りのカウント値ＣＲを決定するために使用される。
【００３１】
遅延カウント値ＣＤは、所望の遅延時間を生成するために要するタイマ／カウンタ１０２の複数のカウントの数を決定する。例えば、所望の遅延時間がループ周期値ＴＬ２０４（図２）に示される時間量と等しい場合、遅延カウント値ＣＤは、最大カウント値ＣＭ２０６に等しくセットされる。この場合、タイマ／カウンタ１０２は、所望の遅延時間を実装するために、最大カウント値ＣＭ２０６に等しい複数のカウントの数を増やす。
【００３２】
複数のループの数の値Ｌは、タイマ／カウンタ１０２が特定のカウント値に達した回数で定義され、一般的に複数の転覆イベントに関連する。例えば、特定のカウント値がゼロカウント値２０２（図２）として定義される場合、複数のループの数の値Ｌは、タイマ／カウンタ１０２のカウント値がゼロカウント値２０２（図２）に達する回数と等しくなる。この方法では、タイマ／カウンタ１０２は、複数のループの数の値Ｌと等しい多くの転覆イベントを生成する。加えて、一例として、複数のループの数の値Ｌは、複数の添え字（０）、（１）、および（ｎ）により図３に示される。図３に関連して、上でより詳細に説明されたように、添え字の値ｎは、複数のカウンタサイクルまたは複数のループの数に等しい。
【００３３】
残りのカウント値ＣＲは、タイマ／カウンタ１０２（図１）に表される任意の値であり、ゼロカウント値２０２より大きいか等しく、また、最大カウント値ＣＭ２０６より小さいか等しい。一般的に、残りのカウント値ＣＲは、タイマ／カウンタ１０２の最後のループの後に、所望の遅延時間に達した時を判断するために使用される。言い換えれば、所望の遅延時間は、タイマ／カウンタ１０２が複数のループの数の値Ｌに等しい複数のカウンタサイクルまたは複数のループの数を完了することを可能にし、その後に、所望の遅延時間に達したかを判断するために、複数の残りのカウント値ＣＲおよびタイマ／カウンタ１０２をポーリングすることにより得られる複数のカウンタ値に基づいて、複数の比較が実行されることにより生成される。
【００３４】
ここで図４の一例の遅延時間生成方法４００の詳細に戻る。タイマ／カウンタ１０２（図１）は、有効にされ（ブロック４０２）、それにより、タイマ／カウンタ１０２がカウント値を増やすことを実行または開始することを起こす。初期のカウント値ＣＩは、タイマ／カウンタ１０２の動作中のカウント値を読み出すことで得られる（ブロック４０４）。遅延カウント値ＣＤ、複数のループの数の値Ｌ、および残りのカウント値ＣＲを含む複数の遅延時間生成値は、例えば、値生成器１１０（図１）により、その後決定される（ブロック４０６）。
【００３５】
遅延カウント値ＣＤは、遅延時間値ＴＤ、ループ周期値ＴＬ２０４、および最大カウント値ＣＭ２０６に基づいて、下記数１に従って決定される。
【数１】
2007512771.tif 000003
数１に示されるように、遅延カウント値ＣＤは、遅延時間値ＴＤをループ周期値ＴＬ２０４で割り、結果に最大カウント値ＣＭ２０６を掛けることで決定される。
【００３６】
一般的に、複数のループの数の値Ｌは、遅延カウント値ＣＤ、および最大カウント値ＣＭ２０６に基づいて、以下の数２に従って決定される。
【数２】
2007512771.tif 000004
数２に示されるように、複数のループの数の値Ｌは、遅延カウント値ＣＤを最大カウント値ＣＭ２０６で割り、結果を最近の整数値に丸め込むことで決定される。あるいは、複数のループの数の値Ｌは、遅延時間値ＴＤをループ周期値ＴＬ２０４で割り、結果を最近の整数値に丸め込むことで、また決定される。
【００３７】
残りのカウント値ＣＲは、遅延カウント値ＣＤ、複数のループの数の値Ｌ、および最大カウント値ＣＭ２０６に基づいて、下記の数３に従って決定される。
【数３】
2007512771.tif 000005
【００３８】
数３に示されるように、残りのカウント値ＣＲは、複数のループの数の値Ｌに最大カウント値ＣＭ２０６を掛け、結果を遅延カウント値ＣＤから引くことで決定される。あるいは、残りのカウント数は、複数のループの数の値Ｌをループ周期値ＴＬ２０４に割られる遅延時間値ＴＤの商から引き、結果に最大カウント値ＣＭ２０６を掛けることで、また決定される。
【００３９】
最初の前回のカウント値は、例えば、前回のカウント値ＣＰ３０２（図３）を初期のカウント値ＣＩに等しくセットし、前回のカウント値ＣＰ３０２を前回のカウント変数値ＸＣＰに記憶することで、初期化される（ブロック４０８）。タイマ／カウンタ１０２（図１）は、ポーリングされ、現在のカウント値ＣＣ３０４（図３）がタイマ／カウンタ１０２（ブロック４１０）から読み出され、現在のカウント変数値ＸＣＣに記憶される。現在のカウント変数値ＸＣＣ、初期のカウント値ＣＩ、および前回のカウント変数値ＸＣＰの比較は、タイマ／カウンタ１０２のループが完了したかを判断するために実行される（ブロック４１２）。
【００４０】
前回のカウント変数値ＸＣＰが初期のカウント値ＣＩより小さく、また、初期のカウント値ＣＩが現在のカウント変数ＸＣＣより小さいまたはに等しい場合（すなわち、ＸＣＰ＜ＣＩ≦ＸＣＣ）、転覆イベントは、検出され、複数のループの数の値Ｌは、減らされる（ブロック４１４）。ブロック４１４で複数のループの数の値Ｌを減らした後、またはブロック４１２で前回のカウント変数値ＸＣＰが初期のカウント値より小さくない、および／または初期のカウント値ＣＩが現在のカウント変数ＸＣＣより小さくまたはと等しくない場合、制御は、ブロック４１６に渡される。ブロック４１６において、前回のカウント値ＣＰ３０６（図３）は、現在のカウント値ＣＣ３０４に等しくセットされ、前回のカウント変数値ＸＣＰに記憶される。
【００４１】
ゼロテストは、複数のループの数の値Ｌがゼロより大きいかどうかを判別するために、複数のループの数の値Ｌ上で実行される（ブロック４１８）。複数のループの数の値Ｌがゼロより大きい場合、制御は、ブロック４１０に渡される。一方、複数のループの数の値Ｌがブロック４１８においてゼロより大きくない場合、別の現在のカウント値ＣＣが得られ（ブロック４２０）、現在のカウント変数値ＸＣＣに記憶される。
【００４２】
現在のカウント変数値ＸＣＣが初期のカウント値ＣＩより小さいかどうかを判別するために、比較がなされる（ブロック４２２）。現在のカウント変数値ＸＣＣが初期のカウント値ＣＩより小さい場合、現在のカウント変数値ＸＣＣは、現在のカウント変数値ＸＣＣに最大カウント値ＣＭを加え、結果を現在のカウント変数値ＸＣＣに記憶することで更新される（すなわち、ＸＣＣ＝ＸＣＣ＋ＣＭ）（ブロック４２４）。
【００４３】
現在のカウント変数値ＸＣＣが更新された後（ブロック４２４）、またはブロック４２２において現在のカウント変数値ＸＣＣが初期のカウント値より小さくないと判断される場合、現在のカウント変数値ＸＣＣ、初期のカウント値ＣＩ、および残りのカウント値ＣＲに基づいて、遅延時間に達したかどうかを判断するために比較がなされる（ブロック４２６）。ブロック４２６において、初期のカウント値ＣＩが引かれる現在のカウント変数ＸＣＣが残りのカウント値ＣＲより小さいことが判断される場合（すなわち、（ＸＣＣ−ＣＩ）＜ＣＲ）、制御は、ブロック４２０に渡される。しかしながら、ブロック４２６において、初期のカウント値ＣＩが引かれる現在のカウント変数値ＸＣＣが残りのカウント値ＣＲより小さくないと判断される場合、所望の遅延時間に達した。
【００４４】
図５は、図１の一例のシステム１００により実装される別の例の遅延時間生成方法５００のフロー図である。一例の遅延時間生成方法５００は、プリブート段階または初期化プロセスの間（すなわち、非割り込み環境）および／または任意の他のランタイム段階の間に実行される。一例の遅延時間生成方法５００は、初期のカウント値（例えば、上で図４に関連して詳細に説明された初期のカウント値ＣＩ）に基づいて、複数の遅延時間生成値を決定することで所望の遅延時間を生成するために使用される。より具体的には、以下に数４−数６に関連して説明されるように、初期のカウント値ＣＩは、遅延カウント値ＣＤ、複数のループの数の値Ｌ、および残りのカウント値ＣＲを決定するために使用される。さらに、所望の遅延時間は、一例の遅延時間生成方法５００により、複数の遅延時間生成値、ループ周期値ＴＬ２０４（図２）、および最大カウント値ＣＭ２０６（図２）ならびに複数のカウント変数値ＸＣＰおよびＸＣＣ（図３）に基づいて生成される。
【００４５】
ここで図５の一例の遅延時間生成方法５００の詳細に戻る。タイマ／カウンタ（例えば、図１のタイマ／カウンタ１０２）は、有効にされ（ブロック５０２）、それにより、タイマ／カウンタ１０２が複数のカウント値を増やすことを実行または開始することを引き起こす。初期のカウント値ＣＩは、タイマ／カウンタ１０２の実行中のカウント値を読み出すことで得られる。遅延カウント値ＣＤ、複数のループの数の値Ｌ、および残りのカウント値ＣＲを含む複数の遅延時間生成値は、例えば、値生成器１１０（図１）により決定される（ブロック５０６）。
【００４６】
遅延カウント値ＣＤは、遅延時間値ＴＤ、ループ周期値ＴＬ２０４、最大カウント値ＣＭ２０６、および初期のカウント値ＣＩに基づき、以下の数４に従って決定される。
【数４】
2007512771.tif 000006
数４に示されるように、遅延カウント値ＣＤは、遅延時間値ＴＤをループ周期値ＴＬ２０４で割り、その結果に最大カウント値ＣＭ２０６を掛け、その結果に初期のカウント値ＣＩを足すことで決定される。
【００４７】
一般的に、複数のループの数の値Ｌは、遅延カウント値ＣＤおよび最大カウント値ＣＭ２０６に基づき、以下の数５に従って決定される。
【数５】
2007512771.tif 000007
数５に示されるように、複数のループの数の値Ｌは、遅延カウント値ＣＤを最大カウント値ＣＭ２０６（図２）で割り、その結果を最近の整数値に丸め込むことで決定される。あるいは、複数のループの数の値Ｌは、遅延時間値ＴＤをループ周期値ＴＬ２０４で割り、その結果に最大カウント値ＣＭ２０６に割られる初期カウント値ＣＩの商を足し、最近の整数値に丸め込むことでまた決定される。
【００４８】
残りのカウント値ＣＲは、遅延カウント値ＣＤ、複数のループの数の値Ｌ、および最大カウント値ＣＭ２０６に基づき、以下の数６に従って決定される。
【数６】
2007512771.tif 000008
【００４９】
数６に示されるように、残りのカウント値ＣＲは、複数のループの数の値Ｌに最大カウント値ＣＭ２０６を掛け、その結果を遅延カウント値ＣＤから引くことで決定される。あるいは、残りのカウント数ＣＲは、初期のカウント値ＣＩを最大カウント値ＣＭ２０６およびループ周期値ＴＬ２０４に割られる遅延時間値ＴＤの商から引かれる複数のループの数の値Ｌの数量の積にたすことで決定される。
【００５０】
最初の前回のカウント値は、例えば、前回のカウント値ＣＰ３０２（図３）を初期のカウント値ＣＩに等しくセットし、前回のカウント値ＣＰ３０２を前回のカウント変数値ＸＣＰに記憶することで初期化される（ブロック５０８）。現在のカウント値ＣＣ３０４（図３）は、タイマ／カウンタ１０２読み出され（ブロック５１０）、現在のカウント変数値ＸＣＣに記憶される。現在のカウント変数値ＸＣＣは、タイマ／カウンタ１０２のループが完了したかを判断するために前回のカウント変数値ＸＣＰと比較される（ブロック５１２）。
【００５１】
現在のカウント変数値ＸＣＣが前回のカウント変数値ＸＣＰより小さい場合（すなわち、ＸＣＣ＜ＸＣＰ）、転覆イベントが検出され、複数のループの数の値Ｌは、減らされる（ブロック５１４）。ブロック５１４において複数のループの数の値Ｌを減らした後、またはブロック５１２において現在のカウント変数値ＸＣＣが前回のカウント変数値ＸＣＰより小さくない場合、制御はブロック５１６に渡される。ブロック５１６において、前回のカウント値ＣＰ３０６（図３）は、現在のカウント値ＣＣ３０４（図３）に等しくセットされ、前回のカウント変数ＸＣＰに記憶される。
【００５２】
ゼロテストは、複数のループの数の値Ｌがゼロより大きいかどうかを判断するために、複数のループの数の値Ｌに対し実行される（ブロック５１８）。複数のループの数の値Ｌがゼロより大きい場合、制御はブロック５１０に渡される。一方で、複数のループの数の値Ｌがゼロより大きくない場合、前回のカウント値ＣＰ３０６（図３）は、現在のカウント値ＣＣ３０４（図３）に等しくセットされ、前回のカウント変数値ＸＣＰに記憶される（ブロック５２０）。別の現在のカウント値ＣＣが得られ（ブロック５２２）、現在のカウント変数値ＸＣＣに記憶される。
【００５３】
現在のカウント変数値ＸＣＣは、残りのカウント変数値ＣＲおよび前回のカウント変数値ＸＣＰと比較される（ブロック５２４）。現在のカウント変数値ＸＣＣが残りのカウント値ＣＲより小さく、かつ、前回のカウント変数値ＸＣＰが現在のカウント変数値ＸＣＣより小さい場合（すなわち、ＸＣＣ＜ＣＲかつＸＣＰ＜ＸＣＣ）、制御はブロック５２０に渡される。しかしながら、現在のカウント変数ＸＣＣが残りのカウント値ＣＲより小さくなく、および／または、前回のカウント変数値ＸＣＰが現在のカウント変数値ＸＣＣより小さくない場合、所望の遅延時間に達した。
【００５４】
図６は、ここで説明された製造の複数の装置、複数の方法、および複数の製品を実装するために用いられる一例のプロセッサシステム６１０のブロック図である。図６に示されるように、プロセッサシステム６１０は、相互接続バスまたはネットワーク６１４に結合されたプロセッサ６１２を備える。プロセッサ６１２は、レジスタセットまたはレジスタスペース６１６を有し、これは、図６に全体的にオンチップであるように描かれているが、これは、あるいは、全体的にまたは部分的にオフチップでよく、およびプロセッサ６１２に専用の電気的な複数の接続を介しておよび／または相互接続ネットワークまたはバス６１４を介して結合されてよい。プロセッサ６１２は、例えば、Ｉｎｔｅｌ  Ｘ−Ｓｃａｌｅ（登録商標）ファミリ、Ｉｎｔｅｌ  Ｐｅｎｔｉｕｍ（登録商標）ファミリ等からのプロセッサなどの任意の適したプロセッサ、プロセッシングユニットまたはマイクロプロセッサでよい。図６には示されていないが、プロセッサシステム６１０は、プロセッサ６１２と同一のまたは同様の１つ以上の付加的なプロセッサを備え、それらは相互接続バスまたはネットワーク６１４に結合されるマルチプロセッサシステムでよい。
【００５５】
図６のプロセッサ６１２は、メモリコントローラ６２０、入力／出力（Ｉ／Ｏ）コントローラ６２２、およびタイマ／カウンタユニット６２３を有するチップセット６１８に結合される。良く知られるように、チップセットは、代表的に、複数の汎用および／または特定用途レジスタ、タイマ等のみならず複数のＩ／Ｏおよびメモリ制御機能提供し、これらは、チップセットに結合される１つ以上のプロセッサからアクセス可能であり、または使用される。メモリコントローラ６２０は、プロセッサ６１２（または、複数のプロセッサがある場合は、複数のプロセッサ）がシステムメモリ６２４および不揮発性メモリ６２５にアクセスすることを可能にする複数の機能を実行する。
【００５６】
システムメモリ６２４は、例えば、静的ランダムアクセスメモリ（ＳＲＡＭ）、動的ランダムアクセスメモリ（ＤＲＡＭ）などの揮発性メモリの所望のタイプを有する。不揮発性メモリ６２５は、例えば、フラッシュメモリまたは読み出し専用メモリ（ＲＯＭ）などの不揮発性メモリの所望のタイプを有する。その上、基本入出力システム（ＢＩＯＳ）またはＥＦＩの部分を構成する複数のプリブートシステム初期化命令は、プリブートシステム初期化プロセス間（すなわち、オペレーティングシステムブートプロセス前）のアクセスのために、不揮発性メモリ６２５上に記憶される。
【００５７】
Ｉ／Ｏコントローラ６２２は、プロセッサ６１２が複数の周辺入力／出力（Ｉ／Ｏ）デバイス６２６および６２８とＩ／Ｏバス６３０を介して通信することを可能にする複数の機能を実行する。複数のＩ／Ｏデバイス６２６および６２８は、例えば、キーボード、ビデオディスプレイもしくはモニタ、マウスなどのＩ／Ｏデバイスの任意の所望のタイプでよい。
【００５８】
タイマ／カウンタユニット６２３は、図１のタイマ／カウンタ１０２と実質的に同様または同一であり、プロセッサシステム６１０のランタイム段階の間に、複数の遅延時間および／または指定時間に動作する複数のシステムイベントを実装するために使用される。タイマ／カウンタユニット６２３は、電力制御インターフェース（ＡＣＰＩ）タイマおよびまたはリセット不可能なタイマをまた含むＡＣＰＩタイマは、プリブートプロセッサシステム初期化プロセス間に機能するように構成される。
【００５９】
メモリコントローラ６２０、Ｉ／Ｏコントローラ６２２およびタイマ／カウンタユニット６２３は、図６にチップセット６１８内の分離した複数の機能ブロックとして描かれるが、これら複数のブロックに実行される複数の機能は、１つの半導体回路に集積されるまたは２つ以上の分離した集積回路を用いて実装される。
【００６０】
ここで説明される複数の方法は、コンピュータ可読媒体上に記憶され、プロセッサ６１２に実行される複数の命令を用いて実装される。コンピュータ可読媒体は、複数の大容量記憶デバイス（例えば、ディスクドライブ）、複数の取り外し可能記憶デバイス（例えば、複数のフロッピーディスク、複数のメモリカードもしくはスティック等）、および／または複数の集積メモリデバイス（例えば、ランダムアクセスメモリ、フラッシュメモリ等）の任意の所望の組み合わせを用いて実装される半導体、磁気、および／または光学媒体の任意の所望の組み合わせを含む。
【００６１】
製造の特定の複数の方法、複数の装置、複数の製品がここで説明されたが、本特許の請求の範囲は、それらに制限されない。それどころか、本特許は、文言上または均等論に基づき、添付された複数の請求項の適切な範囲内の製造の全ての方法、装置、および製品を網羅する。
【図１】
2007512771.tif 000009
【図２】
2007512771.tif 000010
【図３】
2007512771.tif 000011
【図４】
2007512771.tif 000012
【図５】
2007512771.tif 000013
【図６】
2007512771.tif 000014
【国際調査報告】
2007512771.tif 000015
2007512771.tif 000016