(57)【要約】【課題】デバイスドライバは、情報処理装置に存在するＣＰＵ毎、ＯＳ毎に作成し、情報処理装置のメモリ中に保持されて、必要な時に起動・削除されて使用されていたが、情報処理装置中に種類の異なるＣＰＵやＯＳが多く内蔵されるようになると、それぞれに対応する種々のデバイスドライバを情報処理装置中に保持しておく必要があるので、デバイスドライバを保持するためのメモリの容量が爆発的に増大してしまうことになる。そこで、デバイスドライバに必要なメモリの容量を削減することを目的とする。【解決手段】ＣＰＵアーキテクチャに依存しない中間言語でデバイスドライバを記述し、必要な時に、中間言語トランスレータを用いて、ＣＰＵに依存する機械語に翻訳してからデバイスドライバを実行し、不必要になったら削除することによって課題を解決する。【選択図】図１
2011076435.tif 000002
【特許請求の範囲】
【請求項１】
複数の種類のプロセッサを備える情報処理装置の各プロセッサを、
前記情報処理装置で用いられるデバイスにアクセスする際に、前記デバイスに係る中間言語で記述されたデバイスドライバを前記プロセッサに対応する機械語に翻訳する翻訳手段と、
前記機械語に翻訳されたデバイスドライバを前記情報処理装置にインストールするインストール手段と、
前記インストール手段でインストールされたデバイスドライバが必要ないと判断した場合、前記デバイスドライバを前記情報処理装置からアンインストールするアンインストール手段と、
して機能させるデバイスドライバ用のプログラム。
【請求項２】
前記複数の種類のプロセッサのエンディアンの種類を判別する判別手段を更に有し、
前記翻訳手段は、翻訳する際に、前記判別手段で判別されたプロセッサのエンディアンの種類に対応する機械語に前記デバイスに係る中間言語で記述されたデバイスドライバを翻訳する請求項１に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイスドライバ用のプログラムに関する。
【背景技術】
【０００２】
情報処理装置に新たなデバイスが追加されたとき、そのデバイスのソースコードからデバイスドライバをコンパイル・リンクして、情報処理装置にインストールする方法が提案されている（特許文献1参照）。しかしながら、ソースコードとコンパイラ等の言語処理系とをすべて情報処理装置に保持する必要があり、それによるメモリ消費量及びコンパイル・リンク時のシステムへの負荷は、決して小さいものではない。
また、半導体技術の進展により、１つのチップの中に、一種類のプロセッサが複数個実装されるだけでなく、複数の種類のプロセッサも実装されるようになってきた。このようなプロセッサの構成になると、チップ内のあるデバイスに対して、複数のマイクロプロセッサや複数のＯＳに対応したデバイスドライバが必要になってくる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−８６２８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の方法では、実装されるプロセッサの種類の数だけデバイスドライバを作成し、メモリに保持しておいて、必要に応じて、システムにインストールし、プロセッサ毎に使い分ける必要があり、必要なメモリが増大する問題が生じ得る。
【０００５】
本発明はこのような問題点に鑑みなされたもので、デバイスドライバに必要なメモリの容量を削減することを目的とする。
【課題を解決するための手段】
【０００６】
そこで、本発明は、複数の種類のプロセッサを備える情報処理装置の各プロセッサを、前記情報処理装置で用いられるデバイスにアクセスする際に、前記デバイスに係る中間言語で記述されたデバイスドライバを前記プロセッサに対応する機械語に翻訳する翻訳手段と、前記機械語に翻訳されたデバイスドライバを前記情報処理装置にインストールするインストール手段と、前記インストール手段でインストールされたデバイスドライバが必要ないと判断した場合、前記デバイスドライバを前記情報処理装置からアンインストールするアンインストール手段と、して機能させることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、デバイスドライバに必要なメモリの容量を削減することができる。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態に係る情報処理装置の構成を示す図である。
【図２】第２の実施形態に係る情報処理装置の構成を示す図である。
【図３】第３の実施形態に係る情報処理装置の構成を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について図面に基づいて説明する。
【００１０】
＜第１の実施形態＞
図１は、第１の実施形態に係る情報処理装置（システム）の構成の一例を示す図である。主メモリ１００は、中間言語で記述されたデバイスドライバを格納する。１０１は、デバイスＡであり、System Bus 1（１０３）に接続されている。１０２は、デバイスＢであり、System Bus 2（１０４）に接続されている。System Bus 1（１０３）には、ＣＰＵ（Central Processing Unit）−Ｄ１０９とＣＰＵ−Ｂ１１０とが接続されている。System Bus 2（１０４）には、ＣＰＵ−Ａ１１１とＣＰＵ−Ｃ１１２とが接続されている。
１０５は、ＣＰＵ−Ｄ１０９のローカルメモリを表しており、主メモリ１００にアクセスすることなく、ＣＰＵ−Ｄ１０９の命令を実行するために用意されたメモリである。１０８は、ＣＰＵ−Ｃ１１２のローカルメモリを表しており、同様に主メモリ１００にアクセスすることなく、ＣＰＵ−Ｃ１１２の命令を実行するために用意されたメモリである。
【００１１】
本実施形態では、まず、ＣＰＵ−Ｃ１１２がデバイスＢ１０２にアクセスする必要がある場合を考える。この場合、主メモリ１００に格納されたデバイスＢ１０２のための中間言語で記述されたデバイスドライバ１１３をＣＰＵ−Ｃ１１２の機械語に翻訳する必要がある。
そこで、中間言語トランスレータは、デバイスＢ１０２の中間言語で書かれたデバイスドライバ１１３をＣＰＵ−Ｃ１１２の機械語に翻訳し、主メモリ１００に一旦格納する。その後、中間言語トランスレータは、ローカルメモリ１０８に機械語を転送する。中間言語トランスレータは、ローカルメモリ１０８に転送した後は、翻訳した機械語を主メモリ１００から削除する。なお、転送する処理及び削除する処理は、他の手段が適宜行ってもよい。
次に、インストーラは、機械語に翻訳されているデバイスドライバ１１６をローカルメモリ１０８内にインストールする。その後、ＣＰＵ−Ｃ１１２は、インストールされたデバイスドライバ１１６を用いて、デバイスＢ１０２にアクセスすることができるようになる。ＣＰＵ−Ｃ１１２は、デバイスＢ１０２にアクセスする必要がある間は、ローカルメモリ１０８にデバイスドライバ１１６を保持し続けさせることが可能である。
また、デバイスＢ１０２にアクセスする必要がなくなった場合、アンインストーラは、ローカルメモリ１０８からデバイスドライバ１１６をアンインストールする。
ここで、中間言語トランスレータ、インストーラ、及びアンインストーラに係るプログラムは、デバイスドライバ用のプログラムであり、図示しない記憶装置に記憶されている。デバイスドライバ用のプログラムは、ＣＰＵ−Ａ１１１、ＣＰＵ−Ｂ１１０等により適時に記憶装置から読み出されて実行され、中間言語トランスレータ、インストーラ、及びアンインストーラの各機能が実現される。
【００１２】
次に、ＣＰＵ−Ｄ１０９がデバイスＡ１０１を必要としていると情報処理装置が判断した場合を考える。この場合、主メモリ１００に格納されたデバイスＡ１０１のための中間言語で記述されたデバイスドライバ１１４をＣＰＵ−Ｄ１０９の機械語に翻訳する必要がある。
まず、中間言語トランスレータは、デバイスＡの中間言語で書かれたデバイスドライバ１１４をＣＰＵ−Ｄ１０９の機械語に翻訳し、一旦主メモリ１００に格納し、その後ローカルメモリ１０５に転送する。中間言語トランスレータは、ローカルメモリ１０５に転送した後、翻訳した機械語を主メモリ１００から削除する。
次に、インストーラは、機械語に翻訳されているデバイスドライバ１１５をローカルメモリ１０５にインストールする。その後、ＣＰＵ−Ｄ１０９は、デバイスＡ１０１にアクセスできるようになり、デバイスＡ１０１にアクセスする必要がある間は、デバイスドライバ１１５をローカルメモリ１０５が保持し続ける。
また、デバイスＡ１０１にアクセスする必要がなくなった場合、アンインストーラは、ローカルメモリ１０５からデバイスドライバ１１５をアンインストールする。
なお、本実施形態では、機械語に翻訳されているデバイスドライバのインストール等についてはローカルメモリを用いたが、キャッシュメモリを用いても、同様なことを実現できる。
このように、本実施形態では、ＣＰＵアーキテクチャに依存しない中間言語でデバイスドライバが記述されており、必要に応じてＣＰＵに依存する機械語に翻訳されたデバイスドライバがインストールされ、不必要になった場合には、デバイスドライバが削除される。この構成によれば、デバイスドライバに必要なメモリの容量を削減することができる。
【００１３】
＜第２の実施形態＞
図２は、第２の実施形態に係る情報処理装置の構成の一例を示す図である。
本実施形態と第１の実施形態との違いは、ローカルメモリ中にＯＳ（オペレーティングシステム）が常駐しているか否かである。本実施形態では、デバイスドライバを記述する中間言語中にＯＳへのサービスコールを記述することができる。また、条件構文（Ｃ言語でいうところの#ifdefに対応）を使用して、ターゲットＯＳを指定することが可能であるため、本実施形態に係るデバイスドライバは、ＯＳ依存部も含めて、機械語に直接翻訳される。なお、ＯＳ層とのリンクは、ＯＳがサポートしているインストーラ、ＯＳ層からの切り離しはＯＳがサポートしているアンインストーラの機能を利用する。
【００１４】
図２において、まず、中間言語トランスレータは、主メモリ２００に格納されているデバイスＢ２０２の中間言語で記述されたデバイスドライバ２１３をＣＰＵ−Ａ用の機械語に翻訳して、一旦主メモリ２００に格納する。また、中間言語トランスレータは、ローカルメモリ２０７に機械語を転送する。その後、ＣＰＵ−Ａ２１１の機械語で動作するＯＳ  Ｙ２１７のデバイスドライバのインストーラが起動される。
次に、インストーラは、機械語に翻訳されているＣＰＵ−Ａ２１１で動作するデバイスドライバ２１８をローカルメモリ２０７内にインストールする（ＯＳ  Ｙ２１７配下上で、デバイスＢ２０２にアクセス可能なように配置する）。これ以降、ＣＰＵ−Ａ２１１は、デバイスＢ２０２にアクセス可能となる。なお、本実施形態では、デバイスドライバ２１８のインストール後、主メモリ２００に格納されていた機械語が削除される。
ＣＰＵ−Ａ２１１は、デバイスＢ２０２へのアクセスが必要な間は、ローカルメモリ２０７にデバイスドライバ２１８を保持させることが可能である。デバイスＢ２０２へのアクセスが不必要になった場合には、ＯＳ  Ｙ２１７のデバイスドライバのアンインストール機能を使って、デバイスドライバ２１８をローカルメモリ２０７から削除する。
【００１５】
同様に、ＣＰＵ−Ｂ２１０がデバイスＡ２０１にアクセスする場合も上述の方法を取ることによって、ＣＰＵ−Ｂ２１０もデバイスＡ２０１にアクセス可能になる。
ＣＰＵ−Ｂ２１０がデバイスＡ２０１にアクセスする必要がなくなると、ＯＳ  Ｘ２１５のデバイスドライバのアンインストーラが起動され、ローカルメモリ２０６からデバイスドライバ２１６が削除される。
なお、本実施形態においても、ローカルメモリを用いたが、キャッシュメモリを用いても、同様なことを実現できる。
【００１６】
＜第３の実施形態＞
図３は、第３の実施形態に係る情報処理装置の構成の一例を示す図である。本実施形態では、エンディアンの違いにも対応できることを説明する。
図３に示すＣＰＵ−Ａ３０９とＣＰＵ−Ａ３１２とは、種類としては同一のプロセッサであるが、プロセッサのエンディアンが異なる。これらのエンディアンは、ＭＰＳＯＣ（Multi-processor System On a Chip）を設計する時点で、どちらかのエンディアンに固定されている。本実施形態では、ＣＰＵ−Ａ３０９はリトル・エンディアンで構成されており、一方ＣＰＵ−Ａ３１２はビッグ・エンディアンで構成されている。
【００１７】
先ず、ＣＰＵ−Ａ３０９がデバイスＡ３０１にアクセスする場合、中間言語トランスレータは、ＣＰＵのエンディアンの種類を判別し、デバイスＡの中間言語で書かれたデバイスドライバ３１４をＣＰＵ−Ａ３０９の機械語に翻訳し、一旦主メモリ３００に格納する。次に、中間言語トランスレータは、機械語に翻訳されたデバイスドライバをローカルメモリ３０５に転送する。この転送が完了すると主メモリ３００の機械語は削除される。
ＣＰＵ−Ａ３０９は、リトル・エンディアンで動作している。転送され、インストールされたデバイスＡ３０１のデバイスドライバ３１５は、リトル・エンディアン対応になっている。何の問題もなくＣＰＵ−Ａ３０９は、デバイスＡ３０１にアクセスできるようになる。ＣＰＵ−Ａ３０９がデバイスＡ３０１にアクセスする必要がなくなれば、アンインストーラが起動されて、ローカルメモリ３０５内のデバイスドライバ３１５は、削除される。
【００１８】
次に、もう一方のＣＰＵ−Ａ３１２がデバイスＢ３０２にアクセスする場合、中間言語トランスレータは、同様に、デバイスＡの中間言語で書かれたデバイスドライバ３１３をＣＰＵ−Ａ３１２の機械語に翻訳し、一旦主メモリ３００に格納する。次に、中間言語トランスレータは、機械語に翻訳されたデバイスドライバをローカルメモリ３０８に転送する。この転送が完了すると主メモリ３００の機械語は削除される。
ＣＰＵ−Ａ３１２は、ビッグ・エンディアンで動作しているが、転送され、インストールされたデバイスＢ３０２のデバイスドライバ３１６は、ビッグ・エンディアン対応になっている。何の問題もなくＣＰＵ−Ａ３１２は、デバイスＢ３０２にアクセスできるようになる。ＣＰＵ−Ａ３１２がデバイスＢ３０２にアクセスする必要がなくなれば、アンインストーラが起動されて、ローカルメモリ３０８内のデバイスドライバ３１６は、削除される。
なお、本実施形態においても、ローカルメモリを用いたが、キャッシュメモリを用いても、同様なことを実現できる。
上述の構成によれば、ＭＰＳＯＣ上で動作するデバイスドライバが必要とするメモリ量を大幅に削減することができる。また、上述の構成によれば、情報処理装置の構成に合わせて柔軟に（動的に）デバイスドライバを生成し、実行し、削除することが可能となる。
【００１９】
このように、従来は、搭載されるＯＳが複数あれば、その種類分だけ、デバイスドライバも用意する必要があった。すなわち、（プロセッサの種類）×（ＯＳの種類）のデバイドライバをメモリ中に保持する必要があり、デバイスドライバに必要なメモリ量は増大してしまう傾向にあった。しかも、最近のプロセッサは、両方のエンディアン（リトル・エンディアン及びビッグ・エンディアン）をサポートしている。この２種類のエンディアンも考慮すると、組み合わせはさらに２倍になり、情報処理装置中に同一デバイスのために複数個のデバイスドライバを予め用意する必要があり、必要なメモリは飛躍的に増大してしまうことになる。
これに対して、第１の実施形態〜第３の実施形態の構成を適宜、組み合わせることにより、情報処理装置中に同一デバイスのために複数個のデバイスドライバを予め用意する必要がなくなるので、デバイスドライバに必要なメモリの容量を削減することができる。
【００２０】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００２１】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００２２】
１００  主メモリ、１０１  デバイスＡ、１０２  デバイスＢ、１０５  ＣＰＵ−Ｄのローカルメモリ、１０８  ＣＰＵ−Ｃのローカルメモリ、１０９  ＣＰＵ−Ｄ、１１２  ＣＰＵ−Ｃ
【図１】
2011076435.tif 000003
【図２】
2011076435.tif 000004
【図３】
2011076435.tif 000005