(57)【特許請求の範囲】
【請求項１】
ポータブルコンピューティングデバイス上のネイティブバスドライバなしのオペレーティングシステムに周辺構成要素相互接続エクスプレス(PCIe)互換デバイスを見せるための方法であって、
PCIeベースアドレスレジスタのセット内にPCIe互換デバイスを記述するコンテンツを格納するステップと、
前記PCIeベースアドレスレジスタのセット内の前記コンテンツを前記ポータブルコンピューティングデバイス内に格納された高度構成電力インターフェース(ACPI)に統合するステップと、
前記ACPI内で統合された前記PCIeベースアドレスレジスタのセット内の前記コンテンツを前記ACPI内の値に整合させることによって、前記ポータブルコンピューティングデバイス内のプロセッサに結合されたファームウェアを使用して、前記ネイティブバスドライバなしの前記ポータブルコンピューティングデバイスに結合されたPCIeデバイスを初期化するステップであって、それにより前記PCIeデバイスを、前記ネイティブバスドライバなしのACPIを通して前記ポータブルコンピューティングデバイス内で動作するオペレーティングシステムに見せる、ステップとを含み、
前記PCIeベースアドレスレジスタのセット内の前記コンテンツを統合するステップが、実行時にテーブルを読み取るステップと、コンパイル時に前記コンテンツを提供するステップとを含む、方法。
【請求項２】
前記PCIeデバイスが拡張可能ホストコントローラインターフェース(xHCI)である、請求項１に記載の方法。
【請求項３】
前記xHCIがユニバーサルシリアルバス互換コネクタに結合され、PCIeスイッチを介してプロセッサと通信している、請求項２に記載の方法。
【請求項４】
ファームウェアを使用してPCIeバスを初期化するステップが、統合拡張可能ファームウェアインターフェース(UEFI)を使用するステップを含む、請求項１に記載の方法。
【請求項５】
前記PCIeデバイスがPCIeイーサネット(登録商標)変換器である、請求項１に記載の方法。
【請求項６】
前記PCIeイーサネット(登録商標)変換器がイーサネット(登録商標)コネクタに結合され、PCIeスイッチを介してプロセッサと通信している、請求項５に記載の方法。
【請求項７】
ネイティブバスドライバなしのポータブルコンピューティングデバイス(PCD)上のオペレーティングシステムに周辺構成要素相互接続エクスプレス(PCIe)互換デバイスを見せるポータブルコンピューティングデバイスであって、
オペレーティングシステムおよび高度構成電力インターフェース(ACPI)が格納されたメモリ要素と結合されたプロセッサと、
PCIeバスを介して前記プロセッサに結合された拡張可能ホストコントローラインターフェース(xHCI)と、
前記PCD内で第1のバスを介して前記プロセッサおよび前記メモリ要素と結合されたファームウェア要素とを含み、
前記ファームウェア要素が、前記ACPI内の1つまたは複数のテーブル内の情報によって記述されたリソースと整合しかつ前記ネイティブバスドライバなしの前記ACPIを通して前記PCD内から整合したコンテンツに応じてPCIe互換デバイスを前記オペレーティングシステムに見せる各コンテンツが格納された複数のアドレス指定可能なメモリ要素を有するPCIeベースアドレスレジスタセットストアを含み、
前記PCIeベースアドレスレジスタのセット内の前記コンテンツを統合することが、実行時にテーブルを読み取ること、およびコンパイル時に前記コンテンツを提供することを含む、デバイス。
【請求項８】
前記xHCIがPCIeスイッチを介して前記プロセッサに結合される、請求項７に記載のデバイス。
【請求項９】
前記xHCIがユニバーサルシリアルバス互換コネクタに結合される、請求項７に記載のデバイス。
【請求項１０】
PCIe互換スイッチを介して前記プロセッサに結合されたPCIeギガビットイーサネット(登録商標)変換器をさらに備える、請求項７に記載のデバイス。
【請求項１１】
前記PCIeギガビットイーサネット(登録商標)変換器がイーサネット(登録商標)互換コネクタに結合される、請求項１０に記載のデバイス。
【請求項１２】
統合拡張可能ファームウェアインターフェース(UEFI)が前記PCIeバスに結合されたPCIeデバイスを初期化する、請求項７に記載のデバイス。
【請求項１３】
持続性コンピュータ可読記録媒体に具現化されたコンピュータ可読プログラムコードを有するコンピュータプログラムであって、前記コンピュータ可読プログラムコードが、複数のリソースを有するポータブルコンピューティングデバイスを構成する方法を実施するために実行されるように構成され、前記方法が、
PCIeベースアドレスレジスタのセット内のコンテンツおよび高度構成電力インターフェース(ACPI)内の情報がPCIeデバイスを識別するように、前記PCIeベースアドレスレジスタのセット内の前記コンテンツを前記ACPIと比較するステップであって、前記PCIeベースアドレスレジスタのセット内の前記コンテンツを前記ACPI内の情報と比較するステップが、実行時にテーブルを読み取るステップと、コンパイル時に前記コンテンツを提供するステップとを含む、ステップと、
前記ポータブルコンピューティングデバイス内のファームウェアを使用して、ドライバを使用することなく前記ポータブルコンピューティングデバイスに結合されたPCIeバスおよび前記PCIeデバイスを初期化するステップであって、それにより、前記PCIeデバイスが前記ドライバを使用することなく前記ACPIを通して前記ポータブルコンピューティングデバイス上のオペレーティングシステムに対して利用可能である、ステップとを含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
その内容全体が参照により本明細書に組み込まれている、2011年12月6日に出願され、出願番号第61/567,425号が付与された、「Method and a Portable Computing Device (PCD) For Exposing A Peripheral Component Interface Express (PCIE) Coupled Device To An Operating System Operable On The PCD」という表題の米国仮出願に対する、米国特許法第119条(e)による優先権が主張される。
【背景技術】
【０００２】
より安価で、より小さく、より高機能な集積回路の開発により、比較的精巧な機能を保持しながら、より小さい設計物を特徴とするポータブルコンピューティングシステムの開発が可能になっている。これらのコンピューティングシステムは、主にラップトップ、ネットブックおよびタブレットを指すが、スマートフォン、ポータブルオーディオデバイス、ポータブルビデオデバイスおよびポータブルビデオゲームコンソールも含む。しかしながら、ポータブルコンピューティングシステムを小型化する最近の傾向が続いているので、これらの設計物のハードウェアに利用可能なスペースは次第に減少している。結果として、ハードウェアの設計およびアーキテクチャの最適化が何よりも重要になっている。
【０００３】
従来のポータブルコンピューティングデバイスは、少なくとも、チップセットを特徴とするマイクロプロセッサまたは中央処理装置(CPU)、メモリ、マザーボード(たとえば、中央プリント回路板)の集合、および、ディスプレイへのビデオ出力を生成するための少なくとも1つのグラフィックス処理装置を含む。いくつかの従来のマザーボード設計では、チップセットは2つの別々のコンポーネントハブに配置することができる。第1のコントローラに従って動作する第1のハブは、通常、CPU、ランダムアクセスメモリ(RAM)、ビデオ出力インターフェース、および第2のコントローラの間の通信を処理する。多くの従来のポータブルコンピューティングデバイスの実装形態では、ビデオ出力インターフェースは、統合型グラフィックス処理装置として実装される。第2のコントローラは、入力/出力デバイスなどの周辺構成要素を有するCPUおよび/またはRAMと大容量ストレージデバイスとの間の通信をサポートする。多くの実装形態では、第2のコントローラはまた、オーディオコントローラ、ネットワークインターフェースカード、ユニバーサルシリアルバス(USB)およびPCIエクスプレス(PCIe)接続などの統合型周辺機器を含む場合がある。
【０００４】
従来より、ネットブックおよびラップトップは、第1のコントローラに結合された統合型グラフィックス処理装置(GPU)などの統合型グラフィックスソリューションを使用している。統合型グラフィックス処理装置は、それ自体の専用メモリを有するのではなく、コンピュータシステムのメモリの一部分を利用するグラフィックスプロセッサである。一般に、統合型GPUは、専用または「個別」のGPUよりも安価に実装され、比較的改善されたバッテリ寿命およびより低い電力使用量をもたらすが、個別のGPUに比べて削減された機能および性能レベルという犠牲を払う。有利なことに、ネットブックおよびラップトップの製造業者は、統合型グラフィックスプロセッサに加えてさらなる個別のグラフィックス処理装置を含むコンピュータシステムを提供することによって、より高いグラフィックス処理能力を有する構成を提供し始めている。
【０００５】
個別または「専用」のGPUは、より高い性能を有し、GPUが基礎となるコンピュータシステムと共有しない、GPUによる使用専用のローカルメモリも有することによって、統合型GPUと区別することができる。通常、個別のGPUは、構成要素の中でも特に、GPU、ローカルメモリ、通信バスおよび様々な出力端子を含む、「ビデオカード」と呼ばれる個別の回路板に実装される。従来の適用例では、これらのビデオカードは、通常、PCIeインターフェースを介して、ビデオカードを搭載できるコンピューティングシステムの主回路板(たとえば、マザーボード)とインターフェースする。一般に、個別のGPUは、統合型GPUに比べて著しく高い性能レベルが可能であるが、通常、統合型グラフィックスソリューションに比べてより高いレベルの電力を必要とし、消費する。統合型と個別の両方のグラフィックス処理ソリューションを有するポータブルコンピューティングデバイスは、状況に応じた必要性および所望の性能レベルに従って性能およびバッテリ寿命を管理するように、ユーザが特定のソリューション間で交替して使用することを可能にする、機構または手順をしばしば提供する。
【０００６】
上述されたように、通常のネットブックおよびラップトップでは、PCIeインターフェースは2次コントローラの構成要素である。しかしながら、デスクトップなどの他のコンピューティングシステム内のPCIeインターフェースとは異なり、ポータブルコンピューティングデバイスのPCIeインターフェースは、しばしばサイズが削減され、その結果容量が削減される。コンパクトな設計とバッテリ寿命の両方に焦点を当てるいくつかのポータブルコンピューティングデバイス設計の場合、オペレーティングシステムのPCIeインターフェース用サポートは存在しない場合がある。そのようなオペレーティングシステムは、PCIまたはPCIeのドライバが事前構成されていない。しかしながら、オペレーティングシステム内にPCIおよびPCIeのドライバが存在しないにもかかわらず、PCIeデバイスと通信する必要が依然としてあり得る。たとえば、そのようなデバイスと通信する必要は、周辺デバイスが既知で、リムーバブルではなく、オペレーティングシステムの初期化または「ブート」の前に接続されている場合、およびポータブルコンピューティングデバイスがそのような周辺デバイスの自動構成をサポートするように構成されていない場合に存在する可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００７】
この概要は、下記発明を実施するための形態でさらに記載される概念の一部を簡略化された形で紹介する。この概要は、特許請求された主題の主要な特徴または本質的な特徴を識別するものではなく、特許請求された主題の範囲を何らかの方法で限定するために使用されるものでもない。
【０００８】
特許請求された主題の実施形態は、PCIまたはPCIeのドライバを使用せずに、PCIe互換デバイスをポータブルコンピューティングデバイス上のオペレーティングシステムに見せるシステムおよび方法を対象とする。例示的な実施形態では、周辺構成要素相互接続エクスプレス(PCIe)互換デバイスをポータブルコンピューティングデバイス上のオペレーティングシステムに見せるための方法は、PCIe互換デバイスを記述するPCIeベースアドレスレジスタのセット用のコンテンツを決定するステップと、PCIeベースアドレスレジスタのセット用のコンテンツを高度構成電力インターフェース(ACPI)に統合するステップと、ファームウェアを使用して、ACPIに統合されたPCIeベースアドレスレジスタのセット用のコンテンツを整合させることによって、ポータブルコンピューティングデバイスに結合されたPCIeデバイスを初期化するステップとを含む。ファームウェアを使用してPCIeバスを初期化することは、統合拡張可能ファームウェアインターフェース(UEFI)を使用することを含む。
【０００９】
別の例示的な実施形態では、ポータブルコンピューティングデバイス(PCD)は、PCD上で動作可能なオペレーティングシステムに周辺構成要素相互接続エクスプレス(PCIe)互換デバイスを見せる。PCDは、オペレーティングシステムおよび高度構成電力インターフェース(ACPI)をその中に記憶したメモリ要素に結合されたプロセッサと、PCIeバスを介してプロセッサに結合された拡張可能ホストコントローラインターフェース(xHCI)と、第1のバスを介してプロセッサおよびメモリ要素に結合されたファームウェア要素とを備える。ファームウェア要素は、ACPI内のテーブルのうちの1つまたは複数の中の情報によって記述されたリソースを整合させる、各々がその中に記憶されたそれぞれのコンテンツを有する複数のアドレス指定可能なメモリ要素を有するPCIeベースアドレスレジスタのセットストアを含む。オペレーティングシステムに転送されたコンテンツは、その中で識別されたデバイスをオペレーティングシステムに見せる。
【００１０】
さらに別の例示的な実施形態では、ポータブルコンピューティングデバイスは、ドライバを使用せずに、周辺構成要素相互接続エクスプレス(PCIe)互換デバイスをオペレーティングシステムに見せる。ポータブルコンピューティングデバイスは、PCIe互換デバイスを記述するPCIeベースアドレスレジスタのセットにコンテンツを提供するための手段と、その中にPCIeベースアドレスレジスタのセット用のコンテンツを有する高度構成電力インターフェース(ACPI)を提供するための手段と、ポータブルコンピューティングデバイス内でPCIeデバイスを初期化して、PCIeベースアドレスレジスタのセット用のコンテンツをACPIに含有されるように整合させるための手段とを備える。
【００１１】
さらに別の実施形態では、コンピュータプログラム製品は、その中に具現化されたコンピュータ可読プログラムコードを有するコンピュータ使用可能媒体を含む。コンピュータ可読プログラムコードは、複数のリソースを有するポータブルコンピューティングデバイスを構成するための方法を実施するために実行されるように適合される。方法は、PCIe互換デバイスを記述するPCIeベースアドレスレジスタのセット用のコンテンツを決定するステップと、PCIeベースアドレスレジスタのセット用のコンテンツを高度構成電力インターフェース(ACPI)と比較するステップと、PCIeベースアドレスレジスタのセット用のコンテンツおよびACPI内の情報がPCIeデバイスを識別するとき、ファームウェアを使用して、ポータブルコンピューティングデバイスに結合されたPCIeバスおよびPCIeデバイスを初期化するステップとを含む。
【００１２】
図の中では、別段に指定されない限り、様々な図の全体を通して、同様の参照番号は同様の部分を指す。「102A」または「102B」などの文字指定を伴う参照番号の場合、文字指定は、同じ図に存在する2つの同様の部分または要素を区別することができる。参照番号がすべての図において同じ参照番号を有するすべての部分を包含することが意図されるとき、参照番号の文字指定は省略される場合がある。
【図面の簡単な説明】
【００１３】
【図１】ポータブルコンピューティングデバイス(「PCD」)の例示的な要素を示す機能ブロック図である。
【図２】PCDの代替の実施形態の例示的な要素を示す機能ブロック図である。
【図３】PCDの代替の実施形態の例示的な要素を示す機能ブロック図である。
【図４】ドライバを使用せずにPCIe互換デバイスをオペレーティングシステムに見せるための方法を示す流れ図である。
【図５】ドライバを使用せずにPCIe互換デバイスをオペレーティングシステムに見せるための代替の方法を示す流れ図である。
【図６】ドライバを使用せずにPCIe互換デバイスをオペレーティングシステムに見せるための代替の方法を示す流れ図である。
【発明を実施するための形態】
【００１４】
「例示的な」という単語は、「例、実例、または例示として機能すること」を意味するように本明細書で使用される。「例示的な」ものとして本明細書で記載される態様は、必ずしも他の態様よりも好ましいか、または有利であると解釈されるものではない。
【００１５】
本明細書では、「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルを含む場合もある。加えて、本明細書で言及される「アプリケーション」は、開封される必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなどの本質的に実行可能ではないファイルを含む場合もある。
【００１６】
「コンテンツ」という用語は、データまたは情報を記述し、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能コンテンツを有するファイルを含む場合もある。加えて、本明細書で言及される「コンテンツ」は、開封される必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなどの本質的に実行可能ではないファイルを含む場合もある。
【００１７】
本明細書で使用されるように、「コンポーネント」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかであるコンピュータ関連のエンティティを指すものとする。たとえばコンポーネントは、プロセッサ上で動作しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラムおよび/またはコンピュータであり得るが、これらに限定されない。例として、コンピューティングデバイス上で動作しているアプリケーションとコンピューティングデバイスの両方は、コンポーネントであり得る。1つまたは複数のコンポーネントは、プロセスおよび/または実行スレッドの中に存在する場合があり、1つのコンポーネントは、1つのコンピュータに局在し、かつ/または2つ以上のコンピュータに分散される場合がある。加えて、これらのコンポーネントは、様々なデータ構造が記憶された様々なコンピュータ可読媒体から実行することができる。コンポーネントは、1つまたは複数のデータパケット(たとえば、信号によって、ローカルシステム、分散システム内の別のコンポーネントと対話し、かつ/またはインターネットなどのネットワークにわたって他のシステムと対話する、1つのコンポーネントからのデータ)を有する信号に従うなどして、ローカルプロセスおよび/またはリモートプロセスによって通信することができる。
【００１８】
本明細書では、「通信デバイス」、「ワイヤレスデバイス」、「ワイヤレス電話」、「ワイヤレス通信デバイス」、および「ワイヤレスハンドセット」という用語は互換的に使用される。第3世代(「3G」)および第4世代(「4G」)のワイヤレス技術の出現とともに、利用可能な帯域が拡大されたので、より多くの様々なワイヤレス機能を備えたよりポータブルなコンピューティングデバイスが利用可能になっている。
【００１９】
本明細書では、「ポータブルコンピューティングデバイス」(「PCD」)という用語は、バッテリなどの限られた容量の電源で動作する任意のデバイスを記載するために使用される。何十年もの間バッテリ式PCDが使用されてきたが、第3世代(「3G」)および第4世代(「4G」)ワイヤレス技術の出現とともにもたらされた充電式バッテリの技術的進歩は、複数の機能を有する多数のPCDを可能にしている。したがって、PCDは、とりわけ、携帯電話、衛星電話、ページャ、携帯情報端末(「PDA」)、スマートフォン、ナビゲーションデバイス、スマートブックまたはリーダー、メディアプレーヤ、上述のデバイスの組合せ、ワイヤレス接続を有するタブレットコンピュータ、およびワイヤレス接続を有するラップトップコンピュータであり得る。
【００２０】
図1は、ポータブルコンピューティングデバイス上で動作可能なオペレーティングシステムにPCIe互換デバイスを見せるための方法およびシステムを実施するための、ワイヤレス電話の形態のPCD100の例示的で非限定的な態様の機能ブロック図である。図示されたように、PCD100は、マルチコア中央処理装置(「CPU」)110、グラフィックスプロセッサ111、およびアナログ信号プロセッサ126を有するオンチップシステム102を含む。これらのプロセッサ110、111、126は、当業者に知られているように、1つまたは複数のシステムバスまたは別の相互接続アーキテクチャ上で互いに結合され得る。
【００２１】
当業者によって理解されるように、CPU110、グラフィックスプロセッサ111、およびアナログ信号プロセッサ126は、第0のコア、第1のコアなどから第Nのコアまで(すべて図示せず)を備えることができる。代替の実施形態では、当業者によって理解されるように、CPU110およびグラフィックスプロセッサ111の代わりに、1つまたは複数のデジタル信号プロセッサ(「DSP」)を使用することもできる。さらに、代替の実施形態では、2つ以上のマルチコアプロセッサが含まれ得る。
【００２２】
図1に示されたように、メモリ要素112およびプログラマブル読取り専用メモリ(PROM)114は、中央処理装置110に結合される。PROM114は、PCD100の様々なハードウェア要素の中で制御をサポートし可能にする、固定プログラムおよびデータ構造を含む。メモリ要素112は、適合可能なプログラム、データ構造およびオペレーティングシステムを含む。
【００２３】
図1に示されたように、ディスプレイコントローラ128およびタッチスクリーンコントローラ130は、マルチコアCPU110に結合される。オンチップシステム102の外部にあるタッチスクリーンディスプレイ132は、ディスプレイコントローラ128およびタッチスクリーンコントローラ130に結合される。また、PCD100には、マルチコア中央処理装置(「CPU」)110に結合された、ビデオコーダ/デコーダ(「コーデック」)134、たとえば位相反転線(「PAL」)エンコーダ、順次式カラーメモリ(「SECAM」)エンコーダ、全米テレビジョン方式委員会(「NTSC」)エンコーダ、または任意の他のタイプのビデオエンコーダ134が含まれる。ビデオ増幅器136は、ビデオエンコーダ134およびタッチスクリーンディスプレイ132に結合される。ビデオポート138は、ビデオ増幅器136に結合される。図1に描写されたように、ユニバーサルシリアルバス(「USB」)コントローラ140は、CPU110に結合される。また、USBポート142は、USBコントローラ140に結合される。加入者識別モジュール(SIM)カード146も、CPU110に結合され得る。さらに、図1に示されたように、デジタルカメラ148は、CPU110に結合され得る。例示的な態様では、デジタルカメラ148は、電荷結合デバイス(「CCD」)カメラまたは相補型金属酸化膜半導体(「CMOS」)カメラである。
【００２４】
図1にさらに示されたように、ステレオオーディオコーデック150は、アナログ信号プロセッサ126に結合され得る。その上、オーディオ増幅器152は、ステレオオーディオコーデック150に結合され得る。例示的な態様では、第1のステレオスピーカー154および第2のステレオスピーカー156は、オーディオ増幅器152に結合される。図1は、マイクロフォン増幅器158もステレオオーディオコーデック150に結合され得ることを示す。加えて、マイクロフォン160は、マイクロフォン増幅器158に結合され得る。特定の態様では、周波数変調(「FM」)ラジオチューナ162は、ステレオオーディオコーデック150に結合され得る。また、FMアンテナ164は、FMラジオチューナ162に結合され得る。さらに、ステレオヘッドフォン166は、ステレオオーディオコーデック150に結合され得る。
【００２５】
図1は、さらに、無線周波(「RF」)トランシーバ168がアナログ信号プロセッサ126に結合され得ることを示す。RFスイッチ170は、RFトランシーバ168およびRFアンテナ172に結合され得る。図1に示されたように、キーパッド174は、アナログ信号プロセッサ126に結合され得る。また、マイクロフォン付きモノヘッドセット176は、アナログ信号プロセッサ126に結合され得る。さらに、バイブレータデバイス178は、アナログ信号プロセッサ126に結合され得る。図1は、たとえばバッテリなどの電源180がオンチップシステム102に結合されることも示す。特定の態様では、電源180は、充電式バッテリ、または交流(「AC」)電源に接続されたAC-DC変換器から導出される直流(DC)電源を含む。
【００２６】
PCD100の上記の要素のうちのいくつかはハードウェアを備える場合があり、一方、他の要素はソフトウェアを備える場合があり、さらに、他の要素はハードウェアとソフトウェアの組合せを備える場合がある。「リソース」という用語は、ハードウェアであるか、ソフトウェアであるか、またはそれらの組合せであるかを問わず、プロセッサによって制御可能な任意のそのような要素を指すために、本明細書では使用される。一態様では、リソースは、そのような要素の機能のカプセル化として定義され得る。別途示される場合を除いて、「プロセッサ」という用語は、CPU110、グラフィックスプロセッサ111、アナログ信号プロセッサ126などのプロセッサを指すために、またはソフトウェア、ファームウェアもしくは同様の制御論理の支配下で動作する任意の他のプロセッサ、コントローラもしくは同様の要素を指すために、本明細書では使用される。2つ以上の「処理エンティティ」への参照は、異なるチップ上のプロセッサ、同じプロセッサチップの異なる処理コア、同じコア上の実行スレッド、または、それらの間にデータ位相の不利益もしくは非効率が存在する可能性がある任意の他の処理エンティティを含む。
【００２７】
以下でさらに詳細に記載されるように、リソースの一例は、プロセッサ上で実行するソフトウェア要素である。たとえば、実行アプリケーションプログラムに関係するスレッドなどのプロセッサ上の実行スレッドが、「要求」がリソースに出されるようにすることによって、リソースにアクセスすることができる。以下で記載されるように、リソース要求は、本開示では「フレームワーク」と呼ばれるソフトウェアベースのシステムを介して処理される。「クライアント」という用語は、リソースを要求する機能に影響を及ぼす要素を指すために、本開示では広く使用される。したがって、これらの用語が本明細書で使用されるように、スレッドはリソース要求を出す目的で、クライアントを作成または利用することができる。場合によっては、リソースは、リソース要求が別のリソースに対して出されるようにすることができるように、クライアントを作成または使用できることに留意されたい。以下でさらに詳細に記載されるように、そのような他のリソースは、要求側リソースと被要求側リソースとの間の従属関係により、本明細書では「従属」リソースと呼ぶ場合がある。リソースおよびクライアントは、メモリ内のデータ構造によって表すことができる。リソースはマルチプロセッサPCD100内の特定のプロセッサによって制御されるので、PCD100内のすべてのプロセッサがPCD100内のすべてのリソースにアクセスできるわけではない。
【００２８】
当技術分野で知られているように、メモリ要素112は、オペレーティングシステム(O/S)および高度構成電力インターフェース(ACPI)(図示せず)を含む。オペレーティングシステムは、PCD100内のすべての他のプログラムを制御するプログラムまたはプログラムのセットである。他のプログラムまたはアプリケーションは、定義されたインターフェースを介してサービスに対する要求を行うことによって、オペレーティングシステムを使用する。加えて、PCDのユーザは、コマンド言語、グラフィカルユーザインターフェースなどのユーザインターフェースを介してオペレーティングシステムと対話することができる。オペレーティングシステムは、複数のアプリケーションの間のメモリリソースの共有および実行の優先度、ならびに取り付けられたハードウェアデバイスとの入出力を管理する。動作中、ACPIは、ハードウェアの発見、構成、電力管理および監視のために、O/Sによって使用される。
【００２９】
図2および図3に示された実施形態に関連してより詳細に説明されるように、PROM114は、PCD100に結合されたPCIe互換リソースを記述するコンテンツ(すなわち、データおよび/またはデータ構造)を含む。実行されたとき、メモリ112に記憶されたアプリケーションプログラムまたはオペレーティングシステムは、読取り専用メモリ要素(たとえば、PROM114)またはメモリ112内の他の位置に記憶されている場合があるコンテンツ(すなわち、PCIeベースアドレスレジスタに関連する値)にアクセスし、それをオペレーティングシステムに配信するように、中央処理装置110またはプロセッサに指示する。コンテンツが中央処理装置110またはプロセッサ上で実行されているオペレーティングシステムに利用可能であり、コンテンツが(オペレーティングシステムにも利用可能な)ACPIテーブル内に割り当てられた値を記述し、それらと一致するとき、PCIe互換リソースはさらされ、使用可能である。PCD100による名目上の使用に対するこの露出および可用性は、PCIまたはPCIeのドライバのサポートなしに実現される。
【００３０】
したがって、PCIe互換デバイスをPCD100上で動作可能なオペレーティングシステムに見せるための方法は、PCIe互換デバイスを記述するPCIeベースアドレスレジスタのセット用のコンテンツを決定するステップと、PCD100に記憶されたACPI内のPCIeベースアドレスレジスタのセット用のコンテンツを統合するステップと、PCD100上のPCIeバスを初期化してPCIeベースアドレスレジスタのセット用のコンテンツをACPIに統合されるように整合させるステップとを含むことができる。一例では、PROM114に記憶されたファームウェアなどのシステムファームウェアは、実行時にACPIテーブルを読み取って、適切なPCIeのコンテンツからACPIのAMLへのマッピングを決定するために、ソフトウェアによってアクセスされる。別の例では、ソフトウェアは、コンパイル時にPCIeのコンテンツからACPIのAMLへの適切なマッピングを決定する。選ばれる方法にかかわらず、PCIe初期化は、ACPIテーブル内に割り当てられた値と一致するように、PCIeベースアドレスレジスタを構成する。PCIeは、所望の動作のためにメモリにマップされるポイントツーポイントのバスであるので、メモリマッピング動作は、ACPIで定義されたシステムハードウェア記述に整合すべきである。
【００３１】
図2は、PCD210の代替の実施形態の例示的な要素を示す機能ブロック図である。図2の機能ブロック図は、特許請求された発明の例示的なアーキテクチャおよび動作を示す構成要素および相互接続を含む。PCD210は、所望され得るように追加の機能要素(図示せず)を含むことができることを理解されたい。これらの追加の機能要素のすべてではないがいくつかは、図1に関連して記載された実施形態で紹介された。
【００３２】
図2に示されたように、ポータブルコンピューティングデバイス210は、プロセッサ/SoC(システムオンチップ)220、拡張可能ホストコントローラインターフェース(xHCI)230、ユニバーサルシリアルバス3.0コネクタ240、メモリ要素250およびファームウェア要素260を含む。メモリ要素250およびファームウェア要素260は、第1のバス221によりプロセッサ/SoC220に結合される。いくつかの実施形態ではAcorn RISC Machine(ARM)ベースのリソースアーキテクチャを使用して構成されるプロセッサ/SoC220は、PCIe互換バス225によりxHCI230に結合される。xHCI230は、バス235を介してUSB3.0コネクタ240に高速差動信号を供給する。USB3.0コネクタ240は、接続245を介してポータブルコンピューティングデバイス210内のUSB3.0互換周辺デバイス270aに電力およびデータを供給する。代替として、USB3.0コネクタ240は、接続245を介してポータブルコンピューティングデバイス210とは別個のUSB3.0互換周辺デバイス270bに電力およびデータを供給する。
【００３３】
当技術分野で知られているように、メモリ要素250は、オペレーティングシステム(O/S)252および高度構成電力インターフェース(ACPI)254を含む。動作中、ACPI254は、ハードウェアの発見、構成、電力管理および監視のために、O/S252によって使用される。ACPI254は、解釈された実行可能機能インターフェース、構成テーブル、ならびにマザーボードデバイスの目録および構成を含む、ハードウェアレジスタおよび基本入出力システムインターフェースを定義する。加えて、ACPIは、システムおよびデバイスの電力状態および温度モデルを定義する。上記のすべては、PCD210上で実行されている1つまたは複数のアプリケーションプログラムへの、オペレーティングシステムから独立したアプリケーションプログラミングインターフェースを介して通信され得る。
【００３４】
図2にさらに示されたように、ファームウェア要素260は、それぞれのコンテンツがその中に記憶された複数のアドレス指定可能なメモリ要素267a〜267zを有する、PCIeベースアドレスレジスタのセットストア265を含む。ACPI254内のテーブル254a〜254nのうちの1つまたは複数の中の情報によって記述されるように、コンテンツは、リソース(たとえば、USB3.0周辺デバイス270aまたはUSB3.0周辺デバイス270b)と整合するリソース(たとえば、PCIe互換デバイス)を記述する。複数のアドレス指定可能なメモリ要素267a〜267z内のコンテンツがファームウェア要素260からプロセッサ/SoC220に通信されるとき、コンテンツは、PCIe互換デバイス270a、270bを、オペレーティングシステム252およびオペレーティングシステム252の下で実行されているアプリケーションプログラムに見せる。
【００３５】
図3は、PCD310の代替の実施形態の例示的な要素を示す機能ブロック図である。図3の機能ブロック図は、特許請求された発明の例示的なアーキテクチャおよび動作を示す構成要素および相互接続を含む。PCD310は、図2に示されたPCD210に関連して前に紹介されたそれらの要素に加えて、PCIeスイッチ226、PCIeイーサネット(登録商標)変換器236およびイーサネット(登録商標)コネクタ244を含む。PCD310は、所望され得るように追加の機能要素(図示せず)を含むことができることを理解されたい。これらの追加の機能要素のすべてではないがいくつかは、図1に関連して記載された実施形態で紹介された。
【００３６】
図3に示されたように、ポータブルコンピューティングデバイス310は、プロセッサ/SoC(システムオンチップ)220、拡張可能ホストコントローラインターフェース(xHCI)230、ユニバーサルシリアルバス3.0コネクタ240、メモリ要素250およびファームウェア要素260を含む。メモリ要素250およびファームウェア要素260は、第1のバス221によりプロセッサ/SoC220に結合される。いくつかの実施形態ではAcorn RISC Machine(ARM)ベースのリソースアーキテクチャを使用して構成されるプロセッサ/SoC220は、PCIeスイッチ226およびPCIe互換バス225を介して、xHCI230およびPCIeイーサネット(登録商標)変換器236に結合される。xHCI230およびPCIeイーサネット(登録商標)変換器236は、バス227上でPCIeスイッチ226に結合される。xHCI230は、バス235を介してUSB3.0コネクタ240に高速差動信号を供給する。USB3.0コネクタ240は、接続245を介してUSB3.0互換周辺デバイス270に電力およびデータを供給する。図示された実施形態では、USB3.0周辺デバイス270は、PCD310とは別個である。しかしながら、いくつかの実施形態では、USB3.0周辺デバイス270は、ポータブルコンピューティングデバイス310と一体(すなわち、同じ筐体内)であり得る。PCIeイーサネット(登録商標)変換器236は、バス237を介してイーサネット(登録商標)コネクタ244に信号を供給する。イーサネット(登録商標)コネクタ244は、イーサネットケーブル(図示せず)内のツイストワイヤペアを介して、イーサネット(登録商標)互換デバイスに電力およびデータを供給することが可能である。
【００３７】
メモリ要素250は、オペレーティングシステム(O/S)252および高度構成電力インターフェース(ACPI)254を含む。動作中、ACPI254は、ハードウェアの発見、構成、電力管理および監視のために、O/S252によって使用される。ACPI254は、解釈された実行可能機能インターフェース、構成テーブル、ならびにマザーボードデバイスの目録および構成を含む、ハードウェアレジスタおよび基本入出力システムインターフェースを定義する。加えて、ACPIは、システムおよびデバイスの電力状態および温度モデルを定義する。上記のすべては、オペレーティングシステムから独立したアプリケーションプログラミングインターフェースを介して、PCD310上で実行されている1つまたは複数のアプリケーションプログラムに通信され得る。
【００３８】
図3にさらに示されたように、ファームウェア要素260は、それぞれのコンテンツがその中に記憶された複数のアドレス指定可能なメモリ要素267a〜267zを有する、PCIeベースアドレスレジスタのセットストア265を含む。ACPI254内のテーブル254a〜254nのうちの1つまたは複数の中の情報によって記述されるように、コンテンツは、リソース(たとえば、PCIeイーサネット(登録商標)変換器236)と整合するリソース(たとえば、PCIe互換デバイス)を記述する。複数のアドレス指定可能なメモリ要素267a〜267z内のコンテンツがファームウェア要素260からプロセッサ/SoC220に通信されるとき、コンテンツはPCIeイーサネット(登録商標)変換器236をオペレーティングシステム252およびオペレーティングシステム252の下で実行されているアプリケーションプログラムに見せる。
【００３９】
図4は、PCD210(図2)またはPCD310(図3)などのPCD上で動作可能なオペレーティングシステムに、PCIe互換デバイスを見せるための方法400を示すフローチャートである。方法は、PCIeデバイスを記述するPCIeベースレジスタのセット用のコンテンツが決定されるブロック410で始まる。いくつかのPCIeデバイスのうちのいずれかを定義することができる。たとえば、これらおよび他の通信規格と互換性があるPCD、通信ポートまたはコネクタに統合されたデバイスを含むが、それらに限定されないグラフィックスプロセッサ、データストレージデバイス、他のUSB2.0およびUSB3.0互換デバイスのうちの1つまたは複数を定義するコンテンツを収集することができる。
【００４０】
ブロック420では、PCIeベースレジスタのセット用のコンテンツは、ACPIに統合され、通信され、または場合によっては確認される。ACPIは、オペレーティングシステムの命令による、モバイル、デスクトップ、およびサーバのコンピューティングプラットフォームの構成、電力管理、および温度管理を可能にするための業界標準のインターフェースである。ACPIは、基本入出力システム(BIOS)内の電力管理コードの集合、電力管理を対象とするアプリケーションプログラミングインターフェース、プラグアンドプレイBIOSを対象とするアプリケーションプログラミングインターフェース、およびマルチプロセッサ仕様情報に取って代わった。ACPIデバイスはACPIソース言語によって記述され、次にACPIソース言語はACPI機械語(AML)にコンパイルされる。オペレーティングシステムは、AMLを読み取ってACPIデバイスを発見または列挙する。
【００４１】
ブロック430では、PCD内のファームウェアは、PCIeバスを初期化してAML内の情報(たとえば、テーブル254a〜254n内の情報)を整合させるために使用される。たとえば、かつポータブルコンピューティングデバイス210(図2)およびポータブルコンピューティングデバイス310(図3)に関連して記載されたように、ファームウェア260のストア265に記憶されたコンテンツ267は、プロセッサ220と1つまたは複数の定義されたPCIe互換デバイスとの間のPCIe接続を確立する際にこれらの要素をサポートするために、プロセッサ220およびメモリ250のうちの1つまたは両方に適切なときに通信される。上記で示されたように、ソフトウェアは、PCIeバスを初期化してACPIのAMLテーブルに記述されたリソースを整合させるために使用される。上記でさらに示されたように、ソフトウェアは、実行時にACPIテーブルの読取り動作を指示して、ACPIからPCIeへの適切なマッピングを決定することができる。代替として、ACPIからPCIeへのマッピングは、コンパイル時に決定することができる。タイミングにかかわらず、PCIe初期化は、ACPIテーブル内に割り当てられた値と一致するように、PCIeベースアドレスレジスタを構成する。
【００４２】
図5は、PCD上で動作可能なオペレーティングシステムにPCIe互換デバイスを見せるように、PCD210(図2)またはPCD310(図3)などのPCDを構成するための方法500を示すフローチャートである。方法500は、PCIeデバイスを記述するPCIeベースレジスタのセットにコンテンツが提供されるブロック510で始まる。例示的な実施形態では、コンテンツはファームウェア要素260に提供される。いくつかのPCIeデバイスのうちのいずれかを定義することができる。たとえば、これらおよび他の通信規格と互換性があるPCD、通信ポートまたはコネクタに統合されたデバイスを含むが、それらに限定されないグラフィックスプロセッサ、データストレージデバイス、他のUSB2.0およびUSB3.0互換デバイスのうちの1つまたは複数を定義するコンテンツを提供することができる。
【００４３】
ブロック520では、ブロック510で提供されたPCIeベースレジスタのセット用のコンテンツを整合させるAMLを含むACPIが提供される。ACPIは、オペレーティングシステムの命令による、モバイル、デスクトップ、およびサーバのコンピューティングプラットフォームの構成、電力管理、および温度管理を可能にするための業界標準のインターフェースである。ACPIデバイスはACPIソース言語によって記述され、次にACPIソース言語はACPI機械語(AML)にコンパイルされる。上記で示されたように、PCD上で動作可能なオペレーティングシステムは、AMLを読み取ってACPIデバイスを発見または列挙する。
【００４４】
ブロック530では、PCD上のPCIeバスは、AML内の情報(たとえば、テーブル254a〜254n内の情報)を整合させるコンテンツで初期化される。たとえば、かつポータブルコンピューティングデバイス210(図2)およびポータブルコンピューティングデバイス310(図3)に関連して記載されたように、ファームウェア260のストア265に記憶されたコンテンツ267は、プロセッサ220と1つまたは複数の定義されたPCIe互換デバイスとの間のPCIe接続を確立する際にこれらの要素をサポートするために、プロセッサ220およびメモリ250のうちの1つまたは両方に適切なときに通信される。上記で示されたように、ソフトウェアは、PCIeバスを初期化して、ACPIのAMLテーブルに記述されたリソースを整合させるために使用される。上記でまた示されたように、ソフトウェアは、実行時にACPIテーブルの読取り動作を指示して、ACPIからPCIeへの適切なマッピングを決定することができる。代替として、ACPIからPCIeへのマッピングは、コンパイル時に決定することができる。タイミングにかかわらず、PCIe初期化は、ACPIテーブル内に割り当てられた値と一致するように、PCIeベースアドレスレジスタを構成する。
【００４５】
図6は、その中で具現化されたコンピュータ可読プログラムコードを有するコンピュータプログラム製品によって可能になり得る方法600を示すフローチャートであり、前記コンピュータ可読プログラムコードは、PCD上で動作可能なオペレーティングシステムに1つまたは複数のPCIe互換リソースを見せるようにPCDを構成するためのプロセッサ220によって実行されるように適合される。方法600は、PCIe互換デバイスを記述するPCIeベースレジスタのセット用のコンテンツが決定されるブロック610で始まる。いくつかのPCIe互換デバイスのうちのいずれかを定義することができる。たとえば、これらおよび他の通信規格と互換性があるPCD、通信ポートまたはコネクタに統合されたデバイスを含むが、それらに限定されないグラフィックスプロセッサ、データストレージデバイス、他のUSB2.0およびUSB3.0互換デバイスのうちの1つまたは複数を定義するコンテンツを決定することができる。
【００４６】
判定ブロック620では、ブロック610で決定されたコンテンツが、PCDに結合された定義されたPCIe互換デバイスに関するACPI情報に整合することを確認するために、判定または比較が行われる。コンテンツがAMLに整合しないことが判定されたとき、判定ブロック620を出る「いいえ」と標示されたフロー制御矢印によって示されたように、方法600は、AMLまたはコンテンツの1つがPCIe互換デバイスを定義するように調整されるブロック630に進む。そうではなく、コンテンツがAML内の情報に整合するとき、判定ブロック620を出る「はい」と標示されたフロー制御矢印によって示されたように、方法600は、PCD内のファームウェアがPCIeバスを初期化してAML内の情報(たとえば、テーブル254a〜254n内の情報)を整合させるために使用されるブロック640に進む。たとえば、かつポータブルコンピューティングデバイス210(図2)およびポータブルコンピューティングデバイス310(図3)に関連して記載されたように、ファームウェア260のストア265に記憶されたコンテンツ267は、プロセッサ220と1つまたは複数の定義されたPCIe互換デバイスとの間のPCIe接続を確立する際にこれらの要素をサポートするために、プロセッサ220およびメモリ250のうちの1つまたは両方に適切なときに通信される。上記で示されたように、ソフトウェアは、PCIeバスを初期化して、ACPIのAMLテーブルに記述されたリソースを整合させるために使用される。上記でさらに示されたように、ソフトウェアは、実行時にACPIテーブルの読取り動作を指示して、ACPIからPCIeへの適切なマッピングを決定することができる。代替として、ACPIからPCIeへのマッピングは、コンパイル時に決定することができる。タイミングにかかわらず、PCIe初期化は、ACPIテーブル内に割り当てられた値と一致するように、PCIeベースアドレスレジスタを構成する。
【００４７】
上記の開示に鑑みて、当業者は、ソフトウェアドライバを使用せずに、PCIeバスを介してプロセッサに結合されたPCIe互換デバイスをオペレーティングシステムに見せるために、コンピュータコードを書くか、あるいは適切なハードウェアおよび/または他の論理もしくは回路を識別することができる。当業者は、たとえば、適切なベースアドレスレジスタのコンテンツと通信してPCIeデバイスを識別するために、本明細書内のフローチャートおよび関連する説明に基づいて、容易に適切なハードウェアおよび/またはソフトウェアを識別することができる。したがって、特定の1組のプログラムコード命令または詳細なハードウェアデバイスの開示が、記載されたポータブルコンピューティングデバイス、システムおよび/または方法をどのように製作し使用すべきかを適切に理解するうえで必要であるとは見なされない。特許請求されたコンピュータ実装プロセスの発明性のある機能が、上記の説明において、かつ様々なプロセスの流れを示すことができる図面に関連して、より詳細に説明された。さらに、プロセッサ110、220などは、メモリ112、250およびその中に記憶された命令との組合せで、本明細書に記載された方法ステップのうちの1つまたは複数を実行するための手段として働くことができる。
【００４８】
1つまたは複数の例示的な態様では、記載された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せに実装することができる。ソフトウェアに実装される場合、機能は、1つもしくは複数の命令もしくはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体上で送信することができる。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む、コンピュータ記憶媒体とコンピュータ通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスすることができる任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の光記憶デバイスもしくは磁気記憶デバイス、あるいは、命令またはデータ構造の形式で所望のプログラムコードを搬送または記憶するために使用され得るし、かつコンピュータによってアクセスされ得る任意の他の媒体を備えることができる。本明細書で使用する「ディスク(disk)」または「ディスク(disc)」という用語は、限定はしないが、コンパクトディスク(disc)(「CD」)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(「DVD」)、フロッピー(登録商標)ディスク(disk)およびブルーレイディスク(disc)を含む。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【００４９】
選択された態様が詳細に図示および記載されたが、以下の特許請求の範囲によって規定されるような本開示の概念から逸脱することなく、本明細書において様々な置換および改変がなされ得ることが理解されよう。
【符号の説明】
【００５０】
100  ポータブルコンピューティングデバイス(PCD)
102  オンチップシステム
110  マルチコア中央処理装置(CPU)
111  グラフィックスプロセッサ
112  メモリ要素
114  プログラマブル読取り専用メモリ(PROM)
126  アナログ信号プロセッサ
128  ディスプレイコントローラ
130  タッチスクリーンコントローラ
132  タッチスクリーンディスプレイ
134  ビデオコーダ/エンコーダ(コーデック)
136  ビデオ増幅器
138  ビデオポート
140  ユニバーサルシリアルバス(USB)コントローラ
142  USBポート
146  加入者識別モジュール(SIM)カード
148  デジタルカメラ
150  ステレオオーディオコーデック
152  オーディオ増幅器
154  第1のステレオスピーカー
156  第2のステレオスピーカー
158  マイクロフォン増幅器
160  マイクロフォン
162  周波数変調(FM)ラジオチューナ
164  FMアンテナ
166  ステレオヘッドフォン
168  無線周波(RF)トランシーバ
170  RFスイッチ
172  RFアンテナ
174  キーパッド
176  マイクロフォン付きモノヘッドセット
178  バイブレータデバイス
180  電源
210  ポータブルコンピューティングデバイス(PCD)
220  プロセッサ/SoC(システムオンチップ)
221  第1のバス
225  PCIe互換バス
226  PCIeスイッチ
227  バス
230  拡張可能ホストコントローラインターフェース(xHCI)
235  バス
236  PCIeイーサネット(登録商標)変換器
240  ユニバーサルシリアルバス3.0コネクタ
244  イーサネット(登録商標)コネクタ
245  接続
250  メモリ要素
252  オペレーティングシステム(O/S)
254  高度構成電力インターフェース(ACPI)
254a  テーブル
254n  テーブル
260  ファームウェア要素
265  PCIeベースアドレスレジスタのセットストア
267a  アドレス指定可能なメモリ要素
267z  アドレス指定可能なメモリ要素
270  USB3.0互換周辺デバイス
270a  USB3.0互換周辺デバイス
270b  USB3.0互換周辺デバイス
310  ポータブルコンピューティングデバイス(PCD)
【図１】
0005916881.tif 000002
【図２】
0005916881.tif 000003
【図３】
0005916881.tif 000004
【図４】
0005916881.tif 000005
【図５】
0005916881.tif 000006
【図６】
0005916881.tif 000007