JPWO2013018230A1 - データ処理システムおよびデータ処理方法 - Google Patents
データ処理システムおよびデータ処理方法 Download PDFInfo
- Publication number
- JPWO2013018230A1 JPWO2013018230A1 JP2013526705A JP2013526705A JPWO2013018230A1 JP WO2013018230 A1 JPWO2013018230 A1 JP WO2013018230A1 JP 2013526705 A JP2013526705 A JP 2013526705A JP 2013526705 A JP2013526705 A JP 2013526705A JP WO2013018230 A1 JPWO2013018230 A1 JP WO2013018230A1
- Authority
- JP
- Japan
- Prior art keywords
- data
- thread
- data processing
- queue
- real
- 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
Abstract
データ処理システム(100)は、データ処理装置(111)と、データ処理装置(112)と、共有キュー(135)と、管理ユニット(140)と、を備えている。データ処理装置(111)は、スレッド(121)を実行する。データ処理装置(112)は、スレッド(122)を実行する。共有キュー(135)は、データ処理装置(111)とデータ処理装置(112)とで共有する。管理ユニット(140)は、スレッド(121)およびスレッド(122)の共有キュー(135)にアクセスする優先度をスレッド(121)およびスレッド(122)のリアルタイム制約または通信プロトコルに基づいて設定する。
Description
本発明は、データを処理するデータ処理システムおよびデータ処理方法に関する。
現在のコンピュータシステムにおいては、複数のソフトウェアによる一つのハードウェアの共有が可能なマルチタスクのOS(Operating System:オペレーティングシステム)が利用されている。たとえば、ネットワークアダプタが1つしかないパーソナルコンピュータ上でブラウザとメーラを同時に起動することが可能である。この場合に、たとえば、ブラウザによるログイン情報などの送信と、メーラによる電子メールの送信と、が同時に行われることが考えられる。
この場合は、OSは、ブラウザおよびメーラからデータの送信要求を受け付けると、いったんメインメモリ上の一時領域である通信バッファに送信要求を格納する。その後、タイマー割り込みなどにより起動されたデバイスドライバが、通信バッファからデータを取り出し、ネットワークアダプタを用いて送信を行う。通信バッファは、たとえばFIFO(First In First Out:先入れ先出し)のキューで実現される。キューはたとえばリングバッファにより実装される。
マルチプロセッサシステムやマルチコアシステムにおいては、複数のCPU(Central Processing Unit:中央処理装置)がメモリ上の通信バッファに同時にアクセスすることにより通信バッファ内のデータが破壊される可能性がある。このため、CPU間で排他制御を行うことによってデータの保護が行われる。
排他制御としては、MUTEX(MUTual EXclusion:相互排他)、セマフォ、スピンロックなどが挙げられる。これらの排他制御において、各CPUは、キューへの書き込みを行う前に、まずキューへのアクセス権を排他的に取得し、データの書き込み後にアクセス権を放棄する。一方、各CPUは、アクセス権の取得に失敗した場合は待機し(排他待ち)、アクセス権を取得してからデータの書き込みを行う。
したがって、排他制御を行うことにより、ある時刻にキューへのアクセス権を有するのは1つのCPU(スレッド)のみとなり、キューへの書き込みは逐次的に行われる。これにより、上書きなどによるパケットデータの破壊が回避される。
なお、プロセッサ間でデータを転送する技術において、メモリ上にプロセッサごとに独立して設けられたバッファ領域を介してデータを転送する方法が知られている(たとえば、下記特許文献1参照。)。また、ネットワークから受信したデータを受信バッファに格納し、受信バッファから読み出したデータを送信バッファに非同期に格納する方法が知られている(たとえば、下記特許文献2参照。)。
しかしながら、上述した従来技術では、複数のスレッドが共有メモリにアクセスする場合に、リアルタイム性が求められるスレッドが他のスレッドより優先的に共有メモリにアクセスできるとは限らない。このため、リアルタイム性が求められるスレッドのスループットを向上させることができないという問題がある。
本発明は、上述した従来技術による問題点を解消するため、リアルタイム性が求められるスレッドのスループットを向上させることができるデータ処理システムおよびデータ処理方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数のデータ処理装置に含まれる第1データ処理装置によって実行される第1スレッドが第1データを出力し、前記複数のデータ処理装置に含まれる第2データ処理装置によって実行される第2スレッドが第2データを出力し、前記複数のデータ処理装置の一のデータ処理装置が、前記第1データ処理装置および前記第2データ処理装置で共有されるメモリへの前記第1データおよび前記第2データの書き込み順序を前記第1スレッドおよび前記第2スレッドのリアルタイム制約または通信プロトコルに基づいて設定するデータ処理システムおよびデータ処理方法が提案される。
本発明の一側面によれば、リアルタイム性が求められるスレッドのスループットを向上させることができるという効果を奏する。
以下に添付図面を参照して、本発明にかかるデータ処理システムおよびデータ処理方法の実施の形態を詳細に説明する。
(実施の形態)
(実施の形態にかかるデータ処理システム)
図1−1は、実施の形態にかかるデータ処理システムの一例を示す図である。図1−1に示すように、実施の形態にかかるデータ処理システム100は、データ処理装置111,112と、メモリ130と、管理ユニット140と、を備えている。
(実施の形態にかかるデータ処理システム)
図1−1は、実施の形態にかかるデータ処理システムの一例を示す図である。図1−1に示すように、実施の形態にかかるデータ処理システム100は、データ処理装置111,112と、メモリ130と、管理ユニット140と、を備えている。
データ処理装置111は、データを処理する第1データ処理装置である。データ処理装置112は、データを処理する第2データ処理装置である。データ処理装置111,112のそれぞれはたとえばCPUである。スレッド121は、データ処理装置111によって実行される第1スレッドである。スレッド122は、データ処理装置112によって実行される第2スレッドである。
メモリ130は、ローカルキュー131,132と、共有キュー135と、を備えている。ローカルキュー131は、スレッド121の実行に基づいて生成される第1データを格納する第1ローカルキューである。ローカルキュー132は、スレッド122の実行に基づいて生成される第2データを格納する第2ローカルキューである。このように、メモリ130には、データ処理装置111,112のそれぞれに対応してローカルキュー131,132が設けられる。
メモリ130のうちの共有キュー135の部分は、データ処理装置111とデータ処理装置112とで共有するメモリ(共通キュー)である。具体的には、共有キュー135は、ローカルキュー131およびローカルキュー132に格納される第1データおよび第2データを優先度に基づいてソートして格納するキューである。
管理ユニット140は、スレッド121,122の共有キュー135にアクセスする優先度(書き込み順序)をスレッド121,122のリアルタイム制約に基づいて設定する。たとえば、管理ユニット140は、リアルタイム制約を有するスレッドの優先度を、リアルタイム制約を有さないスレッドの優先度より高く設定する判断ユニットを含む。また、管理ユニット140は、スレッド121,122がリアルタイム制約を有さない場合は、優先度をタイムスタンプに基づいて設定してもよい。
または、管理ユニット140は、スレッド121,122の共有キュー135にアクセスする優先度をスレッド121,122の通信プロトコルに基づいて設定してもよい。たとえば、管理ユニット140は、通信プロトコルが所定の通信プロトコルであるスレッドの優先度を、通信プロトコルが所定の通信プロトコルでないスレッドの優先度より高く設定する判断ユニットを含む。また、管理ユニット140は、スレッド121,122の通信プロトコルが所定の通信プロトコルではない場合は、優先度をタイムスタンプに基づいて設定してもよい。
図1−2は、実施の形態にかかるデータ処理システムの他の例を示す図である。図1−2において、図1−1に示した部分と同様の部分については同一の符号を付して説明を省略する。図1−2に示すように、データ処理システム100は、図1−1に示した構成に加えてデータ処理装置113を備えていてもよい。このように、データ処理システム100は、3つのデータ処理装置(CPU)を備えていてもよい。同様に、データ処理システム100は、4つ以上のデータ処理装置(CPU)を備えていてもよい。
スレッド123は、データ処理装置113によって実行されるスレッドである。メモリ130には、図1−1に示した構成に加えて、データ処理装置113に対応するローカルキュー133を設ける。ローカルキュー133は、スレッド123の実行に基づいて生成されるデータを格納するローカルキューである。
また、データ処理システム100は、図1−1に示した構成に加えて通信部150を備えていてもよい。通信部150は、共有キュー135に書き込まれたデータを順次読み出し、読み出したデータを他の通信装置へ送信するネットワークアダプタである。たとえば、通信部150は、キャリア通信やアドホック通信などのネットワークアダプタである。
このように、共有キュー135は、たとえば通信部150による送信待ちのための通信バッファに適用することができる。ただし、共有キュー135は通信バッファに限らず、スピーカなどによる音声出力待ちのバッファなどにも適用可能である。以下、主に図1−2に示したデータ処理システム100について説明する。
(データ処理システムのハードウェア構成)
図2は、データ処理システムのハードウェア構成例を示す図である。図2に示すように、データ処理システム100は、CPU211〜21n(nは2以上の自然数)と、メインメモリ220と、補助メモリ230と、ユーザインターフェース240と、通信インターフェース250と、を備えている。CPU211〜21n、メインメモリ220、補助メモリ230、ユーザインターフェース240および通信インターフェース250は、バス201によって接続されている。
図2は、データ処理システムのハードウェア構成例を示す図である。図2に示すように、データ処理システム100は、CPU211〜21n(nは2以上の自然数)と、メインメモリ220と、補助メモリ230と、ユーザインターフェース240と、通信インターフェース250と、を備えている。CPU211〜21n、メインメモリ220、補助メモリ230、ユーザインターフェース240および通信インターフェース250は、バス201によって接続されている。
CPU211〜21nは、データ処理システム100の全体の制御を司るマルチプロセッサである。メインメモリ220は、たとえばRAM(Random Access Memory)である。メインメモリ220は、CPU211〜21nのワークエリアとして使用される。補助メモリ230は、たとえば、ハードディスクや光ディスクなどの不揮発メモリである。補助メモリ230には、データ処理システム100を動作させる各種のプログラムが記憶されている。補助メモリ230に記憶されたプログラムは、メインメモリ220にロードされてCPU211〜21nによって実行される。
ユーザインターフェース240は、たとえば、ユーザからの操作入力を受け付ける入力デバイスや、ユーザへ情報を出力する出力デバイスなどを含む。入力デバイスは、たとえばキー(たとえばキーボード)やリモコンなどによって実現することができる。出力デバイスは、たとえばディスプレイやスピーカなどによって実現することができる。また、タッチパネルなどによって入力デバイスおよび出力デバイスを実現してもよい。ユーザインターフェース240はCPU211〜21nによって制御される。
通信インターフェース250は、たとえば、有線や無線によってデータ処理システム100の外部との間で通信を行う通信インターフェースである。通信インターフェース250はCPU211〜21nによって制御される。
図1−1,図1−2に示したデータ処理装置111〜113は、たとえばCPU211〜21nによって実現することができる。メモリ130は、たとえばメインメモリ220によって実現することができる。管理ユニット140は、たとえば、CPU211〜21nによって実行されるOSやアプリケーションの機能として実現することができる。通信部150は、たとえば通信インターフェース250によって実現することができる。
(管理ユニットの構成)
図3は、管理ユニットの構成例を示す図である。図3に示すように、管理ユニット140は、取出部310と、記憶部320と、ポリシ判断部330と、プロセステーブル331と、制約テーブル332と、信頼性テーブル333と、ソート書込部340と、を備えている。
図3は、管理ユニットの構成例を示す図である。図3に示すように、管理ユニット140は、取出部310と、記憶部320と、ポリシ判断部330と、プロセステーブル331と、制約テーブル332と、信頼性テーブル333と、ソート書込部340と、を備えている。
取出部310、ポリシ判断部330およびソート書込部340は、たとえば図2に示したCPU211〜21nのいずれかによって実現することができる。記憶部320は、たとえば図2に示したメインメモリ220によって実現することができる。プロセステーブル331、制約テーブル332および信頼性テーブル333は、たとえば図2に示した補助メモリ230に記憶されている。また、プロセステーブル331、制約テーブル332および信頼性テーブル333は、システム設計時に予め記憶されていてもよいし、アプリケーションのインストール時に記憶または更新されてもよい。
取出部310は、ローカルキュー131〜133(各ローカルキュー)のうちのデータが格納されたローカルキューからデータを1つずつ取り出して記憶部320に格納する。また、取出部310は、ローカルキュー131〜133のうちの記憶部320から取り出されたデータの出身キューがソート書込部340から通知されると、通知された出身キューに格納されたデータを1つ読み出して記憶部320に書き込む。これにより、記憶部320には、ローカルキュー131〜133からのデータが1つずつ記憶される。
ポリシ判断部330は、記憶部320に記憶された各データの各組み合わせについてソートポリシを判断する判断ユニットである。たとえば、記憶部320にはデータA,B,Cが記憶されているとする。ポリシ判断部330は、データA,B、データB,C、データA,Cの各組み合わせについてソートポリシを決定する。ポリシ判断部330は、決定した各組み合わせのソートポリシをソート書込部340へ通知する。
ソート書込部340は、ポリシ判断部330から通知された各組み合わせのソートポリシに基づいて、記憶部320の各組み合わせのデータをソートする。たとえば、ポリシ判断部330から通知された各ソートポリシにより、データA,Bの組み合わせではデータAが先頭となり、データB,Cの組み合わせではデータBが先頭となり、データA,Cの組み合わせではデータCが先頭となったとする。
ソート書込部340は、3つの組み合わせのうちの2つの組み合わせで先頭となったデータAを、データA,B,Cで最も優先されるデータとして決定する。ソート書込部340は、最も優先されるデータとして決定したデータAを記憶部320から取り出して共有キュー135に書き込む。
なお、ソート書込部340によるデータのソートはこれに限らない。たとえば、記憶部320に記憶された各データには各スレッドによって設定された優先度が設定されていてもよい。そして、ソート書込部340は、ポリシ判断部330から通知されたソートポリシに基づいて、記憶部320に記憶された各データの優先度を変更する。たとえば、ソート書込部340は、リアルタイム制約のあるスレッドのデータを優先するソートポリシが通知された場合は、リアルタイム制約のあるスレッドのデータの優先度を上げる。そして、ソート書込部340は、ソートポリシに基づいて変更した優先度によって記憶部320に記憶された各データをソートしてもよい。
これにより、スレッド121〜123の共有キュー135にアクセスする優先度(書き込み順序)をスレッド121〜123のリアルタイム制約や通信プロトコルに基づいて設定することができる。また、管理ユニット140は、ローカルキュー131〜133のデータが一定量を超えた場合に、一定量を超えたデータを破棄してもよい。
(各テーブルについて)
図4−1は、プロセステーブルの一例を示す図である。図4−1に示すプロセステーブル331は、図3に示したプロセステーブル331の一例である。図4−1に示すように、プロセステーブル331は、「プログラムイメージ」と、「プロセスID」と、「親プロセスID」と、「プロセスグループID」と、「使用プロトコル」と、「使用ポート番号」と、を項目として含んでいる。プロセステーブル331の各行はデータ処理装置111〜113によって実行される各プロセスを示している。
図4−1は、プロセステーブルの一例を示す図である。図4−1に示すプロセステーブル331は、図3に示したプロセステーブル331の一例である。図4−1に示すように、プロセステーブル331は、「プログラムイメージ」と、「プロセスID」と、「親プロセスID」と、「プロセスグループID」と、「使用プロトコル」と、「使用ポート番号」と、を項目として含んでいる。プロセステーブル331の各行はデータ処理装置111〜113によって実行される各プロセスを示している。
「プログラムイメージ」は、プロセスを実行しているプログラム名を示している。なお、プロセステーブル331は、「プログラムイメージ」に代えてプロセスを実行しているプログラムのIDなどを項目として含んでいてもよい。
「プロセスID」は、プロセスを識別するIDである。「親プロセスID」は、プロセスの親プロセスを識別するIDである。「プロセスグループID」は、プロセスが属するプロセスグループを識別するIDである。「使用プロトコル」は、プロセスが生成したデータの送信に使用する通信プロトコルである。「使用ポート番号」は、プロセスが生成したデータの送信に使用するポート番号である。
たとえば1行目が示す「プロセスID」が「1240」のプロセスは、「プロセスID」が「1164」のプロセスから生成されたプロセスである。また、1行目が示す「プロセスID」が「1240」のプロセスは、通信を行わないプロセスであり、「使用プロトコル」および「使用ポート番号」は対応付けられていない。
2行目が示す「プロセスID」が「1204」のプロセスは、1行目が示す「プロセスID」が「1240」のプロセスから生成されたプロセスである。2行目が示す「プロセスID」が「1204」のプロセスは、生成された際に、「プロセスグループID」が「1204」の新たなプロセスグループのルートに設定されている。
3行目が示す「プロセスID」が「1732」のプロセスは、2行目が示す「プロセスID」が「1204」のプロセスから生成されたプロセスである。また、3行目が示す「プロセスID」が「1732」のプロセスには、通信を行うために「使用プロトコル」の「TCP」および「使用ポート番号」の「1068」が割り当てられている。
4行目が示す「プロセスID」が「5056」のプロセスは、2行目が示す「プロセスID」が「1204」のプロセスから生成されたプロセスである。また、4行目が示す「プロセスID」が「5056」のプロセスには、通信を行うために「使用プロトコル」の「TCP」および「使用ポート番号」の「1391」が割り当てられている。
図4−2は、制約テーブルの一例を示す図である。図4−2に示す制約テーブル332は、図3に示した制約テーブル332の一例である。図4−2に示すように、制約テーブル332は、「プログラムイメージ」と、「使用プロトコル」と、「制約フラグ」と、を項目として含んでいる。制約テーブル332の各行はデータ処理装置111〜113によって実行される各プロセスを示している。
「プログラムイメージ」および「使用プロトコル」は、図4−1に示したプロセステーブル331の「プログラムイメージ」および「使用プロトコル」に対応している。「制約フラグ」は、プロセスにリアルタイム制約があるか否かを示す情報である。具体的には、「制約フラグ」が「0」の場合はプロセスにリアルタイム制約がないことを示す。「制約フラグ」が「1」の場合はプロセスにリアルタイム制約があることを示す。
図4−3は、信頼性テーブルの一例を示す図である。図4−3に示す信頼性テーブル333は、図3に示した信頼性テーブル333の一例である。図4−3に示すように、信頼性テーブル333は、「使用プロトコル」と、「信頼性フラグ」と、を項目として含んでいる。信頼性テーブル333の各行はデータ処理装置111〜113によって実行される各プロセスが使用する通信プロトコルを示している。
「使用プロトコル」は、図4−1に示したプロセステーブル331の「使用プロトコル」に対応している。「信頼性フラグ」は、通信プロトコルの信頼性の要否を示す情報である。具体的には、「信頼性フラグ」が「1」の場合は通信プロトコルに信頼性が求められることを示す。また、「信頼性フラグ」が「0」の場合は通信プロトコルに信頼性が求められないことを示す。
(管理ユニットによるキュー管理処理)
図5は、管理ユニットによるキュー管理処理の一例を示すフローチャートである。管理ユニット140は、たとえば図5に示す各ステップを実行する。まず、管理ユニット140は、管理ユニット140によるキュー管理処理の割り込みタイミングか否かを判断し(ステップS501)、割り込みタイミングになるまで待つ(ステップS501:Noのループ)。
図5は、管理ユニットによるキュー管理処理の一例を示すフローチャートである。管理ユニット140は、たとえば図5に示す各ステップを実行する。まず、管理ユニット140は、管理ユニット140によるキュー管理処理の割り込みタイミングか否かを判断し(ステップS501)、割り込みタイミングになるまで待つ(ステップS501:Noのループ)。
ステップS501において、割り込みタイミングになると(ステップS501:Yes)、取出部310が、各ローカルキュー(ローカルキュー131〜133)の少なくともいずれかにデータが書き込まれているか否かを判断する(ステップS502)。各ローカルキューのいずれにもデータが書き込まれていない場合(ステップS502:No)は、管理ユニット140は、ステップS501へ戻る。
ステップS502において、各ローカルキューの少なくともいずれかにデータが書き込まれている場合(ステップS502:Yes)は、取出部310が、各ローカルキューからデータを1つずつ取り出して記憶部320に書き込む(ステップS503)。つぎに、ポリシ判断部330が、記憶部320に書き込まれた各データの組み合わせごとにソートポリシを決定する(ステップS504)。ソートポリシの判断処理については後述する(たとえば図6参照)。
つぎに、ソート書込部340が、ステップS504によって決定されたソートポリシに基づいて、記憶部320の各データのうちの最も優先されるデータを記憶部320から取り出して共有キュー135に書き込む(ステップS505)。つぎに、取出部310が、ステップS505によって取り出されたデータの出身キューからデータを1つ取り出して記憶部320に書き込む(ステップS506)。
つぎに、管理ユニット140は、割り込み処理を終了するか否かを判断する(ステップS507)。割り込み処理を終了しない場合(ステップS507:No)は、管理ユニット140は、ステップS504へ戻る。割り込み処理を終了する場合(ステップS507:Yes)は、管理ユニット140は、ステップS501へ戻る。
以上の各ステップにより、管理ユニット140は、スレッド121〜123によってローカルキュー131〜133に書き込まれたデータを、ソートポリシに基づく順序で共有キュー135に移すことができる。
(ソートポリシの判断処理)
図6は、ソートポリシの判断処理の一例を示すフローチャートである。ポリシ判断部330は、図5に示したステップS504において、記憶部320の各データの組み合わせごとに、たとえば図6に示す各ステップを実行することによりソートポリシを決定する。まず、ポリシ判断部330は、対象の組み合わせにかかる各データのスレッド間に関連があるか否かを判断する(ステップS601)。スレッド間の関連の有無の判定処理については後述する(たとえば図7参照)。
図6は、ソートポリシの判断処理の一例を示すフローチャートである。ポリシ判断部330は、図5に示したステップS504において、記憶部320の各データの組み合わせごとに、たとえば図6に示す各ステップを実行することによりソートポリシを決定する。まず、ポリシ判断部330は、対象の組み合わせにかかる各データのスレッド間に関連があるか否かを判断する(ステップS601)。スレッド間の関連の有無の判定処理については後述する(たとえば図7参照)。
ステップS601において、スレッド間に関連がある場合(ステップS601:Yes)は、ステップS609へ移行する。スレッド間に関連がない場合(ステップS601:No)は、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドについてリアルタイム制約の有無を判定する(ステップS602)。リアルタイム制約の有無の判定処理については後述する(たとえば図8参照)。
つぎに、ポリシ判断部330は、ステップS602による判定結果に基づいて、対象の組み合わせにかかる各データの各スレッドのうちの一方のスレッドのみにリアルタイム制約があるか否かを判断する(ステップS603)。一方のスレッドのみにリアルタイム制約がある場合(ステップS603:Yes)は、ポリシ判断部330は、対象の組み合わせのソートポリシを、リアルタイム制約があるスレッドを優先するソートポリシに決定し(ステップS604)、一連の処理を終了する。
ステップS603において、両方のスレッドにリアルタイム制約があり、または両方のスレッドにリアルタイム制約がない場合(ステップS603:No)は、ポリシ判断部330は、ステップS605へ移行する。すなわち、ポリシ判断部330は、ステップS602による判定結果に基づいて、対象の組み合わせにかかる各データの各スレッドのうちの両方のスレッドにリアルタイム制約があるか否かを判断する(ステップS605)。
ステップS605において、両方のスレッドにリアルタイム制約がない場合(ステップS605:No)は、ポリシ判断部330は、ステップS609へ移行する。両方のスレッドにリアルタイム制約がある場合(ステップS605:Yes)は、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドについて信頼性の要否を判定する(ステップS606)。信頼性の要否の判定処理については後述する(たとえば図9参照)。
つぎに、ポリシ判断部330は、ステップS606による判定結果に基づいて、対象の組み合わせにかかる各データの各スレッドのうちの一方のスレッドのみに信頼性が必要か否かを判断する(ステップS607)。一方のスレッドのみに信頼性が必要である場合(ステップS607:Yes)は、ポリシ判断部330は、対象の組み合わせのソートポリシを、信頼性が必要なスレッドを優先するソートポリシに決定し(ステップS608)、一連の処理を終了する。
ステップS607において、各スレッドに信頼性が必要であり、または各スレッドに信頼性が必要でない場合(ステップS607:No)は、ポリシ判断部330は、ステップS609へ移行する。すなわち、ポリシ判断部330は、対象の組み合わせのソートポリシを、タイムスタンプが古いスレッドを優先するソートポリシに決定し(ステップS609)、一連の処理を終了する。
以上の各ステップにより、ポリシ判断部330は、記憶部320の各データの組み合わせごとに、スレッド間の関連の有無、リアルタイム制約の有無および信頼性の要否に基づいてソートポリシを決定することができる。
たとえば、スレッド間の関連の有無による判断を行い、スレッド間に関連がある場合はタイムスタンプによるソートポリシを選択することができる。これにより、関連のある各スレッドが生成したデータの順序を管理ユニット140により変えてしまい、各スレッドの動作が不安定になることを回避することができる。
また、スレッド間に関連がある場合は、スレッド間で連携を取り合ってお互いに調整しながら共有キュー135にデータを書き込むことが可能である。このため、タイムスタンプによるソートポリシを選択しても、リアルタイム性が求められるスレッドのスループットが低下することを回避することができる。
また、リアルタイム制約の有無による判断を行い、一方のスレッドにのみリアルタイム制約がある場合は、リアルタイム制約があるスレッドのデータを優先するソートポリシを選択することができる。これにより、リアルタイム制約があるスレッドのデータを優先的に共有キュー135に移すことができる。このため、リアルタイム性が求められるスレッドのスループットを向上させることができる。また、両方のスレッドにリアルタイム制約がない場合は、タイムスタンプによるソートポリシを選択することができる。
また、信頼性の要否による判断を行い、一方のスレッドにのみ信頼性が必要である場合は、信頼性が必要であるスレッドのデータを優先するソートポリシを選択することができる。これにより、信頼性が必要であるスレッドのデータを優先的に共有キュー135に移すことができる。このため、信頼性が必要であるスレッドのスループットを向上させ、信頼性を向上させることができる。
なお、ソートポリシの決定処理はこれに限らない。たとえば、図6に示した各ステップにおいて、スレッド間の関連の有無による判断(ステップS601)は省いてもよい。また、図6に示した各ステップにおいて、リアルタイム制約の有無による判断(ステップS602〜S605)は省いてもよい。また、図6に示した各ステップにおいて、信頼性の要否による判断(ステップS606〜S608)は省いてもよい。
図7は、スレッド間の関連の有無の判定処理の一例を示すフローチャートである。ポリシ判断部330は、図6に示したステップS601において、たとえば図7に示す各ステップを実行することによってスレッド間の関連の有無を判定する。まず、ポリシ判断部330は、対象の組み合わせにかかる各データのヘッダから各データの「使用プロトコル」と「ポート番号」を取得する(ステップS701)。
つぎに、ポリシ判断部330は、ステップS701によって取得した「使用プロトコル」と「ポート番号」およびプロセステーブル331から各データの「親プロセスID」を特定する(ステップS702)。具体的には、ポリシ判断部330は、プロセステーブル331から、取得した「使用プロトコル」と「ポート番号」の組み合わせに対応する「親プロセスID」を特定する。
つぎに、ポリシ判断部330は、ステップS702によって特定した各データの「親プロセスID」が同一か否かを判断する(ステップS703)。各データの「親プロセスID」が同一である場合(ステップS703:Yes)は、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドに関連があると判定し(ステップS704)、一連の処理を終了する。各データの「親プロセスID」が同一でない場合(ステップS703:No)は、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドに関連がないと判定し(ステップS705)、一連の処理を終了する。
以上の各ステップにより、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドの関連の有無を判定することができる。なお、各データの「親プロセスID」が同一か否かによって各スレッドの関連の有無を判定する処理について説明したが、各スレッドの関連の有無を判定する処理はこれに限らない。たとえば、各データの「プロセスグループID」が同一か否かによって各スレッドの関連の有無を判定してもよい。
図8は、リアルタイム制約の有無の判定処理の一例を示すフローチャートである。ポリシ判断部330は、図6に示したステップS602において、たとえば図8に示す各ステップを実行することによって各スレッドについてリアルタイム制約の有無を判定する。まず、ポリシ判断部330は、対象の組み合わせにかかる各データのヘッダから各データの「使用プロトコル」と「ポート番号」を取得する(ステップS801)。
つぎに、ポリシ判断部330は、ステップS801によって取得した「使用プロトコル」と「ポート番号」およびプロセステーブル331から各データの「プログラムイメージ」を特定する(ステップS802)。具体的には、ポリシ判断部330は、プロセステーブル331から、取得した「使用プロトコル」と「ポート番号」の組み合わせに対応する「プログラムイメージ」を特定する。
つぎに、ポリシ判断部330は、ステップS801によって取得した「使用プロトコル」とステップS802によって特定した「プログラムイメージ」および制約テーブル332から各データの「制約フラグ」を取得し(ステップS803)、一連の処理を終了する。具体的には、ポリシ判断部330は、制約テーブル332から、「使用プロトコル」と「プログラムイメージ」の組み合わせに対応する「制約フラグ」を取得する。
以上の各ステップにより、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドについて、リアルタイム制約の有無を示す「制約フラグ」を取得し、リアルタイム制約の有無を判定することができる。
図9は、信頼性の要否の判定処理の一例を示すフローチャートである。ポリシ判断部330は、図6に示したステップS606において、たとえば図9に示す各ステップを実行することによって各スレッドについて信頼性の要否を判定する。まず、ポリシ判断部330は、対象の組み合わせにかかる各データのヘッダから各データの「使用プロトコル」を取得する(ステップS901)。
つぎに、ポリシ判断部330は、ステップS901によって取得した「使用プロトコル」および信頼性テーブル333から各データの「信頼性フラグ」を取得し(ステップS902)、一連の処理を終了する。具体的には、ポリシ判断部330は、信頼性テーブル333から、「使用プロトコル」に対応する「信頼性フラグ」を取得する。
以上の各ステップにより、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドについて、信頼性の要否を示す「信頼性フラグ」を取得し、信頼性の要否を判定することができる。
(キュー管理処理の例)
図10−1〜図10−5は、キュー管理処理の一例を示す図である。図10−1〜図10−5において、図1−2に示した部分と同様の部分については同一の符号を付して説明を省略する。図10−1に示すように、データ処理装置111はスレッド「A」およびスレッド「B」を実行し、データ処理装置112はスレッド「C」を実行し、データ処理装置113はスレッド「D」を実行しているとする。スレッド「A」は、スレッド「C」と関連があり、リアルタイム制約があり、信頼性が要求されないスレッドである。
図10−1〜図10−5は、キュー管理処理の一例を示す図である。図10−1〜図10−5において、図1−2に示した部分と同様の部分については同一の符号を付して説明を省略する。図10−1に示すように、データ処理装置111はスレッド「A」およびスレッド「B」を実行し、データ処理装置112はスレッド「C」を実行し、データ処理装置113はスレッド「D」を実行しているとする。スレッド「A」は、スレッド「C」と関連があり、リアルタイム制約があり、信頼性が要求されないスレッドである。
スレッド「B」は、他のスレッドと関連がなく、リアルタイム制約があり、信頼性が要求されるスレッドである。スレッド「C」は、スレッド「A」と関連があり、リアルタイム制約があり、信頼性が要求されないスレッドである。スレッド「D」は、他のスレッドと関連がなく、リアルタイム制約があり、信頼性が要求されないスレッドである。
ローカルキュー131には、スレッド「A」の実行に基づいて生成されたデータ「A1」,「A2」と、スレッド「B」の実行に基づいて生成されたデータ「B1」,「B2」と、が格納されている。また、ローカルキュー131の各データは、データ「A1」,「B1」,「A2」,「B2」の順に格納されている。
ローカルキュー132には、スレッド「C」の実行に基づいて生成されたデータ「C1」〜「C4」が格納されている。また、ローカルキュー132の各データは、データ「C1」,「C2」,「C3」,「C4」の順に格納されている。ローカルキュー133には、スレッド「D」の実行に基づいて生成されたデータ「D1」〜「D4」が格納されている。また、ローカルキュー133の各データは、データ「D1」,「D2」,「D3」,「D4」の順に格納されている。
図10−2に示すように、取出部310は、ローカルキュー131〜133から先頭のデータを一つずつ取り出して記憶部320に書き込む。このため、記憶部320には、ローカルキュー131の先頭のデータ「A1」と、ローカルキュー132の先頭のデータ「C1」と、ローカルキュー133の先頭のデータ「D1」と、が書き込まれる。
図10−3に示すように、ポリシ判断部330は、記憶部320のデータ「A1」,「C1」,「D1」の組み合わせごとにソートポリシを決定する。具体的には、ポリシ判断部330は、データ「A1」,「C1」を生成したスレッド「A」,「C」の間には関連があるため、データ「A1」,「C1」のソートポリシ1031をタイムスタンプによるソートポリシに決定する。
また、データ「A1」,「D1」を生成したスレッド「A」,「D」の間には関連がなく、スレッド「A」,「D」ともにリアルタイム制約があり、スレッド「A」,「D」ともに信頼性が要求されない。このため、ポリシ判断部330は、データ「A1」,「D1」のソートポリシ1032をタイムスタンプによるソートポリシに決定する。
また、データ「C1」,「D1」を生成したスレッド「C」,「D」の間には関連がなく、スレッド「C」,「D」ともにリアルタイム制約があり、スレッド「C」,「D」ともに信頼性が要求されない。このため、ポリシ判断部330は、データ「C1」,「D1」のソートポリシ1033をタイムスタンプによるソートポリシに決定する。
図10−4に示すように、ソート書込部340は、ポリシ判断部330によって決定された各ソートポリシに基づいて、記憶部320の各データのうちの最も優先されるデータを取り出して共有キュー135へ書き込む。ここでは、記憶部320の各データのうちのデータ「D1」のタイムスタンプが最も古く、データ「D1」が記憶部320から取り出されて共有キュー135へ書き込まれたとする。
図10−5に示すように、取出部310は、ソート書込部340によって記憶部320から取り出されたデータ「D1」の出身キューであるローカルキュー133の先頭のデータを取り出して記憶部320へ書き込む。ここではデータ「D2」が記憶部320に書き込まれる。このように、ローカルキュー131〜133の先頭の各データを候補として記憶部320に移し、候補の中から最も優先されるデータを共有キュー135に移す処理を繰り返す。
以上説明したように、データ処理システムおよびデータ処理方法によれば、リアルタイム性が求められるスレッドのスループットを向上させることができる。たとえば、リアルタイム制約のあるスレッドのスループットを向上させ、リアルタイム制約を守ることができる。または、信頼性が求められる通信プロトコルを用いるスレッドのスループットを向上させ、信頼性を向上させることができる。
たとえば、データ処理システム100において、データ処理装置111で実行されるスレッド121によってビデオチャットをしながら、同時にデータ処理装置112で実行されるスレッド122によってファイルのアップロードを行うとする。
ビデオチャットでは、一定の時間内に一定のパケットデータを送信することが求められる(リアルタイム制約がある)が、パケットデータの到着順序性やパケットロスに対する信頼性はそこまで求められない。一方、ファイルのアップロードでは、リアルタイム制約はないが、パケットデータの到着順序が守られなかったりパケットロスが発生したりした場合は再送要求を行うなど、信頼性が求められる。
ローカルキュー131にビデオチャットのパケットデータが格納され、ローカルキュー132にアップロードにかかるファイルが格納されていた場合に、管理ユニット140は、ローカルキュー131のパケットデータを先に共有キュー135へ移す。これにより、リアルタイム制約があるビデオチャットのパケットデータのスループットを向上させることができる。
また、スレッド121〜123ごとにローカルキュー(ローカルキュー131〜133)を設け、ローカルキュー131〜133のデータを管理ユニット140が非同期で共有キュー135に移すことができる。これにより、スレッド121〜123の間の排他制御を抑制し、スレッド121〜123の排他待ち時間を短くすることができる。
なお、本実施の形態で説明したデータ処理法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
100 データ処理システム
131〜133 ローカルキュー
135 共有キュー
201 バス
1031〜1033 ソートポリシ
131〜133 ローカルキュー
135 共有キュー
201 バス
1031〜1033 ソートポリシ
本発明は、データを処理するデータ処理システムおよびデータ処理方法に関する。
現在のコンピュータシステムにおいては、複数のソフトウェアによる一つのハードウェアの共有が可能なマルチタスクのOS(Operating System:オペレーティングシステム)が利用されている。たとえば、ネットワークアダプタが1つしかないパーソナルコンピュータ上でブラウザとメーラを同時に起動することが可能である。この場合に、たとえば、ブラウザによるログイン情報などの送信と、メーラによる電子メールの送信と、が同時に行われることが考えられる。
この場合は、OSは、ブラウザおよびメーラからデータの送信要求を受け付けると、いったんメインメモリ上の一時領域である通信バッファに送信要求を格納する。その後、タイマー割り込みなどにより起動されたデバイスドライバが、通信バッファからデータを取り出し、ネットワークアダプタを用いて送信を行う。通信バッファは、たとえばFIFO(First In First Out:先入れ先出し)のキューで実現される。キューはたとえばリングバッファにより実装される。
マルチプロセッサシステムやマルチコアシステムにおいては、複数のCPU(Central Processing Unit:中央処理装置)がメモリ上の通信バッファに同時にアクセスすることにより通信バッファ内のデータが破壊される可能性がある。このため、CPU間で排他制御を行うことによってデータの保護が行われる。
排他制御としては、MUTEX(MUTual EXclusion:相互排他)、セマフォ、スピンロックなどが挙げられる。これらの排他制御において、各CPUは、キューへの書き込みを行う前に、まずキューへのアクセス権を排他的に取得し、データの書き込み後にアクセス権を放棄する。一方、各CPUは、アクセス権の取得に失敗した場合は待機し(排他待ち)、アクセス権を取得してからデータの書き込みを行う。
したがって、排他制御を行うことにより、ある時刻にキューへのアクセス権を有するのは1つのCPU(スレッド)のみとなり、キューへの書き込みは逐次的に行われる。これにより、上書きなどによるパケットデータの破壊が回避される。
なお、プロセッサ間でデータを転送する技術において、メモリ上にプロセッサごとに独立して設けられたバッファ領域を介してデータを転送する方法が知られている(たとえば、下記特許文献1参照。)。また、ネットワークから受信したデータを受信バッファに格納し、受信バッファから読み出したデータを送信バッファに非同期に格納する方法が知られている(たとえば、下記特許文献2参照。)。
しかしながら、上述した従来技術では、複数のスレッドが共有メモリにアクセスする場合に、リアルタイム性が求められるスレッドが他のスレッドより優先的に共有メモリにアクセスできるとは限らない。このため、リアルタイム性が求められるスレッドのスループットを向上させることができないという問題がある。
本発明は、上述した従来技術による問題点を解消するため、リアルタイム性が求められるスレッドのスループットを向上させることができるデータ処理システムおよびデータ処理方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数のデータ処理装置に含まれる第1データ処理装置によって実行される第1スレッドが第1データを出力し、前記複数のデータ処理装置に含まれる第2データ処理装置によって実行される第2スレッドが第2データを出力し、前記複数のデータ処理装置の一のデータ処理装置が、前記第1データ処理装置および前記第2データ処理装置で共有されるメモリへの前記第1データおよび前記第2データの書き込み順序を前記第1スレッドおよび前記第2スレッドのリアルタイム制約または通信プロトコルに基づいて設定するデータ処理システムおよびデータ処理方法が提案される。
本発明の一側面によれば、リアルタイム性が求められるスレッドのスループットを向上させることができるという効果を奏する。
以下に図面を参照して、本発明にかかるデータ処理システムおよびデータ処理方法の実施の形態を詳細に説明する。
(実施の形態)
(実施の形態にかかるデータ処理システム)
図1−1は、実施の形態にかかるデータ処理システムの一例を示す図である。図1−1に示すように、実施の形態にかかるデータ処理システム100は、データ処理装置111,112と、メモリ130と、管理ユニット140と、を備えている。
(実施の形態にかかるデータ処理システム)
図1−1は、実施の形態にかかるデータ処理システムの一例を示す図である。図1−1に示すように、実施の形態にかかるデータ処理システム100は、データ処理装置111,112と、メモリ130と、管理ユニット140と、を備えている。
データ処理装置111は、データを処理する第1データ処理装置である。データ処理装置112は、データを処理する第2データ処理装置である。データ処理装置111,112のそれぞれはたとえばCPUである。スレッド121は、データ処理装置111によって実行される第1スレッドである。スレッド122は、データ処理装置112によって実行される第2スレッドである。
メモリ130は、ローカルキュー131,132と、共有キュー135と、を備えている。ローカルキュー131は、スレッド121の実行に基づいて生成される第1データを格納する第1ローカルキューである。ローカルキュー132は、スレッド122の実行に基づいて生成される第2データを格納する第2ローカルキューである。このように、メモリ130には、データ処理装置111,112のそれぞれに対応してローカルキュー131,132が設けられる。
メモリ130のうちの共有キュー135の部分は、データ処理装置111とデータ処理装置112とで共有するメモリ(共通キュー)である。具体的には、共有キュー135は、ローカルキュー131およびローカルキュー132に格納される第1データおよび第2データを優先度に基づいてソートして格納するキューである。
管理ユニット140は、スレッド121,122の共有キュー135にアクセスする優先度(書き込み順序)をスレッド121,122のリアルタイム制約に基づいて設定する。たとえば、管理ユニット140は、リアルタイム制約を有するスレッドの優先度を、リアルタイム制約を有さないスレッドの優先度より高く設定する判断ユニットを含む。また、管理ユニット140は、スレッド121,122がリアルタイム制約を有さない場合は、優先度をタイムスタンプに基づいて設定してもよい。
または、管理ユニット140は、スレッド121,122の共有キュー135にアクセスする優先度をスレッド121,122の通信プロトコルに基づいて設定してもよい。たとえば、管理ユニット140は、通信プロトコルが所定の通信プロトコルであるスレッドの優先度を、通信プロトコルが所定の通信プロトコルでないスレッドの優先度より高く設定する判断ユニットを含む。また、管理ユニット140は、スレッド121,122の通信プロトコルが所定の通信プロトコルではない場合は、優先度をタイムスタンプに基づいて設定してもよい。
図1−2は、実施の形態にかかるデータ処理システムの他の例を示す図である。図1−2において、図1−1に示した部分と同様の部分については同一の符号を付して説明を省略する。図1−2に示すように、データ処理システム100は、図1−1に示した構成に加えてデータ処理装置113を備えていてもよい。このように、データ処理システム100は、3つのデータ処理装置(CPU)を備えていてもよい。同様に、データ処理システム100は、4つ以上のデータ処理装置(CPU)を備えていてもよい。
スレッド123は、データ処理装置113によって実行されるスレッドである。メモリ130には、図1−1に示した構成に加えて、データ処理装置113に対応するローカルキュー133を設ける。ローカルキュー133は、スレッド123の実行に基づいて生成されるデータを格納するローカルキューである。
また、データ処理システム100は、図1−1に示した構成に加えて通信部150を備えていてもよい。通信部150は、共有キュー135に書き込まれたデータを順次読み出し、読み出したデータを他の通信装置へ送信するネットワークアダプタである。たとえば、通信部150は、キャリア通信やアドホック通信などのネットワークアダプタである。
このように、共有キュー135は、たとえば通信部150による送信待ちのための通信バッファに適用することができる。ただし、共有キュー135は通信バッファに限らず、スピーカなどによる音声出力待ちのバッファなどにも適用可能である。以下、主に図1−2に示したデータ処理システム100について説明する。
(データ処理システムのハードウェア構成)
図2は、データ処理システムのハードウェア構成例を示す図である。図2に示すように、データ処理システム100は、CPU211〜21n(nは2以上の自然数)と、メインメモリ220と、補助メモリ230と、ユーザインターフェース240と、通信インターフェース250と、を備えている。CPU211〜21n、メインメモリ220、補助メモリ230、ユーザインターフェース240および通信インターフェース250は、バス201によって接続されている。
図2は、データ処理システムのハードウェア構成例を示す図である。図2に示すように、データ処理システム100は、CPU211〜21n(nは2以上の自然数)と、メインメモリ220と、補助メモリ230と、ユーザインターフェース240と、通信インターフェース250と、を備えている。CPU211〜21n、メインメモリ220、補助メモリ230、ユーザインターフェース240および通信インターフェース250は、バス201によって接続されている。
CPU211〜21nは、データ処理システム100の全体の制御を司るマルチプロセッサである。メインメモリ220は、たとえばRAM(Random Access Memory)である。メインメモリ220は、CPU211〜21nのワークエリアとして使用される。補助メモリ230は、たとえば、ハードディスクや光ディスクなどの不揮発メモリである。補助メモリ230には、データ処理システム100を動作させる各種のプログラムが記憶されている。補助メモリ230に記憶されたプログラムは、メインメモリ220にロードされてCPU211〜21nによって実行される。
ユーザインターフェース240は、たとえば、ユーザからの操作入力を受け付ける入力デバイスや、ユーザへ情報を出力する出力デバイスなどを含む。入力デバイスは、たとえばキー(たとえばキーボード)やリモコンなどによって実現することができる。出力デバイスは、たとえばディスプレイやスピーカなどによって実現することができる。また、タッチパネルなどによって入力デバイスおよび出力デバイスを実現してもよい。ユーザインターフェース240はCPU211〜21nによって制御される。
通信インターフェース250は、たとえば、有線や無線によってデータ処理システム100の外部との間で通信を行う通信インターフェースである。通信インターフェース250はCPU211〜21nによって制御される。
図1−1,図1−2に示したデータ処理装置111〜113は、たとえばCPU211〜21nによって実現することができる。メモリ130は、たとえばメインメモリ220によって実現することができる。管理ユニット140は、たとえば、CPU211〜21nによって実行されるOSやアプリケーションの機能として実現することができる。通信部150は、たとえば通信インターフェース250によって実現することができる。
(管理ユニットの構成)
図3は、管理ユニットの構成例を示す図である。図3に示すように、管理ユニット140は、取出部310と、記憶部320と、ポリシ判断部330と、プロセステーブル331と、制約テーブル332と、信頼性テーブル333と、ソート書込部340と、を備えている。
図3は、管理ユニットの構成例を示す図である。図3に示すように、管理ユニット140は、取出部310と、記憶部320と、ポリシ判断部330と、プロセステーブル331と、制約テーブル332と、信頼性テーブル333と、ソート書込部340と、を備えている。
取出部310、ポリシ判断部330およびソート書込部340は、たとえば図2に示したCPU211〜21nのいずれかによって実現することができる。記憶部320は、たとえば図2に示したメインメモリ220によって実現することができる。プロセステーブル331、制約テーブル332および信頼性テーブル333は、たとえば図2に示した補助メモリ230に記憶されている。また、プロセステーブル331、制約テーブル332および信頼性テーブル333は、システム設計時に予め記憶されていてもよいし、アプリケーションのインストール時に記憶または更新されてもよい。
取出部310は、ローカルキュー131〜133(各ローカルキュー)のうちのデータが格納されたローカルキューからデータを1つずつ取り出して記憶部320に格納する。また、取出部310は、ローカルキュー131〜133のうちの記憶部320から取り出されたデータの出身キューがソート書込部340から通知されると、通知された出身キューに格納されたデータを1つ読み出して記憶部320に書き込む。これにより、記憶部320には、ローカルキュー131〜133からのデータが1つずつ記憶される。
ポリシ判断部330は、記憶部320に記憶された各データの各組み合わせについてソートポリシを判断する判断ユニットである。たとえば、記憶部320にはデータA,B,Cが記憶されているとする。ポリシ判断部330は、データA,B、データB,C、データA,Cの各組み合わせについてソートポリシを決定する。ポリシ判断部330は、決定した各組み合わせのソートポリシをソート書込部340へ通知する。
ソート書込部340は、ポリシ判断部330から通知された各組み合わせのソートポリシに基づいて、記憶部320の各組み合わせのデータをソートする。たとえば、ポリシ判断部330から通知された各ソートポリシにより、データA,Bの組み合わせではデータAが先頭となり、データB,Cの組み合わせではデータBが先頭となり、データA,Cの組み合わせではデータCが先頭となったとする。
ソート書込部340は、3つの組み合わせのうちの2つの組み合わせで先頭となったデータAを、データA,B,Cで最も優先されるデータとして決定する。ソート書込部340は、最も優先されるデータとして決定したデータAを記憶部320から取り出して共有キュー135に書き込む。
なお、ソート書込部340によるデータのソートはこれに限らない。たとえば、記憶部320に記憶された各データには各スレッドによって設定された優先度が設定されていてもよい。そして、ソート書込部340は、ポリシ判断部330から通知されたソートポリシに基づいて、記憶部320に記憶された各データの優先度を変更する。たとえば、ソート書込部340は、リアルタイム制約のあるスレッドのデータを優先するソートポリシが通知された場合は、リアルタイム制約のあるスレッドのデータの優先度を上げる。そして、ソート書込部340は、ソートポリシに基づいて変更した優先度によって記憶部320に記憶された各データをソートしてもよい。
これにより、スレッド121〜123の共有キュー135にアクセスする優先度(書き込み順序)をスレッド121〜123のリアルタイム制約や通信プロトコルに基づいて設定することができる。また、管理ユニット140は、ローカルキュー131〜133のデータが一定量を超えた場合に、一定量を超えたデータを破棄してもよい。
(各テーブルについて)
図4−1は、プロセステーブルの一例を示す図である。図4−1に示すプロセステーブル331は、図3に示したプロセステーブル331の一例である。図4−1に示すように、プロセステーブル331は、「プログラムイメージ」と、「プロセスID」と、「親プロセスID」と、「プロセスグループID」と、「使用プロトコル」と、「使用ポート番号」と、を項目として含んでいる。プロセステーブル331の各行はデータ処理装置111〜113によって実行される各プロセスを示している。
図4−1は、プロセステーブルの一例を示す図である。図4−1に示すプロセステーブル331は、図3に示したプロセステーブル331の一例である。図4−1に示すように、プロセステーブル331は、「プログラムイメージ」と、「プロセスID」と、「親プロセスID」と、「プロセスグループID」と、「使用プロトコル」と、「使用ポート番号」と、を項目として含んでいる。プロセステーブル331の各行はデータ処理装置111〜113によって実行される各プロセスを示している。
「プログラムイメージ」は、プロセスを実行しているプログラム名を示している。なお、プロセステーブル331は、「プログラムイメージ」に代えてプロセスを実行しているプログラムのIDなどを項目として含んでいてもよい。
「プロセスID」は、プロセスを識別するIDである。「親プロセスID」は、プロセスの親プロセスを識別するIDである。「プロセスグループID」は、プロセスが属するプロセスグループを識別するIDである。「使用プロトコル」は、プロセスが生成したデータの送信に使用する通信プロトコルである。「使用ポート番号」は、プロセスが生成したデータの送信に使用するポート番号である。
たとえば1行目が示す「プロセスID」が「1240」のプロセスは、「プロセスID」が「1164」のプロセスから生成されたプロセスである。また、1行目が示す「プロセスID」が「1240」のプロセスは、通信を行わないプロセスであり、「使用プロトコル」および「使用ポート番号」は対応付けられていない。
2行目が示す「プロセスID」が「1204」のプロセスは、1行目が示す「プロセスID」が「1240」のプロセスから生成されたプロセスである。2行目が示す「プロセスID」が「1204」のプロセスは、生成された際に、「プロセスグループID」が「1204」の新たなプロセスグループのルートに設定されている。
3行目が示す「プロセスID」が「1732」のプロセスは、2行目が示す「プロセスID」が「1204」のプロセスから生成されたプロセスである。また、3行目が示す「プロセスID」が「1732」のプロセスには、通信を行うために「使用プロトコル」の「TCP」および「使用ポート番号」の「1068」が割り当てられている。
4行目が示す「プロセスID」が「5056」のプロセスは、2行目が示す「プロセスID」が「1204」のプロセスから生成されたプロセスである。また、4行目が示す「プロセスID」が「5056」のプロセスには、通信を行うために「使用プロトコル」の「TCP」および「使用ポート番号」の「1391」が割り当てられている。
図4−2は、制約テーブルの一例を示す図である。図4−2に示す制約テーブル332は、図3に示した制約テーブル332の一例である。図4−2に示すように、制約テーブル332は、「プログラムイメージ」と、「使用プロトコル」と、「制約フラグ」と、を項目として含んでいる。制約テーブル332の各行はデータ処理装置111〜113によって実行される各プロセスを示している。
「プログラムイメージ」および「使用プロトコル」は、図4−1に示したプロセステーブル331の「プログラムイメージ」および「使用プロトコル」に対応している。「制約フラグ」は、プロセスにリアルタイム制約があるか否かを示す情報である。具体的には、「制約フラグ」が「0」の場合はプロセスにリアルタイム制約がないことを示す。「制約フラグ」が「1」の場合はプロセスにリアルタイム制約があることを示す。
図4−3は、信頼性テーブルの一例を示す図である。図4−3に示す信頼性テーブル333は、図3に示した信頼性テーブル333の一例である。図4−3に示すように、信頼性テーブル333は、「使用プロトコル」と、「信頼性フラグ」と、を項目として含んでいる。信頼性テーブル333の各行はデータ処理装置111〜113によって実行される各プロセスが使用する通信プロトコルを示している。
「使用プロトコル」は、図4−1に示したプロセステーブル331の「使用プロトコル」に対応している。「信頼性フラグ」は、通信プロトコルの信頼性の要否を示す情報である。具体的には、「信頼性フラグ」が「1」の場合は通信プロトコルに信頼性が求められることを示す。また、「信頼性フラグ」が「0」の場合は通信プロトコルに信頼性が求められないことを示す。
(管理ユニットによるキュー管理処理)
図5は、管理ユニットによるキュー管理処理の一例を示すフローチャートである。管理ユニット140は、たとえば図5に示す各ステップを実行する。まず、管理ユニット140は、管理ユニット140によるキュー管理処理の割り込みタイミングか否かを判断し(ステップS501)、割り込みタイミングになるまで待つ(ステップS501:Noのループ)。
図5は、管理ユニットによるキュー管理処理の一例を示すフローチャートである。管理ユニット140は、たとえば図5に示す各ステップを実行する。まず、管理ユニット140は、管理ユニット140によるキュー管理処理の割り込みタイミングか否かを判断し(ステップS501)、割り込みタイミングになるまで待つ(ステップS501:Noのループ)。
ステップS501において、割り込みタイミングになると(ステップS501:Yes)、取出部310が、各ローカルキュー(ローカルキュー131〜133)の少なくともいずれかにデータが書き込まれているか否かを判断する(ステップS502)。各ローカルキューのいずれにもデータが書き込まれていない場合(ステップS502:No)は、管理ユニット140は、ステップS501へ戻る。
ステップS502において、各ローカルキューの少なくともいずれかにデータが書き込まれている場合(ステップS502:Yes)は、取出部310が、各ローカルキューからデータを1つずつ取り出して記憶部320に書き込む(ステップS503)。つぎに、ポリシ判断部330が、記憶部320に書き込まれた各データの組み合わせごとにソートポリシを決定する(ステップS504)。ソートポリシの判断処理については後述する(たとえば図6参照)。
つぎに、ソート書込部340が、ステップS504によって決定されたソートポリシに基づいて、記憶部320の各データのうちの最も優先されるデータを記憶部320から取り出して共有キュー135に書き込む(ステップS505)。つぎに、取出部310が、ステップS505によって取り出されたデータの出身キューからデータを1つ取り出して記憶部320に書き込む(ステップS506)。
つぎに、管理ユニット140は、割り込み処理を終了するか否かを判断する(ステップS507)。割り込み処理を終了しない場合(ステップS507:No)は、管理ユニット140は、ステップS504へ戻る。割り込み処理を終了する場合(ステップS507:Yes)は、管理ユニット140は、ステップS501へ戻る。
以上の各ステップにより、管理ユニット140は、スレッド121〜123によってローカルキュー131〜133に書き込まれたデータを、ソートポリシに基づく順序で共有キュー135に移すことができる。
(ソートポリシの判断処理)
図6は、ソートポリシの判断処理の一例を示すフローチャートである。ポリシ判断部330は、図5に示したステップS504において、記憶部320の各データの組み合わせごとに、たとえば図6に示す各ステップを実行することによりソートポリシを決定する。まず、ポリシ判断部330は、対象の組み合わせにかかる各データのスレッド間に関連があるか否かを判断する(ステップS601)。スレッド間の関連の有無の判定処理については後述する(たとえば図7参照)。
図6は、ソートポリシの判断処理の一例を示すフローチャートである。ポリシ判断部330は、図5に示したステップS504において、記憶部320の各データの組み合わせごとに、たとえば図6に示す各ステップを実行することによりソートポリシを決定する。まず、ポリシ判断部330は、対象の組み合わせにかかる各データのスレッド間に関連があるか否かを判断する(ステップS601)。スレッド間の関連の有無の判定処理については後述する(たとえば図7参照)。
ステップS601において、スレッド間に関連がある場合(ステップS601:Yes)は、ステップS609へ移行する。スレッド間に関連がない場合(ステップS601:No)は、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドについてリアルタイム制約の有無を判定する(ステップS602)。リアルタイム制約の有無の判定処理については後述する(たとえば図8参照)。
つぎに、ポリシ判断部330は、ステップS602による判定結果に基づいて、対象の組み合わせにかかる各データの各スレッドのうちの一方のスレッドのみにリアルタイム制約があるか否かを判断する(ステップS603)。一方のスレッドのみにリアルタイム制約がある場合(ステップS603:Yes)は、ポリシ判断部330は、対象の組み合わせのソートポリシを、リアルタイム制約があるスレッドを優先するソートポリシに決定し(ステップS604)、一連の処理を終了する。
ステップS603において、両方のスレッドにリアルタイム制約があり、または両方のスレッドにリアルタイム制約がない場合(ステップS603:No)は、ポリシ判断部330は、ステップS605へ移行する。すなわち、ポリシ判断部330は、ステップS602による判定結果に基づいて、対象の組み合わせにかかる各データの各スレッドのうちの両方のスレッドにリアルタイム制約があるか否かを判断する(ステップS605)。
ステップS605において、両方のスレッドにリアルタイム制約がない場合(ステップS605:No)は、ポリシ判断部330は、ステップS609へ移行する。両方のスレッドにリアルタイム制約がある場合(ステップS605:Yes)は、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドについて信頼性の要否を判定する(ステップS606)。信頼性の要否の判定処理については後述する(たとえば図9参照)。
つぎに、ポリシ判断部330は、ステップS606による判定結果に基づいて、対象の組み合わせにかかる各データの各スレッドのうちの一方のスレッドのみに信頼性が必要か否かを判断する(ステップS607)。一方のスレッドのみに信頼性が必要である場合(ステップS607:Yes)は、ポリシ判断部330は、対象の組み合わせのソートポリシを、信頼性が必要なスレッドを優先するソートポリシに決定し(ステップS608)、一連の処理を終了する。
ステップS607において、各スレッドに信頼性が必要であり、または各スレッドに信頼性が必要でない場合(ステップS607:No)は、ポリシ判断部330は、ステップS609へ移行する。すなわち、ポリシ判断部330は、対象の組み合わせのソートポリシを、タイムスタンプが古いスレッドを優先するソートポリシに決定し(ステップS609)、一連の処理を終了する。
以上の各ステップにより、ポリシ判断部330は、記憶部320の各データの組み合わせごとに、スレッド間の関連の有無、リアルタイム制約の有無および信頼性の要否に基づいてソートポリシを決定することができる。
たとえば、スレッド間の関連の有無による判断を行い、スレッド間に関連がある場合はタイムスタンプによるソートポリシを選択することができる。これにより、関連のある各スレッドが生成したデータの順序を管理ユニット140により変えてしまい、各スレッドの動作が不安定になることを回避することができる。
また、スレッド間に関連がある場合は、スレッド間で連携を取り合ってお互いに調整しながら共有キュー135にデータを書き込むことが可能である。このため、タイムスタンプによるソートポリシを選択しても、リアルタイム性が求められるスレッドのスループットが低下することを回避することができる。
また、リアルタイム制約の有無による判断を行い、一方のスレッドにのみリアルタイム制約がある場合は、リアルタイム制約があるスレッドのデータを優先するソートポリシを選択することができる。これにより、リアルタイム制約があるスレッドのデータを優先的に共有キュー135に移すことができる。このため、リアルタイム性が求められるスレッドのスループットを向上させることができる。また、両方のスレッドにリアルタイム制約がない場合は、タイムスタンプによるソートポリシを選択することができる。
また、信頼性の要否による判断を行い、一方のスレッドにのみ信頼性が必要である場合は、信頼性が必要であるスレッドのデータを優先するソートポリシを選択することができる。これにより、信頼性が必要であるスレッドのデータを優先的に共有キュー135に移すことができる。このため、信頼性が必要であるスレッドのスループットを向上させ、信頼性を向上させることができる。
なお、ソートポリシの決定処理はこれに限らない。たとえば、図6に示した各ステップにおいて、スレッド間の関連の有無による判断(ステップS601)は省いてもよい。また、図6に示した各ステップにおいて、リアルタイム制約の有無による判断(ステップS602〜S605)は省いてもよい。また、図6に示した各ステップにおいて、信頼性の要否による判断(ステップS606〜S608)は省いてもよい。
図7は、スレッド間の関連の有無の判定処理の一例を示すフローチャートである。ポリシ判断部330は、図6に示したステップS601において、たとえば図7に示す各ステップを実行することによってスレッド間の関連の有無を判定する。まず、ポリシ判断部330は、対象の組み合わせにかかる各データのヘッダから各データの「使用プロトコル」と「ポート番号」を取得する(ステップS701)。
つぎに、ポリシ判断部330は、ステップS701によって取得した「使用プロトコル」と「ポート番号」およびプロセステーブル331から各データの「親プロセスID」を特定する(ステップS702)。具体的には、ポリシ判断部330は、プロセステーブル331から、取得した「使用プロトコル」と「ポート番号」の組み合わせに対応する「親プロセスID」を特定する。
つぎに、ポリシ判断部330は、ステップS702によって特定した各データの「親プロセスID」が同一か否かを判断する(ステップS703)。各データの「親プロセスID」が同一である場合(ステップS703:Yes)は、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドに関連があると判定し(ステップS704)、一連の処理を終了する。各データの「親プロセスID」が同一でない場合(ステップS703:No)は、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドに関連がないと判定し(ステップS705)、一連の処理を終了する。
以上の各ステップにより、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドの関連の有無を判定することができる。なお、各データの「親プロセスID」が同一か否かによって各スレッドの関連の有無を判定する処理について説明したが、各スレッドの関連の有無を判定する処理はこれに限らない。たとえば、各データの「プロセスグループID」が同一か否かによって各スレッドの関連の有無を判定してもよい。
図8は、リアルタイム制約の有無の判定処理の一例を示すフローチャートである。ポリシ判断部330は、図6に示したステップS602において、たとえば図8に示す各ステップを実行することによって各スレッドについてリアルタイム制約の有無を判定する。まず、ポリシ判断部330は、対象の組み合わせにかかる各データのヘッダから各データの「使用プロトコル」と「ポート番号」を取得する(ステップS801)。
つぎに、ポリシ判断部330は、ステップS801によって取得した「使用プロトコル」と「ポート番号」およびプロセステーブル331から各データの「プログラムイメージ」を特定する(ステップS802)。具体的には、ポリシ判断部330は、プロセステーブル331から、取得した「使用プロトコル」と「ポート番号」の組み合わせに対応する「プログラムイメージ」を特定する。
つぎに、ポリシ判断部330は、ステップS801によって取得した「使用プロトコル」とステップS802によって特定した「プログラムイメージ」および制約テーブル332から各データの「制約フラグ」を取得し(ステップS803)、一連の処理を終了する。具体的には、ポリシ判断部330は、制約テーブル332から、「使用プロトコル」と「プログラムイメージ」の組み合わせに対応する「制約フラグ」を取得する。
以上の各ステップにより、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドについて、リアルタイム制約の有無を示す「制約フラグ」を取得し、リアルタイム制約の有無を判定することができる。
図9は、信頼性の要否の判定処理の一例を示すフローチャートである。ポリシ判断部330は、図6に示したステップS606において、たとえば図9に示す各ステップを実行することによって各スレッドについて信頼性の要否を判定する。まず、ポリシ判断部330は、対象の組み合わせにかかる各データのヘッダから各データの「使用プロトコル」を取得する(ステップS901)。
つぎに、ポリシ判断部330は、ステップS901によって取得した「使用プロトコル」および信頼性テーブル333から各データの「信頼性フラグ」を取得し(ステップS902)、一連の処理を終了する。具体的には、ポリシ判断部330は、信頼性テーブル333から、「使用プロトコル」に対応する「信頼性フラグ」を取得する。
以上の各ステップにより、ポリシ判断部330は、対象の組み合わせにかかる各データの各スレッドについて、信頼性の要否を示す「信頼性フラグ」を取得し、信頼性の要否を判定することができる。
(キュー管理処理の例)
図10−1〜図10−5は、キュー管理処理の一例を示す図である。図10−1〜図10−5において、図1−2に示した部分と同様の部分については同一の符号を付して説明を省略する。図10−1に示すように、データ処理装置111はスレッド「A」およびスレッド「B」を実行し、データ処理装置112はスレッド「C」を実行し、データ処理装置113はスレッド「D」を実行しているとする。スレッド「A」は、スレッド「C」と関連があり、リアルタイム制約があり、信頼性が要求されないスレッドである。
図10−1〜図10−5は、キュー管理処理の一例を示す図である。図10−1〜図10−5において、図1−2に示した部分と同様の部分については同一の符号を付して説明を省略する。図10−1に示すように、データ処理装置111はスレッド「A」およびスレッド「B」を実行し、データ処理装置112はスレッド「C」を実行し、データ処理装置113はスレッド「D」を実行しているとする。スレッド「A」は、スレッド「C」と関連があり、リアルタイム制約があり、信頼性が要求されないスレッドである。
スレッド「B」は、他のスレッドと関連がなく、リアルタイム制約があり、信頼性が要求されるスレッドである。スレッド「C」は、スレッド「A」と関連があり、リアルタイム制約があり、信頼性が要求されないスレッドである。スレッド「D」は、他のスレッドと関連がなく、リアルタイム制約があり、信頼性が要求されないスレッドである。
ローカルキュー131には、スレッド「A」の実行に基づいて生成されたデータ「A1」,「A2」と、スレッド「B」の実行に基づいて生成されたデータ「B1」,「B2」と、が格納されている。また、ローカルキュー131の各データは、データ「A1」,「B1」,「A2」,「B2」の順に格納されている。
ローカルキュー132には、スレッド「C」の実行に基づいて生成されたデータ「C1」〜「C4」が格納されている。また、ローカルキュー132の各データは、データ「C1」,「C2」,「C3」,「C4」の順に格納されている。ローカルキュー133には、スレッド「D」の実行に基づいて生成されたデータ「D1」〜「D4」が格納されている。また、ローカルキュー133の各データは、データ「D1」,「D2」,「D3」,「D4」の順に格納されている。
図10−2に示すように、取出部310は、ローカルキュー131〜133から先頭のデータを一つずつ取り出して記憶部320に書き込む。このため、記憶部320には、ローカルキュー131の先頭のデータ「A1」と、ローカルキュー132の先頭のデータ「C1」と、ローカルキュー133の先頭のデータ「D1」と、が書き込まれる。
図10−3に示すように、ポリシ判断部330は、記憶部320のデータ「A1」,「C1」,「D1」の組み合わせごとにソートポリシを決定する。具体的には、ポリシ判断部330は、データ「A1」,「C1」を生成したスレッド「A」,「C」の間には関連があるため、データ「A1」,「C1」のソートポリシ1031をタイムスタンプによるソートポリシに決定する。
また、データ「A1」,「D1」を生成したスレッド「A」,「D」の間には関連がなく、スレッド「A」,「D」ともにリアルタイム制約があり、スレッド「A」,「D」ともに信頼性が要求されない。このため、ポリシ判断部330は、データ「A1」,「D1」のソートポリシ1032をタイムスタンプによるソートポリシに決定する。
また、データ「C1」,「D1」を生成したスレッド「C」,「D」の間には関連がなく、スレッド「C」,「D」ともにリアルタイム制約があり、スレッド「C」,「D」ともに信頼性が要求されない。このため、ポリシ判断部330は、データ「C1」,「D1」のソートポリシ1033をタイムスタンプによるソートポリシに決定する。
図10−4に示すように、ソート書込部340は、ポリシ判断部330によって決定された各ソートポリシに基づいて、記憶部320の各データのうちの最も優先されるデータを取り出して共有キュー135へ書き込む。ここでは、記憶部320の各データのうちのデータ「D1」のタイムスタンプが最も古く、データ「D1」が記憶部320から取り出されて共有キュー135へ書き込まれたとする。
図10−5に示すように、取出部310は、ソート書込部340によって記憶部320から取り出されたデータ「D1」の出身キューであるローカルキュー133の先頭のデータを取り出して記憶部320へ書き込む。ここではデータ「D2」が記憶部320に書き込まれる。このように、ローカルキュー131〜133の先頭の各データを候補として記憶部320に移し、候補の中から最も優先されるデータを共有キュー135に移す処理を繰り返す。
以上説明したように、データ処理システムおよびデータ処理方法によれば、リアルタイム性が求められるスレッドのスループットを向上させることができる。たとえば、リアルタイム制約のあるスレッドのスループットを向上させ、リアルタイム制約を守ることができる。または、信頼性が求められる通信プロトコルを用いるスレッドのスループットを向上させ、信頼性を向上させることができる。
たとえば、データ処理システム100において、データ処理装置111で実行されるスレッド121によってビデオチャットをしながら、同時にデータ処理装置112で実行されるスレッド122によってファイルのアップロードを行うとする。
ビデオチャットでは、一定の時間内に一定のパケットデータを送信することが求められる(リアルタイム制約がある)が、パケットデータの到着順序性やパケットロスに対する信頼性はそこまで求められない。一方、ファイルのアップロードでは、リアルタイム制約はないが、パケットデータの到着順序が守られなかったりパケットロスが発生したりした場合は再送要求を行うなど、信頼性が求められる。
ローカルキュー131にビデオチャットのパケットデータが格納され、ローカルキュー132にアップロードにかかるファイルが格納されていた場合に、管理ユニット140は、ローカルキュー131のパケットデータを先に共有キュー135へ移す。これにより、リアルタイム制約があるビデオチャットのパケットデータのスループットを向上させることができる。
また、スレッド121〜123ごとにローカルキュー(ローカルキュー131〜133)を設け、ローカルキュー131〜133のデータを管理ユニット140が非同期で共有キュー135に移すことができる。これにより、スレッド121〜123の間の排他制御を抑制し、スレッド121〜123の排他待ち時間を短くすることができる。
なお、本実施の形態で説明したデータ処理法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)第1スレッドを実行する第1データ処理装置と、
第2スレッドを実行する第2データ処理装置と、
前記第1データ処理装置と前記第2データ処理装置とで共有するメモリと、
前記第1スレッドおよび前記第2スレッドの前記メモリにアクセスする優先度を前記第1スレッドおよび前記第2スレッドのリアルタイム制約または通信プロトコルに基づいて設定する管理ユニットと
を含むことを特徴とするデータ処理システム。
第2スレッドを実行する第2データ処理装置と、
前記第1データ処理装置と前記第2データ処理装置とで共有するメモリと、
前記第1スレッドおよび前記第2スレッドの前記メモリにアクセスする優先度を前記第1スレッドおよび前記第2スレッドのリアルタイム制約または通信プロトコルに基づいて設定する管理ユニットと
を含むことを特徴とするデータ処理システム。
(付記2)前記管理ユニットは、
前記リアルタイム制約を有するスレッドの優先度を高く設定する判断ユニットを含むこと
を特徴とする付記1に記載のデータ処理システム。
前記リアルタイム制約を有するスレッドの優先度を高く設定する判断ユニットを含むこと
を特徴とする付記1に記載のデータ処理システム。
(付記3)前記管理ユニットは、
前記通信プロトコルが所定の通信プロトコルであるスレッドの優先度を高く設定する判断ユニットを含むこと
を特徴とする付記1に記載のデータ処理システム。
前記通信プロトコルが所定の通信プロトコルであるスレッドの優先度を高く設定する判断ユニットを含むこと
を特徴とする付記1に記載のデータ処理システム。
(付記4)前記第1スレッドの実行に基づいて生成される第1データを格納する第1ローカルキューと、
前記第2スレッドの実行に基づいて生成される第2データを格納する第2ローカルキューと、
前記第1ローカルキューおよび前記第2ローカルキューに格納される第1データおよび第2データを前記優先度に基づいてソートして格納するキューと
を含むことを特徴とする付記1乃至付記3の何れか一に記載のデータ処理システム。
前記第2スレッドの実行に基づいて生成される第2データを格納する第2ローカルキューと、
前記第1ローカルキューおよび前記第2ローカルキューに格納される第1データおよび第2データを前記優先度に基づいてソートして格納するキューと
を含むことを特徴とする付記1乃至付記3の何れか一に記載のデータ処理システム。
(付記5)前記管理ユニットは、
前記第1スレッドおよび前記第2スレッドが前記リアルタイム制約を有さないとき、または、前記第1スレッドおよび前記第2スレッドの通信プロトコルが所定の通信プロトコルではないとき、前記優先度をタイムスタンプに基づいて設定すること
を特徴とする付記1乃至付記4の何れか一に記載のデータ処理システム。
前記第1スレッドおよび前記第2スレッドが前記リアルタイム制約を有さないとき、または、前記第1スレッドおよび前記第2スレッドの通信プロトコルが所定の通信プロトコルではないとき、前記優先度をタイムスタンプに基づいて設定すること
を特徴とする付記1乃至付記4の何れか一に記載のデータ処理システム。
(付記6)前記第1データおよび前記第2データがソートして格納された前記キューからデータを順次読み出し、読み出したデータを送信する通信部
を含むことを特徴とする付記4に記載のデータ処理システム。
を含むことを特徴とする付記4に記載のデータ処理システム。
(付記7)複数のデータ処理装置に含まれる第1データ処理装置によって実行される第1スレッドが第1データを出力し、
前記複数のデータ処理装置に含まれる第2データ処理装置によって実行される第2スレッドが第2データを出力し、
前記複数のデータ処理装置の一のデータ処理装置が、前記第1データ処理装置および前記第2データ処理装置で共有されるメモリへの前記第1データおよび前記第2データの書き込み順序を前記第1スレッドおよび前記第2スレッドのリアルタイム制約または通信プロトコルに基づいて設定すること
を特徴とするデータ処理方法。
前記複数のデータ処理装置に含まれる第2データ処理装置によって実行される第2スレッドが第2データを出力し、
前記複数のデータ処理装置の一のデータ処理装置が、前記第1データ処理装置および前記第2データ処理装置で共有されるメモリへの前記第1データおよび前記第2データの書き込み順序を前記第1スレッドおよび前記第2スレッドのリアルタイム制約または通信プロトコルに基づいて設定すること
を特徴とするデータ処理方法。
(付記8)前記第1スレッドがリアルタイム制約を有するときは、前記第1データが前記第2データよりも先に前記メモリに書き込まれること
を特徴とする付記7に記載のデータ処理方法。
を特徴とする付記7に記載のデータ処理方法。
(付記9)前記第1スレッドの通信プロトコルが所定の通信プロトコルであるときは、前記第1データが前記第2データよりも先に前記メモリに書き込まれること
を特徴とする付記7に記載のデータ処理方法。
を特徴とする付記7に記載のデータ処理方法。
(付記10)前記第1スレッドおよび前記第2スレッドがリアルタイム制約を有しないとき、または、前記第1スレッドおよび前記第2スレッドの通信プロトコルが所定の通信プロトコルではないとき、前記書き込み順序を前記第1データおよび前記第2データのタイムスタンプに基づいて設定すること
を特徴とする付記7乃至付記9の何れか一に記載のデータ処理方法。
を特徴とする付記7乃至付記9の何れか一に記載のデータ処理方法。
(付記11)前記第1データを第1ローカルキューに格納し、
前記第2データを第2ローカルキューに格納し、
前記第1ローカルキューまたは前記第2ローカルキューから前記第1データまたは前記第2データを読み出して、前記書き込み順序に基づいて前記第1データおよび前記第2データを共通キューに書き込むこと
を特徴とする付記7乃至付記10の何れか一に記載のデータ処理方法。
前記第2データを第2ローカルキューに格納し、
前記第1ローカルキューまたは前記第2ローカルキューから前記第1データまたは前記第2データを読み出して、前記書き込み順序に基づいて前記第1データおよび前記第2データを共通キューに書き込むこと
を特徴とする付記7乃至付記10の何れか一に記載のデータ処理方法。
(付記12)前記第1データおよび前記第2データがソートして格納された前記共通キューからデータを順次読み出し、読み出したデータを送信すること
を特徴とする付記11に記載のデータ処理方法。
を特徴とする付記11に記載のデータ処理方法。
(付記13)第1スレッドの実行に基づいて生成される第1データを格納する第1ローカルキューと、
第2スレッドの実行に基づいて生成される第2データを格納する第2ローカルキューと、
前記第1スレッドおよび前記第2スレッドのリアルタイム制約または通信プロトコルに基づいてソートされた前記第1データおよび前記第2データを格納するキューと、
前記キューに格納される第1データおよび第2データが書き込まれるメモリと、
を含むことを特徴とするデータ処理システム。
第2スレッドの実行に基づいて生成される第2データを格納する第2ローカルキューと、
前記第1スレッドおよび前記第2スレッドのリアルタイム制約または通信プロトコルに基づいてソートされた前記第1データおよび前記第2データを格納するキューと、
前記キューに格納される第1データおよび第2データが書き込まれるメモリと、
を含むことを特徴とするデータ処理システム。
(付記14)前記第1スレッドがリアルタイム制約を有するときは、前記第1データが前記第2データよりも先に前記キューに書き込まれること
を特徴とする付記13に記載のデータ処理システム。
を特徴とする付記13に記載のデータ処理システム。
(付記15)前記第1スレッドの通信プロトコルが所定の通信プロトコルであるときは、前記第1データが前記第2データよりも先に前記キューに書き込まれること
を特徴とする付記13に記載のデータ処理システム。
を特徴とする付記13に記載のデータ処理システム。
(付記16)前記第1データおよび前記第2データがソートして格納された前記キューからデータを順次読み出し、読み出したデータを送信する通信部
を含むことを特徴とする付記13乃至付記15の何れか一に記載のデータ処理システム。
を含むことを特徴とする付記13乃至付記15の何れか一に記載のデータ処理システム。
100 データ処理システム
131〜133 ローカルキュー
135 共有キュー
201 バス
1031〜1033 ソートポリシ
131〜133 ローカルキュー
135 共有キュー
201 バス
1031〜1033 ソートポリシ
Claims (16)
- 第1スレッドを実行する第1データ処理装置と、
第2スレッドを実行する第2データ処理装置と、
前記第1データ処理装置と前記第2データ処理装置とで共有するメモリと、
前記第1スレッドおよび前記第2スレッドの前記メモリにアクセスする優先度を前記第1スレッドおよび前記第2スレッドのリアルタイム制約または通信プロトコルに基づいて設定する管理ユニットと
を含むことを特徴とするデータ処理システム。 - 前記管理ユニットは、
前記リアルタイム制約を有するスレッドの優先度を高く設定する判断ユニットを含むこと
を特徴とする請求項1に記載のデータ処理システム。 - 前記管理ユニットは、
前記通信プロトコルが所定の通信プロトコルであるスレッドの優先度を高く設定する判断ユニットを含むこと
を特徴とする請求項1に記載のデータ処理システム。 - 前記第1スレッドの実行に基づいて生成される第1データを格納する第1ローカルキューと、
前記第2スレッドの実行に基づいて生成される第2データを格納する第2ローカルキューと、
前記第1ローカルキューおよび前記第2ローカルキューに格納される第1データおよび第2データを前記優先度に基づいてソートして格納するキューと
を含むことを特徴とする請求項1乃至請求項3の何れか一に記載のデータ処理システム。 - 前記管理ユニットは、
前記第1スレッドおよび前記第2スレッドが前記リアルタイム制約を有さないとき、または、前記第1スレッドおよび前記第2スレッドの通信プロトコルが所定の通信プロトコルではないとき、前記優先度をタイムスタンプに基づいて設定すること
を特徴とする請求項1乃至請求項4の何れか一に記載のデータ処理システム。 - 前記第1データおよび前記第2データがソートして格納された前記キューからデータを順次読み出し、読み出したデータを送信する通信部
を含むことを特徴とする請求項4に記載のデータ処理システム。 - 複数のデータ処理装置に含まれる第1データ処理装置によって実行される第1スレッドが第1データを出力し、
前記複数のデータ処理装置に含まれる第2データ処理装置によって実行される第2スレッドが第2データを出力し、
前記複数のデータ処理装置の一のデータ処理装置が、前記第1データ処理装置および前記第2データ処理装置で共有されるメモリへの前記第1データおよび前記第2データの書き込み順序を前記第1スレッドおよび前記第2スレッドのリアルタイム制約または通信プロトコルに基づいて設定すること
を特徴とするデータ処理方法。 - 前記第1スレッドがリアルタイム制約を有するときは、前記第1データが前記第2データよりも先に前記メモリに書き込まれること
を特徴とする請求項7に記載のデータ処理方法。 - 前記第1スレッドの通信プロトコルが所定の通信プロトコルであるときは、前記第1データが前記第2データよりも先に前記メモリに書き込まれること
を特徴とする請求項7に記載のデータ処理方法。 - 前記第1スレッドおよび前記第2スレッドがリアルタイム制約を有しないとき、または、前記第1スレッドおよび前記第2スレッドの通信プロトコルが所定の通信プロトコルではないとき、前記書き込み順序を前記第1データおよび前記第2データのタイムスタンプに基づいて設定すること
を特徴とする請求項7乃至請求項9の何れか一に記載のデータ処理方法。 - 前記第1データを第1ローカルキューに格納し、
前記第2データを第2ローカルキューに格納し、
前記第1ローカルキューまたは前記第2ローカルキューから前記第1データまたは前記第2データを読み出して、前記書き込み順序に基づいて前記第1データおよび前記第2データを共通キューに書き込むこと
を特徴とする請求項7乃至請求項10の何れか一に記載のデータ処理方法。 - 前記第1データおよび前記第2データがソートして格納された前記共通キューからデータを順次読み出し、読み出したデータを送信すること
を特徴とする請求項11に記載のデータ処理方法。 - 第1スレッドの実行に基づいて生成される第1データを格納する第1ローカルキューと、
第2スレッドの実行に基づいて生成される第2データを格納する第2ローカルキューと、
前記第1スレッドおよび前記第2スレッドのリアルタイム制約または通信プロトコルに基づいてソートされた前記第1データおよび前記第2データを格納するキューと、
前記キューに格納される第1データおよび第2データが書き込まれるメモリと、
を含むことを特徴とするデータ処理システム。 - 前記第1スレッドがリアルタイム制約を有するときは、前記第1データが前記第2データよりも先に前記キューに書き込まれること
を特徴とする請求項13に記載のデータ処理システム。 - 前記第1スレッドの通信プロトコルが所定の通信プロトコルであるときは、前記第1データが前記第2データよりも先に前記キューに書き込まれること
を特徴とする請求項13に記載のデータ処理システム。 - 前記第1データおよび前記第2データがソートして格納された前記キューからデータを順次読み出し、読み出したデータを送信する通信部
を含むことを特徴とする請求項13乃至請求項15の何れか一に記載のデータ処理システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013526705A JPWO2013018230A1 (ja) | 2011-08-04 | 2011-08-04 | データ処理システムおよびデータ処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013526705A JPWO2013018230A1 (ja) | 2011-08-04 | 2011-08-04 | データ処理システムおよびデータ処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2013018230A1 true JPWO2013018230A1 (ja) | 2015-03-05 |
Family
ID=52696958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013526705A Pending JPWO2013018230A1 (ja) | 2011-08-04 | 2011-08-04 | データ処理システムおよびデータ処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPWO2013018230A1 (ja) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02222059A (ja) * | 1989-02-23 | 1990-09-04 | Mitsubishi Electric Corp | マルチプロセッサシステム |
JPH05120239A (ja) * | 1991-10-30 | 1993-05-18 | Seiko Epson Corp | 並列処理回路 |
JPH07134689A (ja) * | 1993-11-09 | 1995-05-23 | Mitsubishi Electric Corp | バスアービトレーション装置 |
JP2006301894A (ja) * | 2005-04-20 | 2006-11-02 | Nec Electronics Corp | マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法 |
WO2007141849A1 (ja) * | 2006-06-07 | 2007-12-13 | Hitachi, Ltd. | 半導体集積回路 |
JP2009026320A (ja) * | 2003-07-25 | 2009-02-05 | Rmi Corp | プロセッサ |
JP2009060660A (ja) * | 2001-08-09 | 2009-03-19 | Panasonic Corp | 伝送装置および伝送方法 |
-
2011
- 2011-08-04 JP JP2013526705A patent/JPWO2013018230A1/ja active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02222059A (ja) * | 1989-02-23 | 1990-09-04 | Mitsubishi Electric Corp | マルチプロセッサシステム |
JPH05120239A (ja) * | 1991-10-30 | 1993-05-18 | Seiko Epson Corp | 並列処理回路 |
JPH07134689A (ja) * | 1993-11-09 | 1995-05-23 | Mitsubishi Electric Corp | バスアービトレーション装置 |
JP2009060660A (ja) * | 2001-08-09 | 2009-03-19 | Panasonic Corp | 伝送装置および伝送方法 |
JP2009026320A (ja) * | 2003-07-25 | 2009-02-05 | Rmi Corp | プロセッサ |
JP2006301894A (ja) * | 2005-04-20 | 2006-11-02 | Nec Electronics Corp | マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法 |
WO2007141849A1 (ja) * | 2006-06-07 | 2007-12-13 | Hitachi, Ltd. | 半導体集積回路 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6549663B2 (ja) | ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法 | |
US8782295B2 (en) | Method and apparatus for a multi-engine descriptor controller for distributing data processing tasks across the engines | |
CN1238793C (zh) | 分布式存储器控制和带宽优化 | |
CN110741356A (zh) | 多处理器系统中的中继一致存储器管理 | |
US7844752B2 (en) | Method, apparatus and program storage device for enabling multiple asynchronous direct memory access task executions | |
JP4621747B2 (ja) | 通信制御装置および情報処理装置 | |
US8943507B2 (en) | Packet assembly module for multi-core, multi-thread network processors | |
WO2009020970A2 (en) | Parallelism-aware memory request scheduling in shared memory controllers | |
US8694701B2 (en) | Recovering dropped instructions in a network interface controller | |
US10146468B2 (en) | Addressless merge command with data item identifier | |
WO2011148920A1 (ja) | マルチプロセッサシステム、実行制御方法、実行制御プログラム | |
US7293158B2 (en) | Systems and methods for implementing counters in a network processor with cost effective memory | |
WO2023093334A1 (zh) | 用于执行原子操作的系统、原子操作方法及装置 | |
US11032398B1 (en) | Kernel multiplexing system of communications | |
US8671230B2 (en) | Data transfer device and data transfer method | |
US20080276045A1 (en) | Apparatus and Method for Dynamic Cache Management | |
US9697060B2 (en) | Reserving space in a mail queue | |
US9804959B2 (en) | In-flight packet processing | |
EP2133798A1 (en) | Inter-processor communication system, processor, inter-processor communication method, and communication method | |
WO2013018230A1 (ja) | データ処理システムおよびデータ処理方法 | |
JPWO2013018230A1 (ja) | データ処理システムおよびデータ処理方法 | |
US20090086746A1 (en) | Direct messaging in distributed memory systems | |
US20150220872A1 (en) | Method and an apparatus for work packet queuing, scheduling, and ordering with conflict queuing | |
EP1936514A1 (en) | Operation processing device | |
US10353833B2 (en) | Configurable ordering controller for coupling transactions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20141208 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20150217 |