(57)【要約】【課題】  アーリー・バースト・ターミネーション（バースト転送中断）後のバースト再開動作を簡便な回路で実現するとともに、ソフトウエア的なタイムアウトを防ぐ。【解決手段】  ＣＰＵバス・スレーブ部がＣＰＵバスＩ／Ｆ部、データ転送制御部、バースト長保持手段、バーストカウント手段を具備するとともに、バースト中断検出手段並びにマスタＩＤ保持手段をさらに具備する。また、バースト中断検出手段から出力されるバースト中断信号と、ＣＰＵバスＩ／Ｆ部から出力される起動信号並びにコマンド信号をさらに具備し、前記バースト中断信号がアサートされている期間は、前記起動信号のアサート並びにコマンド信号の更新を抑止することにより、ＣＰＵバス・スレーブ部の各部をバースト転送中断前の状態に保持する。さらに、バースト中断中にＣＰＵからのリードアクセスがあった場合、所定のデータ値を返すことによって、ＣＰＵに対してリトライを通知する。【選択図】  図１
2007087179.tif 000002
【特許請求の範囲】
【請求項１】
１つのマスタ・プロセッサと、少なくとも１つ以上のスレーブ・プロセッサからなるマルチプロセッサ・システムにおいて、
マスタ・プロセッサ内部のＣＰＵバス・スレーブ部がＣＰＵバスＩ／Ｆ部、データ転送制御部、バースト長保持手段、バーストカウント手段を具備するとともに、バースト中断検出手段ならびにマスタＩＤ保持手段をさらに具備することを特徴としたマルチプロセッサ・システム。
【請求項２】
前記マスタ・プロセッサ内部のＣＰＵバス・スレーブ部において、バースト中断検出手段から出力されるバースト中断信号と、ＣＰＵバスＩ／Ｆ部から出力される起動信号ならびにコマンド信号をさらに具備し、
前記バースト中断信号がアサートされている期間は、前記起動信号のアサートならびにコマンド信号の更新を抑止することにより、前記データ転送制御部、バースト長保持手段、バーストカウント手段ならびにマスタＩＤ保持手段をバースト転送中断前の状態に保持することを特徴とした、請求項１に記載のマルチプロセッサ・システム。
【請求項３】
前記マスタ・プロセッサ内部のＣＰＵバス・スレーブ部において、バースト中断中にＣＰＵからのリードアクセスがあった場合、所定のデータ値を返すことによって、ＣＰＵならびにソフトウエアに対してリトライを通知することを特徴とした、請求項１乃至請求項２に記載のマルチプロセッサ・システム。
【請求項４】
１つのマスタ・プロセッサと、少なくとも１つ以上のスレーブ・プロセッサからなるマルチプロセッサ・システムにおいて、
マスタ・プロセッサ内部のＣＰＵバス・スレーブ部がＣＰＵバスＩ／Ｆ部、データ転送制御部、バースト長保持手段、バーストカウント手段を具備するとともに、バースト中断検出手段ならびにマスタＩＤ保持手段をさらに具備することを特徴とした撮像装置。
【請求項５】
前記マスタ・プロセッサ内部のＣＰＵバス・スレーブ部において、バースト中断検出手段から出力されるバースト中断信号と、ＣＰＵバスＩ／Ｆ部から出力される起動信号ならびにコマンド信号をさらに具備し、
前記バースト中断信号がアサートされている期間は、前記起動信号のアサートならびにコマンド信号の更新を抑止することにより、前記データ転送制御部、バースト長保持手段、バーストカウント手段ならびにマスタＩＤ保持手段をバースト転送中断前の状態に保持することを特徴とした、請求項４に記載の撮像装置。
【請求項６】
前記マスタ・プロセッサ内部のＣＰＵバス・スレーブ部において、バースト中断中にＣＰＵからのリードアクセスがあった場合、所定のデータ値を返すことによって、ＣＰＵならびにソフトウエアに対してリトライを通知することを特徴とした、請求項４乃至請求項５に記載の撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサ・システム並びにマルチプロセッサ・システムを用いた撮像装置に関する。
【背景技術】
【０００２】
図９は、従来技術を説明する概略ブロック図である。マスタ・プロセッサ１００、スレーブ・プロセッサ０  ２００、スレーブ・プロセッサ１  ３００、スレーブ・プロセッサ２  ４００は、各々機能的に全く等価なものであり、システムの初期化時に役割が決定される。ただし、各プロセッサは常に同じ役割を担い、例えばマスタ・プロセッサ１００が、システムの初期化条件によってスレーブ・プロセッサになるようなことはない。また、マスタ・プロセッサ１００はローカルバス５０上では常にイニシエータとなり、３つのスレーブ・プロセッサ０〜２  ２００〜４００はローカルバス５０上では常にターゲットとなる。なお、図９においては煩瑣を避けるため、スレーブ・プロセッサ１  ３００並びにスレーブ・プロセッサ２  ４００の内部を省略している。
【０００３】
図９のシステムにおいては、マスタ・プロセッサ１００とスレーブ・プロセッサ０〜２  ２００〜４００との間でデータ通信やレジスタ間通信などを行う。図９の点線を付した経路（１−１）、（１−２）、（１−３）は、データ通信の際の経路例である。その一方で、図９のシステムにおいては、レジスタ間通信によって周期的にマスタ・プロセッサ１００からスレーブ・プロセッサ０〜２  ２００〜４００に対して所定のコマンドを送信する。コマンドを受信したスレーブ・プロセッサ０〜２  ２００〜４００は、マスタ・プロセッサ１００に対して所定のステータスを返し、コマンドに対する応答をする。
【０００４】
前記レジスタ間通信の例としては、マスタ・プロセッサ１００がデータ転送の開始前や終了後に、スレーブ・プロセッサ０〜２  ２００〜４００のステータスをチェックし、データ受信が可能か、データ転送が正常に終了したかを確認するために使用される。また、別の例としてはスレーブ・プロセッサ０〜２  ２００〜４００のハングアップ検出がある。マスタ・プロセッサ１００のＣＰＵ１０２は、スレーブ・プロセッサ０〜２  ２００〜４００に対して周期的にステータスのリードを行うが、所定の時間内にステータス・リードが完了しない場合、ハングアップが起きたとみなし、ハングアップ・リカバリ処理を行う。
【０００５】
従来例としては、例えば特許文献１と特許文献２をあげることが出来る。
【特許文献１】特開２０００−１６３３１０号公報
【特許文献２】特開平０６−２０８５４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、前記従来技術においては、ＣＰＵバス１０１がアーリー・バースト・ターミネーションを起こすような（バースト転送中にバス権を他のバスマスタに与えてしまうような）バスシステムである場合、すなわち、ＣＰＵバス・マスタ・デバイス１０６が通信Ｉ／Ｆ１１０を介して他のプロセッサとバースト転送を行っている途中でその転送が中断されてしまう場合、通信Ｉ／Ｆ１１０は、残りのデータがＣＰＵバス・マスタ・デバイス１０６から転送されるのを待つ。
【０００７】
しかしこの間、ＣＰＵ１０２が他のプロセッサとレジスタ間通信を行うために、通信Ｉ／Ｆ１１０に対してリードアクセスを行うことがありうるという問題があった。
【課題を解決するための手段】
【０００８】
１つのマスタ・プロセッサと、少なくとも１つ以上のスレーブ・プロセッサからなるマルチプロセッサ・システムにおいて、マスタ・プロセッサ内部のＣＰＵバス・スレーブ部がＣＰＵバスＩ／Ｆ部、データ転送制御部、バースト長保持手段、バーストカウント手段を具備するとともに、バースト中断検出手段ならびにマスタＩＤ保持手段をさらに具備する。
【０００９】
そして、前記マスタ・プロセッサ内部のＣＰＵバス・スレーブ部において、バースト中断検出手段から出力されるバースト中断信号と、ＣＰＵバスＩ／Ｆ部から出力される起動信号ならびにコマンド信号をさらに具備し、前記バースト中断信号がアサートされている期間は、前記起動信号のアサートならびにコマンド信号の更新を抑止することにより、前記データ転送制御部、バースト長保持手段、バーストカウント手段ならびにマスタＩＤ保持手段をバースト転送中断前の状態に保持する。
【００１０】
さらに、前記マスタ・プロセッサ内部のＣＰＵバス・スレーブ部において、バースト中断中にＣＰＵからのリードアクセスがあった場合、所定のデータ値を返すことによって、ＣＰＵならびにソフトウエアに対してリトライを通知する。
【発明の効果】
【００１１】
以上のような処理を行うことにより、アーリー・バースト・ターミネーション後のバースト再開動作を簡便な回路で実現できるとともに、ソフトウエア的なタイムアウトを防ぐことが可能となる。
【発明を実施するための最良の形態】
【００１２】
（第一実施例）
図２は、本発明に係るプロセッサ０並びに通信Ｉ／Ｆ１０の第一実施例のうち、主要部分を抽出して表した、概略ブロック図である。プロセッサ０は、ＣＰＵバス１を介して、ＣＰＵ２、割込みコントローラ３、ＣＰＵバス・アービタ４、メモリ・コントローラ５、ＣＰＵバス・マスタ・デバイス６、ＣＰＵバス・スレーブ・デバイス７、通信Ｉ／Ｆ１０が接続されている。またメモリ・コントローラ５は、外部のメインメモリ６０と接続され、通信Ｉ／Ｆ１０は、他のプロセッサ０との通信を行うローカルバス５０と接続されている。
【００１３】
なお、前記ＣＰＵバス・マスタ・デバイス６並びにＣＰＵバス・スレーブ・デバイス７は、ＣＰＵバス上の様々なデバイスを代表して記してある。実際には、ＣＰＵバス１には、タイマ、ＲＯＭコントローラ、シリアル通信Ｉ／Ｆ、カードＩ／Ｆ、パルス・ジェネレータ、ＤＭＡコントローラ、画像の形成処理や圧縮・伸張処理を行う画像処理部などのデバイスが存在している。
【００１４】
通信Ｉ／Ｆ１０の主要構成要素は、ＣＰＵバス・マスタ部１１、ＣＰＵバス・スレーブ部１２、ＦＩＦＯ１３、ローカルバス・マスタ部１４、ローカルバス・スレーブ部１５、ローカルバスＩ／Ｆ部１６、レジスタ部１７である。ＣＰＵバスとローカルバスは異なるクロック周波数で動作していることを前提としているため、ＦＩＦＯ１３は２ポートのメモリ素子（具体的にはフリップ・フロップだが、容量によってはＳＲＡＭで構成することもあり得る）で構成されており、２つの周波数ドメイン間の同期化を行う同期化部１８も備えている。
【００１５】
本プロセッサがマスタ・モードの時（即ち、マスタ・プロセッサとして動作する時）、通信Ｉ／Ｆ１０はＣＰＵバスのスレーブ・デバイスとして振る舞い、同時にローカルバスのマスタ・デバイスとして振る舞う。例えば、ＣＰＵバス・マスタ・デバイス６から通信Ｉ／Ｆ１０を介してスレーブ・プロセッサへデータ転送を行う場合、その経路は、ＣＰＵバス１、ＣＰＵバス・スレーブ部１２、ＦＩＦＯ１３、ローカルバス・マスタ部１５、ローカルバスＩ／Ｆ部１６、ローカルバス５０を経て、スレーブ・プロセッサへと転送が行われる。
【００１６】
一方、本プロセッサがスレーブ・モードの時（即ち、スレーブ・プロセッサとして動作する時）、通信Ｉ／Ｆ１０はＣＰＵバスのマスタ・デバイスとして振る舞い、同時にローカルバスのスレーブ・デバイスとして振る舞う。例えば、マスタ・プロセッサから通信Ｉ／Ｆ１０を介してスレーブ・プロセッサのＣＰＵバス・スレーブ・デバイスへデータを転送する場合、その経路は、ローカルバス５０、ローカルバスＩ／Ｆ部１６、ローカルバス・スレーブ部１４、ＦＩＦＯ１３、ＣＰＵバス・マスタ部１１、ＣＰＵバス１を経て、ＣＰＵバス・スレーブ・デバイス７へと転送が行われる。
【００１７】
レジスタ部１７は、通信Ｉ／Ｆ１０の動作設定を行うためのレジスタを備えている。また、レジスタ部１７には２つの割込み要求（例外処理要求）ポートがあり、ｃｏｍ＿ｉｎｔ１９はプロセッサ内部の割込みコントローラ３を介して、ＣＰＵ２へ割込み要求を出力する。一方、ｌｏｃ＿ｓｔａｔ＿ｉｎｔ２０はスレーブ・モードの時、マスタ・プロセッサに対して割込み要求を出力する。
【００１８】
図３は、本発明に係るプロセッサ間通信の動作の概略を説明するブロック図である。マスタ・プロセッサ１００、スレーブ・プロセッサ０  ２００、スレーブ・プロセッサ１  ３００、スレーブ・プロセッサ２  ４００は、各々図２のプロセッサ０を用いており（即ち、各々機能的に全く等価なものであり）、システムの初期化時に役割が決定される。ただし、各プロセッサは常に同じ役割を担い、例えばマスタ・プロセッサ１００が、システムの初期化条件によってスレーブ・プロセッサになるようなことはない。また、マスタ・プロセッサ１００はローカルバス５０上では常にイニシエータとなり、３つのスレーブ・プロセッサ０〜２  ２００〜４００はローカルバス５０上では常にターゲットとなる。なお、図３においては煩瑣を避けるため、スレーブ・プロセッサ１  ３００並びにスレーブ・プロセッサ２  ４００の内部を省略している。同様に、マスタ・プロセッサ１００、スレーブ・プロセッサ０  ２００についても、説明に不要な個所は省略して図示している。また、マスタ・プロセッサ内部の各部の符号（番号）は、図２のプロセッサ０の符号に１００を加えたものであり、スレーブ・プロセッサ０  ２００内部の各部の符号は、図２のプロセッサ０の符号に２００を加えたものである。
【００１９】
データ通信はメモリ間転送の形で行われる。例えばマスタ・プロセッサ  １００のＣＰＵ１０２が通信のマスタとなり、マスタ・プロセッサ１００の通信Ｉ／Ｆ１１０、ローカルバス５０、スレーブ・プロセッサ０  ２００の通信Ｉ／Ｆ２１０を介してスレーブ・プロセッサ０  ２００のＣＰＵバス・スレーブ・デバイス２０７に対して書き込みや読み出しが行われる。このデータ通信の経路は、図３の点線を付した経路、即ちマスタ・プロセッサ１００のＣＰＵ１０１を起点に（１−１）、（１−２）、（１−３）を経て、スレーブ・プロセッサ０  ２００のスレーブ・デバイス２０７を終点とする経路である。他にも同様にして、例えばマスタ・プロセッサ０  １００のＤＭＡコントローラ（図示せず）が通信のマスタとなり、スレーブ・プロセッサ０  ２００のメインメモリ（図３では省略している）のデータをマスタ・プロセッサ１００のメインメモリ（図３では省略している）にＤＭＡ転送するようなことも行える。
【００２０】
データ通信を行う際のターゲットの指定は、通信Ｉ／Ｆ内部のｉｄｎｕｍレジスタによって行う。本実施例においては、各プロセッサにＩＤナンバーがふられている。具体的には、マスタ・プロセッサ１００が７、スレーブ・プロセッサ０  ２００が０、スレーブ・プロセッサ１  ３００が１、スレーブ・プロセッサ２  ４００が２となっている。本実施例においては、スレーブ・プロセッサがとりうるＩＤナンバーの最大値は６で、最大７個のスレーブ・プロセッサがローカルバスに接続できる。そして、マスタ・プロセッサ１００のｉｄｎｕｍレジスタ１１７ａにターゲットのＩＤナンバーを書き込むことでターゲットの指定ができる。例えばｉｄｎｕｍレジスタ１１７ａの値が０の時は、スレーブ・プロセッサ０  ２００がマスタ・プロセッサの通信ターゲットとなる。
【００２１】
また、データ通信を行う際のアドレス指定は、通信Ｉ／Ｆ内部のマスタ・ベースアドレスレジスタとスレーブ・ベースアドレスレジスタによって行う。図４は、本実施例におけるプロセッサ間通信のメモリマップ・イメージを示した説明図である。本実施例においては、マスタ・プロセッサから見たスレーブ・プロセッサのターゲット・メモリ領域は０ｘ４０００＿００００番地から０ｘ４０ｆｆ＿ｆｆｆｆに割り当てられている。このため、マスタ・プロセッサ１００のマスタ・ベースアドレスレジスタ１１７ｂには０ｘ４０００＿００００を指定する。一方、スレーブ・プロセッサ内部のターゲット・メモリ領域は、スレーブ・プロセッサのスレーブ・ベースアドレスレジスタに指定する。例えば、スレーブ・プロセッサ０  ２００のスレーブ・ベースアドレスレジスタ２１７ｃの値が０ｘｅ０００＿００００で、マスタ・プロセッサ１００のＣＰＵ１０２がスレーブ・プロセッサ０  ２００のメモリ領域を読み出すためにアドレス０ｘ４０８０＿００００を発行した場合、実際にはスレーブ・プロセッサ０  ２００の０ｘｅ０８０＿００００番地が読み出されることとなる。
【００２２】
本システムには、データ通信の他にレジスタ間通信の機能がある。レジスタ間通信は、通信Ｉ／Ｆ内部のコマンドレジスタとステータスレジスタによって行う。前記マスタ・プロセッサ１００のｉｄｎｕｍレジスタ１１７ａに０を書き込んで通信ターゲットとしてスレーブ・プロセッサ０  ２００を指定し、マスタ・プロセッサ１００のＣＰＵ１０２がマスタ・プロセッサ１００のコマンドレジスタ１１７ｄに対して書き込みを行うと、ローカルバス５０を介して、スレーブ・プロセッサ０  ２００の通信Ｉ／Ｆ２１０のコマンドレジスタ２１７ｄにデータが書き込まれる。図５は、本実施例におけるレジスタ間通信の通信経路を表す説明図である。図３と同様、説明に不要な個所は省略して図示している。また、符号のつけ方も図３と同様である。前記のコマンドレジスタの通信経路は、図５の点線を付した経路でいうと、マスタ・プロセッサ１００のＣＰＵ１０１を起点に（１−１）、（１−２）、（１−３）を経て、スレーブ・プロセッサ０  ２００のレジスタ部２１７を終点とする経路である。これを受けてスレーブ・プロセッサ０  ２００内部においては、通信Ｉ／Ｆ２１０から割込みコントローラ２０３を介して、ＣＰＵ２０２に対して割込み要求が伝えられる。そしてＣＰＵ２０２は、通信Ｉ／Ｆ２１０のコマンドレジスタ１１７ｄを読み出し、コマンドに応じた処理を行う。図５の点線を付した経路でいうと、スレーブ・プロセッサ０  ２００のレジスタ部２１７を起点に（２）を経てＣＰＵ２０２へ至る経路と、ＣＰＵ２０２を起点に（３）を経てレジスタ部２１７を終点とする経路である。
【００２３】
一方、スレーブ・プロセッサ０  ２００において、ＣＰＵ２０２が通信Ｉ／Ｆ２１０のステータスレジスタ２１７ｅに書き込みを行われると、スレーブ・プロセッサ０  ２００の通信Ｉ／Ｆ２１０からマスタ・プロセッサ１００の割込みコントローラ１０３に対して、割込み要求信号ｌｏｃ＿ｓｔａｔ＿ｉｎｔ２１８がアサートされる。マスタ・プロセッサ１００においては、この割込み要求がＣＰＵ１０２に伝えられる。図５の点線を付した経路でいうと、スレーブ・プロセッサ０  ２００のＣＰＵ２０２を起点に（３）を経てレジスタ部２１７へ至る経路と、レジスタ部２１７を起点に（４）を経てマスタ・プロセッサ１００のＣＰＵ１０２を終点とする経路である。これを受けてＣＰＵ１０２は、ｉｄｎｕｍレジスタ１１７ａで通信ターゲットとしてスレーブ・プロセッサ０  ２００を指定し、通信Ｉ／Ｆ１１７のステータスレジスタ１１７ｅを読み出す。通信Ｉ／Ｆ１１０は、ステータスレジスタ１１７ｅのリードアクセスを検知すると、ローカルバス５０を介して、スレーブ・プロセッサ０  ２００のステータスレジスタ２１７ｅの値を読み出し、それをマスタ・プロセッサ１００のＣＰＵ１０２に出力する。そしてＣＰＵ１０２は読み出したステータスに応じた処理を行う。この読み出しの経路は、スレーブ・プロセッサ０  ２００のレジスタ部２１７を起点に（１−３）、（１−２）、（１−１）を経て、マスタ・プロセッサ１００のＣＰＵ１０２を終点とする経路である。
【００２４】
なお、前記のコマンドやステータスは自由に定義することが可能で、従来技術の説明で述べたような、通信の上位プロトコルの役割を形成することができる。
【００２５】
図６は、本実施例におけるローカルバス５０のプロトコルを表すタイミング・ダイアグラムである。通信の開始時にはマスタ・プロセッサからｌｏｃ＿ｆｒａｍｅ＿ｌがアサートされる。最初の２サイクルはアドレス・フェーズであり、ターゲットのスレーブ・プロセッサのＩＤナンバーや、通信のデスティネーション・アドレスなどが発行される。これを受けて、ターゲットのスレーブ・プロセッサは、ｌｏｃ＿ｄｅｖｓｅｌ＿ｌをアサートし、マスタ・プロセッサに応答する。次いで、データの授受の準備が完了すると、ターゲットのスレーブ・プロセッサはｌｏｃ＿ｔｒｄｙ＿ｌをアサートし、データの送受信が開始する。そして通信終了の１サイクル前になると、マスタ・プロセッサがｌｏｃ＿ｆｒａｍｅ＿ｌをネゲートし、次のサイクルで通信が終了する。
【００２６】
次に、本発明の特徴であるアーリー・バースト・ターミネーション後のバースト再開動作について説明する。図１は、本発明によるプロセッサのアーリー・バースト・ターミネーション後のバースト再開動作の第一実施例を説明する、通信Ｉ／Ｆ１０内部の詳細ブロック図である。図２との共通個所については、図２と同じ符号を用いている。なお、以下の説明においては、本プロセッサがマスタ・モードで動作している場合であるため、図３のマスタ・プロセッサ１００であるものとし、図１の符号に１００を加えて説明する。
【００２７】
ＣＰＵバススレーブ部１１２は、ＣＰＵバスＩ／Ｆ部１２１、データ転送制御部１２２、バースト長保持手段１２３、バーストカウンタ１２４、バースト中断検出部１２５、マスタＩＤ保持手段１２６から構成される。また本発明においては、ＣＰＵバス１０１は、ＡＲＭ社が仕様を定めたＡＭＢＡ（Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ  Ｂｕｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ）  ＡＨＢ（Ａｄｖａｎｃｅｄ  Ｈｉｇｈ−Ｐｅｒｆｏｒｍａｎｃｅ  Ｂｕｓ）となっている。なお、以下の説明においては、ＡＭＢＡ  ＡＨＢに関する詳しい説明については省略する。
【００２８】
まず、通常時（すなわち、アーリー・バースト・ターミネーションが起きない場合）の動作について説明する。ＣＰＵバスＩ／Ｆ部１２１はＣＰＵバス１０１上の信号ＨＴＲＡＮＳＩＮ、ＨＡＤＤＲＩＮ、ＨＷＲＩＴＥＩＮ、ＨＢＵＲＳＴＩＮ、ＨＳＩＺＥＩＮ、ＨＲＥＡＤＹＩＮ、ＨＳＥＬＩＮをデコードし、通信Ｉ／Ｆ１１０がＣＰＵバス１のスレーブデバイスとして選択されたことを検知した場合、ＣＰＵバススレーブ部１１２の各部を起動するためのパルス信号ｈｉｔをアサートするとともに、データ転送制御部１２２に対するコマンド信号ｃｍｄを出力する。コマンド信号ｃｍｄは、アドレスやアクセスタイプ（すなわちリード／ライト、ｂｙｔｅ／ｈａｌｆ−ｗｏｒｄ／ｗｏｒｄなど）の情報が２９ｂｉｔのバス線となっている。また、バースト長保持手段１２３にはバースト長を表す信号ＨＢＵＲＳＴＩＮが、マスタＩＤ保持手段１２６にはＣＰＵバス１０１における現在のバスマスタを表す信号ＨＭＡＳＡＴＥＲＩＮが各々接続されている。
【００２９】
ＣＰＵバスＩ／Ｆ部１２１から前記ｈｉｔアサートされると、データ転送制御部１２２はｃｍｄを、バースト長保持手段１２３はＨＢＵＲＳＴＩＮを、マスタＩＤ保持手段１２６はＨＭＡＳＴＥＲＩＮを各々保持する。同時にデータ転送制御部１２２はデータ転送を開始し、ライトアクセスの場合はＨＷＤＴＡＩＮから入力されるデータをＦＩＦＯ１１３もしくはレジスタ部１１７へ出力し、リードアクセスの場合はＦＩＦＯ１１３もしくはレジスタ部１１７から出力されるデータをＨＲＤＡＴＡＩＮへ出力する。
【００３０】
バースト転送の際には、バースト長保持手段１２３から出力されるバースト長信号ｌｅｎとバーストカウンタ１２４から出力されるカウント値ｂｃｎｔが参照される。データ転送制御部１２２はデータを１ｂｅａｔ転送するごとにバーストカウンタ１２４に対するインクリメント信号ｉｎｃをアサートする。そしてカウント値ｂｃｎｔが、ｌｅｎが表すバースト長と等しくなるまで転送が行われる。
【００３１】
そして転送が終了すると、データ転送制御部１２２はＣＰＵバスＩ／Ｆ部１２１に対して転送が終了したことを表すパルス信号ｄｏｎｅをアサートするとともに、バーストカウンタ１２４に対するクリア信号ｃｌｒをアサートしてｉｄｌｅ状態に戻る。ｄｏｎｅのアサートを受けて、ＣＰＵバスＩ／Ｆ部１２１はＣＰＵバス１０１を開放し、ｉｄｌｅ状態に戻る。またｃｌｒのアサートを受けて、バーストカウンタ１２４はカウント値がクリアされる。
【００３２】
次に、バースト転送中にアーリー・バースト・ターミネーションが起きた場合の動作について説明する。
【００３３】
まず、ＣＰＵバスＩ／Ｆ部１２１がデータ転送制御部１２２、バースト長保持手段１２３、マスタＩＤ保持手段１２６に対してｈｉｔをアサートし、ｈｉｔのアサートを受けてデータ転送制御部１２２、バースト長保持手段１２３、マスタＩＤ保持手段１２６が各々ｃｍｄ、ＨＢＵＲＳＴＩＮ、ＨＭＡＳＴＥＲＩＮを保持するとともに、データ転送制御部１２２が転送を開始するところまでは、前記と全く同様である。
【００３４】
バースト中断検出部１２５は、ＣＰＵバス１０１上の信号ＨＴＲＡＮＳＩＮ、ＨＢＵＲＳＴＩＮ、ＨＲＥＡＤＹＩＮ、ＨＳＥＬＩＮをデコードし、バースト転送中にアーリー・バースト・ターミネーションが起きるとバースト中断信号ｅｂｔをＨｉにする。ｅｂｔは、残りのバースト転送が開始されるまでの間、Ｈｉを保持される。
【００３５】
ｅｂｔのアサートを受けて、データ転送制御部１２２は、残りのデータが転送されるのを待つ待機状態に遷移し、ＣＰＵバスＩ／Ｆ部１２１はＣＰＵバス１０１を開放してｉｄｌｅ状態に戻る。さらにデータ転送制御部１２２は、前記の待機状態の間、ＨＲＤＡＴＡＯＵＴに所定の値（本実施例においては０ｘＦＦ００＿００００）を出力する。
【００３６】
次に、この状態でＣＰＵ１０２が他のプロセッサとレジスタ間通信を行うために、通信Ｉ／Ｆ１１０へアクセスを行った場合の動作について説明する。
【００３７】
マスタＩＤ保持手段１２６は、アーリー・バースト・ターミネーションが起きたＣＰＵバスマスタのＩＤを保持しており、ＩＤ信号ｌａｓｔ＿ｍａｓｔｅｒとしてＣＰＵバスＩ／Ｆ部１２１に出力する。ＣＰＵバスＩ／Ｆ部１２１はＣＰＵバス１０１上の信号ＨＴＲＡＮＳＩＮ、ＨＡＤＤＲＩＮ、ＨＷＲＩＴＥＩＮ、ＨＢＵＲＳＴＩＮ、ＨＳＩＺＥＩＮ、ＨＲＥＡＤＹＩＮ、ＨＳＥＬＩＮをデコードしている。そして、通信Ｉ／Ｆ１１０がＣＰＵバス１のスレーブデバイスとして選択されたことを検知し、かつｅｂｔがアサートされている場合、現在のＨＭＡＳＴＥＲＩＮとｌａｓｔ＿ｍａｓｔｅｒの値を比較する。また、比較結果の如何に関わらず、ｈｉｔはアサートせず、ｃｍｄの更新も行わない。これにより、バースト長保持手段１２３、バーストカウンタ１２４、マスタＩＤ保持手段１２６ならびにｃｍｄの値は、アーリー・バースト・ターミネーションが起きた状態のまま保持される。
【００３８】
ＨＭＡＳＴＥＲＩＮがｌａｓｔ＿ｍａｓｔｅｒの値と等しくない場合、ＣＰＵバスＩ／Ｆ部１２１は、現在のバストランザクションがＣＰＵ１０２からのレジスタ間通信のためのリードアクセスとみなし、ＣＰＵバスマスタに対してＨＲＥＡＤＹＯＵＴをアサートしてＣＰＵバスマスタに対して応答する。このとき、前記のとおり、データ転送制御部１２２からはＨＲＤＡＴＡＯＵＴとして前記所定の値（本実施例においては０ｘＦＦ００＿００００）が出力されているため、ＣＰＵバスマスタ（すなわちＣＰＵ１０２）に対して前記所定の値がリードデータとして出力される。
【００３９】
本実施例においては、レジスタ間通信によるリードデータが前記所定の値であった場合、通信Ｉ／Ｆ１１０においてアーリー・バースト・ターミネーションが発生し、現在レジスタ間通信が行えないため、リトライしなければならない、という取り決めになっている。すなわち、通信Ｉ／Ｆ１１０がＣＰＵ１０２に対して前記所定のリードデータを返すことは、通信Ｉ／Ｆ１１０がソフトウエア的にリトライを通知したことに相当する。
【００４０】
なお、ＣＰＵ１０２に対してリトライさせる方法としては、ＨＲＥＳＰＯＵＴとしてハードウエア的にリトライ・レスポンスを返す方法もある。しかしこの場合、ソフトウエアを介さないため、ＣＰＵバス１０１が混んでいるためにアーリー・バースト・ターミネーションが起きたＣＰＵバスマスタがバス権を取れない状態が続くと、ソフトウエア的にタイムアウトとみなされてしまうことがある。レジスタ間通信を用いてハングアップ検出を行う場合がこれに該当し、所定の時間内にレジスタ間通信が完了しないと、ソフトウエア的にハングアップとみなされ、通信Ｉ／Ｆ１１０がリセットされてしまう。前記のようにソフトウエア的にリトライさせるのは、これを防ぐためである。
【００４１】
一方、ＨＭＡＳＴＥＲＩＮがｌａｓｔ＿ｍａｓｔｅｒの値と等しい場合、ＣＰＵバスＩ／Ｆ部１２１は、現在のバストランザクションが、アーリー・バースト・ターミネーションによって転送が中断されたＣＰＵバスマスタが残りのデータ転送を再開したとみなし、バースト中断検出部１２５に対してバースト再開信号ｃｌｒ＿ｅｂｔをアサートする。これを受けてバースト中断検出部１２５はｅｂｔをネゲートする。データ転送制御部１２２はｅｂｔのネゲートを受けて、前記の待機状態から復帰し、アーリー・バースト・ターミネーションによって中断された残りのデータ転送を開始する。
【００４２】
以上のような処理を行うことにより、アーリー・バースト・ターミネーション後のバースト再開動作を簡便な回路で実現できるとともに、ソフトウエア的なタイムアウトを防ぐことが可能となる。
【００４３】
（第二実施例）
図７は本発明の第二実施例を示すブロック図である。本実施例は前記の第一実施例を適用して、高画素の固体撮像素子（例えば６００〜１０００万画素のＣＣＤ）を用いたデジタルカメラで秒間８フレームといった高速連写を実現するためのシステムである。スイッチ群５１１は、ＡＥのモード、露出設定、連写モードをはじめとする、撮影に関わる様々な設定情報等をカメラＣＰＵ５０１へ出力する。特にレリーズスイッチが出力する信号は、ＡＥやＡＦの開始トリガや、撮影の開始トリガとなる。撮像手段５１０は、Ａ／Ｄコンバータ５２０へ画像データを出力するだけでなく、ＡＥやＡＦの情報をカメラＣＰＵ５０１へ出力する。これらの各種信号を基に、カメラＣＰＵ５０１は撮像手段５１０、メカ群５１２、表示手段５１３並びに画像処理処理部５０３の各部を制御する。またメインメモリ５０２には、カメラＣＰＵ５０１のためのプログラムやデータ格納されている。
【００４４】
画像処理部５０３は、４チャンネルのＡ／Ｄコンバータ５２０、データ分配手段５２１、４つのプロセッサ１００、２００、３００、４００が主要構成要素である。前記４つのプロセッサは各々、本発明の第一実施例で述べたマスタ・プロセッサ１００、スレーブ・プロセッサ０  ２００、スレーブ・プロセッサ１  ３００、スレーブ・プロセッサ２  ４００にあたるもので、各々機能的に各々全く等価なものである。そして、プロセッサ間通信のためのローカルバス５０で接続されていることも第一実施例と同様で、かつ、通信方法やアーリー・バースト・ターミネーション後のバースト再開動作についても第一実施例と同様である。
【００４５】
撮像手段５１０内部にある固体撮像素子は、４チャンネル（ライン）読出しが可能なもので、Ａ／Ｄコンバータ５２０も４チャンネル分を具備し、データ分配手段５２１に対しても４チャンネル分のデジタル画像データが出力される。
【００４６】
プロセッサ１００〜４００による画像処理は、フレーム単位で処理を行い、並列化している。即ち連写時の１フレーム目をマスタ・プロセッサ１００が、２フレーム目をスレーブ・プロセッサ０  ２００が、３フレーム目をスレーブ・プロセッサ１  ３００が、４フレーム目をスレーブ・プロセッサ２  ４００が処理する。以降のフレームについても同様に処理を行い、プロセッサ１００〜４００はフレーム単位にパイプライン的な動作をする。データ分配手段５２１はＡ／Ｄコンバータ５２０の出力データを一旦蓄え、フレーム単位に各プロセッサへ分配する機能を担う。
【００４７】
なお、本実施例においては、フレーム単位で並列化を行っているが、他の単位で並列化する方法もある。例えば、１フレームの画像を８ラインのストライプ単位に分割し、このストライプ単位にプロセッサ１００〜４００に画像を分配し並列化を行う方法や、１本のストライプをさらに細かく分割した、横３２画素×縦８画素のタイルの単位で並列化する方法である。この方法を採れば、データ分配手段５２１内部に内蔵しているデータバッファの容量を削減することが可能である場合もある。
【００４８】
図８は、プロセッサ１００〜４００の、本実施例における主要部分を示す概略ブロック図である。図２との共通個所については、図２と同じ符号を用いている。なお、メインメモリ６０並びにＲＯＭ６１は、図７においては図８の符号に各プロセッサの符号の数字を足した形で表している（例えば、マスタ・プロセッサに接続されるメインメモリの符号は１６０、スレーブ・プロセッサ０  ２００に接続されるメインメモリの符号は２６０、というように）。
【００４９】
ＲＯＭコントローラ４１、カードＩ／Ｆ４２、シリアル通信Ｉ／Ｆ４３、外部デバイスＩ／Ｆ４４は、ＤＭＡコントローラ１  ４０を介してＣＰＵバス１と接続され、画像処理部４６はＤＭＡコントローラ２  ４５を介してＣＰＵバス１と接続されている。またタイマ４７もＣＰＵバス１と接続されている。このうちＲＯＭコントローラ４１とタイマ４７は、プロセッサ１００〜４００の全てで使用されるが、他のモジュールについてはマスタ・プロセッサ１００のみで使用され、スレーブ・プロセッサ０〜２  ２００〜４００においては休止しており、外部との接続もなされていない。
【００５０】
各プロセッサの画像処理部４６の内部では、図７のデータ分配手段５２１より入力された画像データに対してホワイトバランス、色変換等の様々な画像形成処理と、形成後の画像を圧縮する画像圧縮処理が行われる。処理後のデータはメモリ・コントローラ５を介して一旦メインメモリ６０へ蓄えられる。
【００５１】
図７のマスタ・プロセッサ１００は、同じく図７のスレーブ・プロセッサのメインメモリ２６０、３６０、４６０に蓄えられた画像データを、ローカルバス５０を介してメインメモリ６０（図７においては１６０）に転送する。そしてメインメモリ６０へ蓄えられた画像データは、ファイルとして形成された後、カードＩ／Ｆ４２を介して外部の記録媒体６２へ記録される。もしくは、外部の記録媒体６２には記録せず、外部デバイスＩ／Ｆ４４を介して、外部のパーソナルコンピュータ６４等に直接送信される。またシリアル通信Ｉ／Ｆ４３は、カメラＣＰＵ５０１との通信に用いられる。
【図面の簡単な説明】
【００５２】
【図１】本発明によるプロセッサのアーリー・バースト・ターミネーション後のバースト再開動作の第一実施例を説明する、通信Ｉ／Ｆ１０内部の詳細ブロック図である。
【図２】本発明に係るプロセッサ０並びに通信Ｉ／Ｆ１０の第一実施例のうち、主要部分を抽出して表した、概略ブロック図である。
【図３】本発明に係るプロセッサ間通信の動作の概略を説明するブロック図である。
【図４】本発明の第一実施例におけるプロセッサ間通信のメモリマップ・イメージを示した説明図である。
【図５】本発明の第一実施例におけるレジスタ間通信の通信経路を表す説明図である。
【図６】本発明の第一実施例におけるローカルバス５０のプロトコルを表すタイミング・ダイアグラムである。
【図７】本発明の第二実施例を示すブロック図である。
【図８】プロセッサ１００、２００、３００、４００の、本発明の第二実施例における主要部分を示す概略ブロック図である。
【図９】従来技術を説明する概略ブロック図である。
【符号の説明】
【００５３】
０  プロセッサ
１、１０１、１０２  ＣＰＵバス
２、１０２、２０２  ＣＰＵ
３、１０３、２０３  割込みコントローラ
４、１０４、２０４  ＣＰＵバス・アービタ
５  メモリ・コントローラ
６、１０６、２０６  ＣＰＵバス・マスタ・デバイス
７、１０７、２０７  ＣＰＵバス・スレーブ・デバイス
１１、１１１、２１１  ＣＰＵバス・マスタ部
１２、１１２、２１２  ＣＰＵバス・スレーブ部
１３、１１３、２１３  ＦＩＦＯ
１４、１１４、２１４  ローカルバス・スレーブ部
１５、１１５、２１５  ローカルバス・マスタ部
１６、１１６、２１６  ローカルバス・Ｉ／Ｆ部
１７、１１７、２１７  レジスタ部
１８、１１８、２１８  同期化部
２１  ＣＰＵバスＩ／Ｆ部
２２  データ転送制御部
２３  バースト長保持手段
２４  バーストカウンタ
２５  バースト中断検出部
２６  マスタＩＤ保持手段
４０  ＤＭＡコントローラ１
４１  ＲＯＭコントローラ
４２  カードＩ／Ｆ
４３  シリアル通信Ｉ／Ｆ
４４  外部デバイスＩ／Ｆ
４５  ＤＭＡコントローラ２
４６  画像処理部
５０  ローカルバス
６０、１６０、２６０、３６０、４６０  メインメモリ
６１、１６１、２６１、３６１、４６１  ＲＯＭ
６２  記録媒体
６３  通信デバイス
６４  パソコン
１００  マスタ・プロセッサ
２００  スレーブ・プロセッサ０
３００  スレーブ・プロセッサ１
４００  スレーブ・プロセッサ２
５００  撮像装置
５０１  カメラＣＰＵ
５０２  メインメモリ
５０３  画像処理部
５１０  撮像装置
５１１  スイッチ群
５１２  メカ群
５１３  表示手段
５２０  Ａ／Ｄコンバータ
５２１  データ分配手段
【図１】
2007087179.tif 000003
【図２】
2007087179.tif 000004
【図３】
2007087179.tif 000005
【図４】
2007087179.tif 000006
【図５】
2007087179.tif 000007
【図６】
2007087179.tif 000008
【図７】
2007087179.tif 000009
【図８】
2007087179.tif 000010
【図９】
2007087179.tif 000011