2009年07月29日
Tightly Coupled Memories (TCM)
PARTNER(ARM) のマニュアルを編集していた際、mmu コマンドに /T というオプションを見つけました。マニュアルの説明を読んでもよくわからなかったので先輩に聞いてみたところ、これは TCM (Tightly Coupled Memories) という、ARM コアの内部に存在する超高速メモリ (SRAM) を操作するためのオプションなのだそうです。
TCM は、要するに、ユーザが読み書きできるキャッシュメモリのようなものなのだそうです。容量は小さい (10 数 KB ほど) のですが、DRAM の初期化が済んでない状況でも使えるので、開発の初期段階でちょっとデバッガや簡単なプログラムを動かしてみたい時などに重宝するそうです。また、OS などのシステムソフトウェアの高速化の際にも有用です。(こちらの方が一般的な用途。)
TCM は全ての ARM コアに存在するわけではなく、オプション的に実装されるものなのだそうです。あまりアプリケーションプログラマは恩恵を受けられない機能ですし、SRAM は回路が大きくて実装コストが高いため、実装されないケースも多そうです。特殊な用途の TCM よりも、同じ SRAM を実装するならば、より大きなキャッシュを実装してくれた方がうれしい技術者が多いと思います。
しかし、CPU が速くなれば、相対的にメモリアクセスがボトルネックになりますから、シリコンが余ってきた状況ではおいしい場面も出てくるかもしれません。組み込みの世界では、必ずしも絶対性能は重要ではなく、過去のソフトウェア資産やコストパフォーマンスが重要視されます。ARM 9 ファミリーなどの少し古い v5 アーキテクチャもまだまだ現役です。プロセッサの加工技術が向上すれば、同じアーキテクチャを実装したとしても、シリコンの面積が小さくて済むので、どんどんシリコンが余ります。そのため回路の 1 チップ化 (SoC) を進めたり、コアの数を増やしたりしているようなのですが、TCM のような SRAM もどんどん大きくなっていくのかもしれません。
また、iPhone や Android などが普及し、LLVM などの動的最適化技術 (JIT をより一般的にしたような技術)が進歩すれば、プログラマが意識しなくても、勝手に TCM を使って高速化してくれたりとかいう未来が来るかもしれません。
TCM は、要するに、ユーザが読み書きできるキャッシュメモリのようなものなのだそうです。容量は小さい (10 数 KB ほど) のですが、DRAM の初期化が済んでない状況でも使えるので、開発の初期段階でちょっとデバッガや簡単なプログラムを動かしてみたい時などに重宝するそうです。また、OS などのシステムソフトウェアの高速化の際にも有用です。(こちらの方が一般的な用途。)
TCM は全ての ARM コアに存在するわけではなく、オプション的に実装されるものなのだそうです。あまりアプリケーションプログラマは恩恵を受けられない機能ですし、SRAM は回路が大きくて実装コストが高いため、実装されないケースも多そうです。特殊な用途の TCM よりも、同じ SRAM を実装するならば、より大きなキャッシュを実装してくれた方がうれしい技術者が多いと思います。
しかし、CPU が速くなれば、相対的にメモリアクセスがボトルネックになりますから、シリコンが余ってきた状況ではおいしい場面も出てくるかもしれません。組み込みの世界では、必ずしも絶対性能は重要ではなく、過去のソフトウェア資産やコストパフォーマンスが重要視されます。ARM 9 ファミリーなどの少し古い v5 アーキテクチャもまだまだ現役です。プロセッサの加工技術が向上すれば、同じアーキテクチャを実装したとしても、シリコンの面積が小さくて済むので、どんどんシリコンが余ります。そのため回路の 1 チップ化 (SoC) を進めたり、コアの数を増やしたりしているようなのですが、TCM のような SRAM もどんどん大きくなっていくのかもしれません。
また、iPhone や Android などが普及し、LLVM などの動的最適化技術 (JIT をより一般的にしたような技術)が進歩すれば、プログラマが意識しなくても、勝手に TCM を使って高速化してくれたりとかいう未来が来るかもしれません。