(57)【要約】  本発明は、ＭＰＵとＤＳＰの双方を備えた電子機器、および、ＭＰＵとＤＳＰの双方を備えた電子機器内で実行されてＭＰＵとＤＳＰに負荷を分散させる負荷分散プログラムに関し、新たなハードウェアを追加する必要がなく、かつ電力消費をできるだけ抑えつつ処理能力を高めることを目的とし、ＤＳＰでの処理用にコーディングされて搭載されているＤＳＰ用アプリケーションのうちの今から実行すべきＤＳＰ用アプリケーションと、クロック生成部から現在出力されているクロックの周波数とに基づいて、ＤＳＰの負荷を予測し、予測された負荷に応じて、今から実行すべきＤＳＰ用アプリケーションの一部の処理をＭＰＵに振り分けてその一部の処理をＭＰＵに実行させる。
2008117369.tif 000002
【特許請求の範囲】
【請求項１】
状態に応じた周波数のクロックを生成して出力するクロック生成部と、
前記クロック生成部で生成されたクロックの供給を受けて、該クロックに同期した処理速度で処理を実行するＭＰＵおよびＤＳＰと、
ＤＳＰでの処理用にコーディングされて搭載されているＤＳＰ用アプリケーションのうちの今から実行すべきＤＳＰ用アプリケーションと前記クロック生成部から現在出力されているクロックの周波数とに基づいて、ＤＳＰの負荷を予測する負荷予測部と、
前記負荷予測部で予測された負荷に応じて、今から実行すべきＤＳＰ用アプリケーションの一部の処理をＭＰＵに振り分けて該ＭＰＵに実行させる負荷振分部とを備えたことを特徴とする電子機器。
【請求項２】
ＭＰＵにＤＳＰ用アプリケーションを実行させるエミュレータを有し、
前記ＭＰＵは、前記エミュレータの下で、前記負荷振分部により振り分けられてなる一部のＤＳＰ用アプリケーションを実行するものであることを特徴とする請求項１記載の電子機器。
【請求項３】
当該電子機器が、電源投入操作後の起動中と電源切断操作後の停止中とからなるアイドル状態と、待受状態と、通話状態との３つの状態を有する携帯電話機であって、
前記クロック生成部は、前記待受状態および前記通話状態で、それぞれ、相対的に低い周波数のクロックおよび相対的に高い周波数のクロックを生成して出力するものであることを特徴とする請求項１又は２記載の電子機器。
【請求項４】
１つのＤＳＰ用アプリケーションが１つ以上の処理で構成されたものであって、各ＤＳＰ用アプリケーションを構成する各処理ごとに負荷が定義された負荷テーブルを有し、前記負荷予測部は、該負荷テーブルと、前記クロック生成部から現在出力されているクロックの周波数とに基づいて、ＤＳＰの負荷を予測するものであることを特徴とする請求項１又は２記載の電子機器。
【請求項５】
前記クロック生成部から出力されるクロックの周波数が同一の周波数に停まる１つの状態が負荷に応じて更に複数のサブ状態に分けられたうちの現在のサブ状態を管理するサブ状態管理部を備え、
ＤＳＰ用アプリケーションを構成する各処理をＭＰＵに振り分けるか否かを決定する負荷しきい値が複数のサブ状態それぞれについて定義された負荷しきい値テーブルを有し、前記負荷振分部は、前記負荷予測部で予測された負荷と、現在のサブ状態と、前記負荷しきい値テーブルとに基づいて、ＭＰＵに振り分ける処理を決定するものであることを特徴とする請求項４記載の電子機器。
【請求項６】
前記負荷しきい値テーブルは、複数のＤＳＰ用アプリケーションを、これら複数のＤＳＰ用アプリケーションに跨って横断的に見たときの、該複数のＤＳＰ用アプリケーションを構成する互いに対応する複数の処理を１単位として、該１単位ごとに負荷しきい値が定義されたものであることを特徴とする請求項５記載の電子機器。
【請求項７】
状態に応じた周波数のクロックを生成して出力するクロック生成部と、前記クロック生成部で生成されたクロックの供給を受けて、該クロックに同期した処理速度で処理を実行するＭＰＵおよびＤＳＰを備えた電子機器内で実行され、該電子機器を、
ＤＳＰでの処理用にコーディングされて搭載されているＤＳＰ用アプリケーションのうちの今から実行すべきＤＳＰ用アプリケーションと前記クロック生成部から現在出力されているクロックの周波数とに基づいて、ＤＳＰの負荷を予測する負荷予測部と、
前記負荷予測部で予測された負荷に応じて、今から実行すべきＤＳＰ用アプリケーションの一部の処理をＭＰＵに振り分けて該ＭＰＵに実行させる負荷振分部とを備えた電子機器として動作させることを特徴とする負荷分散プログラム。
【請求項８】
前記電子機器を、さらに、ＭＰＵにＤＳＰ用アプリケーションを実行させるエミュレータを有し、前記ＭＰＵが、前記エミュレータの下で、前記負荷振分部により振り分けられ前記エミュレータで変換されてなる一部のＤＳＰ用アプリケーションを実行する電子機器として動作させることを特徴とする請求項７記載の負荷分散プログラム。
【請求項９】
１つのＤＳＰ用アプリケーションが１つ以上の処理で構成されたものであって、各ＤＳＰ用アプリケーションを構成する各処理ごとに負荷が定義された負荷テーブルを有し、前記負荷予測部が、該負荷テーブルと、前記クロック生成部から現在出力されているクロックの周波数とに基づいて、ＤＳＰの負荷を予測するものである電子機器として動作させることを特徴とする請求項７記載の負荷分散プログラム。
【請求項１０】
前記電子機器を、さらに、前記クロック生成部から出力されるクロックの周波数が同一の周波数に停まる１つの状態が負荷に応じて更に複数のサブ状態に分けられたうちの現在のサブ状態を管理するサブ状態管理部を備え、
ＤＳＰ用アプリケーションを構成する各処理をＭＰＵに振り分けるか否かを決定する負荷しきい値が複数のサブ状態それぞれについて定義された負荷しきい値テーブルを有し、前記負荷振分部は、前記負荷予測部で予測された負荷と、現在のサブ状態と、前記負荷しきい値テーブルとに基づいて、ＭＰＵに振り分ける処理を決定するものである電子機器として動作させることを特徴とする請求項９記載の負荷分散プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＭＰＵとＤＳＰの双方を備えた電子機器、およびＭＰＵとＤＳＰの双方を備えた電子機器内で実行されてＭＰＵとＤＳＰに負荷を分散させる負荷分散プログラムに関する。
【背景技術】
【０００２】
近年、携帯電話機等の移動機端末が急速な勢いで普及してきている。さらに近年の移動機端末は、単なる電話機能や電子メール機能等にとどまらず、マルチメディア（画像や音楽再生）やゲーム等、様々な機能が付加され、年々複雑になり処理能力の更なる向上が必要となっている。また、処理能力を向上させるという条件に重ねて、更なる小型化や、バッテリを長持ちさせるために電力消費量の少ない待ち受け時間を延長することも求められており、様々な対策が施されている。【０００３】
一般的には、上記のような移動機端末にはＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｅｒ）との双方が組み込まれており、その移動機端末で行なわれる様々な処理のうち、全体の制御はＭＰＵが担当し、ＣＯＤＥＣやマルチメディアの主要な処理部分についてはＤＳＰが担当する構成が一般的であり、ＤＳＰで処理を行なう部分についてはＤＳＰ用にコーディングされた専用のＤＳＰ用プログラムを作成しＭＰＵとは独立に設計される。【０００４】
また、待ち受け時間では、一般的に、ＭＰＵやＤＳＰに供給するクロックの周波数を低下させることにより電力消費が抑えられている。【０００５】
従来は、電話機能が主体であったため待受中か通話中かでクロックの周波数を変更すれば問題はなかったものの、近年の移動機端末では、非通話中であっても、ＤＳＰが分担しているゲームやマルチメディアなどそれのみで高負荷となるような処理を行なう必要を生じてきており、ＤＳＰの動作周波数が低下したままの状態では処理能力が不足する場合がある。この問題を解消するには、例えば専用のハードウェアを追加したり、非通話中であっても高負荷時にクロックの周波数を上げることが考えられるが、専用ハードウェアを追加するとコストアップの要因となり、また、小型化の流れにも逆行することになる。また、クロックの周波数を上げてＤＳＰの処理能力を高めると、その分電力消費量が大きくなり、バッテリの消耗が激しく再充電なしでの長時間の使用に耐えられないという新たな問題を引きおこす結果となる。【０００６】
本発明は、上記事情に鑑み、従来と比べ新たなハードウェアを追加する必要がなく、かつ電力消費をできるだけ抑えつつ処理能力を高めた電子機器、および電子機器内で実行されて、その電子機器の処理能力を引き出す負荷分散プログラムを提供することを目的とする。
【発明の開示】
【０００７】
上記目的を達成する本発明の電子機器は、
状態に応じた周波数のクロックを生成して出力するクロック生成部と、
クロック生成部で生成されたクロックの供給を受けて、そのクロックに同期した処理速度で処理を実行するＭＰＵおよびＤＳＰと、
ＤＳＰでの処理用にコーディングされて搭載されているＤＳＰ用アプリケーションのうちの今から実行すべきＤＳＰ用アプリケーションとクロック生成部から現在出力されているクロックの周波数とに基づいて、ＤＳＰの負荷を予測する負荷予測部と、
負荷予測部で予測された負荷に応じて、今から実行すべきＤＳＰ用アプリケーションの一部の処理をＭＰＵに振り分けてそのＭＰＵに実行させる負荷振分部とを備えたことを特徴とする。
【０００８】
本発明の電子機器は、上記の負荷予測部を備え、その負荷予測部で予測された負荷に応じて、本来はＤＳＰでの処理用にコーディングされたＤＳＰ用アプリケーションの一部をＭＰＵに振り分けて実行させるものであり、同じクロック周波数であれば新たなハードウェアを追加することなく従来よりも処理能力が向上し、電力消費の抑制と処理能力の向上を高い次元で両立させた電子機器が実現する。
【０００９】
ここで、本発明の電子機器において、  ＭＰＵにＤＳＰ用アプリケーションを実行させるエミュレータを有し、ＭＰＵは、そのエミュレータの下で、負荷振分部により振り分けられてなる一部のＤＳＰ用アプリケーションを実行するものであることが好ましい。
【００１０】
上記のエミュレータによりＤＳＰ用アプリケーションをＭＰＵでそのまま実行させることができ、したがってＭＰＵ用に新たなアプリケーションを開発する必要がなく、ソフトウェア開発コストや開発したソフトウェアを格納しておくメモリの容量を下げることができる。
【００１１】
また、その電子機器が、電源投入操作後の起動中と電源切断操作後の停止中とからなるアイドル状態と、待受状態と、通話状態との３つの状態を有する携帯電話機であって、上記クロック生成部は、待受状態および通話状態で、それぞれ、相対的に低い周波数のクロックおよび相対的に高い周波数のクロックを生成して出力するものであることが好ましい。
【００１２】
本発明の電子機器によればクロックの周波数を下げた状態であっても処理能力が向上するため、従来からクロックの周波数を下げていた待受状態ではクロックの周波数を下げた状態を維持することが好ましい。こうすることにより処理能力を向上させた上で電力消費が抑えられる。
【００１３】
さらに、本発明の電子機器において、１つのＤＳＰ用アプリケーションが１つ以上の処理で構成されたものであって、各ＤＳＰ用アプリケーションを構成する各処理ごとに負荷が定義された負荷テーブルを有し、上記負荷予測部は、負荷テーブルと、クロック生成部から現在出力されているクロックの周波数とに基づいて、ＤＳＰの負荷を予測するものであること。
【００１４】
このような負荷テーブルを用意しておくことにより、ＤＳＰの負荷をきめ細かにかつ適切に予測することができる。
【００１５】
さらに、本発明の電子機器において、上記クロック生成部から出力されるクロックの周波数が同一の周波数に停まる１つの状態が負荷に応じて更に複数のサブ状態に分けられたうちの現在のサブ状態を管理するサブ状態管理部を備え、
ＤＳＰ用アプリケーションを構成する各処理をＭＰＵに振り分けるか否かを決定する負荷しきい値が複数のサブ状態それぞれについて定義された負荷しきい値テーブルを有し、負荷振分部は、負荷予測部で予測された負荷と、現在のサブ状態と、負荷しきい値テーブルとに基づいて、ＭＰＵに振り分ける処理を決定するものであることも好ましい形態である。この場合に、上記負荷しきい値テーブルは、複数のＤＳＰ用アプリケーションを、これら複数のＤＳＰ用アプリケーションに跨って横断的に見たときの、それら複数のＤＳＰ用アプリケーションを構成する互いに対応する複数の処理を１単位として、その１単位ごとに負荷しきい値が定義されたものであってもよい。
【００１６】
上記のサブ状態を定義して管理する構成によれば、一層きめ細かな負荷分散を行ないクロック周波数をきめ細かく制御して処理能力の向上と電力消費の低減を一層高い次元で調和させることができる。
【００１７】
また、上記目的を達成するための本発明の負荷分散プログラムは、状態に応じた周波数のクロックを生成して出力するクロック生成部と、クロック生成部で生成されたクロックの供給を受けて、クロックに同期した処理速度で処理を実行するＭＰＵおよびＤＳＰを備えた電子機器内で実行され、その電子機器を、
ＤＳＰでの処理用にコーディングされて搭載されているＤＳＰ用アプリケーションのうちの今から実行すべきＤＳＰ用アプリケーションとクロック生成部から現在出力されているクロックの周波数とに基づいて、ＤＳＰの負荷を予測する負荷予測部と、
負荷予測部で予測された負荷に応じて、今から実行すべきＤＳＰ用アプリケーションの一部の処理をＭＰＵに振り分けてそのＭＰＵに実行させる負荷振分部とを備えた電子機器として動作させることを特徴とする。
【００１８】
ここで、本発明の負荷分散プログラムは、上記の電子機器を、さらに、ＭＰＵにＤＳＰ用アプリケーションを実行させるエミュレータを有し、ＭＰＵが、そのエミュレータの下で、負荷振分部により振り分けられエミュレータで変換されてなる一部のＤＳＰ用アプリケーションを実行する電子機器として動作させるプログラムであることが好ましい。
【００１９】
また、本発明の負荷分散プログラムが、１つのＤＳＰ用アプリケーションが１つ以上の処理で構成されたものであって、各ＤＳＰ用アプリケーションを構成する各処理ごとに負荷が定義された負荷テーブルを有し、負荷予測部が、負荷テーブルと、クロック生成部から現在出力されているクロックの周波数とに基づいて、ＤＳＰの負荷を予測するものである電子機器として動作させるものであってもよい。
【００２０】
さらに、本発明の負荷分散プログラムが、上記電子機器を、さらに、クロック生成部から出力されるクロックの周波数が同一の周波数に停まる１つの状態が負荷に応じて更に複数のサブ状態に分けられたうちの現在のサブ状態を管理するサブ状態管理部を備え、
ＤＳＰ用アプリケーションを構成する各処理をＭＰＵに振り分けるか否かを決定する負荷しきい値が複数のサブ状態それぞれについて定義された負荷しきい値テーブルを有し、負荷振分部は、負荷予測部で予測された負荷と、現在のサブ状態と、負荷しきい値テーブルとに基づいて、ＭＰＵに振り分ける処理を決定するものである電子機器として動作させることも好ましい態様である。
【図面の簡単な説明】
【００２１】
【図１】本発明の電子機器の一例としての移動機端末のハードウェア（ＨＷ）／ソフトウェア（ＳＷ）構成図である。
【図２】ＤＳＰで行なうべき処理を示す図である。
【図３】図１に示す移動機端末の状態遷移図である。
【図４】ステートモニタにより行なわれる負荷判定フローを示す図である。
【図５】クロックの分周／分配部分の回路図である。
【図６】フラグレジスタコントローラの内部構成図である。
【図７】ＤＳＰ用の処理の流れを概念的に示したフロー図である。
【図８】第２実施形態における、ＭＰＵとＤＳＰの双方の処理を示す図である。
【図９】第２実施形態における、フラグレジスタコントローラの内部構成図である。
【図１０】ステートモニタで管理されているメインステートの状態遷移図である。
【図１１】ステートモニタで管理されているサブステートの状態遷移図である。
【図１２】アプリケーション起動時に演算器で行なわれる演算処理を示す図である。
【図１３】ステートモニタで管理されているメインステートの状態遷移図である。
【図１４】メインステートが遷移したときに、演算器で行なわれる演算処理を示した図である。
【図１５】図９に１つのブロックで示すｆｌａｇ１＿ｌｉｍ用のレジスタの詳細構成図である。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施形態について説明する。【００２３】
図１は、本発明の電子機器の一例としての移動機端末のハードウェア（ＨＷ）／ソフトウェア（ＳＷ）構成図である。【００２４】
移動機端末には、一般に、ここに示したＨＷ／ＳＷ以外にもその移動機端末の種類や仕様などに応じた様々なＨＷ／ＳＷが搭載されているが、ここではそれらの様々なＨＷ／ＳＷの図示および説明は省略し、本発明の実施形態としての特徴の説明に必要なＨＷ／ＳＷのみ図示し、以下において説明する。【００２５】
図１に示す移動機端末１０は、ハードウェア上、演算機能を有する要素としてＭＰＵ１１とＤＳＰ１２との双方が備えられており、その他のハードウエア上の要素として、図１には、フラグレジスタコントローラ１３、クロック／パワーコントローラ１４、メモリ１５、バス１６が示されている。【００２６】
フラグレジスタコントローラ１３は、ＭＰＵ１１とＤＳＰ１２との間での負荷分散のために必要となるフラグを管理する要素であり、クロック／パワーコントローラ１４は、クロックの生成や周波数の切替え、およびパワーのオン、オフを制御する要素である。メモリ１５は、プログラムが、ＭＰＵ１１やＤＳＰ１２での実行のためにコピーされるメモリである。尚、プログラムを格納しておくための記憶装置は、ここでの図示は省略されている。あるいは、以下に説明するソフトウェア（ＳＷ）の全領域が１つの記憶装置の内部であると考えてもよい。【００２７】
また、図１に示す移動機端末１０には、ソフトウェア上は、ＯＳ（オペレーティングシステム）２１、ＤＳＰ仮想マシンウェア２２、クロックパワーマネージャ２３、ステートモニタ２４、ドライバ２５、ミドルウェア２６、およびアプリケーション２７が示されている。このアプリケーション２７には、ＤＳＰ用のプログラムも含まれている。【００２８】
ＤＳＰ仮想マシンウェア２２は、ＭＰＵ１１で実行されて、そのＭＰＵ１１にＤＳＰ１２と同じ動作をさせるエミュレータであり、本実施形態では、このＤＳＰ仮想マシンウェア２２が組み込まれていることから、本来はＤＳＰ１２での実行用にコーディングされたＤＳＰ用プログラムを、ＭＰＵ１１で、そのＤＳＰ仮想マシンウェア２２の下で、そのまま実行させることができる。したがって、本実施形態では、ＤＳＰ用プログラムをＤＳＰ１２で実行させるのと同等の動作をＭＰＵ１１で実行させるための新たなＭＰＵ用プログラムを用意する必要はない。【００２９】
また、クロックパワーマネージャ２３は、ハードウェア上はクロック／パワーコントローラ１４で行なわれるクロックの周波数やパワーのオン、オフを制御する役割りを担っている。【００３０】
またステートモニタ２４は、この移動機端末１０の現在の状態（ステート）を管理している。【００３１】
また、ドライバ２５は、クロック／パワーマネージャ２３からの指示を受けてクロック／パワーコントローラ１４に指示を与える役割りを担っている。【００３２】
これらの各種プログラムの上位にはミドルウェア２６が存在し、さらに、その上位には、各種のアプリケーション２７が存在している。【００３３】
このアプリケーション２７のうち、ＤＳＰ用アプリケーションは、図１に矢印で示すように、ＤＳＰ１２で実行させるときはそのままＤＳＰ１２で実行され、ＭＰＵ１１で実行させるときは、上述したとおり、ＤＳＰ仮想マシンウェア２２の下でＭＰＵ１１で実行される。【００３４】
ここで、ＤＳＰ１２で行なわれる処理の概要について説明する。【００３５】
図２は、ＤＳＰで行なうべき処理を示す図である。【００３６】
ここでは、先ず、図１に示すメモリ１５にＤＳＰで行なわれるべき５つの処理Ａ〜Ｅが実行のためにコピーされる。その後、ＤＳＰ１２では処理Ａ〜処理Ｅが実行されるが、処理Ａと処理Ｃは、この順にシーケンシャルに行なう必要がある処理であり、これと同様に、処理Ｂと処理Ｄは、この順にシーケンシャルに行なう必要がある処理である。ただし、処理Ｂ，Ｄは、処理Ａ，Ｃとは独立に実行することができる処理である。処理Ｅは、処理Ａ〜Ｄの全てが終了した後、それらの処理Ａ〜Ｄの処理結果を踏まえて実行する処理である。【００３７】
尚、この図２に示す５つの処理Ａ〜Ｅは、処理実行の順番を示した図であって、各処理Ａ〜Ｅは、それぞれ別々なプログラムであり、それぞれが独立して起動されて実行される。【００３８】
本実施形態では、これら５つの処理のうち、処理Ａと処理Ｃが、負荷分散の対象となる処理である。【００３９】
図３は、図１に示す移動機端末の状態（ステート）遷移図である。【００４０】
この移動機端末１０には、アイドル（起動中）と、待受中と、通話中との３つの状態（ステート）が存在する。アイドル（起動中）は、電源投入操作が行なわれた後の起動中（電源切断操作後の停止中を含む）の状態であり、待受中は電源が入った状態であって、かつ通話されていない状態であり、通話中は、通話している状態である。これら３つの状態のうち、現在どの状態にあるかは、図１に示すステートモニタ２４で管理されている。【００４１】
表１は、図３に示す３つの状態と負荷を予測するための状態係数との対応テーブルである。この表１は、ステートモニタ２４に格納されている。【００４２】
【表１】
2008117369.tif 000003
【００４３】
アイドル（起動中）の状態では、ＤＳＰで実質的な処理が行なわれることはなく、負荷は常にゼロであるため、状態係数は「０」に設定されている。また、待受中の状態では、後述するように、通話中の状態と比べクロックの周波数が１／２に分周されているため、同一の処理を実行する場合には負荷は２倍となり、したがって、ここでは状態係数は「２」に設定されている。通話中の状態では、クロックの周波数は待受中の２倍の周波数なので、同一の処理を実行する場合の負荷は待受中の１／２であり、したがってここでは、係数は「１」に設定されている。【００４４】
表２は、図２に示す各処理との負荷を予測するための処理係数との対応テーブルである。この表２も、表１と同じくステートモニタ２４に格納されている。【００４５】
【表２】
2008117369.tif 000004
【００４６】
図４は、ステートモニタ２４により行なわれる負荷判定フローを示す図である。【００４７】
この図４に示す負荷判定フローは、ＤＳＰで実行されるべき処理（ここに示す例では、図２に示す処理Ａ〜Ｅのいずれか）が起動される時点（ｃａｌｌ）、および実行中の処理が終了した時点（ｒｅｔ）で実行される。【００４８】
この図４に示す負荷判定フローの実行が開始されると、先ずは、ステップＳ１１において負荷情報の更新が行なわれる。ここでは、この負荷情報は、以下の式に従って更新される。
起動時：負荷情報（更新後）＝負荷情報（更新前）＋処理係数×状態係数
終了時：負荷情報（更新後）＝負荷情報（更新前）−処理係数×状態係数
例えば、待受中の状態にあって、図２に示す処理Ａ〜Ｅのいずれも実行されていない初期状態では、負荷情報（更新前）は「０」であり、この状態にあるときに処理Ａが起動されると、
負荷情報（処理Ａの起動）＝０＋３×２＝５
ここで「３」は、表２中の処理Ａに対応づけられた処理係数、「２」は表１の待受中の状態に対応づけられた状態係数である。【００４９】
次に処理Ａの実行中に処理Ｂが起動されたものとする。このときは、負荷情報は以下のように変化する。【００５０】
負荷情報（処理Ａ実行中、処理Ｂ起動）＝５＋２×２＝９
さらに、処理Ａの実行が終了したものとすると、負荷情報は以下のように変化する。【００５１】
負荷情報（処理Ｂ実行中、処理Ａ終了）＝９−３×２＝５
図４に示す負荷判定フローのステップＳ１１では、以上のような演算が行なわれて負荷情報が更新される。【００５２】
次に、図４のステップＳ１２では、その更新後の負荷情報があらかじめ定めておいた所定の閾値と比較され、負荷情報の方が大きいときはフラグｓｔａｔｅが高負荷に設定され（ステップＳ１３）、負荷情報が閾値を越えていないときはフラグｓｔａｔｅが低負荷に設定される（ステップＳ１４）。【００５３】
図５は、クロックの分周／分配部分の回路図である。【００５４】
クロック／パワーコントローラ１４のクロック生成回路１４１では、通話中の状態に適合した周波数のクロックが生成され、直接にマルチプレクサ１４３に入力されるとともに１／２分周回路１４２にも入力される。１／２分周回路１４２は、入力されてきたクロックの周波数を１／２に分周して、待受中の状態における周波数のクロックを生成する。この１／２分周回路１４２で分周されたクロックもマルチプレクサ１４３に入力される。【００５５】
一方、クロック／パワーマネージャ２３は、ステートモニタ２４から現在の状態（図３に示す３つの状態（実質的には待受中の状態か通話中の状態かのいずれか）の情報を取得し、その情報に従って、図２に示すドライバ２５を介して（図５では図示省略）、マルチプレクサ１４３から、待受中の状態にあるときは１／２分周回路１４で分周されたクロックが出力され、通話中の状態にあるときはクロック生成回路１４１から直接にマルチプレクサ１４３に入力されてきたクロックが出力されるように、マルチプレクサ１４３を制御する。また、ステートモニタ２４は、図４を参照して説明した制御フローの実行の結果得られたフラグｓｔａｔｅが高負荷に設定されているか低負荷に設定されているかの情報をフラグレジスタコントローラ１３に渡す。フラグレジスタコントローラ１３は、このフラグｓｔａｔｅの状態に応じて、低負荷のときは、図２に示す処理Ａ〜Ｅの全てがＤＳＰ１２で実行され、高負荷のときは、処理Ａ，ＣはＭＰＵ１１で実行されるとともに残りの処理Ｂ，Ｄ，ＥはＤＳＰ１２で実行されるように負荷が分散される。【００５６】
図６は、フラグレジスタコントローラの内部構成図である。【００５７】
ここには、常にフラグの状態が‘１’に設定された２つのレジスタ１３１，１３２が備えられており、フラグレジスタ１３１からの出力‘１’は、２つのマルチプレクサ１３５，１３６に直接に入力されるとともにインバータ１３３により反転した値‘０’が生成されてそれら２つのマルチプレクサ１３５，１３６に入力される。また、これと同様に、フラグレジスタ１３２からの出力‘１’は、２つのマルチプレクサ１３７，１３８に直接に入力されるとともにインバータ１３４により反転した値‘０’が生成されて、それら２つのマルチプレクサ１３７，１３８に入力される。これら４つのマルチプレクサ１３５，１３６，１３７，１３８は、ステートモニタ２４で求められたフラグｓｔａｔｅの状態（高負荷又は低負荷）により、それぞれの２つの入力のうちのいずれか一方が出力されるように切り替えられる。【００５８】
表３は、フラグｓｔａｔｅの状態に応じてＭＰＵ側およびＤＳＰ側に読み出される値を示したテーブルである。【００５９】
【表３】
2008117369.tif 000005
【００６０】
フラグｓｔａｔｅが高負荷を示しているときは、マルチプレクサ１３６，１３８を経由してＭＰＵ側にそれぞれ‘０’，‘１’が出力されるとともに、ＤＳＰ側には、マルチプレクサ１３５，１３７を経由して、それぞれ‘１’，‘０’が出力される。また、フラグｓｔａｔｅが低負荷を示しているときは、ＭＰＵ側には、マルチプレクサ１３６，１３８を経由してそれぞれ‘１’，‘１’が出力され、ＤＳＰ側には、マルチプレクサ１３５，１３７を経由して、それぞれ‘０’，‘０’が出力される。ＤＳＰ側の２つのマルチプレクサ１３５，１３７の出力は、もう１つのマルチプレクサ１４１に入力され、ＭＰＵ側の２つのマルチプレクサ１３６，１３８はもう１つのマルチプレクサ１４２に入力される。【００６１】
ＤＳＰ側のマルチプレクサ１４１およびＭＰＵ側のマルチプレクサ１４２は、それぞれ、ＤＳＰ側のアドレスデコーダ１３９、ＭＰＵ側のアドレスデコーダ１４０により、実行しようとしている処理が処理Ａ又は処理Ｃに属するときはマルチプレクサ１３５，１３６の出力が出力され、他の処理Ｂ，Ｄ，Ｅに属するときはマルチプレクサ１３７，１３８の出力が出力されるように、制御される。【００６２】
それらの、ＤＳＰ側のマルチプレクサ１４１、ＭＰＵ側のマルチプレクサ１４２の各出力は、それぞれＤＳＰのデータパス、ＭＰＵのデータパスに送られメモリ１５から読み出されるデータ（プログラム）の流れが制御される。【００６３】
図７は、ＤＳＰ用の処理の流れを概念的に示したフロー図である。この図７には、ＭＰＵとＤＳＰの双方での処理が示されている。【００６４】
図２の場合と同様、ＤＳＰ用プログラムがメモリ１５に実行用にコピーされ、その後２つのフラグが判定される。【００６５】
ここでは、先ずＭＰＵについて着目する。【００６６】
前掲の表３に示すように、高負荷時は、ＭＰＵ側では、２つのフラグｍｐｕ＿ｆｌａｇ１，ｍｐｕ＿ｆｌａｇ２はそれぞれ‘０’，‘１’であり、これを図７のフローにあてはめると、ｍｐｕ＿ｆｌａｇ１が‘０’であるため、ＭＰＵでは処理Ａと処理Ｃが実行されてその処理結果がメモリ１５の格納領域Ａに格納される。一方、ＭＰＵ側では、高負荷時のもう一方のフラグｍｐｕ＿ｆｌａｇ２は‘１’なので、ＭＰＵでは処理Ｂ，Ｄ，Ｅは実行されない。【００６７】
一方、低負荷時は、ＭＰＵ側では、２つのフラグｍｐｕ＿ｆｌａｇ１，ｍｐｕ＿ｆｌａｇ２のいずれも‘１’であり、図７に示すように、ＭＰＵでは、いずれの処理も実行されない。【００６８】
次にＤＳＰについて着目する。【００６９】
ＤＳＰ側では、高負荷時は、２つのｍｐｕ＿ｆｌａｇ１，ｍｐｕ＿ｆｌａｇ２はそれぞれ‘１’，‘０’であり、図７に示すように処理Ａと処理ＣはＤＳＰでは実行されず、処理Ｂと処理Ｄが実行されてその処理結果がメモリ１５の格納領域Ｂに格納される。ＤＳＰではさらに、メモリ１５の格納領域Ｂに格納された処理結果と、ＭＰＵで実行されてメモリ１５の格納領域Ａに格納された処理Ａ、処理Ｃの処理結果との双方が利用されて処理Ｅが実行される。【００７０】
一方、低負荷時は、ＤＳＰ側では、２つのフラグｍｐｕ＿ｆｌａｇ１，ｍｐｕ＿ｆｌａｇ２の双方とも‘０’であり、処理Ａ〜Ｅの全てがＤＳＰで実行される。【００７１】
このように、ここに示す実施形態ではその時点その時点で予測される負荷に応じて、処理Ａ，Ｃが、低負荷のときはＤＳＰで実行され、高負荷のときはＭＰＵで実行されて負荷が分散される。【００７２】
次に本発明の第２実施形態について説明する。ハードウェアおよびソフトウェアの、図１に示すレベルにおける基本構成は同じであり、ここでは、その基本構成の重複説明については省略する。また、ここでは、上述の実施形態の説明を踏まえ、理解の容易のために、上述の実施形態における説明の流れとは異なる流れで説明する。【００７３】
図８は、第２実施形態における、ＭＰＵとＤＳＰの双方の処理を示す図である。この図８は、前述の実施形態の図７に相当する図である。【００７４】
前述の実施形態の場合と同様、処理Ａと処理Ｃはこの順にシーケンシャルに実行され、処理Ｂと処理Ｄはこの順にシーケンシャルに実行されるが、処理Ａおよび処理Ｃと、処理Ｂおよび処理Ｄは互いに独立に並列処理が可能である。また処理Ｅは、処理Ａ〜Ｄの実行を待って、それらの処理Ａ〜Ｄの処理結果が参照されて実行される処理である。【００７５】
ここでは、ＭＰＵ側とＤＳＰ側の双方にそれぞれ５つのフラグ、すなわち、ｆｌａｇ１，ｆｌａｇ２，ｆｌａｇ３，ｆｌａｇ４，ｆｌａｇ５が出力され、それらのフラグの値（‘１’又は‘０’）に応じてフラグの値が‘１’のときにはそのフラグに対応する処理が実行され、フラグの値が‘０’のときにはそのフラグに対応する処理は実行されない。【００７６】
図９は、第２実施形態における、フラグレジスタコントローラの内部構成図である。この図９は前述の実施形態における図６に対応している。【００７７】
ステートモニタ２４では、カウンタ３１を使いながら、以下に示す状態（ステート）が管理される。【００７８】
図１０は、ステートモニタ２４で管理されているメインステートの状態遷移図である。【００７９】
ここで説明している第２実施形態では、クロックの周波数が変更されるメインステートと、クロックの周波数は同一の周波数にとどまるサブステートとの２段階のステート（状態）が管理されており、この図１３は、これらメインステートとサブステートのうちのメインステートの状態遷移図である。【００８０】
また、以下の表４は、メインステートとクロックの分周比との対応テーブルである。【００８１】
【表４】
2008117369.tif 000006
【００８２】
ここでは、図１０および表４に示すように、メインステートはｃｌｋｄｉｖ１と、ｃｌｋｄｉｖ２と、ｃｌｋｄｉｖ４との３つの状態が存在し、ｃｌｋｄｉｖ１は分周比は１であり、最も周波数の高いクロックで動作する状態である。また、ｃｌｋｄｉｖ２は、分周比は２であり、ｃｌｋｄｉｖ１と比べ半分の周波数で動作する状態である。さらに、ｃｌｋｄｉｖ４は、分周比は４であり、ｃｌｋｄｉｖ２と比べさらに半分（ｃｌｋｄｉｖ１と比べると１／４）の周波数で動作する状態である。【００８３】
ｃｌｋｄｉｖ１からｃｌｋｄｉｖ２へは、ｃｌｋｄｉｖ１に留まっている状態において、さらに後述する図１１に示すｓｔａｔｅ１に所定時間留まると遷移し、ｃｌｋｄｉｖ２からｃｌｋｄｉｖ４へは、ｃｌｋｄｉｖ２に留まっていて、かつ図１１に示すｓｔａｔｅ１に所定時間留まると遷移する。また、ｃｌｋｄｉｖ４からｃｌｋｄｉｖ２へは、ｃｌｋｄｉｖ４にあって、かつ図１１に示すｓｔａｔｅ４に所定時間留まると遷移し、ｃｌｋｄｉｖ２からｃｌｋｄｉｖ１へは、ｃｌｋｄｉｖ２にあるときに、図１１に示すｓｔａｔｅ４に所定時間留まると遷移する。これらの所定時間は、図９に示すカウンタ３１で計測される。【００８４】
尚、この第２実施形態では、前述の実施形態における図５に相当する図は省略している。これは、図５において１／２分周回路１４２と並列に１／４分周回路を備え、マルチプレクサ１４３ではクロック生成回路１４１から直接入力されたクロックと１／２分周回路１４２で１／２に分周されたクロックと、さらに図示しない１／４分周回路で１／４に分周されたクロックとを切り替えて出力するように構成すればよく、図５から自明だからである。【００８５】
図１１は、ステートモニタ２４で管理されているサブステートの状態遷移図である。【００８６】
ここではｆｌａｇ＿ｓｕｍ（後述する）という値が参照される。また状態遷移の安定性のために値ＨＹＳを用いて状態遷移にヒステリシスを持たせている。【００８７】
ここには、ｓｔａｔｅ１，ｓｔａｔｅ２，ｓｔａｔｅ３，ｓｔａｔｅ４の４つのサブステートが存在する。ｓｔａｔｅ１は負荷が最も軽い状態であり、ｓｔａｔｅ２，ｓｔａｔｅ３に進むに従って負荷が重い状態となり、ｓｔａｔｅ４が負荷が最も重い状態である。【００８８】
ｓｔａｔｅ１からｓｔａｔｅ２へは、ｆｌａｇ＿ｓｕｍが１５＋ＨＹＳを越えたときに遷移し、ｓｔａｔｅ２からｓｔａｔｅ３へは、ｆｌａｇ＿ｓｕｍが３０＋ＨＹＳを越えたときに遷移し、ｓｔａｔｅ３からｓｔａｔｅ４へは、ｆｌａｇ＿ｓｕｍが４５＋ＨＹＳを越えたときに遷移する。ｓｔａｔｅ４に所定時間留まると、メインステート（図１０参照）が１つ遷移し、サブステートはｓｔａｔｅ１に遷移する。【００８９】
また、ｓｔａｔｅ４からｓｔａｔｅ３へはｆｌａｇ＿ｓｕｍが４５−ＨＹＳを下回ると遷移し、ｓｔａｔｅ３からｓｔａｔｅ２へはｆｌａｇ＿ｓｕｍが３０−ＨＹＳを下回ると遷移し、ｓｔａｔｅ２からｓｔａｔｅ１へはｆｌａｇ＿ｓｕｍが１５−ＨＹＳを下回ると遷移する。ｓｔａｔｅ１に所定時間留まると、図１０のメインステートが１つ遷移し、サブステートはｓｔａｔｅ４に遷移する。【００９０】
ここで、ｆｌａｇ＿ｓｕｍは、図９に示すように、５つのレジスタ３３６，３３７，３３８，３３９，３４０にそれぞれ格納されているｆｌａｇ１＿ｖａｌ，ｆｌａｇ２＿ｖａｌ，ｆｌａｇ３＿ｖａｌ，ｆｌａｇ４＿ｖａｌ，ｆｌａｇ５＿ｖａｌが加算器３６２に入力されて加算されて得られた値であり、このｆｌａｇ＿ｓｕｍはレジスタ３６２に格納されてステートモニタ２４に伝えられる。【００９１】
表５は、４つのアプリケーションと、各アプリケーションを構成する各処理の負荷を示す係数との対応テーブルである。この対応テーブルは、図９に示すステートモニタ２４に格納され、ステートモニタ２４から演算器３６１に渡されて負荷の演算に用いられる。【００９２】
【表５】
2008117369.tif 000007
【００９３】
ここに示す４つのアプリケーション（ａｐｐｌｉｃａｔｉｏｎ１〜４）は、いずれも、図８に示す５つの処理Ａ〜Ｅで構成されている。但し、例えば処理Ａで表わされる処理であっても、その処理Ａの内容は４つのアプリケーションでそれぞれ異なっている。また、４つのアプリケーションそれぞれは処理Ａ〜Ｅを全て含むものではなく、アプリケーションによっては欠落している処理も存在する。ｆｌａｇ１＿ｉｎｃ，ｆｌａｇ２＿ｉｎｃ，ｆｌａｇ３＿ｉｎｃ，ｆｌａｇ４＿ｉｎｃ，ｆｌａｇ５＿ｉｎｃは、各アプリケーション（ａｐｐｌｉｃａｔｉｏｎ１〜４）を構成する各処理Ａ〜Ｅの負荷を表わす係数である。例えばａｐｐｌｉｃａｔｉｏｎ１の各処理Ａ〜Ｅの負荷係数は、それぞれ１，２，３，４，５であり、ａｐｐｌｉｃａｔｉｏｎ２の各処理Ａ〜Ｅの負荷係数は、それぞれ１，０，０，０，０であることを意味している。ここで、係数０は、そのアプリケーションには、その０に相当する処理が存在しないことを意味している。したがってａｐｐｌｉｃａｔｉｏｎ２は処理Ａのみで構成されている。ａｐｐｌｉｃａｔｉｏｎ３，４についても同様である。【００９４】
図９に示す演算器３６１では、この表５および前掲の表４に基づいて、現在の状態（メインステート＋サブステート）における、ａｐｐｌｉｃａｔｉｏｎ１〜４を横断的に見たときの処理Ａ〜Ｅのそれぞれについての負荷情報、すなわち、ｆｌａｇ１＿ｖａｌ，ｆｌａｇ２＿ｖａｌ，ｆｌａｇ３＿ｖａｌ，ｆｌａｇ４＿ｖａｌ，ｆｌａｇ５＿ｖａｌが算出されて、レジスタ３３６，３３７，３３８，３３９，３４０に格納される。【００９５】
また、これらの値ｆｌａｇ１＿ｖａｌ，ｆｌａｇ２＿ｖａｌ，ｆｌａｇ３＿ｖａｌ，ｆｌａｇ４＿ｖａｌ，ｆｌａｇ５＿ｖａｌは、以下のようにして求められる。【００９６】
図１２は、アプリケーション起動時に演算器３６１で行なわれる演算処理を示す図である。【００９７】
ｆｌａｇ１＿ｖａｌ，ｆｌａｇ２＿ｖａｌ，ｆｌａｇ３＿ｖａｌ，ｆｌａｇ４＿ｖａｌ，ｆｌａｇ５＿ｖａｌは、いずれも初期値は０である。代表的にｆｌａｇ１＿ｖａｌについて説明する。【００９８】
アプリケーションが起動されると、今回起動されたアプリケーションの種類（ａｐｐｌｉｃａｔｉｏｎ１〜４のうちのいずれか）に応じて、それまでのｆｌａｇ１＿ｖａｌに表５のｆｌａｇ１＿ｉｎｃの値が加算される。ただし、現在のクロックの周波数によって負荷が異なるため、現在のメインステートがｃｌｋｄｉｖ１，ｃｌｋｄｉｖ２，ｃｌｋｄｉｖ４のいずれにあるかに応じて、表５のｆｌａｇ１＿ｉｎｃに、そのときの分周比（表４参照）が乗算された値が加算される。ｆｌａｇ２＿ｖａｌ，ｆｌａｇ３＿ｖａｌ，ｆｌａｇ４＿ｖａｌ，ｆｌａｇ５＿ｖａｌについても同様である。【００９９】
図１３は、アプリケーション終了時に演算器３６１で行なわれる演算処理を示す図である。【０１００】
代表的にｆｌａｇ１＿ｖａｌについて説明する。【０１０１】
１つのアプリケーションが終了すると、今回終了したアプリケーション（ａｐｐｌｉｃａｔｉｏｎ１〜４）に応じて、表５に示すｆｌａｇ１＿ｉｎｃの値に、現在のメインステートの分周比が乗算されて、それまでのｆｌａｇ１＿ｖａｌから減算され、新たなｆｌａｇ１＿ｖａｌが演算される。ｆｌａｇ２＿ｖａｌ，ｆｌａｇ３＿ｖａｌ，ｆｌａｇ４＿ｖａｌ，ｆｌａｇ５＿ｖａｌについても同様である。【０１０２】
図１４は、メインステートが遷移したときに、演算器３６１で行なわれる演算を示した図である。【０１０３】
ここでは、ｃｌｋｄｉｖ２からｃｌｋｄｉｖ１への遷移又はｃｌｋｄｉｖ４からｃｌｋｄｉｖ２への遷移であるか否か、すなわち、高い周波数のクロックに変更されたか否かが判定され、高い周波数のクロックに変更されたときは、ｆｌａｇ１＿ｖａｌ〜ｆｌａｇ５＿ｖａｌの各値が１／２となり、低い周波数のクロックに変更されたときは、ｆｌａｇ１＿ｖａｌ〜ｆｌａｇ５＿ｖａｌの各値が２倍となる。これは、周波数が２倍に変更されると２倍の処理能力が得られるため、同じ処理を実行するときは負荷は半分となり、これとは逆に、周波数が１／２に変更されると処理能力が半分になるため同じ処理を実行するのに負荷が２倍となるからである。【０１０４】
図１２、図１３において分周比を乗算するのも同じ理由である。【０１０５】
図９に示す演算器３６１には、アプリケーションの起動、終了、メインステートの遷移の各イベントごとに各レジスタ３３６，３３７，３３８，３３９，３４０に格納されているｆｌａｇ１＿ｖａｌ，ｆｌａｇ２＿ｖａｌ，ｆｌａｇ３＿ｖａｌ，ｆｌａｇ４＿ｖａｌ，ｆｌａｇ５＿ｖａｌがステートモニタ２４によって切り替えられるマルチプレクサ３２３を経由して、順次に入力され、演算器３６１では、そのイベントに応じて図１２〜図１５の演算が行なわれ、ステートモニタ２４によって切り替えられるもう１つのマルチプレクサ３２２を経由して元の各レジスタ３３６，３３７，３３８，３３９，３４０に再格納される。各レジスタ３３６，３３７，３３８，３３９，３４０に格納されたｆｌａｇ１＿ｖａｌ〜ｆｌａｇ５＿ｖａｌは、各比較器３４１，３４２，３４３，３４４，３４５により、もう一方の各レジスタ３３１，３３２，３３３，３３４，３３５に格納されている各閾値ｆｌａｇ１＿ｌｉｍ〜ｆｌａｇ５＿ｌｉｍと比較される。【０１０６】
表６は、サブステートと各閾値との対応テーブルを示している。【０１０７】
【表６】
2008117369.tif 000008
【０１０８】
この対応テーブルには、４つの各サブステート（ｓｔａｔｅ１〜ｓｔａｔｅ４）のそれぞれについて、４つのアプリケーション（ａｐｐｌｉｃａｔｉｏｎ１〜４；表５参照）をそれらのアプリケーションに跨って横断的に見たときの各処理Ａ〜Ｅそれぞれについての閾値が示されている。【０１０９】
すなわち、ｆｌａｇ１＿ｌｉｍはアプリケーションの種類を問わずに処理Ａに関する閾値、ｆｌａｇ２＿ｌｉｍは同様に処理Ｂに関する閾値、以下同様にｆｌａｇ３＿ｌｉｍ〜ｆｌａｇ５＿ｌｉｍはそれぞれ処理Ｃ〜Ｅに関する閾値であり、例えば処理Ａは閾値ｆｌａｇ１＿ｌｉｍは、サブステートごとに、ｓｔａｔｅ１〜ｓｔａｔｅ５では、それぞれ、ｆｌａｇ１＿ｌｉｍ＝０，２，２，２である。ｆｌａｇ２＿ｌｉｍ〜ｆｌａｇ５＿ｌｉｍについても同様である。【０１１０】
図９に示す、それらの閾値ｆｌａｇ１＿ｌｉｍ〜ｆｌａｇ５＿ｌｉｍをそれぞれ格納しておくレジスタ３３１，３３２，３３３，３３４，３３５には、ＭＰＵのデータパスを経由しマルチプレクサ３２１を通過してきた閾値が設定される。アドレスデコーダ１４０によりマルチプレクサ３２１の出力側のパスが順次切り替えられ、ＭＰＵからは、その切り替えと同期したタイミングで各閾値がシーケンシャルに順次出力されて、各レジスタ３３１，３３２，３３３，３３４，３３５に順次格納される。【０１１１】
図１５は、図９に１つのブロックで示すｆｌａｇ１＿ｌｉｍ用のレジスタ３３１の詳細構成図である。ここでは、代表的に、ｆｌａｇ１＿ｌｉｍ用のレジスタ３３１について説明するが、ｆｌａｇ２＿ｌｉｍ〜ｆｌａｇ５＿ｌｉｍ用の各レジスタ３３２〜３３５についても同様である。【０１１２】
図１５に示すように、レジスタ３３１は、４つの個別のレジスタ３３１１，３３１２，３３１３，３３１４とそれら４つのレジスタ３３１１，３３１２，３３１３，３３１４の中から１つのレジスタを選択するセレクタ３３１５とから構成されている。【０１１３】
表６に示すように、ｆｌａｇ１＿ｌｉｍは、４つのサブステートｓｔａｔｅ１〜４のそれぞれについて個別に値が定義されており、これら４つの各値が４つの各レジスタ３３１１，３３１２，３３１３，３３１４にそれぞれ格納され、それら４つの値のうちの１つが、図９に示すステートモニタ２４からの現在のサブステートを表わすｓｔａｔｅの値によって選択されて比較器３４１に入力される。この比較器３４１では、このようにして選択された、現在のサブステートに適合した閾値ｆｌａｇ１＿ｌｉｍと、もう１つのレジスタ３３６に格納されている変数ｆｌａｇ＿ｖａｌとの大小が判定される。【０１１４】
表７は、図９に示す４つの比較器３４１，３４２，３４３，３４４の比較結果を示した図である。【０１１５】
【表７】
2008117369.tif 000009
【０１１６】
この表７において、ｎは１〜５のそれぞれを表わしており、ここでは代表的にｎ＝１について説明する。【０１１７】
ｆｌａｇ１＿ｌｉｍ＞ｆｌａｇ１＿ｌｉｍ
のとき、すなわち、変数ｆｌａｇ１＿ｌｉｍが閾値ｆｌａｇ１＿ｌｉｍよりも大きいときは、比較器３４１からは、値‘１’が出力されてＤＳＰ側のマルチプレクサ３２４に入力されるとともに、インバータ３５１により値‘０’に変換されてＭＰＵ側のマルチプレクサ３２５に入力される。一方
ｆｌａｇ１＿ｌｉｍ≦ｆｌａｇ１＿ｌｉｍ
のとき、すなわち、変数ｆｌａｇ１＿ｌｉｍが閾値ｆｌａｇ１＿ｌｉｍ以下のときは、比較器３４１からは値‘０’が出力されてＤＳＰ側のマルチプレクサ３２４に入力されるとともに、インバータ３５１により値‘１’に変換されてＭＰＵ側のマルチプレクサ３２５に入力される。【０１１８】
他の比較器３４２，３４３，３４４，３４５についても同様の比較演算が行なわれ、それらの比較結果がＤＳＰ側のマルチプレクサ３２４に入力されるとともに、各インバータ３５２，３５３，３５４，３５５で反転されてＭＰＵ側のマルチプレクサ３２５に入力される。【０１１９】
ＤＳＰ側のマルチプレクサ３２４に入力された、５つの比較器３４１，３４２，３４３，３４４，３４５の比較結果は、アドレスデコーダ１３９からの指示により、図８に示す５つの処理Ａ〜Ｅのそれぞれの起動時に、それぞれ、ＤＳＰ側のｆｌａｇ１，ｆｌａｇ２，ｆｌａｇ３，ｆｌａｇ４，ｆｌａｇ５として出力される。【０１２０】
また、これと同様に、ＭＰＵ側のマルチプレクサ３２５に入力された、５つの比較器３４１，３４２，３４３，３４４，３４５の各比較結果が各インバータ３５１，３５２，３５３，３５４，３５５で反転された値は、アドレスデコーダ１４０の指示により、図８に示す５つの処理Ａ〜Ｅのそれぞれの起動時に、それぞれ、ＭＰＵ側のｆｌａｇ１，ｆｌａｇ２，ｆｌａｇ３，ｆｌａｇ４，ｆｌａｇ５として出力される。【０１２１】
ここで、図８を参照してＤＳＰでの処理について説明する。ここでは、一例として、ＤＳＰ側のマルチプレクサ３２４から出力されたｆｌａｇ１，ｆｌａｇ２，ｆｌａｇ３，ｆｌａｇ４，ｆｌａｇ５が、それぞれ、
（ｆｌａｇ１，ｆｌａｇ２，ｆｌａｇ３，ｆｌａｇ４，ｆｌａｇ５）＝（０，１，０，１，１）
であるとすると、ｆｌａｇ１＝０であるためＤＳＰでは処理Ａは実行されず、ｆｌａｇ２＝１であるため処理ＢはＤＳＰで実行され、ｆｌａｇ３＝０であるため処理ＣはＤＳＰでは実行されず、ｆｌａｇ４＝１であるため処理ＤはＤＳＰで実行され、ｆｌａｇ５＝１であるため処理ＥはＤＳＰで実行される。【０１２２】
次に図８を参照して、ＭＰＵでの処理について説明する。ＤＳＰ側に出力されるｆｌａｇ１〜ｆｌａｇ５が、上記のとおりの、
（ｆｌａｇ１，ｆｌａｇ２，ｆｌａｇ３，ｆｌａｇ４，ｆｌａｇ５）＝（０，１，０，１，１）
のとき、ＭＰＵ側には、それらの反転結果、すなわち、
（ｆｌａｇ１，ｆｌａｇ２，ｆｌａｇ３，ｆｌａｇ４，ｆｌａｇ５）＝（１，０，１，０，０）
が出力される。【０１２３】
したがって、ＭＰＵでは、ｆｌａｇ１とｆｌａｇ３が‘１’であるため、処理Ａと処理Ｃが実行され、ｆｌａｇ２，ｆｌａｇ４，ｆｌａｇ５は‘０’であるため、処理Ｂ、処理Ｄ、処理ＥはＭＰＵでは実行されない。【０１２４】
各処理Ａ〜Ｅの処理結果は、ＣＰＵとＤＳＰの双方で参照することができるメモリ１５（図１参照）に格納されてＭＰＵとＤＳＰとの間でデータの受け渡しが行なわれる。この第２実施形態では、上記のようにして、処理Ａ〜Ｅがそれぞれ独立に、その時その時の負荷予測に応じて、ＤＳＰとＭＰＵとに負荷が分配される。
【図１】
2008117369.tif 000010
【図２】
2008117369.tif 000011
【図３】
2008117369.tif 000012
【図４】
2008117369.tif 000013
【図５】
2008117369.tif 000014
【図６】
2008117369.tif 000015
【図７】
2008117369.tif 000016
【図８】
2008117369.tif 000017
【図９】
2008117369.tif 000018
【図１０】
2008117369.tif 000019
【図１１】
2008117369.tif 000020
【図１２】
2008117369.tif 000021
【図１３】
2008117369.tif 000022
【図１４】
2008117369.tif 000023
【図１５】
2008117369.tif 000024
【国際調査報告】
2008117369.tif 000025
2008117369.tif 000026
2008117369.tif 000027
2008117369.tif 000028
2008117369.tif 000029