「Intel MPX」の版間の差分

提供: セキュリティ
移動: 案内検索
(GCCコンパイラによるIntel MPXの利用)
(GCCコンパイラによるIntel MPXの利用)
 
行29: 行29:
 
* [[Linuxカーネル]]の[[Intel MPX]]のサポート(Linux 3.19 Kernel)
 
* [[Linuxカーネル]]の[[Intel MPX]]のサポート(Linux 3.19 Kernel)
 
== GCCコンパイラによるIntel MPXの利用 ==
 
== GCCコンパイラによるIntel MPXの利用 ==
* [[gcc] 5.0 からサポートされます。
+
* [[gcc]] 5.0 からサポートされます。
 
* -fmpx オプションで有効になります。
 
* -fmpx オプションで有効になります。
  

2015年4月19日 (日) 00:31時点における最新版

Intel MPX (Intel Memory Protection Extensions, インテルメモリプロテクションエクステンションズ) とは、インテルCPUの機能でアプリケーションのメモリアクセスを保護する機能を提供します。

読み方

Intel MPX
いんてる えむぴーえっくす
Intel Memory Protection Extensions
いんてる めもり ぷろてくしょん えくすてんしょんず
インテルメモリプロテクションエクステンションズ
いんてる めもり ぷろてくしょん えくすてんしょんず
Skylake
すかい れいく

概要

Intel MPXは、インテルの Skylake と呼ばれる CPU から実装される機能です。Skylake は、 第六世代のCore i processor で、2015年に発売される予定です。2015年の4月時点では、MPXをサポートされたCPUは、出荷されていません。

Intel MPXは、配列の境界チェックをハードウェアでサポートします。命令とレジスタが追加されます。

実行環境

  • IntelのSkylake 以降のCPU
  • Intel Software Development Emulator

MPX

MPXのために、128bitのBNDレジスタが4つ追加されました。配列の最初と最後のアドレスをレジスタの上位(Upper Bound)と下位(Lower Bound)に格納します。

プレフィックスが 0f のため、 MPX 未対応のCPUでは nop として扱われます。

新しいレジスタ

BND0-3 Bounds レジスタ
128bit長、64bitずつメモリの上限と下限を設定します。
BNDCFGU
Bound Paging のベース (リング3)
BNDCFGS
Bound Paging のベース (リング0-2)
BNDSTATUS
Bound Paging の操作アドレスやエラーコードが格納されます。

利用できる環境

Intel MPXに対応したプログラムとOS(カーネル)が必要です。

  • gccコンパイラで code instrumentation によりメモリ境界チェックのコードを入れる。
  • LinuxカーネルIntel MPXのサポート(Linux 3.19 Kernel)

GCCコンパイラによるIntel MPXの利用

  • gcc 5.0 からサポートされます。
  • -fmpx オプションで有効になります。

参考資料

関連項目