(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024022825
(43)【公開日】2024-02-21
(54)【発明の名称】データ処理装置およびデータ処理装置の制御方法
(51)【国際特許分類】
G06F 13/10 20060101AFI20240214BHJP
【FI】
G06F13/10 330A
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022126190
(22)【出願日】2022-08-08
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100107515
【弁理士】
【氏名又は名称】廣田 浩一
(72)【発明者】
【氏名】川野 博司
(72)【発明者】
【氏名】日下田 雅紀
(57)【要約】
【課題】回路規模の増大を抑制しつつ、簡易な制御によりデータ処理部毎のパケットの処理順序の入れ替えを抑止する。
【解決手段】データ処理装置は、複数のデータ処理部からそれぞれ出力されるパケットが格納される、前記複数のデータ処理部の数より少ない複数のキューと、前記複数のデータ処理部の各々から順次出力される前記パケットを、前記データ処理部毎に前記複数のキューのいずれかに格納するキュー選択回路と、前記複数のキューに対応して設けられ、対応するキューに保持された前記パケットを順次処理する複数の処理回路と、を有する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数のデータ処理部からそれぞれ出力されるパケットが格納される、前記複数のデータ処理部の数より少ない複数のキューと、
前記複数のデータ処理部の各々から順次出力される前記パケットを、前記データ処理部毎に前記複数のキューのいずれかに格納するキュー選択回路と、
前記複数のキューに対応して設けられ、対応するキューに保持された前記パケットを順次処理する複数の処理回路と、を有する
データ処理装置。
【請求項2】
前記パケットを出力した前記データ処理部と、前記パケットが格納された前記キューとの対応付けを保持するキュー管理テーブルを有し、
前記キュー選択回路は、前記データ処理部から出力された前記パケットを格納するキューを、前記キュー管理テーブルを参照することで決定する
請求項1に記載のデータ処理装置。
【請求項3】
前記キュー選択回路は、前記複数のデータ処理部のいずれかから前記パケットを受信した場合、前記キュー管理テーブルを参照し、
前記パケットを発行した前記データ処理部と前記キューとが対応付けられている場合、対応付けられたキューに前記パケットを格納して前記キュー管理テーブルを更新し、
前記パケットを発行した前記データ処理部と前記キューとが対応付けられていない場合、前記複数のキューのいずれかに前記パケットを格納して前記キュー管理テーブルを更新する
請求項2に記載のデータ処理装置。
【請求項4】
前記複数のキューの各々において、最も後に格納された前記パケットを発行した前記データ処理部の識別情報を前記キューに対応付けて保持するキュー管理テーブルを有し、
前記キュー選択回路は、
前記パケットを発行した前記データ処理部の識別情報が前記キュー管理テーブルに保持されている場合、対応するキューに前記パケットを格納し、
前記パケットを発行した前記データ処理部の識別情報が前記キュー管理テーブルに保持されていない場合で、前記識別情報が対応付けられていない空きキューがあることを前記キュー管理テーブルが示す場合、空きキューに前記パケットを格納し、
前記パケットを発行した前記データ処理部の識別情報が前記キュー管理テーブルに保持されていない場合で、前記識別情報が対応付けられていない空きキューがないことを前記キュー管理テーブルが示す場合、前記複数のキューの全てに同期パケットを挿入し、前記キュー管理テーブルに保持された識別情報を消去する
請求項1に記載のデータ処理装置。
【請求項5】
前記キュー選択回路は、前記キュー管理テーブルに保持された識別情報を消去した場合、前記同期パケットの格納より早く前記キューに格納された前記パケットを存在しないものとして扱う
請求項4に記載のデータ処理装置。
【請求項6】
前記複数のキューの各々の先頭に前記パケットが保持されている場合、先頭の前記パケットを対応する前記処理回路に送出し、前記複数のキューの先頭のいずれかに前記同期パケットが保持されている場合、全ての前記キューの先頭に同期パケットが保持されるまで、先頭に前記同期パケットが保持された前記キューの操作を停止するパケット送出回路を有する
請求項4に記載のデータ処理装置。
【請求項7】
前記複数のデータ処理部の各々は、プロセッサコアであり、
前記パケットは、前記プロセッサコアのステータスログ、ヒストリログ、または、ステータスログおよびヒストリログを含む
請求項1ないし請求項6のいずれか1項に記載のデータ処理装置。
【請求項8】
複数のデータ処理部からそれぞれ出力されるパケットが格納される、前記複数のデータ処理部の数より少ない複数のキューを有するデータ処理装置の制御方法であって、
前記データ処理装置に設けられるキュー選択回路が、前記複数のデータ処理部の各々から順次出力される前記パケットを、前記データ処理部毎に前記複数のキューのいずれかに格納し、
前記複数のキューに対応して前記データ処理装置にそれぞれ設けられる複数の処理回路が、対応するキューに保持された前記パケットを順次処理する
データ処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置およびデータ処理装置の制御方法に関する。
【背景技術】
【0002】
複数の入力の各々を複数の待ち行列のいずれかに出力する第1選択装置と、複数の待ち行列の出力のいずれかを選択する第2選択装置とを有するネットワーク装置が知られている(例えば、特許文献1参照)。受信したパケット群を所定のルールに従って分類してキューに保持し、キューに保持した最初のパケットのみをキャッシュミス処理することで、後続のパケットをキャッシュヒットさせるネットワーク装置が知られている(例えば、特許文献2参照)。受信したパケットを優先度に応じて分類して待ち行列に格納し、スケジュール管理手段により待ち行列からパケットを送出するタイミングを決定することで、無線回線を効率的に利用可能にするネットワーク装置が知られている(例えば、特許文献3参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特表2008-532408号公報
【特許文献2】特開2006-135572号公報
【特許文献3】特開2006-67090号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えば、自コアの動作状況の履歴を含むパケットをそれぞれ出力可能な複数のコアを有するプロセッサは、複数のコアから出力されるパケットを共通に保持する1つのキューと、キューに保持されたパケットを処理する1つの処理回路とを有する場合がある。しかしながら、近時、プロセッサに搭載されるコアの数が増える傾向にあり、複数のコアからのパケットが競合すると処理回路による後続のパケットの処理が遅れるおそれがある。パケットの処理の遅れは、キューと処理回路とをコア毎に設けることで解決するが、この場合、プロセッサの回路規模が増大してしまう。
【0005】
1つの側面では、本発明は、回路規模の増大を抑制しつつ、簡易な制御によりデータ処理部毎のパケットの処理順序の入れ替えを抑止することを目的とする。
【課題を解決するための手段】
【0006】
一つの観点によれば、データ処理装置は、複数のデータ処理部からそれぞれ出力されるパケットが格納される、前記複数のデータ処理部の数より少ない複数のキューと、前記複数のデータ処理部の各々から順次出力される前記パケットを、前記データ処理部毎に前記複数のキューのいずれかに格納するキュー選択回路と、前記複数のキューに対応して設けられ、対応するキューに保持された前記パケットを順次処理する複数の処理回路と、を有する。
【発明の効果】
【0007】
回路規模の増大を抑制しつつ、簡易な制御によりデータ処理部毎のパケットの処理順序の入れ替えを抑止することができる。
【図面の簡単な説明】
【0008】
【
図1】一実施形態におけるデータ処理装置の一例を示すブロック図である。
【
図2】
図1のキュー管理テーブルの一例を示す図である。
【
図3】
図1のキュー選択回路の制御により、キューにトレースパケットが順次格納される一例を示す説明図である。
【
図4】
図1のキュー選択回路の動作の一例を示すフロー図である。
【
図5】別の実施形態におけるデータ処理装置の一例を示すブロック図である。
【
図6】
図5のキュー管理テーブルの一例を示す図である。
【
図7】
図5のキューにおけるトレースパケットの入れ出しの一例を示す説明図である。
【
図8】
図5のキュー選択回路の動作の一例を示すフロー図である。
【
図9】
図5の先頭パケット判定回路の動作の一例を示すフロー図である。
【
図10】他のデータ処理装置の一例を示すブロック図である。
【
図11】他のデータ処理装置の別の例を示すブロック図である。
【発明を実施するための形態】
【0009】
以下、図面を参照して、実施形態が説明される。
【0010】
図1は、一実施形態におけるデータ処理装置の一例を示す。
図1に示すデータ処理装置100は、例えば、CPU(Central Processing Unit)等のプロセッサである。データ処理装置100は、n+1個のコア10(10(0)、10(1)、...、10(n))、マルチプレクサ20およびキュー選択回路30を有する。またデータ処理装置100は、4個のキュー50(50(0)、50(1)、50(2)、50(3))および4個の処理回路60(60(0)、60(1)、60(2)、60(3))を有する。コア10は、データ処理部の一例であり、プロセッサコアの一例である。
【0011】
各コア10は、命令を実行することで演算処理を実行するとともに、演算処理の実行時の動作状況の履歴をトレースする機能を有する。例えば、各コア10がトレースする履歴は、ステータスログ、ヒストリログ、またはステータスログおよびヒストリログを含む。そして、各コア10は、トレースした履歴を含むトレースパケットTP(TP0、DP1、...、TPn)を生成し、出力する。
【0012】
特に限定されないが、トレースパケットTPに含まれる履歴により、各コア10が正常に動作しているか否かが評価されてもよい。すなわち、履歴は、コア10のテストまたはデバッグに使用されてもよい。また、複数のコア10は、予め指定された期間または予め指定された命令群を実行する間、トレースパケットTPを生成してもよい。
【0013】
マルチプレクサ20は、複数のコア10からトレースパケットTPを受信した順に、受信したトレースパケットTPをキュー選択回路30に出力する。キュー50の数は、コア10の数より少ない。このため、キュー50は、キュー選択回路30の制御により、複数のコア10で共有される。コアの数より少ない複数のキュー50を複数のコア10で共有することで、キューのオーバーフローを抑制しつつ、キュー50の回路規模を削減することができる。
【0014】
キュー選択回路30は、キュー管理テーブル40を有する。キュー選択回路30は、トレースパケットTPをキュー50に格納する場合、格納したキュー50とトレースパケットTPの発行元のコア10との対応を示す情報をキュー管理テーブル40に格納する。キュー選択回路30は、キュー管理テーブル40を参照し、コア10から受信するトレースパケットTPを格納するキュー50を決定する。キュー選択回路30は、決定したキュー50にトレースパケットTPを格納する。キュー選択回路30の動作の例は、
図3および
図4に示される。
【0015】
キュー管理テーブル40は、各キュー50に保持されたトレースパケットTPを出力したコア10を識別する識別情報をトレースパケットTP毎に保持する。例えば、識別情報は、コア番号である。キュー管理テーブル40に保持された識別情報は、対応するトレースパケットTPがキュー50から処理回路60に送出されたときに、キュー50の制御により消去される。各キュー50からキュー管理テーブル40に接続される信号線は、キュー管理テーブル40に保持された識別情報の消去に使用される。キュー管理テーブル40の例は、
図2に示される。
【0016】
各キュー50は、トレースパケットTPを順次保持する6個のエントリENT(ENT0-ENT5)を有する。例えば、各キュー50は、FIFO(First-In First-Out)である。なお、データ処理装置100は、4個のキュー50(0)-50(3)を有するが、キュー50の数は、コア10の数より少ない任意の複数個であればよい。
【0017】
例えば、キュー50は、対応する処理回路60がトレースパケットTPを受付可能な場合、エントリENTに保持しているトレースパケットTPのうち、最古のトレースパケットTPを処理回路60に送出する。例えば、最古のトレースパケットTPは、エントリENT0に保持されたトレースパケットTPである。キュー50は、処理回路60に送出したトレースパケットTPを出力したコア10の識別情報をキュー管理テーブル40から消去する。
【0018】
図1では、各キュー50は、6個のエントリENTを有するが、エントリENTの数は、複数個であればよい。なお、
図1では簡単化のため、各キュー50が物理的なエントリENT0-ENT5を有し、トレースパケットTPがエントリENT5からエントリENT0に向けて順次シフトするように記載している。しかしながら、例えば、各キュー50は、エントリENT0の位置を示すポインタで管理されるリングバッファ等でもよい。
【0019】
各処理回路60は、対応するキュー50から受信するトレースパケットTPの処理を実施する。例えば、処理回路60は、トレースパケットTPに含まれるパケットの転送先アドレスを、トレースパケットTPの発行元のコア10毎に変換する処理を実施する。
【0020】
なお、例えば、自コアの動作状況の履歴を含むパケットをそれぞれ出力可能な複数のコアと、コアから出力されるパケットを処理する複数の処理回路とを含むプロセッサでは、コアと処理回路との間にパケットを保持する複数のキューが設けられる場合がある。キューの数および処理回路の数がコアの数に近いほどパケットの処理性能は高くなるが、回路規模は大きくなる。
【0021】
キューの数および処理回路の数がコアの数より少なく、1つのコアから出力されたパケットが複数のキューに格納される場合、処理回路でのパケットの処理順序が入れ替わるおそれがある。また、あるコアから出力されたパケットの処理が、他のコアから出力されたパケットの処理に依存して遅れることを抑制するため、各コアから出力されるパケットは、それぞれ同じキューに格納されることが好ましい。
【0022】
図2は、
図1のキュー管理テーブル40の一例を示す。キュー管理テーブル40は、全てのキュー50のエントリENT毎に、使用フラグとコア番号とをキュー管理情報として保持する領域を有する。キュー管理情報は、トレースパケットTPを発行したコア10を識別する識別情報の一例である。使用フラグは、対応するキュー50のエントリENTにトレースパケットTPが保持されているか否かを示す。
【0023】
使用フラグは、エントリENTにトレースパケットTPが格納されたときに、キュー選択回路30によりセットされる。使用フラグは、エントリENTから処理回路60にトレースパケットTPが送出されたときに、キュー50によりリセットする。コア番号は、使用フラグがセットされている場合、対応するキュー50のエントリENTに保持されているトレースパケットTPを出力したコア10を示す。使用フラグがリセットされているコア番号は、無効であり、キュー管理情報の消去状態を示す。
【0024】
図3は、
図1のキュー選択回路30の制御により、キュー50にトレースパケットTPが順次格納される一例を示す。すなわち、
図3は、データ処理装置100の制御方法の一例を示す。
【0025】
状態(a)から状態(o)は、各キュー50(0)-50(3)のトレースパケットTPの保持状態を示す。トレースパケットTPの末尾の数字は、トレースパケットTPを出力したコア10のコア番号を示す。なお、
図3では、説明の簡単化のため、キュー50から処理回路60にトレースパケットTPが送出される動作は省略される。
【0026】
エントリENT中の数字は、トレースパケットTPを出力したコア番号を示し、対応するコア10から出力されたトレースパケットTPがエントリENTに保持されていることを示す。また、状態(a)から状態(o)は、キュー管理テーブル40の状態も示している。初期状態(状態(a)になる前)において、全てのキュー50は空き状態である。
【0027】
まず、状態(a)において、キュー選択回路30は、コア10(0)からトレースパケットTP0を受信する。キュー選択回路30は、キュー管理テーブル40を検索し、コア10(0)から出力された他のトレースパケットTP0がキュー50のいずれにも保持されていないと判定する。この場合、キュー選択回路30は、任意のキュー50(この例では、キュー50(0))にトレースパケットTP0を格納する。例えば、キュー選択回路30は、乱数を用いて任意のキュー50を選択し、または、格納されているトレースパケットTPの数が最も少ないキュー50を選択する。キュー選択回路30は、トレースパケットTPを格納するキュー50およびエントリENTに対応付けて、トレースパケットTPの発行元のコア10の番号をキュー管理テーブル40に格納する。なお、キュー管理テーブル40へのコア番号の格納は、使用フラグのセットを含む。
【0028】
次に、状態(b)において、キュー選択回路30は、コア10(1)からトレースパケットTP1を受信する。キュー選択回路30は、キュー管理テーブル40を検索し、コア10(1)から出力された他のトレースパケットTP1がキュー50のいずれにも保持されていないと判定する。このため、キュー選択回路30は、トレースパケットTPを保持していない空のキュー50(1)にトレースパケットTP1を格納する。キュー選択回路30は、トレースパケットTPを格納するキュー50およびエントリENTに対応付けて、トレースパケットTPの発行元のコア10の番号をキュー管理テーブル40に格納する。以下では、キュー選択回路30によるキュー管理テーブル40の更新動作の説明は省略する。
【0029】
次に、状態(c)において、キュー選択回路30は、コア10(0)からトレースパケットTP0を受信する。キュー選択回路30は、キュー管理テーブル40を検索し、コア10(0)から出力された他のトレースパケットTP0がキュー50(0)に保持されていると判定する。この場合、キュー選択回路30は、コア10(0)からのトレースパケットTP0が既に格納されているキュー50(0)に、新たに受信したトレースパケットTP0を格納する。
【0030】
次に、状態(d)において、キュー選択回路30は、コア10(5)からトレースパケットTP5を受信する。キュー選択回路30は、キュー管理テーブル40を参照し、コア10(5)から出力された他のトレースパケットTP5を保持するキュー50がないため、状態(b)と同様に、任意の空のキュー50(2)にトレースパケットTP5を格納する。状態(e)においても、キュー選択回路30は、状態(d)と同様に、コア10(2)から受信したトレースパケットTP2を空きのキュー50(3)に格納する。
【0031】
次に、状態(f)において、キュー選択回路30は、コア10(1)からトレースパケットTP1を受信する。キュー選択回路30は、キュー管理テーブル40を検索し、コア10(1)から出力された他のトレースパケットTP1がキュー50(1)に保持されていると判定する。このため、キュー選択回路30は、状態(c)と同様に、コア10(1)から受信したトレースパケットTP1をキュー50(1)に格納する。
【0032】
次に、状態(g)において、キュー選択回路30は、コア10(3)からトレースパケットTP3を受信する。キュー選択回路30は、キュー管理テーブル40を検索し、コア10(3)から出力された他のトレースパケットTP3がキュー50のいずれにも保持されていないと判定する。このため、キュー選択回路30は、例えば、任意のキュー50にトレースパケットTP3を格納する。この例では、キュー選択回路30は、格納されているパケットTPの数が最も少ないキュー50(2)、50(3)のうち、キュー50(2)にトレースパケットTP3を格納する。
【0033】
次に、状態(h)において、キュー選択回路30は、コア10(5)からトレースパケットTP5を受信する。キュー選択回路30は、キュー管理テーブル40を検索し、コア10(5)から出力された他のトレースパケットTP5が保持されているキュー50(2)に、新たにトレースパケットTP5を格納する。状態(i)においても、キュー選択回路30は、状態(c)、(h)と同様に、コア10(0)から新たに受信したトレースパケットTP0をキュー50(0)に格納する。
【0034】
次に、状態(j)において、キュー選択回路30は、コア10(4)からトレースパケットTP4を受信する。キュー選択回路30は、キュー管理テーブル40を検索し、コア10(3)から出力された他のトレースパケットTP4がキュー50のいずれにも保持されていないと判定する。このため、キュー選択回路30は、例えば、格納されているパケットTPの数が最も少ないキュー50(3)にトレースパケットTP4を格納する。
【0035】
次に、状態(k)において、キュー選択回路30は、コア10(6)からトレースパケットTP6を受信する。トレースパケットTP6は、キュー50のいずれにも保持されていない。このため、キュー選択回路30は、格納されているパケットTPの数が最も少ないキュー50(1)、50(3)のうち、キュー50(1)にトレースパケットTP6を格納する。
【0036】
状態(l)から状態(o)においても、キュー選択回路30は、各コア10から受信したトレースパケットTPを、同じコア10から出力されたトレースパケットTPが既に保持されているキュー50に、新たに受信したトレースパケットTPを格納する。
【0037】
例えば、状態(o)において、各コア10から出力されたトレースパケットTPは、複数のキュー50のいずれか1つにまとまって保持されている。複数の処理回路60の各々は、対応するキュー50に保持されたトレースパケットTPを、キュー50に保持された順に1つずつ処理する。
【0038】
このため、データ処理装置100の回路規模の増大を抑制しつつ、キュー選択回路30による簡易な制御により、コア10毎のトレースパケットTPの処理順序が入れ替わることを抑止することができる。また、各キュー50は、独立に動作し、対応する処理回路60にトレースパケットTPを送出するため、異なるコア10間のトレースパケットTPの追い越しを可能にすることができる。
【0039】
図4は、
図1のキュー選択回路30の動作フローの一例を示す。すなわち、
図4は、データ処理装置100の制御方法の一例を示す。
図4に示す動作は、キュー選択回路30がコア10のいずれかからトレースパケットTPを受信する毎に実行される。
【0040】
まず、ステップS100において、キュー選択回路30は、トレースパケットTPに含まれる識別情報等に基づいて、トレースパケットTPを出力したコア10の番号を取得する。次に、ステップS102において、キュー選択回路30は、キュー管理テーブル40を検索する。
【0041】
次に、ステップS104において、キュー選択回路30は、ステップS100で取得したコア番号のコア10から出力されたトレースパケットTPを保持したキュー50があるか否かを判定する。キュー選択回路30は、同じコア10からのトレースパケットTPを保持しているキュー50がある場合、ステップS106を実行する。キュー選択回路30は、同じコアからのトレースパケットTPを保持しているキュー50がない場合、ステップS108を実行する。
【0042】
ステップS106において、キュー選択回路30は、同じコア10からのトレースパケットTPを保持しているキュー50を選択し、ステップS110を実行する。ステップS108において、キュー選択回路30は、任意のキュー50を選択し、ステップS110を実行する。
【0043】
ステップS110において、キュー選択回路30は、トレースパケットTPを格納するキュー50に応じて、キュー管理テーブル40を更新する。例えば、キュー選択回路30は、受信したトレースパケットTPの発行元のコア10のコア番号を、トレースパケットTPの格納先のキュー50のエントリENTに対応するキュー管理テーブル40の領域に格納し、使用フラグをセットする。次に、ステップS112において、キュー選択回路30は、コア10から受信したトレースパケットTPをステップS106またはステップS108で選択したキュー50に格納し、
図4に示す動作を終了する。
【0044】
以上、この実施形態では、キュー選択回路30は、コア10から受信したトレースパケットTPを、コア10毎に、コア10の数より少ないキュー50のいずれかに格納する。複数のキュー50にそれぞれ対応して設けられる処理回路60は、キュー50に保持されたトレースパケットTPを順次処理する。これにより、データ処理装置100の回路規模の増大を抑制しつつ、簡易な制御によりコア10毎のトレースパケットTPの処理順序の入れ替えを抑止することができる。また、各キュー50は、独立に動作し、対応する処理回路60にトレースパケットTPを送出するため、異なるコア10間のトレースパケットTPの追い越しを可能にすることができる。
【0045】
キュー管理テーブル40は、トレースパケットTPを出力したコア10とトレースパケットTPが格納されたキュー50との対応付けを保持する。キュー選択回路30は、キュー管理テーブル40を参照することで、トレースパケットTPを発行したコア10とキュー50とが対応付けられているか否かを判定する。これにより、簡易なキュー選択回路30により、各トレースパケットTPを格納する適切なキュー50を決定することができる。
【0046】
図5は、別の実施形態におけるデータ処理装置の一例を示す。
図1と同一または同様の要素については、同じ符号を付し、詳細な説明は省略する。
図5に示すデータ処理装置100Aは、例えば、CPU等のプロセッサである。データ処理装置100Aは、
図1のキュー選択回路30の代わりにキュー選択回路30Aを有し、新たに先頭パケット判定回路70Aを有する。
【0047】
データ処理装置100Aのその他の構成は、
図1のデータ処理装置100と同様である。すなわち、データ処理装置100Aにおいても、
図1のデータ処理装置100と同様に、キュー50の数は、コア10の数より少なく、キュー50は、キュー選択回路30Aの制御により、複数のコア10で共有される。キュー選択回路30Aは、
図1のキュー管理テーブル40の代わりにキュー管理テーブル40Aを有する。
【0048】
キュー管理テーブル40Aは、最も後に格納された最新のトレースパケットTPの発行元のコア10を識別するコア番号をキュー50毎に保持する。キュー管理テーブル40Aの例は、
図6に示される。以下では、エントリENT0は、先頭エントリENT0とも称される。
【0049】
キュー選択回路30Aは、
図1のキュー選択回路30の機能に加えて、受信したトレースパケットTPを出力したコア10と異なるコア10からのトレースパケットTPが、全てのキュー50に保持されているか否かを判定する機能を有する。そして、キュー選択回路30Aは、受信したトレースパケットTPを出力したコア10と異なるコア10からのトレースパケットTPが、全てのキュー50に保持されている場合、全てのキュー50に同期パケットSを格納する。なお、キュー選択回路30Aによるキュー管理テーブル40Aの更新動作は、キュー管理テーブル40Aの構成がキュー管理テーブル40の構成と異なることを除き、キュー選択回路30Aによるキュー管理テーブル40Aの更新動作と同様である。キュー選択回路30Aの動作の例は、
図7および
図8に示される。
【0050】
先頭パケット判定回路70Aは、各キュー50の先頭エントリENT0が保持しているトレースパケットTPを監視し、トレースパケットTPの処理回路60への送出を制御する。先頭パケット判定回路70Aは、各キュー50から各処理回路60へのトレースパケットTPの送出を制御するパケット送出回路の一例である。
【0051】
先頭パケット判定回路70Aは、キュー50のいずれかの先頭エントリENT0が同期パケットSを保持した場合、全ての先頭エントリENT0が同期パケットSを保持するまで、先頭エントリENT0に同期パケットSを保持しているキュー50の操作を停止する。すなわち、先頭パケット判定回路70Aは、全ての先頭エントリENT0が同期パケットSを保持するまで、先頭エントリENT0に同期パケットSを保持するキュー50から処理回路60へのトレースパケットTPの送出を抑止する。先頭パケット判定回路70Aは、全てのキュー50の先頭エントリENT0が同期パケットSを保持した場合、エントリENT0に保持された同期パケットSを消去する。先頭パケット判定回路70Aの動作の例は、
図9に示される。
【0052】
図6は、
図5のキュー管理テーブル40Aの一例を示す。
図2と同じ要素については、詳細な説明は省略する。キュー管理テーブル40Aは、キュー50毎に、使用フラグとコア番号とをキュー管理情報として保持する領域を有する。例えば、キュー管理テーブル40Aの各領域は、キュー50毎に、最も後に格納された最新のトレースパケットTPの発行元のコア10を識別するコア番号を保持する。使用フラグの用途は、
図2のキュー管理テーブル40の使用フラグの用途と同じである。
【0053】
図7は、
図5のキュー50におけるトレースパケットTPの入れ出しの一例を示す。すなわち、
図7は、データ処理装置100Aの制御方法の一例を示す。
図7に示す動作は、キュー50に同期パケットSが格納されることと、キュー管理テーブル40Aの状態が追加されたことを除き、
図3に示した動作と同様である。
【0054】
状態(a)の直前の状態では、コア10(0)から出力された2個のトレースパケットTP0がキュー50(0)に格納され、コア10(1)から出力された4個のトレースパケットTP1がキュー50(1)に格納されている。また、コア10(3)から出力された4個のトレースパケットTPがキュー50(3)に格納されている。キュー50(2)は、トレースパケットTPが格納されておらず、空き状態である。
【0055】
そして、状態(a)において、キュー選択回路30Aは、コア10(2)からトレースパケットTP2を受信する。キュー選択回路30Aは、キュー管理テーブル40Aを検索し、トレースパケットTP2の発行元のコア10(2)から出力された他のトレースパケットTP2を保持しているキュー50がないことを判定する。また、キュー選択回路30Aは、トレースパケットTPを保持していない空のキュー50(2)があることを検出する。
【0056】
この場合、キュー選択回路30Aは、キュー管理テーブル40Aのキュー50(2)に対応する領域に、コア10(2)を示すコア番号="2"を格納する。なお、キュー管理テーブル40Aへのコア番号の格納は、使用フラグのセットを含む。そして、キュー選択回路30Aは、キュー50(2)にトレースパケットTP2を格納する。これにより、全てのキュー50にトレースパケットTPが格納された状態になる。
【0057】
次に、状態(b)において、キュー選択回路30Aは、コア10(4)からトレースパケットTP4を受信する。キュー選択回路30Aは、キュー管理テーブル40Aを検索し、トレースパケットTP4の発行元のコア10(4)と異なるコア10からのトレースパケットTPが、全てのキュー50に保持されていると判定する。
【0058】
このため、キュー選択回路30Aは、全てのキュー50に同期パケットSを格納する。また、キュー選択回路30Aは、キュー管理テーブル40Aをクリアする。これにより、キュー管理テーブル40Aで示されるキュー50の見かけ上の状態は、キュー50のいずれにもトレースパケットTPが保持されていない状態になる。
【0059】
そして、キュー選択回路30Aは、見かけ上、全てが空き状態のキュー50のいずれかにトレースパケットTP4を格納する。例えば、キュー選択回路30Aは、コア10(4)から受信したトレースパケットTPをキュー50(0)に格納し、キュー管理テーブル40Aのキュー50(0)に対応する領域に、コア10(4)を示すコア番号="4"を格納する。
【0060】
このように、キュー選択回路30Aは、クリアしたキュー管理テーブル40Aを使用して、トレースパケットTP4およびこれ以降にコア10から出力されるトレースパケットTPをキュー50のいずれかに格納する制御を実行することができる。また、キュー管理テーブル40Aは、エントリENTに対応する情報を保持しないため、各キュー50は、トレースパケットTPを処理回路60に送出する場合、使用フラグをリセットしない。使用フラグは、キュー管理テーブル40Aをクリアするときにキュー選択回路30Aによりリセットされる。このため、
図1と異なり、コア10の識別情報の消去用の信号線は、各キュー50からキュー管理テーブル40Aに配線されない。また、各キュー50によりキュー管理テーブル40Aが制御されないため、各キュー50の回路規模を削減することができる。
【0061】
4個のキュー50の各々において同期パケットSにより区切られるエントリENTに、1つのコア10からのトレースパケットTPのみを保持することができる。これにより、同期パケットSの前後に保持されたトレースパケットTPの処理順序が入れ替わることを抑止することができ、1つのコア10から出力されるトレースパケットTPの処理順序が入れ替わることを抑止することができる。
【0062】
次に、状態(c)において、キュー選択回路30Aは、コア10(0)からトレースパケットTP0を受信する。キュー選択回路30Aは、キュー管理テーブル40Aを検索し、コア10(0)から出力された他のトレースパケットTP0がキュー50のいずれにも保持されていないと、見かけ上判定する。このため、キュー選択回路30Aは、見かけ上、トレースパケットTP0を保持していない空のキュー50(2)にトレースパケットTP0を格納する。そして、キュー選択回路30Aは、キュー管理テーブル40Aのキュー50(2)に対応する領域に、コア10(0)を示すコア番号="0"を格納する。
【0063】
この後、キュー50(1)のエントリENT0、ENT1に保持されていたトレースパケットTP1が、対応する処理回路60に順次送出され、処理回路60により処理される。また、キュー50(3)のエントリENT0-ENT3に保持されていたトレースパケットTP3が、対応する処理回路60に順次送出され、処理回路60により処理される。
【0064】
これにより、状態(d)において、キュー50(1)は、エントリENT0、ENT1にトレースパケットTP1を保持した状態になり、キュー50(3)は、エントリENT0に同期パケットSを保持した状態になる。先頭パケット判定回路70Aは、全てのキュー50のエントリENT0に同期パケットSが保持されるまで、キュー50(3)の操作を停止する。このため、キュー50(3)の同期パケットSは、消去されることなくエントリENT0に保持され、同期パケットSの後ろに格納されるトレースパケットTPの処理回路60への送出は抑止される。
【0065】
キュー選択回路30Aは、状態(d)において、コア10(2)からトレースパケットTP2を受信する。キュー選択回路30Aは、キュー管理テーブル40Aを検索し、コア10(2)から出力された他のトレースパケットTP2がキュー50のいずれにも保持されていないと、見かけ上判定する。このため、キュー選択回路30AはトレースパケットTP2を保持していない、見かけ上の空のキュー50(3)にトレースパケットTP2を格納する。そして、キュー選択回路30Aは、キュー管理テーブル40Aのキュー50(3)に対応する領域に、コア10(2)を示すコア番号="2"を格納する。
【0066】
この状態で、キュー50(2)のエントリENT0、ENT1およびキュー50(3)のエントリENT1には、トレースパケットTP2が保持されている。しかしながら、キュー50(3)の操作が停止しているため、キュー50(3)に保持されたトレースパケットTP2が、キュー50(2)に保持されたトレースパケットTPを追い越して処理されることを抑止することができる。
【0067】
次に、状態(e)において、キュー選択回路30Aは、コア10(3)からトレースパケットTP3を受信する。キュー選択回路30Aは、状態(c)と同様に、見かけ上、トレースパケットTP3を保持していない空のキュー50(1)にトレースパケットTP3を格納する。そして、キュー選択回路30Aは、キュー管理テーブル40Aのキュー50(1)に対応する領域に、コア10(3)を示すコア番号="3"を格納する。これにより、全てのキュー50において、同期パケットSが保持されるエントリENTの後ろのエントリENTにトレースパケットTPが保持される。
【0068】
次に、状態(f)において、キュー選択回路30Aは、コア10(1)からトレースパケットTP1を受信する。キュー選択回路30Aは、キュー管理テーブル40Aを検索し、トレースパケットTP1の発行元のコア10(1)と異なるコア10からのトレースパケットTPが、見かけ上、全てのキュー50に保持されていると判定する。
【0069】
このため、キュー選択回路30Aは、状態(b)と同様に、全てのキュー50に同期パケットSを格納し、キュー管理テーブル40Aをクリアする。これにより、キュー管理テーブル40Aで示されるキュー50の見かけ上の状態は、キュー50のいずれにもトレースパケットTPが保持されていない状態になる。
【0070】
そして、キュー選択回路30Aは、見かけ上、全てが空き状態のキュー50のうち、キュー50(3)にトレースパケットTP1を格納し、キュー管理テーブル40Aのキュー50(3)に対応する領域に、コア10(1)を示すコア番号="1"を格納する。
【0071】
状態(f)に示すように、各キュー50に複数の同期パケットSが保持される場合にも、各キュー50において同期パケットSにより区切られるエントリENTに、1つのコア10からのトレースパケットTPのみを保持することができる。各キュー50の複数のエントリENTに同期パケットSを保持可能にすることで、1つのコア10から出力されるトレースパケットTPの処理順序が入れ替わることを抑止することができる。
【0072】
この後、キュー50(0)のエントリENT0、ENT1に保持されていたトレースパケットTP0が、対応する処理回路60に順次送出され、処理回路60により処理される。キュー50(1)のエントリENT0、ENT1に保持されていたトレースパケットTP1が、対応する処理回路60に順次送出され、処理回路60により処理される。また、キュー50(2)のエントリENT0、ENT1に保持されていたトレースパケットTP2が、対応する処理回路60に順次送出され、処理回路60により処理される。そして、キュー50の状態は、状態(g)になる。
【0073】
キュー50(3)のエントリENT1に保持されたトレースパケットTP2は、エントリENT0に保持された同期パケットSにより、処理回路60への送出が停止される。このため、キュー50(3)に保持されたトレースパケットTP2が、キュー50(2)に保持されたトレースパケットTP2を追い越して処理されることを抑止することができる。
【0074】
状態(g)に示すように、全ての待ちキュー50は、エントリENT0に同期パケットSを保持した状態になる。このため、先頭パケット判定回路70Aは、各キュー50のエントリENT0に保持された同期パケットSを消去する。
【0075】
次に、状態(h)において、キュー選択回路30Aは、コア10(2)からトレースパケットTP2を受信する。キュー選択回路30Aは、キュー管理テーブル40Aを参照し、コア10(2)から出力された他のトレースパケットTP2が、見かけ上、キュー50のいずれにも保持されていないと判定する。このため、キュー選択回路30Aは、トレースパケットTP2を見かけ上保持していない空のキュー50(1)にトレースパケットTP2を格納する。そして、キュー選択回路30Aは、キュー管理テーブル40Aのキュー50(1)に対応する領域に、コア10(2)を示すコア番号="2"を格納する。
【0076】
次に、状態(i)において、キュー選択回路30Aは、コア10(3)からトレースパケットTP3を受信する。キュー選択回路30Aは、キュー管理テーブル40Aを参照し、コア10(3)から出力された他のトレースパケットTP3が、見かけ上、キュー50のいずれにも保持されていないと判定する。このため、キュー選択回路30Aは、トレースパケットTP3を見かけ上保持していない空のキュー50(0)にトレースパケットTP3を格納する。そして、キュー選択回路30Aは、キュー管理テーブル40Aのキュー50(0)に対応する領域に、コア10(3)を示すコア番号="3"を格納する。
【0077】
図8は、
図5のキュー選択回路30Aの動作フローの一例を示す。すなわち、
図8は、データ処理装置100Aの制御方法の一例を示す。
図4と同一または同様の動作については、詳細な説明は省略する。
図8に示す動作は、キュー選択回路30Aがコア10のいずれかからトレースパケットTPを受信する毎に実行される。ステップS200、S202、S204、S206、S216、S218の動作は、それぞれ
図4のステップS100、S102、S104、S106、S110、S112の動作と同様である。
【0078】
まず、ステップS200において、キュー選択回路30Aは、トレースパケットTPに含まれる識別情報等に基づいて、トレースパケットTPを出力したコア10の番号を取得する。次に、ステップS202において、キュー選択回路30Aは、キュー管理テーブル40Aを検索する。ここで、キュー管理テーブル40Aに保持されたキュー管理情報は、実際のキュー50の状態を示すだけでなく、キュー50が同期パケットSを保持することによる見かけ上のキュー50の状態も示す。このため、ステップS204およびステップS208は、実際のキュー50の状態または見かけ上のキュー50の状態に基づいて判定される。
【0079】
ステップS204において、キュー選択回路30Aは、ステップS200で取得したコア番号のコア10から出力されたトレースパケットTPを保持しているキュー50がある場合、ステップS206を実行する。キュー選択回路30Aは、ステップS200で取得したコア番号のコア10から出力されたトレースパケットTPを保持しているキュー50がない場合、ステップS208を実行する。
【0080】
ステップS208において、キュー選択回路30Aは、キュー管理テーブル40Aの検索結果に基づいて、トレースパケットTPを格納していない空きのキュー50があるか否かを判定する。キュー選択回路30Aは、空きのキュー50がある場合、ステップS214を実行し、空きのキュー50がない場合、ステップS210を実行する。
【0081】
ステップS210において、キュー選択回路30Aは、全てのキュー50に同期パケットSを格納する。次に、ステップS212において、キュー選択回路30Aは、キュー管理テーブル40Aをクリアし、ステップS214を実行する。
【0082】
ステップS214において、キュー選択回路30Aは、空いている任意のキュー50を選択する。ステップS206およびステップS214の後、ステップS216において、キュー選択回路30Aは、キュー管理テーブル40Aを更新する。そして、ステップS218において、キュー選択回路30Aは、ステップS206またはステップS214で選択したキュー50に、コア10から受信したトレースパケットTPを格納し、
図8に示す動作を終了する。
【0083】
図9は、
図5の先頭パケット判定回路70Aの動作フローの一例を示す。すなわち、
図9は、データ処理装置100Aの制御方法の一例を示す。
図9に示す動作は、キュー50毎に実行される。
【0084】
まず、ステップS300において、先頭パケット判定回路70Aは、キュー50の先頭エントリENT0からパケットを取得する。先頭パケット判定回路70Aが取得するパケットは、トレースパケットTPまたは同期パケットSである。
【0085】
次に、ステップS302において、先頭パケット判定回路70Aは、ステップS300で取得したパケットが同期パケットSであるか否かを判定する。先頭パケット判定回路70Aは、取得したパケットが同期パケットSである場合、ステップS304を実行する。先頭パケット判定回路70Aは、取得したパケットが同期パケットSでない場合、すなわち、トレースパケットTPである場合、ステップS308を実行する。
【0086】
ステップS304において、先頭パケット判定回路70Aは、全てのキュー50の先頭エントリENT0が同期パケットSを保持しているか否かを判定する。先頭パケット判定回路70Aは、全ての先頭エントリENT0が同期パケットSを保持している場合、ステップS306を実行する。先頭パケット判定回路70Aは、全てのキュー50の先頭エントリENT0の少なくともいずれかが同期パケットSを保持していない場合、
図9に示す動作を終了する。
【0087】
ステップS306において、先頭パケット判定回路70Aは、全てのキュー50の先頭エントリENT0に保持された同期パケットSを消去する。一方、ステップS308において、先頭パケット判定回路70Aは、先頭エントリENT0に保持されたトレースパケットTPを、対応する処理回路60に送出し、
図9に示す動作を終了する。
【0088】
以上、この実施形態においても上述した実施形態と同様の効果を得ることができる。例えば、データ処理装置100Aの回路規模の増大を抑制しつつ、簡易な制御によりコア10毎のトレースパケットTPの処理順序の入れ替えを抑止することができる。また、各キュー50は、独立に動作し、対応する処理回路60にトレースパケットTPを送出するため、異なるコア10間のトレースパケットTPの追い越しを可能にすることができる。
【0089】
さらに、この実施形態では、キュー選択回路30Aは、トレースパケットTPの発行元と異なるコア10からのトレースパケットTPが各キュー50に保持されている場合、全てのキュー50に同期パケットSを挿入する。これにより、同期パケットSにより区切られるエントリENTに、1つのコア10からのトレースパケットTPのみを保持することができる。キュー50毎に1つのエントリENTの情報を保持することで、トレースパケットTPの処理順序の入れ替えを抑止できるキュー50の制御を実行することができる。すなわち、データ処理装置100Aの回路規模の増大をさらに抑制して、簡易な制御によりコア10毎のトレースパケットTPの処理順序の入れ替えを抑止することができる。
【0090】
キュー選択回路30Aは、全てのキュー50に同期パケットSを挿入した場合、各キュー50に対応してキュー管理テーブル40Aに保持されたコア番号を消去する。そして、キュー選択回路30Aは、同期パケットSの格納より早くキュー50に格納されたトレースパケットTPを存在しないものとして扱う。これにより、キュー管理テーブル40Aにより、実際のキュー50の状態だけでなく、同期パケットSの格納より早く格納されたトレースパケットTPの存在を隠した見かけ上のキュー50の状態を示すことができる。
【0091】
先頭パケット判定回路70Aは、エントリENT0のいずれかに同期パケットSが保持された場合、全てのエントリENT0に同期パケットSが保持されるまで、先頭エントリENT0に同期パケットSを保持しているキュー50の操作を停止する。
【0092】
これにより、同期パケットSより遅くキュー50に格納されたトレースパケットTPが、同期パケットSより早くキュー50に格納されたトレースパケットTPより先に処理回路60に送出されることを抑止することができる。例えば、1つのコア10から出力された複数のトレースパケットTPが、あるキュー50の同期パケットSの前と別のキュー50の同期パケットSの後に格納される場合にも、コア10毎にトレースパケットTPの処理順序が入れ替わることを抑止することができる。
【0093】
図10は、他のデータ処理装置の一例を示すブロック図である。
図1と同一または同様の要素については、同じ符号を付し、詳細な説明は省略する。
図10に示すデータ処理装置200は、n+1個のコア10(0)-10(n)、マルチプレクサ20、1つのキュー50、1つの処理回路62およびアドレス変換テーブル80を有する。処理回路62は、アドレス変換回路64を有する。処理回路62は、データ処理装置200の外部に設けられるメモリ90に接続される。
【0094】
データ処理装置200は、複数のコア10から出力されるトレースパケットTPを、マルチプレクサ20を介して1つのキュー50に順次格納する。このため、例えば、キュー50には、互いに異なるコア10から出力されたトレースパケットTPが順次格納される。キュー50は、保持したトレースパケットTPを処理回路62に順次出力する。
【0095】
アドレス変換回路64は、アドレス変換テーブル80を使用して、トレースパケットTPに含まれるパケットの転送先アドレスを他の転送先アドレスに変換する。例えば、アドレス変換回路64により変換されるアドレスは、コア10毎に異なり、アドレス変換回路64が使用するアドレス変換テーブル80の中身は、コア10毎に異なる。このため、アドレス変換テーブル80がキャッシュに保持される場合、発行元が異なるコア10からのトレースパケットTPを処理する毎にキャッシュミスが発生し、アドレス変換テーブル80は、その都度、メモリ90等から読み出される。
【0096】
図10に示すように、複数のコア10からそれぞれ出力されるトレースパケットTPを1つのキュー50に格納し、1つの処理回路62で処理する場合、複数のキュー50を有する場合に比べてトレースパケットTPが競合する頻度が高くなる。これにより、1つのコア10から出力されるトレースパケットTPがキュー50に連続して格納される可能性は低くなり、処理回路62で処理するトレースパケットTPの発行元のコア10に合わせて、アドレス変換テーブル80が入れ替わる頻度が高くなる。
【0097】
アドレス変換テーブル80の入れ替わる間、処理回路62は、トレースパケットTPの処理を実行しない。このため、処理回路62での処理時間が増加し、トレースパケットTPの処理性能が低下する。さらに、トレースパケットTPの処理性能が低下すると、キュー50からのトレースパケットTPの送出頻度が下がるため、キュー50がオーバーフローするおそれがある。
【0098】
図11は、他のデータ処理装置の別の例を示す。
図1と同一または同様の要素については、同じ符号を付し、詳細な説明は省略する。
図11に示すデータ処理装置200Aは、4個のコア10(0)-10(3)、4個のキュー50(0)-50(3)および4個の処理回路60(0)-60(3)を有する。すなわち、キュー50および処理回路60は、コア10毎に設けられる。
【0099】
データ処理装置200Aでは、キュー50がコア10毎に専用に設けられるため、1つのコア10から出力されるトレースパケットTPと、他のコア10から出力されるトレースパケットTPとは競合しない。また、処理回路60がコア10毎に専用に設けられるため、トレースパケットTPのアドレス変換を実行する場合に、図示しないアドレス変換テーブルの入れ替えは発生しない。
【0100】
しかしながら、キュー50および処理回路60がコア10毎に設けられる場合、多数のコア10を含むデータ処理装置200Aでは、回路規模が増大する。このため、例えば、データ処理装置200Aが1チップの場合、全ての回路をチップに搭載することが困難な場合がある。また、チップサイズが増大すると、歩留まりが低下するおそれがある。
【0101】
図1に示したデータ処理装置100および
図5に示したデータ処理装置は、
図10および
図11で説明した問題点を解決することができる。なお、上述した実施形態では、データ処理装置100、100Aが複数のコア10を有するプロセッサである場合について説明された。しかしながら、データ処理装置100は、複数のI/O(Input/Output)デバイスを有する装置でもよい。
【0102】
この場合、
図1または
図5のコア10の代わりに、トレースパケットTPを出力するI/Oデバイスが配置されてもよい。例えば、I/Oデバイスは、不揮発性の記憶装置または各種センサ等である。また、データ処理装置100、100Aは、トレースパケットTPを出力するデバイスを含むのであれば、コア10またはI/Oデバイス以外でもよい。
【0103】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【0104】
10 コア
20 マルチプレクサ
30、30A キュー選択回路
40、40A キュー管理テーブル
50 キュー
60 処理回路
62 処理回路
64 アドレス変換回路
70A 先頭パケット判定回路
80 アドレス変換テーブル
90 メモリ
100、100A データ処理装置
200、200A データ処理装置
ENT エントリ
TP トレースパケット