"メインメモリと、前記メインメモリに記憶されるデータを使用するソフトウェアを実行するように設定された、多重のプロセシングコアと、前記プロセシングコアと前記メインメモリの間を接続し、前記多重のプロセシングコアによる使用のため、前記データを前記メインメモリから事前に取得するように設定された、データストリーミングユニットと、を有することを特徴とする、マルチプロセッサシステム。前記データストリーミングユニットが、前記プロセシングコアのために前記データを前記メインメモリ内に記憶するように設定される、ことを特徴とする請求項1に記載のマルチプロセッサシステム。前記データストリーミングユニットが、2つ以上の前記プロセシングコアのために実行される、前記メインメモリに対する同時アクセスを解決するように設定される調停回路を有する、ことを特徴とする請求項1に記載のマルチプロセッサシステム。前記データストリーミングユニットが、それぞれの前記プロセシングコアに対し、前記メインメモリ内のアドレスのそれぞれ1つのリストを前記プロセシングコアから受け取り、前記リストに従って前記メインメモリより前記データを事前取得するように設定される、それぞれ1つのフロントエンドユニットを有する、ことを特徴とする請求項1に記載のマルチプロセッサシステム。それぞれの前記プロセシングコアに付随するそれぞれ1つのローカルメモリを有し、それぞれの前記プロセシングコアと対応する前記フロントエンドユニットは、それぞれの前記ローカルメモリ経由で前記データを交換するように設定される、ことを特徴とする請求項4に記載のマルチプロセッサシステム。それぞれの前記プロセシングコアと対応する前記フロントエンドユニットは、前記アドレスのリストをそれぞれの前記ローカルメモリ内に記憶される1つの循環バッファ内に維持するように設定される、ことを特徴とする請求項5に記載のマルチプロセッサシステム。少なくとも前記プロセシングコアと前記データストリーミングユニットが単一の半導体内に含まれる、ことを特徴とする請求項1に記載のマルチプロセッサシステム。メインメモリと、前記メインメモリに記憶されるデータを使用するソフトウェアを実行するように設定された、多重のプロセシングコアと、前記プロセシングコアに接続し、そして、前記多重のプロセシングコアのために、2つ以上の前記プロセシングコアを1つの所与のデータアイテムに同時にアクセスさせる、前記ソフトウェアの選択された部分を実行するように設定される、スクラッチパッドプロセスユニットと、を有することを特徴とする、マルチプロセッサシステム。前記スクラッチパッドプロセスユニットが、2つ以上の前記プロセシングコアがアクセスする前記所与のデータアイテムを記憶するための独自のメモリを有する、ことを特徴とする請求項8に記載のマルチプロセッサシステム。前記スクラッチパッドプロセスユニットが、スクラッチパッド命令を前記プロセシングコアから受信し、前記スクラッチパッド命令を調停し、そして、前記独自のメモリ内の調停されたスクラッチパッド命令を実行するように設定される、ことを特徴とする請求項9に記載のマルチプロセッサシステム。少なくとも前記プロセシングコアと前記スクラッチパッドプロセスユニットが単一半導体内に含まれる、ことを特徴とする請求項8に記載のマルチプロセッサシステム。マルチプロセッサシステムの多重プロセシングコア上で、メインメモリに記憶されるデータを使用するソフトウェアを実行するステップと、前記多重プロセシングコアによる使用のため、前記プロセシングコアと前記メインメモリの間を接続するデータストリーミングユニットにより、前記データを前記メインメモリから事前に取得するステップと、を有することを特徴とする、データ処理方法。前記多重プロセシングコアのため前記データストリーミングユニットにより前記メインメモリ内に前記データを記憶するステップを有する、ことを特徴とする請求項12に記載のデータ処理方法。前記データを事前に取得するステップは、2つ以上の前記プロセシングコアのために実行される前記メインメモリへの同時アクセスを解決するステップを有する、ことを特徴とする請求項12に記載のデータ処理方法。前記データを事前に取得するステップは、前記メインメモリ内のアドレスのそれぞれ1つのリストをそれぞれのプロセシングコアからそれぞれ1つのフロントエンドユニットに提供するステップと、そして、前記メインメモリから前記フロントエンドユニットにより前記リストに従って事前に前記データを取得するステップと、を有することを特徴とする請求項12に記載のデータ処理方法。前記データを事前に取得するステップは、前記プロセシングコアに付随するそれぞれ1つのローカルメモリ経由で、それぞれの前記プロセシングコアとそれぞれの前記フロントエンドユニットとの間で前記データを交換するステップを有する、ことを特徴とする請求項15に記載のデータ処理方法。前記データを交換するステップは、それぞれの前記ローカルメモリ内に記憶されるそれぞれ1つの循環バッファ内で前記アドレスのリストを維持するステップを有する、ことを特徴とする請求項16に記載のデータ処理方法。少なくとも前記プロセスコアと前記データストリーミングユニットは単一半導体内に含まれる、ことを特徴とする請求項12に記載のデータ処理方法。マルチプロセッサシステムの多重プロセシングコア上で、メインメモリに記憶されるデータを使用するソフトウェアを実行するステップと、前記多重プロセシングコアに接続し、前記プロセシングコアのために、2つ以上の前記プロセシングコアを1つの所与のデータアイテムに同時にアクセスさせる、前記ソフトウェアの選択された部分を実行する、スクラッチパッドプロセスユニットを使用するステップと、を有することを特徴とするデータ処理方法。前記ソフトウェアの選択された部分を実行するステップは、2つ以上の前記プロセシングコアがアクセスする前記所与のデータアイテムを、前記スクラッチパッドプロセスユニットの専用メモリ内に記憶するステップを有する、ことを特徴とする請求項19に記載のデータ処理方法。前記スクラッチパッドプロセスユニット内に前記プロセシングコアからのスクラッチパッド命令を受けるステップと、前記スクラッチパッド命令を調停するステップと、そして、前記専用メモリ内の前記調停されたスクラッチパッド命令を実行するステップと、を有することを特徴とする、請求項20に記載のデータ処理方法。少なくとも前記プロセスコアと前記スクラッチパッドプロセスユニットは単一半導体内に含まれる、ことを特徴とする請求項19に記載のデータ処理方法。概論あるマルチプロセッサシステムは、単一の集積回路内システムオンチップ、SOCで実行される。SOCは典型的にローカルメモリユニットの1つ以上のインスタンスからなるが、ローカルメモリよりはるかに大規模なメインメモリは含まない。メインメモリは典型的に、シーケンシャルなバーストアクセスに対し高帯域幅を許容するが、長いレイテンシを持つ1つ以上の集積回路により実行される。マルチプロセッサシステムにおいてこのようなメインメモリが複数のプロセッサにより共用される場合、メモリへのアクセス待ちの結果としての大幅な性能の劣化を避けるため、効率的な調停が行われなければならない。本発明の実施形態は、共用メモリにアクセスする複数のプロセッサにより引き起こされた、性能ボトルネックを緩和する新規の方法を紹介する。本発明の実施形態によれば、マルチプロセッサシステムは、プロセッサコアプロセシングコアにより必要とされる前にメインメモリからデータを取得するデータストリーミングユニットDSUを有する。DSUは取得したデータをプロセッサコアに接続したローカルメモリに記憶し、そこではデータはプロセッサコアにより必要に応じてアクセス可能である。DSUはまた、ローカルメモリからメインメモリに書込み可能である。マルチプロセッサシステムに付随する他の問題は、2つ以上のプロセッサが同じメモリ位置にアクセスする場合に、メモリのコヒーレンシーを確実にすることである。マルチプロセッサシステムで実行されるある画像処理向けアルゴリズムでは、複数のプロセッサコアによるメインメモリ内の同じアドレスへのアクセスはまれであり、例えば、複数のプロセッサコアにより処理される画像領域から画像統計を集めるタスクにおいて発生する。それでもこのようなまれな場合でも、効率よく処理されないと性能のボトルネックを生じる。本発明の実施形態はこのようなボトルネックを緩和する新規の方法を紹介する。開示された実施形態によれば、共用メモリ位置への全てのアクセスは、スクラッチ-パッドユニットにより取り扱われ、それは、専用プロセッサと小規模ローカルメモリからなり、共用メモリ位置にアクセスする並行タスクの実行用に最適化されたソフトウェアを実行する。クラッチ-パッドユニットは典型的にマルチプロセッサシステムのプロセッサコアにコプロセッサとして付属する。システムの記述図1は本発明の実施形態による、マルチプロセッサシステム10の概略ブロック図である。マルチプロセッサシステム10の全ての図示された要素は、1つの集積回路上に配置可能であり、システムオンチップを構成する。マルチプロセッサシステム10は、メインメモリ500外部メモリとも呼ばれるを有する。ある実施形態では、メインメモリ500は、1つ以上の異なる集積回路からなり、マルチプロセッサSOCの一部ではない。他の実施形態では、メインメモリとマルチプロセッサシステム10の他の要素は同一のSOC内に配置される。更に他の実施形態では、メインメモリ500は、複数の部品からなり、それらの幾つかはSOC内に配置され、幾つかは1つ以上の外部チップ内に配置される。以下の記載では、外部メモリという言葉は、メインメモリに使用される。しかし本発明はSOCに搭載されないメインメモリに限定されない。SOC内に配置されるメモリコントローラ400は、外部メモリに対するアクセスを制御し、そしてある実施形態では、記憶リフレッシュ機構、及び他のメモリ制御機能を提供する。ある実施形態では、ローカルメモリユニット300がそれぞれのプロセッサコアに付属する。それぞれのローカルメモリユニットは、例えばコードセグメントを入れるため、外部メモリ500にメモリコントローラ400経由で、ダイレクトメモリアクセスDMAチャネルを使用してアクセスしてもよい。本発明の実施形態によれば、メインメモリ内の共用メモリ位置へのアクセスの結果としての性能劣化はデータストリーミングユニットDSU2000によって低減される。DSU2000は、ローカルメモリユニット300各プロセッサコアに1つに事前に、典型的にはプロセッサコア200がそのデータにアクセスを必要とする時間より前に、外部メモリ500からのデータを入れ、それにより外部メモリへのアクセス上の読み取り競合の結果としてのプロセッサコア200の遅れを最小化する、ように構成されてもよい。同様に、DSU2000は、プロセッサコア200によりローカルメモリユニット300に書き込まれたデータを外部メモリ500に送り、それにより外部メモリへのアクセス上の書込み競合の結果としてのプロセッサコア200の遅れを最小化してもよい。DSU2000は、メモリコントローラ400へのアクセスを支配するDSUアービター2200と、DSUフロントエンドユニット2100からなり、ここで各フロントエンドユニットはそれぞれのローカルメモリ300とそれぞれ1つのプロセッサコア200に接続する。ある実施形態では、共用メモリ位置へのアクセスはスクラッチ-パッドユニット1000により取り扱われ、それは、それぞれのプロセッサコア200にそれぞれ接続する命令バッファ1300を有する。スクラッチ-パッドユニット1000は、1つ以上のスクラッチ-パッドRAM1100と、1つ以上のスクラッチ-パッドコントローラ1200からなり、それぞれのスクラッチ-パッドRAMは、命令バッファ1300にそれぞれのスクラッチ-パッドコントローラ1200を経由して接続する。典型的な実装では、命令バッファ1300はプロセッサコア200により生成された命令を、現行の命令が要求されるクラッチ-パッドコントローラに対する調停に命令に付随する標的アドレスに従って勝つまで、一時的に記憶する。図1の実施形態では、必須ではないが、それぞれのプロセッサコア200はそれぞれ専用の命令バッファ1300に接続している。一度命令が命令バッファでバッファされると、バッファは適切なスクラッチ-パッドコントローラ1200へのアクセスを、バッファ済み命令に付随する標的アドレスに従って要求する。アクセスが与えられると、命令は命令バッファからスクラッチ-パッドコントローラに実行のため送られる。スクラッチ-パッドユニット1000は、共通する共用メモリマルチプロセッサタスクを、共通する共用メモリタスクを最適に実行するように接続されたスクラッチ-パッドコントローラ1200が独立して実行することを許容し、プロセッサコア200の負荷を軽減し、効率的なメモリーロック構成を導入することによりメモリコヒーレンスを保証する。この技術は、メモリが物理的にロックされていないため効率的である。開示された技術は、完全な読み取り-修正-書込みサイクルがコントローラにより原子的に実行されることを保証する。データストリーミングユニットDSU図2は本発明の実施形態による、データストリーミングユニットDSU2000と、それに接続するメモリコントローラ400、プロセッサコア200、及びローカルメモリユニット300を含むユニットの概略ブロック図である。DSU2000は、それぞれのプロセッサコア200とそれに付随するローカルメモリ300にそれぞれサービスを提供する複数のDSUフロントエンドユニット2100、とDSUフロントエンドユニット2100により開始されたメモリアクセス要求を調停する単一のDSUアービター2200からなる。プロセッサコアは初期化において、DSUがデータをメモリからローカルメモリに移動するようにプログラムする。その後DSU2000はデータを外部メモリ500からローカルメモリ300に事前ロードして、外部メモリへの読み取りアクセスの競合を減少させ、そして結果的にマルチプロセッサシステム10の性能を向上させる。同様にプロセッサコアは、DSUがデータをローカルメモリから外部メモリに移動するようにプログラムし、外部メモリへの書込みアクセスの競合を減少させる。この構成は、幾つかの理由で性能を向上させる。例えば、外部メモリ500とのトラフィックは全てのトラフィックを知る単一のコントローラDSUアービターにより最適化可能である。更に、プロセッサコア200は、必要なデータが事前に取得されているため、渋滞で失速せず、それによりデータアクセスのレイテンシを低下させる。プロセッサコア200による外部メモリ内のアドレスからの全ての読み取り動作は、DSUフロントエンドユニット2100により実行される、外部メモリ500からの対応する読み取り動作及びローカルメモリ300への書込み動作が共に終了した後に実行される。同様に、ローカルプロセッサによる外部メモリ内のアドレスへの全ての書込み動作の後に、DSUにより実行されるローカルメモリからの対応する読み取り及びその後の外部メモリへの書込みが実行される。ある実施形態では、プロセッサコア200と外部メモリ500間のデータ転送は、ローカルメモリ内に配置される複数の循環バッファにより実行される。その様子を図3に示す。それぞれのプロセッサコアは、データをそれぞれの循環バッファ内に書き込み、そしてDSUはデータを循環バッファから読み取り、それをメインメモリに書き込む。メインメモリが外部メモリである実施形態では、これは外部メモリコントローラ400により実行される。読み取り動作に対しては、DSUはデータをメインメモリから読み取りメインメモリが外部メモリである場合は外部メモリコントローラ経由で、そしてそれを循環バッファに書き込む。プロセッサコアは循環バッファから取得されたデータを読み取る。図3は、本発明の実施形態による、循環バッファ310の構造を示す概略図である。本発明の実施形態では、複数の循環バッファが各ローカルメモリに搭載される。ある所与のローカルメモリ300に配置される循環バッファは、DSUフロントエンドユニット2100及びこのローカルメモリに接続するプロセッサコア200により管理される。図3とそれに続く記述における読み取りと書込みという言葉は、ローカルプロセッサコア200により実行される読み取りと書込みを意味する。循環バッファは、バッファがスタートするローカルメモリ300内の1つの場所を指し示す出発ポインタ311と、ローカルメモリ300内の最後の位置を示す終了ポインタ316とを有する。バッファは循環式であり、バッファへの連続アクセスに対しては、終了ポインタ316の次の場所は出発ポインタ311である。ローカルプロセッサコア200により処理されるデータ要素は、現在要素ポインタ313により指示されるが、その前に以下に記述される特別のプロセッサコア命令が先行する。ローカルプロセッサに対する有効データを含む作業ウィンドウ314が定義される。現在要素ポインタ313が読み取りポインタの値に到達すると、プロセッサは新しいデータが到着するまで待機させられる。更に、読み取りポインタ315の値が書込みポインタ312の値と同一の場合、外部メモリからの読み取りデータの更なる取得は、書込みポインタが先行するまで延期される。図4は、本発明の実施形態による、DSUフロントエンドユニット2100の概略ブロック図である。DSUフロントエンドに接続するローカルプロセッサコア200とローカルメモリ300も示されている。それぞれのDSUフロントエンド2100は、DSUバッファ管理ユニット2110、制御ユニット2130、バッファ選択マルチプレクサ2140、及び外部メモリアクセス制御2150からなる。DSUフロントエンドユニット2100はローカルプロセッサコア200により1リストのタスクを実行するように設定される;このような設定は、制御ユニット2130に配置される複数のレジスタのプログラミングを含み、各レジスタは読み取り、書込み及びデータ寸法を示唆するビットや、各循環バッファ310用の出発ポインタと終了ポインタの値を含む。DSUバッファ管理ユニット2110は、以下で詳述されるが、循環バッファ310を管理する。ユニット2110は、バッファ終了ポインタをバッファ出発ポインタの周りにラッピングし、読み取り及び書込みポインタを増加させ、そして、NLI1命令がプロセッサコアから受信された場合、再びバッファ終了ポインタをラッピングして、現在の要素ポインタを増加させる。現在の要素ポインタの増加がその値を読み取りポインタの値と同じにさせる場合、バッファ管理ユニット2110はプロセッサコア200に信号を送り新しいデータが受信されるまで待機させる。制御ユニット2130は、ローカルメモリ300へのアクセスを必然的に伴う循環バッファ310へのアクセスを調停する。このような調停は、例えば、回転優先順位方式により実施される。バッファ選択マルチプレクサ2140は、制御ユニット2130から選択されたバッファへのポインタを得て、前記バッファにより生成されたアドレスをローカルメモリ300に出力する。制御ユニット2130はまた、読み取り、書込み要求を生成し、DSUアービター2200から読み取り応答を獲得する、外部メモリアクセス制御2150を制御する。外部メモリアクセス制御2150からのデータは、ローカルメモリ300に送られてもよい;しかし、外部メモリとの間で読み取り、書込みされたデータ寸法がローカルメモリのデータポートの寸法と異なる場合、追加のバッファ/ロジック不図示が使用されてもよい。図5は、本発明の実施形態によるDSUバッファ管理ユニット2110の概略ブロック図である。バッファ管理ユニット2110は、DSUフロントエンド2100内に内蔵され、そして複数の循環バッファへのアクセスを制御する。ある実施形態では、DSUバッファ管理ユニット2110は、複数の同じ単一バッファマネジャユニットSBM2120からなり、各SBMはローカルメモリ300内の単一のそれぞれの循環バッファを制御する。SBM2120は、読み取りポインタ315の値を保持する読み取りポインタRPレジスタ2123、書込みポインタ312の値を保持する書込みポインタWPレジスタ2122、現在要素ポインタCEP313の値を保持する現在要素ポインタCEPレジスタ2124からなる。読み取りポインタRPは、DSUフロントエンド2100が外部メモリから読み取りデータを書き込む、次のメモリ位置を示し、また、書込みポインタWPは、DSUフロントエンド2100が外部メモリに書き込むデータを読み取る、次のメモリ位置を示す。SBM2120はさらに、現在のデータトランザクションで送信されるデータユニットの寸法を記憶する例えばバイト数で寸法レジスタ2121と、寸法レジスタ2121に記憶される値をポインタレジスタ2122、2123、2124内の値に加算し、それにより各トランザクション後にそれらを更新する、加算子2126と、CEPレジスタ2124の値をRPレジスタの値と比較し、それらが同じ場合待機出力を主張し、プロセッサコア200が待機させられる、コンパレータ2125とを含む。読み取り及び書込みポインタレジスタ2122,2123の更新は、セレクト入力により適格とされ、制御ユニット2130により起動される図4参照、ここでそれぞれのSBM2120に対し1つの異なるセレクトラインがある;セレクトラインは所定のセレクト-1、セレクト-2、以下同様、である。セレクトラインに加えて制御ユニット2130は、全てのSBMに対して共通の制御ライン:選択されたSBM2120の書込みポインタレジスタ2122と読み取りポインタレジスタ2123をそれぞれ更新するための、読み取りと書き込みと;DSUフロントエンドユニット2100の全てのSBM2120の全てのCEPレジスタ2124を更新するためのNLI1と;を主張する。図4に戻り、制御ユニット2130はDSUフロントエンドユニット2100内で事前にプログラムされたタスクを実行する。制御ユニットは、プロセッサコア200により1リストのメモリ送信タスクで事前に構成される;制御ユニットはその後、DSUバッファ管理ユニット2110から、例えば回転優先順位方式などの1つの基準に従ってポインタを選択する。制御ユニットはその後、選択されたアドレスをローカルメモリ300に出力するため、バッファ選択マルチプレクサ2140のアドレス入力を制御し、そして1つの表示ワード、それはバッファのインデックスや読み取り/書込みビットを含んでもよいが、を外部メモリアクセス制御2150に送信する。さらに、いずれかのSBM2120が待機ストール出力をセットした場合、制御ユニットは集合待機出力をプロセッサコア200に対し主張し、その動作を待機が解除されるまで停止する。初期化において実行されるDSUの構成に加えて、制御ユニット2130は、2つの特別なプロセッサ命令により制御される:NLI0及びNLI1。NLI1は、循環バッファ内で現在要素ポインタCEP313を進ませるために使用される。それは、プロセッサが次の値を計算するため新しい1組のパラメータを必要とする場合、各プログラムループの繰り返しの後にセットされる。更新されたパラメータは、全てのアクティブSBMの現在要素ポインタCEPを含む。更新は典型的に全てのSBMを一括して単一サイクルで、循環バッファのラップ位置を考慮して実行される。NLI命令は、現在要素ポインタCEPの新しい位置が外部メモリから取得した要求されたデータで充足されていることを認証する。そうでない場合プロセッサコアは、読み取りポインタRPと現在要素ポインタCEPが要求基準即ち、RPがCEPより大きいを満たすまで待機する。NLI1は、制御ユニット2130によりDSUバッファ管理ユニット2110に対して指示される。NLI0は、プロセッサコア200によりプログラムがスタートする時に発せられる。NLI0命令の目的は、初期のCEPが処理に対して有効である即ち、要求されたデータが外部メモリから読み取り済みでローカルメモリに書き込み済みであることを認証することである。読み取りポインタRP315及び書込みポインタWP312は典型的に、NLI0が受信されるまでそれらの初期位置から進まない。RPはそれが第1の要素を処理するためのデータを取得する必要があるため増加される。WPはCEPがまだ初期の位置を指し示し、その位置はWPが指し示す位置と同じあるため増加されない。処理されたデータはまだ無いので、外部メモリには何も書き込まれない。外部メモリアクセス制御2150は制御ユニット2130により起動されDSUアービター2200に対する読み取り及び書込み要求を開始する;それはまたDSUアービター2200から読み取り応答を取得し、読み取りデータをローカルメモリに伝達する。図6は本発明の実施形態による、DSUアービター2200の概略ブロック図である。DSUアービター2200は読み取り及び書込み要求を複数のDSUフロントエンド2100から受信し、要求の間を調停し、外部メモリ内の対応アドレスを計算し、外部メモリアクセス要求を外部メモリコントローラ400に送信する。またDSUアービターは、外部メモリコントローラから受信した読み込み要求に対する応答を要求元DSUフロントエンドに戻す。本発明のある実施形態では、書込み応答は必要なく、書込み応答は受信されたと見做される。他の実施形態では、図6に図示されていないが、書込み応答は取り扱われ、以下に記述する読み取り応答ラッチ2210に類似したユニットがDSUアービター2200に追加される。複数のDSUフロントエンド2100からの読み取り要求は、読み取り要求ラッチ2230内にラッチされる。本発明の実施形態では、読み取り要求ラッチ2230は、それぞれのDSUフロントエンドユニットに対して、どの循環バッファに要求が対応しているかを示す1つのインデックスと、要求が有効でまだ未処理であることを示す1つのペンディングビットを含む。読み取り要求ラッチ2230からの要求は、読み取り要求調停ユニット2250に入力され、それは、例えば、回転優先順位方式を使用して、複数の同時発生の読み取り要求の間を調停する。読み取り要求調停はまた、読み取り要求ラッチ2230内の選択された要求のペンディングビットを消去する。以下で説明されるが、1つ又はそれ以上の選択された読み取り操作は、読み取りアドレス計算ユニット2270に出力され、それは、外部メモリに対するポインタそれぞれのローカルメモリ300内のそれぞれの循環バッファに対し1つのポインタを維持し更新し、そしてポインタ値及び外部メモリの編成に関するパラメータに基づいて、外部メモリ内のアドレスを計算する;本発明のある実施形態では、処理されたオブジェクトがビデオ画像であり、これらパラメータは、画像幅、高さ、ピクセル当りバイト数を含む。読み取りアドレス計算ユニットからの出力は、外部メモリコントローラ400への読み取り要求である。本発明のある実施形態では、外部メモリへのアクセスのバンド幅はローカルメモリ300内のバンド幅より大きい;これは幅広のバス、速いクロック、又はそれらの組合せに由来する。このような実施形態では、同時に複数のメモリアクセスを生成することが望ましい。このような実施形態では、読み取り要求調停ユニット2250は、幾つかの読み取り要求を選択し、そして読み取りアドレス計算ユニット2270は、幾つかのトランザクション用のアドレスを同時に計算する。書込み要求の方式は、読み取り要求について記載されたものと類似しており、書込み要求をラッチするための書込み要求ラッチ2220、未処理の書込み要求間を調停する書込み要求調停ユニット2240、及び外部メモリ内のアドレスを計算する、書込みアドレス計算ユニット2260を含む。本発明のある実施形態では、書込み要求ラッチ2220、書込み要求調停ユニット2240及び書込みアドレス計算ユニット2260は、それぞれ読み取り要求ラッチ2230、読み取り要求調停ユニット2250及び読み取りアドレス計算ユニット2270と同一でよい。他の実施形態では、各ユニットは性質は類似しているが、書込みは読み取りより頻度が少ないため、書込み関連ユニットの実装は低いエリア及び性能に最適化されてもよい。最後に、読み取り応答ラッチ2210は、外部メモリコントローラ400からの読み取り要求応答をラッチし、そしてその応答を要求元のそれらDSUフロントエンド2100に出力する。スクラッチパッドユニット本発明の実施形態では、共用メモリ資源にアクセスするマルチプロセッサシステム10のプログラムは、スクラッチパッドユニット1000により取り扱われ、それは、メモリのコヒーレンシーを保証し、共用メモリ資源へのアクセスに伴う遅れを緩和する。スクラッチパッドユニットは、要するに、共用メモリタスクの効率的な実行、及びメモリのコヒーレンシーの保証に対し最適化された命令セットを有する、特別目的プロセッサである。図7は、本発明の実施形態による、スクラッチパッドユニット1000及びプロセッサコア200に対するインタフェースの概略ブロック図である。1組のスクラッチパッド命令以下でSP命令と呼ぶは、プロセッサコア200に対して定義される。SP命令は、プロセッサコア200により命令バッファ1300に送信され、命令バッファは実行のためそれらをスクラッチパッドコントローラ1200に送信する。プロセッサコア200は、バッファが従前の命令をスクラッチパッドコントローラ1200に送信していなかった場合、或いは、従前の命令が戻り値を期待する命令であり、かつその戻り値がまだ獲得されていない場合、新しいSP命令を接続する命令バッファに送信することを控える。この方式は例えば、適切なプロセッサコアを配置することにより、ハードウェアで実行されてもよい。命令バッファ1300は、SP命令を2つのスクラッチパッドコントローラ1200の内の1つに送信する。スクラッチパッドコントローラは、複数の命令バッファ1300からの複数の命令の間を調停し、その中の1つを実行のため選択する。本発明のある実施形態によれば、調停は回転優先度法を使用する。偶数のスクラッチパッドメモリ位置を参照する命令は、偶数スクラッチパッドコントローラ1200に出力され、一方奇数のスクラッチパッドメモリ位置を参照する命令は、奇数スクラッチパッドコントローラ1200に出力される。従って、命令で特定される少なくとも有意のアドレスのビットは、スクラッチパッドコントローラには送信されず、その代わり、2つのコントローラの内の1つを選択するのに使用される。それぞれのスクラッチパッドコントローラ1200は、スクラッチパッドメモリ又はその一部である、RAM1100に接続している。本発明のある実施形態では、スクラッチパッドメモリは奇数及び偶数アドレスに従ってインターリーブされている;一方のRAM1100が偶数アドレスを保持し図7でRAM偶数と表示、他方のRAM1100が奇数アドレスを保持する図7でRAM奇数と表示。RAM偶数に接続するスクラッチパッドコントローラ1200は、スクラッチパッドコントローラ偶数と呼ばれ、そしてRAM奇数に接続するスクラッチパッドコントローラ1200は、スクラッチパッドコントローラ奇数と呼ばれる。本発明の他の実施形態では、他のタイプのインターリーブ方式が使用されてもよい。例えば、2つの最少有意なアドレスビットに従った4グルーブへの分離や、ハッシング関数による分離がある。あるSP命令は要求元プロセッサに値を返す。その目的のため、それぞれのスクラッチパッドコントローラ1200は、戻り値を全てのプロセッサコア200に出力する。さらに、それぞれのプロセッサコアが、入力データがプロセッサが発した命令に対する戻り値であるかを決定するため、それぞれのスクラッチパッドコントローラ1200は、RAMからの戻りデータがIDバス上で指定するプロセッサのIDコードを主張し、そのIDコードは全てのプロセッサコア200に出力される。調停に勝った後、スクラッチパッドコントローラ内のレイテンシが定められる。従って、他の実施形態では、命令バッファは、サイクルを数え、そしてこのサイクル数に従ってデータを獲得する。表1は、本発明のある実施形態における9つのSP命令のリストである。それぞれのSP命令は、種々のSP命令を識別し、4ビットからなる1つのオペレーションコードと、スクラッチパッドメモリ内のアドレスであり、例えば16-18ビットからなる1つのインデックスと、1-2つのオペランドからなる。図8は、本発明の実施形態による、パイプラインステージとスクラッチパッドコントローラ1200の構造の概略ブロック図である。スクラッチパッドコントローラ1200は、回転優先順位アービター1210アービター、読み取りステージユニット1220、実行ステージユニット1230、書込みステージユニット1240、コンパレータ1260及びマルチプレクサ1250からなる。スクラッチパッドコントローラ1200は、パイプライン構造を有し、命令の実行はパイプラインステージで行われる。書込みステージユニット1240が命令nの結果を書き込むと、実行ステージユニット1230は命令n1の一部を実行し、読み取りステージユニット1220はメモリアドレスから命令n2で特定されたデータを取得し、アービター1210は命令n3を命令バッファ1300より獲得する。アービター1210は命令バッファからの命令入力の間を調停し、そして、例えば、回転優先度法を使用する。アービターが1つの命令ソースを選択するとアービターは、選択された命令を読み取りステージユニット1220に送信し、命令バッファが次の命令を存在する場合適用可能であることを命令バッファに対し示す、レディー出力を主張する。アービター1210から読み取りステージユニット1220に送信された命令は、5つのフィールドからなる。そのうち最初の4つのフィールドは選択された命令からコピーされ、1つのオペコードフィールド、1つのインデックスフィールド、及び1-2つのオペランド-OP1及びOP2からなる;上記表1は各命令により使用されるフィールドを示す。5番目のフィールドは、選択された命令バッファを識別し、戻り値の命令元のプロセッサコアへのルートを可能にする、1つのIDフィールドである。読み取りステージユニット1220は、1クロックの遅延の後、アービターから受信した命令のフィールドを実行ステージユニット1230に出力する。更に、読み取りステージユニット1220は、RAM1100の読み取りアドレスポートに接続する、読み取りアドレスバス上のスクラッチパッドメモリから取得されるオペランドのアドレスを主張する。アドレスはアービター1210からのインデックスフィールド出力と同一でもよい。RAMから読み取られたデータは、以下に記述されるマルチプレクサ1250を経由して実行ステージユニット1230に送信される;RAM1100を経由する遅延は1クロックなので、RAMからのデータとそれぞれの命令とは実行ステージユニット1230に同じクロックサイクルで到達する。実行ステージユニット1230は、命令を実行し、その命令は、ロジック/算術動作の実行、RAM1100から読み取られた戻り値の出力、及び書込みステージユニット1240の起動を含んでよい。戻り値は、命令開始元のプロセッサのIDと共に、全てのプロセッサコア200に出力される。書込みステージユニット1240は、命令が書込み部分を有する場合にのみ起動される。書込みステージユニットは実行ステージユニットからメモリ位置のインデックスアドレスと書込みデータを、書込み起動信号と共に受信する。書込みが要求される場合は、実行ステージユニット1230は書込み出力を主張し、そして、書込みアドレスポート上に書込みアドレスをRAM1100の書込みデータポート上に書込みデータを主張して、アドレスインデックスとデータを送信する。従前の命令により新しいデータが同じ場所に書き込まれる間に1つの命令がメモリからデータを読み取る場合に、メモリコヒーレンシー方式は実施される;パイプラインにより課された1クロックの遅延のため、両方のアクセスは同じクロックサイクルで起こる。コンパレータ1260は、書込みアドレスと読み込みアドレスを比較する;2つのアドレスが同じ場合、マルチプレクサ1250は書き込まれたデータを直接実行ステージユニット1230に送り、RAM1100から読み取られたデータは無視される。図1-8に示されるシステム10の構成及び種々のシステム要素の構成は、例示であり、思想の明確化のためにのみ選択された。他の実施形態では、他の適合する構成が使用可能である。ある実施形態では、ここに記載のコントローラやプロセッサ、例えばメモリコントローラ400、プロセッサコア200、スクラッチパッドコントローラ1200は、ここに記載の機能を実行するためのソフトウェアでプログラムされた汎用プロセッサからなってもよい。ソフトウェアはプロセッサに電子形態で、例えばネット上でダウンロードされてもよく、或いはさらに、磁気、光学、又は電子メモリのような非一過性の接触可能媒体上で提供され及び/又は記憶されてもよい。ここに記載された実施形態は、主にSOCマルチプロセッサシステムについて記述しているが、ここに記載された方法とシステムは、幾つかの集積回路に分散され、バス又はネットワーク又はそれらの組合せにより相互接続されたマルチプロセッサシステムのような、他のアプリケーションにも使用可能である。上記の実施形態は事例のために引用され、本発明はここに特に示され記載されたものに限定されない。むしろ本発明の範囲は、上記の種々の特徴の組合せ及びサブ組合せを含み、また、上記記載を読んだ当業者が想起する、従来技術に無い変化形や変更を含む。"