JP7268516B2 - 電子制御装置 - Google Patents

電子制御装置 Download PDF

Info

Publication number
JP7268516B2
JP7268516B2 JP2019132040A JP2019132040A JP7268516B2 JP 7268516 B2 JP7268516 B2 JP 7268516B2 JP 2019132040 A JP2019132040 A JP 2019132040A JP 2019132040 A JP2019132040 A JP 2019132040A JP 7268516 B2 JP7268516 B2 JP 7268516B2
Authority
JP
Japan
Prior art keywords
processor core
access
data
read
handshake
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
JP2019132040A
Other languages
English (en)
Other versions
JP2021018475A (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.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Priority to JP2019132040A priority Critical patent/JP7268516B2/ja
Priority to DE102020208367.3A priority patent/DE102020208367A1/de
Publication of JP2021018475A publication Critical patent/JP2021018475A/ja
Application granted granted Critical
Publication of JP7268516B2 publication Critical patent/JP7268516B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Storage Device Security (AREA)

Description

本開示は、複数のプロセッサコアを備える電子制御装置に関する。
特許文献1には、第一コアと第二コアと共有メモリとを備え、DMA等のハードウェア機能を使用して第二コアのデータを共有メモリへ直接コピーし、第一コアが共有メモリへアクセスしてデータを取得するように構成された車載制御装置が記載されている。DMAは、Direct Memory Accessの略である。
再公表特許第2017/056725号
プロセッサコア間の排他制御は、一般的には、セマフォを用いて行われる。しかし、セマフォを用いる場合には、アクセスする側のプロセッサコアは、必ず、セマフォ獲得用およびセマフォ解放用のインターフェースを使う必要があり、オーバーヘッドの増加が生じる。
本開示は、プロセッサコア間の排他制御に起因したオーバーヘッドの増加を抑制することを目的とする。
本開示の一態様は、複数のプロセッサコア(11,12,13)と、共有データ記憶部(21,14)と、メモリ保護部(15)とを備える電子制御装置(1)である。
共有データ記憶部は、複数のプロセッサコアのそれぞれが読出可能にアクセスすることができる共有データ(31,71)を記憶するように構成される。
メモリ保護部は、特定プロセッサコア(11)が共有データへアクセスしている場合には他プロセッサコア(12,13)が共有データへアクセスすることができないように複数のプロセッサコアを制御するように構成される。特定プロセッサコアは、複数のプロセッサコアのうちの一つのプロセッサコアである。他プロセッサコアは、特定プロセッサコア以外のプロセッサコアである。
このように構成された本開示の電子制御装置では、メモリ保護部が、特定プロセッサコアが共有データへアクセスしている場合には他プロセッサコアが共有データへアクセスすることができないように複数のプロセッサコアを制御する。すなわち、本開示の電子制御装置は、セマフォの代わりにメモリ保護部を使用するため、アクセスするプロセッサコア側において特殊なインターフェースが必要にならない。これにより、本開示の電子制御装置は、プロセッサコア間の排他制御に起因したオーバーヘッドの増加を抑制することができる。
第1,2実施形態のECUの構成を示すブロック図である。 テストブロックIDテーブルの構成を示す図である。 初期設定処理を示すフローチャートである。 RAMテスト処理を示すフローチャートである。 アクセスエラー処理を示すフローチャートである。 第1実施形態のMPUによるアクセス調停の第1の具体例を示すシーケンス図である。 第1実施形態のMPUによるアクセス調停の第2の具体例を示すシーケンス図である。 セマフォによる排他制御を説明する図である。 第1実施形態のマイコンによる排他制御を説明する図である。 優先度テーブルの構成を示す図である。 第1プロセッサ処理を示すフローチャートである。 データ読出処理を示すフローチャートである。 第2実施形態のMPUによるアクセス調停の具体例を示すシーケンス図である。 第3,4実施形態のECUの構成を示すブロック図である。 第3実施形態のMPUによる実行アクセス調停の第1の具体例を示すシーケンス図である。 第3実施形態のMPUによる実行アクセス調停の第2の具体例を示すシーケンス図である。 第4実施形態のMPUによる実行アクセス調停の具体例を示すシーケンス図である。
[第1実施形態]
以下に本開示の第1実施形態を図面とともに説明する。
本実施形態の電子制御装置1(以下、ECU1)は、図1に示すように、マイクロコンピュータ2(以下、マイコン2)を備える。ECUは、Electronic Control Unitの略である。
マイコン2は、プロセッサコア11,12,13と、ROM14と、メモリ保護装置15(以下、MPU15)と、システムバス16と、RAM21,22,23とを備える。MPUは、Memory Protection Unitの略である。
マイコン2の各種機能は、プロセッサコア11,12,13が非遷移的実体的記録媒体に格納されたプログラムを実行することにより実現される。この例では、ROM14が、プログラムを格納した非遷移的実体的記録媒体に該当する。また、このプログラムの実行により、プログラムに対応する方法が実行される。なお、プロセッサコア11,12,13が実行する機能の一部または全部を、一つあるいは複数のIC等によりハードウェア的に構成してもよい。また、ECU1を構成するマイクロコンピュータの数は1つでも複数でもよい。
プロセッサコア11,12,13は、プログラムを実行するための演算ユニットおよびレジスタなどを備える。プロセッサコア11,12,13は、図示しないエンジンを制御するための各種制御処理を分散して実行する。
ROM14は、データの書き換えが不能な不揮発性メモリである。ROM14は、プロセッサコア11,12,13が実行するプログラム等を記憶する。
MPU15は、RAM21,22,23に対するデータの書き込みと読み込みとを制御する。
システムバス16は、プロセッサコア11,12,13、ROM14、MPU15およびRAM21,22,23を、互いにデータ入出力可能に接続する。
RAM21,22,23は、揮発性メモリである。RAM21,22,23はそれぞれ、プロセッサコア11,12,13の演算結果等を一時的に記憶する。
RAM21は、更新データ31と、ハンドシェーク用データ41,51とを記憶する。更新データ31は、プロセッサコア11が専用で更新するデータである。ハンドシェーク用データ41は、プロセッサコア12が更新データ31へアクセスする場合に利用されるデータである。ハンドシェーク用データ51は、プロセッサコア13が更新データ31へアクセスする場合に利用されるデータである。
RAM22は、更新データ32と、ハンドシェーク用データ42,52とを記憶する。更新データ32は、プロセッサコア12が専用で更新するデータである。ハンドシェーク用データ42は、プロセッサコア11が更新データ32へアクセスする場合に利用されるデータである。ハンドシェーク用データ52は、プロセッサコア13が更新データ32へアクセスする場合に利用されるデータである。
RAM23は、更新データ33と、ハンドシェーク用データ43,53とを記憶する。更新データ33は、プロセッサコア13が専用で更新するデータである。ハンドシェーク用データ43は、プロセッサコア11が更新データ33へアクセスする場合に利用されるデータである。ハンドシェーク用データ53は、プロセッサコア12が更新データ33へアクセスする場合に利用されるデータである。
MPU15は、RAM21の更新データ31に対してはプロセッサコア11のみが更新することができるように、プロセッサコア11,12,13を制御する。同様にMPU15は、RAM22の更新データ32に対してはプロセッサコア12のみが更新することができるように、プロセッサコア11,12,13を制御する。またMPU15は、RAM23の更新データ33に対してはプロセッサコア13のみが更新することができるように、プロセッサコア11,12,13を制御する。
さらにMPU15は、RAM21,22,23への読出アクセス要求がプロセッサコア11,12,13から入力されると、読出アクセスを許可するか禁止するかを判断する。そしてMPU15は、読出アクセスを許可する場合には読出アクセス許可通知を、読出アクセスを禁止する場合には読出アクセス禁止通知を、アクセス要求元へ出力する。
そしてプロセッサコア11,12,13は、MPU15から入力された読出アクセス許可通知または読出アクセス禁止通知に基づいて、読出アクセスを実行するか否かを判断する。
またROM14は、テストブロックIDテーブルTB1を記憶する。テストブロックIDテーブルTB1は、プロセッサコア11がRAM21に対してRAMテストを実行するときにプロセッサコア11により参照される。テストブロックIDテーブルTB1は、図2に示すように、複数のテストブロックを識別するためのID番号と、ID番号に対応するテストブロックのアドレス範囲とを記憶するテーブルである。図2に示すテストブロックIDテーブルTB1では、テーブルの左の列に記載されている「1」,「2」,「3」,「4」,「5」がID番号である。
次に、プロセッサコア11が実行する初期設定処理の手順を説明する。初期設定処理は、プロセッサコア11が起動した直後に開始される処理である。
初期設定処理が実行されると、プロセッサコア11は、図3に示すように、S10にて、RAM21に設けられたブロック指示値TestBlockに1を格納し、初期設定処理を終了する。
次に、プロセッサコア11が実行するRAMテスト処理の手順を説明する。RAMテスト処理は、予め設定された実行周期が経過する毎に開始される処理である。本実施形態では、RAMテスト処理の実行周期は、例えば10msに設定されている。
RAMテスト処理が実行されると、プロセッサコア11は、図4に示すように、まずS110にて、プロセッサコア12,13に対する読出禁止設定を行う。具体的には、プロセッサコア11は、RAM21の更新データ31に対するプロセッサコア12,13からの読出アクセスを禁止するための禁止設定要求をMPU15へ出力する。この禁止設定要求がMPU15に入力されると、MPU15は、MPU15に設けられたメモリ保護設定レジスタに、RAM21の更新データ31に対するプロセッサコア12,13からの読出アクセスを禁止する旨(以下、読出アクセス禁止)を設定する。
次にプロセッサコア11は、S120にて、ROM14に記憶されているテストブロックIDテーブルTB1を参照して、ブロック指示値TestBlockに格納されている値に一致するID番号に対応するテストブロックのアドレス範囲を取得する。
そしてプロセッサコア11は、S130にて、S120で取得したアドレス範囲について、RAM21に対するRAMテストを実行する。RAMテストでは、プロセッサコア11は、RAM21から読み出したデータの値を反転させた反転データをRAM21に書き込んだ後に、書き込んだ書込データを読み出し、読み込んだ反転データが書込データと一致しているか否かを判断することにより、RAM21の故障を診断する。そしてプロセッサコア11は、診断を行った後に、元の値をRAM21に書き込む。
次にプロセッサコア11は、S140にて、ブロック指示値TestBlockに格納されている値に1を加算した加算値をブロック指示値TestBlockに格納する。
そしてプロセッサコア11は、S150にて、ハンドシェーク用データ41,51に「読出要求あり」が設定されているか否かを判断する。ここで、ハンドシェーク用データ41,51に「読出要求なし」が設定されている場合には、プロセッサコア11は、S160にて、ブロック指示値TestBlockに格納されている値が予め設定されているテーブルブロック数MaxBlockより大きいか否かを判断する。本実施形態では、テーブルブロック数MaxBlockは、5に設定されている。
ここで、ブロック指示値TestBlockに格納されている値がテーブルブロック数MaxBlock以下である場合には、プロセッサコア11は、S120に移行する。一方、ブロック指示値TestBlockに格納されている値がテーブルブロック数MaxBlockより大きい場合には、プロセッサコア11は、S170にて、ブロック指示値TestBlockに1を格納し、S180に移行する。
またS150にて、ハンドシェーク用データ41,51の少なくとも一方に「読出要求あり」が設定されている場合には、プロセッサコア11は、S180に移行する。
そして、S180に移行すると、プロセッサコア11は、プロセッサコア12,13に対する読出許可設定を行う。具体的には、プロセッサコア11は、RAM21の更新データ31に対するプロセッサコア12,13からの読出アクセスを許可するための許可設定要求をMPU15へ出力する。この許可設定要求がMPU15に入力されると、MPU15は、MPU15に設けられたメモリ保護設定レジスタに、RAM21の更新データ31に対するプロセッサコア12,13からの読出アクセスを許可する旨(以下、読出アクセス許可)を設定する。
さらにプロセッサコア11は、S190にて、ハンドシェーク用データ41,51に「読出要求なし」を設定し、RAMテスト処理を終了する。
次に、プロセッサコア12が実行するアクセスエラー処理の手順を説明する。アクセスエラー処理は、MPU15から読出アクセス禁止通知が入力された場合に開始される処理である。
アクセスエラー処理が実行されると、プロセッサコア12は、図5に示すように、まずS310にて、ハンドシェーク用データ41に「読出要求あり」を設定する。
そしてプロセッサコア12は、S320にて、ハンドシェーク用データ41に「読出要求あり」が設定されているか否かを判断する。ここで、「読出要求あり」が設定されている場合には、プロセッサコア12は、S320の処理を繰り返すことにより、ハンドシェーク用データ41に「読出要求なし」が設定されるまで待機する。
そして、ハンドシェーク用データ41に「読出要求なし」が設定されると、プロセッサコア12は、S330にて、エラーが発生した処理(すなわち、入力された読出アクセス禁止通知の原因となった処理)に戻って、アクセスエラー処理を終了する。
プロセッサコア13が実行するアクセスエラー処理は、ハンドシェーク用データ41がハンドシェーク用データ51に変更された点以外は、プロセッサコア12が実行するアクセスエラー処理と同一であるため、詳細な説明を省略する。
また、プロセッサコア12,13も、初期設定処理およびRAMテスト処理を実行する。
プロセッサコア12の初期設定処理およびRAMテスト処理は、RAM21の更新データ31およびハンドシェーク用データ41,51の代わりにRAM22の更新データ32およびハンドシェーク用データ42,52を対象とする点がプロセッサコア11の初期設定処理およびRAMテスト処理と異なる。
同様に、プロセッサコア13の初期設定処理およびRAMテスト処理は、RAM21の更新データ31およびハンドシェーク用データ41,51の代わりにRAM23の更新データ33およびハンドシェーク用データ43,53を対象とする点がプロセッサコア11の初期設定処理およびRAMテスト処理と異なる。
プロセッサコア11,13は、RAM21を対象とするアクセスエラー処理をプロセッサコア12,13が実行するのと同様に、RAM22を対象とするアクセスエラー処理を実行する。同様にプロセッサコア11,12は、RAM23を対象とするアクセスエラー処理を実行する。
次に、MPU15によるアクセス調停の第1の具体例を説明する。
図6に示すように、プロセッサコア11は、まず、更新データ31に対するプロセッサコア12,13からの読出アクセスを禁止する読出アクセス禁止を設定する。矢印L1は、プロセッサコア11が禁止設定要求をMPU15へ出力することを示す。
次にプロセッサコア11は、矢印L2で示すように、更新データ31に対してデータ更新を行う。そしてプロセッサコア11は、矢印L3で示すように、更新データ31に対するプロセッサコア12,13からの読出アクセスを許可する読出アクセス許可を設定する。矢印L3は、プロセッサコア11が許可設定要求をMPU15へ出力することを示す。
その後にプロセッサコア12は、更新データ31への読出アクセス要求をMPU15へ出力する。矢印L4は、プロセッサコア12が更新データ31への読出アクセスを要求していることを示す。
ここで、MPU15では読出アクセス許可が設定されているため、MPU15はプロセッサコア12へ読出アクセス許可通知を出力する。
プロセッサコア12は、MPU15から読出アクセス許可通知を取得すると、更新データ31へアクセスして、更新データ31からデータを読み出す。矢印L5は、プロセッサコア12が更新データ31からデータを読み出すことを示す。
さらにプロセッサコア13は、更新データ31への読出アクセス要求をMPU15へ出力する。矢印L6は、プロセッサコア13が更新データ31への読出アクセスを要求していることを示す。
ここで、MPU15では読出アクセス許可が設定されているため、MPU15はプロセッサコア13へ読出アクセス許可通知を出力する。
プロセッサコア13は、MPU15から読出アクセス許可通知を取得すると、更新データ31へアクセスして、更新データ31からデータを読み出す。矢印L7は、プロセッサコア13が更新データ31からデータを読み出すことを示す。
次に、MPU15によるアクセス調停の第2の具体例を説明する。
図7に示すように、プロセッサコア11は、まず、更新データ31に対するプロセッサコア12,13からの読出アクセスを禁止する読出アクセス禁止を設定する。矢印L11は、プロセッサコア11が禁止設定要求をMPU15へ出力することを示す。
そしてプロセッサコア11は、RAMテスト処理の実行を開始する。四角形SQ1は、プロセッサコア11がRAMテスト処理を実行していることを示す。
RAMテスト処理が開始された後に、プロセッサコア12が、更新データ31への読出アクセス要求をMPU15へ出力する。矢印L12は、プロセッサコア12が更新データ31への読出アクセスを要求していることを示す。
ここで、MPU15では読出アクセス禁止が設定されているため、矢印L13で示すように、MPU15はプロセッサコア12へ読出アクセス禁止通知を出力する。
プロセッサコア12は、MPU15から読出アクセス禁止通知を取得すると、アクセスエラー処理の実行を開始し、まず、矢印L14で示すように、ハンドシェーク用データ41に「読出要求あり」を設定する。
その後にプロセッサコア12は、四角形SQ2および矢印L15で示すように、ハンドシェーク用データ41を確認して、ハンドシェーク用データ41に「読出要求なし」が設定されるまで待機する。
一方、プロセッサコア11は、矢印L16で示すように、更新データ31に対するRAMテストを実行する。さらにプロセッサコア11は、矢印L17で示すように、ハンドシェーク用データ41,51に「読出要求あり」が設定されているか否かを判断する。
ここで、ハンドシェーク用データ41に「読出要求あり」が設定されているため、プロセッサコア11は、更新データ31に対するプロセッサコア12,13からの読出アクセスを許可する読出アクセス許可を設定する。矢印L18は、プロセッサコア11が許可設定要求をMPU15へ出力することを示す。
そしてプロセッサコア11は、矢印L19で示すように、ハンドシェーク用データ41に「読出要求なし」を設定する。
ハンドシェーク用データ41に「読出要求なし」が設定されると、プロセッサコア12は、アクセスエラー処理を終了し、更新データ31への読出アクセス要求をMPU15へ出力する。矢印L20は、プロセッサコア12が更新データ31への読出アクセスを要求していることを示す。
ここで、MPU15では読出アクセス許可が設定されているため、MPU15はプロセッサコア12へ読出アクセス許可通知を出力する。
プロセッサコア12は、MPU15から読出アクセス許可通知を取得すると、更新データ31へアクセスして、更新データ31からデータを読み出す。矢印L21は、プロセッサコア12が更新データ31からデータを読み出すことを示す。
さらにプロセッサコア13は、更新データ31への読出アクセス要求をMPU15へ出力する。矢印L22は、プロセッサコア13が更新データ31への読出アクセスを要求していることを示す。
ここで、MPU15では読出アクセス許可が設定されているため、MPU15はプロセッサコア13へ読出アクセス許可通知を出力する。
プロセッサコア13は、MPU15から読出アクセス許可通知を取得すると、更新データ31へアクセスして、更新データ31からデータを読み出す。矢印L23は、プロセッサコア13が更新データ31からデータを読み出すことを示す。
次に、セマフォによる排他制御を説明する。なお、マイコン2はセマフォを備えていないが、セマフォの説明を簡略化するために、プロセッサコア11,12がセマフォの獲得および解放を行うとして説明する。
図8に示すように、まず、時刻t0では、セマフォが解放されている。ブロックB1は、セマフォが解放されている期間を示す。
そして時刻t1に、プロセッサコア11がセマフォを獲得し、プロセッサコア11は、時刻t1から時刻t2までの間に、ID番号が1であるテストブロックに対してRAMテストを実行する。ブロックB2は、セマフォがプロセッサコア11により獲得されている期間を示す。ブロックB3は、ID番号が1であるテストブロックに対してRAMテストが行われている期間を示す。
プロセッサコア11は、時刻t2から時刻t3までの間に、ID番号が2であるテストブロックに対してRAMテストを実行する。ブロックB4は、ID番号が2であるテストブロックに対してRAMテストが行われている期間を示す。
プロセッサコア11は、時刻t3から時刻t4までの間に、ID番号が3であるテストブロックに対してRAMテストを実行する。ブロックB5は、ID番号が3であるテストブロックに対してRAMテストが行われている期間を示す。
プロセッサコア11は、時刻t4から時刻t5までの間に、ID番号が4であるテストブロックに対してRAMテストを実行する。ブロックB6は、ID番号が4であるテストブロックに対してRAMテストが行われている期間を示す。
プロセッサコア11は、時刻t5から時刻t6までの間に、ID番号が5であるテストブロックに対してRAMテストを実行する。ブロックB7は、ID番号が5であるテストブロックに対してRAMテストが行われている期間を示す。
時刻t6に、ID番号が5であるテストブロックに対するRAMテストが終了すると、プロセッサコア11は、セマフォを解放する。
プロセッサコア12は、時刻t1から時刻t6までの間に、セマフォを獲得しようとして、失敗する。ブロックB8は、プロセッサコア12がセマフォを獲得するまで待機している期間を示す。
そして時刻t7に、プロセッサコア12がセマフォを獲得し、プロセッサコア12は、時刻t7から時刻t8までの間に、更新データ31からデータを読み出す。ブロックB9は、セマフォが解放されている期間を示す。ブロックB10は、セマフォがプロセッサコア12により獲得されている期間を示す。ブロックB11は、プロセッサコア12がデータ読出を行っている期間を示す。
時刻t8に、データ読出が終了すると、プロセッサコア12は、セマフォを解放する。ブロックB12は、セマフォが解放されている期間を示す。
次に、本実施形態のマイコン2による排他制御を説明する。
図9に示すように、まず、時刻t20では、MPU15において読出アクセス許可が設定されている。ブロックB21は、読出アクセス許可が設定されている期間を示す。
そして時刻t21に、プロセッサコア11が禁止設定要求をMPU15へ出力する。これにより、MPU15は、読出アクセス禁止を設定する。そしてプロセッサコア11は、時刻t22まで、ID番号が1であるテストブロックに対してRAMテストを実行する。
ID番号が1であるテストブロックに対するRAMテストが終了すると、プロセッサコア11は、許可設定要求をMPU15へ出力する。これにより、MPU15は、読出アクセス許可を設定する。ブロックB22は、ID番号が1であるテストブロックに対してRAMテストが行われている期間を示す。ブロックB23は、読出アクセス禁止が設定されている期間を示す。
プロセッサコア11は、時刻t21から時刻t22までの間に、読出アクセス要求をMPU15へ出力する。しかし、MPU15において読出アクセス禁止が設定されているため、プロセッサコア12は、読出アクセスが許可されるまで待機する。そしてプロセッサコア12は、時刻t23に、読出アクセス要求をMPU15へ出力する。時刻t23では、MPU15において読出アクセス許可が設定されているため、プロセッサコア12は、更新データ31からデータを読み出す。ブロックB24は、読出アクセスが許可されるまで待機している期間を示す。ブロックB25は、読出アクセス許可が設定されている期間を示す。ブロックB26は、プロセッサコア12がデータ読出を行っている期間を示す。
そしてプロセッサコア11は、時刻t24に、ID番号が2であるテストブロックに対してRAMテストを開始する。さらにプロセッサコア11は、時刻t25に、ID番号が3であるテストブロックに対してRAMテストを開始する。ブロックB27は、ID番号が2であるテストブロックに対してRAMテストが行われている期間を示す。
このように構成されたECU1は、プロセッサコア11,12,13と、RAM21と、MPU15とを備える。
RAM21は、プロセッサコア11,12,13のそれぞれが読出可能にアクセスすることができる更新データ31を記憶する。
MPU15は、プロセッサコア11が更新データ31へアクセスしている場合にはプロセッサコア12,13が更新データ31へアクセスすることができないようにプロセッサコア11,12,13を制御する。
このようにECU1では、MPU15が、プロセッサコア11が更新データ31へアクセスしている場合にはプロセッサコア12,13が更新データ31へアクセスすることができないようにプロセッサコア11,12,13を制御する。すなわち、ECU1は、セマフォの代わりにMPU15を使用するため、アクセスするプロセッサコア側において特殊なインターフェースが必要にならない。これにより、ECU1は、プロセッサコア間の排他制御に起因したオーバーヘッドの増加とプログラムコードの増加とを抑制することができる。
またECU1は、プロセッサコア11とプロセッサコア12,13との間のデータ授受のために専用の共有メモリを備える必要がなく、プロセッサコア11,12,13のそれぞれがRAM21に直接アクセスすることによりプロセッサコア11とプロセッサコア12,13との間でデータを授受することができる。
またプロセッサコア11は、プロセッサコア11が更新データ31へアクセスする期間内に、MPU15を、プロセッサコア12,13からの更新データ31への読出アクセスを禁止する読出アクセス禁止に設定する。またプロセッサコア11は、プロセッサコア11が更新データ31へアクセスしない期間内に、MPU15を、プロセッサコア12,13からの更新データ31への読出アクセスを許可する読出アクセス許可に設定する。
データ更新が特定のプロセッサコアによって行われる場合には、通常は、他のプロセッサコアからのデータ書込は禁止されても、データ読出までは禁止されない。データ読出がデータ書込に影響しないためである。
これに対し、ECU1は、他のプロセッサコアからのデータ読出を敢えて禁止にすることで、MPU15を、意図した読出アクセス要求の検出に用いる。通常は、意図しない不正なアクセスを検出するためにMPUが用いられる。ECU1は、意図したアクセスを検出するためにMPU15を用いることにより、セマフォを用いた場合においてアクセスの度に常時発生するオーバーヘッドを低減することができる。
また、ECU1のRAM21は、プロセッサコア11,12,13間のハンドシェークに用いられ、且つ、プロセッサコア11,12,13のそれぞれが読出可能および更新可能にアクセスすることができるハンドシェーク用データ41,51を記憶する。
MPU15は、プロセッサコア11が更新データ31へアクセスする期間内にプロセッサコア12,13が更新データ31への読出アクセス要求をMPU15へ出力した場合には、プロセッサコア12,13へ読出アクセス禁止通知を出力する。
プロセッサコア12,13はそれぞれ、MPU15から読出アクセス禁止通知を取得すると、プロセッサコア11とプロセッサコア12,13との間のハンドシェークに用いられるハンドシェーク用データ41,51に、読出アクセス要求が有ることを示す「読出要求あり」を設定する。
プロセッサコア12,13はそれぞれ、ハンドシェーク用データ41,51が、「読出要求あり」が設定されている状態から、「読出要求なし」が設定されている状態に変化した場合に、更新データ31への読出アクセス要求をMPU15へ再度出力する。
プロセッサコア11は、プロセッサコア11が更新データ31へアクセスしている期間内において、1つのテストブロックに対するRAMテストが終了する毎に繰り返しハンドシェーク用データ41,51を確認し、ハンドシェーク用データ41,51に「読出要求あり」が設定されているか否かを判断する。
プロセッサコア11は、ハンドシェーク用データ41,51に「読出要求あり」が設定されていると判断した場合に、RAMテストを中断して、MPU15を読出アクセス許可に設定する。
プロセッサコア11は、ハンドシェーク用データ41,51に「読出要求あり」が設定されていると判断した場合に、ハンドシェーク用データ41,51に、読出アクセス要求が無いことを示す「読出要求なし」を設定する。
これにより、ECU1は、プロセッサコア11がプロセッサコア12,13からの読出アクセス要求を検出した場合に、RAMテストを中断して、プロセッサコア12,13に更新データ31への読出アクセスを実行させることができる。このため、ECU1は、プロセッサコア12,13が更新データ31への読出アクセスのために待機する時間を短縮することができ、プロセッサコア12,13の処理効率を向上させることができる。
以上説明した実施形態において、ECU1は電子制御装置に相当し、RAM21は共有データ記憶部に相当し、MPU15はメモリ保護部に相当する。
また、更新データ31は共有データに相当し、プロセッサコア11は特定プロセッサコアに相当し、プロセッサコア12,13は他プロセッサコアに相当する。
また、S110は禁止設定部としての処理に相当し、S180は許可設定部としての処理に相当し、読出アクセス禁止はアクセス禁止に相当し、読出アクセス許可はアクセス許可に相当する。
また、RAM21はハンドシェーク記憶部に相当し、読出アクセス禁止通知の出力はメモリアクセス違反処理に相当し、S310は有設定部としての処理に相当し、S320,S330は再アクセス部としての処理に相当し、「読出要求あり」はアクセス要求有に相当する。
また、S150は要求判断部および中断部としての処理に相当し、S190は無設定部としての処理に相当し、「1つのテストブロックに対するRAMテストが終了すること」は確認条件に相当し、RAMテストはアクセス処理に相当し、「読出要求なし」はアクセス要求無に相当する。
[第2実施形態]
以下に本開示の第2実施形態を図面とともに説明する。なお第2実施形態では、第1実施形態と異なる部分を説明する。共通する構成については同一の符号を付す。
第2実施形態のECU1は、優先度テーブルTB2と、第1プロセッサ処理およびデータ読出処理とが追加された点が第1実施形態と異なる。
ROM14は、優先度テーブルTB2を記憶する。優先度テーブルTB2は、図10に示すように、プロセッサコア11,12,13を識別するためのプロセッサコア番号と、プロセッサコア番号に対応する優先度とを記憶するテーブルである。プロセッサコア番号「1」,「2」,「3」はそれぞれ、プロセッサコア11,12,13に対応する。図10に示す優先度テーブルTB2では、プロセッサコア11の優先度が「高」、プロセッサコア12の優先度が「中」、プロセッサコア13の優先度が「低」に設定されている。
次に、プロセッサコア11が実行する第1プロセッサ処理の手順を説明する。第1プロセッサ処理は、予め設定された実行周期が経過する毎に開始される処理である。本実施形態では、第1プロセッサ処理の実行周期は、例えば10msに設定されている。また第1プロセッサ処理は、分割されたN個の処理(以下、分割処理)を順次実行するための処理である。Nは、2以上の整数である。
第1プロセッサ処理が実行されると、プロセッサコア11は、図11に示すように、まずS410にて、S110と同様にして、プロセッサコア12,13に対する読出禁止設定を行う。
またプロセッサコア11は、S420にて、RAM21に設けられた処理指示値iに1を格納する。
そしてプロセッサコア11は、S430にて、i番目の分割処理を実行する。さらにプロセッサコア11は、S440にて、処理指示値iに格納されている値に1を加算した加算値を処理指示値iに格納する。
次にプロセッサコア11は、S450にて、ハンドシェーク用データ41,51を確認する。
そしてプロセッサコア11は、S460にて、ハンドシェーク用データ41,51の少なくとも一方に「読出要求あり」が設定されているか否かを判断する。ここで、ハンドシェーク用データ41,51に「読出要求なし」が設定されている場合には、プロセッサコア11は、S470にて、処理指示値iに格納されている値が予め設定されている分割処理数Nより大きいか否かを判断する。
ここで、処理指示値iに格納されている値が分割処理数N以下である場合には、プロセッサコア11は、S430に移行する。一方、処理指示値iに格納されている値が分割処理数より大きい場合には、プロセッサコア11は、S480にて、S180と同様にして、プロセッサコア12,13に対する読出許可設定を行い、第1プロセッサ処理を終了する。
またS460にて、ハンドシェーク用データ41,51の少なくとも一方に「読出要求あり」が設定されている場合には、プロセッサコア11は、S490にて、優先度テーブルTB2を参照する。
そしてプロセッサコア11は、S500にて、「読出要求あり」が設定されているハンドシェーク用データに対応するプロセッサコアのうち、優先度が最も高いプロセッサコアに対する読出許可設定を行う。例えば、「読出要求あり」が設定されているハンドシェーク用データに対応するプロセッサコアが、プロセッサコア12,13である場合には、プロセッサコア11は、プロセッサコア12に対する読出許可設定を行う。
さらにプロセッサコア11は、S510にて、「読出要求あり」が設定されているハンドシェーク用データに対応するプロセッサコアのうち、優先度が最も高いプロセッサコアに対するハンドシェーク用データに「読出要求なし」を設定し、第1プロセッサ処理を終了する。
次に、プロセッサコア12が実行するデータ読出処理の手順を説明する。データ読出処理は、プロセッサコア12において更新データ31へのデータ読出要求が発生した場合に開始される処理である。
データ読出処理が実行されると、プロセッサコア12は、図12に示すように、まずS610にて、データ読出アクセスを行う。具体的には、プロセッサコア12は、更新データ31への読出アクセス要求をMPU15へ出力する。
そしてプロセッサコア12は、S620にて、アクセスエラーがあるか否かを判断する。具体的には、プロセッサコア12は、MPU15から読出アクセス禁止通知を取得した場合に、アクセスエラーがあると判断し、MPU15から読出アクセス許可通知を取得した場合に、アクセスエラーがないと判断する。
ここで、アクセスエラーがある場合には、プロセッサコア12は、S630にて、ハンドシェーク用データ41に「読出要求あり」を設定する。
そしてプロセッサコア12は、S640にて、ハンドシェーク用データ41に「読出要求あり」が設定されているか否かを判断する。ここで、「読出要求あり」が設定されている場合には、プロセッサコア12は、S640の処理を繰り返すことにより、ハンドシェーク用データ41に「読出要求なし」が設定されるまで待機する。
そして、ハンドシェーク用データ41に「読出要求なし」が設定されると、S650に移行する。
またS620にて、アクセスエラーがない場合には、S650に移行する。
そしてS650に移行すると、プロセッサコア12は、更新データ31にアクセスして、更新データ31からデータを読み出す。
そしてプロセッサコア12は、S660にて、ハンドシェーク用データ51を確認する。
そしてプロセッサコア11は、S670にて、ハンドシェーク用データ51に「読出要求あり」が設定されているか否かを判断する。ここで、ハンドシェーク用データ51に「読出要求なし」が設定されている場合には、プロセッサコア12は、S680にて、プロセッサコア13に対する読出許可設定を行い、データ読出処理を終了する。
またS670にて、ハンドシェーク用データ51に「読出要求あり」が設定されている場合には、プロセッサコア12は、S690にて、優先度テーブルTB2を参照する。
そしてプロセッサコア12は、S700にて、「読出要求あり」が設定されているハンドシェーク用データに対応するプロセッサコアのうち、優先度が最も高いプロセッサコアに対する読出許可設定を行う。例えば、「読出要求あり」が設定されているハンドシェーク用データに対応するプロセッサコアが、プロセッサコア13である場合には、プロセッサコア12は、プロセッサコア13に対する読出許可設定を行う。
さらにプロセッサコア12は、S710にて、「読出要求あり」が設定されているハンドシェーク用データに対応するプロセッサコアのうち、優先度が最も高いプロセッサコアに対するハンドシェーク用データに「読出要求なし」を設定し、データ読出処理を終了する。
プロセッサコア13が実行するデータ読出処理は、ハンドシェーク用データ41がハンドシェーク用データ51に変更された点以外は、プロセッサコア12が実行するデータ読出処理と同一であるため、詳細な説明を省略する。
次に、第2実施形態のMPU15によるアクセス調停の具体例を説明する。
図13に示すように、プロセッサコア11は、まず、更新データ31に対するプロセッサコア12,13からの読出アクセスを禁止する読出アクセス禁止を設定する。矢印L31は、プロセッサコア11が禁止設定要求をMPU15へ出力することを示す。
そしてプロセッサコア11は、N個の分割処理の順次実行を開始する。四角形SQ3は、プロセッサコア11がN個の分割処理を順次実行していることを示す。
N個の分割処理の順次実行が開始された後に、プロセッサコア12が、更新データ31への読出アクセス要求をMPU15へ出力する。矢印L32は、プロセッサコア12が更新データ31への読出アクセスを要求していることを示す。
ここで、MPU15では読出アクセス禁止が設定されているため、矢印L33で示すように、MPU15はプロセッサコア12へ読出アクセス禁止通知を出力する。
プロセッサコア12は、MPU15から読出アクセス禁止通知を取得すると、矢印L34で示すように、ハンドシェーク用データ41に「読出要求あり」を設定する。
その後にプロセッサコア12は、四角形SQ4および矢印L35で示すように、ハンドシェーク用データ41を確認して、ハンドシェーク用データ41に「読出要求なし」が設定されるまで待機する。
またプロセッサコア13が、更新データ31への読出アクセス要求をMPU15へ出力する。矢印L36は、プロセッサコア13が更新データ31への読出アクセスを要求していることを示す。
ここで、MPU15では読出アクセス禁止が設定されているため、矢印L37で示すように、MPU15はプロセッサコア13へ読出アクセス禁止通知を出力する。
プロセッサコア13は、MPU15から読出アクセス禁止通知を取得すると、矢印L38で示すように、ハンドシェーク用データ51に「読出要求あり」を設定する。
その後にプロセッサコア13は、四角形SQ5および矢印L39で示すように、ハンドシェーク用データ51を確認して、ハンドシェーク用データ51に「読出要求なし」が設定されるまで待機する。
一方、プロセッサコア11は、N個の分割処理の順次実行し、矢印L40で示すように、更新データ31のデータを更新する。さらにプロセッサコア11は、矢印L41で示すように、ハンドシェーク用データ41,51に「読出要求あり」が設定されているか否かを判断する。
ここで、ハンドシェーク用データ41,51に「読出要求あり」が設定されているため、プロセッサコア11は、矢印L42で示すように、ROM14に記憶されている優先度テーブルTB2を参照する。
そしてプロセッサコア11は、プロセッサコア12,13のうち、優先度が最も高いプロセッサコア12からの読出アクセスを許可する読出アクセス許可を設定する。矢印L43は、プロセッサコア11が、プロセッサコア12の許可設定要求をMPU15へ出力することを示す。
そしてプロセッサコア11は、矢印L44で示すように、ハンドシェーク用データ41に「読出要求なし」を設定する。
ハンドシェーク用データ41に「読出要求なし」が設定されると、プロセッサコア12は、更新データ31への読出アクセス要求をMPU15へ出力する。矢印L45は、プロセッサコア12が更新データ31への読出アクセスを要求していることを示す。
ここで、MPU15では読出アクセス許可が設定されているため、MPU15はプロセッサコア12へ読出アクセス許可通知を出力する。
プロセッサコア12は、MPU15から読出アクセス許可通知を取得すると、更新データ31へアクセスして、更新データ31からデータを読み出す。矢印L46は、プロセッサコア12が更新データ31からデータを読み出すことを示す。
ここで、ハンドシェーク用データ51に「読出要求あり」が設定されているため、プロセッサコア12は、矢印L47で示すように、ROM14に記憶されている優先度テーブルTB2を参照する。
そしてプロセッサコア12は、プロセッサコア13からの読出アクセスを許可する読出アクセス許可を設定する。矢印L48は、プロセッサコア12が、プロセッサコア13の許可設定要求をMPU15へ出力することを示す。
そしてプロセッサコア11は、矢印L49で示すように、ハンドシェーク用データ51に「読出要求なし」を設定する。
ハンドシェーク用データ51に「読出要求なし」が設定されると、プロセッサコア13は、更新データ31への読出アクセス要求をMPU15へ出力する。矢印L50は、プロセッサコア13が更新データ31への読出アクセスを要求していることを示す。
ここで、MPU15では読出アクセス許可が設定されているため、MPU15はプロセッサコア13へ読出アクセス許可通知を出力する。
プロセッサコア13は、MPU15から読出アクセス許可通知を取得すると、更新データ31へアクセスして、更新データ31からデータを読み出す。矢印L51は、プロセッサコア13が更新データ31からデータを読み出すことを示す。
このように構成されたECU1は、プロセッサコア11,12,13のそれぞれに対する優先度が設定された優先度テーブルTB2を備える。
そしてプロセッサコア11は、優先度テーブルTB2に基づいて、MPU15を、読出アクセス要求をMPU15へ出力したプロセッサコア12,13の中で優先度が最も高いプロセッサコア12について読出アクセス許可に設定する。
またプロセッサコア11は、プロセッサコア11とプロセッサコア12との間のハンドシェークに用いられるハンドシェーク用データ41に「読出要求なし」を設定する。
これにより、ECU1は、優先度が高いプロセッサコア12が、優先度が低いプロセッサコア13よりも優先して、更新データ31へアクセスするようにすることができる。これにより、ECU1は、優先度が高い処理の実行が、優先度が低い処理の実行のために遅れてしまう事態の発生を抑制することができ、ECU1の応答性を向上させることができる。
以上説明した実施形態において、S410は禁止設定部としての処理に相当し、S480は許可設定部としての処理に相当する。
また、S630は有設定部としての処理に相当し、S640は再アクセス部としての処理に相当する。
また、S460は要求判断部としての処理に相当し、S460,S490,S500は中断部としての処理に相当し、S510は無設定部としての処理に相当する。
「1つの分割処理が終了すること」は確認条件に相当し、分割処理はアクセス処理に相当する。
[第3実施形態]
以下に本開示の第3実施形態を図面とともに説明する。なお第3実施形態では、第1実施形態と異なる部分を説明する。共通する構成については同一の符号を付す。
第3実施形態のECU1は、図14に示すように、周辺装置17が追加された点と、RAM21,22,23が省略されてRAM26が追加された点と、周辺装置17を制御するための周辺装置制御プログラム71をROM14が記憶する点とが第1実施形態と異なる。
周辺装置17およびRAM26は、システムバス16に接続される。
周辺装置17は、プロセッサコア11,12,13からの指示に従って、アクチュエータ4へPWM信号を出力する。PWMは、Pulse Width Modulationの略である。本実施形態では、アクチュエータ4は電子スロットルである。
RAM26は、ハンドシェーク用データ61,62,63を記憶する。ハンドシェーク用データ61は、プロセッサコア11による周辺装置制御プログラム71の実行要求の有無が設定されるデータである。ハンドシェーク用データ62は、プロセッサコア12による周辺装置制御プログラム71の実行要求の有無が設定されるデータである。ハンドシェーク用データ63は、プロセッサコア13による周辺装置制御プログラム71の実行要求の有無が設定されるデータである。
また、第3実施形態のECU1では、データアクセスに関しては、以下の第1相違点および第2相違点が第1実施形態と異なる。
第1相違点は、プロセッサコア11,12,13が、RAM21の更新データ31へアクセスする代わりに、ROM14の周辺装置制御プログラム71へアクセスすることである。第2相違点は、プロセッサコア12,13が、RAM21のハンドシェーク用データ41,51にアクセスする代わりに、RAM26のハンドシェーク用データ62,63にアクセスする点である。
このように、第3実施形態のECU1は、データアクセスに関しては、第1実施形態と類似しているため、フローチャートを用いた処理手順の説明を省略する。
次に、MPU15による実行アクセス調停の第1の具体例を説明する。
図15に示すように、プロセッサコア11は、まず、周辺装置制御プログラム71に対するプロセッサコア12,13からの実行アクセスを禁止する実行アクセス禁止を設定する。矢印L61は、プロセッサコア11が禁止設定要求をMPU15へ出力することを示す。
次にプロセッサコア11は、矢印L62で示すように、ROM14から周辺装置制御プログラム71をフェッチする。そしてプロセッサコア11は、矢印L63で示すように、アクチュエータ4へPWM信号を出力する制御を実行する。さらにプロセッサコア11は、矢印L64で示すように、周辺装置制御プログラム71に対するプロセッサコア12,13からの実行アクセスを許可する実行アクセス許可を設定する。矢印L64は、プロセッサコア11が許可設定要求をMPU15へ出力することを示す。
その後にプロセッサコア12は、周辺装置制御プログラム71へのフェッチ要求をMPU15へ出力する。矢印L65は、プロセッサコア12が周辺装置制御プログラム71へのフェッチを要求していることを示す。
ここで、MPU15では実行アクセス許可が設定されているため、MPU15はプロセッサコア12へ実行アクセス許可通知を出力する。
プロセッサコア12は、MPU15から実行アクセス許可通知を取得すると、ROM14へアクセスして、周辺装置制御プログラム71をフェッチし、矢印L66で示すように、アクチュエータ4へPWM信号を出力する制御を実行する。
さらにプロセッサコア13は、周辺装置制御プログラム71へのフェッチ要求をMPU15へ出力する。矢印L67は、プロセッサコア13が周辺装置制御プログラム71へのフェッチを要求していることを示す。
ここで、MPU15では実行アクセス許可が設定されているため、MPU15はプロセッサコア13へ実行アクセス許可通知を出力する。
プロセッサコア13は、MPU15から実行アクセス許可通知を取得すると、ROM14へアクセスして、周辺装置制御プログラム71をフェッチし、矢印L68で示すように、アクチュエータ4へPWM信号を出力する制御を実行する。
次に、MPU15による実行アクセス調停の第2の具体例を説明する。
図16に示すように、プロセッサコア11は、まず、周辺装置制御プログラム71に対するプロセッサコア12,13からの実行アクセスを禁止する実行アクセス禁止を設定する。矢印L71は、プロセッサコア11が禁止設定要求をMPU15へ出力することを示す。
そしてプロセッサコア11は、アクチュエータ4を制御するアクチュエータ制御処理の実行を開始する。
アクチュエータ制御処理が開始された後に、プロセッサコア12が、周辺装置制御プログラム71へのフェッチ要求をMPU15へ出力する。矢印L72は、プロセッサコア12が周辺装置制御プログラム71へのフェッチを要求していることを示す。
ここで、MPU15では実行アクセス禁止が設定されているため、矢印L73で示すように、MPU15はプロセッサコア12へ実行アクセス禁止通知を出力する。
プロセッサコア12は、MPU15から実行アクセス禁止通知を取得すると、矢印L74で示すように、ハンドシェーク用データ62に「実行アクセス要求あり」を設定する。
その後にプロセッサコア12は、四角形SQ7および矢印L75で示すように、ハンドシェーク用データ62を確認して、ハンドシェーク用データ62に「実行アクセス要求なし」が設定されるまで待機する。
一方、プロセッサコア11は、アクチュエータ制御処理の実行が開始されると、四角形SQ6内において矢印L76,L77,L78,L80で示す処理を繰り返す。矢印L76は、アクチュエータ4を診断する処理である。矢印L77は、ROM14から周辺装置制御プログラム71をフェッチする処理である。矢印L78は、周辺装置17へ出力指示値を出力する処理である。矢印L80は、ハンドシェーク用データ61,62,63を確認する処理である。
なお、周辺装置17は、プロセッサコア11からの出力指示値を取得すると、矢印L79で示すように、アクチュエータ4へPWM信号を出力する。
そして、ハンドシェーク用データ62に「実行アクセス要求あり」が設定されると、プロセッサコア11は、周辺装置制御プログラム71に対するプロセッサコア12,13からの実行アクセスを許可する実行アクセス許可を設定する。矢印L81は、プロセッサコア11が許可設定要求をMPU15へ出力することを示す。
さらにプロセッサコア11は、矢印L82で示すように、ハンドシェーク用データ62に「実行アクセス要求なし」を設定する。
ハンドシェーク用データ62に「実行アクセス要求なし」が設定されると、プロセッサコア12は、周辺装置制御プログラム71へのフェッチ要求をMPU15へ出力する。矢印L83は、プロセッサコア12が周辺装置制御プログラム71へのフェッチを要求していることを示す。
ここで、MPU15では実行アクセス許可が設定されているため、MPU15はプロセッサコア12へ実行アクセス許可通知を出力する。
プロセッサコア12は、MPU15から実行アクセス許可通知を取得すると、ROM14へアクセスして、周辺装置制御プログラム71をフェッチし、矢印L84で示すように、周辺装置17へ出力指示値を出力する。
周辺装置17は、プロセッサコア12からの出力指示値を取得すると、矢印L85で示すように、アクチュエータ4へPWM信号を出力する。
このように構成されたECU1は、プロセッサコア11,12,13と、ROM14と、MPU15とを備える。
ROM14は、プロセッサコア11,12,13のそれぞれが読出可能にアクセスすることができる周辺装置制御プログラム71を記憶する。
MPU15は、プロセッサコア11が周辺装置制御プログラム71へアクセスしている場合にはプロセッサコア12,13が周辺装置制御プログラム71へアクセスすることができないようにプロセッサコア11,12,13を制御する。
このようにECU1では、MPU15が、プロセッサコア11が周辺装置制御プログラム71へアクセスしている場合にはプロセッサコア12,13が周辺装置制御プログラム71へアクセスすることができないようにプロセッサコア11,12,13を制御する。すなわち、ECU1は、セマフォの代わりにMPU15を使用するため、アクセスするプロセッサコア側において特殊なインターフェースが必要にならない。これにより、ECU1は、プロセッサコア間の排他制御に起因したオーバーヘッドの増加とプログラムコードの増加とを抑制することができる。
またECU1は、プロセッサコア11,12,13間で処理が同期していない場合にプロセッサコア11,12,13が同時に周辺装置17へアクセスして、周辺装置17において誤動作が発生するのを抑制することができる。またECU1は、プロセッサコア11,12,13間における周辺装置17の使用権の迅速な移行を実現することができ、ECU1とアクチュエータ4とで構成されるシステムの信頼性と応答性とを向上させることができる。
またプロセッサコア11は、プロセッサコア11が周辺装置制御プログラム71へアクセスする期間内に、MPU15を、プロセッサコア12,13からの周辺装置制御プログラム71への実行アクセスを禁止する実行アクセス禁止に設定する。またプロセッサコア11は、プロセッサコア11が周辺装置制御プログラム71へアクセスしない期間内に、MPU15を、プロセッサコア12,13からの周辺装置制御プログラム71への実行アクセスを許可する実行アクセス許可に設定する。
このようにECU1は、他のプロセッサコアからの実行アクセスを敢えて禁止にすることで、MPU15を、意図した実行アクセス要求の検出に用いる。これにより、ECU1は、セマフォを用いた場合においてアクセスの度に常時発生するオーバーヘッドを低減することができる。
また、ECU1のRAM26は、プロセッサコア11,12,13間のハンドシェークに用いられ、且つ、プロセッサコア11,12,13のそれぞれが読出可能および更新可能にアクセスすることができるハンドシェーク用データ62,63を記憶する。
MPU15は、プロセッサコア11が周辺装置制御プログラム71へアクセスする期間内にプロセッサコア12,13が周辺装置制御プログラム71へのフェッチ要求をMPU15へ出力した場合には、プロセッサコア12,13へ実行アクセス禁止通知を出力する。
プロセッサコア12,13はそれぞれ、MPU15から実行アクセス禁止通知を取得すると、プロセッサコア11とプロセッサコア12,13との間のハンドシェークに用いられるハンドシェーク用データ62,63に、実行アクセス要求が有ることを示す「実行アクセス要求あり」を設定する。
プロセッサコア12,13はそれぞれ、ハンドシェーク用データ62,63が、「実行アクセス要求あり」が設定されている状態から、「実行アクセス要求なし」が設定されている状態に変化した場合に、周辺装置制御プログラム71へのフェッチ要求をMPU15へ再度出力する。
プロセッサコア11は、プロセッサコア11が周辺装置制御プログラム71へアクセスしている期間内において、周辺装置17へ出力指示値を出力する処理が終了する毎に繰り返しハンドシェーク用データ62,63を確認し、ハンドシェーク用データ62,63に「実行アクセス要求あり」が設定されているか否かを判断する。
プロセッサコア11は、ハンドシェーク用データ62,63に「実行アクセス要求あり」が設定されていると判断した場合に、周辺装置制御プログラム71をフェッチして周辺装置17へ出力指示値を出力する処理を中断して、MPU15を実行アクセス許可に設定する。
プロセッサコア11は、ハンドシェーク用データ62,63に「読出要求あり」が設定されていると判断した場合に、ハンドシェーク用データ62,63に、実行アクセス要求が無いことを示す「実行アクセス要求なし」を設定する。
これにより、ECU1は、プロセッサコア11がプロセッサコア12,13からの実行アクセス要求を検出した場合に、周辺装置制御プログラム71をフェッチして周辺装置17へ出力指示値を出力する処理を中断して、プロセッサコア12,13に周辺装置制御プログラム71への実行アクセスを実行させることができる。このため、ECU1は、プロセッサコア12,13が周辺装置制御プログラム71への実行アクセスのために待機する時間を短縮することができ、プロセッサコア12,13の処理効率を向上させることができる。
以上説明した実施形態において、ROM14は共有データ記憶部に相当し、周辺装置制御プログラム71は共有データに相当し、RAM26はハンドシェーク記憶部に相当する。
また、実行アクセス禁止はアクセス禁止に相当し、実行アクセス許可はアクセス許可に相当する。
また、RAM26はハンドシェーク記憶部に相当し、実行アクセス禁止通知の出力はメモリアクセス違反処理に相当し、「実行アクセス要求あり」はアクセス要求有に相当する。
また、「周辺装置17へ出力指示値を出力する処理が終了すること」は確認条件に相当し、「周辺装置制御プログラム71をフェッチして周辺装置17へ出力指示値を出力する処理」はアクセス処理に相当し、「実行アクセス要求なし」はアクセス要求無に相当する。
[第4実施形態]
以下に本開示の第4実施形態を図面とともに説明する。なお第4実施形態では、第3実施形態と異なる部分を説明する。共通する構成については同一の符号を付す。
第4実施形態のECU1は、第2実施形態で示す優先度テーブルTB2がROM14に記憶されている点が第3実施形態と異なる。
次に、第4実施形態のMPU15による実行アクセス調停の具体例を説明する。
図17に示すように、プロセッサコア11は、まず、周辺装置制御プログラム71に対するプロセッサコア12,13からの実行アクセスを禁止する実行アクセス禁止を設定する。矢印L91は、プロセッサコア11が禁止設定要求をMPU15へ出力することを示す。
そしてプロセッサコア11は、アクチュエータ4を制御するアクチュエータ制御処理の実行を開始する。
アクチュエータ制御処理が開始された後に、プロセッサコア12が、周辺装置制御プログラム71へのフェッチ要求をMPU15へ出力する。矢印L92は、プロセッサコア12が周辺装置制御プログラム71へのフェッチを要求していることを示す。
ここで、MPU15では実行アクセス禁止が設定されているため、矢印L93で示すように、MPU15はプロセッサコア12へ実行アクセス禁止通知を出力する。
プロセッサコア12は、MPU15から実行アクセス禁止通知を取得すると、矢印L94で示すように、ハンドシェーク用データ62に「実行アクセス要求あり」を設定する。
その後にプロセッサコア12は、四角形SQ9および矢印L95で示すように、ハンドシェーク用データ62を確認して、ハンドシェーク用データ62に「実行アクセス要求なし」が設定されるまで待機する。
また、プロセッサコア13は、アクチュエータ制御処理が開始された後に、周辺装置制御プログラム71へのフェッチ要求をMPU15へ出力する。矢印L96は、プロセッサコア13が周辺装置制御プログラム71へのフェッチを要求していることを示す。
ここで、MPU15では実行アクセス禁止が設定されているため、矢印L97で示すように、MPU15はプロセッサコア13へ実行アクセス禁止通知を出力する。
プロセッサコア13は、MPU15から実行アクセス禁止通知を取得すると、矢印L98で示すように、ハンドシェーク用データ63に「実行アクセス要求あり」を設定する。
その後にプロセッサコア13は、四角形SQ10および矢印L99で示すように、ハンドシェーク用データ63を確認して、ハンドシェーク用データ63に「実行アクセス要求なし」が設定されるまで待機する。
一方、プロセッサコア11は、アクチュエータ制御処理の実行が開始されると、四角形SQ8内において矢印L100,L101,L102で示す処理を繰り返す。矢印L100は、ROM14から周辺装置制御プログラム71をフェッチする処理である。矢印L101は、アクチュエータ4へPWM信号を出力する処理である。矢印L102は、ハンドシェーク用データ61,62,63を確認する処理である。
そして、ハンドシェーク用データ62に「実行アクセス要求あり」が設定されると、矢印L103で示すように、ROM14に記憶されている優先度テーブルTB2を参照する。
次にプロセッサコア11は、周辺装置制御プログラム71に対するプロセッサコア12からの実行アクセスを許可する実行アクセス許可を設定する。矢印L104は、プロセッサコア11が許可設定要求をMPU15へ出力することを示す。
さらにプロセッサコア11は、矢印L105で示すように、ハンドシェーク用データ62に「実行アクセス要求なし」を設定する。
ハンドシェーク用データ62に「実行アクセス要求なし」が設定されると、プロセッサコア12は、周辺装置制御プログラム71へのフェッチ要求をMPU15へ出力する。矢印L106は、プロセッサコア12が周辺装置制御プログラム71へのフェッチを要求していることを示す。
ここで、MPU15では実行アクセス許可が設定されているため、MPU15はプロセッサコア12へ実行アクセス許可通知を出力する。
プロセッサコア12は、MPU15から実行アクセス許可通知を取得すると、ROM14へアクセスして、周辺装置制御プログラム71をフェッチし、矢印L107で示すように、アクチュエータ4へPWM信号を出力する。
そしてプロセッサコア12は、矢印L108で示すように、ROM14に記憶されている優先度テーブルTB2を参照する。
次にプロセッサコア12は、周辺装置制御プログラム71に対するプロセッサコア13からの実行アクセスを許可する実行アクセス許可を設定する。矢印L109は、プロセッサコア11が許可設定要求をMPU15へ出力することを示す。
さらにプロセッサコア12は、矢印L110で示すように、ハンドシェーク用データ63に「実行アクセス要求なし」を設定する。
ハンドシェーク用データ63に「実行アクセス要求なし」が設定されると、プロセッサコア13は、周辺装置制御プログラム71へのフェッチ要求をMPU15へ出力する。矢印L111は、プロセッサコア13が周辺装置制御プログラム71へのフェッチを要求していることを示す。
ここで、MPU15では実行アクセス許可が設定されているため、MPU15はプロセッサコア13へ実行アクセス許可通知を出力する。
プロセッサコア13は、MPU15から実行アクセス許可通知を取得すると、ROM14へアクセスして、周辺装置制御プログラム71をフェッチし、矢印L112で示すように、アクチュエータ4へPWM信号を出力する。
このように構成されたECU1は、プロセッサコア11,12,13のそれぞれに対する優先度が設定された優先度テーブルTB2を備える。
そしてプロセッサコア11は、優先度テーブルTB2に基づいて、MPU15を、フェッチ要求をMPU15へ出力したプロセッサコア12,13の中で優先度が最も高いプロセッサコア12につい実行アクセス許可に設定する。
またプロセッサコア11は、プロセッサコア11とプロセッサコア12との間のハンドシェークに用いられるハンドシェーク用データ62に「実行アクセス要求なし」を設定する。
これにより、ECU1は、優先度が高いプロセッサコア12が、優先度が低いプロセッサコア13よりも優先して、周辺装置制御プログラム71へアクセスするようにすることができる。これにより、ECU1は、優先度が高い処理の実行が、優先度が低い処理の実行のために遅れてしまう事態の発生を抑制することができ、ECU1の応答性を向上させることができる。
以上、本開示の一実施形態について説明したが、本開示は上記実施形態に限定されるものではなく、種々変形して実施することができる。
本開示に記載のECU1およびその手法は、コンピュータプログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサおよびメモリを構成することによって提供された専用コンピュータにより、実現されてもよい。あるいは、本開示に記載のECU1およびその手法は、一つ以上の専用ハードウェア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されてもよい。もしくは、本開示に記載のECU1およびその手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサおよびメモリと一つ以上のハードウェア論理回路によって構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより、実現されてもよい。また、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されてもよい。ECU1に含まれる各部の機能を実現する手法には、必ずしもソフトウェアが含まれている必要はなく、その全部の機能が、一つあるいは複数のハードウェアを用いて実現されてもよい。
上記実施形態における1つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、1つの構成要素が有する1つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、1つの構成要素によって実現したり、複数の構成要素によって実現される1つの機能を、1つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加または置換してもよい。
上述したECU1の他、当該ECU1を構成要素とするシステム、当該ECU1としてコンピュータを機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実態的記録媒体、アクセス制御方法など、種々の形態で本開示を実現することもできる。
1…ECU、11,12,13…プロセッサコア、14…ROM、15…MPU、21…RAM、31…更新データ、71…周辺装置制御プログラム

Claims (5)

  1. 複数のプロセッサコア(11,12,13)と、
    複数の前記プロセッサコアのそれぞれが読出可能にアクセスすることができる共有データを記憶するように構成された共有データ記憶部(21,14)と、
    複数の前記プロセッサコアのうちの一つの前記プロセッサコアを特定プロセッサコア(11)とし、前記特定プロセッサコア以外の前記プロセッサコアを他プロセッサコア(12,13)として、前記特定プロセッサコアが前記共有データへアクセスして前記共有データにデータを書き込んだり記共有データからデータを読み出したりする場合には前記他プロセッサコアが前記共有データへアクセスして前記共有データからデータを読み出すことができないように複数の前記プロセッサコアを制御するように構成されたメモリ保護部(15)と
    を備え、
    前記メモリ保護部は、
    前記共有データに対する前記他プロセッサコアからの読出アクセスを禁止するための禁止設定要求が前記特定プロセッサコアから入力されると、前記読出アクセスを禁止する読出アクセス禁止を設定し、
    前記読出アクセスを許可するための許可設定要求が前記特定プロセッサコアから入力されると、前記読出アクセスを許可する読出アクセス許可を設定し、
    前記読出アクセス禁止が設定されている場合において、前記読出アクセスを要求する読出アクセス要求が前記他プロセッサコアから入力されると、前記読出アクセスを禁止する旨を通知する読出アクセス禁止通知を前記他プロセッサコアへ出力し、
    前記読出アクセス許可が設定されている場合において、前記読出アクセス要求が前記他プロセッサコアから入力されると、前記読出アクセスを許可する旨を通知する読出アクセス許可通知を前記他プロセッサコアへ出力する電子制御装置(1)。
  2. 請求項1に記載の電子制御装置であって、
    前記特定プロセッサコアは、
    前記特定プロセッサコアが前記共有データへアクセスする期間内に、前記メモリ保護部を、前記他プロセッサコアからの前記共有データへのアクセスを禁止するアクセス禁止に設定するように構成された禁止設定部(S110,S410)と、
    前記特定プロセッサコアが前記共有データへアクセスしない期間内に、前記メモリ保護部を、前記他プロセッサコアからの前記共有データへのアクセスを許可するアクセス許可に設定するように構成された許可設定部(S180,S480)と
    を備える電子制御装置。
  3. 請求項2に記載の電子制御装置であって、
    複数の前記プロセッサコア間のハンドシェークに用いられ、且つ、複数の前記プロセッサコアのそれぞれが読出可能および更新可能にアクセスすることができるハンドシェーク用データ(41,51,62,63)を記憶するように構成されたハンドシェーク記憶部(21,26)を備え、
    前記メモリ保護部は、前記特定プロセッサコアが前記共有データへアクセスする期間内に前記他プロセッサコアが前記共有データへのアクセスを試みた場合には、前記他プロセッサコアに対してメモリアクセス違反処理を実行し、
    前記他プロセッサコアは、
    前記メモリアクセス違反処理の対象となった場合に、前記特定プロセッサコアと当該他プロセッサコアとの間のハンドシェークに用いられる前記ハンドシェーク用データである違反対象ハンドシェーク用データに、アクセス要求が有ることを示すアクセス要求有を設定するように構成された有設定部(S310,S630)と、
    前記違反対象ハンドシェーク用データが、前記アクセス要求有が設定されている状態から、アクセス要求が無いことを示すアクセス要求無が設定されている状態に変化した場合に、前記共有データへのアクセスを再度試みるように構成された再アクセス部(S320,S330,S640)とを備え、
    前記特定プロセッサコアは、
    前記特定プロセッサコアが前記共有データへアクセスしている期間内において、予め設定された確認条件が成立する毎に繰り返し前記違反対象ハンドシェーク用データを確認し、前記違反対象ハンドシェーク用データに前記アクセス要求有が設定されているか否かを判断するように構成された要求判断部(S150,S460)と、
    前記違反対象ハンドシェーク用データに前記アクセス要求有が設定されていると前記要求判断部が判断した場合に、前記特定プロセッサコアが前記共有データへアクセスするアクセス処理を中断して、前記許可設定部に、前記メモリ保護部を前記アクセス許可に設定させるように構成された中断部(S150,S460,S490,S500)と、
    前記違反対象ハンドシェーク用データに前記アクセス要求有が設定されていると前記要求判断部が判断した場合に、前記違反対象ハンドシェーク用データに、前記アクセス要求無を設定するように構成された無設定部(S190,S510)と
    を備える電子制御装置。
  4. 請求項1~請求項3の何れか1項に記載の電子制御装置であって、
    前記特定プロセッサコアが前記共有データへアクセスする処理は、前記共有データからデータを読み出し、更に前記共有データにデータを書き込むテストである電子制御装置。
  5. 請求項3に記載の電子制御装置であって、
    複数の前記プロセッサコアのそれぞれに対する優先度が設定された優先度テーブル(TB2)を備え、
    前記中断部(S460,S490,S500)は、前記優先度テーブルに基づいて、前記許可設定部に、前記メモリ保護部を、前記共有データへのアクセスを試みた複数の前記他プロセッサコアの中で前記優先度が最も高い前記他プロセッサコアである高優先度プロセッサコアについて前記アクセス許可に設定させ、
    前記無設定部(S510)は、前記特定プロセッサコアと前記高優先度プロセッサコアとの間のハンドシェークに用いられる前記違反対象ハンドシェーク用データに前記アクセス要求無を設定する電子制御装置。
JP2019132040A 2019-07-17 2019-07-17 電子制御装置 Active JP7268516B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019132040A JP7268516B2 (ja) 2019-07-17 2019-07-17 電子制御装置
DE102020208367.3A DE102020208367A1 (de) 2019-07-17 2020-07-03 Elektronische steuereinheit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019132040A JP7268516B2 (ja) 2019-07-17 2019-07-17 電子制御装置

Publications (2)

Publication Number Publication Date
JP2021018475A JP2021018475A (ja) 2021-02-15
JP7268516B2 true JP7268516B2 (ja) 2023-05-08

Family

ID=74093398

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019132040A Active JP7268516B2 (ja) 2019-07-17 2019-07-17 電子制御装置

Country Status (2)

Country Link
JP (1) JP7268516B2 (ja)
DE (1) DE102020208367A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002314632A (ja) 2001-04-16 2002-10-25 Denso Corp 電子制御装置
JP2007328647A (ja) 2006-06-09 2007-12-20 Meidensha Corp Cpu間のデータ転送方式
WO2010119932A1 (ja) 2009-04-17 2010-10-21 日本電気株式会社 マルチプロセッサシステム、マルチプロセッサシステムにおけるメモリ管理方法及び通信プログラム
JP2014146254A (ja) 2013-01-30 2014-08-14 Fujitsu Ltd 情報処理装置および情報処理装置の制御方法
JP2019036322A (ja) 2018-09-27 2019-03-07 日立オートモティブシステムズ株式会社 車両制御装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002314632A (ja) 2001-04-16 2002-10-25 Denso Corp 電子制御装置
JP2007328647A (ja) 2006-06-09 2007-12-20 Meidensha Corp Cpu間のデータ転送方式
WO2010119932A1 (ja) 2009-04-17 2010-10-21 日本電気株式会社 マルチプロセッサシステム、マルチプロセッサシステムにおけるメモリ管理方法及び通信プログラム
JP2014146254A (ja) 2013-01-30 2014-08-14 Fujitsu Ltd 情報処理装置および情報処理装置の制御方法
JP2019036322A (ja) 2018-09-27 2019-03-07 日立オートモティブシステムズ株式会社 車両制御装置

Also Published As

Publication number Publication date
DE102020208367A1 (de) 2021-01-21
JP2021018475A (ja) 2021-02-15

Similar Documents

Publication Publication Date Title
US8006000B2 (en) Bridge, processor unit, information processing apparatus, and access control method
US7434264B2 (en) Data processing system with peripheral access protection and method therefor
JP5153887B2 (ja) プロセッサから周辺機器へのセキュア動作モードアクセス特権の譲渡のための方法及び装置
JP4602403B2 (ja) データ処理システムにおけるエンディアンネス制御方法および装置
US7512723B2 (en) Queued interface devices, multi-core peripheral systems, and methods for sharing a peripheral in a multi-core system
TWI326829B (en) Method for improving flexibility of direct memory access channels
US7581054B2 (en) Data processing system
JP3807250B2 (ja) クラスタシステム、コンピュータ及びプログラム
JP5582971B2 (ja) メモリ保護方法および情報処理装置
US8725919B1 (en) Device configuration for multiprocessor systems
US9740636B2 (en) Information processing apparatus
WO2010097925A1 (ja) 情報処理装置
US9104472B2 (en) Write transaction interpretation for interrupt assertion
JP4656347B2 (ja) コンピュータ・システム
JP7268516B2 (ja) 電子制御装置
US10545885B2 (en) Information processing device, information processing method, and computer program product
US7689746B2 (en) Bus system employing an arbiter
JP3965784B2 (ja) 共有メモリ排他アクセス制御方法
US10592644B2 (en) Information protection method and device based on a plurality of sub-areas for MCU chip
US20120331255A1 (en) System and method for allocating memory resources
US12117942B2 (en) Processing system, related integrated circuit, device and method
US20190042473A1 (en) Technologies for enabling slow speed controllers to use hw crypto engine for i/o protection
CN117609114B (zh) 多核处理器数据共享控制方法、装置、存储模块及芯片
JP2007109053A (ja) バスアクセス制御装置
US20230259302A1 (en) Control device, control method, recording medium in which control program is recorded, and vehicle

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210929

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221121

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230404

R151 Written notification of patent or utility model registration

Ref document number: 7268516

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151