(57)【要約】  システムブート期間にコンピュータ装置を制御するオペレーティングシステム（ＯＳ）カーネルに自身を付随させる外部モジュールの手段を用いて、有効なコプロセッサハンドラとして自身を登録する外部モジュールを当該コンピュータ装置上のコプロセッサ支援に提供する。スレッドは最初、コプロセッサが無効な状態で実行する。その結果、コプロセッサ命令の実行により例外が引き起こされ、その例外が適切に登録されたハンドラに渡される。この技術は、コプセッサに組み込み支援するか、又は実際には無いコプロセッサをエミュレートするのに使用されうる。
2009506410.tif 000002
【特許請求の範囲】
【請求項１】
装置に存在するコプロセッサを支援するためのコンピュータ装置の動作方法であって、
前記コンピュータ装置のための制御ソフトウェアに、前記コンピュータ装置の起動時点でコプロセッサを支援するための１又は複数のコプロセッサ支援モジュールを読み込ませる工程
を含むことを特徴とする方法。
【請求項２】
前記コンピュータ装置上で実行され、予定され、又は起動されるスレッドは、前記コプロセッサが無効な状態で最初に実行される
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記コンピュータ装置が前記コプロセッサに関する例外を実行した場合、前記コンピュータ装置の制御は、前記制御ソフトウェアにより、前記適切に読み込まれたコプロセッサ支援モジュールに渡され、
コプロセッサ支援モジュールはコプロセッサを有効にし、生成される前記例外の原因となった命令をリトライする
ことを特徴とする請求項２記載の方法。
【請求項４】
ａ．前記コプロセッサに関する例外が、前記コプロセッサを最後に使用した最終スレッド以外のスレッドにより実行された場合、前記コプロセッサの状態は、前記コプロセッサ支援モジュールによりセーブされ、
ｂ．前記セーブされた状態は、前記コプロセッサを最後に使用した前記最終スレッドに関連付けられ、
ｃ．前記セーブされた状態に関連付けられた前記最終スレッドが前記コプロセッサを使用するとき、前記コプロセッサ支援モジュールにより前記セーブされた状態が復元される
ことを特徴とする請求項３記載の方法。
【請求項５】
コンピュータ装置上でコプロセッサをエミュレートする方法であって、
前記コンピュータ装置のための制御ソフトウェアに、前記コンピュータ装置の起動時点で、前記エミュレートすることを目的としてコプロセッサを支援するための１又は複数のコプロセッサ支援モジュールを読み込ませる工程
を含むことを特徴とする方法。
【請求項６】
前記コンピュータ装置が前記コプロセッサに関する例外を実行した場合、前記コンピュータ装置の制御は、前記制御ソフトウェアにより、前記適切に読み込まれたコプロセッサ支援モジュールに渡され、
前記コプロセッサ支援モジュールが生成される前記例外の原因となった命令をエミュレートする
ことを特徴とする請求項５記載の方法。
【請求項７】
ｄ．前記エミュレートされたコプロセッサに関する例外が、前記エミュレートされたコプロセッサを最後に使用した最終スレッド以外のスレッドにより実行された場合、前記エミュレートされたコプロセッサの状態は、前記コプロセッサ支援モジュールによりセーブされ、
ｅ．前記セーブされた状態は、前記エミュレートされたコプロセッサを最後に使用した前記最終スレッドに関連付けられ、
ｆ．前記セーブされた状態に関連付けられた前記最終スレッドが前記エミュレートされたコプロセッサを使用するとき、前記コプロセッサ支援モジュールにより前記セーブされた状態が復元される
ことを特徴とする請求項６記載の方法。
【請求項８】
請求項１乃至４のいずれか１項、又は請求項５乃至７のいずれか１項に記載の方法に従って動作するように構成される
ことを特徴とするコンピュータ装置。
【請求項９】
コンピュータ装置を、請求項１乃至４のいずれか１項、又は請求項５乃至７のいずれか１項に記載の方法に従った動作をコンピュータ装置に実施させる
ことを特徴とするオペレーティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ装置の動作方法に関し、特に、コンピュータ装置でコプロセッサ支援するコンピュータ装置の動作方法、及びそのような支援を行なうコンピュータ装置のオペレーティングシステムを提供する。
【背景技術】
【０００２】
’コンピュータ装置’という表現は、限定的なものではなく、デスクトップコンピュータ及びラップトップコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、スマートフォン、デジタルカメラ及びデジタルミュージックプレーヤを含む。また、上述した装置の種類の内の１又は複数の機能を組み合わせた集中型装置、それに加えて、多くの他の工業及び民生用の電子機器を含む。
【０００３】
コンピュータ装置は、ユーザからの装置への入力に連動して中央処理装置（ＣＰＵ）により実行される一連のプログラム化した命令の連続、又はコードモジュールの制御下で動作する。そのような装置は２つの主な種類のＣＰＵを利用する。
【０００４】
豊富な命令セットを有する複合命令セットコンピュータ（ＣＩＳＣ）で使用されるＣＰＵは、複雑な演算動作を非常に迅速に実行する能力がある。ＣＰＵは、インテル並びにＡＭＤ等の企業からのデスクトップコンピュータ及びサーバに使用される。しかし、それらの複雑さのため、ＣＩＳＣプロセッサは、比較的大きく且つ高価な製品であり、大量の電力を消費する。
【０００５】
最小限の命令セットを有する縮小命令セットコンピュータ（ＲＩＳＣ）で使用されるＣＰＵは、単純な命令の連続を組み立て複雑な演算動作を命じる。しかし、そのようなプロセッサは、より小さく且つより製造が容易な製品であると言う利点を有する。より高度な生産加工技術は、このようなプロセッサを極めて安価に製造する。また、このプロセッサは同程度のＣＩＳＣプロセッサよりはるかに電力消費が少ない。これらの理由から、ＲＩＳＣアーキテクチャは一般に、携帯電話等の最新の電池式のコンピュータ装置で使用される。ＲＩＳＣプロセッサ設計の先導者の一つとして、イギリスのＡＲＭ Ｌｔｄ ｏｆ Ｃａｍｂｒｉｄｇｅがある。
【０００６】
しかし、ＲＩＳＣ ＣＰＵは、比較的単純な命令の連続から複雑な命令を組み立てることが不可欠であり、そのような複雑な命令が頻繁に実行される必要がある場合、ＣＩＳＣタイプのＣＰＵには及ばない。ＲＩＳＣ設計者は、幾多の方法でこの問題を追及しようとしている。それら方法の一つでは、コプロセッサを主ＣＰＵに組み入れ、このようにしなければ完了が極めて遅いタスクを迅速に実行する。コプロセッサはまたＣＩＳＣプロセッサとともに使用されるが、ＲＩＳＣ装置で使用される制限された命令セットは、性能アップにとって極めて重要な技術であることを意味する。
【０００７】
コプロセッサは、通信、画像処理、マルチメディア、セキュリティ及び浮動小数点演算等の分野での動作のスピ−ドアップに使用されうる。例えば、ＡＲＭ（商標）アーキテクチャでは、１５までの増設コプロセッサを、例えば、ベクトル浮動小数点（ＶＦＰ）、動き検出ユニットに使用されることを可能にする。
【０００８】
進化したコンピュータ装置の多くは、オペレーティングシステムにより制御される。オペレーティングシステム（ＯＳ）は、コンピュータ装置が実施する全体的な動作を制御するソフトウェアである。ＯＳは、装置で実行されるソフトウェア同様に、システムにおける種々のハードウェアコンポーネントを制御及び統合するといったハードウェア管理の責任を負う。制御対象となるタスクが大量且つ複雑であるため、現在の多くのオペレーティングシステムは、マルチスレッド環境で動作する。
【０００９】
そのようなオペレーティングシステムで使用されるコプロセッサには、特有の困難さが存在する。マルチスレッド環境でコプロセッサを使用する場合、コンテキストスイッチの実行中であるか、また、新しいスレッドがコプロセッサにアクセスを試みる場合の要求に応じるか等のコプロセッサの状態がセーブ及び復元される必要がある。このようにする義務がオペレーティングシステムにはある。そのため、オペレーティングシステムは、総合的なコプロセッサ支援を行なう必要がある。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、多数且つ種々のコプロセッサを利用できるＲＩＳＣをベースとした装置は、オペレーティングシステム開発者にある難問を突きつける。主プロセッサ及びコプロセッサは、見込まれる置換の組み合わせが極めて多くあり、あるＯＳに関して全てのあり得る置換のための異なるバージョンを提供することは、オペレーティングシステムの開発者及び供給者にとって不可能である。全ての見込まれる組み合わせに対する実用上のテストは、それだけでそのようなオペレーティングシステムの新しいバージョンを立ち上げるのに要する時間を大規模に追加するであろう。
【００１１】
本発明は、既存のオペレーティングシステムにコプロセッサ支援を追加させうる組み込み可能なコプロセッサハンドラを用いることにより上述した課題の解決策を提供することを目的とする。
【００１２】
コプロセッサハンドラを支援することは、装置におけるハードウェア及びソフトウェアの全体に渡る制御を完全に統制するＯＳの中核たるＯＳカーネルの責務である。
【課題を解決するための手段】
【００１３】
本発明の第１の側面によれば、装置にあるコプロセッサを支援するためのコンピュータ装置の動作方法であって、コンピュータ装置のための制御ソフトウェアに、コンピュータ装置の起動時点でコプロセッサを支援するための１又は複数のコプロセッサ支援モジュールを読み込ませる工程を含むことを特徴とする方法が提供される。
【００１４】
本発明の第２の側面によれば、コンピュータ装置上でコプロセッサをエミュレートする方法であって、コンピュータ装置のための制御ソフトウェアに、コンピュータ装置の起動時点で、エミュレートすることを目的としてコプロセッサを支援するための１又は複数のコプロセッサ支援モジュールを読み込ませる工程を含むことを特徴とする方法が提供される。
【００１５】
本発明の第３の側面によれば、第１の側面の方法又は第２の側面の方法に従って動作するように構成されるコンピュータ装置が提供される。
【００１６】
本発明の第４の側面によれば、コンピュータ装置を第１の側面の方法又は第２の側面の方法に従って動作させるオペレーティングシステムが提供される。
【発明を実施するための最良の形態】
【００１７】
ここでは、本発明の一実施形態を、更なる一例として、添付の図を参照しながら説明する。図１は、本発明に係わるコンピュータ装置におけるコプロセッサを可能にする方法を示す図である。
【００１８】
本発明に係わるコンピュータ装置のオペレーティングシステムのカーネルは、フックを提供できるように構成される。フックを用いてシステムブート期間に外部モジュールがそれら自身をカーネルに付随させることができる。そのとき、これらフックは、有効なコプロセッサハンドラとしてそれら自身を登録する。これらフックを使用することにより、外部モジュールは、コプロセッサ状態についてのデータを格納する手段として各スレッド内に増設メモリ空間を確保しておける。また、外部モジュールは、コプロセッサ状態、’セーブ及び復元’が要求される場合に通知を受けられる。ある増設外部モジュールは、各コプロセッサで使用される。このようにして個々のコプロセッサでコンテキストの切替に必要な働きをする、カーネル外部のエージェントが生成される。
【００１９】
これにより、他のハードウェアを支援するのと同様に、コプロセッサ支援が追加されることを可能にする。そのため、装置製造業者は、コプロセッサをそれらハードウェアのオペレーティングシステムに組み入れる場合、深刻な問題なく、コプロセッサを組み入れることができる。これは、ＯＳ供給者が多種多様のマルチプルコプロセッサに関する支援を含む責任を負う必要がなくなることを意味する。
【００２０】
上述した組み込み可能なコプロセッサハンドラの構造は、ここで記載される装置に組み込まれる。本実施形態では、シンビアンＯＳ（Symbian OS（商標））での使用に関して記載される。このＯＳは、国際的に開かれた業界基準のオペレーティングシステムであり、データ使用可能な進化した携帯電話に搭載される。また一方で、当業者は、下記に記載されている実施の例を他のオペレーティングシステム及び他のアーキテクチャに容易に適用できるであろう。
【００２１】
ＩＡ−３２及び一部のＡＲＭ ＣＰＵは、十分な量の特別なレジスタ状態を含む浮動小数点コプロセッサを有する。例えば、ＡＲＭベクトル浮動小数点（ＶＦＰ）プロセッサは、３２ワードの増設レジスタを含む。当然、これら増設レジスタは、スレッド各々の状態の一部であることを必要とする。これは、スレッド各々が排他的なアクセスがあるかのように動作している状態で、１以上のスレッドがコプロセッサを使用できるようにするためである。
【００２２】
実際には、多くのスレッドは、コプロセッサを使用しない。そのため、コンテキストスイッチ毎にコプロセッサレジスタをセーブすることに費やされる労力を回避すると言う利益を得る。本実施形態においては、これを、’ｌａｚｙ’コンテキスト切替を使用することにより達成する。これは、コプロセッサを無効にする単純な方法である。無効にされたコプロセッサに対する動作は、例外に終わる。ＩＡ−３２及びＡＲＭの両方のプロセッサは、そのような構造を有する。
【００２３】
ＩＡ−３２は、ＣＲ０制御レジスタ内にフラグ（ＴＳ）を有する。ＩＡ−３２は、このフラグがセットされた場合、ＦＰＵ動作に、’Ｄｅｖｉｃｅ Ｎｏｔ  Ａｖａｉｌａｂｌｅ’例外を引き起こさせる。ＣＲ０レジスタは、通常のスレッドコンテキストの一部としてセーブ及び復元される。
【００２４】
ＡＲＭ ＶＦＰは、自身のＦＰＥＸＣ制御レジスタ内にイネイブルビットを有する。イネイブルビットがクリアされている場合、ＶＦＰ動作は、不明確命令の例外を引き起こす。ＦＰＥＸＣレジスタは、通常のスレッドコンテキストの一部としてセーブ及び復元される。
【００２５】
また、アーキテクチャ６及び一部のアーキテクチャ５のＡＲＭ装置も、レジスタ（ＣＡＲ）にアクセスするコプロセッサを有する。このレジスタは、常にアクセス可能なコプロセッサＣＰ１５以外の１５個の考えうるＡＲＭコプロセッサの各々を選択的に有効及び無効にする。これにより、ｌａｚｙコンテキストスイッチスキームが、全てのＡＲＭコプロセッサのために使用されることが可能になる。ＡＲＭコプロセッサがあれば、ＣＡＲは、通常のスレッドコンテキストの一部としてセーブ及び復元される。
【００２６】
ｌａｚｙコンテキストスイッチスキームは、下記に示すように動作する。スレッド各々は、コプロセッサへのアクセスがない状態から始まる。すなわち、コプロセッサは、関連するスレッドの実行においてはいつでも無効にされる。下記例では、図１を参照しながらスキームに従って説明する。
【００２７】
図１に示すように、あるスレッド、例えば、スレッドＡは、あるコプロセッサの使用を試みる。スレッドＡはコプロセッサへのアクセスがない状態から始まるので、コプロセッサは無効である。従って、例外が引き起こされ、これが、例外ハンドラに渡される。例外ハンドラは、他のスレッド、例えば、今現在、スレッドＢがコプロセッサへアクセスしている（’所有する’）か否かを確認する。アクセスしていれば、例外ハンドラは、スレッドＢのコントロールブロック内に現在のコプロセッサ状態をセーブした後、スレッドＢが次に実行される時にコプロセッサが無効にされるように、スレッドＢのセーブされた状態を変更する。あるスレッド、例えば、スレッドＢがコプロセッサを使用していなければ、例外ハンドラは、対象となるコプロセッサの状態をセーブする必要はない。
【００２８】
その後、コプロセッサアクセスは、現在のスレッド、スレッドＡのために有効にされる。そして、例外ハンドラは、スレッドＡのコントロールブロックからコプロセッサ状態を復元する。これは、スレッドＡが最後にコプロセッサを使用した時点での状態である。標準的な初期のコプロセッサ状態は、スレッドＡが生成された時にスレッドＡのコントロールブロック内に格納されている。この試みが、スレッドＡがコプロセッサを使用する最初であれば、図１に示すように、この標準的な状態がスレッドＡのコントロールブロック内から読み込まれるであろう。そのため、スレッドＡは、現在、コプロセッサを所有する。
【００２９】
例外ハンドラは、その後、元に戻り、プロセッサは、元のコプロセッサ命令をリトライする。コプロセッサは、スレッドＡに所有されているため、スレッドＡのために有効にされているので、これは成功する。
【００３０】
コプロセッサを所有している間にスレッドが終了すれば、コプロセッサは、どのスレッドにも所有されていないので、カーネルはそのコプロセッサにマークを付ける。
【００３１】
図１に示すこのスキームは、必要な時のみに、ＯＳカーネルが、コプロセッサ状態をセーブ及び復元することを確実にする。あるスレッドだけにコプロセッサが使用される場合、現状では極めて起こりえることであるが、その状態がセーブされることはない。言うまでもなく、何らかの理由でコプロセッサが、コプロセッサに状態を失わせる低電力モードになる場合、コプロセッサ状態は、低電力モードになる前にセーブされ、コプロセッサが通常動作モードに戻る時に復元される必要があるであろう。しかし、これまでは、コプロセッサが、そのような低電力モードを有して使用されることは知られていなかった。
【００３２】
最後に、コプロセッサハンドラは実際、２つの異なる目的で使用されうることに注意すべきである。１つ目は、マルチスレッドがコプロセッサを使用できるようにする必要があるので、コプロセッサ状態をセーブ及び復元することを目的とする。他方は、実際には存在しないコプロセッサをエミュレートすることを目的とする。
【００３３】
そのため、本発明は、全ての考えられるＣＰＵ及びコプロセッサの組み合わせのために別々のＯＳのバージョンを提供する必要性を回避することにより、コンピュータ装置に関するオペレーティングシステムの開発及び販売をスピードアップできるので、既知の技術に対し大きな利点をもたらすことが理解される。
【００３４】
要約すれば、それゆえ、本発明は、システムブート期間にコンピュータ装置を制御するＯＳカーネルに自身を付随させる外部モジュールの手段を用いて、有効なコプロセッサハンドラとして自身を登録する外部モジュールを当該コンピュータ装置上のコプロセッサ支援に提供する。スレッドは最初、コプロセッサが無効な状態で実行する。その結果、コプロセッサ命令の実行により例外が引き起こされ、その例外が適切に登録されたハンドラに渡される。この技術は、コプセッサに組み込み支援するか、又は実際には無いコプロセッサをエミュレートするのに使用されうる。
【００３５】
本発明の詳しい実施形態に関して記載したが、添付のクレームにより記載される本発明の範囲内における改良が達成されることも十分に理解される。
【図面の簡単な説明】
【００３６】
【図１】本発明に係わるコンピュータ装置におけるコプロセッサを可能にする方法を示す図である。
【図１】
2009506410.tif 000003
【国際調査報告】
2009506410.tif 000004
2009506410.tif 000005
2009506410.tif 000006
2009506410.tif 000007
2009506410.tif 000008