説明

マルチプロセッサ装置、マルチプロセッサ装置の制御方法、及びプログラム

【課題】デバッグデータの可読性を高め、デバッグにおけるユーザーの利便性を向上させること
【解決手段】マルチプロセッサ装置100は、複数のプロセッサ11、12と、複数のプロセッサ11、12の各々に個別に接続され、各プロセッサのデバッグに必要なデバッグデータをそれぞれ記録し、出力する複数の第1メモリ13、14と、複数の第1のメモリ13、14から出力されたデバッグデータに対してマージ処理を行う出力マージ回路15と、出力マージ回路のマージ処理内容を規定するための設定データを、記録する設定レジスタ16と、を備える。出力マージ回路15は、設定レジスタ16に記録された設定データに基づいてマージ処理を行い、マージデータを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチプロセッサ装置、マルチプロセッサ装置の制御方法、及びプログラム関するものである。
【背景技術】
【0002】
近年の電子機器の高機能化に伴い、複数のプロセッサを内蔵する組み込みマルチプロセッサ装置が実用化されている。このような装置の開発において、デバッグにおけるユーザーの利便性を向上させることにより、開発の短期化が図られている。
【0003】
マルチプロセッサ装置の開発では、装置内の複数のプロセッサのデバッグを同時に行う必要がある。しかし、マルチプロセッサ装置の根底部分のデバッグを行う際に、プロセッサ間通信等の高度な機能をデバッグ支援に使用できない局面がある。そのため、シングルプロセッサ装置の原始的なデバッグ手法として有効であるキャラクタレベルのメッセージ出力を、マルチプロセッサ装置でも使用できることが求められている。
【0004】
この場合、マルチプロセッサ装置においてキャラクタレベルのメッセージを出力する情報ソースは、装置内のプロセッサの数だけ存在することとなる。ここで、マルチプロセッサ装置にプロセッサ数と同数だけメッセージ出力端子を設けることとすると、チップの端子数が増大することとなり、コストの増加に繋がる。
【0005】
特許文献1には、複数のプロセッサからそれぞれキャラクタメッセージを出力する際に、1つの出力端子を兼用するマルチプロセッサ装置に関する技術が開示されている。これによれば、デバッグを行いたいプロセッサが選択されると、CPU選択端子1aから入力された情報により、選択接続手段1bが選択されたプロセッサに対応するデバッグI/Fを選択し、これをデバッグ端子56に接続する。したがって、マルチプロセッサ装置において、選択されたプロセッサから出力されたデータを、1つのデバッグ端子から出力することができる。
【0006】
特許文献2には、複数プロセッサの協調デバッグ回路を備えるコンピュータシステム及びデバッグ回路に関する技術が開示されている。これによれば、複数のプロセッサから出力されるトレースデータについて、どのプロセッサからのデータであるかを判別するための情報を付加して、1つのセレクタ及びFIFO制御回路に集約する。集約されたトレースデータはマージ処理され、1つの出力端子から出力される。したがって、マルチプロセッサ装置において、複数プロセッサから出力されたデータを、1つのデバッグ端子から出力することができる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2000−76199号公報
【特許文献2】特開2003−162426号公報
【特許文献3】特開2007−141200号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、特許文献1に開示された技術では、選択接続手段が選択したプロセッサに対応して、データ出力端子の接続先を次々と切り替える必要がある。ここで、デバッグメッセージ受信装置は単にメッセージを受信するものであり、メッセージの発生自体を通知とするものである。このような受信装置を用いる場合、プロセッサの切り替えのタイミングを他の端子から通知することは出来ても、特別な回路を追加しない限り受信側の装置から出力先の切り替えを制御することはできない。したがって、出力先の制御方法は、各プロセッサの出力を手動で順番にポーリングすることにより行う必要がある。また、このときポーリングを行う順序によっては、データの発生順序とデータの取り出し順序の逆転がおこる可能性がある。
したがって、出力先として選択されていないプロセッサからのデータをリアルタイムに入手することが困難であり、さらに、格納されたデータの順番が保障されないという問題がある。
【0009】
また、特許文献2に開示された技術によると、マルチプロセッサから出力されたトレースデータについて、セレクタ及びFIFO制御回路に集約されて出力されるが、出力されるデータの形式は一意に決定される。
ここで、例えば、デバッグを行う際には出力されるデータの可読性が高いことが望ましく、出力されるデータの特性に合わせてルール設定を容易に変更できるものとすることで、出力されるデータの可読性を高め、デバッグにおけるユーザーの利便性を向上させたいという要望がある。
【課題を解決するための手段】
【0010】
本発明にかかる態様は、複数のプロセッサと、前記複数のプロセッサの各々に接続され、前記各プロセッサのデバッグに必要なデバッグデータをそれぞれ記録し、出力する複数の第1メモリと、前記複数の第1メモリから出力された前記デバッグデータに対してマージ処理を行う出力マージ回路と、前記出力マージ回路のマージ処理内容を規定するための設定データを記録する設定レジスタと、を備えたマルチプロセッサ装置において、前記出力マージ回路は、前記設定レジスタに記録された設定データに基づいて、前記マージ処理を行い、マージデータを生成することを特徴とするマルチプロセッサ装置である。
このような構成により、デバッグデータの特性に合わせて設定データを設定することで、出力されるマージデータの可読性を高めることができる。
【0011】
本発明にかかる他の態様は、マルチプロセッサ装置の制御方法であって、複数のプロセッサから出力された、該各プロセッサのデバッグに必要なデバッグデータをそれぞれ記録し、出力する工程と、前記出力されたデバッグデータに対してマージ処理を行う工程と、前記マージ処理内容を規定する設定データを、記録する工程と、を含むことを特徴とする、マルチプロセッサ装置の制御方法である。
このような方法により、出力されるマージデータの可読性を高めることができる。
【0012】
本発明にかかる他の態様は、マルチプロセッサの制御をコンピュータに実行させるためのプログラムであって、複数のプロセッサから出力された、該各プロセッサのデバッグに必要なデバッグデータをそれぞれ記録し、出力する工程と、前記出力されたデバッグデータに対してマージ処理を行う工程と、前記マージ処理内容を規定する設定データを、記録する工程と、をコンピュータに実行させることを特徴とするプログラムである。
このようなプログラムにより、出力されるマージデータの可読性を高めることができる。
【発明の効果】
【0013】
マルチプロセッサ装置のデバッグにおけるユーザーの利便性を向上させ、開発の短期化を図ることができる。
【図面の簡単な説明】
【0014】
【図1】本発明の実施の形態1に係るマルチプロセッサ装置の概略的なシステム構成の一例を示すブロック図である。
【図2】本発明の実施の形態1にかかる出力マージ回路の動作の一例を示すフローチャートである。
【図3】本発明の実施の形態1にかかる各プロセッサから出力されたメッセージのチェック動作の一例を示すフローチャートである。
【図4】従来のマルチプロセッサ装置のデバッグメッセージ出力回路の全体構成図である。
【発明を実施するための形態】
【0015】
以下、図面を参照して本発明の実施の形態について説明する。図1は、マルチプロセッサ装置の概略的なシステム構成の一例を示すブロック図である。
本実施の形態においては、2個のプロセッサ11、12を内蔵するマルチプロセッサ装置100について説明する。なお、マルチプロセッサ装置100に内蔵されるプロセッサの数は3個以上でもよく、任意でよい。また、メモリとして、例えば、FIFO(First In First Out)メモリを使用する。以下ではFIFOメモリを「FIFO」と呼ぶこととする。
【0016】
マルチプロセッサ装置100は、プロセッサ11と、プロセッサ12と、プロセッサ11から出力されたデバックデータを格納するFIFO(第1メモリ)13と、プロセッサ12から出力されたデバックデータを格納するFIFO(第1メモリ)14と、FIFO13とFIFO14から出力されたデバックデータに基づいて、これらデバックデータに対してマージ処理を行い、マージデータを生成する出力マージ回路15と、出力マージ回路15のマージ処理内容を規定する設定データを記録する設定レジスタ16と、を備える。
また、マルチプロセッサ装置100は、出力マージ回路15から出力されたマージデータを格納するFIFO(第2メモリ)17と、データ出力端子18と、を備える。
【0017】
プロセッサ11及びプロセッサ12は、制御プログラムに基づいてシステム内の各種処理を実行する中央制御装置であり、典型的にはCPUである。また、プロセッサ11及びプロセッサ12から出力されるデバックデータは、これらプロセッサ11及びプロセッサ12のデバッグに用いるためのデータであり、例えば、キャラクタメッセージであるものとする。なお、デバックデータは、キャラクタメッセージに限らずに、プロセッサ11及びプロセッサ12のデバッグに用いることができる任意のデータでよい。
【0018】
FIFO13及びFIFO14は、プロセッサ11及びプロセッサ12にそれぞれ個別に接続され、プロセッサ11及びプロセッサ12から出力されたキャラクタメッセージをそれぞれ記録し、出力マージ回路15に対して出力する。
【0019】
出力マージ回路15は、設定レジスタ16に設定された設定データに基づいて、各FIFO13、14から出力されたキャラクタメッセージに対してマージ処理(併合処理)を行い、これらキャラクタメッセージを併合したマージデータ(併合データ)を生成する。
出力マージ回路15は、FIFO13及びFIFO14から出力されたキャラクタメッセージをマージ処理する際に、例えば、併合された後のキャラクラメッセージから出力元プロセッサ11、12の特定をするためのプロセッサ識別子をキャラクタメッセージ中に挿入する機能を備える。
設定レジスタ16は、出力マージ回路15のマージ処理内容を規定するための設定データを、記録している。
【0020】
ここで、出力マージ回路15において単純に1キャラクタ毎にプロセッサ識別子を挿入した場合、キャラクタメッセージの可読性が大きく損なわれることとなる。そこで、設定レジスタ16には、以下のレジスタ群が定義され、その定義内容が設定データとして記録される。
OutMaskReg:プロセッサ11及びFIFO13のキャラクラメッセージを、出力マージ回路15を介してFIFO17に出力する又は出力しない。及び、プロセッサ12及びFIFO14のキャラクタメッセージを、出力マージ回路15を介してFIFO17に出力する又は出力しない。
PrefixEnableReg:プロセッサ識別子挿入モード:キャラクタメッセージにプロセッサ識別子を1バイト毎に挿入する、プロセッサ識別子を出力ソース(出力プロセッサ)の切替わり時のみ挿入する、又は、プロセッサ識別子を挿入しない。また、プロセッサ11からのキャラクタメッセージに対してプロセッサ識別子を使用する(有効)又は使用しない(無効)。及び、プロセッサ12からのキャラクタメッセージに対してプロセッサ識別子を使用する(有効)又は使用しない(無効)。
OutPrefixReg1:プロセッサ11からのキャラクタメッセージに対するプロセッサ識別子キャラクタ値。
OutPrefixReg2:プロセッサ12からのキャラクタメッセージに対するプロセッサ識別子キャラクタ値。
なお、プロセッサ識別子キャラクタ値は、識別子を表すものとして定めた特定のアスキーコードとする。
【0021】
FIFO17は、出力マージ回路15により出力されたキャラクタメッセージを記録する。FIFO17に記録されたキャラクタメッセージは、データ出力端子18から出力される。
【0022】
ここで、マルチプロセッサ装置100の動作について詳細に説明する。図2は、出力マージ回路の動作の一例を示すフローチャートであり、図3は、各プロセッサのメッセージチェックの動作の一例を示すフローチャートである。
出力マージ回路15は、設定レジスタ16の設定データに従い、入力クロック毎に、図2に示す概略的な手順でキャラクタメッセージのマージ処理を行う。
【0023】
出力マージ回路15は、キャラクタメッセージのマージ処理を開始する(ステップS10)。なお、マージ処理の開始タイミングは、例えば、出力マージ回路15へのクロック入力のタイミングとする。
次に、出力マージ回路15はプロセッサ11からのキャラクタメッセージを確認する(ステップS11)。
その後、出力マージ回路15はプロセッサ12からのキャラクタメッセージを確認する(ステップS12)。
そして、出力マージ回路15は、プロセッサ11及びプロセッサ12からのキャラクタメッセージに基づいてマージ処理を行い、マージデータを生成すると、このマージ処理を終了する(ステップS13)。
【0024】
ここで、上記プロセッサ11のキャラクタメッセージの確認(ステップS11)とプロセッサ12のキャラクタメッセージの確認(ステップS12)は、例えば、図3に示す手順により行われる。
【0025】
出力マージ回路15は、マージ処理を開始すると(ステップS20)、まず、対象プロセッサ11、12のFIFO13、14にキャラクタメッセージが存在するか否かを確認する(ステップS21)。例えば、対象プロセッサがプロセッサ11となる場合は、出力マージ回路15は、FIFO13を確認し、対象プロセッサがプロセッサ12となる場合は、出力マージ回路15は、FIFO14を確認する。
【0026】
次に、出力マージ回路15は、FIFO13、14にキャラクタメッセージが存在すると判断した場合(ステップS21のYES)、対象プロセッサ11、12からのキャラクタメッセージ出力が設定レジスタ16に記録されたOutMaskRegによって許可されているか否かを確認する(ステップS22)。
【0027】
その後、出力マージ回路15は、対象プロセッサ11、12からのキャラクタメッセージ出力が設定レジスタ16のOutMaskRegによって許可されていると判断した場合(ステップS22のYES)、現在キャラクタメッセージをチェックしているプロセッサ11、12と、この直前にキャラクタメッセージを出力したプロセッサ11、12と、が同一であり、同一のプロセッサ11、12から連続してキャラクタメッセージが出力されているか否かを判定する(ステップS23)。
【0028】
さらに、出力マージ回路15は、現在メッセージをチェックしているプロセッサ11、12と、この直前にキャラクタメッセージを出力したプロセッサ11、12と、が同一であり、同一プロセッサ11、12の連続出力と判定した場合に(ステップS23のYES)、設定レジスタ16のPrefixEnableRegに記録されたプロセッサ識別子挿入モードの設定を確認し、その設定がマージ後のキャラクタメッセージに対して「プロセッサ識別子を1バイト毎に挿入する」に設定されているか否かを判断する(ステップS24)。
【0029】
そして、出力マージ回路15は、設定レジスタ16のPrefixEnableRegの設定に基づいて、「プロセッサ識別子を1バイト毎に挿入する」に設定されていると判断した場合(ステップS24のYES)、プロセッサ毎のプロセッサ識別子が有効又は無効であるかを判定する(ステップS25)。例えば、対象プロセッサがプロセッサ11である場合は、出力マージ回路15は、プロセッサ11からのキャラクタメッセージに対するプロセッサ識別子が有効又は無効であるかを判定する。同様に、対象プロセッサがプロセッサ12である場合は、出力マージ回路15は、プロセッサ12からのキャラクタメッセージに対するプロセッサ識別子が有効又は無効であるかを判定する。
【0030】
出力マージ回路15は、設定レジスタ16のPrefixEnableRegの設定に基づいて、プロセッサ毎のプロセッサ識別子が有効であると判定した場合(ステップS25のYES)、マージ後のキャラクタメッセージに対してプロセッサ識別子を、1バイト毎に又は出力プロセッサの切替り時に挿入する(ステップS26)。
ここで、対象プロセッサがプロセッサ11の場合、出力マージ回路15は、設定レジスタ16に設定されたOutPrefixReg1のプロセッサ識別子キャラクタ値をFIFO17に対して出力する。同様に、対象プロセッサがプロセッサ12の場合、出力マージ回路15は、設定レジスタ16に設定されたOutPrefixReg2のプロセッサ識別子キャラクタ値をFIFO17に対して出力する。
なお、出力マージ回路15は、キャラクタメッセージに対してプロセッサ識別子を、1バイト毎に挿入しているが、これに限らず、例えば、2バイト毎に挿入してもよく、所定の容量毎に挿入してもよい。
【0031】
その後、出力マージ回路15は、FIFO13、14から先頭の1キャラクタを読出して、FIFO17のマージ後のキャラクタメッセージに出力し(ステップS27)、本処理を終了する(ステップS30)。例えば、対象プロセッサがプロセッサ11である場合、出力マージ回路15は、FIFO13の先頭の1キャラクタをFIFO17に対して出力する。同様に、対象プロセッサがプロセッサ12である場合、出力マージ回路15は、FIFO14の先頭の1キャラクタをFIFO17に対して出力する。
【0032】
なお、上記(ステップS21)において、出力マージ回路15は、FIFO13、14にキャラクタメッセージが存在しないと判断した場合(ステップS21のNO)、本処理を終了する(ステップS30)。
【0033】
また、上記(ステップS22)において、出力マージ回路15は、対象プロセッサ11、12からのキャラクタメッセージ出力が設定レジスタ16のOutMaskRegによって許可されていないと判断した場合(ステップS22のNO)、対象プロセッサ11、12に対応するFIFO13、14のデータをフラッシュ(クリア)し(ステップS28)、本処理を終了する(ステップS30)。例えば、対象プロセッサがプロセッサ11である場合は、出力マージ回路15は、FIFO13の全データをフラッシュする。同様に、対象プロセッサがプロセッサ12である場合は、出力マージ回路15は、FIFO14の全データをフラッシュする。
【0034】
さらに、上記(ステップS23)において、出力マージ回路15は、現在メッセージをチェックしているプロセッサ11、12と、この直前にキャラクタメッセージを出力したプロセッサ11、12と、が異なると判定した場合に(ステップS23のNO)、設定レジスタ16に設定されたPrefixEnableRegのプロセッサ識別子挿入モードを判定し、「プロセッサ識別子を出力ソースの切替わり時のみ挿入する」に設定されているか否かを判定する(ステップS29)。
出力マージ回路15は、PrefixEnableRegに「プロセッサ識別子を出力ソースの切り替わり時のみ挿入する」と設定されていると判断した場合(ステップS29のYES)、上記(ステップS25)の処理に移行する。一方、出力マージ回路15は、PrefixEnableRegに「プロセッサ識別子を出力ソースの切り替わり時のみ挿入する」以外が設定されていると判断した場合(ステップS29のNO)、上記(ステップS27)の処理に移行する。
【0035】
さらにまた、上記(ステップS24)において、出力マージ回路15は、設定レジスタ16のPrefixEnableRegに、「プロセッサ識別子を1バイト毎に挿入する」以外が設定されていると判断した場合(ステップS24のNO)、上記(ステップS27)の処理に移行する。
【0036】
なお、上記(ステップS25)において、出力マージ回路15は、プロセッサ毎のプロセッサ識別子が無効であると判定した場合(ステップS25のNO)、上記(ステップS27)の処理に移行する。
【0037】
このように単一のマルチプロセッサ装置100に複数のプロセッサ11、12が内蔵され、且つ複数のプロセッサ11、12からデバッグメッセージが不規則に出力される場合でも、本実施形態に係る出力マージ回路15によりマージ処理を行い、そのデバッグメッセージをマルチプロセッサ装置100の外部に出力することで、単一のキャラクタ文字端末やホストPC等に全てのデバックメッセージを出力することができる。したがって、デバッグメッセージ解析のための治具等を作成する必要がなくなり、メッセージ出力によるデバッグを実施するための準備に要する時間とコストが削減できる。
【0038】
なお、出力マージ回路15は、例えば、シリアル通信コントローラとしての機能を有しており、マルチプロセッサ装置100とホストPCや端末等の表示装置とをシリアルケーブル等で接続してもよい。これにより、表示装置に複数のプロセッサ11、12のデバッグデータを表示することができ、効率的なデバックが可能となる。
設定レジスタ16によって、出力メッセージの特性に合わせたルール設定を行うことで、出力マージ回路15で生成されるデバッグメッセージの可読性を高めることができ、デバッグメッセージのログ解析のコスト軽減を図ることができる。
すなわち、マルチプロセッサ装置100のデバッグにおけるユーザーの利便性を向上させ、開発の短期化を図ることができる。
【0039】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上記実施の形態において、メモリとしてはFIFOが適用されているが、これに限らず、例えば、LIFO(Last In First Out)やランダムアクセスで制御されるメモリを用いることもできる。
【0040】
また、図2及び3に示した制御処理は、マイクロプロセッサ等のコンピュータに1又は複数のプログラムを実行させることによって実現してもよい。このプログラムは、様々な種類の記憶媒体に格納することが可能であり、また、通信媒体を介して伝達されることが可能である。ここで、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、CD−ROM、DVD、ROMカートリッジ、バッテリバックアップ付きRAMメモリカートリッジ、フラッシュメモリカートリッジ、不揮発性RAMカートリッジ等が含まれる。また、通信媒体には、電話回線等の有線通信媒体、マイクロ波回線等の無線通信媒体等が含まれ、インターネットも含まれる。
【符号の説明】
【0041】
11 プロセッサ
12 プロセッサ
13 FIFO
14 FIFO
15 出力マージ回路
16 設定レジスタ
17 FIFO
18 データ出力端子
100 マルチプロセッサ装置

【特許請求の範囲】
【請求項1】
複数のプロセッサと、
前記複数のプロセッサの各々に接続され、前記各プロセッサのデバッグに必要なデバッグデータをそれぞれ記録し、出力する複数の第1メモリと、
前記複数の第1メモリから出力された前記デバッグデータに対してマージ処理を行う出力マージ回路と、
前記出力マージ回路のマージ処理内容を規定するための設定データを、記録する設定レジスタと、
を備えたマルチプロセッサ装置において、
前記出力マージ回路は、前記設定レジスタに記録された設定データに基づいて、前記マージ処理を行い、マージデータを生成することを特徴とする、
マルチプロセッサ装置。
【請求項2】
前記出力マージ回路は、前記設定レジスタに記録されている前記設定データに基づいて、出力元である前記第1メモリが切り替わる際に、前記デバックデータに対して前記プロセッサを識別するためのプロセッサ識別子を自動で挿入する、
請求項1に記載のマルチプロセッサ装置。
【請求項3】
前記出力マージ回路は、前記設定レジスタに記録されている前記設定データに基づいて、所定の容量毎に、前記デバックデータに対して前記プロセッサを識別するためのプロセッサ識別子を挿入する、
請求項1に記載のマルチプロセッサ装置。
【請求項4】
前記出力マージ回路は、前記複数のプロセッサのうち、デバッグを行わないプロセッサから出力された前記デバッグデータをマージ処理の対象から外し、
前記複数の第1メモリは、当該プロセッサから出力された前記デバッグデータを自動で消去する、
請求項1乃至請求項3のいずれか一項に記載のマルチプロセッサ装置。
【請求項5】
前記出力マージ回路から出力された前記マージデータを蓄積し、当該マルチプロセッサ装置の外部に前記マージデータを出力する第2メモリをさらに備える、
請求項1乃至請求項4のいずれか一項に記載のマルチプロセッサ装置。
【請求項6】
前記デバッグデータは、キャラクタメッセージである、
請求項1または請求項5に記載のマルチプロセッサ装置。
【請求項7】
前記出力マージ回路により生成された前記マージデータを表示する表示装置を更に備える、
請求項1乃至請求項6のいずれか一項に記載のマルチプロセッサ装置。
【請求項8】
複数のプロセッサから出力された、該各プロセッサのデバッグに必要なデバッグデータをそれぞれ記録し、出力する工程と、
前記出力されたデバッグデータに対してマージ処理を行う工程と、
前記マージ処理内容を規定する設定データを、記録する工程と、
を含むことを特徴とする、
マルチプロセッサ装置の制御方法。
【請求項9】
複数のプロセッサから出力された、該各プロセッサのデバッグに必要なデバッグデータをそれぞれ記録し、出力する工程と、
前記出力されたデバッグデータに対してマージ処理を行う工程と、
前記マージ処理内容を規定する設定データを、記録する工程と、
をコンピュータに実行させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2011−100256(P2011−100256A)
【公開日】平成23年5月19日(2011.5.19)
【国際特許分類】
【出願番号】特願2009−253924(P2009−253924)
【出願日】平成21年11月5日(2009.11.5)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】