(57)【要約】【課題】  複数のプロセッサを効率的に並列動作させることが可能な情報処理装置、情報処理システムおよび情報処理方法を提供する。【解決手段】  各サブプロセッサ２４−１〜２４−ｎに圧縮伸長器２４Ｂ−１〜２４Ｂ−ｎを設けることにより、システムバス２９上を転送するデータを圧縮し、バスから受信したデータを伸張する機能を提供する。この機能により、メインメモリ２３とサブプロセッサ２４−１〜２４−ｎ内のローカルメモリ１４Ａ−１〜１４Ａ−ｎとの間の転送データは圧縮され、メモリ間のデータ転送時間がシステム全体のボトルネックになることを解消することが可能になる。【選択図】  図１
2005301607.tif 000002
【特許請求の範囲】
【請求項１】
バスと、このバスに共通に接続された複数の演算プロセッサとを備え、
各演算プロセッサが、
演算器と、
前記演算器による演算結果データを圧縮する機能と、前記バスを介して取り込んだ入力データを伸長する機能とを有する圧縮伸長器と
を有することを特徴とする情報処理装置。
【請求項２】
前記圧縮伸長器は、前記演算器による演算結果データに対して圧縮処理を行うか否かを判断し、その判断結果に応じて、演算結果データをそのまま、または圧縮処理を行った上で前記バス上に送出する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記圧縮伸長器は、前記演算器の演算所要時間と、前記バス上におけるデータ転送所要時間との大小関係に基づいて、前記バス上に送出する演算結果データに対して圧縮処理を行うか否かを判断する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記圧縮伸長器は、前記演算結果データの種類をも加味して、前記バス上に送出する演算結果データに対して圧縮処理を行うか否かを判断する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記圧縮伸長器は、前記演算結果データに対して一旦圧縮処理を行い、その圧縮処理結果に基づいて、圧縮処理済の演算結果データまたは圧縮前の演算結果データのいずれを前記バス上に送出するかを判断する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項６】
前記圧縮伸長器はさらに、前記演算結果データに対して圧縮処理を行う場合に、その圧縮処理の方式を選定する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項７】
前記圧縮伸長器は、前記演算結果データの種類に基づいて、前記圧縮処理の方式を選定する
ことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記圧縮伸長器は、前記入力データに対して伸長処理を行うか否かを判断し、その判断結果に応じて、前記入力データをそのまま、または伸長処理を行った上で前記演算器に入力する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項９】
前記圧縮伸長器はさらに、前記入力データに対して伸長処理を行う場合に、その伸長処理の方式を選定する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記複数の演算プロセッサは、メインプロセッサと、複数のサブプロセッサとを含む
ことを特徴とする請求項１に記載の情報処理装置。
【請求項１１】
バスと、このバスに共通に接続された複数の演算プロセッサとを備えた情報処理装置に適用される方法であって、
各演算プロセッサにおいて、
前記バスを介して取り込んだ入力データを選択的に伸長し、
伸長した入力データを基に演算処理を行い、
前記演算処理の結果である演算結果データに対して選択的に圧縮処理を行って前記バス上に送出する
ことを特徴とする情報処理方法。
【請求項１２】
ネットワークに複数の情報処理装置を接続してなる情報処理システムであって、
各情報処理装置は、バスと、このバスに共通に接続された複数の演算プロセッサとを備え、
各演算プロセッサが、
演算器と、
前記演算器による演算結果データを圧縮する機能と、前記バスを介して取り込んだ入力データを伸長する機能とを有する圧縮伸長器と
を有することを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを備えた情報処理装置、そのような情報処理装置がネットワークに接続されて構成された情報処理システム、およびそのような情報処理装置に適用される情報処理方法に関する。
【背景技術】
【０００２】
従来より、複数のプロセッサ（演算ユニット）を用いて構成されたマルチプロセッサ分散並列処理システム（以下、マルチプロセッサシステムという。）が知られている。そのようなシステムとして、例えば、特許文献１、特許文献２等がある。
【特許文献１】特開平７−１５２６６４
【特許文献２】特開２００２−３５１８５０
【０００３】
このマルチプロセッサシステムでは、システムバスに接続された複数のプロセッサに処理を分散させ、並列に演算処理（信号処理）を行うようになっていることから、単一のプロセッサで信号処理を行った場合と比較して、大幅な演算能力の向上が期待できる。このシステムでは、例えば、各プロセッサが演算器とワークメモリ（以下、ローカルメモリという。）とを含み、各プロセッサがシステムバスを介してメインメモリを共有するように構成される。各プロセッサ内の演算器は、メインメモリからローカルメモリに転送されたデータを使用して演算を実行する。演算器は演算中、ローカルメモリにのみアクセスし、直接メインメモリを参照することはない。演算が終了すると、ローカルメモリ内の演算結果がメインメモリに書き戻される。
【０００４】
このような構成をとることで、以下の問題が解決される。
１．メインメモリを共有することによるアクセス競合の防止
２．低速なメインメモリを使うことによるパフォーマンス低下
３．システムバスのトラヒック増加防止
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記したマルチプロセッサシステムでは、メインメモリへのアクセスは演算前後のデータの入出力を行うときにのみ発生する。このとき、データ転送レートが十分に高ければプロセッサの並列度を増すほどシステム全体の処理能力は向上する。
【０００６】
しかしながら、従来のシステムでは、以下の理由からメインメモリとローカルメモリとの間のデータ転送レートがボトルネックとなり、演算器の並列度に見合った処理能力をシステムから引き出せない可能性がある。
【０００７】
１．メインメモリには大容量のものが要求されるので、コストの低いＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）が使われることが多いが、一般的にＤＲＡＭのアクセス速度はシステムバスの速度に比べて遅い。
２．システムバスは、各種周辺デバイスからのトランザクションデータの転送にも使用されることから、プロセッサ間のデータ転送またはプロセッサとメインメモリとの間のデータ転送だけがバスを占有する、ということはあり得ず、その結果、十分な転送レートを確保できない。
【０００８】
本発明はかかる問題点に鑑みてなされたもので、その目的は、複数のプロセッサを効率的に並列動作させることが可能な情報処理装置、情報処理システムおよび情報処理方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の情報処理装置は、バスと、このバスに共通に接続された複数の演算プロセッサとを備え、各演算プロセッサが、演算器と、演算器による演算結果データを圧縮する機能と、バスを介して取り込んだ入力データを伸長する機能とを有する圧縮伸長器とを有するようにしたものである。
【００１０】
本発明の情報処理方法は、バスと、このバスに共通に接続された複数の演算プロセッサとを備えた情報処理装置に適用される方法であって、各演算プロセッサにおいて、バスを介して取り込んだ入力データを選択的に伸長し、伸長した入力データを基に演算処理を行い、演算処理の結果である演算結果データに対して選択的に圧縮処理を行ってバス上に送出するようにしたものである。
【００１１】
本発明の情報処理システムは、ネットワークに複数の情報処理装置を接続してなる情報処理システムであって、各情報処理装置は、バスと、このバスに共通に接続された複数の演算プロセッサとを備え、各演算プロセッサが、演算器と、演算器による演算結果データを圧縮する機能と、バスを介して取り込んだ入力データを伸長する機能とを有する圧縮伸長器とを有するようにしたものである。
【００１２】
本発明の情報処理装置、情報処理システムおよび情報処理方法では、バスを介して取り込んだ入力データが選択的に伸長されると共に、伸長した入力データを基に演算処理が行われる。演算結果である演算結果データに対しては、選択的に圧縮処理が行われ、バス上に送出される。バスを伝送するデータは圧縮されているため、プロセッサ間でのデータ転送量が少なくなる。
【発明の効果】
【００１３】
本発明の情報処理装置、情報処理システムおよび情報処理方法によれば、複数のプロセッサ間でバス上を転送するデータを選択的に圧縮するようにしたので、まったく圧縮処理を行わない場合と比べて、データ量が少なくなり、転送時間を短縮化することができる。この結果、各プロセッサに対するデータ転送時間が演算性能のボトルネックとなるような分散処理システムの場合において、ボトルネック箇所を、転送時間から、圧縮伸張処理も含めた演算処理時間に転換することができる。これにより、複数のプロセッサを効率的に並列動作させてシステム全体の処理能力を向上させることができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明を実施するための最良の形態（以下、単に実施の形態という。）について、図面を参照して詳細に説明する。
【００１５】
図１は、本発明の一実施の形態に係る情報処理システムの全体構成を表すものである。なお、本発明の一実施の形態に係る情報処理装置および情報処理方法は、この情報処理システムによって具現化されるので、以下併せて説明する。
【００１６】
この情報処理システムは、ネットワーク１と、複数の情報処理装置２，３，４とを含んで構成されている。情報処理装置２〜４は、いずれも同様の構成を有する。以下においては、情報処理装置を代表して、情報処理装置２について説明する。なお、ここに図示した情報処理装置は３台であるが、２台でもよいし、あるいは４台以上あってもよい。
【００１７】
情報処理装置２〜４はそれぞれ、後述するソフトウェアセルを用い、ネットワーク１を介して、他の情報処理装置との間で、各種のコマンドや各情報処理装置が保有する装置情報および必要なプログラム等を送受信する機能を有する。ここで、装置情報とは、例えば、各情報処理装置の電源状況（電源がＯＮであるかＯＦＦであるか）、どんなタイプの情報処理装置か、どんな入出力インターフェースを持っているか、そのインターフェースはそれぞれどれに接続されているか、などを示す情報である。
【００１８】
情報処理装置２は、メインプロセッサ２１と、メモリコントローラ２２と、メインメモリ２３と、複数のサブプロセッサ２４−１〜２４−ｎ（ｎは正の整数）とを備えている。これらは、１つのマルチプロセッサユニット２０を構成している。このマルチプロセッサユニット２０は、集積化された１つの集積回路チップとして構成可能である。マルチプロセッサユニット２０には、この情報処理システム全体を通して情報処理装置２を一意的に識別できる識別子である情報処理装置ＩＤが割り当てられている。なお、以下の説明において、サブプロセッサ２４−１〜２４−ｎをまとめて示す場合には、適宜、これを総称して「サブプロセッサ２４」と表記するものとする。
【００１９】
情報処理装置２はまた、ディスクコントローラ２５と、外部記録装置２６と、バスアービタ２７と、ネットワーク接続部２８とを備えている。メインメモリ２３および外部記録装置２６を除く各ブロックは、システムバス２９によって相互に接続されている。メインメモリ２３はメモリコントローラ２２に接続され、外部記録装置２６はディスクコントローラ２５に接続されている。
【００２０】
メインプロセッサ２１は、サブプロセッサ２４によるプログラム実行（データ処理）のスケジュール管理と、マルチプロセッサユニット２０の全般的な管理とを行うためのものである。ただし、メインプロセッサ２１が管理のためのプログラム以外のプログラムを実行することもある。その場合には、メインプロセッサ２１はサブプロセッサ２４と同様に機能することになる。メインプロセッサ２１は、一時的なワークメモリとしてのローカルメモリ（ローカルストレージ）２１Ａを有する。
【００２１】
メインメモリ２３は、メインプロセッサ２１およびサブプロセッサ２４−１〜２４−ｎによって共有されるものであり、情報処理装置２の機能を司る各種の機能プログラムや処理に必要なデータ（各情報処理装置に関する装置情報を含む。）を記憶するようになっている。メインメモリとしては、例えばＤＲＡＭ（Dynamic Random Access Memory）のような比較的低速のメモリを使用することも可能である。
【００２２】
メモリコントローラ２２は、システムバス２９とメインメモリ２３との間にあって、いわゆるＤＭＡＣ（Direct Memory Access Controller ）として機能し、サブプロセッサ２４−１〜２４−ｎが、メインメモリ２３に格納されているプログラムおよびデータに直接（メインプロセッサ２１を介さずに）アクセスしてＤＭＡ（Direct Memory Access）転送を行うことを可能にしている。
【００２３】
サブプロセッサ２４−１〜２４−ｎは、それぞれ、メインプロセッサ２１の制御によって並列的かつ独立にプログラムを実行し、データを処理するようになっている。ただし、必要に応じ、メインプロセッサ２１内のプログラムがサブプロセッサ２４内のプログラムと連携して動作することもある。後述する機能プログラムもメインプロセッサ２１内で動作するプログラムである。
【００２４】
サブプロセッサ２４−１は、ローカルメモリ（ローカルストレージ）２４Ａ−１と、圧縮伸長器２４Ｂ−１と、演算器２４Ｃ−１とを有する。ローカルメモリ２４Ａ−１は、演算器２４Ｃ−１によって一時的なワークメモリとして使用されるものである。圧縮伸長器２４Ｂ−１は、システムバス２９を介してメインメモリ２３から転送され入力されたデータに対して必要に応じて伸長処理を行うと共に、ローカルメモリ２４Ａ−１に格納された送出対象データ（演算器２４Ｃ−１による演算結果データ）に対して必要に応じて圧縮処理を行うようになっている。演算器２４Ｃ−１は、メインメモリ２３から入力されてローカルメモリ２４Ａ−１に格納されたデータに対して所定の演算処理（信号処理）を行うものである。演算処理としては、例えば、画像処理や音響処理のほか、科学技術計算処理等がある。このサブプロセッサ２４−１では、バスアービタ２７からバス使用権（後述）を得てメインメモリ２３との間でデータ転送を行う際のタイミング制御等は、図示しない制御部によって行われるようになっている。但し、この制御部に代えて、演算器２４Ｃ−１がそのような制御を行うようにしてもよい。
【００２５】
圧縮伸長器２４Ｂ−１による圧縮アルゴリズムは、「可逆性が保障されるもの」であれば、種類を問わない。その代表的なものとして例えばハフマン符号に代表されるエントロピー符号が考えられる。但し、任意の信号処理に対して信号の発生頻度の偏りを利用した符号化方式を適用するのは困難である。圧縮伸張処理に伴うコストと圧縮効果とを考慮すると、差分予測符号化による圧縮アルゴリズムを採用することが好ましい。例えば、分散並列処理を適用するアプリケーションの一つとして動画に対する画像信号処理が考えられる。この画像信号処理では、通常、画像フレームを複数のマクロブロックと呼ばれる小さなブロックに分割し、マクロブロック単位で信号処理を行う。これを分散並列処理に適用する場合には、各プロセッサにマクロブロックを割り当てて並列演算させることになる。画像信号は空間的、時間的な相関が比較的強いため、予測を用いたデータ圧縮が効果的である。
【００２６】
なお、サブプロセッサの個数ｎには特に制限がないが、後述するように、情報処理装置全体としての処理速度の向上のためには、より多くのサブプロセッサを設けることが好ましい。他のサブプロセッサ２４−２〜２４−ｎについてもサブプロセッサ２４−１と同様の構成である。
【００２７】
ネットワーク接続部２８は、いわゆるＮＩＣ（Network Interface Card）と呼ばれるＬＡＮインターフェース部であり、ネットワーク１を構成するＬＡＮケーブルとシステムバス２９との間を接続している。
【００２８】
外部記録装置２６は、情報処理装置２の動作に必要な基本ソフトウェアであるＯＳ（オペレーティングシステム）のほか、後述する機能プログラムやドライバプログラム等のアプリケーションプログラム、および各種のデータを格納するものである。外部記録装置２６としては、例えば、ハードディスク装置やリムーバブルハードディスク装置のほか、ＤＶＤ（DigitalVersatileDisk) 装置、ＭＯ（Magneto Optical ）ドライブおよびＣＤ±ＲＷ（Compact Disc±ReWritable）ドライブ等の光ディスク装置や、メモリディスク、ＳＲＡＭ（Static Random Access Memory ）等が用いられる。ディスクコントローラ２５は、メインプロセッサ２１が外部記録装置２６に対してデータの読み書きを行う場合のアクセス制御を行うものである。
【００２９】
バスアービタ２７は、メインプロセッサ２１およびサブプロセッサ２４−１〜２４−ｎによるバス使用権を巡る調停処理を行うためのものである。具体的には、バスアービタ２７は、各プロセッサからのバス使用要求を受けて、所定のアルゴリズムに従って、１つのプロセッサにのみバス使用権を付与する。これにより、システム２９上でのデータの衝突を回避することができるようになっている。
【００３０】
上記のように、マルチプロセッサユニット２０内の各サブプロセッサ２４−１〜２４−ｎは、独立にプログラムを実行し、データを処理するようになっているが、異なるサブプロセッサがメインメモリ２３内の同一領域に対して同時に読み出しまたは書き込みを行った場合には、データの不整合を生じる可能性がある。そこで、このマルチプロセッサユニット２０では、そのようなデータ不整合を回避するために、以下のような排他的制御を行うようになっている。
【００３１】
図２は、メインメモリ２３およびローカルメモリ２４Ａ−１〜２４Ａ−Ｎにおけるデータ配置構成と、そのアクセス制御方法とを説明するためのものである。
【００３２】
図２（Ａ）に示したように、メインメモリ２３は、複数のメモリロケーションＭＭＬ0 〜ＭＭＬｍ（ｍは正の整数）によって構成される。各メモリロケーションＭＭＬ0 〜ＭＭＬｍ（以下、総称する場合には、単にＭＭＬと表記する。）は、アドレスを指定することによって特定される記憶領域である。各メモリローケーションＭＭＬには、そこに格納されているデータの状態を示す情報を格納するための追加セグメントＭＳＥＧ０〜ＭＳＥＧｍが割り振られている。各メモリロケーションＭＭＬにはまた、アクセスキーＡＫ０〜ＡＫｍも割り振られる。
【００３３】
各追加セグメントＭＳＥＧ０〜ＭＳＥＧｍ（以下、総称する場合には、単にＭＳＥＧと表記する。）は、Ｆ／Ｅビット、サブプロセッサＩＤおよびローカルメモリアドレスを含む。
【００３４】
Ｆ／Ｅビットは、以下のように定義される。「Ｆ／Ｅビット＝０」は、そのメモリロケーションＭＭＬのデータが、サブプロセッサ２４によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、データの読み出しは不可であるが、書き込みは可能であることを示す。Ｆ／Ｅビットはデータ書き込み後に「Ｆ／Ｅビット＝１」に設定されるようになっている。
【００３５】
「Ｆ／Ｅビット＝１」は、そのメモリロケーションＭＭＬのデータがサブプロセッサ２４によって読み出されておらず、未処理の最新データであることを示す。「Ｆ／Ｅビット＝１」の状態のメモリロケーションＭＭＬのデータは、読み出し可能であるが、書き込み不可である。Ｆ／Ｅビットは、サブプロセッサ２４によって読み出された後に「Ｆ／Ｅビット＝０」に設定されるようになっている。
【００３６】
「Ｆ／Ｅビット＝０（読み出し不可／書き込み可）」の状態にあるときに、そのメモリロケーションＭＭＬについて読み出し予約を設定することは可能である。「Ｆ／Ｅビット＝０」のメモリロケーションＭＭＬに対する読み出し予約は、サブプロセッサ２４が、読み出し予約を行うメモリロケーションＭＭＬの追加セグメントＭＳＥＧに、読み出し予約情報としてそのサブプロセッサ２４のサブプロセッサＩＤおよびローカルメモリアドレスを書き込むことで行われる。その後、データ書き込み側のサブプロセッサ２４によって、読み出し予約されたメモリロケーションＭＭＬにデータが書き込まれ、「Ｆ／Ｅビット＝１（読み出し可／書き込み不可）」に設定されると、そこに書き込まれたデータは、予め読み出し予約情報として追加セグメントＭＳＥＧに書き込まれたサブプロセッサＩＤをもつサブプロセッサ２４のローカルメモリアドレスに読み出されるようになっている。このような制御は、複数のサブプロセッサ２４−１〜２４−ｎによってデータを多段階に処理する必要がある場合に有効である。前段階の処理を行うサブプロセッサ２４が処理済みのデータをメインメモリ２３上の所定のアドレスに書き込んだ後、直ちに、後段階の処理を行う別のサブプロセッサ２４が前処理後のデータを読み出すことが可能となるからである。
【００３７】
メインメモリ２３には、複数のメモリロケーションの集合からなるサンドボックスＳＢ０，ＳＢ１，…等が複数設けられている。各サンドボックスは、メインメモリ２３内の領域を画定するものである。各サンドボックスは、各サブプロセッサ２４に割り当てられ、その割り当てられたサブプロセッサのみが排他的に使用することができる。すなわち、各サブプロセッサ２４は、原則として、自身に割り当てられたサンドボックスを使用できるが、この領域を超えてデータのアクセスを行うことはできないようになっている。
【００３８】
図２（Ｂ）に示したように、サブプロセッサ２４−１内のローカルメモリ２４Ａ−１もまた、複数のメモリロケーションＳＭＬによって構成される。各メモリロケーションＳＭＬには、追加セグメントＳＳＥＧ０〜ＳＳＥＧｋ（以下、総称する場合には、単にＳＳＥＧと表記する。）が割り振られている。各追加セグメントＳＳＥＧは、ビジービットを含む。サブプロセッサ２４がメインメモリ２３内のデータを自身のローカルメモリ２４ＡのメモリロケーションＭＭＬに読み出すときには、対応するビジービットを１に設定して予約するようになっている。ビジービットが１であるメモリロケーションには、他のデータは格納することができない。ローカルメモリ２４Ａのメモリロケーションに読み出し後、ビジービットは０になり、任意の目的に使用できるようになる。
【００３９】
メインメモリ２３の排他的な制御を実現するために、図２（Ｃ）に示したようなキー管理テーブルＫＭＴが用いられる。このキー管理テーブルＫＭＴは、例えばメモリコントローラ２２内に設けられたＳＲＡＭ（Static Random Access Memory ）等の比較的高速のメモリ（図示せず）に格納される。キー管理テーブルＫＭＴ内の各エントリには、サブプロセッサＩＤとしてのＰＩＤ１〜ＰＩＤｎ、サブプロセッサキーＰＫ１〜ＰＫｎ（以下、総称する場合には、単にＰＫと表記する。）、およびキーマスクＫＭ１〜ＫＭｎ（以下、総称する場合には、単にＫＭと表記する。）が含まれる。
【００４０】
サブプロセッサ２４がメインメモリ２３を使用する際のプロセスは、以下のとおりである。まず、サブプロセッサ２４はメモリコントローラ２２に、読み出しまたは書き込みのコマンドを出力する。このコマンドは、自身のサブプロセッサＩＤと、メインメモリ２３における使用要求先アドレスとを含む。メモリコントローラ２２は、このコマンドを実行する前に、キー管理テーブルＫＭＴを参照して、使用要求元のサブプロセッサ２４のサブプロセッサキーＰＫを調べる。次に、メモリコントローラ２２は、調べた使用要求元のサブプロセッサキーＰＫと、メインメモリ２３内における使用要求先のメモリロケーションＭＭＬ（図２（Ａ））に割り振られたアクセスキーＡＫとを比較して、２つのキーが一致した場合にのみ、上記のコマンドを実行する。
【００４１】
図２（Ｃ）に示したキー管理テーブルＫＭＴのキーマスクＫＭは、その任意のビットが１になることによって、そのキーマスクＫＭに関連付けられたサブプロセッサキーＰＫの対応するビットを「０」または「１」に変化させることができるようになっている。例えば、サブプロセッサキーＰＫが「１０１０」であるとすると、原則として、このサブプロセッサキーＰＫと同じ「１０１０」というアクセスキーＡＫを持つサンドボックスＳＢへのアクセスだけが許容される。しかし、このサブプロセッサキーＰＫと関連付けられたキーマスクＫＭが、例えば「０００１」に設定されている場合には、このキーマスクＫＭのうちのビットが「１」に設定された桁についてのみ、サブプロセッサキーＰＫとアクセスキーＡＫとの一致判定がマスクされて行われず、その結果、「１０１０」のみならず、「１０１１」というアクセスキーＡＫを持つサンドボックスＳＢへのアクセスも可能となる。
【００４２】
次に、各サブプロセッサ２４がシステムバス２９を介してメインメモリ２３との間でデータ転送を行う場合の転送データ構造について説明する。なお、メインプロセッサ２１がサブプロセッサとして動作する場合の転送データ構造も同様である。
【００４３】
図３（Ａ）に示したように、サブプロセッサ２４とメインメモリ２３との間でシステムバス２９上を転送されるデータは、パケット形式のデータ構造を有する。このパケットデータは、パケットヘッダＰＨとデータ部ＤＰとを含む。パケットヘッダＰＨは、圧縮状態を示す圧縮モードＣＭと、データの型（種類）を示すデータタイプＤＴと、転送先（図示せず）とを含む。データ部ＤＰは、実行すべき処理を指示するコマンドと、その処理に必要なデータとを含む。
【００４４】
圧縮モードＣＭは、図３（Ｂ）に示したように、例えば４ビットの情報よりなり、そのビット列状態に応じて、「圧縮オフ」，「Ａ方式圧縮」，「Ｂ方式圧縮」，「Ｃ方式圧縮」，…等の情報を示す。ここで、「圧縮オフ」は、データ部ＤＰのデータが非圧縮データであることを示し、「Ａ方式圧縮」は、データ部ＤＰのデータがＡ方式で圧縮されたデータであることを示す。データタイプＤＴは、図３（Ｃ）に示したように、例えば４ビットの情報よりなり、そのビット列状態に応じて、データ部ＤＰのデータが「静止画」，「動画」，「音声」，「テキスト」，…等であることを示す。
【００４５】
本実施の形態の情報処理システムにおいては、各情報処理装置２〜５間におけるデータ送受信が、所定のフォーマットを有する制御パケットであるソフトウェアセルを用いて行われるようになっている。具体的には、ある情報処理装置内のマルチプロセッサユニット２０に含まれるメインプロセッサ２１が、コマンド、プログラムおよび装置情報等を含むデータから構成されたソフトウェアセルを生成し、ネットワークを介して他の情報処理装置と送受信するようになっている。以下、ソフトウェアセルについて説明する。
【００４６】
図４は、ソフトウェアセルの構成例を表すものである。このソフトウェアセルは、送信元ＩＤ１１、送信先ＩＤ１２、応答先ＩＤ１３、セルインターフェース１４、ＤＭＡ（Direct Memory Access）コマンド１５、サブプロセッサプログラム１６およびデータ１７から構成される。
【００４７】
送信元ＩＤ１１には、ソフトウェアセルの送信元である情報処理装置のＩＰアドレスおよびその情報処理装置内のマルチプロセッサユニットの情報処理装置ＩＤ、さらに、その情報処理装置内のマルチプロセッサユニットが備える各サブプロセッサの識別子（サブプロセッサＩＤ）が含まれる。
【００４８】
送信先ＩＤ１２および応答先ＩＤ１３には、それぞれ、ソフトウェアセルの送信先である情報処理装置、およびソフトウェアセルの実行結果の応答先である情報処理装置について、送信元ＩＤ１１に含まれる情報と同じ情報が含まれる。
【００４９】
セルインターフェース１４は、ソフトウェアセルの利用に必要な情報であり、グローバルＩＤ１４１、サブプロセッサ数１４２、サンドボックスサイズ１４３および前回のソフトウェアセルＩＤ１４４を含む。グローバルＩＤ１４１は、ネットワーク全体を通してそのソフトウェアセルを一意的に識別できるものであり、送信元ＩＤ１１およびソフトウェアセルの作成または送信の日時（日付および時刻）に基づいて作成されるようになっている。サブプロセッサ数１４２は、そのソフトウェアセルの実行に必要なサブプロセッサの数を示す。サンドボックスサイズ１４３は、そのソフトウェアセルの実行に必要なメインメモリ２３内のメモリ量およびサブプロセッサ２４のローカルメモリ２４Ａ内のメモリ量を示す。前回のソフトウェアセルＩＤ１４４は、ストリーミングデータなどのシーケンシャルな実行を要求する１グループのソフトウェアセル内における、前回転送されたソフトウェアセルの識別子である。
【００５０】
ＤＭＡコマンド１５、サブプロセッサプログラム１６およびデータ１７は、ソフトウェアセルの実行セクション１８を構成するものである。ＤＭＡコマンド１５には、サブプロセッサプログラム１６の起動に必要な一連のＤＭＡコマンドが含まれ、サブプロセッサプログラム１６には、サブプロセッサ２４によって実行されるサブプロセッサプログラムが含まれる。データ１７は、このサブプロセッサプログラム１６を含むプログラムによって処理されるデータである。
【００５１】
ＤＭＡコマンド８０５には、ロードコマンド１５１、キックコマンド１５２、ステータス要求コマンド１５３、ステータス返信コマンド１５４、機能プログラム実行コマンド１５５が含まれる。
【００５２】
ロードコマンド１５１は、メインメモリ２３内の情報をサブプロセッサ２４内のローカルメモリ２４Ａにロードするコマンドであり、ロードコマンド本体部１５１Ａのほかに、メインメモリアドレス１５１Ｂ、サブプロセッサＩＤ１５１Ｃおよびローカルメモリアドレス１５１Ｄを含む。メインメモリアドレス１５１Ｂは、メインメモリ２３内の情報ロード元領域のアドレスを示す。サブプロセッサＩＤ１５１ＣＨ、情報のロード先であるサブプロセッサ２４の識別子であり、ローカルメモリアドレス１５１Ｄは、ローカルメモリ２４Ａ内の情報ロード先アドレスを示す。
【００５３】
キックコマンド１５２は、プログラムの実行を開始するコマンドであり、キックコマンド本体部１５２Ａのほかに、サブプロセッサＩＤ１５２Ｂおよびプログラムカウンタ１５２Ｃを含む。サブプロセッサＩＤ１５２Ｂは、キック対象のサブプロセッサを識別するためのものであり、プログラムカウンタ１５２Ｃは、プログラム実行用プログラムカウンタのためのアドレスを与えるものである。
【００５４】
ステータス要求コマンド１５３は、送信先ＩＤ１２が示す情報処理装置の装置情報を応答先ＩＤ１３が示す情報処理装置宛に送信することを要求するコマンドである。また、ステータス返信コマンド１５４は、ステータス要求コマンド１５３を受信した情報処理装置が、自身の装置情報を、そのステータス要求コマンド１５３に含まれる応答先ＩＤ１３が示す情報処理装置に返信するためのコマンドである。ＤＭＡコマンド１５がステータス返信コマンド１５４である場合には、実行セクション１８のデータ１７の領域に装置情報が格納されるようになっている。
【００５５】
機能プログラム実行コマンド１５５は、ある情報処理装置が他の情報処理装置に対して、機能プログラムの実行を要求するコマンドである。コマンド本体部１５５Ａと、機能プログラムＩＤ１５５Ｂとを含む。機能プログラム実行コマンド１５５を受信した情報処理装置内のマルチプロセッサユニット２０では、メインプロセッサ２１が、機能プログラムＩＤ１５５Ｂに基づき、起動すべき機能プログラムを識別してメインメモリ２３にロードすると共に、そのロードされた機能プログラムを実行するようになっている。
【００５６】
図５はステータス返信コマンド１５４のデータ構成例を表すものである。このステータス返信コマンド１５４は、コマンド本体部１５４Ａと、データ部１５４Ｂとを含む。データ部１５４Ｂは、ステータス要求コマンド１５３を受信した情報処理装置の装置情報を示すものである。この装置情報は、情報処理装置ＩＤ１５４Ｂ−１、情報処理装置種別ＩＤ１５４Ｂ−２、ＭＳ（マスタ／スレーブ）ステータス１５４Ｂ−３、メインプロセッサ動作周波数１５４Ｂ−４、メインプロセッサ使用率１５４Ｂ−５、サブプロセッサ数１５４Ｂ−６、サブプロセッサＩＤ１５４Ｂ−７、サブプロセッサステータス１５４Ｂ−８、サブプロセッサ使用率１５４Ｂ−９、メインメモリ総容量１５４Ｂ−１０、メインメモリ使用量１５４Ｂ−１１、外部記録部数１５４Ｂ−１２、外部記録部ＩＤ１５４Ｂ−１３、外部記録部種別ＩＤ１５４Ｂ−１４、外部記録部総容量１５４Ｂ−１５および外部記録部使用量１５４Ｂ−１６を含む。これらの装置情報は、そのすべてがメインメモリ２３内に集約して格納されるようになっている。
【００５７】
情報処理装置ＩＤ１５４Ｂ−１は、情報処理装置内のマルチプロセッサユニット２０を識別するための識別子であり、ステータス返信コマンド１５４を送信する情報処理装置を示すものである。情報処理装置ＩＤ１５４Ｂ−１は、電源投入時、その情報処理装置内のマルチプロセッサユニット２０に含まれるメインプロセッサ２１によって生成されるようになっている。具体的には例えば、電源投入時の日時、情報処理装置のＩＰアドレスおよび情報処理装置内のマルチプロセッサユニット２０に含まれるサブプロセッサ２４の数などに基づいて生成される。
【００５８】
情報処理装置種別ＩＤ１５４Ｂ−２には、その情報処理装置の特徴を表す値が含まれる。情報処理装置の特徴とは、例えば本実施の形態の場合、ＴＶ装置、ＤＶＤレコーダ、マルチプレーヤなどである。また、情報処理装置種別ＩＤ１５４Ｂ−２は、映像音声記録、映像音声再生など、装置の機能を表すものであってもよい。情報処理装置の特徴や機能を表す値は予め決定されているものとし、情報処理装置種別ＩＤ１５４Ｂ−２に基づいて、その情報処理装置の特徴や機能を把握することが可能である。
【００５９】
ＭＳステータス１５４Ｂ−３は、後述のように各情報処理装置がマスタまたはスレーブのいずれとして動作しているかを表すものである。具体的には例えば、ＭＳステータス１５４Ｂ−８が「０」に設定されている場合にはマスタとして動作していることを示し、「１」に設定されている場合にはスレーブ装置として動作していることを示す。
【００６０】
メインプロセッサ動作周波数１５４Ｂ−４は、マルチプロセッサユニット内のメインプロセッサの動作周波数を表す。また、メインプロセッサ使用率１５４Ｂ−５は、そのメインプロセッサで現在実行中の全てのプログラムについての、そのメインプロセッサでの使用率を表す。メインプロセッサ使用率１５４Ｂ−５は、対象メインプロセッサの全処理能力に対する使用中の処理能力の比率を表した値であり、例えばプロセッサの処理能力評価のための単位であるＭＩＰＳ（Million Instructions Per Second ）を単位として算出され、あるいは単位時間あたりのプロセッサ使用時間に基づいて算出されるようになっている。後述のサブプロセッサ使用率１５４Ｂ−９についても同様にして算出されるようになっている。
【００６１】
サブプロセッサ数１５４Ｂ−６は、そのマルチプロセッサユニットが備えるサブプロセッサの数を表し、サブプロセッサＩＤ１５４Ｂ−７は、そのマルチプロセッサユニット内の各サブプロセッサを識別するための識別子である。
【００６２】
サブプロセッサステータス１５４Ｂ−８は、各サブプロセッサの状態を表すものであり、unused（未使用），reserved（予約済み），busy（使用中）などの状態がある。unusedは、そのサブプロセッサが現在使用されてなく、使用の予約もされていない状態を表し、reservedは、現在は使用されていないが、予約されている状態を表し、busyは、現在使用中であることを表すようになっている。
【００６３】
サブプロセッサ使用率１５４Ｂ−９は、そのサブプロセッサで現在実行中の、あるいはそのサブプロセッサでの実行が予約されているプログラムについての、そのサブプロセッサでの使用率を表すものである。すなわち、サブプロセッサ使用率１５４Ｂ−９は、サブプロセッサステータスがbusyである場合には、現在の使用率を示し、サブプロセッサステータスがreservedである場合には、後に使用される予定の推定使用率を示す。
【００６４】
サブプロセッサＩＤ１５４Ｂ−７、サブプロセッサステータス１５４Ｂ−８およびサブプロセッサ使用率１５４Ｂ−９は、１つのサブプロセッサ２４に対して一組設定されるものであり、１つのマルチプロセッサユニット２０内のサブプロセッサ数の組だけ設定されるようになっている。
【００６５】
メインメモリ総容量１５４Ｂ−１０およびメインメモリ使用量１５４Ｂ−１１は、それぞれ、メインメモリ２３の総容量および現在使用中の容量を表すものである。
【００６６】
外部記録装置数１５４Ｂ−１２は、そのマルチプロセッサユニット２０に接続されている外部記録装置２６の数を表す。外部記録装置ＩＤ１５４Ｂ−１３は、そのマルチプロセッサユニットに接続されている外部記録装置を一意的に識別する情報である。外部記録装置種別ＩＤ１５４Ｂ−１４は、その外部記録装置の種類（例えば、ハードディスク、ＣＤ±ＲＷ、ＤＶＤ±ＲＷ、メモリディスク、ＳＲＡＭ、ＲＯＭなど）を表す。また、外部記録装置総容量１５４Ｂ−１５および外部記録装置使用量１５４Ｂ−１６は、それぞれ、外部記録装置ＩＤ１５４Ｂ−１３によって識別される外部記録装置２６の総容量および現在使用中の容量を表す。
【００６７】
外部記録装置ＩＤ１５４Ｂ−１３、外部記録装置種別ＩＤ１５４Ｂ−１４、外部記録装置総容量１５４Ｂ−１５および外部記録装置使用量１５４Ｂ−１６は、１つの外部記録装置２６に対して一組設定されるものであり、そのマルチプロセッサユニット２０に接続されている外部記録装置数の組だけ設定されるようになっている。
【００６８】
次に、情報処理装置２が保有するソフトウェアについて説明する。この情報処理装置２が保有するソフトウェアには、制御プログラム、機能プログラムおよびデバイスドライバがある。これらのソフトウェアは、そのマルチプロセッサユニット２０に接続される外部記録装置２６に予め記録されており、情報処理装置２に電源が投入されたときに、外部記録装置２６から読み出されるようになっている。
【００６９】
制御プログラムは、情報処理システム全体の構成を制御および管理する機能を有し、マルチプロセッサユニット２０のメインプロセッサ２１が実行するソフトウェアである。この制御プログラムは、ＭＳ（マスタ／スレーブ）マネージャおよび能力交換プログラムを含む。ＭＳマネージャは、後述するように各情報処理装置がマスタであるかスレーブであるかという情報を設定する機能を有する。また、能力交換プログラムは、各情報処理装置が保有する装置情報を取得する機能を有する。
【００７０】
機能プログラムは、情報処理装置２におけるアプリケーション処理動作を担う機能を有し、メインプロセッサ２１が実行するソフトウェアである。例えば、記録用プログラム、再生用プログラムおよび素材検索用プログラムなど、その情報処理装置に応じたものを含む。
【００７１】
デバイスドライバは、マルチプロセッサユニット２０のデータ入出力（送受信）用のソフトウェアであり、例えば、放送受信用ドライバ、モニタ出力用ドライバ、ビットストリーム入出力用ドライバ、ネットワーク入出力用ドライバなど、その情報処理装置に応じたものを含む。
【００７２】
次に、以上のような構成の情報処理システムの動作を説明する。
【００７３】
この情報処理システムでは、情報処理装置２〜４が、図４に示したソフトウェアセルを用いて互いの間で装置情報の送受信を行う。これにより、いずれかの情報処理装置がマスタとして設定され、他の情報処理装置がスレーブとして設定される。各情報処理装置は、定期的にＤＭＡコマンドとしてのステータス要求コマンドを含むソフトウェアセルをネットワーク上の他の情報処理装置に送信してステータス情報を照会することにより、他の情報処理装置の状況を監視する。マスタとして設定された情報処理装置のメインメモリ２３には、自装置を含むすべての情報処理装置の装置情報が集約される。各情報処理装置は、ソフトウェアセルを用いて必要な処理を他の情報処理装置に委託し、実行させることができる。
【００７４】
他の情報処理装置からコマンド実行の指示がなされ、または、ユーザからの操作によって直接に処理指示を受けた情報処理装置では、メインプロセッサ２１の制御の下、複数のサブプロセッサ２４−１〜２４−ｎが、与えられた処理を並列に実行する。このとき、マルチプロセッサユニット２０では、メインメモリ２３のサンドボックスに関する排他制御が行われる。まず、この排他制御について説明する。
【００７５】
サブプロセッサ２４−１〜２４−ｎによってデータを多段階に処理する必要がある場合、図２において説明したようなメモリ構造に基づく制御を行うことによって、前段階の処理を行うサブプロセッサ２４と、後段階の処理を行うサブプロセッサ２４のみが、メインメモリ２３の所定アドレスにアクセスできるようになり、データを保護することができる。
【００７６】
サブプロセッサ２４−１がメインメモリ２３を使用する際のプロセスは、以下のとおりである。まず、サブプロセッサ２４−１は、メモリコントローラ２２に対して、読み出しまたは書き込みのコマンドを出力する。このコマンドには、自身のサブプロセッサＩＤと、メインメモリ２３における使用要求先アドレスとを含める。メモリコントローラ２２は、このコマンドを実行する前に、キー管理テーブルＫＭＴを参照して、要求元のサブプロセッサ２４−１のサブプロセッサキーＰＫを調べる。次に、メモリコントローラ２２は、調べた要求元のサブプロセッサ２４−１のサブプロセッサキーＰＫと、メインメモリ２３内における使用要求先のメモリロケーションＭＭＬ（図２（Ａ））に割り振られたアクセスキーＡＫとを比較して、２つのキーが一致した場合にのみ、上記のコマンドを実行する。
【００７７】
また、マルチプロセッサユニット２０では、キー管理テーブルＫＭＴのキーマスクＫＭを利用することにより、以下のような制御が可能である。
【００７８】
すなわち、情報処理装置２の起動直後においては、キーマスクＫＭの値は全てゼロである。ここでは、メインプロセッサ２１内のプログラムはサブプロセッサ２４内のプログラムと連携動作するものとする。サブプロセッサ２４−１より出力された処理結果データを一旦メインメモリ２３に格納し、サブプロセッサ２４−２に入力する場合を想定する。この場合、メインメモリ２３における格納領域は、どちらのサブプロセッサ２４−１，２４−２からもアクセス可能である必要がある。そのような場合に、メインプロセッサ２１内のプログラムは、キーマスクＫＭの値を適切に変更し、複数のサブプロセッサ２４からアクセスできる領域をメインメモリ２３内に設けることにより、サブプロセッサ２４による多段階的処理を可能にする。
【００７９】
例えば、以下の手順で多段階処理を行う場合を想定する。
（１）他の情報処理装置からのデータ入力
（２）サブプロセッサ２４−１による処理
（３）メインメモリ２３内のメモリロケーションＳＭＬ１への格納
（４）サブプロセッサ２４−２による処理
（５）メインメモリ２３内のメモリロケーションＳＭＬ２への格納
【００８０】
この場合、例えば、サブプロセッサ２４−１のサブプロセッサキーＰＫ＝「０１００」、メインメモリ２３内のメモリロケーションＳＭＬ１のアクセスキーＡＫ＝「０１００」、サブプロセッサ２４−２のサブプロセッサキーＰＫ＝「０１０１」、メインメモリ２３内のメモリロケーションＳＭＬ２のアクセスキーＡＫ＝「０１０１」という設定であったとすると、このままでは、サブプロセッサ２４−２はメインメモリ２３内のメモリロケーションＳＭＬ１にアクセスすることができない。そこで、サブプロセッサ２４−２のキーマスクＫＭ２を「０００１」に設定することにより、サブプロセッサ２４−２によるメインメモリ２３内のメモリロケーションＳＭＬ１へのアクセスを可能にすることができる。
【００８１】
次に、図６を参照して、マルチプロセッサユニット２０内のサブプロセッサ２４による並列処理動作について説明する。図６は、あるサブプロセッサ２４がメインメモリ２３から読み出したデータに対して所定の演算処理を行った後、その処理結果をメインメモリ２３に書き戻す場合の処理手順を表すものである。なお、サブプロセッサ２４−１〜２４−ｎにおける各動作はすべて同様であるので、ここでは、代表してサブプロセッサ２４−１について説明する。
【００８２】
サブプロセッサ２４−１では、図示しない制御部が、バスアービタ２７からバス使用権を得て、演算器２４Ｃ−１の演算処理に必要なデータをメインメモリ２３の所定のメモリロケーションＭＭＬからローカルメモリ２４Ａ−１の所定のメモリロケーションＳＭＬに転送する（ステップＳ１０１）。このデータは、図３（Ａ）に示したようなパケットデータとして転送される。
【００８３】
サブプロセッサ２４−１の圧縮伸長器２４Ｂ−１は、ローカルメモリ２４Ａ−１に格納されたデータのパケットヘッダＰＨを解析してデータ伸張の要否を判定する（ステップＳ１０２）。この結果、このデータが圧縮されたものであったときには、伸長処理を行うべきと判定し（ステップＳ１０３；Ｙ）、その圧縮モード（図３（Ｂ））に対応した方式で伸長処理を行う（ステップＳ１０４）。例えば、パケットヘッダＰＨの圧縮モードＣＭが「０００１」であったとすると、圧縮伸長器２４Ｂ−１は、そのデータが「Ａ方式」で圧縮されたものであると判定し、その「Ａ方式」に対応した伸長方式「ａ方式」で伸長処理を行い、その伸長されたデータをローカルメモリ２４Ａ−１に書き戻す。一方、圧縮モードＣＭが「００００」であったときには、非圧縮データであると判定し、伸長処理を行わず（ステップＳ１０３；Ｎ）、直接、ステップＳ１０５の演算処理に移行する。なお、本実施の形態では、パケットヘッダＰＨのデータタイプＤＴの情報は使用しないので、不要である。このデータタイプＤＴは、後述する変形例において使用される。
【００８４】
演算器２４Ｃ−１は、ローカルメモリ２４Ａ−１の所定のメモリロケーションＳＭＬに格納されたデータに対して、演算処理を行う（ステップＳ１０５）。この演算処理は、予めメインプロセッサ２１によって各サブプロセッサ２４−１〜２４−ｎに割り当てられたものであり、例えば、画像処理、音響処理および数値演算等である。演算器２４Ｃ−１は、演算結果を、再びローカルメモリ２４Ａ−１の所定のメモリロケーションＳＭＬに格納する。
【００８５】
次に、圧縮伸長器２４Ｂ−１は、ローカルメモリ２４Ａ−１に格納された演算結果データに対して圧縮処理を行うことの妥当性を判定する（ステップＳ１０６）。データ転送量が多く圧縮する必要がある場合は圧縮をすることが妥当であると判定し（ステップＳ１０７；Ｙ）、データ転送量が少なく圧縮する必要がない場合は圧縮をしないことが妥当であると判定する（ステップＳ１０７；Ｎ）。この判定は、例えば、データ転送所要時間Ｔｔと演算所要時間Ｔｐとの比較結果に基づいて行う。ここで、データ転送所要時間Ｔｔは、圧縮処理をせずにそのままデータをシステムバス２９上に送出してメインメモリ２３に転送する場合に要する時間である。演算所要時間Ｔｐは、次にバス使用権を獲得しているサブプロセッサ２４（例えば２４−２）において演算処理に要する時間である。データ転送所要時間Ｔｔと演算所要時間Ｔｐとの関係は静的に見積もることが可能なので、プロセッサ２４−１を起動する時点で出力時の圧縮処理の要否を設定し、効果の得られない場合には圧縮処理を行わないようにすることができる。例えば、元々のデータの転送量が少ない一方、演算に長時間を要することから、あるプロセッサが転送処理を終えても他のプロセッサが転送を行える状態にないような場合、データを圧縮して転送することの効果はなく、データをそのまま出力しても全体的なパフォーマンスには影響しない。したがって、例えばＴｐ＜Ｔｔであるような場合には、圧縮処理を行わないようにすることで、無駄なエネルギーを消費せずに済む。
【００８６】
圧縮伸長器２４Ｂ−１は、圧縮処理の妥当性ありと判定したときは、ローカルメモリ２４Ａ−１のデータに対して圧縮処理を実行し、その結果を、一旦、ローカルメモリ２４Ａ−１に書き戻す（ステップＳ１０８）。一方、圧縮処理の妥当性なしと判定したときは、圧縮せず、非圧縮データ（ローカルメモリ内の生データ）を選択する（ステップＳ１１２）。
【００８７】
圧縮処理を実行した場合、圧縮伸長器２４Ｂ−１はさらに、圧縮結果を評価する（ステップＳ１０９）。この評価は、例えば圧縮前のデータ量と圧縮後のデータ量とを比較することで行う。具体的には、圧縮前データ量に対する圧縮後データ量の比である圧縮率が所定のしきい値を越える場合には、圧縮効果が大きいと判定し（ステップＳ１１０；Ｙ）、圧縮データを選択する（ステップＳ１１１）。一方、圧縮率が所定のしきい値以下の場合には、圧縮効果が少ないと判定し（ステップＳ１１０；Ｎ）、非圧縮データを選択する（ステップＳ１１２）。
【００８８】
このとき、圧縮伸長器２４Ｂ−１は、上記において選択されたデータを含むデータ部ＤＰにパケットヘッダＰＨを付加してデータパケット（図３（Ａ））を生成し（ステップＳ１１３）、システムバス２９上に送出する。このパケットヘッダＰＨには、圧縮モードとして、圧縮をしたか否かの情報のほか、圧縮した場合にはその圧縮方式の情報が含まれる。この圧縮モードによって転送先のメインメモリ２３に圧縮結果を通知することができる。
【００８９】
このようにして、演算器２４Ｃ−１によって演算処理された演算結果データが、そのまま、または圧縮されてローカルメモリ２４−１からメインメモリ２３へと転送され、このメインメモリ２３における所定のメモリロケーションＭＭＬに格納される（ステップＳ１１４）。
【００９０】
ここで、本実施の形態のマルチプロセッサユニット２０による特徴的作用を説明する前に、まず図１０を参照して、本実施の形態に対する比較例について説明する。
【００９１】
図１０は、比較例における並列処理動作のタイミングを表すものである。この比較例は、各サブプロセッサにおいて圧縮処理をせずにデータ転送を行う場合を想定したものである。横軸は時間を示し、縦軸は並列度（すなわち、並列処理に携わるサブプロセッサの数）を示す。
【００９２】
この比較例では、３つのサブプロセッサＡ，Ｂ，Ｃが並列処理動作を行うものとする。ｔ０の時点で、システムバスに接続されたサブプロセッサＡのローカルメモリに対してメインメモリから入力データの転送が行われる。ｔ２の時点で、サブプロセッサＡへの入力データの転送が完了し、サブプロセッサＡが演算処理を開始するが、これと同時に、サブプロセッサＢへのデータ転送（入力）が開始する。サブプロセッサＡはｔ３の時点で演算処理を終えるが、この時点ではサブプロセッサＢがデータ転送途中のため、サブプロセッサＡはデータ転送（出力）の開始待ちになる。
【００９３】
ｔ４の時点でサブプロセッサＢへのデータ入力が完了し、サブプロセッサＢが演算処理を開始するが、これと同時に、サブプロセッサＣへのデータ転送（入力）が開始する。サブプロセッサＢはｔ５の時点で演算処理を終えるが、この時点ではサブプロセッサＣがデータ転送途中のため、サブプロセッサＢはデータ転送（出力）の開始待ちになる。
【００９４】
ｔ６の時点でサブプロセッサＣへのデータ入力が完了し、サブプロセッサＣが演算処理を開始する。この時点でバスが空くので、サブプロセッサＡから出力結果が転送される。ｔ７の時点でサブプロセッサＣは演算処理を終える。ｔ８の時点でサブプロセッサＡからの出力が完了すると、この時点でサブプロセッサＢがデータ転送（出力）を開始する。ｔ１０の時点でサブプロセッサＢからの出力が完了すると、この時点でサブプロセッサＣがデータ転送（出力）を開始する。サブプロセッサＣからの出力はｔ１２の時点で完了する。
【００９５】
このように各サブプロセッサがメインメモリを共有しているため、メインメモリとサブプロセッサＡ，Ｂ，Ｃ内のローカルメモリとの間のデータ転送は、図１０に示したように逐次的に発生する。ここに示した比較例では、ｔ３とｔ４との間およびｔ５とｔ６との間で、メモリ間のデータ転送がボトルネック（支配的）になり、サブプロセッサが待ち状態になっている。したがって、これ以上サブプロセッサの並列度を増やしても処理能力が向上しないことがわかる。
【００９６】
これに対して、本実施の形態では、各サブプロセッサに圧縮伸長器２４Ｂ−１を設けることにより、システムバス２９上を転送するデータを圧縮し、バスから受信したデータを伸張する機能を提供する。この機能により、メインメモリ２３とサブプロセッサ２４内のローカルメモリ１４Ａとの間の転送データは圧縮され、メモリ間のデータ転送時間がシステム全体のボトルネックになることを解消することが可能になる。以下、図７を参照して本実施の形態における並列処理について説明する。
【００９７】
図７は、本実施の形態のマルチプロセッサユニット２０における並列処理動作のタイミングを表すものである。この例は、サブプロセッサ２４−１〜２４−４において常に圧縮処理をしたデータを転送する場合を想定したものである。横軸は時間を示し、縦軸は並列度を示す。
【００９８】
図７では、ｔ０の時点で、システムバスに接続されたサブプロセッサ２４−１に対してメインメモリからデータ転送（入力）が行われる。ｔ１の時点でサブプロセッサ２４−１へのデータ転送が完了すると、サブプロセッサ２４−１がデータの伸張を開始すると同時に、サブプロセッサ２４−２に対してデータ転送が開始される。
【００９９】
ｔ２の時点で、サブプロセッサ２４−２はデータ転送を完了し、伸張処理を開始する。この時点では、サブプロセッサ２４−１は信号処理の途中であってシステムバス２９が空いているため、メインメモリ２３からサブプロセッサ２４−３に対してデータ転送を開始する。
【０１００】
ｔ３の時点で、サブプロセッサ２４−３はデータ転送を完了し、伸張処理を開始する。この時点では、サブプロセッサ２４−１は信号処理の途中であってシステムバス２９が空いているため、メインメモリ２３からサブプロセッサ２４−４に対してデータ転送を開始する。
【０１０１】
ｔ４の時点で、サブプロセッサ２４−４はデータ転送を完了し、伸張処理を開始する。この時点では、サブプロセッサ２４−１はデータの圧縮処理まで終了しているので、サブプロセッサ２４−１からメインメモリ２３へ演算結果データが転送される。
【０１０２】
ｔ５の時点では、サブプロセッサ２４−１からメインメモリ２３への演算結果データの転送出力が完了すると共に、サブプロセッサ２４−２からメインメモリ２３への演算結果データの転送出力が開始する。ｔ６の時点では、サブプロセッサ２４−２からの演算結果データの転送出力が完了すると共に、サブプロセッサ２４−３からの演算結果データの転送出力が開始する。ｔ７の時点では、サブプロセッサ２４−３からの演算結果データの転送出力が完了すると共に、サブプロセッサ２４−４からの演算結果データの転送出力が開始する。そして、ｔ８の時点で、サブプロセッサ２４−４からの演算結果データの転送出力が完了する。
【０１０３】
本実施の形態の並列処理では、データが圧縮された状態でシステムバス上を転送されるため転送時間は短くなる。一方、演算の前処理としてデータの伸張処理、演算の後処理としてデータの圧縮処理が追加されるため、全体の演算時間は長くなる。結果として、マルチプロセッサユニット２０のボトルネック箇所がデータ転送時間から演算時間に転換される。ところが、演算時間の増加による性能低下は、サブプロセッサの並列度を上げることで容易に解決することができる。このため、マルチプロセッサユニット２０全体で見ると処理能力が向上する。
【０１０４】
ところで、各サブプロセッサでは各種の演算が行われることが想定される。演算によってはデータ量が少なく転送時間がボトルネックにならない場合がある。また、データによっては圧縮してもそれほど効果の得られないものもあり、そのような場合は受信側で伸張処理を行う分、システムのリソースを無駄にすることになる。
【０１０５】
図８は、本実施の形態におけるマルチプロセッサユニット２０の各サブプロセッサ２４−１〜２４−ｎにおいてデータ圧縮の必要なしと判定された場合の動作タイミングを表すものである。
【０１０６】
この例では、ｔ０の時点でメインメモリからサブプロセッサ２４−１に対してデータ転送が行われる。ｔ１の時点でサブプロセッサ２４−１へのデータ転送が完了すると、サブプロセッサ２４−１はデータの伸張を開始する。これと同時に、サブプロセッサ２４−２に対してデータ転送が開始される。ｔ２の時点でサブプロセッサ２４−２はデータ転送を完了し、伸張処理を開始する。この時点では、サブプロセッサ２４−１は信号処理の途中であってシステムバスが空いているため、サブプロセッサ２４−３に対してデータ転送を開始する。ｔ３の時点でサブプロセッサ２４−３はデータ転送を完了し、伸張処理を開始する。この時点で、サブプロセッサ２４−１は演算を終えているので、圧縮要否判定において、データ圧縮をしないことを決定し、直ちに演算結果の転送を開始する。ｔ４の時点では、サブプロセッサ２４−１からのデータ転送が既に完了している。このため、サブプロセッサ２４−２は圧縮要否判定において、データ圧縮をしないことを決定し、直ちに演算結果の転送を開始する。ｔ５の時点では、サブプロセッサ２４−２からのデータ転送は既に完了している。このため、サブプロセッサ２４−３は圧縮要否判定において、データ圧縮をしないことを決定し、直ちに演算結果の転送を開始する。ｔ６の時点で、サブプロセッサ２４−３からのデータ転送は完了する。
【０１０７】
このように、事前に圧縮が効果的かを判定し、処理の要否を決定するように構成することにより、上記のような問題（サブプロセッサのリソースの無駄遣い）を回避することができる。すなわち、元々のデータの転送量が少なく、あるサブプロセッサが転送処理を終えても他のサブプロセッサが転送を行える状態にない（まだ演算処理中である）こともある。このような場合には、データを圧縮して転送する効果はなく、データをそのまま出力しても全体的なパフォーマンスには影響しない。例えば図８において、ｔ４に着目すると、この時点ではサブプロセッサ２４−１は転送を終えており、次の転送を開始するために演算の終了待ちになる。これはシステムのボトルネックが転送処理にないことを意味している。したがって、圧縮処理を行う必要はない。演算時間とデータ転送時間の関係は静的に見積もることが可能なので、プロセッサを起動する時点で出力段の圧縮処理有り無しを設定し、効果の得られない圧縮処理を行わないことでプロセッサのリソースの無駄遣いを防ぐことができる。
【０１０８】
また、一般に、予測符号化によるデータ圧縮処理では、信号間の相関が強いほど圧縮効率が高くなり、相関が弱い場合は差分を伝送するような圧縮方式では圧縮の効果が十分得られない場合がある。この点に関し、本実施の形態では、システムバスに出力する信号を圧縮した後に圧縮結果を評価し、圧縮率があるしきい値を超えていない場合は圧縮前の信号をバスに送信するようにしている。この場合には、データ転送量は減らず、転送元のサブプロセッサでは圧縮処理を行った分だけ無駄なエネルギーを消費したことになるが、その反面、その信号が他のサブプロセッサの入力となったときに伸張処理を行う必要がなくなるため、そのサブプロセッサにおいて、さらなる無駄なエネルギーの消費を防ぐことが可能になる。
【０１０９】
なお、圧縮伸長器２４Ｂ−１におけるデータ圧縮伸張のアルゴリズムおよび実装方法は、マルチプロセッサユニット２０の構成に依存するところであり、ハードウェア、ソフトウェアどちらでも実現が可能である。ハードウェアによる実装の場合は、圧縮伸張処理に要する時間が短くて済むため、圧縮伸張処理を隠蔽する（圧縮伸張処理の影響を受けないようにする）ために追加するプロセッサの数( プロセッサの並列度) を少なくすることができる。一方、ソフトウェアによる実装の場合は、転送データの特徴に応じた最適なデータ圧縮方法を適宜選択することが可能であると共に、ハードウェアに変更を加えることなくシステムの演算性能を向上させることができる。
【０１１０】
以上説明したように、本実施の形態の情報処理装置によれば、以下のような効果がある。
（１）サブプロセッサを効率的に使用することが可能になるのでハードウェアの変更を必要とせずに、動作周波数あたりの演算能力を向上させることが可能になる。
（２）比較例と比べて、同等の演算能力をより低い動作周波数で実現可能になるので、動作電圧を下げることができ、消費電力あたりの演算能力を向上させることができる。
（３）データ圧縮伸張の実装方法には特に制限がないので、システムの要求に応じてハードウェア、ソフトウェアどちらかによる実装を適宜選択できる。
（４）圧縮結果をモニタし、十分な圧縮結果が得られない場合は圧縮前のデータをバスに転送するような仕組みを設けることにより、データが次段のサブプロセッサの入力となった場合に、その次段のサブプロセッサにおける入力段での伸張処理が不要となるため、無駄なエネルギー消費を省くことができる。
【０１１１】
以上、実施の形態を挙げて本発明を説明したが、本発明はこの実施の形態に限定されず、種々の変形が可能である。例えば、本実施の形態では、データ圧縮を一旦実行した上でその圧縮処理結果の評価を行い、その結果如何によっては、元のデータ（非圧縮データ）を転送するようにしたが、そのような事後的評価ではなく、例えば図９に示したように、事前に（圧縮前に）評価するようにしてもよい。なお、この図９において、ステップＳ２０１〜Ｓ２０７およびＳ２１２〜Ｓ２１５の処理は、それぞれ、上記実施の形態（図６）におけるステップＳ１０１〜Ｓ１０７およびＳ１１１〜Ｓ１１４と同様であり、適宜、説明を省略する。
【０１１２】
図９に示した変形例では、ステップＳ２０７におけるデータ圧縮の妥当性の判定ののち、その圧縮対象となっているデータのタイプを判定し（ステップＳ２０８）、その判定結果に応じた処理をする。具体的には、データ入力時にパケットヘッダＰＨのデータタイプＤＴから読み取ったビット情報に基づき、そのデータの種類（静止画、動画、音声、テキスト等）を判定する。その設定の結果、そのデータが例えばテキストデータのような圧縮効果の少ない種類のデータであったときには（ステップＳ２０９；Ｙ）、圧縮を行わないことを決定し、非圧縮データを選択する（ステップＳ２１３）。一方、そのデータが例えば静止画、動画、音響データのような圧縮効果の大きい種類のデータであったときには（ステップＳ２０９；Ｎ）、圧縮を行うことを決定し、さらにそのデータの種類に応じて圧縮方式を選択し（ステップＳ２１０）、その圧縮方式によるデータ圧縮を実行する（ステップＳ２１１）。そして、この圧縮されたデータを転送データとして選択し（ステップＳ２１２）、これにパケットヘッダＰＨを付加した上でシステムバス２９上に送出する（ステップＳ２１４，Ｓ２１５）。このとき、パケットヘッダＰＨの圧縮モードＣＭには、圧縮方式に応じて、図３（Ｂ）に示したビット情報を設定する。また、パケットヘッダＰＨのデータタイプＤＴには、データの種類に応じて、図３（Ｃ）に示したビット情報を設定する。
【０１１３】
この変形例によれば、事前に圧縮の要否を判定するようにしたので、上記実施の形態の場合のように、一旦圧縮処理はしたものの結局は非圧縮データを転送する、という事態を回避できる。このため、転送元のサブプロセッサにおける無駄なエネルギー消費を回避することができる。
【０１１４】
なお、上記実施の形態では、メインメモリとサブプロセッサ内のローカルメモリとの間でのデータ転送に適用した場合について説明したが、サブプロセッサ間（ローカルメモリ間）でのデータ転送に適用することも可能である。
【図面の簡単な説明】
【０１１５】
【図１】本発明の一実施の形態に係る情報処理システムの構成を表すブロック図である。
【図２】図１のマルチプロセッサユニット内のメインメモリおよびサブプロセッサ内のローカルメモリの記憶領域の構成、および、メインメモリに対する排他的アクセス制御を実現するためのキー管理テーブルの構成を表すブロック図である。
【図３】メインメモリとサブプロセッサのローカルメモリとの間で転送されるパケットデータのフォーマット例を表す図である。
【図４】図１の情報処理システムの情報処理装置間でのやり取りに使用されるソフトウェアセルの構成を表す図である。
【図５】図４のソフトウェアセルを用いて送信されるステータス返信コマンドの一例を表す図である。
【図６】図１に示した複数のサブプロセッサの並列処理を表す流れ図である。
【図７】図１に示した複数のサブプロセッサの並列処理動作におけるタイミング例を表すタイミング図である。
【図８】図１に示した複数のサブプロセッサの並列処理動作における他のタイミング例を表すタイミング図である。
【図９】図１に示した複数のサブプロセッサの並列処理動作の変形例を表す流れ図である。
【図１０】比較例における複数のプロセッサの並列処理動作におけるタイミング例を表す流れ図である。
【符号の説明】
【０１１６】
１…ネットワーク、２，３，４…情報処理装置、２０…マルチプロセッサユニット、２１…メインプロセッサ、２２…メモリコントローラ、２３…メインメモリ、２４−１〜２４−ｎ…サブプロセッサ、２１Ａ，２４Ａ−１〜２４Ａ−Ｎ…ローカルメモリ、２４Ｂ−１〜２４Ｂ−Ｎ…圧縮伸長器、２４Ｃ−１〜２４Ｃ−Ｎ…演算器、２７…バスアービタ、２８…ネットワーク接続部、２９…システムバス、ＰＨ…パケットヘッダ、ＤＰ…データ部、ＣＭ…圧縮モード、ＤＴ…データタイプ。
【図１】
2005301607.tif 000003
【図２】
2005301607.tif 000004
【図３】
2005301607.tif 000005
【図４】
2005301607.tif 000006
【図５】
2005301607.tif 000007
【図６】
2005301607.tif 000008
【図７】
2005301607.tif 000009
【図８】
2005301607.tif 000010
【図９】
2005301607.tif 000011
【図１０】
2005301607.tif 000012