JP5429395B2 - 情報処理装置、情報処理プログラム、および情報処理方法 - Google Patents
情報処理装置、情報処理プログラム、および情報処理方法 Download PDFInfo
- Publication number
- JP5429395B2 JP5429395B2 JP2012537509A JP2012537509A JP5429395B2 JP 5429395 B2 JP5429395 B2 JP 5429395B2 JP 2012537509 A JP2012537509 A JP 2012537509A JP 2012537509 A JP2012537509 A JP 2012537509A JP 5429395 B2 JP5429395 B2 JP 5429395B2
- Authority
- JP
- Japan
- Prior art keywords
- thread
- storage area
- common variable
- data storage
- value
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Description
本発明は、書き込み要求を制御する情報処理装置、情報処理プログラム、および情報処理方法に関する。
従来より、マルチスレッド処理では1つのプロセスを複数のスレッドに分割し、該複数のスレッドを平行して実行させる。変数によっては複数のスレッド間で書き込みが行われる。ここで、複数のスレッド間で書き込みが行われる変数を共通変数と称する。
シングルコアプロセッサシステムにおいて共通変数を有するスレッドを実行するには逐次処理を行うことで、スレッドの実行順序が変わってしまうことにより最終的な共通変数の値が異なるのを防止することができる。
ここで、共通変数に関して、ブラウザ処理のバナー表示処理を例に挙げて説明する。バナー表示処理では表示するデータを共有メモリへ格納する。バナー表示処理が複数ある場合、各バナー表示で表示するデータをHTML(Hyper Text MarkUp Language)文書に記載されたバナーの表示順(Zオーダー)に沿って共有メモリへ格納する。表示によってはバナー同士が重なって表示される場合があるため、バナーの表示順を遵守してバナー表示処理が実行されなければならないため、上述したように逐次処理が行われる。
また、共有メモリ型マルチコアプロセッサシステムでは、各スレッドはマルチコアプロセッサから任意のCPU(Central Processing Unit)に割り当てられることで、該スレッドの処理が実行される。マルチコアプロセッサシステムでは、各CPUが他のCPUの実行状況に関係なく、該各CPUに割り当てられたスレッドを実行する。各CPUは共通変数を有するスレッドを実行する場合、該共通変数を有する他のすべてのスレッドと逐次処理を行うか同期処理を行う必要がある(たとえば、下記非特許文献1を参照。)。
間瀬 正啓、外2名、「マルチコアにおけるParallelizable Cプログラムの自動並列化」、2009 Information Processing Society of Japan
しかしながら、逐次処理ではスループットが低下する問題点があり、同期処理ではオーバーヘッドで実行効率が低下してしまう問題点があった。
本発明は、上述した従来技術による問題点を解消するため、スループットおよび実行効率を向上させることができる情報処理装置、情報処理プログラム、および情報処理方法を提供することを目的とする。
本発明の一観点によれば、出力先への出力順を規定する番号群と当該番号群の各番号に対応するデータ記憶領域とを有する記憶手段にアクセス可能であって、対象プロセス内の同一の共通変数の値についての書き込み要求を有するスレッド群の各スレッドの前記共通変数の値の格納先を、前記各スレッドの実行順を前記出力順を規定する番号に対応させたデータ記憶領域に設定し、前記スレッド群のスレッドごとに、設定された前記データ記憶領域に、当該データ記憶領域の出力順を規定する番号に対応する実行順のスレッドについての前記共通変数の値を格納し、前記スレッド群のすべてのスレッドが終了すると、前記スレッドごとに前記データ記憶領域に格納された前記共通変数の各値を前記出力順に読み出し、読み出した前記共通変数の各値を前記出力順に特定の格納先へ上書きする情報処理装置、情報処理プログラム、および情報処理方法が提供される。
本情報処理装置、情報処理プログラム、および情報処理方法によれば、スループットおよび実行効率を向上させることができるという効果を奏する。
以下に添付図面を参照して、本発明にかかる情報処理装置、情報処理プログラム、および情報処理方法の好適な実施の形態を詳細に説明する。
図1は、本発明の一実施例を示す説明図である。ここでは、アプリケーションの一例として、ブラウザ内のバナー表示1およびバナー表示2を挙げる。図1では、ブラウザのバナー表示の重なり箇所を共通変数aとしている。テーブル100はブラウザ処理のスレッドの実行順序を示す情報である。テーブル100では、スレッドIDの項目101と実行順の番号の項目102とを有している。スレッドIDの項目101にはスレッドの識別情報が登録されている。実行順の番号の項目102には実行順序を示す番号が登録されている。実行順の番号はブラウザ処理がHTML文書を解析することにより得られる情報である。
テーブル103は共通変数aを有するスレッドごとの共通変数aの値の格納先を示す情報である。テーブル103はスレッドIDの項目104と共通変数aの格納先の項目105とを有している。スレッドIDの項目104にはスレッドの識別情報が登録されている。共通変数aの格納先の項目105にはOSによりGRAM上の格納先のアドレスが登録される。
GRAM(Graphic Randam Access Memory)は出力先への出力順を規定する番号群と当該番号群の各番号に対応するデータ記憶領域とを有する。該出力先は表示装置である。OSD処理部はGRAMのデータ記憶領域に記憶されたデータを出力順に出力先へ出力する。
まず、OSが、ブラウザ処理が起動されると、(1)ブラウザ処理に含まれるバナー表示処理1とバナー表示処理2との共通変数aの値の格納先を、各スレッドの実行順をGRAM内の出力順を規定する番号(出力順の番号)に対応させたデータ記憶領域に設定する。GRAM内の出力順の番号はテーブル100に基づいて設定される。そして、OSが、テーブル100に確保した各格納先を設定する。
つぎに、OSが、(2)バナー表示処理2からの共通変数aの書き込み要求を検出すると、(3)設定されたバナー表示処理2のデータ記憶領域に、バナー表示処理2の共通変数aの値を格納する。つぎに、OSが、(4)バナー表示処理1からの共通変数aの書き込み要求を検出すると、(5)設定されたバナー表示処理1のデータ記憶領域に、バナー表示処理1の共通変数aの値を格納する。
そして、OSが、バナー表示処理1およびバナー表示処理2の終了を検出すると、(6)OSD処理部に書き込み指示を通知する。そして、OSD処理部が(7)データ記憶領域に格納された共通変数aの各値を出力の番号順に読み出し、(8)読み出した共通変数aの値を特定の格納先へ上書きする。
よって、バナー表示処理2における共通変数aの値の書き込み処理のあとに、バナー表示処理1における共通変数aの値の書き込み処理が実行されても、特定の格納先の共通変数aの値はバナー表示処理2における共通変数aの値となる。
本実施の形態では情報処理装置の一例としてマルチコアプロセッサシステムを挙げて説明する。ここで、マルチコアプロセッサシステムにおいて、マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
(情報処理装置のハードウェア)
図2は、情報処理装置のハードウェアを示すブロック図である。情報処理装置200では、CPU#0〜CPU#3と、共有メモリ201と、GRAM202と、OSD処理部203と、ディスプレイ204と、を有している。各部はバス205を介して接続されている。
図2は、情報処理装置のハードウェアを示すブロック図である。情報処理装置200では、CPU#0〜CPU#3と、共有メモリ201と、GRAM202と、OSD処理部203と、ディスプレイ204と、を有している。各部はバス205を介して接続されている。
ここで、CPU#0〜CPU#3はそれぞれコアとレジスタとキャッシュとを有している。CPU#0はOS210を実行し、情報処理装置200の全体の制御を司る。OS210はマスタOSであり、スレッドをどのCPUに割り当てるかを制御する機能を有し、該CPU#0に割り当てられたスレッドを実行する。
CPU#1とCPU#2とCPU#3とは、それぞれOS211とOS212とOS213とを実行し、各OSに割り当てられたスレッドを実行する。OS211〜OS213はスレーブOSである。
GRAM202は、図1で示したGRAMと同様に出力先への出力順を規定する番号群と当該番号群の各番号に対応するデータ記憶領域とを有する。該出力先はディスプレイ204である。
ディスプレイ204は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ204は、たとえば、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
OSD処理部203はGRAM202上に格納されたデータをZ値に基づいてディスプレイ204または共有メモリ201へ出力する機能を有する。OSD処理部203はモード設定レジスタとプロセスIDレジスタとを有している。モード設定レジスタはディスプレイ204へデータを出力するか、共有メモリ201へデータを出力するかを示すレジスタである。モード設定レジスタは1ビットのレジスタである。
モード設定レジスタの値が0であると、OSD処理部203によるデータの出力先がディスプレイ204であることを示し、モード設定レジスタの値が1であると、OSD処理部203によるデータの出力先が共有メモリ201であることを示す。本実施の形態では、OSD処理部203がモード設定レジスタの値が0から1へと変化したのを検出することを共有メモリ201への書き込み指示を検出したこととする。
プロセスIDレジスタはプロセスの識別情報が登録されるレジスタである。OSD処理部203が共有メモリ201への書き込み指示を検出すると、プロセスIDレジスタに設定されたプロセスの識別情報に対応するGRAM202上のデータをZ値の順で共有メモリ201へ出力する。
共有メモリ201は、具体的には、たとえば、ROM(Read Only Memory)と、RAM(Random Access Memory)と、フラッシュROMなどを有している。たとえば、フラッシュROMがブートプログラムを記憶し、ROMがアプリケーションソフトウェアを記憶し、RAMがCPU#0〜CPU#3のワークエリアとして使用される。共有メモリ201に記憶されているプログラムは、各CPUにロードされることで、コーディングされている処理を該各CPUに実行させることとなる。共有メモリ201は、たとえば、スレッド管理テーブル300と、実行順序情報群と、共通変数情報群と、を記憶している。
スレッド管理テーブル300は、起動指示が受け付けられたプロセスごとにスレッドの割当先CPUを管理する情報である。
図3は、スレッド管理テーブル300の一例を示す説明図である。スレッド管理テーブル300は、プロセスIDの項目301と、スレッドIDの項目302と、割当領域の項目303と、割当先CPUの項目304と、状態の項目305と、を有している。
プロセスIDの項目301にはプロセスIDが保持される。スレッドIDの項目302にはプロセスごとに該プロセスに含まれるスレッドのスレッドIDが保持される。割当領域の項目303にはGRAM202上にスレッドごとに確保した記憶領域のアドレスが保持される。割当先CPUの項目304にはスレッドの割当先CPUの識別情報が保持される。状態の項目305にはスレッドの状態が保持される。スレッドの状態には未割当と、実行中と、終了と、の4つの状態がある。
たとえば、OS210がプロセスの起動指示を受け付けると、スレッド管理テーブル300内のプロセスIDの項目301に起動指示を受け付けたプロセスの識別情報を登録する。そして、OS210がスレッド管理テーブル300内のスレッドIDの項目302に該プロセスに含まれるスレッドの識別情報を登録するとともに、状態の項目305に未割当を登録する。
図2に戻って、実行順序情報群の各実行順序情報は、たとえば、各プロセス内の共通変数を含むスレッドの実行順序を示す情報である。本実施の形態では、GRAM202内のスレッドごとの共通変数を共有メモリ201へ格納する際の特定順序の一例として該実行順序を挙げている。
図4は、実行順序情報の一例を示す説明図である。実行順序情報400はプロセス1内の共通変数を含むスレッドの実行順序を示す情報である。プロセス1ではスレッド1が1番目に実行され、スレッド2が2番目に実行され、スレッド3が3番目に実行され、スレッド4が4番目に実行されることとする。そして、OSはGRAM202のZ値として該実行順序を示す番号を登録することとする。
図5は、共通変数情報の一例を示す説明図である。共通変数情報500はプロセス1内の共通変数に関する情報である。共通変数情報500はアドレス情報の項目501とサイズの項目502とを有している。アドレス情報の項目501には共有メモリ201上のアドレス情報が保持され、サイズの項目502はアドレス情報の項目501に保持されているアドレスに格納される変数のサイズが保持されている。ここで、プロセス1の共通変数は、共有メモリ201上のアドレスAと共有メモリ201上のアドレスBとに格納される変数である。
共有メモリ201上のアドレスAに格納される変数のサイズは2バイトであり、共有メモリ201上のアドレスBに格納される変数のサイズは3バイトである。共有メモリ201上のアドレスAに格納される変数の2バイトの領域と、アドレスAが格納できるサイズの領域と、共有メモリ201上のアドレスBに格納される変数の3バイトの領域と、アドレスBが格納できるサイズの領域と、が共通変数を含むスレッドごとに設定される。
(情報処理装置200のブロック図)
図6は、情報処理装置200を示すブロック図である。情報処理装置200は、設定部601と、第1の格納部602と、第2の格納部603と、記憶部604と、を有している。記憶部604は、GRAM202である。設定部601は、共有メモリ201に記憶された情報処理プログラムを有するOS210をCPU#0が実行することにより、該部の機能が実現される。第1の格納部602は、共有メモリ201に記憶された情報処理プログラムを有するOSを各CPUが実行することにより、該部の機能が実現される。第2の格納部603については、OSがOSD処理部203に書き込み指示を通知し、OSD処理部203が書き込み指示を受け付けると、第2の格納部603の機能を実現する。
図6は、情報処理装置200を示すブロック図である。情報処理装置200は、設定部601と、第1の格納部602と、第2の格納部603と、記憶部604と、を有している。記憶部604は、GRAM202である。設定部601は、共有メモリ201に記憶された情報処理プログラムを有するOS210をCPU#0が実行することにより、該部の機能が実現される。第1の格納部602は、共有メモリ201に記憶された情報処理プログラムを有するOSを各CPUが実行することにより、該部の機能が実現される。第2の格納部603については、OSがOSD処理部203に書き込み指示を通知し、OSD処理部203が書き込み指示を受け付けると、第2の格納部603の機能を実現する。
記憶部604は、出力先への出力順を規定する番号群と当該番号群の各番号に対応するデータ記憶領域とを有する。
設定部601は、対象プロセス内の同一の共通変数の値についての書き込み要求を有するスレッド群の各スレッドの共通変数の値の格納先を、各スレッドの実行順を出力順を規定する番号に対応させたデータ記憶領域に設定する。
第1の格納部602は、スレッド群のスレッドごとに、設定部601により設定されたデータ記憶領域に、当該データ記憶領域の出力順を規定する番号に対応する実行順のスレッドについての共通変数の値を格納する。
第2の格納部603は、スレッド群のすべてのスレッドが終了すると、第1の格納部602によりスレッドごとにデータ記憶領域に格納された共通変数の各値を出力順に読み出し、読み出した共通変数の各値を出力順に特定の格納先へ上書きする。
図7は、プロセス1の起動例を示す説明図である。まず、OS210が、(1)プロセス1の起動指示を検出すると、OS210が、(2)プロセス1のスレッドのうち、共通変数を扱うスレッドごとにGRAM202上に共通変数を格納させる記憶領域を共通変数情報500に基づいて設定する。本実施の形態では、スレッドごとに設定された記憶領域に記憶される共有メモリ201のアドレスAに格納される変数と、共有メモリ201のアドレスBに格納される変数と、アドレスAと、アドレスBと、は該記憶領域において格納される位置が決定されていることとする。
そして、OS210が(3)スレッド管理テーブル300にプロセス1に関する情報を登録する。つぎに、OS210が(4)スレッド1をCPU#0に割り当て、OS210が(5)スレッド管理テーブル300にスレッド1の割当先CPUを登録する。
図8は、対象プロセスの各スレッドの割当例を示す説明図である。図8では、スレッド1がCPU#0に割り当てられ、スレッド2がCPU#1に割り当てられ、スレッド3がCPU#2に割り当てられ、スレッド4がCPU#3に割り当てられている。スレッド管理テーブル300には各スレッドの割当先CPUが登録されている。
図9は、スレッド1からの書き込み要求の検出例1を示す説明図である。OS210がスレッド1からの書き込み要求を検出すると、OS210が該書き込み要求の書き込み先アドレスであるアドレスAを共通変数情報500から検索する。OS210が共通変数情報500からアドレスAを探し当てると、OS210がスレッド管理テーブル300からスレッド1のGRAM202上の記憶領域のアドレスを取得する。OS210が取得したアドレスに基づいてGRAM202に対して書き込み要求を実行する。GRAM202内のスレッド1の記憶領域にはデータCとアドレスAが格納されている。
図10は、スレッド1からの書き込み要求の検出例2を示す説明図である。OS210がスレッド1からの書き込み要求を検出すると、OS210が該書き込み要求の書き込み先アドレスであるアドレスBを共通変数情報500から検索する。OS210が共通変数情報500からアドレスBを探し当てると、OS210がスレッド管理テーブル300からスレッド1のGRAM202上の記憶領域のアドレスを取得する。OS210が取得したアドレスに基づいてスレッド1の記憶領域へデータDとアドレスBとを格納する。GRAM202のスレッド1の記憶領域にはデータCとデータDとアドレスAとアドレスBが格納されている。
図11は、スレッド3からの書き込み要求の検出例を示す説明図である。OS212がスレッド3からの書き込み要求を検出すると、OS212が該書き込み要求の書き込み先アドレスであるアドレスAを共通変数情報500から検索する。OS212が共通変数情報500からアドレスAを探し当てると、OS212がスレッド管理テーブル300からスレッド3のGRAM202上の記憶領域のアドレスを取得する。OS212が取得したアドレスに基づいてスレッド3の記憶領域へデータEとアドレスAとを格納する。GRAM202のスレッド3の記憶領域にはデータEとアドレスAが格納されている。
図12は、スレッド2からの書き込み要求の検出例1を示す説明図である。OS211がスレッド2からの書き込み要求を検出すると、OS211が該書き込み要求の書き込み先アドレスであるアドレスBを共通変数情報500から検索する。OS211が共通変数情報500からアドレスBを探し当てると、OS211がスレッド管理テーブル300からスレッド2のGRAM202上の記憶領域のアドレスを取得する。OS211が取得したアドレスに基づいてスレッド2の記憶領域へデータFとアドレスBとを格納する。GRAM202のスレッド2の記憶領域にはデータFとアドレスBが格納されている。
図13は、スレッド2からの書き込み要求の検出例2を示す説明図である。OS211がスレッド2からの書き込み要求を検出すると、OS211が該書き込み要求の書き込み先アドレスであるアドレスAを共通変数情報500から検索する。OS211が共通変数情報500からアドレスAを探し当てると、OS211がスレッド管理テーブル300からスレッド2のGRAM202上の記憶領域のアドレスを取得する。OS211が取得したアドレスに基づいてGRAM202にスレッド2の記憶領域へデータGとアドレスAとを格納する。GRAM202のスレッド2の記憶領域にはデータGとアドレスAが格納されている。
図14は、スレッド4からの書き込み要求の検出例を示す説明図である。OS213がスレッド4からの書き込み要求を検出すると、OS213が該書き込み要求の書き込み先アドレスであるアドレスBを共通変数情報500から検索する。OS213が共通変数情報500からアドレスBを探し当てると、OS213がスレッド管理テーブル300からスレッド4のGRAM202上の記憶領域のアドレスを取得する。OS213が取得したアドレスに基づいてスレッド2の記憶領域へデータHとアドレスBとを格納する。GRAM202のスレッド4の記憶領域にはデータHとアドレスBが格納されている。
図15は、スレッド4の終了の検出例を示す説明図である。OS213がスレッド4の終了を検出すると、スレッド管理テーブル300内のプロセス1に関するスレッド4の状態の項目305を実行中から終了に更新する。
図16は、すべてのスレッドの終了の検出例を示す説明図である。OS210がスレッド管理テーブル300の状態の項目305の更新に基づいてプロセス1のすべてのスレッドの終了を検出すると、OS210がOSD処理部203のプロセスIDレジスタを1に設定する。そして、OS210がモード設定レジスタを1に設定する。
OSD処理部203はモード設定レジスタが1に変化したのを検出すると、OSD処理部203がプロセスIDレジスタに設定された値に基づいて、GRAM202から共有メモリ201へ出力するGRAM202上の記憶領域を、スレッド管理テーブル300を用いて特定する。OSD処理部203は特定したGRAM202上の記憶領域のうち、Z値が小さい値の領域順に格納されたアドレス情報に基づいて共有メモリ201へデータを格納する。
(情報処理手順)
図17は、OS210による情報処理手順を示すフローチャートである。まず、OS210が、対象プロセスの起動指示または対象スレッドの割当指示を受け付けたか否かを判断する(ステップS1701)。OS210が、対象プロセスの起動指示および対象スレッドの割当指示を受け付けていないと判断した場合(ステップS1701:No)、ステップS1701へ戻る。
図17は、OS210による情報処理手順を示すフローチャートである。まず、OS210が、対象プロセスの起動指示または対象スレッドの割当指示を受け付けたか否かを判断する(ステップS1701)。OS210が、対象プロセスの起動指示および対象スレッドの割当指示を受け付けていないと判断した場合(ステップS1701:No)、ステップS1701へ戻る。
ステップS1701において、OS210が、対象スレッドの割当指示を受け付けたと判断した場合(ステップS1701:対象スレッドの割当指示)、割当指示を受け付けた対象スレッドの割当先CPUを決定する(ステップS1702)。つぎに、OS210が、対象スレッドの割当先CPUをスレッド管理テーブル300に登録し(ステップS1703)、対象スレッドを割り当てて(ステップS1704)、ステップS1701へ戻る。
ステップS1701において、OS210が、対象プロセスの起動指示を受け付けたと判断した場合(ステップS1701:対象プロセスの起動指示)、対象プロセスの実行順序情報400を取得する(ステップS1705)。OS210が、対象プロセスのスレッドごとにデータのサイズおよび該各アドレスのサイズ分の領域をGRAM202上に確保する(ステップS1706)。
OS210が、スレッド管理テーブル300に対象プロセスを登録し(ステップS1707)、対象プロセスのマスタスレッドの割当先CPUを決定する(ステップS1708)。OS210が、マスタスレッドの割当先CPUをスレッド管理テーブル300に登録し(ステップS1709)、対象プロセスのマスタスレッドを割当先CPUに割り当て(ステップS1710)、ステップS1701へ戻る。
図18は、各OSによる情報処理手順を示すフローチャートである。図18で示す情報処理手順は各OSが実行主体であるが、OS210を例に挙げて説明する。OS210が、実行中のスレッドからの書き込み要求、またはスレッドの終了を検出したか否かを判断する(ステップS1801)。OS210が、実行中のスレッドからの書き込み要求およびスレッドの終了を検出していないと判断した場合(ステップS1801:No)、ステップS1801へ戻る。
OS210が、実行中のスレッドの終了を検出したと判断した場合(ステップS1801:スレッドの終了)、スレッド管理テーブル300内の終了したスレッドに関する状態を更新し(ステップS1802)、ステップS1801へ戻る。OS210が、実行中のスレッドからの書き込み要求を検出したと判断した場合(ステップS1801:書き込み要求)、スレッドが属するプロセスに関する共通変数情報を取得する(ステップS1803)。
つぎに、OS210が、書き込み要求のアドレス情報を共通変数情報から検索し(ステップS1804)、書き込み要求のアドレス情報が共通変数情報にあるか否かを判断する(ステップS1805)。OS210が、書き込み要求のアドレス情報が共通変数情報にないと判断した場合(ステップS1805:No)、ステップS1801へ戻る。
つぎに、OS210が、書き込み要求の格納先が共通変数情報にあると判断した場合(ステップS1805:Yes)、実行中のスレッドに対応するGRAM202上の領域へデータとアドレス情報とを書き込み(ステップS1806)、ステップS1801へ戻る。
図19は、共通変数への書き込み処理を有するスレッドの終了時のOS210による制御処理手順を示すフローチャートである。OS210が、共通変数を用いるスレッドがすべて終了したプロセスを検出したか否かを判断する(ステップS1901)。OS210が、共通変数を用いるスレッドがすべて終了したプロセスを検出していないと判断した場合(ステップS1901:No)、一連の処理を終了する。
一方、OS210が、共通変数を用いるスレッドがすべて終了したプロセスを検出したと判断した場合(ステップS1901:Yes)、GRAM202上の検出されたプロセスの領域内のデータを共有メモリ201へ書き込む書き込み指示をOSD処理部203に通知する(ステップS1902)。書き込み指示とは、具体的には、モード設定フラグを1に設定することを示している。
そして、OS210が、OSD処理部203からの完了通知を受け付けたか否かを判断する(ステップS1903)。OS210が、OSD処理部203からの完了通知を受け付けていないと判断した場合(ステップS1903:No)、ステップS1903へ戻る。OS210が、OSD処理部203からの完了通知を受け付けたと判断した場合(ステップS1903:Yes)、GRAM202上の検出されたプロセスの領域を解放する(ステップS1904)。OS210が、検出されたプロセスに関する情報をスレッド管理テーブル300から削除し(ステップS1905)、一連の処理を終了する。
図20は、OSD処理部203による出力処理手順を示すフローチャートである。OSD処理部203が、共有メモリへの書き込み指示を検出したか否かを判断する(ステップS2001)。ここで、書き込み指示を検出するとは、モード設定フラグが0から1に変化したことを示している。
OSD処理部203が、共有メモリへの書き込み指示を検出していないと判断した場合(ステップS2001:No)、ステップS2001へ戻る。OSD処理部203が、共有メモリへの書き込み指示を検出したと判断した場合(ステップS2001:Yes)、プロセスIDレジスタに設定されたプロセスIDに基づいてスレッド管理テーブル300から各スレッドの配置領域を特定する(ステップS2002)。
OSD処理部203は、GRAM202上の各スレッドの配置領域に格納されたZ値を特定し(ステップS2003)、Z値の小さい順にGRAM202から共有メモリへ出力し(ステップS2004)、書き込み完了をマスタOSへ通知し(ステップS2005)、ステップS2001へ戻る。また、OSD処理部203は書き込み完了をマスタOSへ通知するとともに、モード設定レジスタを0に設定する。
以上説明したように、情報処理装置、情報処理プログラム、および情報処理方法によれば、対象プロセスで共通変数を有するスレッド群の各スレッドの共通変数の値を、GRAM上に出力順を規定する番号に各スレッドの実行順を対応させた領域に格納する。そして、該スレッド群のすべてのスレッドが終了後に、出力順を規定する番号順にGRAM上から共通変数の値を読み出し、該番号順に特定の格納先に上書きする。スレッド群の動作時の実行順序とプロセス定義されたスレッド群の実行順序とが異なっていても、最終的な共通変数の値が異なるのを防止することができ、スループットおよび実行効率を向上させることができる。
また、各スレッドの共通変数の値をそれぞれ異なる領域として既存のハードウェアであるGRAMを用いることにより、機能を容易に実現することができる。
200 情報処理装置
202 GRAM
601 設定部
602 第1の格納部
603 第2の格納部
604 記憶部
202 GRAM
601 設定部
602 第1の格納部
603 第2の格納部
604 記憶部
Claims (4)
- 出力先への出力順を規定する番号群と当該番号群の各番号に対応するデータ記憶領域とを有する記憶手段と、
対象プロセス内の同一の共通変数の値についての書き込み要求を有するスレッド群の各スレッドの前記共通変数の値の格納先を、前記出力順を規定する番号に前記各スレッドの実行順を対応させたデータ記憶領域に設定する設定手段と、
前記スレッド群のスレッドごとに、前記設定手段により設定された前記データ記憶領域に、当該データ記憶領域の出力順を規定する番号に対応する実行順のスレッドについての前記共通変数の値を格納する第1の格納手段と、
前記スレッド群のすべてのスレッドが終了すると、前記第1の格納手段により前記スレッドごとに前記データ記憶領域に格納された前記共通変数の各値を前記出力順に読み出し、読み出した前記共通変数の各値を前記出力順に特定の格納先へ上書きする第2の格納手段と、
を備えることを特徴とする情報処理装置。 - 前記記憶手段は、前記出力先を表示装置とするGRAM(Graphic Randam Access Memory)であることを特徴とする請求項1に記載の情報処理装置。
- 出力先への出力順を規定する番号群と当該番号群の各番号に対応するデータ記憶領域とを有する記憶手段と前記データ記憶領域へのデータの格納を制御する制御回路にアクセス可能なコンピュータに、
対象プロセス内の同一の共通変数の値についての書き込み要求を有するスレッド群の各スレッドの前記共通変数の値の格納先を、前記出力順を規定する番号に前記各スレッドの実行順を対応させたデータ記憶領域に設定する設定工程と、
前記スレッド群のスレッドごとに、前記設定工程により設定された前記データ記憶領域に、当該データ記憶領域の出力順を規定する番号に対応する実行順のスレッドについての前記共通変数の値を格納する第1の格納工程と、
前記スレッド群のすべてのスレッドが終了すると、前記第1の格納工程により前記スレッドごとに前記データ記憶領域に格納された前記共通変数の各値を前記出力順に読み出し、前記制御回路に、読み出した前記共通変数の各値を前記出力順に特定の格納先へ上書きさせる第2の格納工程と、
を実行させることを特徴とする情報処理プログラム。 - 出力先への出力順を規定する番号群と当該番号群の各番号に対応するデータ記憶領域とを有する記憶手段と前記データ記憶領域へのデータの格納を制御する制御回路にアクセス可能なコンピュータが、
対象プロセス内の同一の共通変数の値についての書き込み要求を有するスレッド群の各スレッドの前記共通変数の値の格納先を、前記出力順を規定する番号に前記各スレッドの実行順を対応させたデータ記憶領域に設定する設定工程と、
前記スレッド群のスレッドごとに、前記設定工程により設定された前記データ記憶領域に、当該データ記憶領域の出力順を規定する番号に対応する実行順のスレッドについての前記共通変数の値を格納する第1の格納工程と、
前記スレッド群のすべてのスレッドが終了すると、前記第1の格納工程により前記スレッドごとに前記データ記憶領域に格納された前記共通変数の各値を前記出力順に読み出し、前記制御回路に、読み出した前記共通変数の各値を前記出力順に特定の格納先へ上書きさせる第2の格納工程と、
を実行することを特徴とする情報処理方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/067467 WO2012046300A1 (ja) | 2010-10-05 | 2010-10-05 | 情報処理装置、情報処理プログラム、および情報処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2012046300A1 JPWO2012046300A1 (ja) | 2014-02-24 |
JP5429395B2 true JP5429395B2 (ja) | 2014-02-26 |
Family
ID=45927320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012537509A Expired - Fee Related JP5429395B2 (ja) | 2010-10-05 | 2010-10-05 | 情報処理装置、情報処理プログラム、および情報処理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20130239113A1 (ja) |
JP (1) | JP5429395B2 (ja) |
WO (1) | WO2012046300A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6962717B2 (ja) * | 2017-06-15 | 2021-11-05 | 日本電気株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
US11861403B2 (en) * | 2020-10-15 | 2024-01-02 | Nxp Usa, Inc. | Method and system for accelerator thread management |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04219859A (ja) * | 1990-03-12 | 1992-08-10 | Hewlett Packard Co <Hp> | 並列プロセッサに直列命令ストリームデータを分散するハードウェアディストリビュータ |
US8028132B2 (en) * | 2001-12-12 | 2011-09-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Collision handling apparatus and method |
US7650331B1 (en) * | 2004-06-18 | 2010-01-19 | Google Inc. | System and method for efficient large-scale data processing |
WO2007000081A1 (en) * | 2005-06-29 | 2007-01-04 | Intel Corporation | Methods, apparatus, and systems for caching |
US8190610B2 (en) * | 2006-10-05 | 2012-05-29 | Yahoo! Inc. | MapReduce for distributed database processing |
-
2010
- 2010-10-05 WO PCT/JP2010/067467 patent/WO2012046300A1/ja active Application Filing
- 2010-10-05 JP JP2012537509A patent/JP5429395B2/ja not_active Expired - Fee Related
-
2013
- 2013-04-04 US US13/856,775 patent/US20130239113A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
WO2012046300A1 (ja) | 2012-04-12 |
JPWO2012046300A1 (ja) | 2014-02-24 |
US20130239113A1 (en) | 2013-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5650952B2 (ja) | マルチコア/スレッドのワークグループ計算スケジューラ | |
JP5773065B2 (ja) | スケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法 | |
CN105765541B (zh) | 用于机动车的控制器 | |
JP5673672B2 (ja) | マルチコアプロセッサシステム、制御プログラム、および制御方法 | |
JP2005182825A5 (ja) | ||
US9038080B2 (en) | Method and system for heterogeneous filtering framework for shared memory data access hazard reports | |
US20120311604A1 (en) | Deterministic parallelization through atomic task computation | |
CN104866443A (zh) | 可中断存储独占 | |
JP6250447B2 (ja) | 半導体装置及び命令読み出し制御方法 | |
JP5429395B2 (ja) | 情報処理装置、情報処理プログラム、および情報処理方法 | |
CN109656868B (zh) | 一种cpu与gpu之间的内存数据转移方法 | |
KR102332523B1 (ko) | 연산 처리 장치 및 방법 | |
JP2007517322A (ja) | プロセッサにおける同時物理スレッド数からの論理スレッド数のデカップリング | |
CN108536644B (zh) | 由装置端推核心入队列的装置 | |
CN102736949A (zh) | 改善对非连贯设备要执行的任务的调度 | |
US9384046B2 (en) | Information processing apparatus, computer product, and information processing method for multi-thread process | |
JP5376042B2 (ja) | マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム | |
KR102407781B1 (ko) | 플립 큐 관리에 기초한 그래픽스 컨텍스트 스케줄링 | |
CN117667223B (zh) | 一种数据冒险解决方法、计算引擎、处理器及电子设备 | |
JP6207213B2 (ja) | 情報処理装置 | |
US20240176616A1 (en) | Processor and method of controlling processor | |
CN116302115A (zh) | 指令执行方法、装置、图形处理器、电子设备及存储介质 | |
JP5195997B2 (ja) | カーネルソースコード最適化方法、カーネルソースコード最適化装置及びプログラム | |
JP5459402B2 (ja) | マルチコアプロセッサシステム、制御プログラム、および制御方法 | |
JP2009104494A (ja) | ベクトル処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20131105 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131118 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5429395 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |