ArmがCortex-A76をリリース – 同社初の64ビット専用CPUコア(カーネルモード)

Table of Contents

ArmがCortex-A76をリリース – 同社初の64ビット専用CPUコア(カーネルモード)

Armの最新のハイエンドプロセッサコア設計である、本日発表されたCortex-A76は、開発者によれば、64ビットのカーネルレベルコードのみを実行する初のCPUだという。

このプロセッサは、32ビットA32およびT32命令セット、そして64ビットA64を使用するアプリケーションを引き続きサポートします。つまり、アプリやその他のプログラムはこのCPU上で通常通り動作します。非特権レベル(具体的にはEL0)のコードは、このプロセッサ設計において期待通りに動作します。

しかし、EL1 と EL2 のデバイスのオペレーティング システム カーネル、ドライバー、ハイパーバイザーなどの特権層に降りると、Cortex-A76 は 64 ビット コードのみをサポートすると言われています。

この最新のCortex-Aファミリー向けに構築されたLinux、Android、Windows、その他のOSは、この64ビット専用領域で動作するように準備中、あるいは既に準備が整っています。Cortex-AはArmからチップメーカーにライセンス供与されており、世界のほとんどのスマートフォンとタブレットに搭載されています。Cortex-A76は、来年の今頃にはハイエンドスマートフォンやバッテリー駆動のノートパソコンに搭載される予定です。

この動きは、Armが長年使い古された32ビット命令セットから徐々に脱却していく姿勢の一環です。特権モードで64ビットA64のみをサポートすることで、CPUの設計が簡素化され、チップダイ上のスペースを他の機能に割り当てたり、消費電力を削減したりすることが可能になります。

Armの技術担当副社長ピーター・グリーンハル氏はThe Registerに対し、アプリとOSの両方で完全に64ビットのみに移行するのは「当然の次のステップ」だが、これには「もう少し時間がかかるだろう」と強調した。

「いずれはそうするつもりだ」と彼は付け加えた。「それは多くの人を移動させることを意味する」

Arm 互換チップ上で 32 ビット モードで実行されるソフトウェア、特に組み込み電子機器を制御するプログラムは数多く存在し、製品エンジニアはソース コードにアクセスできなくなる可能性があります。そのため、Arm は 32 ビットの A32 命令セットを今後も長期間維持することになります。

グリーンハル氏は、スマートフォンやその他のデバイスで、Cortex-A76やA75などの強力なパフォーマンスコアと組み合わせられるA53などの小型Cortex-Aコアは、おそらくA32をサポートし続けるだろうと述べた。

アプリは安全です。しかし、開発者、特にカーネルレベルのコーディングを行う開発者は、Armの方向性を認識する必要があります。例えば、GoogleはAndroidアプリ開発者に対し、ソフトウェアの64ビットビルドを提供するよう促しています。Armアーキテクチャライセンスを持つ企業も、CaviumとそのThunderX2のように、64ビットのみのA64アプローチを採用しています。

文化の変化

実のところ、32ビットコードのサポートを削除することは、CPUの複雑さを軽減するだけでなく、64ビットArmv8-A(別名A64)命令セット、つまり古典的な合理化されたRISC ISAだけを残すことにもつながります。また、今日のArm社員を、同社の過去、つまりArmがかつてAppleに対抗する英国の企業であったAcorn傘下だった1980年代後半から1990年代初頭の時代から解放することにもつながります。

AcornはRISCの原理をベースに独自の工夫を加えた独自のプロセッサをゼロから設計することを決意し、ARM1、そしてARM2を開発しました。その後、CPUチームはスピンオフして上場企業Armを設立し、Apple Newtonに搭載されたARM6からDigitalのStrongARM、そして今日のコアファミリーに至るまで、素晴らしい成果を上げ続けました。Acornはその後長くは存続せず、1998年に消滅しましたが、少なくともその一部は、現在ソフトバンクが所有するArmという形で生き続けています。

レガシー32ビットISAには、CPUエンジニアにとっては実装が面倒な機能が多くありますが、プログラマにとっては喜ばしい機能です。例えば、このアーキテクチャでは多くの命令に条件付き実行が適用されます。これらの命令はステータスフラグをチェックし、フラグがセットされているかどうかに応じてスキップすることができます。例えば、以下のA32 Armコードは、ユークリッドの最大公約数を4つの命令で実行します。

gcd CMP r0, r1 SUBGT r0, r0, r1 SUBLT r1, r1, r0 BNE gcd

最初の減算(SUBGT)は、r0の値がr1より大きい場合に実行され、そうでない場合はスキップされます。次の減算(SUBLT)は、r0がr1より小さい場合に実行されます。そうでない場合は同様に無視されます。一方、A64では、他のアーキテクチャと同様に、条件チェックを分岐命令とループ命令のみに適用します。

次に、1 つの命令で一度に複数のレジスタをロードおよび保存する方法があります。

LDMIA r13、{r3-r7、pc}

...これはスタックからr3をr7に復元し、ジャンプ先のリターンポインタをプログラムカウンタに格納します。簡単で素晴らしいのですが、ハードウェアで展開するのは面倒です。これらの機能は、高度に調整されたアセンブリコードを作成したり、コンパイラを作成したりする人にとっては非常に便利ですが、問題は、最近はそうする人がほとんど残っていないことです。また、これらの機能は、投機的実行、分岐予測、高度なプリフェッチなどの最新技術の邪魔になります。

Armの上級スタッフと話をしたところ、この拙いハッカーは2010年代のArmがこの重荷から解放されたいと考えているという印象を受けました。1990年代のArmが初期の名残である26ビットモードをあっさりと捨て去ったように、奇抜な32ビットモードを一新し、白紙の状態に戻そうとしているのです。確かに、Armはステータスフラグをプログラムカウンタの上位ビットに格納し、26ビットを命令フェッチに割り当てていました。しかし、そんな時代も過ぎ去りました。

また、A64 は「本物の」 Arm ではないと信じている Arm 純粋主義者や元エンジニア数名にとっても打撃となるでしょう。

新機能

では、この小さな変更以外に、Armv8.2-A Cortex-A76の裏側には何があるのでしょうか?理想的には、複数のCortex-A55コアと組み合わせ、12nm、7nm、5nmプロセスが利用可能になった時点で、それらを用いて製造されるシステムオンチップ(SoC)を構成することになります。10nmプロセスはスキップされます。Armのスタッフによると、A76コア1つあたりのサイズは、同等のIntel Skylakeコアの約4分の1になる予定です。

いつものように、Arm は A76 が以前の Cortex-A よりも高速で電力効率が高いと主張しましたが、正直なところ、どの程度高速になるかはワークロードと、SoC でどのように実装され相互接続されるかによって決まるため、実際に動作するシリコンがテストされるまで待つのが最善でしょう。

ちなみに、Arm は、シミュレーター内ではあるものの、混合整数および浮動小数点演算ベンチマークを実行した場合、3GHz 7nm A76 シングル コアは、Qualcomm の Snapdragon 845 に搭載されている 2.8GHz 10nm Cortex-A75 よりも最大 35% 高速であると見積もっています。

各A76には128KBのL1キャッシュ(4サイクルのロード・ユースレイテンシを持つ64KBの4ウェイ命令キャッシュ、64KBはデータ用)、256KBまたは512KBの1280エントリ5ウェイL2キャッシュが搭載され、最大4MBのL3キャッシュを共有します。その中身をご紹介します…

Arm Cortex-A76コアの内部

クリックして拡大... 出典: Arm

フロントエンドには、新しく興味深いメカニズムが採用されています。分岐予測器は1サイクルあたり32バイトをメモリからフェッチし、1サイクルあたり16バイトを消費する命令フェッチャーよりも先に実行されます。この2つの動作は独立しています。これにより、分岐予測器は実際の実行時間よりもずっと前に、実行されると予測されるコードをコアのキャッシュに準備し、コアが有効な処理を実行できないパイプラインのバブルを最小限に抑えることができます。全体として、この分割方式により、A76は前世代機よりも優れた性能を発揮しています。

Armは投機的実行に全力を注いでいる。同社はこれに全財産を賭けている。そして、投機的実行は消え去ることはない。投機的実行なしではArmのプロセッサは機能不全に陥るだろう。しかし、このアプローチはIntelやAMDなどの他の企業と同様に、Armの製品にもSpectre脆弱性をもたらしている。これらの脆弱性を悪用すれば、マルウェアがサイドチャネル攻撃によってメモリから機密情報を取得する可能性がある。

A76の設計者は、A76および将来のCPUの設計図において、これらのセキュリティ上の欠陥をどのように軽減するのかについて、具体的な内容を明かすことを躊躇していました。基本的に、コアはコード実行のコンテキストにこれまで以上に注意を払い、ソフトウェアがサイドチャネル攻撃によって他のプログラムを覗き見するのを防ぐとのことです。

オペレーティングシステムによって各アプリケーションまたはプロセスに割り当てられるアドレス空間識別子は、投機的アクセス時に比較されます。これにより、あるアプリがキャッシュにアクセスする方法からその内容を漏洩することが防止されます。Armはコアがマルチスレッド化されていないため、Spectreに対する防御が容易です。コア内には、最初のスレッドをスヌープできる2番目のハードウェアスレッドが存在しないからです。

既に公開されているCPUの設計図については、Cortex-A72、A73、A75の設計はSpectreバリアント2の攻撃を阻止するために調整され、A75はMeltdown型の不正アクセスを阻止するために再調整される予定だと聞いています。さらに、もちろんソフトウェアレベルの緩和策も適用可能です。

パイプラインのデコードから実行までのステージは次のように分類されます。

Arm Cortex-A76コアの内部

Arm Cortex-A76コアの内部

Arm Cortex-A76コアの内部

各コアには、分岐予測器内に 6,000 エントリの分岐ターゲット バッファと、48 エントリの完全連想 L1 命令変換ルックアサイド バッファがあり、最大 68 個のロード命令と 72 個のストア命令を同時に処理でき、最大 20 個の未解決の非プリフェッチ ミスがあります。

Arm Cortex-A76コアの内部

全体として、ハードウェアの性能をほんの少しだけ、あちらでもほんの少しだけ引き出すために、アーキテクチャには何百もの微調整が加えられ、それらが積み重なって全体的な性能向上につながっています。エンジニアたちは、無駄なサイクルをなくし、権限レベルの変更を高速化してコンテキストスイッチを高速化し、分岐レイテンシを削減して帯域幅を拡大するために、最大100パイプラインステージに及ぶ命令を段階的に実行してきました。

A76 を採用したチップとデバイス (高級スマートフォンやネットブックなど) は、年末までに生産が開始され、2019 年第 1 四半期までに発売される予定です。システム オン チップ (SoC) メーカーはすでにこの設計にアクセスでき、テスト用のシリコンも手元にあると聞いています。

そして最後に

一方、Armは本日、A76コンピューティングプロセッサと並んで、Mali G76プレミアムグラフィックプロセッサ設計とV76ビデオラングラーを発表しました。G76は、前世代機よりも高速で消費電力が少ないと言われています。G72の2倍の実行レーン数を備え、3クロックサイクルごとに8つの32ビット浮動小数点ベクトル演算を実行します。また、機械学習に役立つ8ビット整数ドット積推論機能も備えています。

G76は、処理エンジンあたり8レーン、コアあたり3エンジン、GPUあたり20コア、合計480レーンを備えており、G72の384レーンに対して、コストパフォーマンスに優れています。Armによると、テクスチャマッパーのスループットもG72の2倍です。

V76は8Kビデオを60フレーム/秒でデコードでき、必要に応じて1080pで4×4画面、または2160pで2×2画面のビデオウォールを60fpsで生成できるとのことです。スマートテレビだけでなく、タブレットやその他の携帯型ガジェットにも使えると考えてください。HEVC、VP9、VP8、H.264、AVS+などのフォーマットをデコードできます。®

Discover More