(57)【要約】【課題】プログラムデバッグの容易化又はプログラムデバッグの低コスト化を実現する。【解決手段】同一構成となる複数のＣＰＵブロック（ＣＰＵＢＫ［０］，ＣＰＵＢＫ［１］，…，ＣＰＵＢＫ［ｎ−１］，ＣＰＵＢＫ［ｎ］）５００ａを設け、モード設定レジスタ（ＭＲＥＧ）２１０によってＣＰＵＢＫ［０］，ＣＰＵＢＫ［ｎ−１］をプログラム実行用モードで動作させ、ＣＰＵＢＫ［１］，ＣＰＵＢＫ［ｎ］をデバッグ実行用モードで動作させる。ＣＰＵＢＫ［０］，ＣＰＵＢＫ［ｎ−１］からのデバッグ情報は、それぞれ、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０を介して出力され、ＣＰＵＢＫ［１］，ＣＰＵＢＫ［ｎ］のＤＩＭＡＣを介して収集される。ＣＰＵＢＫ［１］，ＣＰＵＢＫ［ｎ］のＤＩＭＡＣは、リング接続に伴う通信径路を持ち、互いにデバッグ情報等の送受信が可能となっている。【選択図】図１
2011159192.tif 000002
【特許請求の範囲】
【請求項１】
処理データを格納する第１メモリを含んだ第１中央演算処理回路と、
前記第１中央演算処理回路をプログラム実行用モードで動作させるかデバッグ実行用モードで動作させるかを設定する第１モードレジスタと、
第１入力ノードおよび第１出力ノードを持ち、前記第１入力ノードに入力されたデータを前記第１メモリに書き込む第１入力機能と、前記第１メモリから読み出したデータを前記第１出力ノードに出力する第１出力機能を含んだ第１コントローラと、
処理データを格納する第２メモリを含んだ第２中央演算処理回路と、
前記第２中央演算処理回路を前記プログラム実行用モードで動作させるか前記デバッグ実行用モードで動作させるかを設定する第２モードレジスタと、
第２入力ノードおよび第２出力ノードを持ち、前記第２入力ノードに入力されたデータを前記第２メモリに書き込む第２入力機能と、前記第２メモリから読み出したデータを前記第２出力ノードに出力する第２出力機能を含んだ第２コントローラと、
第１通信径路とを備え、
前記第１中央演算処理回路は、前記第１モードレジスタの設定に応じて前記プログラム実行用モードで動作し、
前記第１コントローラは、前記第１中央演算処理回路が前記プログラム実行用モードで動作する際に、前記第１出力機能を用いて前記第１メモリのデータを前記第１通信径路に伝送し、
前記第２中央演算処理回路は、前記第２モードレジスタの設定に応じて前記デバッグ実行用モードで動作し、
前記第２コントローラは、前記第２中央演算処理回路が前記デバッグ実行用モードで動作する際に、前記第２入力機能を用いて、前記第１通信径路を介して伝送された前記第１メモリのデータを前記第２メモリに伝送することを特徴とする半導体集積回路装置。
【請求項２】
請求項１記載の半導体集積回路装置において、さらに、
処理データを格納する第３メモリを含んだ第３中央演算処理回路と、
前記第３中央演算処理回路を前記プログラム実行用モードで動作させるか前記デバッグ実行用モードで動作させるかを設定する第３モードレジスタと、
第３入力ノードおよび第３出力ノードを持ち、前記第３入力ノードに入力されたデータを前記第３メモリに書き込む第３入力機能と、前記第３メモリから読み出したデータを前記第３出力ノードに出力する第３出力機能を含んだ第３コントローラと、
処理データを格納する第４メモリを含んだ第４中央演算処理回路と、
前記第４中央演算処理回路を前記プログラム実行用モードで動作させるか前記デバッグ実行用モードで動作させるかを設定する第４モードレジスタと、
第４入力ノードおよび第４出力ノードを持ち、前記第４入力ノードに入力されたデータを前記第４メモリに書き込む第４入力機能と、前記第４メモリから読み出したデータを前記第４出力ノードに出力する第４出力機能を含んだ第４コントローラと、
第２通信径路とを備え、
前記第３中央演算処理回路は、前記第３モードレジスタの設定に応じて前記プログラム実行用モードで動作し、
前記第３コントローラは、前記第３中央演算処理回路が前記プログラム実行用モードで動作する際に、前記第３出力機能を用いて前記第３メモリのデータを前記第２通信径路に伝送し、
前記第４中央演算処理回路は、前記第４モードレジスタの設定に応じて前記デバッグ実行用モードで動作し、
前記第４コントローラは、前記第４中央演算処理回路が前記デバッグ実行用モードで動作する際に、前記第４入力機能を用いて、前記第２通信径路を介して伝送された前記第３メモリのデータを前記第４メモリに伝送し、
前記第２コントローラは、さらに、
第５入力ノードおよび第５出力ノードと、
前記第２中央演算処理回路が前記デバッグ実行用モードで動作する際に、前記第５入力ノードに入力されたデータを前記第２メモリに書き込む第５入力機能と、
前記第２中央演算処理回路が前記デバッグ実行用モードで動作する際に、前記第２メモリから読み出したデータを前記第５出力ノードに出力する第５出力機能とを備え、
前記第４コントローラは、さらに、
第６入力ノードおよび第６出力ノードと、
前記第４中央演算処理回路が前記デバッグ実行用モードで動作する際に、前記第６入力ノードに入力されたデータを前記第４メモリに書き込む第６入力機能と、
前記第４中央演算処理回路が前記デバッグ実行用モードで動作する際に、前記第４メモリから読み出したデータを前記第６出力ノードに出力する第６出力機能とを備え、
前記第５入力ノードは、前記第６出力ノードとの間で第３通信径路を持ち、
前記第６入力ノードは、前記第５出力ノードとの間で第４通信径路を持つことを特徴とする半導体集積回路装置。
【請求項３】
請求項２記載の半導体集積回路装置において、
前記半導体集積回路装置は、さらに、前記プログラム実行用モードに設定されるＮ個（Ｎは整数）の中央演算処理回路と、これと１対１で対応するように、前記デバッグ実行用モードに設定されるＮ個の中央演算処理回路とを有する半導体集積回路装置。
【請求項４】
請求項２記載の半導体集積回路装置において、
前記第３通信径路および前記第４通信径路は、１個のリング配線径路内に構築されることを特徴とする半導体集積回路装置。
【請求項５】
請求項４記載の半導体集積回路装置において、さらに、
前記リング配線径路の一部に接続された外部出力端子を有することを特徴とする半導体集積回路装置。
【請求項６】
請求項２記載の半導体集積回路装置において、
前記第１および第３中央演算処理回路、前記第１および第３モードレジスタ、および前記第１および第３コントローラは、第１半導体チップに形成され、
前記第２および第４中央演算処理回路、前記第２および第４モードレジスタ、および前記第２および第４コントローラは、第２半導体チップに形成され、
前記第１半導体チップと前記第２半導体チップは、三次元的に積層搭載されることを特徴とする半導体集積回路装置。
【請求項７】
三次元的に積層搭載された第１半導体チップおよび第２半導体チップと、
前記第１半導体チップと前記第２半導体チップ間の通信径路となる第１および第２通信径路とを備え、
前記第１半導体チップは、
処理データを格納する第１メモリを含んだ第１中央演算処理回路と、
前記第１中央演算処理回路をプログラム実行用モードで動作させるかデバッグ実行用モードで動作させるかを設定する第１モードレジスタと、
第１入力ノードおよび第１出力ノードを持ち、前記第１入力ノードに入力されたデータを前記第１メモリに書き込む第１入力機能と、前記第１メモリから読み出したデータを前記第１出力ノードに出力する第１出力機能を含んだ第１コントローラと、
処理データを格納する第３メモリを含んだ第３中央演算処理回路と、
前記第３中央演算処理回路を前記プログラム実行用モードで動作させるか前記デバッグ実行用モードで動作させるかを設定する第３モードレジスタと、
第３入力ノードおよび第３出力ノードを持ち、前記第３入力ノードに入力されたデータを前記第３メモリに書き込む第３入力機能と、前記第３メモリから読み出したデータを前記第３出力ノードに出力する第３出力機能を含んだ第３コントローラとを有し、
前記第２半導体チップは、
処理データを格納する第２メモリを含んだ第２中央演算処理回路と、
前記第２中央演算処理回路を前記プログラム実行用モードで動作させるか前記デバッグ実行用モードで動作させるかを設定する第２モードレジスタと、
第２入力ノードおよび第２出力ノードを持ち、前記第２入力ノードに入力されたデータを前記第２メモリに書き込む第２入力機能と、前記第２メモリから読み出したデータを前記第２出力ノードに出力する第２出力機能を含んだ第２コントローラと、
処理データを格納する第４メモリを含んだ第４中央演算処理回路と、
前記第４中央演算処理回路を前記プログラム実行用モードで動作させるか前記デバッグ実行用モードで動作させるかを設定する第４モードレジスタと、
第４入力ノードおよび第４出力ノードを持ち、前記第４入力ノードに入力されたデータを前記第４メモリに書き込む第４入力機能と、前記第４メモリから読み出したデータを前記第４出力ノードに出力する第４出力機能を含んだ第４コントローラとを有し、
前記第１および第３中央演算処理回路は、前記第１および第３モードレジスタの設定に応じて前記プログラム実行用モードで動作し、
前記第２および第４中央演算処理回路は、前記第２および第４モードレジスタの設定に応じて前記デバッグ実行用モードで動作し、
前記第１コントローラは、前記第１出力機能を用いて前記第１メモリのデータを前記第１通信径路に伝送し、
前記第２コントローラは、前記第２入力機能を用いて、前記第１通信径路を介して伝送された前記第１メモリのデータを前記第２メモリに伝送し、
前記第３コントローラは、前記第３出力機能を用いて前記第３メモリのデータを前記第２通信径路に伝送し、
前記第４コントローラは、前記第４入力機能を用いて、前記第２通信径路を介して伝送された前記第３メモリのデータを前記第４メモリに伝送することを特徴とする半導体集積回路装置。
【請求項８】
請求項７記載の半導体集積回路装置において、
前記第２コントローラは、さらに、
第５入力ノードおよび第５出力ノードと、
前記第５入力ノードに入力されたデータを前記第２メモリに書き込む第５入力機能と、
前記第２メモリから読み出したデータを前記第５出力ノードに出力する第５出力機能とを備え、
前記第４コントローラは、さらに、
第６入力ノードおよび第６出力ノードと、
前記第６入力ノードに入力されたデータを前記第４メモリに書き込む第６入力機能と、
前記第４メモリから読み出したデータを前記第６出力ノードに出力する第６出力機能とを備え、
前記第５入力ノードは、前記第６出力ノードとの間で第３通信径路を持ち、
前記第６入力ノードは、前記第５出力ノードとの間で第４通信径路を持つことを特徴とする半導体集積回路装置。
【請求項９】
請求項８記載の半導体集積回路装置において、
前記第３通信径路および前記第４通信径路は、前記第２半導体チップ上に形成された１個のリング配線径路内に構築されることを特徴とする半導体集積回路装置。
【請求項１０】
請求項９記載の半導体集積回路装置において、
前記第２半導体チップは、さらに、前記リング配線径路の一部に接続された外部出力端子を有することを特徴とする半導体集積回路装置。
【請求項１１】
請求項７記載の半導体集積回路装置において、
前記第１および第２通信径路は、貫通ビアによって構築されることを特徴とする半導体集積回路装置。
【請求項１２】
請求項７記載の半導体集積回路装置において、
前記第１および第２通信径路は、ワイヤレス通信によって構築されることを特徴とする半導体集積回路装置。
【請求項１３】
第１プロセッサブロックおよび第２プロセッサブロックに分散して実装されたプログラムを第３プロセッサブロックおよび第４プロセッサブロックを用いてデバッグする方法であって、
前記第１〜第４プロセッサブロックのそれぞれは、プログラム実行用モードかデバッグ実行用モードかを設定するレジスタと、中央演算処理回路と、前記中央演算処理回路の処理データを格納するメモリと、第１入力機能および第１出力機能を持つコントローラとを備え、
前記第１出力機能は、前記プログラム実行用モードに設定された際に有効となり、前記メモリ上のデータを第１出力ノードに伝送し、
前記第１入力機能は、前記デバッグ実行用モードに設定された際に有効となり、第１入力ノードのデータを前記メモリへ伝送し、
前記第１プロセッサブロックの前記第１出力ノードは、前記第３プロセッサブロックの前記第１入力ノードとの間に第１通信径路を持ち、
前記第２プロセッサブロックの前記第１出力ノードは、前記第４プロセッサブロックの前記第１入力ノードとの間に第２通信径路を持ち、
前記第１および第２プロセッサブロックの前記レジスタが前記プログラム実行用モードに設定され、前記第３および第４プロセッサブロックの前記レジスタが前記デバッグ実行用モードに設定されることで、前記第３プロセッサブロックが、前記第１プロセッサブロックの前記第１出力機能と前記第３プロセッサブロックの前記第１入力機能を用いて前記第１プロセッサブロックのプログラム実行に伴うデバッグ情報を収集し、前記第４プロセッサブロックが、前記第２プロセッサブロックの前記第１出力機能と前記第４プロセッサブロックの前記第１入力機能を用いて前記第２プロセッサブロックのプログラム実行に伴うデバッグ情報を収集することを特徴とするプログラムのデバッグ方法。
【請求項１４】
請求項１３記載のプログラムのデバッグ方法であって、
前記第１〜第４プロセッサブロックに含まれる前記コントローラは、更に、第２入力機能および第２出力機能を備え、
前記第２入力機能は、前記デバッグ実行用モードに設定された際に有効となり、第２入力ノードのデータを前記メモリへ伝送し、
前記第２出力機能は、前記デバッグ実行用モードに設定された際に有効となり、前記メモリ上のデータを第２出力ノードへ伝送し、
前記第３プロセッサブロックの前記第２出力ノードは、前記第４プロセッサブロックの前記第２入力ノードとの間に第３通信径路を持ち、
前記第４プロセッサブロックの前記第２出力ノードは、前記第３プロセッサブロックの前記第２入力ノードとの間に第４通信径路を持ち、
前記第３プロセッサブロックが、前記第３プロセッサブロックの前記第２出力機能と前記第４プロセッサブロックの前記第２入力機能を用いて前記第１プロセッサブロックから収集した前記デバッグ情報の一部または全部を前記第４プロセッサブロックに転送することを特徴とするプログラムのデバッグ方法。
【請求項１５】
請求項１３記載のプログラムのデバッグ方法であって、
前記第１および第２プロセッサブロックは、第１半導体チップに形成され、
前記第３および第４プロセッサブロックは、第２半導体チップに形成され、
前記第１半導体チップと前記第２半導体チップが三次元的に積層搭載されることで、前記第１および第２通信径路が構築されることを特徴とするプログラムのデバッグ方法。
【請求項１６】
請求項１５記載のプログラムのデバッグ方法であって、
前記第１および第２通信径路は、無線通信によって構築されることを特徴とするプログラムのデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサおよびプログラム開発支援用デバッグ装置を含む半導体集積回路装置に関し、それを用いたデバッグ機能の実現ならびに実装方法に関して有効な技術に関する。
【背景技術】
【０００２】
年々大規模化・複雑化するアプリケーションを開発する上で、デバッグ装置によるプログラム開発の支援は必須である。現在一般的には、ＣＰＵ（Central Processing Unit）内に、プログラム実行時のデバッグ情報を取得するためのデバッグ回路を組み込み、チップ辺縁部に設けた出力端子を通じてそれらの情報を外部のＰＣ（Personal Computer）等に取り出し、外部のＰＣ上でプログラムの挙動を解析することが行われている。この際、通常チップ内部のデータはチップ辺縁部からピン端子を介してチップ外部へ出力されるが、チップ辺縁部に設置できるピン端子数の制約等により、チップ端子部がデータ出力帯域のボトルネックとなって出力帯域が不足し、それゆえＣＰＵから取得したデバッグ情報の全てを外部に取り出すことができず、情報の一部しか外部へ取り出せない、という問題が生じている。プロセッサのマルチコア／メニイコア化が進み、一つのＣＰＵに多数のＣＰＵコアが搭載されるようになった現在、この出力帯域不足の問題はますます深刻化している。これに関連して非特許文献１には、ワイヤレスインターコネクト技術を用いてチップ内部のデータをチップ上面からチップ外部へデータを出力する技術が記載される。この技術ではチップ上面部を使用することにより従来のボトルネックを回避し、従来よりも広いデータ出力帯域を確保することに成功している。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】「An Attachable Wireless Chip-Access Interface for Arbitrary Data Rate Using Pulse-Based Inductive-Coupling through LSI Package」、Hiroki Ishikuro, Toshihiro Sugahaara and Tadahiro Kuroda、IEEE International Solid-State Circuits Conference（ISSCC）、San Francisco、２００７年２月
【発明の概要】
【発明が解決しようとする課題】
【０００４】
前記背景技術の非特許文献１で説明した内容は、外部出力帯域を拡大するアプローチである。しかし１つのマイクロプロセッサ内に実装されるＣＰＵ数が年々増大の一途を辿っている現状では、外部出力帯域の拡大速度よりもＣＰＵ数の増大速度が上回るような状況であり、外部出力帯域の拡大だけでは問題を解決することが困難である。
【０００５】
一般にマルチコア／メニイコアプロセッサのデバッグにおいて、多数のＣＰＵからリアルタイムに得られる膨大なデバッグ情報を、漏れなくチップ外部に出力することは極めて困難である。また仮に出力できたとしても、膨大なデバッグ情報の中から真にバグ解析、あるいは性能チューニングに必要な情報をユーザが見つけ出すことも非常に困難である。
【０００６】
またマルチＣＰＵにおいては、一つの処理プロセスが複数のＣＰＵに分散して実行されることが一般的であるが、これもデバッグを困難なものとする。一つの処理プロセスが複数のＣＰＵでばらばらに実行されているため、１つのＣＰＵから得られるデバッグ情報だけではあるプロセスがどのように実行されたかの全貌を知ることはできず、断片だけしか知り得ない。全貌を知るためには複数のＣＰＵからデバッグ情報を得たうえで、それら複数のＣＰＵに分散しているデバッグ情報をプロセス毎にまとめ上げる必要があるが、これは現行の技術では困難である。
【０００７】
また１つのマイクロプロセッサ内に実装されるＣＰＵ数が爆発的に増えたことは、デバッグモジュールのハードウェア実装コストを増大させている。非常に多数のＣＰＵからリアルタイムで出力される大量のデバッグ情報をまとめてチップ外部に出力するためには膨大な配線の引き回しが必要であり、それだけで多大なハードウェアコストと実装コストが必要となる。
【０００８】
本発明は、このようなことを鑑みてなされたものであり、その目的の一つは、プログラムデバッグの容易化またはプログラムデバッグの低コスト化などを実現可能な半導体集積回路装置を提供することにある。具体的には、例えば、膨大なデバッグ情報の中から重要度の高い真に必要なデバッグ情報のみを取り出して出力する技術を提供することにある。更にその実現のために、コストの高い大量の専用ハードウェア論理を追加することなく、すでにある回路にわずかなハードウェアを追加するだけで上記技術を実現可能とする手段を提供することにある。本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち、代表的な実施の形態の概要を簡単に説明すれば、次のとおりである。
【００１０】
本実施の形態による半導体集積回路装置は、複数のＣＰＵを備え、各ＣＰＵに対して「プログラム実行用モード」と「デバッグ実行用モード」の２つのモードを定義可能な構成となっている。ここで「プログラム実行用モード」とは通常のＣＰＵとして動作するモードであり、「デバッグ実行用モード」とはデバッグ実行用ＣＰＵとして動作するモードである。各ＣＰＵには、これら２つの動作モードのうちどちらのモードで動作するかを設定するためのモード設定レジスタを設ける。これによりモード設定レジスタの設定を切り替えるだけで、同一のＣＰＵを、プログラム実行用ＣＰＵとしても、デバッグ実行用ＣＰＵとしても、切り替えて使用することが可能になる。
【００１１】
また、各ＣＰＵに対して、デバッグ情報を入出力するための、２つの入力径路と２つの出力径路を付け加える。各々２つ付け加えたデバッグ情報の入出力径路のうち一組は、プログラム実行用ＣＰＵと、そのプロセッサのデバッグを行うデバッグ実行用ＣＰＵとの間でデバッグ情報を入出力するために使用するものである。他方の一組は、デバッグ実行用ＣＰＵとして動作している際に、デバッグ実行用ＣＰＵ間でデバッグ情報を入出力するために使用するものである。
【００１２】
すなわち各ＣＰＵは、（１）デバッグ実行用モード動作時にプログラム実行用ＣＰＵからの情報を受信するための入力径路、（２）デバッグ実行用モード動作時に、自分以外のデバッグ実行用ＣＰＵからの情報を受信するための入力径路、（３）プログラム実行用モード動作時に、デバッグ実行用ＣＰＵへ情報を送信するための出力径路、（４）デバッグ実行用モード動作時に、自分以外のデバッグ実行用ＣＰＵへ情報を送信するための出力径路、の４つを備えている。デバッグ実行用モード動作時には入力径路（１）（２）ならびに出力径路（４）を使用し、出力径路（３）は使用しない。逆にプログラム実行用モード動作時には、出力径路（３）のみを使用し、入力径路（１）（２）ならびに出力径路（４）は使用しない。これらの入出力径路を設けることにより、あるＣＰＵが、プログラム実行用ＣＰＵ動作時も、デバッグ実行用ＣＰＵ動作時も、必要なデバッグ情報（あるいは性能チューニング用情報）を専用径路にて送受信することが可能になる。
【００１３】
デバッグ実行時には、全てのＣＰＵのうち、例えば、半数をプログラム実行用モード、残りの半数をデバッグ実行用モードで動作させる。全てのプログラム実行用ＣＰＵに対して、対となるデバッグ実行用ＣＰＵが定義され、プログラム実行用ＣＰＵの出力径路（３）とデバッグ実行用ＣＰＵの入力径路（１）が接続される。また、各デバッグ実行用ＣＰＵは、隣接するデバッグ実行用ＣＰＵ間が順次接続され、全体として大きな一つのリング状に接続される。各デバッグ実行用ＣＰＵの出力径路（４）は隣接するデバッグ実行用ＣＰＵの入力径路（２）に接続される。このような形態でプログラム実行用ＣＰＵとデバッグ実行用ＣＰＵを接続することで、わずかな追加ハードウェアコストにより、全てのプログラム実行用ＣＰＵから、全てのデバッグ実行用ＣＰＵにデバッグ情報を送信することが可能となる。
【００１４】
さらにこの大きな一つのリング状のデータ送受信径路は、少なくとも一か所で外部出力端子と接続される。このような形態でデバッグ実行用ＣＰＵと外部出力端子を接続することで、わずかな追加ハードウェアコストにより、全てのデバッグ実行用ＣＰＵは、外部出力端子との接続部分を介して、チップ外部へとデバッグ実行結果を（あるいは性能チューニング用情報）を出力することが可能になる。
【００１５】
デバッグ実行時には（ａ）情報収集モード、（ｂ）情報転送モード、（ｃ）情報出力モード、の３つの情報送受信モードが定義される。（ａ）の情報収集モードでは、前述したプログラム実行用ＣＰＵの出力径路（３）からデバッグ実行用ＣＰＵの入力径路（１）への接続径路を用いて、プログラム実行用ＣＰＵからデバッグ実行用ＣＰＵへデバッグ情報が送信される。このモードにより、プログラム実行用ＣＰＵからデバッグ実行用ＣＰＵへ、デバッグ情報を収集することが可能である。（ｂ）の情報転送モードでは、前述したデバッグ実行用ＣＰＵの出力径路（４）からデバッグ実行用ＣＰＵの入力径路（２）への接続径路を用いて、デバッグ実行用ＣＰＵからデバッグ実行用ＣＰＵへデバッグ情報が送信される。（ｃ）の情報出力モードでは、（ｂ）と同様な形の接続であるが、転送されたデバッグ情報は最終的には他のデバッグ実行用ＣＰＵに書き込まれるのではなく、外部出力端子からチップ外部へ出力される。
【００１６】
前述のように全てのデバッグ実行用ＣＰＵは大きな一つのリング状に接続されているため、（ａ）の情報収集モードで収集したデバッグ情報は、あらゆる任意のデバッグ実行用ＣＰＵに転送することが可能である。デバッグ実行用ＣＰＵは、その名の通りそれ自体が通常の汎用ＣＰＵであるため、高いデータ処理能力をデバッグのために活用することが可能となる。
【００１７】
さらに、本実施の形態による半導体集積回路装置は、所謂三次元実装技術と組み合わせることで、非常に強力なデバッグ装置を構成することが可能となる。具体的には、複数のＣＰＵ、および各ＣＰＵに対して前述した各種径路（１）〜（４）を構築するための付加回路から構成されるチップを、三次元的に複数枚重ね、それらを貫通ビアあるいはワイヤレスインターコネクト技術によって接続する。そして、隣接するチップのうち片方のチップのＣＰＵをプログラム実行用モード、他方のチップのＣＰＵをデバッグ実行用モードで動作させる。これにより、高性能なデバッグ機能を備えた三次元チップを容易に構成することが可能となる。
【００１８】
また、複数のＣＰＵならびに前述した付加回路から構成される全く同一のチップを、プログラム実行用、デバッグ実行用、という異なる二つの用途に使用することで、チップ作製コストを削減することが可能になる。すなわち従来は、高性能なデバッグ機能を実現するために高性能なデバッグ専用回路を作製する必要があったが、本実施の形態を用いることで高性能なデバッグ専用回路の作成は不要になる。さらに従来は、高性能なデバッグ機能を実現するためには、チップの中に高性能なデバッグ専用回路を組み込む必要があり、チップ面積の面で大きな負担となっていたが、本実施の形態を用いるとチップ内にそのような回路は不要となる。さらに三次元接続することで、たとえば実際に顧客に提供する製品にはデバッグ機能は不要であるのでチップ１層のみの製品を出荷し、デバッグ機能を必要とする開発者向けにのみ、チップを２層重ねたデバッグ機能を持つ開発者向けの製品を出荷する、といった対応が可能となる。さらに三次元実装技術において、貫通ビア技術ではなくワイヤレスインターコネクト技術を用いれば、全てのチップをチップ１層のみで出荷してプログラム実行用モードで動作させ、デバッグ機能が必要になった場合のみ、もう１つのチップを重ね合わせてワイヤレスインターコネクト技術で接続し、重ねたチップをデバッグ実行用モードで動作させることで、必要なときのみ、非常に簡易な手段で、高性能なデバッグ機能を実現することが可能になる。
【発明の効果】
【００１９】
本願において開示される発明のうち、代表的な実施の形態によって得られる効果を簡単に説明すると、プログラムデバッグの容易化またはプログラムデバッグの低コスト化が実現可能となる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施の形態１による半導体集積回路装置において、その全体構成例を示すブロック図である。
【図２】図１に示したＣＰＵブロックにおける特徴的な構成要素を示すブロック図である。
【図３】図１に示したＣＰＵブロックにおける他の特徴的な構成要素を示すブロック図である。
【図４】（ａ）〜（ｄ）は、図１に示したＣＰＵブロックが備える４種類の動作モードを示した説明図である。
【図５】図１の半導体集積回路装置において、プログラム実行用モードに設定されたＣＰＵブロックとデバッグ実行用モードに設定されたＣＰＵブロックとの間の接続例を示す説明図である。
【図６】図１の半導体集積回路装置において、デバッグ実行用モードに設定されたＣＰＵブロック間の接続例を示す説明図である。
【図７】図１の半導体集積回路装置の具体的な使用例を示す説明図である。
【図８】図７に続く説明図である。
【図９】図８に続く説明図である。
【図１０】図９に続く説明図である。
【図１１】図１０に続く説明図である。
【図１２】本発明の実施の形態２による半導体集積回路装置において、それに含まれる各ＣＰＵブロックの構成例を示すブロック図である。
【図１３】本発明の実施の形態２による半導体集積回路装置において、その全体構成例を示すブロック図である。
【図１４】（ａ）は、図１３の半導体集積回路装置における実装形態の一例を示す概略図であり、（ｂ）は、（ａ）における入出力コネクタの構成例を示す回路図である。
【図１５】図１３の半導体集積回路装置において、プログラム実行用モードに設定されたＣＰＵブロックとデバッグ実行用モードに設定されたＣＰＵブロックとの間の接続例を示す説明図である。
【図１６】図１３の半導体集積回路装置において、デバッグ実行用モードに設定されたＣＰＵブロック間の接続例を示す説明図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２２】
（実施の形態１）
図１は、本発明の実施の形態１による半導体集積回路装置において、その全体構成例を示すブロック図である。図１の半導体集積回路装置は、複数のＣＰＵブロック（ＣＰＵＢＫ）５００ａを備え、その一例として、図１には４個のＣＰＵブロックＣＰＵＢＫ［０］，ＣＰＵＢＫ［１］，…，ＣＰＵＢＫ［ｎ−１］，ＣＰＵＢＫ［ｎ］（ｎ＝３，５，…）が示されている。各ＣＰＵブロック（ＣＰＵＢＫ）５００ａは、中央処理装置（ＣＰＵ）１００ならびデバッグ装置構築用の付加回路（ＡＭ）２００を備える。中央処理装置（ＣＰＵ）１００は、デバッグ機能を実現するために、コントロールレジスタ（ＣＲＥＧ）１１０、デバッグ情報生成装置（ＤＩＧ）１２０、ならびにデバッグ情報記憶装置（ＤＩＭ）１３０を有している。
【００２３】
コントロールレジスタ（ＣＲＥＧ）１１０は、レジスタに書き込まれた値に従って、実行中の中央処理装置（ＣＰＵ）１００からどのようなトレース情報を取得するのかを設定する機能を有する。デバッグ情報生成装置（ＤＩＧ）１２０は、コントロールレジスタ（ＣＲＥＧ）１１０の設定に従って、動作中の中央処理装置（ＣＰＵ）１００からデバッグ用の情報を取り出す機能を有する。デバッグ情報記憶装置（ＤＩＭ）１３０は、デバッグ情報生成装置（ＤＩＧ）１２０が取り出したデバッグ情報を中央処理装置（ＣＰＵ）１００内部で一時的に保存するための記憶保持機能を有する。
【００２４】
付加回路（ＡＭ）２００は、モード設定レジスタ（ＭＲＥＧ）２１０、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０、デバッグ情報入力径路１（ＤＩ１）２３０、デバッグ情報出力径路１（ＤＯ１）２４０、デバッグ情報入力径路２（ＤＩ２）２５０、デバッグ情報出力径路２（ＤＯ２）２６０、から構成される。モード設定レジスタ（ＭＲＥＧ）２１０は、中央処理装置（ＣＰＵ）１００に対して「プログラム実行用モード」と「デバッグ実行用モード」の２つのモードのうちどちらで動作するのかを設定する機能を有する。プログラム実行用モードが選択されている場合は、中央処理装置（ＣＰＵ）１００は、モード設定レジスタ（ＭＲＥＧ）２１０を持たない状態と同様に、与えられたプログラムに従って演算処理動作を実行する。デバッグ実行用モードが選択されている場合は、中央処理装置（ＣＰＵ）１００は、通常のプログラムではなくデバッグ実行用のプログラムを実行する。デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０は、デバッグ情報記憶装置（ＤＩＭ）１３０、ならびにデバッグ情報入力径路１（ＤＩ１）２３０、デバッグ情報出力径路１（ＤＯ１）２４０、デバッグ情報入力径路２（ＤＩ２）２５０、ならびにデバッグ情報出力径路２（ＤＯ２）２６０の各々の間のデバッグ情報の入出力を制御する機能を有する。
【００２５】
デバッグ情報入力径路１（ＤＩ１）２３０は、プログラム実行用モードで動作する中央処理装置（ＣＰＵ）１００のデバッグ情報を、デバッグ実行用モードで動作する別の中央処理装置（ＣＰＵ）１００へ転送するときの入力径路としての機能を有する。デバッグ情報出力径路（ＤＯ１）２４０は、プログラム実行用モードで動作する中央処理装置（ＣＰＵ）１００のデバッグ情報を、デバッグ実行用モードで動作する別の中央処理装置（ＣＰＵ）１００へ転送する時の出力径路としての機能を有する。デバッグ情報入力径路２（ＤＩ２）２５０は、デバッグ実行用モードで動作する中央処理装置（ＣＰＵ）１００のデバッグ情報を、同様にデバッグ実行用モードで動作する別の中央処理装置（ＣＰＵ）１００へ転送するときの入力径路としての機能を有する。デバッグ情報出力径路２（ＤＯ２）２６０は、デバッグ実行用モードで動作する中央処理装置（ＣＰＵ）１００のデバッグ情報を、同様にデバッグ実行用モードで動作する別の中央処理装置（ＣＰＵ）１００へ転送するときの出力径路としての機能を有する。
【００２６】
また、図１の半導体集積回路装置の例では、偶数番となるＣＰＵブロック（ＣＰＵＢＫ［０］，…，ＣＰＵＢＫ［ｎ−１］）５００ａがプログラム実行用モード（ＰＭＯＤ）に設定され、奇数番となるＣＰＵブロック（ＣＰＵＢＫ［１］，…，ＣＰＵＢＫ［ｎ］）５００ａがデバッグ実行用モード（ＤＭＯＤ）に設定されている。そして、偶数番となるＣＰＵＢＫ［０］におけるデバッグ情報出力径路１（ＤＯ１）２４０が奇数番となるＣＰＵＢＫ［１］におけるデバッグ情報入力径路１（ＤＩ１）２３０に接続され、以降同様にして、ＣＰＵＢＫ［ｎ−１］におけるデバッグ情報出力径路１（ＤＯ１）２４０がＣＰＵＢＫ［ｎ］におけるデバッグ情報入力径路１（ＤＩ１）２３０に接続される。
【００２７】
デバッグ実行用モードに設定された奇数番となるＣＰＵブロック（ＣＰＵＢＫ［１］，…，ＣＰＵＢＫ［ｎ］）５００ａでは、隣接するＣＰＵブロック（ＣＰＵＢＫ［ｍ］，ＣＰＵＢＫ［ｍ＋２］）（ｍは奇数）で、ＣＰＵＢＫ［ｍ］のデバッグ情報出力径路２（ＤＯ２）２６０がＣＰＵＢＫ［ｍ＋２］のデバッグ情報入力径路２（ＤＩ２）２５０に順次接続される。そして、ＣＰＵブロック（ＣＰＵＢＫ［ｎ］）のデバッグ情報出力径路２（ＤＯ２）２６０がＣＰＵブロック（ＣＰＵＢＫ［１］）のデバッグ情報入力径路２（ＤＩ２）２５０に接続されることで、デバッグ実行用モードに設定された各ＣＰＵブロックは、全体として一つのリング状に接続される。このリング内の任意の箇所には、外部出力端子（ＥＯＴ）４００が設けられる。外部出力端子（ＥＯＴ）４００は、デバッグ実行用モードで動作する中央処理装置（ＣＰＵ）１００のデバッグ情報を、デバッグ情報出力径路２（ＤＯ２）２６０を通じて最終的にチップ外部に出力するための機能を有する。
【００２８】
図２および図３は、図１に示したＣＰＵブロック（ＣＰＵＢＫ）５００ａにおける特徴的な構成要素を示すものである。図２に示すＣＰＵブロック５００ａは、付加回路（ＡＭ）２００内にモード設定レジスタ（ＭＲＥＧ）２１０を備えている。このＭＲＥＧの設定によって、当該ＣＰＵブロック内の中央処理装置（ＣＰＵ）１００をプログラム実行用モードで動作させるかデバッグ実行用モードで動作させるかを任意に選択できる。すなわち、同一の中央処理装置（ＣＰＵ）１００を、プログラム実行用のみならずデバッグ実行用としても活用することができ、別途専用のデバッグ実行用回路等を設けずともデバッグを実行可能になる。これによって、ハードウェアコストの低減が図れる。また、プログラム実行用としても用いられる高性能なＣＰＵをデバッグ実行用として活用しているため、デバッグ処理能力の向上も図れる。
【００２９】
図３に示すＣＰＵブロック５００ａは、付加回路（ＡＭ）２００内にモード設定レジスタ（ＭＲＥＧ）２１０に加えてデバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０を備えている。デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０は、デバッグ情報記憶装置（ＤＩＭ）１３０との間のアクセス径路を持つ他に、次の４個の径路を持っている。まず、デバッグ情報入力径路１（ＤＩ１）２３０を持つことで、プログラム実行用モードで動作する他のＣＰＵブロックからのデバッグ情報を受け、そのデバッグ情報に対して自身のＣＰＵブロックの中央処理装置（ＣＰＵ）１００を用いて解析等を行うことができる。反対に、デバッグ情報出力径路１（ＤＯ１）２４０を持つことで、自身のプログラム実行に伴うデバッグ情報の解析等を、デバッグ実行用モードで動作する他のＣＰＵブロックに依頼することができる。また、デバッグ情報入力径路２（ＤＩ２）２５０およびデバッグ情報出力径路２（ＤＯ２）２６０を持つことで、デバッグ実行用モードで動作するＣＰＵブロック間でデータの受け渡しを行うことができる。すなわち、例えば、デバッグ実行用モードで動作する他のＣＰＵブロックのデバッグ情報を分担して解析したり、あるいは逆に分担を依頼することなどが可能となる。
【００３０】
図４（ａ）〜（ｄ）は、図１に示したＣＰＵブロック（ＣＰＵＢＫ）５００ａが備える４種類の動作モードを示した説明図である。図４（ａ）には、プログラム実行用モード（ＰＭＯＤ）に設定されたＣＰＵブロック５００ａの動作内容が示されている。ここでは、中央処理装置（ＣＰＵ）１００内のデバッグ情報生成装置（ＤＩＧ）１２０がコントロールレジスタ（ＣＲＥＧ）１１０に応じた内容のデバッグ情報を取得し、それをデバッグ情報記憶装置（ＤＩＭ）１３０に格納する。そして、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０は、このデバッグ情報記憶装置（ＤＩＭ）１３０に格納されたデバッグ情報をデバッグ情報出力径路１（ＤＯ１）２４０を介して出力する。
【００３１】
図４（ｂ）には、デバッグ実行用モード（ＤＭＯＤ）に設定され、図４（ａ）で述べたようなデバッグ情報出力径路１（ＤＯ１）２４０を介して出力されたデバッグ情報を収集する際のＣＰＵブロック５００ａの動作内容が示されている。ここでは、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０が、他のプログラム実行用のＣＰＵブロックからのデバッグ情報をデバッグ情報入力径路１（ＤＩ１）２３０を介して収集し、それをデバッグ情報記憶装置（ＤＩＭ）１３０に格納する。中央処理装置（ＣＰＵ）１００は、デバッグ情報記憶装置（ＤＩＭ）１３０に格納されたデバッグ情報に対して所定の解析等を行う。
【００３２】
図４（ｃ）には、デバッグ実行用モード（ＤＭＯＤ）に設定され、他のデバッグ実行用モード（ＤＭＯＤ）に設定されたＣＰＵブロック間でデータ転送を行う際のＣＰＵブロック５００ａの動作内容が示されている。ここでは、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０が、他のデバッグ実行用のＣＰＵブロックから出力されたデバッグ情報や解析結果等をデバッグ情報入力径路２（ＤＩ２）２５０を介して受信し、それをデバッグ情報記憶装置（ＤＩＭ）１３０に格納する。これによって、中央処理装置（ＣＰＵ）１００は、例えば、他のデバッグ実行用のＣＰＵブロックからのデバッグ情報を対象に解析等を行うことができる。また、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０は、デバッグ情報記憶装置（ＤＩＭ）１３０に格納されたデバッグ情報または解析結果等を受信し、それを、デバッグ情報出力径路２（ＤＯ２）２６０を介して他のデバッグ実行用のＣＰＵブロックへ転送する。これによって、中央処理装置（ＣＰＵ）１００は、例えば、他のデバッグ実行用のＣＰＵブロックに対してデバッグ情報の解析等を依頼することができる。
【００３３】
図４（ｄ）には、デバッグ実行用モード（ＤＭＯＤ）に設定され、図４（ｃ）で述べたような解析等を終えたのち、それを外部出力端子（ＥＯＴ）４００を介して出力する際のＣＰＵブロック５００ａの動作内容が示されている。ここでは、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０が、デバッグ情報記憶装置（ＤＩＭ）１３０に格納された解析結果等を受信し、それをデバッグ情報出力径路２（ＤＯ２）２６０を介して外部出力端子（ＥＯＴ）４００に向けて出力する。また、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０は、同様にして他のデバッグ実行用のＣＰＵブロックで得られた解析結果等をデバッグ情報入力径路２（ＤＩ２）２５０を介して受信し、それをデバッグ情報出力径路２（ＤＯ２）２６０を介して外部出力端子（ＥＯＴ）４００に向けて出力する。
【００３４】
図５は、図１の半導体集積回路装置において、プログラム実行用モードに設定されたＣＰＵブロックとデバッグ実行用モードに設定されたＣＰＵブロックとの間の接続例を示す説明図である。図５に示すように、プログラム実行用モード（ＰＭＯＤ）に設定されたＣＰＵブロック（ＣＰＵＢＫ［ｎ−１］）５００ａのデバッグ情報出力径路１（ＤＯ１）２４０が、デバッグ実行用モード（ＤＭＯＤ）に設定されたＣＰＵブロック（ＣＰＵＢＫ［ｎ］）５００ａのデバッグ情報入力径路１（ＤＩ１）２３０に接続される。このように、ＣＰＵＢＫ［ｎ−１］にＣＰＵＢＫ［ｎ］を１対１で接続してデバッグを行うことで、デバッグの処理能力を向上させることが可能となる。
【００３５】
図６は、図１の半導体集積回路装置において、デバッグ実行用モードに設定されたＣＰＵブロック間の接続例を示す説明図である。図６に示すように、デバッグ実行用のＣＰＵブロック（ＣＰＵＢＫ［１］，…，ＣＰＵＢＫ［ｎ］）は、そのデバッグ情報入力径路２（ＤＩ２）２５０およびデバッグ情報出力径路２（ＤＯ２）２６０がリング状に接続されると共に、そのリング内の一部から外部出力端子（ＥＯＴ）４００に出力可能となっている。このようにリング接続を介して外部出力端子（ＥＯＴ）４００に接続することで、例えば、各ＣＰＵブロックに外部出力端子を設けずとも、各ＣＰＵブロックにおける解析結果等を外部出力端子に出力することが可能となる。また、リング接続によって、例えば、あるＣＰＵブロックにおける解析結果等を複数のＣＰＵブロックに分散したり、あるいは複数のＣＰＵブロックにおける解析結果等を一つのＣＰＵブロックに統合したりすることが可能となり、高性能なデバッグが実現可能となる。さらに、リング接続を用いると、このような情報のやり取りをバス接続で行う場合と比べて、配線を簡略化することができ、また、バスの調停に伴う帯域低下等も抑制できる。
【００３６】
次に、図７〜図１１を用いて、図１の半導体集積回路装置の具体的な使用例について説明する。まず、図７に示すように、モード設定レジスタ（ＭＲＥＧ）２１０を介してプログラム実行用モードに設定されたＣＰＵブロック（ＣＰＵＢＫ［０］，ＣＰＵＢＫ［ｎ−１］）５００ａに対して、コントロールレジスタ（ＣＲＥＧ）１１０を用いて取得したいデバッグ情報を指定する。そうすると、ＣＰＵＢＫ［０］，ＣＰＵＢＫ［ｎ−１］のそれぞれにおいて、指定されたデバッグ情報がデバッグ情報生成装置（ＤＩＧ）１２０によってデバッグ情報記憶装置（ＤＩＭ）１３０に格納され、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０が、この格納されたデバッグ情報をデバッグ情報出力径路１（ＤＯ１）２４０に出力する。
【００３７】
一方、モード設定レジスタ（ＭＲＥＧ）２１０を介してデバッグ実行用モードに設定されたＣＰＵブロック（ＣＰＵＢＫ［１］）５００ａは、ＣＰＵＢＫ［０］から出力されたデバッグ情報をデバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０のデバッグ情報入力径路１（ＤＩ１）２３０を介して収集する。同様にして、デバッグ実行用モードに設定されたＣＰＵブロック（ＣＰＵＢＫ［ｎ］）５００ａも、ＣＰＵＢＫ［ｎ−１］から出力されたデバッグ情報を収集する。
【００３８】
ここで、例えば、ＣＰＵＢＫ［０］が、仕事Ａの一部と仕事Ｂの一部のプログラム処理を実行し、ＣＰＵＢＫ［ｎ−１］が、仕事Ａの他の一部と仕事Ｂの他の一部のプログラム処理を実行したものとする。この場合、図８に示すように、ＣＰＵＢＫ［１］の中央処理装置（ＣＰＵ）１００は、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０に対して、例えば仕事Ｂの一部に関するデバッグ情報をデバッグ情報記憶装置（ＤＩＭ）１３０から取得させる。また、ＣＰＵＢＫ［ｎ］の中央処理装置（ＣＰＵ）１００は、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０に対して、例えば仕事Ａの他の一部に関するデバッグ情報をデバッグ情報記憶装置（ＤＩＭ）１３０から取得させる。
【００３９】
続いて、図９に示すように、ＣＰＵＢＫ［１］の中央処理装置（ＣＰＵ）１００は、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０を用いて、仕事Ｂの一部に関するデバッグ情報をリング接続を介してＣＰＵＢＫ［ｎ］に転送する。同様に、ＣＰＵＢＫ［ｎ］の中央処理装置（ＣＰＵ）１００は、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０を用いて、仕事Ａの他の一部に関するデバッグ情報をリング接続を介してＣＰＵＢＫ［１］に転送する。次いで、ＣＰＵＢＫ［１］のデバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０は、リング接続を介して転送されてきた仕事Ａの他の一部に関するデバッグ情報をデバッグ情報記憶装置（ＤＩＭ）１３０に格納する。同様に、ＣＰＵＢＫ［ｎ］のデバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０は、リング接続を介して転送されてきた仕事Ｂの一部に関するデバッグ情報をデバッグ情報記憶装置（ＤＩＭ）１３０に格納する。そして、ＣＰＵＢＫ［１］の中央処理装置（ＣＰＵ）１００は、前述した仕事Ａの一部と他の一部に関するデバッグ情報を対象に解析等を行い、ＣＰＵＢＫ［ｎ］の中央処理装置（ＣＰＵ）１００は、前述した仕事Ｂの一部と他の一部に関するデバッグ情報を対象に解析等を行う。
【００４０】
解析結果等が得られると、図１０に示すように、ＣＰＵＢＫ［１］の中央処理装置（ＣＰＵ）１００は、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０に対して、仕事Ａに関する解析結果等をデバッグ情報記憶装置（ＤＩＭ）１３０から取得させる。また、ＣＰＵＢＫ［ｎ］の中央処理装置（ＣＰＵ）１００は、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０に対して、仕事Ｂに関する解析結果等をデバッグ情報記憶装置（ＤＩＭ）１３０から取得させる。そして、図１１に示すように、ＣＰＵＢＫ［１］の中央処理装置（ＣＰＵ）１００は、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０を用いて、仕事Ａに関する解析結果等をリング接続を介して外部出力端子（ＥＯＴ）４００に出力する。同様に、ＣＰＵＢＫ［ｎ］の中央処理装置（ＣＰＵ）１００は、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０を用いて、仕事Ｂに関する解析結果等をリング接続を介して外部出力端子（ＥＯＴ）４００に出力する。
【００４１】
これにより、一つの処理プロセスが複数のＣＰＵに分散して実行された場合でも、そのデバッグが容易に実現可能となる。なお、ここでは、仕事Ａと仕事Ｂに関する解析等を行い、それぞれの解析結果等を全て出力する場合を例としたが、勿論、重要度に応じて仕事Ａのみを対象に解析等を行い、その解析結果等を出力させるようなことも可能である。
【００４２】
以上のように、本実施の形態１の半導体集積回路装置を用いることで、代表的には、プログラムデバッグの容易化またはプログラムデバッグの低コスト化などを実現可能となる。すなわち、ごくわずかなハードウェアの追加により、単一のＣＰＵを、通常演算用プロセッサとしても、デバッグ実行用プロセッサとしても動作させることができる。同様に、ごくわずかなハードウェアの追加により、（１）複数のＣＰＵから出力される膨大なデバッグ用情報／性能チューニング用情報を収集し、（２）それらの情報を必要に応じて複数のデバッグ実行用ＣＰＵに配分し、（３）収集した膨大なデバッグ用情報／性能チューニング用情報の中から重要度の高い情報のみを取り出して出力したり、情報を加工して出力することが可能な、従来手法よりもはるかに強力なデバッグ能力／性能チューニング能力を持つ半導体集積回路装置を実現することができる。さらに、以上の効果が実現できるにもかかわらず、これらを実現するために必要なハードウェアコストならびに実装コストは、従来手法と比較して大幅に削減することができる。
【００４３】
（実施の形態２）
図１２は、本発明の実施の形態２による半導体集積回路装置において、それに含まれる各ＣＰＵブロックの構成例を示すブロック図である。図１２に示すＣＰＵブロック５００ｂは、図３に示したＣＰＵブロック５００ａと比較して、付加回路（ＡＭ）２００内の構成が異なっている。それ以外の構成に関しては、図３と同様であるため詳細な説明は省略する。
【００４４】
図１２に示す付加回路（ＡＭ）２００は、モード設定レジスタ（ＭＲＥＧ）２１０、デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０、デバッグ情報入力径路１（ＤＩ１）２３０、デバッグ情報出力径路１（ＤＯ１）２４０、デバッグ情報入力径路２（ＤＩ２）２５０、デバッグ情報出力径路２（ＤＯ２）２６０、入出力インタフェース（ＩＯＩＦ）３００から構成される。モード設定レジスタ（ＭＲＥＧ）２１０は、中央処理装置（ＣＰＵ）１００に対して「プログラム実行用モード」と「デバッグ実行用モード」の２つのモードのうちどちらで動作するのかを設定する機能を有する。プログラム実行用モードが選択されている場合は、中央処理装置（ＣＰＵ）１００は、モード設定レジスタ（ＭＲＥＧ）２１０を持たない状態と同様に、与えられたプログラムに従って演算処理動作を実行する。デバッグ実行用モードが選択されている場合は、中央処理装置（ＣＰＵ）１００は、通常のプログラムではなくデバッグ実行用のプログラムを実行する。
【００４５】
デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）２２０は、デバッグ情報記憶装置（ＤＩＭ）１３０、ならびにデバッグ情報入力径路１（ＤＩ１）２３０、デバッグ情報出力径路１（ＤＯ１）２４０、デバッグ情報入力径路２（ＤＩ２）２５０、ならびにデバッグ情報出力径路２（ＤＯ２）２６０の各々の間のデバッグ情報の入出力を制御する機能を有する。デバッグ情報入力径路１（ＤＩ１）２３０は、プログラム実行用モードで動作する中央処理装置（ＣＰＵ）１００のデバッグ情報を、デバッグ実行用モードで動作する別の中央処理装置（ＣＰＵ）１００へ転送するときの入力径路としての機能を有する。デバッグ情報出力径路１（ＤＯ１）２４０は、プログラム実行用モードで動作する中央処理装置（ＣＰＵ）１００のデバッグ情報を、デバッグ実行用モードで動作する別の中央処理装置（ＣＰＵ）１００へ転送する時の出力径路としての機能を有する。デバッグ情報入力径路２（ＤＩ２）２５０は、デバッグ実行用モードで動作する中央処理装置（ＣＰＵ）１００のデバッグ情報を、同様にデバッグ実行用モードで動作する別の中央処理装置（ＣＰＵ）１００へ転送するときの入力径路としての機能を有する。デバッグ情報出力径路２（ＤＯ２）２６０は、デバッグ実行用モードで動作する中央処理装置（ＣＰＵ）１００のデバッグ情報を、同様にデバッグ実行用モードで動作する別の中央処理装置（ＣＰＵ）１００へ転送するときの出力径路としての機能を有する。
【００４６】
入出力インタフェース（ＩＯＩＦ）３００は、入出力セレクタ（ＩＯＳＥＬ）３１０ならびに入出力コネクタ（ＩＯＣ）３２０から構成される。入出力セレクタ（ＩＯＳＥＬ）３１０は、デバッグ情報入力径路１（ＤＩ１）２３０とデバッグ情報出力径路１（ＤＯ１）２４０のいずれかを選択して入出力コネクタ（ＩＯＣ）３２０に接続する機能を有する。入出力コネクタ（ＩＯＣ）３２０は、入出力セレクタ（ＩＯＳＥＬ）３１０によって選択されたデバッグ情報入力径路１（ＤＩ１）２３０もしくはデバッグ情報出力径路１（ＤＯ１）２４０を、他の中央処理装置（ＣＰＵ）１００の入出力コネクタ（ＩＯＣ）に入力もしくは出力する機能を有する。
【００４７】
図１３は、本発明の実施の形態２による半導体集積回路装置において、その全体構成例を示すブロック図である。図１３に示す半導体集積回路装置は、前述した図１の半導体集積回路装置とほぼ同様な構成となっているが、図１のＣＰＵブロック（ＣＰＵＢＫ）５００ａが図１２のＣＰＵブロック（ＣＰＵＢＫ）５００ｂに置き換わったことに伴い各ＣＰＵブロック間の配線が若干異なっている。すなわち、図１３では、プログラム実行用モード（ＰＭＯＤ）に設定されたＣＰＵブロック（ＣＰＵＢＫ［０］）５００ｂの入出力コネクタ（ＩＯＣ）３２０が、デバッグ実行用モード（ＤＭＯＤ）に設定されたＣＰＵブロック（ＣＰＵＢＫ［１］）５００ｂの入出力コネクタ（ＩＯＣ）３２０に電気的に結合される。同様に、プログラム実行用モード（ＰＭＯＤ）に設定されたＣＰＵブロック（ＣＰＵＢＫ［ｎ−１］）５００ｂ（ｎ＝３，５，…）の入出力コネクタ（ＩＯＣ）３２０は、デバッグ実行用モード（ＤＭＯＤ）に設定されたＣＰＵブロック（ＣＰＵＢＫ［ｎ］）５００ｂの入出力コネクタ（ＩＯＣ）３２０に電気的に結合される。なお、デバッグ実行用のＣＰＵブロック（ＣＰＵＢＫ［１］，…，ＣＰＵＢＫ［ｎ］）間におけるリング接続に関しては、図１の構成例と同様である。
【００４８】
図１４（ａ）は、図１３の半導体集積回路装置における実装形態の一例を示す概略図であり、図１４（ｂ）は、図１４（ａ）における入出力コネクタ（ＩＯＣ）３２０の構成例を示す回路図である。図１４（ａ）に示す半導体集積回路装置は、例えば、２枚の半導体チップ（ＣＰ１，ＣＰ２）６００が三次元的に積層搭載された構成となっている。ＣＰ１には、図１３に示したプログラム実行用のＣＰＵブロック（ＣＰＵＢＫ［０］，…，ＣＰＵＢＫ［ｎ−１］）５００ｂが形成され、ＣＰ２には、図１３に示したデバッグ実行用のＣＰＵブロック（ＣＰＵＢＫ［１］，…，ＣＰＵＢＫ［ｎ］）５００ｂが形成される。
【００４９】
前述したＣＰＵＢＫ［０］，…，ＣＰＵＢＫ［ｎ−１］内の入出力コネクタ（ＩＯＣ）３２０と、ＣＰＵＢＫ［１］，…，ＣＰＵＢＫ［ｎ］内の入出力コネクタ（ＩＯＣ）３２０との結合は、図１４（ｂ）に示すように、ワイヤレスインターコネクト技術や、あるいは貫通ビア技術によって構築される。すなわち、図１４（ｂ）に示すように、例えば半導体チップＣＰ１上に入出力コネクタ（ＩＯＣａ１）を設け、半導体チップＣＰ２上に入出力コネクタ（ＩＯＣａ２）を設けると、ＩＯＣａ１とＩＯＣａ２間で電磁誘導結合（Ｍ）を用いたワイヤレス通信が行える。また、例えば半導体チップＣＰ１上に入出力コネクタ（ＩＯＣｂ１）を設け、半導体チップＣＰ２上に入出力コネクタ（ＩＯＣｂ２）を設けると、ＩＯＣｂ１とＩＯＣｂ２間で静電誘導結合（Ｃ）を用いたワイヤレス通信が行える。さらに、例えば半導体チップＣＰ１上に入出力コネクタ（ＩＯＣｃ１）を設け、半導体チップＣＰ２上に入出力コネクタ（ＩＯＣｃ２）を設けると、ＩＯＣｃ１とＩＯＣｃ２間で貫通ビア（ＶＩＡ）を介した有線通信が行える。
【００５０】
図１５は、図１３の半導体集積回路装置において、プログラム実行用モードに設定されたＣＰＵブロックとデバッグ実行用モードに設定されたＣＰＵブロックとの間の接続例を示す説明図である。図１５に示すように、プログラム実行用モード（ＰＭＯＤ）に設定されたＣＰＵブロック（ＣＰＵＢＫ［ｎ−１］）５００ｂでは、デバッグ情報出力径路１（ＤＯ１）２４０が入出力セレクタ（ＩＯＳＥＬ）３１０を介して入出力コネクタ（ＩＯＣ）３２０に接続される。一方、デバッグ実行用モード（ＤＭＯＤ）に設定されたＣＰＵブロック（ＣＰＵＢＫ［ｎ］）５００ｂでは、デバッグ情報入力径路１（ＤＩ１）２３０が入出力セレクタ（ＩＯＳＥＬ）３１０を介して入出力コネクタ（ＩＯＣ）３２０に接続される。この２個の入出力コネクタ（ＩＯＣ）３２０を電気的に結合することで、ＣＰＵＢＫ［ｎ−１］のデバッグ情報出力径路１（ＤＯ１）２４０がＣＰＵＢＫ［ｎ］のデバッグ情報入力径路１（ＤＩ１）２３０に接続される。
【００５１】
このように、デバッグ情報入力径路１（ＤＩ１）２３０とデバッグ情報出力径路１（ＤＯ１）２４０への接続を兼用した入出力コネクタ（ＩＯＣ）３２０を用いることで、プログラム実行用のＣＰＵブロックとデバッグ実行用のＣＰＵブロックとの間の通信径路を簡略化できる。デバッグ期間中、プログラム実行用のＣＰＵブロックの入出力コネクタ（ＩＯＣ）３２０からは常時出力が行われ、デバッグ実行用のＣＰＵブロックの入出力コネクタ（ＩＯＣ）３２０からは常時入力が行われ、入力と出力の切り替えは特に生じないため、このような入出力コネクタ（ＩＯＣ）３２０を用いても、通信効率の低下等は生じない。
【００５２】
図１６は、図１３の半導体集積回路装置において、デバッグ実行用モードに設定されたＣＰＵブロック間の接続例を示す説明図である。図１６に示すように、デバッグ実行用のＣＰＵブロック（ＣＰＵＢＫ［１］，…，ＣＰＵＢＫ［ｎ］）は、そのデバッグ情報入力径路２（ＤＩ２）２５０およびデバッグ情報出力径路２（ＤＯ２）２６０がリング状に接続されると共に、そのリング内の一部から外部出力端子（ＥＯＴ）４００に出力可能となっている。これによって、図６等と同様の効果が得られる。
【００５３】
以上のように、本実施の形態２の半導体集積回路装置を用いることで、実施の形態１の場合と同様に、代表的には、プログラムデバッグの容易化またはプログラムデバッグの低コスト化などを実現可能となる。また、これらの効果を、実施の形態１の場合と比べて、更に向上させることが可能となる。すなわち、図１４に示したように、同一構成となる２個の半導体チップＣＰ１，ＣＰ２を作製し、例えば、プログラム開発用の装置として、それらを貫通ビア（ＶＩＡ）で接続した半導体集積回路装置を作製する。そして、ＣＰ２をデバッグモジュールとしてＣＰ１を用いたプログラム開発のデバッグを行い、最終的に、この開発したプログラムと積層を行わない１個の半導体チップ（ＣＰ１またはＣＰ２）を市場に提供する。このような方式を用いると、従来のように、各製品毎にデバッグモジュールを新たに開発する必要はなく、また、従来のように、デバッグモジュールをＣＰ１自身に組み込む必要もない。したがって、更なるプログラムデバッグの容易化またはプログラムデバッグの低コスト化が可能となり、加えて半導体チップ自体の低コスト化も図れる。
【００５４】
また、前述した貫通ビア（ＶＩＡ）を備えたデバッグ用の半導体集積回路装置を作製する代わりに、図１４（ｂ）に示したようなワイヤレスインターコネクト技術を備えた半導体チップＣＰ１，ＣＰ２を作製する。そして、ＣＰ１上にＣＰ２を重ね合わせ、この状態で、ＣＰ２をデバッグモジュールとしてＣＰ１を用いたプログラム開発のデバッグを行う。このような方式を用いると、前述した貫通ビア（ＶＩＡ）の場合の効果に加えて、更に、ＣＰ１，ＣＰ２を物理的に接続せずともデバッグが実行可能となるため、必要なときのみ、非常に簡易な手段で、高性能なデバッグを実現することが可能になる。
【００５５】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【符号の説明】
【００５６】
１００  中央処理装置（ＣＰＵ）
１１０  コントロールレジスタ（ＣＲＥＧ）
１２０  デバッグ情報生成装置（ＤＩＧ）
１３０  デバッグ情報記憶装置（ＤＩＭ）
２００  付加回路（ＡＭ）
２１０  モード設定レジスタ（ＭＲＥＧ）
２２０  デバッグ情報記憶装置アクセスコントローラ（ＤＩＭＡＣ）
２３０  デバッグ情報入力径路１（ＤＩ１）
２４０  デバッグ情報出力径路１（ＤＯ１）
２５０  デバッグ情報入力径路２（ＤＩ２）
２６０  デバッグ情報出力径路２（ＤＯ２）
３００  入出力インタフェース（ＩＯＩＦ）
３１０  入出力セレクタ（ＩＯＳＥＬ）
３２０  入出力コネクタ（ＩＯＣ）
４００  外部出力端子（ＥＯＴ）
５００  ＣＰＵブロック（ＣＰＵＢＫ）
６００  半導体チップ（ＣＰ）
【図１】
2011159192.tif 000003
【図２】
2011159192.tif 000004
【図３】
2011159192.tif 000005
【図４】
2011159192.tif 000006
【図５】
2011159192.tif 000007
【図６】
2011159192.tif 000008
【図７】
2011159192.tif 000009
【図８】
2011159192.tif 000010
【図９】
2011159192.tif 000011
【図１０】
2011159192.tif 000012
【図１１】
2011159192.tif 000013
【図１２】
2011159192.tif 000014
【図１３】
2011159192.tif 000015
【図１４】
2011159192.tif 000016
【図１５】
2011159192.tif 000017
【図１６】
2011159192.tif 000018