Microsoft* Windows* 10 における新しい命令セットの利用

Similar documents
2.1 インテル マイクロアーキテクチャー Haswell インテル マイクロアーキテクチャー Haswell は インテル マイクロアーキテクチャー Sandy Bridge とインテル マイクロアーキテクチャー Ivy Bridge の成功を受けて開発された この新しいマイクロアーキテクチャーの

インテル® Parallel Studio XE 2015 Composer Edition for Linux* インストール・ガイドおよびリリースノート

インテル(R) Visual Fortran コンパイラ 10.0

for (int x = 0; x < X_MAX; x++) { /* これらの 3 つの行は外部ループの自己データと * 合計データの両方にカウントされます */ bar[x * 2] = x * ; bar[(x * 2) - 1] = (x - 1.0) *

Product Brief 高速なコードを素早く開発 インテル Parallel Studio XE 2017 インテル ソフトウェア開発ツール 概要 高速なコード : 現在および次世代のプロセッサーでスケーリングする優れたアプリケーション パフォーマンスを実現します 迅速に開発 : 高速かつ安定し

Microsoft PowerPoint Quality-sama_Seminar.pptx

この手の問題を診断する際に Simics は完璧なツールなのですが 実行するためには 問題が発生するプログラムを Simics に取り込まなければなりません すなわち Simics 上で Simics を実行するのです まず Simics 内部に開発ホストの複製を作成します これは何も難しいことでは

インテル® Parallel Studio XE 2013 Linux* 版インストール・ガイドおよびリリースノート

使用する前に

インテル® Parallel Studio XE 2013 Windows* 版インストール・ガイドおよびリリースノート

KSforWindowsServerのご紹介

共通マイクロアーキテクチャ 富士通はプロセッサー設計に共通マイクロアーキテクチャを導入し メインフレーム UNIX サーバーおよびスーパーコンピューターそれぞれの要件を満たすプロセッサーの継続的かつ効率的な開発を容易にしている また この取り組みにより それぞれの固有要件を共通機能として取り込むこと

ピクセル同期を利用した順不同半透明描画 (更新)

COMET II のプログラミング ここでは機械語レベルプログラミングを学びます 1

目次 商標について.1 表記内容について.1 1 エディタ.2 1.1bluefish.2 1.2texi2html.2 2 科学.3 2.1chemtool.3 2.2Rasmol.3 2.3celestia.3 3 画像.4 3.1Blender.4 3.2tgif.4 4 数学.5 4.1ge

CodeRecorderでカバレッジ

Microsoft Visual Studio 2010 Professional Data Sheet

スライド 1

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

【NEM】発表資料(web掲載用).pptx

製品開発の現場では 各種のセンサーや測定環境を利用したデータ解析が行われ シミュレーションや動作検証等に役立てられています しかし 日々収集されるデータ量は増加し 解析も複雑化しており データ解析の負荷は徐々に重くなっています 例えば自動車の車両計測データを解析する場合 取得したデータをそのまま解析

提案書

内容 インテル Advisor ベクトル化アドバイザー入門ガイド Version インテル Advisor の利用 ワークフロー... 3 STEP1. 必要条件の設定... 4 STEP2. インテル Advisor の起動... 5 STEP3. プロジェクトの作成

Microsoft PowerPoint - 1_コンパイラ入門セミナー.ppt

目次 1. はじめに 本書対象者 PALRO のアプリケーションについて Ubuntu 8.04LTS の入手について Linux 上での開発環境の構築 事前準備 Ubuntu のインストール..

最新 Visual Studio と DirectX 9.0 Ex で戦う 3D プログラミング

表 1. インテル Core m7-6y75 プロセッサーにおけるサンプルの 2 つのシーンのカリング時間 ( ミリ秒 ) システム構成 : インテル Core m7-6y75 プロセッサー 1.20GHz TDP 4.5W 2 コア 4 スレッド 8GB DDR3 インテル HD グラフィックス

PassSureExam Best Exam Questions & Valid Exam Torrent & Pass for Sure

FileCapsule Slate ヘルプファイル

Using VectorCAST/C++ with Test Driven Development

Touch Panel Settings Tool

ic3_cf_p1-70_1018.indd

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

Microsoft Word - Python利用環境構築ガイド_ docx

Oracle SQL Developerの移行機能を使用したOracle Databaseへの移行

InstallShield FAQ < 独自の InstallShield 前提条件を作成する > 注 ) このドキュメントは InstallShield 2014 Premier Edition を基に作成しています InstallShield 2014 以外のバージョンでは設定名などが異なる場合

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

Silk Central Connect 15.5 リリースノート

インテル® Fortran Studio XE 2011 SP1 Windows* 版インストール・ガイドおよびリリースノート


表 1. OpenSSL* スピードテストのハードウェアおよびソフトウェア構成 この OpenSSL* 本来の性能が SSL Web サーバーのスループットにどのように影響するか評価するため このケーススタディーでは これらの 2 つの暗号を使用したときに Nginx* Web サーバーで達成可能な

. はじめに 動作環境の全ブラウザで 本書の設定を行ってください 本設定を行わない場合 システムが 正常に動作しない可能性がありますので 必ず設定をお願いいたします また 本書の中で 画 像に番号を付与している箇所以外の設定は お使いの環境のままでご使用ください 参考 : 動作環境の全ブラウザについ

HP Primeバーチャル電卓

PHP 開発ツール Zend Studio PHP アフ リケーションサーハ ー Zend Server OSC Tokyo/Spring /02/28 株式会社イグアスソリューション事業部

Delphi/400バージョンアップに伴う文字コードの違いと制御

数量的アプローチ 年 6 月 11 日 イントロダクション データ分析をマスターする 12 のレッスン ウェブサポートページ ( 有斐閣 ) 水落研究室 R http:

Introducing_SPIStorm-JP

一般社団法人日本内部監査協会

インテル Advisor Python* API を使用したパ フォーマンス向上の考察 この記事は Tech.Decoded に公開されている Gaining Performance Insights Using the Intel Advisor Python* API の日本語参考訳です コード

Windows VDA の権利を取得する方法 Windows VDA の権利は 3 つのライセンス形態を通じて取得できます これらの使用権により ライセンスを取得したデバイスは 使用するライセンス形態に応じてリモートまたはローカルで仮想 Windows デスクトップにアクセスすることができます Wi

Intel MPI Library Linux

K5移行サービス ご紹介資料

はじめに Dell PowerVault DL2000 Powered by Symantec Backup Exec は シンプルで管理しやすいデータ保護機能を提供する 柔軟かつ経済的なバックアップソリューションです 本ホワイトペーパーでは PowerVault DL2000 の バリューシリーズ

kantan_C_1_iro3.indd

Microsoft Word - Ladder Tool 使çfl¨ã…žã…‰ã…¥ã‡¢ã…«ã…©ã…•ã…¼ã†ªã†Š_ docx

TFTP serverの実装

BricRobo V1.5 インストールマニュアル

Microsoft PowerPoint - install_NGSsokushu_windows(ver2.1).pptx

<4D F736F F F696E74202D20834A815B836C838B835C815B835882CC95E082AB95FB F4B2E B8CDD8AB B83685D>

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター

インテル® Parallel Studio XE 2019 Composer Edition for Fortran Windows : インストール・ガイド

仮想化基礎演習テキスト Ⅰ 第 1.0 版 演習で学ぶ仮想化基礎 ( クライアント仮想化編 ) 九州ラーニングネット株式会社 特定非営利活動法人パソコン整備士協会

1. はじめに 本書は Wind ows10 がインストールされたPC を大量に準備する際のいくつかの手順について 検証した結果をまとめたものになります 本書の情報は 2018 年 3 月時点のものです 本書に掲載されている内容は 弊社の検証環境での結果であり すべての環境下で動作することを保証する

一般法人向け Office 365 の紹介 Office 2007 がデスクトップアプリケーションのスイートであるように 法人向けサブスクリプションの Office 365 は 最新バージョンの Office デスクトップアプリケーションを含む 強力なオンラインサービスを提供するスイートです Off

目次 第 1 章概要....1 第 2 章インストールの前に... 2 第 3 章 Windows OS でのインストール...2 第 4 章 Windows OS でのアプリケーション設定 TP-LINK USB プリンターコントローラーを起動 / 終了するには

Microsoft Word - Writing Windows Installer's DLL.doc

3/7 マイグレーション開発方針 顧客名 0 作成者 根岸正 < プログラム移行方針 > システム名称 A-VX システムマイグレーション作成日 2015/09/01 < COBOL 資産のプログラム移行 > COBOLソース ( メインとCOPYLIB) を入力としてSCC 言語変換ツールにてVB

ARCHITREND ZERO バージョンアップ/オプション追加編

Touch Pen Utility

IPPO - 校内研修支援プログラム - 使用説明書 目次 項 目 ページ 1 プログラム利用の準備 この説明書の記述について プログラムの動作環境等 プログラムファイルのコピー プログラムファイルの起動 4 2 プログラムファイルの利用

インテル Parallel Studio XE 2017 Composer Edition for Fortran Windows* インストール ガイド Rev (2017/06/08) エクセルソフト株式会社

<発注書作成>

HP製コンピューターでのWindows® 7 XPモードの使用

Imation Encryption Manager Plus Imation Encryption Manager Plus ソフトウェアにより 対応 USB フラッシュドライブにパスワード保護に対応した総合セキュリティーを設定することができます Imation Encryption Manage

CTX-6114AI Citrix Access Suite 4

Touch Pen Utility

PowerPoint プレゼンテーション

インテル® Parallel Studio XE 2019 Composer Edition for Fortran Windows 日本語版 : インストール・ガイド

REX-USB56 「FAX送信」編 第6.0版

Windows GPO のスクリプトと Cisco NAC 相互運用性

V-CUBE ミーティング4

CubePDF ユーザーズマニュアル

1 ログインとログアウト 1.1 ログイン ログイン画面で [ password ] 欄にパスワードを入力します (図 1) 図 1 ログイン画面 正しくログインができると Ubuntu のデスクトップ画面 図2 が表示されます 図2 Ubuntu デスクトップ画面 2

RW-5100 導入説明書 Windows7 用 2017 年 7 月 シャープ株式会社

REX-C56EX FAX送信 第5.0版

性能を強化した 第 12 世代 Dell PowerEdge サーバの RAID コントローラ Dell PERC H800 と PERC H810 の OLTP ワークロード性能比較 ソリューション性能分析グループ Luis Acosta アドバンストストレージエンジニアリング Joe Noyol

MicrosoftVisualStudio.NET による ASP.NETWeb アプリケーションの開発 (#2334)(MP301)5 日間 () コースの概要 このコースでは VisualBasic.NETまたは C# プログラマで Web 開発の初心者が ASP.NETを使用して Web アプ

<4D F736F F D ED CC4C6F67696E20936F985E95FB964082C B838B A

Windows 10 IoT Core MVA 2015 August Windows 10 IoT Core ハンズオントレーニング Building and running Github MS IoT Samples on Windows 10 IoT Core 3 章 UWP アプリの開発 L

日本の上位 50 サイトのウェブセキュリティレポート (Q2 2016) 本レポートでは ウェブ閲覧リサーチ会社 Alexaにて報告された日本のユーザーから 2016 年 5 月 5 日時点の閲覧されたウェブ

スキル領域 職種 : ソフトウェアデベロップメント スキル領域と SWD 経済産業省, 独立行政法人情報処理推進機構

使える! IBM Systems Director Navigator for i の新機能

目次 1. はじめに...3 概要...3 利用環境 (HTML5)...3 利用環境 (Citrix Receiver) リモート PC への接続と終了...4 接続方法の変更...4 HTML5( 簡易バージョン ) での接続...5 リモート PC の操作メニュー...8 Cit

Windows Server 2016 ライセンス体系に関するデータシート 製品の概要 Windows Server 2016 は 準備が整った時点でクラウドコンピューティングへ簡単に移行できる新しいテクノロジを導入すると同時に 現在のワークロードをサポートするクラウドレディのオペレーティングシステ

スレッド化されていないアプリケーションでも大幅なパフォーマンス向上を容易に実現

Microsoft Word - RPA_質問回答

バトルカードでゲーマーやエンスージアストへの販売促進

地図 SD カードを取り外す 最初に ナビゲーション本体から地図 SD カードを取り外します 本操作は地図 SD カードを初めて ROAD EXPLORER Updater に登録するときや パソコンにダウンロードしたデータを地図 SD カードに保存するときに実行してください 1 ナビゲーション本体

初心者のための RL78 入門コース ( 第 3 回 : ポート出力例 2 とポート入力 ) 第 3 回の今回は, 前回作成したプログラムを RL78/G13 のハードウェアを用いて見直しをお こないます 今回の内容 8. コード生成を利用した実際のプログラム作成 ( その 2) P40 9. コー

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

Transcription:

Microsoft* Windows* 10 における新しい命令セットの利用 この記事は インテル デベロッパー ゾーンに公開されている Follow-Up: How does Microsoft Windows 10 Use New Instruction Sets? の日本語参考訳です 以前のブログ ソフトウェアは実際に新しい命令セットを使用しているのか? ( 英語 ) では いくつかの異なる Linux* 環境で使用されている命令の種類と プロセッサー タイプの変更がそれらの環境にどのように影響するかに注目しました その続きとして ここでは Microsoft* Windows* 10 について検証します さまざまな世代のプロセッサーで Windows* 10 の動作を調べ それを Ubuntu* 16 と比較します また Ubuntu* のさまざまな利用シナリオにおける命令の使用についても考察します テスト環境のセットアップ 以前と同様に Wind River* Simics* 仮想プラットフォーム ツールの 汎用 PC プラットフォームを使用して 2 つの異なるプロセッサー モデルで実行します 1 つは 第 1 世代インテル Core i7 プロセッサー ( 開発コード名 Nehalem) で もう一方は 第 6 世代インテル Core i7 プロセッサー ( 開発コード名 Skylake) です これらの異なるモデルを使用して Windows* 10 イメージ ( ビルド 1511) を起動します 前回と同様に 約 60 秒間でアイドル状態のデスクトップが起動されました

以下は 統計を収集するためいくつかの Windows* 10 ターゲットを起動しているラップトップのスクリーンショットです 起動中 Simics* ツール環境で使用されている命令の種類について統計を収集しました 前回と同様に ニーモニックごとに命令の使用回数をカウントしました さらに 以下に示すように 異なる条件に基づいて命令ストリームを検証するため 数回実行しました 複数の世代にわたる命令 最初に 起動中に動的命令の 1 % 以上を占めるすべての命令について調べました 以下のグラフに結果を示します

Windows* のデータと以前のブログ ( 英語 ) の Ubuntu* 16 のデータは非常によく似ています プロセッサーの世代によりわずかな違いがありますが ほとんどの場合 プロセッサーに関係なく同じコードが実行されます これは Ubuntu* や Windows* などの一般的な汎用オペレーティング システムでは想定外のことではありません 以前のブログでは Yocto* Linux* ビルドにおいてプロセッサーの世代間の違いが最も顕著でした Yocto* では Linux* を自身でビルドすることができます 通常 広範なユーザーベースをサポートする必要がないため 新しい命令セットを使用するコードを含めてより積極的に使用することができます 幅広いユーザーベースと非常に多くのユーザー向けに安定した動作を提供するという共通の目標を持つ Ubuntu* や Windows* 10 では ハードウェアの世代間の違いが多すぎると テストと品質管理が難しくなります 自分で Linux* をビルドする場合とは異なり 単一のシステム向けに積極的に最適化しないことは理にかなっています グラフから 最もよく使用されてる命令は 移動 比較 ジャンプ 基本的な算術演算であることが分かります これは Linux* のテスト結果と非常によく似ていますが 使用された命令はやや異なります

Linux* との比較 オペレーティング システムの変更により コードのビルドに使用するコンパイラー (Linux* の gcc から Windows* の Microsoft* コンパイラーへ ) と 関数やオペレーティング システムの呼び出し規則が変わります これらはすべてコンパイラーの命令選択プロセスに影響し その結果 実際に使用される命令がワークロード間で異なる可能性があります 実際 いくつかの命令が 1 つのワークロードでのみ独特な使われ方をしているのを見つけました これに関して いくつかの例があります Windows* 10 は LEAVE または ENTER 命令を使用しません 以前のブログ ( 英語 ) で述べたとおり 古い Linux* 2.6 Busybox* では LEAVE が広く使用されていましたが より新しい Linux* ディストリビューションでは使用されていません Windows* 10 は新しいソフトウェア スタックであるため LEAVE 命令を使用していないことは当然と言えるでしょう Windows* 10 では使用され Linux* ではどの環境でも使用されないいくつかの命令があります その最も重要なものが インテル ストリーミング SIMD 拡張命令 2 ( インテル SSE2) の MOVNTI 命令です Windows* 上の命令の 3% さらに 上記の一般的な命令のほかに Windows* 10 は Linux* では使用されないいくつかのユニークなベクトル命令を使用します : PADDW PSRLW PMOVZXBW PUNPCKHQDQ PSUBW PMADDWD 豊富なベクトル命令セットがあることを考えれば これは驚くべきことではありません 8086 命令セットの CMC ( 補数キャリーフラグ ) 命令も Windows* では使用されますが Linux* では使用されません 80386 命令セットの BSR ( 逆方向のビットスキャン ) も同様です これらの命令は一般的ではありませんが (0.01% 未満 ) Linux* の起動で全く使用されていないのは興味深いです これは オペレーティング システムの起動プロセスに関してのみ言えることです アプリケーション ソフトウェアでは結果が異なるでしょう 実際 Linux* でいくつかのほかのテストを行ったところ 以下に示すように全く異なる結果になりました ベクトルと SIMD ベクトル命令は 起動中にあまり使用されません 第 1 世代と第 6 世代のプロセッサーの違いは Windows* ではそれほどではなく Linux* のほうが顕著です しかし Windows* 10 と Ubuntu* 16 を比較すると興味深い結果になります

全体として Windows* と Ubuntu* で起動時に使用されるベクトル命令の割合はほぼ同じ ( 約 5%) です しかし ベクトル命令の分布は異なります Windows* ではインテル SSE2 命令がよく使用され Ubuntu* ではインテル MMX 命令が使用されています また Windows* では 世代間で使用される命令にほとんど違いがありません 第 6 世代のプロセッサーでインテル アドバンスト ベクトル エクステンション ( インテル AVX) がわずかに使用されているくらいです その他の例 この命令ニーモニックの調査は 仮想プラットフォームでインストルメンテーションを使用してソフトウェアを実行することで観察できるものを示す単純な例です 有益な情報が得られるだけでなく さまざまなものを観察し カウントすることができます Simics* ユーザーは 仮想プラットフォームの一部であれば任意のものを収集するツールをプログラムできます 例えば 以下は第 6 世代のプロセッサーで Windows* 10 を起動中の命令サイズの分布です

平均サイズは 実行された命令あたり約 3.73 バイトになります これは コードのサイズとは関係がありません キャッシュシステムとプロセッサーのデコーダーの負荷を示すものです インテル アーキテクチャー (IA) は 典型的な可変長命令セットを採用しています 上記の表でも 1 バイトから 14 バイトまでさまざまなサイズの命令が確認できます 非常に大きなサイズの命令はまれです 命令を考察する別の方法として オペランド型とオペコードで分類できます これは 上記のニーモニックよりも細かく命令を分類します 例えば MOV 命令には 最も一般的なバリエーションとして次の 20 命令があります

このほかにも 特定のアドレスモードを使用するものが多数あります これは典型的なロングテール型の分布です 最も一般的なモードがすべての MOV 操作の大半を占めていますが より複雑なモードもある程度は使用されています ここでは すべてのサイズの MOV 操作をリストしています 64 ビットの Windows* オペレーティング システムを 64 ビットのプロセッサーで実行しているからと言って すべての操作のサイズが実際に 64 ビットであるとは限りません バイト (8 ビット ) ワード (16 ビット ) ダブルワード (32 ビット ) 操作も使用されます 32 ビットの操作は 64 ビットの操作と同じくらい一般的です Linux* デスクトップでのベクトルと SIMD これらの測定結果について同僚と話し合ったところ 一般的なベクトル命令とインテル AVX 命令 そしてそれらが使用されるワークロードにどのように依存するかという疑問が浮かびました オペレーティング システムの起動では ごくわずかな暗号化操作や高度に最適化されたメモリーコピー操作ぐらいにしか それらの命令は使用されないでしょう しかし 同僚はシステムをインタラクティブに使用しているときに いくつかのほかの動作に遭遇しました このため もう 1 つテストを行うことになりました 第 6 世代のプロセッサーで Ubuntu* を起動後に ターミナルを開いて新しい Firefox* プロセスを開始しました

上記のグラフから デスクトップ アクティビティーは 新しいインテル AVX2 命令と FMA3 ( 英語 ) 命令を含むインテル AVX 命令を広く使用しています 実際 ベクトル命令は 実行されたすべての命令 ( ユーザーレベル コードやグラフィックス サブシステムだけでなく マシン全体のすべての命令 ) の 12% を超えています まとめ ここでは 異なるプロセッサーとワークロードでさまざまな種類の命令を実行して その結果をグラフや数値を用いて示しました 私のようなコンピューター アーキテクチャー オタク向けのデータと言えます ここで最も興味深い点は Simics* とそのインストルメンテーション機能を使用した数値の収集方法です Simics* は ほとんどのシステムをシミュレーションでき 非干渉的に調査とデバッグが可能です ここで紹介したような命令統計の収集は プロセッサー設計者 ソフトウェア エンジニア 研究者 学生に役立つ情報を提供します Simics* は 学術機関に無料で提供されており コンピューター アーキテクチャー オペレーティング システム ネットワーキング 組込みシステム シミュレーション 低水準プログラミングを含む非常に広範な分野向けのツールです コンパイラーの最適化に関する詳細は 最適化に関する注意事項を参照してください