JP5068188B2 - メモリのテストを実行する方法、コンピュータ・プログラム、およびシステム - Google Patents

メモリのテストを実行する方法、コンピュータ・プログラム、およびシステム Download PDF

Info

Publication number
JP5068188B2
JP5068188B2 JP2008010263A JP2008010263A JP5068188B2 JP 5068188 B2 JP5068188 B2 JP 5068188B2 JP 2008010263 A JP2008010263 A JP 2008010263A JP 2008010263 A JP2008010263 A JP 2008010263A JP 5068188 B2 JP5068188 B2 JP 5068188B2
Authority
JP
Japan
Prior art keywords
transfer
test
local store
sub
processors
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008010263A
Other languages
English (en)
Other versions
JP2009169897A (ja
Inventor
博 道司
博則 牧村
稔 喜田
伸宜 田中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2008010263A priority Critical patent/JP5068188B2/ja
Priority to US12/357,080 priority patent/US8181072B2/en
Publication of JP2009169897A publication Critical patent/JP2009169897A/ja
Application granted granted Critical
Publication of JP5068188B2 publication Critical patent/JP5068188B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/56External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0401Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals in embedded memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/26Accessing multiple arrays
    • G11C2029/2602Concurrent test

Description

本発明は、一般的にはメモリのテストに関する。本発明は特に、マルチ・プロセッサ・システムにおいて、複数の副プロセッサの各々が有するローカル・ストアを用いた並行処理と当該ローカル・ストアへのアクセスとを利用して、メイン・メモリのテストを効率的に実行する方法、コンピュータ・プログラム、およびそのシステムに関する。
昨今のコンピューティング環境では、高性能ゲーム機、画像処理サーバ、医療向け画像処理装置などの分野において、高速なビデオ処理やリアルタイム処理などを利用して、コンピューティング能力を飛躍的に向上させたコンピュータ・システムが求められる。このようなコンピュータ・システムでは、複数のプロセッサを有するいわゆるマルチ・プロセッサ・システムが一般的になってきている。
一方、コンピューティング能力の向上に合わせて、システムのメイン・メモリ(システム・メモリ、主記憶等とも呼ぶ)も大容量化の傾向が顕著となってきている。システムの信頼性維持および品質維持のため、システムまたはシステム・ボードの量産テスト時、システムのパワー・オン時、およびシステムのメインテナンス・サービス時等に、メイン・メモリのテストを行う必要がある。しかし、メイン・メモリの大容量化により、そのテストや起動にかかる時間はますます長くなる傾向にあり、システムの量産性、ユーザビリティー、およびサービス品質等に大きく影響を与えている。
従来のコンピュータ・システムでは、シングル・プロセッサ・システムおよびマルチ・プロセッサ・システムの何れの場合も、1つのプロセッサを使って、そのメイン・メモリのテストを行っている。しかし、メイン・メモリが大容量化すると、1つのプロセッサでメイン・メモリの全領域のテストを行うのには時間がかかり過ぎることになり、好ましくない。そこで、特にマルチ・プロセッサ・システムにおいては、各プロセッサがメイン・メモリのテストを分担して並列的に行うことができないかが検討されることがある。
特開2005−268914号公報には、複数の処理装置を有するシステムにおけるメモリをテストするための方法が記載されている。即ち、この方法では、メモリを各処理装置に対応した複数のメモリ・セクションに分割し、各メモリ・セクションをそれぞれ対応する処理装置によって並列的にテストを行うことにより、メモリ全体のテストに要する時間を短縮することができる。
しかしこの方法は、各処理装置が、それぞれに対応するメモリ・セクションを並列的に、即ち同時並行的にアクセスすることができるような構成を前提とするものである。従って、この方法は、複数のプロセッサが共通バスを介して1つのメイン・メモリに接続されるような一般的な構成を有するマルチ・プロセッサ・システムにおいては採用することができない。
特開2001−356971号公報
本発明の目的は、マルチ・プロセッサ・システムにおいて、共用するメイン・メモリのテストを効率的に行うことができる方法等を提供することである。
上記課題を解決するために、本発明の第1の側面においては、主プロセッサと、各々がDMA転送機構およびローカル・ストアを有する複数の副プロセッサとを備える、マルチ・プロセッサ・システムにおいて、メイン・メモリのテストを実行する方法であって、(1)前記主プロセッサが、前記メイン・メモリのテスト対象メモリ領域のうち、前記複数の副プロセッサの各々に対応する部分メモリ領域をそれぞれ割り当てるステップと、 (2)前記主プロセッサが、前記複数の副プロセッサの各々に対して、それぞれに割り当てられた前記部分メモリ領域のテストの実行を依頼するステップと、 (3)前記依頼を受けたことに応答して、前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアに対して初期データをフィルするステップと、 (4)前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアから、それぞれの前記部分メモリ領域へ、前記フィルされた初期データを、それぞれの前記DMA転送機構によってダウンストリーム転送をするステップと、 (5)前記複数の副プロセッサの各々が、前記ダウンストリーム転送がされたそれぞれの前記部分メモリ領域から、それぞれの前記ローカル・ストアへ、それぞれの前記DMA転送機構によってデータのアップストリーム転送をするステップと、 (6)前記アップストリーム転送が完了した後、前記複数の副プロセッサの各々が、前記アップストリーム転送がされた先であるそれぞれの前記ローカル・ストアのデータの値と、前記フィルされた前記初期データの値との一致を確認することで、それぞれの前記ローカル・ストアのテストを実行するステップと、 (7)前記主プロセッサが、前記複数の副プロセッサの全てについて、それぞれの前記テストを実行するステップが完了したことに応答して、それぞれの前記ローカル・ストアのテストの結果を総合して、前記メイン・メモリの前記テスト対象メモリ領域に対するテストの結果を判断するステップとを有する方法を提供する。
また、本発明の第2の側面においては、主プロセッサと、各々がDMA転送機構およびローカル・ストアを有する複数の副プロセッサとを備える、マルチ・プロセッサ・システムにおいて、メイン・メモリのテストを実行する方法であって、(1)前記主プロセッサが、前記メイン・メモリのテスト対象メモリ領域のうち、前記複数の副プロセッサの各々に対応する部分メモリ領域をそれぞれ割り当てるステップと、 (2)前記主プロセッサが、前記複数の副プロセッサの各々に対して、それぞれに割り当てられた前記部分メモリ領域のテストの実行を依頼するステップと、 (3)前記依頼を受けたことに応答して、前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアに対して初期データをフィルするステップと、 (4)前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアから、それぞれの前記部分メモリ領域へ、前記フィルされた初期データを、それぞれの前記DMA転送機構によってダウンストリーム転送をするステップと、 (5)前記複数の副プロセッサの各々が、前記ダウンストリーム転送がされたそれぞれの前記部分メモリ領域から、それぞれの前記ローカル・ストアへ、それぞれの前記DMA転送機構によってデータのアップストリーム転送をするステップと、 (6)前記アップストリーム転送が完了した後、前記複数の副プロセッサの各々が、前記アップストリーム転送がされたそれぞれの前記ローカル・ストアのデータを所定の単位ごとに順次加算してチェックサムを求め、当該チェックサムと、前記初期データから予め計算されたチェックサム期待値との一致を確認するステップと、 (7)前記主プロセッサが、前記複数の副プロセッサの全てについて、それぞれの前記テストを実行するステップが完了したことに応答して、それぞれの前記ローカル・ストアのテストの結果を総合して、前記メイン・メモリの前記テスト対象メモリ領域に対するテストの結果を判断するステップとを有する方法を提供する。
以上、本発明の概要を、主プロセッサと、各々がDMA転送機構およびローカル・ストアを有し並列に動作が可能な複数の副プロセッサとを備える、マルチ・プロセッサ・システムにおいて、メイン・メモリのテストを実行する方法として説明したが、本発明はまた、当該マルチ・プロセッサ・システムにこれらの方法を実行させることができるコンピュータ・プログラムとしても捉えることができる。
さらに本発明は、これらの方法に係る各ステップを実行するための手段を備えたマルチ・プロセッサ・システムとしても捉えることができる。
尚、上記発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの構成要素のコンビネーションまたはサブコンビネーションもまた発明となり得ることに留意されたい。
本発明によれば、マルチ・プロセッサ・システムにおいてメイン・メモリのテストを実行する場合に、単一のプロセッサによってテストを行う場合に比べてそのテスト時間や起動時間を大幅に短縮することができる。
以下、添付図面を参照して、本発明を実施するための最良の形態(以下、実施形態)について詳細に説明する。 なお、実施形態の説明の全体を通じて同じ要素には同じ番号を付している。
最初に、本発明を実施するためのマルチ・プロセッサ・システムの構成について説明する。
図1は、本発明を実施するためのマルチ・プロセッサ・システムの構成例を示したものである。マルチ・プロセッサ・システム 100は、単一のコンポーネント(チップ)として構成されたマルチ・コア・プロセッサ・ユニット(以後、MCPUと呼ぶ) 102と、MCPU 102に接続されたメイン・メモリ 130と、MCPU 102にI/Oバス 104、106を介して接続された外部関連コンポーネント108、110とから構成される。
MCPU 102は、プロセッサとして機能する複数のプロセッサ・コアを備えたプロセッサ・ユニットであり、主プロセッサとして機能する単一の主プロセッサ・コア(MPC:Main Processor Core) 112と、副プロセッサとして機能するn個(nは1以上の整数)の副プロセッサ・コア(SPC:Sub Processor Core)SPC1 120、SPC2 122、・・・、SPCn 124とを含む。
主プロセッサ・コア 112は、メイン・メモリ 130の一部に蓄えられたコンピュータ・プログラム 132を実行することができるプロセッサであり、当該コンピュータ・プログラム 132の一部を予め取り込んでおくためのキャッシュ・メモリ 134、136を備えることができる。
副プロセッサ・コア 120、122、・・・、124は、それぞれ、ローカル・ストア 140、142、・・・、144を備え、このローカル・ストアの一部に蓄えられたコンピュータ・プログラムに従ってそれぞれ並列に機能することができるプロセッサである。このローカル・ストア 140、142、・・・、144はそれぞれ、いわゆるキャッシュ・メモリとは異なり、メイン・メモリ 130から独立したアドレス空間を持つ。
副プロセッサ・コア 120、122、・・・、124は、それぞれ、さらにDMA(Dynamic Memory Access)コントローラ 150、152、・・・、154等のDMA転送機構を備え、それぞれのローカル・ストア 140、142、・・・、144とメイン・メモリ 130との間のデータ転送を行うことができる。即ち、各副プロセッサ・コアにおいて、DMAコントローラを起動して、それぞれのローカル・ストアからメイン・メモリ 130へのダウンストリーム転送を行うこと、および、メイン・メモリ 130からそれぞれのローカル・ストアへのアップストリーム転送を行うことができる。
副プロセッサ・コア 120、122、・・・、124は、それ自身が直接にはメイン・メモリ 130のコンピュータ・プログラムにアクセスして実行することができない構成とすることができる。この場合、初期的に主プロセッサ・コア 112がメイン・メモリ 130から各副プロセッサ・コアのローカル・ストア内の所定の領域に、それぞれの副プロセッサ・コアのためのコンピュータ・プログラムをロードし、各副プロセッサは、ロードされたそのコンピュータ・プログラムを実行することができる。
また、その後、各副プロセッサ・コアはそのコンピュータ・プログラムに基づいた動作の一環として、それぞれのDMAコントローラを起動して、メイン・メモリからそれぞれのローカル・ストアへ更なるコンピュータ・プログラムをアップストリーム転送して、転送されたそのコンピュータ・プログラムを実行して更なる動作をすることもできる。
何れにせよ、各副プロセッサ・コアは、それぞれのローカル・ストアに記憶されたそれぞれのコンピュータ・プログラムを実行して、それぞれが並列に動作することができる。
主プロセッサ・コア 112および副プロセッサ・コア 120、122、・・・、124は、内部バス 160で互いに接続される。内部バス 160には、さらに、メモリ・バス 182を介してMCPU 102に接続されたメイン・メモリ 130とのインターフェースを司るためのメモリ・インターフェース・コントローラ 162、および外部関連コンポーネント 108、110とのインターフェースを司るためのI/Oインターフェース・コントローラ 164、166が接続される。
メイン・メモリ 130は、その全領域を各種DRAM等の揮発性メモリ・デバイスで構成しても良いし、またはその一部を、フラッシュ・メモリやROMなどの不揮発性メモリ・デバイスで構成しても良い。この場合、主プロセッサ 112を動作させるためのコンピュータ・プログラムの全部または一部、ならびに各副プロセッサのローカル・ストアにロードしてこれら副プロセッサを動作させるためのコンピュータ・プログラムの全部又は一部を、これら不揮発性メモリに予め記憶しておく態様が望ましい。
外部関連コンポーネント 108、110は、このマルチ・プロセッサ・システム 100が文字通りシステムとして機能するために必要な各種コンポーネントであり、例えば、グラフィクス・コントローラである場合もあり、各種I/O機器へのインターフェースを統括してコントロールするI/Oコントローラ・ブリッジである場合もあり、または、MCPU 102と全く同一のあるいは同等のプロセッサ・ユニットである場合もある。
I/Oコントローラ・ブリッジの場合には、その先に、ストレージ・コントローラ(IDEコントローラ、SCSIコントローラ、等)を介してハードディスク・ドライブ(HDD、ハードディスク、ハードディスク・ストレージ、固定記憶装置等と呼ぶこともある。)、DVD等の大容量記憶装置を接続することができ、ここに本発明を実施させるのに必要なオペレーティング・システムや、オペレーティング・システムと協働してプロセッサ等に命令を与えて本発明を実施させるための、アプリケーション・ソフトウェア等のコンピュータ・プログラムを、一次的に記憶することができる。
これらコンピュータ・プログラムはメイン・メモリ 130にロードされて2次的に記憶された後、主プロセッサ 112のキャッシュ・メモリ134、136に逐次フェッチされて実行される。これらコンピュータ・プログラムは圧縮し、また複数に分割して複数の媒体に記録することもできる。
以上、外部関連コンポーネントとして説明した各コンポーネントは例示であり、その全てのコンポーネントが本発明に係るマルチ・プロセッサ・システム 100の必須構成要素となるわけではないことは言うまでもない。
尚、図1に示したマルチ・プロセッサ・システム 100では、それを構成するプロセッサ・ユニットが、単一のコンポーネント(チップ)として実現されるマルチ・コア・プロセッサ・ユニット 102である場合を示している。即ち、MCPU 102は、プロセッサとして機能する主プロセッサ・コア 112および副プロセッサ・コア 120、122、・・・、124を備えている。
しかし、勿論のこと、本発明を実施するためのマルチ・プロセッサ・システムを構成するプロセッサ・ユニットは、それぞれが単一のコンポーネント(チップ)である主プロセッサ・チップおよびn個の副プロセッサ・チップの複合体として実現することもできるし、更なる別の態様で実現することもできる。以後、「主プロセッサ」という語で、主プロセッサ・チップの場合および主プロセッサ・コアの場合その他を包括的に表すものとし、また「副プロセッサ」という語で、副プロセッサ・チップの場合および副プロセッサ・コアの場合その他を包括的に表すものとする。
以上のマルチ・プロセッサ・システム 100の構成の下、本発明の実施形態について以下に説明する。
先ず、本発明の第1の実施形態について説明する。図2は、本発明の第1の実施形態におけるマルチ・プロセッサ・システム 100上でのデータの流れを概念的に示す図である。
マルチ・プロセッサ・システム 100が起動された後、主プロセッサ 112は、メイン・メモリ 130の所定の領域 200に記憶された主プロセッサ 112用のコンピュータ・プログラムをフェッチして実行する(矢印290)。主プロセッサ 112はまた、メイン・メモリ 130の所定の領域 210、212、・・・、214に記憶された各副プロセッサ用のコンピュータ・プログラムを、各副プロセッサ 120、122、・・・、124のそれぞれのローカル・ストアの一部 220、222、・・・、224にそれぞれロードする(矢印286)。
この状態で、メイン・メモリ 130の全領域のうち、上記の主プロセッサ 112用のコンピュータ・プログラム、および各副プロセッサ 120、122、・・・、124用のコンピュータ・プログラムが記憶されている領域 210、212、・・・、214を除いた領域(以後、この領域のことを「テスト対象メモリ領域」 230と呼ぶ。)のテストを実行する場合を考える。
先ず、主プロセッサ 112は、メイン・メモリ130のテスト対象メモリ領域 230全体を、副プロセッサの数であるn個に分割し、各副プロセッサのそれぞれがテストを担当するべき部分メモリ領域 240、242、・・・、244を割り当てる。
この分割は、各副プロセッサによるテストの処理時間がなるべく均等になるように行うことが望ましい。例えば、各副プロセッサの処理速度が同一であるならば、n個に分割される各部分メモリ領域の大きさもそれぞれ均等にすることが望ましい。
このn個の部分メモリ領域への分割は、主プロセッサがその起動と共に動的に判断して行うこともできるし、また、主プロセッサ用のコンピュータ・プログラムの中にシステムの構成や実験データに基づいて予め静的に組み込まれた内容に基づいて行うこともできる。
各部分メモリ領域が割り当てられたら、主プロセッサ112は各副プロセッサに対して、割り当てられたそれぞれの部分メモリ領域の範囲についての情報を送信して、各副プロセッサにそれぞれの部分メモリ領域のテストの実行を依頼する(矢印286)。
次に、このテストの実行の依頼を受けた副プロセッサの各々は、それぞれのローカル・ストアの一部 220、222、・・・、224にロードされたコンピュータ・プログラムを実行して、それぞれのローカル・ストアのうちの作業領域 250、252、・・・、254を初期データでフィル(Fill、所定の値で埋めること)する(矢印260、262、・・・、264)。このフィルの一形態として、作業領域のすべてを“0”値でフィルすると、それは当該作業領域をクリアしたことに他ならない。
この作業領域としては、なるべく大きい領域とするのが望ましく、実際には、ローカル・ストアの全領域のうち、副プロセッサを動作させるコンピュータ・プログラムが記憶されたそれぞれのローカル・ストアの一部 220、222、・・・、224を除いた、フリーに使用できる全領域とするのが望ましい。
この作業領域のフィルは、副プロセッサに備わったストア命令を用いて行うことができる。この場合、ビット長の大きいレジスタを使うストア命令を用いるほど、より効率的にフィルが完遂されることは言うまでも無い。
以下、32ビット長のレジスタを使うストア命令の場合と、64ビット長のレジスタを使うストア命令の場合とで、フィルの効率の比較をする。
図3は、32ビット(4バイト)長のレジスタを使って、ローカル・ストアのMバイト(Mは8の倍数)の作業領域をフィルする場合の、各副プロセッサが実行するプログラム・コードの例を示したものである。また、図4は、64ビット(8バイト)長のレジスタを使って、ローカル・ストアの同じくMバイトの作業領域をフィルする場合の、各副プロセッサが実行するプログラム・コードの例を示したものである。
これら2つの場合を対比すると、後者の方がループの回数が1/2となり、実行される命令数も約1/2であるので、処理時間もおおよそ1/2となる。
各副プロセッサはまた、SIMD(Single Instruction Multiple Data)演算命令を実行する機構を備えることができる。SIMDとは、プロセッサの持つ演算装置において、1回の命令で複数データに対する処理を同時に行うことができるものである。
前記作業領域を初期データでフィルする場合、このSIMD演算命令の1つであるSIMDストア命令を用いて行うことができ、この場合、通常のストア命令を用いてフィルした場合に比べて、作業領域の全領域をより高速にフィルすることができる。
例えば、32ビット(4バイト)長のレジスタを使って通常のストア命令を実行する場合、1ステップで4バイトしかフィルできないが、128ビット(16バイト)長のSIMDレジスタを使ったSIMDストア命令を実行する場合は、1ステップで16バイトをフィルすることができ、フィルに要する時間をおよそ4倍に短縮することができる。
ローカル・ストアの作業領域の初期データでのフィルが完了した後、各副プロセッサは、それぞれが備えるDMAコントローラを起動して、ローカル・ストアの作業領域にフィルされた初期データを、それぞれに割り当てられたメイン・メモリの部分メモリ領域のうちで、ローカル・ストアの作業領域と同じサイズの領域(以後、便宜上「転送単位領域」 270、272、・・・、274と呼ぶことにする。)に、DMAのダウンストリーム転送をする(矢印280、282、・・・、284)。
一般に、メイン・メモリのテスト対象メモリ領域 230は膨大であるので、n個の副プロセッサに対応して分割をした各部分メモリ領域 240、242、・・・、244であっても、依然,ローカル・ストアの作業領域 250、252、・・・、254よりもサイズがはるかに大きい。よって、各部分メモリ領域 240、242、・・・、244の全領域をフィルするためには、DMAのダウンストリーム転送の転送先である転送単位領域 270、272、・・・、274の位置を順次シフトして、DMAのダウンストリーム転送を繰り返し行う必要がある。しかし、各ローカル・ストアの作業領域 250、252、・・・、254への初期データのフィルは最初に1回行うだけで良い。
このようにして、1つの副プロセッサについて見れば、そのローカル・ストアの作業領域に記憶された初期データは、メイン・メモリのその副プロセッサ用の部分メモリ領域をフィルすべく、繰り返しDMAのダウンストリーム転送がされていく(矢印280)。
他の副プロセッサについても同様に、それぞれ自身のローカル・ストアの作業領域に記憶された初期データは、メイン・メモリのその副プロセッサ用の部分メモリ領域をフィルすべく、繰り返しDMAのダウンストリーム転送がされていく(矢印282、・・・、284)。
各副プロセッサによるそれぞれのDMAのダウンストリーム転送は、MCPU 102とメイン・メモリ 130とが単一のメモリ・バス 182で接続されている場合には、そのメモリ・バス 182がボトルネックとなる。即ち、各副プロセッサによるDMAのダウンストリーム転送を同時並行的に行うことができず、逐次連続的に行われなければならないので、DMAのダウンストリーム転送の際は、複数の副プロセッサによる並列処理の効果は得られない。
しかし、DMA転送とは、副プロセッサのストア命令などの命令語による制御を介さずにローカル・ストアからメイン・メモリ 130にデータを直接転送するものであり、また、データを一気に転送するバースト・モードDMA等が可能なこともある。
よって、副プロセッサがストア命令等により逐次的にメイン・メモリにデータを記憶する場合と比べて、同一量のデータをはるかに高レートで処理することができる。
即ち、各ローカル・ストアからメイン・メモリに対するDMAのダウンストリーム転送が並列化できないとしても、各副プロセッサによるローカル・ストアのフィルが並列化できることで、大幅な時間的短縮の効果を得ることができる。
DMAのダウンストリーム転送で、それぞれの部分メモリ領域の全領域が初期データでフィルされた後、次に各副プロセッサは、それぞれのDMAコントローラを起動して、今度はこの部分メモリ領域のうち、ある転送単位領域に係るデータを、それぞれのローカル・ストアの作業領域 250、252、・・・、254にDMAのアップストリーム転送をする(矢印281、283、・・・、285)。
前記アップストリーム転送が完了した時点で、各副プロセッサは、それぞれのローカル・ストアの作業領域 250、252、・・・、254に対して、テスト(メモリ・テスト、メモリ・チェックとも呼ぶ。)を実行する(矢印261、263、・・・、265)。
このテストは、作業領域の各アドレスに記憶されたデータをロード(読み出し)して、ロードしたデータの値が、最初にその同じアドレスにフィルした初期データの値と一致するかどうかを確認することで行う。作業領域の全てのアドレスで、ロードしたデータの値が初期データの値と一致していれば、メイン・メモリのこの転送単位領域のテストはパス(合格)したと判断する。
このようにして、1つの副プロセッサについて見れば、その部分メモリ領域中の転送単位領域をシフトしてローカル・ストアへのDMAのアップストリーム転送とローカル・ストアでのテストとを順次繰り返して行い、最終的にその部分メモリ領域の全領域についてのテストを完遂する。
他の副プロセッサについても同様に、それぞれ、自身のDMAコントローラを起動して、自身に割り当てられた部分メモリ領域のうち、ある転送単位領域に係るデータを、自身のローカル・ストアの作業領域にDMAのアップストリーム転送をする。アップストリーム転送が完了した時点で、自身のローカル・ストアの作業領域に対してテスト(メモリ・テスト、メモリ・チェックとも呼ぶ。)を実行する。転送単位領域を順次シフトしてこのアップストリーム転送とテストを繰り返し、最終的に自身の部分メモリ領域の全領域に対するテストを完遂する。
尚、上記の例では、1回のDMAのアップストリーム転送を、ローカル・ストアの作業領域と等しいサイズである転送単位領域を単位として行っているが、この代わりに、この半分のサイズを単位としてDMAのアップストリーム転送を行うことも可能である。
即ち、ローカル・ストアの作業領域を上半分(上位アドレス)と下半分(下位アドレス)の2つの領域に分け、部分メモリ領域の転送単位領域のほうもこれに対応する上半分と下半分の2つの領域に分割する。先ず、転送単位領域の上半分からローカル・ストアの作業領域の上半分へ、DMAのアップストリーム転送を行う。この転送が完了したら、各副プロセッサは、当該ローカル・ストアの作業領域の上半分を対象に、テストを行う。
DMAの動作は、各副プロセッサのローカル・ストアのテストの動作とは独立して行うことができるので、ローカル・ストアの作業領域の上半分のテストが完了したか否かに関わらず、転送単位領域の下半分からローカル・ストアの作業領域の下半分へ、DMAのアップストリーム転送を開始することができる。
転送単位領域の下半分からのDMAのアップストリーム転送が完了した後、ローカル・ストアの作業領域の上半分の領域のテストが完了していれば、今度は、各副プロセッサは、当該ローカル・ストアの作業領域の下半分を対象に、テストを行う。
また同時に、ローカル・ストアの作業領域の下半分のテストが完了したか否かに関わらず、転送単位領域をシフトさせて、このシフトされた転送単位領域の上半分からローカル・ストアの作業領域の上半分へ、DMAのアップストリーム転送を行うことができる。
このように、DMAのアップストリーム転送と、ローカル・ストアの作業領域のテストとを、パイプライン的に行うことで、ローカル・ストアの作業領域のテストに要する時間はDMAのアップストリーム転送に要する時間の中に吸収され、総合的にメイン・メモリのテストに要する時間をさらに短縮することが可能となる。
各副プロセッサは、それぞれに割り当てられた部分メモリ領域の全領域のテストが完了したら、それぞれのテスト結果(全領域についてパスしたか、あるいはどのアドレスでフェイルしたか、等)およびテストの完了を主プロセッサ 112に報告する(矢印287)。
主プロセッサは、全ての副プロセッサからのテスト結果の報告を受けたら、それらのテスト結果を総合して、テスト対象メモリ領域の全領域に対するテストの結果を判断する。
上記の第1の実施形態は、主プロセッサおよび各副プロセッサがそれぞれ実行するコンピュータ・プログラムに係る処理手順として捉えることがでる。図5は、本発明の第1の実施形態に係る主プロセッサの側から見た包括的な処理手順の流れを示す図である。また、図6は、本発明の第1の実施形態に係る各副プロセッサの処理手順の流れを示す図である。
主プロセッサの動作について見ると、先ず、図5のステップS302で、主プロセッサは、メイン・メモリのテスト対象メモリ領域全体を、副プロセッサの数であるn個に分割し、各副プロセッサのそれぞれがテストを担当するべき部分メモリ領域を割り当てる。
次に、ステップS304で、主プロセッサは、各副プロセッサに対して、割り当てられたそれぞれの部分メモリ領域の範囲についての情報を送信して、各副プロセッサにそれぞれの部分メモリ領域のテストの実行を依頼する。
この後、テストの実行の依頼を受けた各副プロセッサが稼動を始めるが、主プロセッサは、それらテストの実行には直接関与せず、ステップB308で、全ての副プロセッサからテスト結果の報告を受けるのを待つ状態に入る。
全ての副プロセッサからのテスト結果の報告を受けたら、全ての副プロセッサでのテストが完了したとみなして、ステップS306で、主プロセッサはそれらのテスト結果を総合して、テスト対象メモリ領域の全領域に対するテストの結果を判断する。
副プロセッサの動作について見ると、先ず、図6のステップS402で、主プロセッサからそれぞれの部分メモリ領域のテストの実行の依頼を受けた各副プロセッサは、それぞれのローカル・ストアのうちの作業領域を初期データでフィルする。
次に、ステップS404で、各副プロセッサは、それぞれが備えるDMAコントローラを起動して、ローカル・ストアの作業領域にフィルされた初期データを、それぞれに割り当てられたメイン・メモリの部分メモリ領域のうちで、ローカル・ストアの作業領域と同じサイズの「転送単位領域」に、DMAのダウンストリーム転送をする。
各部分メモリ領域のサイズがローカル・ストアのサイズより膨大である場合は、このダウンストリーム転送は、同じローカル・ストアの作業領域から、転送先である転送単位領域の位置を順次シフトして(ステップS405)、全ての部分メモリ領域に対してフィルが行われることになるまで(ステップB420のYes)、繰り返し行われる。
DMAのダウンストリーム転送で、それぞれの部分メモリ領域の全領域が初期データでフィルされた後、次にステップS406で、各副プロセッサは、それぞれのDMAコントローラを起動して、今度はこの部分メモリ領域のうち、ある転送単位領域に係るデータを、それぞれのローカル・ストアの作業領域にDMAのアップストリーム転送をする。
続けて、ステップS408で、各副プロセッサは、1回分のアップストリーム転送が完了したら、それぞれのローカル・ストアの作業領域のテストを行う。
このアップストリーム転送およびローカル・ストアの作業領域のテストは、同じローカル・ストアの作業領域へ、転送元である転送単位領域の位置を順次シフトして(ステップS409)、全ての部分メモリ領域からの転送が行われることになるまで(ステップB422のYes)、繰り返し行われる。
最後に、各副プロセッサは、それぞれに割り当てられた部分メモリ領域の全領域のテストが完了したら、ステップS410で、それぞれのテスト結果(全領域についてパスしたか、あるいはどのアドレスでフェイルしたか、等)およびテストの完了を主プロセッサに報告する。
以上に述べたように、本発明の第1の実施形態は、メイン・メモリに対して直接フィルやテストを実行するのではなく、各副プロセッサが備えるローカル・ストアを利用して、その上でフィルやテストを実行し、ローカル・ストアとメイン・メモリとの間はDMAで高速転送をするものである。よって、当該方法を実施することにより、マルチ・プロセッサ・システムの持つ処理の並列性とローカル・ストアに対する高速アクセス性を効果的に活用することができるため、メイン・メモリのテストに要する時間を大幅に短縮することができる。
次に、本発明の第2の実施形態について説明する。
前記第1の実施形態における、ローカル・ストアの作業領域に対するテストでは、各副プロセッサが、作業領域の各アドレスに記憶されたデータをロード(読み出し)して、その値が、最初にその同じアドレスにフィルした初期データの値と一致するかどうかを確認することで行った。
第2の実施形態では、これの代わりに、それぞれのローカル・ストアの作業領域に対するテストにおいて、ローカル・ストアの作業領域の全領域に渡って、データの加算(即ち、チェックサムの計算)を行うことで、より高速なテストを実現することができる。
即ち、各副プロセッサが、ローカル・ストアの作業領域に初期データをフィルし、それぞれの作業領域からそれぞれの副プロセッサに割り当てられたメイン・メモリの部分メモリ領域のある転送単位領域へのDMAのダウンストリーム転送を繰り返して、部分メモリ領域の全領域を初期データでフィルした後、この部分メモリ領域のうちのある転送単位領域に係るデータを、それぞれのローカル・ストアの作業領域にDMAのアップストリーム転送をするところまでは、第1の実施形態と同様である。
ローカル・ストアの作業領域のチェックサムの値(例えば、1バイト値)が、予め計算してあるチェックサム期待値と等しければ、当該ローカル・ストアの作業領域の全領域が正常に読み書きできているとみなされ、従って当該作業領域へDMAのアップストリーム転送をした転送元である部分メモリ領域の転送単位領域のテストもパス(合格)したと判断する。
このようにして、1つの副プロセッサについて見れば、その部分メモリ領域中の転送単位領域をシフトしてローカル・ストアへのDMAのアップストリーム転送とローカル・ストアでのチェックサムによるテストとを順次繰り返して行い、その部分メモリ領域の全領域についてのテストを完遂する。
他の副プロセッサについても同様に、それぞれ、自身のDMAコントローラを起動して、自身に割り当てられた部分メモリ領域のうち、ある転送単位領域に係るデータを、自身のローカル・ストアの作業領域にDMAのアップストリーム転送をし、アップストリーム転送が完了した時点で、自身のローカル・ストアの作業領域に対してチェックサムによるテストを実行し、転送単位領域を順次シフトしてこのアップストリーム転送とテストとを繰り返し、それぞれの部分メモリ領域の全領域に対するテストを完遂する。
各副プロセッサは、それぞれに割り当てられた部分メモリ領域の全領域のテストが完了したら、それぞれのテスト結果(全領域についてパスしたか、あるいはどこかの領域でフェイルしたか、等)を主プロセッサに報告する。
この第2の実施形態においても、各副プロセッサは、SIMD(Single Instruction Multiple Data)演算命令を実行する機構を備えることができる。
前記作業領域のテストをチェックサムをとることにより行う場合、このSIMD演算命令の1つであるSIMD加算命令を用いて行うことができ、この場合、通常の加算命令を用いてチェックサムをとる場合に比べて、作業領域の全領域をについてより高速にチェックサムをとることができる。
Sバイト長のSIMDレジスタを使ったSIMD加算命令では、Sバイトずつのデータに対する1バイト単位での加算を、1ステップで行うことができるので、通常の固定小数点演算命令である加算命令を用いた場合よりも短時間(理論的にはS分の1の時間)でチェックサムを求めることができる。
例えば128ビット(16バイト)長のSIMDレジスタを2つ使ったSIMD加算命令では、第1のSIMDレジスタの16バイト中のあるバイト分に係るデータと、第2のSIMDレジスタ中のこれに対応するバイト分に係るデータとが加算され、16個のバイト分のそれぞれについて、この加算が同時並行的に行われる。作業領域の全領域に渡って16バイトずつSIMD加算命令を実行していき、最後の16バイトのデータが得られると、今度はその16バイトの中で1バイトずつ加算命令を実行し、最終的に1バイトのチェックサムを得ることができる。
以下では、前記第1の実施形態に基づいてローカル・ストアの作業領域を逐次テストする方法と、前記第2の実施形態に基づいてSIMD加算命令等によってチェックサムをとることでローカル・ストアの作業領域をテストする方法との、テストの効率の比較をする。
図7は、64ビット(8バイト)のレジスタを用いたロード(読み出し)と、初期データ値との比較とによって、ローカル・ストアのMバイト(Mは16の倍数)の作業領域を逐次テストする場合の、各副プロセッサが実行するプログラム・コードの例を示したものである。また、図8は、16バイト長のSIMDレジスタを使うSIMD加算命令を用いて、ローカル・ストアのMバイト(Mは16の倍数)の作業領域のチェックサムを求めて当該作業領域をテストする場合の、各副プロセッサが実行するプログラム・コードの例を示したものである。
これら2つの場合を対比すると、後者の図8の場合の方が比較命令の処理回数が少ないため、副プロセッサのパイプラインがストール(行き詰まり、失速)することが少なく、処理時間が短くなることがわかる。また、図7の場合はプログラム・コードのループの回数がM/8であるのに対して、後者の図8の場合では、プログラム・コードのループの回数がM/16と前者の1/2であるので、処理ステップ数も約1/2となり、処理時間を大幅に短縮することができる。
作業領域のテストの結果がパス(合格)であった場合のプログラム・コードの総ステップ数は、図7の場合が
5*(M/8)+5
であるのに対し、図8の場合は
4+4*(M/16)+3+3+(4*16)+5=(M/4)+79
である。よって、作業領域のサイズMが十分大きい場合は、両者の場合のステップ数の比は
{M/4}÷{5*(M/8)}=2/5
に収束する。即ち、図8の場合は図7の場合の約2/5のステップ数で処理可能となり、各副プロセッサがそれぞれのローカル・ストアの作業領域をテストする効率(速度)は約2.5倍となる。
このように、複数の副プロセッサによる各ローカル・ストアの作業領域のフィルおよびテストの処理の並列化に加え、SIMD演算命令でのチェックサムによる各ローカル・ストアの作業領域のテストの効率化(高速化)をはかることで、本来ならn個の並列化で最高n倍未満のテストの効率化(高速化)しかはかれないところを、n倍を超える高速化を実現することができる。
表1は、実際に図1に示したマルチ・プロセッサ・システムを用いて、並列化処理をさせる副プロセッサの数をいくつか変えて、メイン・メモリの256MBのテスト対象メモリ領域に対してテストを実行した場合の処理時間を示したものである。各副プロセッサの備えるローカル・ストアのサイズは256KBである。
Figure 0005068188
先ず、副プロセッサを1つも用いないで、主プロセッサだけでSIMD演算命令も用いないでメイン・メモリのテスト対象メモリ領域の全領域に対してテストを行った場合の処理時間は442mSecである。これは本発明に係る方法を全く使わない、従来方式による場合に相当する。
次に、副プロセッサを1つだけ使用して、この副プロセッサのSIMD演算命令を用いてテストを行った場合は、先の場合の半分以下の205mSecであり、SIMD演算命令を用いたことのみによる効果が表れていることが分かる。
さらに、副プロセッサの数を2個、4個、8個と増やして、各副プロセッサのSIMD演算命令を用いてテストを行った場合の処理時間はそれぞれ106mSec、53mSec、32mSecとなる。この副プロセッサを8個用いた場合の処理時間を見ても分かるように、本発明に係る方法を何も用いない場合と比べて、並列化数の8を超える約14倍の高速化が得られていることが分かる。
上記の実施例では、メイン・メモリのテスト対象メモリ領域を256MBとして実測をしたが、昨今のシステムはますます大サイズの(例えば4GB程度以上の)メイン・メモリを搭載していることが珍しくなく、本発明の方法等を用いることによるメイン・メモリのテストの高速化の効果は、ますます大きくなるものと考えられる。
以上、本発明の第1および第2の実施形態に基づく処理手順について説明したが、これらの処理手順は、メイン・メモリのテスト対象メモリ領域以外の部分に記憶され、および、各副プロセッサのローカル・ストアの作業領域以外の部分に記憶されたコンピュータ・プログラムが、主プロセッサや各副プロセッサに実行させることができる。即ち、本発明は、これらの処理手順をマルチ・プロセッサ・システム 100に実行させるようなコンピュータ・プログラムとして捉えることが可能である。
また、これらの処理は、マルチ・プロセッサ・システムが備えるいくつかの機能ブロックの組み合わせによって実施することができる。よって、本発明の技術分野に係る当業者であれば、前記各処理手順を実行することができるいくつかの手段(即ち、機能ブロック)を備えるマルチ・プロセッサ・システムとしても本発明を捉えることができる。
以上、本発明をいくつかの実施形態を用いて説明したが、本発明はさらに多くの異なる態様で実施することが可能であり、上記実施形態は特許請求の範囲にかかる発明を限定するものではない。 即ち、上記実施形態に多様な変更または改良を加えることが可能であることが当業者に明らかである。またその様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。さらに、上記実施形態の中で説明されている特徴の組み合わせの全てが、発明の解決手段に必須とは限らないことにも留意されたい。
本発明を実施するためのマルチ・プロセッサ・システムの構成例を示す。 本発明の第1の実施形態におけるマルチ・プロセッサ・システム上でのデータの流れを概念的に示す。 32ビット(4バイト)長のレジスタを使って、ローカル・ストアのMバイト(Mは8の倍数)の作業領域をフィルする場合の、各副プロセッサが実行するプログラム・コードの例を示す。 64ビット(8バイト)長のレジスタを使って、ローカル・ストアの同じくMバイトの作業領域をフィルする場合の、各副プロセッサが実行するプログラム・コードの例を示す。 本発明の第1の実施形態に係る主プロセッサの側から見た包括的な処理手順の流れを示す。 本発明の第1の実施形態に係る各副プロセッサの処理手順の流れを示す。 64ビット(8バイト)のレジスタを用いたロード(読み出し)と、初期データ値との比較とによって、ローカル・ストアのMバイト(Mは16の倍数)の作業領域を逐次テストする場合の、各副プロセッサが実行するプログラム・コードの例を示す。 16バイト長のSIMDレジスタを使うSIMD加算命令を用いて、ローカル・ストアのMバイト(Mは16の倍数)の作業領域のチェックサムを求めて当該作業領域をテストする場合の、各副プロセッサが実行するプログラム・コードの例を示す。

Claims (7)

  1. 主プロセッサと、各々がDMA転送機構およびローカル・ストアを有する複数の副プロセッサとを備える、マルチ・プロセッサ・システムにおいて、メイン・メモリのテストを実行する方法であって、
    前記主プロセッサが、前記メイン・メモリのテスト対象メモリ領域のうち、前記複数の副プロセッサの各々に対応する部分メモリ領域をそれぞれ割り当てるステップと、
    前記主プロセッサが、前記複数の副プロセッサの各々に対して、それぞれに割り当てられた前記部分メモリ領域のテストの実行を依頼するステップと、
    前記依頼を受けたことに応答して、前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアに対して初期データをフィルするステップと、
    前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアから、それぞれの前記部分メモリ領域へ、前記フィルされた初期データを、それぞれの前記DMA転送機構によってダウンストリーム転送をするステップと、
    前記複数の副プロセッサの各々が、前記ダウンストリーム転送がされたそれぞれの前記部分メモリ領域から、それぞれの前記ローカル・ストアへ、それぞれの前記DMA転送機構によってデータのアップストリーム転送をするステップと、
    前記アップストリーム転送が完了した後、前記複数の副プロセッサの各々が、前記アップストリーム転送がされた先であるそれぞれの前記ローカル・ストアのデータの値と、前記フィルされた前記初期データの値との一致を確認することで、それぞれの前記ローカル・ストアのテストを実行するステップと、
    前記主プロセッサが、前記複数の副プロセッサの全てについて、それぞれの前記テストを実行するステップが完了したことに応答して、それぞれの前記ローカル・ストアのテストの結果を総合して、前記メイン・メモリの前記テスト対象メモリ領域に対するテストの結果を判断するステップと
    を有し、
    前記ローカル・ストアのテストを実行するステップは、前記複数の副プロセッサの各々が、前記アップストリーム転送がされたそれぞれの前記ローカル・ストアのデータを所定の単位ごとに順次加算してチェックサムを求め、当該チェックサムと、前記初期データから予め計算されたチェックサム期待値との一致を確認するステップを含む、方法。
  2. 前記複数の副プロセッサの各々はMバイトのSIMD加算命令の実行手段を備え、
    前記確認するステップは、
    前記SIMD加算命令を用いてMバイトの第1のデータにMバイトの第2のデータを各バイト単位ごとに加算し、
    当該加算を前記ローカル・ストアの全領域に渡って順次繰り返してMバイトの最終加算データを求め、
    当該Mバイトの最終加算データを各バイト単位ごとに加算をする
    ステップを含む、請求項に記載の方法。
  3. 前記複数の副プロセッサの各々はMバイトのSIMDストア命令の実行手段を備え、
    前記初期データをフィルするステップは、前記SIMDストア命令を用いて、Mバイトの初期パターン・データを、Mバイトおきに順次前記ローカル・ストアの全領域に渡ってストアするステップを含む、
    請求項1または2に記載の方法。
  4. それぞれの前記部分メモリ領域はそれぞれの前記ローカル・ストアより領域が大きく、
    前記ダウンストリーム転送をするステップは、前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアを転送元とし、それぞれの前記部分メモリ領域の全領域のうち、それぞれの前記ローカル・ストアと大きさが等しい第1の転送単位領域を転送先として、前記フィルされた初期データを、それぞれの前記DMA転送機構によって第1のダウンストリーム転送をするステップを含み、
    前記第1のダウンストリーム転送の後、前記第1の転送単位領域から前記ダウンストリーム転送がまだされていない更なる転送単位領域に転送先のシフトをして、それぞれの前記ローカル・ストアからそれぞれの当該更なる転送単位領域へ、前記フィルされた初期データを、それぞれの前記DMA転送機構によって更なるダウンストリーム転送をするステップと、
    前記転送先のシフトをして更なるダウンストリーム転送をするステップを繰り返すステップであって、前記繰り返しは、それぞれの前記部分メモリ領域の全領域へのダウンストリーム転送が完遂するまで行われる、ステップと
    をさらに有し、
    前記アップストリーム転送をするステップは、それぞれの前記部分メモリ領域の全領域のうちの前記第1の転送単位領域を転送元とし、それぞれの前記ローカル・ストアを転送先として、それぞれの前記DMA転送機構によってデータの第1のアップストリーム転送をするステップを含み、
    前記ローカル・ストアのテストを実行するステップは、前記第1のアップストリーム転送が完了した後、前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアのテストを実行するステップを含み、
    前記ローカル・ストアのテストの実行が完了した後、前記第1の転送単位領域から前記更なる転送単位領域に転送元のシフトをして、当該更なる転送単位領域からそれぞれの前記ローカル・ストアへ、それぞれの前記DMA転送機構によってデータの更なるアップストリーム転送をするステップと、
    前記更なるアップストリーム転送が完了した後、前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアの更なるテストを実行するステップと、
    前記転送元のシフトをして更なるアップストリーム転送をするステップと、前記ローカル・ストアの更なるテストを実行するステップとを繰り返すステップであって、前記繰り返しは、それぞれの前記部分メモリ領域の全領域からのアップストリーム転送が完遂するまで行われる、ステップと
    をさらに有する、
    請求項1〜3のいずれか1項に記載の方法。
  5. 前記アップストリーム転送をするステップは、
    それぞれの前記ローカル・ストアの半分の領域である第1の半サイズ・ローカル・ストアを転送先とし、前記第1の転送単位領域の半分の領域であり前記第1の半サイズ・ローカル・ストアに対応する第1の半サイズ転送単位領域を転送元として、それぞれの前記DMA転送機構によってデータの第1の半サイズ・アップストリーム転送をするステップと、
    前記第1の半サイズ・アップストリーム転送の後、前記ローカル・ストアのうち前記第1の半サイズ・ローカル・ストア以外の領域である第2の半サイズ・ローカル・ストアを転送先とし、前記第1の転送単位領域のうち前記第1の半サイズ転送単位領域以外の領域である第2の半サイズ転送単位領域を転送元として、それぞれの前記DMA転送機構によってデータの第2の半サイズ・アップストリーム転送をするステップと、
    を含み、
    前記ローカル・ストアのテストを実行するステップは、
    前記第1の半サイズ・アップストリーム転送が完了した後、前記第2の半サイズ・アップストリーム転送が完了しているか否かに関わらず、前記複数の副プロセッサの各々が、それぞれの前記第1の半サイズ・ローカル・ストアのテストを実行するステップと、
    前記第2の半サイズ・アップストリーム転送が完了した後、前記複数の副プロセッサの各々が、それぞれの前記第2の半サイズ・ローカル・ストアのテストを実行するステップと、
    を含み、
    前記更なるアップストリーム転送をするステップは、
    前記第1の半サイズ・ローカル・ストアのテストの実行が完了した後、前記第2の半サイズ・ローカル・ストアのテストの実行が完了しているか否かに関わらず、前記第1の半サイズ・ローカル・ストアを転送先とし、前記更なる転送単位領域の半分の領域であり前記第1の半サイズ・ローカル・ストアに対応する第1の更なる半サイズ転送単位領域を転送元として、それぞれの前記DMA転送機構によってデータの第1の更なる半サイズ・アップストリーム転送をするステップと、
    前記第1の更なる半サイズ・アップストリーム転送の後、前記第2の半サイズ・ローカル・ストアを転送先とし、前記更なる転送単位領域のうち前記第1の更なる半サイズ転送単位領域以外の領域である第2の更なる半サイズ転送単位領域を転送元として、それぞれの前記DMA転送機構によってデータの第2の更なる半サイズ・アップストリーム転送をするステップと、
    を含み、
    前記更なるテストを実行するステップは、
    前記第1の更なる半サイズ・アップストリーム転送が完了した後、前記第2の更なる半サイズ・アップストリーム転送が完了しているか否かに関わらず、前記複数の副プロセッサの各々が、それぞれの前記第1の半サイズ・ローカル・ストアのテストを実行するステップと、
    前記第2の更なる半サイズ・アップストリーム転送が完了した後、前記複数の副プロセッサの各々が、それぞれの前記第2の半サイズ・ローカル・ストアのテストを実行するステップと、
    を含む、
    請求項に記載の方法。
  6. 主プロセッサと、各々がDMA転送機構およびローカル・ストアを有し並列に動作が可能な複数の副プロセッサとを備えるマルチ・プロセッサ・システムに含まれる、メイン・メモリのテストをするためのコンピュータ・プログラムであって、当該マルチ・プロセッサ・システムに、
    前記主プロセッサが、前記メイン・メモリのテスト対象メモリ領域のうち、前記複数の副プロセッサの各々に対応する部分メモリ領域をそれぞれ割り当てるステップと、
    前記主プロセッサが、前記複数の副プロセッサの各々に対して、それぞれに割り当てられた前記部分メモリ領域のテストの実行を依頼するステップと、
    前記依頼を受けたことに応答して、前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアに対して初期データをフィルするステップと、
    前記複数の副プロセッサの各々が、それぞれの前記ローカル・ストアから、それぞれの前記部分メモリ領域へ、前記フィルされた初期データを、それぞれの前記DMA転送機構
    によってダウンストリーム転送をするステップと、
    前記複数の副プロセッサの各々が、前記ダウンストリーム転送がされたそれぞれの前記部分メモリ領域から、それぞれの前記ローカル・ストアへ、それぞれの前記DMA転送機構によってデータのアップストリーム転送をするステップと、
    前記アップストリーム転送が完了した後、前記複数の副プロセッサの各々が、前記アップストリーム転送がされた先であるそれぞれの前記ローカル・ストアのデータの値と、前記フィルされた前記初期データの値との一致を確認することで、それぞれの前記ローカル・ストアのテストを実行するステップと、
    前記主プロセッサが、前記複数の副プロセッサの全てについて、それぞれの前記テストを実行するステップが完了したことに応答して、それぞれの前記ローカル・ストアのテストの結果を総合して、前記メイン・メモリの前記テスト対象メモリ領域に対するテストの結果を判断するステップと
    を実行させ
    前記テストを実行するステップは、前記複数の副プロセッサの各々が、前記アップストリーム転送がされたそれぞれの前記ローカル・ストアのデータを所定の単位ごとに順次加算してチェックサムを求め、当該チェックサムと、前記初期データから予め計算されたチェックサム期待値との一致を確認するステップを含む、コンピュータ・プログラム。
  7. 主プロセッサと、
    各々がDMA転送機構およびローカル・ストアを有する複数の副プロセッサと、
    前記主プロセッサおよび前記複数の副プロセッサの何れからもアクセス可能に接続されたメイン・メモリと、
    前記主プロセッサに含まれ、前記メイン・メモリのテスト対象メモリ領域のうち、前記複数の副プロセッサの各々に対応する部分メモリ領域をそれぞれ割り当てる、割り当て手段と、
    前記複数の副プロセッサの各々に対して、それぞれに割り当てられた前記部分メモリ領域のテストの実行を依頼する、テスト実行依頼手段と、
    前記複数の副プロセッサの各々に含まれ、前記依頼を受けたことに応答してそれぞれの前記ローカル・ストアに対して初期データをフィルする、フィル手段と、
    前記複数の副プロセッサの各々に含まれ、それぞれの前記ローカル・ストアから、それぞれの前記部分メモリ領域へ、前記フィルされた初期データを、それぞれの前記DMA転送機構によってダウンストリーム転送をする、ダウンストリーム転送手段と、
    前記複数の副プロセッサの各々に含まれ、前記ダウンストリーム転送がされたそれぞれの前記部分メモリ領域から、それぞれの前記ローカル・ストアへ、それぞれの前記DMA転送機構によってデータのアップストリーム転送をする、アップストリーム転送手段と、
    前記複数の副プロセッサの各々に含まれ、前記アップストリーム転送がされた先であるそれぞれの前記ローカル・ストアのデータの値と、前記フィルされた前記初期データの値との一致を確認することで、それぞれの前記ローカル・ストアのテストを実行する、テスト実行手段と、
    前記主プロセッサに含まれ、前記複数の副プロセッサの全てについて、それぞれの前記ローカル・ストアのテストの実行が完了したことに応答して、それぞれの前記ローカル・ストアのテストの結果を総合して、前記メイン・メモリの前記テスト対象メモリ領域に対するテストの結果を判断する、テスト判断手段と、
    を備え
    前記テスト実行手段は、前記複数の副プロセッサの各々が、前記アップストリーム転送がされたそれぞれの前記ローカル・ストアのデータを所定の単位ごとに順次加算してチェックサムを求め、当該チェックサムと、前記初期データから予め計算されたチェックサム期待値との一致を確認することで、それぞれの前記部分メモリ領域のテストを実行する、前記メイン・メモリのテストを実行するためのマルチ・プロセッサ・システム。
JP2008010263A 2008-01-21 2008-01-21 メモリのテストを実行する方法、コンピュータ・プログラム、およびシステム Expired - Fee Related JP5068188B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008010263A JP5068188B2 (ja) 2008-01-21 2008-01-21 メモリのテストを実行する方法、コンピュータ・プログラム、およびシステム
US12/357,080 US8181072B2 (en) 2008-01-21 2009-01-21 Memory testing using multiple processor unit, DMA, and SIMD instruction

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008010263A JP5068188B2 (ja) 2008-01-21 2008-01-21 メモリのテストを実行する方法、コンピュータ・プログラム、およびシステム

Publications (2)

Publication Number Publication Date
JP2009169897A JP2009169897A (ja) 2009-07-30
JP5068188B2 true JP5068188B2 (ja) 2012-11-07

Family

ID=40877396

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008010263A Expired - Fee Related JP5068188B2 (ja) 2008-01-21 2008-01-21 メモリのテストを実行する方法、コンピュータ・プログラム、およびシステム

Country Status (2)

Country Link
US (1) US8181072B2 (ja)
JP (1) JP5068188B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307198B2 (en) * 2009-11-24 2012-11-06 Advanced Micro Devices, Inc. Distributed multi-core memory initialization
JP5235202B2 (ja) * 2010-04-19 2013-07-10 株式会社アドバンテスト 試験装置および試験方法
JP5530823B2 (ja) * 2010-06-16 2014-06-25 シャープ株式会社 メモリチェック方法および画像処理装置
US8595442B1 (en) * 2010-11-16 2013-11-26 Xilinx, Inc. Redundantly validating values with a processor and a check circuit
US9552296B2 (en) 2013-03-15 2017-01-24 International Business Machines Corporation Verifying shared memory integrity
US9542238B2 (en) * 2013-05-23 2017-01-10 Nxp Usa, Inc. Systems and methods for direct memory access coherency among multiple processing cores
US9836306B2 (en) * 2013-07-31 2017-12-05 Marvell World Trade Ltd. Parallelizing boot operations

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3580909D1 (de) * 1985-01-04 1991-01-24 Ibm Deutschland Pruef- und diagnoseeinrichtung fuer digitalrechner.
US5274648A (en) * 1990-01-24 1993-12-28 International Business Machines Corporation Memory card resident diagnostic testing
JPH04168564A (ja) * 1990-10-31 1992-06-16 Hokkaido Nippon Denki Software Kk マルチプロセッサによる大容量メインメモリ診断制御方式
JPH04257042A (ja) * 1991-02-12 1992-09-11 Fujitsu Ltd メモリの診断方法
JPH0619867A (ja) * 1992-06-30 1994-01-28 Sanyo Electric Co Ltd メモリチェック方式
EP0817998A4 (en) * 1995-03-31 1998-09-23 Intel Corp TESTING THE MEMORY IN A MULTI-PROCESSOR COMPUTER SYSTEM
JPH1011412A (ja) * 1996-06-24 1998-01-16 Nippon Denki Ido Tsushin Kk マルチcpu構成システムにおける初期処理負荷分散方式
US5668815A (en) * 1996-08-14 1997-09-16 Advanced Micro Devices, Inc. Method for testing integrated memory using an integrated DMA controller
US5668816A (en) * 1996-08-19 1997-09-16 International Business Machines Corporation Method and apparatus for injecting errors into an array built-in self-test
KR100230454B1 (ko) * 1997-05-28 1999-11-15 윤종용 다중처리 시스템의 캐시메모리 검사방법
JPH11219600A (ja) * 1998-02-03 1999-08-10 Mitsubishi Electric Corp 半導体集積回路装置
US6381715B1 (en) * 1998-12-31 2002-04-30 Unisys Corporation System and method for performing parallel initialization and testing of multiple memory banks and interfaces in a shared memory module
JP2001165998A (ja) * 1999-12-10 2001-06-22 Mitsubishi Electric Corp 半導体モジュール
US7143321B1 (en) 2000-04-29 2006-11-28 Hewlett-Packard Development Company, L.P. System and method for multi processor memory testing
US20040006667A1 (en) * 2002-06-21 2004-01-08 Bik Aart J.C. Apparatus and method for implementing adjacent, non-unit stride memory access patterns utilizing SIMD instructions
US7065688B1 (en) * 2003-02-19 2006-06-20 Advanced Micro Devices, Inc. Simultaneous multiprocessor memory testing and initialization
US7194660B2 (en) * 2003-06-23 2007-03-20 Newisys, Inc. Multi-processing in a BIOS environment
US7251744B1 (en) * 2004-01-21 2007-07-31 Advanced Micro Devices Inc. Memory check architecture and method for a multiprocessor computer system
JP4219835B2 (ja) 2004-03-16 2009-02-04 富士通株式会社 データ生成装置及びデータ送出方法
JP2008090433A (ja) * 2006-09-29 2008-04-17 Toshiba Corp メモリコントローラ、メモリシステム及びデータ転送方法
JP2009059305A (ja) * 2007-09-03 2009-03-19 Fujitsu Ten Ltd 制御装置及び車両の電子制御装置

Also Published As

Publication number Publication date
JP2009169897A (ja) 2009-07-30
US20090187793A1 (en) 2009-07-23
US8181072B2 (en) 2012-05-15

Similar Documents

Publication Publication Date Title
JP5068188B2 (ja) メモリのテストを実行する方法、コンピュータ・プログラム、およびシステム
TWI525437B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI529626B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI512466B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
US20210019185A1 (en) Compute task state encapsulation
US20150261535A1 (en) Method and apparatus for low latency exchange of data between a processor and coprocessor
US9858190B2 (en) Maintaining order with parallel access data streams
KR20130018742A (ko) 가비지 콜렉션을 위한 gpu 서포트
JP2009032243A (ja) 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用
US20180018095A1 (en) Method of operating storage device and method of operating data processing system including the device
US11907814B2 (en) Data path for GPU machine learning training with key value SSD
CN112074820B (zh) 用于多内核系统的存储器池分配
JP2010500682A (ja) フラッシュメモリアクセス回路
JP2021515318A (ja) NVMeベースのデータ読み取り方法、装置及びシステム
US8200900B2 (en) Method and apparatus for controlling cache memory
WO2019223383A1 (zh) 直接内存存取方法、装置、专用计算芯片及异构计算系统
TW201351276A (zh) 計算工作的排程和執行
TW201432571A (zh) 儲存與復原執行緒群組操作狀態之技術
US9792214B2 (en) Cache memory for particular data
US8117427B2 (en) Motherboard, storage device and controller thereof, and booting method
US11789634B2 (en) Systems and methods for processing copy commands
JP6537510B2 (ja) ハードウェア自動デバイス・オペレーション・イニシエータの実装するための方法およびコントローラ
US20080209085A1 (en) Semiconductor device and dma transfer method
TWI543078B (zh) 由裝置端推核心入佇列的裝置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100819

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120403

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20120416

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120416

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120625

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120731

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20120731

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120814

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150824

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees