FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Imagination TechnologiesがMIPSのハイエンドコアプロセッサP6600を発表

imgtec.com

Imagination Technologies の最新MIPS CPUコアとして64ビットのP6600、M6200、M6250が発表された。最上位のP6600は64ビットCPUコアであり、アーキテクチャリリースバージョンはついにRelease-6のコアとなった。 という訳で、これでImaginationは過去の古いMIPSアーキテクチャと縁を切り、新しいよりハイエンドに最適化されたアーキテクチャにより出発できるようになった訳だ。

どうでも良いがご存知の通りMIPSはMシリース、Iシリーズ、Pシリーズと「MIP」まではできているのだがSシリーズはどこよ。。。ARMはちゃんとAシリーズ、Rシリーズ、Mシリーズになっているのに。。。

このブログでも何度も言及しているように、Release-6アーキテクチャは過去のMIPSアーキテクチャと互換性が無く、過去のプログラムをそのままのバイナリで実行することはできない。 これは、スーパスカラ実行において邪魔になるようなトラップ命令、余分なレジスタ(HI/LOレジスタなど)を切り捨て、よりスーパスカラの並列実行管理をやり易くしている。 アーキテクチャ仕様書を見ると分かるが、もはやこれは別物だ。大学で教えられている、過去のMIPSは死んだ(おおげさ)。

以下は最上位コアP6600の内部パイプラインの資料。Imaginationのウェブサイトより抜粋。

http://imgtec.com/wp-content/uploads/2015/11/p6600-block-diagram.jpg

128ビットのSIMD命令が搭載されているが、これ自体は別に目新しいものではなく、リリース5からあったものだと思う。しかも2011年くらいからMSAとしてアーキテクチャは公開されていなかったかな? かなり調査したことあるが、本当に「普通のSIMDアーキテクチャ」だったことを覚えている。ARMのNEON命令もかなり順当な命令しか持っていないが、それに匹敵するくらいの普通のSIMDアーキテクチャだ。 Intelのような、長いSIMDの発展の歴史が無い分、あまり細かな、凝った命令は存在しないように思える。

以下アーキテクチャ、特に一般的な命令の部分のみ取り出した感想。

  • Load/Store bonding for optimum data movement performance これはロードストアのマージ処理かな?

  • Sophisticated branch prediction for maximizing utilization and performance on deeply pipelined CPU これはCompact Branchのことだと思われる。Compact Branchとはリリース6で新規に追加された命令のことで「遅延スロットを持たない分岐命令」のことだ。 ちなみに、これに伴いLikely Branchと呼ばれる、分岐が成立したときのみ遅延スロットが有効になり、それ以外のときは遅延スロットが無効になる命令は「削除」された。 このLikely Branchが非常にやっかいで、Delayedスロットをフラッシュするかどうかを分岐結果によってい依存しなければならなくなり、結果フラッシュの論理が非常に複雑になるという弱点がある。 (これは自作MIPS CPUを最適化する作業をしているときに死ぬほど嫌な思いをした) 一方で、通常のBranch命令は残っていることから、結局分岐スロットをリリース6では全廃できずにいる。だがこれも無くなっていく運命だろうか? →みんな、古きMIPSは死んだぞ!(いいことだと思う)

  • SIMD命令 128ビットサポート、浮動小数点では16ビットの半精度までサポート。アーキテクチャ仕様書を見たが半精度で演算もできる。 ちなみに、「Runs at full speed with CPU core」完全にCPUのパイプラインとは別物として実装してあると思われ。まあパイプラインに密結合してるだろうけど。

これでCoremark/MHzのスコアが5を越えてえいるんだなあ。すげえ。