JP2019179419A - プリフェッチコントローラ - Google Patents

プリフェッチコントローラ Download PDF

Info

Publication number
JP2019179419A
JP2019179419A JP2018068436A JP2018068436A JP2019179419A JP 2019179419 A JP2019179419 A JP 2019179419A JP 2018068436 A JP2018068436 A JP 2018068436A JP 2018068436 A JP2018068436 A JP 2018068436A JP 2019179419 A JP2019179419 A JP 2019179419A
Authority
JP
Japan
Prior art keywords
prefetch
amount
threads
thread
priority
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.)
Granted
Application number
JP2018068436A
Other languages
English (en)
Other versions
JP7157542B2 (ja
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 JP2018068436A priority Critical patent/JP7157542B2/ja
Priority to PCT/JP2019/009634 priority patent/WO2019188182A1/ja
Publication of JP2019179419A publication Critical patent/JP2019179419A/ja
Application granted granted Critical
Publication of JP7157542B2 publication Critical patent/JP7157542B2/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】複数のスレッドを並列処理する際に、命令フェッチの競合や帯域不足を緩和するプリフェッチコントローラを提供する。【解決手段】プロセッサに設けられるプリフェッチコントローラであって、複数のスレッド毎に予め設定されている平均命令消費量と、現時点でのプリフェッチ量とを比較するプリフェッチ量比較部(601)と、プリフェッチ量比較部(601)の比較結果に基づいて、プリフェッチ量が相対的に不足しているスレッドのプリフェッチ優先順位を上昇させる優先順位変更部(602)と、を備える。【選択図】図6

Description

本開示は、プロセッサに設けられるプリフェッチコントローラに関する。
命令キャッシュを備えるプロセッサでは、キャッシュミス後のキャッシュフィルを待たされることによって処理性能が低下するのを防止するために、プリフェッチ機能が広く採用されている。プリフェッチ機能は、プロセッサが将来実行するであろう命令を予測し、キャッシュミスが発生する前に予め命令キャッシュ等のプリフェッチバッファに読み込んでおく機能である(下記特許文献1参照)。
特開2016−157371号公報
特許文献1に記載されているプリフェッチ手法では、複数のスレッドを並列処理する際に、命令フェッチの競合や帯域不足が発生するおそれがある。
本開示は、複数のスレッドを並列処理する際に、命令フェッチの競合や帯域不足を緩和するプリフェッチコントローラを提供することを目的とする。
本開示は、プロセッサに設けられるプリフェッチコントローラであって、複数のスレッド毎に予め設定されている平均命令消費量と、現時点でのプリフェッチ量とを比較するプリフェッチ量比較部(601)と、プリフェッチ量比較部の比較結果に基づいて、プリフェッチ量が相対的に不足しているスレッドのプリフェッチ優先順位を上昇させる優先順位変更部(602)と、を備える。
本開示によれば、実際のプリフェッチ量の変動に応じてプリフェッチ優先順位を変更できるので、複数のスレッドを並列処理する際に、命令フェッチの競合や帯域不足を緩和することができる。
尚、「課題を解決するための手段」及び「特許請求の範囲」に記載した括弧内の符号は、後述する「発明を実施するための形態」との対応関係を示すものであって、「課題を解決するための手段」及び「特許請求の範囲」が、後述する「発明を実施するための形態」に限定されることを示すものではない。
本開示によれば、複数のスレッドを並列処理する際に、命令フェッチの競合や帯域不足を緩和するプリフェッチコントローラを提供することができる。
図1は、本実施形態の前提となる並列処理について説明するための図である。 図2は、図1に示される並列処理を実行するためのシステム構成例を示す図である。 図3は、図2に用いられるDFPの構成例を示す図である。 図4は、コンパイラの機能的な構成例を説明するための図である。 図5は、コンパイラの処理を説明するための図である。 図6は、プリフェッチコントローラの機能的な構成例を説明するための図である。 図7は、プリフェッチコントローラの処理を説明するための図である。
以下、添付図面を参照しながら本実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
図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は、図1に示されるようなグラフ構造のプログラムコードを解析して複数のスレッドを特定する部分である。
平均命令消費量算出部502は、ループ構造解析部501が特定した複数のスレッドそれぞれに対して平均命令消費量を算出する部分である。図5に示される例では、スレッド1の平均命令消費量が1500、スレッド2の平均命令消費量が2000、スレッド3の平均命令消費量が1000、スレッド4の平均命令消費量が5000となっている。平均命令消費量算出部502は、算出した平均命令消費量をDFP10に通知する。
続いて、図6を参照しながら、DFP10に設けられるプリフェッチコントローラ60について説明する。プリフェッチコントローラ60は、機能的な構成要素として、プリフェッチ量比較部601と、優先順位変更部602と、を備える。
プリフェッチ量比較部601は、平均命令消費量算出部502から通知された平均命令消費量と、現時点でのプリフェッチ量とを比較する部分である。
優先順位変更部602は、プリフェッチ量比較部601の比較結果に基づいて、プリフェッチ量が相対的に不足しているスレッドのプリフェッチ優先順位を上昇させる部分である。優先順位変更部602は、この比較結果にスレッドの実行優先度を加味して優先順位を決定することができる。
図7に示される例では、スレッド1の平均命令消費量が1500に対してプリフェッチ量が600、スレッド2の平均命令消費量が2000に対してプリフェッチ量が1700、スレッド3の平均命令消費量が1000に対してプリフェッチ量が1000、スレッド4の平均命令消費量が5000に対してプリフェッチ量が100となっている。
図7に示される例の場合、スレッド1及びスレッド4の相対的なプリフェッチ量が相対的に不足しているのでプリフェッチ優先順位を上げ、スレッド2及びスレッド3のプリフェッチ優先順位を下げる。
上記説明したように、本実施形態は、プロセッサであるDFP10に設けられるプリフェッチコントローラ60であって、複数のスレッド毎に予め設定されている平均命令消費量と、現時点でのプリフェッチ量とを比較するプリフェッチ量比較部601と、プリフェッチ量比較部の比較結果に基づいて、プリフェッチ量が相対的に不足しているスレッドのプリフェッチ優先順位を上昇させる優先順位変更部602と、を備える。
本実施形態によれば、実際のプリフェッチ量の変動に応じてプリフェッチ優先順位を変更できるので、複数のスレッドを並列処理する際に、命令フェッチの競合や帯域不足を緩和することができる。
以上、具体例を参照しつつ本実施形態について説明した。しかし、本開示はこれらの具体例に限定されるものではない。これら具体例に、当業者が適宜設計変更を加えたものも、本開示の特徴を備えている限り、本開示の範囲に包含される。前述した各具体例が備える各要素およびその配置、条件、形状などは、例示したものに限定されるわけではなく適宜変更することができる。前述した各具体例が備える各要素は、技術的な矛盾が生じない限り、適宜組み合わせを変えることができる。
601:プリフェッチ量比較部
602:優先順位変更部

Claims (1)

  1. プロセッサに設けられるプリフェッチコントローラであって、
    複数のスレッド毎に予め設定されている平均命令消費量と、現時点でのプリフェッチ量とを比較するプリフェッチ量比較部(601)と、
    前記プリフェッチ量比較部の比較結果に基づいて、プリフェッチ量が相対的に不足しているスレッドのプリフェッチ優先順位を上昇させる優先順位変更部(602)と、を備えるプリフェッチコントローラ。
JP2018068436A 2018-03-30 2018-03-30 プリフェッチコントローラ Active JP7157542B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018068436A JP7157542B2 (ja) 2018-03-30 2018-03-30 プリフェッチコントローラ
PCT/JP2019/009634 WO2019188182A1 (ja) 2018-03-30 2019-03-11 プリフェッチコントローラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018068436A JP7157542B2 (ja) 2018-03-30 2018-03-30 プリフェッチコントローラ

Publications (2)

Publication Number Publication Date
JP2019179419A true JP2019179419A (ja) 2019-10-17
JP7157542B2 JP7157542B2 (ja) 2022-10-20

Family

ID=68061548

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018068436A Active JP7157542B2 (ja) 2018-03-30 2018-03-30 プリフェッチコントローラ

Country Status (2)

Country Link
JP (1) JP7157542B2 (ja)
WO (1) WO2019188182A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001350638A (ja) * 2000-04-04 2001-12-21 Internatl Business Mach Corp <Ibm> 多重スレッド使用方法、多重スレッド処理システム、スレッド実行コントローラおよびバッファ使用方法
JP2006343872A (ja) * 2005-06-07 2006-12-21 Keio Gijuku マルチスレッド中央演算装置および同時マルチスレッディング制御方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6965982B2 (en) 2001-06-29 2005-11-15 International Business Machines Corporation Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread
US9921839B1 (en) 2016-09-23 2018-03-20 Intel Corporation Coordinated thread criticality-aware memory scheduling

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001350638A (ja) * 2000-04-04 2001-12-21 Internatl Business Mach Corp <Ibm> 多重スレッド使用方法、多重スレッド処理システム、スレッド実行コントローラおよびバッファ使用方法
JP2006343872A (ja) * 2005-06-07 2006-12-21 Keio Gijuku マルチスレッド中央演算装置および同時マルチスレッディング制御方法

Also Published As

Publication number Publication date
WO2019188182A1 (ja) 2019-10-03
JP7157542B2 (ja) 2022-10-20

Similar Documents

Publication Publication Date Title
US8190863B2 (en) Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
KR101834195B1 (ko) 다중코어 시스템 및 로드 밸런싱 방법
EP3092567B1 (en) System and method for isolating i/o execution via compiler and os support
US9858115B2 (en) Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium
KR101885211B1 (ko) Gpu의 자원 할당을 위한 방법 및 장치
US9424105B2 (en) Preempting tasks at a preemption point of a kernel service routine based on current execution mode
EP2905707B1 (en) Arithmetic processing apparatus and control method therefor
US20150121387A1 (en) Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core system and related non-transitory computer readable medium
WO2020121840A1 (ja) 演算制御装置
Chiang et al. Kernel mechanisms with dynamic task-aware scheduling to reduce resource contention in NUMA multi-core systems
CN111045800A (zh) 一种基于短作业优先的优化gpu性能的方法及系统
US20130117757A1 (en) Method and apparatus for scheduling application programs
CN113946445A (zh) 一种基于asic的多线程模块及多线程控制方法
JP7157542B2 (ja) プリフェッチコントローラ
JP7064367B2 (ja) デッドロック回避方法、デッドロック回避装置
WO2019188177A1 (ja) 情報処理装置
WO2019153684A1 (zh) 一种低延迟指令调度器的自动管理方法
JP7039365B2 (ja) デッドロック回避方法、デッドロック回避装置
WO2019188180A1 (ja) スケジューリング方法、スケジューリング装置
WO2019188181A1 (ja) スケジューリング方法、スケジューリング装置
WO2019188171A1 (ja) コード生成方法、コード生成装置
Olaru et al. Real-time Java and multi-core architectures
JP2011008617A (ja) マルチスレッド実行装置、オブジェクトプログラムの生成方法、プログラム
TW201405421A (zh) 執行緒優先權調整方法及系統

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220310

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221007

R150 Certificate of patent or registration of utility model

Ref document number: 7157542

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313115

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350