このページの本文へ

前へ 1 2 次へ

Windows Info 第293回

Windows 11ではARM版も改良が進んだ

2021年09月19日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 Windows 11にはARM版もある。Windows 10のとき最初は騒がれたが、そのあとARMの人以外で実際に使っている様子を実は見たことがない。とはいえ仕事なので、Surface Pro Xを購入した。このマシンにもWindows Insider ProgramのBeta Channelでプレビュー版がやってきた。ARM版のWindows 11は強化されており、Windows 10のときにはプレビュー版でしか提供されていなかったx64コードのバイナリ変換機能が搭載されている。今回は、このあたりを含めて、ARM版Windows 11の状況について解説しておこう。

Windows 11はARMプロセッサもサポートしている

ARMプロセッサについてあらためて整理

 話が少しややこしいので、最初にちょっと用語を整理させていただく。まずはARMプロセッサについてである。インテルやAMDのCPUは、「世代」と「マイクロアーキテクチャ」名で区別されるが、ARMプロセッサでは、アーキテクチャにバージョン番号がついている。とはいえ、番号が整理されたのは、ARMv7から。PC関連ではこれ以降のアーキテクチャだけ考えればいい。なお、かつてインテルがDECから“譲り受け”て、うまく行かずに売り払ったXscaleはARMv5世代である。Androidも最初はこの世代をサポートしていたが、現在では、ARMv7以降のみが対象となっている。

 簡単に言えば、ARMv7が32bitアーキテクチャで、ARMv8が64bitアーキテクチャである。現在では、ARMv9というアーキテクチャもあるが、これはARMv8-Aを強化したものと考えればよく、少なくともWindows 10、Windows 11のレベルでは両者の違いは問題にならない。

 なお、ARMv8にはARMv7の命令セットや実行環境が含まれていて、これをAArch32と呼んでいる。

 この32bit命令セットをA32命令セットと言う。なお、ARMv7の時代には、AArch32やA32命令セットという呼び方はなく、ARMアーキテクチャなどと呼ばれていた。ARMv8で64bit環境が出てきたとき、ARMv7とは異なるA64命令セットを導入し、レジスタなどを追加してAArch64として定義した。この際にARMv7までの32bit実行環境をAArch32と呼ぶことにした。このため、ARMv7のオリジナルの定義は、AArch32とは呼ばれていなかったのだが、話が面倒になるので、ARMv7に対してもAArch32やA32といった呼び方を使う。

 ARMv8は、AArch32/A32とAArch64/A64の両方に対応している。これは、AMDやインテルのCPUが32bitモードと64bitモードの両方を持っているのと同じである。ここで明確にしたいのは、A32とA64という異なる命令セットを持っている点である。一般に1つのCPUが異なる命令セットを持っている場合、プログラムはどちらかの命令セットを使って作ることになる。プログラムの途中でモードを切り替えることは、ハードウェアとして不可能ではないが、モードの切り替えは特権命令であったり、実行環境の設定などが必要なことが多く、1つのプログラムの中で勝手にモードを切り替えるようなことはOSが許さないのが普通である。なので、一般にアプリケーションはどれか1つの命令セットだけで作られる。

 OSはAPIを呼び出す手順などの基本的なルールを決めている。これをABI(Application Binary Interface)という。ハードウェア上、プログラムはさまざまな構造を持つことができるが、アプリケーションプログラムは、OSの提供するAPIを使わないと、ファイルも読めなければ、画面に何かを表示することもできない。

 ABIには、API呼び出し時のルール(Calling Conventionと呼ばれる)やデータやプログラムをメモリに置くときの境界合わせ(アライメントという)やAPI呼び出し時のスタックの使い方などが定められている。たとえば、高速化のためにレジスタを使って引数を渡すときにどのレジスタに置くか、スタックには何を入れておくかといったルールが定めれている。そのほか、一部の汎用レジスタに固有の役割を持たせる、保存しておく必要があるレジスタなど、さまざまなルールがある。

 ただし、このABIに関しては、CやC++などの高級言語でアプリケーションを記述する場合には、コンパイラが処理してくれるため、開発者があまり心配する必要はない。しかし、アセンブラでプログラムを記述する場合、開発者はABIに準拠してプログラムを書かねばならない。

 ARM版Windows 10用にMicrosoftが定義したABIは、ARM64 ABIと呼ばれている。これはWindows固有のABIである。ARMプロセッサでは、Linuxなども動作するし、AndroidやChromebookなどもARMプロセッサを使う。しかし、ABIはMicrosoftのARM64 ABIとは異なっている。ただし、ARM64 ABIはARM社が定義したABIをベースに作られた。

 これに対して、従来のAMDやインテルCPU用に定義したABIもある。これらは、x86 ABIやx64 ABIと呼ばれている。ARM64 ABIは、同じ64bit用のx64 ABIとCalling Conventionやアライメントのアルゴリズム、スタック利用方法で異なる部分がある。多くの場合ABIは、それぞれのCPUに最適化して作るため、アーキテクチャが異なれば違うものになるのが普通である。

Windowsとコードタイプ

 一般にアプリケーションプログラムは、このABIに準拠して、特定のCPUのアーキテクチャの命令セットを使って作られる。ここではこれを「コードタイプ」と呼ぶことにする。Windowsのコードタイプには、以下の表のようなものがある。

 64bit版Windowsは、x86コードとx64コードの実行が可能だ。これに対してARM版Windows 10は、従来のx86コードを「バイナリ変換」により、A64命令セットに変換して実行することが可能だが、もちろんARM64コードの実行もできる。

 Microsoftのドキュメントによれば、ARM版Windows 10は、ARM64で作られているという。しかし、x86/x64コードは、ARM64とは違うABIを持つ。ということは、アライメントやCalling Convention、スタックの使い方が違っていることになる。x86/x64コードをバイナリ変換でA64命令セットのプログラムに変換できたとしても、ABIまでは変換できない。どういうアルゴリズムやコードでABI対応させているかが不明だからだ。これを変換するのには、プログラムの「意味」を知る必要がある。

 しかし、変換されたx86/x64コードは、APIを呼び出した瞬間には、スタックやアライメントなどがx86/x64 ABIに準拠した状態になっているはずなので、これを機械的にARM64に変換することは可能だ。ソフトウェアでは、こうした変換をする小さなプログラムを「スタブ」と呼ぶことがある。おそらく、ARM版WindowsではAPIに入る前にスタブが置かれ、ここでARM64 ABIに準拠させたうえでAPI呼び出しをしていたと考えられる。なお、WindowsのAPIは、DLLの中にあるため、API呼び出しはDLLの呼び出しと同じである。

 ARM版Windows 10では、フックやエクスプローラー拡張で、アプリケーションが組み込むx86コードのコンポーネント(DLL)をロードできない。これらは、API呼び出しではないためにスタブを挿入することができず、Windows側のモジュールはARM64 ABIに準拠し、バイナリ変換されたx86コードは、x86 ABIに準拠しているため、正しく動かないためだ。ARM版Windows 10で、ATOKや一部のエクスプローラー拡張などがうまく動かなかったのは、これが原因だ。

 さらに、ARM版Windows 10ではx86に限定したとはいえ、サードパーティの対応があまり進んでいない。その理由の1つは、ARM64版を作りにくいタイプのアプリケーションがあるからだ。それは、コードの一部にx86/x64のアセンブラを使って記述されたアプリケーションだ。これは完全にx86/x64の命令なので、A64命令で書き直す必要がある。しかし、CPUのアーキテクチャが違うために簡単な作業ではない。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事
1
Apple 2026 MacBook Air M5チップ搭載13インチノートブック:AIとApple Intelligence、13.6インチLiquid Retinaディスプレイ、16GBユニファイドメモリ、512GB SSDストレージ、12MPセンターフレームカメラ、Touch ID - シルバー
Apple 2026 MacBook Air M5チップ搭載13インチノートブック:AIとApple Intelligence、13.6インチLiquid Retinaディスプレイ、16GBユニファイドメモリ、512GB SSDストレージ、12MPセンターフレームカメラ、Touch ID - シルバー
¥177,333
2
Apple 2026 MacBook Neo A18 Proチップ搭載13インチノートブック:AIとApple Intelligenceのために設計、Liquid Retinaディスプレイ、8GBユニファイドメモリ、256GB SSDストレージ、1080p FaceTime HDカメラ - インディゴ
Apple 2026 MacBook Neo A18 Proチップ搭載13インチノートブック:AIとApple Intelligenceのために設計、Liquid Retinaディスプレイ、8GBユニファイドメモリ、256GB SSDストレージ、1080p FaceTime HDカメラ - インディゴ
¥95,768
3
Lenovo Chromebook クロームブック IdeaPad Flex 3i Gen8 12.2インチ インテル® プロセッサー N100搭載 メモリ4GB eMMC 64GB バッテリー駆動12.0時間 重量1.25kg アビスブルー 82XH001KJP
Lenovo Chromebook クロームブック IdeaPad Flex 3i Gen8 12.2インチ インテル® プロセッサー N100搭載 メモリ4GB eMMC 64GB バッテリー駆動12.0時間 重量1.25kg アビスブルー 82XH001KJP
¥39,000
4
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
¥36,970
5
【整備済み品】中古ノートパソコン 東芝Bシリーズ B55/B65 Windows11搭載 Core i5-6200U /メモリ8GB/SSD128GB/15.6インチ/Bluetooth/WIFI/HDMI/USB3.0/DVDドライブ/MS & Office2019/テンキー搭載/仕事用ノート (Bシリーズi5-6/メモリ8GB/SSD128GB)
【整備済み品】中古ノートパソコン 東芝Bシリーズ B55/B65 Windows11搭載 Core i5-6200U /メモリ8GB/SSD128GB/15.6インチ/Bluetooth/WIFI/HDMI/USB3.0/DVDドライブ/MS & Office2019/テンキー搭載/仕事用ノート (Bシリーズi5-6/メモリ8GB/SSD128GB)
¥15,990

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥1,980
2
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,890
3
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740
4
UGREEN USB Type Cケーブル PD対応 100W/5A 超急速充電 USB C ナイロン編み 断線防止 iphone17/16/15シリーズ/iPad/MacBook Pro/Galaxy S24/Matebook/iPad/Xperia等USB-C各種対応(1m, ブラック)
UGREEN USB Type Cケーブル PD対応 100W/5A 超急速充電 USB C ナイロン編み 断線防止 iphone17/16/15シリーズ/iPad/MacBook Pro/Galaxy S24/Matebook/iPad/Xperia等USB-C各種対応(1m, ブラック)
¥743
5
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
6
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GW
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GW
¥698
7
KIOXIA(キオクシア)【日本製】SDカード 64GB SDXC UHS-I Class10 読出速度100MB/s 国内正規品 メーカー保証5年 KLNEA064G
KIOXIA(キオクシア)【日本製】SDカード 64GB SDXC UHS-I Class10 読出速度100MB/s 国内正規品 メーカー保証5年 KLNEA064G
¥1,180
8
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
¥652
9
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
¥4,918
10
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ホワイト T-K6A-2630WH
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ホワイト T-K6A-2630WH
¥1,899

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン