(57)【要約】【課題】  システムＬＳＩの個別構成に特化して高性能にできるＯＳを提供する。【解決手段】  ハード側＝プロセッサ、メモリ、機能回路モジュール、バス、ＣＰＵから制御可能なバスアービタ、を持つシステムＬＳＩ。バスアービタはバス上マスタデバイスに優先順位を付けられる。ソフト側＝マルチタスクＯＳであり、タスクの属性としてマスタデバイス管理属性を有し、カーネルがタスク遷移の際に上記属性値を参照してバスアービタを制御。優先度の高いタスクと連動して機能回路モジュールも高速化。【選択図】  図１
2007026367.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
メモリと、
機能回路モジュールと、
上記全てを互いに接続するバスと、
上記メモリへの競合アクセス時における上記バス上のマスタデバイス優先度を指定するアービタ制御用のレジスタを有する構成のシステムＬＳＩ上で用いられるマルチタスクＯＳであり、
上記ＯＳはタスクの属性としてマスタデバイス管理属性を有し、
上記ＯＳはタスク遷移の際に上記属性を参照して上記レジスタ内容を変更する制御手段を有する、
ことを特徴とするマルチタスクＯＳ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル情報機器に搭載される、ＣＰＵを搭載したシステムＬＳＩと、システムＬＳＩ上で動作する組み込みＯＳの利用方法に関する。特に、プリンタ、スキャナ、デジタル複写機、デジタルカメラ、デジタルビデオ等に搭載される、画像データ処理とデジタル制御に用いるシステムＬＳＩと協調動作する組込みＯＳの利用に関する。
【背景技術】
【０００２】
近年、半導体製造プロセスの進歩と集積度の向上に伴い、専用ハードウェア回路と共にＣＰＵを１つのＬＳＩに組み込む事で構成される、いわゆるシステムＬＳＩあるいはシステムオンチップ（ＳＯＣ）と呼ばれるＬＳＩがさかんに利用されるようになってきている。
【０００３】
上記のシステムＬＳＩの内部においては、バスまたはスイッチを介して、同一のメモリに対してＣＰＵおよび画像処理機能を持つハードウェアＩＰがアクセス可能な形で接続されている構成が用いられる場合が多い。この構成では、同一のメモリに対して複数のマスタデバイス（ＣＰＵ、ハードＩＰ）がアクセスするので、メモリに対するアクセスが競合する。そのため、複数のマスタデバイスからアクセスされた場合にそれを受け付けるスレーブデバイスへアクセスを調停するアービタにより、バス上のデータ転送は制御されている。従って、このアービタの制御の方法に従い、各マスタデバイスのアクセス速度が状況により変化する。また、メモリとして、例えば、ＳＲＡＭとＤＲＡＭと異なる種類で速度の異なるデバイスが同一バス上に接続されている構成も用いられる。
【０００４】
このようなＳＯＣの構成は、各種デジタル情報機器に要求されるオリジナルな高機能を低コストで満たすべく、チップごとに独自のバス／スイッチとＣＰＵとハードウェアＩＰの組合せによる独自のアーキテクチャにより設計される事が多い。
【０００５】
また一方で、デジタル情報機器で利用されるソフトウェアは相対的に複雑になってきており、プログラムを同時に独立に実行し、プログラム間で通信を行い制御する、マルチタスクで利用できるオペレーティングシステム（ＯＳ）を利用することが多くなってきている。
【０００６】
上記のＯＳにおいて実行される複数のタスクは、そこに必要とされる優先順位が異なる事が多い。例えば、システム全体を監視して基礎的な制御を行なうカーネルタスクや、大量のＣＰＵパワーを利用し実時間で処理が必要とされる画像処理のタスクなどは、実行中の優先度が高い場合があり、一方で、低速な入出力デバイスに接続されてデータを待つようなタスクの場合には、実行中の優先度が低い場合もある。
【０００７】
又、従来例としては、例えば特許文献１と特許文献２をあげることが出来る。
【特許文献１】特開2001-117861号公報
【特許文献２】特開2002-304167号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来の方法には以下の課題があった。
【０００９】
上記のシステムオンチップ（ＳＯＣ）においては、バスのアービタの動作により、ハードウェアとしてはデータのアクセス速度に優先順位を付ける事ができ、メモリに対するアクセスが競合した場合に、高い優先順位を与えられたデバイスがより高速にメモリにアクセスする事ができる。また、メモリの種類の違いにより、ＳＲＡＭのような高速なメモリをアクセスすることでも、アクセスするデバイスはより高速動作を選択する事ができる。
【００１０】
このようにＳＯＣにおいてはハードウェアの機能として、特定のメモリアクセス条件での高速動作を選択する機能を有している。にも関わらず、ＯＳにおけるメモリ管理（やタスク管理）においては、一般にハードウェアの高速動作を明示的に指示し活用する機能を有していない。上記の例によれば、優先度が高く通常は高速に動作して欲しいタスクがあったとしても、ＯＳはタスクに対し論理状態としてのプライオリティを設定する機構、すなわちＯＳ内でのタスク間のソフトウェア的な優先順位を有しているのみであり、上記ＳＯＣのハードウェア機構を積極的に利用して同一コードのソフト処理において所要クロック数を操作し高速化を選択できるアプリケーションタスクの開発は行なわれていなかった。これは、一般にはＯＳの目的は各ハードウェアごとの違いを吸収して統一的な利用法を提供する目的で設計され、かつ異なるハードウェアへの実装が容易に可能なようにできるだけ一般的なハードウエア構成を想定し開発される為、上記のような特定の構成のメモリアクセス機能を操作する事による速度向上は想定していないからであった。
【００１１】
すなわち、近年のハードウェア構成においては、製品の目的毎の最適化の為に、各ＳＯＣが独自アーキテクチャで設計されるようになり、その結果アーキテクチャに依存した高速化手段が選択できるにもかかわらず、ＯＳのメモリ管理機構が汎用的なため、ハードウェア構成に見合った十分なパフォーマンスが発揮できていないという課題があった。
【課題を解決するための手段】
【００１２】
本発明は、上述の課題を解決するために、以下の構成であることを特徴とする。
【００１３】
プロセッサと、
メモリと、
機能回路モジュールと、
上記全てを互いに接続するバスと、
上記メモリへの競合アクセス時における上記バス上のマスタデバイス優先度を指定するアービタ制御用のレジスタを有する構成のシステムＬＳＩ上で用いられるマルチタスクＯＳであり、
上記ＯＳはタスクの属性としてマスタデバイス管理属性を有し、
上記ＯＳはタスク遷移の際に上記属性を参照して上記レジスタ内容を変更する制御手段を有する、
ことを特徴とするマルチタスクＯＳ。
【発明の効果】
【００１４】
以上説明したように、本発明により得られる効果として、以下が挙げられる。近年のＳＯＣ設計の柔軟性から、ハードウェアの機能として、特定のメモリアクセス条件での特権的な高速動作を選択する機能が構成可能になっている。そこでＯＳにおける機能として、ソフトウェア上でのタスク優先度切替えだけでなく、タスク管理においてハードウェア固有の高速動作を明示的に指示し活用する機能を持たせる事により、特定の処理に関して選択的にバスのアクセス高速化ができるアプリケーションタスクの開発が可能となる。
【００１５】
また、ＯＳのタスク属性にハードウェア構成に依存した高速動作フラグの属性を持たせ、異なるハードウェア上ではＯＳカーネルの実装部分でこれを無視する構成にすることで、ＯＳ上のソフトウェア動作の移植性を保ちながら上記の高速化を利用できる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の好適な実施例の一例を挙げてその原理を説明する。以下は、本発明の原理に基づく実施形態を例示しまた理解を助ける為に説明を行ったものであり、本発明の適用範囲が必ずしもこの実施例の詳細によって限定されるものではない。
【００１７】
図１は本発明の基本概念の要約を示す図である。図１に示す通り、プロセッサと、メモリと、機能回路モジュールと、上記全てを互いに接続するバスとによりシステムＬＳＩが構成されており、プロセッサ上で動作するマルチタスクＯＳはバスの調停制御にアクセス可能であり、各タスクにはマスタデバイス管理属性の優先順位属性が有り、ＯＳはタスク遷移の際に上記属性を参照して上記レジスタを変更する制御を行う。以下に各構成を更に説明する。
【００１８】
図２はＳＯＣのシステムにおいて複数のマスタデバイスが競合してメモリにアクセスする場合に、ハードシステムに明示的に優先アクセスを伝達する方法を示している。図２において、１００はバスであり、１０５はバスへのアクセスを調停するアービタであり、４００はメモリコントローラであり、５００はプロセッサであり、６００、６１０はそれぞれデータ処理モジュールＡとＢである。アービタ１０５はバス１００を構成する部品である。１０００はこれらの構成部品により構成されるシステムＬＳＩである。システムＬＳＩの外部に、メモリ７００が接続され、これは１０００の内部のメモリコントローラ４００に対して接続される。
【００１９】
また、システムＬＳＩ１０００の内部の各構成要素は、対応するレジスタを持っている。１０２はバス設定レジスタであり、４０２はメモリ設定レジスタであり、６０２、６１２はそれぞれデータ処理モジュール設定レジスタである。これらの設定レジスタはメモリ空間にマッピングされ、ＣＰＵからアクセスできるようにになっている。図３はシステムＬＳＩ１０００の内部の各構成要素が持つレジスタおよびメモリ７００がＣＰＵからアクセスされるアドレス空間の論理的な図である。１０３、４０３、６０３、６１３、７０３はそれぞれレジスタ１０２、４０２、６０２、６１２、およびメモリ７００をＣＰＵがアクセスする時のアドレスに対応している。アドレス４０３、６０３、６１３の各々にアクセスする事で、対応するモジュールの制御と設定を行なうことができる。
【００２０】
ここで、本実施例では、バスアービタの設定レジスタ１０２を示すアドレス１０３へのアクセスで、ＣＰＵからバスへのアービタの優先順位の設定を行なうことができる。図４はレジスタ１０２への設定を示したものである。ここで、レジスタ１０２の各ビットはバス１００における優先利用を指定するマスタデバイスを示しており、図ではビット０がＣＰＵを、ビット１がデータ処理モジュールＡを、ビット２がデータ処理モジュールＢを示している。
【００２１】
ここで、指定されたビットに１を書き込む事で、アービタは対応するマスタデバイスのアクセスの優先順位を上げるようにする。
【００２２】
例えば、ＣＰＵのソフトウェアは、アドレス１０３のビット０を１にする事で、バスのアービタにＣＰＵからのアクセスの優先順位を上げることを伝えることができる。
【００２３】
このようにして、ＣＰＵ上のソフトウェアは、動作中にハードウェア構成に対して、各マスタデバイスのアクセスの優先順位の変更を伝える事ができる。
【００２４】
また図５においては、図２のシステムのＣＰＵ上に実装されたソフトウェアであるマルチタスクＯＳがどのように動作しているかを示した図である。
【００２５】
尚ここで、上記の図２における各部品は、ＳＯＣ内でハードウェア回路として存在する物理的な実体に相当するブロックと結線等を表しており、一方で図５の５０、５１、等は、図２のプロセッサ５００上で動作するソフトウェア上の論理的な部品（実際には動作状態）と制御の遷移を表している。
【００２６】
図５に示す通り、５０、５１、．．．、はタスクであり、各タスクは論理的にはある期間中に同時に実行可能であるが、ある瞬間においては、ＣＰＵが一つの場合には一つのタスクが実行状態となり実行される。図では実行可能状態６０と実行状態６１、待ち状態６２へ遷移する各タスクを表している。一般には、各タスクは以下の遷移に従い、見かけ上ある期間中に同時実行される。まずタスクは実行可能状態６０に入り、現在実行中のタスクが待ち状態６２に入る事を待つ。ＯＳのスケジューラがタスクの属性と状態に従い次に実行する予定のタスクを選択する。現在の実行状態６１にあるタスクが、例えば装置の外部入力データを待つというような、アプリケーション制御や、他のタスクからの同期制御などに応じて待ち状態６２に遷移する。その後、実行可能状態６０のうちの次に実行する予定のタスクが実行状態６１に遷移する。待ち状態６２にあるタスクは実行状態６１のタスクや割り込み等が与えた同期制御により再び実行可能状態６０に遷移し、実行状態になる事を待つ。基本的にはこのようにしてマルチタスク制御が行われる。ここで、実行可能状態６０にある複数のタスクのうちの次に実行状態６１に遷移するタスクのスケジューリングに関して各種の方法があるが、組み込みＯＳにおいては、各タスクに優先順位が属性として与えられており、実行可能状態６０にあるタスクのうちの最も優先順位が高いタスクが実行状態６１に遷移するという方法が良く用いられる。最も優先順位の高いタスクが複数あった場合には、実行可能状態６０に最も古くに遷移してきたタスクを実行状態６１に遷移させる。このようにしてマルチタスクが実行される。
【００２７】
さて、本実施例においては、各タスクにはソフトウェアカーネルが制御を行なうための論理状態であるソフトプライオリティが属性として与えられており、またハードウェアに特別な指示を行なうハードプライオリティの属性が与えられている。ソフトプライオリティは上記のタスクスケジューリングに利用される。ハードプライオリティは実行タスク毎の属性であり、実行中のタスクにおける固有のハード構成への動作情報を与える為に使われる。ＯＳがタスクスイッチを行なうと、カーネルはレディーキューにある次に実行するタスクのハードプライオリティを読取り、この値に応じて上記のアービタのスケジューリングを制御するレジスタ１０２を設定する。
【００２８】
本実施例では、ハードプライオリティとして、マスタデバイス管理属性を有する。ここでは32bitの設定がある。ＯＳは、タスクスイッチが生じた際にこのハードプライオリティに変化がある場合に上記レジスタ１０２を書き換える。バス１００はこの設定に従ってＣＰＵやそのタスクで関係するとされるモジュールを優先させて動作する。
【００２９】
上記の機能を利用する例として、特定のハードウェア機能モジュール群を用いる処理をあるタスクに割当てて、一連の画像処理などの処理を行う。このタスクで使用するデバイスに対してマスタデバイス管理属性で優先度を上げるようにする。このタスクが実行状態になったときには関連する機能モジュールのアクセスが高速化されるので、一連の処理全体が高速化される。
【００３０】
このようにして、ＯＳが高速化したい特別なタスクに関して、ハードの機能を利用して高速化が可能となる。なお、この場合にもしハードウェアに上記のようなアクセスのプライオリティを上げる機能が無い場合は、上記の機能は無効となるが、ソフトウェアの観点からのスケジューリングに矛盾は生じないので、単に上記実施例のような最適なハードに適用された場合と比較して、パフォーマンスが低下するだけであり、上記ＯＳ上で記述されたアプリケーションの移植性は保たれる。従って、アプリケーション開発者は本ＯＳ上でのアプリケーション記述により、容易にハードに最適化してパフォーマンスを引き出すことができ、かつ移植性の高いソフトウェアを記述する事ができる。
【図面の簡単な説明】
【００３１】
【図１】本発明の基本概念の要約を示す図である。
【図２】ＳＯＣのシステムにおいて複数のマスタデバイスが競合してメモリにアクセスする場合に、ハードシステムに明示的に優先アクセスを伝達する方法を示す図である。
【図３】システムＬＳＩ１０００の内部の各構成要素が持つレジスタおよびメモリ７００がＣＰＵからアクセスされるアドレス空間の論理的な図である。
【図４】レジスタ１０２への設定を示す図である。
【図５】図２のシステムのＣＰＵ上に実装されたソフトウェアであるマルチタスクＯＳがどのように動作しているかを示した図である。
【図１】
2007026367.tif 000003
【図２】
2007026367.tif 000004
【図３】
2007026367.tif 000005
【図４】
2007026367.tif 000006
【図５】
2007026367.tif 000007