(57)【要約】  非対称型マルチプロセッサ装置（２）が提供され、各スレーブ診断ユニット（２０、２２、２４）は、対応する実行メカニズム（６、８、１０）に関連付けられる。マスター診断ユニット（２６）は、異なる実行メカニズム（６、８、１０）間におけるスレッド実行の移行を追跡し、所定スレッドの実行は、診断メカニズム（２０、２２、２４、２６）によって提供され、この情報は、プログラマに提供されることができる。実行メカニズム（６、８、１０）は、汎用プロセッサ（６）、ＤＭＡユニット（１２）、コプロセッサ、ＶＬＩＭプロセッサ、デジタル信号プロセッサ（８）、及びハードウェアアクセラレータ（１０）のように多様である。非対称型マルチプロセッサ装置（２）はまた通常、２つ以上のグローバルメモリ、共有メモリ（１６）、プライベートメモリ（１８）及びキャッシュメモリ（１４）等を含む非対称型メモリ階層を含む。
2010507855.tif 000002
【特許請求の範囲】
【請求項１】
非対称型マルチプロセッサ装置であって、
データ処理動作を実行するために各プログラム命令に応答する複数の実行メカニズムと、プログラム命令実行のスレッドは、前記複数の実行メカニズム間で時分割され、
診断動作を実行するために各実行メカニズムに各々関連付けられる複数のスレーブ診断ユニットと、
前記複数のスレーブ診断ユニットに接続され、実行メカニズム間における所定のスレッドの実行の移行に応答し、どの前記スレーブ診断ユニットが前記所定のスレッドに関して診断動作を実行するのに現在アクティブであるかの対応する変化を行うことで、前記マスター診断は、どの実行メカニズムが前記所定のスレッドを実行しているかの変化を追跡する、マスター診断ユニットと
を具備することを特徴とする装置。
【請求項２】
前記複数の実行メカニズムが同一のメモリマップを共有しないよう非対称型メモリ階層を具備することを特徴とする請求項１に記載の非対称型マルチプロセッサ装置。
【請求項３】
前記複数の実行メカニズムの少なくとも１つは、一つ以上の他の前記複数の実行メカニズムとは異なる処理アーキテクチャを有することを特徴とする請求項１及び２の何れか１項に記載の非対称型マルチプロセッサ装置。
【請求項４】
実行の前記移行は、１つの実行メカニズムからもう１つの実行メカニズムへの同期リモートプロシージャコールによることを特徴とする請求項１、２及び３の何れか１項に記載の非対称型マルチプロセッサ装置。
【請求項５】
前記マスター診断ユニットは、実行メカニズムから診断出力を提供し、前記診断出力における対応する変化を行うために前記所定のスレッドの実行メカニズムにおける変化に応答することを特徴とする請求項１〜４の何れか１項に記載の非対称型マルチプロセッサ装置。
【請求項６】
前記マスター診断ユニットは、現在前記所定のスレッドを実行する、実行メカニズムに関連付けられるスレーブ診断ユニットに前記所定のスレッドに関する診断コマンドを向けることを特徴とする請求項１〜５の何れか１項に記載の非対称型マルチプロセッサ装置。
【請求項７】
前記マスター診断ユニットは、一部が実行されることができるそれら実行メカニズムの各々の上で前記所定のスレッドの前記一部に関するブレイクポイントを設定することを特徴とする請求項１〜６の何れか１項に記載の非対称型マルチプロセッサ装置。
【請求項８】
前記ブレイクポイントは、各実行メカニズムによって前記一部に使用されるメモリアドレスに一致するメモリアドレスで設定されることを特徴とする請求項７に記載の非対称型マルチプロセッサ装置。
【請求項９】
前記ブレイクポイントがトリガされる時、前記マスター診断ユニットは、どのスレッドが前記ブレイクポイントをトリガしたかを判断することを特徴とする請求項７に記載の非対称型マルチプロセッサ装置。
【請求項１０】
複数のメモリを具備し、前記マスター診断ユニットは、前記データ項目を格納することができる前記複数のメモリの各々に関するデータ項目のウォッチポイントを設定することを特徴とする請求項１〜９の何れか１項に記載の非対称型マルチプロセッサ装置。
【請求項１１】
前記ウォッチポイントは、各メモリ内の前記データ項目に使用されるメモリアドレスに一致するメモリアドレスで設定されることを特徴とする請求項１０に記載の非対称型マルチプロセッサ装置。
【請求項１２】
前記ウォッチポイントがトリガされる時、前記マスター診断ユニットは、どのスレッドが前記ウォッチポイントをトリガしたかを判断することを特徴とする請求項１０に記載の非対称型マルチプロセッサ装置。
【請求項１３】
前記スレーブ診断ユニットは、スレーブ追跡ユニットであり、前記マスター診断ユニットは、マスター追跡ユニットであり、前記マスター追跡ユニットは、前記所定のスレッドのための追跡出力を形成する時、異なる実行メカニズム間における前記所定のスレッドの実行の移行を追跡することを特徴とする請求項１〜１２の何れか１項に記載の非対称型マルチプロセッサ装置。
【請求項１４】
前記スレーブ診断ユニットは、スレーブプロファイリングユニットであり、前記マスター診断ユニットは、マスタープロファイリングユニットであり、前記マスタープロファイリングユニットは、前記所定のスレッドのためのプロファイリング出力を形成する時、異なる実行メカニズム間における前記所定のスレッドの実行の移行を追跡することを特徴とする請求項１〜１３の何れか１項に記載の非対称型マルチプロセッサ装置。
【請求項１５】
前記複数の実行メカニズムは、
汎用プロセッサと、
ダイレクトメモリアクセスユニットと、
コプロセッサと、
ＶＬＩＷプロセッサと、
デジタル信号プロセッサと、
ハードウェアアクセラレータユニットと
の一つ以上を具備することを特徴とする請求項１〜１４の何れか１項に記載の方法。
【請求項１６】
前記非対称型メモリ階層は、
前記実行メカニズムの全てにアクセス可能なグローバル共有メモリと、
前記実行メカニズムの少なくとも２つにアクセス可能な共有メモリと、
前記実行メカニズムの１つにアクセス可能なプライベートメモリと
の２つ以上を具備することを特徴とする請求項４に記載の方法。
【請求項１７】
非対称型マルチプロセッサ装置上で診断動作を実行する方法であって、
複数の実行メカニズムでデータ処理動作を実行する各プログラム命令に応答する段階であって、プログラム命令実行のスレッドは、前記複数の実行メカニズム間で時分割される、段階と、
関連付けられる各スレーブ診断ユニットで前記複数の実行メカニズム上で診断動作を実行する段階と、
前記複数のスレーブ診断ユニットに接続され、実行メカニズム間で所定のスレッドの実行の移行に応答し、どの前記スレーブ診断ユニットが前記所定のスレッドに関して診断動作を実行するのに現在アクティブであるかの対応する変化を行うことで、前記マスター診断は、どの実行メカニズムが前記所定のスレッドを実行しているかの変化を追跡するマスター診断ユニットを使用する段階と
を具備することを特徴とする方法。
【請求項１８】
前記非対称型マルチプロセシング装置は、前記複数の実行メカニズムが同一のメモリマップを共有しないよう非対称型メモリ階層を具備することを特徴とする請求項１７に記載の方法。
【請求項１９】
前記複数の実行メカニズムの少なくとも１つは、一つ以上の他の前記複数の実行メカニズムとは異なる処理アーキテクチャを有することを特徴とする請求項１７及び１８の何れか１項に記載の方法。
【請求項２０】
実行の前記移行は、１つの実行メカニズムからもう１つの実行メカニズムへの同期リモートプロシージャコールによることを特徴とする請求項１７、１８及び１９の何れか１項に記載の方法。
【請求項２１】
前記マスター診断ユニットは、実行メカニズムから診断出力を提供し、前記診断出力における対応する変化を行うために前記所定のスレッドのための実行メカニズムにおける変化に応答することを特徴とする請求項１７〜２０の何れか１項に記載の方法。
【請求項２２】
前記マスター診断ユニットは、現在前記所定のスレッドを実行する、実行メカニズムに関連付けられるスレーブ診断ユニットに前記所定のスレッドに関する診断コマンドを向けることを特徴とする請求項１７〜２０の何れか１項に記載の方法。
【請求項２３】
前記マスター診断ユニットは、一部が実行されることができるそれら実行メカニズムの各々の上で前記所定のスレッドの前記一部に関するブレイクポイントを設定することを特徴とする請求項１７〜２２の何れか１項に記載の方法。
【請求項２４】
前記ブレイクポイントは、各実行メカニズムによって前記一部に使用されるメモリアドレスに一致するメモリアドレスで設定されることを特徴とする請求項２３に記載の方法。
【請求項２５】
前記ブレイクポイントがトリガされる時、前記マスター診断ユニットは、どのスレッドが前記ブレイクポイントをトリガしたかを判断することを特徴とする請求項２３に記載の方法。
【請求項２６】
前記非対称型マルチプロセシング装置は、複数のメモリを具備し、前記マスター診断ユニットは、前記データ項目を格納することができる前記複数のメモリの各々に関するデータ項目のためのウォッチポイントを設定することを特徴とする請求項１７〜２５の何れか１項に記載の方法。
【請求項２７】
前記ウォッチポイントは、各メモリ内の前記データ項目に使用されるメモリアドレスに一致するメモリアドレスで設定されることを特徴とする請求項２６に記載の方法。
【請求項２８】
前記ウォッチポイントがトリガされる時、前記マスター診断ユニットは、どのスレッドが前記ウォッチポイントをトリガしたかを判断することを特徴とする請求項２６に記載の方法。
【請求項２９】
前記スレーブ診断ユニットは、スレーブ追跡ユニットであり、前記マスター診断ユニットは、マスター追跡ユニットであり、前記マスター追跡ユニットは、前記所定のスレッドのための追跡出力を形成する時、異なる実行メカニズム間における前記所定のスレッドの実行の移行を追跡することを特徴とする請求項１７〜２８の何れか１項に記載の方法。
【請求項３０】
前記スレーブ診断ユニットは、スレーブプロファイリングユニットであり、前記マスター診断ユニットは、マスタープロファイリングユニットであり、前記マスタープロファイリングユニットは、前記所定のスレッドのためのプロファイリング出力を形成する時、異なる実行メカニズム間における前記所定のスレッドの実行の移行を追跡することを特徴とする請求項１７〜２９の何れか１項に記載の方法。
【請求項３１】
前記複数の実行メカニズムは、
汎用プロセッサと、
ダイレクトメモリアクセスユニットと、
コプロセッサと、
ＶＬＩＭプロセッサと、
デジタル信号プロセッサと、
ハードウェアアクセラレータユニットと
の一つ以上を具備することを特徴とする請求項１７〜３０の何れか１項に記載の方法。
【請求項３２】
前記非対称型メモリ階層は、
前記実行メカニズムの全てにアクセス可能なグローバル共有メモリと、
前記実行メカニズムの少なくとも２つにアクセス可能な共有メモリと、
前記実行メカニズムの１つにアクセス可能なプライベートメモリと
の２つ以上を具備することを特徴とする請求項２０に記載の方法。
【請求項３３】
請求項１７〜３２の何れか１項に記載の方法に従って、マスター診断ユニット及び複数のスレーブ診断ユニットを制御するためにコンピュータを制御するためのコンピュータプログラムを持つことを特徴とするコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムに関する。具体的に、本発明は、非対称型マルチプロセッサ装置に用いる診断メカニズムの提供に関する。
【背景技術】
【０００２】
デバッグメカニズム、追跡メカニズム及びプロファイリングメカニズムのような診断メカニズムは、データ処理システム開発の分野で重要になってきている。データ処理システムがより複雑になり、その開発及びテスト期間が短くなっているので、データ処理システムに関連付けられる問題を識別し、その設計及び構成を調整することによってそれらデータ処理システムの性能を高めるのに使用できる、強力で取扱いが楽な診断メカニズムの需要が高まっている。
【０００３】
データ処理システムにおけるもう１つの傾向は、マルチプロセッサシステムの使用の増加である。これらは、プログラム又はタスクの異なるスレッドで通常同時の処理を許容することによって、比較的高い性能を与えるのに使用される。そのようなマルチプロセッサシステムの一形式は、対称型マルチプロセッサシステムとして知られる。そのような対称型システムは通常、プログラム及びデータメモリの同一のコヒーレントビューを各々有する複数の同一プロセッサコアを含み、オペレーティングシステムソフトウェアは、個々のプロセッサへの実行すべきタスク／スレッドの割り当て、及びプロセッサ間のタスク／スレッドの移行に関与する。即ち、プログラム命令実行の単一スレッドは、オペレーティングシステム制御下で複数のプロセッサ間において時分割される。そのような対称型システムにおいて、オペレーティングシステムは、オペレーティングシステムのスケジューリングが１つのプロセッサからもう１つのプロセッサへの実行を移行する時であっても、どこの個々のタスク／スレッドが実行されているかを判断し、単一のプロセッサ上で実行する単一スレッドの出現をプログラマに提供するのに使用することができる。そのような手法は、プロセッサが同一である点、及び移行がオペレーティングシステムによって、即ちプログラム自体によってトリガされることなく実行される点に限定される。
【０００４】
対称型マルチプロセッサシステムが処理性能を高めることができる一方、それは、幾分非効率である。一例として、実行されるべき処理が、ＤＳＰタイプコアによって実行されるのが最善（例えば、かなり数的に集約的及び反復的）で他のタスクが汎用プロセッサによって実行されるのが好ましい（例えば、フロー制御、ユーザ入力等）いくつかの動作を要求する場合、その後対称型マルチプロセッサは、そのような処理を実行するのに比較的非効率な方法である。これは、認識されており、非対称型マルチプロセシング（ＡＭＰ）システムを提供することが知られている。そのようなシステムの一例は、テキサスインストラメンツによって設計されるＯＭＡＰプラットフォームである。そのようなプラットフォームにおいて、複数の異なるプロセッサは、他のタスクにわたっていくつかのタスクにそれをより適合させる特徴を有するこれらの各々に提供される。一例として、非対称型マルチプロセッサは、ＤＳＰコアだけでなく汎用マイクロプロセッサコアを含んでもよい。そのような非対称型マルチプロセッサは、処理性能に関して強力な利点を有し、比較的低いコスト及び低電力消費をもたらすことができる一方で、その不均一性（heterogeneous nature）に起因してプログラム及び開発がさらに困難である。そのような非対称型マルチプロセッサシステムを良好に使用するために、オペレーティングシステムの制御下ではなく、プログラム自体によってスレッド間のタスクの移行を実行するのが通常である。また、異なるプロセッサの異なる処理アーキテクチャは、かなり異なる診断メカニズムが各プロセッサに適しうることを意味する。ＡＭＰシステムの同期リモートプロシージャコールは、ＳＭＰシステムにおけるスレッドのオペレーティングシステム制御の移行と同様、１つのプロセッサから他のプロセッサへのスレッドのプログラム制御された移行と見なされることができるが、システムのこの簡単な見なしは、どのプロセッサが動作を実行するかに従ってシステムを分割する既存の診断メカニズムによって支援されない。これは、たとえ診断メカニズムがより重要であることを、そのような非対称型処理システムをプログラミングする複雑性及び困難性が意味しても、対称型マルチプロセシングシステムに関連付けられる比較的単純な診断手法が非対称型マルチプロセッサシステムにただちに使用できない結果を有する。従来のＡＭＰシステムにおいて、各プロセッサ上で走るコードが分離して扱われる。各プロセッサのためのコードは、まるでそれが、他のプロセッサ上の分離したプログラムと通信する分離したプログラムであるかのようにデバッグされる。
【発明の概要】
【課題を解決するための手段】
【０００５】
１つの実施形態によると、本発明は、データ処理動作を実行するために各プログラム命令に応答する複数の実行メカニズムと、プログラム命令実行のスレッドは、前記複数の実行メカニズム間で時分割され、診断動作を実行するために各実行メカニズムに各々関連付けられる複数のスレーブ診断ユニットと、前記複数のスレーブ診断ユニットに接続され、実行メカニズム間における所定のスレッドの実行の移行に応答し、どの前記スレーブ診断ユニットが前記所定のスレッドに関して診断動作を実行するのに現在アクティブであるかの対応する変化を行うことで、前記マスター診断は、どの実行メカニズムが前記所定のスレッドを実行しているかの変化を追跡する、マスター診断ユニットと、を含む非対称型マルチプロセッサ装置である。
【０００６】
本発明の手法は、非対称型マルチプロセッサ内の各実行メカニズムが独自のスレーブ診断ユニットを備える構造を提供する。これらスレーブ診断ユニットは、実行ユニット間におけるスレッドの移行を追跡するのに関与するマスター診断ユニットに接続されるので、たとえこれが非対称型マルチプロセッサシステムにおいて異なる実行メカニズムにわたって分割される時でも所定のスレッドの実行の単一ビューの提供を可能とする。この重要性は、実行の個々のスレッドがそのような異種環境にわたって追跡可能なので、プログラミング設定に生じる問題を識別及び理解するタスクを軽減し、例えばＡＭＰシステムのプロセッサにわたり分割されるコードは、単一のエンティティとしてデバッグされることができる。
【０００７】
そのような非対称型マルチプロセッサシステムの動作を理解する複雑性及び困難性は、複合的であるので、本発明の手法による利点は、複数の実行メカニズムが同一のメモリマップを共有しないよう非対称型メモリ階層を含むシステムにおいて高められる。そのような非対称型メモリ階層を有するシステムにおいて、異なる実行メカニズムによって使用される異なるメモリマップの複雑性は、同一のデータ項目が異なる実行メカニズムによって異なる方法で参照されることがあるので、個々の実行メカニズムに関連付けられる個々の診断ユニットの使用についてプログラマの理解をより困難にする。スレッド変化を追跡できる本発明の手法によるマスター診断ユニットは、プログラマに代わって異なってマッピングされたこれらメモリを考慮することができるので、プログラマのタスクをかなり軽減する。
【０００８】
非対称型マルチプロセッサは、非対称型メモリ階層を有することにより非対称である一方、その処理アーキテクチャが異なる実行メカニズムのうち少なくとも一部により非対称でもある。これは、異なるプロセッサが異なる種類のタスクでターゲットにされることができるような共通的な場合であり、本発明の手法は、そのような複雑性を扱うプログラマを支援するのに役立つ。
【０００９】
上記の通り、本発明の手法は、実行メカニズム間におけるタスクの移行を制御するプログラム自体のシステムを扱うことができる。これを達成する特定の効果的な方法は、本発明による手法なしで診断センス（diagnostic sense）から扱うのが困難であり、１つの実行メカニズムからもう１つの実行メカニズムへの同期リモートプロシージャコールがスレッドの実行の移行を開始するものである。この場合、移行は、プログラムによって明白に実行され、リモートプロシージャコールは、被発信者の実行メカニズム上で実行し異なる目的地の実行メカニズムをターゲットにしうるルーチンのプールのうち１つによって実行されることができる。
【００１０】
本発明の手法による有用性は、マスター診断ユニットが実行メカニズムによる所定スレッドの実行からの診断出力を提供し、そのスレッドに対する実効メカニズムの変化に応答し、診断出力の対応する変化を行い、プログラマが実行メカニズムの移行の発生を認識できる時に高められる。プログラムの問題が移行に関連付けられることによりこの情報がプログラマに役立つことがよくある。
【００１１】
異なる実行メカニズムに関連付けられるスレーブ診断ユニットは、実行の特定スレッド上で診断動作を実行するためにプログラミングを要求することができる。マスター診断ユニットは、異なる実行メカニズムによって実行されるスレッドを追跡し、所定のスレッドに関する診断コマンドを、関連時間で所定スレッドに関連付けられるスレーブ診断ユニットに向けることができる。
【００１２】
診断ユニットは、各種異なる形式をとることができる。例えば、ブレイクポイントユニット、ウォッチポイントユニット、追跡ユニット及び／又はプロファイリングユニットにすることができる。これら診断ユニットは、純粋なハードウェア・ハードウェア及びソフトウェアの組合せ又は純粋なソフトウェアによって提供されてもよい。いくつかの診断ユニットは、プロセッサの実時間動作を追跡するために特に高い帯域幅を必要とする追跡ユニットのようなハードウェアで実装するのにより適している。
【００１３】
実行メカニズムは、上記の通り各種異なる形式をとることができるのが分かる。例えば、実行メカニズムは、一つ以上の汎用プロセッサ、ダイレクトメモリアクセスユニット、コプロセッサ、ＶＬＩＭプロセッサ、デジタル信号プロセッサ及び／又はハードウェアアクセラレータユニットを含むことができる。汎用プロセッサ以外のこれら各種形式の実行メカニズムは、各種異なる形式の特殊用途プロセッサとみなすことができる。
【００１４】
上記の非対称型メモリ階層は、同様に各種異なる方法で形成されてもよい。提供されるメモリは、キャッシュメモリ、プライベートメモリ、共有メモリ又はグローバルメモリでもよい。これらは、非対称形式でともに組み合わされてもよく、非対称型マルチプロセッサ装置の最終的な実装及び使用に対して効果的であるが、システム上で診断動作を実行するにおいて困難性の増加したレベルを提供する。並列システムは通常、複数のスレッドを含み、それら各々は、複数の実行メカニズムにわたって時分割されうることが分かる。
【００１５】
もう１つの実施形態によると、本発明は、複数の実行メカニズムでデータ処理動作を実行する各プログラム命令に応答する段階であって、プログラム命令実行のスレッドは、前記複数の実行メカニズム間で時分割される、段階と、各スレーブ診断ユニットで前記複数の実行メカニズム上で診断動作を実行する段階と、前記複数のスレーブ診断ユニットに接続され、実行メカニズム間で所定のスレッドの実行の移行に応答し、どの前記スレーブ診断ユニットが前記所定のスレッドに関して診断動作を実行するのに現在アクティブであるかの対応する変化を行うことで、前記マスター診断は、どの実行メカニズムが前記所定のスレッドを実行するかの変化を追跡するマスター診断ユニットを使用する段階と、を含む非対称型マルチプロセッサ装置上で診断動作を実行する方法を提供する。
【図面の簡単な説明】
【００１６】
【図１】図１は、本発明の手法の一例による非対称型マルチプロセッサ装置を概略的に示す。
【図２】図２は、異なる実行メカニズム間におけるプログラム内の所定スレッドの実行の移行とマスター診断ユニットによるそのような移行の追跡とを概略的に示す。
【図３】図３は、診断動作の開始とスレッド移行の追跡とを概略的に示すフロー図である。
【図４】図４は、１つの実施形態による本発明の手法の診断メカニズムの初期プログラミングを概略的に示すフロー図である。
【発明を実施するための形態】
【００１７】
図１は、汎用コンピュータ４に接続される非対称型マルチプロセッサ装置２を概略的に示す。汎用コンピュータは、診断動作をプログラム及び制御するために使用される。非対称型マルチプロセッサ装置２は、汎用プロセッサ６、デジタル信号プロセッサ８、アクセラレータ１０及びダイレクトメモリアクセス（ＤＭＡ）ユニット１２の形式で複数の実行メカニズムを含む。実行メカニズムの異なる組合せは、ＶＬＩＭプロセッサ及び／又はコプロセッサ等、非対称型マルチプロセッサ装置内に提供されてもよいことが分かる。また、非対称型マルチプロセッサ装置等は、識別可能な、所定の種類からなる複数の実行メカニズムだけでなく、例えば、複数のＤＳＰユニットを備えた単一の汎用プロセッサのような、異なる種類からなる一つ以上の実行メカニズムも含むことができる。
【００１８】
図１の非対称型マルチプロセッサ装置２は、汎用プロセッサ６にローカルなキャッシュメモリ１４と、アクセラレータ１０にアクセス可能な共有メモリ１６と、汎用プロセッサ６と、ＤＭＡユニット１２と、プライベートメモリ１８とを含む非対称型メモリ階層を有する。プライベートメモリ１８は、ＤＳＰユニット８及びＤＭＡユニット１２にのみアクセス可能である。ＤＭＡユニット１２は、ＤＭＡユニット１２によって実行されるべきＤＭＡ動作を設定する汎用プロセッサ６によって制御される。これらは、プライベートメモリ１８及び共有メモリ１６間でデータを転送することを通常含む。そのような配置を用いて、入力データのブロックは、汎用プロセッサ６の制御下で共有メモリ１６からプライベートメモリ１８に転送されることができ、それは、ＤＳＰユニット８によって集中的な数値処理にさらされて、その処理結果は、汎用プロセッサ６によってプライベートメモリ１８から共有メモリ１６に回復されることが分かる。ＤＳＰユニット８によって実行されている処理は、同一のプログラムスレッドの一部であり、それはまた、汎用プロセッサ６上で少なくとも部分的に動作し、スレッド内のポイントは、ＤＳＰユニット８による処理が要求される所に到達され、そして同期リモートプロシージャコールは、汎用プロセッサ６からＤＳＰユニット８に作成され、ＤＳＰユニット８上で処理を開始する。ＤＳＰユニット８による処理の終了時、同期リモートプロシージャコールは、他の場所に作成され、又はリモートプロシージャコールからの単一のリターンが作成されてもよい。
【００１９】
図１で分かる通り、各実行メカニズム６、８及び１０は、それぞれスレーブ診断ユニット２０、２２及び２４を含む。ＤＭＡユニット１２は、汎用プロセッサ６の制御下でのみ動作するので、独自のスレーブ診断ユニットを有さない。異なる実行メカニズム６、８、１０によって提供される異なるプロセッサ手法は、スレーブ診断ユニット２０、２２及び２４が異なる形式及び機能を有するだけでなく異なる種類のプログラミングを要求し、異なる形式の出力を生成することを意味するのが分かる。非対称型マルチプロセッサ装置２にわたるこの多様性は、異なる実行メカニズム６、８、１０間を移行する所定スレッドの実行を理解しようと試みるプログラマにとって従来から困難なことである。
【００２０】
複数のスレーブ診断ユニット２０、２２、２４に追加して、各スレーブ診断ユニット２０、２２、２４に接続されるマスター診断ユニット２６が提供される。マスター診断ユニットは、スレーブ診断ユニット２０、２２、２４を介して、同期リモートプロシージャコール及びリターンを識別する等によって、プログラムスレッド移行を監視する働きをする。マスター診断ユニット２６は、実行されるべき診断動作をプログラムするために、診断出力を監視するために、及びプログラマに診断出力を表示するために使用される汎用コンピュータ４に接続される。マスター診断ユニット２６は、ハードウェア要素として、ハードウェア及びソフトウェアの組合せ要素として、及び汎用コンピュータ４上で実行する純粋なソフトウェア要素として提供されてもよい。
【００２１】
スレーブ診断ユニット２０、２２及び２４は、図示の通り、各実行メカニズム６、８、１０内で提供されているが、スレーブ診断ユニット２０、２２、２４は、対象となる実行メカニズム６、８、１０の外側に分離して提供されてもよいことが分かる。スレーブ診断ユニットは、複数の実行メカニズム間で共有されることができ、例えば共有メモリ１６に対して書き込み又は読み出されているデータを監視している追跡ユニットは、一つより多い実行メカニズム６、８、１０について追跡を実行する。それにもかかわらず、そのような追跡ユニットは、少なくとも１つの実行メカニズムについて追跡を実行した点で、少なくとも１つの実行メカニズムに関連付けられる。
【００２２】
図２は、異なる実行メカニズム間のプログラム実行の所定スレッドの移行を概略的に示す図である。この図において、３つの異なる実行メカニズムがある。これらは、図１の汎用プロセッサ６、ＤＳＰユニット８及びアクセラレータ１０に対応するために考慮されてもよい一方、異なる実行メカニズムに対する他のマッピングが等しく可能である。図示の通り、プログラムスレッドは、実行メカニズム１上で実行を開始し、その後同期リモートプロシージャコールを介して実行メカニズム２への移行にさらされる。１時期実行メカニズム２上での実行後、リターンは、実行メカニズム１に作成される。後続の移行は、図示の通り実行メカニズム２及び３に作成される。この全期間中、マスター診断ユニット２６は、異なる実行メカニズム間でプログラムスレッドの実行を切換える同期リモートプロシージャコールの発生を監視し、どの実行メカニズムがプログラムスレッドの処理に現在アクティブであるかを相応して追跡する。これは、図２の左手側で図示される追跡情報である。この追跡情報は、汎用コンピュータ４上に表示されてプログラマによる相互作用にさらされる時、適切なプログラムスレッドに関連して表示されるべき異なるスレーブ診断ユニット２０、２２、２４から回復される診断情報をチャンネルするためにマスター診断ユニット２６によって使用される。診断情報表示は、対象となるプログラムのポイントのための現在アクティブな実行メカニズムの識別を含む。一例として、スレッドが実行メカニズム２上で実行している場合、プログラマは、そのスレッドを停止することを望み、その後停止コマンドは、実行メカニズム２がスレッドの処理において現在アクティブであることをマスター診断ユニット２６が判断するので、実行メカニズム２に向けられる。
【００２３】
図３は、マスター診断ユニット２６によって実行されるスレッド追跡の種類を概略的に示すフロー図である。ステップ２８で、実行メカニズム６、８、１０上での異なるスレッドの処理が開始され、関連付けられたスレーブ診断ユニット２０、２２、２４は、その診断パラメータ（例えば、ブレイクポイント、ウォッチポイント、プロファイリングパラメータ、トレースパラメータ等）でプログラムされる。ステップ３０で、マスター診断ユニット２６は、どのスレッドがどの実行メカニズム上で実行しているか識別し、このデータは、スレッドデータテーブル内のように、マスター診断ユニット２６によって収集及び保持される。どの実行メカニズムがどの特定のスレッドを実行するかは、ローディング及び他の要素に依存しランタイムで経験的に判断できるので、プログラム自身によって予め定められないことが分かる。
【００２４】
ステップ３２で、マスター診断ユニット２６は、同期リモートプロシージャコールの発行等に基づいて、任意のスレッド移行が生じたかをチェックするよう監視する。スレッド移行が検出されると、その後処理は、ステップ３４に進み、どのスレッドがどの実行メカニズム上で実行しているかを示すデータは、発信者（caller）がもはやスレッドを実行せず被発信者（callee）が現在そのスレッドを実行していることを考慮するために更新される。
【００２５】
ステップ３６で、スレーブ診断ユニット２０、２２及び２４のプログラミングは、発生した移行を考慮するために（必要に応じて）変更される。例えば、発信者の実行ユニットがスレッドに関する特定のブレイクポイント又はウォッチポイントのために監視していた場合、その後実行メカニズムがもはやそのスレッドを実行していない時、その後それらブレイクポイント及びウォッチポイントのために監視を継続することは、異なるプログラムスレッドに応答して発生する実行とともにそれらブレイクポイント又はウォッチポイントのエイリアシングに起因して誤った結果を与えることがあるので適切ではない。ステップ３６でスレーブ診断ユニットの任意の必要な再プログラミング後、処理は、ステップ３２に戻され、さらなるスレッドの移行のための監視が実行されることができる。
【００２６】
図４は、図１のシステム内で診断動作の設定を概略的に説明する。ステップ３８で、汎用コンピュータ４を用いるプログラマは、所定の診断コマンドを実行するよう命令し、このコマンドは、マスター診断ユニット２６に送信され、ステップ３８で受信される。ステップ４０は、どの診断コマンドが実行されるべきかに関してどの実行メカニズム（又はウォッチポイントの場合におけるメモリ）がスレッドに関連付けられるかを判断するマスター診断ユニット２６に対応する。ステップ４２ではその後、受信されたコマンドに関してスレッドのための関連スレーブ診断ユニットをプログラム／初期化する。
【符号の説明】
【００２７】
１０：アクセラレータ
１６：共有メモリ
１８：プライベートメモリ
２６：マスター診断ユニット
【図１】
2010507855.tif 000003
【図２】
2010507855.tif 000004
【図３】
2010507855.tif 000005
【図４】
2010507855.tif 000006
【手続補正書】
【提出日】平成20年8月18日(2008.8.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
非対称型マルチプロセッサ装置であって、
データ処理動作を実行するために各プログラム命令に応答する複数の実行メカニズムと、プログラム命令実行のスレッドは、前記複数の実行メカニズム間で時分割され、前記複数の実行メカニズムの少なくとも１つは、一つ以上の他の前記複数の実行メカニズムとは異なる処理アーキテクチャを有し、
診断動作を実行するために各実行メカニズムに各々関連付けられる複数のスレーブ診断ユニットと、
前記複数のスレーブ診断ユニットに接続され、実行メカニズム間における所定のスレッドの実行の移行に応答し、どの前記スレーブ診断ユニットが前記所定のスレッドに関して診断動作を実行するのに現在アクティブであるかの対応する変化を行うことで、前記マスター診断は、どの実行メカニズムが前記所定のスレッドを実行しているかの変化を追跡する、マスター診断ユニットと
を具備し、
実行の前記移行は、１つの実行メカニズムからもう１つの実行メカニズムへの同期リモートプロシージャコールによることを特徴とする装置。
【請求項２】
前記複数の実行メカニズムが同一のメモリマップを共有しないよう非対称型メモリ階層を具備することを特徴とする請求項１に記載の非対称型マルチプロセッサ装置。
【請求項３】
前記マスター診断ユニットは、実行メカニズムから診断出力を提供し、前記診断出力における対応する変化を行うために前記所定のスレッドの実行メカニズムにおける変化に応答することを特徴とする請求項１〜２の何れか１項に記載の非対称型マルチプロセッサ装置。
【請求項４】
前記マスター診断ユニットは、現在前記所定のスレッドを実行する、実行メカニズムに関連付けられるスレーブ診断ユニットに前記所定のスレッドに関する診断コマンドを向けることを特徴とする請求項１〜３の何れか１項に記載の非対称型マルチプロセッサ装置。
【請求項５】
前記マスター診断ユニットは、一部が実行されることができるそれら実行メカニズムの各々の上で前記所定のスレッドの前記一部に関するブレイクポイントを設定することを特徴とする請求項１〜４の何れか１項に記載の非対称型マルチプロセッサ装置。
【請求項６】
前記ブレイクポイントは、各実行メカニズムによって前記一部に使用されるメモリアドレスに一致するメモリアドレスで設定されることを特徴とする請求項５に記載の非対称型マルチプロセッサ装置。
【請求項７】
前記ブレイクポイントがトリガされる時、前記マスター診断ユニットは、どのスレッドが前記ブレイクポイントをトリガしたかを判断することを特徴とする請求項５に記載の非対称型マルチプロセッサ装置。
【請求項８】
複数のメモリを具備し、前記マスター診断ユニットは、前記データ項目を格納することができる前記複数のメモリの各々に関するデータ項目のウォッチポイントを設定することを特徴とする請求項１〜７の何れか１項に記載の非対称型マルチプロセッサ装置。
【請求項９】
前記ウォッチポイントは、各メモリ内の前記データ項目に使用されるメモリアドレスに一致するメモリアドレスで設定されることを特徴とする請求項８に記載の非対称型マルチプロセッサ装置。
【請求項１０】
前記ウォッチポイントがトリガされる時、前記マスター診断ユニットは、どのスレッドが前記ウォッチポイントをトリガしたかを判断することを特徴とする請求項８に記載の非対称型マルチプロセッサ装置。
【請求項１１】
前記スレーブ診断ユニットは、スレーブ追跡ユニットであり、前記マスター診断ユニットは、マスター追跡ユニットであり、前記マスター追跡ユニットは、前記所定のスレッドのための追跡出力を形成する時、異なる実行メカニズム間における前記所定のスレッドの実行の移行を追跡することを特徴とする請求項１〜１０の何れか１項に記載の非対称型マルチプロセッサ装置。
【請求項１２】
前記スレーブ診断ユニットは、スレーブプロファイリングユニットであり、前記マスター診断ユニットは、マスタープロファイリングユニットであり、前記マスタープロファイリングユニットは、前記所定のスレッドのためのプロファイリング出力を形成する時、異なる実行メカニズム間における前記所定のスレッドの実行の移行を追跡することを特徴とする請求項１〜１１の何れか１項に記載の非対称型マルチプロセッサ装置。
【請求項１３】
前記複数の実行メカニズムは、
汎用プロセッサと、
ダイレクトメモリアクセスユニットと、
コプロセッサと、
ＶＬＩＷプロセッサと、
デジタル信号プロセッサと、
ハードウェアアクセラレータユニットと
の一つ以上を具備することを特徴とする請求項１〜１２の何れか１項に記載の非対称型マルチプロセッサ装置。
【請求項１４】
前記非対称型メモリ階層は、
前記実行メカニズムの全てにアクセス可能なグローバル共有メモリと、
前記実行メカニズムの少なくとも２つにアクセス可能な共有メモリと、
前記実行メカニズムの１つにアクセス可能なプライベートメモリと
の２つ以上を具備することを特徴とする請求項２に記載の非対称型マルチプロセッサ装置。
【請求項１５】
非対称型マルチプロセッサ装置上で診断動作を実行する方法であって、
複数の実行メカニズムでデータ処理動作を実行する各プログラム命令に応答する段階であって、プログラム命令実行のスレッドは、前記複数の実行メカニズム間で時分割され、前記複数の実行メカニズムの少なくとも１つは、一つ以上の他の前記複数の実行メカニズムとは異なる処理アーキテクチャを有する、段階と、
関連付けられる各スレーブ診断ユニットで前記複数の実行メカニズム上で診断動作を実行する段階と、
前記複数のスレーブ診断ユニットに接続され、実行メカニズム間で所定のスレッドの実行の移行に応答し、どの前記スレーブ診断ユニットが前記所定のスレッドに関して診断動作を実行するのに現在アクティブであるかの対応する変化を行うことで、前記マスター診断は、どの実行メカニズムが前記所定のスレッドを実行しているかの変化を追跡するマスター診断ユニットを使用する段階と
を具備し、
実行の前記移行は、１つの実行メカニズムからもう１つの実行メカニズムへの同期リモートプロシージャコールによることを特徴とする方法。
【請求項１６】
前記非対称型マルチプロセシング装置は、前記複数の実行メカニズムが同一のメモリマップを共有しないよう非対称型メモリ階層を具備することを特徴とする請求項１５に記載の方法。
【請求項１７】
前記マスター診断ユニットは、実行メカニズムから診断出力を提供し、前記診断出力における対応する変化を行うために前記所定のスレッドのための実行メカニズムにおける変化に応答することを特徴とする請求項１５〜１６の何れか１項に記載の方法。
【請求項１８】
前記マスター診断ユニットは、現在前記所定のスレッドを実行する、実行メカニズムに関連付けられるスレーブ診断ユニットに前記所定のスレッドに関する診断コマンドを向けることを特徴とする請求項１５〜１７の何れか１項に記載の方法。
【請求項１９】
前記マスター診断ユニットは、一部が実行されることができるそれら実行メカニズムの各々の上で前記所定のスレッドの前記一部に関するブレイクポイントを設定することを特徴とする請求項１５〜１８の何れか１項に記載の方法。
【請求項２０】
前記ブレイクポイントは、各実行メカニズムによって前記一部に使用されるメモリアドレスに一致するメモリアドレスで設定されることを特徴とする請求項１９に記載の方法。
【請求項２１】
前記ブレイクポイントがトリガされる時、前記マスター診断ユニットは、どのスレッドが前記ブレイクポイントをトリガしたかを判断することを特徴とする請求項１９に記載の方法。
【請求項２２】
前記非対称型マルチプロセシング装置は、複数のメモリを具備し、前記マスター診断ユニットは、前記データ項目を格納することができる前記複数のメモリの各々に関するデータ項目のためのウォッチポイントを設定することを特徴とする請求項１５〜２１の何れか１項に記載の方法。
【請求項２３】
前記ウォッチポイントは、各メモリ内の前記データ項目に使用されるメモリアドレスに一致するメモリアドレスで設定されることを特徴とする請求項２２に記載の方法。
【請求項２４】
前記ウォッチポイントがトリガされる時、前記マスター診断ユニットは、どのスレッドが前記ウォッチポイントをトリガしたかを判断することを特徴とする請求項２２に記載の方法。
【請求項２５】
前記スレーブ診断ユニットは、スレーブ追跡ユニットであり、前記マスター診断ユニットは、マスター追跡ユニットであり、前記マスター追跡ユニットは、前記所定のスレッドのための追跡出力を形成する時、異なる実行メカニズム間における前記所定のスレッドの実行の移行を追跡することを特徴とする請求項１５〜２４の何れか１項に記載の方法。
【請求項２６】
前記スレーブ診断ユニットは、スレーブプロファイリングユニットであり、前記マスター診断ユニットは、マスタープロファイリングユニットであり、前記マスタープロファイリングユニットは、前記所定のスレッドのためのプロファイリング出力を形成する時、異なる実行メカニズム間における前記所定のスレッドの実行の移行を追跡することを特徴とする請求項１５〜２５の何れか１項に記載の方法。
【請求項２７】
前記複数の実行メカニズムは、
汎用プロセッサと、
ダイレクトメモリアクセスユニットと、
コプロセッサと、
ＶＬＩＭプロセッサと、
デジタル信号プロセッサと、
ハードウェアアクセラレータユニットと
の一つ以上を具備することを特徴とする請求項１５〜２６の何れか１項に記載の方法。
【請求項２８】
前記非対称型メモリ階層は、
前記実行メカニズムの全てにアクセス可能なグローバル共有メモリと、
前記実行メカニズムの少なくとも２つにアクセス可能な共有メモリと、
前記実行メカニズムの１つにアクセス可能なプライベートメモリと
の２つ以上を具備することを特徴とする請求項１６に記載の方法。
【請求項２９】
請求項１５〜２８の何れか１項に記載の方法に従って、マスター診断ユニット及び複数のスレーブ診断ユニットを制御するためにコンピュータを制御するためのコンピュータプログラムを持つことを特徴とするコンピュータプログラム製品。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムに関する。具体的に、本発明は、非対称型マルチプロセッサ装置に用いる診断メカニズムの提供に関する。
【背景技術】
【０００２】
デバッグメカニズム、追跡メカニズム及びプロファイリングメカニズムのような診断メカニズムは、データ処理システム開発の分野で重要になってきている。データ処理システムがより複雑になり、その開発及びテスト期間が短くなっているので、データ処理システムに関連付けられる問題を識別し、その設計及び構成を調整することによってそれらデータ処理システムの性能を高めるのに使用できる、強力で取扱いが楽な診断メカニズムの需要が高まっている。
【０００３】
データ処理システムにおけるもう１つの傾向は、マルチプロセッサシステムの使用の増加である。これらは、プログラム又はタスクの異なるスレッドで通常同時の処理を許容することによって、比較的高い性能を与えるのに使用される。そのようなマルチプロセッサシステムの一形式は、対称型マルチプロセッサシステムとして知られる。そのような対称型システムは通常、プログラム及びデータメモリの同一のコヒーレントビューを各々有する複数の同一プロセッサコアを含み、オペレーティングシステムソフトウェアは、個々のプロセッサへの実行すべきタスク／スレッドの割り当て、及びプロセッサ間のタスク／スレッドの移行に関与する。即ち、プログラム命令実行の単一スレッドは、オペレーティングシステム制御下で複数のプロセッサ間において時分割される。そのような対称型システムにおいて、オペレーティングシステムは、オペレーティングシステムのスケジューリングが１つのプロセッサからもう１つのプロセッサへの実行を移行する時であっても、どこの個々のタスク／スレッドが実行されているかを判断し、単一のプロセッサ上で実行する単一スレッドの出現をプログラマに提供するのに使用することができる。そのような手法は、プロセッサが同一である点、及び移行がオペレーティングシステムによって、即ちプログラム自体によってトリガされることなく実行される点に限定される。
【０００４】
対称型マルチプロセッサシステムが処理性能を高めることができる一方、それは、幾分非効率である。一例として、実行されるべき処理が、ＤＳＰタイプコアによって実行されるのが最善（例えば、かなり数的に集約的及び反復的）で他のタスクが汎用プロセッサによって実行されるのが好ましい（例えば、フロー制御、ユーザ入力等）いくつかの動作を要求する場合、その後対称型マルチプロセッサは、そのような処理を実行するのに比較的非効率な方法である。これは、認識されており、非対称型マルチプロセシング（ＡＭＰ）システムを提供することが知られている。そのようなシステムの一例は、テキサスインストラメンツによって設計されるＯＭＡＰプラットフォームである。そのようなプラットフォームにおいて、複数の異なるプロセッサは、他のタスクにわたっていくつかのタスクにそれをより適合させる特徴を有するこれらの各々に提供される。一例として、非対称型マルチプロセッサは、ＤＳＰコアだけでなく汎用マイクロプロセッサコアを含んでもよい。そのような非対称型マルチプロセッサは、処理性能に関して強力な利点を有し、比較的低いコスト及び低電力消費をもたらすことができる一方で、その不均一性（heterogeneous nature）に起因してプログラム及び開発がさらに困難である。そのような非対称型マルチプロセッサシステムを良好に使用するために、オペレーティングシステムの制御下ではなく、プログラム自体によってスレッド間のタスクの移行を実行するのが通常である。また、異なるプロセッサの異なる処理アーキテクチャは、かなり異なる診断メカニズムが各プロセッサに適しうることを意味する。ＡＭＰシステムの同期リモートプロシージャコールは、ＳＭＰシステムにおけるスレッドのオペレーティングシステム制御の移行と同様、１つのプロセッサから他のプロセッサへのスレッドのプログラム制御された移行と見なされることができるが、システムのこの簡単な見なしは、どのプロセッサが動作を実行するかに従ってシステムを分割する既存の診断メカニズムによって支援されない。これは、たとえ診断メカニズムがより重要であることを、そのような非対称型処理システムをプログラミングする複雑性及び困難性が意味しても、対称型マルチプロセシングシステムに関連付けられる比較的単純な診断手法が非対称型マルチプロセッサシステムにただちに使用できない結果を有する。従来のＡＭＰシステムにおいて、各プロセッサ上で走るコードが分離して扱われる。各プロセッサのためのコードは、まるでそれが、他のプロセッサ上の分離したプログラムと通信する分離したプログラムであるかのようにデバッグされる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】QNX SOFTWARE SYSTEMS:“QNX Neutrino RTOS-System Architecture”[Online] February 2006 (2006-02), pages 1-407, XP002463005 Canada Retrieved from the Internet: URL: http://www.qnx.com/download/feature.ht ml programid=14695> [retrieved on 2007-12-13] describes homogeneous and heterogeneous asymmetric multiprocessing
【非特許文献２】J. ENGBLON:“Debugging Real-Time Multiprocessor Systems" EMBEDDED SYSTEMS CONFERENCE,[Online] 3 April 2006 (2006-04-03),-7 April 2006 (2006-04-07) pages 1-15, XP002463007 San Jose, CA, USA Retrieved from the Internet: URL:http://www.virtutech.com/pdf/engblom-e sc2006.pdf> [retrieved on 2007-12-13] describes debugging real-time multiprocessor systems
【発明の概要】
【課題を解決するための手段】
【０００６】
１つの実施形態によると、本発明は、データ処理動作を実行するために各プログラム命令に応答する複数の実行メカニズムと、プログラム命令実行のスレッドは、前記複数の実行メカニズム間で時分割され、前記複数の実行メカニズムの少なくとも１つは、一つ以上の他の前記複数の実行メカニズムとは異なる処理アーキテクチャを有し、診断動作を実行するために各実行メカニズムに各々関連付けられる複数のスレーブ診断ユニットと、前記複数のスレーブ診断ユニットに接続され、実行メカニズム間における所定のスレッドの実行の移行に応答し、どの前記スレーブ診断ユニットが前記所定のスレッドに関して診断動作を実行するのに現在アクティブであるかの対応する変化を行うことで、前記マスター診断は、どの実行メカニズムが前記所定のスレッドを実行しているかの変化を追跡する、マスター診断ユニットとを具備し、実行の前記移行は、１つの実行メカニズムからもう１つの実行メカニズムへの同期リモートプロシージャコールによる非対称型マルチプロセッサ装置である。
【０００７】
本発明の手法は、非対称型マルチプロセッサ内の各実行メカニズムが独自のスレーブ診断ユニットを備える構造を提供する。これらスレーブ診断ユニットは、実行ユニット間におけるスレッドの移行を追跡するのに関与するマスター診断ユニットに接続されるので、たとえこれが非対称型マルチプロセッサシステムにおいて異なる実行メカニズムにわたって分割される時でも所定のスレッドの実行の単一ビューの提供を可能とする。この重要性は、実行の個々のスレッドがそのような異種環境にわたって追跡可能なので、プログラミング設定に生じる問題を識別及び理解するタスクを軽減し、例えばＡＭＰシステムのプロセッサにわたり分割されるコードは、単一のエンティティとしてデバッグされることができる。
【０００８】
そのような非対称型マルチプロセッサシステムの動作を理解する複雑性及び困難性は、複合的であるので、本発明の手法による利点は、複数の実行メカニズムが同一のメモリマップを共有しないよう非対称型メモリ階層を含むシステムにおいて高められる。そのような非対称型メモリ階層を有するシステムにおいて、異なる実行メカニズムによって使用される異なるメモリマップの複雑性は、同一のデータ項目が異なる実行メカニズムによって異なる方法で参照されることがあるので、個々の実行メカニズムに関連付けられる個々の診断ユニットの使用についてプログラマの理解をより困難にする。スレッド変化を追跡できる本発明の手法によるマスター診断ユニットは、プログラマに代わって異なってマッピングされたこれらメモリを考慮することができるので、プログラマのタスクをかなり軽減する。
【０００９】
非対称型マルチプロセッサは、非対称型メモリ階層を有することにより非対称である一方、その処理アーキテクチャが異なる実行メカニズムのうち少なくとも一部により非対称でもある。これは、異なるプロセッサが異なる種類のタスクでターゲットにされることができるような共通的な場合であり、本発明の手法は、そのような複雑性を扱うプログラマを支援するのに役立つ。
【００１０】
上記の通り、本発明の手法は、実行メカニズム間におけるタスクの移行を制御するプログラム自体のシステムを扱うことができる。これを達成する特定の効果的な方法は、本発明による手法なしで診断センス（diagnostic sense）から扱うのが困難であり、１つの実行メカニズムからもう１つの実行メカニズムへの同期リモートプロシージャコールがスレッドの実行の移行を開始するものである。この場合、移行は、プログラムによって明白に実行され、リモートプロシージャコールは、被発信者の実行メカニズム上で実行し異なる目的地の実行メカニズムをターゲットにしうるルーチンのプールのうち１つによって実行されることができる。
【００１１】
本発明の手法による有用性は、マスター診断ユニットが実行メカニズムによる所定スレッドの実行からの診断出力を提供し、そのスレッドに対する実効メカニズムの変化に応答し、診断出力の対応する変化を行い、プログラマが実行メカニズムの移行の発生を認識できる時に高められる。プログラムの問題が移行に関連付けられることによりこの情報がプログラマに役立つことがよくある。
【００１２】
異なる実行メカニズムに関連付けられるスレーブ診断ユニットは、実行の特定スレッド上で診断動作を実行するためにプログラミングを要求することができる。マスター診断ユニットは、異なる実行メカニズムによって実行されるスレッドを追跡し、所定のスレッドに関する診断コマンドを、関連時間で所定スレッドに関連付けられるスレーブ診断ユニットに向けることができる。
【００１３】
診断ユニットは、各種異なる形式をとることができる。例えば、ブレイクポイントユニット、ウォッチポイントユニット、追跡ユニット及び／又はプロファイリングユニットにすることができる。これら診断ユニットは、純粋なハードウェア・ハードウェア及びソフトウェアの組合せ又は純粋なソフトウェアによって提供されてもよい。いくつかの診断ユニットは、プロセッサの実時間動作を追跡するために特に高い帯域幅を必要とする追跡ユニットのようなハードウェアで実装するのにより適している。
【００１４】
実行メカニズムは、上記の通り各種異なる形式をとることができるのが分かる。例えば、実行メカニズムは、一つ以上の汎用プロセッサ、ダイレクトメモリアクセスユニット、コプロセッサ、ＶＬＩＭプロセッサ、デジタル信号プロセッサ及び／又はハードウェアアクセラレータユニットを含むことができる。汎用プロセッサ以外のこれら各種形式の実行メカニズムは、各種異なる形式の特殊用途プロセッサとみなすことができる。
【００１５】
上記の非対称型メモリ階層は、同様に各種異なる方法で形成されてもよい。提供されるメモリは、キャッシュメモリ、プライベートメモリ、共有メモリ又はグローバルメモリでもよい。これらは、非対称形式でともに組み合わされてもよく、非対称型マルチプロセッサ装置の最終的な実装及び使用に対して効果的であるが、システム上で診断動作を実行するにおいて困難性の増加したレベルを提供する。並列システムは通常、複数のスレッドを含み、それら各々は、複数の実行メカニズムにわたって時分割されうることが分かる。
【００１６】
もう１つの実施形態によると、本発明は、複数の実行メカニズムでデータ処理動作を実行する各プログラム命令に応答する段階であって、プログラム命令実行のスレッドは、前記複数の実行メカニズム間で時分割され、前記複数の実行メカニズムの少なくとも１つは、一つ以上の他の前記複数の実行メカニズムとは異なる処理アーキテクチャを有する、段階と、関連付けられる各スレーブ診断ユニットで前記複数の実行メカニズム上で診断動作を実行する段階と、前記複数のスレーブ診断ユニットに接続され、実行メカニズム間で所定のスレッドの実行の移行に応答し、どの前記スレーブ診断ユニットが前記所定のスレッドに関して診断動作を実行するのに現在アクティブであるかの対応する変化を行うことで、前記マスター診断は、どの実行メカニズムが前記所定のスレッドを実行しているかの変化を追跡するマスター診断ユニットを使用する段階とを具備し、実行の前記移行は、１つの実行メカニズムからもう１つの実行メカニズムへの同期リモートプロシージャコールによる方法を提供する。
【図面の簡単な説明】
【００１７】
【図１】図１は、本発明の手法の一例による非対称型マルチプロセッサ装置を概略的に示す。
【図２】図２は、異なる実行メカニズム間におけるプログラム内の所定スレッドの実行の移行とマスター診断ユニットによるそのような移行の追跡とを概略的に示す。
【図３】図３は、診断動作の開始とスレッド移行の追跡とを概略的に示すフロー図である。
【図４】図４は、１つの実施形態による本発明の手法の診断メカニズムの初期プログラミングを概略的に示すフロー図である。
【発明を実施するための形態】
【００１８】
図１は、汎用コンピュータ４に接続される非対称型マルチプロセッサ装置２を概略的に示す。汎用コンピュータは、診断動作をプログラム及び制御するために使用される。非対称型マルチプロセッサ装置２は、汎用プロセッサ６、デジタル信号プロセッサ８、アクセラレータ１０及びダイレクトメモリアクセス（ＤＭＡ）ユニット１２の形式で複数の実行メカニズムを含む。実行メカニズムの異なる組合せは、ＶＬＩＭプロセッサ及び／又はコプロセッサ等、非対称型マルチプロセッサ装置内に提供されてもよいことが分かる。また、非対称型マルチプロセッサ装置等は、識別可能な、所定の種類からなる複数の実行メカニズムだけでなく、例えば、複数のＤＳＰユニットを備えた単一の汎用プロセッサのような、異なる種類からなる一つ以上の実行メカニズムも含むことができる。
【００１９】
図１の非対称型マルチプロセッサ装置２は、汎用プロセッサ６にローカルなキャッシュメモリ１４と、アクセラレータ１０にアクセス可能な共有メモリ１６と、汎用プロセッサ６と、ＤＭＡユニット１２と、プライベートメモリ１８とを含む非対称型メモリ階層を有する。プライベートメモリ１８は、ＤＳＰユニット８及びＤＭＡユニット１２にのみアクセス可能である。ＤＭＡユニット１２は、ＤＭＡユニット１２によって実行されるべきＤＭＡ動作を設定する汎用プロセッサ６によって制御される。これらは、プライベートメモリ１８及び共有メモリ１６間でデータを転送することを通常含む。そのような配置を用いて、入力データのブロックは、汎用プロセッサ６の制御下で共有メモリ１６からプライベートメモリ１８に転送されることができ、それは、ＤＳＰユニット８によって集中的な数値処理にさらされて、その処理結果は、汎用プロセッサ６によってプライベートメモリ１８から共有メモリ１６に回復されることが分かる。ＤＳＰユニット８によって実行されている処理は、同一のプログラムスレッドの一部であり、それはまた、汎用プロセッサ６上で少なくとも部分的に動作し、スレッド内のポイントは、ＤＳＰユニット８による処理が要求される所に到達され、そして同期リモートプロシージャコールは、汎用プロセッサ６からＤＳＰユニット８に作成され、ＤＳＰユニット８上で処理を開始する。ＤＳＰユニット８による処理の終了時、同期リモートプロシージャコールは、他の場所に作成され、又はリモートプロシージャコールからの単一のリターンが作成されてもよい。
【００２０】
図１で分かる通り、各実行メカニズム６、８及び１０は、それぞれスレーブ診断ユニット２０、２２及び２４を含む。ＤＭＡユニット１２は、汎用プロセッサ６の制御下でのみ動作するので、独自のスレーブ診断ユニットを有さない。異なる実行メカニズム６、８、１０によって提供される異なるプロセッサ手法は、スレーブ診断ユニット２０、２２及び２４が異なる形式及び機能を有するだけでなく異なる種類のプログラミングを要求し、異なる形式の出力を生成することを意味するのが分かる。非対称型マルチプロセッサ装置２にわたるこの多様性は、異なる実行メカニズム６、８、１０間を移行する所定スレッドの実行を理解しようと試みるプログラマにとって従来から困難なことである。
【００２１】
複数のスレーブ診断ユニット２０、２２、２４に追加して、各スレーブ診断ユニット２０、２２、２４に接続されるマスター診断ユニット２６が提供される。マスター診断ユニットは、スレーブ診断ユニット２０、２２、２４を介して、同期リモートプロシージャコール及びリターンを識別する等によって、プログラムスレッド移行を監視する働きをする。マスター診断ユニット２６は、実行されるべき診断動作をプログラムするために、診断出力を監視するために、及びプログラマに診断出力を表示するために使用される汎用コンピュータ４に接続される。マスター診断ユニット２６は、ハードウェア要素として、ハードウェア及びソフトウェアの組合せ要素として、及び汎用コンピュータ４上で実行する純粋なソフトウェア要素として提供されてもよい。
【００２２】
スレーブ診断ユニット２０、２２及び２４は、図示の通り、各実行メカニズム６、８、１０内で提供されているが、スレーブ診断ユニット２０、２２、２４は、対象となる実行メカニズム６、８、１０の外側に分離して提供されてもよいことが分かる。スレーブ診断ユニットは、複数の実行メカニズム間で共有されることができ、例えば共有メモリ１６に対して書き込み又は読み出されているデータを監視している追跡ユニットは、一つより多い実行メカニズム６、８、１０について追跡を実行する。それにもかかわらず、そのような追跡ユニットは、少なくとも１つの実行メカニズムについて追跡を実行した点で、少なくとも１つの実行メカニズムに関連付けられる。
【００２３】
図２は、異なる実行メカニズム間のプログラム実行の所定スレッドの移行を概略的に示す図である。この図において、３つの異なる実行メカニズムがある。これらは、図１の汎用プロセッサ６、ＤＳＰユニット８及びアクセラレータ１０に対応するために考慮されてもよい一方、異なる実行メカニズムに対する他のマッピングが等しく可能である。図示の通り、プログラムスレッドは、実行メカニズム１上で実行を開始し、その後同期リモートプロシージャコールを介して実行メカニズム２への移行にさらされる。１時期実行メカニズム２上での実行後、リターンは、実行メカニズム１に作成される。後続の移行は、図示の通り実行メカニズム２及び３に作成される。この全期間中、マスター診断ユニット２６は、異なる実行メカニズム間でプログラムスレッドの実行を切換える同期リモートプロシージャコールの発生を監視し、どの実行メカニズムがプログラムスレッドの処理に現在アクティブであるかを相応して追跡する。これは、図２の左手側で図示される追跡情報である。この追跡情報は、汎用コンピュータ４上に表示されてプログラマによる相互作用にさらされる時、適切なプログラムスレッドに関連して表示されるべき異なるスレーブ診断ユニット２０、２２、２４から回復される診断情報をチャンネルするためにマスター診断ユニット２６によって使用される。診断情報表示は、対象となるプログラムのポイントのための現在アクティブな実行メカニズムの識別を含む。一例として、スレッドが実行メカニズム２上で実行している場合、プログラマは、そのスレッドを停止することを望み、その後停止コマンドは、実行メカニズム２がスレッドの処理において現在アクティブであることをマスター診断ユニット２６が判断するので、実行メカニズム２に向けられる。
【００２４】
図３は、マスター診断ユニット２６によって実行されるスレッド追跡の種類を概略的に示すフロー図である。ステップ２８で、実行メカニズム６、８、１０上での異なるスレッドの処理が開始され、関連付けられたスレーブ診断ユニット２０、２２、２４は、その診断パラメータ（例えば、ブレイクポイント、ウォッチポイント、プロファイリングパラメータ、トレースパラメータ等）でプログラムされる。ステップ３０で、マスター診断ユニット２６は、どのスレッドがどの実行メカニズム上で実行しているか識別し、このデータは、スレッドデータテーブル内のように、マスター診断ユニット２６によって収集及び保持される。どの実行メカニズムがどの特定のスレッドを実行するかは、ローディング及び他の要素に依存しランタイムで経験的に判断できるので、プログラム自身によって予め定められないことが分かる。
【００２５】
ステップ３２で、マスター診断ユニット２６は、同期リモートプロシージャコールの発行等に基づいて、任意のスレッド移行が生じたかをチェックするよう監視する。スレッド移行が検出されると、その後処理は、ステップ３４に進み、どのスレッドがどの実行メカニズム上で実行しているかを示すデータは、発信者（caller）がもはやスレッドを実行せず被発信者（callee）が現在そのスレッドを実行していることを考慮するために更新される。
【００２６】
ステップ３６で、スレーブ診断ユニット２０、２２及び２４のプログラミングは、発生した移行を考慮するために（必要に応じて）変更される。例えば、発信者の実行ユニットがスレッドに関する特定のブレイクポイント又はウォッチポイントのために監視していた場合、その後実行メカニズムがもはやそのスレッドを実行していない時、その後それらブレイクポイント及びウォッチポイントのために監視を継続することは、異なるプログラムスレッドに応答して発生する実行とともにそれらブレイクポイント又はウォッチポイントのエイリアシングに起因して誤った結果を与えることがあるので適切ではない。ステップ３６でスレーブ診断ユニットの任意の必要な再プログラミング後、処理は、ステップ３２に戻され、さらなるスレッドの移行のための監視が実行されることができる。
【００２７】
図４は、図１のシステム内で診断動作の設定を概略的に説明する。ステップ３８で、汎用コンピュータ４を用いるプログラマは、所定の診断コマンドを実行するよう命令し、このコマンドは、マスター診断ユニット２６に送信され、ステップ３８で受信される。ステップ４０は、どの診断コマンドが実行されるべきかに関してどの実行メカニズム（又はウォッチポイントの場合におけるメモリ）がスレッドに関連付けられるかを判断するマスター診断ユニット２６に対応する。ステップ４２ではその後、受信されたコマンドに関してスレッドのための関連スレーブ診断ユニットをプログラム／初期化する。
【符号の説明】
【００２８】
１０：アクセラレータ
１６：共有メモリ
１８：プライベートメモリ
２６：マスター診断ユニット
【国際調査報告】
2010507855.tif 000007
2010507855.tif 000008
2010507855.tif 000009