【誤訳訂正書】
【提出日】平成23年1月19日(2011.1.19)
【誤訳訂正１】
【訂正対象書類名】特許請求の範囲
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【特許請求の範囲】
【請求項１】
方法であって、
デバイスの機能のイネーブルが許可されているかどうかを表す２進値を格納する前記デバイスの機能許可レジスタをチェックして、前記デバイスの機能のイネーブルが許可されているか判定する段階と、
前記デバイス上でイネーブルされた機能の総数が、前記デバイスで同時にイネーブルできる機能の最大数である最大許容機能数以下であるか判定する段階と、
前記デバイスの各機能をクレジット値と対応付ける段階と、
イネーブルされた全ての機能にそれぞれ対応付けられた前記クレジット値を加算する段階と、
前記デバイスの前記機能のイネーブルが許可されており、前記デバイス上でイネーブルされた機能の総数が前記デバイスの前記最大許容機能数以下であり、かつ、前記イネーブルされた全ての機能にそれぞれ対応付けられた前記クレジット値の加算値が前記最大許容機能数以下である場合に、前記デバイスの前記イネーブルされた前記機能のイネーブル状態を維持する段階と
を含み、
前記デバイスの機能のうち少なくともいずれかの機能は、他の機能に対応付けられた前記クレジット値とは異なるクレジット値が対応づけられ、
前記デバイスの最大許容機能数は、前記デバイスの機能カウント指定子レジスタにプログラミングされた値であり、
前記機能許可レジスタおよび前記機能カウント指定子レジスタは、１度に限ってプログラミング可能であり、プログラミングされた後はそれぞれの値にすべく永久的に配線接続される
方法。
【請求項２】
前記機能許可レジスタの値を前記デバイスにプログラミングする段階
をさらに含む請求項１に記載の方法。
【請求項３】
前記機能許可レジスタの値が前記デバイスの前記機能のイネーブルを許可する場合に、前記デバイスの前記機能のイネーブルを可能にする段階
をさらに含む請求項２に記載の方法。
【請求項４】
前記機能許可レジスタの値を前記デバイスにプログラミングする段階は、前記機能許可レジスタに、前記デバイスのイネーブルが許可されているかどうかを表す２進値を格納する段階を含む
請求項２または３に記載の方法。
【請求項５】
前記加算値が前記最大許容機能数よりも大きい場合に、１以上のデバイス機能をディセーブルする段階
をさらに含む請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記１以上のデバイス機能をディセーブルする段階は、すべてのデバイス機能をディセーブルする段階を含む
請求項５に記載の方法。
【請求項７】
前記デバイスはＩ／Ｏコントローラハブをさらに備える
請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記デバイスはメモリコントローラハブをさらに備える
請求項１から７のいずれか一項に記載の方法。
【請求項９】
前記デバイスは中央演算処理装置をさらに備える
請求項１から８のいずれか一項に記載の方法。
【請求項１０】
方法であって
デバイスの機能カウント指定子レジスタに、前記デバイスで同時にイネーブルできる機能の最大数である最大許容機能数を指定する段階と、
前記デバイスの機能のイネーブルが許可されているかどうかを表す２進値を格納する前記デバイスの機能許可レジスタをチェックして、前記デバイスの機能のイネーブルが許可されているか判定する段階と、
前記デバイスの各機能をクレジット値と対応付ける段階と、
イネーブルされた全ての機能にそれぞれ対応付けられた前記クレジット値を加算する段階と、
前記デバイス上でイネーブルされた機能の総数が前記デバイスの前記指定された最大許容機能数を超えているか、前記イネーブルされた全ての機能にそれぞれ対応付けられた前記クレジット値の加算値が前記指定された最大許容機能数を超えている場合、１以上のデバイス機能をディセーブルする段階と
を含み、
前記デバイスの機能のうち少なくともいずれかの機能は、他の機能に対応付けられた前記クレジット値とは異なるクレジット値が対応づけられ、
前記デバイスの最大許容機能数は、前記デバイスの機能カウント指定子レジスタにプログラミングされた値であり、
前記機能許可レジスタおよび前記機能カウント指定子レジスタは、１度に限ってプログラミング可能であり、プログラミングされた後はそれぞれの値にすべく永久的に配線接続される
方法。
【請求項１１】
前記デバイス上でイネーブルされた機能の総数が前記デバイスの前記指定された最大許容機能数を超えている場合、すべてのデバイス機能をディセーブルする段階
をさらに含む請求項１０に記載の方法。
【請求項１２】
前記最大許容機能数を示す情報を前記デバイスのレジスタに格納する段階
をさらに含む請求項１０または１１に記載の方法。
【請求項１３】
前記デバイスはＩ／Ｏコントローラハブをさらに備える
請求項１０から１２のいずれか一項に記載の方法。
【請求項１４】
前記デバイスはメモリコントローラハブをさらに備える
請求項１０から１３のいずれか一項に記載の方法。
【請求項１５】
前記デバイスは中央演算処理装置をさらに備える
請求項１０から１４のいずれか一項に記載の方法。
【請求項１６】
方法であって、
デバイス上で１以上の機能のイネーブルが許可されているかどうか指定するべく、前記デバイスの機能のイネーブルが許可されているかどうかを表す２進値を格納する前記デバイスの１以上の機能許可レジスタに、各デバイス機能と対応付けられている値をプログラミングする段階と、
前記デバイスで同時にイネーブルできる機能の最大数である最大許容機能数を指定するべく、前記デバイス上の機能カウンタレジスタに値をプログラミングする段階と、
各デバイス機能に対応付けられた前記機能許可レジスタの値によって当該機能のイネーブルが許可されている場合に、デバイス初期化における当該機能のイネーブルを可能にする段階と、
各デバイス機能をクレジット値と対応付ける段階と、
イネーブルされた全ての機能にそれぞれ対応付けられた前記クレジット値を加算する段階と、
デバイス初期化によってイネーブルされたデバイス機能の総数を計数する段階と、
前記デバイスでイネーブルされた機能の総数が前記デバイス上の前記最大許容機能数を超えているか、前記イネーブルされた全ての機能にそれぞれ対応付けられた前記クレジット値の加算値が前記最大許容機能数を超えている場合、すべてのデバイス機能をディセーブルする段階と
を含む方法。
【請求項１７】
デバイス初期化は前記デバイスの起動シーケンスをさらに含む
請求項１６に記載の方法。
【請求項１８】
前記デバイスはＩ／Ｏコントローラハブをさらに備える
請求項１６または１７に記載の方法。
【請求項１９】
前記デバイスはメモリコントローラハブをさらに備える
請求項１６から１８のいずれか一項に記載の方法。
【請求項２０】
前記デバイスは中央演算処理装置をさらに備える
請求項１６から１９のいずれか一項に記載の方法。
【請求項２１】
前記デバイスの各機能は、機能イネーブルレジスタの１以上のビットに対応付けられ、
前記機能イネーブルレジスタの値は、前記デバイスの各機能をイネーブルまたはディセーブルするべくシステムの初期化中に変更され、
前記デバイスの各機能に対応付けられた前記クレジット値は、各機能に対応付けられた前記機能イネーブルレジスタのビットの数によって定められる
請求項１から２０のいずれか一項に記載の方法。
【請求項２２】
装置であって、
デバイスの機能のイネーブルが許可されているかどうかを表す２進値を格納する前記デバイスの機能許可レジスタをチェックして、デバイスの機能のイネーブルが許可されているか判定する回路と、
前記デバイス上でイネーブルされた機能の総数が前記デバイスで同時にイネーブルできる機能の最大数である最大許容機能数以下であるか判定する回路と、
前記デバイスの前記機能のイネーブルが許可されており、前記デバイス上でイネーブルされた機能の総数が前記最大許容機能数以下である場合に、前記デバイスの前記イネーブルされた前記機能のイネーブル状態を維持する回路と
を備え、
前記デバイスの各機能はクレジット値と対応付けられており、
前記デバイスの機能のうち少なくともいずれかの機能は、他の機能に対応付けられた前記クレジット値とは異なるクレジット値が対応づけられ、
前記デバイスの最大許容機能数は、前記デバイスの機能カウント指定子レジスタにプログラミングされた値であり、
前記機能許可レジスタおよび前記機能カウント指定子レジスタは、１度に限ってプログラミング可能であり、プログラミングされた後はそれぞれの値にすべく永久的に配線接続され、
前記デバイスの前記イネーブルされた前記機能のイネーブル状態を維持する回路は、イネーブルされた全ての機能にそれぞれ対応付けられた前記クレジット値の加算値が前記最大許容機能数以下であることを更なる条件として、前記デバイスの前記イネーブルされた前記機能のイネーブル状態を維持する
装置。
【請求項２３】
前記デバイス上の前記最大許容機能数を指定して、
前記デバイス上の前記最大許容機能数を表す情報をレジスタに格納する
請求項２２に記載の装置。
【請求項２４】
前記デバイス上でイネーブルされた機能の総数が前記デバイスの前記指定された最大許容機能数を超えている場合、すべてのデバイス機能をディセーブルする回路
をさらに備える請求項２３に記載の装置。
【請求項２５】
前記デバイスの各機能は、機能イネーブルレジスタの１以上のビットに対応付けられ、
前記機能イネーブルレジスタの値は、前記デバイスの各機能をイネーブルまたはディセーブルするべくシステムの初期化中に変更され、
前記デバイスの各機能に対応付けられた前記クレジット値は、各機能に対応付けられた前記機能イネーブルレジスタのビットの数によって定められる
請求項２２から２４のいずれか一項に記載の装置。
【請求項２６】
前記デバイスはＩ／Ｏコントローラハブをさらに備える
請求項２２から２５のいずれか一項に記載の装置。
【請求項２７】
前記デバイスはメモリコントローラハブをさらに備える
請求項２２から２６のいずれか一項に記載の装置。
【請求項２８】
前記デバイスは中央演算処理装置をさらに備える
請求項２２から２７のいずれか一項に記載の装置。
【請求項２９】
システムであって、
バスと、
前記バスに接続されたプロセッサと、
前記バスに接続されたチップセットと
を備え、
前記チップセットは、
デバイスの機能のイネーブルが許可されているか判定する回路と、
前記デバイス上でイネーブルされた機能の総数が、前記デバイスで同時にイネーブルできる機能の最大数である最大許容機能数以下であるか判定する回路と、
前記デバイスの前記機能のイネーブルが許可されていて且つ前記デバイス上でイネーブルされた機能の総数が前記デバイスの前記最大許容機能数以下である場合に、前記デバイスの前記イネーブルされた前記機能のイネーブル状態を維持する回路と
を有し、
前記デバイスの各機能はクレジット値と対応付けられており、
前記デバイスの前記イネーブルされた前記機能のイネーブル状態を維持する回路は、イネーブルされた全ての機能にそれぞれ対応付けられた前記クレジット値の加算値が前記最大許容機能数以下であることを更なる条件として、前記デバイスの前記イネーブルされた前記機能のイネーブル状態を維持する
システム。
【請求項３０】
前記デバイス上のレジスタに２進値を格納する回路をさらに備え、当該２進値は前記デバイスの前記機能のイネーブルが許可されているかどうかを表す
をさらに備える請求項２９に記載のシステム。
【請求項３１】
前記デバイス上の前記最大許容機能数を表す情報をレジスタに格納する回路
をさらに備える請求項２９または３０に記載のシステム。
【請求項３２】
前記デバイスの各機能は、機能イネーブルレジスタの１以上のビットに対応付けられ、
前記機能イネーブルレジスタの値は、前記デバイスの各機能をイネーブルまたはディセーブルするべくシステムの初期化中に変更され、
前記デバイスの各機能に対応付けられた前記クレジット値は、各機能に対応付けられた前記機能イネーブルレジスタのビットの数によって定められる
請求項２９から３１のいずれか一項に記載のシステム。
【誤訳訂正２】
【訂正対象書類名】明細書
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【発明の詳細な説明】
【発明の名称】コンフィグラブルな機能選択機構
【技術分野】
【０００１】
本発明は、デバイスの機能をプログラミングすることおよび選択することに関する。
【背景技術】
【０００２】
在庫予測、在庫管理およびストック・キーピング・ユニット（ＳＫＵ）の管理は、ハードウェア技術関連の大企業にとって金銭的に大きな負担である。ハードウェア製造企業が顧客の需要に基づき所望の機能および機能の組み合わせを備える製品、つまりハードウェアを提供できるか否かには、企業が製造可能なハードウェアのＳＫＵの個数が限られているので、限度がある。例を挙げて説明すると、チップセットの機能は通常さまざまに組み合わせることが可能で、現時点では組み合わせ毎にハードウェアのＳＫＵを別々にする必要がある。チップセットのハードウェアＳＫＵが別々になっているので、各ＳＫＵに対応できるよう顧客は複数のボードを保持する必要がある。さらに、専門化したマザーボードのラインのアイテムを保持し、且つチップセットの識別可能なＳＫＵ毎に在庫を管理しなければならない。ハードウェアＳＫＵの種類が増えると、それに応じて金銭面での負担が増加する。また、在庫管理にリスクが生じるとともに複雑になってしまう。ハードウェア関連企業では現在のところ、ある１つの物理的なハードウェアＳＫＵに関して、何通りにも選択可能且つコンフィグラブルな機能を実現することができない。このため、何通りにも選択可能且つコンフィグラブルな機能を実現できる物理的なハードウェアＳＫＵを提供することができれば、大きな効果があると考えられる。このような構成が可能となればハードウェア関連企業は、現在のＳＫＵ方法ではコスト面または在庫管理の複雑さのため実現不可能であったが、何通りにも選択可能且つコンフィグラブルな機能およびその組み合わせに割り当てられた値を取得できる。
【図面の簡単な説明】
【０００３】
本発明を例に基づいて説明する。本発明は添付の図面によって限定されるものではない。添付図面では、同様の構成要素は同様の参照符号を用いて示している。以下に図面を簡単に説明する。
【０００４】
【図１】一実施形態に係るコンピュータシステムを示すブロック図である。
【０００５】
【図２】一実施形態に係る機能選択機構を示す回路図である。
【０００６】
【図３】別の実施形態に係る機能選択機構を示す回路図である。
【０００７】
【図４】一実施形態に係る機能選択機構の出力結果の例を示す。
【０００８】
【図５】一実施形態に係る、デバイス上で機能をイネーブルするためのプロセスを示すフローチャートである。
【０００９】
【図６】一実施形態に係る、機能のイネーブルを可能にするべくデバイスを最初にプログラミングするためのプロセスを示すフローチャートである。
【００１０】
【図７】一実施形態に係る、機能選択レジスタおよび機能許可指示子に基づきデバイスの機能をイネーブルするためのプロセスを示すフローチャートである。
【００１１】
【図８】一実施形態に係る、デバイス機能カウンタの値が最大許容機能数を超えているか判定するためのプロセスを示すフローチャートである。
【発明を実施するための最良の形態】
【００１２】
コンフィグラブルな機能選択機構の実施形態を開示する。以下の説明においては、具体的且つ詳細な記載が多くある。しかし、以下に開示する具体的且つ詳細な記載に基づかなくとも実施例を実現できるのは明らかである。また、公知の素子、仕様およびプロトコルについては、本発明の説明があいまいになるのを避けるべく、詳細な説明を省略している。
【００１３】
図１は、一実施形態に係るコンピュータシステムを示すブロック図である。該コンピュータシステムは、プロセッサ１００、メモリコントローラハブ（ＭＣＨ）１０２およびＩ／Ｏコントローラハブ（ＩＣＨ）１０８を備えるとしてもよい。ＭＣＨ１０２およびＩＣＨ１０８はチップセットを有するとしてもよい。プロセッサ１００はホストバスを介してＭＣＨ１０２に接続されるとしてもよい。ＭＣＨ１０２はシステムメモリ１０４に接続されるとしてもよい。ほかの実施形態においては、システムメモリはＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＤＲ−ＳＤＲＡＭ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  ＳＤＲＡＭ）、ＲＤＲＡＭ（ＲＡＭＢＵＳ  ＤＲＡＭ）と初めとするメインシステムメモリのフォーマットであってもよい。ＭＣＨ１０２はさらに、グラフィクスモジュール１０６に接続されるとしてもよい。一実施形態に係るグラフィクスモジュールは、ＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）グラフィクスカードであってもよい。ＩＣＨ１０８は、Ｉ／Ｏバス１１０、ハードドライブ１１２、キーボードコントローラ１１４およびマウスコントローラ１１６に接続されるとしてもよい。別の実施形態によると、ＩＣＨ１０８はさらに、１以上のＩ／Ｏデバイス、バスおよび／またはコントローラ（例えば、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）コントローラ）、ＰＣＩ（周辺機器インターフェース）バス、もしくはＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などに接続されるとしてもよい。別の実施形態によると、ＩＣＨ１０８はさらに複数の機能を内部に持つとしてもよい。例を挙げると、内部高解像度音声機能およびバッテリー寿命を延ばすために携帯可能プラットフォームで利用される電力管理機能などがある。
【００１４】
一実施形態に係るＩＣＨ１０８は、システム初期化中においてある機能のイネーブルが許可されているかどうか判定する上で用いられる、プログラム可能な機能許可指示子（ＦＰＤ）１１８を有するとしてもよい。一実施形態によると、ＦＰＤはＩＣＨ１０８内のレジスタに格納される１ビットの値であってもよい。一実施形態によると、レジスタに格納される１ビットのＦＰＤの値は一度に限ってプログラム可能で、その後はプログラミングされた値に永久に固定される。本実施形態では、この値はプログラミングされると（対応するビットの値を用いて）レジスタビットラインにヒューズを接続することによって固定されるとしてもよい。この時、ヒューズは閉じたままとしてもよいし、最初のプログラミング中にビットの値によってはヒューズを開けるとしてもよい。
【００１５】
一実施形態によると、ＦＰＤ１１８に対応付けられたビットの値が「非選択」に永久にプログラミングされている場合（つまり、機能のイネーブルを許可することが禁止された場合）、ＦＰＤ１１８に対応付けられた機能は永久にディセーブルとなる。一方、この実施形態において、ＦＰＤ１１８に対応付けられたビット値が「選択」に永久にプログラミングされている場合（つまり機能をイネーブルする許可が与えられている場合）、ＦＰＤ１１８に対応付けられた機能は、その後実施されるシステム初期化においてイネーブルされるとしてもよい。一実施形態によると、ある機能に対応付けられたＦＰＤ１１８が「選択」を示す場合、電源オフイベント後にシステムが起動する時にこの機能がイネーブルされるとしてもよい。別の実施形態によると、この機能が「選択」されている場合、この機能はリアルタイムでクロックを機能させているバッテリーバックアップがディセーブルされた後に初期化が行われた場合に限りイネーブルされるとしてもよい。別の実施形態では、ＩＣＨ１０８は機能イネーブルレジスタ（ＦＥＲ）１２０を有するとしてもよい。ＦＥＲ１２０は、各機能をイネーブルするべくシステム起動中にＢＩＯＳ（基本入出力システム）およびソフトウェアを初めとするプログラミング機構によってプログラミングされる。一実施形態によると、ＦＥＲ１２０はハードウェアストラップによって、ある値に永久にプログラミングされるとしてもよい。ハードウェアストラップはビット信号であり、初期化中（つまり起動中）のある時点において該ビット信号の論理値に基づきハードウェアのあるビットを設定するデバイス内のピンを介して送信される。
【００１６】
一実施形態によると、各機能はＦＥＲ１２０内で１ビットと対応付けられている。別の実施形態によると、１つの機能について複数のレベルの機能性を与えるべく、ＦＥＲ１２０内で複数のビットに対応付けられる機能があってもよい。一実施形態によると、ＩＣＨ１０８に対応付けられた機能が複数ある。本実施形態によると、ＦＰＤ１１８の値はそれぞれＦＰＤ１１８のレジスタに格納され、ＦＥＲ１２０はＦＰＤ１１８の値それぞれに対して対応するビット（および対応する値）を持つ。機能選択機構はＦＰＤ１１８の値とＦＥＲ１２０の値を比較し、「選択」され且つ後にシステム内でイネーブルされる機能はどれかを判定する。このため、ある機能に対応するＦＰＤ１１８の値が選択されている（つまりイネーブルが許可されている）場合、この機能に対応するＦＥＲ１２０の値が、システム初期化中に該機能をイネーブルすべく変更されるとしてもよい。このため一実施形態によると、この機能がイネーブルされるのは、ＦＰＤ１１８の値と対応するＦＥＲ１２０のビットの値が両方とも１という論理値である場合となる。ＩＣＨ１０８内のＦＰＤ１１８およびＦＥＲ１２０用の論理回路はソフトウェア機能セレクタ（ＳＦＳ）と呼ばれる。これは、この論理回路が、ＢＩＯＳやソフトウェアなどのプログラミング機構を用いてシステム初期化中に機能をイネーブルおよびディセーブルすることができるためである。
【００１７】
図２は、一実施形態に係る機能選択機構を示す回路図である。まず、原機能（つまり、機能）ディセーブル値（入力２０２）が論理ＯＲゲート２１２に入力され、ＳＦＳ出力（出力２１０）との間で論理和（ＯＲ）をとる。このため、機能ディセーブル値（入力２０２）が論理値１であれば、論理ＯＲゲート２１２は１を出力するので、該機能は自動的にディセーブルされる。
【００１８】
最初のＦＰＤプログラミング（上述の記載を参照のこと）が完了すると、機能に対応付けられたあるＦＰＤの値（入力２０４）がＳＦＳ２００に入力される。このＦＰＤの値（入力２０４）は論理ＮＡＮＤゲート２０８に入力され、対応するＦＥＲの値（入力２０６）との間で否定積（ＮＡＮＤ）をとる。このＦＥＲの値（入力２０６）は、該機能をイネーブルもしくはディセーブルするべくシステム初期化中に変更されるとしてもよい。ＳＦＳ出力（出力２１０）は論理ＯＲゲート２１２に入力される。最後に、機能選択機構の出力値２１４は論理ＯＲゲート２１２から出力される。このように、本実施形態によると、該機能がイネーブルされるのは、ＦＰＤの値（入力２０４）および対応するＦＥＲの値（入力２０６）がともに論理値１であって、機能ディセーブル値（入力２０２）が論理値０の場合に限られる。機能選択機構の出力値２１４の例を表１に示す。
【００１９】
【表１】
2008502057.tif 000001
【００２０】
図３は、別の実施形態に係る機能選択機構を示す回路図である。この実施形態によると、ＳＦＳ３００に入力されるＦＰＤの値（入力３０４）によって、ＳＦＳ３００がイネーブルもしくはディセーブルされるかどうか決まる。まず、原機能（つまり、機能）ディセーブル値（入力３０２）が論理ＯＲゲート３１４に入力され、ＳＦＳ出力（出力３１２）との間で論理和（ＯＲ）をとる。このため、機能ディセーブル値（入力３０２）が論理値１であれば、論理ＯＲゲート３１４は論理値１を出力するので、該機能は自動的にディセーブルされる。
【００２１】
最初のＦＰＤプログラミング（上述の説明を参照のこと）が完了すると、機能に対応付けられたＦＰＤの値（入力３０４）がＳＦＳ３００に入力される。ＦＰＤの値（入力３０４）が論理ＡＮＤゲート３１０に入力され、インバータ３０８によって反転された対応するＦＥＲの値（入力３０６）との間で論理積（ＡＮＤ）をとる。このＦＥＲの値（入力３０６）は、該機能をイネーブルもしくはディセーブルするべくシステム初期化中に変更されるとしてもよい。ＳＦＳの出力（出力３１２）は論理ＯＲゲート３１４に入力される。最後に、機能選択機構の出力値３１６が論理ＯＲゲート３１４から出力される。上述したように、本実施形態では、ＳＦＳ３００がＦＰＤの値（入力３０４）によってイネーブルもしくはディセーブルされる。このように、ＦＰＤの値（入力３０４）が論理値０として入力されるとＳＦＳ３００はディセーブルされ、該機能がイネーブルされるかディセーブルされるかは機能ディセーブル値（入力３０２）によって制御される。機能選択機構の出力値３１６の例を表２に示す。
【００２２】
【表２】
2008502057.tif 000002
【００２３】
図１に戻って、一実施形態によると、ＩＣＨ１０８はプログラム可能な機能カウンタ指定子（ＦＣＤ）フィールド１２２を有するとしてもよい。この実施形態によると、ＦＣＤ１２２は、ＩＣＨ１０８が同時にイネーブルできる機能の最大数に等しい数値に設定されるとしてもよい。一実施形態によると、ＦＣＤ１２２は、ＩＣＨ１０８内のレジスタにある数値によって表されるとしてもよい。一実施形態によると、このレジスタに格納された数値は一度に限ってプログラム可能で、その後はプログラミングされた値に永久に固定される。一実施形態では、この値はプログラミングされると（対応するビットの値を用いて）各レジスタビットラインにヒューズを接続することによって固定されるとしてもよい。この時、ヒューズは閉じたままとしてもよいし、レジスタの最初のプログラミング中にビット値によってはヒューズを開けるとしてもよい。一実施形態によると、ＦＣＤ１２２の値は３ビットの値で、０から７までの機能カウントを示すとしてもよい。別の実施形態によると、ＦＣＤ１２２の値はＩＣＨ１０８に対応付けられた機能すべてを計数するために必要なビット数を持つ。
【００２４】
一実施形態によると、ＦＣＤ１２２の値を用いてＩＣＨ１０８上の選択される機能の数を限定するとしてもよい。このためこの実施形態では、システム初期化中にＦＣＤ１２２の値と選択された機能の総数（つまり論理値が１に設定されたＦＰＤの数）を比較し、選択された機能の総数がＦＣＤ１２２の値より大きければ、すべての機能をディセーブルする。別の実施形態によると、システム初期化中にＦＣＤ１２２の値とイネーブルされた機能の総数（つまり、論理値が１に設定されたＦＥＲ１２０のビットの数）を比較し、イネーブルされた機能の総数がＦＣＤ１２２の値より大きければ、すべての機能をディセーブルする。この実施形態によると、システムは最初すべての機能を許可するようにプログラミングされ（つまり、すべてのＦＰＤの値を論理値１に最初にプログラミングすることによってすべての機能を「選択」する）、後でシステム初期化を実行するたびにイネーブルされる機能の数を限定するとしてもよい。例えば、ＩＣＨ１０８において許可された機能が３つあり（ＲＡＩＤ、ＳＣＳＩおよびＵＳＢ）、ＦＣＤ１２２の値が２に固定されている場合、システム初期化においてはこの３つの機能のうち２つ（つまり、ＲＡＩＤとＳＣＳＩ、ＲＡＩＤとＵＳＢもしくはＳＣＳＩとＵＳＢ）を選択し、３つすべてが選択されないとしてもよい。このため、この実施形態によるとシステム初期化においてカスタムプログラミングを実行することができるが、許可された機能の数を超えていればすべての機能をディセーブルすることもできる。
【００２５】
別の実施形態によると、システム初期化中にＦＣＤ１２２の値はイネーブルされた機能の総数（つまり、論理値が１であるＦＥＲ１２０のビットの数）と比較され、イネーブルされた機能の総数がＦＣＤ１２２の値より大きければ、ＦＥＲ１２０のビットの総数がＦＣＤ１２２の値以下になるようにいくつかの機能をディセーブルする。一実施形態によると、ＩＣＨ１０８の一連の機能には優先順位が付けられ、優先順位に従ってディセーブルされる。
【００２６】
一実施形態によると、１つの機能はＦＥＲ１２０のビットのうち２つ以上に対応付けられるとしてもよい。この実施形態によると、ＩＣＨ１０８上の機能に割り当てられる値の付け方は異なるとしてもよい。例えば、ＲＡＩＤの機能はＳＣＳＩの機能に比べ、２倍の値が割り当てられるとしてもよい。このため、ＳＣＳＩの機能に対応付けられたＦＥＲ１２０のビットの数は１個である一方、ＲＡＩＤの機能に対応付けられたＦＥＲ１２０のビットの数は２個であるとしてもよい。この実施形態によると、各機能に対応付けられたＦＥＲ１２０のビットの数に応じて、その機能の機能クレジット値が決まる。このようにしてこの実施形態によると、システム初期化中にすべてのイネーブルされた機能に対応付けられたクレジットの総数が加算され、加算結果とＦＣＤ１２２の値を比較する。クレジットの総数がＦＣＤ１２２の値より大きい場合は、すべての機能をディセーブルする。別の実施形態によると、クレジットの総数がＦＣＤ１２２の値より大きい場合には、１以上の機能をディセーブルする。
【００２７】
図４は、一実施形態に係る、機能選択機構の出力結果を例示する。ＦＰＤビットの値を格納するＦＰＤレジスタ４００は、後にＦＥＲ４０２によってイネーブルされる可能性がある機能を選択するべく、不変の値にプログラミングされるとしてもよい。イネーブルされる機能は、「選択」され（つまり、ＦＰＤビットが論理値１を示す）且つ「イネーブル」されている（つまり、ＦＥＲビットが論理値１を示す）。このためこの例によると、イネーブルされる機能は、結果を示す列４０４で論理値１と対応付けられている、ＰＣＩ、ＵＳＢ、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）である。また、ＦＣＤ４０６は３ビットの値で示されている。本例ではこの３ビットの値は２進法で１−０−１となっており、１０進法では５となる。このような構成とすると、ＦＰＤレジスタ４００もＦＥＲ４０２でも論理値１を示すビットの数が５を超えていないので、ＦＣＤに関連するどちらの実施形態の場合も（上述の記載を参照のこと）、上述のイネーブルされた機能のイネーブル状態を維持する。
【００２８】
図５は、一実施形態に係る、デバイス上の機能をイネーブルするためのプロセスを示すフローチャートである。このプロセスは、ハードウェア（回路、専用ロジックなど）、ソフトウェア（汎用コンピュータシステムまたは専用マシンで実行されるもの）もしくは両者の組み合わせを備える処理ロジックによって実行される。図５に示すように、このプロセスは処理ロジックがデバイス上の機能のイネーブルまたはディセーブルが許可されているかどうかを判定することから始まる（処理ブロック５００）。続いて、該機能のイネーブル／ディセーブルが許可されていないと判定した場合、処理ロジックは該デバイス機能のイネーブル／ディセーブルを許可しない（つまり、禁止する）（処理ブロック５０６）。一方、該機能のイネーブル／ディセーブルが許可されていると判定した場合、処理ロジックはデバイス上でイネーブルされた機能の総数がデバイス上での最大許容機能数未満であるかどうか判定する（処理ブロック５０２）。デバイス上でイネーブルされた機能の総数がデバイス上での最大許容機能数より大きいと判定した場合、処理ロジックは該デバイス機能のイネーブル／ディセーブルを許可しない（処理ブロック５０６）。一方、デバイス上でイネーブルされた機能の総数がデバイス上での最大許容機能数未満と判定した場合、処理ロジックは該デバイス機能のイネーブル／ディセーブルを許可する（処理ブロック５０４）。
【００２９】
図６は、一実施形態に係る、機能のイネーブルを許可すべくデバイスをプログラミングするためのプロセスを示すフローチャートである。このプロセスは、ハードウェア（回路、専用ロジックなど）、ソフトウェア（汎用コンピュータシステムまたは専用マシンで実行されるもの）もしくは両者の組み合わせを備える処理ロジックによって実行される。図６に示すように、このプロセスは処理ロジックがデバイスのＦＰＤをプログラミングすることから始まる（処理ブロック６００）。一実施形態によると、各ＦＰＤは１つのデバイス機能と対応付けられている。ＦＰＤの値が論理値１であれば、処理ロジックは、対応付けられたデバイスのイネーブルを許可する。一方、ＦＰＤの値が論理値０であれば、処理ロジックは、対応付けられたデバイスのイネーブルを禁止する。一実施形態によると、ＦＰＤの値は一度に限ってプログラム可能で、その後はプログラミングされた値に永久に固定される。
【００３０】
このプロセスでは続いて、処理ロジックがデバイスのＦＣＤをプログラミングする（処理ブロック６０２）。一実施形態によると、ＦＣＤはデバイスが同時にイネーブルしておける機能の最大数に等しい数値に設定されるとしてもよい。一実施形態によると、レジスタに格納されたこの数値は一度に限ってプログラム可能で、その後はプログラミングされた値に永久に固定される。
【００３１】
図７は、一実施形態に係る、機能イネーブルレジスタ（ＦＥＲ）と機能許可指定子（ＦＰＤ）に基づきデバイス上の機能をイネーブルするためのプロセスを示すフローチャートである。このプロセスは、ハードウェア（回路、専用ロジックなど）、ソフトウェア（汎用コンピュータシステムまたは専用マシンで実行されるもの）もしくは両者の組み合わせを備える処理ロジックによって実行される。図７に示すように、このプロセスは、ＦＥＲがデバイス機能のイネーブルを要求しているかどうか処理ロジックが判定することから始まる（処理ブロック７００）。一実施形態によると、処理ロジックは、このデバイス機能に対応付けられたＦＥＲのビットの値が論理値１であるか論理値０であるかを判定する。論理値０である場合は、該機能のイネーブルに対する要求はなく、プロセスは終了する。一方、論理値１である場合、処理ロジックは、ＦＰＤがデバイス機能のイネーブルを許可しているかどうか判定する（処理ブロック７０２）。一実施形態によると、処理ロジックは、このデバイス機能に対応付けられたＦＰＤの値が論理値１であるか論理値０であるかを判定する。論理値１の場合、処理ロジックはこのデバイス機能をイネーブルする（処理ブロック７０４）。一方論理値０の場合は、このデバイス機能をイネーブルしない（処理ブロック７０６）。
【００３２】
図８は、一実施形態に係る、デバイス機能カウンタの値が最大許容機能数を超えているかどうか判定するためのプロセスを示すフローチャートである。このプロセスは、ハードウェア（回路、専用ロジックなど）、ソフトウェア（汎用コンピュータシステムまたは専用マシンで実行されるもの）もしくは両者の組み合わせを備える処理ロジックによって実行される。図８に示すように、このプロセスは、処理ロジックがデバイス上のイネーブルされた機能の総数を特定することから始まる（処理ブロック８００）。処理ロジックは続いて、ＦＣＤの値を特定する（処理ブロック８０２）。
【００３３】
処理ロジックは続いて、イネーブルされた機能の総数とＦＣＤの値を比較する（処理ブロック８０４）。イネーブルされた機能の総数がＦＣＤの値を超えていない場合、処理ロジックはイネーブルされた機能をそのままイネーブル状態で維持することを許可する（処理ブロック８０６）。一方イネーブルされた機能の総数がＦＣＤの値を超える場合、処理ロジックはすべてのイネーブルされた機能をディセーブルする（処理ブロック８０８）。
【００３４】
上述した実施形態の多くでは、発明の対象であるデバイスの例としてＩＣＨを挙げている。しかし上述した実施形態で意味するデバイスは、変更可能な機能を備えるデバイスであればどのタイプのものであってもよい。例を挙げると、ＭＣＨおよびプロセッサを初めとする集積回路デバイスがある。さらに、実施形態によっては、ＦＰＤ、ＦＳＲおよびＦＣＤの値は変更可能な機能を備えるデバイス上に格納されない。このような実施形態においては、ＦＰＤ、ＦＳＲおよびＦＣＤの値を、該デバイスを備えるシステム中の第２デバイスもしくは不揮発性ストレージに格納する。
【００３５】
以上では、本発明の実施形態に係るプログラム可能な機能選択機構を開示している。上述の実施形態は具体的な例に基づいて説明されている。しかし、本明細書で開示した実施形態の目的および範囲から離れることなく上述の実施形態をさまざまに変更できることは明らかである。従って、本明細書および添付の図面は本発明を説明するためのものであって、限定するものではないと解釈されるべきである。
【誤訳訂正３】
【訂正対象書類名】図面
【訂正対象項目名】図２
【訂正方法】変更
【訂正の内容】
【図２】
2008502057.tif 000003
【誤訳訂正４】
【訂正対象書類名】図面
【訂正対象項目名】図３
【訂正方法】変更
【訂正の内容】
【図３】
2008502057.tif 000004
【誤訳訂正５】
【訂正対象書類名】図面
【訂正対象項目名】図５
【訂正方法】変更
【訂正の内容】
【図５】
2008502057.tif 000005
【誤訳訂正６】
【訂正対象書類名】図面
【訂正対象項目名】図６
【訂正方法】変更
【訂正の内容】
【図６】
2008502057.tif 000006
【誤訳訂正７】
【訂正対象書類名】図面
【訂正対象項目名】図７
【訂正方法】変更
【訂正の内容】
【図７】
2008502057.tif 000007
【誤訳訂正８】
【訂正対象書類名】図面
【訂正対象項目名】図８
【訂正方法】変更
【訂正の内容】
【図８】
2008502057.tif 000008