検索
連載

シーメンス時代に開発された「TriCore」 今は車載MCUで息づくマイクロプロセッサ懐古録(19)(1/4 ページ)

今回はInfineon Technologiesが手掛ける「TriCore(トライコア)」を紹介する。十分、現役なのだが、登場して30年以上が経過しているので、“懐古録”として取り上げられるほど長い歴史を持つプロセッサだ。

Share
Tweet
LINE
Hatena

⇒「マイクロプロセッサ懐古録」連載バックナンバー一覧

MCU+MPU+DSPで「TriCore」

 TriCore(トライコア)はまだ現役のプロセッサなので“懐古録”で取り扱うのもどうかという話は、なくもないのだが、最初のアナウンスが1997年だった事を考えると既に30年が経過している訳で、題材としては悪くないかと思う。

 TriCoreはInfineon Technologies(以下、Infineon)というか、Infineonに半導体部門を分社化する前のSiemensの時代に開発されたアーキテクチャである。TriCoreの名前の由来は、一つのコアにMCU(Realtime Control)とMPU(Application Processing)、それとDSP(Data Processing)の3つの特徴を詰め込んだ事に由来する(図1)。


図1:SiemensのTriCore μC-DSP Architecture Manual(1997年)より。ここではMPUではなくRISCという言い方をしているが、実のところこの世代ではあまりMPU的な性能は高くなく、MCU+DSPという方が実情に近い[クリックで拡大]

 これだとやや抽象的過ぎるが、もう少しBreakdownしたのが図2である。DSP+MCUというコンセプトは、例えばTriCoreのもうちょっと後に出たADI(Analog Devices)のBlackFinとかに通じるものがある訳だが、DSPに関して言えばDual MACに加えて実行制御用にDSP Address ModeやZero Overhead loopといった、DSPをDSPたらしめる特徴を持っているのが分かる。


図2:2002年11月の"Technical Presentation:TriCore 32bit Unified Processor"より。"Shallow"とはいえ、4-stageのPipelineと2-cycleのContext Switchingは普通に考えると整合しないのだが[クリックで拡大]

 その一方でMCUとしては、16/32bitの命令セットというのはArmのThumbとかMIPS16eなどを連想させるし、Fast Interrupt responseなどはRealtime制御向けといった感じだ。Fast context switchもそうで、アプリケーションからISRへの遷移、あるいはISRからの復帰などの高速化はやはりRealtime向けという感じだ。ただこの時点でDSPとの両立がだんだん難しくなってくる気がするのだが、これにさらに輪を掛けているのがRISC Processorとしての特徴である。初代のTriCore(TriCore 1)は、Realtime性能はともかく(Context Switchingが最短2cycle)演算性能の方は、あまり高くない(公称1.5 MIPS/MHz)。とはいえRTOSを動かしたり、DSPやMCUに対してのデータ制御などを行うには十分、というあたりかと思われる。またDSP性能に関しては、例えばFIR Filterは 2taps/cycleとなっており、いわゆる一般的な演算では無くDSP的な処理に全振りしている感じだ。

TriCoreの内部構造

 そんなTriCoreの内部構造がこちら(図3)。3命令のSuperscalarというのは定義としては間違っていないが、RISC部に関して言えばALUとLoad/Storeを分離したという、割と穏当な構成である。先ほどShallow 4-stage pipelineという表現があったが、通常のALU命令は3-stageで、DSP処理でMACを動かすときのみ4-stageとなる格好だ。DSP性能を引き出すためにはこの程度の構成が必要というのは納得できる。


図3:まぁ既存のDSPのパイプラインにむりやりSMTをブッ込んだImaginationのMETAプロセッサより、スマートではある[クリックで拡大]

 問題はそれと並行するLoop Pipelineである。これはFetchから命令を取り込んで処理するのではなく、LCB(Loop Control Block)がLoop制御を行うという、ちょっと複雑な構成になっている。先にDSPの特徴としてZero Overhead Loopが挙げられていたが、こうしたループ処理の実行制御そのものはLoop Pipelineが行う形になる。図4はDSPを利用した場合の処理の流れをまとめたものであるが、要するにDSP処理を行う時だけ専用の実行制御が動く形でDSP性能をフルに発揮し、それが終わったら通常のRISCプロセッサの処理に移るという形になる訳だ。Context Switchingの2-cycleというのは、多分この通常のPipelineとLoop Pipelineの切り替えを指していると思われる。


図4:下の表を見ると分かるが、ループに入ると実行制御がFetchから始まる通常パスではなく、LCBによって管理されるLoop Pipelineで制御される形に切り替わる。この制御下ではMACユニット(Arithmetic)とLoad/Storeユニットが同時に動くので2命令/cycleというわけだ[クリックで拡大]

 ところでSiemens、当初このコアはチップとしてだけでなくIPとして提供する事もある程度想定していたらしい。図3のスライドの冒頭に"Licensable Core"と記されているのがその証拠であり、VHDLとVerilogのどちらでも提供できると説明されていた。これに向けて、「OLP(Open Licensing Program)」(図5)なるものも立ち上げようとしていた(本当に立ち上がったのかどうかは判断できない)。


図5:Web Archiveを見てもこのページが一切見つからないあたり、本当にこのプログラムが立ち上がったのかどうか既に判断できない[クリックで拡大]

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る