e200のアップデート

さて、次に実際のプロセッサコアについて見てみよう。昨年のレポートでも述べた通り、現在のFreescaleは6種類のPower PCコアを持っている。このうちPowerPC ClassicベースのものがMPC500/e300/e600、Power ISA 2.03ベースのものがe200/e500/e700となっている。ただe700に関しては、依然として製品がリリースされておらず、そういう意味ではハイエンド品がe600という位置付けになっている。

このうちMPC500/e300/e600コアに関しては、そもそもPowerPC Classicベースということもあってか、コアの内部改良といったことは行われていない。あくまでプロセッサコアのポートフォリオとして活用されるだけである。ただ意外なのは、Freescaleとしては早いタイミングでこれらPowerPC ClassicベースのプロセッサをPowerISAベースのものに置き換えるつもりがないということだ。これは、今年のMPF(MicroProcessr Forum)でe300コアを搭載したMPC5121eを発表したことでも明らかである。クライアントが要望すれば、引き続きこうした古いコアを提供する予定があるというのは、組み込み分野のマーケットでは重要なことである。

それはそれとして、e200/e500についてはもう少し細かなこと分かってきた。まずe200であるが、昨年の発表ではe200z6については内部構造などが明らかにされていたが、このz6はハイエンド品である。そもそもe200の場合、z0/z1/z3/z6の4つがあり、動作周波数も80MHz~475MHzまで広いレンジにまたがっている(図4)。この4つのコアの違いをまとめたものが図5になる。

図4 e200コアを利用するMPC55xxシリーズは、現時点で8製品ほどある。MPC5510がz1、MPC5534がz3、MPC5553/5554/5561/5565/5566/5567がz6コアをそれぞれ利用する

図5 z0については、Power ISA 2.03ながら「VLE only」という表記で分かる通り、事実上は16ビットコアということになる。このあたりはCortex-M3/R4といった、メインターゲットを16ビット縮小命令に置いたマイコンと同じところを狙っていると考えられる

実はパイプラインが7ステージなのはz6のみで、z0/z1/z3はたったの4ステージでしかない。どうしてこんなに差があるかというヒントは、完全に論理合成可能な形で提供されるという点にある。e200はソフトコアプロセッサとして提供されるため、端的にいえばファウンダリを選ばない。逆に言えば、どんなファウンダリの90nmプロセスでも300MHzを実現できるようにしようとすると、4ステージのパイプラインではタイミングがきつ過ぎると理解するのが正しいのだろう。それぞれのステージだが、z0/z1/z3は図6、z6は図7のようになっている。

図6 これはあくまでもメモリアクセスの場合の動作だから、一般的に書けば(1)Fetch、(2)Decode、(3)Execute、(4)Writebackという、教科書の例題に出てきそうな構造になっている。キャッシュレス、つまりメモリからデコードを前提にしているから、動作速度はメモリアクセスより高速にはなり得ない。そのため逆に各ステージとも1サイクルで実施できるということだろう

図7 e200z6ではキャッシュを使うこともあり、もう少しパイプラインを細分化する余地が生まれる。動作速度がメモリより高速だから、こうした細分化は必須だろう

ちなみにこの4つのコアの違いは、図5に示したものだけではない。z0/z1/z3はキャッシュレスになっている関係で、プロセッサバスの構造もやや異なっている。そもそもe200シリーズはプロセッサバスにAMBA 2.0のAHBをちょっと変更して使っているが(図8)、そのバス幅や転送方式も異なっている上、z0/z1/z3はキャッシュを持たない関係で命令バスとデータバスが分離されるという、あまり見ない構図になっていることが分かる(図9)。

図8 e300/500/600はもっと高速な専用バスを利用できることになっている

図9 命令とデータを分離するハーバードインタフェースというのはあまり類を見ない。z1コアを使うMPC5510のブロック図を見ると、プログラム用に最大1Mバイトのフラッシュメモリ、データ用に64kバイトのSRAMが用意されるので、これを別々にプロセッサに接続しているということなのかもしれない