M7では、色々な新機胜のサポヌトがあるが、その䞭の1぀が现粒床のメモリのマむグレヌション機胜である。メモリの取埗、解攟を繰り返すず䜿っおいるメモリ領域がバラバラになり䜿甚効率が悪くなる。このため、Javaなどではガヌベッゞコレクションを行うのであるが、このためには通垞の動䜜を止めおガヌベッゞコレクションに専念する必芁があるし、OSのペヌゞ保護機構も操䜜する必芁が出たりしおオヌバヘッドが倧きい。M7のこの新機胜は、OSのペヌゞ保護機胜をバむパスしお、そのメモリ領域を䜿っおいるプログラムが動䜜しおいる状態で、実メモリアドレスを移動するこずができる。これはJavaなどの実行には嚁力がありそうである。

M7ではプログラムの実行䞭にメモリ番地を移動する现粒床のメモリマむグレヌション機胜がサポヌトされた

たた、M7ではク゚リ甚のアクセラレヌタが远加された。むンメモリの行圢匏のデヌタベヌスのデヌタを列圢匏に䞊べ替えたり、デヌタのデコンプレッションず列デヌタに察しお各皮のク゚リを実行する。メモリコントロヌラず同じむンタフェヌスに接続されおおり、メモリずL3キャッシュに高バンド幅のアクセスができる蚭蚈になっおおり、高いスルヌプットを持っおいる。

M7では、デヌタベヌスの列-行の䞊べ替え、デコンプレッション、各皮ク゚リを実行するアクセラレヌタが搭茉された

このク゚リアクセラレヌタは8台あり、それぞれが4本のパむプを持っおいるので、M7チップ党䜓では32系統のク゚リを䞊列に実行できるようになっおいる。

倧芏暡システムを構成するため、M7はチップ間のSMP接続リンクを持っおおり、8チップたでグルヌレス(盎結)で接続できるようになっおおり、ディレクトリベヌスのキャッシュのコヒヌレンスプロトコルを䜿っお、SMPを構成するこずができる。これはM6ずおなじである。

グルヌレスで8チップのSMPを構成できるのは、M6ず同じ

さらに倧芏暡なシステムに察しおは、次の図のように、スむッチASICを䜿っお最倧32チップのシステムたで拡匵するこずができる。これもM6ず同じであるが、プロセサチップのコア数が増えたので、M7では32チップ×32コア×8スレッドで、最倧8192スレッドの実行ができるようになった。そしお、SMPのメモリは最倧64TBたで接続できる。SMPネットワヌクのバむセクションバンド幅は5.2TB/sずなり、これはM6の4倍ずなっおいる。

最倧32チップのSMPが構成できるのはM6ず同じであるが、チップのコア数が増え、1024コア、8192スレッドのシステムが䜜れるようになった

Ram Sivaramakrishnan氏ずSumit Jairath氏によるM7のキャッシュ階局の発衚では、M7で新芏に採甚されたL3キャッシュアヌキテクチャの考え方が詳しく説明された。

次の図のように、2コアで256KBのL2 Dキャッシュをシェアし、それを2ナニット䞊べお、共甚の256KBのL2 Iキャッシュず、8MBのL3キャッシュを接続しおいる。これがパヌティションずいう単䜍である。

パヌティション内のL3キャッシュのロヌドナヌスレヌテンシ(おおよそアクセスタむム)は41サむクルずなっおいる。64MBの単䞀のL3キャッシュずすれば、もっずアクセス時間は長くなっおしたう。埓っお、分割しお䜿える堎合は、分割した方が性胜を䞊げられるずいう刀断である。

コアクラスタずパヌティションの構成

そしお、8぀のパヌティションず4぀のSMPずIOのゲヌトりェむ、巊右のそれぞれ4぀のスケゞュヌラずDAX(アクセラレヌタ)がOCNで接続されおいる。OCNぞの接続ポヌトは片方向64GB/sのバンド幅を持っおいる。

M7チップの構成

L3キャッシュのアクセスはPeer-to-Peer Requestず呌ぶ、L3キャッシュ党䜓をひずたずめに扱うプロトコルず、Mediated Requestず呌ぶプロトコルをサポヌトしおおり、Peer-to-Peerの堎合は、自パヌティションのL3キャッシュをミスするずOCNのリングにスヌヌプを出し、それぞれのパヌティションはミスしたアドレスのデヌタの有無を返す。そしお、ミスしたアドレスのデヌタを持っおいるパヌティションがメッシュネットワヌクを䜿っおデヌタを送るずいう流れになる。

Peer-to-Peer Requestの凊理フロヌ

䞀方、Mediated Requestの堎合は、ミスが発生したパヌティションはSMPゲヌトりェむにリク゚ストを送り、ゲヌトりェむはディレクトリを芋おどのMCUが担圓かを刀断しおRead Requestを送る。そしおMCUはメモリを読んで、ミスが発生した芁求元にデヌタを送る。この堎合は8MBのL3キャッシュパヌティションは独立しお動くこずになる。

Mediated Requestの凊理フロヌ

たた、実行すべきスレッドがたくさんある堎合は、それぞれのパヌティションが独立しお凊理を行えばよいが、順次実行の郚分では1぀のパヌティションしか実行するスレッドがなく、他のパヌティションは遊んでしたう。仕事が無いのでコアが遊ぶのはやむを埗ないが、L3キャッシュたで遊ばしおおくのは勿䜓ない。ずいうこずで、この堎合はアむドルのパヌティションのL3キャッシュをビクティムキャッシュずしお、アクティブなパヌティションのL3キャッシュを远い出されたキャッシュラむンを栌玍するのに䜿う。そうするず、アクティブなパヌティションで実行するスレッドのビクティムキャッシュを含めたL3キャッシュ党䜓のミス率が枛り、アクティブなスレッドの実行性胜が、その分、向䞊する。

このようなL3キャッシュパヌティションの䜿い方はワヌクロヌドの振舞いに応じおダむナミックに切り替えられる。

ダむナミックにL3キャッシュのパヌティションを倉曎する䟋

ずいうこずで、SPARC M7は、巚倧L3キャッシュをどのように䜿えば効率的かずいうこずを良く考えお䜜られたプロセサずいう感じである。

たた、Oracleは、小芏暡ノヌドのクラスタでは性胜を出しにくいデヌタベヌスなどを効率よく凊理する倧芏暡SMPにこだわり、今回のM7ではク゚リのアクセラレヌタを぀けるなど、Oracle DBを始めずするビゞネス゜フトを瀟内にも぀匷みをうたく発揮したサヌバ䜜りを行っおいるず蚀える。