JP6645348B2 - 情報処理装置、情報処理プログラム、及び情報処理方法 - Google Patents

情報処理装置、情報処理プログラム、及び情報処理方法 Download PDF

Info

Publication number
JP6645348B2
JP6645348B2 JP2016093302A JP2016093302A JP6645348B2 JP 6645348 B2 JP6645348 B2 JP 6645348B2 JP 2016093302 A JP2016093302 A JP 2016093302A JP 2016093302 A JP2016093302 A JP 2016093302A JP 6645348 B2 JP6645348 B2 JP 6645348B2
Authority
JP
Japan
Prior art keywords
task
core
processor core
storage area
area
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.)
Active
Application number
JP2016093302A
Other languages
English (en)
Other versions
JP2017201486A (ja
Inventor
優人 田邨
優人 田邨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016093302A priority Critical patent/JP6645348B2/ja
Priority to US15/467,335 priority patent/US10324751B2/en
Publication of JP2017201486A publication Critical patent/JP2017201486A/ja
Application granted granted Critical
Publication of JP6645348B2 publication Critical patent/JP6645348B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory

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

開示の技術は、情報処理装置、情報処理プログラム、及び情報処理方法に関する。
従来、ハードウェアトランザクショナルメモリ(Hardware Transactional Memory、以下、「HTM」という)を用いて、タスク(処理)の実行順序を制御する技術が知られている。
また、ソフトウェアトランザクショナルメモリ(Software Transactional Memory、以下、「STM」という)を用いて、アクセス競合が発生した場合に、優先順位に基づいて実行するタスクを決定する技術が知られている。
特開2014−085839号公報 特表2010−510590号公報
ところで、マルチコアシステムのタスクスケジューリングでは、プロセッサコア(以下、単に「コア」という)毎にタスクの格納領域が設けられてスケジューリングが行われる。また、各コアが自身のタスクの格納領域にタスクが格納されていない場合は、自身以外のコアのタスクの格納領域からタスクを取得して実行することで負荷分散が行われる。なお、以下では、各コアが自身のタスクの格納領域にタスクが格納されていない場合に、自身以外のコアのタスクの格納領域からタスクを取得することを「ワークスチール」という。このように、ワークスチールでは、タスクスケジューリングでタスクを割り当てられたコア以外のコアがそのタスクを実行するものであるため、タスク実行時のキャッシュヒット率の低下等により、タスクの実行効率が低下する場合がある。
しかしながら、従来技術では、ワークスチールが行われた場合におけるタスクの実行制御については考慮されていない。
開示の技術は、一つの側面として、ワークスチールが行われた場合にタスクの実行効率の低下を抑制することを目的とする。
開示の技術は、一つの側面として、プロセッサコア毎に設けられたタスクが格納される格納領域からタスクを取得して実行するプロセッサコアを複数備えた情報処理装置に関する。開示の技術は、第1プロセッサコアの前記格納領域に格納されたタスクを第2プロセッサコアにより取得するワークスチールを行う場合に、以下に示す書き込み処理を行う書込処理部を含む。すなわち、書込処理部は、取得対象とする前記タスクに対応して設けられた領域であり、前記第1プロセッサコア及び前記第2プロセッサコアによるアクセス競合をトランザクショナルメモリ機能で検知するためのアボート用領域に対して書き込み処理を行う。さらに、開示の技術は、第1プロセッサコアにより前記第1プロセッサコアの前記格納領域から前記タスクを取得する場合に、取得対象とする前記タスクに対応して設けられた前記アボート用領域に対して読み込み処理を行う読込処理部を含む。
一つの側面として、ワークスチールが行われた場合にタスクの実行効率の低下を抑制することができる、という効果を有する。
コアがタスクキューからタスクを取得して実行することを説明するための図である。 ワークスチールを説明するための図である。 タスクキューの排他制御を説明するための図である。 第1コアのタスクキューに1つのタスクが格納されており、第1コアがタスクを実行中で、第2コアがワークスチールを行っている状態を説明するための図である。 第1コアのタスクキューに1つのタスクが格納されており、第1コアがタスクを終了し、第2コアがワークスチールを行っている状態を説明するための図である。 HTM機能を説明するための図である。 HTM機能を説明するための図である。 実施形態に係る情報処理装置の機能ブロック図である。 実施形態に係るタスクキューを説明するための図である。 実施形態に係る情報処理装置として機能するコンピュータの概略構成を示すブロック図である。 実施形態に係るタスク実行処理の一例を示すフローチャートである。 実施形態に係る待機処理の一例を示すフローチャートである。 コアが他のコアからワークスチールが行われずに、タスクを取得する場合を説明するための図である。 第1コアがタスクを実行中で、第2コアが第1コアからワークスチールを行い、ワークスチールが異常終了されずに終了する場合を説明するための図である。 第1コアがタスクを実行中で、第2コアが第1コアからワークスチールを行い、ワークスチールが異常終了される場合を説明するための図である。 第1コアがタスクを実行中で、第2コアが第1コアからワークスチールを行い、ワークスチールが異常終了される場合を説明するためのタイミングチャートである。 タスクキューをアプリケーションプログラムにより実現した場合の例を説明するための図である。
以下、図面を参照して、開示の技術の実施形態の一例を詳細に説明する。
まず、実施形態の詳細を説明する前に、ワークスチールが行われた場合の問題点について説明する。なお、ここでは、説明を簡単にするために、2つのコアを有するマルチコアシステムを例として説明する。
図1に示すように、コア10Aに対応して、コア10Aに割り当てられたスレッドが取得対象とするタスクTが格納される格納領域の一例としてのタスクキュー12Aが設けられている。タスクキュー12Aは、メモリ等の記憶領域上に設けられ、タスクTは、例えばタスク情報を含むタスク構造体としてタスクキュー12Aに格納される。タスク情報には、一例として、実行されるコマンド、及びコマンドの引数等のタスクTの実行に必要な情報が含まれる。
同様に、コア10Bに対応して、コア10Bに割り当てられたスレッドが取得対象とするタスクTが格納されるタスクキュー12Bが設けられている。なお、以下では、コア10A及びコア10Bを総称する場合は「コア10」といい、タスクキュー12A及びタスクキュー12Bを総称する場合は「タスクキュー12」という。また、以下では、錯綜を回避するために、コア10に割り当てられたスレッドがタスクTを取得することを、「スレッド」の文言を省略して、コア10がタスクTを取得する、と表現する。同様に、コア10に割り当てられたスレッドがタスクTを実行することを、「スレッド」の文言を省略して、コア10がタスクTを実行する、と表現する。
また、タスクキュー12は、タスクTが格納された順に取得されるFirst In, First Out(FIFO)で実現される。図1に示すように、各コア10は、各コア10に対応するタスクキュー12の先頭(図1の例では1番下)からタスクTを取得して実行する。
次に、図2及び図3を参照して、ワークスチールについて説明する。なお、図2及び図3では、一例として、コア10Bがワークスチールを行うコアであり、コア10Aがワークスチールを行われるコアである場合について説明する。
図2に示すように、コア10Bは、コア10Bのタスクキュー12BにタスクTが格納されていない場合、コア10Aのタスクキュー12AからタスクTを取得するワークスチールを行い、取得したタスクTを実行する。これにより、各コア10間での負荷分散が実現される。
また、本実施形態に係るタスクキュー12は、複数のコア10により同時に同じタスクTが実行されないように、排他制御が行われる。従って、図3に示すように、コア10Bがコア10Aからワークスチールを行っている間は、タスクキュー12Aがロックされる。すなわち、コア10Bがコア10Aからワークスチールを行っている間は、コア10AがタスクTを実行可能な状態であっても、コア10Aは、タスクキュー12AのタスクTを取得できない。
次に、図4に示すように、タスクキュー12Aに1つのタスクT2が格納されている状態で、コア10AがタスクT1を実行中に、コア10Bがワークスチールを行う場合について説明する。この場合、前述したように、コア10Bがコア10Aからワークスチールを行っている間は、タスクキュー12Aがロックされる。
すなわち、図5に示すように、コア10Bがコア10Aからワークスチールを行っている間に、コア10AがタスクT1の実行を終了して新たなタスクを実行可能となった場合、コア10Aはタスクキュー12AからタスクT2を取得できない。従って、タスクT2は、コア10Bで実行される。しかしながら、タスクT2がタスクT1と関連するタスクである場合等、タスクT2はコア10Bよりもコア10Aで実行された方が、キャッシュメモリのヒット率が高くなる可能性が高く、早期にタスクが終了する可能性が高い。
そこで、本実施形態では、図5に示す状態となった場合に、コア10Bによるワークスチールを異常終了させて、コア10AでタスクT2を実行させることで、ワークスチールが行われた場合にタスクの実行効率の低下の抑制を図る。
次に、本実施形態で用いる各コアが有するHTM機能を説明する。一例として図6に示すように、コア10Aは、メモリ14から処理対象とするデータを読み出して、トランザクションを開始する。また、コア10Aは、トランザクションを開始した後、クリティカルセクションの処理の実行中は、演算結果をメモリ14には反映せずにコア10A内に保持する。そして、一例として図7に示すように、コア10Aは、クリティカルセクションの処理が終了すると、処理の結果得られた演算結果をメモリ14に書き込んだ後、トランザクションを終了する。
また、コア10Aは、クリティカルセクションの処理の実行中に、他のコアとのアクセス競合を検知すると、トランザクションを異常終了(アボート)することでデータの一貫性を保つ。すなわち、HTM機能による排他制御方式は、処理の開始順序ではなく、アクセス競合の検知順序による排他制御方式と言える。
HTM機能でのアボート処理を行う条件としては、一例として以下の3つが挙げられる。
(1)各コアが、自身が読み込みを行った記憶領域のアドレス(所謂read-set)の少なくとも1つに、他のコアが書き込みを行う、との条件。
(2)各コアが、自身が書き込みを行う予定の記憶領域のアドレス(所謂write-set)の少なくとも1つに、他のコアが書き込みを行う、との条件。
(3)各コアが、自身が書き込みを行う予定の記憶領域のアドレスの少なくとも1つに、他のコアが読み込みを行う、との条件。
なお、本実施形態では、一例として上記(3)の条件を用いてワークスチールを異常終了させる。
次に、図8を参照して本実施形態に係る情報処理装置20の機能的な構成を説明する。図8に示すように、情報処理装置20は、タスクキュー22、フラグ格納領域24、読込処理部26、及び書込処理部28を含む。情報処理装置20は複数のコアを備えており、タスクキュー22はコア毎に設けられている。また、各タスクキュー22は、例えばメモリ等の記憶領域上に設けられ、対応するコアにより実行されるタスクが格納される格納領域である。
図9に示すように、本実施形態では、各コア42は、各コア42に対応するタスクキュー22のタスクT毎に用意された所定の記憶領域をアボート用領域Aとして使用する。アボート用領域Aは、各コア42によるアクセス競合をHTM機能で検知するための領域である。なお、以下では、タスクキュー22をコア毎に区別して説明する場合は、符号の末尾にコアの符号の末尾のアルファベットと同様のアルファベットを付して説明する。すなわち、コア42Aはタスクキュー22AからタスクTを取得して実行し、コア42Bはタスクキュー22BからタスクTを取得して実行する。また、以下では、コア42A及びコア42Bを総称する場合は「コア42」という。また、以下では、錯綜を回避するために、ワークスチールを行うコアを「第2コア42」ともいい、自身のコアのタスクキュー22からタスクTを取得して実行するコアを「第1コア42」ともいう。
フラグ格納領域24は、コア42毎に設けられており、後述する読込処理部26によりトランザクションが実行中であるか否かを示す情報が設定されるフラグFが格納される。本実施形態では、一例として、読込処理部26によりトランザクションが実行中である場合は、フラグFには「1」が設定される。また、本実施形態では、一例として、読込処理部26によりトランザクションが未実行である(実行中でない)場合は、フラグFには「0」が設定される。また、本実施形態では、フラグFの初期値は「0」に設定される。
読込処理部26は、第1コア42が有するHTM機能を使用として、トランザクションを開始する。一例として、本実施形態では、読込処理部26は、Intel(登録商標)社の提供するTransactional Synchronization Extensions(TSX)命令(より具体的にはXBEGIN命令)を使用してトランザクションを開始する。また、読込処理部26は、トランザクションを開始した後、第1コア42により第1コア42のタスクキュー22からタスクTを取得する場合に、取得対象とするタスクTに対応して設けられたアボート用領域Aに読み込み処理を行う。また、読込処理部26は、アボート用領域Aに対する読み込み処理の前に、第1コア42のフラグFを「1」に設定する。また、読込処理部26は、アボート用領域Aに対する読み込み処理を行った後に、第1コア42のタスクキュー22からタスクTを取得する。また、読込処理部26は、タスクTを取得した後、第1コア42が有するHTM機能を使用として、トランザクションを終了する。一例として、本実施形態では、読込処理部26は、TSX命令(より具体的にはXEND命令)を使用してトランザクションを終了する。また、読込処理部26は、トランザクションを終了した後、第1コア42のフラグFを「0」に設定する。そして、読込処理部26は、取得したタスクTを実行する。
書込処理部28は、第2コア42が有するHTM機能を使用して、トランザクションを開始する。本実施形態では、書込処理部28は、TSX命令(より具体的にはXBEGIN命令)を使用してトランザクションを開始する。書込処理部28は、トランザクションを開始した後、第2コア42により第1コア42のタスクキュー22に格納されたタスクTを取得するワークスチールを行う場合に、タスクTに対応して設けられたアボート用領域Aに書き込み処理を行う。具体的には、書込処理部28は、アボート用領域Aのアドレスをwrite-setに設定する。また、書込処理部28は、アボート用領域Aに対する書き込み処理を行った後に、第1コア42のタスクキュー22からタスクTを取得する。また、書込処理部28は、タスクTを取得した後、第2コア42が有するHTM機能を使用して、トランザクションを終了する。本実施形態では、書込処理部28は、TSX命令(より具体的にはXEND命令)を使用してトランザクションを終了する。そして、書込処理部28は、取得したタスクTを実行する。また、書込処理部28は、実行中のワークスチールが異常終了された場合は、ワークスチール対象のタスクTが元々格納されていたタスクキュー22に対応する第1コア42のフラグFを参照し、フラグFが「0」となるまで第2コア42を待機させる。
情報処理装置20は、例えば図10に示すコンピュータ40で実現することができる。コンピュータ40は、複数のコア42A、42B、・・・を有するCentral Processing Unit(CPU)41、一時記憶領域としてのメモリ43、及び不揮発性の記憶部44を備える。CPU41の各コア42は、前述したHTM機能を有する。また、コンピュータ40は、表示装置及び入力装置等の入出力装置45を備える。また、コンピュータ40は、記録媒体49に対するデータの読み込みと書き込みとを制御するRead/Write(R/W)部46、及びネットワークに接続されるネットワークI/F47を備える。CPU41、メモリ43、記憶部44、入出力装置45、R/W部46、及びネットワークI/F47は、バス48を介して互いに接続される。
記憶部44は、Hard Disk Drive(HDD)、Solid State Drive(SSD)、フラッシュメモリ等によって実現することができる。記憶媒体としての記憶部44には、コンピュータ40を情報処理装置20として機能させるための情報処理プログラム60が記憶される。情報処理プログラム60は、読込処理プロセス71及び書込処理プロセス72を有する。また、メモリ43は、タスクキュー22及びフラグ格納領域24として機能する情報記憶領域74を有する。なお、情報記憶領域74は、記憶部44に設けられてもよいし、CPU41及びコア42が有するキャッシュメモリに設けられてもよい。
CPU41の各コア42は、情報処理プログラム60を記憶部44から読み出してメモリ43に展開し、情報処理プログラム60が有するプロセスを実行する。CPU41の各コア42は、読込処理プロセス71を実行することで、図8に示す読込処理部26として動作する。CPU41の各コア42は、書込処理プロセス72を実行することで、図8に示す書込処理部28として動作する。これにより、情報処理プログラム60を実行したコンピュータ40が、情報処理装置20として機能することになる。
なお、本実施形態では、上記の読込処理部26により実現される機能のうち、タスクキュー22からタスクTを取得する機能、及び取得したタスクTを実行する機能は、オペレーティングシステム(OS)の機能で実現される。また、同様に、上記の書込処理部28により実現される機能のうち、タスクキュー22からタスクTを取得する機能、及び取得したタスクTを実行する機能も、OSの機能で実現される。従って、情報処理プログラム60は、OSの機能で実現されない読込処理部26及び書込処理部28の機能をOSに追加する修正を行うことでOSの一部のプログラムとして実現される。
また、情報処理プログラム60により実現される機能は、例えば半導体集積回路、より詳しくはApplication Specific Integrated Circuit(ASIC)等で実現することも可能である。
次に、本実施形態に係る情報処理装置20の作用を説明する。情報処理装置20が情報処理プログラム60を実行することで、図11に示すタスク実行処理及び図12に示す待機処理を実行する。図11に示すタスク実行処理は、例えば情報処理装置20の電源がオン状態とされ、情報処理装置20のオペレーティングシステムの起動が完了された場合等に各コア42により実行が開始される。また、図12に示す待機処理は、例えば、コア42がワークスチールを行っている間に、ワークスチールが異常終了した場合に該コア42により実行が開始される。なお、ここでは、単に「コア42」と記載した場合は、タスク実行処理及び待機処理を実行しているコア42自身を意味する。また、ここでは、単に「タスクキュー22」と記載した場合は、タスク実行処理及び待機処理を実行しているコア42のタスクキュー22を意味する。まだ、ここでは、単に「フラグF」と記載した場合は、タスク実行処理及び待機処理を実行しているコア42のフラグFを意味する。
図11に示すタスク実行処理のステップ100で、読込処理部26は、タスクキュー22にタスクTが格納されているか否かを判定する。この判定が否定判定となった場合は、処理はステップ122に移行し、肯定判定となった場合は、処理はステップ102に移行する。
ステップ102で、読込処理部26は、タスクキュー22に格納されているタスクTの数が1つであるか否かを判定する。この判定が否定判定となった場合は、処理はステップ118に移行し、肯定判定となった場合は、処理はステップ104に移行する。ステップ104で、読込処理部26は、フラグFを「1」に設定する。
次のステップ106で、読込処理部26は、コア42のHTM機能を呼び出してトランザクションを開始する。次のステップ108で、読込処理部26は、タスクTに対応するアボート用領域Aに対して読み込み処理を行う。次のステップ110で、読込処理部26は、タスクキュー22からタスクTを取得する。次のステップ112で、読込処理部26は、コア42のHTM機能を呼び出して、ステップ106で開始したトランザクションを終了する。本ステップ112の処理により、ステップ110で取得されたタスクTがタスクキュー22から削除される。
次のステップ114で、読込処理部26は、フラグFを「0」に設定する。次のステップ116で、読込処理部26は、ステップ110で取得したタスクTをコア42により実行した後、処理はステップ100に戻る。
一方、ステップ118で、読込処理部26は、タスクキュー22からタスクTを取得する。次のステップ120で、読込処理部26は、ステップ118で取得したタスクTを実行した後、処理はステップ100に戻る。
一方、ステップ122で、書込処理部28は、他のコア42のタスクキュー22にタスクTが格納されているか否かを判定する。この判定が否定判定となった場合は、処理はステップ100に戻り、肯定判定となった場合は、処理はステップ124に移行する。なお、以下の各ステップの処理は、ステップ122でタスクTが格納されていると判定されたタスクキュー22の何れか1つを対象(以下、「対象タスクキュー22」という)として実行される。
ステップ124で、書込処理部28は、コア42のHTM機能を呼び出してトランザクションを開始する。次のステップ126で、書込処理部28は、対象タスクキュー22の取得対象とするタスクTのアボート用領域Aに書き込み処理を行う。次のステップ128で、書込処理部28は、ステップ126で書き込み処理が行われたアボート用領域Aに対応するタスクTを対象タスクキュー22から取得する。
次のステップ130で、書込処理部28は、コア42のHTM機能を呼び出して、ステップ124で開始したトランザクションを終了する。本ステップ130の処理により、ステップ128で取得されたタスクTが対象タスクキュー22から削除される。次のステップ132で、書込処理部28は、ステップ128で取得したタスクTをコア42により実行した後、処理はステップ100に戻る。
一方、図12に示す待機処理のステップ150で、書込処理部28は、ワークスチール対象のコア42のフラグFが「0」であるか否かを判定する。書込処理部28は、ワークスチール対象のコア42のフラグFが「0」になるまでステップ150を繰り返し実行し、ステップ150の判定が肯定判定となった場合は、本待機処理は終了する。待機処理が終了すると、待機処理を実行していたコア42は、前述したタスク実行処理の実行を開始する。
次に、図13〜図16を参照して、前述したタスク実行処理及び待機処理の具体的な処理の例を説明する。なお、図13〜図15の各図面の矢印に付している数字は、処理の実行順序を表している。また、図16の各ステップに付している数字は、図15の各矢印に付している数字と対応する。
まず、図13を参照して、コア42Aが他のコア42によりワークスチールを行われずに、タスクTを取得する場合について説明する。図13に示すように、コア42Aは、タスクキュー22AにタスクTが1つ格納されているため、上記ステップ104で、フラグFを「1」に設定する(図13中の1)。次に、コア42Aは、上記ステップ106で、コア42AのHTM機能を呼び出してトランザクションを開始する(図13中の2)。次に、コア42Aは、上記ステップ108で、タスクTに対応するアボート用領域Aに対して読み込み処理を行う(図13中の3)。次に、コア42Aは、上記ステップ110で、タスクキュー22AからタスクTを取得する(図13中の4)。次に、コア42Aは、上記ステップ112で、コア42AのHTM機能を呼び出してトランザクションを終了する(図13中の5)。そして、コア42Aは、上記ステップ114で、フラグFを「0」に設定(図13中の6)した後、上記ステップ116で、タスクTを実行する。
次に、図14を参照して、コア42AがタスクT1を実行中で、コア42Bがコア42Aからワークスチールを行い、ワークスチールが異常終了されずに終了する場合について説明する。図14に示すように、コア42Bは、タスクキュー22BにタスクTが格納されておらず、タスクキュー22AにタスクT2が格納されているため、上記ステップ124で、コア42BのHTM機能を呼び出してトランザクションを開始する(図14中の1)。次に、コア42Bは、上記ステップ126で、タスクT2に対応するアボート用領域Aに書き込み処理を行う(図14中の2)。次に、コア42Bは、上記ステップ128で、タスクキュー22AからタスクT2を取得する(図14中の3)。そして、コア42Bは、上記ステップ130で、コア42BのHTM機能を呼び出してトランザクションを終了(図14中の4)した後、上記ステップ132で、タスクT2を実行する。
次に、図15及び図16を参照して、コア42AがタスクT1を実行中で、コア42Bがコア42Aからワークスチールを行い、ワークスチールが異常終了される場合について説明する。図15及び図16に示すように、コア42Aは、上記ステップ104から上記ステップ116までの処理を実行して、タスクT1を実行中である。
一方、コア42Bは、タスクキュー22BにタスクTが格納されておらず、タスクキュー22AにタスクT2が格納されているため、上記ステップ124で、コア42BのHTM機能を呼び出してトランザクションを開始する(図15中の1)。次に、コア42Bは、上記ステップ126で、タスクT2に対応するアボート用領域Aに書き込み処理を行う(図15中の2)。次に、コア42Bは、上記ステップ128で、タスクキュー22AからタスクT2を取得する(図15中の3)。
ここで、例えばコア42Bがタスクキュー22AからタスクT2の取得を開始してから、上記ステップ130でトランザクションを終了するまでの間(すなわち、ワークスチールの実行中)に、コア42AでタスクT1の実行が終了する(図15中の4)ものとする。コア42Aは、タスクT1の実行が終了すると、上記ステップ100以降の処理を再度実行する。コア42Aは、タスクキュー22AにタスクT2が1つ格納されているため、上記ステップ104で、フラグFを「1」に設定する(図15中の5)。
次に、コア42Aは、上記ステップ106で、コア42AのHTM機能を呼び出してトランザクションを開始する(図15中の6)。次に、コア42Aは、上記ステップ108で、タスクT2に対応するアボート用領域Aに対して読み込み処理を行う(図15中の7)。
すなわち、コア42Bがワークスチールを実行中のタスクT2に対応し、かつ書き込み処理を行ったアボート用領域Aに対して、コア42Aが読み込み処理を行うこととなる。従って、前述した(3)の条件を満たすことになるため、コア42BのHTM機能により、コア42Bが実行中のワークスチールが異常終了(アボート)される。
次に、コア42Aは、上記ステップ110の処理で、タスクキュー22AからタスクT2を取得する(図15中の8)。次に、コア42Aは、上記ステップ112で、コア42AのHTM機能を呼び出してトランザクションを終了する(図15中の9)。そして、コア42Aは、上記ステップ114で、フラグFを「0」に設定した(図15中の10)後、上記ステップ116でタスクT2を実行する。
一方、コア42Bは、実行中のワークスチールが異常終了されると、上記待機処理を実行し、上記ステップ150の処理で、コア42AのフラグFが「0」となるまで待機する(図15中の11)。例えば、タスクT2に対するワークスチールが異常終了された後に、コア42Bがすぐに上記タスク実行処理の実行を開始した場合、コア42Bが再度タスクT2に対してワークスチールを行う場合がある。これに対し、本実施形態では、コア42Bは、実行中のワークスチールが異常終了された後にコア42Aのフラグが「0」になるまで待機する。すなわち、コア42Bは、コア42AによるタスクT2の取得が終了するまで待機するため、コア42Bが再度タスクT2に対してワークスチールを行うことが防止される。従って、不要なワークスチールの実行を抑制することができる。
以上説明したように、本実施形態によれば、第1プロセッサコアにより第1プロセッサコアのタスクキューからタスクを取得する場合に、取得対象とするタスクに対応して設けられたアボート用領域に対して読み込み処理を行う。また、第2プロセッサコアにより第1プロセッサコアのタスクキューに格納されたタスクを取得するワークスチールを行う場合に、アボート用領域に対して書き込み処理を行う。従って、第2プロセッサコアがワークスチールを行っている間に、第1プロセッサコアによる読み込み処理により、ワークスチールを終了することができる。これにより、該タスクを第1プロセッサコアが実行することができる結果、ワークスチールが行われた場合にタスクの実行効率の低下を抑制することができる。
なお、上記実施形態では、タスクの格納領域として、タスクキューを適用した場合について説明したが、これに限定されない。例えば、タスクの格納領域としてスタックを適用する形態としてもよい。
また、上記実施形態では、タスクキュー22に1つのタスクTが格納されている場合に、第1コア42がタスクTのアボート用領域Aに読み込み処理を行う場合について説明したが、これに限定されない。例えば、タスクキュー22に複数のタスクTが格納されている場合に、第1コア42が各タスクTのアボート用領域Aに読み込み処理を行う形態としてもよい。この場合、例えば、第1コア42は、タスクキュー22に格納されている各タスクTのタスク情報及び第1コア42の処理性能等に基づいてタスクTの実行時間を推定する。そして、第1コア42は、推定した実行時間が所定値以下の場合に、各タスクTのアボート用領域Aに読み込み処理を行う形態が例示される。これにより、比較的短時間で実行が終了するタスクTに対する第2コア42によるワークスチールが抑制される。
また、上記実施形態では、第2コア42が実行中のワークスチールが異常終了した場合に、第1コア42のフラグFが「0」になるまで待機する場合について説明したが、これに限定されない。例えば、第2コア42が実行中のワークスチールが異常終了した場合に、所定期間の間待機する形態が例示される。この場合に待機する期間は、例えば情報処理装置20の実機を用いた実験等により、第1コア42によるタスクTを取得する処理にかかる期間にマージンを加味した期間等を適用すればよい。また、例えば、第1コア42が複数ある場合は、第2コア42はワークスチールの異常終了後に待機せずに、ワークスチール対象とした第1コア42(上記実施形態ではコア42A)以外の第1コア42に対してワークスチールを行う形態としてもよい。また、例えば、第2コア42はワークスチールの異常終了後に、自身のタスクキュー22にタスクTが格納されるまで待機する形態としてもよい。
また、上記実施形態では、タスクキュー22をOSの機能で実現する場合について説明したが、これに限定されない。例えば、ユーザが開発したアプリケーションプログラムによりタスクキュー22を実現する形態としてもよい。この場合、一例として図17に示すように、ユーザレベルのスレッドをオペレーティングシステムにより各コア42に割り当てる(バインドする)形態が例示される。
また、上記実施形態では、情報処理プログラム60がOSの一部のプログラムとして実現される場合について説明したが、これに限定されない。例えば、情報処理プログラム60が、OS上で稼働するアプリケーションプログラムとして実現される形態としてもよい。
また、上記実施形態では、HTMを用いてワークスチールを異常終了させる場合について説明したが、これに限定されない。例えば、STMを用いてワークスチールを異常終了させる形態としてもよい。
また、上記実施形態では、情報処理プログラム60が記憶部44に予め記憶(インストール)されている態様を説明したが、これに限定されない。情報処理プログラム60は、CD−ROM、DVD−ROM、USBメモリ、メモリカード等の記録媒体に記録された形態で提供することも可能である。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
プロセッサコア毎に設けられたタスクが格納される格納領域からタスクを取得して実行するプロセッサコアを複数備えた情報処理装置であって、
第1プロセッサコアの前記格納領域に格納されたタスクを第2プロセッサコアにより取得するワークスチールを行う場合に、取得対象とする前記タスクに対応して設けられた領域であり、前記第1プロセッサコア及び前記第2プロセッサコアによるアクセス競合をトランザクショナルメモリ機能で検知するためのアボート用領域に対して書き込み処理を行う書込処理部と、
第1プロセッサコアにより前記第1プロセッサコアの前記格納領域から前記タスクを取得する場合に、取得対象とする前記タスクに対応して設けられた前記アボート用領域に対して読み込み処理を行う読込処理部と、
を含む情報処理装置。
(付記2)
前記読込処理部は、前記第1プロセッサコアの前記格納領域に格納されている前記タスクが1つで、かつ前記第1プロセッサコアにより前記第1プロセッサコアの前記格納領域から前記タスクを取得する場合に、取得対象とする前記タスクに対応して設けられた前記アボート用領域に対して読み込み処理を行う、
付記1記載の情報処理装置。
(付記3)
前記読込処理部は、前記読み込み処理を行った後、前記第1プロセッサコアに対応して設けられたフラグ格納領域に、前記第1プロセッサコアによりトランザクションが実行中であることを示す情報を格納してから前記タスクを取得し、該タスクの取得が終了した後に、前記フラグ格納領域に前記第1プロセッサコアによりトランザクションが未実行であることを示す情報を格納し、
前記書込処理部は、前記書き込み処理を行った後、前記ワークスチールの実行中に、前記読込処理部により前記アボート用領域に対して読み込み処理が行われて前記ワークスチールが終了した場合に、前記第1プロセッサコアの前記フラグ格納領域に、前記第1プロセッサコアによりトランザクションが未実行であることを示す情報が格納されるまで前記第2プロセッサコアを待機させる、
付記1又は付記2記載の情報処理装置。
(付記4)
プロセッサコア毎に設けられたタスクが格納される格納領域からタスクを取得して実行する第1プロセッサコア及び第2プロセッサコアを含む複数のプロセッサコアを備えたコンピュータの前記第2プロセッサコアに、
前記第1プロセッサコアの前記格納領域に格納されたタスクを前記第2プロセッサコアにより取得するワークスチールを行う場合に、取得対象とする前記タスクに対応して設けられた領域であり、前記第1プロセッサコア及び前記第2プロセッサコアによるアクセス競合をトランザクショナルメモリ機能で検知するためのアボート用領域に対する書き込み処理を実行させ、
前記コンピュータの前記第1プロセッサコアに、
前記第1プロセッサコアにより前記第1プロセッサコアの前記格納領域から前記タスクを取得する場合に、取得対象とする前記タスクに対応して設けられた前記アボート用領域に対する読み込み処理を実行させる、
情報処理プログラム。
(付記5)
前記コンピュータの前記第1プロセッサコアに、
前記第1プロセッサコアの前記格納領域に格納されている前記タスクが1つで、かつ前記第1プロセッサコアにより前記第1プロセッサコアの前記格納領域から前記タスクを取得する場合に、取得対象とする前記タスクに対応して設けられた前記アボート用領域に対する読み込み処理を実行させる、
付記4記載の情報処理プログラム。
(付記6)
前記コンピュータの前記第1プロセッサコアに、
前記読み込み処理を行った後、前記第1プロセッサコアに対応して設けられたフラグ格納領域に、前記第1プロセッサコアによりトランザクションが実行中であることを示す情報を格納してから前記タスクを取得させ、該タスクの取得が終了した後に、前記フラグ格納領域に前記第1プロセッサコアによりトランザクションが未実行であることを示す情報を格納させ、
前記コンピュータの前記第2プロセッサコアに、
前記書き込み処理を行った後、前記ワークスチールの実行中に、前記アボート用領域に対して前記読み込み処理が行われて前記ワークスチールが終了した場合に、前記第1プロセッサコアの前記フラグ格納領域に、前記第1プロセッサコアによりトランザクションが未実行であることを示す情報が格納されるまで待機させる、
付記4又は付記5記載の情報処理プログラム。
(付記7)
プロセッサコア毎に設けられたタスクが格納される格納領域からタスクを取得して実行する第1プロセッサコア及び第2プロセッサコアを含む複数のプロセッサコアを備えたコンピュータの前記第2プロセッサコアに、
前記第1プロセッサコアの前記格納領域に格納されたタスクを前記第2プロセッサコアにより取得するワークスチールを行う場合に、取得対象とする前記タスクに対応して設けられた領域であり、前記第1プロセッサコア及び前記第2プロセッサコアによるアクセス競合をトランザクショナルメモリ機能で検知するためのアボート用領域に対する書き込み処理を実行させ、
前記コンピュータの前記第1プロセッサコアに、
前記第1プロセッサコアにより前記第1プロセッサコアの前記格納領域から前記タスクを取得する場合に、取得対象とする前記タスクに対応して設けられた前記アボート用領域に対する読み込み処理を実行させる、
情報処理方法。
(付記8)
前記コンピュータの前記第1プロセッサコアに、
前記第1プロセッサコアの前記格納領域に格納されている前記タスクが1つで、かつ前記第1プロセッサコアにより前記第1プロセッサコアの前記格納領域から前記タスクを取得する場合に、取得対象とする前記タスクに対応して設けられた前記アボート用領域に対する読み込み処理を実行させる、
付記7記載の情報処理方法。
(付記9)
前記コンピュータの前記第1プロセッサコアに、
前記読み込み処理を行った後、前記第1プロセッサコアに対応して設けられたフラグ格納領域に、前記第1プロセッサコアによりトランザクションが実行中であることを示す情報を格納してから前記タスクを取得させ、該タスクの取得が終了した後に、前記フラグ格納領域に前記第1プロセッサコアによりトランザクションが未実行であることを示す情報を格納させ、
前記コンピュータの前記第2プロセッサコアに、
前記書き込み処理を行った後、前記ワークスチールの実行中に、前記アボート用領域に対して前記読み込み処理が行われて前記ワークスチールが終了した場合に、前記第1プロセッサコアの前記フラグ格納領域に、前記第1プロセッサコアによりトランザクションが未実行であることを示す情報が格納されるまで待機させる、
付記7又は付記8記載の情報処理方法。
(付記10)
プロセッサコア毎に設けられたタスクが格納される格納領域からタスクを取得して実行する第1プロセッサコア及び第2プロセッサコアを含む複数のプロセッサコアを備えたコンピュータの前記第2プロセッサコアに、
第1プロセッサコアの前記格納領域に格納されたタスクを前記第2プロセッサコアにより取得するワークスチールを行う場合に、取得対象とする前記タスクに対応して設けられた領域であり、前記第1プロセッサコア及び前記第2プロセッサコアによるアクセス競合をトランザクショナルメモリ機能で検知するためのアボート用領域に対する書き込み処理を実行させ、
前記コンピュータの前記第1プロセッサコアに、
前記第1プロセッサコアにより前記第1プロセッサコアの前記格納領域から前記タスクを取得する場合に、取得対象とする前記タスクに対応して設けられた前記アボート用領域に対する読み込み処理を実行させる、
情報処理プログラムを記憶した記憶媒体。
20 情報処理装置
22 タスクキュー
24 フラグ格納領域
26 読込処理部
28 書込処理部
40 コンピュータ
41 CPU
42A、42B コア
43 メモリ
44 記憶部
49 記録媒体
60 情報処理プログラム
A アボート用領域
T タスク

Claims (5)

  1. プロセッサコア毎に設けられたタスクが格納される格納領域からタスクを取得して実行するプロセッサコアを複数備えた情報処理装置であって、
    第1プロセッサコアの前記格納領域に格納されたタスクを第2プロセッサコアにより取得するワークスチールを行う場合に、取得対象とする前記タスクに対応して設けられた領域であり、前記第1プロセッサコア及び前記第2プロセッサコアによるアクセス競合をトランザクショナルメモリ機能で検知するためのアボート用領域に対して書き込み処理を行う書込処理部と、
    第1プロセッサコアにより前記第1プロセッサコアの前記格納領域から前記タスクを取得する場合に、取得対象とする前記タスクに対応して設けられた前記アボート用領域に対して読み込み処理を行う読込処理部と、
    を含む情報処理装置。
  2. 前記読込処理部は、前記第1プロセッサコアの前記格納領域に格納されている前記タスクが1つで、かつ前記第1プロセッサコアにより前記第1プロセッサコアの前記格納領域から前記タスクを取得する場合に、取得対象とする前記タスクに対応して設けられた前記アボート用領域に対して読み込み処理を行う、
    請求項1記載の情報処理装置。
  3. 前記読込処理部は、前記読み込み処理を行った後、前記第1プロセッサコアに対応して設けられたフラグ格納領域に、前記第1プロセッサコアによりトランザクションが実行中であることを示す情報を格納してから前記タスクを取得し、該タスクの取得が終了した後に、前記フラグ格納領域に前記第1プロセッサコアによりトランザクションが未実行であることを示す情報を格納し、
    前記書込処理部は、前記書き込み処理を行った後、前記ワークスチールの実行中に、前記読込処理部により前記アボート用領域に対して読み込み処理が行われて前記ワークスチールが終了した場合に、前記第1プロセッサコアの前記フラグ格納領域に、前記第1プロセッサコアによりトランザクションが未実行であることを示す情報が格納されるまで前記第2プロセッサコアを待機させる、
    請求項1又は請求項2記載の情報処理装置。
  4. プロセッサコア毎に設けられたタスクが格納される格納領域からタスクを取得して実行する第1プロセッサコア及び第2プロセッサコアを含む複数のプロセッサコアを備えたコンピュータの前記第2プロセッサコアに、
    前記第1プロセッサコアの前記格納領域に格納されたタスクを前記第2プロセッサコアにより取得するワークスチールを行う場合に、取得対象とする前記タスクに対応して設けられた領域であり、前記第1プロセッサコア及び前記第2プロセッサコアによるアクセス競合をトランザクショナルメモリ機能で検知するためのアボート用領域に対する書き込み処理を実行させ、
    前記コンピュータの前記第1プロセッサコアに、
    前記第1プロセッサコアにより前記第1プロセッサコアの前記格納領域から前記タスクを取得する場合に、取得対象とする前記タスクに対応して設けられた前記アボート用領域に対する読み込み処理を実行させる、
    情報処理プログラム。
  5. プロセッサコア毎に設けられたタスクが格納される格納領域からタスクを取得して実行する第1プロセッサコア及び第2プロセッサコアを含む複数のプロセッサコアを備えたコンピュータの前記第2プロセッサコアに、
    前記第1プロセッサコアの前記格納領域に格納されたタスクを前記第2プロセッサコアにより取得するワークスチールを行う場合に、取得対象とする前記タスクに対応して設けられた領域であり、前記第1プロセッサコア及び前記第2プロセッサコアによるアクセス競合をトランザクショナルメモリ機能で検知するためのアボート用領域に対する書き込み処理を実行させ、
    前記コンピュータの前記第1プロセッサコアに、
    前記第1プロセッサコアにより前記第1プロセッサコアの前記格納領域から前記タスクを取得する場合に、取得対象とする前記タスクに対応して設けられた前記アボート用領域に対する読み込み処理を実行させる、
    情報処理方法。
JP2016093302A 2016-05-06 2016-05-06 情報処理装置、情報処理プログラム、及び情報処理方法 Active JP6645348B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016093302A JP6645348B2 (ja) 2016-05-06 2016-05-06 情報処理装置、情報処理プログラム、及び情報処理方法
US15/467,335 US10324751B2 (en) 2016-05-06 2017-03-23 Information processing apparatus, information processing method, and non-transitory computer-readable recording medium recording information processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016093302A JP6645348B2 (ja) 2016-05-06 2016-05-06 情報処理装置、情報処理プログラム、及び情報処理方法

Publications (2)

Publication Number Publication Date
JP2017201486A JP2017201486A (ja) 2017-11-09
JP6645348B2 true JP6645348B2 (ja) 2020-02-14

Family

ID=60243955

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016093302A Active JP6645348B2 (ja) 2016-05-06 2016-05-06 情報処理装置、情報処理プログラム、及び情報処理方法

Country Status (2)

Country Link
US (1) US10324751B2 (ja)
JP (1) JP6645348B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10705849B2 (en) * 2018-02-05 2020-07-07 The Regents Of The University Of Michigan Mode-selectable processor for execution of a single thread in a first mode and plural borrowed threads in a second mode
US10977087B2 (en) * 2018-08-07 2021-04-13 International Business Machines Corporation Steal one-process many work-stealing

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8024714B2 (en) 2006-11-17 2011-09-20 Microsoft Corporation Parallelizing sequential frameworks using transactions
US7711678B2 (en) 2006-11-17 2010-05-04 Microsoft Corporation Software transaction commit order and conflict management
JP2014085839A (ja) 2012-10-24 2014-05-12 International Business Maschines Corporation 並列実行機構及びその動作方法
EP2972907B1 (en) * 2013-03-15 2019-09-25 Intel Corporation Work stealing in heterogeneous computing systems
US20170083365A1 (en) * 2015-09-23 2017-03-23 Qualcomm Incorporated Adaptive Chunk Size Tuning for Data Parallel Processing on Multi-core Architecture
US10360063B2 (en) * 2015-09-23 2019-07-23 Qualcomm Incorporated Proactive resource management for parallel work-stealing processing systems

Also Published As

Publication number Publication date
US20170322830A1 (en) 2017-11-09
JP2017201486A (ja) 2017-11-09
US10324751B2 (en) 2019-06-18

Similar Documents

Publication Publication Date Title
JP5229326B2 (ja) マルチコアcpuにおける消費電力制御方法,消費電力制御プログラム及び情報処理システム
JP7087029B2 (ja) 中央処理装置(cpu)と補助プロセッサとの間の改善した関数コールバック機構
JP6399916B2 (ja) 情報処理装置およびその制御方法
US10754558B2 (en) Vehicular device
US9043806B2 (en) Information processing device and task switching method
WO2011103825A2 (zh) 多处理器系统负载均衡的方法和装置
JP2010500682A (ja) フラッシュメモリアクセス回路
JP2017033501A (ja) 記憶装置および制御方法
JP6645348B2 (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
US20160283250A1 (en) Boot controlling processing apparatus
KR102205899B1 (ko) 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치
US20120260058A1 (en) Memory management apparatus, memory management method, and control program
JP2011175378A (ja) マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法
JP2009104443A (ja) Osの起動方法
WO2016041156A1 (zh) Cpu调度的方法和装置
US8095784B2 (en) Computer system and method for activating basic program therein
JP2015118493A (ja) トレース装置及びトレースプログラム
JP5335625B2 (ja) ブート時間を短縮するコンピュータ・プログラム
JP2009251681A (ja) スタック領域の拡張方法及びプログラム
JP5332716B2 (ja) 起動制御方法、情報処理装置及びプログラム
US20180113772A1 (en) Information processing apparatus, method of controlling the same, and storage medium
JP2010044699A (ja) 情報処理装置
JP6477216B2 (ja) 演算装置、スレッド切替方法、及びマルチスレッドプログラム
CN117251266A (zh) 中断事件的处理方法、装置、电子设备、介质以及芯片
JP6358330B2 (ja) 情報処理装置、情報処理システム、メモリ管理方法およびメモリ管理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191126

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: 20191210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191223

R150 Certificate of patent or registration of utility model

Ref document number: 6645348

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150