大原雄介のEmbedded Processor Forum 2003レポート

MIPSが、新32bitコアMIPS32 24Kを発表


【写真1】MIPS TechnologyのCTOであるMichael Uhler氏
会場:Fairmont Hotel(サンノゼ)
会期:6月16~19日(現地時間)


 さて、ARMはかなり力の入った発表を行なったわけだが、対抗馬たるMIPS Technologyも負けてはいない。今回MIPSは、MIPS32 24Kという新しい32bitコアを発表した。


●Code Name “Topaz”

 事前に配布された資料では“Topaz”というコード名だったが、当日は全ページが“MIPS32 24K”に差し替えられたこのコア、名前の通り既存のMIPS32 4Kシリーズの後継製品である。

 この24Kという型番はちょっと意味深である。MIPSは【写真2】のような製品ラインナップを持っており、一口で言えばLow-Cost、Better Cost/PerformanceマーケットにはMIPS32 4Kシリーズを、High-PerformanceマーケットにはMIPS64 5Kシリーズを提供してきたわけだが、今回のMIPS32 24Kはパフォーマンスの点では既存のMIPS64 5Kを凌駕しており、最上位であるMIPS64 20Kシリーズと同等以上、というポジションになるからだ。

 そのMIPS32 24Kだが、0.13μmプロセスを使った場合には「最悪値で」400~550MHz程度で動作することになるという【写真3】。MIPS32だと、例えば4Kで200~300MHz動作だったし、MIPS64 5Kも250~350MHzだから、これらを大幅に凌駕しており、500MHz~600MHz動作のMIPS64 20Kとほぼ並ぶことになる(ま、実際はMIPS64 20Kcが2wayのスーパースケーラであることを考えると、多少のアドバンテージがMIPS64にはあるかもしれないが)。

【写真2】この図にはMIPS64 20Kが示されていないが、ほとんどMIPS32 24Kと重なりあう 【写真3】MIPS32とMIPS64で同じ動作クロックならば、ピーク性能で上なのはMIPS64だが、アベレージ性能は大きくは変わらない。また、MIPS32 24Kが恐らく動作クロックを600MHz以上にあげられることを考えると、ほぼ性能は互角以上ということになる


●8ステージの(スーパー)パイプライン

 コアで特徴的なのは、Single Issue(つまりスーパースケーラは搭載しない)ながらパイプラインが8ステージにされ、またメモリコントローラが大幅に強化されたこと、マルチプロセッサをネイティブでサポートしたこと【写真4】、そして外部バスにOCPを採用したことである【写真5】。

【写真4】CorExtendというのは、ユーザーが勝手に命令を追加できる機能だが、同様のものは例えばMIPS32 4KSdなどでも搭載されているので、別にこれが初めてというわけではない 【写真5】ARMはAXIという形でSoC内部のバスの高速化を図ったわけだが、MIPSはOCPを採用する形でやはり高速化を図ったわけだ

 内部構造に関してはこのあと説明するとして、ちょっとこのOCPについて解説すると、SoC(Sysytem on Chip)で利用する、言ってみれば汎用の内部バスである。OCP自体はOCP-IPという組織で仕様が定められており、ここに参加している企業から具体的にOCPに対応したIPが入手できる。中核となるのはNOKIA、ST MicroElectronics、SONICS、TI、UMCといった企業だが、今では58社ものメーカーがここに参加している(台湾の国立清華大学なんかも入っているので、厳密にはメーカーとは言えないのだが)。もちろんMIPS Technologyもこれに参加している。

 で、このOCPがどのくらいの性能を持つかというと、例えば中核メンバーのSONICSが提供するSiliconBackplaneというIPコアを使うと、最大300MHz動作で4.8GB/secの転送速度が確保できることになっている。

 IPコアというところがミソで、実際にどのくらいのパフォーマンスかというのはファウンダリやプロセスに関係してくるので一概には言えないが、従来だと1GB/sec程度がSOC内部バスの上限だったから、大幅なパフォーマンスアップとも言えるわけだ。もちろん内部バスを提供するのはSONICSだけではないから、ユーザーは自分の用途に合わせて複数のベンダーから一番適した内部バスを選べるという仕組みで、今後の動向がちょっと楽しみである。

【図1】MIPS32 24Kの特徴

【写真6】図1では「命令デコード」と書いたが、厳密には“Instruction Issue”(命令発行)となる。何で発行かというと、どちらのパイプラインを利用するかがここで決まるためである
 さて、話を戻そう。MIPS32 24Kの特徴の1つは、パイプラインを8ステージに増やしたことだ。これをちょっとまとめたのが【図1】である。次第に段数が増えていることがおわかりいただけるだろうか? また、単に段数を増やしただけではない。通常のALUとメモリアクセスを別のパイプラインとするといった工夫がなされている【写真6】。さて、各ステージにおける詳細をもう少し見てみたい。

 まずFetch/Issueでは、64KB 4way-Set Associativeの命令L1キャッシュ、それと今回追加されたMictoTLBが目を引く【写真7】。キャッシュサイズは従来の倍で、これは当然フェッチミスを削減することになるわけだが、ほかにも(外部に設けたTLBとは別に)MicroTLBを内蔵しているのはちょっと面白い。

 このMicroTLB、IntelのXScaleなどでも利用されているもので、直近のデータのみを抱えるTLBである。エントリ数はたいしたことはないが、その代わりレイテンシが非常に低いので、大域ジャンプなんぞをかまされた日には役に立たないが、局所構造をきちんと取ったコンサバティブなプログラムを高速に動作させることは非常に役に立つ。また、パイプライン自体はSingle Issueながら、命令フェッチは妙に強化されていることがわかる【写真8】。ちなみにMIPS16eの利用時は、命令デコードを1段余分に必要とするそうだ【写真9】。

【写真7】もちろんこの命令キャッシュサイズやMicroTLBは“Application configurability”なので、サイズを減らしたりMicroTLBを搭載しないことも可能 【写真8】同時2命令のフェッチが可能で、命令エントリは6つも用意されていることがわかる 【写真9】本文では省略したが、動的な分岐予測も搭載しており、パイプライン段数の増加への対策は着々となされている

 さて、実行段はというと、整数演算に関しては従来のMIPS32 4Kと大差ない【写真10】。ただし、メモリアクセスのパイプラインを分離したため、データキャッシュミスによるパイプラインストールがあっても、通常の演算が止まらないように配慮されている【写真11】。実行段自体もかなりチューニングがなされているようで、例えば32bitの乗算がレイテンシ5クロックというのは速い部類に属する【写真12】。

【写真10】デフォルトではFPUは用意されないが、これはオプションで追加できる(ほかのMIPSコアも同じく) 【写真11】このメモリアクセスを分離した、というあたりは将来の拡張への布石とも見ることができる。詳しくは後述 【写真12】Fully bypassedというのは、例えばある命令の演算結果が次に続く命令に影響を及ぼす場合、その結果を(データキャッシュなどを経由せずに)次の命令の演算段にすぐさま渡せるという意味

 メモリアクセス段もなかなか強化されている。これまで、Scratchpadと呼ばれるローカルメモリをキャッシュに使うことが多かったMIPS32だが、24Kでは専用の64KBデータキャッシュを持てる【写真13】ほか、マルチプロセッサの対策もきちんと施され【写真14】、しかも性能向上のためにこちらもMicroTLBを搭載している【写真15】。

【写真13】データL1キャッシュは、最短2クロックのレイテンシでアクセス可能。最短、というのはアソシエイティブ数で多少変わってくるからだ。必要ならパリティチェックを追加できるほか、ライン単位でのロックができるというのは、マルチプロセッサ対策であろう 【写真14】MESI(Modified、Exclusive、Shared、Invalid)は、CPUから外部キャッシュの整合性を取るために多く利用されているプロトコル。Snoopというのは、複数キャッシュとかキャッシュ/メモリ間で整合性をとるための仕組みである。OCPは先ほど説明した通りだ 【写真15】8エントリのMicroTLBにより、ローカルメモリのアクセスの高速化ができるという仕組み。どうでもいいが、キャッシュデータの移動をソフトウェアから完全にコントロールできるというのは、PC向けプロセッサではあまり見られないもので、Embedded向けプロセッサらしい特徴といえる


●CMPとSMT

 さて、これを使うとどんな構成になるかといえば、典型的なものは【写真16】のようなものだろう。これは従来までも使われてきたものだが、強いて言えば最近はAHB/APBを使うことが多かったが、MIPS32 24KではOCP対応バックプレーンに変わるというあたりが少し異なっている。

 大きく異なるのは【写真17】の構成だ。OCPに対応したことで、スムーズにCMP(Chip Multi Processor)の構成をとることが可能になっている。より多くのパフォーマンスが必要な場合、プロセッサの数を増やすことで対応できるという話だ。

【写真16】従来だとCPU、メモリコントローラ、2Dグラフィック、SecurityあたりをAHBで、A/V Input/OutputとAudio/Video DecodeをAPBでそれぞれ繋ぎ、間にAHB/APB Bus Bridgeを入れる構成が一般的だった 【写真17】AHBで複数プロセッサを繋ぐことはほとんどなく、従来だと独自バスを利用することが多かった。これがOCPを使うことで簡単になったわけだ

 ちなみに0.13μmプロセスにおける具体的なダイ面積はまだ示されていないが、大体同じ程度に複雑に見えるARM11が8.5平方mmだから、まぁMIPS32 24Kも同程度にはなるだろう。仮に10平方mmとして、2つで20平方mm、バックプレーンとメモリコントローラまで入れて35平方mmというところだろうか? 性能を考えると、なかなか手ごろなサイズに思える。

 ところで、ここまででは説明してこなかったのだが、MIPS32 24Kのもう1つ大きな特徴はMIPS32 Release2と呼ばれる新しい命令セットを搭載することである。実はこのRelease2って何だ? という話が講演の中では全く説明されなかったのだが、同社のJack Browne氏(Vice President, Worldwide Sales)と話をする機会があり、ここで明らかにされた。

 MIPS32 Release2は、既存のMIPS32命令セットに比べて3つの違いがあるという。1つ目はBitField命令の強化、2つ目はマルチプロセッサ対応で、3つ目はなんとSMT(Simultaneous Multi-Threading)の対応なのだそうだ。具体的に言えば、例えば現在MIPS32は2つのレジスタセットを切り替えて使えるが、Release2では4セットのレジスタセットを切り替えられるのだそうだ。ただ、だからといってMIPS32 24KでSMTが使えるというわけではないそうだ。SMT自体はもはやEmbeddedプロセッサでもあたりまえの技術になり始めており、MIPS Technologyとしても当然対応を考えているが、ただSMTを利用するためにはまずソフトウェアが対応しなければならず、したがってまずはそちらの対応を行なうという話だった。

 実際、そう見るとMIPS32 24Kのパイプラインは妙に冗長性というか拡張性が高い。フェッチが同時2命令とか、命令バッファが6命令というのはSingle Issue/Single Threadのプロセッサには無駄なほど贅沢だし、全般的にResource Richな構成になっている。が、例えばALU主体のスレッドとMemory Access主体のスレッドが同時に実行できるとなれば、これらの過剰に見えるリソースも、リーズナブルに思える。恐らく、次世代あるいは次々世代のMIPS32 24KプロセッサはSMTを搭載するのであろう。ちなみに登場時期は? とBrowne氏に聞いたところ、「2年後」という返事であった。

□Embedded Processor Forum 2003(英文)
http://www.mdronline.com/epf/
□関連記事
【6月19日】【EPF2003】ARMが3つの機能拡張を発表
http://pc.watch.impress.co.jp/docs/2003/0619/epf01.htm

(2003年6月19日)

[Reported by 大原雄介]


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp 個別にご回答することはいたしかねます。

Copyright (c) 2003 Impress Corporation All rights reserved.