JP6260303B2 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

演算処理装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP6260303B2
JP6260303B2 JP2014014390A JP2014014390A JP6260303B2 JP 6260303 B2 JP6260303 B2 JP 6260303B2 JP 2014014390 A JP2014014390 A JP 2014014390A JP 2014014390 A JP2014014390 A JP 2014014390A JP 6260303 B2 JP6260303 B2 JP 6260303B2
Authority
JP
Japan
Prior art keywords
arithmetic processing
request
memory access
move
processing unit
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
JP2014014390A
Other languages
English (en)
Other versions
JP2015141590A (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 JP2014014390A priority Critical patent/JP6260303B2/ja
Priority to US14/599,596 priority patent/US9910779B2/en
Priority to EP15152249.7A priority patent/EP2905707B1/en
Publication of JP2015141590A publication Critical patent/JP2015141590A/ja
Application granted granted Critical
Publication of JP6260303B2 publication Critical patent/JP6260303B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Description

本発明は,演算処理装置及び演算処理装置の制御方法に関する。
近年のCPU(Central Processing Unit)チップ(演算処理装置)は,複数のCPUコア(演算処理部)を有し,複数のCPUコアがユーザプログラムの命令を並列に実行して演算速度を高めている。そして,ユーザプログラムの命令を実行する複数の汎用CPUコアと,基本ソフトウエアであるOS(Operating System)の命令を実行するOS専用CPUコアとを混在したヘテロジニアス構成のCPUチップが提案されている。かかるCPUチップでは,複数の汎用CPUコアがユーザプログラムの複雑な計算命令を並列に処理することで,計算処理効率を高めるとともに,OSによる割り込み処理やデータコピーに対応するメモリアクセスをOS専用CPUコアが実行することで,汎用CPUコアによる並列計算処理に無用な処理の遅延や乱れが発生することを防止する。
特開2009−15509号公報 特開平10−254775号公報 特開2008−114065号公報 特開2010−140146号公報 特開2011−070654号公報
このようなヘテロジニアス構成のマルチコアCPUチップでは,計算処理を実行する汎用CPUコアとOS専用CPUコアとにそれぞれ別々のメモリアクセス帯域を設けて,互いの処理が影響し合わないようにしている。具体的には,CPUチップを設計する段階で,汎用CPUコアとOS専用CPUコアそれぞれにキャッシュメモリを別々に割り当てて,キャッシュメモリの容量により汎用CPUコアとOS専用CPUコアのメモリアクセスの帯域を最適化する。
しかしながら,OS専用CPUコアによるメモリアクセス要求の最適な頻度は,使用状態により様々に異なるので,CPUチップの設計段階で,OS専用CPUコアのメモリアクセスの資源量を最適化することは困難である。OS専用CPUコアからのメモリアクセスは,割り込み処理などに関連していて重要であるので,優先的に実行させることが必要であるが,一方で,OS専用CPUコアからのメモリアクセス帯域を広く設計しすぎると,汎用CPUコアによる計算処理でのメモリアクセスが滞ることになり,全体のマルチCPUコアによるメモリアクセス効率を高めることができない場合がある。
そこで,本発明の目的は,OS用CPUコアと汎用CPUコアのメモリアクセス帯域を最適化することができる演算処理装置及び演算処理装置の制御方法を提供することにある。
実施の形態の第1の側面は,オペレーティングシステムに含まれる命令を実行するOS用演算処理部と,
前記オペレーティングシステム以外のプログラムに含まれる命令をそれぞれ実行する複数の汎用演算処理部と,
前記複数の汎用演算処理部と前記OS用演算処理部とで共有される共有キャッシュメモリと,キャッシュ制御部と,前記複数の汎用演算処理部と前記OS用演算処理部からのメモリアクセス要求を選択して前記キャッシュ制御部に投入する要求選択回路と,前記メモリアクセス要求に対応するデータを一時的に記憶するデータバッファとを有する共有キャッシュ部と,
メインメモリへのメモリアクセスを制御するメモリアクセス制御部とを有し,
前記共有キャッシュ部は,前記要求選択回路による前記OS用演算処理部からのメモリアクセス要求の投入基準を有する第1の設定値と,前記データバッファ内の前記OS用演算処理部からのメモリアクセス要求に対するデータを記憶する領域の容量を設定する第2の設定値のいずれか一方または両方が設定されるメモリアクセス帯域制御レジスタを有する演算処理装置である。
第1の側面によれば,OS用CPUコアからのメモリアクセス要求と汎用CPUコアからのメモリアクセス要求との比率を,より柔軟にかつ動的に設定することができる。
本実施の形態におけるCPUチップ(演算処理装置)の構成を示す図である。 本実施の形態におけるCPUチップ内のCPUコアとL2キャッシュ部の詳細構成を示す図である。 メモリアクセス帯域制御レジスタの構成例を示す図である。 OS専用CPUコアからのメモリアクセス要求,特にムーブイン要求に対するL2キャッシュ部120内での処理を示すフローチャート図である。
図1は,本実施の形態におけるCPUチップ(演算処理装置)の構成を示す図である。CPUチップ1は,複数のCPUコア10を有するCPUコア群と,複数のCPUコアで共用されるレベル2(L2)のキャッシュ部20とを有し,更に,外部のメインメモリ2にアクセス可能に構成される。複数のCPUコア10は,OSに含まれる命令を専用に実行する1つのOS専用CPUコア10_OSと,OS以外のプログラムに含まれる命令をそれぞれ実行する複数の汎用CPUコア10_GEとを有する。図1の例では,16個の汎用CPUコアを有する。
複数のCPUコア10はそれぞれ,後述するとおり,レベル1(L1)のキャッシュ部と,ALU(演算論理ユニット)と,演算実行パイプライン,メモリアクセス要求バッファなどを有する。
一方,L2キャッシュ部20は,複数のCPUコア10により共有され,各CPUコア10からのメモリアクセス要求を選択する要求選択回路100と,L2キャッシュ制御部120と,L2キャッシュメモリ24と,メモリコントローラ27とを有する。L2キャッシュメモリ24は,複数のCPUコア10により共有されるキャッシュメモリである。L2キャッシュ制御部120は,CPUコア10からのメモリアクセス要求に対する制御を実行するL2キャッシュ制御パイプライン(以下L2パイプライン)30と,ムーブインバッファ28と,メモリアクセス帯域制御レジスタ110とを有する。メモリアクセス帯域制御レジスタ110には,ユーザプログラムにより,OS専用CPUコア10_OSからのメモリアクセス要求の頻度を制御する各種設定値が設定される。
要求選択回路100は,メモリアクセス帯域制御レジスタ110内の設定値に基づいて,OS専用CPUコア10_OSからのメモリアクセス要求と,汎用CPUコア10_GEからのメモリアクセス要求とから1つのメモリアクセス要求を選択し,選択したメモリアクセス要求をL2パイプライン30に投入する。つまり,要求選択回路100は,メモリアクセス要求をL2パイプライン30に投入する要求投入回路である。
L2パイプライン30は,その投入されたメモリアクセス要求を処理する。例えば,投入されたメモリアクセス要求のアクセス先アドレスについて図示しないタグメモリをチェックし,アクセス先アドレスのキャッシュブロックがL2キャッシュメモリ24に格納されている場合は,L2キャッシュメモリ24にアクセスし,格納されていない場合はメモリコントローラ27にメインメモリ2へのメモリアクセスを要求する。
例えば,メモリアクセス要求が読み出し要求または書き込み要求であるムーブイン要求の場合,L2パイプライン30は,ムーブインバッファ28に必要な領域を確保した後,タグメモリがヒットする場合は,L2キャッシュメモリ24内の対応するキャッシュブロックのデータをムーブインバッファ28に記憶し,ミスヒットの場合は,メモリコントローラ27に読み出し要求を発行し,メインメモリ2から読み出されたデータをムーブインバッファ28に記憶する。そして,L2パイプライン30は,ムーブインバッファ28に記憶されたデータを要求元のCPUコア10に送信する。
また,メモリアクセス要求がCPUコア内のL1キャッシュメモリ内のデータの書き出し要求であるムーブアウト要求の場合,L2パイプライン30は,図示しないムーブアウトバッファに必要な領域を確保した後,CPUコア10からのムーブアウトデータをムーブアウトバッファに一時的に記憶し,そのデータをL2キャッシュメモリ24に書き込み,タグメモリにタグ情報を登録する。メモリアクセス要求がL2キャッシュメモリ24内のデータの書き出し要求であるムーブアウト要求の場合,L2パイプライン30は,上記と同様にして,L2キャッシュメモリ24内のデータをムーブアウトバッファに一時的に記憶し,メモリコントローラ27経由でメインメモリ2に書き出す。
本実施の形態では,ユーザプログラムによりメモリアクセス帯域制御レジスタ110の設定値を設定することができる。そして,要求選択回路100は,OS専用CPUコア10_OSからのメモリアクセス要求を,メモリアクセス帯域制御レジスタ110に設定されている第1の設定値に基づいて選択し,L2パイプライン30に投入する。第1の設定値は,OS専用CPUコアからのメモリアクセス要求をL2パイプライン30に投入する頻度を規定する設定値であり,例えば,メモリアクセス要求のうち,特にOS専用CPUコア10_OSからのムーブイン要求の投入頻度と,汎用CPUコア10_GEからのムーブイン要求に対する優先度(優先するか否か)とを有する。
さらに,L2パイプライン30は,第2の設定値に基づいて, OS専用CPUコア10_OSからのムーブイン要求に対するデータをムーブインバッファ28内に一時的に記憶する領域の上限と,汎用CPUコア10_GEからのムーブイン要求に対するデータをムーブインバッファ28内の一時的に記憶する領域の上限とを制御して,各メモリアクセス要求に対するデータ記憶領域を第2の設定値の上限を超えない範囲で確保するよう制御する。
上記の要求選択回路100を制御する第1の設定値と,ムーブインバッファ28におけるOS専用CPUコアの領域と汎用CPUコアの一時的に記憶する領域の上限容量を制御する第2の設定値とは,いずれか一方を利用しても良いが,両方を利用することで,より高精度にOS専用CPUコア10_OSによるメモリアクセス要求の帯域を設定することができる。よって,ユーザは,ユーザプログラムの状況に応じて最適な帯域を,柔軟に且つ動的に制御することができる。
図2は,本実施の形態におけるCPUチップ内のCPUコアとL2キャッシュ部の詳細構成を示す図である。図2のCPUチップ1は,一例として,4つのCPUコア10を有し,そのうち1つはOS専用CPUコアであり,残りの3つは汎用CPUコアである。4つのCPUコア10の構成は同等である。
CPUコア10は,レベル1(L1)の命令キャッシュメモリ11と,命令キャッシュメモリから読み出された命令をデコードする命令デコーダ12と, L1データキャッシュメモリ13と,命令デコーダ12が発行した命令に基づいて算術演算及び論理演算を行うALU(演算論理ユニット)14と,メモリ管理ユニット(MMU: Memory Management Unit)15とを有する。さらに,CPUコア10は,L1ムーブインバッファ(L1-MBI)16と,プリフェッチキュー(PFQ)17と,ムーブアウトバッファ(MOB)18と,命令フェッチパイプライン19aと,ロード/ストアパイプライン19bと,実行パイプライン19cとを有する。
メモリ管理ユニット15は,仮想アドレスから物理アドレスへの変換を行う。L1ムーブインバッファ16は,L2キャッシュ部20へのムーブイン要求を一時的に記憶するバッファである。このムーブイン要求は,CPUコア10内のL1キャッシュメモリ11,13でキャッシュミスが発生した場合に発生し,L2キャッシュメモリ24やメインメモリ2への読み出し要求または書き込み要求である。
プリフェッチキュー17は,L2キャッシュメモリ24までのプリフェッチ要求を一時的に記憶するバッファである。また,ムーブアウトバッファ18は,L1キャッシュメモリ11,13内の命令やデータをL2キャッシュメモリ24に書き出す(ムーブアウト)要求を一時的に記憶するバッファである。
命令フェッチパイプライン19aは,L1命令キャッシュメモリ11からの命令の読み出し処理を実行するパイプライン回路である。ロード/ストアパイプライン19bは,データのロード処理及びストア処理を実行するパイプライン回路である。そして,実行パイプライン19cは,命令の実行を行うパイプライン回路である。
L2キャッシュ部20は,4つのCPUコア10によって共用される2次キャッシュメモリユニットである。L2キャッシュ部20は,4つのCPUコア10にそれぞれ設けられた4つのムーブインバッファ(L1-MIB)16に対応してそれぞれ設けられた4つのムーブインポート22と,4つのプリフェッチキュー(PFQ)17にそれぞれ設けられた4つのプリフェッチポート23と,4つのムーブアウトバッファ(MOB)18に対応してそれぞれ設けられた4つのムーブアウトポート21とを有する。そして,要求選択回路100は,各ポート21,22,23内で順番待ちしているアクセス要求を所定の論理で選択し,L2パイプライン30に投入する。
L2キャッシュ部20は,L2キャッシュメモリ24と,L2タグメモリ25と,投入されるアクセス要求を実行するL2パイプライン30とを有し,さらに,メインメモリ2へのムーブイン要求やプリフェッチ要求を一時的に記憶するL2ムーブインバッファ26と,メモリアクセス制御部27と,ムーブイン要求のデータを一時的に記憶するムーブインデータバッファ28と,ムーブアウト要求のデータを一時的に記憶するムーブアウトデータバッファ29とを有する。
L2キャッシュ部20は,メモリアクセス帯域制御レジスタ110を有し,ユーザプログラムを実行することで,CPUコア10から第1,第2の設定値がメモリアクセス帯域制御レジスタ110に設定される。
ムーブアウトポート21は,それぞれ対応するムーブアウトバッファ18からメモリアクセスの一種であるムーブアウト要求(データ書き出し要求)を受け付け,受け付けたムーブアウト要求を古い順に選択して要求選択回路100内にエントリする。
ムーブインポート22は,それぞれ対応するムーブインバッファ16からメモリアクセスの一種であるムーブイン要求(データ読み出し要求または書き込み要求)を受け付け,受け付けたムーブイン要求を古い順に選択して要求選択回路100内にエントリする。
また,プリフェッチポート23は,それぞれ対応するプリフェッチキュー17からメモリアクセスの一種であるプリフェッチ要求を受け付け,受け付けたプリフェッチ要求を古い順に選択して要求選択回路100にエントリする。
要求選択回路100は,各ポート21,22,23とL2ムーブインバッファ26からエントリされたアクセス要求を選択してL2パイプライン30に投入する。そして,本実施の形態によれば,要求選択回路100は,特に,4つのムーブインポート22からエントリされるムーブイン要求のうちOS専用CPUコアからのムーブイン要求を,メモリアクセス帯域制御レジスタ110の第1の設定値に基づいて選択し,L2パイプライン30に投入する。
第1の設定値は,OS専用CPUコアからのムーブイン要求をL2パイプライン30に投入する間隔を設定する投入間隔設定値を有する。この投入間隔設定値は,例えば,16クロックサイクルに1回の頻度でL2パイプライン30に投入すべきことを示す設定値であり,その場合,要求選択回路100は,汎用CPUコアからのムーブイン要求は,毎クロックサイクル,L2パイプライン30に投入し,OS専用CPUコアからのムーブイン要求は,16クロックサイクルに1回しかL2パイプライン30に投入しない。したがって,汎用CPUコアからのムーブイン要求は,OS専用CPUコアからのムーブイン要求がエントリされる場合は,16クロックサイクルに15回はL2パイプライン30に投入され,OS専用CPUコアからムーブイン要求がエントリされない場合は,毎クロックサイクルで投入される。つまり,OS専用CPUコアからのムーブイン要求については,ユーザが設定した頻度でL2パイプライン30に投入するように設定することができる。
第1の設定値は,上記の投入間隔設定値に加えて,OS専用CPUコアからのムーブイン要求を汎用CPUコアからのムーブイン要求に優先して投入すべきか否かを設定する優先処理値を有する。この優先処理値がOS専用CPUコアからのムーブイン要求を汎用コアからのムーブイン要求に優先すべきとする値の場合は,要求選択回路100は,両ムーブイン要求がエントリされると,OS専用CPUコアからのムーブイン要求を優先してL2パイプライン30に投入する。優先処理値が優先すべきとしない値の場合は,例えば,最も早くエントリされた要求を優先して選択するか,4つのCPUコアからの要求を順番に選択する。
第1の設定値の投入間隔設定値と優先処理値とを利用することで,OS専用CPUコアからのムーブイン要求と,複数の汎用CPUコアからのムーブイン要求との間の投入頻度を適切に設定することができ,OS専用CPUコアと複数の汎用CPUコアのメモリアクセス帯域を所望の割合に設定することができる。
L2パイプライン30は,例えば,投入されたムーブイン要求について,アクセス先アドレスについてL2タグメモリをチェックし,キャッシュヒットした場合は,ムーブインバッファ28内に領域を確保してから,L2キャッシュメモリ24内のデータを読み出し,確保したムーブインバッファ28内の領域に一時的に記憶する。一方,キャッシュミスした場合は,ムーブインバッファ28内に領域を確保してから,L2ムーブインバッファ26にメインメモリ2へのムーブイン要求を一時的に格納する。これに応答して,メモリアクセスコントローラ27は,メインメモリ2にアクセスして,データを読み出し,ムーブインバッファ28内の確保した領域にデータを一時的に記憶する。ムーブインバッファ28内に一時的に記憶されたデータは,要求元のCPUコアに送信される。
L2パイプライン30は,ムーブインバッファ28内のOS専用CPUコア10_OSからのムーブイン要求に対するデータを一時的に記憶する領域が,メモリアクセス帯域制御レジスタ110内の第2の設定値である上限値に達するまで,投入されたムーブイン要求に対し,ムーブインバッファ28内の一時的に記憶する領域を割り当てる。L2パイプライン30は,OS専用CPUコアからのムーブイン要求に対して上限値まで記憶領域を割当済みの場合は,新たなムーブイン要求に対してムーブインバッファ28内の領域の割当は行わない。L2パイプライン30は,ムーブインバッファ28内の領域が割り当てられない場合は,L2キャッシュメモリ24内のデータの読み出し,またはメインメモリ2のデータの読み出しは実行しない。したがって,ユーザは第2の設定値により,OS専用CPUコアからのムーブイン要求に対する帯域を制限することができる。したがって,第1の設定値と第2の設定値を組み合わせることで,ユーザは,OS専用CPUコアからのアクセス要求をより高精度に設定することができる。
L2パイプライン30は,投入されるムーブアウト要求に対しても,L2タグメモリをチェックし,キャッシュヒットした場合は,ムーブアウトバッファ29内に領域を確保して,ムーブアウトデータを確保した領域に記憶し,L2キャッシュメモリ24にムーブアウトデータを書込む。L2パイプライン30は,ムーブアウト要求に対して,キャッシュミスヒットした場合は,ムーブアウトバッファ29内に領域を確保して,ムーブアウトデータを確保した領域に記憶し,L2キャッシュメモリとメインメモリ2にそのムーブアウトデータを書込む。
L2パイプライン30は,アクセス要求に対する処理が正常に終了した場合は,完了通知をムーブインポート22とプリフェッチポート23に送信し,アクセス要求に対する処理をアボートした場合は,アボート通知を送信する。
図3は,メモリアクセス帯域制御レジスタの構成例を示す図である。このメモリアクセス帯域制御レジスタ110は,例えば,16ビットで構成される。メモリアクセス帯域制御レジスタ110は,ビット10-15に投入間隔設定領域110_Aを,ビット8-9に優先処理設定領域110_Bを,ビット4-7にOSコアバッファ設定領域110_Cを,ビット0-3に汎用コアバッファ設定領域110_Dをそれぞれ有する。
投入間隔設定領域110_Aには,6ビットのメモリアクセス要求をL2パイプライン30に投入する間隔が設定可能であり,例えば,図示されるように,最大頻度として毎クロックサイクル投入,次に大きな頻度として16クロックサイクルに1回投入,32クロックサイクルに1回投入,そして,最小頻度として1008クロックサイクルに1回投入などの設定が可能である。頻度の刻み幅は,適宜選択可能である。
優先処理設定領域110_Bには,2ビットの設定値が設定可能であり,ビット8を「1」に設定した場合は,要求選択回路100が,OS専用CPUコアからのムーブイン要求を,汎用CPUコアからのムーブイン要求より優先しL2パイプライン30に投入する。ビット9に「1」を設定した場合に,例えば,要求選択回路がOS専用コアからのプリフェッチ要求を,汎用CPUコアからのプリフェッチ要求より優先してL2パイプライン30に投入するようにしてもよい。
OSコアバッファ設定領域110_Cには,4ビットの設定値が設定可能であり,OS専用CPUコアからのムーブイン要求に対してムーブインバッファ28に確保する一時的な記憶領域の上限容量を設定できる。つまり,OS専用CPUコアからのムーブイン要求に専用に割り当てられるムーブインバッファ28内の記憶領域の上限要領の設定値である。この上限容量を大きくすれば,OS専用CPUコアからのムーブイン要求についてのアクセス帯域が大きくなる。
汎用コアバッファ設定領域110_Dには,4ビットの設定値が設定可能であり,汎用CPUコアからのムーブイン要求に対してムーブインバッファ28に確保する一時的な記憶領域の上限容量を設定できる。こちらは,汎用CPUコアからのムーブイン要求に専用に割り当てられるムーブインバッファ28内の記憶領域の上限要領の設定値である。
図3のメモリアクセス帯域制御レジスタ110のフォーマットは,一例であり,他のフォーマットであってもよい。
図4は,OS専用CPUコアからのメモリアクセス要求,特にムーブイン要求に対するL2キャッシュ部120内での処理を示すフローチャート図である。以下の例では,OS専用CPUコアからのアクセス要求のL2パイプライン30への投入間隔が所望の間隔に設定され,OS専用CPUコアからのアクセス要求を汎用CPUコアからのアクセス要求に優先するよう設定され,専用CPUコアからのアクセス要求に対するムーブインバッファ28内の一時的な記憶領域の上限値が所望の値に設定されているものとする。
まず,OS専用CPUコアがメモリアクセス要求を発行し,L1ムーブインバッファ16に格納する(S10)。メモリアクセス要求は,例えばムーブイン要求である。そして,L1ムーブインバッファ16内に格納されたムーブイン要求は,L2キャッシュ部内のムーブインポート22に送信される。
ムーブインポート22は受信したムーブイン要求を,受信順に要求選択回路100にエントリする(S11)。そこで,要求選択回路100は,設定した投入間隔のクロックサイクル経過済みの場合に(S12のYES),そして,OS専用CPUコアのムーブイン要求を優先処理するように設定されている場合に(S14のYES),そのムーブイン要求を最優先でL2パイプライン30に投入する(S17)。つまり,要求選択回路100は,OS専用CPUコアからのムーブイン要求と汎用CPUコアからのムーブイン要求とがエントリされた場合,アクセス帯域制御レジスタ110内の投入間隔設定値と優先処理設定値を参照して,設定した投入間隔のクロックサイクルが経過したクロックサイクルであり,且つOS専用CPUコアのムーブイン要求を優先処理するよう設定されていれば,汎用CPUコアからのムーブイン要求がエントリされていても,OS専用CPUコアからのムーブイン要求を優先してL2パイプライン30に投入する。
L2パイプライン30は,ムーブイン要求を処理し,ムーブインバッファ28内のOS専用CPUコアのためのムーブインデータを一時的に記憶する領域が上限値に達していないか否か,つまり空き領域があるか否かチェックし(S18),空き領域があれば(S18のYES),データを格納するバッファ領域をムーブインバッファ28内に確保し,L2キャッシュメモリ24またはメインメモリ2にアクセスする(S19)。つまり,L2パイプライン30は,タグメモリ25をチェックしキャッシュヒットすれば,L2キャッシュメモリ24にアクセスし,キャッシュミスヒットすれば,メインメモリ2にメモリコントローラ27を介してアクセスする。
そして,L2キャッシュメモリ24またはメインメモリ2から読み出したデータを,ムーブインバッファ28内の予め確保した領域に格納し,OS専用CPUコアにムーブインバッファ28内に格納したデータを送信する(S20)。
工程S11でOS専用CPUコアからのムーブイン要求がエントリされたとき,設定した投入間隔のクロックサイクル経過していない場合は(S12のNO),そのムーブイン要求は1クロックサイクル待って(S13),再度エントリされる。さらに,工程S14でOS専用CPUコアからのムーブイン要求を優先処理しないに優先処理値が設定されている場合は(S14のNO),要求選択回路100は,OS専用CPUコアと汎用CPUコアからのムーブイン要求を順番に選択してL2パイプラインに投入する。したがって,要求選択回路100がOS専用CPUコアのムーブイン要求を選択すれば(S15のYES),その要求をL2キャッシュラインに投入するが(S17),選択しなければ(S15のNO),1クロックサイクル待って(S16),要求選択回路100は再度工程S14の判定を実行する。
さらに,工程S18でOS専用CPUコアからのムーブイン要求に対するムーブインバッファ28内の専用領域が上限容量に達していれば(S18のNO),工程S19のメモリアクセスは実行されずに,1クロックサイクル待って(S13),再度,要求選択回路100が,そのムーブイン要求をL2パイプライン30に投入すべきか否かの判定を行う。このように,ムーブインバッファ28内の専用領域の上限容量を小さくすればアクセス帯域を狭くでき,大きくすればアクセス帯域を広くすることができる。
上記の実施の形態において,OS専用CPUコアは,OSの命令を実行する専用CPUコアであるが,OSの命令のごく一部を汎用CPUコアが実行してもよい。また,逆に,OS専用CPUコアがOS以外のソフトウエアの命令のごく一部を実行してもよい。OS専用CPUコアと汎用CPUコアは,基本的な構成は同等であるからである。
上記の実施の形態では,OS専用CPUコアからのムーブイン要求と汎用CPUコアからのムーブイン要求との間で,いずれかの要求をL2パイプライン30に投入する制御を,アクセス帯域制御レジスタ110内の第1,第2の設定値に応じて行った。しかし,OS専用CPUコアからのプリフェッチ要求と汎用CPUコアからのプリフェッチ要求との間でも,上記と同様に,アクセス帯域制御レジスタ110の第1,第2の設定値に応じて,L2パイプライン30に投入する制御を行っても良い。
本実施の形態によれば,アクセス帯域制御レジスタ110にユーザプログラムから,OS専用CPUコアからのメモリアクセスを共用L2キャッシュ制御パイプライン30に投入する所望の頻度を設定することができるので,OS専用CPUコアからのメモリアクセス要求と汎用CPUコアからのメモリアクセス要求とを適切で所望の頻度に設定することができる。所望の頻度に設定するために,複数のCPUコア間で共用するL2キャッシュ部への投入間隔と,OS専用CPUコアからのアクセス要求の優先処理か否かと,ムーブインバッファ28内の領域確保可能な上限値とをアクセス帯域制御レジスタにユーザプログラムによって設定する。
10:CPUコア
10_OS:OS専用CPUコア
10_GE:汎用CPUコア

Claims (4)

  1. オペレーティングシステムに含まれる命令を実行するOS用演算処理部と,
    前記オペレーティングシステム以外のプログラムに含まれる命令をそれぞれ実行する複数の汎用演算処理部と,
    前記複数の汎用演算処理部と前記OS用演算処理部とで共有される共有キャッシュメモリと,前記複数の汎用演算処理部と前記OS用演算処理部からのメモリアクセス要求を処理するキャッシュ制御部と,前記キャッシュ制御部に投入された前記メモリアクセス要求に対応する読み出しデータを一時的に記憶するデータバッファとを有する共有キャッシュ部と,
    メインメモリへのメモリアクセスを制御するメモリアクセス制御部とを有し,
    前記共有キャッシュ部は,前記データバッファ内の前記OS用演算処理部からの前記メモリアクセス要求に対する前記読み出しデータを記憶する領域の容量を設定する容量設定値が設定されるメモリアクセス帯域制御レジスタを有し,
    前記キャッシュ制御部は、前記容量設定値の容量に基づいて、前記データバッファ内に前記OS用演算処理部からの前記メモリアクセス要求に対応する前記読み出しデータを記憶する領域を割り当てて、前記メモリアクセス要求を実行する演算処理装置。
  2. 請求項1において,
    前記容量設定値は,前記データバッファ内の前記OS用演算処理部からの前記メモリアクセス要求に対するデータを記憶する領域の上限容量を有し,
    前記キャッシュ制御部は,前記上限容量に達するまで,前記OS用演算処理部からの前記メモリアクセス要求に対応する前記読み出しデータを記憶する領域を割り当てる演算処理装置。
  3. 請求項において,
    前記メモリアクセス要求は,前記共有キャッシュメモリまたは前記メインメモリ内のデータを読み出すムーブイン要求と,前記演算処理部内のキャッシュメモリ内のデータを前記共有キャッシュメモリに書き出すムーブアウト要求とを有し,
    前記容量設定値は,前記ムーブイン要求に対する前記読み出しデータを記憶する領域の上限容量を有する演算処理装置。
  4. オペレーティングシステムに含まれる命令を実行するOS用演算処理部と,
    前記オペレーティングシステム以外のプログラムに含まれる命令をそれぞれ実行する複数の汎用演算処理部と,
    前記複数の汎用演算処理部と前記OS用演算処理部とで共有される共有キャッシュメモリと,前記複数の汎用演算処理部と前記OS用演算処理部からのメモリアクセス要求を処理するキャッシュ制御部と,前記キャッシュ制御部に投入された前記メモリアクセス要求に対応する読み出しデータを一時的に記憶するデータバッファとを有する共有キャッシュ部と,
    メインメモリへのメモリアクセスを制御するメモリアクセス制御部とを有する演算処理装置の制御方法であって,
    前記データバッファ内の前記OS用演算処理部からの前記メモリアクセス要求に対する前記読み出しデータを記憶する領域の上限容量を有する容量設定値をメモリアクセス帯域制御レジスタに設定する工程と,
    前記キャッシュ制御部が,前記上限容量に達するまで,前記OS用演算処理部からの前記メモリアクセス要求に対応する前記読み出しデータを記憶する領域を割り当てる工程と
    前記キャッシュ制御部が、前記容量設定値の容量に基づいて、前記データバッファ内に前記OS用演算処理部からの前記メモリアクセス要求に対応する前記読み出しデータを記憶する領域を割り当てて、前記メモリアクセス要求を実行する工程とを有する演算処理装置の制御方法。
JP2014014390A 2014-01-29 2014-01-29 演算処理装置及び演算処理装置の制御方法 Active JP6260303B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014014390A JP6260303B2 (ja) 2014-01-29 2014-01-29 演算処理装置及び演算処理装置の制御方法
US14/599,596 US9910779B2 (en) 2014-01-29 2015-01-19 Arithmetic processing apparatus and control method therefor
EP15152249.7A EP2905707B1 (en) 2014-01-29 2015-01-23 Arithmetic processing apparatus and control method therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014014390A JP6260303B2 (ja) 2014-01-29 2014-01-29 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2015141590A JP2015141590A (ja) 2015-08-03
JP6260303B2 true JP6260303B2 (ja) 2018-01-17

Family

ID=52396525

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014014390A Active JP6260303B2 (ja) 2014-01-29 2014-01-29 演算処理装置及び演算処理装置の制御方法

Country Status (3)

Country Link
US (1) US9910779B2 (ja)
EP (1) EP2905707B1 (ja)
JP (1) JP6260303B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10042580B2 (en) 2015-11-05 2018-08-07 International Business Machines Corporation Speculatively performing memory move requests with respect to a barrier
US10126952B2 (en) 2015-11-05 2018-11-13 International Business Machines Corporation Memory move instruction sequence targeting a memory-mapped device
US10152322B2 (en) 2015-11-05 2018-12-11 International Business Machines Corporation Memory move instruction sequence including a stream of copy-type and paste-type instructions
US10067713B2 (en) 2015-11-05 2018-09-04 International Business Machines Corporation Efficient enforcement of barriers with respect to memory move sequences
US10140052B2 (en) 2015-11-05 2018-11-27 International Business Machines Corporation Memory access in a data processing system utilizing copy and paste instructions
US9996298B2 (en) * 2015-11-05 2018-06-12 International Business Machines Corporation Memory move instruction sequence enabling software control
US10241945B2 (en) 2015-11-05 2019-03-26 International Business Machines Corporation Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions
US10346164B2 (en) 2015-11-05 2019-07-09 International Business Machines Corporation Memory move instruction sequence targeting an accelerator switchboard
JP2017122997A (ja) * 2016-01-06 2017-07-13 富士通株式会社 情報処理装置、演算処理装置の制御方法および演算処理装置の制御プログラム
CN108021437A (zh) * 2016-10-31 2018-05-11 深圳市中兴微电子技术有限公司 一种资源分配方法和高速缓冲存储器Cache

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3174211B2 (ja) * 1994-01-25 2001-06-11 富士通株式会社 バッファストレイジのムーブイン制御方法
US6192449B1 (en) * 1996-04-12 2001-02-20 Motorola, Inc. Apparatus and method for optimizing performance of a cache memory in a data processing system
JP3516326B2 (ja) 1997-03-13 2004-04-05 株式会社日立製作所 共有キャッシュメモリを有するメモリコントローラ及びこれを備えたコンピュータシステム
US6463509B1 (en) * 1999-01-26 2002-10-08 Motive Power, Inc. Preloading data in a cache memory according to user-specified preload criteria
US6442631B1 (en) * 1999-05-07 2002-08-27 Compaq Information Technologies Group, L.P. Allocating system resources based upon priority
US20080108899A1 (en) 2006-11-06 2008-05-08 Nahi Halmann Hand-held ultrasound system with single integrated circuit back-end
WO2008117411A1 (ja) 2007-03-27 2008-10-02 Fujitsu Limited グリッド処理制御装置
JP2009015509A (ja) 2007-07-03 2009-01-22 Renesas Technology Corp キャッシュメモリ装置
US20090138683A1 (en) * 2007-11-28 2009-05-28 Capps Jr Louis B Dynamic instruction execution using distributed transaction priority registers
FR2927438B1 (fr) 2008-02-08 2010-03-05 Commissariat Energie Atomique Methode de prechargement dans une hierarchie de memoires des configurations d'un systeme heterogene reconfigurable de traitement de l'information
JP4843717B2 (ja) * 2008-02-18 2011-12-21 富士通株式会社 演算処理装置および演算処理装置の制御方法
JP4691153B2 (ja) 2008-12-10 2011-06-01 富士通株式会社 マルチコアプロセッサ,制御方法および情報処理装置
US8635705B2 (en) 2009-09-25 2014-01-21 Intel Corporation Computer system and method with anti-malware
EP2551776B1 (en) * 2010-03-25 2017-11-22 Fujitsu Limited Multi-core processor system, control program, and control method
JP5485055B2 (ja) 2010-07-16 2014-05-07 パナソニック株式会社 共有メモリシステム及びその制御方法
US9268611B2 (en) 2010-09-25 2016-02-23 Intel Corporation Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores
WO2012127628A1 (ja) 2011-03-22 2012-09-27 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
KR20130076973A (ko) * 2011-12-29 2013-07-09 삼성전자주식회사 응용 프로세서 및 이를 포함하는 시스템

Also Published As

Publication number Publication date
EP2905707A1 (en) 2015-08-12
US9910779B2 (en) 2018-03-06
JP2015141590A (ja) 2015-08-03
US20150212939A1 (en) 2015-07-30
EP2905707B1 (en) 2018-12-19

Similar Documents

Publication Publication Date Title
JP6260303B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20200363967A1 (en) On-chip Atomic Transaction Engine
JP5583180B2 (ja) 仮想gpu
US10445271B2 (en) Multi-core communication acceleration using hardware queue device
EP0747816B1 (en) Method and system for high performance multithread operation in a data processing system
US8963933B2 (en) Method for urgency-based preemption of a process
US9710306B2 (en) Methods and apparatus for auto-throttling encapsulated compute tasks
US20170371654A1 (en) System and method for using virtual vector register files
US9069609B2 (en) Scheduling and execution of compute tasks
US20230251986A1 (en) Highly scalable accelerator
JP7246308B2 (ja) デュアルモードローカルデータストア
US9442759B2 (en) Concurrent execution of independent streams in multi-channel time slice groups
JP7225745B2 (ja) 演算処理装置および演算処理装置の制御方法
US20220058025A1 (en) Throttling while managing upstream resources
US11886910B2 (en) Dynamic prioritization of system-on-chip interconnect traffic using information from an operating system and hardware
US9483502B2 (en) Computational processing device including request holding units each provided for each type of commands, information processing device including request holding units each provided for each type of commands, and method of controlling information processing device
JP4631442B2 (ja) プロセッサ
US20230077933A1 (en) Supporting processing-in-memory execution in a multiprocessing environment
Rogers Understanding Simultaneous Multithreading on z Systems
JP2018205918A (ja) 演算処理装置及び演算処理装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161004

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170627

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170824

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171127

R150 Certificate of patent or registration of utility model

Ref document number: 6260303

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150