(57)【要約】システムプログラマにのしかかる負担を緩和し、かつ、すなわち、現在の方法と比較して安全かつ誤りのない、複雑なハードウェアサブシステムを構成しかつ制御するための技術を提供する。本発明の一態様では、ハードウェアサブシステム（１１０）の構成は、制御装置部（１１３）および構成パラメータを格納する格納装置部（１１５）を含む構成制御装置をハードウェアに設けることによって達成される。構成制御装置（１１３）は、例えば構成／制御・ＩＤに応答して起動され、その後、少なくとも１つの構成パラメータをハードウェアサブシステムのレジスタ（１１１）に格納することを含め、ハードウェアサブシステム（１１０）の構成を実行する。一般的に、構成制御装置ハードウェア（１１３）および格納装置（１１５）は、構成または制御対象のハードウェアサブシステム内に埋め込まれる。構成／制御・機能はこうして、システムプログラマが詳細を配慮する必要がないように、ハードウェアサブシステム（１１０）自体の中に「カプセル化」される。
2006510966.tif 000002
【特許請求の範囲】
【請求項１】
サブシステムの構成または制御を実行する方法であって、
制御装置部（１１３）と、構成パラメータを格納する格納装置部（１１５）と、を有する構成／制御・ユニットを、サブシステムと共に設け、
前記構成／制御・ユニットで駆動信号を受け取り、
さらに、前記構成／制御・ユニットが、前記駆動信号に応答して、少なくとも１つの構成パラメータを前記サブシステム内のある場所（１１１）に格納することを含んだ、前記サブシステム（１１０）の構成または制御、を実行する、
方法。
【請求項２】
前記サブシステム（１１０）がハードウェアサブシステムであり、かつ前記構成／制御・ユニットがハードウェア構成／制御・ユニットである請求項１に記載の方法。
【請求項３】
前記ハードウェアサブシステム（１１０）および前記ハードウェア構成／制御・ユニットが共に同一集積回路内に設けられる請求項１に記載の方法。
【請求項４】
前記駆動信号が構成／制御・ＩＤである請求項１に記載の方法。
【請求項５】
前記構成／制御・ユニットが、前記サブシステム（１１０）に対し異なる対応する構成または制御・動作を実行するために、複数の異なる構成／制御・ＩＤに応答する請求項４に記載の方法。
【請求項６】
自己構成能力を有するサブシステムであって、
前記サブシステムがレジスタの内容に応じて異なるように機能するように構成された、複数のレジスタを含むレジスタ部分（１１１）と、
制御装置部（１１３）と、構成パラメータを格納する格納装置部（１１５）と、を有する構成／制御・ユニットと
を備え、
前記構成／制御・ユニットは、少なくとも１つの構成パラメータを前記サブシステム（１１０）内のある場所（１１１）に格納することを含んだ、前記サブシステム（１１０）の構成または制御を、実行するために駆動信号に応答するように構成されている、
サブシステム。
【請求項７】
サブシステム（１１０）がハードウェアサブシステムであり、かつ前記構成／制御・ユニットがハードウェア構成／制御・ユニットである請求項６に記載の装置。
【請求項８】
前記ハードウェアサブシステム（１１０）および前記ハードウェア構成／制御・ユニットが共に同一集積回路内に設けられる請求項７に記載の装置。
【請求項９】
前記駆動信号が構成／制御ユニットＩＤである請求項６に記載の装置。
【請求項１０】
前記構成／制御・ユニットが、前記サブシステム（１１０）に対し異なる対応する構成または制御動作を実行するために、複数の異なる構成／制御・ＩＤに応答する請求項９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアサブシステムの構成および制御に関する。
【背景技術】
【０００２】
集積密度が増加するにつれて、ハードウェアサブシステムはますます複雑になる。そのようなサブシステムは一般的に、起動時の初期化、およびその後の動作中の構成または再構成を必要とする。動作中のサブシステムの制御もまた、構成または再構成を引き起こすことがある。そのような初期化、構成、再構成、および制御は現在、ハードウェア、ファームウェア、またはソフトウェアに埋め込むことのできる、システムプログラミングを通して達成される。そのようなシステムプログラミングは困難であり、間違いが発生しやすく、かつプログラミングの観点からは安全でない。
【０００３】
現在、システムプログラマは最初に、ハードウェアサブシステムの詳細な仕様を読まなければならない。この仕様はしばしば非常に多量であり、かつ不明瞭であり、矛盾し、時代遅れであり、あるいは誤っていることがある。次に、プログラマは一般的に、ハードウェア抽象化言語（abstraction language）を符号化し、この言語は、仕様に言及している多数のレジスタおよび定義ビットを英数字記述に変換し、この英数字記述は、プログラマが数字の代わりに名前でハードウェアサブシステムを構成しかつ制御することを可能にする。一般的にこのタスクを支援するツールはない。したがって、ハードウェア抽象化言語の構築はえてして、多くのプログラマにとって魅力がなく、したがって間違いを起こしやすい、困難な置換のプロセスを含む。
【０００４】
このプロセスの結果、ハードウェア抽象化インタフェースを通過するコマンドおよびデータを順序付ける際に誤りが発生することがある。また、仕様が間違っていたか誤解されたために、誤りが発生することもある。さらに、ハードウェアサブシステムのインタフェースは事実上グローバルである（つまり、一般的に任意のタスクが任意のサブシステムのレジスタまたはメモリにアクセスすることができる）ので、誤った、または悪意のあるタスクが、大混乱を引き起こすおそれがある。この意味で、複雑なハードウェアサブシステムの構成および制御のための現在のスキームは安全ではない。
【０００５】
必要なのは、システムプログラマにのしかかる上記の負担を緩和し、かつ比較的に安全かつ誤りのない、複雑なハードウェアサブシステムの構成および制御のための技術である。
【発明の開示】
【課題を解決するための手段】
【０００６】
本発明は、一般的に言うと、システムプログラマにのしかかる上記の負担を緩和し、かつ現在の方法と比較して安全かつ誤りのない、複雑なハードウェアサブシステムを構成しかつ制御するための技術を提供する。本発明の一態様では、ハードウェアサブシステムの構成は、制御装置部（コントローラ部）と構成パラメータを格納する格納装置部（ストーリッジ部）とを含む構成制御装置（configuration/controller）をハードウェアに設けることによって達成される。構成制御装置は、例えば構成／制御（configuration/control）・ＩＤに応答して駆動され、その後、少なくとも１つの構成パラメータをハードウェアサブシステムのレジスタに格納することを含め、ハードウェアサブシステムの構成を実行する。一般的に、構成制御装置ハードウェアおよび格納装置は、構成または制御対象のハードウェアサブシステム内に埋め込まれる。構成／制御・機能はこうして、システムプログラマが該機能の詳細を配慮する必要がないように、ハードウェアサブシステム自体の中に「カプセル化（encapsulated）」される。構成制御装置は例えば状態機械（ステートマシン）の形を取ることができる。
【０００７】
ハードウェアサブシステムは、システムの動作中の異なる時間に異なる構成を取ることがある。この場合、複数の構成／制御・ＩＤを設けることができ、各構成／制御・ＩＤが特定の構成に対応する。
【０００８】
本発明は、以下の詳細な説明および添付の図面を参照することにより、いっそう理解が深まるであろう。
【発明を実施するための最良の形態】
【０００９】
今、図１を参照すると、カプセル化ハードウェア構成／制御を使用するシステムの回路図が示されている。システムは、例えば電子シャーシ、回路基板、マルチチップモジュールもしくは他のモジュール、「システムオンチップ」（ＳＯＣ）集積回路もしくは他の集積回路等を含め、様々な形のいずれかとすることのできる電子システムである。システムはプロセッサ１０１およびシステムバス１０３を含むものとする。システムバスは、必要に応じて１つまたはそれ以上のバスブリッジインタフェースを使用して、他のバス（図示せず）に接続することができる。
【００１０】
システム内では、構成または制御対象のサブシステム１１０を含め、様々なサブシステムがシステムバスに接続される。例えばＳＯＣの文脈（コンテクスト）において、１つのそのような典型的なサブシステムは、例えばＵＳＢ制御装置である。他の典型的なサブシステムとして、例えばＳＤＲＡＭ制御装置、ＰＬＬ／クロックサブシステムブロック等が挙げられる。
【００１１】
構成または制御対象のサブシステム１１０は、単純化された形で、様々なハードウェアレジスタ１１１を含み、かつ加えて構成／制御・状態機械１１３およびアソシエィテドメモリ１１５を含むように図示されている。状態機械１１３は、複雑な命令セットプロセッサにならってパターン化することができる。メモリ１１５は一般的に読出し専用である。構成／制御・状態機械１１３はシステムバスと通信し、メモリ１１５は例えばサブシステムバス１１７を介して様々なレジスタと通信する。メモリ１１５の幅はサブシステムバス１１７の幅と合致することが好ましい。
【００１２】
動作中、サブシステム１１０を構成または制御するために、単一の簡単な構成／制御・ＩＤがプロセッサ１０１から構成／制御・状態機械１１３に渡され、それはシステムソフトウェアには単にレジスタのようにしか見えない。構成／制御・状態機械１１３は、サブシステムのレジスタセット１１１への１回またはそれ以上の書込みサイクルを実行させることによって、構成／制御・ＩＤに応答する。システムプログラマは、構成／制御・状態機械１１３の内部の働きを忘れることができる。
【００１３】
異なる構成または異なる制御動作を考慮して、複数組の構成データをメモリ１１５の異なる部分内に格納することができる。異なる組の構成データまたは異なる制御動作を指定するために、異なる構成／制御・ＩＤを使用することができる。
【００１４】
単一のサブシステムに対し複数の構成／制御・ＩＤを使用する一例は、特定のポート（つまりエンドポイント）が制御、割込み、アイソクロナス（Ｉｓｏｃｈｒｏｎｏｕｓ）、またはバルクモード（Ｂｕｌｋ  Ｍｏｄｅ）で動作することのできる、ＵＳＢ（ユニバーサルシリアルバス）ブロックである。この場合、異なる構成／制御・ＩＤが各モードに割り当てられる。各々の異なるモードに対し、構成／制御・状態機械１１３は対応する構成／制御・ＩＤに応答して、先行技術の手法で遭遇した誤りの著しい潜在的可能性なしに、潜在的に多数のレジスタ（例えばエンドポイントイネーブルレジスタ、エンドポイント割込みレジスタ、ＤＭＡ制御レジスタ等）に書き込む。システムソフトウェアはこれらの「内部」レジスタのいずれについても知る必要がなく、代わりに、システムソフトウェアは単に、比較的少数の構成／制御・ＩＤを知る必要があるだけである。簡単な構成／制御・ＩＤを単一の「レジスタ」（構成／制御・状態機械１１３）に書き込むことによって、所望の構成が確実に達成される。
【００１５】
構成／制御・ＩＤは、様々なサブシステムハードウェアオプションを使用可能または使用禁止にすることができる。例えばＵＳＢ制御装置の場合、制御機能として、ＵＳＢパケットが無事に受信された後のＤＭＡ制御装置の自動再初期化を使用可能にまたは使用禁止にすることが挙げられる。（このオプションを使用可能にした場合、ＤＭＡ機能はソフトウェアの介在なしに次のパケットをすぐに受け入れることができる）。制御モードに対応する構成／制御・ＩＤは一般的にこのオプションを使用可能にするが、バルクモードに対応する構成／制御・ＩＤは一般的にそうしない。
【００１６】
複数の異なる制御ＩＤを使用して、サブシステムの特定の内部の働きにアクセスすることができる。例えばＵＳＢサブシステムでは、ソフトウェアによって制御される１つの機能は、ＵＳＢバストラヒックがないときに電力を低減するために、サブシステムをサスペンドモードにすることである。単一の一意（ユニーク）の制御ＩＤをこの機能に割り当てることができる。ソフトウェアは、このモードを使用可能にするために、単にこのＩＤをサブシステムに書き込むだけである。実際のレジスタおよびこの機能を実行するレジスタ内の特定のビットは、見えないように隠される（つまりカプセル化される）。このスキームの追加の利点は、ソフトウェアを変更することなく、ＵＳＢブロックの完全な再設計を実現することができることである。
【００１７】
このように特定の実施形態に関して本発明を説明したが、本発明は、その精神または本質的特長から逸脱することなく、他の特定の形態で具現することができることを、当業者は理解されるであろう。したがって、現在開示する実施形態は、あらゆる点において例証であって、限定ではない。発明の範囲は、上記の説明ではなく、むしろ特許請求の範囲の記載によって示され、その均等物の趣旨および範囲内の全ての変形はその中に包含されるものとする。
【図面の簡単な説明】
【００１８】
【図１】カプセル化ハードウェア構成／制御を使用するシステムの回路図である。
【図１】
2006510966.tif 000003
【国際調査報告】
2006510966.tif 000004
2006510966.tif 000005
2006510966.tif 000006