(57)【特許請求の範囲】
【請求項１】
主プロセッサと、各々がＤＭＡ転送機構およびローカル・ストアを有する複数の副プロセッサとを備える、マルチ・プロセッサ・システムにおいて、メイン・メモリのテストを実行する方法であって、
前記主プロセッサが、前記メイン・メモリのテスト対象メモリ領域のうち、前記複数の副プロセッサの各々に対応する部分メモリ領域をそれぞれ割り当てるステップと、
前記主プロセッサが、前記複数の副プロセッサの各々に対して、それぞれに割り当てられた前記部分メモリ領域のテストの実行を依頼するステップと、
前記依頼を受けたことに応答して、前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアに対して初期データをフィルするステップと、
前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアから、それぞれの前記部分メモリ領域へ、前記フィルされた初期データを、それぞれの前記ＤＭＡ転送機構によってダウンストリーム転送をするステップと、
前記複数の副プロセッサの各々が、前記ダウンストリーム転送がされたそれぞれの前記部分メモリ領域から、それぞれの前記ローカル・ストアへ、それぞれの前記ＤＭＡ転送機構によってデータのアップストリーム転送をするステップと、
前記アップストリーム転送が完了した後、前記複数の副プロセッサの各々が、前記アップストリーム転送がされた先であるそれぞれの前記ローカル・ストアのデータの値と、前記フィルされた前記初期データの値との一致を確認することで、それぞれの前記ローカル・ストアのテストを実行するステップと、
前記主プロセッサが、前記複数の副プロセッサの全てについて、それぞれの前記テストを実行するステップが完了したことに応答して、それぞれの前記ローカル・ストアのテストの結果を総合して、前記メイン・メモリの前記テスト対象メモリ領域に対するテストの結果を判断するステップと
を有し、
前記ローカル・ストアのテストを実行するステップは、前記複数の副プロセッサの各々が、前記アップストリーム転送がされたそれぞれの前記ローカル・ストアのデータを所定の単位ごとに順次加算してチェックサムを求め、当該チェックサムと、前記初期データから予め計算されたチェックサム期待値との一致を確認するステップを含む、方法。
【請求項２】
前記複数の副プロセッサの各々はＭバイトのＳＩＭＤ加算命令の実行手段を備え、
前記確認するステップは、
前記ＳＩＭＤ加算命令を用いてＭバイトの第１のデータにＭバイトの第２のデータを各バイト単位ごとに加算し、
当該加算を前記ローカル・ストアの全領域に渡って順次繰り返してＭバイトの最終加算データを求め、
当該Ｍバイトの最終加算データを各バイト単位ごとに加算をする
ステップを含む、請求項１に記載の方法。
【請求項３】
前記複数の副プロセッサの各々はＭバイトのＳＩＭＤストア命令の実行手段を備え、
前記初期データをフィルするステップは、前記ＳＩＭＤストア命令を用いて、Ｍバイトの初期パターン・データを、Ｍバイトおきに順次前記ローカル・ストアの全領域に渡ってストアするステップを含む、
請求項１または２に記載の方法。
【請求項４】
それぞれの前記部分メモリ領域はそれぞれの前記ローカル・ストアより領域が大きく、
前記ダウンストリーム転送をするステップは、前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアを転送元とし、それぞれの前記部分メモリ領域の全領域のうち、それぞれの前記ローカル・ストアと大きさが等しい第１の転送単位領域を転送先として、前記フィルされた初期データを、それぞれの前記ＤＭＡ転送機構によって第１のダウンストリーム転送をするステップを含み、
前記第１のダウンストリーム転送の後、前記第１の転送単位領域から前記ダウンストリーム転送がまだされていない更なる転送単位領域に転送先のシフトをして、それぞれの前記ローカル・ストアからそれぞれの当該更なる転送単位領域へ、前記フィルされた初期データを、それぞれの前記ＤＭＡ転送機構によって更なるダウンストリーム転送をするステップと、
前記転送先のシフトをして更なるダウンストリーム転送をするステップを繰り返すステップであって、前記繰り返しは、それぞれの前記部分メモリ領域の全領域へのダウンストリーム転送が完遂するまで行われる、ステップと
をさらに有し、
前記アップストリーム転送をするステップは、それぞれの前記部分メモリ領域の全領域のうちの前記第１の転送単位領域を転送元とし、それぞれの前記ローカル・ストアを転送先として、それぞれの前記ＤＭＡ転送機構によってデータの第１のアップストリーム転送をするステップを含み、
前記ローカル・ストアのテストを実行するステップは、前記第１のアップストリーム転送が完了した後、前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアのテストを実行するステップを含み、
前記ローカル・ストアのテストの実行が完了した後、前記第１の転送単位領域から前記更なる転送単位領域に転送元のシフトをして、当該更なる転送単位領域からそれぞれの前記ローカル・ストアへ、それぞれの前記ＤＭＡ転送機構によってデータの更なるアップストリーム転送をするステップと、
前記更なるアップストリーム転送が完了した後、前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアの更なるテストを実行するステップと、
前記転送元のシフトをして更なるアップストリーム転送をするステップと、前記ローカル・ストアの更なるテストを実行するステップとを繰り返すステップであって、前記繰り返しは、それぞれの前記部分メモリ領域の全領域からのアップストリーム転送が完遂するまで行われる、ステップと
をさらに有する、
請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記アップストリーム転送をするステップは、
それぞれの前記ローカル・ストアの半分の領域である第１の半サイズ・ローカル・ストアを転送先とし、前記第１の転送単位領域の半分の領域であり前記第１の半サイズ・ローカル・ストアに対応する第１の半サイズ転送単位領域を転送元として、それぞれの前記ＤＭＡ転送機構によってデータの第１の半サイズ・アップストリーム転送をするステップと、
前記第１の半サイズ・アップストリーム転送の後、前記ローカル・ストアのうち前記第１の半サイズ・ローカル・ストア以外の領域である第２の半サイズ・ローカル・ストアを転送先とし、前記第１の転送単位領域のうち前記第１の半サイズ転送単位領域以外の領域である第２の半サイズ転送単位領域を転送元として、それぞれの前記ＤＭＡ転送機構によってデータの第２の半サイズ・アップストリーム転送をするステップと、
を含み、
前記ローカル・ストアのテストを実行するステップは、
前記第１の半サイズ・アップストリーム転送が完了した後、前記第２の半サイズ・アップストリーム転送が完了しているか否かに関わらず、前記複数の副プロセッサの各々が、それぞれの前記第１の半サイズ・ローカル・ストアのテストを実行するステップと、
前記第２の半サイズ・アップストリーム転送が完了した後、前記複数の副プロセッサの各々が、それぞれの前記第２の半サイズ・ローカル・ストアのテストを実行するステップと、
を含み、
前記更なるアップストリーム転送をするステップは、
前記第１の半サイズ・ローカル・ストアのテストの実行が完了した後、前記第２の半サイズ・ローカル・ストアのテストの実行が完了しているか否かに関わらず、前記第１の半サイズ・ローカル・ストアを転送先とし、前記更なる転送単位領域の半分の領域であり前記第１の半サイズ・ローカル・ストアに対応する第１の更なる半サイズ転送単位領域を転送元として、それぞれの前記ＤＭＡ転送機構によってデータの第１の更なる半サイズ・アップストリーム転送をするステップと、
前記第１の更なる半サイズ・アップストリーム転送の後、前記第２の半サイズ・ローカル・ストアを転送先とし、前記更なる転送単位領域のうち前記第１の更なる半サイズ転送単位領域以外の領域である第２の更なる半サイズ転送単位領域を転送元として、それぞれの前記ＤＭＡ転送機構によってデータの第２の更なる半サイズ・アップストリーム転送をするステップと、
を含み、
前記更なるテストを実行するステップは、
前記第１の更なる半サイズ・アップストリーム転送が完了した後、前記第２の更なる半サイズ・アップストリーム転送が完了しているか否かに関わらず、前記複数の副プロセッサの各々が、それぞれの前記第１の半サイズ・ローカル・ストアのテストを実行するステップと、
前記第２の更なる半サイズ・アップストリーム転送が完了した後、前記複数の副プロセッサの各々が、それぞれの前記第２の半サイズ・ローカル・ストアのテストを実行するステップと、
を含む、
請求項４に記載の方法。
【請求項６】
主プロセッサと、各々がＤＭＡ転送機構およびローカル・ストアを有し並列に動作が可能な複数の副プロセッサとを備えるマルチ・プロセッサ・システムに含まれる、メイン・メモリのテストをするためのコンピュータ・プログラムであって、当該マルチ・プロセッサ・システムに、
前記主プロセッサが、前記メイン・メモリのテスト対象メモリ領域のうち、前記複数の副プロセッサの各々に対応する部分メモリ領域をそれぞれ割り当てるステップと、
前記主プロセッサが、前記複数の副プロセッサの各々に対して、それぞれに割り当てられた前記部分メモリ領域のテストの実行を依頼するステップと、
前記依頼を受けたことに応答して、前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアに対して初期データをフィルするステップと、
前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアから、それぞれの前記部分メモリ領域へ、前記フィルされた初期データを、それぞれの前記ＤＭＡ転送機構
によってダウンストリーム転送をするステップと、
前記複数の副プロセッサの各々が、前記ダウンストリーム転送がされたそれぞれの前記部分メモリ領域から、それぞれの前記ローカル・ストアへ、それぞれの前記ＤＭＡ転送機構によってデータのアップストリーム転送をするステップと、
前記アップストリーム転送が完了した後、前記複数の副プロセッサの各々が、前記アップストリーム転送がされた先であるそれぞれの前記ローカル・ストアのデータの値と、前記フィルされた前記初期データの値との一致を確認することで、それぞれの前記ローカル・ストアのテストを実行するステップと、
前記主プロセッサが、前記複数の副プロセッサの全てについて、それぞれの前記テストを実行するステップが完了したことに応答して、それぞれの前記ローカル・ストアのテストの結果を総合して、前記メイン・メモリの前記テスト対象メモリ領域に対するテストの結果を判断するステップと
を実行させ、
前記テストを実行するステップは、前記複数の副プロセッサの各々が、前記アップストリーム転送がされたそれぞれの前記ローカル・ストアのデータを所定の単位ごとに順次加算してチェックサムを求め、当該チェックサムと、前記初期データから予め計算されたチェックサム期待値との一致を確認するステップを含む、コンピュータ・プログラム。
【請求項７】
主プロセッサと、
各々がＤＭＡ転送機構およびローカル・ストアを有する複数の副プロセッサと、
前記主プロセッサおよび前記複数の副プロセッサの何れからもアクセス可能に接続されたメイン・メモリと、
前記主プロセッサに含まれ、前記メイン・メモリのテスト対象メモリ領域のうち、前記複数の副プロセッサの各々に対応する部分メモリ領域をそれぞれ割り当てる、割り当て手段と、
前記複数の副プロセッサの各々に対して、それぞれに割り当てられた前記部分メモリ領域のテストの実行を依頼する、テスト実行依頼手段と、
前記複数の副プロセッサの各々に含まれ、前記依頼を受けたことに応答してそれぞれの前記ローカル・ストアに対して初期データをフィルする、フィル手段と、
前記複数の副プロセッサの各々に含まれ、それぞれの前記ローカル・ストアから、それぞれの前記部分メモリ領域へ、前記フィルされた初期データを、それぞれの前記ＤＭＡ転送機構によってダウンストリーム転送をする、ダウンストリーム転送手段と、
前記複数の副プロセッサの各々に含まれ、前記ダウンストリーム転送がされたそれぞれの前記部分メモリ領域から、それぞれの前記ローカル・ストアへ、それぞれの前記ＤＭＡ転送機構によってデータのアップストリーム転送をする、アップストリーム転送手段と、
前記複数の副プロセッサの各々に含まれ、前記アップストリーム転送がされた先であるそれぞれの前記ローカル・ストアのデータの値と、前記フィルされた前記初期データの値との一致を確認することで、それぞれの前記ローカル・ストアのテストを実行する、テスト実行手段と、
前記主プロセッサに含まれ、前記複数の副プロセッサの全てについて、それぞれの前記ローカル・ストアのテストの実行が完了したことに応答して、それぞれの前記ローカル・ストアのテストの結果を総合して、前記メイン・メモリの前記テスト対象メモリ領域に対するテストの結果を判断する、テスト判断手段と、
を備え、
前記テスト実行手段は、前記複数の副プロセッサの各々が、前記アップストリーム転送がされたそれぞれの前記ローカル・ストアのデータを所定の単位ごとに順次加算してチェックサムを求め、当該チェックサムと、前記初期データから予め計算されたチェックサム期待値との一致を確認することで、それぞれの前記部分メモリ領域のテストを実行する、前記メイン・メモリのテストを実行するためのマルチ・プロセッサ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはメモリのテストに関する。本発明は特に、マルチ・プロセッサ・システムにおいて、複数の副プロセッサの各々が有するローカル・ストアを用いた並行処理と当該ローカル・ストアへのアクセスとを利用して、メイン・メモリのテストを効率的に実行する方法、コンピュータ・プログラム、およびそのシステムに関する。
【背景技術】
【０００２】
昨今のコンピューティング環境では、高性能ゲーム機、画像処理サーバ、医療向け画像処理装置などの分野において、高速なビデオ処理やリアルタイム処理などを利用して、コンピューティング能力を飛躍的に向上させたコンピュータ・システムが求められる。このようなコンピュータ・システムでは、複数のプロセッサを有するいわゆるマルチ・プロセッサ・システムが一般的になってきている。
【０００３】
一方、コンピューティング能力の向上に合わせて、システムのメイン・メモリ（システム・メモリ、主記憶等とも呼ぶ）も大容量化の傾向が顕著となってきている。システムの信頼性維持および品質維持のため、システムまたはシステム・ボードの量産テスト時、システムのパワー・オン時、およびシステムのメインテナンス・サービス時等に、メイン・メモリのテストを行う必要がある。しかし、メイン・メモリの大容量化により、そのテストや起動にかかる時間はますます長くなる傾向にあり、システムの量産性、ユーザビリティー、およびサービス品質等に大きく影響を与えている。
【０００４】
従来のコンピュータ・システムでは、シングル・プロセッサ・システムおよびマルチ・プロセッサ・システムの何れの場合も、１つのプロセッサを使って、そのメイン・メモリのテストを行っている。しかし、メイン・メモリが大容量化すると、１つのプロセッサでメイン・メモリの全領域のテストを行うのには時間がかかり過ぎることになり、好ましくない。そこで、特にマルチ・プロセッサ・システムにおいては、各プロセッサがメイン・メモリのテストを分担して並列的に行うことができないかが検討されることがある。
【０００５】
特開２００５−２６８９１４号公報には、複数の処理装置を有するシステムにおけるメモリをテストするための方法が記載されている。即ち、この方法では、メモリを各処理装置に対応した複数のメモリ・セクションに分割し、各メモリ・セクションをそれぞれ対応する処理装置によって並列的にテストを行うことにより、メモリ全体のテストに要する時間を短縮することができる。
【０００６】
しかしこの方法は、各処理装置が、それぞれに対応するメモリ・セクションを並列的に、即ち同時並行的にアクセスすることができるような構成を前提とするものである。従って、この方法は、複数のプロセッサが共通バスを介して１つのメイン・メモリに接続されるような一般的な構成を有するマルチ・プロセッサ・システムにおいては採用することができない。
【特許文献１】特開２００１−３５６９７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、マルチ・プロセッサ・システムにおいて、共用するメイン・メモリのテストを効率的に行うことができる方法等を提供することである。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の第１の側面においては、主プロセッサと、各々がＤＭＡ転送機構およびローカル・ストアを有する複数の副プロセッサとを備える、マルチ・プロセッサ・システムにおいて、メイン・メモリのテストを実行する方法であって、（１）前記主プロセッサが、前記メイン・メモリのテスト対象メモリ領域のうち、前記複数の副プロセッサの各々に対応する部分メモリ領域をそれぞれ割り当てるステップと、  （２）前記主プロセッサが、前記複数の副プロセッサの各々に対して、それぞれに割り当てられた前記部分メモリ領域のテストの実行を依頼するステップと、  （３）前記依頼を受けたことに応答して、前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアに対して初期データをフィルするステップと、  （４）前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアから、それぞれの前記部分メモリ領域へ、前記フィルされた初期データを、それぞれの前記ＤＭＡ転送機構によってダウンストリーム転送をするステップと、  （５）前記複数の副プロセッサの各々が、前記ダウンストリーム転送がされたそれぞれの前記部分メモリ領域から、それぞれの前記ローカル・ストアへ、それぞれの前記ＤＭＡ転送機構によってデータのアップストリーム転送をするステップと、  （６）前記アップストリーム転送が完了した後、前記複数の副プロセッサの各々が、前記アップストリーム転送がされた先であるそれぞれの前記ローカル・ストアのデータの値と、前記フィルされた前記初期データの値との一致を確認することで、それぞれの前記ローカル・ストアのテストを実行するステップと、  （７）前記主プロセッサが、前記複数の副プロセッサの全てについて、それぞれの前記テストを実行するステップが完了したことに応答して、それぞれの前記ローカル・ストアのテストの結果を総合して、前記メイン・メモリの前記テスト対象メモリ領域に対するテストの結果を判断するステップとを有する方法を提供する。
【０００９】
また、本発明の第２の側面においては、主プロセッサと、各々がＤＭＡ転送機構およびローカル・ストアを有する複数の副プロセッサとを備える、マルチ・プロセッサ・システムにおいて、メイン・メモリのテストを実行する方法であって、（１）前記主プロセッサが、前記メイン・メモリのテスト対象メモリ領域のうち、前記複数の副プロセッサの各々に対応する部分メモリ領域をそれぞれ割り当てるステップと、  （２）前記主プロセッサが、前記複数の副プロセッサの各々に対して、それぞれに割り当てられた前記部分メモリ領域のテストの実行を依頼するステップと、  （３）前記依頼を受けたことに応答して、前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアに対して初期データをフィルするステップと、  （４）前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアから、それぞれの前記部分メモリ領域へ、前記フィルされた初期データを、それぞれの前記ＤＭＡ転送機構によってダウンストリーム転送をするステップと、  （５）前記複数の副プロセッサの各々が、前記ダウンストリーム転送がされたそれぞれの前記部分メモリ領域から、それぞれの前記ローカル・ストアへ、それぞれの前記ＤＭＡ転送機構によってデータのアップストリーム転送をするステップと、  （６）前記アップストリーム転送が完了した後、前記複数の副プロセッサの各々が、前記アップストリーム転送がされたそれぞれの前記ローカル・ストアのデータを所定の単位ごとに順次加算してチェックサムを求め、当該チェックサムと、前記初期データから予め計算されたチェックサム期待値との一致を確認するステップと、  （７）前記主プロセッサが、前記複数の副プロセッサの全てについて、それぞれの前記テストを実行するステップが完了したことに応答して、それぞれの前記ローカル・ストアのテストの結果を総合して、前記メイン・メモリの前記テスト対象メモリ領域に対するテストの結果を判断するステップとを有する方法を提供する。
【００１０】
以上、本発明の概要を、主プロセッサと、各々がＤＭＡ転送機構およびローカル・ストアを有し並列に動作が可能な複数の副プロセッサとを備える、マルチ・プロセッサ・システムにおいて、メイン・メモリのテストを実行する方法として説明したが、本発明はまた、当該マルチ・プロセッサ・システムにこれらの方法を実行させることができるコンピュータ・プログラムとしても捉えることができる。
さらに本発明は、これらの方法に係る各ステップを実行するための手段を備えたマルチ・プロセッサ・システムとしても捉えることができる。
【００１１】
尚、上記発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの構成要素のコンビネーションまたはサブコンビネーションもまた発明となり得ることに留意されたい。
【発明の効果】
【００１２】
本発明によれば、マルチ・プロセッサ・システムにおいてメイン・メモリのテストを実行する場合に、単一のプロセッサによってテストを行う場合に比べてそのテスト時間や起動時間を大幅に短縮することができる。
【発明を実施するための最良の形態】
【００１３】
以下、添付図面を参照して、本発明を実施するための最良の形態（以下、実施形態）について詳細に説明する。 なお、実施形態の説明の全体を通じて同じ要素には同じ番号を付している。
【００１４】
最初に、本発明を実施するためのマルチ・プロセッサ・システムの構成について説明する。
図１は、本発明を実施するためのマルチ・プロセッサ・システムの構成例を示したものである。マルチ・プロセッサ・システム １００は、単一のコンポーネント（チップ）として構成されたマルチ・コア・プロセッサ・ユニット（以後、ＭＣＰＵと呼ぶ） １０２と、ＭＣＰＵ １０２に接続されたメイン・メモリ １３０と、ＭＣＰＵ １０２にＩ／Ｏバス １０４、１０６を介して接続された外部関連コンポーネント１０８、１１０とから構成される。
【００１５】
ＭＣＰＵ １０２は、プロセッサとして機能する複数のプロセッサ・コアを備えたプロセッサ・ユニットであり、主プロセッサとして機能する単一の主プロセッサ・コア（ＭＰＣ：Ｍａｉｎ  Ｐｒｏｃｅｓｓｏｒ  Ｃｏｒｅ） １１２と、副プロセッサとして機能するｎ個（ｎは１以上の整数）の副プロセッサ・コア（ＳＰＣ：Ｓｕｂ  Ｐｒｏｃｅｓｓｏｒ  Ｃｏｒｅ）ＳＰＣ１ １２０、ＳＰＣ２ １２２、・・・、ＳＰＣｎ １２４とを含む。
【００１６】
主プロセッサ・コア １１２は、メイン・メモリ １３０の一部に蓄えられたコンピュータ・プログラム １３２を実行することができるプロセッサであり、当該コンピュータ・プログラム １３２の一部を予め取り込んでおくためのキャッシュ・メモリ １３４、１３６を備えることができる。
【００１７】
副プロセッサ・コア １２０、１２２、・・・、１２４は、それぞれ、ローカル・ストア １４０、１４２、・・・、１４４を備え、このローカル・ストアの一部に蓄えられたコンピュータ・プログラムに従ってそれぞれ並列に機能することができるプロセッサである。このローカル・ストア １４０、１４２、・・・、１４４はそれぞれ、いわゆるキャッシュ・メモリとは異なり、メイン・メモリ １３０から独立したアドレス空間を持つ。
【００１８】
副プロセッサ・コア １２０、１２２、・・・、１２４は、それぞれ、さらにＤＭＡ（Ｄｙｎａｍｉｃ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ １５０、１５２、・・・、１５４等のＤＭＡ転送機構を備え、それぞれのローカル・ストア １４０、１４２、・・・、１４４とメイン・メモリ １３０との間のデータ転送を行うことができる。即ち、各副プロセッサ・コアにおいて、ＤＭＡコントローラを起動して、それぞれのローカル・ストアからメイン・メモリ １３０へのダウンストリーム転送を行うこと、および、メイン・メモリ １３０からそれぞれのローカル・ストアへのアップストリーム転送を行うことができる。
【００１９】
副プロセッサ・コア １２０、１２２、・・・、１２４は、それ自身が直接にはメイン・メモリ １３０のコンピュータ・プログラムにアクセスして実行することができない構成とすることができる。この場合、初期的に主プロセッサ・コア １１２がメイン・メモリ １３０から各副プロセッサ・コアのローカル・ストア内の所定の領域に、それぞれの副プロセッサ・コアのためのコンピュータ・プログラムをロードし、各副プロセッサは、ロードされたそのコンピュータ・プログラムを実行することができる。
【００２０】
また、その後、各副プロセッサ・コアはそのコンピュータ・プログラムに基づいた動作の一環として、それぞれのＤＭＡコントローラを起動して、メイン・メモリからそれぞれのローカル・ストアへ更なるコンピュータ・プログラムをアップストリーム転送して、転送されたそのコンピュータ・プログラムを実行して更なる動作をすることもできる。
何れにせよ、各副プロセッサ・コアは、それぞれのローカル・ストアに記憶されたそれぞれのコンピュータ・プログラムを実行して、それぞれが並列に動作することができる。
【００２１】
主プロセッサ・コア １１２および副プロセッサ・コア １２０、１２２、・・・、１２４は、内部バス １６０で互いに接続される。内部バス １６０には、さらに、メモリ・バス １８２を介してＭＣＰＵ １０２に接続されたメイン・メモリ １３０とのインターフェースを司るためのメモリ・インターフェース・コントローラ １６２、および外部関連コンポーネント １０８、１１０とのインターフェースを司るためのＩ／Ｏインターフェース・コントローラ １６４、１６６が接続される。
【００２２】
メイン・メモリ １３０は、その全領域を各種ＤＲＡＭ等の揮発性メモリ・デバイスで構成しても良いし、またはその一部を、フラッシュ・メモリやＲＯＭなどの不揮発性メモリ・デバイスで構成しても良い。この場合、主プロセッサ １１２を動作させるためのコンピュータ・プログラムの全部または一部、ならびに各副プロセッサのローカル・ストアにロードしてこれら副プロセッサを動作させるためのコンピュータ・プログラムの全部又は一部を、これら不揮発性メモリに予め記憶しておく態様が望ましい。
【００２３】
外部関連コンポーネント １０８、１１０は、このマルチ・プロセッサ・システム １００が文字通りシステムとして機能するために必要な各種コンポーネントであり、例えば、グラフィクス・コントローラである場合もあり、各種Ｉ／Ｏ機器へのインターフェースを統括してコントロールするＩ／Ｏコントローラ・ブリッジである場合もあり、または、ＭＣＰＵ １０２と全く同一のあるいは同等のプロセッサ・ユニットである場合もある。
【００２４】
Ｉ／Ｏコントローラ・ブリッジの場合には、その先に、ストレージ・コントローラ（ＩＤＥコントローラ、ＳＣＳＩコントローラ、等）を介してハードディスク・ドライブ（ＨＤＤ、ハードディスク、ハードディスク・ストレージ、固定記憶装置等と呼ぶこともある。）、ＤＶＤ等の大容量記憶装置を接続することができ、ここに本発明を実施させるのに必要なオペレーティング・システムや、オペレーティング・システムと協働してプロセッサ等に命令を与えて本発明を実施させるための、アプリケーション・ソフトウェア等のコンピュータ・プログラムを、一次的に記憶することができる。
これらコンピュータ・プログラムはメイン・メモリ １３０にロードされて２次的に記憶された後、主プロセッサ １１２のキャッシュ・メモリ１３４、１３６に逐次フェッチされて実行される。これらコンピュータ・プログラムは圧縮し、また複数に分割して複数の媒体に記録することもできる。
【００２５】
以上、外部関連コンポーネントとして説明した各コンポーネントは例示であり、その全てのコンポーネントが本発明に係るマルチ・プロセッサ・システム １００の必須構成要素となるわけではないことは言うまでもない。
【００２６】
尚、図１に示したマルチ・プロセッサ・システム １００では、それを構成するプロセッサ・ユニットが、単一のコンポーネント（チップ）として実現されるマルチ・コア・プロセッサ・ユニット １０２である場合を示している。即ち、ＭＣＰＵ １０２は、プロセッサとして機能する主プロセッサ・コア １１２および副プロセッサ・コア １２０、１２２、・・・、１２４を備えている。
【００２７】
しかし、勿論のこと、本発明を実施するためのマルチ・プロセッサ・システムを構成するプロセッサ・ユニットは、それぞれが単一のコンポーネント（チップ）である主プロセッサ・チップおよびｎ個の副プロセッサ・チップの複合体として実現することもできるし、更なる別の態様で実現することもできる。以後、「主プロセッサ」という語で、主プロセッサ・チップの場合および主プロセッサ・コアの場合その他を包括的に表すものとし、また「副プロセッサ」という語で、副プロセッサ・チップの場合および副プロセッサ・コアの場合その他を包括的に表すものとする。
【００２８】
以上のマルチ・プロセッサ・システム １００の構成の下、本発明の実施形態について以下に説明する。
先ず、本発明の第１の実施形態について説明する。図２は、本発明の第１の実施形態におけるマルチ・プロセッサ・システム １００上でのデータの流れを概念的に示す図である。
【００２９】
マルチ・プロセッサ・システム １００が起動された後、主プロセッサ １１２は、メイン・メモリ １３０の所定の領域 ２００に記憶された主プロセッサ １１２用のコンピュータ・プログラムをフェッチして実行する（矢印２９０）。主プロセッサ １１２はまた、メイン・メモリ １３０の所定の領域 ２１０、２１２、・・・、２１４に記憶された各副プロセッサ用のコンピュータ・プログラムを、各副プロセッサ １２０、１２２、・・・、１２４のそれぞれのローカル・ストアの一部 ２２０、２２２、・・・、２２４にそれぞれロードする（矢印２８６）。
【００３０】
この状態で、メイン・メモリ １３０の全領域のうち、上記の主プロセッサ １１２用のコンピュータ・プログラム、および各副プロセッサ １２０、１２２、・・・、１２４用のコンピュータ・プログラムが記憶されている領域 ２１０、２１２、・・・、２１４を除いた領域（以後、この領域のことを「テスト対象メモリ領域」 ２３０と呼ぶ。）のテストを実行する場合を考える。
【００３１】
先ず、主プロセッサ １１２は、メイン・メモリ１３０のテスト対象メモリ領域 ２３０全体を、副プロセッサの数であるｎ個に分割し、各副プロセッサのそれぞれがテストを担当するべき部分メモリ領域 ２４０、２４２、・・・、２４４を割り当てる。
この分割は、各副プロセッサによるテストの処理時間がなるべく均等になるように行うことが望ましい。例えば、各副プロセッサの処理速度が同一であるならば、ｎ個に分割される各部分メモリ領域の大きさもそれぞれ均等にすることが望ましい。
【００３２】
このｎ個の部分メモリ領域への分割は、主プロセッサがその起動と共に動的に判断して行うこともできるし、また、主プロセッサ用のコンピュータ・プログラムの中にシステムの構成や実験データに基づいて予め静的に組み込まれた内容に基づいて行うこともできる。
【００３３】
各部分メモリ領域が割り当てられたら、主プロセッサ１１２は各副プロセッサに対して、割り当てられたそれぞれの部分メモリ領域の範囲についての情報を送信して、各副プロセッサにそれぞれの部分メモリ領域のテストの実行を依頼する（矢印２８６）。
【００３４】
次に、このテストの実行の依頼を受けた副プロセッサの各々は、それぞれのローカル・ストアの一部 ２２０、２２２、・・・、２２４にロードされたコンピュータ・プログラムを実行して、それぞれのローカル・ストアのうちの作業領域 ２５０、２５２、・・・、２５４を初期データでフィル（Ｆｉｌｌ、所定の値で埋めること）する（矢印２６０、２６２、・・・、２６４）。このフィルの一形態として、作業領域のすべてを“０”値でフィルすると、それは当該作業領域をクリアしたことに他ならない。
【００３５】
この作業領域としては、なるべく大きい領域とするのが望ましく、実際には、ローカル・ストアの全領域のうち、副プロセッサを動作させるコンピュータ・プログラムが記憶されたそれぞれのローカル・ストアの一部 ２２０、２２２、・・・、２２４を除いた、フリーに使用できる全領域とするのが望ましい。
【００３６】
この作業領域のフィルは、副プロセッサに備わったストア命令を用いて行うことができる。この場合、ビット長の大きいレジスタを使うストア命令を用いるほど、より効率的にフィルが完遂されることは言うまでも無い。
以下、３２ビット長のレジスタを使うストア命令の場合と、６４ビット長のレジスタを使うストア命令の場合とで、フィルの効率の比較をする。
【００３７】
図３は、３２ビット（４バイト）長のレジスタを使って、ローカル・ストアのＭバイト（Ｍは８の倍数）の作業領域をフィルする場合の、各副プロセッサが実行するプログラム・コードの例を示したものである。また、図４は、６４ビット（８バイト）長のレジスタを使って、ローカル・ストアの同じくＭバイトの作業領域をフィルする場合の、各副プロセッサが実行するプログラム・コードの例を示したものである。
これら２つの場合を対比すると、後者の方がループの回数が１／２となり、実行される命令数も約１／２であるので、処理時間もおおよそ１／２となる。
【００３８】
各副プロセッサはまた、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）演算命令を実行する機構を備えることができる。ＳＩＭＤとは、プロセッサの持つ演算装置において、１回の命令で複数データに対する処理を同時に行うことができるものである。
前記作業領域を初期データでフィルする場合、このＳＩＭＤ演算命令の１つであるＳＩＭＤストア命令を用いて行うことができ、この場合、通常のストア命令を用いてフィルした場合に比べて、作業領域の全領域をより高速にフィルすることができる。
【００３９】
例えば、３２ビット（４バイト）長のレジスタを使って通常のストア命令を実行する場合、１ステップで４バイトしかフィルできないが、１２８ビット（１６バイト）長のＳＩＭＤレジスタを使ったＳＩＭＤストア命令を実行する場合は、１ステップで１６バイトをフィルすることができ、フィルに要する時間をおよそ４倍に短縮することができる。
【００４０】
ローカル・ストアの作業領域の初期データでのフィルが完了した後、各副プロセッサは、それぞれが備えるＤＭＡコントローラを起動して、ローカル・ストアの作業領域にフィルされた初期データを、それぞれに割り当てられたメイン・メモリの部分メモリ領域のうちで、ローカル・ストアの作業領域と同じサイズの領域（以後、便宜上「転送単位領域」 ２７０、２７２、・・・、２７４と呼ぶことにする。）に、ＤＭＡのダウンストリーム転送をする（矢印２８０、２８２、・・・、２８４）。
【００４１】
一般に、メイン・メモリのテスト対象メモリ領域 ２３０は膨大であるので、ｎ個の副プロセッサに対応して分割をした各部分メモリ領域 ２４０、２４２、・・・、２４４であっても、依然，ローカル・ストアの作業領域 ２５０、２５２、・・・、２５４よりもサイズがはるかに大きい。よって、各部分メモリ領域 ２４０、２４２、・・・、２４４の全領域をフィルするためには、ＤＭＡのダウンストリーム転送の転送先である転送単位領域 ２７０、２７２、・・・、２７４の位置を順次シフトして、ＤＭＡのダウンストリーム転送を繰り返し行う必要がある。しかし、各ローカル・ストアの作業領域 ２５０、２５２、・・・、２５４への初期データのフィルは最初に１回行うだけで良い。
【００４２】
このようにして、１つの副プロセッサについて見れば、そのローカル・ストアの作業領域に記憶された初期データは、メイン・メモリのその副プロセッサ用の部分メモリ領域をフィルすべく、繰り返しＤＭＡのダウンストリーム転送がされていく（矢印２８０）。
他の副プロセッサについても同様に、それぞれ自身のローカル・ストアの作業領域に記憶された初期データは、メイン・メモリのその副プロセッサ用の部分メモリ領域をフィルすべく、繰り返しＤＭＡのダウンストリーム転送がされていく（矢印２８２、・・・、２８４）。
【００４３】
各副プロセッサによるそれぞれのＤＭＡのダウンストリーム転送は、ＭＣＰＵ １０２とメイン・メモリ １３０とが単一のメモリ・バス １８２で接続されている場合には、そのメモリ・バス １８２がボトルネックとなる。即ち、各副プロセッサによるＤＭＡのダウンストリーム転送を同時並行的に行うことができず、逐次連続的に行われなければならないので、ＤＭＡのダウンストリーム転送の際は、複数の副プロセッサによる並列処理の効果は得られない。
【００４４】
しかし、ＤＭＡ転送とは、副プロセッサのストア命令などの命令語による制御を介さずにローカル・ストアからメイン・メモリ １３０にデータを直接転送するものであり、また、データを一気に転送するバースト・モードＤＭＡ等が可能なこともある。
よって、副プロセッサがストア命令等により逐次的にメイン・メモリにデータを記憶する場合と比べて、同一量のデータをはるかに高レートで処理することができる。
即ち、各ローカル・ストアからメイン・メモリに対するＤＭＡのダウンストリーム転送が並列化できないとしても、各副プロセッサによるローカル・ストアのフィルが並列化できることで、大幅な時間的短縮の効果を得ることができる。
【００４５】
ＤＭＡのダウンストリーム転送で、それぞれの部分メモリ領域の全領域が初期データでフィルされた後、次に各副プロセッサは、それぞれのＤＭＡコントローラを起動して、今度はこの部分メモリ領域のうち、ある転送単位領域に係るデータを、それぞれのローカル・ストアの作業領域 ２５０、２５２、・・・、２５４にＤＭＡのアップストリーム転送をする（矢印２８１、２８３、・・・、２８５）。
【００４６】
前記アップストリーム転送が完了した時点で、各副プロセッサは、それぞれのローカル・ストアの作業領域 ２５０、２５２、・・・、２５４に対して、テスト（メモリ・テスト、メモリ・チェックとも呼ぶ。）を実行する（矢印２６１、２６３、・・・、２６５）。
このテストは、作業領域の各アドレスに記憶されたデータをロード（読み出し）して、ロードしたデータの値が、最初にその同じアドレスにフィルした初期データの値と一致するかどうかを確認することで行う。作業領域の全てのアドレスで、ロードしたデータの値が初期データの値と一致していれば、メイン・メモリのこの転送単位領域のテストはパス（合格）したと判断する。
【００４７】
このようにして、１つの副プロセッサについて見れば、その部分メモリ領域中の転送単位領域をシフトしてローカル・ストアへのＤＭＡのアップストリーム転送とローカル・ストアでのテストとを順次繰り返して行い、最終的にその部分メモリ領域の全領域についてのテストを完遂する。
【００４８】
他の副プロセッサについても同様に、それぞれ、自身のＤＭＡコントローラを起動して、自身に割り当てられた部分メモリ領域のうち、ある転送単位領域に係るデータを、自身のローカル・ストアの作業領域にＤＭＡのアップストリーム転送をする。アップストリーム転送が完了した時点で、自身のローカル・ストアの作業領域に対してテスト（メモリ・テスト、メモリ・チェックとも呼ぶ。）を実行する。転送単位領域を順次シフトしてこのアップストリーム転送とテストを繰り返し、最終的に自身の部分メモリ領域の全領域に対するテストを完遂する。
【００４９】
尚、上記の例では、１回のＤＭＡのアップストリーム転送を、ローカル・ストアの作業領域と等しいサイズである転送単位領域を単位として行っているが、この代わりに、この半分のサイズを単位としてＤＭＡのアップストリーム転送を行うことも可能である。
即ち、ローカル・ストアの作業領域を上半分（上位アドレス）と下半分（下位アドレス）の２つの領域に分け、部分メモリ領域の転送単位領域のほうもこれに対応する上半分と下半分の２つの領域に分割する。先ず、転送単位領域の上半分からローカル・ストアの作業領域の上半分へ、ＤＭＡのアップストリーム転送を行う。この転送が完了したら、各副プロセッサは、当該ローカル・ストアの作業領域の上半分を対象に、テストを行う。
【００５０】
ＤＭＡの動作は、各副プロセッサのローカル・ストアのテストの動作とは独立して行うことができるので、ローカル・ストアの作業領域の上半分のテストが完了したか否かに関わらず、転送単位領域の下半分からローカル・ストアの作業領域の下半分へ、ＤＭＡのアップストリーム転送を開始することができる。
【００５１】
転送単位領域の下半分からのＤＭＡのアップストリーム転送が完了した後、ローカル・ストアの作業領域の上半分の領域のテストが完了していれば、今度は、各副プロセッサは、当該ローカル・ストアの作業領域の下半分を対象に、テストを行う。
また同時に、ローカル・ストアの作業領域の下半分のテストが完了したか否かに関わらず、転送単位領域をシフトさせて、このシフトされた転送単位領域の上半分からローカル・ストアの作業領域の上半分へ、ＤＭＡのアップストリーム転送を行うことができる。
【００５２】
このように、ＤＭＡのアップストリーム転送と、ローカル・ストアの作業領域のテストとを、パイプライン的に行うことで、ローカル・ストアの作業領域のテストに要する時間はＤＭＡのアップストリーム転送に要する時間の中に吸収され、総合的にメイン・メモリのテストに要する時間をさらに短縮することが可能となる。
【００５３】
各副プロセッサは、それぞれに割り当てられた部分メモリ領域の全領域のテストが完了したら、それぞれのテスト結果（全領域についてパスしたか、あるいはどのアドレスでフェイルしたか、等）およびテストの完了を主プロセッサ １１２に報告する（矢印２８７）。
主プロセッサは、全ての副プロセッサからのテスト結果の報告を受けたら、それらのテスト結果を総合して、テスト対象メモリ領域の全領域に対するテストの結果を判断する。
【００５４】
上記の第１の実施形態は、主プロセッサおよび各副プロセッサがそれぞれ実行するコンピュータ・プログラムに係る処理手順として捉えることがでる。図５は、本発明の第１の実施形態に係る主プロセッサの側から見た包括的な処理手順の流れを示す図である。また、図６は、本発明の第１の実施形態に係る各副プロセッサの処理手順の流れを示す図である。
【００５５】
主プロセッサの動作について見ると、先ず、図５のステップＳ３０２で、主プロセッサは、メイン・メモリのテスト対象メモリ領域全体を、副プロセッサの数であるｎ個に分割し、各副プロセッサのそれぞれがテストを担当するべき部分メモリ領域を割り当てる。
次に、ステップＳ３０４で、主プロセッサは、各副プロセッサに対して、割り当てられたそれぞれの部分メモリ領域の範囲についての情報を送信して、各副プロセッサにそれぞれの部分メモリ領域のテストの実行を依頼する。
【００５６】
この後、テストの実行の依頼を受けた各副プロセッサが稼動を始めるが、主プロセッサは、それらテストの実行には直接関与せず、ステップＢ３０８で、全ての副プロセッサからテスト結果の報告を受けるのを待つ状態に入る。
全ての副プロセッサからのテスト結果の報告を受けたら、全ての副プロセッサでのテストが完了したとみなして、ステップＳ３０６で、主プロセッサはそれらのテスト結果を総合して、テスト対象メモリ領域の全領域に対するテストの結果を判断する。
【００５７】
副プロセッサの動作について見ると、先ず、図６のステップＳ４０２で、主プロセッサからそれぞれの部分メモリ領域のテストの実行の依頼を受けた各副プロセッサは、それぞれのローカル・ストアのうちの作業領域を初期データでフィルする。
次に、ステップＳ４０４で、各副プロセッサは、それぞれが備えるＤＭＡコントローラを起動して、ローカル・ストアの作業領域にフィルされた初期データを、それぞれに割り当てられたメイン・メモリの部分メモリ領域のうちで、ローカル・ストアの作業領域と同じサイズの「転送単位領域」に、ＤＭＡのダウンストリーム転送をする。
【００５８】
各部分メモリ領域のサイズがローカル・ストアのサイズより膨大である場合は、このダウンストリーム転送は、同じローカル・ストアの作業領域から、転送先である転送単位領域の位置を順次シフトして（ステップＳ４０５）、全ての部分メモリ領域に対してフィルが行われることになるまで（ステップＢ４２０のＹｅｓ）、繰り返し行われる。
【００５９】
ＤＭＡのダウンストリーム転送で、それぞれの部分メモリ領域の全領域が初期データでフィルされた後、次にステップＳ４０６で、各副プロセッサは、それぞれのＤＭＡコントローラを起動して、今度はこの部分メモリ領域のうち、ある転送単位領域に係るデータを、それぞれのローカル・ストアの作業領域にＤＭＡのアップストリーム転送をする。
続けて、ステップＳ４０８で、各副プロセッサは、１回分のアップストリーム転送が完了したら、それぞれのローカル・ストアの作業領域のテストを行う。
【００６０】
このアップストリーム転送およびローカル・ストアの作業領域のテストは、同じローカル・ストアの作業領域へ、転送元である転送単位領域の位置を順次シフトして（ステップＳ４０９）、全ての部分メモリ領域からの転送が行われることになるまで（ステップＢ４２２のＹｅｓ）、繰り返し行われる。
【００６１】
最後に、各副プロセッサは、それぞれに割り当てられた部分メモリ領域の全領域のテストが完了したら、ステップＳ４１０で、それぞれのテスト結果（全領域についてパスしたか、あるいはどのアドレスでフェイルしたか、等）およびテストの完了を主プロセッサに報告する。
【００６２】
以上に述べたように、本発明の第１の実施形態は、メイン・メモリに対して直接フィルやテストを実行するのではなく、各副プロセッサが備えるローカル・ストアを利用して、その上でフィルやテストを実行し、ローカル・ストアとメイン・メモリとの間はＤＭＡで高速転送をするものである。よって、当該方法を実施することにより、マルチ・プロセッサ・システムの持つ処理の並列性とローカル・ストアに対する高速アクセス性を効果的に活用することができるため、メイン・メモリのテストに要する時間を大幅に短縮することができる。
【００６３】
次に、本発明の第２の実施形態について説明する。
前記第１の実施形態における、ローカル・ストアの作業領域に対するテストでは、各副プロセッサが、作業領域の各アドレスに記憶されたデータをロード（読み出し）して、その値が、最初にその同じアドレスにフィルした初期データの値と一致するかどうかを確認することで行った。
第２の実施形態では、これの代わりに、それぞれのローカル・ストアの作業領域に対するテストにおいて、ローカル・ストアの作業領域の全領域に渡って、データの加算（即ち、チェックサムの計算)を行うことで、より高速なテストを実現することができる。
【００６４】
即ち、各副プロセッサが、ローカル・ストアの作業領域に初期データをフィルし、それぞれの作業領域からそれぞれの副プロセッサに割り当てられたメイン・メモリの部分メモリ領域のある転送単位領域へのＤＭＡのダウンストリーム転送を繰り返して、部分メモリ領域の全領域を初期データでフィルした後、この部分メモリ領域のうちのある転送単位領域に係るデータを、それぞれのローカル・ストアの作業領域にＤＭＡのアップストリーム転送をするところまでは、第１の実施形態と同様である。
【００６５】
ローカル・ストアの作業領域のチェックサムの値（例えば、１バイト値）が、予め計算してあるチェックサム期待値と等しければ、当該ローカル・ストアの作業領域の全領域が正常に読み書きできているとみなされ、従って当該作業領域へＤＭＡのアップストリーム転送をした転送元である部分メモリ領域の転送単位領域のテストもパス（合格）したと判断する。
【００６６】
このようにして、１つの副プロセッサについて見れば、その部分メモリ領域中の転送単位領域をシフトしてローカル・ストアへのＤＭＡのアップストリーム転送とローカル・ストアでのチェックサムによるテストとを順次繰り返して行い、その部分メモリ領域の全領域についてのテストを完遂する。
他の副プロセッサについても同様に、それぞれ、自身のＤＭＡコントローラを起動して、自身に割り当てられた部分メモリ領域のうち、ある転送単位領域に係るデータを、自身のローカル・ストアの作業領域にＤＭＡのアップストリーム転送をし、アップストリーム転送が完了した時点で、自身のローカル・ストアの作業領域に対してチェックサムによるテストを実行し、転送単位領域を順次シフトしてこのアップストリーム転送とテストとを繰り返し、それぞれの部分メモリ領域の全領域に対するテストを完遂する。
【００６７】
各副プロセッサは、それぞれに割り当てられた部分メモリ領域の全領域のテストが完了したら、それぞれのテスト結果（全領域についてパスしたか、あるいはどこかの領域でフェイルしたか、等）を主プロセッサに報告する。
【００６８】
この第２の実施形態においても、各副プロセッサは、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）演算命令を実行する機構を備えることができる。
前記作業領域のテストをチェックサムをとることにより行う場合、このＳＩＭＤ演算命令の１つであるＳＩＭＤ加算命令を用いて行うことができ、この場合、通常の加算命令を用いてチェックサムをとる場合に比べて、作業領域の全領域をについてより高速にチェックサムをとることができる。
【００６９】
Ｓバイト長のＳＩＭＤレジスタを使ったＳＩＭＤ加算命令では、Ｓバイトずつのデータに対する１バイト単位での加算を、１ステップで行うことができるので、通常の固定小数点演算命令である加算命令を用いた場合よりも短時間（理論的にはＳ分の１の時間）でチェックサムを求めることができる。
【００７０】
例えば１２８ビット（１６バイト）長のＳＩＭＤレジスタを２つ使ったＳＩＭＤ加算命令では、第１のＳＩＭＤレジスタの１６バイト中のあるバイト分に係るデータと、第２のＳＩＭＤレジスタ中のこれに対応するバイト分に係るデータとが加算され、１６個のバイト分のそれぞれについて、この加算が同時並行的に行われる。作業領域の全領域に渡って１６バイトずつＳＩＭＤ加算命令を実行していき、最後の１６バイトのデータが得られると、今度はその１６バイトの中で１バイトずつ加算命令を実行し、最終的に１バイトのチェックサムを得ることができる。
【００７１】
以下では、前記第１の実施形態に基づいてローカル・ストアの作業領域を逐次テストする方法と、前記第２の実施形態に基づいてＳＩＭＤ加算命令等によってチェックサムをとることでローカル・ストアの作業領域をテストする方法との、テストの効率の比較をする。
【００７２】
図７は、６４ビット（８バイト）のレジスタを用いたロード（読み出し）と、初期データ値との比較とによって、ローカル・ストアのＭバイト（Ｍは１６の倍数）の作業領域を逐次テストする場合の、各副プロセッサが実行するプログラム・コードの例を示したものである。また、図８は、１６バイト長のＳＩＭＤレジスタを使うＳＩＭＤ加算命令を用いて、ローカル・ストアのＭバイト（Ｍは１６の倍数）の作業領域のチェックサムを求めて当該作業領域をテストする場合の、各副プロセッサが実行するプログラム・コードの例を示したものである。
【００７３】
これら２つの場合を対比すると、後者の図８の場合の方が比較命令の処理回数が少ないため、副プロセッサのパイプラインがストール（行き詰まり、失速）することが少なく、処理時間が短くなることがわかる。また、図７の場合はプログラム・コードのループの回数がＭ／８であるのに対して、後者の図８の場合では、プログラム・コードのループの回数がＭ／１６と前者の１／２であるので、処理ステップ数も約1/２となり、処理時間を大幅に短縮することができる。
【００７４】
作業領域のテストの結果がパス（合格）であった場合のプログラム・コードの総ステップ数は、図７の場合が
５＊（Ｍ／８）＋５
であるのに対し、図８の場合は
４＋４＊（Ｍ／１６）＋３＋３＋（４＊１６）＋５＝（Ｍ／４）＋７９
である。よって、作業領域のサイズＭが十分大きい場合は、両者の場合のステップ数の比は
｛Ｍ／４｝÷｛５＊（Ｍ／８）｝＝２／５
に収束する。即ち、図８の場合は図７の場合の約２／５のステップ数で処理可能となり、各副プロセッサがそれぞれのローカル・ストアの作業領域をテストする効率（速度）は約２．５倍となる。
【００７５】
このように、複数の副プロセッサによる各ローカル・ストアの作業領域のフィルおよびテストの処理の並列化に加え、ＳＩＭＤ演算命令でのチェックサムによる各ローカル・ストアの作業領域のテストの効率化（高速化）をはかることで、本来ならｎ個の並列化で最高ｎ倍未満のテストの効率化（高速化）しかはかれないところを、ｎ倍を超える高速化を実現することができる。
【００７６】
表１は、実際に図１に示したマルチ・プロセッサ・システムを用いて、並列化処理をさせる副プロセッサの数をいくつか変えて、メイン・メモリの２５６ＭＢのテスト対象メモリ領域に対してテストを実行した場合の処理時間を示したものである。各副プロセッサの備えるローカル・ストアのサイズは２５６ＫＢである。
【表１】
0005068188.tif 000002
【００７７】
先ず、副プロセッサを１つも用いないで、主プロセッサだけでＳＩＭＤ演算命令も用いないでメイン・メモリのテスト対象メモリ領域の全領域に対してテストを行った場合の処理時間は４４２ｍＳｅｃである。これは本発明に係る方法を全く使わない、従来方式による場合に相当する。
次に、副プロセッサを１つだけ使用して、この副プロセッサのＳＩＭＤ演算命令を用いてテストを行った場合は、先の場合の半分以下の２０５ｍＳｅｃであり、ＳＩＭＤ演算命令を用いたことのみによる効果が表れていることが分かる。
さらに、副プロセッサの数を２個、４個、８個と増やして、各副プロセッサのＳＩＭＤ演算命令を用いてテストを行った場合の処理時間はそれぞれ１０６ｍＳｅｃ、５３ｍＳｅｃ、３２ｍＳｅｃとなる。この副プロセッサを８個用いた場合の処理時間を見ても分かるように、本発明に係る方法を何も用いない場合と比べて、並列化数の８を超える約１４倍の高速化が得られていることが分かる。
【００７８】
上記の実施例では、メイン・メモリのテスト対象メモリ領域を２５６ＭＢとして実測をしたが、昨今のシステムはますます大サイズの（例えば４ＧＢ程度以上の）メイン・メモリを搭載していることが珍しくなく、本発明の方法等を用いることによるメイン・メモリのテストの高速化の効果は、ますます大きくなるものと考えられる。
【００７９】
以上、本発明の第１および第２の実施形態に基づく処理手順について説明したが、これらの処理手順は、メイン・メモリのテスト対象メモリ領域以外の部分に記憶され、および、各副プロセッサのローカル・ストアの作業領域以外の部分に記憶されたコンピュータ・プログラムが、主プロセッサや各副プロセッサに実行させることができる。即ち、本発明は、これらの処理手順をマルチ・プロセッサ・システム １００に実行させるようなコンピュータ・プログラムとして捉えることが可能である。
【００８０】
また、これらの処理は、マルチ・プロセッサ・システムが備えるいくつかの機能ブロックの組み合わせによって実施することができる。よって、本発明の技術分野に係る当業者であれば、前記各処理手順を実行することができるいくつかの手段（即ち、機能ブロック）を備えるマルチ・プロセッサ・システムとしても本発明を捉えることができる。
【００８１】
以上、本発明をいくつかの実施形態を用いて説明したが、本発明はさらに多くの異なる態様で実施することが可能であり、上記実施形態は特許請求の範囲にかかる発明を限定するものではない。  即ち、上記実施形態に多様な変更または改良を加えることが可能であることが当業者に明らかである。またその様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。さらに、上記実施形態の中で説明されている特徴の組み合わせの全てが、発明の解決手段に必須とは限らないことにも留意されたい。
【図面の簡単な説明】
【００８２】
【図１】本発明を実施するためのマルチ・プロセッサ・システムの構成例を示す。
【図２】本発明の第１の実施形態におけるマルチ・プロセッサ・システム上でのデータの流れを概念的に示す。
【図３】３２ビット（４バイト）長のレジスタを使って、ローカル・ストアのＭバイト（Ｍは８の倍数）の作業領域をフィルする場合の、各副プロセッサが実行するプログラム・コードの例を示す。
【図４】６４ビット（８バイト）長のレジスタを使って、ローカル・ストアの同じくＭバイトの作業領域をフィルする場合の、各副プロセッサが実行するプログラム・コードの例を示す。
【図５】本発明の第１の実施形態に係る主プロセッサの側から見た包括的な処理手順の流れを示す。
【図６】本発明の第１の実施形態に係る各副プロセッサの処理手順の流れを示す。
【図７】６４ビット（８バイト）のレジスタを用いたロード（読み出し）と、初期データ値との比較とによって、ローカル・ストアのＭバイト（Ｍは１６の倍数）の作業領域を逐次テストする場合の、各副プロセッサが実行するプログラム・コードの例を示す。
【図８】１６バイト長のＳＩＭＤレジスタを使うＳＩＭＤ加算命令を用いて、ローカル・ストアのＭバイト（Ｍは１６の倍数）の作業領域のチェックサムを求めて当該作業領域をテストする場合の、各副プロセッサが実行するプログラム・コードの例を示す。
【図１】
0005068188.tif 000003
【図２】
0005068188.tif 000004
【図３】
0005068188.tif 000005
【図４】
0005068188.tif 000006
【図５】
0005068188.tif 000007
【図６】
0005068188.tif 000008
【図７】
0005068188.tif 000009
【図８】
0005068188.tif 000010