JP5591969B1 - マルチコアプロセッサおよび制御方法 - Google Patents

マルチコアプロセッサおよび制御方法 Download PDF

Info

Publication number
JP5591969B1
JP5591969B1 JP2013065378A JP2013065378A JP5591969B1 JP 5591969 B1 JP5591969 B1 JP 5591969B1 JP 2013065378 A JP2013065378 A JP 2013065378A JP 2013065378 A JP2013065378 A JP 2013065378A JP 5591969 B1 JP5591969 B1 JP 5591969B1
Authority
JP
Japan
Prior art keywords
core
memory
cache
mram
degree
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.)
Expired - Fee Related
Application number
JP2013065378A
Other languages
English (en)
Other versions
JP2014191521A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2013065378A priority Critical patent/JP5591969B1/ja
Priority to US14/196,438 priority patent/US20140297920A1/en
Application granted granted Critical
Publication of JP5591969B1 publication Critical patent/JP5591969B1/ja
Publication of JP2014191521A publication Critical patent/JP2014191521A/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract


【課題】従来の不揮発メモリは、そのリード速度あるいはライト速度が遅いために速度向上効果が低い、あるいはまたリード時あるいはライト時の消費電力が大きいために省電力効果が低い、等の問題があった。
【解決手段】実施形態によれば、同一のダイ内に第1のコアと第2のコアとを備えるマルチコアプロセッサが提供される。該マルチコアプロセッサは、前記第1のコアと第2のコアとが共有する共有メモリ領域と前記第1のコアとの間に設けられる少なくとも1つの第1のローカルメモリと、前記共有メモリ領域と前記第2のコアとの間に設けられ、前記第1のローカルメモリとは単位セル構成が異なる少なくとも1つの第2のローカルメモリと、実行効率に基づいて前記第1のコアおよび前記第2のコアのいずれかに処理を割り当てるスケジューラと、を具備する。
【選択図】図1

Description

本発明の実施形態は、マルチコアプロセッサおよび制御方法に関する。
近年、MRAM(Magnetic Random-Access Memory)のような不揮発メモリが注目されている。プロセッサのキャッシュメモリに一般的に用いられる揮発メモリ(例えばSRAM(Static RAM))を不揮発メモリに置き換えることで、リーク電力の低減と、プロセッサ非動作時の細度な電源遮断による消費電力の削減とを期待することができる。
X. Wu, J. Li, L. Zhang, E. Speight, R. Rajamony, and Y. Xie. Hybrid Cache Architecture with Disparate Memory Technologies. In Proceedings of the International Symposium on Computer Architecture, 2009 G. Sun, X. Dong, Y. Xie, J. Li, and Y. Chen. A novel architecture of the 3D stacked MRAM L2 cache for CMPs. In High Performance Computer Architecture, pages 239-249, Feb. 2009
一方、不揮発メモリは、揮発メモリと比較して一般的にレイテンシが大きくアクセス電力も大きい。このような性質から、揮発メモリを不揮発メモリに単に置き換えるだけでは、性能低下やアクセス電力増加といった問題が顕在化する。
実施形態によれば、同一のダイ内に第1のコアと第2のコアとを備えるマルチコアプロセッサが提供される。該マルチコアプロセッサは、前記第1のコアと第2のコアとが共有する共有メモリ領域と前記第1のコアとの間に設けられる少なくとも1つの第1のローカルメモリと、前記共有メモリ領域と前記第2のコアとの間に設けられ、前記第1のローカルメモリとは単位セル構成が異なる少なくとも1つの第2のローカルメモリと、実行効率に基づいて前記第1のコアおよび前記第2のコアのいずれかに処理を割り当てるスケジューラと、を具備する。
実施形態1に係るマルチコアプロセッサを示すブロック図。 実施形態1に係る第1のコアのL2キャッシュを示す図。 実施形態1に係る第2のコアのL2キャッシュを示す図。 実施形態1に係る処理管理部を示す図。 実施形態1に係るコア情報テーブルを示す図。 実施形態1に係る処理情報テーブルを示す図。 実施形態1に係る処理に対する静的な情報付与方法の例を示す図。 実施形態1に係る処理情報テーブルを示す図。 実施形態1に係る処理のコア割り当て方法を示す図。 実施形態1に係る処理情報テーブルを示す図。 実施形態1に係る処理情報テーブルを示す図。 実施形態1に係る処理情報テーブルを示す図。 実施形態1に係る処理情報テーブルを示す図。 実施形態1に係る処理情報テーブルを示す図。 実施形態1に係る処理情報テーブルを示す図。 実施形態1に係る処理情報テーブルを示す図。 実施形態2に係るマルチコアプロセッサを示すブロック図。 実施形態3に係るマルチコアプロセッサを示すブロック図。 実施形態4に係るマルチコアプロセッサを示すブロック図。 実施形態1に係る第1のコアのL2キャッシュの別の例を示す図。 実施形態1に係る第2のコアのL2キャッシュの別の例を示す図。
以下の実施形態では、マルチコアプロセッサの構成例について示す。実施形態に係るマルチコアプロセッサは、演算を実行するコアを1つのダイ内に複数備える。これらのコアは共有メモリ領域にアクセス可能であって、それぞれのコアは共有メモリ領域へのアクセス経路に、ローカルメモリを含む少なくとも1つのメモリ階層を有する。実施形態に係るマルチコアプロセッサでは、同一階層の少なくとも2つのローカルメモリが、単位セル構成が異なるメモリで構成される。
上記「コア」とは、命令単位で演算を実行する演算装置を指す。「命令」とは、コアが計算可能な種類の演算を定義した機能を指し、「命令セット」とは、コアが実行可能な命令群を指す。
上記「共有メモリ領域」とは、複数のコアが共有するメモリ領域であって、異なるコアから同一のデータにアクセス可能なメモリ領域を指す。例えば、主記憶装置は共有メモリ領域である。
上記「メモリ階層」とは、共有メモリ領域のデータを記憶可能であってコアからのアクセス速度が異なるメモリ群を指す。例えば、レジスタ、L1キャッシュ、L2キャッシュで構成されるメモリ群はメモリ階層である。
上記「同一階層のメモリ」とは、コアからの論理的な距離が等しいメモリを指す。例えば、第1のコアと第2のコアの2つのコアを備え、それら各々がL1キャッシュとL2キャッシュを備える構成において、第1のコアのL1キャッシュと第2のコアのL1キャッシュは同一階層のメモリであり、第1のコアのL2キャッシュと第2のコアのL2キャッシュもまた同一階層のメモリである。第1のコアのL1キャッシュと第2のコアのL2キャッシュは同一階層のメモリではない。これら、L1キャッシュ・L2キャッシュ・L3キャッシュは、それぞれ、物理的に異なるメモリであってもよいし、物理的なメモリを論理的に分割したメモリ領域であってもよい。
上記「ローカルメモリ」とは、あるコアが他のコアよりも高速にアクセス可能なメモリ領域を指す。
上記「単位セル構成が異なるメモリ」とは、一部もしくはすべてのメモリセルにおいて、情報を記憶する物理原理に相違点があるメモリ、もしくは、トランジスタレベルの回路に相違点があるメモリを指す。例えば、揮発メモリと不揮発メモリは単位セル構成が異なるメモリである。具体例としては、SRAMとMRAMは揮発メモリと不揮発メモリであり、単位セル構成が異なるメモリである。同じ不揮発メモリであっても、MRAMとReRAM(Resistance Random-Access Memory)や、MRAMとPRAM(Phase change RAM)は単位セル構成が異なるメモリである。また、SRAMであっても、6トランジスタSRAMと8トランジスタSRAMは単位セル構成が異なるメモリである。一方、情報を記憶する物理原理およびトランジスタレベルの回路は同じであり、かつ、容量やレイテンシ等が異なる2つのメモリは単位セル構成が異なるメモリではない。同様に、物理レベルでのみ相違点があるメモリは単位セル構成が異なるメモリではない。例えば、同じ6トランジスタSRAMであるが利用する製造プロセスのみが異なる2つのメモリはこれに該当する。
(実施形態1)
[メモリ構成]
図1に示すように、実施形態1に係るマルチコアプロセッサは、ダイ10内に第1のコア100および第2のコア200を備える。第1のコア100と第2のコア200が備える命令セットは、同一であってもよいし、異なっていてもよい。第1のコア100はローカルメモリとしてL1命令キャッシュ101と、L1データキャッシュ102と、L2キャッシュ103とを備える。第2のコア200はローカルメモリとしてL1命令キャッシュ201と、L1データキャッシュ202と、L2キャッシュ203とを備える。また、本実施形態に係るマルチコアプロセッサは、第1のコア100と第2のコア200で共有されるL3キャッシュ400を備える。第1のコア100のL2キャッシュ103がバス300を介してL3キャッシュ400に接続され、第2のコア200のL2キャッシュ203がバス300を介してL3キャッシュ400に接続される。本実施形態では、L1キャッシュが、命令を格納するL1命令キャッシュとデータを格納するL1キャッシュとに分割される例を示したが、1つのL1キャッシュが命令とデータの両方を格納してもよい。
第1のコア100および第2のコア200は、いずれもL1命令キャッシュ(101,201)とL1データキャッシュ(201,202)に揮発メモリであるSRAMを利用し、共有するL3キャッシュ400に不揮発メモリであるMRAMを利用する。
また、第1のコア100はL2キャッシュ103にMRAMを利用し、第2のコア200はL2キャッシュ203にSRAMを利用する。第1のコア100は、同コアからL3キャッシュ400までの経路がSRAM(L1キャッシュ101,102)→MRAM(L2キャッシュ103)→MRAM(L3キャッシュ400)であるのに対して、第2のコア200はSRAM(L1キャッシュ201,202)→SRAM(L2キャッシュ203)→MRAM(L3キャッシュ400)である。このように、第1のコア100と第2のコア200は単位セル構成が異なるメモリ構成である。
なお、本実施形態では、単位セル構成が異なるメモリとしてMRAMとSRAMを想定したが、このような異なるメモリはMRAMとSRAMの組み合わせに限定されない。単位セル構成が異なるメモリであれば、任意のメモリの組み合わせとしてもよい。また、L2キャッシュ以外の階層のメモリや構成は本実施形態に限定されるものではない。例えば、L1キャッシュがSRAMではなくMRAMであってもよいし、L3キャッシュがMRAMではなくSRAMであってもよい。また、バスを利用する位置も図1に限定されるわけではない。例えば、L3キャッシュを保持せず、バスが直接主記憶と接続されている構成でも良い。バスがL1キャッシュとL2キャッシュの間にあってもよいし、図1のバス300が無い構成でも良い。
なお、説明の簡単化のため、図1では第1のコア100のL2キャッシュ103の全体がMRAMで構成されており、第2のコア200のL2キャッシュ203の全体がSRAMで構成されているように図示されているが、必ずしもそのような構成でなくてもよい。つまり、第1のコア100と第2のコア200のL2キャッシュを構成するメモリの一部において、「単位セル構成が異なるメモリ」が用いられていればよい。一例として、図2および図3に、第1のコア100および第2のコア200のそれぞれのL2キャッシュの詳細な構成を示す。一般的に、キャッシュメモリはタグメモリアレイとラインメモリアレイという2つのメモリアレイで構成される。タグメモリアレイはキャッシュメモリに保持しているデータのアドレス情報を格納するメモリである。ラインメモリアレイはキャッシュメモリに保持しているデータを格納するメモリである。コントローラは、これら2つのメモリアレイへのデータの格納、参照、消去等を管理する情報処理装置である。
図2に示すように、第1のコア100のL2キャッシュ103において、タグメモリアレイ105にSRAMを利用し、ラインメモリアレイ106にMRAMを利用する。また図3に示すように、第2のコア200のL2キャッシュ203において、タグメモリアレイ205にSRAMを利用し、ラインメモリアレイ206にもSRAMを利用する。このような第1のコア100および第2のコア200のL2キャッシュ103および203は、「単位セル構成が異なるメモリ」が用いられた構成に該当する。
図20に示すように、第1のコア100のL2キャッシュ103において、タグメモリアレイ105にSRAMを利用し、一部のラインメモリアレイ106にMRAMを利用し、残りのラインメモリアレイ106にSRAMを利用する。また図21に示すように、第2のコア200のL2キャッシュ203において、タグメモリアレイ205にSRAMを利用し、ラインメモリアレイ206にもSRAMを利用する。このような第1のコア100および第2のコア200のL2キャッシュ103および203は、「単位セル構成が異なるメモリ」が用いられた構成に該当する。
もちろん、第1のコア100のL2キャッシュ103のタグメモリアレイ105およびラインメモリアレイ106にMRAMを利用し、第2のコア200のL2キャッシュ203のタグメモリアレイ205およびラインメモリアレイ206にSRAMを利用してもよい。
[ハードウェア制御方式]
図1に示すマルチコアプロセッサのハードウェア制御方式は、コヒーレンシに関して特定の制御方式に限定されない。例えば、第1のコア100と第2のコア200のローカルメモリについて、ハードウェアでコヒーレンシを維持してもよいし、ソフトウェアでコヒーレンシを維持してもよいし、コヒーレンシを維持する場合は、例えば、MESI(Modified Exclusive Shared Invalid)プロトコルを利用してもよいし、MOESI(Modified Owner Exclusive Shared Invalid)プロトコルを利用してもよい。例えば、上位キャッシュと下位キャッシュ間のデータ保持方式は、ライトスルーであってもよいし、ライトバックであってもよい。例えば、データをフィルする際の方式はライトアロケートであってもよいし、ノンライトアロケートであってもよい。また、第1のコア100と第2のコア200のローカルメモリについて、コヒーレンシを維持しなくてもよい。
図1に示すマルチコアプロセッサを構成するモジュールそれぞれにおいて、データを参照する際の制御方式は、特定の制御方式に限定されない。一例として、図2に示す第1のコア100のL2キャッシュ103を用いて説明する。データを参照する際の制御方式の選択肢として、例えば逐次方式と並行方式とがある。逐次方式は、タグメモリアレイ105にアクセスして所望のデータが格納されているかチェックしたうえでラインメモリアレイ106にアクセスする方式である。並行方式は、タグメモリアレイ105とラインメモリアレイ106に同時にアクセスし、タグメモリアレイ105へのアクセス結果から、所望のデータが格納されていることが判明した場合にのみラインメモリアレイ106のアクセス結果を利用する方式である。このような方式はどのようなものが利用されてもよい。前述の例のような第1のコア100および第2のコア200の制御方式や、L1命令キャッシュ、L1データキャッシュ、L2キャッシュ、L3キャッシュの制御方式、ならびにバスの制御方式は任意である。
[ソフトウェア制御方式]
図4に示される処理管理部20は、処理に関する情報の管理や、図1に示される第1のコア100および第2のコア200に対する処理の割り当てを行う。「処理」とは、2つ以上の命令からなる命令列を指し、例えば、プロセスやスレッドや基本ブロックなどである。処理管理部20は、スケジューラ23、処理情報テーブル21、コア情報テーブル22、インタフェース部24を持つ。処理管理部20は主にソフトウェアで実装されるが、一部もしくはすべてがハードウェアで実装されてもよい。
処理情報テーブル21は処理毎の情報を記録するテーブルであり、コア情報テーブル22はコア毎の情報を記録するテーブルである。インタフェース部24はハードウェア(マルチコアプロセッサ10)との情報交換を行う入出力機能を担う。スケジューラ23は処理情報テーブル21とコア情報テーブル22の情報をもとに、インタフェース部24を介して処理をハードウェア(マルチコアプロセッサ10のいずれかのコア)に割り当てる。また、スケジューラ23はインタフェース部24を介しハードウェアからの情報を受け取り、処理情報テーブル21およびコア情報テーブル22の内容を更新する。
処理管理部20がソフトウェアで実装されてもよく、そのプログラムが図1の第1のコア100もしくは第2のコア200で実行されてもよいし、第1のコア100と第2のコア200以外の演算装置で実行されてもよい。また、処理管理部20がハードウェアで実装されてもよい。
図1の構成に適用されるコア情報テーブル22の例を図5に示す。コアIDの項目にコアを識別する情報が記録される。本実施形態では、第1のコア100がID1であり、第2のコア200がID2であるものとする。また、ローカルメモリ記録方式にコアローカルなメモリの種類が記録される。第1のコア100にはローカルメモリにMRAMが用いられているため、MRAMであることを識別可能な情報(本例では文字列「MRAM」)が記録される。第2のコア200にはローカルメモリにSRAMが用いられているため、SRAMであることを識別可能な情報(本例では文字列「SRAM」)が記録される。
本実施形態では、コアローカルなメモリの種類を文字列で表現してこれを記録することとしたが、スケジューラ23がコアの特徴を識別可能な情報であれば、文字列に限らない。例えば、MRAMが値「1」に対応し、SRAMに値「2」が対応することを仕様としてあらかじめ決めておく。コア情報テーブル22において、コアID1のローカルメモリ記録方式として「1」を、コアID2のローカルメモリ記録方式として「2」を記録してもよい。図5の例では、コア情報テーブル22にローカルメモリ記録方式のみを情報として記録することを想定したが、それ以外の情報が記録されてもよい。例えば、動作周波数などのコアの演算能力が記録されてもよい。
コアに処理を割り当てる(スケジューリングする)には、幾つかの方法が考えられる。本実施形態では、実行前付与情報に基づいて静的にスケジューリングを行う方法(1)と、実行効率の観点から動的にスケジューリングを行う2つの方法((2)および(3))と、これら3つの方法を組み合わせた方法(4)の例について説明する。
なお、スケジューリング方法はこれらに限定されない。例えば、消費電力の観点からスケジューリングを行ってもよいし、プロセッサの温度の観点からスケジューリングを行なってもよいし、性能、消費電力、温度等の様々な観点を組み合わせてスケジューリングを行ってもよい。
図1のマルチコアプロセッサにおいて、性能の観点から処理の効率的な割り当てを行う際には以下のような難しさがある。
一般的に、MRAMはSRAMと比較してレイテンシは大きい(低速である)が、単位面積あたりの記憶容量(以下、単に「容量」という)は大きい。一方、SRAMはMRAMと比較してレイテンシは小さい(高速である)が、単位面積あたりの容量は小さい。つまり、第1のコア100のL2キャッシュ130と第2のコア200のL2キャッシュ203とをダイ10上に同一面積で配置した場合、これら2種類のメモリはレイテンシと容量がトレードオフ関係にある。したがって、ある処理を実行する場合、どちらのメモリをもつコア(第1のコア100と第2のコア200のいずれか)で実行効率が高くなるかは実行する処理の特徴によって異なる。理想的には、レイテンシよりも容量(キャッシュミス)が実行効率に大きな影響を与える処理が第1のコア100に割り当てられ、容量よりもレイテンシが実行効率に大きな影響を与える処理が第2のコア200に割り当てられることが望ましい。
(1)実行前付与情報に基づく割り当て
プログラムの実行開始前に処理のコア割り当て情報が指定され、これに基づく処理属性に応じてスケジューラ23がコアに対する処理の割り当てを行う方法について述べる。図6は、処理に対する実行前付与情報をもとに処理管理部20が生成する処理情報テーブル21の例を示したものである。処理IDは処理を識別する一意な識別子であり、処理属性が処理を割り当てるべきコアの情報である。処理管理部20は、処理に対応付けられた実行前付与情報を読み込み、処理ID 0x1の処理の処理属性には文字列MRAMを記録し、処理ID 0x12の処理の処理属性には文字列SRAMを記録する。なお、処理属性「MRAM」は、対象の処理をMRAMのローカルメモリを備えたコアに割り当てるべきであることを表し、処理属性「SRAM」は、対象の処理をローカルメモリにSRAMを備えたコアに割り当てるべきであることを示す情報であるものとする。
本実施形態では、割り当てるべきコアの情報を文字列で表現したが、スケジューラ23が割り当てるべきコアを判別可能な情報であればどのような形式であってもよい。例えば、MRAMをローカルメモリ持つコアに割り当てるべき処理属性が値「1」に対応し、SRAMをローカルメモリに持つコアに割り当てるべき処理属性に値「2」に対応することを仕様としてあらかじめ決めておく。処理IDx1の処理属性として値「1」を、処理IDx12の処理属性として値「2」を記録してもよい。あるいは、これらの値の代わりにコアIDを記録してもよい。
処理への実行前付与情報の指定方法としては、どのコアに割り当てるべき処理であるかという情報を処理管理部20が識別可能である限り、任意である。例えば、プログラマがプログラム記述時に情報を付与し、そのプログラムをコンパイルすることで実行前付与情報をバイナリに埋め込む方法が考えられる。また、前回の実行時に割り当てるべきコアの情報を処理情報テーブル21に記録しておいてもよい。プログラム記述時の情報の付与方法としては、例えば図7のように、新しいプロセスを生成する際に、MRAMのローカルメモリを持つコアに割り当てるべき処理であることを示す処理属性「MRAM」を引数として指定する方法が考えられる。この場合、処理管理部20は、該プログラムをコンパイルしたバイナリをロードし、fork()関数の引数を読み取り、処理情報テーブル21にfork()で生成される処理(プロセス)の処理IDと処理属性である「MRAM」を登録すればよい。このような処理属性の指定方法および指定を行う主体には他にも様々なバリエーションが考えられる。指定方法については、例えば、プログラム起動時にOSのコンソール等から情報を付与することが考えられる。また、指定を行う主体については、例えば、コンパイラ等のプログラム静的解析機能をもつツールが自動で処理属性を指定してもよい。
スケジューラ23はまず処理情報テーブル21を参照して、対象処理はどのようなメモリ(処理属性)を持つコアに割り当てるべきであるかの情報を得る。例えば、処理ID0x1を割り当てる際に、スケジューラ23は図6の処理情報テーブル21の内容から、当該処理はMRAMのローカルメモリを持つコアに割り当てるべきことを把握する。次に、スケジューラ23はMRAMのローカルメモリを持つコアの情報を得るため、図5のコア情報テーブル22を参照する。これにより、スケジューラ23はコアID1のコアがMRAMのローカルメモリを備えていることを把握する。最後に、スケジューラ23はインタフェース部24を介し、処理ID0x1の処理をコアID1のコア(図1における第1のコア100)に割り当てる。
なお、スケジューラ23は処理属性に厳格に従ってコアに処理を割り当てなくてもよい。例えば、処理を割り当てようとするコアで既に別の処理が実行中である場合が考えられる。このような場合には、負荷均衡の観点から、処理属性で指定されていないコアに処理が割り当てられてもよい。
(2)実行効率の情報に基づく処理割り当て
処理実行前に処理への情報付与が行われていない場合などにおいて、処理の実行中に何らかの別の情報に基づいて動的に処理の割り当てを行う。ここでは、実行効率の情報に基づいて、スケジューラ23が処理割り当てを行う方法を示す。
「実行効率」は、あるコアにおける処理の実行効率を表すことが可能な任意の情報である。本実施形態では、実行効率として例えばIPC(1クロックあたりの命令実行数)を利用する。なお、実行効率としてはIPCに限らず他の様々な指標が利用可能である。例えばIPS(1秒当たりの命令実行数)、実行クロックサイクル数、消費電力、単位消費電力あたりの性能などを実行効率を表す情報としてもよい。
図1に示されるマルチコアプロセッサにおいて、処理に対する静的な情報付与が行われていない場合、スケジューラ23は第1のコア100と第2のコア200のどちらに処理を割り当てるべきか判断することができない。本実施形態では、初期の処理割り当てをMRAMのローカルメモリをもつコア(ここでは第1のコア100)とする例を示す。なお、初期の処理割り当てをSRAMのローカルメモリを持つコア(ここでは第2のコア200)としてもよい。
まず、スケジューラ23はMRAMのローカルメモリをもつコアであるコアID1に処理を割り当てる。コアID1に該当する第1のコア100は割り当てられた処理の実行を開始する。
スケジューラ23はトリガイベント発生時パフォーマンスカウンタ等で実行情報の取得を開始する。次のトリガイベント発生時にパフォーマンスカウンタ等で計測された情報をもとに、IPCの値を図8に示した処理情報テーブル21の「ID1コアのIPC」の項目に記録する。なお、トリガイベントはスケジューラ23が検知できるものであればどのようなものでも良い。例えば、プロセスの開始/終了、スレッドの開始/終了、割り込み、特別な命令の実行などでもよい。一定サイクル数毎にトリガイベントが発生してもよい。次に、スケジューラ23はコアID1に割り当てた処理をコアID2に割り当てる。コアID2に該当する第2のコア200は割り当てられた処理の実行を開始する。トリガイベント発生時にパフォーマンスカウンタ等で実行情報の取得を開始する。次のトリガイベントが発生すると、スケジューラ23はパフォーマンスカウンタ等で計測された情報をもとに第2のコア200におけるIPCの値を処理情報テーブル21の「ID2コアのIPC」の項目に記録する。
さらに次のトリガイベントが発生すると、スケジューラ23は処理情報テーブル21に記録されている「ID1コアのIPC」と「ID2コアのIPC」の大小比較を行い、数字が大きい方のコアに処理を移動する。例えば、図8の処理ID0x1については、「ID1コアのIPC」の方が大きいため第1のコア100に処理を移動する。図8の処理ID0x12については、「ID2コアのIPC」の方が大きいため、処理は移動せずそのまま第2のコア200での実行を継続する。
(3)実行効率低下度の情報に基づく割り当て
(2)実行効率の情報に基づく処理割り当て に記載したIPCの情報に基づく処理割り当てと同様に、処理の実行中に動的な処理割り当てを行う別の方法を示す。図1のようなアーキテクチャでは、処理管理部20が初期の処理割り当てが、第1のコア100(MRAMのローカルメモリをもつ)である場合と、第2のコア200(SRAMのローカルメモリをもつ)である場合とが考えられる。まず、初期の処理割り当てが第1のコア100(MRAMコア)である場合の動的な処理割り当てを説明し、次に、初期の処理割り当てが第2のコア200(SRAMコア)である場合の動的な処理割り当てを説明する。
[初期MRAMコア割り当ての例]
処理の初期割り当てが第1のコア100(ローカルメモリがMRAMであるコア)である場合の動的な処理割り当て(スケジューリング)を図9のフローチャートを参照しながら説明する。
まず、スケジューラ23はインタフェース部24を介して第1のコア100に処理を割り当てる。第1のコア100は処理を実行し、レイテンシ実行効率低下度とキャッシュミス実行効率低下度をそれぞれ計測する(ステップS1)。レイテンシ実行効率低下度とは、コアから要求されるデータが対象のメモリに存在した場合に、コアが要求を発行してからデータがコアに転送されるまでの時間により、コアの実行効率が低下する度合いである。キャッシュミス実行効率低下度とは、コアから要求されるデータが対象のメモリに存在しなかった場合、すなわちキャッシュミスの場合に、コアが要求を発行してからデータがコアに転送されるまでの時間により、コアの実行効率が低下する度合いである。
なお、本実施形態の場合では「対象のメモリ」はL2キャッシュである。また、「実行効率低下度」は、コアの実行効率が低下する度合いを数値で表す。実行効率低下度は、例えば全実行時間に占めるコアのストール時間の割合でもよいし、コアのストール時間(例えば、実時間やクロックサイクル数)でもよいし、コア内に存在する演算器の不利用率でもよい。なお、ここでの時間とは、時刻のような単位で計測してもよいし、クロックサイクル数のようなコア内の事象の単位で計測してもよい。これらの情報は、パフォーマンスカウンタ等によってコアのストールサイクル数を計測する方法が最も直接的である。しかし、このような機能をもつパフォーマンスカウンタが存在しない場合には、それ以外のパフォーマンスカウンタの情報を用いて近似的に算出してもよい。レイテンシ実行効率低下度は、例えば、命令あたりの対象のメモリへのヒット数から算出してもよい。キャッシュミス実行効率低下度は、例えば、命令あたりのキャッシュミス数から算出してもよい。
このような方法で取得された情報は、インタフェース部24を介しスケジューラ23がハードウェアから情報を取得する。スケジューラ23は、図10に示すように、処理ID毎に処理情報テーブル21にレイテンシ実行効率低下度とキャッシュミス実行効率低下度を記録する。これらの情報を本実施形態では自然数で記録することとしたが、スケジューラ23が大小を識別可能な形式であればどのようなものでも良い。例えば、小数であってもよいし、文字列であってもよい。また、処理情報テーブル21には、レイテンシ実行効率低下度とキャッシュミス実行効率低下度が記録されることとしたが、それ以外の情報が記録されてもよい。例えば、IPCや処理の実行時間が記録されてもよい。
スケジューラ23はトリガイベント発生時に、ステップS1で計測された情報をもとに、レイテンシ実行効率低下度とキャッシュミス実行効率低下度の2つの大小判定を行う(ステップS2)。トリガイベントはスケジューラ23が検知できるものであればどのようなものでも良い。例えば、プロセスの開始/終了、スレッドの開始/終了、割り込み、特別な命令の実行などでもよい。一定時間ごとの命令でも良いし、一定命令数毎の命令でも良い。一定サイクル数毎にトリガイベントが発生してもよい。処理情報テーブル21のレイテンシ実行効率低下度とキャッシュミス実行効率低下度はトリガイベント発生時に記録されているものとして例示したが、トリガイベントと同時に記録してもよいし、トリガイベント以前に適宜記録してもよい。また、トリガイベント発生時にレイテンシ実行効率低下度とキャッシュミス実行効率低下度の大小を比較しているが、処理情報テーブル21に記録する段階で大小を記録しておいてもよい。例えば、レイテンシ実行効率低下度をキャッシュミス実行効率低下度で減算するというポリシであれば、結果が負の数であればキャッシュミス実行効率低下度が大きいことが判別可能であり、結果が正の数であればレイテンシ実行効率低下度が大きいことが判別可能である。
ステップS2での大小判定の結果、図10の処理ID 0x1のようにキャッシュミス実行効率低下度が大きい場合には、スケジューラ23は現在実行中のコアよりも大容量のローカルメモリを持つコアが存在するかについてコア情報テーブル22をチェックする(ステップS3)。この例の場合、第1のコア100(MRAM)より大容量のローカルメモリを持つコアは存在しないため、処理のコア割り当ては変更しない。本例のように、コア割り当てを変更する選択肢がないことが既知の場合にはステップS3を省略してもよい。
一方、ステップS2での大小判定の結果、図10の処理ID 0x40のようにレイテンシ実行効率低下度が大きい場合には、スケジューラ23は現在実行中のコアよりレイテンシの小さいローカルメモリを持つコアが存在するかについてコア情報テーブル22をチェックする(ステップS7)。この場合、レイテンシの小さいローカルメモリ(SRAM)を持つ第2のコア200が存在するため、差異度の算出を行う(ステップS8)。例えば、レイテンシ実行効率低下度からキャッシュミス実行効率低下度の減算を行い、930という自然数を得る。差異度の算出はステップS2の大小判定と同時に行ってもよい。差異度はレイテンシ実行効率低下度とキャッシュミス実行効率低下度の差の程度を表すものであればよい。差異度は、クロックサイクル数、実時間、あるいは処理の実行時間に対する割合であってもよい。次に、スケジューラ23は、ステップS8で算出された差異度とコア変更閾値(本実施形態ではコア変更閾値が200であるものとする)とを比較する(ステップS9)。差異度がコア変更閾値よりも大きい場合には、第1のコア100で実行中の処理をインタフェース部24を介して第2のコア200に移動する。すなわち、処理が割り当てられるコアが変更される。処理の移動の手段は、一般的にはOSのスケジューラ23によるマイグレーションが考えられる。しかし、コア間で処理を移動する手段は特に限定されない。例えば、ハードウェアで実装された処理移動手段であってもよい。また、マイグレーションは如何なるタイミングで行ってもよい。前記の例のようにトリガイベントと同時に行ってもよいし、OSによるコンテキストスイッチのタイミングで行なってもよいし、それ以外でも良い。
なお、コア変更閾値とは、処理のコア移動の容易性を調節するためのパラメータである。コア変更閾値は、例えば、事前に与えられたパラメータでもよいし、処理のコア移動に伴うオーバヘッドから算出してもよいし、トリガイベントの時間間隔に対するレイテンシ実行効率低下度やキャッシュミス実行効率低下度の支配率から算出してもよい。例えば、ステップS2での大小判定の結果、図10の処理ID 0x80のようにレイテンシ実行効率低下度が高い場合でも、その差異度は53でありコア変更閾値200を超えないため、処理のコア移動は行わない。
[初期SRAMコア割り当ての例]
処理の初期割り当てが第2のコア200(ローカルメモリがSRAMであるコア)である場合の動的な処理割り当て(スケジューリング)を図9のフローチャートに沿って説明する。なお、以下に記載する語句の定義や設計のバリエーションは前述した初期MRAMコア割り当ての例と同様である。
まず、スケジューラ23はインタフェース部24を介し処理を第2のコア200に割り当てる。第2のコア200は処理を実行し、レイテンシ実行効率低下度とキャッシュミス実行効率低下度をそれぞれ計測する(ステップS1)。
スケジューラ23は、図11に示すように、処理を識別可能なID毎に、処理情報テーブル21にレイテンシ実行効率低下度とキャッシュミス実行効率低下度を記録する。
スケジューラ23はトリガイベント発生時に、ステップS1で計測された情報をもとに、レイテンシ実行効率低下度とキャッシュミス実行効率低下度の2つの大小判定を行う(ステップS2)。
ステップS2での大小判定の結果、図11の処理ID 0x100のようにレイテンシ実行効率低下度が大きい場合、スケジューラ23は現在実行中のコアよりも小さなレイテンシのローカルメモリを持つコアが存在するかについてコア情報テーブル22をチェックする(ステップS3)。この例の場合、第2のコア200のローカルメモリ(SRAM)よりもレイテンシが小さいローカルメモリを持つコアは存在しないため、処理のコア割り当ては変更しない。本例のように、コア割り当てを変更する選択肢がないことが既知の場合にはステップS3を省略してもよい。
一方、ステップS2での大小判定の結果、図11の処理ID 0x140のように、キャッシュミス実行効率低下度が大きい場合には、スケジューラ23は現在実行中のコアよりも大容量のローカルメモリを持つコアが存在するかについてコア情報テーブル22をチェックする(ステップS3)。この場合、ローカルメモリ大容量のローカルメモリ(MRAM)を持つ第1のコア100が存在するため、差異度の算出を行う(ステップS4)。例えば、キャッシュミス実行効率低下度からレイテンシ実行効率低下度の減算を行い、差異度として1690という自然数を得る。差異度の算出はステップS2の大小判定と同時に行ってもよい。スケジューラ23は、ステップS5で算出された差異度とコア変更閾値(本例では200であるものとする)を比較する(ステップS5)。ここでは差異度が大きいため、第2のコア200で実行中の処理をインタフェース部24を介して第1のコア100に移動する(ステップS6)。
なお、ステップS2での大小判定の結果、図11の処理ID 0x180のようにレイテンシ実行効率低下度が大きい場合でも、その差異度は80でありコア変更閾値200を超えないため、処理のコア割り当て変更は行わない。
このような(3)実行効率低下度の情報に基づく割り当て は、より単純な形態をとることも可能である。前述した例では、レイテンシ実行効率低下度とキャッシュミス実行効率低下度という2つの実行効率情報と閾値とを用いたが、どちらか1つの実行効率と閾値のみでも制御が可能である。その例を以下に示す。
[初期MRAMコア割り当ての例]では、例えば、レイテンシ実行効率低下度のみを計測し、それが閾値以上であれば、SRAMコアへと処理を再割り当てする方式が考えられる。これは、図9の制御方式において、キャッシュミス実行効率低下度を0と固定した場合と同等の制御である。
[初期SRAMコア割り当ての例]では、例えば、キャッシュミス実行効率低下度のみを計測し、それが閾値以上であればMRAMコアへと処理の再割り当てをする方式が考えられる。これは、図9の制御方式において、レイテンシミス実行効率低下度を0と固定した場合と同等の制御である。
このような制御を行う場合、図10と図11の処理情報テーブルは、レイテンシ実行効率低下度とキャッシュミス実行効率低下度のどちらか一方を記録するテーブルとなっていてもよい。
(4)組み合わせによる処理割り当て
図1のマルチコアプロセッサを対象として、上記(1)〜(3)の組み合わせによるスケジューリングを行ってもよい。本スケジューリングの概要は以下とおりである。
(概要手順1)上記(3)のスケジューリングを行い、処理のコア割り当て変更を行う必要がない場合は、実行中のコアのローカルメモリを処理属性として処理情報テーブル21に記録し、下記(概要手順3)へ進む。処理のコア割り当て変更を行う場合は下記(概要手順2)へ進む。
(概要手順2)割り当て変更前のコアのIPCと、割り当て変更後のコアのIPCをそれぞれ計測する。これらIPCの計測結果に基づいて、上記(2)のスケジューリングを行って最適なコアを特定する。特定された最適なコアのローカルメモリを処理属性として処理情報テーブル21に記録する。
(概要手順3)2回目以降の処理の実行は、処理属性が記録されていれば、その情報をもとに上記(1)のスケジューリングを行う。
本スケジューリングのアルゴリズムの詳細を図12のフローチャートに示す。説明を簡単化するため、上記(3)の例で述べた処理が終了した直後であるステップS14以降を重点的に説明する。ここでは、MRAMのローカルメモリをもつ第1のコア100に初期の処理割り当てを行うポリシを例として用いる。
本例に用いる処理情報テーブル21を図13に示す。同図のように、本例に用いる処理情報テーブル21は、処理ID毎に、上記(1)のスケジューリングで用いた処理属性と、上記(2)のスケジューリングで用いたID1コアのIPCおよびID2コアのIPCと、上記(3)のスケジューリングで用いたレイテンシ実行率低下度およびキャッシュミス実行率低下度の項目を持つ。
処理の実行開始時において、スケジューラ23は図13の処理情報テーブル21の処理属性の項目をチェックする(ステップS1)。この時点では情報が登録されていないため、第1のコア100に処理割り当てを行う。図14は、トリガイベントが発生した時の状態である。スケジューラ23は、上記(3)のスケジューリングに用いるレイテンシ実行効率低下度およびキャッシュミス実行効率低下度に加えて、上記(2)のスケジューリングに用いる第1のコア100での実行時のIPCを処理情報テーブル21に記録する(ステップS2)。
上記(3)の例で示したように、処理0x1についてはコアの割り当て変更を行う必要が無いため、処理の移動は行わず、第1のコア100の実行を継続する。この場合は、処理属性に第1のコア100のローカルメモリの情報を示す「MRAM」を記録する。同様に、処理0x80もコアの割り当て変更を行う必要は無いが、キャッシュミス実行効率低下度と比較してレイテンシ実行効率低下度が非常に大きいわけではなく、第1のコア100に適している処理という判断も行えないため、処理属性には情報を登録しない。処理0x40はコアの割り当て変更が必要であるため、処理属性への記録は行わずコアの割り当て変更を行う。ここまでの手順を終えた処理情報テーブル21を図15に示す。なお、ここまでの制御に関しても、(3)実行効率低下度の情報に基づく割り当て と同様、より単純な形態をとることも可能である。例えば、レイテンシ実行効率低下度と閾値のみを利用し、コアの割り当て変更を判断してもよい。
処理0x40の処理は、コアの割り当て変更の後、第2のコア200で実行が開始される。スケジューラ23はトリガイベントを検知すると、処理0x40の処理について、第2のコア200による実行時のIPCを計測して処理情報テーブル21に記録する(ステップS14)。
なお、第2のコア200でのIPCは2.2であったものとする。同時に、スケジューラ23はID1コアのIPCである1.5とID2コアのIPCである2.2の大小比較を行う(ステップS15)。この例では、ID2コアのIPCが大きいことから、コア割り当ての変更は必要ないものと判断する。スケジューラ23は、処理属性を第2のコア200のローカルメモリの情報であるSRAMを処理ID0x40の処理属性に記録する。ここまでの手順を終えた処理情報テーブル21を図16に示す。一方、ステップS15の判定において、IPCの差異が閾値以上である場合には、この閾値よりもIPCが大きい方のコアを最適コアとして記録し、該最適コアに処理を割り当てる(ステップS15,S16)。
処理ID0x1や処理ID0x40の処理を再度実行する場合には、上記(1)のスケジューリングを行うことが出来る。スケジューラ23は、図16の処理情報テーブル21の処理属性の項目をチェックし(ステップS1)、処理0x1と0x40はそれぞれ第1のコア100と第2のコア200に割り当てが行われる(ステップS16)。このような方法で、処理の適切なコアへの割り当てが実現できる。
スケジューラ23は、上記のような方法で適切なコアを決定した後も、実行中のコアでのIPCの計測をトリガイベント毎に実施してもよい(ステップS17)。スケジューラ23は、処理情報テーブル21に記録されている前トリガイベント発生時のIPCと、現トリガイベント発生時のIPCを比較し(ステップS18)、IPC閾値以上に変化があった場合は処理の特性が変化したものと判断し、再び適切なコアを選択するスケジューリングを実施する(上記(3)→(2)→(1)の順序でスケジューリングを実施する)。IPCを計測している間、処理の特性変化に備えてレイテンシ実行効率低下度とキャッシュミス実行効率低下度を計測し続けてもよいし、処理の特性変化を検知した後で計測を再開してもよい。
なお、必ずしも上記(1)〜(4)のスケジューリングのポリシに厳密に従って処理のコア割り当てを行わなくてもよい。例えば、上記(1)〜(4)のスケジューリングで処理を割り当てようとするコアにおいて、既に処理が実行中である場合が考えられる。このような場合には、負荷均衡などの他の観点も考慮し、上記(1)〜(4)のスケジューリングで判断されたコア以外に処理を割り当ててもよいし、コアへの処理割り当てを延期してもよいし、コアへの処理割り当てを中止してもよい。このようなスケジューリングは、上記(1)〜(4)のスケジューリングと付加均衡を目的としたスケジューリング技術との組み合わせで実現可能である。
(実施形態2)
実施形態1では、異種メモリ構成をL2キャッシュに適用する例を示した。実施形態2では、異種メモリ構成をL1キャッシュに適用する例を示す。
図17は、実施形態2に係るマルチコアプロセッサを示している。L2キャッシュ103および203、ならびにL3キャッシュ400にMRAMを利用しているが、これらについてはどのようなメモリが利用されてもよい。例えば、L2キャッシュ103および203がDRAMやSRAMであってもよいし、L3キャッシュ400がDRAMやSRAMであってもよい。
実施形態2において、ダイ30内に設けられる第1のコア100のL1キャッシュ107および108にMRAMを利用し、第2のコア200のL1キャッシュ207および208にSRAMを利用する。第1のコア100については、同コアからL3キャッシュ400までの経路がMRAM(L1キャッシュ107および108)→MRAM(L2キャッシュ103)→MRAM(L3キャッシュ400)である。一方、第2のコア200については、同コアからL3キャッシュ400までの経路がSRAM(L1キャッシュ207および208)→MRAM(L2キャッシュ203)→MRAM(L3キャッシュ400)である。このように、第1のコア100と第2のコア200は、単位セル構成が異なるメモリ構成となっている。
図17に示す実施形態2では、第1のコア100のL1キャッシュ107および108の全体がMRAMで構成されており、第2のコア200のL1キャッシュ207および208の全体がSRAMで構成されているように図示されているが、必ずしもそのような構成でなくてもよい。つまり、第1のコア100と第2のコア200のそれぞれのL1キャッシュを構成するメモリの一部において単位セル構成が異なるメモリが用いられていればよい。例えば、第1のコア100のL1命令キャッシュ107にMRAMを利用し、L1データキャッシュ108にSRAMを利用し、第2のコア200のL1キャッシュ207および208の全体にSRAMを利用してもよい。あるいは、第1のコア100のL1命令キャッシュ107にSRAMを利用し、L1データキャッシュ108にMRAMを利用し、第2のコア200のL1キャッシュ207および208の全体にSRAMを利用してもよい。
本実施形態のマルチコアプロセッサのハードウェア制御方法は実施形態1と同様であっても良い。また、ソフトウェア制御方法についても実施形態1と同様に上記(1)〜(4)のスケジューリングが利用可能であるが、これらの方式に限定されるものではない。
(実施形態3)
実施形態1および実施形態2では、コアが均一なマルチコアプロセッサの実施形態を示した。実施形態3では、コアが不均一なマルチコアプロセッサの実施形態を示す。
図18は、実施形態3に係るマルチコアプロセッサを示している。ダイ40内に設けられる第1のコア500と、同一のダイ40内に設けられる第2のコア600は、同一の命令セットを備えるが、第1のコア500と第2のコア600は性能が異なる。コアの性能とは、コアの性質を示す定量値を指す。例えば、プログラムの実行速度や、単位時間当たりの消費電力がコアの性能であるといえる。より具体的な例としては、コアの演算器の数やメモリサイズ等から判断可能である。本実施形態では、コアの性能は例えばコアの動作周波数である。また、第1のコア500の動作周波数は、第2のコア600の動作周波数よりも低いものとする。
図18に示すように、L2キャッシュ503および603、ならびにL3キャッシュ400にMRAMを利用するものとするが、これらキャッシュとしてどのようなメモリが利用されてもよい。例えば、L2キャッシュ503および603がDRAMやSRAMであってもよいし、L3キャッシュ400がDRAMやSRAMであってもよい。また、第1のコア500のL1キャッシュ501および502にMRAMを利用し、第2のコア600のL1キャッシュ601および602にSRAMを利用している。
第1のコア500は、同コアからL3キャッシュ400までの経路がMRAM(L1キャッシュ501および502)→MRAM(L2キャッシュ503)→MRAM(L3キャッシュ400)であるのに対して、第2のコアは、同コアからL3キャッシュ400までの経路がSRAM(L1キャッシュ601および602)→MRAM(L2キャッシュ603)→MRAM(L3キャッシュ400)である。このように、第1のコア500と第2のコア600は、単位セル構成が異なるメモリ構成となっている。
図18に示す実施形態3では、第1のコア500のL1キャッシュ501および502の全体がMRAMで構成されており、第2のコア600のL1キャッシュ601および602の全体がSRAMで構成されているように図示されているが、必ずしもそのような構成でなくてもよい。つまり、第1のコア500と第2のコア600のそれぞれのL1キャッシュを構成するメモリの一部において単位セル構成が異なるメモリが用いられていればよい。例えば、第1のコア500のL1命令キャッシュ501にMRAMを利用し、L1データキャッシュ502にSRAMを利用し、第2のコア600のL1キャッシュ601および602の全体にSRAMを利用してもよい。あるいは、第1のコア500のL1命令キャッシュ501にSRAMを利用し、L1データキャッシュ502にMRAMを利用し、第2のコア600のL1キャッシュ601および602の全体にSRAMを利用してもよい。
本実施形態のマルチコアプロセッサのハードウェア制御方法は実施形態1と同様であっても良い。また、ソフトウェア制御方法についても実施形態1と同様に上記(1)〜(4)のスケジューリングが利用可能であるが、これらの方式に限定されるものではない。
(実施形態4)
実施形態1〜3では、全てのコアが同一の命令セットを備えることを想定している。本実施形態では、命令セットが異なる複数のコアを搭載したマルチコアプロセッサに関する。
図19に、実施形態4に係るマルチコアプロセッサの例を示す。ダイ50内に設けられる第1のコア700は例えば汎用的なCPUであり、同一のダイ50内に設けられる第2のコア800は例えば画像処理を行うGPUである。
図19の構成において、L2キャッシュ703および802、ならびにL3キャッシュ400にMRAMを利用しているが、これらキャッシュはどのようなメモリが利用されてもよい。例えば、L2キャッシュ703および802がDRAMやSRAMであってもよいし、L3キャッシュ400がDRAMやSRAMであってもよい。また、第1のコア700のL1キャッシュ701および702にMRAMを利用し、第2のコア800のL1キャッシュ801にSRAMを利用している。
第1のコア700については、同コアからL3キャッシュ400までの経路がMRAM(L1キャッシュ701および702)→MRAM(L2キャッシュ703)→MRAM(L3キャッシュ400)である。一方、第2のコア800については、同コアからL3キャッシュ400までの経路がSRAM(L1キャッシュ801)→MRAM(L2キャッシュ802)→MRAM(L3キャッシュ400)である。このように、第1のコア700と第2のコア800は、単位セル構成が異なるメモリ構成となっている。
図19に示す実施形態4では、第1のコア700のL1キャッシュ701および702の全体がMRAMで構成されており、第2のコア800のL1キャッシュ801の全体がSRAMで構成されているように図示されているが、必ずしもそのような構成でなくてもよい。
つまり、第1のコア700および第2のコア800のL1キャッシュ701および702、ならびに801を構成するメモリの一部に「単位セル構成が異なるメモリ」が用いられていればよい。例えば、第1のコア700のL1命令キャッシュ701にMRAMを利用し、L1データキャッシュ702にSRAMを利用し、第2のコア800のL1キャッシュ801にSRAMを利用してもよい。あるいは、第1のコア700のL1命令キャッシュ701にSRAMを利用し、L1データキャッシュ702にMRAMを利用し、第2のコアのL1キャッシュ801にSRAMを利用してもよい。
本実施形態のマルチコアプロセッサのハードウェア制御方法は実施形態1と同様であっても良い。また、ソフトウェア制御方法についても実施形態1と同様に上記(1)〜(4)のスケジューリングが利用可能であるが、これらの方式に限定されるものではない。
以上のように、マルチコアプロセッサにおいて、一部のコアのローカルキャッシュに不揮発メモリを利用し、残りのコアのローカルキャッシュに揮発メモリを利用するハイブリッドなキャッシュ構成を採ることについて説明した。その代表的な例は、マルチコアプロセッサにおいて多数のコアのローカルメモリにMRAMのような不揮発メモリを利用し、残りの一部のコアのローカルメモリにSRAMのような揮発メモリを利用するものである。さらに、コアへ処理割り当てを行うスケジューラが、コアへの処理割り当てを通じて、該処理に適したメモリ(ローカルキャッシュ)を選択することについて説明した。
したがって、以上のようなハイブリッドなキャッシュ構成にすることで、プログラムの性質に応じてソフトウェアが適切なメモリを選択することが可能となり、ハードウェア設計コストや回路面積の増大を抑えつつプロセッサの処理効率を向上させることが可能となる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
100…第1のコア
101…L1命令キャッシュ
102…L1データキャッシュ
103…L2キャッシュ
200…第2のコア
201…L1命令キャッシュ
202…L2データキャッシュ
203…L2キャッシュ
300…バス
400…L3キャッシュ

Claims (11)

  1. タスクを複数実行可能なマルチコアプロセッサであって、
    少なくとも第1のコアと第2のコアとレイテンシを要因とする処理の実効効率の第1の低下度及び記憶容量を要因とする前記処理の実効効率の第2の低下度のうち少なくとも一つに基づいて前記第1のコアおよび前記第2のコアのいずれかに前記処理を割り当てるスケジューラとを具備し、
    前記第1のコアと前記第2のコアは共有メモリ領域にアクセス可能であり、
    前記第1のコアは前記共有メモリ領域へのアクセス経路に1つ以上のメモリ階層を備え、該1つ以上のメモリ階層は前記第1のコアのローカルメモリを備え、
    前記第1のコアのローカルメモリは第1の不揮発メモリを備え、
    前記第2のコアは前記共有メモリ領域へのアクセス経路に1つ以上のメモリ階層を備え、該1つ以上のメモリ階層は前記第2のコアのローカルメモリを備え、
    前記第1のコアのローカルメモリと前記第2のコアのローカルメモリは、少なくとも1つの互いに同一のメモリ階層において、互いに単位セル構成が異なるメモリを備えることを特徴とするマルチコアプロセッサ。
  2. 前記第1のコアと前記第2のコアが同一の命令セットを備えることを特徴とする請求項1記載のマルチコアプロセッサ。
  3. 前記第1のコアと前記第2のコアが異なる命令セットを備えることを特徴とする請求項1記載のマルチコアプロセッサ。
  4. 前記第1のコアは、プログラムの実行速度、単位時間あたりの消費電力および動作周波数において前記第2のコアと同一であることを特徴とする請求項2記載のマルチコアプロセッサ。
  5. 前記第1のコアは、プログラムの実行速度、単位時間あたりの消費電力および動作周波数のうち少なくとも1つにおいて前記第2のコアと異なることを特徴とする請求項2記載のマルチコアプロセッサ。
  6. 前記少なくとも1つの互いに同一のメモリ階層において、
    前記第2のコアのローカルメモリは揮発メモリを備えることを特徴とする請求項1、4または5記載のマルチコアプロセッサ。
  7. 前記少なくとも1つの互いに同一のメモリ階層において、
    前記第2のコアのローカルメモリは第2の不揮発メモリを備え、
    前記第1の不揮発メモリと前記第2の不揮発メモリは互いに異なる特徴を有する論理回路を備えることを特徴とする請求項1、4または5記載のマルチコアプロセッサ。
  8. 前記第1の不揮発メモリはMRAM(Magnetic Random−Access Memory)であり、
    前記揮発メモリはSRAM(Static RAM)であることを特徴とする請求項6記載のマルチコアプロセッサ。
  9. 請求項1記載のマルチコアプロセッサの制御方法であって、
    前記スケジューラは、
    前記第1のコアと前記第2のコアのいずれか一方に処理を割り当てるステップと、
    前記処理の実行効率に基づいて、前記第1のコアおよび前記第2のコアの他方に処理の割り当てを変更可能とするステップと、
    を実行する制御方法。
  10. 請求項1記載のマルチコアプロセッサの制御方法であって、
    前記スケジューラは、
    前記第1のコアと前記第2のコアそれぞれに処理を実行させるステップと、
    前記第1のコアにおける前記処理の実効効率を示す第1の指標と、前記第2のコアにおける前記処理の実効効率を示す第2の指標とを計測するステップと、
    前記第1の指標と前記第2の指標の比較結果に基づいて前記第1のコアと前記第2のコアのいずれか一方に前記処理を割り当てるステップと、を実行する制御方法。
  11. 前記第1の低下度及び前記第2の低下度のうち少なくとも一つを計測するステップと、
    前記第1の低下度と前記処理の割り当てを変更する閾値との比較結果、或いは前記第2の低下度と前記処理の割り当てを変更する閾値との比較結果に応じて、または前記第1の低下度と前記第2の低下度の差の絶対値が前記処理の割り当てを変更する閾値を超える場合に、前記処理の割り当てを変更するステップと、をさらに含む請求項9記載の方法。
JP2013065378A 2013-03-27 2013-03-27 マルチコアプロセッサおよび制御方法 Expired - Fee Related JP5591969B1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013065378A JP5591969B1 (ja) 2013-03-27 2013-03-27 マルチコアプロセッサおよび制御方法
US14/196,438 US20140297920A1 (en) 2013-03-27 2014-03-04 Multi-core processor and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013065378A JP5591969B1 (ja) 2013-03-27 2013-03-27 マルチコアプロセッサおよび制御方法

Publications (2)

Publication Number Publication Date
JP5591969B1 true JP5591969B1 (ja) 2014-09-17
JP2014191521A JP2014191521A (ja) 2014-10-06

Family

ID=51621990

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013065378A Expired - Fee Related JP5591969B1 (ja) 2013-03-27 2013-03-27 マルチコアプロセッサおよび制御方法

Country Status (2)

Country Link
US (1) US20140297920A1 (ja)
JP (1) JP5591969B1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529727B2 (en) * 2014-05-27 2016-12-27 Qualcomm Incorporated Reconfigurable fetch pipeline
US9563505B2 (en) * 2015-05-26 2017-02-07 Winbond Electronics Corp. Methods and systems for nonvolatile memory data management
US11968843B2 (en) * 2018-06-28 2024-04-23 Taiwan Semiconductor Manufacturing Co., Ltd. Processing core and MRAM memory unit integrated on a single chip
KR102149153B1 (ko) * 2018-10-08 2020-08-28 울산과학기술원 이종 메모리를 활용한 범용 gpu에서의 페이징 방법 및 장치
US10936493B2 (en) * 2019-06-19 2021-03-02 Hewlett Packard Enterprise Development Lp Volatile memory cache line directory tags
CN111913822B (zh) * 2020-08-28 2023-03-28 电子科技大学 一种基于amp架构的核间通信方式

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8635405B2 (en) * 2009-02-13 2014-01-21 Nec Corporation Computational resource assignment device, computational resource assignment method and computational resource assignment program
US8990582B2 (en) * 2010-05-27 2015-03-24 Cisco Technology, Inc. Virtual machine memory compartmentalization in multi-core architectures
CN102934095A (zh) * 2010-06-10 2013-02-13 富士通株式会社 多核处理器系统、控制程序以及控制方法
US9201792B2 (en) * 2011-12-29 2015-12-01 Intel Corporation Short circuit of probes in a chain

Also Published As

Publication number Publication date
US20140297920A1 (en) 2014-10-02
JP2014191521A (ja) 2014-10-06

Similar Documents

Publication Publication Date Title
CN107636625B (zh) 用于共享系统高速缓存的虚拟化控制的方法和装置
JP5591969B1 (ja) マルチコアプロセッサおよび制御方法
JP5413001B2 (ja) キャッシュメモリ
JP6378417B2 (ja) 動的パーティショニングを用いる共有されるキャッシュのための方法および装置
US9098417B2 (en) Partitioning caches for sub-entities in computing devices
US9612970B2 (en) Method and apparatus for flexible cache partitioning by sets and ways into component caches
US8645612B2 (en) Information processing device and information processing method
US9665489B2 (en) Methods of selecting available cache in multiple cluster system
US9727465B2 (en) Self-disabling working set cache
KR20180034440A (ko) 효율적인 병렬 컴퓨팅을 위한 단순화된 태스크-기반 런타임을 위한 방법
EP3662376B1 (en) Reconfigurable cache architecture and methods for cache coherency
KR20240004361A (ko) 프로세싱-인-메모리 동시적 프로세싱 시스템 및 방법
US9582329B2 (en) Process scheduling to improve victim cache mode
CN105612505B (zh) Cpu调度的方法和装置
WO2017188948A1 (en) Dynamic thread mapping
US11714753B2 (en) Methods and nodes for handling memory
US11157319B2 (en) Processor with processor memory pairs for improved process switching and methods thereof
KR101480954B1 (ko) Numa 시스템의 스케줄링 장치 및 그 방법
KR20210125948A (ko) 이종 메모리 간의 메모리 스왑을 관리하는 전자 장치 및 이의 메모리 관리 방법
JP2019164497A (ja) 管理装置、情報処理装置、管理方法、およびプログラム

Legal Events

Date Code Title Description
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: 20140701

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140730

R151 Written notification of patent or utility model registration

Ref document number: 5591969

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees