竹下世界塔の計算機よもやま話

アクセスカウンタ

zoom RSS ARMの64bitアーキテクチャARMv8

<<   作成日時 : 2011/10/29 08:24   >>

ブログ気持玉 0 / トラックバック 1 / コメント 0

 先日、ARMから64bitアーキテクチャの発表があった。どのような拡張がされたのだろうか。
ARM Discloses Technical Details Of The Next Version Of The ARM Architecture

現在、ARMv8アーキテクチャのドキュメントは公開されていないので、以下のスライドから推測する。
http://www.arm.com/files/downloads/ARMv8_Architecture.pdf(PDF)

 まず、おさらい。ARMは32bitのRISCアーキテクチャで、32bit幅の汎用レジスタを16本持つ。ゼロレジスタはない。ほとんどの命令実行について、条件付き実行ができる。ディレイドスロットはない。命令長を圧縮したThumb命令セットを持つ。割込みはバンク切り替えのレジスタセットを持つ。
ではスライドを読んでみる。
ARMv8の特徴:
・64bitアーキのAArch64と32bitのAArch32。AArch32は従来のARMv7と互換で、ARMv7で実装されたThumb-2TrustZoneを持つ。
・加えてCortex-A9で実装されたVFP v3、Advanced SIMD NEONを持つ。
・VFP v4はv3の拡張?
AArch64の特徴:
・倍精度のSIMDを実装。
・割込みモードを改訂し、モードとバンクレジスタを減らした。
・ARMv7と同じくTrustZone、Virtualizationをサポート。
・仮想アドレスは48bit、ページテーブルはARMv7のLPAEを元にしている。
・32bitの固定命令長、レジスタを指定する5bitのフィールドをきれいにデコードできるよう設計=従来の命令フォーマットとは違うということ。
・命令の意味づけは従来とほぼ同じ。
・31本の64bit長汎用レジスタ。ほとんどの命令で使えるゼロレジスタあり。(X0〜X30は汎用レジスタ)
・32本の浮動小数点/SIMDレジスタ。128bit長。(V0〜V31)
・汎用レジスタにバンクレジスタはなし。スタックポインタ、プログラムカウンタは汎用レジスタと重なっていない。
・ほとんどの命令で32/64bitの引数が使える。=従来のRISCと異なり、即値は後続の1/2命令長で与えるということ。
・条件付き実行がなくなり、条件を判断するのは分岐、比較、選択のみ。(選択はおそらくCMOV相当)
・AArch64とAArch32ではSIMD/FPのレジスタを共有
・AArch64では32本の128bitレジスタを持ち、Advanced SIMDは倍精度サポート、IEEE754フル実装に加えてIEEE754-2008の一部をサポート。
・命令レベルで暗号化をサポート。(命令列そのものの暗号化?)
・AES/SHA-1/SHA-2サポート。
・割込みレベルは4段、EL0〜EL3。SPスタックポインタ、ELR例外リンクレジスタ、SPSRステータスレジスタがバンクレジスタとして存在する。
・EL0=ユーザアプリケーション、EL1=ゲストOS、EL2=VMM、EL3=TrustZone
・AArch64のページサイズは4KBまたは64KB。
・AArch64とAArch32の切り替えは割込み発生/リターン時のみ、ジャンプ命令等ではない。AArch32とAArch64のコードの混在は許さないということ。
・AArch64のOSからAArch32のアプリ実行可能。
・AArch64のハイパーバイザからAArch32のゲストOSを実行可能。
・C++11/C1xに合わせたメモリモデル ※この辺はわからない。C++知らないので
・AArch64からサポートされるload-acquire/store-releaseというのはメモリバリアの話?
RCsc modelから推測するとAArch64よりマルチプロセッササポートのための機能を追加したということらしい。従来のARMは組み込み向けシングルプロセッサだったためこのような機能は不要だった。
☆リセット後はどちらのアーキテクチャから開始するのか明記されていない。多分AArch64。

 これらを見ると、従来のARM(AArch32)とAArch64はレジスタを共有している程度で命令フォーマットも違う別物。しかし64bitアーキを新規に起こしたことでAlpha並にスッキリしたものになるのではなかろうか。
MIPS R4000やSPARC V9の32bit→64bit拡張は互換性重視で命令フォーマットは変わっていない。これはレジスタ数が変わらずサイズの拡張だけで済むからだ。
ARMの場合はもともと16本の汎用レジスタしかなかった。64bit拡張の話を聞いた時はx86並の可変長命令を使った無理なフォーマットになるだろうと思っていた。条件付き実行で3bitも使っているので大変だろうと思っていたが、それを捨てて32本の汎用レジスタにし、後方互換性はハイパーバイザ/OSの管理下にすることにより独立した2個のプロセッサが同居するような構成にした。
これは将来、AArch32を完全に切り離すこともできる。これは他のプロセッサの拡張の問題点、特にx86を研究したのだろう。
命令セットアーキテクチャが整理されていれば実装も無理がなくなり、消費電力は減り、性能は上げやすくなる。扱えるメモリ空間も増えたことでサーバ向けに打って出る、ということだろうか。

とりあえず今読み解けるのはこれだけ。アーキテクチャマニュアルが公開されるのが楽しみだ。
※勘違いが多数あるかもしれませんのでご注意ください。

追記:Thanks:@takehiro_t
・VFPv4はCortex-A15(ARMv7-A)に採用 Cortex-A15プロセッサ
 ARMの浮動小数点について浮動小数点
Cortex-A5 NEON Media Processing Engine Technical Reference Manual
・ARMのマルチプロセッサ対応、キャッシュコヒーレンシとCAS命令あった
ARMv7のマルチプロセッサ拡張(PCwatch)
ARM11 MPCoreプロセッサ(PDF)

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(1件)

タイトル (本文) ブログ名/日時
ARMの64ビット命令セットアーキテクチャ
...続きを見る
uarchs jimdo page!
2011/11/02 23:14

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




ARMの64bitアーキテクチャARMv8 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる