Mr.M.P.Iのプロセッサ・レビュー ――続 Intel社のXScaleとの付き合いかた

M.P.I

tag: 組み込み 半導体

コラム 2002年6月27日

 米国Intel社のXScaleプロセッサ「PXA250」と「PXA210」が2002年2月中旬に発表になった.そこでXScaleを再度取り上げてみたい.今回は独特のクセのあるキャッシュ・メモリまわりの構成について検討する.

●一見普通の組み込みRISC,実はくせが強い

 XScaleは32Kバイトのコード・キャッシュ,32Kバイトのデータ・キャッシュ,2Kバイトのミニ・データ・キャッシュを内蔵している.データ・キャッシュの一部はオンチップRAM としても使える.一見組み込みRISCとして普通の構成に思えるが,細かいところはくせが強い.まずは独特のミニ・データ・キャッシュを見ると,ARMアーキテクチャのMMU(メモリ管理ユニット)の扱うデスクリプタを拡張し,新たにXビットと呼ぶビットを設けて対応している.新ビットの拡張定義で,特定ページについてミニ・データ・キャッシュを使用するようにしむけることができる.

 ビット定義はARMプロセッサを知らないとちょっとわかりにくい.ARMのMMUはRISCプロセッサには珍しく,単なるTLB(translation look-aside buffer)だけのソフトウェア管理MMUではない.ハードウェアでページ・テーブル・ウォークを行える,ある意味CISC的なものである.XScaleもARM v5TEのプロセッサであることには変わりないので,初期値はARMの定義に従っているのだが,デスクリプタの中でARMが使っていないビットを使って機能を拡張しているのだ.ARMプロセッサのMMUデスクリプタの中には,キャッシャブルか否か(C),バッファブルか否か(B)などの制御ビットが存在しており,もともとキャッシュ制御もMMUで行うようになっている.そのため,デスクリプタを拡張してミニ・キャッシュを制御するというのはわかりやすい.

 注意すべき点は,StrongARMの拡張定義とXScaleの拡張定義が異なるということだ.StrongARMのソフトウェアを移行するときは書き直さなければならない.XScaleはARM v5TEの定義と矛盾しないがStrongARMは違っている.XScaleの場合,デフォルトのXビット= 0の状態であれば,ARM v4Tアーキテクチャの720TのMMUの定義をそのまま持ってきても受け入れられるだろう.ただし,Xビット=1にしたとき,Xビット=0のときの全機能を使えるわけではないのでちょっとややこしい.なお,同じXビットを使ってBビットの意味を変えて,ライト・スルーやコピー・バック(正確に言えば,リード・ライト・アロケートのコピー・バック)も制御している.

●キャッシュ・システムはゴージャス

 キャッシュ・メモリはコードもデータも32ウェイ構成だ.普通の4ウェイ・セット・アソシアティブや,シンプルなダイレクト・マップの組み込みRISCプロセッサを見慣れた目には容量的にも豪華に見える.独特なのはリプレースメントのアルゴリズムで,4ウェイなどで一般的なLRU(least recently used)方式などではなく,ラウンド・ロビン方式だ.確かに32ウェイでLRUを実現するのはめんどうなのだが,一般的には4ウェイくらいでも十分であるように思う.当然32 ウェイのほうがヒット率は高そうだが,どの程度の差なのだろう? それに並列動作が多い分,電力消費的には不利な選択のはずだ.

 当然「キャッシュ破り」的なメモリ・アクセス・パターンは普通の4ウェイなどとは異なる.ラウンド・ロビン方式だと,ミスするたびにどんどん新たなエントリを作ってしまうから,たびたびアクセスしているエントリなのに作ったときが古かったため,キャッシュから追い出されるという状況も考えられる.ウェイ数が多いので,同じセットの中で新たなエントリを次々使っていっても,32回までは残っているはずではあるが....

●バス・ネックをキャッシュとバッファでカバーする思想

 またラウンド・ロビン方式は,もう一つの特徴をも生み出している.特定エントリの固定化(ロック)機構である.一定範囲以下についてはラウンド・ロビンのポインタを回らなくすることで,簡単にキャッシュを固定化できる.

 なおコードもデータも仮想アドレス・キャッシュである.確かに仮想アドレスのほうがより早い段階からキャッシュを動かすことができ,早くデータを返せるので,高速化には有利だ.反面,コヒーレンシを保つことが難しくなる.こちらの解決はRISC的で,ソフトウェアにまかされている.

 ダーティ・ビットは1ライン2ビットなど無用な書き戻しを防ぐくふうなどがある.なにせCPUの動作周波数は400MHz.これに対してSDRAMは50MHz~100MHz動作の16/32ビット・バスでつなぐような設計である.その上UMA(unified memory architecture)方式のオンチップLCDC(液晶コントローラ)を積んでいる.構成によってはバスがボトルネックになるのは明らかだ.このバス・バンド幅の不足をキャッシュ・メモリの各種特徴とバッファ類でカバーする,これがPXA250 の設計思想であろう.

(本コラムはDESIGN WAVE MAGAZINE 2002年5月号に掲載されました)


◆筆者プロフィール◆
M.P.I(ペンネーム).若いころ,米国系の半導体会社で8ビット,16ビットのプロセッサ設計に従事.ベンチャ企業に移って,コードはコンパチ,ハードは独自の32ビット互換プロセッサのアーキテクトに.米国,台湾の手先にもなったが,このごろは日本の半導体会社でRISCプロセッサ担当の中間管理職のオヤジ.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日