JP2019179417A - スケジューリング方法、スケジューリング装置 - Google Patents

スケジューリング方法、スケジューリング装置 Download PDF

Info

Publication number
JP2019179417A
JP2019179417A JP2018068434A JP2018068434A JP2019179417A JP 2019179417 A JP2019179417 A JP 2019179417A JP 2018068434 A JP2018068434 A JP 2018068434A JP 2018068434 A JP2018068434 A JP 2018068434A JP 2019179417 A JP2019179417 A JP 2019179417A
Authority
JP
Japan
Prior art keywords
processing
cache
tag
tag information
thread
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
Application number
JP2018068434A
Other languages
English (en)
Inventor
雅史 九里
Masafumi Kuri
雅史 九里
英樹 杉本
Hideki Sugimoto
英樹 杉本
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.)
Denso Corp
NSI Texe Inc
Original Assignee
Denso Corp
NSI Texe Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Corp, NSI Texe Inc filed Critical Denso Corp
Priority to JP2018068434A priority Critical patent/JP2019179417A/ja
Priority to PCT/JP2019/009632 priority patent/WO2019188180A1/ja
Publication of JP2019179417A publication Critical patent/JP2019179417A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】多くの並列処理が行われる場合でもキャッシュメモリを効率的に活用することができる。【解決手段】処理ノードにおける複数の演算それぞれに用いられるメモリアクセスの内容を示すタグ情報を読み取るタグ参照部(141)と、タグ情報に基づいて複数の演算の処理順序を決定するアロケーション部(142)と、を設ける。【選択図】図5

Description

本開示は、複数の処理ノードで構成されるグラフ構造のプログラムを実行する際のスケジューリング方法及びスケジューリング装置に関する。
キャッシュメモリの利用効率を高めることを目的とし、下記特許文献1に記載されている発明が提案されている。下記特許文献1には、キャッシュメモリを共用キャッシュ領域と専用キャッシュ領域とに分割して制御するキャッシュメモリ制御工程をプロセッサに実行させるプロセッサ読み取り可能なキャッシュメモリ制御プログラムであって,プロセッサによるプロセスの実行中に発行される専用キャッシュ領域の割当を要求する専用領域獲得要求に応答して,専用キャッシュ領域を割り当てた場合のキャッシュヒット率と共用キャッシュ領域を割り当てた場合のキャッシュヒット率との差と,メモリアクセス頻度とに基づくキャッシュ有効利用度に応じて,キャッシュ有効利用度が高い程専用キャッシュ領域を割当て,低い程共用キャッシュ領域を割り当てるキャッシュ領域割当工程と,割り当て済み専用キャッシュ領域の開放を要求する専用領域開放要求に応答して,専用キャッシュ領域の割当を解放する専用キャッシュ領域開放工程と、を有するものである。
特開2015−36873号公報
特許文献1では、キャッシュメモリを共用キャッシュ領域と専用キャッシュ領域とに分割して制御するため、このような領域に分けない場合に適用することができなかった。特に、複数の処理ノードで構成されるグラフ構造のプログラムを実行する際には、多くの並列処理が行われるため、共用キャッシュ領域や専用キャッシュ領域といった領域に分けないでキャッシュメモリ全体を効率的に活用する必要がある。
本開示は、多くの並列処理が行われる場合でもキャッシュメモリを効率的に活用することができることを目的とする。
本開示は、複数の処理ノードで構成されるグラフ構造のプログラムを実行する際のスケジューリング方法であって、処理ノードにおける複数の演算それぞれに用いられるメモリアクセスの内容を示すタグ情報を読み取るタグ参照ステップと、タグ情報に基づいて複数の演算の処理順序を決定するアロケーションステップと、を備える。
本開示は、複数の処理ノードで構成されるグラフ構造のプログラムを実行する際のスケジューリング装置であって、処理ノードにおける複数の演算それぞれに用いられるメモリアクセスの内容を示すタグ情報を読み取るタグ参照部(141)と、タグ情報に基づいて複数の演算の処理順序を決定するアロケーション部(142)と、を備える。
本開示によれば、タグ情報を読み取ることで、複数の演算それぞれにおけるメモリアクセスの状況を把握することができるので、キャッシュメモリの書き換えが減少するように複数の演算の処理順序を決定することができる。
本開示によれば、多くの並列処理が行われる場合でもキャッシュメモリを効率的に活用することができる。
図1は、本実施形態の前提となる並列処理について説明するための図である。 図2は、図1に示される並列処理を実行するためのシステム構成例を示す図である。 図3は、図2に用いられるDFPの構成例を示す図である。 図4は、コンパイラの機能的な構成例を説明するための図である。 図5は、スレッドスケジューラの機能的な構成例を説明するための図である。 図6は、従来のスケジューリングについて説明するための図である。 図7は、従来のスケジューリングに基づいて処理をした場合のメモリアクセスの状況を説明するための図である。 図8は、本実施形態のスケジューリングについて説明するための図である。 図9は、本実施形態のスケジューリングに基づいて処理をした場合のメモリアクセスの状況を説明するための図である。
以下、添付図面を参照しながら本実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
図1(A)は、グラフ構造のプログラムコードを示しており、図1(B)は、スレッドの状態を示しており、図1(C)は、並列処理の状況を示している。
図1(A)に示されるように、本実施形態が処理対象とするプログラムは、データと処理とが分割されているグラフ構造を有している。このグラフ構造は、プログラムのタスク並列性、グラフ並列性を保持している。
図1(A)に示されるプログラムコードに対して、コンパイラによる自動ベクトル化とグラフ構造の抽出を行うと、図1(B)に示されるような大量のスレッドを生成することができる。
図1(B)に示される多量のスレッドに対して、ハードウェアによる動的レジスタ配置とスレッド・スケジューリングにより、図1(C)に示されるような並列実行を行うことができる。実行中にレジスタ資源を動的配置することで、異なる命令ストリームに対しても複数のスレッドを並列実行することができる。
続いて図2を参照しながら、動的レジスタ配置及びスレッド・スケジューリングを行うアクセラレータとしてのDFP(Data Flow Processor)10を含むシステム構成例である、データ処理システム2を説明する。
データ処理システム2は、DFP10と、イベントハンドラ20と、ホストCPU21と、ROM22と、RAM23と、外部インターフェイス24と、システムバス25と、を備えている。ホストCPU21は、データ処理を主として行う演算装置である。ホストCPU21は、OSをサポートしている。イベントハンドラ20は、割り込み処理を生成する部分である。
ROM22は、読込専用のメモリである。RAM23は、読み書き用のメモリである。外部インターフェイス24は、データ処理システム2外と情報授受を行うためのインターフェイスである。システムバス25は、DFP10と、ホストCPU21と、ROM22と、RAM23と、外部インターフェイス24との間で情報の送受信を行うためのものである。
DFP10は、ホストCPU21の重い演算負荷に対処するために設けられている個別のマスタとして位置づけられている。DFP10は、イベントハンドラ20が生成した割り込みをサポートするように構成されている。
続いて図3を参照しながら、DFP10について説明する。図3に示されるように、DFP10は、コマンドユニット12と、スレッドスケジューラ14と、実行コア16と、メモリサブシステム18と、を備えている。
コマンドユニット12は、コンフィグ・インターフェイスとの間で情報通信可能なように構成されている。コマンドユニット12は、コマンドバッファとしても機能している。
スレッドスケジューラ14は、図1(B)に例示されるような多量のスレッドの処理をスケジューリングする部分である。スレッドスケジューラ14は、スレッドを跨いだスケジューリングを行うことが可能である。
実行コア16は、4つのプロセッシングエレメントである、PE#0と、PE#1と、PE#2と、PE#3と、を有している。実行コア16は、独立してスケジューリング可能な多数のパイプラインを有している。
メモリサブシステム18は、アービタ181と、L1キャッシュ18aと、L2キャッシュ18bと、を有している。メモリサブシステム18は、システム・バス・インターフェイス及びROMインターフェイスとの間で情報通信可能なように構成されている。
続いて、図4を参照しながら、コンパイラ50について説明する。コンパイラ50は、機能的な構成要素として、局所性検出部501と、タグ付与部502と、を備える。
局所性検出部501は、グラフ構造を構成する個々の処理ノードにおいて利用するメモリ情報を検出する部分である。タグ付与部502は、局所性検出部501が検出したメモリ情報に基づいて、タグ情報を付与する部分である。タグ情報は、処理ノードにおける複数の演算それぞれに用いられるメモリアクセスの内容を示すものである。
続いて、図5を参照しながら、スレッドスケジューラ14の機能的な構成要素について説明する。スレッドスケジューラ14は、機能的な構成要素として、タグ参照部141と、アロケーション部142と、を備える。
タグ参照部141は、処理ノードにおける複数の演算それぞれに用いられるメモリアクセスの内容を示すタグ情報を読み取る部分である。
アロケーション部142は、タグ情報に基づいて複数の演算の処理順序を決定する部分である。
本実施形態におけるタグ参照部141及びアロケーション部142の処理を説明するのに先立って、比較のためタグ情報を用いない従来の処理方法について図6及び図7を参照しながら説明する。
図6(A)は、スレッド1用のプログラムを示している。スレッド1用のプログラム中には、処理グループGr1として「d=a+b」「e=a+c」があり、処理グループGr2として「g=b+c」がある。
図6(B)は、メモリ領域の状況を示している。メモリ領域には、データとして「a」「b」「c」「d」「e」「f」が格納されており、演算後の格納領域として、「g(スレッド1用)」「h(スレッド1用)」「g(スレッド2用)」が設けられている。
図6(C)は、キャッシュ領域の状況を示している。キャッシュライン1には、「a」「b」「c」の保持領域が確保され、キャッシュライン2には、「d」「e」「f」の保持領域が確保されている。
図6(D)は、スレッド2用のプログラムを示している。スレッド2用のプログラム中には、処理グループGr3として「f=a+d」があり、処理グループGr4として「g=b+c」がある。
このような状況で、処理グループGr1、処理グループGr2、処理グループGr3、処理グループGr4の順に処理した場合のキャッシュ領域の変遷状況について、図7を参照しながら説明する。
図7は、キャッシュ領域の状況を示している。処理グループGr1を実行するにあたっては、キャッシュライン1に「a」「b」「c」が保持される。処理グループGr1が処理されると、「d=a+b」「e=a+c」が演算され、キャッシュライン2に演算結果である「d」「e」と「f」が保持されている。
処理グループGr1に続いて処理グループGr2が処理されると、「g=b+c」の演算結果である「g(スレッド1用)」を格納する必要があるため、キャッシュライン2が書き換えられる。
処理グループGr2に続いて処理グループGr3が処理されると、演算結果である「f」を格納する必要があるため、キャッシュライン2が書き換えられる。
処理グループGr3に続いて処理グループGr4が処理されると、演算結果である「g(スレッド2用)」を格納する必要があるため、キャッシュライン2が書き換えられる。
このような頻繁なキャッシュの書き換えを回避する一例について、図8及び図9を参照しながら説明する。
図8(A)は、スレッド1用のプログラムを示している。スレッド1用のプログラム中には、処理グループGr1として「d=a+b」「e=a+c」があり、処理グループGr2として「g=b+c」がある。処理グループGr1には、タグ情報として「TAG:a,b,c,d,e」が付与されている。処理グループGr2には、タグ情報として「TAG:c,g(スレッド1)」が付与されている。
図8(B)は、メモリ領域の状況を示している。メモリ領域には、データとして「a」「b」「c」「d」「e」「f」が格納されており、演算後の格納領域として、「g(スレッド1用)」「h(スレッド1用)」「g(スレッド2用)」が設けられている。
図8(C)は、キャッシュ領域の状況を示している。キャッシュライン1には、「a」「b」「c」の保持領域が確保され、キャッシュライン2には、「d」「e」「f」の保持領域が確保されている。
図8(D)は、スレッド2用のプログラムを示している。スレッド2用のプログラム中には、処理グループGr3として「f=a+d」があり、処理グループGr4として「g=b+c」がある。処理グループGr3には、タグ情報として「TAG:a,d,f」が付与されている。処理グループGr4には、タグ情報として「TAG:c,g(スレッド2)」が付与されている。
このようにタグ情報が付与されていると、キャッシュメモリの書き換えが少なくて済むように処理の順番が設定される。一例としては、最初に実行されるのが処理グループGr1であると決定される。続いて、処理グループGr1のタグ情報「TAG:a,b,c,d,e」と共通部分が多いタグ情報「TAG:a,d,f」が付与されている処理グループGr3を処理することが決定される。
続いて、処理グループGr3のタグ情報「TAG:a,d,f」と共通部分が多いタグ情報が付与されている処理グループを探すのであるが、共通部分があるタグ情報が付与されている処理グループが無いため、当初の順番に沿って、処理グループGr2、処理グループGr4の順に実行される。
図9を参照しながら、処理グループGr1、処理グループGr3、処理グループGr2、処理グループGr4の順に処理した場合のキャッシュ領域の変遷状況について説明する。
処理グループGr1を実行するにあたっては、キャッシュライン1に「a」「b」「c」が保持される。処理グループGr1が処理されると、「d=a+b」「e=a+c」が演算され、キャッシュライン2に演算結果である「d」「e」と「f」が保持されている。
処理グループGr1に続いて処理グループGr3が処理されると、処理に用いるデータは既にキャッシュラインに格納されているため、キャッシュの書き換えは発生しない。
処理グループGr3に続いて処理グループGr2を実行するにあたっては、「g=b+c」の演算結果である「g(スレッド1用)」を格納する必要があるため、キャッシュライン2が書き換えられる。
処理グループGr2に続いて処理グループGr4が実行される場合、「g(スレッド2用)」が確保されているため、キャッシュの書き換えは発生しない。
上記説明したように、本実施形態は、複数の処理ノードで構成されるグラフ構造のプログラムを実行する際のスケジューリング方法であって、処理ノードにおける複数の演算それぞれに用いられるメモリアクセスの内容を示すタグ情報を読み取るタグ参照ステップと、タグ情報に基づいて複数の演算の処理順序を決定するアロケーションステップと、を備える。
装置として捉えれば、複数の処理ノードで構成されるグラフ構造のプログラムを実行する際のスケジューリング装置としてのスレッドスケジューラ14であって、処理ノードにおける複数の演算それぞれに用いられるメモリアクセスの内容を示すタグ情報を読み取るタグ参照部141と、タグ情報に基づいて複数の演算の処理順序を決定するアロケーション部142と、を備える。
本実施形態では、タグ情報を読み取ることで、複数の演算それぞれにおけるメモリアクセスの状況を把握することができるので、キャッシュメモリの書き換えが減少するように複数の演算の処理順序を決定することができる。
以上、具体例を参照しつつ本実施形態について説明した。しかし、本開示はこれらの具体例に限定されるものではない。これら具体例に、当業者が適宜設計変更を加えたものも、本開示の特徴を備えている限り、本開示の範囲に包含される。前述した各具体例が備える各要素およびその配置、条件、形状などは、例示したものに限定されるわけではなく適宜変更することができる。前述した各具体例が備える各要素は、技術的な矛盾が生じない限り、適宜組み合わせを変えることができる。
141:タグ参照部
142:アロケーション部

Claims (2)

  1. 複数の処理ノードで構成されるグラフ構造のプログラムを実行する際のスケジューリング方法であって、
    処理ノードにおける複数の演算それぞれに用いられるメモリアクセスの内容を示すタグ情報を読み取るタグ参照ステップと、
    前記タグ情報に基づいて前記複数の演算の処理順序を決定するアロケーションステップと、を備えるスケジューリング方法。
  2. 複数の処理ノードで構成されるグラフ構造のプログラムを実行する際のスケジューリング装置であって、
    処理ノードにおける複数の演算それぞれに用いられるメモリアクセスの内容を示すタグ情報を読み取るタグ参照部(141)と、
    前記タグ情報に基づいて前記複数の演算の処理順序を決定するアロケーション部(142)と、を備えるスケジューリング装置。
JP2018068434A 2018-03-30 2018-03-30 スケジューリング方法、スケジューリング装置 Pending JP2019179417A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018068434A JP2019179417A (ja) 2018-03-30 2018-03-30 スケジューリング方法、スケジューリング装置
PCT/JP2019/009632 WO2019188180A1 (ja) 2018-03-30 2019-03-11 スケジューリング方法、スケジューリング装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018068434A JP2019179417A (ja) 2018-03-30 2018-03-30 スケジューリング方法、スケジューリング装置

Publications (1)

Publication Number Publication Date
JP2019179417A true JP2019179417A (ja) 2019-10-17

Family

ID=68061547

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018068434A Pending JP2019179417A (ja) 2018-03-30 2018-03-30 スケジューリング方法、スケジューリング装置

Country Status (2)

Country Link
JP (1) JP2019179417A (ja)
WO (1) WO2019188180A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0844577A (ja) * 1994-07-26 1996-02-16 Sumisho Electron Kk データ分割方法及びマルチプロセッサシステム
JPH10116198A (ja) * 1996-09-30 1998-05-06 Nec Corp プログラムのキャッシュ局所性改善方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4884297B2 (ja) * 2006-05-26 2012-02-29 パナソニック株式会社 コンパイラ装置、コンパイル方法およびコンパイラプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0844577A (ja) * 1994-07-26 1996-02-16 Sumisho Electron Kk データ分割方法及びマルチプロセッサシステム
JPH10116198A (ja) * 1996-09-30 1998-05-06 Nec Corp プログラムのキャッシュ局所性改善方法

Also Published As

Publication number Publication date
WO2019188180A1 (ja) 2019-10-03

Similar Documents

Publication Publication Date Title
JP6126311B2 (ja) 待ち時間の影響を受けやすい仮想マシンをサポートするように構成されるcpuスケジューラ
US10353859B2 (en) Register allocation modes in a GPU based on total, maximum concurrent, and minimum number of registers needed by complex shaders
US8499010B2 (en) Garbage collection in a multiple virtual machine environment
TWI537831B (zh) 多核心處理器、用於執行處理程序切換之方法、用於保全一記憶體區塊之方法、用於致能使用一多核心裝置之異動處理之設備、以及用於執行記憶體異動處理之方法
US9378069B2 (en) Lock spin wait operation for multi-threaded applications in a multi-core computing environment
JP2012104140A (ja) 待機状態にあるプロセッサ実行リソースの共有
JP2013506179A (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
JP2009528610A (ja) タスクの実行フェーズに基づいてキャッシュパーティションを動的にリサイズする方法及び装置
US9229765B2 (en) Guarantee real time processing of soft real-time operating system by instructing core to enter a waiting period prior to transferring a high priority task
KR20110075297A (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
WO2020121840A1 (ja) 演算制御装置
US9697123B2 (en) Information processing device, control method of information processing device and control program of information processing device
JP4253796B2 (ja) コンピュータ及び制御方法
WO2023077875A1 (zh) 用于并行执行核心程序的方法和装置
WO2019188180A1 (ja) スケジューリング方法、スケジューリング装置
JP2013114538A (ja) 情報処理装置、情報処理方法及び制御プログラム
WO2014027444A1 (ja) スケジューリング装置、及び、スケジューリング方法
JP4017005B2 (ja) 演算装置
JP7217341B2 (ja) プロセッサおよびレジスタの継承方法
WO2019188177A1 (ja) 情報処理装置
JP7157542B2 (ja) プリフェッチコントローラ
JPH02238556A (ja) プロセススケジューリング方式およびマルチプロセッサシステム
JP6364827B2 (ja) 情報処理装置、及び、そのリソースアクセス方法、並びに、リソースアクセスプログラム
JP2010026575A (ja) スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム
JP5847313B2 (ja) 情報処理装置

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20190326

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20190327

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211228

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220425

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220830