(57)【要約】【課題】複数の処理装置によって実行するための命令に対するアクセスを備えた複数の処理装置を提供すること。【解決手段】いくつかの処理装置によって共用される命令メモリは、個々にアクセス可能な複数のセクションを有する。命令メモリ内のソフトウエアプログラムはメモリセクションに割当てられる。ソフトウエアプログラムの連続する部分は連続するセクション内にある。ソフトウエアプログラムは、メモリセクションの各々内で繰り返される共用の区画を有することができる。アービタ論理は、各メモリアクセスサイクルにおいて、どの処理装置がどのメモリセクションにアクセスするかを制御することができる。【選択図】　　　図１
2004038959.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理装置と、
複数の同時アクセス可能なメモリセクションを含み、該メモリセクションの数が前記処理装置の数と少なくとも等しく、複数の連続する部分を含むソフトウエアを、該連続する部分が前記メモリセクションに割当てられて連続するメモリセクション内に存するように、保持することができるメモリ構造と、
前記処理装置と前記メモリ構造との間に接続されたメモリセクションアクセスコントロールであって、複数の連続するメモリアクセスサイクルの各々で、前記処理装置の各々がメモリセクションの異なる１つからソフトウエアの部分の１つを読み出すことを可能にするように構成され、前記処理装置の少なくとも１つが、連続したメモリアクセスサイクルで、連続する複数の前記メモリセクションから前記ソフトウエアの連続する複数の部分を読み出すことを可能にするメモリセクションアクセスコントロールとを含む装置。
【請求項２】
前記メモリセクションアクセスコントロールが、前記複数の処理装置の各々が、連続するメモリアクセスサイクルで、連続する複数の前記メモリセクションから連続する複数の前記ソフトウエアの部分を読み出すことを可能にするように構成される請求項１に記載の装置。
【請求項３】
前記処理装置の各々に連動するプログラムカウンタを含み、前記メモリセクションアクセスコントロールが複数の入力マルチプレクサを含み、前記複数のマルチプレクサの１つがメモリセクションの各々と連動し、前記入力マルチプレクサの各々が、前記プログラムカウンタの各々から数値を受け取るために接続された複数の入力、および、前記プログラムカウンタの１つから連動するメモリセクションに前記数値を提供するために接続された出力を有する請求項２に記載の装置。
【請求項４】
前記入力マルチプレクサの各々が制御入力を含み、前記メモリセクションアクセスコントロールが、前記メモリアクセスサイクルの各々において前記入力マルチプレクサ制御入力の各々にメモリセクション選択数値を提供するように構成され、前記制御入力の各々における前記メモリセクション選択数値が前記処理装置の異なる１つに対応し、前記入力マルチプレクサ制御入力の各々における前記メモリセクション選択数値が、各メモリアクセスサイクルにおいて変化し、前記処理装置の全てに対応する数値を介して循環する請求項３に記載の装置。
【請求項５】
整数ｍについて２ｍ個の処理装置を含み、前記メモリセクションアクセスコントロールがｍビットのカウンタを含み、前記入力マルチプレクサ制御入力の１つにおけるメモリセクション選択数値が前記ｍビットのカウンタの出力を含む請求項４に記載の装置。
【請求項６】
前記メモリセクションアクセスコントロールが複数の出力マルチプレクサを含み、該出力マルチプレクサの各々が、前記処理装置の１つの命令バスに接続された出力および複数の入力を有し、各入力が前記メモリセクションの１つからソフトウエアの部分を受け取るために接続されている請求項５に記載の装置。
【請求項７】
前記出力マルチプレクサが、各々、前記入力マルチプレクサの対応する１つのメモリセクション選択数値を受け取るために接続される制御入力を含む請求項６に記載の装置。
【請求項８】
前記処理装置の各々の命令バスがソフトウエアの部分の各々のサイズに等しい幅を有する請求項７に記載の装置。
【請求項９】
前記ソフトウエアの部分の各々が単一の命令で構成される請求項８に記載の装置。
【請求項１０】
前記命令バスが８ビット、１６ビット、および、３２ビットのうちの１つの幅を有する請求項８に記載の装置。
【請求項１１】
整数ｍについて２ｍ個のメモリセクションを含み、前記メモリセクションアクセスコントロールがｍビットのカウンタを含み、前記ｍビットのカウンタの出力が、前記処理装置の少なくとも１つに、連続するメモリアクセスサイクルで連続する複数の前記メモリセクションから連続する複数の前記ソフトウエアの部分を検索させるように接続されている請求項２に記載の装置。
【請求項１２】
前記ｍが２から４までの範囲にある請求項１１に記載の装置。
【請求項１３】
前記メモリセクションアクセスコントロールが複数の出力マルチプレクサを含み、該出力マルチプレクサの各々が、前記処理装置の１つの命令バスに接続された出力および複数の入力を有し、各入力が前記メモリセクションの１つから前記ソフトウエアの部分を受け取るために接続されている請求項１に記載の装置。
【請求項１４】
前記メモリセクションアクセスコントロールが前記メモリアクセスサイクルの各々において入力される前記出力マルチプレクサ制御入力の各々にメモリセクション選択数値を提供するように構成され、前記出力マルチプレクサ制御入力の各々で前記メモリセクション選択数値が前記処理装置の異なる１つに対応し、前記出力マルチプレクサ制御入力の各々での前記メモリセクション選択数値は、各メモリアクセスサイクルにおいて変化し、前記処理装置の全てに対応する数値を繰り返す請求項１３に記載の装置。
【請求項１５】
前記処理装置の各々の命令バスが前記ソフトウエアの部分の各々のサイズに等しい幅を有する請求項１４に記載の装置。
【請求項１６】
前記ソフトウエアの部分の各々が単一の命令から構成される請求項１５に記載の装置。
【請求項１７】
前記命令バスが８ビット、１６ビット、および、３２ビットのうちの１つの幅を有する請求項１４に記載の装置。
【請求項１８】
前記メモリセクションの各々が第１の領域および第２の領域を含み、前記ソフトウエアが、前記第１の領域内に部分の第１のセットを含む第１の区画、および、前記第２の領域内に部分の第２のセットを含む第２の区画を含み、前記メモリセクションの各々の前記第１の領域が前記ソフトウエアの前記第１の区画の全ての部分を含み、前記ソフトウエアの前記第２の区画の部分が前記メモリセクションの前記第２の領域に割当てられる請求項１に記載の装置。
【請求項１９】
前記第１の領域と前記第２の領域との間の境界の位置が設定可能である請求項１８に記載の装置。
【請求項２０】
前記メモリセクションアクセスコントロールがアービタを含み、前記アービタが、メモリアクセスサイクルの後に機能停止する処理装置を削減するために、前記処理装置の１以上の対に連動する前記メモリセクションを交換するように構成される請求項１に記載の装置。
【請求項２１】
請求項１が単一の集積回路に具体化される装置。
【請求項２２】
前記単一の集積回路が複数のグループを含み、各グループが複数の処理装置、連動するメモリ構造、および、連動メモリセクションアクセスコントロールを含む請求項２１に記載の装置。
【請求項２３】
前記メモリ構造に保存されるソフトウエアを受け取るように、また、同時に、前記グループの全ての前記メモリ構造に受け取ったソフトウエアを書き込むように構成されるメモリ書き込み回路を含む請求項２２に記載の装置。
【請求項２４】
前記メモリセクションアクセスコントロールが複数の出力マルチプレクサを含み、該出力マルチプレクサの各々が、前記メモリセクションの１つから前記ソフトウエアの部分の１つを受け取るために接続された入力、および、複数の出力を有し、前記複数の出力の各々が前記処理装置の１つの命令バスに接続される請求項５に記載の装置。
【請求項２５】
前記メモリセクションアクセスコントロールが複数の出力マルチプレクサを含み、該出力マルチプレクサの各々が、前記メモリセクションの連動する１つから前記ソフトウエアの部分の１つを受け取るために接続された入力、および、複数の出力を有し、前記複数の出力の各々が前記処理装置の１つの命令バスに接続されている請求項１に記載の装置。
【請求項２６】
複数の処理装置に、該複数の処理装置によって実行されるソフトウエアを含む共用命令メモリへのアクセスを提供するための方法であって、
連続する部分が連続するメモリセクションに存するように、複数の同時アクセス可能メモリセクションに前記ソフトウエアを割当てるステップと、
複数のメモリアクセスサイクルの各々において、前記処理装置の各々について、前記メモリセクションの異なる１つから前記ソフトウエアの部分を読み出すステップ、および、
連続する前記メモリアクセスサイクルにおいて、前記処理装置の少なくとも１つについて、連続する複数の前記メモリセクションから前記ソフトウエアの連続する複数の部分を読み出すステップを含む方法。
【請求項２７】
連続する複数の前記メモリアクセスサイクルのにおいて、全ての前記処理装置について、連続する複数の前記メモリセクションから前記ソフトウエアの連続する複数の部分を読み出すステップを含む請求項２６に記載の方法。
【請求項２８】
メモリアクセスサイクルの後に機能停止する処理装置を削減するために、前記処理装置の１以上の対に連動する前記メモリセクションを相互交換するステップを含む請求項２６に記載の方法。
【請求項２９】
前記部分の各々が単一の命令から構成される請求項２６に記載の方法。
【請求項３０】
前記命令が８ビット、１６ビット、および、３２ビットのうちの１つの長さを有する請求項２９に記載の方法。
【請求項３１】
複数の処理装置に、該複数の処理装置によって実行されるソフトウエアを含む共用命令メモリへのアクセスを提供するための方法であって、
前記ソフトウエアの連続する部分が連続するメモリセクションにに存するように、複数の同時アクセス可能メモリセクションに割当てられた前記ソフトウエアを提供するステップと、
連続するメモリサイクルにおいて、前記処理装置の各々を前記メモリセクションの１つと連動させ、前記プロセッサの各々が、前記連動するメモリセクションから前記ソフトウエアの部分を読み出すことを可能にするステップ、および、
連続するメモリアクセスサイクルにおいて、各処理装置が連続する複数の前記メモリセクションから前記ソフトウエアの連続する複数の部分にアクセスできるように、前記処理装置と前記メモリセクションとの間の連動を順次交代させるステップを含む方法。
【請求項３２】
メモリアクセスサイクルの後に機能停止する処理装置を削減するために前記処理装置の１以上の対に連動される前記メモリセクションを交換するステップを含む請求項３１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理の分野に関する。詳細には、本発明は、共用プログラムメモリからの命令を実行する複数のプロセッサを有するデータ処理デバイスに関する。本発明は、例えば、ネットワークプロセッサおよび画像プロセッサにおける応用例を有する。
【背景技術】
【０００２】
類似のタスクを行うために、複数のデータプロセッサが同時に動作して、同じコンピュータソフトウエアを実行する様々な状況がある。例えば、ネットワークプロセッサは、電気通信ネットワークにおいてデータパケットを受信し、パケット内の情報に基づいて処理を行う装置である。ネットワークプロセッサによって行われる処理の例には、特定の出力ポートにパケットを転送すること、パケットを優先キューに割り当てること、パケットをドロップすることなどが含まれる。ほとんどのネットワーク処理タスクは各パケットについて個別に行われなければならないため、着信パケットを処理するタスクを複数の処理装置の間で共用するアーキテクチャをネットワークプロセッサが有することは珍しくない。処理装置の各々は、着信パケットがどのように処理されるかを制御する同じコンピュータソフトウエアを実行する。
【０００３】
単一の特定用途向け集積回路（ＡＳＩＣ）上に、多数のネットワークプロセッサを作製することができる。各プロセッサは命令メモリからの命令を実行する。いくつかのネットワークプロセッサは、いくつかの処理装置によって共用される共用命令メモリを有する。例えば、国際公開第０１／１７１７９号パンフレットは、共用命令メモリからのピココードを同時に実行できるＮ個の処理装置を有するネットワークプロセッサを開示する。
【０００４】
画像処理デバイスも、共用命令メモリからの命令を実行する複数の処理装置を含むことができる。
【０００５】
このような共用メモリアーキテクチャの問題は、共用命令メモリ内の各位置が、典型的には一度に１つのプロセッサのみによってしかアクセスできないことである。この場合、いくつかの処理装置は、それらが命令を必要とする時でも、共用命令メモリから命令を得ることが可能でないことがある。そのようなプロセッサは、それらが必要としている命令を共用命令メモリから読み出すことができるタイムスライスまで機能を停止することがある。これは非効率的であり、処理の全体的なスループットを低下させる。
【０００６】
【文献１】
国際公開第０１／１７１７９号パンフレット
【考案の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、複数の処理装置によって実行されるべき命令に対するアクセスを複数の処理装置に提供するための方法および装置に関する。この命令は、処理装置間で共用されるメモリ構造に保持される。
【課題を解決するための手段】
【０００８】
本発明の１つの態様は、複数の処理装置、いくつかの同時アクセス可能メモリセクションを含むメモリ構造、および、メモリセクションアクセスコントロールを含む装置を提供する。メモリセクションの数は、処理装置の数に少なくとも等しい。メモリ構造は、連続する部分が連続するメモリセクション内に存するように、メモリセクション間に分布される部分を備える複数の連続する部分を含むソフトウエアを保持することができる。メモリセクションアクセスコントロールは、処理装置とメモリ構造の間に接続され、複数の連続するメモリアクセスサイクルの各々で、処理装置の各々が、メモリセクションの異なる１つからソフトウエアの部分の１つを読み出すことを可能にするように構成される。メモリセクションアクセスコントロールは、処理装置の少なくとも１つが、連続するメモリアクセスサイクルで、連続する複数のメモリセクションからソフトウエアの連続する複数の部分を読み出すことを可能にする。
【０００９】
本発明の他の態様は、複数の処理装置によって実行されるべきソフトウエアを含む共用命令メモリに対するアクセスを複数の処理装置に提供するための方法を提供する。この方法は、連続する部分が連続するメモリセクションに存するように、複数の同時アクセス可能メモリセクションの間にソフトウエアを分布させるステップ、複数のメモリアクセスサイクルの各々において、処理装置の各々のために、メモリセクションの異なる１つからソフトウエアの部分を読み出すステップ、および、連続する複数のメモリアクセスサイクルにおいて、処理装置の少なくとも１つのために、連続する複数のメモリセクションからソフトウエアの連続する複数の部分を読み出すステップを含む。
【００１０】
本発明の更なる態様および本発明の特定の実施形態の特徴を以下に説明する。
【００１１】
図面では本発明の非限定的実施形態を示す。
【００１２】
以下の説明全体を通して、本発明の更に徹底的な理解を提供するために、特定の詳細を述べる。しかし、本発明はこれらの具体点がなくとも実現することができる。他の例において、本発明を不必要に不明瞭にすることを回避するために、よく知られている要素は詳細には示さず、また、説明しない。したがって、本明細書および図面は限定的ではなく例示的な意味で考えるべきである。
【発明を実施するための最良の形態】
【００１３】
図１は本発明の１つの実施形態によるマルチプロセッサデータ処理装置１０を示す。装置１０はいくつかの処理装置１２を含む。装置１０は、整数ｍに対し２ｍ個の処理装置１２を含むことが便利である。各処理装置１２は、ＡＳＩＣ上にプロセッサコアを含むことができる。処理装置１２はメモリ構造１３に保存される命令にアクセスし、実行する。メモリ構造１３は複数の独立にアクセス可能なセクション１４を含む。示す実施形態において、メモリ構造１３は、４つの処理装置１２による実行のための命令を含む４つのセクション１４−０から１４−３までを含む。
【００１４】
メモリ構造１３は、処理装置１２によって実行されるべきソフトウエアプログラム１５を含む。図２に示すように、ソフトウエアプログラム１５は、（各々が１つの命令、または、任意にマルチ命令を含む）いくつかの部分（ＰＡＲＴ）を含む。各ＰＡＲＴは、好ましくは、処理装置１２の命令バス１７の幅に等しい幅を有する。各ＰＡＲＴは例えば１つのワードを含み、命令バス１７は各々１つのワードの幅を有することができる。ワードは、例えば、８、１６、３２、または、６４ビットのワードとすることができる。
【００１５】
ＰＡＲＴはセクション１４−０から１４−３までの間でインターリーブされる。セクション１４−０はＰＡＲＴ０、４、８、１２などを含む。セクション１４−１はＰＡＲＴ１、５、８、１３などを含む。セクション１４−２はＰＡＲＴ２、６、９、１４などを含む。セクション１４−３はＰＡＲＴ３、７、１０、１５などを含む。
【００１６】
メモリセクションアクセスコントロールは処理装置１２とメモリ構造１３との間に接続される。メモリセクションアクセスコントロールは、各メモリアクセスサイクルにおいてどの処理装置１２がどのメモリセクション１４にアクセスできるかを決定する。図１の実施形態において、メモリセクションアクセスコントロールは、各セクション１４について、入力マルチプレクサ２０、出力マルチプレクサ２４、および、カウンタ２５を含む。各カウンタ２５は入力マルチプレクサ２０および出力マルチプレクサ２４の入力を制御するために提供される数値を含む。この数値は、メモリセクション選択数値と呼ぶことができる。２ｍ個のプロセッサがある場合、カウンタ２５はｍビットのカウンタであると好都合である。
【００１７】
各処理装置１２はプログラムカウンタ２２を有する。プログラムカウンタ２２は、典型的には、図１の点線１２’によって示す処理装置１２の一部である。プログラムカウンタ２２は、連動する処理装置１２による実行のためにメモリ構造１３からフェッチされるソフトウエア１５の次の部分（ＰＡＲＴ）を直接または間接に示す数値を含む。各処理装置１２と連動するプログラムカウンタ２２は各入力マルチプレクサ２０の入力に提供される。
【００１８】
各メモリセクション１４の入力において、入力マルチプレクサ２０は処理装置１２の１つのためにプログラムカウンタ数値を提供する。どのプログラムカウンタ数値がメモリセクション１４の入力に供給されるかは、カウンタ２５内の数値によって決定される。各サイクルにおいて、ソフトウエア１５のＰＡＲＴは、セクション１４の入力における数値によって指定される各メモリセクション１４から検索される。
【００１９】
各メモリセクション１４は出力にソフトウエア１５の検索されたＰＡＲＴを提供する。メモリセクション１４の各出力は各出力マルチプレクサ２４の入力に接続される。各出力マルチプレクサ２４からの出力は、処理装置１２の１つと連動する命令バス１７に接続する。これによって、処理装置１２の各々は、出力マルチプレクサ２４によってメモリセクション１４の１つから命令を受け取る。特定のメモリアクセスサイクルにおいて、特定の処理装置１２に送られる命令を発する特定のメモリセクション１４は、その処理装置１２に連動するカウンタ２５の数値によって決定される。
【００２０】
カウンタ２５内の数値は、各メモリアクセスサイクルの間に、各処理装置１２がメモリセクション１４の異なる１つに対してアクセスするように設定される。後続の各メモリアクセスサイクルにおいて、いくつかのメモリアクセスサイクルにわたって各処理装置１２が各メモリセクション１４およびソフトウエア１５の全てのＰＡＲＴに対してアクセスするように、カウンタ２５内の数値が変更される。例えば、カウンタ２５内の数値は、図３に示すように順次交代させることができる。４つのメモリセクション１４および２５−０から２５−３までとして識別される４つのカウンタ２５がある場合、カウンタ２５内の数値は表Ｉに示すように順次交代させることができる。
【表１】
2004038959.tif 000003
【００２１】
例えば、図１のシステムがリセットされるとき、各プロセッサユニット１２はソフトウエア１５の実行を始めるように設定される。各プロセッサユニット１２のプログラムカウンタ２２は、ソフトウエア１５のＰＡＲＴ０を識別する数値を含む。ＰＡＲＴ０はメモリセクション１４−０内にあるため、（第１のメモリアクセスサイクルにメモリセクション１４−０に対してアクセスする）処理装置１２−０のみが、それが必要とする命令を得る。処理装置１２−０は、第１のメモリアクセスサイクルのメモリセクション１４−０に対するアクセスを備える唯一の処理装置である。なぜなら、それのカウンタ２５−０における数値がメモリセクション１４−０に対応するからである。他の処理装置１２は機能を停止する。
【００２２】
第２のメモリアクセスサイクルでは、処理装置１２−０はメモリセクション１４−１に対してアクセスし、ソフトウエア１５のＰＡＲＴ１を読み出すことができる（第２のメモリアクセスサイクルで、カウンタ２５−０内の数値はメモリセクション１４−１に対応する）。第２のメモリアクセスサイクルで、処理装置１２−１はソフトウエア１５のＰＡＲＴ０を検索できる。ソフトウエア１５のＰＡＲＴ０に対するアクセスを未だに待っている他の２つ処理装置１２は機能停止する。
【００２３】
第４のメモリアクセスサイクル以降で、処理装置１２のいずれもがソフトウエア１５においてジャンプまたは枝分かれを実行しない限り、各処理装置１２はラウンドロビン方式でソフトウエア１５の次のＰＡＲＴを受け取る。１つの処理装置１２がジャンプまたは枝分かれを確かに実行すれば、そのプロセッサ１２が枝分かれした先の命令を含むメモリセクション１４に対してアクセスする次のメモリアクセスサイクルまで、そのプロセッサは機能を停止する。上述の実施形態において、ジャンプまたは枝分かれする処理装置１２は、もしそのプログラムカウンタ２２内のアドレスの最も低い２つのビットがその対応するカウンタ２５内の数値に一致しなければ、与えられたメモリアクセスサイクルにおいて機能を停止する。
【００２４】
多くの応用例において、ソフトウエア１５は、共通に実行されるコードの比較的小さなセクション、および、扱わなければならないが比較的稀にしか発生しない状況を扱うための比較的大きな量のコードを含む。例えば、処理装置１２がパケット処理に適用された場合、処理装置１２のほとんどは、ソフトウエア１５の共通に実行される部分を実行するのに時間のほとんどを費やす。時々、処理装置１２は、例えば、誤ったパケット、または、セルの伝送、または、選択肢を備えたパケットなどの例外に遭遇する。これが発生した場合、処理装置１２は、例外を扱うためのコードを含むソフトウエア１５のあまり共通に使用されない部分に枝分かれする。
【００２５】
このような状況において、上述したように、メモリセクション１４の各々にソフトウエア１５の完全に共通に使用される区画を提供すること、および、メモリセクション１４間にソフトウエア１５の残りのあまり共通に使用されない区画を分布させることは有利となることがある。図４はメモリセクション１４におけるソフトウエア１５の１つの可能な配列を示す。メモリセクション１４は、各々２つの領域１４Ａおよび１４Ｂに分割される。ソフトウエア１５の第１の区画１５Ａはメモリセクション１４の各々において繰り返される。第１の区画１５Ａは領域１４Ａに位置する。区画１５Ａは０からＭ−１までの範囲にあるプログラムカウンタ数値によって検索される部分を含む。
【００２６】
ソフトウエア１５の第２の区画１５Ｂは、上述のようにメモリセクション１４の領域１４Ｂ間に分割される。第２の区画１５Ｂは、ＭからＮまでの範囲にあるプログラムカウンタ数値によって検索される部分を含む。図４に示すように、ＰＡＲＴＭ、Ｍ＋４、Ｍ＋８などはメモリセクション１４−０の領域１４Ｂに位置し、ＰＡＲＴＭ＋１、Ｍ＋５、Ｍ＋９などはメモリセクション１４−１の領域１４Ｂに位置する。第２の区画１５Ｂの他のＰＡＲＴは、メモリセクション１４−２および１４−３の領域１４Ｂに位置する。
【００２７】
図４に示すメモリの配置の場合、処理装置１２がソフトウエア１５の区画１５Ａに見出される命令を実行している限り、区画１５Ａの全ての部分（ＰＡＲＴ）がメモリセクション１４の各１つにおいて繰り返されるため、機能停止はない。もし処理装置１２が区画１５Ｂにあるソフトウエア１５の部分（ＰＡＲＴ）に枝分かれすれば、処理装置１２は、それが枝分かれするソフトウエア１５の部分（ＰＡＲＴ）を含むメモリセクション１４へのアクセスを有するまで、最大３つのメモリアクセスサイクルにわたって機能を停止することができる。
【００２８】
メモリ領域１４Ａおよび１４Ｂの相対サイズは設定可能とすることができる。装置１０は、メモリ領域１４Ａとメモリ領域１４Ｂとの間の境界を決定するアドレスを表す数値を含むレジスタを含むことができる。レジスタ内の数値を変更することによって、性能とソフトウエア１５のサイズとのいずれかを取ることができる。セクション１４の全てがメモリ領域１４Ａとして処理されるように数値を設定することによって、より少ない量のソフトウエア１５しか収容できないという犠牲を払って、性能を高め、機能停止を回避することができる。セクション１４の全てがメモリ領域１４Ｂとして処理されるように数値を設定することによって、性能を犠牲にしてソフトウエア１５のための容量を増加させることができる。
【００２９】
図５は本発明の他の実施形態による装置１０’を示す。装置１０’はカウンタ２５の代わりにアービタ３０を含む。アービタ３０は処理装置１２の各々からプログラムカウンタ数値を受け取る入力、および、マルチプレクサ２０および２４を制御する出力を有する。アービタ３０は、処理装置１２が必要とするソフトウエア１５の部分を含むメモリセクション１４に対するアクセスを処理装置１２の各々に供給するためにマルチプレクサ２０および２４を制御しようと試みる。
【００３０】
アービタ３０は、多くの異なる方法で実施することができる。いくつかの実施形態において、アービタ３０は、２つの処理装置１２が次のメモリアクセスサイクルで命令を読み出すメモリセクション１４を相互交換するためにマルチプレクサ２０および２４を制御することができる。例えば、第１の処理装置１２が、区画１５Ｂに位置するソフトウエア１５のＰＡＲＴ（図４を参照）を必要とする場合を考える。区画１５Ｂの各ＰＡＲＴは１つのメモリセクション１４のみに位置するため、その第１の処理装置１２は、ソフトウエア１５の必要とされるＰＡＲＴを含む特定のメモリセクション１４に対してアクセスすることができない場合は、次のメモリアクセスサイクルで機能を停止する。次のメモリアクセスサイクルで、第１の処理装置１２が通常は第１のメモリセクション１４に対してアクセスし、第２の処理装置１２は通常は第２のメモリセクション１４に対してアクセスし、第２のメモリセクション（すなわち、通常は第２の処理装置１２によってアクセス可能である）が第１の処理装置１２によって必要とされるソフトウエア１５のＰＡＲＴを含むと仮定する。これらの状況下において、アービタ３０は、次のメモリアクセスサイクルで第１の処理装置１２が第２のメモリセクション１４にアクセスし、第２の処理装置１２が第１メモリセクション１４にアクセスするように第１および第２のメモリセクション１４に対するアクセスを交換することによって、次のメモリアクセスサイクルで機能停止する処理装置の数を削減することができるかどうかを決定する。もしできるなら、アービタ３０は、この切り換えを実施するために第１および第２のメモリセクションに連動されるマルチプレクサ２０および２４を制御する。
【００３１】
・もし第２の処理装置１２が共用区画１５Ａ内のソフトウエアの部分を実行しているなら（この場合、第２の処理装置はどのメモリセクションにアクセスしたのかには関知しない）；
・もし第２の処理装置１２が区画１５Ｂ内のソフトウエア１５の部分を実行していて、第２の処理装置１２によって必要とされるソフトウエアの部分が第２のメモリセクション１４内に位置していないなら；または、
・（例えば、保全された、または、存在しないプログラムカウンタ数値、または、アービタ３０に供給された（図示しない）別個の信号によって示されるように）第２の処理装置１２が活動していないなら、機能を停止したプロセッサの数はそのような切り換えを行うことによって削減される。
【００３２】
図６はアービタ３０において実施することができる可能な論理を示す。ブロック４０は、区画１５Ｂからのソフトウエア１５の部分を必要とする処理装置１２があるかどうかを決定する。これは、問題の処理装置１２のためのプログラムカウンタ数値を、メモリセクション１４の領域１４Ａおよび１４Ｂを分割する数値と比較することによって、いくつかの実施形態において達成することができる。ブロック４２において、アービタ３０は、そのような処理装置１２がソフトウエア１５の必要とされる部分を含むメモリセクション１４に対するアクセスを通常は有するかどうかを決定するためにチェックを行う。いくつかの実施形態において、これは、プログラムカウンタ数値の最も低い次数のビットを検査することによって達成することができる。ブロック４４において、アービタ３０は交換が有益であるかどうか（すなわち、次のメモリアクセスサイクルで機能停止したいくつかのプロセッサを削減する）を決定する。もしそうであれば、ブロック４６において、アービタ３０は交換を実施する。
【００３３】
アービタ３０は、その出力においてマルチプレクサ２０および２４のための制御信号を作成する論理回路の形で実施することができる。アービタ３０は様々な複雑さのレベルを有する様々なアーキテクチャを有することができる。単純なアービタ３０は、例えば、単一の段における機能停止を削減しようと試みることができる。アービタ３０は、例えば、次のメモリアクセスサイクルで機能停止するいくつかの処理装置１２を削減するために、処理装置の１つまたは複数の対に連動するメモリセクション１４を交換することができる。より複雑なアービタ３０は、より緩慢な動作という犠牲を伴って更なる最適化を試みることができる。アービタ３０は、ソフトウエア１５が図２に示すように構成される場合に、ならびに、ソフトウエア１５が図４に示すように構成される場合に使用することができる。
【００３４】
表ＩＩは、全ての処理装置１２のためのプログラムカウンタ２２が、区画１５Ａにあるソフトウエア１５の部分を必要とするか、または、活動していないかのいずれかである特別な場合のためのアービタ３０の１つの実施形態のための真理値表を与える。これらのプロセッサ要件は、表ＩＩの左手側の欄にある文字「Ａ」によって示され、これは処理装置１２−０から１２−３までの各々に対応する。処理装置１２の各々がいずれのメモリセクション１４に対するアクセスによっても満足されるため、アービタ３０は、処理装置１２へのメモリセクション１４の割り当てを変更する必要がない。これらのメモリセクションの割り当ては、表ＩＩの右手側の欄にある数０〜３によって示され、これらは処理装置１２−０から１２−３までの各々に対応する。処理装置１２−０のためのこの欄の数０は、例えば、次のメモリサイクルで、処理装置１２−０が、次のメモリアクセスサイクルにおいて処理装置１２−０に通常は割り当てられるメモリセクション１４にアクセスすることを示す。
【表２】
2004038959.tif 000004
【００３５】
表ＩＩＩ−０からＩＩＩ−３までは、（ｉ）処理装置１２の３つのためのプログラムカウンタ２２が、区画１５Ａにあるソフトウエア１５の部分を必要とするか、または、活動していないかのいずれかである場合、および、（ｉｉ）処理装置１２−０の１つのためのプログラムカウンタ２２が特定のメモリセクション１４に対するアクセスを必要とする場合のためのアービタ３０の１つの実施形態のための真理値表を与える。
【表３】
2004038959.tif 000005
【表４】
2004038959.tif 000006
【表５】
2004038959.tif 000007
【表６】
2004038959.tif 000008
【００３６】
処理装置１２の２、３、または、４が特定のメモリセクション１４に対するアクセスを必要とする場合のためのアービタ真理値表は、上記を拡張することによって提供することができる。表ＩＶは、処理装置１２−０および１２−１が、各々、特定のメモリセクション１４に対するアクセスを必要とする場合のための可能な真理値表である。
【表７】
2004038959.tif 000009
【００３７】
図８に模式的に示すように、本発明は、処理装置１２およびメモリ１３の双方を搭載するＡＳＩＣ５０において具体化することができる。いくつかの実施形態において、単一のＡＳＩＣ５０は処理装置１２の複数のグループ５２を搭載し、各グループ５２も連動するメモリ構造１３を含む。各グループ５２は、例えば、４〜１６個の処理装置１２を含むことができる。各グループ５２が、２ｍ個の処理装置１２、および、２ｍ個のメモリセクション１４を有するメモリ構造１３を有することが便利である。図８に模式的に示すＡＳＩＣは、８個の処理装置１２の５つのグループ５２ならびに（図示しない）他の回路を有する。ＡＳＩＣ５０は、グループ５２のメモリ構造１３に保存されるべきソフトウエアを受け取り（ソフトウエアは、例えば、チップ外のソースから受け取ることができる）、かつ、全てのグループ５２のメモリ構造１３に受け取ったソフトウエアを同時に書き込むように構成されるメモリ書き込み回路５４を含むことができる。
【００３８】
構成要素（例えば、ソフトウエアモジュール、プロセッサ、アセンブリ、装置、回路など）が上記を参照する場合、特に断らない限り、（「手段」に対する参照を含めて）その構成要素に対する参照は、その構成要素の均等物として、説明されている構成要素の機能を実行する（すなわち、機能的に等価である）いかなる構成要素も含むと解釈するべきであり、開示されている構造と構造的に等価ではないが、本発明の例示的実施形態の機能を実行する構成要素を含む。
【００３９】
前述の開示に照らして当業者には明らかなように、多くの変形および変更は、本発明の精神または範囲から逸脱することなく、本発明の実行において可能である。例えば、
・本発明は、画像処理、ネットワーク処理、デジタル信号処理、または、共通の命令メモリからの命令を実行するいくつかの処理装置を有することが望ましいいかなる他の分野にも適用することができる。
【００４０】
・入力マルチプレクサ２０および出力マルチプレクサ２４を制御するために、別個のカウンタ２５を設けることは必要ではない。マルチプレクサに適する制御信号を生成する状態機械またはいくつかの状態機械を代わりに使用することができる。マルチプレクサの各々に適する制御信号を搬送するための論理と連動する単一のカウンタも使用することができる。
【００４１】
・メモリセクション１４の数がそれらのメモリセクション１４によってサービスされる処理装置１２の数に等しいことは必要ではない。処理装置１２より多くのメモリセクション１４があってもよい。
【００４２】
・アービタ３０が設けられる場合、アービタ３０の能力によっては、特定の処理装置１２が通常はアクセスを有するメモリセクション１４が、例えば図３を参照して説明される利用可能なメモリセクション１４の全ての間で順次交代されることは必要ではないことがある。アービタ３０は機能停止を最小に抑え、かつ、処理装置１２のいずれにも不公平ではない方法で各メモリアクセスサイクルについてメモリセクション１４に各処理装置を割り当てることができる。アービタ３０は、特定の処理装置１２に優先権を与えるためのメカニズムを含むことができる。
【００４３】
・メモリセクションは本明細書において同時アクセス可能であると説明される一方、これは、ソフトウエアのその部分のみが単一のメモリアクセスサイクルにおいてメモリセクションの各々から読み出すことができることを意味する。
【００４４】
・メモリセクションアクセスコントロールが図１に示すカウンタ２５を含む場合、各メモリセクションに対応する別個のカウンタ２５がある必要はない。単一のカウンタ２５は、図７に示す入力および出力マルチプレクサの全てのための適するメモリセクション選択数値２５−０、２５−１、２５−２、および、２５−３を生成するために使用することができる。
【００４５】
・出力マルチプレクサを図１に示すように構成する必要はない。図９に示す他の実施形態１０”において、各メモリセクション１４は出力多重分離器２４’と連動する。特定のメモリセクション１４の出力はその対応する出力多重分離器２４’の入力に接続され、出力多重分離器２４’の４つの出力は個々の処理装置１２に接続される。このような構成の場合、各多重分離器２４’のための制御入力２５’は、その多重分離器２４’に接続される他の処理装置１２の間からデータを受け取るために処理装置１２の特定の１つを選択するために動作する。
【００４６】
・同様に、入力マルチプレクサを図１に示すように構成することは必要でない。図９に示す他の実施形態１０”において、各処理装置１２は入力多重分離器２０’と連動する。特定の処理装置１２のプログラムカウンタは、その対応する入力多重分離器２０’の入力に接続され、入力多重分離器２０’の４つの出力はそれぞれメモリセクション１４に接続される。このような構成の場合、各多重分離器２０’のための制御入力２５’は、その多重分離器２０’に接続される他のメモリセクションの間から命令要求を受け取るためにメモリセクション１４の特定の１つを選択するために動作する。
【００４７】
したがって、本発明の範囲は、冒頭の特許請求の範囲によって規定される趣旨に従って解釈される。
【図面の簡単な説明】
【００４８】
【図１】本発明の１つの実施形態による処理装置のセットのための命令メモリアーキテクチャの模式図である。
【図２】図１の命令メモリアーキテクチャにおける命令の可能な構成の模式図である。
【図３】図１の命令メモリアーキテクチャにおけるメモリセグメントへのアクセスを備えた処理装置を提供するための単純なラウンドロビン方式を制御するための１つの方法を示す図である。
【図４】図１の命令メモリアーキテクチャにおける命令の更なる可能な構成の模式図である。
【図５】アービタを含む、本発明の他の実施形態による処理装置のセットのための命令メモリアーキテクチャの模式図である。
【図６】図５のアービタにおいて実施することができるアルゴリズムを示すフロー図である。
【図７】メモリセクション選択数値を生成するための２ビットカウンタの使用を示す図である。
【図８】処理装置の各グループが共用メモリ構造を有する処理装置の複数のグループを有するＡＳＩＣを示す図である。
【図９】本発明の代案となる実施形態による処理装置のセットのための命令メモリアーキテクチャの模式図である。
【符号の説明】
【００４９】
１０　マルチプロセッサデータ処理デバイス
１２　処理装置
１３　メモリ構造
１４　メモリセクション
１５　ソフトウエアプログラム
１７　命令バス
２０　入力マルチプレクサ
２０’　入力多重分離器
２２　プログラムカウンタ
２４　出力マルチプレクサ
２４’　出力多重分離器
２５　カウンタ
３０　アービタ
５０　ＡＳＩＣ
５２　グループ
５４　メモリ書き込み回路
【図１】
2004038959.tif 000010
【図２】
2004038959.tif 000011
【図３】
2004038959.tif 000012
【図４】
2004038959.tif 000013
【図５】
2004038959.tif 000014
【図６】
2004038959.tif 000015
【図７】
2004038959.tif 000016
【図８】
2004038959.tif 000017
【図９】
2004038959.tif 000018
【外国語明細書】
2004038959.tif 000019
2004038959.tif 000020
2004038959.tif 000021
2004038959.tif 000022
2004038959.tif 000023
2004038959.tif 000024
2004038959.tif 000025
2004038959.tif 000026
2004038959.tif 000027
2004038959.tif 000028
2004038959.tif 000029
2004038959.tif 000030
2004038959.tif 000031
2004038959.tif 000032
2004038959.tif 000033
2004038959.tif 000034
2004038959.tif 000035
2004038959.tif 000036
2004038959.tif 000037
2004038959.tif 000038
2004038959.tif 000039
2004038959.tif 000040
2004038959.tif 000041
2004038959.tif 000042
2004038959.tif 000043
2004038959.tif 000044
2004038959.tif 000045
2004038959.tif 000046
2004038959.tif 000047
2004038959.tif 000048
2004038959.tif 000049
2004038959.tif 000050
2004038959.tif 000051
2004038959.tif 000052
2004038959.tif 000053
2004038959.tif 000054