(57)【要約】      （修正有）【課題】解凍プログラム等を一時的に使用するプログラムによるメモリの占有を回避する。【解決手段】スレーブチップ１００は、それぞれバスを介して中央処理装置と接続された命令メモリ３４とデータメモリ３２と、マスタチップ２００からの制御信号により、命令メモリ３４とデータメモリ３２に接続されているバスの各接続先を入れ替えた接続入替状態に切り替えるバス切替回路を備える。前記接続入替状態とした上で、データメモリ３２の作業領域３３にプログラムを格納し命令メモリ３４の内容に代えて実行可能とし、プログラムの実行後は、前記バス接続を元の状態に戻す。該構成により、接続入替状態において解凍プログラムをダウンロードし、解凍したファームウェアを命令メモリ３４に展開し、その後バス接続を元の状態に戻してファームウェアを実行することによって、自動的に解凍プログラムを破棄することが可能となる。【選択図】図１
2007004350.tif 000002
【特許請求の範囲】
【請求項１】
それぞれバスを介して中央処理装置と接続された命令メモリとデータメモリとを備えるマイクロプロセッサシステムであって、
外部からの制御信号により、前記命令メモリと前記データメモリに接続されているバスの各接続先を入れ替えた接続入替状態に切り替えるバス切替回路を備え、
前記接続入替状態において前記データメモリの作業領域に命令コードを書き込み、前記命令メモリの内容に代えて前記データメモリに書き込まれた命令コードを実行可能とし、
前記命令コードの実行後、前記バス接続を元の状態にして、前記命令コードが書き込まれた領域を作業領域に割り当て可能としたこと、
を特徴とするマイクロプロセッサシステム。
【請求項２】
前記接続入替状態において、外部から、所定の圧縮方式で圧縮された被圧縮データの解凍処理プログラムを受信し前記データメモリの作業領域に格納する解凍準備機能と、前記命令メモリに展開されるべき内容を前記圧縮方式で圧縮した被圧縮データを受信し前記データメモリに格納するデータ格納機能と、が実現されるとともに、
前記データ格納機能によるデータ格納処理と、前記解凍処理プログラムによって被圧縮データを命令メモリに展開するデータ解凍処理とを所定回数繰り返した後に、前記バス接続を元の状態にして、前記命令メモリに展開された内容で再動作可能としたこと、
を特徴とする請求項１に記載のマイクロプロセッサシステム。
【請求項３】
前記データ格納機能によるデータ格納処理と、受信済みデータのデータ解凍処理とを並行して実行可能としたこと、
を特徴とする請求項１又は２に記載のマイクロプロセッサシステム。
【請求項４】
前記被圧縮データとして、所定の圧縮方式でデータを圧縮する圧縮処理プログラムが含まれており、
前記命令メモリに展開した圧縮処理プログラムを用いてデータを圧縮し、外部に送信するデータ送信機能が実現されていること、
を特徴とする請求項１乃至３いずれか一に記載のマイクロプロセッサシステム。
【請求項５】
前記マイクロプロセッサシステムを制御するホストシステムと接続され、
前記ホストシステムから、少なくとも前記解凍処理プログラムと、前記被圧縮データとを受信すること、
を特徴とする請求項１乃至４いずれか一に記載のマイクロプロセッサシステム。
【請求項６】
請求項１乃至５いずれか一に記載のマイクロプロセッサシステムが搭載された情報処理機器。
【請求項７】
それぞれバスを介して中央処理装置と接続された命令メモリとデータメモリとを備えるマイクロプロセッサシステムに実行させるプログラムであって、
外部からの制御信号に基づいて、前記命令メモリに接続されていたバスを前記データメモリに接続するとともに、前記データメモリに接続されていたバスを前記命令メモリに接続するバス切替処理と、
外部から一時使用プログラムを受信し、前記データメモリの作業領域に格納し、前記命令メモリの内容に代えて前記作業領域に書き込まれた命令コードを実行するコード実行処理と、
外部からの制御信号に基づいて、前記命令メモリに接続されていたバスを前記データメモリに接続するとともに、前記データメモリに接続されていたバスを前記命令メモリに接続するバス戻し処理と、を実行させるプログラム。
【請求項８】
前記一時使用プログラムは所定の圧縮方式で圧縮された被圧縮データの解凍処理を行うプログラムであり、
前記コード実行処理として、前記マイクロプロセッサシステムに、
外部から、所定の圧縮方式で圧縮された被圧縮データの解凍処理プログラムを受信し、前記データメモリに格納する解凍準備処理と、
外部から、前記命令メモリに展開されるべき内容を前記圧縮方式で圧縮した被圧縮データを受信し、前記データメモリに格納するデータ格納処理と、
前記マイクロプロセッサシステムが、前記解凍処理プログラムを起動して前記被圧縮データを解凍し、前記命令メモリに展開するデータ解凍処理と、を実行させ、
前記データ格納処理と前記データ解凍処理を所定回数繰り返した後に前記バス戻し処理を実行させること、
を特徴とする請求項７に記載のプログラム。
【請求項９】
前記データ格納処理と、受信済みデータのデータ解凍処理とを並列処理で実行すること、
を特徴とする請求項８に記載のプログラム。
【請求項１０】
前記被圧縮データとして、圧縮処理プログラムが含まれており、更に、
前記命令メモリに展開した圧縮処理プログラムを用いてデータを圧縮し、外部に送信する処理を前記マイクロプロセッサシステムに実行させる請求項７乃至９いずれか一に記載のプログラム。
【請求項１１】
それぞれバスを介して中央処理装置と接続された命令メモリとデータメモリとを備えるマイクロプロセッサシステムにおける一時使用プログラムの実行方法であって、
前記マイクロプロセッサシステムが、外部からの制御信号に基づいて、前記命令メモリに接続されていたバスを前記データメモリに接続するとともに、前記データメモリに接続されていたバスを前記命令メモリに接続するバス切替工程と、
前記マイクロプロセッサシステムが、外部から一時使用プログラムを受信し、前記データメモリの作業領域に格納し、前記命令メモリの内容に代えて前記作業領域に書き込まれた命令コードを実行するコード実行工程と、
前記マイクロプロセッサシステムが、外部からの制御信号に基づいて、前記命令メモリに接続されていたバスを前記データメモリに接続するとともに、前記データメモリに接続されていたバスを前記命令メモリに接続するバス戻し工程と、を含むこと、
を特徴とする一時使用プログラムの実行方法。
【請求項１２】
前記一時使用プログラムは所定の圧縮方式で圧縮された被圧縮データの解凍処理を行うプログラムであり、
前記コード実行工程は、
前記マイクロプロセッサシステムが、外部から、所定の圧縮方式で圧縮された被圧縮データの解凍処理プログラムを受信し、前記データメモリに格納する解凍準備工程と、
前記マイクロプロセッサシステムが、外部から、前記命令メモリに展開されるべき内容を前記圧縮方式で圧縮した被圧縮データを受信し、前記データメモリに格納するデータ格納工程と、
前記マイクロプロセッサシステムが、前記解凍処理プログラムを起動して前記被圧縮データを解凍し、前記命令メモリに展開するデータ解凍工程と、によって構成され、
前記データ格納工程と前記データ解凍工程を所定回数繰り返した後に前記バス戻し工程が実行されること、
を特徴とする請求項１１に記載の一時使用プログラムの実行方法。
【請求項１３】
前記データ格納工程と、受信済みデータのデータ解凍工程とを並行して行うこと、
を特徴とする請求項１２に記載の一時使用プログラムの実行方法。
【請求項１４】
前記被圧縮データとして、圧縮処理プログラムが含まれており、
前記マイクロプロセッサシステムが、前記命令メモリに展開した圧縮処理プログラムを用いてデータを圧縮し、外部に送信する工程を含むこと、
を特徴とする請求項１１乃至１３いずれか一に記載の一時使用プログラムの実行方法。
【請求項１５】
前記一時使用プログラムは、前記接続入替状態において前記命令メモリのリードライト試験を行う試験プログラムであること、
を特徴とする請求項１１乃至１４いずれか一に記載の一時使用プログラムの実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一時的に使用するプログラムの実行方法、マイクロプロセッサシステム、情報処理機器及びプログラムに関する。
【背景技術】
【０００２】
一般にマイクロプロセッサシステムは、図６に示すように、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央処理装置）１０、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０、その他周辺回路４０等により構成される。
【０００３】
また、上記ＲＯＭ２０又はＲＡＭ３０によって構成されるメモリには、ＣＰＵにて処理を行うプログラムを格納するメモリを命令メモリと、前記ＣＰＵ処理に用いるデータの格納や毎起動時に初期化される作業領域（ワーキング領域）を含むデータメモリとがあり、それぞれＣＰＵ１０と命令メモリ用バス、データメモリ用バスにより接続される。例えば、ＣＰＵ１０は、命令メモリ用バスを介して命令メモリから命令コードを一命令ずつ取り出すことで命令を実行する。
【０００４】
上記命令メモリの内容（命令コード）及びデータメモリの内容（データ）は、予めＲＯＭに格納されているケースと、ホストからＲＡＭ３０に転送される（以下、ダウンロードとする）ケースとがあるが、どちらの場合においても、プログラム容量によりメモリ容量が増え、面積・コストが増加するため、メモリの使用を抑制する技術が望まれている。
【０００５】
そこで例えば、特開平０５−２１７００５号公報には、プログラムに圧縮処理を施すことでメモリの容量を抑制することのできる構成が記載されている。図７は同公報のマイクロコンピュータシステムのメモリ構成を表した図である。このマイクロコンピュータシステムのＲＯＭ２０には、所定の圧縮方式により圧縮されたプログラム（被圧縮プログラム）と、被圧縮プログラムを伸長するための伸長（処理）プログラムと、システムの電源立ち上げ時に起動しシステムの動作を管理する管理プログラムとが格納される。システムを起動すると、まず管理プログラムにより上記伸長処理プログラムが実行され、被圧縮プログラムが伸長される。そして伸張後のプログラムは、ＲＡＭ３０に格納されるようになっている。
【０００６】
また、特開平１１−３１２１０５号には、データ転送量削減等の観点から、ネットワーク機器の初期ソフトウェア導入やバージョンアップを行う際に、ネットワーク機器がネットワーク管理機器から圧縮ファイル及び解凍プログラムをダウンロードし、前記解凍プログラムを用いて前記圧縮ファイルを解凍するファイルのダウンロード方法が開示されている。
【０００７】
【特許文献１】特開平０５−２１７００５号公報
【特許文献２】特開平１１−３１２１０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記圧縮されたデータの解凍処理に用いる解凍（伸長）処理プログラムを再使用することがない、再使用するとしても適宜圧縮・伸長方式を変更したい、という例を考えれば明らかなように、従来のメモリ構成では、一旦、命令メモリにプログラムを格納してしまうと、少なくともリブートされるまで使用されることのないプログラムが破棄されることなくメモリ上に残ってしまうという問題点がある。とりわけ、コスト上、回路面積上、メモリ容量を充分に確保できない場合は、メモリ利用効率を著しく低下させるため、一時使用プログラムを命令メモリに格納する方式は採用し難い。
【課題を解決するための手段】
【０００９】
本発明の第１の視点によれば、それぞれバスを介して中央処理装置と接続された命令メモリとデータメモリとを備えるマイクロプロセッサシステムであって、外部からの制御信号により、前記命令メモリと前記データメモリに接続されているバスの各接続先を入れ替えた接続入替状態に切り替えるバス切替回路を備え、前記接続入替状態において前記データメモリの作業領域に命令コードを書き込み、前記命令メモリの内容に代えて前記データメモリに書き込まれた命令コードを実行可能とし、前記命令コードの実行後、前記バス接続を元の状態にして前記命令コードが書き込まれた領域を作業領域に割り当て可能としたこと、を特徴とするマイクロプロセッサシステムが提供される。
【００１０】
また、本発明の第２の視点によれば、上記マイクロプロセッサシステムの命令メモリ内容の更新方法及び該方法を実施するためのプログラムであって、それぞれ前記マイクロプロセッサシステムによって行われるバス切替工程と、コード実行工程と、バス戻し工程と、を含んで構成される方法及び該方法を実施するためのプログラムが提供される。前記バス切替工程では、外部からの制御信号に基づいて、前記命令メモリに接続されていたバスを前記データメモリに接続するとともに、前記データメモリに接続されていたバスを前記命令メモリに接続するメモリ配置（接続入替状態）へと遷移する動作が行われる。前記コード実行工程では、前記マイクロプロセッサシステムが、外部から一時使用プログラムを受信し、前記データメモリの作業領域に格納し、前記命令メモリの内容に代えて前記データメモリに書き込まれた命令コードを実行する処理が行われる。そして、前記コード実行工程が終了した後、外部からの制御信号に基づいて、前記データメモリ及び前記命令メモリに接続されていたバスを元に戻すバス戻し工程が行われる。
【発明の効果】
【００１１】
本発明によれば、プログラムの容量や用途に囚われることなく、命令メモリにプログラムを格納し実行する構成を採ることが可能となる。例えば、前記プログラムとして、一時的に使用する解凍処理プログラムや命令メモリのリード／ライトテストを実施する試験プログラムを格納し、使用後は、当該格納領域を直ちに解放させることが可能となる。
【発明を実施するための最良の形態】
【００１２】
続いて、本発明を実施するための最良の形態について図面を参照して詳細に説明する。図１は、本発明の第１の実施形態に係るマイクロプロセッサシステムの構成を表したブロック図である。図１を参照すると、プログラムを実行するマイクロプロセッサシステム（Ｓｌａｖｅ  Ｃｈｉｐ）１００と、マイクロプロセッサシステム１００の制御に加え、プログラム・データの転送等を行うホストプロセッサ（Ｍａｓｔｅｒ  Ｃｈｉｐ）２００とをホストバス（Ｈｏｓｔ  Ｂｕｓ）を介して接続した構成が示されている。上記構成は、例えば、携帯機器等の各種情報処理機器に搭載されるマルチプロセッサシステムとして採用される。
【００１３】
ホストプロセッサ２００は、少なくとも、ホストＣＰＵ１１と、外部メモリとして電気的に書き換え可能な不揮発性メモリであるフラッシュメモリ３１を備えて構成されている。図２は、フラッシュメモリ３１に格納されるデータ３１ａの例を表した図であり、図２に示されたように、例えば、解凍（伸長）処理プログラム、圧縮した被圧縮プログラム、プログラムで用いるデータ等が保存されている。前記被圧縮プログラムとして、例えば、本マイクロプロセッサシステムが搭載される機器のファームウェア等を格納することができ、この場合、例えば、リモートホストからダウンロードしたファームウェアのバージョンアップファイル（圧縮済み）をフラッシュメモリ３１に格納しておき、圧縮したままマイクロプロセッサシステム１００に転送し、マイクロプロセッサシステム１００側で解凍させる構成を採ることができる。
【００１４】
一方、マイクロプロセッサシステム１００は、スレーブＣＰＵ１２と、揮発性の半導体メモリ（ＲＡＭ）で構成された、ワーキング領域（作業領域）３３を含んだデータメモリ３２及び命令メモリ３４と、により構成される。データメモリ３２及び命令メモリ３４は、それぞれデータメモリ用バス、命令メモリ用バスによりスレーブＣＰＵ１２と接続されている。また、データメモリ用バス、命令メモリ用バスは、図示しないバス切替回路によって、データメモリ用バスが命令メモリ３４に接続され、命令メモリ用バスがデータメモリ３２のワーキング領域３３に接続されている接続入替状態に切替可能となっている。
【００１５】
続いて、本実施形態の動作について、図３のフローチャート及び図４、図５の補助図面を参照して詳細に説明する。
【００１６】
図３は、上記マイクロプロセッサシステム（Ｓｌａｖｅ  Ｃｈｉｐ）１００の動作を表したフローチャートである。前述したように、マイクロプロセッサシステム１００は初期状態においてデータメモリ用バスがデータメモリ３２のワーキング領域３３に接続され、命令メモリ用バスが命令メモリ３４に接続された状態（正規状態）となっているが、ホストプロセッサ２００からの制御信号を受信することにより前記バス切替回路が動作し、まずワーキング領域３３を命令メモリ用バスへ、命令メモリ３４をデータメモリ用バスへ接続した伸長処理用の構成（接続入替状態）に切り替える（ステップＳ００１）。
【００１７】
図４は、上記ステップＳ００１の処理を実施した状態のマイクロプロセッサシステム１００の構成（接続入替状態）を表した図である。図４に表されたように、メモリ配置を切り替えた後、マイクロプロセッサシステム１００は、ホストプロセッサ２００のフラッシュメモリ３１に格納されている被圧縮プログラム、解凍（伸長）処理プログラム等をホストバスを経由してダウンロードする（ステップＳ００２）。その際、解凍（伸長）処理プログラムは、命令メモリ用バスを介してワーキング領域３３に転送・格納され、被圧縮プログラムは、データメモリ用バスを介してデータメモリ３２に転送・格納される。
【００１８】
図５は、上記ダウンロード時のプログラム・データの流れを表した図である。続いて、マイクロプロセッサシステム１００は、命令メモリに格納された命令コードとして、ワーキング領域３３に格納した解凍（伸長）処理プログラムを実行し、被圧縮プログラムを解凍（伸長）し、解凍（伸長）後のプログラムを、データメモリ用バスに接続された命令メモリ３４に展開する（ステップ００３）。
【００１９】
すべての被圧縮プログラムの解凍（伸長）が完了したタイミングで、ホストプロセッサ２００からの制御信号を受信することによりマイクロプロセッサシステム１００の前記バス切替回路が動作し、データメモリ用バスをワーキング領域３３に接続し、命令メモリ用バスを命令メモリ３４に接続する初期の構成（元の状態）への戻し処理が行われる（ステップＳ００４）。
【００２０】
この状態で、さらにホストプロセッサ２００からの制御により、マイクロプロセッサシステム１００のスレーブＣＰＵ１２の起動（ブート）が行われると、伸長したプログラムが実行される。伸張したプログラムの実行は、通常データの書き換えを伴うため、ワーキング領域３３の初期化が併せて行われる。従って、解凍（伸長）処理プログラムが破棄され、データメモリ３２のワーキング領域３３を、通常のワーキング領域として使用することが可能となる（ステップＳ００５）。
【００２１】
一方、命令メモリ３４、ワーキング領域３３以外のデータメモリ３２に格納されている値は、上記伸長したプログラムの実行中にデータが書き換えられない固定値であるため、初期化されることはない。従って、解凍（伸長）処理プログラムのみを破棄することができ、効率的にメモリを利用することが可能となる。
【００２２】
また上記した実施形態同様の構成にて、ホストプロセッサ２００からマイクロプロセッサシステム１００に、上記プログラム以外のデータを転送されることも可能である。この場合の転送データを圧縮することにより、転送データ量、転送時間を削減することも可能となる。
【００２３】
また、上記した実施形態のホストプロセッサ２００からマイクロプロセッサシステム１００にプログラムないしデータを分割して転送させることもできる。この場合、上記データ転送処理と並行して、マイクロプロセッサシステム１００側で解凍（伸長）処理を実行させ、ダウンロードから解凍（伸長）したプログラムの実行までの時間を短縮することも可能である。更に、この場合においては、すべての被圧縮データをダウンロードした後にまとめて解凍（伸長）処理を実行する構成に比べて、受信データを一時格納するメモリの容量を削減することが可能となる。
【００２４】
また、上記した実施形態のホストプロセッサ２００からマイクロプロセッサシステム１００に転送するプログラムに、圧縮処理プログラムを含めることも可能である。この場合、マイクロプロセッサシステム１００側からホストプロセッサ２００側へデータを圧縮した上で転送する構成を採ることができる。
【００２５】
また、上記した実施形態の解凍（伸長）処理プログラムに代え、あるいは、加えて、マイクロプロセッサシステム１００自身で命令メモリ３４に対するメモリリード・ライト試験を実行するプログラムを転送させることもできる。通常のプロセッサ構成では、プロセッサ自身で命令メモリにリード・ライトすることができないため、本実施形態のホストプロセッサ２００の様な上位装置からのリード・ライト処理を行う制御が必要になるところ、本実施形態に係る構成によれば、メモリ配置を上記接続入替状態に切り替えた後、上記のようなテストプログラムを実行し、テスト終了後は廃棄させることができる。
【００２６】
以上本発明の好適な実施形態を説明したが、本発明の技術的範囲は、上述した実施形態に限定されるものではなく、マイクロプロセッサシステムにおいて、必要なときに前記ワーキング領域を命令メモリとして用いることのできるよう、命令メモリとデータメモリの少なくとも一部（伸長したプログラムの実行中にデータの書き換えを行うワーキング領域）を切り替え可能な構成とするという本発明の要旨を逸脱しない範囲で、各種の変形・置換をなしうることが可能であることはいうまでもない。
【図面の簡単な説明】
【００２７】
【図１】本発明の第１の実施形態に係るマイクロプロセッサシステムの構成を表したブロック図である。
【図２】本発明の第１の実施形態に係るマイクロプロセッサシステムのマスタチップのフラッシュメモリに格納されるデータの例を説明するための図である。
【図３】本発明の第１の実施形態に係るマイクロプロセッサシステムの動作を説明するためのフローチャートである。
【図４】本発明の第１の実施形態に係るマイクロプロセッサシステムのスレーブチップ（接続入替状態）の構成を表したブロック図である。
【図５】本発明の第１の実施形態に係るマイクロプロセッサシステムのスレーブチップ（接続入替状態）のプログラム・データの流れを説明するための図である。
【図６】従来のマイクロプロセッサシステムの構成を表した図である。
【図７】圧縮／解凍方式を利用した従来のマイクロコンピュータシステムのメモリ構成を表した図である。
【符号の説明】
【００２８】
１００  マイクロプロセッサシステム（Ｓｌａｖｅ  Ｃｈｉｐ）
２００  ホストプロセッサ（Ｍａｓｔｅｒ Ｃｈｉｐ）
１０  ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央処理装置）
１１  ホストＣＰＵ
１２  スレーブＣＰＵ
２０  ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）
３０  ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）
３１  フラッシュメモリ
３１ａ  フラッシュメモリデータ
３２  データメモリ
３３  ワーキング領域（作業領域）
３４  命令メモリ
４０  その他周辺回路
【図１】
2007004350.tif 000003
【図２】
2007004350.tif 000004
【図３】
2007004350.tif 000005
【図４】
2007004350.tif 000006
【図５】
2007004350.tif 000007
【図６】
2007004350.tif 000008
【図７】
2007004350.tif 000009