(57)【特許請求の範囲】
【請求項１】
単一の電子機器に搭載されるマルチプロセッサシステムであって、
データメッセージ（１５０、３５０）を送信する送信用プロセッサ（２１０）と、
前記データメッセージを受信する受信用プロセッサ（２２０）と、
前記受信用プロセッサと関連付けられたメモリユニット（１４０）と、
を含み、
前記送信用プロセッサと関連付けられたサイズインデックステーブル（３００）と、
前記データメッセージのペイロード部分（３５３）のサイズ（３５１）を、前記サイズインデックステーブルのインデックス（３５２、３４０）にマッピングし、前記サイズ、前記インデックス、前記ペイロード部分を含む前記データメッセージを、前記受信用プロセッサに送信する前記送信用プロセッサと、
前記受信用プロセッサと関連付けられたマッピング回路（４００）であって、前記マッピング回路は、前記送信用プロセッサから受信された前記データメッセージに含まれる前記インデックス（３５２、３４０、４４０）を、ポインタ（４５０）にマッピングし、前記ポインタは、前記メモリユニットのバッファ（４６０、４７０、４８０）と関連づけられている、前記マッピング回路（４００）と、
前記受信されたデータメッセージの前記ペイロード部分を、前記ポインタによって示される前記バッファに書き込む前記受信用プロセッサと、
を特徴とする、マルチプロセッサシステム。
【請求項２】
前記受信用プロセッサ（２２０）はさらに、システムの起動時に前記サイズインデックステーブル（３００）をセットアップする、請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記受信用プロセッサと関連付けられたダイレクトメモリアクセスコントローラ（２６０）をさらに含み、周辺部からメモリへの少なくとも１つの転送と、メモリからメモリへの少なくとも１つの転送とを含む分散チェーンを実行する、請求項１または請求項２のいずれか１項に記載のマルチプロセッサシステム。
【請求項４】
前記送信用プロセッサ（２１０）と前記受信用プロセッサ（２２０）とに関連付けられたデータリンク（２７０）をさらに含むマルチプロセッサシステムであって、前記送信用プロセッサは、前記データリンクと関連づけられた出力バッファ（２８１）を含み、前記受信用プロセッサは、前記データリンクと関連づけられた入力バッファ（２９１）を含む、請求項３に記載のマルチプロセッサシステム。
【請求項５】
前記マッピング回路は、ポインタを格納するためのポインタ配列（４９０）と、インデックスレジスタ（４１０）と、ポインタレジスタ（４２０）とを含む、請求項４に記載のマルチプロセッサシステム。
【請求項６】
前記受信用プロセッサ（２２０）はさらに、システムの起動時に前記ポインタ配列をセットアップする、請求項５に記載のマルチプロセッサシステム。
【請求項７】
前記ダイレクトメモリアクセスコントローラ（２６０）は、前記メモリユニットのバッファ（４６０、４７０、４８０）を割り当て、前記メモリユニットのバッファが割り当てられている場合には前記ポインタ配列（４９０）を更新する、請求項５または請求項６のいずれか１項に記載のマルチプロセッサシステム。
【請求項８】
前記受信用プロセッサ（２２０）の前記入力バッファ（２９１）は、前記サイズ（３５１）、前記インデックス（３５２、３４０）、および前記ペイロード部分（３５３）を含む前記データメッセージ（１５０、３５０）を受信し、
前記ダイレクトメモリアクセスコントローラ（２６０）は、
前記入力バッファから前記サイズを読み出し、
前記入力バッファから前記インデックスを読み出し、
前記インデックスレジスタ（４１０）に前記インデックスを書き込み、
前記ポインタレジスタ（４２０）から、前記メモリユニット（１４０）の前記バッファ（４６０、４７０、４８０）と関連付けられた前記ポインタ（４５０）を読み出し、
前記入力バッファから前記ペイロード部分を読み出し、
前記ポインタによって示される前記バッファに前記ペイロード部分を書き込む、請求項５〜請求項７のいずれか１項に記載のマルチプロセッサシステム。
【請求項９】
前記ダイレクトメモリアクセスコントローラ（２６０）はさらに、前記ペイロード部分が前記バッファに書き込まれている場合に割り込み信号を生成する、請求項８に記載のマルチプロセッサシステム。
【請求項１０】
前記ダイレクトメモリアクセスコントローラ（２６０）はさらに、システムスタックの上位レイヤに前記バッファを通知し、前記送信用プロセッサへと確認メッセージを送る、請求項８または請求項９のいずれか１項に記載のマルチプロセッサシステム。
【請求項１１】
前記バッファ（４６０、４７０、４８０）は第１バッファであり、
前記ダイレクトメモリアクセスコントローラ（２６０）はさらに、
前記メモリユニット（１４０）の第２バッファ（４６０、４７０、４８０）を割り当て、前記第２バッファは前記第１バッファと同じサイズを有しており、
前記第２バッファと関連付けられたポインタで、前記ポインタ配列（４９０）を更新する、請求項８〜請求項１０のいずれか１項に記載のマルチプロセッサシステム。
【請求項１２】
前記メモリユニット（１４０）は第１メモリユニットであり、前記マルチプロセッサシステムは、前記送信用プロセッサ（２１０）と関連付けられた第２メモリユニット（１３０）をさらに含み、前記第２メモリユニットは、前記サイズインデックステーブル（３００）を格納する、請求項１〜請求項１１のいずれか１項に記載のマルチプロセッサシステム。
【請求項１３】
単一の電子機器に搭載されるマルチプロセッサシステム（２００）に含まれるプロセッサであって、前記プロセッサは、ペイロード部分（３５３）、前記ペイロード部分のサイズ（３５１）、およびインデックス（３５２）を含むデータメッセージ（１５０、３５０）を受信する受信用プロセッサ（２２０）であり、前記マルチプロセッサシステムは、前記データメッセージを送信する送信用プロセッサ（２１０）と、前記受信用プロセッサと関連付けられたメモリユニット（１４０）とをさらに含む、前記プロセッサにおいて、
前記プロセッサは、
前記送信用プロセッサから受信された前記データメッセージに含まれる前記インデックス（３５２、３４０、４４０）を、ポインタ（４５０）にマッピングするマッピング回路（４００）であって、前記ポインタは、前記メモリユニットのバッファ（４６０、４７０、４８０）と関連付けられている、前記マッピング回路（４００）と、
前記受信されたデータメッセージの前記ペイロード部分を、前記ポインタによって示される前記バッファに書き込む前記受信用プロセッサと、
を特徴とする、プロセッサ。
【請求項１４】
さらにシステムの起動時にサイズインデックステーブル（３００）をセットアップする、請求項１３に記載のプロセッサ。
【請求項１５】
周辺部からメモリへの少なくとも１つの転送と、メモリからメモリへの少なくとも１つの転送とを含む分散チェーンを実行するダイレクトメモリアクセスコントローラ（２６０）をさらに含む、請求項１３または請求項１４のいずれか１項に記載のプロセッサ。
【請求項１６】
データリンク（２７０）と関連付けられた入力バッファ（２９１）をさらに含む、請求項１５に記載のプロセッサ。
【請求項１７】
前記マッピング回路は、ポインタを格納するためのポインタ配列（４９０）と、インデックスレジスタ（４１０）と、ポインタレジスタ（４２０）とを含む、請求項１６に記載のプロセッサ。
【請求項１８】
さらにシステムの起動時に前記ポインタ配列をセットアップする、請求項１７に記載のプロセッサ。
【請求項１９】
前記ダイレクトメモリアクセスコントローラ（２６０）は、前記メモリユニットのバッファ（４６０、４７０、４８０）を割り当て、前記メモリユニットのバッファが割り当てられている場合には前記ポインタ配列（４９０）を更新する、請求項１７または請求項１８のいずれか１項に記載のプロセッサ。
【請求項２０】
前記入力バッファ（２９１）は、前記サイズ（３５１）、前記インデックス（３５２）、および前記ペイロード部分（３５３）を含む前記データメッセージ（１５０、３５０）を受信し、
前記ダイレクトメモリアクセスコントローラ（２６０）はさらに、
前記入力バッファから前記サイズを読み出し、
前記入力バッファから前記インデックスを読み出し、
前記インデックスレジスタ（４１０）に前記インデックスを書き込み、
前記ポインタレジスタ（４２０）から、前記メモリユニット（１４０）の前記バッファ（４６０、４７０、４８０）と関連付けられた前記ポインタ（４５０）を読み出し、
前記入力バッファから前記ペイロード部分を読み出し、
前記ポインタによって示される前記バッファに前記ペイロード部分を書き込む、請求項１７〜請求項１９のいずれか１項に記載のプロセッサ。
【請求項２１】
前記ダイレクトメモリアクセスコントローラ（２６０）はさらに、前記ペイロード部分が前記バッファに書き込まれている場合に割り込み信号を生成する、請求項２０に記載のプロセッサ。
【請求項２２】
前記ダイレクトメモリアクセスコントローラ（２６０）はさらに、システムスタックの上位レイヤに前記バッファを通知し、前記送信用プロセッサへと確認メッセージを送る、請求項２０または請求項２１のいずれか１項に記載のプロセッサ。
【請求項２３】
前記バッファ（４６０、４７０、４８０）は第１バッファであり、
前記ダイレクトメモリアクセスコントローラ（２６０）はさらに、
前記メモリユニット（１４０）の第２バッファ（４６０、４７０、４８０）を割り当て、前記第２バッファは前記第１バッファと同じサイズを有しており、
前記第２バッファと関連付けられたポインタで、前記ポインタ配列（４９０）を更新する、請求項２０〜請求項２２のいずれか１項に記載のプロセッサ。
【請求項２４】
請求項１〜請求項１２のいずれか１項に記載のマルチプロセッサシステムと、
請求項１３〜請求項２３のいずれか１項に記載のプロセッサと、
の少なくとも１つを含む電子装置。
【請求項２５】
前記電子装置は、携帯型または手持ち型の移動無線通信機器、移動無線端末、携帯電話（７００）、ポケットベル、発信機、電子手帳、スマートフォン、コンピュータ、組込み型ドライブ、携帯型ゲーム機、時計、基地局、または、基地局コントローラである、請求項２４に記載の電子装置。
【請求項２６】
単一の電子機器に搭載されるマルチプロセッサシステム（２００）に含まれるプロセッサ（２２０）においてデータメッセージ（１５０、３５０）を受信する方法において、前記データメッセージは、前記マルチプロセッサシステムに含まれる送信用プロセッサにより送信され、サイズ（３５１）、インデックス（３５２）、およびペイロード部分（３５３）を含み、
前記方法は、
前記プロセッサの入力バッファ（２９１）から前記サイズを読み出す工程と（５１０）、
前記入力バッファから前記インデックスを読み出す工程と（５２０）、
ポインタ（４５０）へと前記インデックスをマッピングする工程と（５３０）、
前記入力バッファから前記ペイロード部分を読み出す工程と（５４１）、
前記プロセッサと関連付けられたメモリ（１４０）のバッファ（４６０、４７０、４８０）に、前記ペイロード部分を書き込む工程であって（５４２）、前記バッファは前記ポインタにより示される、前記書き込み工程と（５４２）、
を含む、方法。
【請求項２７】
システムの起動時にサイズインデックステーブル（３００）をセットアップする工程をさらに含み、前記データメッセージ（１５０、３５０）の前記ペイロード部分（３５３）の前記サイズ（３５１）は、前記サイズインデックステーブル内のインデックス（３４０）と関連付けられている、請求項２６に記載の方法。
【請求項２８】
前記ポインタ（４５０）は、ポインタ配列（４９０）に含まれる、請求項２６または請求項２７のいずれか１項に記載の方法。
【請求項２９】
システムの起動時に前記ポインタ配列（４９０）をセットアップする工程をさらに含む、請求項２８に記載の方法。
【請求項３０】
前記ペイロード部分（３５３）が前記バッファ（４６０、４７０、４８０）に書き込まれている場合に割り込み信号を生成する工程をさらに含む、請求項２６〜請求項２９のいずれか１項に記載の方法。
【請求項３１】
システムスタックの上位レイヤに前記バッファを通知する工程と（５５１）、
前記データメッセージが受信されていることを示す確認メッセージを送信する工程（５５４）と、
をさらに含む、請求項２６〜請求項３０のいずれか１項に記載の方法。
【請求項３２】
前記バッファ（４６０、４７０、４８０）は第１バッファであり、
前記方法は、
前記メモリ（１４０）の第２バッファ（４６０、４７０、４８０）を割り当てる工程（５５２）であって、前記第２バッファは前記第１バッファと同じ大きさを有する、前記割り当て工程と（５５２）、
前記第２バッファと関連付けられたポインタでポインタ配列（４９０）を更新する工程と（５５３）、
をさらに含む、請求項２６〜請求項３１のいずれか１項に記載の方法。
【請求項３３】
ポインタに前記インデックスをマッピングする前記工程は、
インデックスレジスタ（４１０）に前記インデックス（３５２）を書き込む工程（５３１）と、
前記ポインタ（４５０）に前記インデックスをマッピングする工程と（５３２）、
ポインタレジスタ（４２０）に前記ポインタを書き込む工程と（５３３）、
前記ポインタレジスタから前記ポインタを読み出す工程と（５３４）、
を含む、請求項２６〜請求項３２のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタルプロセッサ分野に関し、特に、マルチプロセッサシステム内でのデジタルプロセッサ間での通信に関する。
【背景技術】
【０００２】
プロセッサ間の通信は、マルチプロセッサにおいて頻繁に利用されている。マルチプロセッサシステムは、例えば、特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）のような単一チップ上に存在してもよい。代替的に、マルチプロセッサシステムは、電子装置内の異なるチップ上に存在するプロセッサ、または、場合によっては地理的に離れている別々の装置内に存在するプロセッサによって構成されてもよい。マルチプロセッサシステムのプロセッサは、標準的な民生プロセッサであってもよく、または、特定のタスクまたは条件のために特別に設計された特別な用途向けのプロセッサであってもよい。
【０００３】
マルチプロセッサシステムの各プロセッサは、各プロセッサ上で動作するオペレーティングシステムを有してもよい。オペレーティングシステムのコアは、各オペレーティングシステム上で動作するアプリケーションに分かるように通信する必要がある。プロセッサ間の通信は、例えば、マルチプロセッサシステム内のプロセッサのうちの第１プロセッサと関連付けられたメモリユニットから、マルチプロセッサシステム内のプロセッサのうちの弟２プロセッサと関連付けられたメモリユニットへと送信される必要があるデータメッセージを含んでもよい。データメッセージを送信するために必要なことは、例えば、第２プロセッサと関連付けられたスレッドによって、このスレッドが第１プロセッサ上のサービスを利用している場合に、開始されてもよい。
【０００４】
一般的に言えば、送信されるデータメッセージは、ペイロード部分、すなわち、通信される必要があるデータを含んでいる。ペイロード部分は特定のサイズを有し、例えば、バイト数で表されてもよい。ペイロード部分のサイズは、通信される必要がある異なるメッセージ間で異なっていてもよい。サイズが異なることもあり、かつ、データメッセージを受信する予定のプロセッサが、全ての可能性のあるサイズのメッセージの受信をサポートする必要があるため、受信されたデータメッセージを格納するための受信用プロセッサと関連付けられたメモリユニット内に、予め割り当てられた、固定サイズのバッファを有することは有利ではないこともある。これは、このようなソリューションが一般的に、大量のいわゆるスラック、すなわち、メモリユニットに渡って広がる未使用のメモリをもたらすからである。
【０００５】
従って、受信用プロセッサ（または受信用プロセッサのサブシステム）は、メッセージのペイロード部分の受信前に適切なサイズのバッファを割り当てられるように、メッセージの大きさに関する情報を取得する必要がある。この情報は、ペイロード部分の送信前に送信用プロセッサによって送信されてもよい。サイズ情報の受信により、受信用プロセッサ内で割り込み信号が生成されてもよい。その後、割り込み信号に応じて、受信用プロセッサはサイズを認識し、受信用プロセッサと関連付けられたメモリユニット内で適切なサイズのバッファを割り当てる。幾つかの実現において、バッファが割り当てられている場合には、第２割り込み信号が受信用プロセッサ内で生成される。
【０００６】
バッファが割り当てられている場合には、ペイロードは受信可能であり、割り当てられたバッファに格納可能である。例えばペイロードは、第２割り込み信号に応じて、または、第１割り込み信号に応じた手続きの実行の一部として受信可能であり、格納可能である。バッファへのデータメッセージのペイロード部分の格納が完了した場合には、更に別の割り込み信号が受信用プロセッサ内で生成されてもよい。この割り込み信号は、受信用プロセッサの中央処理ユニット（ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）に、データメッセージが受信され、格納されていることを報知することを目的としている。この全手続きは、マルチプロセッサシステムのプロセッサ間で通信される必要がある各データメッセージのために繰り返される必要がある。
【０００７】
マルチプロセッサシステムのプロセッサ内の高頻度な割り込み信号は、多くの状況において深刻な不利益となる。各割り込み信号について、入力、実行、終了操作のような複数の工程が、割り込み信号が例えばキー入力または外部ハードウェア要求のようなかなり簡単な割り込み要求を伝える場合にも、この特定のプロセッサ上で動作するオペレーティングシステムによって実行される必要がある。割り込み信号が、例えばネスト型の割り込み（ｎｅｓｔｅｄ  ｉｎｔｅｒｒｕｐｔ）のような、より複雑な割り込み要求を伝える場合には、オペレーティングシステムによって実行するための、より多くのステップが存在することもある。
【０００８】
従って、割り込み信号の頻度は、例えば、マルチプロセッサシステム内のプロセッサの性能に大きな影響を与える可能性がある。割り込み信号の頻度を下げることによって、プロセッサ上で動作するオペレーティングシステムにより行なわれるタスクの全実行時間が短縮されることもある。特に、マルチプロセッサシステムが単一チップ上に存在する場合には、メッセージ転送が非常に速い速度で実行されるべきであることが予想される可能性がある。従って、プロセッサ間のメッセージ転送のために必要な割り込みの数を低減することが、全マルチプロセッサシステムで有利であろうことが予想されるが、このような場合には特に望ましいであろう。
【０００９】
マルチプロセッサシステムにおいて遭遇する他の問題は、メモリユニット内の特定の位置のための意図されたデータが、メモリユニット内または他のメモリユニット内の他の不適切な、または誤った位置に書き込まれる可能性がある場合である。このようなイベントは、例えば、ハッキング、ウィルスまたは出来の悪いコードによるものである可能性がある。さらに、ハッキングまたはウィルス攻撃が、メモリユニット内に自身のデータを書き込む可能性がある。このような全ケースにおいて、後続の読み込みアクセスが、結果として、意図したものと全く異なるデータをもたらす可能性がある。
【００１０】
幾つかのマルチプロセッサシステムの更なる不利益は、共有メモリプロトコルのような、メモリポインタが異なるプロセッサ間で交換されるプロトコルが利用される場合である。このようなソリューションにおいては、例えば、ウィルスまたはハッカーが接続に侵入し、ポインタを読み出し、データをダウンロードするため、またはコードをダウンロードし受信用プロセッサで動作させるために、ポインタにより示されるメモリアドレスを利用する可能性があるという危険性がある。代替的に、ウィルスまたはハッカーがポインタを変更する可能性があり、これによって、意図されるデータが誤ったメモリ位置に書き込まれる。
【００１１】
従って、受信用プロセッサ内で出来る限り少ない割り込み信号を生成し、受信用プロセッサと関連付けられたメモリユニット内で出来る限り少ないスラックを生成する一方で、マルチプロセッサシステム内のプロセッサ間でデータメッセージを通信する必要性がある。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明の課題は、上記の不利益の少なくとも幾つかを未然に防ぎ、マルチプロセッサシステム内のプロセッサ間でデータメッセージを通信するための改善されたシステム、プロセッサ、装置および方法を提供することである。
【課題を解決するための手段】
【００１３】
本発明の第１の観点によれば、このことは、データメッセージを送信する送信用プロセッサと、上記データメッセージを受信する受信用プロセッサと、上記受信用プロセッサと関連付けられたメモリユニットと、を含むマルチプロセッサシステムによって達成される。マルチプロセッサシステムは、上記送信用プロセッサと関連付けられたサイズインデックステーブルを有し、上記送信用プロセッサは、上記サイズインデックステーブルのインデックスに、上記データメッセージのペイロード部分のサイズをマッピングし、上記サイズ、上記インデックス、および上記ペイロード部分を含む上記データメッセージを、上記受信用プロセッサに送信する。マルチプロセッサシステムは、上記受信用プロセッサと関連付けられたマッピング回路も有する。上記マッピング回路は、上記送信用プロセッサから受信された上記データメッセージに含まれる上記インデックスを、ポインタにマッピングし、上記ポインタは上記メモリユニットのバッファと関連付けられている。上記受信用プロセッサは、上記受信されたデータメッセージの上記ペイロード部分を、上記ポインタによって示される上記バッファに書き込む。
【００１４】
上記受信用プロセッサはさらに、システムの起動時に上記サイズインデックステーブルをセットアップしてもよい。
【００１５】
マルチプロセッサシステムは、上記受信用プロセッサと関連付けられたダイレクトメモリアクセスコントローラをさらに含み、周辺部からメモリへの少なくとも１つの転送と、メモリからメモリへの少なくとも１つの転送とを含む分散チェーンを実行してもよい。
【００１６】
マルチプロセッサシステムは、上記送信用プロセッサと上記受信用プロセッサとに関連付けられたデータリンクをさらに含んでもよい。上記送信用プロセッサは、上記データリンクと関連づけられた出力バッファを含み、上記受信用プロセッサは、上記データリンクと関連づけられた入力バッファを含んでもよい。
【００１７】
上記マッピング回路は、ポインタを格納するためのポインタ配列と、インデックスレジスタと、ポインタレジスタと、を含んでもよい。
【００１８】
上記受信用プロセッサはさらに、システムの起動時に上記ポインタ配列をセットアップしてもよい。
【００１９】
上記ダイレクトメモリアクセスコントローラは、上記メモリユニットのバッファを割り当て、上記メモリユニットのバッファが割り当てられている場合には上記ポインタ配列を更新してもよい。
【００２０】
上記受信用プロセッサの上記入力バッファは、上記サイズ、上記インデックス、および上記ペイロード部分を含む上記データメッセージを受信してもよい。上記ダイレクトメモリアクセスコントローラはさらに、上記入力バッファから上記サイズを読み出し、上記入力バッファから上記インデックスを読み出し、上記インデックスレジスタに上記インデックスを書き込み、上記ポインタレジスタから、上記メモリユニットの上記バッファと関連付けられた上記ポインタを読み出し、上記入力バッファから上記ペイロード部分を読み出し、上記ポインタによって示される上記バッファに上記ペイロード部分を書き込んでもよい。
【００２１】
上記ダイレクトメモリアクセスコントローラはさらに、上記ペイロード部分が上記バッファに書き込まれている場合に割り込み信号を生成してもよい。
【００２２】
上記ダイレクトメモリアクセスコントローラはさらに、システムスタックの上位レイヤに上記バッファを通知し、上記送信用プロセッサへと確認メッセージを送ってもよい。
【００２３】
上記バッファは第１バッファであってもよく、上記ダイレクトメモリアクセスコントローラはさらに、上記メモリユニットの第２バッファを割り当て、上記第２バッファは上記第１バッファと同じサイズを有しており、上記第２バッファと関連付けられたポインタで、上記ポインタ配列を更新してもよい。
【００２４】
上記メモリユニットは第１メモリユニットであってもよく、上記マルチプロセッサシステムは、上記送信用プロセッサと関連付けられた第２メモリユニットをさらに含んでもよい。上記第２メモリユニットは、上記サイズインデックステーブルを格納してもよい。
【００２５】
本発明の第２の観点によれば、プロセッサは、マルチプロセッサシステムに含まれる。上記プロセッサは、ペイロード部分、上記ペイロード部分のサイズ、およびインデックスを含むデータメッセージを受信する受信用プロセッサである。上記マルチプロセッサシステムは、上記データメッセージを送信する送信用プロセッサと、上記受信用プロセッサと関連付けられたメモリユニットとをさらに含む。上記プロセッサは、上記送信用プロセッサから受信された上記データメッセージに含まれる上記インデックスを、ポインタにマッピングするマッピング回路を有し、上記ポインタは上記メモリユニットのバッファと関連付けられている。上記受信用プロセッサは、上記受信されたデータメッセージの上記ペイロード部分を、上記ポインタによって示される上記バッファに書き込む。
【００２６】
さらに、第２の観点に従ったプロセッサは、第１の観点に従った実施形態の様々な特徴に対応する特徴を有してもよい。
【００２７】
本発明の第３の観点によれば、電子装置は、第１の観点に従ったマルチプロセッサシステムと、第２の観点に従ったプロセッサと、の少なくとも１つを含む。
【００２８】
上記電子装置は、携帯型または手持ち型の移動無線通信機器、移動無線端末、携帯電話、ポケットベル、発信機、電子手帳、スマートフォン、コンピュータ、組込み型ドライブ、携帯型ゲーム機、時計、基地局、または、基地局コントローラであってもよい。
【００２９】
本発明の第４の観点によれば、プロセッサにおいてデータメッセージを受信する方法において、上記データメッセージは、サイズ、インデックス、およびペイロード部分を含み、上記方法は、上記プロセッサの入力バッファから上記サイズを読み出す工程と、上記入力バッファから上記インデックスを読み出す工程と、ポインタへと上記インデックスをマッピングする工程と、上記入力バッファから上記ペイロード部分を読み出す工程と、上記プロセッサと関連付けられたメモリのバッファに、上記ペイロード部分を書き込む工程であって、上記バッファは上記ポインタにより示される、上記書き込み工程と、を含む。
【００３０】
上記ポインタは、ポインタ配列内に含まれてもよい。
【００３１】
ポインタに上記インデックスをマッピングする上記工程は、インデックスレジスタに上記インデックスを書き込む工程と、上記ポインタに上記インデックスをマッピングする工程と、ポインタレジスタに上記ポインタを書き込む工程と、上記ポインタレジスタから上記ポインタを読み出す工程と、を含んでもよい。
【００３２】
さらに、第４の観点に従った方法は、第１の観点に従った実施形態の様々な特徴に対応する特徴を有してもよい。
【００３３】
本発明のさらなる実施形態は、従属請求項に定義されている。
【００３４】
本発明の実施形態の効果の１つは、プロセッサが他のプロセッサからデータメッセージを受信する場合にプロセッサ内で生成される割り込み信号の数が低減されることである。さらに正確には、データメッセージの受信と関連付けられた割り込み信号の数は、少なくとも半減されうる。さらに、幾つかの実現に比べて３分の１でありうる。
【００３５】
本発明の実施形態の更なる効果は、非合法の、および／または望まれないメモリ利用を防止する内蔵型のセキュリティの仕組みが存在しうるということである。
【００３６】
本発明の実施形態の他の効果は、マルチプロセッサシステムのプロセッサ間でメモリポインタが送信されないことであり、このことがウィルスのような望まれないコードに対するセキュリティを向上させる。
【００３７】
本発明の実施形態の更に別の効果は、割り込み信号の数の低減を可能にするために、本発明の実施形態に従ってメモリ・バッファが予め割り当てられているとしても、スラック（ｓｌａｃｋ）と呼ばれる、メモリユニットに渡って広がる未使用のメモリの量が未だに非常に低いレベルに保たれうるということである。
【００３８】
本明細書で利用される場合「含む／含んでいる」（“ｃｏｍｐｒｉｓｅｓ／ｃｏｍｐｒｉｓｉｎｇ”）という語は、述べられている特徴、整数、ステップ、または構成要素の存在を特定するために利用されるが、１つまたは複数の他の特徴、整数、ステップ、または構成要素、またその集合の存在を排除するものではないことが強調される。
【図面の簡単な説明】
【００３９】
本発明の更なる目的、特徴、および効果は、添付の図面を参照して、本発明の実施形態の以下の詳細な記載から明らかとなろう。
【図１】マルチプロセッサシステムの２つのオペレーションシステム間での通信を説明する図である。
【図２】本発明の幾つかの実施形態に従ったマルチプロセッサシステムを説明するブロック図である。
【図３Ａ】本発明の幾つかの実施形態に従ったサイズインデックステーブルを説明するブロック図である。
【図３Ｂ】本発明の幾つかの実施形態に従ったマルチプロセッサシステムの２つのプロセッサ間で送信されるデータメッセージを説明する図である。
【図４Ａ】本発明の幾つかの実施形態に従ったインデックスポインタ・マッピング回路を説明するブロック図である。
【図４Ｂ】本発明の幾つかの実施形態に従ったポインタ配列において体系化された、メモリユニットのバッファとバッファのポインタとの間の関連付けを説明するブロック図である。
【図５】本発明の幾つかの実施形態に従ったマルチプロセッサシステムのプロセッサにおいてデータメッセージを受信する方法を説明する流れ図である。
【図６】本発明の幾つかの実施形態に従ったダイレクトメモリアクセス・分散チェーンの操作を説明する図である。
【図７】本発明の幾つかの実施形態に従ったマルチプロセッサシステム、またはマルチプロセッサシステムの一部を含むことが可能な移動端末の正面図である。
【発明を実施するための形態】
【００４０】
以下では、データメッセージがマルチプロセッサシステムの２つのプロセッサ間で通信される本発明の実施形態を記載することにする。図１は、このようなマルチプロセッサシステムの２つのオペレーションシステム間での通信を説明するものである。図１では、メッセージ１５０が、マルチプロセッサシステムの第１プロセッサ上で動作する第１オペレーティングシステム（ＯＳ：ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）１１０によって、マルチプロセッサシステムの第２プロセッサ上で動作する第２オペレーティングシステム（ＯＳ）１２０へと通信されている。第１オペレーティングシステムは、第１プロセッサと関連付けられたメモリユニット１３０の位置１３１から、データメッセージ１５０のペイロードを取り出し、それを第２オペレーティングシステム１２０へと通信する。第２オペレーティングシステム１２０は、データメッセージ１５０を受信し、ペイロードを、第２プロセッサと関連付けられたメモリユニット１４０の位置１４１に格納する。
【００４１】
図２は、本発明の例示的な実施形態に従ったマルチプロセッサシステム２００のブロック図を示している。図１の第１オペレーティングシステム１１０、第２オペレーティングシステム１２０は、例えば、プロセッサ２１０、２２０上それぞれで動作してもよい。以下の記載を簡単にするために、プロセッサ２１０を送信用プロセッサと、プロセッサ２２０を受信用プロセッサと呼ぶことにする。しかし、当然のことながら、本発明の実施形態では、マルチプロセッサシステムのプロセッサは、送信用プロセッサと受信用プロセッサの双方としてふるまってもよい。さらに、本発明の実施形態に従ったマルチプロセッサシステムは、２つ以上のプロセッサを含んでもよく、本明細書に記載される実施形態は、マルチプロセッサシステム内の全てのプロセッサの対に適用されてもよいものと理解される。
【００４２】
送信用プロセッサおよび受信用プロセッサのそれぞれは、中央処理ユニット（ＣＰＵ）２１１、２２１を含んでいる。ダイレクトメモリアクセス（ＤＭＡ：ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）コントローラ２５０、および、所定のインタフェース２８０は、送信用プロセッサ２１０と関連付けられている。インタフェース２８０は、例えば、ファーストイン、ファーストアウト（ＦＩＦＯ：ｆｉｒｓｔ−ｉｎ  ｆｉｒｓｔ−ｏｕｔ）のシフトレジスタのような、関連付けられたキュー２８１を有する。さらに、送信用プロセッサ２１０は、関連付けられたメモリユニット１３０を有し、このメモリユニット１３０へのアクセスは、ダイレクトメモリアクセスコントローラ２５０により制御される。同様に、受信用プロセッサ２２０は、関連付けられたダイレクトメモリアクセス（ＤＭＡ）コントローラ２６０と、それへのアクセスがダイレクトメモリアクセスコントローラ２６０により制御される、関連付けられたメモリユニット１４０と、関連付けられた所定のインタフェース２９０と、を有し、インタフェース２９０は、例えば、ファーストイン、ファーストアウト（ＦＩＦＯ）のシフトレジスタのような関連付けられたキュー２９１を有する。受信用プロセッサと関連付けられたダイレクトメモリアクセスコントローラ２６０は、分散チェーン（ｓｃａｔｔｅｒ  ｃｈａｉｎ）を実行することが可能であり、その際には、周辺部からメモリへの転送と、メモリからメモリへの転送とが同じ分散チェーン内で結び付けられうる。インタフェース２８０、２９０は、データリンク２７０を通じて接続されており、このデータリンク２７０は直列リンクバスであってもよいが、これに限定されない。データリンク２７０は、リンクハンドラ（図示せず）によって管理されてもよい。
【００４３】
図３Ａは、本発明の実施形態に従ったサイズインデックステーブル（ｓｉｚｅ−ｉｎｄｅｘ  ｔａｂｌｅ）３００を示している。サイズインデックステーブル３００は、サイズ３３０の配列３１０と、インデックス３４０の対応する配列３２０と、を含む。テーブルでは、各サイズ３３０は対応するインデックス３４０を有し、各インデックス３４０は対応するサイズ３３０を有する。当然のことながら、本発明で使用される場合には「配列」（ａｒｒａｙ）および「テーブル」（ｔａｂｌｅ）という語は広義に解釈される。例えば、「テーブル」は、単にサイズのベクトルを含んでもよい。その場合には、インデックスは、ベクトルにおける各サイズの位置と同一である。さらに、サイズインデックステーブルのサイズおよびインデックスは、例えば、別のハードウェアユニットとして、プロセッサに不可欠なハードウェア回路として、または、メモリユニット内に格納されたソフトウェアデータとして具現されてもよい。
【００４４】
ここで、図２および図３Ａを参照することにする。本発明の実施形態において、サイズインデックステーブル３００は、送信用プロセッサ２１０と関連付けられてもよい。例として、サイズインデックステーブル３００は、受信用プロセッサ２２０により、システムの起動時にセットアップされてもよい。サイズインデックステーブルは、受信用プロセッサ２２０のソフトウェアによって、セットアップされてもよい。このセットアップの手続きにおいて、受信用プロセッサ２２０は、サイズインデックステーブル３００を作成するために、受信用プロセッサ２２０と関連付けられたメモリユニット１４０のために適切な複数のバッファサイズ３３０を決定し、これらサイズを配列において配置し、インデックス３４０を各サイズと関連付ける。その後、受信用プロセッサ２２０は、テーブル３００を送信用プロセッサ２１０に通信し、この送信用プロセッサ２１０は、例えば、メモリユニット１３０にテーブルを格納する。代替的に、サイズインデックステーブルは、所定のものであってもよく、従って例えば、専用のハードウェアにハードコードされていても（ｈａｒｄ−ｃｏｄｅｄ）よい。本発明の幾つかの実施形態において、受信用プロセッサ２２０は、例えばメモリユニット１４０内にサイズインデックステーブル３００の複写も保持する。
【００４５】
図３Ｂは、図２の送信用プロセッサ２１０と、図２の受信用プロセッサ２２０との間で送信されるデータメッセージ３５０を説明するものである。図３Ｂに加えて、再び図２および図３Ａを参照しながら、本発明の実施形態についてさらに詳しく述べることにする。メッセージのペイロード３５３が送信用プロセッサ２１０から受信用プロセッサ２２０に通信される場合に、送信用プロセッサ２１０は、サイズインデックステーブル３００を用いて、メッセージ３５０をインデックス３５２と関連付ける。関連付けは、メッセージ３５０のペイロード部分３５３のサイズ３５１を、対応するインデックス３５２、３４０に対してマッピングし、メッセージ３５０にインデックスを挿入することによって行なわれる。その場合、データメッセージ３５０は、図３Ｂに示されるように、ペイロード３５３に加えて、サイズ３５１とインデックス３５２を含んでもよい。
【００４６】
サイズインデックステーブル３００におけるサイズ３３０は、送信用プロセッサ２１０と受信用プロセッサ２２０との間で通信されるメッセージ３５０のペイロード部分３５３の全可能なサイズ３５１を処理できるべきである。通信されるメッセージ３５０のペイロード部分３５３が、サイズインデックステーブル３００内のエントリのサイズ３３０に直接的に対応しないサイズ３５１を有する場合に、サイズインデックステーブル３００内のより大きなサイズ３３０、例えば、メッセージ３５０のペイロード部分３５３のサイズ３５１よりも大きい、サイズインデックステーブル３００内の最小サイズ３３０に対応するインデックス３４０が選択される。従って、例えばマルチプロセッサシステムのプロセッサ間で通信されるメッセージのペイロード部分が、１〜１６ビットの間のいずれかであってよい場合に、サイズインデックステーブルは、少なくとも１つのエントリを有する必要があり、但し、関連付けられたサイズは１６ビット以上である。例えば、サイズインデックスは、サイズ４、６、８、および１６ビットを含むことが可能であることもあり、対応するインデックスは、０、１、２、および３である。送信されるメッセージが７バイトのサイズのペイロード部分を有する場合に、サイズインデックステーブル内の、８バイトのサイズに対応するエントリ（７バイト以上であるテーブル内の最小サイズ）が選択され、ペイロードサイズがインデックス２にマッピングされる。
【００４７】
サイズとインデックスとの間のマッピングが行なわれている場合には、所定のインタフェース２８０、２９０によって予め定められてように、メッセージがデータリンク２７０を介して送信される。図３Ｂに示されるように、ペイロード部分３５３には、ペイロード部分のサイズ３５１、および、関連付けられたインデックス３５２が伴う。図３Ｂに示されるフォーマットは単なる例であり、本発明の幾つかの実施形態において、メッセージ部分が他の順序で現れてもよいことに注意されたい。例えば、インデックス部分とサイズ部分とが入れ替えられてもよい。本発明の幾つかの実施形態において、メッセージは追加的な部分を含んでもよい。
【００４８】
メッセージ３５０、または、メッセージ３５０の少なくとも一部が受信用プロセッサ２２０の入力キュー２９１に送信されている場合に、受信用プロセッサのダイレクトメモリアクセスコントローラ２６０は、サイズ３５１およびインデックス３５２をキューから読み出す。これらメッセージ部分を読み出す順番は、メッセージのフォーマット、および、キューがどのように管理されているかに依存する。どのような場合にも、インデックス３５２は、メモリユニット１４０内の予め割り当たられたバッファと関連付けられたポインタにマッピングされる。その後、ダイレクトメモリアクセスコントローラ２６０は、入力キュー２９１からメッセージのペイロード部分３５３を読み出し、このペイロード部分を、ポインタに示されるように、予め割り当てられたバッファに書き込む。これらの読み出し手続きおよび書き込み手続きにおいて読み出され、書き込まれるデータの量は、入力キューから事前に読み出されたサイズ３５１により定められる。
【００４９】
ここで、図２、図４Ａおよび図４Ｂを参照しながら、ポインタへのインデックス３５２のマッピングについてより詳細に記載することにする。図４Ａは、本発明の例示的な実施形態に従ったインデックスポインタ・マッピング回路４００を説明するものである。このマッピング回路は、受信用プロセッサのサブシステムからのみ、読み出しおよび／または書き込みのためにアクセス可能であってもよい。マッピング回路４００は、受信用プロセッサ２２０と関連付けられた別のハードウェア・ブロックとして実現されてもよく、または、受信用プロセッサ２２０の不可欠な部分であってもよい。マッピング回路４００は、インデックスポインタテーブル４３０を含み、インデックスポインタテーブル４３０は、インデックス４４０の配列４９５と、ポインタ４５０の対応する配列４９０を含む。テーブルにおいて、各インデックス４４０は対応するポインタ４５０を有し、各ポインタ４５０は対応するインデックス４４０を有する。以前に記載されたサイズインデックステーブルに関しては、当然のことながら、本明細書で使用される場合に「配列」（“ａｒｒａｙ”）および「テーブル」（“ｔａｂｌｅ”）という語は広義に解釈される。例えば、「テーブル」は、単にポインタのベクトルを含んでもよい。その場合、インデックスは、ベクトルにおける各ポインタの位置と同一である。さらに、インデックスポインタテーブルのインデックスおよびポインタは、例えば、別のハードウェアユニットとして、プロセッサに不可欠なハードウェア回路として、または、メモリユニット内に格納されたソフトウェアデータとして具現されてもよい。
【００５０】
図４Ａに示される実施形態において、マッピング回路はさらに、インデックスレジスタ４１０と、ポインタレジスタ４２０とを含む。受信用プロセッサ２２０のダイレクトメモリアクセスコントローラ２６０が入力キュー２９１からインデックスを読み出している場合には、インデックスは、マッピング回路４００のインデックスレジスタ４１０に書き込まれる。マッピング回路は、インデックスレジスタ４１０内のインデックスに対応するポインタを検出し、このポインタをマッピング回路４００のポインタレジスタ４２０に書き込むように構成され、但し、ポインタは、ダイレクトメモリアクセスコントローラ２６０により読み出されてもよい。マッピング回路は、ポインタレジスタ４２０からポインタが読み出し可能であるまでは更なるメッセージアクセスが行なわれないように、インデックスレジスタ４１０に対する書き込みをハンドシェーク（ｈａｎｄｓｈａｋｅ）してもよい。
【００５１】
ハンドシェークは例えば、インデックスレジスタ４１０にインデックスを書き込んだ後に、ポインタレジスタ４２０から即座に読み出すことをダイレクトメモリアクセスコントローラ２６０に許可されないように、遂行されてもよい。代わりに、ダイレクトメモリアクセスコントローラ２６０は、ポインタレジスタ４２０から読み出すことを許可されるまで待つ必要がある。マッピング回路４００は、ポインタレジスタ４２０が更新され、読み出される準備が整うまで、例えば、書き込み操作に対する自身の応答を遅らせてもよい。代替的に、ポインタレジスタ４２０が更新され、読み出される準備が整っている場合には、マッピング回路４００は、書き込み操作に対して即座に応答し、その後、ダイレクトメモリアクセスコントローラ２６０のための別の標識を作成してもよい。
【００５２】
以前に説明したように、ポインタレジスタ４２０から読み出されるポインタは、受信されたデータメッセージのペイロード部分が書き込まれるべき、メモリユニット１４０のバッファと関連付けられている。ポインタと関連付けられた、予め割り当てられたバッファのサイズは、サイズインデックステーブル内で、インデックスポインタテーブル内のポインタと同じインデックスと関連付けられているサイズに対応する。
【００５３】
図４Ｂは、ポインタ配列４９０内のバッファポインタ４５０と、メモリユニット１４０の予め割り当てられた、例示的なバッファ４６０、４７０、４８０との間の関連付けを説明するものである。ポインタ４５０は、図４Ｂに示されるように、バッファ４６０、４７０、４８０へのダイレクトポインタ（すなわち、メモリアドレス）であってもよいが、ポインタ４５０は、バッファ４６０、４７０、４８０を間接的に定めてもよいことに注意されたい。例えば、ポインタ４５０は、レジスタユニットのレジスタ、または、バッファ位置とは異なるメモリ位置を指し示してもよい。その場合、レジスタまたはメモリ位置は、反対に、バッファ４６０、４７０、４８０のメモリアドレスを含む。このソリューションは、例えば、バッファのメモリアドレスが、レジスタアドレス、またはバッファ位置とは異なるメモリ位置のアドレスよりも長い場合に有利である可能性がある。このように、マッピング回路４００にポインタ配列４９０を格納するために必要なローカルメモリの量を最小限にすることが可能である。
【００５４】
メッセージのペイロード部分がメモリユニット１４０の識別されたバッファ４６０、４７０、４８０に書き込まれている場合に、割り込み信号が、受信用プロセッサ内で生成されてもよい。この割り込み信号は、受信用プロセッサのＣＰＵに、データメッセージが受信され格納されていることを報知することを目的とする。従って、マルチプロセッサシステムのプロセッサ間でのメッセージ通信との関連で生成される割り込み信号の数は、本発明の実施形態を実施する際に、メッセージごとに１つの割り込み信号に低減される。割り込み信号は、例えば、受信用プロセッサと関連付けられたシステムスタックの上位レイヤにバッファを通知し、メモリユニット１４０内の新しいバッファ４６０、４７０、４８０を割り当て、新しいバッファは上位レイヤへと正に通知されたバッファと同じサイズを有しており、ポインタ配列４９０内の適切なエントリに新しいバッファと関連付けられたポインタ４５０を書き込み、送信用プロセッサが他の目的のために送信用バッファを開放できるように送信用プロセッサに確認メッセージを送信する、といったタスクの実行を開始してもよい。
【００５５】
図２、図３Ａ、および図４Ａを再び参照するが、バッファ４６０、４７０、４８０は、受信用プロセッサ２２０において、システムの起動時に、サイズインデックステーブル３００をセットアップしそれを送信用プロセッサ２１０に通信することに場合によっては関連して、割り当てられてもよい。サイズインデックステーブルにおける各サイズについて、この特別なサイズの対応するバッファ４６０、４７０、４８０が割り当てられる。各バッファと関連付けられて、ポインタ４５０がポインタ配列４９０に格納される。ポインタ配列４９０は、システムの起動時にセットアップされてもよい。ポインタ配列は、受信用プロセッサ２２０のソフトウェアによってセットアップされてもよい。その場合、メッセージがバッファ４６０、４７０、４８０のうちの１つに書き込まれる度に、同じサイズの新しいバッファが割り当てられてもよく、ポインタ配列４９０の対応するエントリが、新しいバッファと関連付けられたポインタで更新されてもよい。ポインタ４５０がレジスタまたはメモリを指し示し、このレジスタまたはメモリ位置が反対にバッファ４６０、４７０、４８０のメモリアドレスを含む代替的な実現のために、ポインタ配列４９０の対応するエントリは、新しいバッファが割り当てられている場合には更新される必要はない。代わりに、レジスタユニットまたはメモリ位置の対応するエントリが、新しいバッファのアドレスで更新されてもよい。
【００５６】
本発明の実施形態に従ってバッファを予め割り当て、更新する手続きは、メモリユニット１４０内に不必要なスラックをもたらすことなく実行されることに注意されたい。このことは、予め割り当てられたバッファを備える他のシステムとは対象的である。このソフトウェア層において不可能ではないにしても、これらのバッファの寿命を予測することが非常に困難なのでこの特徴は重要である。本発明の実施形態によれば、異なるサイズの複数のバッファを使用することによって、不必要なスラックを防止することが可能である。しかし、許容可能なスラックの量と、サイズインデックステーブル３００内のエントリ数（従って、ポインタ配列４９０内のエントリ数）との間には、トレードオフ（ｔｒａｄｅ−ｏｆｆ）があるであろう。
【００５７】
他のメッセージ送信のソリューションは、割り当てられたバッファへのポインタが送信用プロセッサへと送信される技術を利用することも可能である。このことは、ウィルスまたはハッカーが、バッファへのデータまたはコードをダウンロードするきっかけとなる。さらに、ポインタは、ウィルスまたはハッカーによって、または不完全に設計されたコードによって変更される可能性もある。ポインタが変更されている場合、意図されるデータが、場合によっては他のデータを上書きして、メモリ内のどこかに止まっている可能性がある。このように、意図されるデータは追跡不可能なこともあり、上書きされたデータが失われることもある。従って、本発明の実施形態に従ったソリューションが、このような非合法な、または望まれないメモリ利用を防止することが可能な内蔵型のセキュリティの仕組みを有することは注意に値する。これらの実施形態は、メッセージ送信と関連付けられたポインタの送信を回避し、これによって、例えばウィルスやハッカーが、受信用プロセッサにおいてコードをダウンロードし、動作させることがより困難になる。代わりに、本実施形態に従ってバッファのインデックスが送信される。
【００５８】
図５には、本発明の幾つかの実施形態に従ってマルチプロセッサシステムのプロセッサにおいてデータメッセージを送信する方法を示す流れ図５００が示されている。本方法は、例えば、図２の受信用プロセッサ２２０のようなプロセッサにおいて実行されてもよく、図２のダイレクトメモリアクセスコントローラ２６０は、ダイレクトメモリアクセス・分散チェーンの操作の一部として本方法を実行する役目を果たしてもよい。本方法は５１０において開始し、ステップ５１０では、受信されたデータメッセージのペイロード部分のサイズが、図２のＦＩＦＯレジスタ２９１のような、プロセッサの入力キューから読み出される。メッセージに含まれるインデックスは、ステップ５２０において入力キューから読み出され、ステップ５３０においてポインタにマッピングされる。
【００５９】
マッピングの手続きは、ステップ５３１におけるインデックスレジスタへのインデックスの書き込み、ステップ５３２におけるポインタへのマッピング、ステップ５３３におけるポインタレジスタへのポインタの書き込み、および、ステップ５３４におけるポインタレジスタからのポインタの読み出しによって行なわれてもよい。先に述べたように、ポインタへのインデックスのマッピングは、ポインタの配列からの、インデックスに対応するエントリの読み出しによって実現されてもよい。ポインタの配列、インデックスレジスタ、およびポインタレジスタは、図４Ａにおけるマッピング回路４００として具現されてもよく、ポインタ５３２へのインデックスのマッピング、ポインタレジスタ５３３へのポインタの書き込みは、ダイレクトメモリアクセス・分散チェーンによってではなく、マッピング回路のハードウェアによって、行なわれてもよい。
【００６０】
インデックスがポインタにマッピングされている場合には、本方法はステップ５４０に進み、ステップ５４０では、ペイロードの転送が、ステップ５１０において入力キューから読み出されたサイズと、ステップ５３０において読み出されたポインタを用いて行なわれる。ペイロードの転送は、ステップ５４１において開始してもよく、ステップ５４１では、データメッセージのペイロードが入力キューから読み出される。ステップ５４２において、ペイロードの転送は、ステップ５３０において読み出されたポインタにより示されるように、バッファにペイロードを書き込むことによって進められてもよい。本方法のステップ５４１および５４２は、第１データがステップ５４２においてバッファに書き込まれ、その一方で第２データがステップ５４１において入力バッファから読み出されるように、パイプライン方式で実行される（ｐｉｐｅｌｉｎｅ）。
【００６１】
ペイロードの転送が完了している場合には、本方法は、本発明の幾つかの実施形態に従ってステップ５５０へと進み、ステップ５５０では、割り込み要求が実行される。割り込み要求は、ステップ５５１、５５２、５５３、および５５４のうちの１つ、または幾つかを含んでもよい。ステップ５５１において、ステップ５４２において書き込まれたバッファが、システムスタックの上位レイヤに通知される。ステップ５４２で書き込まれたバッファと同じサイズの新しいバッファが、ステップ５５２において割り当てられる。ステップ５５３において、ポインタの配列が、新規に割り当てられたバッファと関連付けられたポインタで更新される。最後に、ステップ５５４において、メッセージが完全に受信され格納されたことを伝えるために、確認メッセージが送信される。
【００６２】
図６は、本発明の幾つかの実施形態に従ったダイレクトメモリアクセス・分散チェーン６００の操作を説明するものである。分散チェーンリンク（ｓｃａｔｔｅｒ  ｃｈａｉｎ  ｌｉｎｋ）６１０、６２０、６３０、および６４０は、図５において説明された本方法のステップ５１０、５２０、５３０、および５４０に対応してもよい。
【００６３】
例示的な分散チェーン６００のリンク６１０では、実サイズ（Ｘ）が入力バッファ２９１（ＳＲＣ：ＲＸ  ＦＩＦＯ）から読み出され、リンク６２０では、インデックスが入力バッファ２９１（ＳＲＣ：ＲＸ  ＦＩＦＯ）から読み出される。リンク６２０では、読み出されたインデックスはまた、インデックスレジスタ４１０（ＤＳＴ：インデックスレジスタ）に書き込まれる。例示的な分散チェーン６００のリンク６３０において、バッファポインタが、ポインタレジスタ４２０（ＳＲＣ：ポインタレジスタ）から読み出される。例示的な分散チェーンのリンク６４０は、読み出された実サイズおよびバッファポインタそれぞれによってリンク６４０を更新するリンク６１０および６３０によって変更されることに注意されたい。このことは、矢印６１１および６３１により示されている。その後、ペイロードの転送がリンク６４０において行なわれ、リンク６４０では、サイズＸのペイロードデータが入力バッファ２９１（ＳＲＣ：ＲＸ  ＦＩＦＯ）から読み出され、バッファポインタにより示されるように、バッファに書き込まれる。
【００６４】
図６から分かるように、この例示的な分散チェーンにおける最初の４つの分散リンクが、ペイロードの転送をセットアップすることになっている。本例示的な実施形態において、ソースポインタおよび実サイズは、直列リンク２７０を介して送信用プロセッサ２１０から来る。しかし、受信用バッファへのポインタは、ポインタレジスタ４２０から来る。バッファポインタは、マッピング回路４００によって、送信用プロセッサによりストリームに付けられたインデックスに基づいて選択される。リンク６４０においてペイロード転送が完了した後に、ダイレクトメモリアクセス割り込み要求（ＩＲＱ）６５０が実行される。先に説明したように、この割り込み要求は、上位レイヤにバッファを通知し、同じサイズの新しいバッファを割り当て、従ってポインタ配列を更新し、送信用プロセッサに確認メッセージを送信してもよい。
【００６５】
本発明の記載された実施形態とその均等物は、デジタル信号プロセッサ（ＤＳＰ：ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）、中央処理ユニット（ＣＰＵ）、コプロセッサユニットのような、マルチプロセッサシステムと関連付けられた、もしくはマルチプロセッサシステムに不可欠な汎用回路によって、または、例えば特定用途向け集積回路（ＡＳＩＣ）もしくは他の集積回路（ＩＣ）のような特殊回路によって、実行されてもよい。このような全形態は、本発明の範囲内にあるように構想されている。本発明は、本発明の実施形態のいずれかに従ったマルチプロセッサシステム、またはマルチプロセッサシステムの一部を含む電子装置において具現されてもよい。電子装置は、例えば、携帯型または手持ち型の移動無線通信機器、移動無線端末、携帯電話、ポケットベル、発信機、電子手帳、スマートフォン、コンピュータ、組込み型ドライブ、携帯型ゲーム機、または（腕）時計であってもよい。電子装置は、代替的に、通信システムにおける基地局、または基地局コントローラであってもよい。マルチプロセッサシステムのプロセッサは、単一の電子機器内に、かつ単一チップ上に存在にしてもよく、または、場合によっては地理的に離れている別々の装置内に存在してもよい。
【００６６】
図７は、上記のようなマルチプロセッサシステムの少なくとも一部を含む例示的な電子装置としての、携帯電話７００を説明するものである。携帯電話７００が、正面図で示されている。この例示的な携帯電話７００は、装置の筐体に取り付けられたアンテナ７０１を含む。代替的に、携帯電話７００は、装置の筐体内に取り付けられた内部アンテナを有してもよい。携帯電話７００はさらに、携帯電話７００を操作するためのマンマシン・インタフェース（ｍａｎ−ｍａｃｈｉｎｅ  ｉｎｔｅｒｆａｃｅ）を共に提供する、表示部７０４と、キーパッド７０５と、スピーカー７０２と、マイクロホン７０６と、を含んでもよい。
【００６７】
携帯電話７００は、無線基地局への無線リンクを介して移動通信ネットワークに接続するように適合される。従って、携帯電話７００のユーザは、音声通話、データ通話、映像通話、およびファックス送信のような、従来の回線交換通信サービスと同様に、電子メッセージ、インターネット閲覧、電子商取引などのようなパケットに基づくサービスを利用することが可能である。この目的を達成するために、携帯電話は、例えば、移動通信のためのグローバルシステム（ＧＳＭ：Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  ｃｏｍｍｕｎｉｃａｔｉｏｎｓ）、汎用パケット無線サービス（ＧＰＲＳ：Ｇｅｎｅｒａｌ  Ｐａｃｋｅｔ  Ｒａｄｉｏ  Ｓｅｒｖｉｃｅ）、ＥＤＧＥ（Ｅｎｈａｎｃｅｄ  Ｄａｔａ  ｒａｔｅ  ｆｏｒ  ＧＳＭ
Ｅｖｏｌｕｔｉｏｎ）、ユニバーサル移動通信システム（ＵＭＴＳ：Ｕｎｉｖｅｒｓａｌ  Ｍｏｂｉｌｅ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｓｙｓｔｅｍ)、またはＵＭＴＳ  ＬＴＥ（ＵＭＴＳ  Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ）のような移動通信規格に則している。
【００６８】
様々な実施形態を参照しながら本発明を解説してきた。しかし、当業者には、本発明の範囲に依然として収まる、記載された実施形態に対する数多くの変形が明らかであろう。例えば、本明細書に記載される方法の実施形態は、ある一定の順序に従って実行される本方法のステップを通じて、本方法を記載している。しかし、これらのイベントのシーケンスが、本発明の範囲から逸脱することなく、他の順序で行なわれることも可能であることが認識される。さらに、幾つかの方法のステップは、連続して行なわれるように記載されているが、並行して行なわれてもよい。同様に、本発明の実施形態の記載では、特定のユニットへの機能ブロックの配分は、決して、本発明を制限するものではないことに注意されたい。反対に、これらの配分は単なる例である。１つのユニットとして本明細書に記載される機能ブロックは、２つ以上のユニットに分けられてもよい。同様に、２つ以上のユニットとして実現されるものとして本明細書に記載されている機能ブロックは、本発明の範囲を逸脱することなく、単一ユニットとして実現されてもよい。
【００６９】
従って、当然のことながら、記載される実施形態の限定は、単に例示することを目的としており、決して制限を目的とするものではない。反対に、本発明は、添付の特許請求の範囲と、その全妥当な均等物によってのみ制限されるものと解釈される。
【図１】
0005498378.tif 000002
【図２】
0005498378.tif 000003
【図３Ａ】
0005498378.tif 000004
【図３Ｂ】
0005498378.tif 000005
【図４Ａ】
0005498378.tif 000006
【図４Ｂ】
0005498378.tif 000007
【図５】
0005498378.tif 000008
【図６】
0005498378.tif 000009
【図７】
0005498378.tif 000010