(57)【要約】  マルチプロセッサ回路内の複数のプロセッサ（１０）を、独立的にアクセス可能な複数のメモリバンク（１２）に対して接続回路（１４）を介して接続する。接続回路は、プロセッサ（１０）の組み合わせからのアドレスを、このアドレスによって選択されたメモリバンク（１２）の入力アドレスに転送するように構成する。接続回路（１４）は、少なくとも１個のプロセッサ（１０）がメモリバンク（１２）のうち関連する１個の関連メモリバンクに対して関連プロセッサとして関連付けする、衝突回避スキームを提供する。接続回路（１４）は、関連プロセッサに対して、メモリバンク（１２）における関連する１個の関連メモリバンクではない他の１個よりも、関連メモリバンク（１２）に対して、より高い最小保証アクセス頻度を保証する。デフラグ用プログラム（１６）は、関連プロセッサ（１０）上で実行する、メモリバンク（１２）のうち他の１個に格納した、タスクに関連するデータを検出し、この検出データを、タスクの実行中に関連メモリバンク（１２）に移転する。このデフラグ用プログラムによれば、データ移転後に、関連プロセッサ（１０）によるこのデータに対するアドレス指定を、他の１個のメモリバンク（１２）から、関連メモリバンクに再マッピングし、好適には、この再マッピングをデータ移転の進行の際に徐々に行う。
2009520295.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサ回路において、
・  それぞれがアドレス出力を有する、複数のプロセッサと、
・  それぞれがアドレス入力を有し、独立にアドレス指定可能な複数のメモリバンクと、
・  アドレス出力とアドレス入力との間を接続し、前記プロセッサの組み合わせからのアドレスを、これらアドレスによって選択されたメモリバンクの入力アドレスへ、伝送するよう構成した接続回路であって、前記プロセッサのうち少なくとも１個のプロセッサをメモリバンクのうち１個の関連するメモリバンクに関連プロセッサとして関連付けする、競合解決スキームを提供し、関連プロセッサに対しては、メモリバンクのうち関連付けした１個のメモリバンクではない他の１個のメモリバンクよりも、前記関連した１個のメモリバンクへのより高い最低保証アクセス頻度を保証するよう構成した、該接続回路と、
・  関連付けしたプロセッサ上で実行するが、前記メモリバンクにおける前記他の１個のメモリバンクに記憶した、タスクに関連するデータを検出し、この検出に応答してタスク実行中に関連付けした１個のメモリバンクに前記データを移転し、この移転後に関連付けしたプロセッサによるデータのアドレス指定を、前記他の１個のメモリバンクから、前記関連付けした１個のメモリバンクに再マッピングするよう構成した、デフラグ用プログラムと、
を備えたことを特徴とするマルチプロセッサ回路。
【請求項２】
請求項１に記載のマルチプロセッサ回路において、前記再マッピングの前後に対応のマッピングに基づいてマッピングされるアドレス間を識別するための、閾値アドレスを記憶する記憶素子を備え、前記デフラグ用プログラムは、
・  タスク実行中に連続して、データ項目の順次のアドレスをブロック毎に移転することで、データ項目のブロックを移転し、また
・  前記記憶素子内の閾値アドレスを、連続するデータ項目の１つを順次に移転する度毎に、更新するよう構成した、マルチプロセッサ回路。
【請求項３】
請求項１に記載のマルチプロセッサ回路において、関連付けしたプロセッサは、関連付けした１個のメモリバンク、および関連付けした１個のプロセッサではない、他の少なくとも１個のプロセッサのアドレス空間と少なくともオーバーラップする単独のアドレス空間の一部として、前記他の１個のメモリバンクにアドレス指定するよう構成したマルチプロセッサ回路。
【請求項４】
請求項１に記載のマルチプロセッサ回路において、各プロセッサは、単独のアドレス空間の一部として、すべてのメモリバンクをアドレス指定するよう構成したマルチプロセッサ回路。
【請求項５】
請求項１に記載のマルチプロセッサ回路において、前記接続回路は、複数のプロセッサのそれぞれに対して、関連付けした１個のメモリバンク、および前記他の１個のメモリバンクへのアクセスに、複数のプロセッサにおける関連付けした１個のプロセッサと、他のプロセッサとの間で保証アクセス頻度の比を生じ、関連付けした１個のメモリバンクに対するアクセス頻度が、前記他の１個のプロセッサよりも高くなるよう構成した、マルチプロセッサ回路。
【請求項６】
請求項１に記載のマルチプロセッサ回路において、前記接続回路は、他の１個のプロセッサに対して、関連付けした１個のメモリバンクに対するよりも、メモリバンクにおける前記他の１個に対して、より高い最低保証アクセス頻度を保証するように、構成し、デフラグ用プログラムは、前記他のプロセッサで実行する、前記関連付けした１個のメモリバンクに記憶した、他のタスクに関連する他のデータを検出し、この他のタスク実行中に、前記他の１個のモリバンクに前記データを移転し、前記他の１個のプロセッサによるデータのアドレス指定を、他のデータの移転後に、前記関連付けしたメモリバンクから、前記他の１個のメモリバンクに再マッピングするよ構成した、マルチプロセッサ回路。
【請求項７】
請求項１に記載のマルチプロセッサ回路において、前記デフラグ用プログラムを、接続回路を介して前記プロセッサに並列に、前記メモリバンクに接続し、その接続回路は、前記メモリバンクに対するアクセス優先度が、前記デフラグ用プログラムから前記プロセッサに対するアクセス優先度よりも低くなるよう割り当てる構成とした、マルチプロセッサ回路。
【請求項８】
請求項１に記載のマルチプロセッサ回路において、前記関連付けしたプロセッサに接続したメモリマッピング回路であって、このメモリマッピング回路内に記憶したマッピング情報に基づいて、それぞれに対応するアドレス範囲をそれぞれに対応する記憶域の範囲にマッピングするよう構成した該メモリマッピング回路を備え、前記移転の後にマッピング情報を更新する前記デフラグ用プログラムを前記メモリマッピング回路に接続した、マルチプロセッサ回路。
【請求項９】
独立にアドレス指定可能な複数のメモリバンクへ、並列にアクセスを行うよう接続した複数のプロセッサを備える、マルチプロセッサ回路を作動させる方法において、
・  各プロセッサが、そのプロセッサがアクセスしているメモリバンクへの最低保証アクセス頻度を有するようにプロセッサの前記メモリバンクに対するアクセス競合を回避するステップであって、少なくとも関連付けしたプロセッサが関連付けした１個のメモリバンクに対して、関連付けした１個のメモリバンクではない他の１個のメモリバンクに対するよりも高い最低保証アクセス頻度を得られるようにする、アクセス競合回避ステップと、
・  前記関連付けしたプロセッサ上で実行し前記、他の１個のメモリバンクに記憶したタスクに関連するデータを検出するデータ検出ステップと、
・  前記タスク実行中に、関連付けした１個のメモリバンクに前記データを移転するデータ移転ステップと、
・  前記移転後に、前記関連付けしたプロセッサによるデータのアドレス指定を前記他の１個のメモリバンクから、前記関連付けした１個のメモリバンクに再マッピングする再マッピングステップと、
を有することを特徴とする方法。
【請求項１０】
請求項９に記載の方法において、前記プロセッサ回路は、前記再マッピングの前後に、それぞれに対応するマッピングに基づいてマッピングするアドレス間を区別するための、閾値アドレスを記憶する記憶素子を有するものとし、前記方法は、
・  前記タスク実行中に、対応するデータ項目のブロックを、順次のアドレスブロックとして順次に移転することで、移転する移転ステップと、
・  前記データ項目における順次の各１個のブロックが移転される度毎に、前記記憶素子内で閾値アドレスを更新するステップと
を有するものとした方法。
【請求項１１】
マルチプロセッサ回路において、
・  それぞれがアドレス出力を有する複数のプロセッサと、
・  それぞれがアドレス入力を有し、独立にアドレス指定可能な複数のメモリバンクと、
・  アドレス出力とアドレス入力との間を接続し、前記プロセッサの組み合わせからのアドレスを、これらアドレスによって選択されたメモリバンクの入力アドレスへ、伝送するよう構成した接続回路であって、それぞれが複数のメモリバンク上に分散するプロセッサのアドレス空間をマッピングし、異なるプロセッサのアドレス空間がメモリバンクのオーバーラップする集合としてマッピングし、接続回路は、各プロセッサからのメモリアクセスに対して、メモリアクセスによってアドレス指定されたアドレス空間の一部に基づいてそれぞれ優先レベルを付与し、これにより、メモリバンクの異なる各個へのメモリアクセスに関してプロセッサの相対優先レベルが異なるよう構成した該接続回路と、
を備えたことを特徴とするマルチプロセッサ回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチプロセッサ回路に関するものである。
【背景技術】
【０００２】
メモリアクセスは、マルチプロセッサ回路に生じる問題を原因として競合（衝突）を生ずる。単純なマルチプロセッサシステムにおいて、各プロセッサには、そのプロセッサのみアクセスできるメモリバンクが個別に提供される。従ってアクセス競合は発生しないが、メモリバンクの容量は、最も要求されるタスクをサポートできなければならず、このことは他のタスクに対して相当なオーバーヘッドを有することを意味する。さらに、単独のプロセッサのみアクセス可能なメモリバンクを介しては、プロセッサ間通信を行うことができない。
【０００３】
代替的解決法として、すべてのプロセッサに対する共有メモリを使用する。しかし、この手法は、アクセス競合が生じた場合、マルチプロセッサシステムは速度が低下する。この問題は、各プロセッサとメインメモリとの間に１つずつキャッシュメモリを設けることにより軽減される。しかしキャッシュメモリは、システムの最悪状況パフォーマンスを極端に低下させる（プロセッサにより処理されるタスクの組み合わせによって反応時間が長くなる可能性がある）。これにより、最小に保証された最低の最悪状況パフォーマンスとなる、複数のリアルタイム処理タスクを稼働させるときは、キャッシュメモリは好ましい解決法とはならない。またキャッシュメモリの使用は、異なるキャッシュメモリ間の調和が保持されなければならないときに、メモリ設計を複雑にする。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、とくに、メモリの効率的な使用による最悪状況パフォーマンスを改善するマルチプロセッサシステムを得るにある。
【課題を解決するための手段】
【０００５】
本発明の一つの態様は、請求項１に記載のマルチプロセッサ回路を提供する。このマルチプロセッサ回路において、複数のプロセッサが同一メモリバンクに並列アクセスをもつ。差別化競合回避スキームを使用して、他のメモリバンクよりも、少なくとも１個のメモリバンクに対する、より高い最低保証アクセス頻度をプロセッサに付与する。好適には、各プロセッサには、他のメモリバンクよりも、対応するメモリバンクへの、より高い最低保証アクセス頻度を付与する。プロセッサと関連するメモリバンクとは別のメモリバンク内に蓄積された、プロセッサによって実行されるタスクに並列的に動作するデフラグ用プログラムを設け、あるプロセッサ上で稼働するが、そのプロセッサに関連しないメモリバンクに記憶されたタスクに関連するデータを、このデフラグ用プログラムによって検出する。データを移転する際に、実行中のアドレスマッピングを変更する。このようにして最悪状況パフォーマンスが改善され、例えばリアルタイム処理条件を損なうことなく、新しいタスクを追加するための余地が生まれる。
【０００６】
好適には、再マッピング前後に、各マッピングに基づいてマッピングされた複数のアドレスを区別するための閾値アドレスを記憶する記憶素子を設ける。この閾値アドレスは、データを移転する間に段階的に変更し、データブロックの移転中もデータをアドレス指定し続けるタスクを可能とする。
【０００７】
典型的な実施形態において、プロセッサは、関連付けした１個のメモリバンクおよび他のメモリバンクを、単一のアドレス空間の対応部分としてアドレス指定するよう構成し、この単一のアドレス空間は他の１個のプロセッサにおけるアドレス空間と少なくとも部分的にオーバーラップする。このようにして、関連付けしたメモリバンク内および、同タイプの命令およびアドレスを有する他のメモリバンク内（そこからデフラグ用プログラムがデータを移転する）の記憶域を、プロセッサはアドレス指定することができる。これにより、メモリ要求タスクの１個の大きいメモリとしてメモリバンクを使用できるとともに、同一のメモリを使用してただ１個のみメモリバンク内にアドレス指定する必要のある他のタスクのためのパフォーマンスを改善することができる。
【０００８】
好適には、デフラグ用プログラムは、パフォーマンス向上のため、プロセッサと関連付けしたメモリバンクにデータを移転するようにタスクを実行するプロセッサに応じて、データを１個のメモリバンクから他のメモリバンクに、またはその逆に移転する可逆デフラグを行うものとする。従って、改善されたパフォーマンスにより、複数のタスクは並列に実行される。
【０００９】
一般的にデフラグ用プログラムはプロセッサと並列に、メモリバンクに接続するが、デフラグ用プログラムに保証されているメモリバンクへのアクセスは、プロセッサのアクセスよりも低い優先度を有する。
【００１０】
一つの実施形態において、プロセッサからのアドレスが、データを移転した閾値アドレスの一方の側にあるか、もしくは逆側にあるかに基づいて、プロセッサからのアドレスに異なるベースアドレスを加える、単純なアドレスマッピング回路を使用する。デフラグ用プログラムは、ベースアドレスおよび閾値アドレスを更新する。異なるアドレス範囲用の複数のマッピングを定義するメモリマッピング回路を設けることができる。この場合、デフラグ用プログラムはメモリマッピングユニット内のアドレスを更新する。
【００１１】
有利には、プロセッサのアドレス空間（アドレスの連続する範囲内のアドレス）を、メモリバンクにわたり分散してマッピングするマルチプロセッサ回路を設け、これらバンクに対して、異なるプロセッサからのアドレスを互いにオーバーラップさせてマッピングする。好適には、接続回路が、アクセスアドレスに基づくアクセス優先度レベルを割り振り、異なるバンクに対しては優先度が異なるように、一連の相対優先度セットをプロセッサに対し定義する。
【発明を実施するための最良の形態】
【００１２】
本発明によるこれらおよび他の目的ならびに有利な態様は、以下の図を用いた例示的な実施形態の詳述により明らかとなるであろう。
【００１３】
図１に、複数個のプロセッサ１０、複数個のメモリバンク１２、接続回路１４およびデフラグ用プログラム１６を含むデータ処理回路を示す。プロセッサ１０およびデフラグ用プログラム１６は、接続回路１４を介してメモリバンク１２に接続する。接続回路１４は、クロスバースイッチ回路１４０およびアドレスアービター１４２を含む。プロセッサ１０およびデフラグ用プログラム１６におけるアドレス出力およびデータ入出力を、クロスバースイッチ回路１４０に接続する。メモリバンク１２におけるアドレス入力およびデータ入出力を、クロスバースイッチ回路１４０に接続する。プロセッサ１０およびデフラグ用プログラム１６におけるアドレス出力を、アドレスアービター１４２に接続し、このアドレスアービター１４２は、クロスバースイッチ回路１４０の切替え制御入力、およびプロセッサ１０の容否確認応答入力に接続した複数の出力（図中では１つのみ示す）を有する。好適には、デフラグ用プログラム１６は、プロセッサ１０のような他のプロセッサとしてメモリバンク１２に接続し、優先度は低いが全てのメモリバンクにアクセスできるようにする。アービター１４２は図中では１つのみ示されているが、アービター１４２は各メモリバンク１２のための分散アービター回路により構成することができることを理解されたい。同様に、デフラグ用プログラム１６は、例えば各プロセッサ１０のための分散デフラグ用回路を有することができる。接続回路１４は、一般的にはアービター１４２およびクロスバースイッチ１４０に供給する前に、プロセッサ１０からのアドレスを変換するためのアドレス変換回路（図示せず）を有することができる。
【００１４】
動作にあたり、プロセッサ１０は、処理タスクを定義する命令プログラムを実行する。一般に、複数のタスクを同時に実行する。例えば読出しおよび書込み（ロード／記憶）命令のような少なくとも若干の命令により、プロセッサ１０はメモリバンク１２にアクセスする。接続回路１４およびメモリバンク１２は、順次のアクセスサイクルで動作し、各アクセスサイクルにおいて異なるアドレスの組み合わせが適用される。あるアクセスサイクルでプロセッサ１０がメモリバンク１２にアクセスするとき、プロセッサ１０は接続回路１４にアドレスを供給する。接続回路１４は、そのアドレスをメモリバンク１２のうちどのメモリバンクにマッピングするかを決定し、またそのアドレスの少なくとも一部を、そのアクセスサイクル用にアドレス指定されたメモリバンク１２に接続した１個の出力、にルート伝送する。したがって、データは、そのデータサイクル用に、アドレス指定されたメモリバンク１２とプロセッサ１０との間におけるルートで伝送する（書込み動作の場合は、プロセッサ１０からメモリバンク１２へ、読出し動作の場合は、メモリバンク１２からプロセッサ１０へ）。そのアクセスサイクルの対応するデータは、そのアドレスに同時にルート付けされるが、代案として、何らかのパイプライン動作形態を使用し、アドレスがそれに順次のアクセスサイクル用に供給および／もしくはルート付けされるときに、データがルート伝送するようにすることもできる。
【００１５】
少なくとも若干のプロセッサ１０は、メモリバンク１２における同一の１個のメモリバンク１２にアドレス指定することができる。１つの実施形態において、全てのプロセッサ１０は全てのメモリバンク１２にアドレス指定することができる。他の実施形態において、各プロセッサ１０はＮ個（例えばＮ＝２もしくは３）のメモリバンク１２からなるサブセットにアドレス指定することができ、各プロセッサのサブセットは部分的にオーバーラップし、例えばチェーン状になる。クロスバースイッチ回路１４０は、メモリバンク１２にアドレス指定することができるプロセッサ１０と、そのメモリバンク１２との間における、アドレスおよびデータのルート伝送を行う。
【００１６】
ある実施形態において、各プロセッサ１０は隣接アドレスを用いて複数の連続するメモリバンク１２にアドレス指定する。すなわち、第１メモリバンク１２の外部における第１連続アドレスは、次の連続メモリバンク１２の内部における第１アドレスにアドレス指定する。このようにして、各プロセッサ１０は、効果的にその複数個のメモリバンクを１つの大きなメモリ空間と「みなし」、異なるプロセッサ１０のメモリ空間は少なくとも部分的に相互にオーバーラップする。
【００１７】
ただ１個のプロセッサ１０が、あるアクセスサイクル内で特定メモリバンク１２にアドレス指定する場合、アービター回路１４２はその特定メモリバンク１２へのアクセスを、そのアクセスサイクル内でそのプロセッサ１０に対して許可する。しかし、複数個のプロセッサ１０が同一のメモリバンク１２にアドレス指定することができるため、複数のプロセッサ１０が同一のアクセスサイクル内でメモリバンク１２のうちの同一の１つにアドレスを供給しようとする可能性があり、したがってバンクの衝突を生ずる。アドレスアービター１４２は、各プロセッサ１０の各メモリバンク１２へのアクセスを許可することで、これらの競合（衝突）を解決する。アドレスアービター１４２はプロセッサ１０とメモリバンク１２との間の関係を定義付けする。あるメモリバンク１２に関連するプロセッサ１０は、メモリバンク１２にアドレス指定可能なプロセッサ１０のうちの１つである。ある例において、各プロセッサ１０は対応のメモリバンク１２と関連し、また随意的にどのプロセッサ１０とも関連付けしていない１個またはそれ以上のメモリバンク１２を持つ。
【００１８】
例えば、各第２サイクルまたは各第３サイクルといった、アクセスサイクルにおける少なくとも所定一部分において、メモリバンク１２に関連するプロセッサ１０を含む１個より多いプロセッサ１０がメモリバンク１２にアドレス指定するときには、常に、アービター１４２はメモリバンク１２に関連付けしたプロセッサ１０にアクセスを許可する。上記所定の一部分以外のアクセスサイクル部分において、メモリバンク１２に関連付けしたプロセッサ１０を含む場合も含めて、１個より多い数のプロセッサ１０がメモリバンク１２をアドレス指定する時に、アービター１４２はプロセッサ１０のうち任意の１個を選択するよう、総当たり選択のようなスタベーション（窮乏）回避選択スキームを使用する。上記アクセスサイクルの所定一部分において、関連付けしたプロセッサ１０がメモリバンク１２をアドレス指定しない場合に限り、アービター１４２は他のプロセッサ（関連付けしたプロセッサではない）のメモリバンクへのアクセスを許可する。１個より多い数の非関連付け（関連付けしない）プロセッサ１０が同時にメモリバンクをアドレス指定することがありうるとき、他の手法を使用してこの競合（衝突）を解決することができる。例えば、アドレスアービター１４２はメモリバンク１２に対するプロセッサ１０のランク付けを割り振り、そのメモリバンクをアドレス指定する最高ランクのプロセッサ１０がアクセスを許可される。他の例において、アドレスアービター１４２は、順繰り総当たり式に非関連付けプロセッサのアクセスを許可する。
【００１９】
アドレスアービター１４２は、クロスバースイッチ回路１４０を制御することで、メモリバンク１２とアクセスを許可されたプロセッサ１０との間でアドレスおよびデータをルート付け伝送し、アクセスが許可されたことを示すために容認応答信号をその許可プロセッサ１０に送信し、メモリバンク１２へアドレス指定したもののアクセスを許可されなかったプロセッサ１０に否認応答信号を送信する。
【００２０】
このスキームによれば、各プロセッサ１０は、関連付けしたメモリバンク１２に対して、非関連付けメモリバンク１２に対するよりも高い、少なくとも所定の最低保証アクセス頻度でメモリバンク１２にアクセスできることを保証することは認識できるであろう。例えば、関連付けしたプロセッサ１０は、Ｎ回（Ｎ＞１）のアクセスサイクル中、Ｍ回（０＜Ｍ＜Ｎ）の絶対優先度を有し、なおかつ他のアクセスサイクル中、Ｐ個の他のプロセッサと等しい総当たり式優先度を有する場合、関連付けメモリバンク１２への最低保証アクセス頻度Ｆａは、Ｆａ＝（Ｍ＋（Ｎ−Ｍ）／Ｐ）／Ｎで表される一方で、他のメモリバンク１２への最低保証アクセス頻度Ｆｎは、Ｆｎ＝(Ｎ−Ｍ)／（Ｐ＊Ｎ）で表される。しかし、様々な代替的スキームを使用し、例えばメモリバンク１２をアドレス指定するプロセッサ１０の総当たり選択に対して、異なる最低保証アクセス頻度を実現することもでき、この場合、メモリバンク１２に関連付けしたプロセッサ１０は非関連付けプロセッサ１０よりも総当たり式シーケンス内でより多くの回数でアクセスできる。例えば、Ｎ回（Ｎ＞２）の総当たりシーケンスを、関連付けしたプロセッサ１０に対してＱ回（Ｑ＞１）、非関連付けプロセッサ１０に対してＲ回（０＜Ｒ＜Ｑ）（例えばＲ＝１）にするときに使用する場合、関連メモリバンク１２への最低保証アクセス頻度はＦａ＝Ｑ／Ｎであるとともに、他のメモリバンク１２への最低保証アクセス頻度はＦｎ＝Ｒ／Ｎである。非同時タスクを実行する場合、非関連付けメモリバンク１２に対して、ゼロより大きい最低保証アクセス頻度を保証していない代替的な優先度スキームを使用することができる。
【００２１】
接続回路１４および／またはプロセッサ１０は、プロセッサ１０からメモリバンク１２内へアドレスに対する可変的アドレスマッピングを提供する。好適には、アドレスをマッピングするメモリバンク１２、およびアドレスをマッピングするメモリ内の記憶域の双方を調整可能にする。
【００２２】
図２に、プロセッサ１０からのアドレスのアドレスマッピングを提供する、接続回路１４の一部の実施形態を示す。説明を分かり易くするため、データ接続ラインを省略してある。接続回路は、プロセッサ１０からのアドレスＡを受信するための入力Ａを有する。接続回路は、コンパレータ２０、閾値レジスタ２１、第１ベースレジスタ２２、第１加算器２３、第２ベースレジスタ２４、第２加算器２５およびマルチプレクサ２０ａを有するアドレスマッピング回路３０を備える。
【００２３】
接続回路のこの部分は、プロセッサ１０が、メモリバンク１２内における物理アドレスに変換される論理アドレスを出力するときに使用する。コンパレータ２０は、プロセッサ１０からの論理アドレスＡを、遷移アドレスを示す閾値と比較する。閾値は閾値レジスタ２１から生じる。第１ベースレジスタ２２および第１加算器２３は、論理アドレスが閾値を下回るときに、プロセッサ１０からの論理アドレスにベース値を加算することにより、物理アドレスを計算するのに供する。同様に、第２ベースレジスタ２４および第２加算器２５は、論理アドレスが閾値に等しいまたはそれ以上である場合、プロセッサ１０からの論理アドレスにベース値を加算することによって、第２メモリバンク１２ｂ内における物理アドレスを計算するのに供する。コンパレータ２０は、論理アドレスが閾値未満であるか否かによって、第１または第２の加算器２３，２５からの物理アドレスを通過させるために、マルチプレクサ２０ａを制御する。この後、結果として生じるアドレスを、アービター（図中には示していない）が使用し、クロスバースイッチ（図示せず）を通過してメモリバンク１２にアドレス指定する。
【００２４】
同様の回路を各プロセッサ１０に対して使用することができる。レジスタ２１，２２，２４の内容は、例えばプロセッサ１０が１つのタスクから別のタスクに切り替わる度毎に、またはデフラグ用プログラム１６の制御によって、更新することができる。他の実施形態において、メモリマッピングユニットを、レジスタ２１，２２，２４の代わりに複数の記憶域を有するメモリ（図示せず）に使用することができ、論理アドレスおよび／もしくはタスク識別の制御の下に、閾値およびベース値をこのメモリから選択する。このようにして、粒度の細かいメモリマッピングの形態を実現することができる。
【００２５】
プロセッサ１０が、より大きなメモリ空間の連続する部分としてメモリバンク１２をアドレス指定する実施形態においては、単純な加算器２３，２５で十分である。代案として、メモリバンク選択信号を、アドレスに基づいて、例えばコンパレータ２０によって生成することができる。
【００２６】
図２ａに、プロセッサ１０からのアドレスのアドレスマッピングを提供する、接続回路１４の一部の、代替的実施形態を示す。説明を分かり易くするため、データ接続ラインを省略してある。接続回路は、コンパレータ２０、閾値レジスタ２１、第１ベースレジスタ２２、第１加算器２３、第２ベースレジスタ２４、第２加算器２５、マルチプレクサ２６および加算器２７を有するアドレスマッピング回路３０を備える。
【００２７】
接続回路のこの部分は、プロセッサ１０が、第１および第２のメモリバンク（１２，１２ｂ）内における物理アドレスに変換される論理アドレスを出力するときに使用する。コンパレータ２０は、プロセッサ１０からの論理アドレスＡを、第１メモリバンク内に記憶された最高位論理アドレスを示す閾値に比較する。この閾値は閾値レジスタ２１から生じる。第１ベースレジスタ２２および第１加算器２３は、プロセッサ１０からの論理アドレスにベース値を加算することにより、第１メモリバンク内における物理アドレスを計算するのに供する。同様に、第２ベースレジスタ２４および第２加算器２５は、プロセッサ１０からの論理アドレスにベース値を加算することにより、第２メモリバンク１２ｂ内における物理アドレスを計算するのに供する。
【００２８】
隣接のプロセッサ１０ａに対して、同様の回路２９ａを使用する。アービター２７は、コンパレータ２０からの出力および隣接のプロセッサ１０ａにおける同様の出力を受信する。アービター２７は、第１加算器２３からの入力および隣接のプロセッサ１０ａにおける第２加算器２５からの入力を受信する、マルチプレクサ２６を制御する。マルチプレクサ２６は第１メモリバンクにアドレスを出力する。コンパレータ２０の出力が、プロセッサ１０および１０ａの双方ともこの第１メモリバンクにアドレス指定していることを示すとき、アービター２７はプロセッサ１０のうち選択した一方のプロセッサにアクセスを許可し、それに対応してマルチプレクサ２６を制御する。第１加算器２３にアドレスを供給するプロセッサ１０は、他のプロセッサにおける対応の最低保証頻度よりも高い、少なくとも所定の最低保証頻度でアクセスできることを保証する優先度スキームを使用する。さらにアービター２７は、隣接のプロセッサ１０ａ（アクセスを得ていない）が待機するように、確認応答ライン（図示せず）を介して、プロセッサ１０および１０ａに信号を送信する。アービター２７は、マルチプレクサ２６を制御することにより、第１加算器２３から第１メモリバンク１２にアドレスを通過させる。
【００２９】
コンパレータ２０の出力が、プロセッサ１０および１０ａのうち一方のみ第１メモリバンク１２へアドレス指定していることを示すとき、アービター２７はマルチプレクサ２６を制御することにより、第１加算器２３または隣接プロセッサ１０ａにおける第２加算機２５から、の対応プロセッサ１０および１０ａにおけるアドレスを通過させる。プロセッサ１０および１０ａを待機させるための信号は送信されない。プロセッサ１０および１０ａのどちらも第１メモリバンク１２をアドレス指定していないとき、アービター２７は第１メモリバンク１２の機能を停止することが望ましい。
【００３０】
論理アドレスＡが第２メモリバンク１２ｂ内の記憶域をアドレス指定していることをコンパレータ２０が示すときの状態を、図示したタイプの他の回路２９ｂで示す。このとき、第２加算器２５からのアドレスを、他の隣接プロセッサ１０ｂが第２メモリバンク１２ｂをアドレス指定していない時、その第２メモリバンク１２ｂに通過させる。
【００３１】
図２には単独閾値用の回路を示してあるが、例えばタスクそれぞれに対し選択的に固有ベースアドレスを有するように、異なるタスクに関連する複数の閾値を供給するように回路を構成できることを理解されたい。さらに、マルチプレクサ（またはメモリへの接続ライン）が追随する２個の加算器を備えた実施形態を示してあるが、代替的実施形態において、比較の結果に基づいて、あるベースアドレスもしくは他のベースアドレスを供給する単独の加算器のみ使用することもできる、または、他の代替的実施形態において、１個のベースアドレスを常にゼロにセットし、そのベースアドレスに対して加算器が全く必要ないこともあり得ることを理解されたい。
【００３２】
図示のように、プロセッサ１０，１０ａ，１０ｂは、優先度付きアクセスを持つローカルメモリバンク１２および１個の隣接メモリバンク１２ｂのみにアドレス指定することが望ましい。これにより回路が簡素化できる。しかし、変更した回路では、プロセッサ１０から両側に隣接するメモリバンク１２ａ，１２ｂを、またはさらに多い数のメモリバンクをアドレス指定できる。さらに、常に優先権を持つ単独プロセッサを持たないメモリバンクを追加することもできる（例えば異なるプロセッサが総当たり式に基づく優先度を許可される）。
【００３３】
メモリマッピング回路３０内におけるベースレジスタ等の内容は、タスクに対してメモリ空間を割り当てた後にタスクの実行を開始するとき、動的に設定するのが望ましい。タスクの実行が完了またはそれ以外で停止したとき、メモリを解放する。デフラグ用プログラム１６は、実行中にメモリバンク１２間でデータを移転するように動作する。このデフラグ用プログラム１６は、例えば、全てのメモリバンク１２にアドレス指定が可能な他のプロセッサとして、またはこの目的用の専用回路として、実装する。
【００３４】
図３に、デフラグ用プログラム１６と複数のメモリマッピング回路３０との間における接続状況の例を示す。プロセッサ１０によるタスクの実行に関連するデータが、そのプロセッサ１０に非関連付け（関連付けしていない）メモリバンク１２（すなわち、そのプロセッサが常に優先権を持っていないメモリバンク）内に記憶されるとき、このことをデフラグ用プログラム１６は検出する。このメモリバンクを、旧メモリバンクと称する。プロセッサ用のデータが旧メモリバンク内に記憶されている場合、デフラグ用プログラム１６は、プロセッサ１０に関連付けしたメモリバンク（すなわち、プロセッサが常に優先権を持つメモリバンク）内に未使用のメモリ１２があるか否かを検査する。このメモリバンクを、新メモリバンクと称する。デフラグ用プログラム１６は、未使用メモリを見つけた場合、旧メモリバンクから新メモリバンクにデータを移転し、移転したデータに対してアドレスマッピングを更新する。
【００３５】
デフラグ用プログラム１６は、アドレスが比較される閾値を徐々に増大していく。デフラグ用プログラム１６は、毎回、閾値に基づいてメモリバンク（旧メモリバンク）にマッピングする第１論理アドレスに対するデータを読出し、また、この論理アドレスが新メモリバンク内に新たにマッピングされる物理アドレスにこのデータを記憶し、その結果デフラグ用プログラム１６は閾値を増大する。この作業を、すべてのあり得るデータを第１メモリバンク１２に移転するまで繰り返す（すなわち、すべてのデータを移転するまで、または論理アドレスが未使用のメモリ端部に達するまで）。このデフラグ化形態は、プロセッサ１０が動作し続ける間持続できるという利点を有する。
【００３６】
ある実施形態において、デフラグ用プログラムによる移転および更新は同一サイクル内で行い、プロセッサ１０からの読出しおよび書込みが、旧記憶域からのデータ読出しおよび新記憶域へのデータ書込み、および閾値の更新との間における干渉を回避されるようにする。代案として、データを移転される旧メモリへのアドレス書込みをモニターするように、デフラグ用プログラム１６を構成する。デフラグ用プログラム１６が、旧メモリから新メモリにデータを移転するために読出された旧メモリ内の記憶域への書込みを検出するとき（すなわち、閾値が対応して増大する前に）、デフラグ用プログラム１６はこの作用を修正する。ある実施形態において、デフラグ用プログラム１６は、新たにデータを読み出すことでこれを行う。他の実施形態において、デフラグ用プログラム１６は書込みデータを捕捉し、このデータを新メモリバンクへの書込みに使用する。
【００３７】
図３に示さないが、デフラグ用プログラム１６はアービター回路１４２（またはすべてのメモリバンク１０用のアービター回路群３２）に接続するのが望ましく、アービター回路または回路群は、デフラグ用プログラム１６に対してプロセッサ１０よりも低い優先度を割り当てるのが望ましい。代案として、デフラグ用プログラム１６に対して、メモリバンク１２への個別アクセスポートを設けることができる。
【００３８】
デフラグ用プログラム１６は、例えばベースレジスタ等の内容の検査など、メモリマッピング回路３０内のベースアドレスを検査することで、検出および探索を行うことが望ましい。代案として、デフラグ用プログラム１６での使用のため、マッピング情報のコピーを設けることができる。
【００３９】
図４には、プロセッサ１０、メモリマッピング回路３０およびアービター３２を有する他のアドレス制御部分示す。メモリマッピング回路３０は、プロセッサ１０からの論理アドレスを、メモリライン毎にマッピングする（例えば、アドレスのラインアドレス部分の異なる値に対する入力項目を有するテーブルを使用し、入力項目として、メモリバンクＩＤおよびそのバンク内のアドレス用のオフセットを記憶する）。メモリマッピング回路３０はアドレスデータを出力し、また論理アドレスのマッピングに基づいて、異なるバンクにリクエストする。アービター３２は、異なるプロセッサのためにメモリマッピング回路３０からのリクエストを受信し、競合した場合に優先権を許可し、メモリバンク１２への優先権を許可されたプロセッサからのアドレスを通過させる。アービター３２の数は（図中には１つのみ示した）、対応する所定のプロセッサに対して常に優先権を許可する。複数のアービター３２を設け、１個のプロセッサ１０に対それぞれ少なくとも１個のアービター３２を設け、各アービター３２をそれぞれ、同一プロセッサ１０に対して常に優先権を許可するプロセッサ１０に関連付けすることができる。しかし、代案として、プロセッサ１０のうち若干は、このような関連付けしたプロセッサ１０を持たないようにすることができる。この場合、これらのプロセッサ１０は、リアルタイム性能は低くなる。さらに好適には、このようなアービターは、それぞれプロセッサ１０からのアクセス用に同一個数の入力を有するようにすることができるが、このことは必ずしも必要ではない。すなわち、互いに異なる数の入力を備えたアービター３２を設けることができる。
【００４０】
図４の実施形態においては、マッピング用に閾値を使用しない（ブロックごと全体的にある１個のメモリバンクまたは他のメモリバンクにマッピングする）。この実施形態が使用するとき、デフラグ用プログラム１６の構成は、デフラグ用プログラム１６がどこまでデータコピーの処理をしているかを示す内部の閾値（進行カウンタ）を使用するよう構成する。デフラグ用プログラム１６が進行カウンタを使用し、デフラグ用プログラム１６により移転されたデータを「所有する」プロセッサ１０による書込み後に、補正が必要であるか決定する。デフラグ中に、このプロセッサ１０は旧メモリバンクにアドレス指定し続けることを許可される。デフラグ用プログラム１６は、旧メモリバンクをアドレス指定するこのプロセッサ１０による書込み動作を検出する。このような書込みを検出する際に、デフラグ用プログラム１６は書込みアドレスを進行カウンタと比較し、書込みアドレスが既にコピーした記憶域をアドレス指定した場合、デフラグ用プログラムはその書込みアドレスに対して、新たに書込まれたデータとともにコピーを繰り返す。ブロック全体を移転したとき、デフラグ用プログラム１６は、ブロックのマッピングを新メモリバンク内のコピーされたブロックに切り替える。
【００４１】
この実施形態において、好適には、デフラグ用プログラム１６はライン毎に動作して、メモリマッピング回路３０のプロセッサに非関連付け（関連付けしない）メモリバンクに（メモリマッピング回路３０により）マッピングされたメモリラインを検出し、メモリマッピングユニット３０がマッピングしていないメモリラインを探索するようにする。このような組み合わせが見つかったとき、デフラグ用プログラム１６は旧メモリバンクからのラインを新メモリバンクにコピーする。好適には、プロセッサ１０はこのコピー動作中も動作し続けるようにする。デフラグ用プログラム１６がプロセッサ１０による書込みを検出するとき、デフラグ用プログラムはラインの書込みアドレスを進行カウンタと比較し、既にコピーされたライン内の記憶域のアドレスにプロセッサが続いて書込む場合、デフラグ用プログラムはその記憶域からのデータを再びコピーする。デフラグ用プログラム１６がメモリラインの移転を完了する毎に、メモリマッピング回路３０をラインのマッピングを更新する。
【００４２】
書込みアドレスとライン内のアドレスとの比較は多くの方法で行うことができる。ある実施形態において、プロセッサのうち選択可能な１個のプロセッサからデフラグ用プログラム１６に書込みアドレスをルート伝送するマルチプレクサを設け、デフラグ用プログラム１６がこのマルチプレクサを制御する。この場合、デフラグ用プログラム１６がデータを移転するためのプロセッサ１０を選択するとき、デフラグ用プログラムはマルチプレクサを制御して、選択したプロセッサから書込みアドレスをルート付けして伝送する。他の実施形態において、各メモリマッピング回路３０は、デフラグ用プログラム１６からの保護されたメモリラインの表示を受信し、保護ライン内の（書込み）アドレスを検出し、またそのようなアドレス指定をデフラグ用プログラム１６に検出信号を発生するよう構成することができる。
【００４３】
プロセッサ１０に関連付けしたメモリバンク１２（このプロセッサは常に優先権を得る）に対して複数のプロセッサ１０がアクセスする実施形態を示したが、単純な代替形態においては、関連付けしたプロセッサ１０のみが、その関連メモリバンク１２へのアクセス権を有する（このことはプロセッサの全てまたは一部に適用することができる）ようにすることもできることを理解されたい。このように、非関連の共有メモリバンクは、関連付けしたメモリバンク１２用のオーバーフローとして働き、デフラグ用プログラム１６は可能ならばデータを戻す。
【００４４】
デフラグについてのみ詳細に説明したが、逆の場合も考える必要がある。すなわち、分断してデータ移転することもまた起こりうる。これは例えば、一時中断されたタスクに対するデータ、または同時タスク用のデータが分断されたときに同時（リアルタイム）処理能力を必要としないタスクに対するデータ用に行うことができる。この場合、デフラグ用プログラム１６は、まず関連付けしたメモリバンクからデータを移転して、（同時処理タスク用の）他のデータをそのメモリバンク内に移転するための余地を作る。好適には、タスクの少なくとも一部をプログラムして、またはリソース情報データを伴うようにして、どのデータを、いつリアルタイムで入手可能にすべきかを示すようにする。デフラグ用プログラム１６は、好適には、このような表示を読み出す、またはこれら表示を受信し、また、デフラグ（関連プロセッサに関連付けしたメモリバンクへの移転）用の表示データを選択するよう構成する。
【００４５】
典型的な例においては、異なる同時（リアルタイム）処理タスクは異なる時間で開始される。そのような一つのタスクを開始される前に、このタスクが、このタスクに特有の所定保証速度で稼働することができるか否かを決定する。このタスクに対する最低保証速度は、すでに稼働しているタスク、このタスクに割り当てることができるメモリ、可能ならばタスクを開始させるプロセッサ用の関連付けしたメモリバンク内のメモリではあるが、入手可能なメモリが関連付けしたメモリバンクで利用可能なメモリが不十分である場合には他のメモリバンク内におけるメモリの観点から決定される。また、新しいタスクの追加により、その最低保証速度を固有保証速度以下に低下させるか否かを、チェックする。
【００４６】
保証速度が満たされる場合、タスク用の自由メモリを使用してタスクを開始する。関連付けしたメモリバンク内に自由メモリがなく、後の時点で他のタスクが停止して関連付けしたメモリバンク内のメモリ空間が解放されるようになった場合には、プロセスを継続しつつ、タスク用のデータを関連付けしたメモリバンクに移転する。これにより、最低保証速度と固有保証速度との間におけるマージンが増大し、他のタスクを開始するための余地をより多く作り出す。
【００４７】
さらに、１つのプロセッサ１０により各タスクを実行する単純な例を仮定してきたが、実際上はより複雑なタスクを、いくつかプロセッサがともに実行することもできると理解されたい。その場合、タスク用のデータは、部分的に１個のプロセッサのみで必要なデータであり、また部分的に共にタスクを実行する複数のプロセッサで必要となる共有データである場合がある。この場合、各プロセッサ１０は、どのデータがいつリアルタイムで利用可能であるのかを示すよう、プログラムすることが望ましい。デフラグ用プログラム１６は、このような表示を読み出す、またはこれら表示を受信する、およびデフラグ（関係プロセッサ１０に関連付けしたメモリバンクへの移転）用の表示データを選択するよう構成することが望ましい。
【００４８】
さらに、プロセッサの外部でアドレスマッピングが実行されるスキームを示したが、代案として、アドレスマッピングはプログラムにより制御できることも理解されたい。この場合、そのプログラムはアドレス指定するために、例えばベースレジスタを使用することができる。この場合、いつ何をプロセッサの更新マッピングで使う必要があるのか、プロセッサにデフラグ用プログラムは信号を送信する。
【００４９】
関連付けしたメモリバンク１２への最低保証アクセス頻度を比較的高くとるために、最大で１個のプロセッサ１０がメモリバンク１２に関連付けすることが望ましい。従って、関連付けするメモリバンク１２は、このメモリバンク１２にアクセスする他のプロセッサ１０によって関連付けされたメモリバンクと共有されないため、関連付けしたプロセッサ１０のための高い最低保証アクセス頻度が実現される。その最低保証アクセス頻度は、そのプロセッサ１０非関連付けした（関連付けされない）他のメモリバンク１２への最低保証アクセス頻度よりも高い。しかし、他の実施形態において、関連付けしたプロセッサのそれぞれが、同一の関連付けしたメモリバンク１２に対して他のメモリバンク１２に対するよりも高い最低保証アクセス頻度を得るように、１個より多いプロセッサ１０を同一のメモリバンクに関連付けすることもできると理解されたい。関連付けしたメモリバンク１２は共有されるため、一般に関連付けしたプロセッサの最低保証アクセス頻度は、関連付けしたメモリバンクが共有されていない時よりも低いが、しかしなお他のメモリバンク１２における１つへのアクセス頻度よりも高い。
【図面の簡単な説明】
【００５０】
【図１】データ処理回路を示す。
【図２】アドレスの制御部分を示す。
【図２ａ】アドレスの制御部分を示す。
【図３】デフラグ用プログラムに対する接続状況を示す。
【図４】他のアドレスの制御部分を示す。
【図１】
2009520295.tif 000003
【図２】
2009520295.tif 000004
【図２ａ】
2009520295.tif 000005
【図３】
2009520295.tif 000006
【図４】
2009520295.tif 000007
【国際調査報告】
2009520295.tif 000008
2009520295.tif 000009