(57)【要約】      （修正有）【課題】OS用CPUコアからのメモリアクセス要求と汎用CPUコアからのメモリアクセス要求との頻度の比率を柔軟に変更できるようにする。【解決手段】演算処理装置１は，オペレーティングシステムに含まれる命令を実行するOS用演算処理部と，複数の汎用演算処理部と，共有キャッシュメモリ２４と，キャッシュ制御部１２０と，要求選択回路１００と，メモリアクセス要求に対応するデータを一時的に記憶するデータバッファ２８とを有する共有キャッシュ部２０と，メモリアクセス制御部２７とを有する。共有キャッシュ部は，要求選択回路によるOS用演算処理部からのメモリアクセス要求の投入基準を有する第１の設定値と，データバッファ内のOS用演算処理部からのメモリアクセス要求に対するデータを記憶する領域の容量を設定する第２の設定値のいずれか一方または両方が設定されるメモリアクセス帯域制御レジスタ１１０を有する。【選択図】図１
2015141590.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムに含まれる命令を実行するOS用演算処理部と，
前記オペレーティングシステム以外のプログラムに含まれる命令をそれぞれ実行する複数の汎用演算処理部と，
前記複数の汎用演算処理部と前記OS用演算処理部とで共有される共有キャッシュメモリと，キャッシュ制御部と，前記複数の汎用演算処理部と前記OS用演算処理部からのメモリアクセス要求を選択して前記キャッシュ制御部に投入する要求選択回路と，前記メモリアクセス要求に対応するデータを一時的に記憶するデータバッファとを有する共有キャッシュ部と，
メインメモリへのメモリアクセスを制御するメモリアクセス制御部とを有し，
前記共有キャッシュ部は，前記要求選択回路による前記OS用演算処理部からのメモリアクセス要求の投入基準を有する第１の設定値と，前記データバッファ内の前記OS用演算処理部からのメモリアクセス要求に対するデータを記憶する領域の容量を設定する第２の設定値のいずれか一方または両方が設定されるメモリアクセス帯域制御レジスタを有する演算処理装置。
【請求項２】
請求項１において，
前記第１の設定値は，前記OS用演算処理部からのメモリアクセス要求を前記キャッシュ制御部に投入する頻度と，前記OS用演算処理部からのメモリアクセス要求の前記汎用演算処理部からのメモリアクセス要求に対する優先度の，いずれか一方または両方を有し，
前記要求選択回路は，前記第１の設定値に基づいて，前記OS用演算処理部からのメモリアクセス要求を選択して前記キャッシュ制御部に投入する演算処理装置。
【請求項３】
請求項１において，
前記第２の設定値は，前記データバッファ内の前記OS用演算処理部からのメモリアクセス要求に対するデータを記憶する領域の上限容量を有し，
前記キャッシュ制御部は，前記上限容量に達するまで，前記OS用演算処理部からのメモリアクセス要求に対応するデータを記憶する領域を割り当てる演算処理装置。
【請求項４】
請求項２において，
前記メモリアクセス要求は，前記共有キャッシュメモリまたは前記メインメモリ内のデータを読み出すムーブイン要求と，前記演算処理部内のキャッシュメモリ内のデータを前記共有キャッシュメモリに書き出すムーブアウト要求とを有し，
前記第１の設定値は，前記ムーブイン要求についての投入頻度と，優先度のいずれか一方または両方を有する演算処理装置。
【請求項５】
請求項３において，
前記メモリアクセス要求は，前記共有キャッシュメモリまたは前記メインメモリ内のデータを読み出すムーブイン要求と，前記演算処理部内のキャッシュメモリ内のデータを前記共有キャッシュメモリに書き出すムーブアウト要求とを有し，
前記第２の設定値は，前記ムーブイン要求に対するデータを記憶する領域の上限容量を有する演算処理装置。
【請求項６】
オペレーティングシステムに含まれる命令を実行するOS用演算処理部と，
前記オペレーティングシステム以外のプログラムに含まれる命令をそれぞれ実行する複数の汎用演算処理部と，
前記複数の汎用演算処理部と前記OS用演算処理部とで共有される共有キャッシュメモリと，キャッシュ制御部と，前記複数の汎用演算処理部と前記OS用演算処理部からのメモリアクセス要求を選択して前記キャッシュ制御部に投入する要求選択回路と，前記メモリアクセス要求に対応するデータを一時的に記憶するデータバッファとを有する共有キャッシュ部と，
メインメモリへのメモリアクセスを制御するメモリアクセス制御部とを有する演算処理装置の制御方法であって，
前記要求選択回路による前記OS用演算処理部からのメモリアクセス要求の投入基準を有する第１の設定値と，前記データバッファ内の前記OS用演算処理部からのメモリアクセス要求に対するデータを記憶する領域の上限容量を有する第２の設定値のいずれか一方または両方をメモリアクセス帯域制御レジスタに設定する工程と，
前記要求選択回路が，前記第１の設定値に基づいて，前記OS用演算処理部からのメモリアクセス要求を選択して前記キャッシュ制御部に投入する工程と，
前記キャッシュ制御部が，前記上限容量に達するまで，前記OS用演算処理部からのメモリアクセス要求に対応するデータを記憶する領域を割り当てる工程とを有する演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
近年のCPU（Central Processing Unit）チップ（演算処理装置）は，複数のCPUコア（演算処理部）を有し，複数のCPUコアがユーザプログラムの命令を並列に実行して演算速度を高めている。そして，ユーザプログラムの命令を実行する複数の汎用CPUコアと，基本ソフトウエアであるOS（Operating System）の命令を実行するOS専用CPUコアとを混在したヘテロジニアス構成のCPUチップが提案されている。かかるCPUチップでは，複数の汎用CPUコアがユーザプログラムの複雑な計算命令を並列に処理することで，計算処理効率を高めるとともに，OSによる割り込み処理やデータコピーに対応するメモリアクセスをOS専用CPUコアが実行することで，汎用CPUコアによる並列計算処理に無用な処理の遅延や乱れが発生することを防止する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１５５０９号公報
【特許文献２】特開平１０−２５４７７５号公報
【特許文献３】特開２００８−１１４０６５号公報
【特許文献４】特開２０１０−１４０１４６号公報
【特許文献５】特開２０１１−０７０６５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このようなヘテロジニアス構成のマルチコア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コアのメモリアクセス帯域を最適化することができる演算処理装置及び演算処理装置の制御方法を提供することにある。
【課題を解決するための手段】
【０００７】
実施の形態の第１の側面は，オペレーティングシステムに含まれる命令を実行するOS用演算処理部と，
前記オペレーティングシステム以外のプログラムに含まれる命令をそれぞれ実行する複数の汎用演算処理部と，
前記複数の汎用演算処理部と前記OS用演算処理部とで共有される共有キャッシュメモリと，キャッシュ制御部と，前記複数の汎用演算処理部と前記OS用演算処理部からのメモリアクセス要求を選択して前記キャッシュ制御部に投入する要求選択回路と，前記メモリアクセス要求に対応するデータを一時的に記憶するデータバッファとを有する共有キャッシュ部と，
メインメモリへのメモリアクセスを制御するメモリアクセス制御部とを有し，
前記共有キャッシュ部は，前記要求選択回路による前記OS用演算処理部からのメモリアクセス要求の投入基準を有する第１の設定値と，前記データバッファ内の前記OS用演算処理部からのメモリアクセス要求に対するデータを記憶する領域の容量を設定する第２の設定値のいずれか一方または両方が設定されるメモリアクセス帯域制御レジスタを有する演算処理装置である。
【発明の効果】
【０００８】
第１の側面によれば，OS用CPUコアからのメモリアクセス要求と汎用CPUコアからのメモリアクセス要求との比率を，より柔軟にかつ動的に設定することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施の形態におけるCPUチップ（演算処理装置）の構成を示す図である。
【図２】本実施の形態におけるCPUチップ内のCPUコアとL2キャッシュ部の詳細構成を示す図である。
【図３】メモリアクセス帯域制御レジスタの構成例を示す図である。
【図４】OS専用CPUコアからのメモリアクセス要求，特にムーブイン要求に対するL2キャッシュ部１２０内での処理を示すフローチャート図である。
【発明を実施するための形態】
【００１０】
図１は，本実施の形態におけるCPUチップ（演算処理装置）の構成を示す図である。CPUチップ１は，複数のCPUコア１０を有するCPUコア群と，複数のCPUコアで共用されるレベル２（L2）のキャッシュ部２０とを有し，更に，外部のメインメモリ２にアクセス可能に構成される。複数のCPUコア１０は，OSに含まれる命令を専用に実行する１つのOS専用CPUコア10_OSと，OS以外のプログラムに含まれる命令をそれぞれ実行する複数の汎用CPUコア10_GEとを有する。図１の例では，１６個の汎用CPUコアを有する。
【００１１】
複数のCPUコア１０はそれぞれ，後述するとおり，レベル１（L1）のキャッシュ部と，ALU（演算論理ユニット）と，演算実行パイプライン，メモリアクセス要求バッファなどを有する。
【００１２】
一方，L2キャッシュ部２０は，複数のCPUコア１０により共有され，各CPUコア１０からのメモリアクセス要求を選択する要求選択回路１００と，L2キャッシュ制御部１２０と，L2キャッシュメモリ２４と，メモリコントローラ２７とを有する。L2キャッシュメモリ２４は，複数のCPUコア１０により共有されるキャッシュメモリである。L2キャッシュ制御部１２０は，CPUコア１０からのメモリアクセス要求に対する制御を実行するL2キャッシュ制御パイプライン（以下L2パイプライン）３０と，ムーブインバッファ２８と，メモリアクセス帯域制御レジスタ１１０とを有する。メモリアクセス帯域制御レジスタ１１０には，ユーザプログラムにより，OS専用CPUコア10_OSからのメモリアクセス要求の頻度を制御する各種設定値が設定される。
【００１３】
要求選択回路１００は，メモリアクセス帯域制御レジスタ１１０内の設定値に基づいて，OS専用CPUコア10_OSからのメモリアクセス要求と，汎用CPUコア10_GEからのメモリアクセス要求とから１つのメモリアクセス要求を選択し，選択したメモリアクセス要求をL2パイプライン３０に投入する。つまり，要求選択回路１００は，メモリアクセス要求をL2パイプライン３０に投入する要求投入回路である。
【００１４】
L2パイプライン３０は，その投入されたメモリアクセス要求を処理する。例えば，投入されたメモリアクセス要求のアクセス先アドレスについて図示しないタグメモリをチェックし，アクセス先アドレスのキャッシュブロックがL2キャッシュメモリ２４に格納されている場合は，L2キャッシュメモリ２４にアクセスし，格納されていない場合はメモリコントローラ２７にメインメモリ２へのメモリアクセスを要求する。
【００１５】
例えば，メモリアクセス要求が読み出し要求または書き込み要求であるムーブイン要求の場合，L2パイプライン３０は，ムーブインバッファ２８に必要な領域を確保した後，タグメモリがヒットする場合は，L2キャッシュメモリ２４内の対応するキャッシュブロックのデータをムーブインバッファ２８に記憶し，ミスヒットの場合は，メモリコントローラ２７に読み出し要求を発行し，メインメモリ２から読み出されたデータをムーブインバッファ２８に記憶する。そして，L2パイプライン３０は，ムーブインバッファ２８に記憶されたデータを要求元のCPUコア１０に送信する。
【００１６】
また，メモリアクセス要求がCPUコア内のL1キャッシュメモリ内のデータの書き出し要求であるムーブアウト要求の場合，L2パイプライン３０は，図示しないムーブアウトバッファに必要な領域を確保した後，CPUコア１０からのムーブアウトデータをムーブアウトバッファに一時的に記憶し，そのデータをL2キャッシュメモリ２４に書き込み，タグメモリにタグ情報を登録する。メモリアクセス要求がL2キャッシュメモリ２４内のデータの書き出し要求であるムーブアウト要求の場合，L2パイプライン３０は，上記と同様にして，L2キャッシュメモリ２４内のデータをムーブアウトバッファに一時的に記憶し，メモリコントローラ２７経由でメインメモリ２に書き出す。
【００１７】
本実施の形態では，ユーザプログラムによりメモリアクセス帯域制御レジスタ１１０の設定値を設定することができる。そして，要求選択回路１００は，OS専用CPUコア10_OSからのメモリアクセス要求を，メモリアクセス帯域制御レジスタ１１０に設定されている第１の設定値に基づいて選択し，L2パイプライン３０に投入する。第１の設定値は，OS専用CPUコアからのメモリアクセス要求をL2パイプライン３０に投入する頻度を規定する設定値であり，例えば，メモリアクセス要求のうち，特にOS専用CPUコア10_OSからのムーブイン要求の投入頻度と，汎用CPUコア10_GEからのムーブイン要求に対する優先度（優先するか否か）とを有する。
【００１８】
さらに，L2パイプライン３０は，第２の設定値に基づいて， OS専用CPUコア10_OSからのムーブイン要求に対するデータをムーブインバッファ２８内に一時的に記憶する領域の上限と，汎用CPUコア10_GEからのムーブイン要求に対するデータをムーブインバッファ２８内の一時的に記憶する領域の上限とを制御して，各メモリアクセス要求に対するデータ記憶領域を第２の設定値の上限を超えない範囲で確保するよう制御する。
【００１９】
上記の要求選択回路１００を制御する第１の設定値と，ムーブインバッファ２８におけるOS専用CPUコアの領域と汎用CPUコアの一時的に記憶する領域の上限容量を制御する第２の設定値とは，いずれか一方を利用しても良いが，両方を利用することで，より高精度にOS専用CPUコア10_OSによるメモリアクセス要求の帯域を設定することができる。よって，ユーザは，ユーザプログラムの状況に応じて最適な帯域を，柔軟に且つ動的に制御することができる。
【００２０】
図２は，本実施の形態におけるCPUチップ内のCPUコアとL2キャッシュ部の詳細構成を示す図である。図２のCPUチップ１は，一例として，４つのCPUコア１０を有し，そのうち１つはOS専用CPUコアであり，残りの３つは汎用CPUコアである。４つのCPUコア１０の構成は同等である。
【００２１】
CPUコア１０は，レベル１（L1）の命令キャッシュメモリ１１と，命令キャッシュメモリから読み出された命令をデコードする命令デコーダ１２と， L1データキャッシュメモリ１３と，命令デコーダ１２が発行した命令に基づいて算術演算及び論理演算を行うALU(演算論理ユニット)１４と，メモリ管理ユニット（MMU: Memory Management Unit）１５とを有する。さらに，CPUコア１０は，L1ムーブインバッファ（L1-MBI）１６と，プリフェッチキュー（PFQ）１７と，ムーブアウトバッファ（MOB）１８と，命令フェッチパイプライン１９ａと，ロード／ストアパイプライン１９bと，実行パイプライン１９cとを有する。
【００２２】
メモリ管理ユニット１５は，仮想アドレスから物理アドレスへの変換を行う。L1ムーブインバッファ１６は，L2キャッシュ部２０へのムーブイン要求を一時的に記憶するバッファである。このムーブイン要求は，CPUコア１０内のL1キャッシュメモリ１１，１３でキャッシュミスが発生した場合に発生し，L2キャッシュメモリ２４やメインメモリ２への読み出し要求または書き込み要求である。
【００２３】
プリフェッチキュー１７は，L2キャッシュメモリ２４までのプリフェッチ要求を一時的に記憶するバッファである。また，ムーブアウトバッファ１８は，L1キャッシュメモリ１１，１３内の命令やデータをL2キャッシュメモリ２４に書き出す（ムーブアウト）要求を一時的に記憶するバッファである。
【００２４】
命令フェッチパイプライン１９ａは，L1命令キャッシュメモリ１１からの命令の読み出し処理を実行するパイプライン回路である。ロード／ストアパイプライン１９bは，データのロード処理及びストア処理を実行するパイプライン回路である。そして，実行パイプライン１９cは，命令の実行を行うパイプライン回路である。
【００２５】
L2キャッシュ部２０は，４つのCPUコア１０によって共用される２次キャッシュメモリユニットである。L2キャッシュ部２０は，４つのCPUコア１０にそれぞれ設けられた４つのムーブインバッファ（L1-MIB）１６に対応してそれぞれ設けられた４つのムーブインポート２２と，４つのプリフェッチキュー（PFQ）１７にそれぞれ設けられた４つのプリフェッチポート２３と，４つのムーブアウトバッファ(MOB)１８に対応してそれぞれ設けられた４つのムーブアウトポート２１とを有する。そして，要求選択回路１００は，各ポート２１，２２，２３内で順番待ちしているアクセス要求を所定の論理で選択し，L2パイプライン３０に投入する。
【００２６】
L2キャッシュ部２０は，L2キャッシュメモリ２４と，L2タグメモリ２５と，投入されるアクセス要求を実行するL2パイプライン３０とを有し，さらに，メインメモリ２へのムーブイン要求やプリフェッチ要求を一時的に記憶するL2ムーブインバッファ２６と，メモリアクセス制御部２７と，ムーブイン要求のデータを一時的に記憶するムーブインデータバッファ２８と，ムーブアウト要求のデータを一時的に記憶するムーブアウトデータバッファ２９とを有する。
【００２７】
L2キャッシュ部２０は，メモリアクセス帯域制御レジスタ１１０を有し，ユーザプログラムを実行することで，CPUコア１０から第１，第２の設定値がメモリアクセス帯域制御レジスタ１１０に設定される。
【００２８】
ムーブアウトポート２１は，それぞれ対応するムーブアウトバッファ１８からメモリアクセスの一種であるムーブアウト要求（データ書き出し要求）を受け付け，受け付けたムーブアウト要求を古い順に選択して要求選択回路１００内にエントリする。
【００２９】
ムーブインポート２２は，それぞれ対応するムーブインバッファ１６からメモリアクセスの一種であるムーブイン要求（データ読み出し要求または書き込み要求）を受け付け，受け付けたムーブイン要求を古い順に選択して要求選択回路１００内にエントリする。
【００３０】
また，プリフェッチポート２３は，それぞれ対応するプリフェッチキュー１７からメモリアクセスの一種であるプリフェッチ要求を受け付け，受け付けたプリフェッチ要求を古い順に選択して要求選択回路１００にエントリする。
【００３１】
要求選択回路１００は，各ポート２１，２２，２３とL2ムーブインバッファ２６からエントリされたアクセス要求を選択してL2パイプライン３０に投入する。そして，本実施の形態によれば，要求選択回路１００は，特に，４つのムーブインポート２２からエントリされるムーブイン要求のうちOS専用CPUコアからのムーブイン要求を，メモリアクセス帯域制御レジスタ１１０の第１の設定値に基づいて選択し，L2パイプライン３０に投入する。
【００３２】
第１の設定値は，OS専用CPUコアからのムーブイン要求をL2パイプライン３０に投入する間隔を設定する投入間隔設定値を有する。この投入間隔設定値は，例えば，１６クロックサイクルに１回の頻度でL2パイプライン３０に投入すべきことを示す設定値であり，その場合，要求選択回路１００は，汎用CPUコアからのムーブイン要求は，毎クロックサイクル，L2パイプライン３０に投入し，OS専用CPUコアからのムーブイン要求は，１６クロックサイクルに１回しかL2パイプライン３０に投入しない。したがって，汎用CPUコアからのムーブイン要求は，OS専用CPUコアからのムーブイン要求がエントリされる場合は，１６クロックサイクルに１５回はL2パイプライン３０に投入され，OS専用CPUコアからムーブイン要求がエントリされない場合は，毎クロックサイクルで投入される。つまり，OS専用CPUコアからのムーブイン要求については，ユーザが設定した頻度でL2パイプライン３０に投入するように設定することができる。
【００３３】
第１の設定値は，上記の投入間隔設定値に加えて，OS専用CPUコアからのムーブイン要求を汎用CPUコアからのムーブイン要求に優先して投入すべきか否かを設定する優先処理値を有する。この優先処理値がOS専用CPUコアからのムーブイン要求を汎用コアからのムーブイン要求に優先すべきとする値の場合は，要求選択回路１００は，両ムーブイン要求がエントリされると，OS専用CPUコアからのムーブイン要求を優先してL2パイプライン３０に投入する。優先処理値が優先すべきとしない値の場合は，例えば，最も早くエントリされた要求を優先して選択するか，４つのCPUコアからの要求を順番に選択する。
【００３４】
第１の設定値の投入間隔設定値と優先処理値とを利用することで，OS専用CPUコアからのムーブイン要求と，複数の汎用CPUコアからのムーブイン要求との間の投入頻度を適切に設定することができ，OS専用CPUコアと複数の汎用CPUコアのメモリアクセス帯域を所望の割合に設定することができる。
【００３５】
L2パイプライン３０は，例えば，投入されたムーブイン要求について，アクセス先アドレスについてL2タグメモリをチェックし，キャッシュヒットした場合は，ムーブインバッファ２８内に領域を確保してから，L2キャッシュメモリ２４内のデータを読み出し，確保したムーブインバッファ２８内の領域に一時的に記憶する。一方，キャッシュミスした場合は，ムーブインバッファ２８内に領域を確保してから，L2ムーブインバッファ２６にメインメモリ２へのムーブイン要求を一時的に格納する。これに応答して，メモリアクセスコントローラ２７は，メインメモリ２にアクセスして，データを読み出し，ムーブインバッファ２８内の確保した領域にデータを一時的に記憶する。ムーブインバッファ２８内に一時的に記憶されたデータは，要求元のCPUコアに送信される。
【００３６】
L2パイプライン３０は，ムーブインバッファ２８内のOS専用CPUコア10_OSからのムーブイン要求に対するデータを一時的に記憶する領域が，メモリアクセス帯域制御レジスタ１１０内の第２の設定値である上限値に達するまで，投入されたムーブイン要求に対し，ムーブインバッファ２８内の一時的に記憶する領域を割り当てる。L2パイプライン３０は，OS専用CPUコアからのムーブイン要求に対して上限値まで記憶領域を割当済みの場合は，新たなムーブイン要求に対してムーブインバッファ２８内の領域の割当は行わない。L2パイプライン３０は，ムーブインバッファ２８内の領域が割り当てられない場合は，L2キャッシュメモリ２４内のデータの読み出し，またはメインメモリ２のデータの読み出しは実行しない。したがって，ユーザは第２の設定値により，OS専用CPUコアからのムーブイン要求に対する帯域を制限することができる。したがって，第１の設定値と第２の設定値を組み合わせることで，ユーザは，OS専用CPUコアからのアクセス要求をより高精度に設定することができる。
【００３７】
L2パイプライン３０は，投入されるムーブアウト要求に対しても，L2タグメモリをチェックし，キャッシュヒットした場合は，ムーブアウトバッファ２９内に領域を確保して，ムーブアウトデータを確保した領域に記憶し，L2キャッシュメモリ２４にムーブアウトデータを書込む。L2パイプライン３０は，ムーブアウト要求に対して，キャッシュミスヒットした場合は，ムーブアウトバッファ２９内に領域を確保して，ムーブアウトデータを確保した領域に記憶し，L2キャッシュメモリとメインメモリ２にそのムーブアウトデータを書込む。
【００３８】
L2パイプライン３０は，アクセス要求に対する処理が正常に終了した場合は，完了通知をムーブインポート２２とプリフェッチポート２３に送信し，アクセス要求に対する処理をアボートした場合は，アボート通知を送信する。
【００３９】
図３は，メモリアクセス帯域制御レジスタの構成例を示す図である。このメモリアクセス帯域制御レジスタ１１０は，例えば，１６ビットで構成される。メモリアクセス帯域制御レジスタ１１０は，ビット10-15に投入間隔設定領域110_Aを，ビット8-9に優先処理設定領域110_Bを，ビット4-7にOSコアバッファ設定領域110_Cを，ビット0-3に汎用コアバッファ設定領域110_Dをそれぞれ有する。
【００４０】
投入間隔設定領域110_Aには，６ビットのメモリアクセス要求をL2パイプライン３０に投入する間隔が設定可能であり，例えば，図示されるように，最大頻度として毎クロックサイクル投入，次に大きな頻度として１６クロックサイクルに１回投入，３２クロックサイクルに１回投入，そして，最小頻度として１００８クロックサイクルに１回投入などの設定が可能である。頻度の刻み幅は，適宜選択可能である。
【００４１】
優先処理設定領域110_Bには，2ビットの設定値が設定可能であり，ビット８を「１」に設定した場合は，要求選択回路１００が，OS専用CPUコアからのムーブイン要求を，汎用CPUコアからのムーブイン要求より優先しL2パイプライン３０に投入する。ビット９に「１」を設定した場合に，例えば，要求選択回路がOS専用コアからのプリフェッチ要求を，汎用CPUコアからのプリフェッチ要求より優先してL2パイプライン３０に投入するようにしてもよい。
【００４２】
OSコアバッファ設定領域110_Cには，４ビットの設定値が設定可能であり，OS専用CPUコアからのムーブイン要求に対してムーブインバッファ２８に確保する一時的な記憶領域の上限容量を設定できる。つまり，OS専用CPUコアからのムーブイン要求に専用に割り当てられるムーブインバッファ２８内の記憶領域の上限要領の設定値である。この上限容量を大きくすれば，OS専用CPUコアからのムーブイン要求についてのアクセス帯域が大きくなる。
【００４３】
汎用コアバッファ設定領域110_Dには，４ビットの設定値が設定可能であり，汎用CPUコアからのムーブイン要求に対してムーブインバッファ２８に確保する一時的な記憶領域の上限容量を設定できる。こちらは，汎用CPUコアからのムーブイン要求に専用に割り当てられるムーブインバッファ２８内の記憶領域の上限要領の設定値である。
【００４４】
図３のメモリアクセス帯域制御レジスタ１１０のフォーマットは，一例であり，他のフォーマットであってもよい。
【００４５】
図４は，OS専用CPUコアからのメモリアクセス要求，特にムーブイン要求に対するL2キャッシュ部１２０内での処理を示すフローチャート図である。以下の例では，OS専用CPUコアからのアクセス要求のL2パイプライン３０への投入間隔が所望の間隔に設定され，OS専用CPUコアからのアクセス要求を汎用CPUコアからのアクセス要求に優先するよう設定され，専用CPUコアからのアクセス要求に対するムーブインバッファ２８内の一時的な記憶領域の上限値が所望の値に設定されているものとする。
【００４６】
まず，OS専用CPUコアがメモリアクセス要求を発行し，L1ムーブインバッファ１６に格納する（S10）。メモリアクセス要求は，例えばムーブイン要求である。そして，L1ムーブインバッファ１６内に格納されたムーブイン要求は，L2キャッシュ部内のムーブインポート２２に送信される。
【００４７】
ムーブインポート２２は受信したムーブイン要求を，受信順に要求選択回路１００にエントリする（S11）。そこで，要求選択回路１００は，設定した投入間隔のクロックサイクル経過済みの場合に（S12のYES）,そして，OS専用CPUコアのムーブイン要求を優先処理するように設定されている場合に（S14のYES）,そのムーブイン要求を最優先でL2パイプライン３０に投入する（S17）。つまり，要求選択回路１００は，OS専用CPUコアからのムーブイン要求と汎用CPUコアからのムーブイン要求とがエントリされた場合，アクセス帯域制御レジスタ１１０内の投入間隔設定値と優先処理設定値を参照して，設定した投入間隔のクロックサイクルが経過したクロックサイクルであり，且つOS専用CPUコアのムーブイン要求を優先処理するよう設定されていれば，汎用CPUコアからのムーブイン要求がエントリされていても，OS専用CPUコアからのムーブイン要求を優先してL2パイプライン３０に投入する。
【００４８】
L2パイプライン３０は，ムーブイン要求を処理し，ムーブインバッファ２８内のOS専用CPUコアのためのムーブインデータを一時的に記憶する領域が上限値に達していないか否か，つまり空き領域があるか否かチェックし（S18），空き領域があれば（S18のYES)，データを格納するバッファ領域をムーブインバッファ２８内に確保し，L2キャッシュメモリ２４またはメインメモリ２にアクセスする(S19)。つまり，L2パイプライン３０は，タグメモリ２５をチェックしキャッシュヒットすれば，L2キャッシュメモリ２４にアクセスし，キャッシュミスヒットすれば，メインメモリ２にメモリコントローラ２７を介してアクセスする。
【００４９】
そして，L2キャッシュメモリ２４またはメインメモリ２から読み出したデータを，ムーブインバッファ２８内の予め確保した領域に格納し，OS専用CPUコアにムーブインバッファ２８内に格納したデータを送信する（S20）。
【００５０】
工程S11でOS専用CPUコアからのムーブイン要求がエントリされたとき，設定した投入間隔のクロックサイクル経過していない場合は（S12のNO），そのムーブイン要求は１クロックサイクル待って（S13），再度エントリされる。さらに，工程S14でOS専用CPUコアからのムーブイン要求を優先処理しないに優先処理値が設定されている場合は（S14のNO）,要求選択回路１００は，OS専用CPUコアと汎用CPUコアからのムーブイン要求を順番に選択してL2パイプラインに投入する。したがって，要求選択回路１００がOS専用CPUコアのムーブイン要求を選択すれば（S15のYES），その要求をL2キャッシュラインに投入するが(S17)，選択しなければ（S15のNO）,１クロックサイクル待って（S16）,要求選択回路１００は再度工程S14の判定を実行する。
【００５１】
さらに，工程S18でOS専用CPUコアからのムーブイン要求に対するムーブインバッファ２８内の専用領域が上限容量に達していれば（S18のNO)，工程S19のメモリアクセスは実行されずに，１クロックサイクル待って（S13)，再度，要求選択回路１００が，そのムーブイン要求をL2パイプライン３０に投入すべきか否かの判定を行う。このように，ムーブインバッファ２８内の専用領域の上限容量を小さくすればアクセス帯域を狭くでき，大きくすればアクセス帯域を広くすることができる。
【００５２】
上記の実施の形態において，OS専用CPUコアは，OSの命令を実行する専用CPUコアであるが，OSの命令のごく一部を汎用CPUコアが実行してもよい。また，逆に，OS専用CPUコアがOS以外のソフトウエアの命令のごく一部を実行してもよい。OS専用CPUコアと汎用CPUコアは，基本的な構成は同等であるからである。
【００５３】
上記の実施の形態では，OS専用CPUコアからのムーブイン要求と汎用CPUコアからのムーブイン要求との間で，いずれかの要求をL2パイプライン３０に投入する制御を，アクセス帯域制御レジスタ１１０内の第１，第２の設定値に応じて行った。しかし，OS専用CPUコアからのプリフェッチ要求と汎用CPUコアからのプリフェッチ要求との間でも，上記と同様に，アクセス帯域制御レジスタ１１０の第１，第２の設定値に応じて，L2パイプライン３０に投入する制御を行っても良い。
【００５４】
本実施の形態によれば，アクセス帯域制御レジスタ１１０にユーザプログラムから，OS専用CPUコアからのメモリアクセスを共用L2キャッシュ制御パイプライン３０に投入する所望の頻度を設定することができるので，OS専用CPUコアからのメモリアクセス要求と汎用CPUコアからのメモリアクセス要求とを適切で所望の頻度に設定することができる。所望の頻度に設定するために，複数のCPUコア間で共用するL2キャッシュ部への投入間隔と，OS専用CPUコアからのアクセス要求の優先処理か否かと，ムーブインバッファ２８内の領域確保可能な上限値とをアクセス帯域制御レジスタにユーザプログラムによって設定する。
【符号の説明】
【００５５】
１０：CPUコア
10_OS：OS専用CPUコア
10_GE：汎用CPUコア
【図１】
2015141590.tif 000003
【図２】
2015141590.tif 000004
【図３】
2015141590.tif 000005
【図４】
2015141590.tif 000006