JPWO2010119932A1 - マルチプロセッサシステム、マルチプロセッサシステムにおけるメモリ管理方法及び通信プログラム - Google Patents
マルチプロセッサシステム、マルチプロセッサシステムにおけるメモリ管理方法及び通信プログラム Download PDFInfo
- Publication number
- JPWO2010119932A1 JPWO2010119932A1 JP2011509354A JP2011509354A JPWO2010119932A1 JP WO2010119932 A1 JPWO2010119932 A1 JP WO2010119932A1 JP 2011509354 A JP2011509354 A JP 2011509354A JP 2011509354 A JP2011509354 A JP 2011509354A JP WO2010119932 A1 JPWO2010119932 A1 JP WO2010119932A1
- Authority
- JP
- Japan
- Prior art keywords
- area
- processors
- multiprocessor system
- buffer
- processor
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
複数のプロセッサ101〜10mと、プロセッサ101〜10mに接続された共有メモリ120と、プロセッサ101〜10mに接続されたタイマ130とを有するマルチプロセッサシステム100である。共有メモリ120は、プロセッサ101〜10mの間での通信データを格納するバッファ用領域部と収支カウンタ部を有する。バッファ用領域部は、それぞれがいずれか1つのプロセッサ101〜10mに対応する複数のバッファ用領域を含んでいる。プロセッサ101〜10mは、タイマ130によって通知されるタイミングごとにバッファ用領域を受け渡しする。収支カウンタ部は、受け渡したバッファ用領域の増減を管理する。
Description
本発明は、複数のプロセッサ間で共有メモリを介して通信するマルチプロセッサシステム、マルチプロセッサシステムにおけるメモリ管理方法及びマルチプロセッサシステムで実行可能な通信プログラムに関し、特に、周期処理を行う組込機器に用いるマルチプロセッサシステム、マルチプロセッサシステムにおけるメモリ管理方法及びマルチプロセッサシステムで実行可能な通信プログラムに関する。
携帯電話や音楽・映像のポータブル再生機などに代表されるような民生用の組込機器においても、近年、処理すべきデータ量が増加している。このような組込機器の処理性能向上手段としては、演算器リソース量に応じた処理能力向上が可能なマルチコア技術が用いられることが一般的となりつつある。
組込機器において、マルチコアのプロセッサ間で多量のデータを授受させるにはいずれのプロセッサからもアクセス可能な共有メモリを介してデータを授受させる方式が都合よい。それは、プロセッサ間で扱うデータ量を格納するのに足りる程度の容量を持った共有メモリでは、ソフトウェアの実装次第でプロセッサ間の通信がフレキシブルな形で実現できて製品展開が容易になるためである。また共有メモリによれば、レジスタ等を介したプロセッサ間での通信に比べて単位データ量あたりの実装コストを低く抑えることができるためである。
ただし、複数のプロセッサで共有メモリを介して通信するには、データ領域もしくはそれに付随する管理情報を書き換える際に競合が生じないようにするプロセッサ間での排他制御機構が必要となる。ところが、排他制御機構を実装するには、そのためのハードウェア側での対応が必要であったり、ロック解除の待ち時間が発生したりして、実装コストや処理時間オーバーヘッドの面での欠点がある。またプロセッサ間での通信頻度が高くなるとその時間オーバーヘッドが増加し、システム全体の処理能力に与える影響がより顕著となる。
この明示的な排他制御を回避する手段として、一つのプロセッサに書き換え権を固定する方法が特表2007−503053号公報(特許文献1)(第6頁、図1)に開示されている。この既存の共有メモリを用いるプロセッサ間通信装置は、共有メモリを管理する第1のプロセッサと、第1のプロセッサによって逐次に割り当てられた共有メモリ上のバッファを用いて第1のプロセッサにメッセージ送信する第2のプロセッサと、それらに接続された共有メモリとから構成されている。
このような構成を有するプロセッサ間通信装置は次のように動作する。すなわち、第2のプロセッサから第1のプロセッサへメッセージ送信する必要があるときに、まず、第2のプロセッサはプロセッサ間の通信に用いる空のメッセージ・バッファの確保を第1のプロセッサに要求する。すると、第1のプロセッサは共有メモリ上にメッセージ・バッファを確保してその位置を表すポインタを第2のプロセッサへ通知する。第2のプロセッサはこのポインタ位置にあるバッファへメッセージを格納した後、その旨を第1のプロセッサへ送信する。
さらに、プロセッサ間の通信手段としてリングバッファを用いることで排他制御による時間オーバーヘッドを回避したマルチプロセッサバッファシステムが特開平6−12383号公報(特許文献2)(第12頁、図2)に開示されている。複数のプロセッサと、任意の2つのプロセッサの間に双方向それぞれ一つずつ置かれたリングバッファとから構成されている。第1のプロセッサはリングバッファに通信データを追加するためのポインタを占有して更新する権利を有し、第2のプロセッサはリングバッファから通信データを読み出し済みであることを表すポインタを占有して更新する権利を有する。
このような構成を有するリングバッファを用いるマルチプロセッサバッファシステムは次のように動作する。第1のプロセッサはリングバッファ上のポインタによって指されたアドレスに送信したいデータを書き込む。第2のプロセッサはこれとは別のポインタを持ち、読み出した分だけポインタを先に進める。
これらの動作により、第1のプロセッサから第2のプロセッサへリングバッファを介してデータを送信しつつ、第2のプロセッサが更新したポインタを第1のプロセッサが参照することで以前に送信に使った領域ですでに使用済みの領域を再利用することが可能となる。すなわち、第1のプロセッサから第2のプロセッサにデータを送り、第2のプロセッサから第1のプロセッサに空き領域を返却するという手続きが結果として実現されている。
組込機器において、マルチコアのプロセッサ間で多量のデータを授受させるにはいずれのプロセッサからもアクセス可能な共有メモリを介してデータを授受させる方式が都合よい。それは、プロセッサ間で扱うデータ量を格納するのに足りる程度の容量を持った共有メモリでは、ソフトウェアの実装次第でプロセッサ間の通信がフレキシブルな形で実現できて製品展開が容易になるためである。また共有メモリによれば、レジスタ等を介したプロセッサ間での通信に比べて単位データ量あたりの実装コストを低く抑えることができるためである。
ただし、複数のプロセッサで共有メモリを介して通信するには、データ領域もしくはそれに付随する管理情報を書き換える際に競合が生じないようにするプロセッサ間での排他制御機構が必要となる。ところが、排他制御機構を実装するには、そのためのハードウェア側での対応が必要であったり、ロック解除の待ち時間が発生したりして、実装コストや処理時間オーバーヘッドの面での欠点がある。またプロセッサ間での通信頻度が高くなるとその時間オーバーヘッドが増加し、システム全体の処理能力に与える影響がより顕著となる。
この明示的な排他制御を回避する手段として、一つのプロセッサに書き換え権を固定する方法が特表2007−503053号公報(特許文献1)(第6頁、図1)に開示されている。この既存の共有メモリを用いるプロセッサ間通信装置は、共有メモリを管理する第1のプロセッサと、第1のプロセッサによって逐次に割り当てられた共有メモリ上のバッファを用いて第1のプロセッサにメッセージ送信する第2のプロセッサと、それらに接続された共有メモリとから構成されている。
このような構成を有するプロセッサ間通信装置は次のように動作する。すなわち、第2のプロセッサから第1のプロセッサへメッセージ送信する必要があるときに、まず、第2のプロセッサはプロセッサ間の通信に用いる空のメッセージ・バッファの確保を第1のプロセッサに要求する。すると、第1のプロセッサは共有メモリ上にメッセージ・バッファを確保してその位置を表すポインタを第2のプロセッサへ通知する。第2のプロセッサはこのポインタ位置にあるバッファへメッセージを格納した後、その旨を第1のプロセッサへ送信する。
さらに、プロセッサ間の通信手段としてリングバッファを用いることで排他制御による時間オーバーヘッドを回避したマルチプロセッサバッファシステムが特開平6−12383号公報(特許文献2)(第12頁、図2)に開示されている。複数のプロセッサと、任意の2つのプロセッサの間に双方向それぞれ一つずつ置かれたリングバッファとから構成されている。第1のプロセッサはリングバッファに通信データを追加するためのポインタを占有して更新する権利を有し、第2のプロセッサはリングバッファから通信データを読み出し済みであることを表すポインタを占有して更新する権利を有する。
このような構成を有するリングバッファを用いるマルチプロセッサバッファシステムは次のように動作する。第1のプロセッサはリングバッファ上のポインタによって指されたアドレスに送信したいデータを書き込む。第2のプロセッサはこれとは別のポインタを持ち、読み出した分だけポインタを先に進める。
これらの動作により、第1のプロセッサから第2のプロセッサへリングバッファを介してデータを送信しつつ、第2のプロセッサが更新したポインタを第1のプロセッサが参照することで以前に送信に使った領域ですでに使用済みの領域を再利用することが可能となる。すなわち、第1のプロセッサから第2のプロセッサにデータを送り、第2のプロセッサから第1のプロセッサに空き領域を返却するという手続きが結果として実現されている。
しかし、プロセッサ間で通信が頻繁に発生するシステムに対して、特許文献1及び特許文献2による方法を適用するにはいくつかの問題がある。
第1の問題点は、プロセッサ間の通信における処理時間オーバーヘッドを抑制するための対策が不十分ということである。その理由は、通信データの個数に比例して、もしくはそれ以上に通信処理時間が増加してしまう仕組みをもつためである。
特許文献1において、送信側のプロセッサは通信が発生するたびにバッファ確保要求を受信側のプロセッサへ行う必要があり、この行為にかかる処理時間オーバーヘッドは通信データ数に比例して増加することになる。さらに、送信側のプロセッサではメモリの空き状況を直接自身で管理していないため、一時的にメモリ確保ができない状況であってもそれが直ちにはわからず、領域が確保されるまでデータ要求を繰り返し行わなければならず、これも時間オーバーヘッドとなりうる。
特許文献2においては、すでに別のプロセッサによって通信用に格納されたデータをさらに別のプロセッサへ送信する必要があるときにリングバッファ間で通信データのコピーが発生するためである。たとえば、第1のプロセッサから第2のプロセッサに送信されたメッセージを、さらに第3のプロセッサで受信させるためには、第1のプロセッサと第2のプロセッサの間にあるリングバッファを用いてメッセージを受信した後、第2のプロセッサと第3のプロセッサの間にあるリングバッファへ改めてコピーをする必要がある。
第2の問題点は、複数のプロセッサ間でデータを授受するのに用いる共有メモリの総量を抑制するための対策が不十分ということである。その理由は、システム全体として必要な総共有メモリ量の最大値に比べて、個々のプロセッサ間で必要な共有メモリ量の最大値の和は大きくなってしまう可能性が大きいためである。これは、任意の2つのプロセッサ間ごとに占有する固定量の共有メモリを用意しなければならず、通信量が動的に変化することを考えると個々のプロセッサ間ごとに通信に必要な最大メモリ量を確保する必要があることに起因する。
特許文献1において、プロセッサ毎に受信のための共有メモリがそれぞれ独立に用意される必要があり、特許文献2においても、任意の2つのプロセッサ間で双方向にリングバッファが予め固定的に用意されていることが想定されている。
本発明の目的は、上述した課題を解決するための技術を提供することにあり、プロセッサ間でデータを授受する機能を有するシステムにおいて、プロセッサ間の通信量に比例して通信時間が増加するのを抑えつつ、通信に必要なバッファ量を抑制することにある。
第1の問題点は、プロセッサ間の通信における処理時間オーバーヘッドを抑制するための対策が不十分ということである。その理由は、通信データの個数に比例して、もしくはそれ以上に通信処理時間が増加してしまう仕組みをもつためである。
特許文献1において、送信側のプロセッサは通信が発生するたびにバッファ確保要求を受信側のプロセッサへ行う必要があり、この行為にかかる処理時間オーバーヘッドは通信データ数に比例して増加することになる。さらに、送信側のプロセッサではメモリの空き状況を直接自身で管理していないため、一時的にメモリ確保ができない状況であってもそれが直ちにはわからず、領域が確保されるまでデータ要求を繰り返し行わなければならず、これも時間オーバーヘッドとなりうる。
特許文献2においては、すでに別のプロセッサによって通信用に格納されたデータをさらに別のプロセッサへ送信する必要があるときにリングバッファ間で通信データのコピーが発生するためである。たとえば、第1のプロセッサから第2のプロセッサに送信されたメッセージを、さらに第3のプロセッサで受信させるためには、第1のプロセッサと第2のプロセッサの間にあるリングバッファを用いてメッセージを受信した後、第2のプロセッサと第3のプロセッサの間にあるリングバッファへ改めてコピーをする必要がある。
第2の問題点は、複数のプロセッサ間でデータを授受するのに用いる共有メモリの総量を抑制するための対策が不十分ということである。その理由は、システム全体として必要な総共有メモリ量の最大値に比べて、個々のプロセッサ間で必要な共有メモリ量の最大値の和は大きくなってしまう可能性が大きいためである。これは、任意の2つのプロセッサ間ごとに占有する固定量の共有メモリを用意しなければならず、通信量が動的に変化することを考えると個々のプロセッサ間ごとに通信に必要な最大メモリ量を確保する必要があることに起因する。
特許文献1において、プロセッサ毎に受信のための共有メモリがそれぞれ独立に用意される必要があり、特許文献2においても、任意の2つのプロセッサ間で双方向にリングバッファが予め固定的に用意されていることが想定されている。
本発明の目的は、上述した課題を解決するための技術を提供することにあり、プロセッサ間でデータを授受する機能を有するシステムにおいて、プロセッサ間の通信量に比例して通信時間が増加するのを抑えつつ、通信に必要なバッファ量を抑制することにある。
本発明のマルチプロセッサシステムは、
複数の演算処理手段と、複数の前記演算処理手段に接続された記憶手段と、複数の前記演算処理手段に接続された同期イベント通知手段とを有し、
前記記憶手段は、複数の前記演算処理手段の間での通信データを格納するバッファ用領域部と収支カウンタ部を有し、
前記バッファ用領域部は、それぞれがいずれか1つの前記演算処理手段に対応する複数のバッファ用領域を含んでおり、
前記演算処理手段は、前記同期イベント通知手段によって通知されるタイミングごとに前記バッファ用領域を受け渡し、
前記収支カウンタ部は、受け渡した前記バッファ用領域の増減を管理する。
また、本発明のマルチプロセッサシステムにおけるメモリ管理方法は、
複数のプロセッサ間で交換する通信データを格納するための領域を、予め共有メモリの複数の部分領域に分割し、
分割した前記複数の部分領域を前記プロセッサにそれぞれ割り当て、
所定のタイミングで同時に複数の前記プロセッサ間で前記部分領域を受け渡し、
受け渡した前記部分領域の量をカウンタに保持し、
前記受け渡しの際、前記カウンタの値に満たない場合には、その差分をさらに送信する。
また、本発明のマルチプロセッサシステムで実行可能な通信プログラムは、
互いに通信を行う複数のプロセッサと、複数の前記プロセッサからアクセス可能な共有メモリと、複数の前記プロセッサにイベントを通知するタイマとを有するマルチプロセッサシステムで実行可能な通信プログラムにおいて、
前記通信プログラムは、
前記共有メモリを、任意のある時刻において複数の領域に論理的に分割する処理と、
それぞれの領域をいずれかの前記プロセッサによって管理する処理と、
前記共有メモリのそれぞれの領域に対する管理を、前記イベント通知が発生するごとに前記プロセッサ間で前記領域を受け渡しすることにより行う処理と、
前記領域を受け渡した前後で各プロセッサが管理する前記共有メモリのメモリ量の増減を保持する処理と、
前記イベント通知が発生するごとに、前記領域の管理を前記プロセッサ間で交換して、各プロセッサが管理する各領域の個数配分の偏りを、前記メモリ量の増減を用いて補正する処理とを有する。
複数の演算処理手段と、複数の前記演算処理手段に接続された記憶手段と、複数の前記演算処理手段に接続された同期イベント通知手段とを有し、
前記記憶手段は、複数の前記演算処理手段の間での通信データを格納するバッファ用領域部と収支カウンタ部を有し、
前記バッファ用領域部は、それぞれがいずれか1つの前記演算処理手段に対応する複数のバッファ用領域を含んでおり、
前記演算処理手段は、前記同期イベント通知手段によって通知されるタイミングごとに前記バッファ用領域を受け渡し、
前記収支カウンタ部は、受け渡した前記バッファ用領域の増減を管理する。
また、本発明のマルチプロセッサシステムにおけるメモリ管理方法は、
複数のプロセッサ間で交換する通信データを格納するための領域を、予め共有メモリの複数の部分領域に分割し、
分割した前記複数の部分領域を前記プロセッサにそれぞれ割り当て、
所定のタイミングで同時に複数の前記プロセッサ間で前記部分領域を受け渡し、
受け渡した前記部分領域の量をカウンタに保持し、
前記受け渡しの際、前記カウンタの値に満たない場合には、その差分をさらに送信する。
また、本発明のマルチプロセッサシステムで実行可能な通信プログラムは、
互いに通信を行う複数のプロセッサと、複数の前記プロセッサからアクセス可能な共有メモリと、複数の前記プロセッサにイベントを通知するタイマとを有するマルチプロセッサシステムで実行可能な通信プログラムにおいて、
前記通信プログラムは、
前記共有メモリを、任意のある時刻において複数の領域に論理的に分割する処理と、
それぞれの領域をいずれかの前記プロセッサによって管理する処理と、
前記共有メモリのそれぞれの領域に対する管理を、前記イベント通知が発生するごとに前記プロセッサ間で前記領域を受け渡しすることにより行う処理と、
前記領域を受け渡した前後で各プロセッサが管理する前記共有メモリのメモリ量の増減を保持する処理と、
前記イベント通知が発生するごとに、前記領域の管理を前記プロセッサ間で交換して、各プロセッサが管理する各領域の個数配分の偏りを、前記メモリ量の増減を用いて補正する処理とを有する。
本発明によれば、プロセッサ間でデータを授受する機能を有するシステムにおいて、プロセッサ間の通信量に比例して通信時間が増加するのを抑えつつ、通信に必要なバッファ量を抑制することができる。
図1は本発明の実施の形態に係るマルチプロセッサシステムの構成を示すブロック図である。
図2は本発明の実施の形態に係る共有メモリ上の論理領域の構成を示すメモリマップである。
図3は本発明の実施の形態に係る共有メモリ上のバッファ用領域内部の構成を示す図である。
図4は本発明の実施の形態に係る共有メモリ上のバッファ管理領域内部の構成を示す図である。
図5は本発明の実施の形態に係る共有メモリ上の収支カウンタ調整テーブルの構成を示す図である。
図6は本発明の実施の形態に係るマルチプロセッサシステムの動作における送信データ生成処理を示すフローチャートである。
図7は本発明の実施の形態に係るマルチプロセッサシステムの動作における送信データ登録処理を示すフローチャートである。
図8は本発明の実施の形態に係るマルチプロセッサシステムの動作における受信ハンドラ起動処理を示すフローチャートである。
図9は本発明の実施の形態に係るマルチプロセッサシステムの動作における受信ハンドラ処理内部を示すフローチャートである。
図10は本発明の実施の形態に係るマルチプロセッサシステムの動作における収支調整処理を示すフローチャートである。
図2は本発明の実施の形態に係る共有メモリ上の論理領域の構成を示すメモリマップである。
図3は本発明の実施の形態に係る共有メモリ上のバッファ用領域内部の構成を示す図である。
図4は本発明の実施の形態に係る共有メモリ上のバッファ管理領域内部の構成を示す図である。
図5は本発明の実施の形態に係る共有メモリ上の収支カウンタ調整テーブルの構成を示す図である。
図6は本発明の実施の形態に係るマルチプロセッサシステムの動作における送信データ生成処理を示すフローチャートである。
図7は本発明の実施の形態に係るマルチプロセッサシステムの動作における送信データ登録処理を示すフローチャートである。
図8は本発明の実施の形態に係るマルチプロセッサシステムの動作における受信ハンドラ起動処理を示すフローチャートである。
図9は本発明の実施の形態に係るマルチプロセッサシステムの動作における受信ハンドラ処理内部を示すフローチャートである。
図10は本発明の実施の形態に係るマルチプロセッサシステムの動作における収支調整処理を示すフローチャートである。
次に、本発明の実施の形態について図面を参照して詳細に説明する。
本発明の実施の形態に係るマルチプロセッサシステムは、ソフトウェアによってお互いの間で通信を行う複数の演算処理手段としてのプロセッサ群と、複数の演算処理手段からアクセス可能な記憶手段としての共有メモリと、複数の前記演算処理手段にイベントを通知する同期イベント通知手段としてのタイマを備える。前記共有メモリは任意のある時刻において複数の領域に論理的に分割されており、それぞれの領域はいずれかのプロセッサによって管理されている。
共有メモリ上のそれぞれの領域はタイマによる割り込みイベント発生ごとにプロセッサ間で受け渡しをすることができ、受け渡しした前後での各プロセッサが管理する共有メモリ量の増減を保持するための収支カウンタ手段をさらに備える。
図1を参照して、本発明の実施の形態に係るマルチプロセッサシステムの構成について説明する。
本発明の実施の形態に係るマルチプロセッサシステム100は、プログラム制御により動作するプロセッサ101〜10mと、共有バス110と、共有メモリ120と、タイマ130とから構成されている。ここで、プロセッサ101〜10mは、コンピュータ、中央処理装置、データ処理装置などであり、タイマ割込処理手段(図示せず)を含む。
これらの手段はそれぞれ概略次のように動作する。
上記タイマ割込処理手段は、タイマ130からの割り込み信号を入力したらそれを処理するためのタイマハンドラを起動し、タイマハンドラによって管理する共有メモリ120上の部分領域をプロセッサ101〜10mの間で交換する処理を行う。
共有メモリ120は、複数のプロセッサ101〜10mのいずれからの読み出しおよび書き込みのアクセスに対して応答する機能を有する。タイマ130は、予め設定された周期で同時に複数のプロセッサ101〜10mに対して割り込み信号を発生する機能を有する。
次に、図2、図3及び図4を参照して、共有メモリ120上に存在する各領域について説明する。
共有メモリ120上には、プロセッサ101〜10m間の通信データを格納するためのバッファ用領域群210とバッファ管理領域220と収支カウンタ群230と収支カウンタ調整領域240が配置されている。
バッファ用領域群210は複数のバッファ用領域211〜21nから成る。バッファ用領域の個数nの条件としては、通信処理が滞る状況を回避するために全てのプロセッサ101〜10m間に十分な量のバッファ用領域を割り当てる必要があり、それは少なくともプロセッサ個数の自乗よりも十分大きい値である。
図3に示すように、バッファ用領域211〜21n内には複数のデータを格納可能であり、それを示すためのヘッダとしてデータの直前にそのデータ長が格納される形を採る。受信側で複数の通信データ位置を読み取る際には、データ長とそれに続くデータを順次読み取ることによって一つのバッファ用領域内に格納された複数のデータ位置を解読することができる。バッファ用領域211を例に取り説明すると、データがバッファ1に格納され、このデータの直前にそのデータ長(len=24)が格納される。
図4に示すように、バッファ管理領域220の内部の構成は、送信元(送信側)のプロセッサID、送信先(受信側)のプロセッサIDに関連づけられて、それぞれのプロセッサ間通信において使用する先頭バッファ領域IDと書き込み中フラグがそれぞれ格納された構造と成っている。
先頭バッファ領域IDは、バッファ用領域群210を構成するバッファ用領域211〜21nのいずれかに該当する。あるプロセッサ間の通信において複数のバッファ用領域211〜21nを使用する場合には、図3に示すように、バッファ用領域の先頭に次のバッファ用領域IDを格納したリンクリストを構成する。つまり、バッファ管理領域220から先頭のバッファ領域IDのみを取り出し、2つめ以降のバッファ用領域は一つ前のバッファ用領域の先頭に格納されたIDを読み取ることによって認識する。バッファ用領域211を例に取り説明すると、バッファ用領域211の先頭には、次のバッファ用領域ID(next=8)が格納されている。
収支カウンタ230には、各プロセッサ101〜10mが通信を行ったことによって増減したそれぞれの管理するバッファ用領域211〜21nの個数の増減数が保持されている。この収支カウンタ230の更新はそれぞれが割り当てられているプロセッサ自身によって更新される。
次に、図5を参照して、収支カウンタ調整テーブル240の構成を説明する。
図5に示すように、収支カウンタ調整テーブル240の内部の構成は、提供側のプロセッサID、受領側のプロセッサIDに関連づけられて、収支カウンタ調整量が格納された構造となっている。
次に、図6のフローチャートを参照して、本実施の形態の送信データ生成処理について詳細に説明する。
まず、各プロセッサ101〜10mがそれぞれ所有している通信データを格納するためのバッファ用領域211〜21nから使用可能な空きバッファ用領域を一つ選択する(ステップS601)。
そして、その選択したバッファ用領域に通信データを格納する。その際、ヘッダとしてデータサイズを通信データの前に格納する(ステップS602)。これを後続データが無くなるまで繰り返す(ステップS603)。
もしも、選択したバッファ用領域に通信データを格納するための十分な空き領域が無くなれば、新たに空きのバッファ用領域を確保する。(ステップS604)。
全データを格納し終わった後、収支カウンタ調整値(図5の収支カウンタ調整テーブル240参照)を参照して、当該出力先プロセッサに与えるべきバッファ領域数に満たない場合には差分の空きバッファ用領域を追加する(ステップS605)。
なお、通信データがなくても収支カウンタ調整値が設定されている場合にはこのステップを実行する。
なお、図6に示す処理は自らを除くすべてのプロセッサに対して必要に応じて順次行い、使用したバッファ用領域は後述する送信データ登録処理S701〜7(図7参照)へ全て渡される。なお、送信データ生成処理S601〜S605を行う回数についての制約は特になく、タイマ130によって発生する割り込み信号間で何度行っても良い。
次に、図7のフローチャートを参照して、本実施の形態の送信データ登録処理について詳細に説明する。
まず、任意の2つのプロセッサ間での通信におけるデッドロックを回避するため割り込み禁止を設定する(ステップS701)。このデッドロックが発生する例としては、任意の2つのプロセッサ間でお互いに送信データ登録処理動作中にタイマ割込が入ったときが挙げられる。
そして、書き込み中に受信処理が実行されるのを防ぐためバッファ管理領域220に書き込み中のフラグ(図4参照)を立てる(ステップS702)。
その後、S601〜S605のステップで通信データを格納したバッファ用領域を連結するためにそれぞれのnextフィールド(図3参照)に次のバッファ領域のIDを書き込む(ステップS703)。
次に、ステップS703で連結したリストの先頭に当たるバッファ用領域のIDをバッファ管理領域220(図4参照)に書き込む(ステップS704)。
次に、ステップS702〜S703で使用したバッファ領域用個数だけ自らのプロセッサIDに割り当てられている収支カウンタ230(図2参照)を減算する(ステップS705)。ここでのS703〜S705において対象とする通信データは、これを実行する以前のS601〜S605における処理を行った通信データのうち未処理のものを全て含んでいなければならない。
最後に、ステップS701で立てた書き込み中フラグをおろし(ステップS706)、割り込み禁止を解除する(ステップS707)。
これらS701〜S707のステップは、タイマ130によって発生する割り込み信号間でせいぜい1回以下行うことを通常想定しているが、それ以上の回数を行っても良い。
次に、図8のフローチャートを参照して、本実施の形態の受信ハンドラ起動処理について詳細に説明する。
まず、タイマ130による割り込み信号を受信したら、全てのプロセッサ101〜10mは割り込みハンドラ処理を起動する(ステップS801)。
それに続いて、処理中のその他のタスクが中断されて受信ハンドラ処理が実行される(ステップS900)。
次に、図9のフローチャートを参照して、本実施の形態の受信処理ハンドラ内動作(図8のステップS900)について詳細に説明する。
まず、送信元のプロセッサIDを格納する送信元カウンタを初期化する(ステップS901)。
このとき、送信元カウンタに格納したプロセッサIDが自分自身であればS903〜S907の処理をスキップする(ステップS902)。
送信元カウンタに格納したプロセッサIDが自分自身でなければ、バッファ管理領域220において送信元欄が前記送信元カウンタ値であり送信先が自らのIDである行を参照し、先頭バッファ領域IDを取得する(ステップS903)。
読み込んだ前記先頭バッファ領域ID(図4参照)の値がNULLであれば、送信元カウンタの値がIDとなるプロセッサからの通信は無いのでステップS908へジャンプする(ステップS904)。
前記先頭バッファ領域IDの値がNULLでなければ、送信元カウンタの値がIDとなるプロセッサからの通信が存在するので前記先頭バッファ領域IDに相当するバッファ用領域211〜21nのうち該当する領域に格納された複数の通信データを順次読み込む(ステップS905)。
ステップS905で通信データを全て読み終わったら、前記バッファ用領域の先頭に格納されている次のバッファ領域ID(図3参照)を読み込む(ステップS906)。
以降、S906で読み込む次のバッファ領域IDがNULLになるまで、ステップS905〜906を繰り返す(ステップS907)。
S906で読み込む次のバッファ領域IDがNULLになれば、この時点で前記送信元カウンタに格納されたIDを持つプロセッサからの通信データはもはや無いので、次の送信元プロセッサIDを前記送信元カウンタに格納して全てのプロセッサIDについての処理が終わるまでS902〜S908を送信元プロセッサIDごとに繰り返す(ステップS908〜S909)。
最後に、受信したバッファ用領域個数分だけ収支カウンタ230を加算する(ステップS910)。
次に、図10のフローチャートを参照して、本実施の形態の収支調整処理について詳細に説明する。
まず、収支テーブルを元に収支カウンタ230の値を比較して増加量の多い順に並び替えたテーブルXを生成する(ステップS1001)。
また、必要な変数類を初期化する(ステップS1002)。
次に、収支で増加が最も多いものと減少が最も多いものの間で最大限の調整をとるため、絶対値の小さい方の値を多い側から少ない側へ移動させるように収支調整テーブルへ書き込む(ステップS1003〜S1010)。
次に、本実施の形態の効果について説明する。
本実施の形態では、タイマ割り込みごとにそれぞれのバッファ用領域の一部をプロセッサ間で入れ替えるというように構成されているため、プロセッサ間の通信量に比例して通信時間が増加するのを抑えることができる。このとき、通信データ自体を書き込んだり読み出したりする時間を除けば単位時間あたりほぼ一定時間での通信処理が実現される。
また、本実施の形態では、さらに、各バッファ用領域がある時刻においていずれか一つのプロセッサに割り振られており、かつ、タイマ契機ごとにそれぞれのバッファ用領域の一部をプロセッサ間で入れ替えるというように構成されているため、通信に必要なバッファを各プロセッサ間でシステムの動作中に状況に応じて融通しあうことができ、システム全体でのメモリ使用量を抑えることができる。
上述のように、本発明の実施の形態に係るマルチプロセッサシステムは、ソフトウェアによってお互いの間で通信を行う複数の演算処理手段としてのプロセッサ群と、複数の演算処理手段からアクセス可能な記憶手段としての共有メモリと、複数の前記演算処理手段にイベントを通知する同期イベント通知手段としてのタイマを備える。前記共有メモリは任意のある時刻において複数の領域に論理的に分割されており、それぞれの領域はいずれかのプロセッサによって管理されている。
共有メモリ上のそれぞれの領域に対する管理はタイマによる割り込みイベント発生ごとにプロセッサ間で交換することができ、管理を交換した前後での各プロセッサが管理する共有メモリ量の増減を保持するための収支カウンタ手段をさらに備える。
このような構成を採用し、前記イベント通知が発生するごとに共有メモリ上で論理的に割された領域の管理をプロセッサ間で交換し、各プロセッサが管理する共有メモリ上の各領域の個数配分の偏りを、収支カウンタを用いて補正する。
このような構成を採用している本発明の実施の形態に係るマルチプロセッサシステムでは、プロセッサ間で頻繁に通信が発生するシステムであっても、プロセッサ間の通信量に比例して通信時間が増加するのを抑えられる。
その理由は、任意の時刻においてそれぞれのプロセッサは自らが管理する共有メモリ上の部分領域を持っていることによって、プロセッサ間の通信に用いるバッファ領域を確保するための通信を行う必要がないためである。このとき、通信データ自体を書き込む時間を除けば単位時間あたりに通信にかかる処理時間をほぼ一定に抑えることができる。
さらに、複数のプロセッサ間でデータを授受するのに用いる共有メモリの総量を抑制できる。その理由は、システムの動作中に通信に必要なバッファを各プロセッサ間で融通しあうことで、プロセッサ間毎にマージンを考慮したメモリの確保をしなくてすむためである。これにより、必ずしも任意の2つのプロセッサ間で必要な最大メモリ量の総和をシステム全体として保有する必要はなくなり、システム全体として必要な共有メモリの最大量を確保しさえすれば済む。
さらに加えて、それぞれのバッファ用領域の一部をプロセッサ間で受け渡しその収支を管理しているため、バッファ領域が必要なプロセッサの処理に応じて適切なバッファ領域や必要な数のバッファ領域をプロセッサに提供することも可能である。
以上、本発明の実施の形態について具体的に説明したが、本発明は上述の実施形態に限定されるものではなく、本発明技術的思想に基づく各種の変形が可能である。
本発明は、有線乃至は無線の通信を行う通信処理装置に適用できる。また、動画のエンコードやデコードを行うメディア処理装置にも適用可能である。
この出願は、2009年4月17日に出願された日本出願特願第2009−100456号を基礎とする優先権を主張し、その開示のすべてをここに取り込むものである。
本発明の実施の形態に係るマルチプロセッサシステムは、ソフトウェアによってお互いの間で通信を行う複数の演算処理手段としてのプロセッサ群と、複数の演算処理手段からアクセス可能な記憶手段としての共有メモリと、複数の前記演算処理手段にイベントを通知する同期イベント通知手段としてのタイマを備える。前記共有メモリは任意のある時刻において複数の領域に論理的に分割されており、それぞれの領域はいずれかのプロセッサによって管理されている。
共有メモリ上のそれぞれの領域はタイマによる割り込みイベント発生ごとにプロセッサ間で受け渡しをすることができ、受け渡しした前後での各プロセッサが管理する共有メモリ量の増減を保持するための収支カウンタ手段をさらに備える。
図1を参照して、本発明の実施の形態に係るマルチプロセッサシステムの構成について説明する。
本発明の実施の形態に係るマルチプロセッサシステム100は、プログラム制御により動作するプロセッサ101〜10mと、共有バス110と、共有メモリ120と、タイマ130とから構成されている。ここで、プロセッサ101〜10mは、コンピュータ、中央処理装置、データ処理装置などであり、タイマ割込処理手段(図示せず)を含む。
これらの手段はそれぞれ概略次のように動作する。
上記タイマ割込処理手段は、タイマ130からの割り込み信号を入力したらそれを処理するためのタイマハンドラを起動し、タイマハンドラによって管理する共有メモリ120上の部分領域をプロセッサ101〜10mの間で交換する処理を行う。
共有メモリ120は、複数のプロセッサ101〜10mのいずれからの読み出しおよび書き込みのアクセスに対して応答する機能を有する。タイマ130は、予め設定された周期で同時に複数のプロセッサ101〜10mに対して割り込み信号を発生する機能を有する。
次に、図2、図3及び図4を参照して、共有メモリ120上に存在する各領域について説明する。
共有メモリ120上には、プロセッサ101〜10m間の通信データを格納するためのバッファ用領域群210とバッファ管理領域220と収支カウンタ群230と収支カウンタ調整領域240が配置されている。
バッファ用領域群210は複数のバッファ用領域211〜21nから成る。バッファ用領域の個数nの条件としては、通信処理が滞る状況を回避するために全てのプロセッサ101〜10m間に十分な量のバッファ用領域を割り当てる必要があり、それは少なくともプロセッサ個数の自乗よりも十分大きい値である。
図3に示すように、バッファ用領域211〜21n内には複数のデータを格納可能であり、それを示すためのヘッダとしてデータの直前にそのデータ長が格納される形を採る。受信側で複数の通信データ位置を読み取る際には、データ長とそれに続くデータを順次読み取ることによって一つのバッファ用領域内に格納された複数のデータ位置を解読することができる。バッファ用領域211を例に取り説明すると、データがバッファ1に格納され、このデータの直前にそのデータ長(len=24)が格納される。
図4に示すように、バッファ管理領域220の内部の構成は、送信元(送信側)のプロセッサID、送信先(受信側)のプロセッサIDに関連づけられて、それぞれのプロセッサ間通信において使用する先頭バッファ領域IDと書き込み中フラグがそれぞれ格納された構造と成っている。
先頭バッファ領域IDは、バッファ用領域群210を構成するバッファ用領域211〜21nのいずれかに該当する。あるプロセッサ間の通信において複数のバッファ用領域211〜21nを使用する場合には、図3に示すように、バッファ用領域の先頭に次のバッファ用領域IDを格納したリンクリストを構成する。つまり、バッファ管理領域220から先頭のバッファ領域IDのみを取り出し、2つめ以降のバッファ用領域は一つ前のバッファ用領域の先頭に格納されたIDを読み取ることによって認識する。バッファ用領域211を例に取り説明すると、バッファ用領域211の先頭には、次のバッファ用領域ID(next=8)が格納されている。
収支カウンタ230には、各プロセッサ101〜10mが通信を行ったことによって増減したそれぞれの管理するバッファ用領域211〜21nの個数の増減数が保持されている。この収支カウンタ230の更新はそれぞれが割り当てられているプロセッサ自身によって更新される。
次に、図5を参照して、収支カウンタ調整テーブル240の構成を説明する。
図5に示すように、収支カウンタ調整テーブル240の内部の構成は、提供側のプロセッサID、受領側のプロセッサIDに関連づけられて、収支カウンタ調整量が格納された構造となっている。
次に、図6のフローチャートを参照して、本実施の形態の送信データ生成処理について詳細に説明する。
まず、各プロセッサ101〜10mがそれぞれ所有している通信データを格納するためのバッファ用領域211〜21nから使用可能な空きバッファ用領域を一つ選択する(ステップS601)。
そして、その選択したバッファ用領域に通信データを格納する。その際、ヘッダとしてデータサイズを通信データの前に格納する(ステップS602)。これを後続データが無くなるまで繰り返す(ステップS603)。
もしも、選択したバッファ用領域に通信データを格納するための十分な空き領域が無くなれば、新たに空きのバッファ用領域を確保する。(ステップS604)。
全データを格納し終わった後、収支カウンタ調整値(図5の収支カウンタ調整テーブル240参照)を参照して、当該出力先プロセッサに与えるべきバッファ領域数に満たない場合には差分の空きバッファ用領域を追加する(ステップS605)。
なお、通信データがなくても収支カウンタ調整値が設定されている場合にはこのステップを実行する。
なお、図6に示す処理は自らを除くすべてのプロセッサに対して必要に応じて順次行い、使用したバッファ用領域は後述する送信データ登録処理S701〜7(図7参照)へ全て渡される。なお、送信データ生成処理S601〜S605を行う回数についての制約は特になく、タイマ130によって発生する割り込み信号間で何度行っても良い。
次に、図7のフローチャートを参照して、本実施の形態の送信データ登録処理について詳細に説明する。
まず、任意の2つのプロセッサ間での通信におけるデッドロックを回避するため割り込み禁止を設定する(ステップS701)。このデッドロックが発生する例としては、任意の2つのプロセッサ間でお互いに送信データ登録処理動作中にタイマ割込が入ったときが挙げられる。
そして、書き込み中に受信処理が実行されるのを防ぐためバッファ管理領域220に書き込み中のフラグ(図4参照)を立てる(ステップS702)。
その後、S601〜S605のステップで通信データを格納したバッファ用領域を連結するためにそれぞれのnextフィールド(図3参照)に次のバッファ領域のIDを書き込む(ステップS703)。
次に、ステップS703で連結したリストの先頭に当たるバッファ用領域のIDをバッファ管理領域220(図4参照)に書き込む(ステップS704)。
次に、ステップS702〜S703で使用したバッファ領域用個数だけ自らのプロセッサIDに割り当てられている収支カウンタ230(図2参照)を減算する(ステップS705)。ここでのS703〜S705において対象とする通信データは、これを実行する以前のS601〜S605における処理を行った通信データのうち未処理のものを全て含んでいなければならない。
最後に、ステップS701で立てた書き込み中フラグをおろし(ステップS706)、割り込み禁止を解除する(ステップS707)。
これらS701〜S707のステップは、タイマ130によって発生する割り込み信号間でせいぜい1回以下行うことを通常想定しているが、それ以上の回数を行っても良い。
次に、図8のフローチャートを参照して、本実施の形態の受信ハンドラ起動処理について詳細に説明する。
まず、タイマ130による割り込み信号を受信したら、全てのプロセッサ101〜10mは割り込みハンドラ処理を起動する(ステップS801)。
それに続いて、処理中のその他のタスクが中断されて受信ハンドラ処理が実行される(ステップS900)。
次に、図9のフローチャートを参照して、本実施の形態の受信処理ハンドラ内動作(図8のステップS900)について詳細に説明する。
まず、送信元のプロセッサIDを格納する送信元カウンタを初期化する(ステップS901)。
このとき、送信元カウンタに格納したプロセッサIDが自分自身であればS903〜S907の処理をスキップする(ステップS902)。
送信元カウンタに格納したプロセッサIDが自分自身でなければ、バッファ管理領域220において送信元欄が前記送信元カウンタ値であり送信先が自らのIDである行を参照し、先頭バッファ領域IDを取得する(ステップS903)。
読み込んだ前記先頭バッファ領域ID(図4参照)の値がNULLであれば、送信元カウンタの値がIDとなるプロセッサからの通信は無いのでステップS908へジャンプする(ステップS904)。
前記先頭バッファ領域IDの値がNULLでなければ、送信元カウンタの値がIDとなるプロセッサからの通信が存在するので前記先頭バッファ領域IDに相当するバッファ用領域211〜21nのうち該当する領域に格納された複数の通信データを順次読み込む(ステップS905)。
ステップS905で通信データを全て読み終わったら、前記バッファ用領域の先頭に格納されている次のバッファ領域ID(図3参照)を読み込む(ステップS906)。
以降、S906で読み込む次のバッファ領域IDがNULLになるまで、ステップS905〜906を繰り返す(ステップS907)。
S906で読み込む次のバッファ領域IDがNULLになれば、この時点で前記送信元カウンタに格納されたIDを持つプロセッサからの通信データはもはや無いので、次の送信元プロセッサIDを前記送信元カウンタに格納して全てのプロセッサIDについての処理が終わるまでS902〜S908を送信元プロセッサIDごとに繰り返す(ステップS908〜S909)。
最後に、受信したバッファ用領域個数分だけ収支カウンタ230を加算する(ステップS910)。
次に、図10のフローチャートを参照して、本実施の形態の収支調整処理について詳細に説明する。
まず、収支テーブルを元に収支カウンタ230の値を比較して増加量の多い順に並び替えたテーブルXを生成する(ステップS1001)。
また、必要な変数類を初期化する(ステップS1002)。
次に、収支で増加が最も多いものと減少が最も多いものの間で最大限の調整をとるため、絶対値の小さい方の値を多い側から少ない側へ移動させるように収支調整テーブルへ書き込む(ステップS1003〜S1010)。
次に、本実施の形態の効果について説明する。
本実施の形態では、タイマ割り込みごとにそれぞれのバッファ用領域の一部をプロセッサ間で入れ替えるというように構成されているため、プロセッサ間の通信量に比例して通信時間が増加するのを抑えることができる。このとき、通信データ自体を書き込んだり読み出したりする時間を除けば単位時間あたりほぼ一定時間での通信処理が実現される。
また、本実施の形態では、さらに、各バッファ用領域がある時刻においていずれか一つのプロセッサに割り振られており、かつ、タイマ契機ごとにそれぞれのバッファ用領域の一部をプロセッサ間で入れ替えるというように構成されているため、通信に必要なバッファを各プロセッサ間でシステムの動作中に状況に応じて融通しあうことができ、システム全体でのメモリ使用量を抑えることができる。
上述のように、本発明の実施の形態に係るマルチプロセッサシステムは、ソフトウェアによってお互いの間で通信を行う複数の演算処理手段としてのプロセッサ群と、複数の演算処理手段からアクセス可能な記憶手段としての共有メモリと、複数の前記演算処理手段にイベントを通知する同期イベント通知手段としてのタイマを備える。前記共有メモリは任意のある時刻において複数の領域に論理的に分割されており、それぞれの領域はいずれかのプロセッサによって管理されている。
共有メモリ上のそれぞれの領域に対する管理はタイマによる割り込みイベント発生ごとにプロセッサ間で交換することができ、管理を交換した前後での各プロセッサが管理する共有メモリ量の増減を保持するための収支カウンタ手段をさらに備える。
このような構成を採用し、前記イベント通知が発生するごとに共有メモリ上で論理的に割された領域の管理をプロセッサ間で交換し、各プロセッサが管理する共有メモリ上の各領域の個数配分の偏りを、収支カウンタを用いて補正する。
このような構成を採用している本発明の実施の形態に係るマルチプロセッサシステムでは、プロセッサ間で頻繁に通信が発生するシステムであっても、プロセッサ間の通信量に比例して通信時間が増加するのを抑えられる。
その理由は、任意の時刻においてそれぞれのプロセッサは自らが管理する共有メモリ上の部分領域を持っていることによって、プロセッサ間の通信に用いるバッファ領域を確保するための通信を行う必要がないためである。このとき、通信データ自体を書き込む時間を除けば単位時間あたりに通信にかかる処理時間をほぼ一定に抑えることができる。
さらに、複数のプロセッサ間でデータを授受するのに用いる共有メモリの総量を抑制できる。その理由は、システムの動作中に通信に必要なバッファを各プロセッサ間で融通しあうことで、プロセッサ間毎にマージンを考慮したメモリの確保をしなくてすむためである。これにより、必ずしも任意の2つのプロセッサ間で必要な最大メモリ量の総和をシステム全体として保有する必要はなくなり、システム全体として必要な共有メモリの最大量を確保しさえすれば済む。
さらに加えて、それぞれのバッファ用領域の一部をプロセッサ間で受け渡しその収支を管理しているため、バッファ領域が必要なプロセッサの処理に応じて適切なバッファ領域や必要な数のバッファ領域をプロセッサに提供することも可能である。
以上、本発明の実施の形態について具体的に説明したが、本発明は上述の実施形態に限定されるものではなく、本発明技術的思想に基づく各種の変形が可能である。
本発明は、有線乃至は無線の通信を行う通信処理装置に適用できる。また、動画のエンコードやデコードを行うメディア処理装置にも適用可能である。
この出願は、2009年4月17日に出願された日本出願特願第2009−100456号を基礎とする優先権を主張し、その開示のすべてをここに取り込むものである。
Claims (28)
- 複数の演算処理手段と、
複数の前記演算処理手段に接続された記憶手段と、
複数の前記演算処理手段に接続された同期イベント通知手段とを有し、
前記記憶手段は、複数の前記演算処理手段の間での通信データを格納するバッファ用領域部と収支カウンタ部を有し、
前記バッファ用領域部は、それぞれがいずれか1つの前記演算処理手段に対応する複数のバッファ用領域を含んでおり、
前記演算処理手段は、前記同期イベント通知手段によって通知されるタイミングごとに前記バッファ用領域を受け渡し、
前記収支カウンタ部は、受け渡した前記バッファ用領域の増減を管理することを特徴とするマルチプロセッサシステム。 - 前記収支カウンタ部は、それぞれがいずれか1つの前記演算処理手段に対応する複数の収支カウンタ領域を含んでおり、
前記収支カウンタ領域は、前記演算処理手段ごとに一つずつ設けられ、
前記演算処理手段と他の前記演算処理手段との間で前記バッファ用領域の増減が発生した場合に、この増減の合算値を保持することを特徴とする請求項1に記載のマルチプロセッサシステム。 - 前記演算処理手段は、前記収支カウンタ領域に保持された値を用いて前記バッファ用領域を受け渡すことを特徴とする請求項2に記載のマルチプロセッサシステム。
- 前記収支カウンタ部は、さらに収支カウンタ調整領域を含み、
前記収支カウンタ調整領域は、予め任意の2つの前記演算処理手段の間で次に受け渡される前記バッファ用領域の個数を決める指標値を保持することを特徴とする請求項1に記載のマルチプロセッサシステム。 - 複数の前記演算処理手段のうちの一つが、前記収支カウンタ調整領域に書き込む前記指標値を生成することを特徴とする請求項4に記載のマルチプロセッサシステム。
- 複数の前記演算処理手段は、異なる特定の前記演算処理手段に対して所有権を譲渡する前記バッファ用領域の個数と前記収支カウンタ調整領域で保持された値との大小を比べ、前記収支カウンタ調整領域で保持された値の方が大きい場合には、その差分に相当する複数のバッファ用領域をさらに追加して譲渡することを特徴とする請求項4に記載のマルチプロセッサシステム。
- 前記バッファ用領域には、複数の前記演算処理手段の間で通信される少なくとも一つのメッセージが格納されていることを特徴とする請求項1に記載のマルチプロセッサシステム。
- 前記バッファ用領域には、前記メッセージを管理するためのヘッダ部が設けられていることを特徴とする請求項7に記載のマルチプロセッサシステム。
- 前記ヘッダ部は前記メッセージの長さに相当する値を含むことを特徴とする請求項8に記載のマルチプロセッサシステム。
- 前記イベント通知手段は、予め決められた一定周期毎に割り込み信号によって複数の前記演算処理手段に前記タイミングを通知することを特徴とする請求項1に記載のマルチプロセッサシステム。
- 互いに通信を行う複数のプロセッサと、
複数の前記プロセッサからアクセス可能な共有メモリと、
複数の前記プロセッサにイベントを通知するタイマと、
収支カウンタとを有し、
前記共有メモリは、任意のある時刻において複数の領域に論理的に分割され、それぞれの領域はいずれかの前記プロセッサによって管理されており、
前記共有メモリのそれぞれの領域に対する管理は、前記イベントの通知が発生するごとに前記プロセッサ間で前記領域を受け渡しすることにより行われ、
前記収支カウンタは、前記領域を受け渡した前後で各プロセッサが管理する前記共有メモリのメモリ量の増減を保持し、
各プロセッサが管理する各領域の個数配分の偏りを、前記収支カウンタを用いて補正することを特徴とするマルチプロセッサシステム。 - 前記領域には、複数の前記プロセッサの間で通信される少なくとも一つのメッセージが格納されていることを特徴とする請求項11に記載のマルチプロセッサシステム。
- 前記領域には、前記メッセージを管理するためのヘッダ部が設けられていることを特徴とする請求項12に記載のマルチプロセッサシステム。
- 前記ヘッダ部は前記メッセージの長さに相当する値を含むことを特徴とする請求項13に記載のマルチプロセッサシステム。
- 前記タイマは、予め決められた一定周期毎に割り込み信号によって複数の前記プロセッサに前記イベントを通知することを特徴とする請求項11に記載のマルチプロセッサシステム。
- 互いに通信を行う複数のプロセッサと、複数の前記プロセッサからアクセス可能な共有メモリと、複数の前記プロセッサにイベントを通知するタイマとを有するマルチプロセッサシステムのメモリ管理方法において、
前記共有メモリを、任意のある時刻において複数の領域に論理的に分割し、
それぞれの領域をいずれかの前記プロセッサによって管理し、
前記共有メモリのそれぞれの領域に対する管理を、前記イベント通知が発生するごとに前記プロセッサ間で前記領域を受け渡しすることにより行い、
前記領域を受け渡しした前後で各プロセッサが管理する前記共有メモリのメモリ量の増減を保持し、
前記イベント通知が発生するごとに、前記領域の管理を前記プロセッサ間で交換し、
各プロセッサが管理する各領域の個数配分の偏りを、前記メモリ量の増減を用いて補正することを特徴とするマルチプロセッサシステムにおけるメモリ管理方法。 - 前記領域には、複数の前記プロセッサの間で通信される少なくとも一つのメッセージが格納されていることを特徴とする請求項16に記載のマルチプロセッサシステムにおけるメモリ管理方法。
- 前記領域には、前記メッセージを管理するためのヘッダ部が設けられていることを特徴とする請求項17に記載のマルチプロセッサシステムにおけるメモリ管理方法。
- 前記ヘッダ部は前記メッセージの長さに相当する値を含むことを特徴とする請求項18に記載のマルチプロセッサシステムにおけるメモリ管理方法。
- 前記タイマは、予め決められた一定周期毎に割り込み信号によって複数の前記プロセッサに前記イベントを通知することを特徴とする請求項16に記載のマルチプロセッサシステムにおけるメモリ管理方法。
- 複数のプロセッサ間の通信データを格納する領域を、予め共有メモリの複数のバッファ用領域に分割し、
ある時刻においてそれぞれの前記バッファ用領域の書き換え権をいずれかの前記プロセッサに割り振り、
前記通信データを前記バッファ用領域に格納し、
前記バッファ用領域をタイマ割込のタイミングで複数の前記プロセッサ間で入れ替えることにより前記通信データの送信を行い、
この入れ替えに伴って生じた前記バッファ用領域の個数に関する複数の前記プロセッサ間に跨る偏りを、前記プロセッサごとの増減量としてカウンタに格納し、
この増減量を使用して、次の通信時に前記バッファ用領域の個数を補正して平準化することを特徴とするマルチプロセッサシステムにおけるメモリ管理方法。 - 複数のプロセッサ間で交換する通信データを格納するための領域を、予め共有メモリの複数の部分領域に分割し、
分割した前記複数の部分領域を前記プロセッサにそれぞれ割り当て、
所定のタイミングで同時に複数の前記プロセッサ間で前記部分領域を受け渡し、
受け渡した前記部分領域の量をカウンタに保持し、
前記受け渡しの際、前記カウンタの値に満たない場合には、その差分をさらに送信することを特徴とするマルチプロセッサシステムにおけるメモリ管理方法。 - 互いに通信を行う複数のプロセッサと、複数の前記プロセッサからアクセス可能な共有メモリと、複数の前記プロセッサにイベントを通知するタイマとを有するマルチプロセッサシステムで実行可能な通信プログラムにおいて、
前記通信プログラムは、
前記共有メモリを、任意のある時刻において複数の領域に論理的に分割する処理と、
それぞれの領域をいずれかの前記プロセッサによって管理する処理と、
前記共有メモリのそれぞれの領域に対する管理を、前記イベント通知が発生するごとに前記プロセッサ間で前記領域を受け渡しすることにより行う処理と、
前記領域を受け渡した前後で各プロセッサが管理する前記共有メモリのメモリ量の増減を保持する処理と、
前記イベント通知が発生するごとに、前記領域の管理を前記プロセッサ間で交換して、各プロセッサが管理する各領域の個数配分の偏りを、前記メモリ量の増減を用いて補正する処理とを有することを特徴とするマルチプロセッサシステムで実行可能な通信プログラム。 - 前記領域には、複数の前記プロセッサの間で通信される少なくとも一つのメッセージが格納されていることを特徴とする請求項23に記載のマルチプロセッサシステムで実行可能な通信プログラム。
- 前記領域には、前記メッセージを管理するためのヘッダ部が設けられていることを特徴とする請求項24に記載のマルチプロセッサシステムで実行可能な通信プログラム。
- 前記ヘッダ部は前記メッセージの長さに相当する値を含むことを特徴とする請求項25に記載のマルチプロセッサシステムで実行可能な通信プログラム。
- 前記タイマは、予め決められた一定周期毎に割り込み信号によって複数の前記プロセッサに前記イベントを通知することを特徴とする請求項23に記載のマルチプロセッサシステムで実行可能な通信プログラム。
- 同時実行可能な異なる複数のプロセッサ上で実行される通信プログラムの間で
前記通信プログラムはそれぞれ異なる通信データ格納領域をそれぞれの時刻で排他的に所有しており、
外部イベントのタイミングで任意の通信プログラム間で所有している前記通信データ格納領域を受け渡し、
前記通信データ格納領域の受け渡しによって生じるデータ格納領域量の差分を保持し、
この差分に満たない通信データ格納領域を追加して送信するような処理を前記プロセッサに実行させることを特徴とするマルチプロセッサシステムで実行可能な通信プログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009100456 | 2009-04-17 | ||
JP2009100456 | 2009-04-17 | ||
PCT/JP2010/056797 WO2010119932A1 (ja) | 2009-04-17 | 2010-04-09 | マルチプロセッサシステム、マルチプロセッサシステムにおけるメモリ管理方法及び通信プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2010119932A1 true JPWO2010119932A1 (ja) | 2012-10-22 |
Family
ID=42982589
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011509354A Pending JPWO2010119932A1 (ja) | 2009-04-17 | 2010-04-09 | マルチプロセッサシステム、マルチプロセッサシステムにおけるメモリ管理方法及び通信プログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JPWO2010119932A1 (ja) |
WO (1) | WO2010119932A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10164913B2 (en) * | 2013-01-16 | 2018-12-25 | Cfph, Llc | Router for performing NAT and/or PAT translations |
JP7268516B2 (ja) * | 2019-07-17 | 2023-05-08 | 株式会社デンソー | 電子制御装置 |
JP7425685B2 (ja) * | 2020-07-07 | 2024-01-31 | 日立Astemo株式会社 | 電子制御装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6228865A (ja) * | 1985-07-30 | 1987-02-06 | Nec Corp | マルチプロセツサ・システム |
JPH03210851A (ja) * | 1990-01-12 | 1991-09-13 | Fuji Xerox Co Ltd | プロセッサ間通信装置 |
JPH0668040A (ja) * | 1992-08-14 | 1994-03-11 | Nec Corp | プロセッサ間通信用キュー制御方式 |
JP2006309512A (ja) * | 2005-04-28 | 2006-11-09 | Nec Electronics Corp | マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法 |
JP2008097084A (ja) * | 2006-10-06 | 2008-04-24 | Hitachi Ltd | プロセッサ及びデータ転送ユニット |
-
2010
- 2010-04-09 JP JP2011509354A patent/JPWO2010119932A1/ja active Pending
- 2010-04-09 WO PCT/JP2010/056797 patent/WO2010119932A1/ja active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6228865A (ja) * | 1985-07-30 | 1987-02-06 | Nec Corp | マルチプロセツサ・システム |
JPH03210851A (ja) * | 1990-01-12 | 1991-09-13 | Fuji Xerox Co Ltd | プロセッサ間通信装置 |
JPH0668040A (ja) * | 1992-08-14 | 1994-03-11 | Nec Corp | プロセッサ間通信用キュー制御方式 |
JP2006309512A (ja) * | 2005-04-28 | 2006-11-09 | Nec Electronics Corp | マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法 |
JP2008097084A (ja) * | 2006-10-06 | 2008-04-24 | Hitachi Ltd | プロセッサ及びデータ転送ユニット |
Also Published As
Publication number | Publication date |
---|---|
WO2010119932A1 (ja) | 2010-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4687729B2 (ja) | キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法 | |
CN110825690B (zh) | 多核处理器的核间通信方法及装置 | |
CN111124255B (zh) | 数据存储方法、电子设备和计算机程序产品 | |
CN103154909A (zh) | 分布式高速缓冲存储器一致性协议 | |
US20160034332A1 (en) | Information processing system and method | |
US8806135B1 (en) | Load store unit with load miss result buffer | |
US10565135B2 (en) | Information processing device, information processing method, main processor core, program, information processing method, and sub processor core | |
US9910808B2 (en) | Reflective memory bridge for external computing nodes | |
KR100630071B1 (ko) | 다중 프로세서 환경에서의 dma를 이용한 고속 데이터전송 방법 및 그 장치 | |
JP5124430B2 (ja) | 仮想マシンの移行方法、サーバ、及び、プログラム | |
JP5811245B1 (ja) | 情報処理装置、メモリ順序保障方法、及び、プログラム | |
WO2010119932A1 (ja) | マルチプロセッサシステム、マルチプロセッサシステムにおけるメモリ管理方法及び通信プログラム | |
JP2012043031A (ja) | 共有キャッシュメモリ装置 | |
CN107533475B (zh) | 用于在共享存储设备中协调读取和写入过程的方法和系统 | |
WO2013097098A1 (zh) | 数据处理方法、图形处理器gpu及第一节点设备 | |
KR20140038075A (ko) | 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치 | |
US20020112100A1 (en) | System and method for data exchange | |
JP5518143B2 (ja) | 仮想マシンの移行方法、サーバ、プログラム、及び、仮想マシンシステム | |
CN101196833B (zh) | 用于存储器利用的方法和装置 | |
JP4856413B2 (ja) | 演算処理装置、情報処理装置、及び演算処理装置の制御方法 | |
US20180225208A1 (en) | Information processing device | |
US20130247065A1 (en) | Apparatus and method for executing multi-operating systems | |
CN101196835A (zh) | 用于在线程之间通信的方法和装置 | |
KR100921504B1 (ko) | 다중 프로세서를 구비한 시스템 온 칩 시스템 내의프로세서간 통신 장치 및 방법 | |
US10762011B2 (en) | Reflective memory bridge for external computing nodes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130305 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130731 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130930 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140402 |