JP7441861B2 - 演算装置及び検査方法 - Google Patents

演算装置及び検査方法 Download PDF

Info

Publication number
JP7441861B2
JP7441861B2 JP2021569778A JP2021569778A JP7441861B2 JP 7441861 B2 JP7441861 B2 JP 7441861B2 JP 2021569778 A JP2021569778 A JP 2021569778A JP 2021569778 A JP2021569778 A JP 2021569778A JP 7441861 B2 JP7441861 B2 JP 7441861B2
Authority
JP
Japan
Prior art keywords
task
core
processor cores
executed
program
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.)
Active
Application number
JP2021569778A
Other languages
English (en)
Other versions
JPWO2021140812A1 (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.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Astemo Ltd
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 Hitachi Astemo Ltd filed Critical Hitachi Astemo Ltd
Publication of JPWO2021140812A1 publication Critical patent/JPWO2021140812A1/ja
Application granted granted Critical
Publication of JP7441861B2 publication Critical patent/JP7441861B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

本開示は、演算装置及び検査方法に関する。
近年、電子機器の多機能化などにより、電子機器で実行される演算処理の演算量が年々増加しており、それに伴い、電子機器に搭載するCPU(Central Processing Unit)などのプロセッサの性能の向上が望まれている。このため、電子機器に搭載するプロセッサの数を増やしたり、プロセッサに内蔵させるプロセッサコアの数を増やしたりすることで、電子機器にプロセッサコアを複数搭載するマルチコア化を図ることが多くなっている。
また、複数のプロセッサコアを利用するために、単一のプロセッサコア向けのプログラムから並列処理が可能な部分を抽出して、各プロセッサコアで実行される複数のプログラムを含むマルチコア用プログラムを作成することがある。マルチコア用プログラムでは、元のプログラムの各タスクが複数のプロセッサコアに適宜割り当てられている。
マルチコア用プログラムによって元のプログラムと同じ実行結果を得るためには、各タスクの依存関係を考慮して、各プロセッサコアで実行されるプログラムを作成する必要がある。例えば、あるタスクの計算結果が別のタスクで使用される場合、それらのタスクの実行順序が元のプログラムでの実行順序と同じにように、各プロセッサコアで実行されるプログラムを作成する必要がある。
このため、マルチコア用プログラムの動作を検査する際に、依存関係を有するタスクの実行順序が元のプログラムでの実行順序と同一か否かを確認することがある。
これに対して特許文献1には、各CPUコアに割り当てた複数のタスクを、実行可能な全て実行順序で網羅的に実行して、マルチコア用プログラムによって元のプログラムと同じ実行結果が得られるか否かを確認する方法が開示されている。
特開2018-32062号公報
しかしながら、特許文献1に記載の技術では、CPUコアの数及びタスクの数が多くなると、複数のタスクの実行可能な実行順序の組み合わせの数が膨大となり、マルチコア用プログラムの動作の検査に大きな負荷が生じるという問題がある。
本開示の目的は、マルチコア用プログラムの動作の検査に係る負荷を軽減することが可能な演算装置及び検査方法を提供することである。
本開示の一態様に従う演算装置は、複数のプロセッサコアのそれぞれで実行される複数のプログラムを含むマルチコア用プログラムの動作を検査する演算装置であって、前記マルチコア用プログラムの実行結果の期待値を記憶する記憶部と、前記複数のプロセッサコアに対して前記マルチコア用プログラムの各タスクを実行する優先度に関する条件を設定し、各タスクの実行順序に関する制約を満たしつつ、前記条件に従って各タスクを前記複数のプロセッサコアに順次実行させることで、前記マルチコア用プログラムを実行し、当該実行結果と前記期待値とを比較する検査処理を実行する制御部と、を有し、前記制御部は、前記条件を変えて前記検査処理を複数回実行して、各タスクのうち互いに異なるプロセッサコアで並列に実行可能な2つのタスクの組み合わせのそれぞれにおいて、一方のタスクが他方のタスクよりも先に実行されるパターンと、前記一方のタスクが前記他方のタスクよりも後に実行されるパターンとを実行する。
本発明によれば、マルチコア用プログラムの動作の検査に係る負荷を軽減することが可能になる。
本開示の第1の実施形態に係るテスト装置の構成を示すブロック図である。 本開示の第1の実施形態に係るテスト装置の機能的な構成を示す図である。 本開示の第1の実施形態に係るテスト装置の動作の一例を説明するためのフローチャートである。 本開示の第1の実施形態に係るタスク実行処理の一例である最遅処理を説明するための図である。 最遅処理の具体例を説明するための図である。 最遅処理の他の具体例を説明するための図である。 本開示の第1の実施形態に係るタスク実行処理の他の例である最優先処理を説明するための図である。 本開示の第2の実施形態に係るテスト装置の動作の一例を説明するためのフローチャートである。 本開示の第2の実施形態に係るタスク実行処理の一例を説明するための図である。 本開示の第3の実施形態に係るテスト装置の構成を示すブロック図である。
以下、本開示の実施形態について図面を参照して説明する。
図1は、本開示の第1の実施形態に係るテスト装置の構成を示すブロック図である。図1に示すテスト装置100は、複数のプロセッサコア向けのプログラムであるマルチコア用プログラムの動作を検査する検査処理を実行する演算装置である。マルチコア用プログラムは、単一のプロセッサコア向けのプログラムである単一コア用プログラムから所定のツール等を用いて生成されたものでもよい。マルチコア用プログラムは、複数のプロセッサコアのそれぞれで実行される複数の個別プログラムを含む。
テスト装置100は、メモリ10と、CPU11とを有する。メモリ10及びCPU11は、内部バス又はアダプタなどを介して相互に接続される。
メモリ10は、CPU11の動作を規定する種々のプログラムを含む種々の情報を記憶する記憶部である。本実施形態では、メモリ10は、エミュレータ21と、テスト管理プログラム22と、core0用プログラム23と、core1用プログラム24と、入力値25と、出力期待値26と、フラグ27と、選択コア情報28とを記憶する。
エミュレータ21は、マルチコア用プログラムの各個別プログラムを実行する複数のプロセッサコアを仮想的に実現するためのプログラムである。本実施形態では、複数のプロセッサコアとして、2つのCPUコア(仮想CPUコア0及び1)が仮想的に実現される。
テスト管理プログラム22は、エミュレータ21にて実現された仮想CPUコア0及び1を、マルチコア用プログラムを実行させるプロセッサコアとして用いて、マルチコア用プログラムの検査処理を行うためのプログラムである。
core0用プログラム23及びcore1用プログラム24は、検査処理の検査対象となるマルチコア用プログラムを構成する。core0用プログラム23は、エミュレータ21にて実現される仮想CPUコア0用の個別プログラムであり、core1用プログラム24は、エミュレータ21にて実現される仮想CPUコア1用の個別プログラムである。
入力値25は、検査処理においてマルチコア用プログラムに設定する初期値である。出力期待値26は、検査処理におけるマルチコア用プログラムの出力値(実行結果)の期待値である。出力期待値26は、例えば、マルチコア用プログラムの元となる単一コア用プログラムに入力値25を設定した際の、単一コア用プログラムの出力値である。
フラグ27は、マルチコア用プログラムの各タスクの実行順序に関する制約を規定するための制約情報である。フラグ27は、具体的には、マルチコア用プログラムの各タスクのうち、他のタスクに依存している依存タスクの実行可否を示す。依存タスクは、依存対象のタスクの演算結果を使用するなど、依存対象のタスクとの間に実行順序に関する制約を有するタスクである。なお、フラグ27は、複数あってもよい。
選択コア情報28は、検査処理においてプロセッサコアを管理するために使用される管理情報であり、本実施形態では、検査処理において選択中及び選択済みのプロセッサコアを示す。
CPU11は、メモリ10に記憶されたプログラムを読み取り、その読み取ったプログラムを実行して、マルチコア用プログラムの検査処理を実行する制御部である。具体的には、CPU11は、エミュレータ21を実行して仮想CPUコア0及び1を仮想的に実現し、テスト管理プログラム22を実行して、エミュレータ21にて実現された仮想CPUコア0及び1を、マルチコア用プログラムを実行させるプロセッサコアとして用いて、マルチコア用プログラムの検査処理を行う。以下では、便宜上、プログラム及びタスクを各処理の動作主体として説明することもあるが、各処理の実際の動作主体はCPU11である。
検査処理では、テスト管理プログラム22(CPU11)は、複数のプロセッサコアに対してマルチコア用プログラムの各タスクを実行する優先度に関する条件である優先条件を設定する。テスト管理プログラム22は、フラグ27にて規定される各タスクの実行順序に関する制約を満たしつつ、設定した優先条件に従って各タスクを複数のプロセッサコアに順次実行させることで、マルチコア用プログラムを実行する。テスト管理プログラム22は、マルチコア用プログラムの実行結果と出力期待値26とを比較する。
また、テスト管理プログラム22は、優先条件を適宜変更して検査処理を複数回行う。このとき、テスト管理プログラム22は、各タスクのうち互いに異なるプロセッサコアで並列に実行可能な2つのタスクの組み合わせのそれぞれにおいて、一方のタスクが他方のタスクよりも先に実行されるパターンと、前記一方のタスクが前記他方のタスクよりも後に実行されるパターンとが実行されるように優先条件を変更する
図2は、プログラムが実行されることで実現されるCPU11の機能的な構成の一例を示す図である。
図2に示すようにエミュレータ21にて、仮想CPUコア0及び1が仮想的に実現される。core0用プログラム23及びcore1用プログラム24は、ここでは、タスクT1~T7を含む単一コア用プログラムから、2つのプロセッサコアで並列処理が可能なように作成されている。
core0用プログラム23は、仮想CPUコア0にタスクT1、T2、T6及びT7を実行させる個別プログラムであり、core1用プログラム24は、仮想CPUコア1にタスクT3、T4及びT5を実行させるためのプログラムである。また、タスクT3は、タスクT1に依存した依存タスクであり、タスクT7は、タスクT3に依存した依存タスクである。つまり、タスクT3はタスクT1よりも後に実行される必要があり、タスクT7はタスクT4よりも後に実行される必要がある。
したがって、仮想CPUコア0及び1とは、フラグA及びBを用いて、タスクT1が終了するまでタスクT3を開始させない、かつ、及びタスクT4が終了するまでタスクT7を開始させないという依存関係を満たしながら、タスクT1~T7を並列に実行する。
この場合、フラグ27として、タスクT3の実行可否を示すフラグAと、タスクT7の実行可否を示すフラグBとが設定される。フラグAは、タスクT1によってセットされ、フラグBは、タスクT4によってセットされる。なお、フラグを、実行可能を示す状態にすることを「フラグをセットする」と呼び、フラグが実行可能を示す状態になるまで待機することを「セット待ち」と呼ぶ。
テスト管理プログラム22は、フラグ27にて規定される各タスクT1~T7の実行順序に関する制約を満たしつつ、優先条件に従ってタスクT1~T7を順次実行させる検査処理を行うことで、core0用プログラム23及びcore1用プログラム24の各タスクの実行順序に関する制約、つまり各タスクの依存関係が元の単一コア用プログラムと等しいか否かを検査する。
図3は、テスト管理プログラム22によるテスト装置100の動作の一例を説明するためのフローチャートである。
先ず、テスト管理プログラム22は、選択コア情報28に基づいて、プロセッサコアである仮想CPUコア0及び1のうち、まだ選択されていないプロセッサコアを対象プロセッサコアとして選択し、その選択結果に基づいて選択コア情報28を更新する(ステップS101)。テスト管理プログラム22は、入力値25をマルチコア用プログラムであるcore0用プログラム23及びcore1用プログラム24に設定する(ステップS102)。
そして、テスト管理プログラム22は、マルチコア用プログラムの各タスクを仮想CPUコア0及び1に実行させるタスク実行処理を行う(ステップS103)。
テスト管理プログラム22は、タスク実行処理の処理結果をマルチコア用プログラムの出力値として出力期待値26と比較し、その比較結果を出力する(ステップS104)。
テスト管理プログラム22は、選択コア情報28に基づいて、プロセッサコアである仮想CPUコア0及び1を全て選択したか否かを判断する(ステップS105)。テスト管理プログラム22は、仮想CPUコア0及び1を全て選択した場合、処理を終了し、仮想CPUコア0及び1を全て選択していない場合、ステップS101の処理に戻る。
上記の動作において、ステップS104で出力された比較結果の全てにおいて、出力値と出力期待値26とが一致している場合、検査処理は成功となり、タスクT1~T7の依存関係が正しいこととなる。一方、比較結果のいずれか1つでも出力値と出力期待値26とが一致していない場合、検査処理は失敗となり、タスクT1~T7の依存関係が正しくないこととなる。
図4は、図3のステップS103のタスク実行処理の一例を説明するための図である。
図4におけるタスク実行処理は、優先条件を、対象プロセッサコアを他の全てのプロセッサコアよりも優先度を低くする最遅条件とした最遅処理である。
最遅条件は、対象プロセッサコアによるタスクの実行をできるだけ後に行うことを意味する。最遅条件は、より具体的には、他のプロセッサコアがタスクを実行可能な場合、他のプロセッサコアにタスクを実行させ、他のプロセッサコアがタスクを実行可能でない場合、対象プロセッサコアにタスクを実行させる条件である。タスクを実行可能なプロセッサコアは、割り当てられたタスクに未だ実行していないタスクがあり、かつ、次に実行するタスクがセット待ちでないプロセッサコアである。
タスク実行処理(最遅処理)では、先ず、テスト管理プログラム22は、タスクを実行可能な他のプロセッサコアが存在するか否かを判断する(ステップS201)。このとき、テスト管理プログラム22は、対象プロセッサコアがタスクを実行可能でなくなるまで、タスクを実行させる。なお、他のプロセッサコアは、選択中の対象プロセッサコア以外のプロセッサコアである。
タスクを実行可能な他のプロセッサコアが存在する場合、テスト管理プログラム22は、そのタスクを実行可能な他のプロセッサコアに対してタスクの実行を指示して、タスクを実行させ(ステップS202)、ステップS201の処理に戻る。
タスクを実行可能な他のプロセッサコアが存在しない場合、テスト管理プログラム22は、選択中の対象プロセッサコアに対してタスクの実行を指示して、タスクを実行させる。このとき、テスト管理プログラム22は、対象プロセッサコアがフラグ27をセットするか、セット待ちになるか、又は、全てのタスクを終了するまで、対象プロセッサコアにタスクを実行させる(ステップS203)。
テスト管理プログラム22は、全てのプロセッサコアの全てのタスクが終了したか否かを判断する(ステップS204)。テスト管理プログラム22は、全てのタスクが終了していない場合、ステップS201の処理に戻り、全てのタスクが終了した場合、処理を終了する。
以上の動作により、図3のステップS101で選択された対象プロセッサコアより、それ以外のプロセッサコアにおいて優先してタスクを実行させることができるため、対象プロセッサコアに割り当てられたタスクを最も遅く実行することができる。この処理が全てのプロセッサコアを対象プロセッサコアとして行われるため、互いに異なるプロセッサコアで並列に実行可能な2つのタスクの組み合わせの全てで、一方のタスクが他方のタスクよりも先に実行されるパターンと、その逆のパターンとの両方を実行することができる。
図5及び図6は、図2に示した構成例の場合におけるタスク実行処理の具体例を説明するための図である。図5は、仮想CPUコア0が対象プロセッサコアとして選択された例であり、図6は、仮想CPUコア1が対象プロセッサコアとして選択された例である。
図5の例では、仮想CPUコア0が対象プロセッサコアとして選択されている(L1)。この場合、仮想CPUコア1がフラグAのセット待ちであるため(L2)、テスト管理プログラム22は、仮想CPUコア1が実行可能でないと判断する(図4のステップS201:NO)。
この場合、テスト管理プログラム22は、ステップS203で仮想CPUコア0にタスクT1を実行させる(L3)。これにより、仮想CPUコア0がフラグAをセットし(L4)、仮想CPUコア1のフラグAのセット待ちが解除される(L5)。
これにより、仮想CPUコア1が実行可能となるため(ステップS201:YES)、テスト管理プログラム22は、ステップS202で仮想CPUコア1にタスクT3を実行させ(L6)、続いて、タスクT4を実行させる(L7)。これにより、仮想CPUコア0がフラグBセットし(L8)、仮想CPUコア0のフラグBのセット待ちが解除される(L9)。このとき、仮想CPUコア1は未だタスクを実行可能であるため、テスト管理プログラム22は、仮想CPUコア1にタスクT5を実行させる(L10)。
これにより、仮想CPUコア1に割り当てられたタスクが全て終了し(L11)、仮想CPUコア1が実行可能でなくなる(ステップS201:NO)。このため、テスト管理プログラム22は、ステップS202で仮想CPUコア0にタスクT2を実行させ(L12)、続いて、タスクT6を実行させる(L13)。
このとき、仮想CPUコア0のフラグBのセット待ちは既に解除され(L14)、かつ、仮想CPUコア1が実行可能でない(ステップS201:NO)ため、テスト管理プログラム22は、ステップS202で仮想CPUコア0にタスクT7を実行させる(L15)。これにより、仮想CPUコア0に割り当てられたタスクが全て終了し、仮想CPUコア0及び1の両方の処理が終了する(L16)。
図6の例では、仮想CPUコア1が対象プロセッサコアとして選択されている(M1)。この場合、仮想CPUコア0が実行可能である(図4のステップS201:YES)ため、テスト管理プログラム22は、ステップS202で仮想CPUコア0にタスクT1を実行させる(M2)。これにより、仮想CPUコア0がフラグAをセットし(M3)、仮想CPUコア1のフラグAのセット待ちが解除される(M4)。このとき、仮想CPUコア0は未だタスクを実行可能であるため、テスト管理プログラム22は、仮想CPUコア0にタスクT2を実行させ(M5)、続けて、タスクT6を実行させる(M6)。
これにより、仮想CPUコア0がフラグBのセット待ちとなり(M7)、仮想CPUコア0が実行可能でなくなる(ステップS201:NO)。このとき、仮想CPUコア1のフラグAのセット待ちは既に解除されているため(M8)、テスト管理プログラム22は、ステップS203で仮想CPUコア1にタスクT3を実行させ(M9)、続いて、タスクT4を実行させる(M10)。これにより、タスクT4により仮想CPUコア0がフラグBをセットし(M11)、仮想CPUコア0のフラグBのセット待ちが解除される(M12)。
これにより、仮想CPUコア0が実行可能となるため(ステップS201:YES)、テスト管理プログラム22は、ステップS202で仮想CPUコア0にタスクT7を実行させる(M13)。これにより、仮想CPUコア0に割り当てられたタスクが全て終了したため(M14)、仮想CPUコア0が実行可能でなくなる(ステップS201:NO)。このため、テスト管理プログラム22は、ステップS202で仮想CPUコア1にタスクT5を実行させる(M15)。これにより、仮想CPUコア0に割り当てられたタスクが全て終了し、仮想CPUコア0及び1の両方の処理が終了する(M16)。
図7は、図3のステップS103のタスク実行処理の他の例を説明するための図である。図7におけるタスク実行処理は、優先条件を、対象プロセッサコアを他の全てのプロセッサコアよりも優先度を高くする最優先条件とした最優先処理である。
最優先条件は、対象プロセッサコアによるタスクの実行をできるだけ早く行うことを意味する。最優先条件は、より具体的には、対象プロセッサコアがタスクを実行可能な場合、対象プロセッサコアにタスクを実行させ、対象プロセッサコアがタスクを実行可能でない場合、他のプロセッサコアにタスクを実行させる条件である。
タスク実行処理(最優先処理)では、先ず、テスト管理プログラム22は、選択中の対象プロセッサコアがタスクを実行可能であるか否かを判断する(ステップS301)。
対象プロセッサコアがタスクを実行可能である場合、テスト管理プログラム22は、対象プロセッサコアに対してタスクの実行を指示して、タスクを実行させ(ステップS302)、ステップS301の処理に戻る。このとき、テスト管理プログラム22は、対象プロセッサコアがタスクを実行可能でなくなるまで、タスクを実行させる。
対象プロセッサコアがタスクを実行可能でない場合、テスト管理プログラム22は、対象プロセッサコアのセット待ちのフラグをセットするプロセッサコアを検索する(ステップS303)。
テスト管理プログラム22は、検索されたプロセッサコアがセット待ちか否かを判断する(ステップS304)。
検索されたプロセッサコアがセット待ちの場合、テスト管理プログラム22は、検索されたプロセッサコアのセット待ちのフラグをセットするプロセッサコアを検索し(ステップS305)、ステップS304の処理に戻る。なお、ステップS304では、最後に選択されたプロセッサコアがセット待ちか否かが判断される。
検索されたプロセッサコアがセット待ちでない場合、テスト管理プログラム22は、検索されたプロセッサコアに対してタスクの実行を指示して、タスクを1つ実行させる(ステップS306)。
テスト管理プログラム22は、全てのプロセッサコアの全てのタスクが終了したか否かを判断する(ステップS307)。テスト管理プログラム22は、全てのタスクが終了していない場合、ステップS301の処理に戻り、全てのタスクが終了した場合、処理を終了する。
なお、上記の動作において、ステップS302によって対象プロセッサコアが割り当てられたタスクを終了した場合、ステップS303では、テスト管理プログラム22は、対象プロセッサコアのセット待ちのフラグをセットするプロセッサコアを検索する代わりに、他のプロセッサコアのうち実行可能なプロセッサコアを検索する。
以上の動作により、図3のステップS101で選択された対象プロセッサコアに優先してタスクを実行させることができるため、対象プロセッサコアに割り当てられたタスクを最も早く実行することができる。この処理が全てのプロセッサコアを対象プロセッサコアとして行われるため、図4の例と同様に、互いに異なるプロセッサコアで並列に実行可能な2つのタスクの組み合わせの全てで、一方のタスクが他方のタスクよりも先に実行されるパターンと、その逆のパターンとの両方を実行することができる。
以上説明したように本実施形態によれば、テスト管理プログラム22(CPU11)は、仮想CPUコア0及び1に対してマルチコア用プログラムの各タスクを実行する優先度に関する優先条件を設定し、各タスクの実行順序に関する制約を満たしつつ、優先条件に従って各タスクを複数のプロセッサコアに順次実行させることで、マルチコア用プログラムを実行し、当該実行結果と出力期待値26とを比較する検査処理を実行する。テスト管理プログラム22は、優先条件を変えて検査処理を複数回実行して、各タスクのうち互いに異なるプロセッサコアで並列に実行可能な2つのタスクの組み合わせのそれぞれにおいて、一方のタスクが他方のタスクよりも先に実行されるパターンと、一方のタスクが他方のタスクよりも後に実行されるパターンとを実行する。
したがって、複数のタスクの実行可能な実行順序の組み合わせの全てを網羅しなくても、並列に実行可能な2つのタスクの組み合わせのそれぞれにおいて、一方のタスクが他方のタスクよりも先に実行されるパターンと、一方のタスクが他方のタスクよりも後に実行されるパターンとで検査処理を実行することが可能になるため、マルチコア用プログラムの動作の検査に係る負荷を軽減することが可能になる。
また、本実施形態の図4に示したタスク実行処理を用いる例では、優先条件は、複数のプロセッサコアのいずれかである対象プロセッサコアを他の全てのプロセッサコアよりも優先度を低くすることであり、テスト管理プログラム22は、プロセッサコアごとに、そのプロセッサコアを対象プロセッサコアとした検査処理を実行する。この場合、プロセッサコアの数だけ検査処理を実行すればよいため、マルチコア用プログラムの動作の検査に係る負荷を軽減することが可能になる。
また、本実施形態の図7に示したタスク実行処理を用いる例では、優先条件は、複数のプロセッサコアのいずれかである対象プロセッサコアを他の全てのプロセッサコアよりも優先度を高くすることであり、テスト管理プログラム22は、プロセッサコアごとに、そのプロセッサコアを対象プロセッサコアとした検査処理を実行する。この場合、プロセッサコアの数だけ検査処理を実行すればよいため、マルチコア用プログラムの動作の検査に係る負荷を軽減することが可能になる。
また、本実施形態では、複数のプロセッサコアを仮想的に実現する。このため、マルチコア用プログラムを実際に実行する環境がなくても、マルチコア用プログラムの動作の検査を行うことが可能になる。
(第2の実施形態)
本実施形態では、テスト管理プログラム22による検査処理の変形例について説明する。
本実施形態では、優先条件は、複数のプロセッサコアのそれぞれに所定の順番に設定された優先順位である。テスト管理プログラム22は、優先順位を降順及び昇順のそれぞれとした2つの検査処理を実行する。
図8は、テスト管理プログラム22によるテスト装置100の動作の一例を説明するためのフローチャートである。
先ず、テスト管理プログラム22は、プロセッサコアである仮想CPUコア0、仮想CPUコア1の順に優先順位を降順又は昇順に設定する(ステップS111)。
その後、図3で説明したステップS102~S104の処理が実行される。ステップS104の処理が終了すると、テスト管理プログラム22は、仮想CPUコア0及び1に優先順位を降順と昇順の両方で設定したか否かを判断する(ステップS112)。テスト管理プログラム22は、優先順位を降順と昇順の両方で設定していない場合、ステップS111の処理に戻り、優先順位を降順と昇順の両方で設定した場合、処理を終了する。
図9は、図8のステップS103のタスク実行処理の一例を説明するための図である。
タスク実行処理では、テスト管理プログラム22は、優先順位が最も高いプロセッサコアを対象プロセッサコアとして選択する(ステップS401)。
テスト管理プログラム22は、選択中の対象プロセッサコアが実行可能か否かを判断する(ステップS402)。
対象プロセッサコアが実行可能でない場合、テスト管理プログラム22は、優先順位が選択中の対象プロセッサコアの次に高いプロセッサコアを対象プロセッサコアとして選択し(ステップS403)、ステップS402の処理に戻る。
対象プロセッサコアが実行可能である場合、テスト管理プログラム22は、対象プロセッサコアに対してタスクの実行を指示して、タスクを1つ実行させ(ステップS404)。
テスト管理プログラム22は、タスクを実行した、対象プロセッサコアがフラグをセットしたか否かを判断する(ステップS405)。
対象プロセッサコアがフラグをセットした場合、テスト管理プログラム22は、ステップS401の処理に戻る。一方、対象プロセッサコアがフラグをセットしていない場合、テスト管理プログラム22は、全てのプロセッサコアの全てのタスクが終了したか否かを判断する(ステップS406)。テスト管理プログラム22は、全てのタスクが終了していない場合、ステップS402の処理に戻り、全てのタスクが終了した場合、処理を終了する。
以上の動作により、図8のステップS110で設定した優先順位に従って各プロセッサコアにタスクを実行させることができる。また、プロセッサコアのいずれかがフラグ27をセットした場合(ステップS405:YES)、そのプロセッサコアよりも優先順位が高いプロセッサコアがタスクを実行可能である可能性があるため、ステップS401の処理に戻している。
図7及び図8で説明した処理でも、互いに異なるプロセッサコアで並列に実行可能な2つのタスクの組み合わせの全てで、一方のタスクが他方のタスクよりも先に実行されるパターンと、その逆のパターンとの両方を実行することができる。
以上説明した本実施形態では、優先条件は、複数のプロセッサコアのそれぞれに所定の順番に設定された優先順位であり、テスト管理プログラム22は、優先順位を降順及び昇順のそれぞれとした2回の検査処理を実行する。この場合、2回の検査処理を実行すればよいため、マルチコア用プログラムの動作の検査に係る負荷を軽減することが可能になる。
本実施形態のさらなる変形例として、優先条件は、2つのプロセッサコアの組み合わせの全てにおいて、2つのプロセッサ間の優先順位が昇順及び降順の両方の場合を含むものでもよい。
例えば、4つのプロセッサコアの場合、コア0>コア1>コア2>コア3と、コア2>コア3>コア0>コア1と、コア3>コア2>コア1>コア0の3通りの優先順位が設定されてもよい。この場合でも、一方のタスクが他方のタスクよりも先に実行されるパターンと、その逆のパターンとの両方を実行することができる。ただし、不等号の左辺は右辺よりも優先順位が高い。
すなわち、優先条件は、2つのプロセッサコア間の優先順位を降順と昇順の2通りのパターンとしたものに限らない。
(第3の実施形態)
図10は、本開示の第3の実施形態に係るECU(Engine Control Unit:エンジンコントロールユニット)の構成を示すブロック図である。図10に示すECU200は、車両(図示せず)に搭載され、車両の内燃機関(図示せず)、トランスミッション(図示せず)及びパワーステアリング(図示せず)等を制御する電子制御装置であり、マルチコア用プログラムの動作を検査する検査処理を実行する演算装置として使用される。なお、ECU200は、自動運転(AD:Autonomous Driving)用のシステム又は高度運転支援システム(ADAS:Advanced driver-assistance systems)などに設けられてもよい。
ECU200は、メモリ30と、CPU31とを有する。メモリ30及びCPU31は、内部バス又はアダプタなどを介して相互に接続している。
メモリ30は、CPU31の動作を規定する種々のプログラムを含む種々の情報を記憶する記憶部である。メモリ30は、図1に示した第1の実施形態のメモリ10と比べて、エミュレータ21の代わりに、core0用実装プログラム41と、core1用実装プログラム42を記憶する点で異なる。
core0用実装プログラム41及びcore1用実装プログラム42は、電子制御装置としての機能を実現するためのマルチコア用プログラムである。
CPU31は、メモリ30に記憶されたプログラムを読み取り、その読み取ったプログラムを実行して、マルチコア用プログラムの検査処理を実行する制御部である。以下では、便宜上、プログラムを主語として説明することもあるが、各処理の実行主体は、実際にはCPU31である。
CPU31は、CPUコア50及び51を有する。CPUコア50は、core0用実装プログラム41を実行し、CPUコア51はcore1用実装プログラム42を実行することで、電子制御装置としての種々の機能を実現する。
また、テスト管理プログラム22は、第1の実施形態及び第2の実施形態では、エミュレータ21にて実現される仮想CPUコア0及び1を用いて検査処理を行っていたのに対して、本実施形態では、実際のCPUコア50及び51を用いて検査処理を行う点で異なる。
なお。テスト管理プログラム22は、例えば、core0用実装プログラム41及びcore1用実装プログラム42が実行されていない場合(例えば、ECU200を搭載した車両が停止している場合)に検査処理を行う。また、検査処理が成功した場合、core0用プログラム23及びcore1用プログラム24をcore0用実装プログラム41及びcore1用実装プログラム42として用いてもよい。
本実施形態では、マルチコア用プログラムを実際に使用する環境でマルチコア用プログラムの検査を行うことが可能になる。
上述した本開示の実施形態は、本開示の説明のための例示であり、本開示の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本開示の範囲を逸脱することなしに、他の様々な態様で本開示を実施することができる。
0~1:仮想CPUコア、10:メモリ、11:CPU、21:エミュレータ、22:テスト管理プログラム、23:core0用プログラム、24:core1用プログラム、25:入力値、26:出力期待値、27:フラグ、28:選択コア情報、30:メモリ、31:CPU、41:core0用実装プログラム、42:core1用実装プログラム、50~51:CPUコア、100:テスト装置、200:ECU

Claims (9)

  1. 複数のプロセッサコアのそれぞれで実行される複数のプログラムを含むマルチコア用プログラムの動作を検査する演算装置であって、
    前記マルチコア用プログラムの実行結果の期待値を記憶する記憶部と、
    前記複数のプロセッサコアに対して前記マルチコア用プログラムの各タスクを実行する優先度に関する条件を設定し、各タスクの実行順序に関する制約を満たしつつ、前記条件に従って各タスクを前記複数のプロセッサコアに順次実行させることで、前記マルチコア用プログラムを実行し、当該実行結果と前記期待値とを比較する検査処理を実行する制御部と、を有し、
    前記制御部は、前記条件を変ないまま前記検査処理を複数回実行して、各タスクのうち互いに異なるプロセッサコアで並列に実行可能な2つのタスクの組み合わせのそれぞれにおいて、一方のタスクが他方のタスクよりも先に実行されるパターンと、前記一方のタスクが前記他方のタスクよりも後に実行されるパターンとを実行し、
    前記条件は、前記複数のプロセッサコアのいずれかである対象プロセッサコアを他の全てのプロセッサコアよりも優先度を低く又は高くすることであり、
    前記制御部は、前記プロセッサコアごとに、当該プロセッサコアを前記対象プロセッサコアとした前記検査処理を実行する、演算装置。
  2. 複数のプロセッサコアのそれぞれで実行される複数のプログラムを含むマルチコア用プログラムの動作を検査する演算装置であって、
    前記マルチコア用プログラムの実行結果の期待値を記憶する記憶部と、
    前記複数のプロセッサコアに対して前記マルチコア用プログラムの各タスクを実行する優先度に関する条件を設定し、各タスクの実行順序に関する制約を満たしつつ、前記条件に従って各タスクを前記複数のプロセッサコアに順次実行させることで、前記マルチコア用プログラムを実行し、当該実行結果と前記期待値とを比較する検査処理を実行する制御部と、を有し、
    前記制御部は、前記条件を変えて前記検査処理を複数回実行して、各タスクのうち互いに異なるプロセッサコアで並列に実行可能な2つのタスクの組み合わせのそれぞれにおいて、一方のタスクが他方のタスクよりも先に実行されるパターンと、前記一方のタスクが前記他方のタスクよりも後に実行されるパターンとを実行し、
    前記条件は、前記複数のプロセッサコアのそれぞれに所定の順番に設定された番号の優先順位であり、
    前記制御部は、前記条件を変えて前記検査処理を複数回実行することとして、前記優先順位を、前記番号を降順及び昇順のそれぞれとした2回の前記検査処理を実行する、演算装置。
  3. 複数のプロセッサコアのそれぞれで実行される複数のプログラムを含むマルチコア用プログラムの動作を検査する演算装置であって、
    前記マルチコア用プログラムの実行結果の期待値を記憶する記憶部と、
    前記複数のプロセッサコアに対して前記マルチコア用プログラムの各タスクを実行する優先度に関する条件を設定し、各タスクの実行順序に関する制約を満たしつつ、前記条件に従って各タスクを前記複数のプロセッサコアに順次実行させることで、前記マルチコア用プログラムを実行し、当該実行結果と前記期待値とを比較する検査処理を実行する制御部と、を有し、
    前記制御部は、前記条件を変えて前記検査処理を複数回実行して、各タスクのうち互いに異なるプロセッサコアで並列に実行可能な2つのタスクの組み合わせのそれぞれにおいて、一方のタスクが他方のタスクよりも先に実行されるパターンと、前記一方のタスクが前記他方のタスクよりも後に実行されるパターンとを実行し、
    前記条件は、前記複数のプロセッサコアのそれぞれに所定の順番に設定された優先順位であって、
    該優先順位は、互いに異なるプロセッサコア間で、一方が他方より優先となる場合と、他方が一方より優先となる場合との2つの組み合わせを含み、
    前記制御部は、前記優先順位の組み合わせのそれぞれに従った別個の前記検査処理を実行する、演算装置。
  4. 前記複数のプロセッサコアは、第0コア、第1コア、第2コア及び第3コアを含み、
    前記優先順位は、高い方から順に第0コア>第1コア>第2コア>第3コアとなる場合、高い方から順に第2コア>第3コア>第0コア>第1コアとなる場合と、高い方から順に第3コア>第2コア>第1コア>第0コアとなる場合との3つの組み合わせを含む、請求項3に記載の演算装置。
  5. 前記制御部は、前記複数のプロセッサコアを仮想的に実現する、請求項1から4のいずれか一項に記載の演算装置。
  6. 前記演算装置は、前記複数のプロセッサコアを含む電子制御装置である、請求項1から4のいずれか一項に記載の演算装置。
  7. 複数のプロセッサコアのそれぞれで実行される複数のプログラムを含むマルチコア用プログラムの実行結果の期待値を記憶し、前記期待値を用いて前記マルチコア用プログラム
    の動作を検査する演算装置による検査方法であって、
    前記複数のプロセッサコアに対して前記マルチコア用プログラムの各タスクを実行する優先度に関する条件を設定し、各タスクの実行順序に関する制約を満たしつつ、前記条件に従って各タスクを前記複数のプロセッサコアに順次実行させることで、前記マルチコア用プログラムを実行し、当該実行結果と前記期待値とを比較する検査処理を実行し、
    前記条件を変えないまま複数の前記検査処理を実行して、各タスクのうち互いに異なるプロセッサコアで並列に実行可能な2つのタスクの組み合わせのそれぞれにおいて、一方のタスクが他方のタスクよりも先に実行されるパターンと、前記一方のタスクが前記他方のタスクよりも後に実行されるパターンとを実行し、
    前記条件は、前記複数のプロセッサコアのいずれかである対象プロセッサコアを他の全てのプロセッサコアよりも優先度を低く又は高くすることであり、
    前記複数の前記検査処理の実行では、前記プロセッサコアごとに、当該プロセッサコアを前記対象プロセッサコアとした前記検査処理を実行する、検査方法。
  8. 複数のプロセッサコアのそれぞれで実行される複数のプログラムを含むマルチコア用プログラムの実行結果の期待値を記憶し、前記期待値を用いて前記マルチコア用プログラム
    の動作を検査する演算装置による検査方法であって、
    前記複数のプロセッサコアに対して前記マルチコア用プログラムの各タスクを実行する優先度に関する条件を設定し、各タスクの実行順序に関する制約を満たしつつ、前記条件に従って各タスクを前記複数のプロセッサコアに順次実行させることで、前記マルチコア用プログラムを実行し、当該実行結果と前記期待値とを比較する検査処理を実行し、
    前記条件を変えた複数の前記検査処理を実行して、各タスクのうち互いに異なるプロセッサコアで並列に実行可能な2つのタスクの組み合わせのそれぞれにおいて、一方のタスクが他方のタスクよりも先に実行されるパターンと、前記一方のタスクが前記他方のタスクよりも後に実行されるパターンとを実行し、
    前記条件は、前記複数のプロセッサコアのそれぞれに所定の順番に設定された番号の優先順位であり、
    前記複数の前記検査処理の実行では、前記優先順位を、前記順番を降順及び昇順のそれぞれとした2回の前記検査処理を実行する、検査方法。
  9. 複数のプロセッサコアのそれぞれで実行される複数のプログラムを含むマルチコア用プログラムの実行結果の期待値を記憶し、前記期待値を用いて前記マルチコア用プログラム
    の動作を検査する演算装置による検査方法であって、
    前記複数のプロセッサコアに対して前記マルチコア用プログラムの各タスクを実行する優先度に関する条件を設定し、各タスクの実行順序に関する制約を満たしつつ、前記条件に従って各タスクを前記複数のプロセッサコアに順次実行させることで、前記マルチコア用プログラムを実行し、当該実行結果と前記期待値とを比較する検査処理を実行し、
    前記条件を変えた複数の前記検査処理を実行して、各タスクのうち互いに異なるプロセッサコアで並列に実行可能な2つのタスクの組み合わせのそれぞれにおいて、一方のタスクが他方のタスクよりも先に実行されるパターンと、前記一方のタスクが前記他方のタスクよりも後に実行されるパターンとを実行し、
    前記条件は、前記複数のプロセッサコアのそれぞれに所定の順番に設定された優先順位であって、
    該優先順位は、互いに異なるプロセッサコア間で、一方が他方より優先となる場合と、他方が一方より優先となる場合の2つの組み合わせを含み、
    前記複数の前記検査処理の実行では、前記優先順位の組み合わせのそれぞれに従った別個の前記検査処理を実行する、検査方法。
JP2021569778A 2020-01-09 2020-12-08 演算装置及び検査方法 Active JP7441861B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2020001889 2020-01-09
JP2020001889 2020-01-09
PCT/JP2020/045575 WO2021140812A1 (ja) 2020-01-09 2020-12-08 演算装置及び検査方法

Publications (2)

Publication Number Publication Date
JPWO2021140812A1 JPWO2021140812A1 (ja) 2021-07-15
JP7441861B2 true JP7441861B2 (ja) 2024-03-01

Family

ID=76788535

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021569778A Active JP7441861B2 (ja) 2020-01-09 2020-12-08 演算装置及び検査方法

Country Status (2)

Country Link
JP (1) JP7441861B2 (ja)
WO (1) WO2021140812A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014070956A (ja) 2012-09-28 2014-04-21 Dainippon Screen Mfg Co Ltd 画像処理装置、外観検査装置、画像処理方法および外観検査方法
JP2016143377A (ja) 2015-02-05 2016-08-08 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び、電子装置
JP2016207166A (ja) 2015-04-28 2016-12-08 ルネサスエレクトロニクス株式会社 性能検証装置、システム、方法、およびコンピュータに当該方法を実行させるためのプログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03218539A (ja) * 1989-11-27 1991-09-26 Hitachi Ltd 並列計算機システムにおけるデバッグ方法
JPH11175369A (ja) * 1997-12-10 1999-07-02 Toshiba Corp プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援プログラムを記録した媒体

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014070956A (ja) 2012-09-28 2014-04-21 Dainippon Screen Mfg Co Ltd 画像処理装置、外観検査装置、画像処理方法および外観検査方法
JP2016143377A (ja) 2015-02-05 2016-08-08 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び、電子装置
JP2016207166A (ja) 2015-04-28 2016-12-08 ルネサスエレクトロニクス株式会社 性能検証装置、システム、方法、およびコンピュータに当該方法を実行させるためのプログラム

Also Published As

Publication number Publication date
JPWO2021140812A1 (ja) 2021-07-15
WO2021140812A1 (ja) 2021-07-15

Similar Documents

Publication Publication Date Title
JP5573134B2 (ja) ベクトル型計算機及びベクトル型計算機の命令制御方法
JP4988789B2 (ja) シミュレーション・システム、方法及びプログラム
US8677334B2 (en) Parallelization method, system and program
US7987075B2 (en) Apparatus and method to develop multi-core microcomputer-based systems
US8868381B2 (en) Control system design simulation using switched linearization
CN103329102A (zh) 多处理器系统
JP2017228029A (ja) 並列化方法、並列化ツール、車載装置
JP6427055B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
JP7441861B2 (ja) 演算装置及び検査方法
WO2012070137A1 (ja) プロセッサ、電子制御装置、作成プログラム
JP2011253253A (ja) コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム
JP6413922B2 (ja) ソフトウェア分割方法、ソフトウェア分割装置および車載装置
JP2013254371A (ja) ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラム
US20040205730A1 (en) System and method for building libraries and groups of computer programs
US5485549A (en) Method and system for a production system
JP7204443B2 (ja) 車両制御装置およびプログラム実行方法
US20130185727A1 (en) Method for managing tasks in a microprocessor or in a microprocessor assembly
JP7139633B2 (ja) 並列化方法、並列化ツール、及びマルチコアマイコン
JP7454700B2 (ja) 演算装置及び検査方法
WO2019188175A1 (ja) デッドロック回避方法、デッドロック回避装置
JP2017224288A (ja) 並列化方法、並列化ツール、車載装置
US11520964B1 (en) Method and system for assertion-based formal verification using unique signature values
US20220357986A1 (en) Method and computer for the management of data exchanges between a plurality of tasks
JP4941103B2 (ja) マルチプロセッサシステム、排他制御方法、車両用電子制御ユニット
JP7172155B2 (ja) 電子制御装置及びソフトウエア生成方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220621

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230829

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231013

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240104

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: 20240123

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240219

R150 Certificate of patent or registration of utility model

Ref document number: 7441861

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150