(58)【調査した分野】(Int.Cl.,DB名)
前記処理部は、前記中継部から供給された1つのパケットについての前記データ処理が完了したときに完了通知を発することを特徴とする請求項1に記載の半導体集積回路。
前記処理部は、前記中継部から供給された1つのパケットについての前記データ処理が完了したときに完了通知を発することを特徴とする請求項2に記載の半導体集積回路。
【発明を実施するための形態】
【0009】
以下、本発明に係る実施例について添付の図面を参照しつつ詳細に説明する。
【0010】
<第1の実施例>
図1には、本発明の第1の実施例である半導体集積回路1の構成が示されている。
【0011】
処理部2−1〜2−n及び3−1〜3−n(nは2以上の整数)の各々は、転送されたパケットの内容に応じて各種データ処理を行なう。これらの各々は、例えば、外部デバイス20(
図2)からの指示に応じてメモリ23へのデータアクセス処理を実行することができる。処理部2−1及び3−1は、バス4−1を介してパケットを送受信する。処理部2−2〜2−n及び3−2〜3−nについても、それぞれ対応するバス4−2〜4−nを介してパケットを送受信する。
【0012】
バス4−2〜4−nは、例えばAMBA AHB(Advanced Microcontroller Bus Architecture Adcanced High-performance Bus)、PCI(Peripheral Component Interconnect)バス等のバス規格に従ってバスアクセス可能なパラレルバスである。
処理部入出力14−1〜14−nは、例えばUART(Universal Asynchronous Receiver Transmitter)、USB(Universal Serial Bus)、SATA(Serial Advanced Technology Attachment)等の通信規格に従ってデータ通信可能な通信路である。
【0013】
コンバータ5−1は、処理部2−1及び3−1から出力されたバスアクセスをバス4−1を介して受信し、これをキュー蓄積可能なデータ形式すなわちパケットに変換してアップストリームキュー7−1に順次供給する。また、コンバータ5−1は、ダウンストリームキュー8−1に蓄積されているパケットを時系列順に取り出し、これをバスアクセスに変換して、バス4−1を介して処理部2−1又は3−1に供給する。
【0014】
コンバータ5−2は、処理部2−2及び3−2から出力されたバスアクセスをバス4−2を介して受信し、これをキュー蓄積可能なデータ形式すなわちパケットに変換してアップストリームキュー7−2に順次供給する。また、コンバータ5−2は、中継部6−2から中継されたパケットをバスアクセスに変換して、バス4−2を介して処理部2−1又は3−1に供給する。コンバータ5−3〜5−nの各々もコンバータ5−2と同様の動作を行なう。
【0015】
中継部6−2は、キュー出力制御部13から中継許可指令を受ける毎に、ダウンストリームキュー8−2に蓄積されているパケットの1つを時系列順に取り出してコンバータ5−2に中継する。中継許可指令は、ダウンストリームキュー8−2に蓄積されているパケットの1つを中継することを許可するものであり、例えば外部デバイス20(
図2)からの中継許可指示パケットによって与えられる。また、中継部6−2は、キュー出力制御部13から中継停止指令を受けた場合には、ダウンストリームキュー8−2に蓄積されているパケットの中継を停止する。中継部6−3〜6−nの各々も中継部6−2と同様の動作を行なう。
【0016】
アップストリームキュー7−1は、コンバータ5−1から供給されたパケットを順次蓄積する。アップストリームキュー7−2〜7−nの各々もアップストリームキュー7−1と同様の動作を行なう。
【0017】
ダウンストリームキュー8−1は、分配部10から供給されたパケットを順次蓄積する。ダウンストリームキュー8−2〜8−nの各々もダウンストリームキュー8−1と同様の動作を行なう。
【0018】
中継部9−2は、キュー出力制御部13から中継許可指令を受ける毎に、アップストリームキュー7−2に蓄積されているパケットの1つを時系列順に取り出して分配部10に中継する。また、中継部9−2は、キュー出力制御部13から中継停止指示を受けた場合には、アップストリームキュー7−2に蓄積されているパケットの中継を停止する。中継部9−3〜9−nの各々も中継部9−2と同様の動作を行なう。
【0019】
分配部10は、PCIe_IF12によって受信されたパケットをその宛先に応じてダウンストリームキュー8−1〜8−nのうちの1つに供給する。
【0020】
選択部11は、アップストリームキュー7−1及び中継部9−2〜9−nのうちから選択した1つに蓄積されているパケットを取り出してこれをPCIe_IF12に供給する。
【0021】
PCIe_IF12は、PCI−Express通信路を介してパケットを送受信するインターフェースである。PCIe_IF12は、選択部11から供給されたパケットを外部デバイス20(
図2)へ送信できる。また、PCIe_IF12は、外部デバイス20から到来したパケットを選択部11に供給できる。
【0022】
キュー出力制御部13は、バス4−1を介して到来した自身宛のパケットが中継停止指示パケット又は中継許可指示パケット(以下、これらを総称してキュー制御指示パケットという)であると判別した場合に、その内容に応じて中継部6−2〜6−n及び中継部9−2〜9−nを制御する。キュー出力制御部13は、例えば、これらの中継部に対してパケットの中継停止指令及び中継許可指令を発することができる。
【0023】
以下、PCIe_IF12と、分配部10と、ダウンストリームキュー8−1〜8−nと、中継部6−1〜6−nと、キュー出力制御部13と、を含む構成を転送部と称する。
【0024】
図2には、半導体集積回路1と共に、そのデバッグのための外部デバイス20及び観測装置31、32が示されている。
【0025】
外部デバイス20は、デバッグのためのデータ及び指令を半導体集積回路1に供給する。
【0026】
PCIe_IF21は、半導体集積回路1のPCIe_IF12との間で、PCI−Express規格に従ってパケットを送受信するためのインターフェースである。
【0027】
CPU22は、外部デバイス20全体を制御し、例えば、デバッグのための指令を半導体集積回路1に与えることができる。
【0028】
メモリ23は、デバッグのためのデータを記憶する。
【0029】
パケットアナライザ31は、半導体集積回路1と外部デバイス20との間で、PCI−Express規格に従って送受信されるパケットを観測できる。パケットアナライザ32は、処理部2−1〜2−n及び3−1〜3−nから出力されるパケットを観測できる。
【0030】
以下、
図3を参照しつつ、デバッグ時における半導体集積回路1の動作について説明する。
図3には、(a)PCIe_I/Fダウンストリーム、(b)PCIe_I/Fアップストリーム、(c)ダウンストリームキュー、(d)アップストリームキュー、(e)バス、(f)処理部入出力の各系列毎にパケットが時系列で示されている。なお、外部デバイス20側から半導体集積回路1側へのパケットの流れをダウンストリームと称し、半導体集積回路1側から外部デバイス20側へのパケットの流れをアップストリームと称する。以下、半導体集積回路1が、外部デバイス20からの指示に応じてPCIe通信路を介して取得したデータをUART等の通信路に転送する場合の動作について説明する。
【0031】
先ず、外部デバイス20のCPU22から半導体集積回路1に対して中継停止指示パケット41、動作指令パケット52、53及び54、中継許可指示パケット42が順次送信される。これらのパケットは、半導体集積回路1のPCIe_IF12によって順次受信される。
【0032】
中継停止指示パケット41は、ダウンストリームキュー8−2〜8−nの各々に蓄積されているパケットの中継停止を指示するものであり、キュー出力制御部13を宛先としている。キュー出力制御部13は、分配部10からダウンストリームキュー8−1及びコンバータ5−1を経由してバス4−1に到来した中継停止指示パケット41を受信する。
【0033】
キュー制御パケット41は、中継停止指示パケット41に応じて、中継部6−2によるダウンストリームキュー8−2からコンバータ5−2へのパケット中継を停止させる。同様に、キュー制御パケット41は、中継部6−3〜6−nによるコンバータ5−3〜5−nへのパケット中継を停止させる。なお、キュー制御パケット41は、中継部9−2〜9−nの各々に対しては中継許可指令を発してパケット中継を許可する。中継部9−2〜9−nの各々は、アップストリームキュー7−2〜7−nに蓄積されたパケットを分配部10に順次中継する。
【0034】
動作指令パケット52は処理部2−2を宛先とし、動作指令パケット53は処理部2−3を宛先とし、動作指令パケット54は処理部2−4を宛先とする。動作指令パケット52は、分配部10からダウンストリームキュー8−2に供給され蓄積される。同様に、動作指令パケット53はダウンストリームキュー8−3に蓄積され、動作指令パケット54はダウンストリームキュー8−4にそれぞれ蓄積される。これらのパケットは、例えば、これらの処理部に対してメモリ23への直接アクセス(DMA(Direct Memory Access))を指示するものである。
【0035】
中継許可指示パケット42は、ダウンストリームキュー8−2に蓄積されているパケットのうちの例えば1つを中継することを許可するものであり、キュー出力制御部13を宛先としている。中継許可指示パケット42は、当該宛先情報と自身が中継許可指示パケットであることを示すパケット識別情報とをヘッダ内に含み、中継許可対象のキュー識別番号をペイロード内に含んでいる。
【0036】
キュー出力制御部13は、分配部10から分配され、ダウンストリームキュー8−1及びコンバータ5−1を経由してバス4−1に到来したパケットが中継許可指示パケット42であるか否かをパケット識別情報に基づいて判別する。
【0037】
キュー出力制御部13は、中継許可指示パケット42であると判別した場合に、中継許可指示パケット42に含まれるキュー識別番号により指定されたダウンストリームキュー8−2に蓄積されているパケットの1つをコンバータ5−2へ中継させる。この際、中継部6−2は、ダウンストリームキュー8−2から時系列順にパケットを1つ取り出してコンバータ5−2へ中継する。ここでは、動作指令パケット52がコンバータ5−2に中継される。コンバータ5−2は、動作指令パケット52をバス4−2を介して処理部2−2に供給する。
【0038】
処理部2−2は、動作指令パケット52に応じてメモリ23に対してリードアクセスパケット62を発する。メモリ23からは、読み出し完了通知72と共に読み出しデータ82が送信される。処理部2−2は、バス4−2を介して読出しデータ82を受信し、これを例えばUART等の通信規格に則った通信データ92として処理部入出力14−2(
図2)から外部に送信する。また、処理部2−2は、通信データ92の送信完了通知をCPU22に対して発することができる。
【0039】
続いて、CPU22から半導体集積回路1に対して中継許可指示パケット43が送信される。CPU22は、例えば、処理部2−2によって発せられた送信完了通知を受信したときに中継許可指示パケット43を発する。また、CPU22は、例えば、通信データ92の出力を監視する監視装置(図示せず)からの送信完了通知を受信したときに中継許可指示パケット43を発しても良い。中継許可指示パケット43は、半導体集積回路1のPCIe_IF12によって受信される。
【0040】
中継許可指示パケット43は、ダウンストリームキュー8−3に蓄積されているパケットのうちの例えば1つを中継することを許可するものであり、キュー出力制御部13を宛先としている。中継許可指示パケット43も、宛先情報、パケット識別情報、及びキュー識別番号を含んでいる。キュー出力制御部13は、分配部10からダウンストリームキュー8−1及びコンバータ5−1を経由してバス4−1に到来した中継許可指示パケット43を受信する。
【0041】
キュー出力制御部13は、中継許可指示パケット43によるキュー指定に応じて、ダウンストリームキュー8−3に蓄積されているパケットの1つをコンバータ5−3へ中継させる。ここでは、中継部6−3によってダウンストリームキュー8−3から動作指令パケット53が取り出されコンバータ5−3へ中継される。コンバータ5−3は、動作指令パケット53をバス4−3を介して処理部2−3に供給する。
【0042】
処理部2−3は、動作指令パケット53に応じてメモリ23に対してリードアクセスパケット63を発する。メモリ23からは、読み出し完了通知73と共に読み出しデータ83が送信される。処理部2−3は、バス4−3を介して読出しデータ83を受信し、これを例えばUSB等の通信規格に則った通信データ93として処理部入出力14−3(
図2)から外部に送信する。また、処理部2−3は、通信データ93の送信完了通知をCPU22に対して発することができる。
【0043】
続いて、CPU22から半導体集積回路1に対してキュー制御パケット44が送信される。CPU22は、例えば、処理部2−3又は監視装置(図示せず)によって発せられた送信完了通知を受信したときにキュー制御パケット44を発する。キュー制御パケット44は、半導体集積回路1のPCIe_IF12によって受信される。
【0044】
キュー制御パケット44は、ダウンストリームキュー8−4に蓄積されているパケットのうちの例えば1つを中継することを許可する中継許可指示パケットであり、キュー出力制御部13を宛先としている。中継許可指示パケット44も、宛先情報、パケット識別情報、及びキュー識別番号を含んでいる。キュー出力制御部13は、分配部10からダウンストリームキュー8−1及びコンバータ5−1を経由してバス4−1に到来した中継許可指示パケット44を受信する。
【0045】
キュー出力制御部14は、中継許可指示パケット44によるキュー指定に応じて、ダウンストリームキュー8−4に蓄積されているパケットの1つをコンバータ5−4へ中継させる。ここでは、中継部6−4によってダウンストリームキュー8−4から動作指令パケット54が取り出されコンバータ5−4へ中継される。コンバータ5−4は、動作指令パケット54をバス4−4を介して処理部2−4に供給する。
【0046】
処理部2−4は、動作指令パケット54に応じてメモリ24に対してリードアクセスパケット64を発する。メモリ23からは、読み出し完了通知74と共に読み出しデータ84が送信される。処理部2−4は、バス4−2を介して読出しデータ84を受信し、これを例えばSATA等の通信規格に則った通信データ94として処理部入出力14−4(
図2)から外部に送信する。
【0047】
半導体集積回路1による上記データ転送についてのデバッグのために、パケットアナライザ31は、例えば、
図3の(a)すなわちPCIe_IFダウンストリーム系列に示される中継許可指示パケット42〜44を観測対象とする。また、パケットアナライザ32は、例えば、
図3の(f)すなわち処理部入出力系列に示される通信データ92〜94を観測対象とする。これらを観測対象とした場合、時系列的には、中継許可指示パケット42、通信データ92、中継許可指示パケット43、通信データ93、中継許可指示パケット44、通信データ94の順に観測される。
【0048】
図4には、パケットアナライザ31及び32によって観測されるこれらのパケット及びデータが時系列順に示されている。パケットアナライザ31によって中継許可指示パケット42を観測した直後に、これに応じて処理部2−2に供給された動作指令パケット52に対応する通信データ92をパケットアナライザ32によって観測できる。故に、動作指令パケット52とこれに対応する通信データ92との関係を容易に把握することができる。同様に、動作指令パケット53とこれに対応する通信データ93との関係、及び動作指令パケット54とこれに対応する通信データ94との関係についても容易に把握することができる。
【0049】
上記したように、本実施例の半導体集積回路1は、外部から供給される中継停止指示パケット及び中継許可指示パケットに応じて、各処理部への動作指令パケットの供給タイミングを調整する。詳細には、半導体集積回路1は、複数の動作指令パケットを一時に受信したとしても、中継許可指示パケットを受信するまでは、これらを処理部に対して供給しない。半導体集積回路1は、1つの中継許可指示パケットを受信してはじめてこれに対応する1つの動作指令パケットを処理部に供給する。また、1つの動作指令パケットの供給を受けた処理部は、当該パケットの指令に応じたデータ処理により得られた1つの通信データを出力する。半導体集積回路1は、当該1つの中継許可指示パケットを受信してから当該1つの通信データを出力するまでの間に他の通信データを出力することは無い。故に、例えば
図4に示したように、パケットアナライザ31(
図2)によって1つの中継許可指示パケット(例えば符号42)を観測した直後に、パケットアナライザ32(
図2)によって1つの通信データ(例えば符号92)を観測できるので、1つの動作指令パケットと、これに対応する1つの通信データとの関係を把握することができる。
【0050】
かかる動作により、例えばPCIe等の通信規格に従ってスプリットトランザクションによる通信を行なった場合においても、動作指令パケットによる要求と、これに対する応答パケット(本実施例の通信データ)との関係を容易に把握することができる。特に、半導体集積回路1が複数のバス4−1〜4−nを備えている場合により大きな効果を奏する。バス4−1〜4−nの各々から出力される通信データがパケットアナライザ32において混在して観測されることが無くなるからである。
【0051】
また、例えば特許文献2に開示されている技術は、受信パケットを識別するためにシーケンス番号、アドレス、文字列・数値を用いるものであり、以下のような問題があった。シーケンス番号はPCIe規格における「タグ」に相当すると考えられる。PCIeのタグは処理未完了のパケットのみについて重複しないように管理するためのものなので、処理完了のパケットとの間でタグが重複することもあり得る。故に、PCIe通信の場合には、タグを用いてパケットを識別することが困難であるという問題がある。
【0052】
また、アドレスによって識別できるものは送信元と宛先なので、同一の送信先から送信された複数のパケットの各々についてその種別を識別することはできないという問題がある。更に、文字列・数値をパケットに付加するためには、パケット内に冗長なデータ領域を必要とする。しかし、例えばCPUがデバイスを制御する場合には、通常、パケット内には冗長なデータ領域は存在しない。故に、かかる場合には、文字列・数値を用いてパケットを識別できないという問題もあった。
【0053】
このように、従来技術においては、例えばPCIe等の通信規格に従ってパケットを通信する半導体集積回路においては、デバッグのためにパケットを観測してもその識別が困難であった。故に、例えばCPU等の外部デバイスからの要求パケットと、半導体集積回路内のデバイスからの応答パケットとの対応がわかり難く、デバッグの効率が低下してしまうという問題があった。
【0054】
これに対して、本実施例の半導体集積回路1においては、外部から供給される中継停止指示パケット及び中継許可指示パケットに応じて、各処理部への動作指令パケットの供給タイミングを調整するので、従来技術のような問題は生じない。
【0055】
このように、本実施例の半導体集積回路1によれば、外部からの要求とこれに対する応答との関係を容易に把握でき、デバッグを効率的に行なうことができる。
【0056】
<第2の実施例>
図5には、本発明の第2の実施例である半導体集積回路1の構成が示されている。以下、第1の実施例と異なる部分について主に説明する。
【0057】
コンバータ5−1とダウンストリームキュー8−1との間に中継部6−1が設けられている。中継部6−1は、第1の実施例の中継部6−2と同様の動作を行なう。また、アップストリームキュー7−1と選択部11−1との間に中継部9−1が設けられている。中継部9−1は、第1の実施例の中継部9−2と同様の動作を行なう。
【0058】
キュー出力制御部13は、PCIe_IF12によって受信された中継停止指示パケット及び中継許可指示パケットを取得する。キュー出力制御部13は、これらのパケットに含まれる宛先情報によって、これらが自身を宛先とするパケットであることを判別する。また、キュー出力制御部13は、これらのパケットに含まれるパケット識別情報によって、これらのパケットが中継停止指示パケット又は中継許可指示パケットであることを判別する。また、キュー出力制御部13は、中継許可指示パケットに含まれるキュー識別番号によって中継許可対象のキューを判別し、中継部6−1〜6−n及び9−1〜9−nを制御する。
【0059】
分配部10は、PCIe_IF12によって受信されたパケットのうちの、キュー出力制御部13によって取得されたパケット以外のパケットを、その宛先に応じてダウンストリームキュー8−1〜8−nのうちの1つに供給する。
【0060】
以下、
図3を参照しつつ、デバッグ時における半導体集積回路1の動作について説明する。
【0061】
先ず、外部デバイス20のCPU22から送信された中継停止指示パケット41、動作指令パケット52、53及び54、中継許可指示パケット42が半導体集積回路1のPCIe_IF12によって順次受信される。
【0062】
中継停止指示パケット41は、ダウンストリームキュー8−1〜8−nの各々に蓄積されているパケットの中継停止を指示するものであり、キュー出力制御部13を宛先としている。キュー出力制御部13は、中継停止指示パケット41をPCIe_IF12から直接受信する。
【0063】
キュー制御パケット41は、中継停止指示パケット41に応じて、中継部6−1によるダウンストリームキュー8−1からコンバータ5−1へのパケット中継を停止させる。同様に、キュー制御パケット41は、中継部6−2〜6−nによるコンバータ5−2〜5−nへのパケット中継を停止させる。
【0064】
動作指令パケット52はダウンストリームキュー8−2に蓄積され、動作指令パケット53はダウンストリームキュー8−3に蓄積され、動作指令パケット54はダウンストリームキュー8−4にそれぞれ蓄積される。
【0065】
中継許可指示パケット42は、ダウンストリームキュー8−2に蓄積されているパケットのうちの例えば1つを中継することを許可するものであり、キュー出力制御部13を宛先としている。キュー出力制御部13は、中継許可指示パケット42をPCIe_IF12から直接受信する。
【0066】
キュー出力制御部13は、中継許可指示パケット42に応じて、ダウンストリームキュー8−2に蓄積されている動作指令パケット52をコンバータ5−2に中継する。コンバータ5−2は、動作指令パケット52をバス4−2を介して処理部2−2に供給する。
【0067】
処理部2−2は、動作指令パケット52に応じてメモリ23に対してリードアクセスパケット62を発する。処理部2−2は、メモリ23から読み出し完了通知72と共に送信された読出しデータ82を受信し、これを例えばUART等の通信規格に則った通信データ92として処理部入出力14−2(
図2)から外部に出力する。
【0068】
半導体集積回路1は、中継許可指示パケット43及び44が外部デバイス20から供給された場合にも同様の動作を行なう。
【0069】
このように、本実施例の半導体集積回路1においては、キュー出力制御部13は中継停止指示パケット及び中継許可指示パケットを、バス4−1を介さずにPCIe_IF12から直接受信する。かかる構成により、バス4−1の経路についてのパケット中継タイミングをも適宜調整可能となるので、デバッグをより効率的に行なうことができる。また、キュー出力制御部13がこれらのパケットをPCIe_IF12から直接受信するので、タイミング調整の即応性が向上する。
【0070】
第1及び第2の実施例は、動作指令パケット52、53及び54の宛先が処理部2−2、2−3及び2−4である場合の例であるが、これに限られない。例えば、動作指令パケット52、53及び54が処理部2−1〜2−nのうちの1つを宛先とした場合においても、同様の処理により同様の効果を奏する。
【0071】
第1及び第2の実施例においては、デバッグの動作について説明したが、通常動作時すなわちデバッグを行わないときには、キュー出力制御部13は、中継部6−1〜6−n及び9−1〜9−nの各々に対して中継許可指令を発してパケット中継を許可している。