JP6744806B2 - マルチプロセッサ - Google Patents

マルチプロセッサ Download PDF

Info

Publication number
JP6744806B2
JP6744806B2 JP2016230039A JP2016230039A JP6744806B2 JP 6744806 B2 JP6744806 B2 JP 6744806B2 JP 2016230039 A JP2016230039 A JP 2016230039A JP 2016230039 A JP2016230039 A JP 2016230039A JP 6744806 B2 JP6744806 B2 JP 6744806B2
Authority
JP
Japan
Prior art keywords
core
debug
register information
control unit
data
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
JP2016230039A
Other languages
English (en)
Other versions
JP2018088048A (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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2016230039A priority Critical patent/JP6744806B2/ja
Priority to TW106132524A priority patent/TW201820169A/zh
Priority to EP17195337.5A priority patent/EP3327573B1/en
Priority to US15/792,480 priority patent/US10489271B2/en
Priority to CN201711202502.2A priority patent/CN108121686B/zh
Publication of JP2018088048A publication Critical patent/JP2018088048A/ja
Application granted granted Critical
Publication of JP6744806B2 publication Critical patent/JP6744806B2/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
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • 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/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)
  • Microcomputers (AREA)

Description

本発明はマルチプロセッサ及びマルチプロセッサシステムに関し、例えば、コアプロセッサで実行されるプログラムをデバッグするためのマルチプロセッサ及びマルチプロセッサシステムに関する。
特許文献1には、デバッグ端子を有するマルチプロセッサ装置に関する技術が開示されている。特許文献1にかかるマルチプロセッサ装置は、プロセッサごとにデバッグインタフェース(I/F)を有する。
特許文献2には、マルチプロセッサシステムに関する技術が開示されている。特許文献2にかかるマルチプロセッサシステムは、プロセッサごとにデバッグ機能部を有し、また、制御回路にデバッグ機能部を有する。
特開2000−76199号公報 特開2006−302162号公報
しかしながら、特許文献1及び2では、各プロセッサコアを直接デバッグするために、デバッグI/Fやデバッグ機能部などのデバッグ制御部を有する。そのため、プロセッサコアの数の増加に応じて、プロセッサの実装サイズが大きくなってしまうという問題点がある。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態によれば、マルチプロセッサが備えるデバッグ制御部は、複数のコアのうちデバッグ対象である第1のコア内のレジスタ情報を、デバッグ制御部からレジスタ情報を参照及び更新可能に接続されたデバッグ用コアに転送するものである。
前記一実施の形態によれば、プロセッサコアの数の増加に対して、実装サイズの増加を抑制することができる。
本実施の形態1にかかるマルチプロセッサ及びデバッガシステムの構成を示すブロック図である。 本実施の形態1にかかるマルチプロセッサのコアの内部構成を示すブロック図である。 本実施の形態1にかかるマルチプロセッサのコア間のリングバスの構成を示すブロック図である。 本実施の形態1にかかるデバッグ処理の流れを示すフローチャートである。 本実施の形態1にかかるマルチプロセッサのコアのデータ入れ替え処理の流れを示すフローチャートである。 本実施の形態2にかかるマルチプロセッサ及びデバッガシステムの構成を示すブロック図である。 本実施の形態2にかかるマルチプロセッサのコアのデータ入れ替え処理の流れを示すフローチャートである。 本実施の形態3にかかるマルチプロセッサのコアのデータ入れ替え処理の流れを示すフローチャートである。 本実施の形態3にかかるマルチプロセッサのプログラムの再実行前の処理の流れを示すフローチャートである。 本実施の形態4にかかるマルチプロセッサシステムの構成を示すブロック図である。
以下では、上述した課題を解決するための手段を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
さらに、以下の実施の形態において、その構成要素(動作ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
ここで、以下の実施の形態を想到するに至った経緯を説明する。車載情報システム向けSoC(System on a Chip)の一例としては、カメラからの画像を処理して人や車などと認識するための画像認識処理プロセッサがある。当該画像認識処理プロセッサは、多数のコアプロセッサ(コア)を持つ並列処理プロセッサである。多数のコア上で動くプログラムのデバッグのためには、プログラムの実行途中で同時に複数のコアの状態を調べる必要がある。そのため、各コアにデバッグ機能を持たせることが望ましいが、実装した場合に回路サイズが大きくなってしまう。一方で、プロセッサの実装サイズは製造コストに直結するため、サイズはなるべく小さくする必要がある。そこで、以下の実施の形態が見出された。
<実施の形態1>
図1は、本実施の形態1にかかるマルチプロセッサ101及びデバッガシステム102の構成を示すブロック図である。デバッガシステム102は、マルチプロセッサ101と接続してマルチプロセッサ101上で動作するプログラムのデバッグを行う。デバッガシステム102は、例えば、コンピュータ等の情報処理システムであり、デバッガ108を備える。デバッガ108は、デバッガシステム102上で動作するデバッグプログラムであり、ユーザからの指示を受け付けて、マルチプロセッサ101に対してデバッグに関する指示を行い、デバッグの結果等を出力する。
マルチプロセッサ101は、デバッグ制御部103と、コア0_104と、コア1_105と、コア2_106と、コア3_107とを備える。尚、コアの数は4個である必要はなく、少なくとも2個以上であればよい。デバッグ制御部103は、デバッグ用コアであるコア0_104の内部のレジスタ情報を参照及び更新可能に接続されている。デバッグ制御部103は、コア0_104内で動作するプログラムのデバッグを行うために、コア0_104を制御する。デバッグ制御部103は、複数のコアのうちデバッグ対象である第1のコア内のレジスタ情報をデバッグ用コアに転送する。
コア0_104からコア3_107は、それぞれ、内部のレジスタ、プログラムカウンタ、ステータスレジスタ等にレジスタ情報を格納している。レジスタ情報は、コア固有データと呼ぶものとする。コア0_104からコア3_107は、リングバスによりリング状に接続されている。
図2は、本実施の形態1にかかるマルチプロセッサ101のコア0_104の内部構成を示すブロック図である。コア0_104は、レジスタ情報1040と、ブレークポイント1044と、I/F0_301とを備える。レジスタ情報1040は、上述した通り、レジスタ1041、プログラムカウンタ(PC)1042及びステータスレジスタ1043等に格納された値である。また、デバッグ制御部103は、レジスタ1041、PC1042及びステータスレジスタ1043に対して参照及び更新が可能に接続されている。
ブレークポイント1044は、デバッグ開始前に設定されるプログラムの途中停止箇所の命令アドレスを格納する領域である。I/F0_301は、受信バッファ3011及び送信バッファ3012を備える。受信バッファ3011は、隣接する他のコア(例えば、コア3_107)から転送される固有データを受信し、一時的に保持する記憶領域である。送信バッファ3012は、コア0_104の固有データ、すなわち、レジスタ情報1040を隣接する他のコア(例えば、コア1_105)へ転送するために一時的に保持する記憶領域である。つまり、コア0_104は、レジスタ情報1040を転送する際には、レジスタ1041、PC1042及びステータスレジスタ1043に格納されたレジスタ情報1040を送信バッファ3012に格納する。そして、受信バッファ3011に格納されたレジスタ情報をレジスタ1041、PC1042及びステータスレジスタ1043に上書き保存する。
尚、コア1_105、コア2_106及びコア3_107の内部構成は、デバッグ制御部103がレジスタ情報を参照及び更新可能に接続されていない点を除いて、図2と同様であるため、図示及び説明を省略する。
図3は、本実施の形態1にかかるマルチプロセッサ101のコア間のリングバスの構成を示すブロック図である。コア0_104、コア1_105、コア2_106及びコア3_107のそれぞれは、バスのインタフェースであるI/F0_301、I/F1_302、I/F2_303及びI/F3_304を備えている。具体的には、I/F0_301は、I/F1_302及びI/F3_304と接続され、I/F1_302は、I/F0_301及びI/F2_303と接続され、I/F2_303は、I/F1_302及びI/F3_304と接続され、I/F3_304は、I/F0_301及びI/F2_303と接続されている。つまり、各コアは、バスのI/Fによりリング状に隣のコアと接続されている。そして、各コアの固有データは、図3の矢印の方向へ転送される。尚、矢印の方向は例示であり、逆方向でも構わない。また、コアの接続順序もこれに限定されない。
各コアは、デバッグ制御部103からコアの固有データの入れ替え指示を受け付けると、それぞれ隣接する一方のコアへ所定の順序で自己の固有データを転送する。具体的には、コア0_104の固有データは、I/F0_301の送信バッファを介してI/F1_302の受信バッファへ転送される。また、コア1_105の固有データは、I/F1_302の送信バッファを介してI/F2_303の受信バッファへ転送される。また、コア2_106の固有データは、I/F2_303の送信バッファを介してI/F3_304の受信バッファへ転送される。また、コア3_107の固有データは、I/F3_304の送信バッファを介してI/F0_301の受信バッファへ転送される。そして、各コアは、各I/Fの受信バッファに格納された固有データを内部のレジスタに格納する。
図4は、本実施の形態1にかかるデバッグ処理の流れを示すフローチャートである。図4では、各種のイベントは矢印で連結されており、矢印の向きにしたがって時系列でイベントが生じることを示している。尚、図4では、個々のイベントを、そのイベントが起きる場所により、デバッガ108とデバッグ制御部103、コア0_104に分類している。
デバッグ時にプログラムが取り得るプログラムの実行状態にはモードがあり、具体的にはプログラムが実行中である実行モードと、デバッグ中のデバッグモードがある。図4の例では、デバッガ108からフローが開始されるためモードは、デバッグモードである。
また、デバッグ時の作業には一般的に、(1)ブレークポイントの設定、(2)デバッグ対象のコアの変更、(3)ステップ実行、及び(4)プログラムの再開がある。そして、(1)から(4)のそれぞれにおいて、コアの情報の参照及び更新(読み出し及び書込み)が行われる。
ここで、(2)デバッグ対象のコアの変更とは、デバッガ108が操作するコアをデバッグ作業者が指定したコアに変更することである。デバッグに際しては、まずこの変更を行なって、どのコア上で動作するプログラムの箇所をデバッグするか決め、しかるのちに当該コアにステップ実行の処理を行なわせたり、ブレークポイントを設定して、当該コアによるプログラムの実行をブレークポイントまで進めさせたりする。図4のフローはその一例である。
(1)ブレークポイントの設定
プログラムをある命令アドレスで停止させる場合、各コアにブレークポイントを設定する。具体的には、まず、デバッガ108は、デバッグ作業者からプログラム内のある命令アドレスの指定を受け付けて、その命令アドレスをブレークポイントに設定する指示(ブレークポイント設定指示)をデバッグ制御部103へ出力する(200)。デバッグ制御部103は、ブレークポイント設定指示に応じて各コアのブレークポイント1044に命令アドレスを書き込み、ブレークポイントの設定を行う(210)。
その後、デバッガ108は、デバッグ作業者からの指示に応じてプログラムを実行する指示(プログラム実行指示)をデバッグ制御部103へ出力する(201)。デバッグ制御部103は、モードを実行モードに移行し(211)、コア0_104でプログラムを実行させる(220)。このとき、他のコア1_105からコア3_107においてもプログラムが並列実行される。
コア0_104で動作しているプログラムがブレークポイントの命令アドレスに到達したとき、コア0_104は停止し(221)、デバッグ制御部103へ停止したことを通知する。通知を受けたデバッグ制御部103は、モードをデバッグモードに移行し(212)、全てのコアを停止させ、デバッガ108へ停止したことを通知する。
通知を受けたデバッガ108は、デバッグ制御部103を介して停止したコア0_104のレジスタ情報を参照及び更新する(202)。
(2)デバッグ対象のコアの変更
デバッグ対象のコアをコア0_104とは異なるコアに変更する場合、デバッグ対象のコアの固有データをコア0_104へ転送する。これにより、デバッグ制御部103に接続されていないコアで動いているプログラムの箇所のデバッグが可能になる。
具体的には、デバッガ108は、デバッグ作業者からの指示に応じてデバッグ対象となるコアを変更する指示(デバッグ対象変更指示)をデバッグ制御部103へ出力する(203)。その指示を受けてデバッグ制御部103は、コアのデータの入替えを行なう(213)。尚、コアデータの入替え方法の詳細については後述する。この入替えの結果、デバッガ108は、デバッグ制御部103を介して停止したコア0_104のレジスタ情報を参照及び更新する(204)。この時、コア0_104のレジスタ情報は、デバッグ対象のコアのレジスタ情報となっている。
(3)ステップ実行
ステップ実行を行なう場合、デバッガ108は、デバッグ作業者からの指示に応じて、ステップ実行の指示(ステップ実行指示)をデバッグ制御部103へ出力する(205)。その指示を受けてデバッグ制御部103は、ステップ実行するステップ数を設定し、実行モードへ移行する(214)。コア0_104は、214で設定したステップ数だけプログラムを実行(222)し、その後、停止し(223)、デバッグ制御部103へ停止したことを通知する。
通知を受けたデバッグ制御部103は、モードをデバッグモードへ移行し(215)、デバッガ108へデバッグモードに移行したことを通知する。通知を受けたデバッガ108は、デバッグ制御部103を介して、ステップ実行後のコア0_104のレジスタ情報を参照及び更新する(206)。
(4)プログラムの再開
プログラムを再開させる場合、デバッガ108は、デバッグ作業者からの指示に応じて、プログラムの再開の指示(プログラム再開指示)をデバッグ制御部103へ出力する(207)。その指示を受けてデバッグ制御部103は、実行モードへ移行(216)し、コア0_104からコア3_107にプログラムの実行を再開させる(224)。
コア0_104で動作しているプログラムがブレークポイントの命令アドレスに到達したとき、コア0_104は停止し(225)、デバッグ制御部103へ停止したことを通知する。通知を受けたデバッグ制御部103は、モードをデバッグモードに移行し(217)、全てのコアを停止させ、デバッガ108へ停止したことを通知する。
通知を受けたデバッガ108は、デバッグ制御部103を介して、コア0_104のレジスタ情報を参照及び更新する(208)。尚、225でブレークポイントに到達しなければ、コア0_104からコア3_107はプログラムの実行終了まで動作を続ける。この処理を繰り返すことで、コア0_104にデバッグ対象のコアの固有データを転送する処理を実現する。
図5は、本実施の形態1にかかるプロセッサのコアのデータ入れ替え処理の流れを示すフローチャートである。図5は、図4の213のコアデータ入れ替え処理に相当する。まず、デバッグ制御部103は、コア0_104のレジスタ情報1040を参照し、デバッグ対象のコアの固有データであるか否かを判定する(401)。ここで、レジスタ情報1040内には、元のコアの識別情報が含まれるものとする。そして、デバッグ対象のコアの固有データでないと判定した場合、コア0_104は、各コアに対して隣接するコアへ固有データを転送するように指示する(402)。そして、401へ戻る。401において、デバッグ対象のコアの固有データであると判定した場合、デバッグ制御部103から参照及び更新可能なレジスタ情報が、デバッグ対象のコアであるため、コアデータ入れ替え処理を終了する。つまり、コア0_104にデバッグ対象のコアの固有データが転送されるまで、リング状に接続されたコア間で固有データが隣のコアへ転送され、バケツリレーのようにデバッグ対象のコアの固有データがコア0_104へ転送される。
このように、本実施の形態では、複数のコアのうち一つのデバッグ用コアに対してデバッグ制御部がレジスタ情報を参照及び更新可能である。そして、コア同士をリング状に接続し、コア固有のデータであるレジスタ情報をコア間で転送可能としている。そのため、デバッグ制御部が参照等できないコアのレジスタ情報であっても、デバッグ用コアへ順次転送することで、デバッグ用コア上で実質的にデバッグ対象のコア上で動作するプログラムの箇所のデバッグを実現できる。そして、デバッグ制御部が一つで良いため、コア数が多い場合であっても、プロセッサの実装サイズを小さく抑えることができる。
尚、本実施の形態は次のように表現することもできる。すなわち、マルチプロセッサは、複数のコアと、デバッグ制御部と、を備える。前記複数のコアのうち一部は、前記デバッグ制御部からレジスタ情報を参照及び更新可能に接続されたデバッグ用コアである。前記デバッグ制御部は、前記複数のコアのうちデバッグ対象である第1のコア内のレジスタ情報を、前記デバッグ用コアに転送する。これにより、プロセッサコアの数の増加に対して、実装サイズの増加を抑制することができる。
また、前記デバッグ用コアは、前記転送されたレジスタ情報を用いて、前記第1のコアで実行対象のプログラムのデバッグを行う。これにより、実質的に第1のコアでのデバッグを行うことができる。
前記複数のコアは、リング状に接続され、前記デバッグ制御部は、前記デバッグ用コア内のレジスタ情報が、デバッグ対象の前記第1のコアのものでない場合、当該レジスタ情報を当該デバッグ用コアと隣接するコアへ転送する。これにより、デバッグ制御部が直接、参照及び更新できないレジスタ情報であってもデバッグ用コアを介して参照及び更新することができる。
<実施の形態2>
本実施の形態2は、上述した実施の形態1の改良例である。本実施の形態2にかかるマルチプロセッサは、退避領域をさらに備え、前記デバッグ制御部は、前記デバッグ用コア内のレジスタ情報を前記退避領域へ転送した後に、前記第1のコア内のレジスタ情報を、前記デバッグ用コアに転送するものである。これにより、実施形態1と比べて、データ入れ替え処理時間を均一化できるため、デバッグ時の動作の平均速度を高速化できる。
図6は、本実施の形態2にかかるマルチプロセッサ101a及びデバッガシステム102の構成を示すブロック図である。マルチプロセッサ101aは、デバッグ制御部103と、コア0_104と、コア1_105と、コア2_106と、コア3_107と、退避領域501とを備える。退避領域501は、コア固有データであるレジスタ情報を保持することが可能な記憶領域である。ここで、コア0_104からコア3_107と退避領域501とは、それぞれがバスで接続されている。つまり、任意のコア間のコア固有データの転送が可能であり、任意のコアと退避領域501との間のコア固有データの転送が可能である。
尚、デバッグ時の処理フローは概ね実施の形態1の図4と同等であるが、213のコアのデータ入れ替え処理が異なる。図7は、本実施の形態2にかかるプロセッサのコアのデータ入れ替え処理の流れを示すフローチャートである。図7は、退避領域501を用いて、コア0_104の固有データとデバッグ対象のコアの固有データとを交換する手順である。
まず、デバッグ制御部103は、接続されているコア0_104のレジスタ情報がデバッグ対象のコアの固有データであるか否かを判定し、データの入れ替えを行うか否かを判定する(601)。データの入れ替えを行うと判定した場合、デバッグ制御部103は、コア0_104内のレジスタ情報を退避領域501へコピーして、データを退避する(602)。次に、デバッグ制御部103は、デバッグ対象のコアのレジスタ情報をコア0_104へコピーするように指示を行う(603)。つまり、デバッグ制御部103は、デバッグ対象のコアの固有データをデバッグ用コアへ転送する。そして、デバッグ制御部103は、退避領域501に格納されているデータをデバッグ対象のコアへコピーするように指示を行う(604)。つまり、退避データをデバッグ対象のコアへ転送する。尚、601において、コア0_104のレジスタ情報がデバッグ対象のコアの固有データであると判定した場合、データ入れ替え処理を終了する。
このように、本実施の形態2では、デバッグ用コアの元の固有データを退避する退避領域501と、各コア同士の間を接続し、各コアと退避領域501との間を接続するバスを有する。上述した実施の形態1では、コア数が多く、かつ、デバッグ対象のコアが、デバッグ用コアから離れた場所に存在する場合に、データの入れ替え回数(転送回数)が多くなり、デバッグ時の動作が遅くなる可能性がある。これに対し、本実施の形態2では、データの入れ替え処理におけるデータ転送回数が3回となるため、データ入れ替え処理時間を均一化できる。よって、実施の形態1と比べてデバッグ時の動作の平均速度を高速化できる。
<実施の形態3>
本実施の形態3は、上述した実施の形態2の改良例である。本実施の形態3にかかるデバッグ制御部は、デバッグ対象を前記複数のコアのうち第2のコアに変更した場合、前記デバッグ用コア内のレジスタ情報を前記第1のコアへ転送し、前記第2のコア内のレジスタ情報を、前記デバッグ用コアに転送するものである。これにより、実施形態2と比べて、コアのデータ入れ替え処理を高速化できる。
また、前記デバッグ制御部は、デバッグ対象を前記第2のコアに変更した場合、前記デバッグ用コア内のレジスタ情報が書き換えられているか否かを判定し、前記デバッグ用コア内のレジスタ情報が書き換えられていると判定した場合に、当該レジスタ情報を前記第1のコアへ転送する。これにより、レジスタ情報が書き換えられていない場合には、レジスタ情報の転送を行わないため、転送回数を減少することができ、さらに高速化できる。
尚、構成図は実施の形態2の図6と同様であり、デバッグ時の処理フローは概ね実施の形態1の図4と同等である。但し、図4の213のコアのデータ入れ替え処理、並びに、211及び216の実行モード移行時の処理が異なる。
上述した実施の形態2では、デバッグ対象のコアの変更時に、図7の602、603及び604の3回のデータ転送が常に必要となる。つまり、実施の形態2では、デバッグ用コアのコア0_104と、デバッグ対象のコアとの間でデータを交換していた。これに対し、本実施の形態3では、デバッグ対象のコアを複数回入れ替える場合を想定する。まず、コア0_104の固有データを退避領域501に退避しておき、デバッグ対象のコアの固有データをコア0_104へ転送する。そして、コア0_104のレジスタ情報を読み書きした後に、当該レジスタ情報であるコア固有データを元のデバッグ対象のコアへ書き戻す。
図8は、本実施の形態3にかかるマルチプロセッサ101aのコアのデータ入れ替え処理の流れを示すフローチャートである。まず、デバッグ制御部103は、デバッグ対象がコア0_104であるか否かを判定する(701)。デバッグ対象がコア0_104であれば702へ進み、異なれば706へ進む。
701においてデバッグ対象がコア0_104である場合、デバッグ制御部103は、コア0_104内のレジスタ情報がコア0_104の固有データであるか否かを判定する(702)。コア0_104内のレジスタ情報がコア0_104の固有データであれば、当該処理を終了する。その理由は、コア0_104にあるレジスタ情報がコア0_104の固有データであり、コア0_104の固有データでデバッグを行なうことができるため、入れ替える必要がないためである。
一方、702において、コア0_104内のレジスタ情報がコア0_104の固有データでない場合、デバッグ制御部103は、コア0_104のレジスタ情報に対してデバッガ108から書き換えているか否かを判定する(703)。ここで、デバッガ108は、デバッグ制御部103を介してコア0_104のレジスタ情報の書き換え(更新)を行う。そのため、デバッグ制御部103は、レジスタ情報の書き換え有無を判定することができる。
703において、書き換えていなければ、705へ進む。その理由は、書き換えられていなければ、コア0_104にあるレジスタ情報と、元のデバッグ対象のコアのレジスタ情報とが同じであるので、書き戻す必要はなくデバッグが行えるためである。
一方、703において、コア0_104のレジスタ情報に対してデバッガ108から書き換えている場合、デバッグ制御部103は、コア0_104で書き換えられたレジスタ情報を元のデバッグ対象のコアへ転送して、戻す(704)。
その後、デバッグ制御部103は、退避領域501に退避しておいたコア0_104のレジスタ情報(固有データ)をコア0_104へ転送する(705)。
続いて、701においてデバッグ対象がコア0_104でない場合、デバッグ制御部103は、コア0_104内のレジスタ情報がコア0_104の固有データであるか否かを判定する(706)。コア0_104内のレジスタ情報がコア0_104の固有データであれば、710へ進み、固有データでなければ707へ進む。
706において、コア0_104内のレジスタ情報がコア0_104の固有データでない場合、デバッグ制御部103は、コア0_104のレジスタ情報に対してデバッガ108から書き換えているか否かを判定する(707)。
707において、書き換えていなければ、705へ進む。その理由は、書き換えられていなければ、コア0_104にあるレジスタ情報と、元のデバッグ対象のコアのレジスタ情報とが同じであるので、書き戻す必要はなくデバッグが行えるためである。
一方、707において、コア0_104のレジスタ情報に対してデバッガ108から書き換えている場合、デバッグ制御部103は、コア0_104で書き換えられたレジスタ情報を元のデバッグ対象のコアへ転送して、戻す(708)。
その後、デバッグ制御部103は、退避領域501に退避しておいたコア0_104のレジスタ情報(固有データ)をコア0_104へ転送する(709)。
706において、コア0_104内のレジスタ情報がコア0_104の固有データである場合、デバッグ制御部103は、コア0_104のレジスタ情報を退避領域501へコピーして退避する(710)。その後、709へ進む。
ここで、図8のフローを用いたデバッグの例を説明する。具体的には、コア1_105をデバッグ対象にしてコア1_105の固有データを読み出し、その後、コア2_106をデバッグ対象にしてコア2_106の固有データを読み出す例である。
まず、701では、デバッグ対象がコア1_105であるため706へ進む。次に、706では、コア0_104にあるレジスタ情報がコア0_104の固有データであるので710へ進む。そして、710において、コア0_104の固有データが退避領域501へ退避される。
その後、709へ進み、デバッグ対象のコア1_105の固有データがコア0_104へ転送される。これにより、コア1_105の固有データを対象にコア0_104に接続されたデバッグ制御部103を介してデバッガ108が固有データの読み出しを行なうことが出来る。そして、ここまでのデータ転送の回数は2回となる。
その後、コア2_106をデバッグ対象にすると、701では、デバッグ対象がコア2_106であるので706へ進む。そして、コア0_104にあるレジスタ情報がコア1_105の固有データであるので、707へ進む。
707では、コア0_104にあるコア1_105の固有データは書き換えていないため、709へ進む。そして、709において、コア2_106の固有データがコア0_104へ転送される。
これにより、コア2_106の固有データを対象にコア0_104に接続されたデバッグ制御部103を介したデバッガ108が固有データの読み出しを行なうことが出来る。そして、デバッグ対象をコア1_105からコア2_106へ変更するときのデータ転送の回数は1回となる。
図8のフローでデバッグ対象のコアのデータを入れ替えた場合、コア0_104の固有データは退避領域501だけにしかない。よって、プログラムを再実行するためには、退避データをコア0_104へ転送する必要がある。そこで、図9は、本実施の形態3にかかるプロセッサのプログラムの再実行前の処理の流れを示すフローチャートである。
まず、デバッグ制御部103は、コア0_104のレジスタ情報に対してデバッガ108から書き換えているか否かを判定する(801)。801において、書き換えていなければ、803へ進む。一方、801において、コア0_104のレジスタ情報に対してデバッガ108から書き換えている場合、デバッグ制御部103は、コア0_104で書き換えられたレジスタ情報を元のデバッグ対象のコアへ転送して、戻す(802)。
その後、デバッグ制御部103は、退避領域501に退避しておいたコア0_104のレジスタ情報(固有データ)をコア0_104へ転送する(803)。これにより、全てのコアの固有データを戻すことができ、プログラムの再実行が可能になる。
上述したように、実施の形態2では、デバッグ対象のコアの固有データとコア0_104の固有データとを入れ替えるために、常に3回のデータ転送を行なっている。これに対し、本実施の形態3では、コア内のレジスタ情報を参照及び更新する場合のみであれば、退避領域501への転送と、デバッグ対象のコアからコア0_104への転送の2回で十分である。また、さらに別のデバッグ対象のコアに変更する場合、コア0_104にあるデバッグ対象のコアの固有データに書き換えがなければ1回の転送で済み、また、書き換えがあっても2回の転送で済む。
但し、プログラムを再実行させる場合、退避領域501からコア0_104へのデータ転送が必要になり、コア0_104にあるデバッグ対象のコアの固有データに書き換えがなければ1回の転送、また、書き換えがあれば2回の転送が追加で必要になる。つまり、デバッグ対象を変更し、プログラムを再実行する場合では、最大4回のデータ転送が必要にある場合がある。
本実施の形態3は、プログラム停止時において、複数のコア内のデータを参照する場合に有効であり、データの転送回数を実施の形態2よりも削減することで、デバッグ時の動作を高速化することができる。
<実施の形態4>
本実施の形態4は、上述した実施の形態1から3の変形例である。すなわち、実施の形態1乃至3のいずれかのマルチプロセッサと、前記複数のコアの夫々に対応し、各コア内のレジスタ情報を記憶するための複数の退避領域を有するメモリと、を備えるマルチプロセッサシステムである。つまり、コアのレジスタ情報の退避領域に既存のメモリを利用するものである。
図10は、本実施の形態4にかかるマルチプロセッサシステム100の構成を示すブロック図である。マルチプロセッサシステム100は、マルチプロセッサ101bと、メモリ901とを備える。マルチプロセッサ101bは、デバッグ制御部103と、コア0_104と、コア1_105と、コア2_106と、コア3_107とを備える。コア0_104からコア3_107とメモリ901とは、それぞれがバスで接続されている。
メモリ901は、マルチプロセッサ101bに対する外付けのメモリ装置であり、プログラム等(不図示)が格納されている。さらに、メモリ901は、コア0データ902、コア1データ903、コア2データ904、及びコア3データ905が格納されている。コア0データ902は、コア0_104のレジスタ情報がコピーされたデータである。同様に、コア1データ903はコア1_105のレジスタ情報が、コア2データ904はコア2_106のレジスタ情報が、コア3データ905はコア3_107のレジスタ情報が、それぞれコピーされたデータである。
デバッグ制御部103は、デバッグ時に各コアに対してレジスタ情報をメモリ901へ退避することを指示する。それにより、デバッグ制御部103は、コア0_104を介してメモリ901内のコア0データ902からコア3データ905に参照及び更新をすることができる。
<その他の実施の形態>
また、上述の実施の形態では、本発明をハードウェアの構成として説明したが、本発明は、これに限定されるものではない。本発明は、任意の処理を、CPU(Central Processing Unit)等のプロセッサにコンピュータプログラムを実行させることにより実現することも可能である。
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
100 マルチプロセッサシステム
101 マルチプロセッサ
101a マルチプロセッサ
101b マルチプロセッサ
102 デバッガシステム
103 デバッグ制御部
104 コア0
105 コア1
106 コア2
107 コア3
108 デバッガ
301 I/F0
302 I/F1
303 I/F2
304 I/F3
1040 レジスタ情報
1041 レジスタ
1042 プログラムカウンタ(PC)
1043 ステータスレジスタ
1044 ブレークポイント
3011 受信バッファ
3012 送信バッファ
501 退避領域
901 メモリ
902 コア0データ
903 コア1データ
904 コア2データ
905 コア3データ

Claims (4)

  1. 複数のコアと、
    デバッグ制御部と、
    退避領域と、
    を備えるマルチプロセッサであって、
    前記複数のコアのうち一部は、
    前記デバッグ制御部からレジスタ情報を参照及び更新可能に接続されたデバッグ用コアであり、
    前記デバッグ制御部は、
    前記デバッグ用コア内のレジスタ情報を前記退避領域へ転送した後に、前記複数のコアのうちデバッグ対象である第1のコア内のレジスタ情報を、前記デバッグ用コアに転送する
    マルチプロセッサ。
  2. 前記デバッグ制御部は、
    デバッグ対象を前記複数のコアのうち第2のコアに変更した場合、前記デバッグ用コア内のレジスタ情報を前記第1のコアへ転送し、
    前記第2のコア内のレジスタ情報を、前記デバッグ用コアに転送する
    請求項に記載のマルチプロセッサ。
  3. 前記デバッグ制御部は、
    デバッグ対象を前記第2のコアに変更した場合、前記デバッグ用コア内のレジスタ情報が書き換えられているか否かを判定し、
    前記デバッグ用コア内のレジスタ情報が書き換えられていると判定した場合に、当該レジスタ情報を前記第1のコアへ転送する
    請求項に記載のマルチプロセッサ。
  4. 複数のコアと、
    デバッグ制御部と、
    を備えるマルチプロセッサであって、
    前記複数のコアのうち一部は、
    前記デバッグ制御部からレジスタ情報を参照及び更新可能に接続されたデバッグ用コアであり、
    前記デバッグ制御部は、
    前記複数のコアのうちデバッグ対象である第1のコア内のレジスタ情報を、前記デバッグ用コアに転送し、
    前記複数のコアは、リング状に接続され、
    前記デバッグ制御部は、
    前記デバッグ用コア内のレジスタ情報が、デバッグ対象の前記第1のコアのものでない場合、当該レジスタ情報を当該デバッグ用コアと隣接するコアへ転送する
    マルチプロセッサ。
JP2016230039A 2016-11-28 2016-11-28 マルチプロセッサ Active JP6744806B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2016230039A JP6744806B2 (ja) 2016-11-28 2016-11-28 マルチプロセッサ
TW106132524A TW201820169A (zh) 2016-11-28 2017-09-22 多工處理器及多工處理器系統
EP17195337.5A EP3327573B1 (en) 2016-11-28 2017-10-06 Multi-processor and multi-processor system
US15/792,480 US10489271B2 (en) 2016-11-28 2017-10-24 Multi-processor and multi-processor system for code debugging
CN201711202502.2A CN108121686B (zh) 2016-11-28 2017-11-27 多处理器和多处理器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016230039A JP6744806B2 (ja) 2016-11-28 2016-11-28 マルチプロセッサ

Publications (2)

Publication Number Publication Date
JP2018088048A JP2018088048A (ja) 2018-06-07
JP6744806B2 true JP6744806B2 (ja) 2020-08-19

Family

ID=60043048

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016230039A Active JP6744806B2 (ja) 2016-11-28 2016-11-28 マルチプロセッサ

Country Status (5)

Country Link
US (1) US10489271B2 (ja)
EP (1) EP3327573B1 (ja)
JP (1) JP6744806B2 (ja)
CN (1) CN108121686B (ja)
TW (1) TW201820169A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108897714B (zh) * 2018-07-03 2022-05-24 中国人民解放军国防科技大学 一种区域自治的多核或众核处理器芯片
US10824540B2 (en) 2018-12-28 2020-11-03 Datalogic Ip Tech S.R.L. Terminal failure buster
JP7378254B2 (ja) * 2019-09-19 2023-11-13 キヤノン株式会社 マルチプロセッサデバイス
CN116340188B (zh) * 2023-05-26 2023-08-04 深流微智能科技(深圳)有限公司 Gpu芯片渲染任务的调试方法及系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08147189A (ja) * 1994-11-25 1996-06-07 Hitachi Ltd 並列計算機のオペレーティングシステムのデバッグ方法
JP2000076199A (ja) 1998-08-28 2000-03-14 Nec Corp デバッグ端子を有するマルチプロセッサ装置
KR100802606B1 (ko) * 2001-04-13 2008-02-13 엘지전자 주식회사 데이터의 천이 상태에 따른 디버깅 장치 및 방법
US7080283B1 (en) * 2002-10-15 2006-07-18 Tensilica, Inc. Simultaneous real-time trace and debug for multiple processing core systems on a chip
US20050262396A1 (en) * 2004-04-26 2005-11-24 Agilent Technologies, Inc Apparatus and method for automated test setup
US7627784B1 (en) * 2005-04-06 2009-12-01 Altera Corporation Modular processor debug core connection for programmable chip systems
JP4600134B2 (ja) 2005-04-25 2010-12-15 富士通セミコンダクター株式会社 マルチプロセッサシステム
US7665002B1 (en) * 2005-12-14 2010-02-16 Advanced Micro Devices, Inc. Multi-core integrated circuit with shared debug port
US8533530B2 (en) * 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
CN101710300B (zh) * 2009-11-03 2011-11-02 龙芯中科技术有限公司 实现多核处理器ejtag可调试性的装置及系统
CN102117241A (zh) * 2009-12-30 2011-07-06 华为技术有限公司 一种多核系统调试方法和多核系统
TW201145016A (en) * 2010-06-15 2011-12-16 Nat Univ Chung Cheng Non-intrusive debugging framework for parallel software based on super multi-core framework
TW201235833A (en) * 2011-02-16 2012-09-01 Ind Tech Res Inst System and method for multi-core synchronous debugging of a multi-core platform
EP2690558B1 (en) * 2011-03-24 2020-01-22 Renesas Electronics Corporation Semiconductor device
JP5660010B2 (ja) * 2011-11-21 2015-01-28 トヨタ自動車株式会社 情報処理装置、データ復帰方法
CN102880536B (zh) * 2012-09-07 2015-06-03 杭州中天微系统有限公司 一种多核处理器的jtag调试方法
US9404970B2 (en) * 2014-11-14 2016-08-02 Cavium, Inc. Debug interface for multiple CPU cores

Also Published As

Publication number Publication date
US10489271B2 (en) 2019-11-26
JP2018088048A (ja) 2018-06-07
EP3327573B1 (en) 2023-09-06
EP3327573A1 (en) 2018-05-30
CN108121686A (zh) 2018-06-05
US20180150386A1 (en) 2018-05-31
CN108121686B (zh) 2023-06-09
TW201820169A (zh) 2018-06-01

Similar Documents

Publication Publication Date Title
JP6744806B2 (ja) マルチプロセッサ
CN104598402A (zh) 一种闪存控制器和闪存控制器的控制方法
US9043806B2 (en) Information processing device and task switching method
JP5499987B2 (ja) 共有キャッシュメモリ装置
US9606923B2 (en) Information processing device with shared memory, memory order guarantee method using counters fence instructions in relation to cache-oriented requests, and recording medium storing program
JP2012018626A (ja) メモリ制御装置、メモリ装置および停止制御方法
JP4653838B2 (ja) 演算処理装置、演算処理装置の制御方法及び制御プログラム
WO2017036101A1 (zh) 一种更新寄存器的方法及装置
US10216679B2 (en) Semiconductor device and control method thereof
JP2004151761A (ja) 記憶装置の制御装置、及び記憶装置の制御装置の制御方法
JP2011113240A (ja) 二重化処理装置
WO2007088582A1 (ja) 共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法、非同期遠隔手続き呼び出しプログラムおよび記録媒体
US20080282069A1 (en) Method and system for designing a flexible hardware state machine
US20080133838A1 (en) Data processing device
JP2008158699A (ja) プロセッサ
JP6217386B2 (ja) マルチプロセッサ用プログラム生成方法
JP4747062B2 (ja) デバイスの移行方式、デバイスの移行方法、移行制御装置、及びプログラム
JP2007087244A (ja) コプロセッサ及びコンピュータシステム
JP2023051319A (ja) 制御システムおよび処理装置
JP2012003671A (ja) デバッグ装置、デバッグ方法及びデバッガプログラム
JP2019020896A (ja) プロセッサ及びメモリモジュール
JP2008217659A (ja) Dma転送起動方法
US20130212338A1 (en) Multicore processor
JP5782389B2 (ja) エミュレーションシステム、エミュレーションシステムの制御方法、エミュレーション装置、プログラム
JP2020057251A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190412

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200511

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200731

R150 Certificate of patent or registration of utility model

Ref document number: 6744806

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150