(57)【要約】【課題】プログラムコードのサイズに関わらず、ローカルメモリのサイズを削減することができるマルチプロセッサシステムを提供する。【解決手段】プログラム格納手段３には、所定の処理単位毎に識別情報を有する複数の処理単位からなり、サブプロセッサ２によって実行されるプログラムが格納される。ホストプロセッサ１は、レジスタ６の領域６０ａに割込みフラグが立っているときには、レジスタ６の領域６０ａに格納されている識別情報に対応した所定の処理単位分のプログラムをプログラム格納手段３から読み出してローカルメモリ４に格納し、レジスタ６の領域６０ｂに割込みフラグを立てる。サブプロセッサ２は、レジスタ６の領域６０ｂに割込みフラグが立っているときには、ローカルメモリ４に格納されたプログラムを読み出して処理を実行した後、引き続いて実行する処理単位の識別情報と割込みフラグをレジスタ６の領域６０ａに格納する。【選択図】図１
2007183705.tif 000002
【特許請求の範囲】
【請求項１】
ホストプロセッサと、
サブプロセッサと、
所定の処理単位毎に識別情報を有する複数の処理単位からなり、前記サブプロセッサによって実行されるプログラムが格納されたプログラム格納手段と、
前記ホストプロセッサが参照する第１の割込みフラグ及び前記識別情報が格納される第１のレジスタ領域を有すると共に、前記サブプロセッサが参照する第２の割込みフラグが格納される第２のレジスタ領域を有するレジスタと、
前記処理単位に対応する容量を有し、前記プログラムが一時的に格納されるローカルメモリと、
を有し、
前記ホストプロセッサは、前記第１のレジスタ領域に前記第１の割込みフラグが立っているときには、前記第１のレジスタ領域に格納されている前記識別情報に対応した前記所定の処理単位分の前記プログラムを前記プログラム格納手段から読み出して前記ローカルメモリに格納した後に、前記第２のレジスタ領域に前記第２の割込みフラグを立て、
前記サブプロセッサは、前記第２のレジスタ領域に前記第２の割込みフラグが立っているときには、前記ローカルメモリに格納された前記プログラムを読み出して処理を実行した後、引き続いて実行する前記処理単位の前記識別情報と前記第１の割込みフラグを前記第１のレジスタ領域に格納する
ことを特徴とするマルチプロセッサシステム。
【請求項２】
ホストプロセッサと、
サブプロセッサと、
所定の処理単位毎に識別情報を有する複数の処理単位からなり、前記サブプロセッサによって実行されるプログラムが格納されたプログラム格納手段と、
前記ホストプロセッサが参照する割込みフラグ及び前記識別情報が格納されるレジスタと、
前記処理単位に対応する容量を有し、前記プログラムが一時的に格納されるローカルメモリと、
前記ホストプロセッサからの転送命令に基づいて、前記プログラム格納手段から前記所定の処理単位分の前記プログラムを読み出して前記ローカルメモリに転送した後、転送完了信号を生成するプログラム転送手段と、
を有し、
前記ホストプロセッサは、前記レジスタに前記割込みフラグが立っているときには、前記レジスタに格納されている前記識別情報に対応した前記所定の処理単位分の前記プログラムの転送命令を前記プログラム転送手段へ出力し、
前記サブプロセッサは、前記プログラム転送手段から前記転送完了信号が出力されたときには、前記ローカルメモリに格納された前記プログラムを読み出して処理を実行した後、引き続いて実行する前記処理単位の前記識別情報と前記割込みフラグを前記レジスタに格納する
ことを特徴とするマルチプロセッサシステム。
【請求項３】
前記サブプロセッサ及び前記ローカルメモリからなる組を少なくとも２組有し、前記プログラム転送手段は、各組の前記ローカルメモリに対して同時に同一の前記処理単位分の前記プログラムを転送することを特徴とする請求項２に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを有するマルチプロセッサシステムに関する。
【背景技術】
【０００２】
従来、複数のプロセッサが並列に動作するマルチプロセッサシステムはマスタプロセッサと少なくとも１つのスレーブプロセッサを有しており、マスタプロセッサとスレーブプロセッサは、両者の間でデータを受け渡す際に用いる共有メモリを介して接続されている。特許文献１に記載された複数プロセッサシステムは、マスタプロセッサの制御に応じてスレーブプロセッサをリセット状態にさせるリセット手段と、スレーブプロセッサのブートコード格納アドレスを含むアドレス領域に共有メモリを割り当てるアドレスデコーダと、スレーブプロセッサによる書き込み及び読み出しが可能な第１のメモリと、スレーブプロセッサのブートコードが格納され、マスタプロセッサによる読み出しが可能な第２のメモリとを備えている。
【０００３】
特許文献１に記載された複数プロセッサシステムでは、マスタプロセッサ及びスレーブプロセッサは以下のように動作する。マスタプロセッサは、リセット手段によってスレーブプロセッサをリセット状態にし、第２のメモリからスレーブプロセッサのブートコード（スレーブプロセッサがリセット後に立ち上がるために必要なプログラムコード）を読み出し、共有メモリの、ブートコード格納アドレスに対応する領域に書き込む。続いて、マスタプロセッサは、スレーブプロセッサのリセット状態を解除し、スレーブプロセッサに共有メモリ上のブートコードを読み出させてスレーブプロセッサを立ち上げる。
【０００４】
スレーブプロセッサは、ブートコードの命令内容を実行することによって、マスタプロセッサが第２のメモリから読み出して共有メモリ上に書き込んだプログラムコードを共有メモリから読み出して第１のメモリに格納し、第１のメモリからプログラムコードを読み出す。これによって、スレーブプロセッサのブートコードを格納しておくためにスレーブ側に必要だった読み出し専用メモリの削減が可能となっている。
【特許文献１】特開平８−１６１２８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
スレーブ側の第１のメモリ（ローカルメモリ）のように、システムに内蔵されるメモリは一般に高価であるため、そのサイズをできるだけ小規模にすることが望ましい。特に、複数個のスレーブプロセッサがシステムに存在する場合には、各々のスレーブプロセッサに対応したプログラムコードを逐次、夫々の第１のメモリに書き込んでいかねばならないため、第１のメモリのサイズをより削減することが望ましい。しかし、第１のメモリのサイズが、第１のメモリにロードされるプログラムコードサイズより大きい必要があるため、第１のメモリのサイズの削減が困難であった。
【０００６】
また、マスタプロセッサは、スレーブプロセッサが実行するプログラムコードをメモリに書き終えるまで他の処理を実行することができないため、処理効率を向上させる上で障害となっていた。
【０００７】
本発明は、上述した問題点に鑑みてなされたものであって、プログラムコードのサイズに関わらず、ローカルメモリのサイズを削減することができるマルチプロセッサシステムを提供することを第１の目的とする。また、本発明は、第１の目的を達成すると共に、プロセッサの処理効率を向上することができるマルチプロセッサシステムを提供することを第２の目的とする。
【課題を解決するための手段】
【０００８】
本発明は、上記の課題を解決するためになされたもので、ホストプロセッサと、サブプロセッサと、所定の処理単位毎に識別情報を有する複数の処理単位からなり、前記サブプロセッサによって実行されるプログラムが格納されたプログラム格納手段と、前記ホストプロセッサが参照する第１の割込みフラグ及び前記識別情報が格納される第１のレジスタ領域を有すると共に、前記サブプロセッサが参照する第２の割込みフラグが格納される第２のレジスタ領域を有するレジスタと、前記処理単位に対応する容量を有し、前記プログラムが一時的に格納されるローカルメモリとを有し、前記ホストプロセッサは、前記第１のレジスタ領域に前記第１の割込みフラグが立っているときには、前記第１のレジスタ領域に格納されている前記識別情報に対応した前記所定の処理単位分の前記プログラムを前記プログラム格納手段から読み出して前記ローカルメモリに格納した後に、前記第２のレジスタ領域に前記第２の割込みフラグを立て、前記サブプロセッサは、前記第２のレジスタ領域に前記第２の割込みフラグが立っているときには、前記ローカルメモリに格納された前記プログラムを読み出して処理を実行した後、引き続いて実行する前記処理単位の前記識別情報と前記第１の割込みフラグを前記第１のレジスタ領域に格納することを特徴とするマルチプロセッサシステムである。
【０００９】
また、本発明は、ホストプロセッサと、サブプロセッサと、所定の処理単位毎に識別情報を有する複数の処理単位からなり、前記サブプロセッサによって実行されるプログラムが格納されたプログラム格納手段と、前記ホストプロセッサが参照する割込みフラグ及び前記識別情報が格納されるレジスタと、前記処理単位に対応する容量を有し、前記プログラムが一時的に格納されるローカルメモリと、前記ホストプロセッサからの転送命令に基づいて、前記プログラム格納手段から前記所定の処理単位分の前記プログラムを読み出して前記ローカルメモリに転送した後、転送完了信号を生成するプログラム転送手段とを有し、前記ホストプロセッサは、前記レジスタに前記割込みフラグが立っているときには、前記レジスタに格納されている前記識別情報に対応した前記所定の処理単位分の前記プログラムの転送命令を前記プログラム転送手段へ出力し、前記サブプロセッサは、前記プログラム転送手段から前記転送完了信号が出力されたときには、前記ローカルメモリに格納された前記プログラムを読み出して処理を実行した後、引き続いて実行する前記処理単位の前記識別情報と前記割込みフラグを前記レジスタに格納することを特徴とするマルチプロセッサシステムである。
【００１０】
また、本発明のマルチプロセッサシステムにおいて、前記サブプロセッサ及び前記ローカルメモリからなる組を少なくとも２組有し、前記プログラム転送手段は、各組の前記ローカルメモリに対して同時に同一の前記処理単位分の前記プログラムを転送することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、複数のプログラムコードからなるプログラム全体のサイズがローカルメモリのサイズよりも大きいプログラムコードをサブプロセッサが実行する場合でも、プログラムコードの受け渡しが所定の処理単位毎に行われるので、プログラムコードのサイズに関わらず、ローカルメモリのサイズを削減することができるという効果が得られる。また、本発明によれば、プログラム転送手段によるプログラムコードの転送中、ホストプロセッサは他のタスクを実行することが可能となるので、ホストプロセッサの処理効率を向上することができるという効果が得られる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照し、本発明の実施形態を説明する。図１は、本発明の第１の実施形態によるマルチプロセッサシステムの構成を示している。このマルチプロセッサシステムは、ホストプロセッサ１、サブプロセッサ２、プログラム格納手段３、ローカルメモリ４、アクセス選択手段５、及びレジスタ６を備えている。
【００１３】
ＲＯＭ（Read Only Memory）等で構成されるプログラム格納手段３には、ホストプロセッサ１によって実行されるプログラムコードと、サブプロセッサ２によって実行されるプログラムコードが格納される。ＲＡＭ（Random Access Memory）等で構成されるローカルメモリ４には、ホストプロセッサ１とサブプロセッサ２の間で受け渡されるデータが一時的に格納される。ホストプロセッサ１及びサブプロセッサ２からのローカルメモリ４へのアクセスは、アクセス選択手段５によって制御される。
【００１４】
図２はレジスタ６の構成を示している。レジスタ６は、４つのレジスタ６１〜６４と、各レジスタへのデータの書き込み及び読み出し時にアドレスを指定するアドレスデコーダ６５と、インバータ６６とを備えている。レジスタ６１，６２は、ホストプロセッサ１によって参照される領域６０ａに配置されており、レジスタ６３，６４及びインバータ６６は、サブプロセッサ２によって参照される領域６０ｂに配置されている。レジスタ６１には、ホストプロセッサ１へ出力される割込み信号を制御するためのフラグ（第１の割込みフラグ）となる値が格納される。
【００１５】
レジスタ６２には、サブプロセッサ２が実行するプログラムコードに付加されたプログラムＩＤの値が格納される。プログラムＩＤは、各プログラムコードを識別する情報である。レジスタ６３には、サブプロセッサ２をリセット状態とするリセット信号を制御するためのフラグ（リセットフラグ）となる値が格納される。本実施形態では、サブプロセッサ２のリセットが負論理であるため、レジスタ６４の出力にインバータ６６が接続され、インバータ６６からリセット信号が出力される。サブプロセッサ２のリセットが正論理の場合には、インバータ６６は必要ない。レジスタ６４には、サブプロセッサ２へ出力される割込み信号を制御するためのフラグ（第２の割込みフラグ）となる値が格納される。
【００１６】
次に、本実施形態によるマルチプロセッサシステムの動作を説明する。図３はマルチプロセッサシステムの動作の手順を示している。マルチプロセッサシステムが起動されると、まずホストプロセッサ１はレジスタ６のリセットフラグを立て、サブプロセッサ２に対してリセット信号を出力することにより、サブプロセッサ２をリセット状態にする（ステップＳ３０１）。ステップＳ３０１における動作を詳細に説明すると、ホストプロセッサ１は、バスを経由してレジスタ６内のレジスタ６３に０を書き込む。レジスタ６３の出力は、インバータ６６を介してサブプロセッサ２のリセット端子に接続されているため、サブプロセッサ２はリセット状態になる。
【００１７】
続いて、ホストプロセッサ１は、サブプロセッサ２によって実行されるプログラムをプログラム格納手段３から読み出し、ローカルメモリ４に書き込む（ステップＳ３０２）。図４はローカルメモリ４のメモリマップを示している。マルチプロセッサシステムの起動後、最初にローカルメモリ４に書き込まれるプログラムには、サブプロセッサ２が行う処理が記述されたプログラムコードの他に、ブートコードとハンドラ（割込みハンドラ）が含まれる。
【００１８】
ブートコードは、サブプロセッサ２が起動するために必要なプログラムコードであり、ハンドラは、サブプロセッサ２がスリープ状態から復帰する際に実行されるプログラムコードである。ローカルメモリ４のアドレスＡ番地から始まる「プログラムコード」の領域に書き込まれるプログラムコードは、所定の処理単位毎に区切られたプログラム全体の一部（ブロック）であり、サブプロセッサ２をスリープ状態にする命令で終了するように記述されている（図５）。サブプロセッサ２をスリープ状態にする命令で区切られた所定の処理単位のプログラムコード毎にプログラムＩＤが付与されている。
【００１９】
ローカルメモリ４へのプログラムコードの書き込みが終了すると、ホストプロセッサ１はレジスタ６内のレジスタ６３に１を書き込んでリセットフラグを解除することによって、サブプロセッサ２のリセットを解除する（ステップＳ３０３）。サブプロセッサ２のリセット解除後、ホストプロセッサ１は必要に応じて任意の処理を実行する（ステップＳ３０４）。
【００２０】
一方、ホストプロセッサ１がサブプロセッサ２のリセットを解除すると、サブプロセッサ２は、ローカルメモリ４からブートコードを読み出して実行することによって、プログラムの実行を開始する。サブプロセッサ２は、ブートコードの実行に引き続いて、ローカルメモリ４からプログラムコードを読み出して実行する（ステップＳ３０５）。このプログラムコードに記述された所定の処理の実行が終了するまで（ステップＳ３０６でＮＯの場合）、サブプロセッサ２はプログラムコードを実行する（ステップＳ３０７）。ローカルメモリ４に格納されていないプログラムコードを実行する必要が生じた場合（ステップＳ３０６でＹＥＳの場合）、次のステップに遷移する。
【００２１】
この場合、サブプロセッサ２は、引き続き実行するプログラムコードに付与されたプログラムＩＤをレジスタ６内のレジスタ６２に書き込み、さらにレジスタ６１に１を書き込んで割込みフラグを立てる（ステップＳ３０８）。サブプロセッサ２が実行中のプログラムコードには、上記のプログラムＩＤをレジスタ６２に書き込む命令が記述されており、サブプロセッサ２はその命令に従って上記のように動作する。レジスタ６１の出力はホストプロセッサ１の割込みポートに接続されているため、ホストプロセッサ１に対する割込みが発生する。続いて、サブプロセッサ２はスリープモードに遷移する（ステップＳ３０９）。これによって、次のプログラムコードを実行するまでのサブプロセッサ２の消費電力が抑えられる。
【００２２】
ホストプロセッサ１は、サブプロセッサ２からのプログラム転送要求があるまでは、ステップＳ３０４において任意の処理を実行している。サブプロセッサ２からのプログラム転送要求は、上記のように割込みによってホストプロセッサ１に伝えられる。この割込みを受けるとホストプロセッサ１は、レジスタ６内のレジスタ６２からプログラムＩＤを読み出し、このプログラムＩＤに対応するプログラムコードをプログラム格納手段３から読み出して、ローカルメモリ４のアドレスＡ番地に書き込む（ステップＳ３１０）。
【００２３】
プログラムコードの書き込みが終了すると、ホストプロセッサ１はレジスタ６内のレジスタ６４に１を書き込んで割込みフラグを立てる（ステップＳ３１１）。レジスタ６４の出力はサブプロセッサ２の割込みポートに接続されているため、これによってサブプロセッサ２に対する割込みが発生する。続いて、ホストプロセッサ１はステップＳ３０４に復帰する。
【００２４】
サブプロセッサ２は、ホストプロセッサ１からの割込み信号を受け取ると、スリープモードから通常動作モードになる（ステップＳ３１２）。続いて、サブプロセッサ２はステップＳ３０５に復帰し、ローカルメモリ４のアドレスＡ番地から、新たに書き込まれたプログラムコードを読み出して実行する。以降、サブプロセッサ２は、ステップＳ３０６〜Ｓ３０９，Ｓ３１２を繰り返すことでプログラムを実行する。
【００２５】
次に、サブプロセッサ２を用いて画像処理を行う場合を例として、プログラムコードとプログラムＩＤの関係を説明する。図１０に画像処理プログラムのフローチャートを示す。図１０の画像処理においては、画像データにフィルタ処理を行い（ステップＳ１００１）、縮小モードであれば（ステップＳ１００２においてＹＥＳ）、フィルタ処理後のデータに縮小処理を行い（ステップＳ１００３）、続いてエンコード処理を行う（ステップＳ１００４）。また、縮小モードでなければ（ステップＳ１００２においてＮＯ）、フィルタ処理後のデータにエンコード処理（ステップＳ１００４）を行う。
【００２６】
このような場合、ステップＳ１００１およびＳ１００２の処理が記述されたプログラムコードをＩＤが１のプログラムコードとし、ステップＳ１００３の処理が記述されたプログラムコードをＩＤが２のプログラムコードとし、ステップＳ１００４の処理が記述されたプログラムコードをＩＤが３のプログラムコードとする。すなわち、機能毎に適切に分割されたプログラムコードに対してプログラムＩＤが付与される。以上は、後述する第２の実施形態でも同様である。
【００２７】
上述したように、本実施形態によるマルチプロセッサシステムでは、サブプロセッサ２が実行するプログラムコードが所定の処理単位毎にローカルメモリ４に格納され、サブプロセッサ２によって読み出されて実行される。複数のプログラムコードからなるプログラム全体のサイズがローカルメモリ４のサイズよりも大きいプログラムコードをサブプロセッサ２が実行する場合でも、プログラムコードの受け渡しが所定の処理単位毎に行われるので、プログラムコードのサイズに関わらず、ローカルメモリ４のサイズを削減することができる。したがって、ローカルメモリ４のサイズは、各処理単位のプログラムコードのサイズに対応していれば十分であり、マルチプロセッサシステムをより安価に構成することができる。
【００２８】
次に、本発明の第２の実施形態を説明する。図６は、本実施形態によるマルチプロセッサシステムの構成を示している。第１の実施形態と比較して、本実施形態ではプログラム転送手段７が追加されている。プログラム転送手段７は、ＤＭＡ（Direct Memory Access）等で構成され、プログラム格納手段３に格納されたプログラムコードをローカルメモリ４に転送する機能を有している。プログラム転送手段７がプログラムコードの転送を行っている間、ホストプロセッサ１は他のタスクを実行することが可能である。また、本実施形態におけるレジスタ６の構成は第１の実施形態とほぼ同様であるが、サブプロセッサ２に対する割込みに係るレジスタ６４は設けられていなくてもよい。
【００２９】
以下、本実施形態によるマルチプロセッサシステムの動作を説明する。図７はマルチプロセッサシステムの動作の手順を示している。マルチプロセッサシステムが起動されると、まずホストプロセッサ１はレジスタ６内のレジスタ６３のリセットフラグを立て、サブプロセッサ２に対してリセット信号を出力することにより、サブプロセッサ２をリセット状態にする（ステップＳ７０１）。
【００３０】
続いて、ホストプロセッサ１は、プログラム転送手段７の動作を規定する動作パラメータとして、転送するプログラムコードのプログラム格納手段３内の先頭アドレスと、転送するプログラムコードのサイズとを、プログラム転送手段７に内蔵されたレジスタに書き込んだ後、プログラム転送手段７に転送開始指示を与える（ステップＳ７０２）。プログラム転送手段７に転送開始指示を与えた後、ホストプロセッサ１は必要に応じて任意の処理を実行する（ステップＳ７０３）。
【００３１】
ホストプロセッサ１から転送開始指示を受け取ると、プログラム転送手段７は、内蔵されたレジスタに書き込まれたプログラム格納手段３の先頭アドレスから、同じく内蔵されたレジスタに書き込まれたプログラムコードサイズ分のプログラムコードを読み出し、ローカルメモリ４へ転送する。ローカルメモリ４のメモリマップは第１の実施形態と同様である。ローカルメモリ４へのプログラムコードの書き込みが終了すると、プログラム転送手段７は、ホストプロセッサ１に対して割込みを発生する。
【００３２】
割込みを受けると、ホストプロセッサ１はレジスタ６内のレジスタ６３に１を書き込んでリセットフラグを解除することによって、サブプロセッサ２のリセットを解除する（ステップＳ７０４）。サブプロセッサ２のリセット解除後、ホストプロセッサ１はステップＳ７０３に復帰し、必要に応じて任意の処理を実行する。
【００３３】
一方、ホストプロセッサ１がサブプロセッサ２のリセットを解除すると、サブプロセッサ２は、ローカルメモリ４からブートコードを読み出して実行することによって、プログラムの実行を開始する。サブプロセッサ２は、ブートコードの実行に引き続いて、ローカルメモリ４からプログラムコードを読み出して実行する（ステップＳ７０５）。このプログラムコードに記述された所定の処理の実行が終了するまで（ステップＳ７０６でＮＯの場合）、サブプロセッサ２はプログラムコードを実行する（ステップＳ７０７）。ローカルメモリ４に格納されていないプログラムコードを実行する必要が生じた場合（ステップＳ７０６でＹＥＳの場合）、次のステップに遷移する。
【００３４】
この場合、サブプロセッサ２は、引き続き実行するプログラムコードに付与されたプログラムＩＤをレジスタ６内のレジスタ６２に書き込み、さらにレジスタ６１に１を書き込んで割込みフラグを立てる（ステップＳ７０８）。レジスタ６１の出力はホストプロセッサ１の割込みポートに接続されているため、ホストプロセッサ１に対する割込みが発生する。続いて、サブプロセッサ２はスリープモードに遷移する（ステップＳ７０９）。
【００３５】
ホストプロセッサ１は、サブプロセッサ２からのプログラム転送要求があるまでは、ステップＳ７０３において任意の処理を実行している。サブプロセッサ２からのプログラム転送要求は、上記のように割込みによってホストプロセッサ１に伝えられる。この割込みを受けるとホストプロセッサ１は、レジスタ６内のレジスタ６２からプログラムＩＤを読み出し、このプログラムＩＤに対応するプログラムコードの先頭アドレスとコードサイズを、プログラム転送手段７に内蔵されたレジスタに書き込んだ後、プログラム転送手段７に転送開始指示を与える（ステップＳ７１０）。この後、ホストプロセッサ１はステップＳ７０３に復帰し、必要に応じて任意の処理を実行する。
【００３６】
ホストプロセッサ１から転送開始指示を受け取ると、プログラム転送手段７は、内蔵されたレジスタに書き込まれたプログラム格納手段３の先頭アドレスから、同じく内蔵されたレジスタに書き込まれたプログラムコードサイズ分のプログラムコードを読み出し、ローカルメモリ４のアドレスＡ番地へ転送する。ローカルメモリ４へのプログラムコードの書き込みが終了すると、プログラム転送手段７は、サブプロセッサ２に対して割込みを発生する。
【００３７】
サブプロセッサ２は、プログラム転送手段７からの割込み信号を受け取ると、スリープモードから通常動作モードになる（ステップＳ７１１）。続いて、サブプロセッサ２はステップＳ７０５に復帰し、ローカルメモリ４のアドレスＡ番地から、新たに書き込まれたプログラムコードを読み出して実行する。以降、サブプロセッサ２は、ステップＳ７０６〜Ｓ７０９，Ｓ７１１を繰り返すことでプログラムを実行する。
【００３８】
上述した本実施形態によれば、第１の実施形態と同様に、プログラムコードのサイズに関わらず、ローカルメモリ４のサイズを削減することができる。また、プログラム転送手段７によるプログラムコードの転送中、ホストプロセッサ１は他のタスクを実行することが可能となるので、処理効率を向上することができる。
【００３９】
次に、本実施形態の変形例を説明する。図８は第１の変形例の構成を示している。本変形例では、図６に示したマルチプロセッサシステムの構成のうち、ホストプロセッサ１及びプログラム格納手段３以外の構成からなる組が２組設けられている。図８では、この組が２組であるが、３組以上であってもよい。図８のようにマルチプロセッサシステムを構成することによって、プログラム転送手段７ａ，７ｂが、プログラムコードを転送する命令をホストプロセッサ１から受けて、サブプロセッサ２ａ，２ｂの夫々によって実行されるプログラムコードを、アクセス選択手段５ａ，５ｂを介してローカルメモリ４ａ，４ｂの夫々に同時に転送することができる。
【００４０】
図９は第２の変形例の構成を示している。本変形例では、図６に示したマルチプロセッサシステムの構成のうち、サブプロセッサ、ローカルメモリ、及びレジスタからなる組が２組設けられている。図９では、この組が２組であるが、３組以上であってもよい。図９のようにマルチプロセッサシステムを構成することによって、プログラム転送手段７が、プログラムコードを転送する命令をホストプロセッサ１から受けて、サブプロセッサ２ａ，２ｂの夫々によって実行される同一のプログラムコードを、アクセス選択手段５を介してローカルメモリ４ａ，４ｂの夫々に同時に転送することができる。
【００４１】
第１の変形例では、サブプロセッサ２ａ，２ｂの夫々によって実行されるプログラムコードをローカルメモリ４ａ，４ｂの夫々に転送するためには、プログラム転送手段７ａ，７ｂの夫々が１つずつ（同一でもよい）プログラムコードをプログラム格納手段３から読み出す必要がある。これに対して、第２の変形例では、サブプロセッサ２ａ，２ｂによって同一のプログラムコードが実行される場合には、プログラム転送手段７が１つのプログラムコードをプログラム格納手段３から読み出して同時に２つのローカルメモリへ転送すればよい。これによって、プログラム転送手段７がプログラム格納手段３からプログラムコードを読み出す回数を減らすことができ、プログラム格納手段３が接続されるバスのデータ流量を削減することが可能となり、その結果、マルチプロセッサシステムを高速に起動することができる。
【００４２】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成はこれらの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。例えば、各実施形態において、バスに共有メモリを追加し、サブプロセッサ２はローカルメモリ４の代わりにバス上の共有メモリをヒープ領域及びスタック領域として利用してもよい。
【００４３】
また、第１の実施形態において、以下のようにしてもよい。ホストプロセッサ１は、図３のステップＳ３０４の処理を実行している際に、ステップＳ３０７の処理を実行しているサブプロセッサ２に対して、アボート要求を出力し、サブプロセッサ２はアボート要求を受け取ると、実行中のプログラムのアボート処理を行ってから、レジスタ６に対するプログラムＩＤの書き込みを行うことなく、ホストプロセッサ１に対する割込みを発生する。ホストプロセッサ１は割込みを受け取ると、任意のプログラムをプログラム格納手段３から読み出してローカルメモリ４に書き込み、サブプロセッサ２に対する割込みを発生する。これによって、サブプロセッサ２に実行中のプログラムの実行を終了させ、他の任意のプログラムを実行させることができる。
【００４４】
同様に第２の実施形態において、以下のようにしてもよい。ホストプロセッサ１は、図７のステップＳ７０３の処理を実行している際に、ステップＳ７０７の処理を実行しているサブプロセッサ２に対して、アボート要求を出力し、サブプロセッサ２はアボート要求を受け取ると、実行中のプログラムのアボート処理を行ってから、レジスタ６に対するプログラムＩＤの書き込みを行うことなく、ホストプロセッサ１に対する割込みを発生する。ホストプロセッサ１は割込みを受け取ると、任意のプログラムをプログラム格納手段３から読み出してローカルメモリ４に書き込むようにプログラム転送手段７を制御し、転送終了後にプログラム転送手段７はサブプロセッサ２に対する割込みを発生する。これによって、サブプロセッサ２に実行中のプログラムの実行を終了させ、他の任意のプログラムを実行させることができる。
【図面の簡単な説明】
【００４５】
【図１】本発明の第１の実施形態によるマルチプロセッサシステムの構成を示すブロック図である。
【図２】本発明の第１の実施形態によるマルチプロセッサシステムが備えるレジスタの構成を示すブロック図である。
【図３】本発明の第１の実施形態によるマルチプロセッサシステムの動作の手順を示すフローチャートである。
【図４】本発明の第１の実施形態におけるローカルメモリのメモリマップである。
【図５】本発明の第１の実施形態におけるプログラムの構造を示す参考図である。
【図６】本発明の第２の実施形態によるマルチプロセッサシステムの構成を示すブロック図である。
【図７】本発明の第２の実施形態によるマルチプロセッサシステムの動作の手順を示すフローチャートである。
【図８】本発明の第２の実施形態の変形例によるマルチプロセッサシステムの構成を示すブロック図である。
【図９】本発明の第２の実施形態の変形例によるマルチプロセッサシステムの構成を示すブロック図である。
【図１０】本発明の第１および第２の実施形態におけるプログラムコードとプログラムＩＤの関係を説明するためのフローチャートである。
【符号の説明】
【００４６】
１・・・ホストプロセッサ、２，２ａ，２ｂ・・・サブプロセッサ、３・・・プログラム格納手段、４，４ａ，４ｂ・・・ローカルメモリ、５，５ａ，５ｂ・・・アクセス選択手段、６，６ａ，６ｂ，６１，６２，６３，６４・・・レジスタ、７，７ａ，７ｂ・・・プログラム転送手段、６５・・・アドレスデコーダ、６６・・・インバータ
【図１】
2007183705.tif 000003
【図２】
2007183705.tif 000004
【図３】
2007183705.tif 000005
【図４】
2007183705.tif 000006
【図５】
2007183705.tif 000007
【図６】
2007183705.tif 000008
【図７】
2007183705.tif 000009
【図８】
2007183705.tif 000010
【図９】
2007183705.tif 000011
【図１０】
2007183705.tif 000012