JP5225010B2 - プロセッサ間通信方法、マルチプロセッサシステム及びプロセッサ。 - Google Patents

プロセッサ間通信方法、マルチプロセッサシステム及びプロセッサ。 Download PDF

Info

Publication number
JP5225010B2
JP5225010B2 JP2008265180A JP2008265180A JP5225010B2 JP 5225010 B2 JP5225010 B2 JP 5225010B2 JP 2008265180 A JP2008265180 A JP 2008265180A JP 2008265180 A JP2008265180 A JP 2008265180A JP 5225010 B2 JP5225010 B2 JP 5225010B2
Authority
JP
Japan
Prior art keywords
area
processor
data
shared memory
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008265180A
Other languages
English (en)
Other versions
JP2010097252A (ja
Inventor
哲男 井戸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2008265180A priority Critical patent/JP5225010B2/ja
Priority to US12/577,594 priority patent/US8504781B2/en
Publication of JP2010097252A publication Critical patent/JP2010097252A/ja
Application granted granted Critical
Publication of JP5225010B2 publication Critical patent/JP5225010B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Multi Processors (AREA)

Description

本発明は、マルチプロセッサ環境におけるプロセッサ間通信技術に関する。
通信処理の高速化、負荷低減のため、通信処理をメインプロセッサと別プロセッサで実施する通信オフロード技術がある。このようなマルチプロセッサ処理では、プロセッサ間に共有メモリを配置し、共有メモリを介してプロセッサ間の通信が行われる。
例えば、アプリケーションが動作するメインプロセッサ側のメインシステムと、通信オフロード用プロセッサ側のサブシステムとの間に共有メモリを配置する。そして、メインプロセッサが転送データを共有メモリに書き込み、通信オフロード用プロセッサに転送データを書き込んだメモリ領域のアドレス情報をプロセッサ間通信により渡す。通信オフロード用プロセッサは、渡されたアドレス情報を用いて転送データを読出し、外部への送受信処理を実施する。
ここで、プロセッサ間で共有メモリを介してデータ転送を行う場合、各プロセッサが備えるキャッシュメモリにキャッシングされているデータを適切に処理しなければならない。キャッシュメモリにキャッシングされているデータの共有メモリへの書き込みを適切に処理できないと、共有メモリのデータが上書きされてしまう可能性があり、システムが正常に動作できなくなってしまうからである。
例えば、固定長(例えば、32バイト長)のキャッシュラインを複数持つ構成のキャッシュメモリを考える。このようなキャッシュメモリでは、各プロセッサが備えるキャッシュメモリにキャッシングしているデータの共有メモリへの書き込みの際には、書き込むキャッシュライン上に他データが存在しないように制御しなければならない。これは、キャッシュの書き込み操作がキャッシュライン単位で行われるためであり、これを守らなければ、同一キャッシュライン上に存在する他データ領域を上書きしてしまうことになる。この上書きを防止するためには、アプリケーションが共有メモリの転送データ書き込み領域をキャッシュメモリのキャッシュラインにアライメントされたデータを用意するか、アライメントされた領域にコピーする処理が必要である。このような処理は複雑となってしまう。また、そのような処理を持たない従来から使用しているアプリケーションをそのままではマルチプロセッサ環境に適用できない。
また、プロセッサ間で共有メモリを介してデータ転送を行う場合に、キャッシュ機能をオフにすることも考えられる。
しかしながら、キャッシュ機能を完全にオフにした場合には、システムとしての性能が低下してしまい、通信スループットが大きく低下する。
マルチプロセッサ環境で共有メモリを使用してデータ転送する際の技術として、特許文献1、2等がある。
特許文献1は、他プロセッサに属するデータ領域を参照する場合には、自プロセッサの備えるキャッシュメモリにキャッシングされた参照領域に対応するデータを無効化する操作を行う。また、特許文献2は、システム上にキャッシュメモリのコヒーレンス機能を備えることで自動的に各プロセッサの備えるキャッシュメモリの内容を同期させる。
特開平2−15635 特開2000−194680
上述のように、共有メモリのデータの上書きを防止するためには複雑な処理が必要となってしまう。また、マルチプロセッサシステムでない従来から使用しているアプリケーションをそのままではマルチプロセッサ環境に適用できない可能性もある。
また、キャッシュ機能を利用しない方法ではシステムとしての性能を低下させてしまう。
本発明は、アプリケーションにおいて転送データ領域のキャッシュラインへのアライメントを意識することなく、当該アプリケーションをマルチプロセッサ環境に適用可能にすることを目的とする。
本発明のプロセッサ間通信方法は、第1のキャッシュメモリを備えた第1のプロセッサと第2のキャッシュメモリを備えた第2のプロセッサとの間で共有メモリを介してデータを送受信するプロセッサ間通信方法であって、前記第1のプロセッサは、前記第2のプロセッサとの間で転送するデータを前記共有メモリに記憶する転送データ領域を、前記第1のキャッシュメモリの1キャッシュラインの全てを満たす第1領域と、満たさない第2領域とに分類し、前記第1のキャッシュメモリのキャッシュラインとアライメントがとれている前記共有メモリの分割データ領域に、前記第2領域のデータをコピーし、前記第2のプロセッサは、前記第1領域のデータと前記分割データ領域のデータを前記第1のプロセッサからのデータとして処理することを特徴とする。
また、第1のキャッシュメモリを備えた第1のプロセッサと第2のキャッシュメモリを備えた第2のプロセッサとの間で共有メモリを介してデータを送受信するプロセッサ間通信方法であって、前記第1のプロセッサは、前記第2のプロセッサとの間で転送するデータを前記共有メモリに記憶する転送データ領域を、前記第1のキャッシュメモリの1キャッシュラインの全てを満たす第1領域と、満たさない第2領域とに分類し、前記第1のキャッシュメモリのキャッシュラインとアライメントがとれている分割データ領域を前記共有メモリに確保し、前記第2のプロセッサは、前記第1のプロセッサとの間で転送するデータを前記共有メモリの前記第1領域と前記分割データ領域に書き込み、前記第1のプロセッサは、前記共有メモリの前記第1領域と前記分割データ領域に書き込まれたデータを、前記第2のプロセッサからのデータとして処理することを特徴とする。
本発明によれば、マルチプロセッサシステムでないシステムのアプリケーションを流用できる。
<実施形態1>
本発明の一実施形態として、TCP/IP以下の下位層の通信処理を通信オフロード用プロセッサで処理し、アプリケーション用プロセッサの負担を軽減する通信オフロードシステムについて説明する。
本実施形態のシステム構成例を図1に示す。
本実施形態のシステムは、外部の通信装置2と有線LAN(または無線LAN)によって接続し、通信装置2とTCP/IPパケット通信が可能な通信装置1である。なお、TCP/IPは、Transmission Control Protocol/Internet Protocol略である。
通信装置1は、アプリケーション用プロセッサ101と通信オフロード用プロセッサとにより構成されるマルチプロセッサシステムである。以下、通信装置1の構成要素を有する。
アプリケーション用プロセッサ101は、SMB(Server Message Block)やメールアプリケーションなどを処理するために使用する第1のプロセッサである。アプリケーション用プロセッサ101は、通信装置1のメインプロセッサとして機能する。通信オフロード用プロセッサ102は、TCP/IPや通信ドライバなどを処理するために使用する第2のプロセッサである。通信オフロード用プロセッサ102は、通信装置1のサブプロセッサとして機能する。つまり、通信オフロード用プロセッサ102がTCP/IP以下の下位層の通信処理を担うことにより、アプリケーション用プロセッサ101の付加を軽減する。共有メモリ103は、アプリケーション用プロセッサ101と通信オフロード用プロセッサ102と両方から参照および書き込みが可能なメモリである。キャッシュメモリ104は、アプリケーション用プロセッサ101が備える第1のキャッシュメモリであり、32バイト長のキャッシュラインを複数備える。例えば、キャッシュメモリ104の全容量は1MBとする。アプリケーション用プロセッサ101は、キャッシュメモリ104に書き込み、読出しを行うことにより、共有メモリ103への書き込み、読出しを行うことができる。キャッシュメモリ105は、通信オフロード用プロセッサ102が備える第2のキャッシュメモリであり、32バイト長のキャッシュラインを複数備える。例えば、キャッシュメモリ105の全容量は1MBとする。通信オフロード用プロセッサ102は、キャッシュメモリ105に書き込み、読出しを行うことにより、共有メモリ103への書き込み、読出しを行うことができる。キャッシュメモリ104、105を介して共有メモリ103への書き込み、読出しを行う場合には、共有メモリ103で使用する領域を対応する領域がキャッシュメモリ104、105にも確保して行われる。つまり、キャッシュメモリ104、105と共有メモリ103には、同じ領域が確保され、プロセッサがキャッシュメモリの所定領域に書き込んだデータが、共有メモリの対応する領域に書き込まれる。読出しの場合は、共有メモリの所定領域のデータを読み出すと、キャッシュメモリの対応する領域に読み出したデータを書込み、該データをプロセッサが処理することになる。制御回路106は、通信オフロード用プロセッサ102への割り込み信号およびアプリケーション用プロセッサ101への割り込み信号を制御する。ユーザインタフェイス107は、ユーザ操作および結果出力(表示等)を行うインタフェイスである。通信インタフェイス108は、有線LAN(または無線LAN)によるデータ送受信を行う。
ここで、アプリケーション用プロセッサ101と通信オフロード用プロセッサ102は個別のOS(オペレーションシステム)で動作し、それぞれのOSは種類が同じであっても異なっていてもよい。アプリケーション用プロセッサ101側には、一般的なBSDソケットAPIが実装され、ソケットの実体は通信オフロード用プロセッサ102側に実装されている。後述の各種処理は、各プロセッサのOSの処理に基いて実行される。しかしながら、後述の各種処理を実行するハード構成(手段)を各プロセッサ内に設けてもよい。例えば、図2、図3の処理を行う場合は、図2、図3の各ステップを実行するハード構成(手段)を各プロセッサ内に設けてもよい。
共有メモリ103は、キャッシュ領域と非キャッシュ領域に分けることができる。説明を簡単にするために、ここではアプリケーション用プロセッサ101と通信オフロード用プロセッサ102から見たキャッシュ領域と非キャッシュ領域の配置とは同じになるように設定されている。
また、アプリケーション用プロセッサ101は、通信オフロード用プロセッサ102に対して割り込み信号を送信することができる。同様に、通信オフロード用プロセッサ102は、アプリケーション用プロセッサ101に対して割り込み信号を送信することができる。
割り込み信号は直接相手のプロセッサに送信できるように接続しても良いし、途中に割り込み信号を中継する割り込み制御回路106を置いても良い。
本実施形態の処理シーケンスを図2に示す。
以下は、ユーザが通信装置1のユーザインタフェイス107を操作して通信装置2へデータ転送する場合の処理である。以下、アプリケーション用プロセッサ101による共有メモリ103へのデータ書き込み、共有メモリ103からのデータ読出しは、キャッシュメモリ104を介して行われる。また、通信オフロード用プロセッサ102による共有メモリ103へのデータ書き込み、共有メモリ103からのデータ読出しは、キャッシュメモリ105を介して行われる。つまり、共有メモリ103にデータを書き込む場合は、キャッシュメモリ104、105の内容が、共有メモリ103に反映される。また、共有メモリ103からデータを読み出す場合は、共有メモリ103の内容が、キャッシュメモリ104、105に反映される。
転送データ準備ステップS201において、アプリケーション用プロセッサ101は、アプリケーションレイヤにおいて送信データを共有メモリ103上に準備する。送信データが準備された領域を転送データ領域とする。SENDコールステップS202において、アプリケーション用プロセッサ101は、転送データ領域のポインタを引数の一つとし、ソケットAPIの一つであるSENDをコールする。付加情報準備ステップS203において、アプリケーション用プロセッサ101は、付加情報領域を共有メモリ103上の非キャッシュ領域に確保する。アプリケーション用プロセッサ101は、この付加情報領域を、SENDのその他の引数情報を通信オフロード用プロセッサ102に渡すための引数情報領域、および通信オフロード用プロセッサ102から返り値を受け取るための返り値領域として使う。
アライメント解析ステップS204において、アプリケーション用プロセッサ101は、共有メモリ103上の転送データが置かれている転送データ領域とキャッシュメモリ104のキャッシュラインとをアライメント解析する。そして、転送データ領域をキャッシュラインを全て満たす領域A(第1領域)と満たさない領域B(第2領域)とに分類する(図4を参照)。つまり、キャッシュライン毎に、キャッシュラインの先頭からデータが記憶されているか、キャッシュラインの途中からデータが記憶されているかを判定する。そして、1キャッシュラインの全てが転送データ領域となる領域を領域Aとし、1キャッシュラインの一部だけが転送データ領域となる領域を領域Bとして分類する(図4を参照)。図4では、領域Bは、転送データ領域の先頭を含む領域と、最後を含む領域の両方である。しかしながら、転送データ領域の先頭が、キャッシュラインの先頭と一致する場合もあるし、転送データ領域の最後が、キャッシュラインの最後と一致する場合もある。これらの場合には、領域Bは転送データ領域の先頭を含む領域か、最後を含む領域のいずれか、もしくは、領域Bは無いことになる。
分割データコピーステップS205において、アプリケーション用プロセッサ101は、領域Bのデータを、共有メモリ103上の領域であってキャッシュメモリ104のキャッシュラインとアライメントがとれている分割データ領域にメモリコピーする。(図4、図5を参照)
転送情報書き込みステップS206において、アプリケーション用プロセッサ101は、共有メモリ103内の非キャッシュ領域である転送情報領域に領域Aと前記分割データ領域および付加情報領域を特定することができる転送情報を書き込む。キャッシュ追い出しステップS207において、アプリケーション用プロセッサ101は、キャッシュメモリ104から領域Aと分割データ領域のデータを共有メモリ103の転送データ領域に書き込む。通知ステップS208において、アプリケーション用プロセッサ101は、通信オフロード用プロセッサ102へ割り込み信号を発行し、転送準備が完了したことを通知する。ブロッキングステップS209において、アプリケーション用プロセッサ101は、SENDをコールしたタスクをブロッキングする。
ここで、通知ステップS208は、割り込み制御回路106による割り込み信号の発行で実現できることを説明したが、他の方法でも実現できる。例えば、アプリケーション用プロセッサから書き込み可能であり、通信オフロード用プロセッサから参照可能であるレジスタを用いても実現できる。この場合、アプリケーション用プロセッサが該レジスタを所定値に変更し、通信オフロード用プロセッサが該レジスタの値が所定値に変更されたことを検知するようにすればよい。また、通知ステップS208は、アプリケーション用プロセッサが共有メモリ103の所定領域を所定値に変更し、通信オフロード用プロセッサが該所定領域が所定値に変更されたことを検知する処理でも実現できる。
通信オフロード用プロセッサ102は、割り込み処理ステップS210において、割り込み信号によりアプリケーション用プロセッサ101が転送データの送信準備を完了したことを検知する。転送情報読み出しステップS211において、通信オフロード用プロセッサ102は、転送情報領域から転送情報を読み出す。キャッシュ無効化ステップS212において、通信オフロード用プロセッサ102は、キャッシュメモリ105の転送情報により特定される領域Aと分割データ領域を無効化する。SENDMSGコールステップS213において、通信オフロード用プロセッサ102は、領域Aと分割データ領域とを転送データ、付加情報領域をその他の引数として、ソケットAPIの一つであるSENDMSGをコールして送信処理を実行する。
ここで、SENDMSGは、分割された領域のデータを送信することができるソケットのAPIの一つである。また、SENDMSGの代わりにSENDを利用することもできる。SENDを利用するためには、一度、別領域に領域Aと分割データ領域のデータをコピーして一つの連続したデータ領域とした後で、SENDを実施する。
SENDMSG(またはSEND)がコールされると、通信オフロード用プロセッサ102は、TCP/IP処理S214および有線/無線LANのドライバ処理S215を実施し、通信装置2に対してデータ送信S216を行う。つまり、SENDMSG(またはSEND)がコールされると、通信オフロード用プロセッサ102は、共有メモリ103から転送データを読出してキャッシュメモリ105に書き込む。そして、キャッシュメモリ105に書き込んだ領域Aのデータと、分割データ領域のデータとを、転送データとして送信する。また、通信オフロード用プロセッサ102は、SENDMSG(またはSEND)が処理された後の返り値を付加情報領域の返り値領域に書き込む(S217)。
S218において通信オフロード用プロセッサ102は、アプリケーション用プロセッサ101に割り込み信号を発行して送信処理完了を通知する。
通信オフロード用プロセッサ102からの割り込み信号(S218)により、アプリケーション用プロセッサ101は、SENDをコールしたタスクのブロッキングを解除する(S219)。そして、アプリケーション用プロセッサ101は、S220においてアプリケーションレイヤに返り値を渡す。
上記処理により、共有メモリ103を介したプロセッサ間通信を利用した、マルチプロセッサ環境における好適な通信オフロードを実現することができる。
また、上記処理において、SENDの引数情報領域と返り値領域を共有メモリ103上のキャッシュ領域に確保し、この領域も含めて転送データ領域としても良い。この場合、通信オフロード用プロセッサ102が返り値を書き込み、キャッシングしている返り値領域のデータを共有メモリ103に書き込む処理を行う。そして、アプリケーション用プロセッサ101が返り値領域のデータを参照する前に、キャッシングしている返り値領域のデータを無効化する処理を行うことで実現できる。
次に、ユーザが通信装置1のユーザインタフェイス107を操作して通信装置2からデータ受信する場合の処理を説明する。
受信データ領域準備ステップS301において、アプリケーション用プロセッサ101は、アプリケーションレイヤにおいてデータを受信するための受信データ領域(転送データ領域)を共有メモリ103上に準備する。RECVコールステップS302において、アプリケーション用プロセッサ101は、受信データ領域のポインタを引数の一つとし、ソケットAPIの一つであるRECVをコールする。付加情報準備ステップS303において、アプリケーション用プロセッサ101は、付加情報領域を共有メモリ103上の非キャッシュ領域に確保する。アプリケーション用プロセッサ101は、この付加情報領域をRECVのその他の引数情報を通信オフロード用プロセッサ102に渡すための引数情報領域、および通信オフロード用プロセッサ102から返り値を受け取るための返り値領域として使用する。
アライメント解析ステップS304において、アプリケーション用プロセッサ101は、共有メモリ103上の受信データ領域とキャッシュメモリ104のキャッシュラインとをアライメント解析する。そして、受信データ領域をキャッシュラインを全て満たす(領域A)と満たさない領域Bとに分類する(図4を参照)。つまり、キャッシュライン毎に、キャッシュラインの先頭から受信データ領域として確保したか、キャッシュラインの途中から受信データ領域として確保したか、を判定する。そして、キャッシュラインの全てが受信データ領域となる領域を領域Aとし、キャッシュラインの一部だけが受信データ領域となる領域を領域Bとして分類する(図4を参照)。分割データ領域確保ステップS305において、アプリケーション用プロセッサ101は、領域Bのデータをコピーする分割データ領域を、共有メモリ103上の領域でありキャッシュメモリ104のキャッシュラインとアライメントがとれている領域に確保する。(図4、図5を参照)
転送情報書き込みステップS306において、アプリケーション用プロセッサ101は、共有メモリ103内の非キャッシュ領域である転送情報領域に領域Aと分割データ領域および付加情報領域を特定することができる転送情報を書き込む。キャッシュ追い出しステップS307において、アプリケーション用プロセッサ101は、キャッシュメモリ104の領域Aと分割データ領域のキャッシングしているデータを共有メモリ103へ書き戻す(または、キャッシングしているデータを破棄する)。第1の通知ステップS308において、アプリケーション用プロセッサ101は、通信オフロード用プロセッサ102へ割り込み信号を発行する。ブロッキングステップS309において、アプリケーション用プロセッサ101は、RECVをコールしたタスクをブロッキングする。
ここで、第1の通知ステップS308は、割り込み制御回路106による割り込み信号の発行で実現できることを説明したが、他の処理でも実現できる。例えば、アプリケーション用プロセッサから書き込み可能であり、通信オフロード用プロセッサから参照可能であるレジスタを用いて実現できる。この場合、アプリケーション用プロセッサが該レジスタを所定値に変更し、通信オフロード用プロセッサがレジスタの値が所定値に変更されたことを検知するよにする。
また、第1の通知ステップS308は、アプリケーション用プロセッサが共有メモリ103の所定領域を所定値に変更し、通信オフロード用プロセッサが該所定領域が所定値に変更されたことを検知する処理でも実現できる。
次に、割り込み処理ステップS310において、通信オフロード用プロセッサ102は、割り込み信号によりアプリケーション用プロセッサ101の受信準備が完了したことを検知する。転送情報読み出しステップS311において、通信オフロード用プロセッサ102は、転送情報領域から転送情報を読み出す。キャッシュ無効化ステップS312において、通信オフロード用プロセッサ102は、キャッシュメモリ105の転送情報により特定される領域Aと分割データ領域を無効化する。RECVMSGコールステップS313において、通信オフロード用プロセッサ102は、領域Aと分割データ領域とを受信データ領域、付加情報領域をその他の引数として、ソケットAPIの一つであるRECVMSGをコールして受信処理を実行する。
ここで、RECVMSGは分割された領域へデータを受信することができるソケットのAPIの一つである。また、RECVMSGの代わりにRECVを利用することもできる。RECVを利用するためには、一度、1つの連続したデータ領域にRECVによってデータ受信し、領域Aと分割データ領域にその受信データをコピーして実施する。
RECVMSG(またはRECV)がコールされると、通信オフロード用プロセッサ102はTCP/IP処理S314および有線/無線LANのドライバ処理S315を実施し、通信装置2からのデータ受信処理S316を行う。このデータ受信処理S316において受信されたデータは、キャッシュメモリ105の受信データ領域(転送データ領域)に記憶される。また、領域Bのデータは、分割データ領域にコピーされる。そして、キャッシュメモリ105の受信データ領域(転送データ領域)と分割データ領域のデータは共有メモリ103に書き込まれる。
また、通信オフロード用プロセッサ102は、RECVMSG(またはRECV)が処理された後の返り値を付加情報領域の返り値領域に書き込む(S317)。
通信オフロード用プロセッサ102は、第2の通知ステップS318を実行して割り込み信号を発行してアプリケーション用プロセッサ101に受信処理完了を通知する。該割り込み信号により、アプリケーション用プロセッサ101は、RECVをコールしたタスクのブロッキングを解除する(S319)。また、転送データ領域と分割データ領域に書き込まれている受信データをキャッシュメモリ104にコピーし(S320)、キャッシュメモリ104にコピーした分割データ領域のデータを領域Bにコピーする。そして、キャッシュメモリ104の受信データ領域(転送データ領域)にデータを、受信データとし、この受信データと返り値をアプリケーションレイヤに渡す(S321)。
なお、キャッシュメモリ104にコピーした分割データ領域のデータを領域Bにコピーし、受信データ領域(転送データ領域)のデータを受信データとしたが、領域Aと分割データ領域のデータを受信データとしてアプリケーションレイヤに渡してもよい。
ここで、第2の通知ステップS318は、割り込み制御回路106による割り込み信号の発行で実現できることを説明したが、他の処理でも実現できる。例えば、通信オフロード用プロセッサから書き込み可能でり、通信アプリケーション用プロセッサから参照可能であるレジスタを用いても実現できる。この場合、通信オフロード用プロセッサが該レジスタを所定値に変更し、アプリケーション用プロセッサが該レジスタの値が所定値に変更されたことを検知するようにすればよい。
また、第2の通知ステップS318は、通信オフロード用プロセッサが共有メモリ103の所定領域を所定値に変更し、アプリケーション用プロセッサが該所定領域が所定値に変更されたことを検知する処理でも実現できる。
上記処理により、共有メモリ103を介したプロセッサ間通信を利用した、マルチプロセッサ環境における好適な通信オフロードを実現することができる。
また、上記処理において、RECVの引数情報領域と返り値領域を共有メモリ103上のキャッシュ領域に確保し、この領域も含めてプロセッサ間通信で転送しても良い。この場合、通信オフロード用プロセッサ102において返り値を書き込んだ後、キャッシングしている返り値領域のデータを共有メモリ103に書き戻す処理を行う。そして、アプリケーション用プロセッサ101において返り値領域のデータを参照する前に、キャッシングしている返り値領域のデータを無効化する処理を行うことで実現できる。
以上のように、比較的簡単な処理により、共有メモリのデータが他のアプリケーションに上書きされ、不具合を起こすことを回避できる。また、キャッシュ機能を完全にオフしないため、通信スループットの低下を軽減できる。また、アプリケーションで転送データ領域のキャッシュラインへのアライメント処理を実施する必要がなくなるので、従来から使用しているアプリケーションを継続して使用することができる。
また、キャッシュコヒーレンシのような高級機能を必要としないので、安価なプロセッサを用いて通信サブシステムを実現することができる。また、転送データの全てをコピーする必要がないので、プロセッサ間通信処理に要する時間を低減することができる。
本実施形態のシステム構成例 実施形態1の処理シーケンス 実施形態2の処理シーケンス アライメント解析と分割データコピーの図解 実施形態の共有メモリの領域構成例
符号の説明
1 通信装置
2 外部の通信装置
101 アプリケーション用プロセッサ
102 通信オフロード用プロセッサ
103 共有メモリ
104 アプリケーション用プロセッサのキャッシュメモリ
105 通信オフロード用プロセッサのキャッシュメモリ
106 割り込み信号の制御回路
107 ユーザインタフェイス
108 通信インタフェイス

Claims (20)

  1. 第1のキャッシュメモリを備えた第1のプロセッサと第2のキャッシュメモリを備えた第2のプロセッサとの間で共有メモリを介して通信するプロセッサ間通信方法であって、
    前記第1のプロセッサは、
    前記第2のプロセッサとの間で転送するデータを記憶する前記共有メモリにおける転送データ領域を、前記第1のキャッシュメモリの1キャッシュラインの全てが当該データで満たされる第1領域と、満たされない第2領域とに分類し、
    前記第1のキャッシュメモリの1キャッシュライン分が確保された前記共有メモリにおける分割データ領域に、前記第2領域のデータがコピーされるようにし、
    前記第2のプロセッサは、
    前記分割データ領域のデータを前記第2のデータ領域のデータとして扱い、前記第1のデータ領域のデータと共に、前記第1のプロセッサからのデータとして処理を行うことを特徴とするプロセッサ間通信方法。
  2. 前記第1のプロセッサは、前記共有メモリと前記第1のキャッシュメモリのキャッシュラインとを解析し、前記転送データ領域を前記第1領域と前記第2領域に分類することを特徴とする請求項1に記載のプロセッサ間通信方法。
  3. 前記第1のプロセッサは、前記共有メモリの所定領域に、前記第1領域と前記分割データ領域とを特定するための情報を書き込み、
    前記第2のプロセッサは、前記情報に基づいて、前記第1領域のデータと前記分割データ領域のデータに対応する前記第2のキャッシュメモリの領域を無効化することを特徴とする請求項1又は請求項2に記載のプロセッサ間通信方法。
  4. 前記所定領域は、前記第1のプロセッサにおける非キャッシュ領域であることを特徴とする請求項3に記載のプロセッサ間通信方法。
  5. 前記第2領域は前記転送データ領域の先頭を含む領域、最後を含む領域のどちらかまたは両方であることを特徴とする請求項1乃至請求項4の何れか1項に記載のプロセッサ間通信方法。
  6. 前記分割データ領域への前記第2領域のデータのコピーの後に、前記第1のプロセッサは、前記共有メモリの前記第1領域と前記分割データ領域に対応する前記第1のキャッシュメモリの領域のデータを前記共有メモリへ追い出すことを特徴とする請求項1乃至請求項5の何れか1項に記載のプロセッサ間通信方法。
  7. 前記第2のプロセッサは、前記第1のプロセッサから転送準備の完了の通知を受けてから、前記共有メモリの読出しを行うことを特徴とする請求項1乃至請求項6の何れか1項に記載のプロセッサ間通信方法。
  8. 前記通知は、前記第2のプロセッサに割り込み信号を送ることにより行われることを特徴とする請求項7に記載のプロセッサ間通信方法。
  9. 前記通知は、前記第1のプロセッサから書き込み可能であり、前記第2のプロセッサから参照可能であるレジスタを前記第1のプロセッサが所定値に変更し、
    前記第2のプロセッサが、前記レジスタが所定値に変更されたことを検知することにより行われることを特徴とする請求項7に記載のプロセッサ間通信方法。
  10. 前記通知は、前記第1のプロセッサが、前記共有メモリの特定の領域を所定値に変更し、
    前記第2のプロセッサが、前記共有メモリの前記特定の領域が前記所定値に変更されたことを検知することにより行われることを特徴とする請求項7に記載のプロセッサ間通信方法。
  11. 第1のキャッシュメモリを備えた第1のプロセッサと第2のキャッシュメモリを備えた第2のプロセッサとの間で共有メモリを介して通信するプロセッサ間通信方法であって、
    前記第1のプロセッサは、
    前記第2のプロセッサとの間で転送するデータを記憶する前記共有メモリにおける転送データ領域を、前記第1のキャッシュメモリの1キャッシュラインの全てが当該データで満たされる第1領域と、満たされない第2領域とに分類し、
    前記第1のキャッシュメモリの1キャッシュライン分が確保された分割データ領域を前記共有メモリに確保し、
    前記第2のプロセッサは、
    前記第1のプロセッサとの間で転送するデータを前記共有メモリにおける前記第1領域と前記分割データ領域に書き込まれるようにし、
    前記第1のプロセッサは、
    前記分割データ領域のデータを前記第2のデータ領域のデータとして扱い、前記第1のデータ領域のデータと共に、前記第2のプロセッサからのデータとして処理を行うことを特徴とするプロセッサ間通信方法。
  12. 前記第1のプロセッサが読み出した前記共有メモリの前記分割データ領域のデータを、前記共有メモリの第2領域に対応する領域にコピーし、前記共有メモリの第1領域と第2領域のデータを前記第2のプロセッサからのデータとして処理することを特徴とする請求項11に記載のプロセッサ間通信方法。
  13. 前記第1のプロセッサは、前記共有メモリと前記第1のキャッシュメモリのキャッシュラインとを解析し、前記転送データ領域を前記第1領域と前記第2領域に分類することを特徴とする請求項12に記載のプロセッサ間通信方法。
  14. 前記第1のプロセッサは、前記分割データ領域を確保した後に、前記共有メモリの第1領域と分割データ領域に対応する前記第1のキャッシュメモリの領域のデータを前記共有メモリに追い出すか、無効化することを特徴とする請求項11乃至請求項13の何れか1項に記載のプロセッサ間通信方法。
  15. 前記第1のプロセッサは、前記共有メモリの所定領域に、前記第1領域と前記分割データ領域とを特定するための情報を書き込み、
    前記第2のプロセッサは、前記情報に基いて、前記共有メモリにデータを書き込むことを特徴とする請求項11乃至請求項14の何れか1項に記載のプロセッサ間通信方法。
  16. 前記第2のプロセッサは、他の通信装置からのデータ受信処理を行う前に、前記共有メモリの第1領域と分割データ領域に対応する前記第2のキャッシュメモリの領域を無効化することを特徴とする請求項15に記載のプロセッサ間通信方法。
  17. 前記所定領域は、前記第1のプロセッサにおける非キャッシュ領域であることを特徴とする請求項15に記載のプロセッサ間通信方法。
  18. 前記第2領域は前記転送データ領域の先頭を含む領域、最後を含む領域のどちらかまたは両方であることを特徴とする請求項11乃至請求項17の何れか1項に記載のプロセッサ間通信方法。
  19. 第1のキャッシュメモリを備えた第1のプロセッサと第2のキャッシュメモリを備えた第2のプロセッサとの間で共有メモリを介して通信するマルチプロセッサシステムであって、
    前記第1のプロセッサは、
    前記第2のプロセッサとの間で転送するデータを記憶する前記共有メモリにおける転送データ領域を、前記第1のキャッシュメモリの1キャッシュラインの全てが当該データを満たされる第1領域と、満たされない第2領域とに分類する分類手段と、
    前記第1のキャッシュメモリの1キャッシュライン分が確保された前記共有メモリにおける分割データ領域に、前記第2領域のデータがコピーされるようにするコピー手段と、を有し、
    前記第2のプロセッサは、
    前記分割データ領域のデータを前記第2のデータ領域のデータとして扱い、前記第1のデータ領域のデータと共に、前記第1のプロセッサからのデータとして処理する処理手段とを有することを特徴とするマルチプロセッサシステム。
  20. 第1のキャッシュメモリを備えた第1のプロセッサと第2のキャッシュメモリを備えた第2のプロセッサとの間で共有メモリを介して通信するマルチプロセッサシステムであって、
    前記第1のプロセッサは、
    前記第2のプロセッサとの間で転送するデータを記憶する前記共有メモリにおける転送データ領域を、前記第1のキャッシュメモリの1キャッシュラインの全てが当該データで満たされる第1領域と、満たされない第2領域とに分類する分類手段と、
    前記第1のキャッシュメモリの1キャッシュライン分が確保された分割データ領域を前記共有メモリに確保する確保手段とを有し、
    前記第2のプロセッサは、
    前記第1のプロセッサとの間で転送するデータを前記共有メモリにおける前記第1領域と前記分割データ領域に書き込まれるようにする書込手段を有し、
    前記第1のプロセッサは、
    前記分割データ領域のデータを前記第2のデータ領域のデータとして扱い、前記第1のデータ領域のデータと共に、前記第2のプロセッサからのデータとして処理を行うことを特徴とするマルチプロセッサシステム。
JP2008265180A 2008-10-14 2008-10-14 プロセッサ間通信方法、マルチプロセッサシステム及びプロセッサ。 Expired - Fee Related JP5225010B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008265180A JP5225010B2 (ja) 2008-10-14 2008-10-14 プロセッサ間通信方法、マルチプロセッサシステム及びプロセッサ。
US12/577,594 US8504781B2 (en) 2008-10-14 2009-10-12 Methods and systems for inter-processor communication under a multiprocessor environment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008265180A JP5225010B2 (ja) 2008-10-14 2008-10-14 プロセッサ間通信方法、マルチプロセッサシステム及びプロセッサ。

Publications (2)

Publication Number Publication Date
JP2010097252A JP2010097252A (ja) 2010-04-30
JP5225010B2 true JP5225010B2 (ja) 2013-07-03

Family

ID=42099938

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008265180A Expired - Fee Related JP5225010B2 (ja) 2008-10-14 2008-10-14 プロセッサ間通信方法、マルチプロセッサシステム及びプロセッサ。

Country Status (2)

Country Link
US (1) US8504781B2 (ja)
JP (1) JP5225010B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9344335B2 (en) * 2011-09-09 2016-05-17 Microsoft Technology Licensing, Llc Network communication and cost awareness
KR102011137B1 (ko) * 2012-12-07 2019-08-14 삼성전자주식회사 데이터 처리 장치와 회로
US9998536B2 (en) 2013-05-29 2018-06-12 Microsoft Technology Licensing, Llc Metered network synchronization
CN105183570A (zh) * 2015-09-22 2015-12-23 上海斐讯数据通信技术有限公司 向核心进程发送大量qinq配置数据的***及其方法
CN109726017B (zh) * 2017-10-30 2023-05-26 阿里巴巴集团控股有限公司 一种应用程序之间共享缓存的方法及装置
US10559057B2 (en) * 2018-09-27 2020-02-11 Intel Corporation Methods and apparatus to emulate graphics processing unit instructions
US11204819B2 (en) 2018-12-21 2021-12-21 Samsung Electronics Co., Ltd. System and method for offloading application functions to a device
EP3941122A4 (en) * 2019-03-11 2022-03-02 Spreadtrum Communications (Shanghai) Co., Ltd. DATA SENDING METHOD, TERMINAL DEVICE, AND STORAGE MEDIA
KR102148448B1 (ko) * 2019-08-08 2020-08-26 삼성전자주식회사 데이터 처리 장치와 회로
CN115119048B (zh) * 2019-08-10 2024-02-23 荣耀终端有限公司 一种视频流处理方法及电子设备
JP7387335B2 (ja) * 2019-08-28 2023-11-28 キヤノン株式会社 通信装置、制御方法およびプログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2778913B2 (ja) * 1994-04-26 1998-07-23 株式会社東芝 マルチプロセッサシステム及びメモリアロケーション方法
JP2953343B2 (ja) 1995-04-29 1999-09-27 日本電気株式会社 分散メモリ型マルチプロセッサのキャッシュ制御システム
JPH11238047A (ja) * 1998-02-20 1999-08-31 Nec Corp 分散共有メモリシステム及びプログラムを記録した機械読み取り可能な記録媒体
JP3858492B2 (ja) 1998-12-28 2006-12-13 株式会社日立製作所 マルチプロセッサシステム
US6971103B2 (en) * 2002-10-15 2005-11-29 Sandbridge Technologies, Inc. Inter-thread communications using shared interrupt register
US8190796B2 (en) * 2004-11-02 2012-05-29 Standard Microsystems Corporation Hardware supported peripheral component memory alignment method
US20070143546A1 (en) * 2005-12-21 2007-06-21 Intel Corporation Partitioned shared cache
US7650471B2 (en) * 2006-01-06 2010-01-19 Hewlett-Packard Development Company, L.P. Head of queue cache for communication interfaces
US8095736B2 (en) * 2008-02-25 2012-01-10 Telefonaktiebolaget Lm Ericsson (Publ) Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures

Also Published As

Publication number Publication date
JP2010097252A (ja) 2010-04-30
US20100095072A1 (en) 2010-04-15
US8504781B2 (en) 2013-08-06

Similar Documents

Publication Publication Date Title
JP5225010B2 (ja) プロセッサ間通信方法、マルチプロセッサシステム及びプロセッサ。
EP3796179A1 (en) System, apparatus and method for processing remote direct memory access operations with a device-attached memory
KR102164223B1 (ko) 메시지 다이제스트들을 계산하기 위한 시스템 및 방법
US8423720B2 (en) Computer system, method, cache controller and computer program for caching I/O requests
CN101178691B (zh) 实施高速缓存一致性的***和方法
TW542958B (en) A method and apparatus for pipelining ordered input/output transactions to coherent memory in a distributed memory, cache coherent, multi-processor system
US20080005484A1 (en) Cache coherency controller management
TW200534110A (en) A method for supporting improved burst transfers on a coherent bus
KR20010101193A (ko) 판독 요청을 원격 처리 노드에 추론적으로 전송하는비정형 메모리 액세스 데이터 처리 시스템
US7089362B2 (en) Cache memory eviction policy for combining write transactions
JP3320312B2 (ja) ディレクトリ・ベースのキャッシュ・コヒーレンス・プロトコルによるマルチプロセッサのための無効バス最適化
US9372798B2 (en) Data processing apparatus having first and second protocol domains, and method for the data processing apparatus
US20080052463A1 (en) Method and apparatus to implement cache-coherent network interfaces
US6842828B2 (en) Methods and arrangements to enhance an upbound path
GB2390710A (en) Data maintenance of a distributed shared memory system
JP2005044342A5 (ja)
JP2006260159A (ja) 情報処理装置、情報処理装置におけるデータ制御方法
EP1739561A1 (fr) Cohérence de cache dans un système multiprocesseurs à mémoire partagée
US6862646B2 (en) Method and apparatus for eliminating the software generated ready-signal to hardware devices that are not part of the memory coherency domain
JP2015128207A (ja) 画像読取装置、画像読取方法及びプログラム
US10318424B2 (en) Information processing device
US7082501B2 (en) Remote node accessing local memory by using distributed shared memory
US6976129B2 (en) Mechanism for handling I/O transactions with known transaction length to coherent memory in a cache coherent multi-node architecture
US6601147B1 (en) Computer system and method for maintaining an integrated shared buffer memory in a group of interconnected hosts
JP2005301714A (ja) マルチcpuシステム、そのデータ転送方法、及びそのプログラム

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100201

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20100630

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110809

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121002

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121203

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130312

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160322

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees