Meltdown に関係する投機的な実行に付いて

下図は筆者の自作機を構成するパーツ間の帯域を調査してボトルネックを見付ける目的(例えばこの記事リンク先は2015年になっていますが元々2012年10月頃の記事です、掲載順を変更する目的で2015年に変更しています)で5年前から書き始めたブロック図からCPUコア回りを抜き出して少し加工した物です。

CPUARCH11_20180218203812c49.png

Meltdownで話題に成った投機実行ですが、上図で言えば主にDecoder(デコーダ)とCache(キャッシュ)の部分で発生する問題です。図の通りP6系やK7系はデコーダが3個以上並列にあり、3命令以上を同一クロックサイクルで処理しますので、メモリの速度はCPU側の1クロックサイクルで3命令以上を引き出す帯域が必要になります。NetBurstの場合はデコーダは1個ですがトレースキャッシュにヒットした場合は2命令以上が並列になります(トレースキャッシュにミスした場合は最大1命令1サイクル)。

専門的には、フォン・ノイマン・ボトルネック(Von Neumann bottleneck)として半世紀前から知られていた事ですが、CPUを高速化しようとすると、プログラムやデータの読み込み回路がボトルネック(bottle - neck:瓶の口が細いと、中身を出し入れする時に口の部分が邪魔に成って液体の速度が遅くなる事の例え)に成るので、その対策として高速なメモリが演算装置近くに必要になります。

創業当初のIntelは元々は上記の様にして演算装置の近くで使われる事が期待されていた高速なSRAMメモリを製造する会社からスタートして、現在に至るまで主要製品としてSRAMを製造し続けています(現在はCPUに内蔵する形でSRAMを製造し、その速度で優位性を確保しています)、その為、今回のMeltdownは皮肉にも創業当時から得意とする専門分野での失敗でした。

このフォン・ノイマン・ボトルネックを解消する為に読み込まれたSRAMキャッシュ上のデータが盗用されてしまう抜け道が発見されたのが Intel 製P6以降のCPU全般で見付かったMeltdownで、AMD製では抜け道が塞がれていたという訳です。

投機実行とは、本来、順番に1個づつ実行されるべき命令を上記の通り高速化目的でとりあえず間違っている(かもしれない)事も命令の前後関係をある程度無視して同時多発的に実行してしまい、後で間違っていた命令は中断したり結果を破棄して、やり直す仕組みで高速化しているので、投機的な実行と呼ばれる様になりました。

この投機実行の間違いをわざと起して本来は読み込んではいけないデータをキャッシュに間違って先読みさせ、そのキャッシュを読み取るのが Meltdown です。AMD製のCPUでは防止策が機能していて騙されても問題が起きない様になっていましたが、Intel 製のCPUでは騙されるとパスワードでもなんでもキャッシュに(高速に)読み込んで晒してしまい、悪い人にも(高速に)お渡ししてしまうというのが今回のオチです。ちょっとイジワルな言い方になってしまいましたが・・・

Intelは、最近Vega世代のRadeonをCPUに統合する計画を発表した様ですが、そのうちGPUだけでなく AMD Zen のセカンドソース契約をして AMD Zen と同じ物を製造するセカンドソースCPUの製造会社になってしまうかもしれませんね・・・AMDはIntelのCPUと同じ物を作ってはいけないという契約を結んでいるらしいですが、逆の制限は無い様な事が何処かに書いてあったのでIntelは勝手にAMD Zenと同じ物を作っても良い権利を最初から持っているのかもしれませんが・・・それはちょっと酷い話しでもあるとも思います。

 
 

PCをネットに接続しないという選択

 今騒がれている Meltdown や Spectre もそうですが、ネットに接続しなければ影響が全く有りませんし、ネットに接続しなければ、そもそもウイルス対策ソフト等のセキュリティを気にする必要が全く有りません。NIC(LAN)をDISABLEしてUSBもKeyboard/Mouse以外は接続しない完全スタンドアロンです。

 「あたらなければどうという事は無い」

 初期の自作PCの時代にはNIC(LAN)はオプションでインターネットが未だ一般的ではなく、店頭販売されているソフトを購入して、箱に入っているメディア(フロッピーやCD-ROM、本当に初期の頃はカセットテープ)から直接アプリを起動する形式で、今でいえば Live CD と同じものに特定のアプリがインストール済みでOS起動と同時に自動でアプリが立ちあがる設定が行われた状態で販売されていました。例えば日本で当時一般的に利用されていたワープロソフトの一太郎はフロッピー起動のMS-DOSが組み込まれた状態での販売で、HDDへのインストールが必須になるのはVer5以降(Wiki情報)です。保守的思考とも言えるかもしれませんが、同様に、使いたいアプリを Live CD 化すれば最悪の場合感染しても再起動で復活します(但し、BIOSやFirmwareに感染した場合はBIOSやFirmwareを元に戻す必要あり)。また、いづれにしろWindows7のバックアップを Blu-ray にしておく予定です。

 ネットの用途を整理して、ネット接続が必要無いPCはネットから隔離、つまり鎖国です。出島となる機体ではネットに接続しつつも、家内LANは鎖国する事で貿易と防疫を同時にと言う事で、そもそも家内LANを廃棄にし完全スタンドアロン化する事も検討中です。

 完全スタンドアロンにしたPCの用途は、改造、動画編集・閲覧、ドキュメント編集、ゲーム、プログラミング、ベンチマーク(世代間の性能比較用)等で、恐らく32bit機(9号機以前)は全機スタンドアロン化し、64bit機も多くはスタンドアロン化するかもしれません。HD動画なら500MHz程度のPentiumIIIやCeleronでも充分閲覧可能です

 20号機が年初のWindowsUpdateによってBSODした為、クリーンインストールからやり直さねばならないのですが、WindowsUpdateを普通にしただけでBSODするって、Win98並の品質まで落ちたのか最近のWindowsは・・・と思ってしまいます。せめて各世代のCPUとチップセットで数機種、合計100台程度でWindowsUpdateが正常に機能するか試してから配布するくらいはやって欲しいものです。そのくらいの余力が数兆円の資産と言われる会社には有るはずですし、その程度の事なら0.001%以下の資産目減りも無いハズです。彼らにとっては簡単な事のハズですよ。
 ちなみにK8世代が年初のWindowsUpdateでBSODするのは知っていますがBull/PiledriverでBSODするのは筆者が1モジュール/1コア設定にしている事と関係あるのでしょうかね?
 
 
 
 
 

NHK 受信料

先程、NHKの代行業者と称する人が受信料未払いの『警告』の為に我が家に来ました。

内容としては、2年前に1度だけ受信料が支払われた記録が有るので、その日が契約日になり約3万円の延滞金が発生しているから払わないと大変な事に成りますよ。という趣旨の一方的な押売り的脅迫でした。あまりにしつこいので押売りとして警察を呼びますと言って電話を手にした所、逃げる様に帰っていきましたので新手の振り込み詐欺だった可能性もあります。

そもそも、筆者は2年前の支払ったとされる当日は海外に居ましたので契約締結や戸口支払いなどは物理的に不可能です。

可能性としては、母が私の名前を騙って(代理で)支払った(NHK集金の言う事に無条件で素直に従った)可能性を捨てきれませんが、私は親にNHK受信契約の委任状を渡していませんし、そもそも我が家には受信機が設置されていないのです!

50インチのAQUOSがリビングに有りますが、これはMacと16号機のモニタとして使っているだけでB-CASカードを挿していませんし、そもそもアンテナもアンテナケーブルも設置していません。

それに、現在のTV番組にネットの情報を超える様な有意な情報や即時性など有りません。ネットの方が情報が早く、かつ多方面からの意見や主張が聞けるので、受信機を設置して一方的な意図で編集された映像を脳に注入する必要性は皆無です。その意味ではWindows10や最近のIEも一緒です。昨年の更新以降はIEを起動して【新しいタブ】を開くと空白ではなく”くだらないニュース”で埋め付くされた広告プロパガンダ画面に変更されましたので、Win10と同じ効果を狙っている様ですから、無闇にIEで新しいタブを開かない様にしています(うっかり開いてしまうと無駄に時間を浪費する事になるでしょう)、貴方も、いつのまにかMSの広告やプロパガンダに侵されている可能性がありますよ・・・


 
 

筆者が Windows10 LTSB を導入する可能性

今の所、Windows10には2つのLTSBが有ります。
 LTSB 2015 (旧世代で言えば、無印)
 LTSB 2016 (旧世代で言えば、SP1相当)

筆者はWindows10には移行しない決断をした訳ですが、これは厳密に言えば Windows10 Pro (で試した結果)移行しない決断をした訳で、その後 LTSB 2016 で試した結果、LTSB 2016 なら Edge や Cortana の無い比較的クリーンな状態である事に加え、Pro(や無印)の様な洗脳宣伝広告プロパガンダなどを含まず、改悪や不要な機能の強制導入をしないなど、LTSB 2016 は普通のOSに近い特徴が有り好感が持てました。但し残念な事に LTSB 2016 であってもキーロガーが常駐していて入力した内容が全てネット上に筒抜けになるスパイ機能が標準搭載されています。このキーロガーは「設定」->「プライバシー」->「音声認識、手描き入力、入力の設定」で設定を変更する事で緩和出来るのですが、これをしないとデフォルトでキーロガーが動作している事が非常残念ですし、設定変更しても完全にはキーロガーを停止出来ない様です。LTSB 2016 で試した結果、キー入力の変換候補が気持ち悪いくらい何処で調べたの?という様なプライベートな変換候補(古い友人や別れた元彼女やお亡くなりに成った方の名前などが変換候補に登場する)が鳥肌でキモチワルイので辞めて欲しいですし、これが有るから即導入はせずに躊躇・様子見しています。これが無ければ既に入れていた可能性があります。

キーロガーの気持ち悪さを何とか克服出来たとして、というか、UWP/UWAを使う必要が出た場合には、もうそれしか選択筋が無いのかもしれず、Linux上でWine同様にUWAが動作するUWP層が完成度高く構築されると良いなぁと・・・

とにかく and/or とは言え、SP2 に相当する次期 LTSB を待たねば 2017年に発売された Naples や SkylakeSP に正式対応したLTSBは今のところ無い状況ですから、21号機(Naples-制作中)、22号機(SkylakeSP-計画中) 用には今は様子見するしかない訳ですが、MSのアナウンスによると2~3年に一度の頻度でLTSBが登場するらしいので2016年起算では遅くとも来年(2019年)までには登場すると思います。 

金額が1台3~5万円の様なので本格的に適合機体全てに導入すると10台で30~50万円也です、イイ商売ですね・・・それだけ取るなら、キーロガーやスパイウエアが完全に無い状態にして頂きたいです。Windows Per User だといくらでしょう???

 
 
 
 
 

Meltdown

Meltdown と言うと麦野さんを連想してしまう筆者はアニオタですが、ブログの趣旨的にCPUの話です。

話題としては既に御存知とは思いますが、Intel の Core 系 CPU で発生する投機実行に起因する脆弱性です。
AMDでは発生しません(AMDでは同じ現象が確認できない)。

Intel の Core と言えば AMD K8 ~ K10 の脅威に曝されていた Intel を救ったアーキテクチャで、今の Intel の地位を固めたアーキテクチャだと断言出来ます。逆に言えば Intel に Cora アーキテクチャが無ければ Intel は壊滅的打撃を受けて危険な経営状態に陥っていた可能性があります。

こちらの表に IPC が端的に表れていますが、

20120506135357f3f_2014120908550163d.png

イスラエルチームがP6系アーキテクチャを元に改良を加えた Banias ~ Yonah で IPC が飛躍的に向上しているのが判ります。この時期はちょうど K8 vs NetBurst で Intel が苦戦していた時期と重なり、イスラエルチームの動きは伏兵的な動きとも言えます。

その飛躍的な IPC向上の為には投機実行の高速化が必須ですが、Meltdown の様な攻撃に対する対策は投機実行の高速化に逆行する行為ですから、あえて放置して(或いは元々のP6には備わっていた防御機能を撤去して) K8 を IPC で上回る事を最優先課題にした可能性が有りそうですね。あくまで推測ですが・・・
 
その推測を確かなものにするには、P6系統の流れを汲むアーキテクチャのどの時点以降で Meltdown が起きるのか検証すれば判明すると思うのです。最初の Core アーキテクチャと言われる物は Yonah です(Intelが追認)。Yonah は表を見て判る通り当時ES品として既にベンダーが入手可能だった K10 の IPC を抜く事が出来た(当時)唯一のIntel製アーキテクチャです。 Banias までは K8 に負けていました。 Dothan で K10 と並び K8 を僅かに上回っています。

追記--
読者の方に教えて頂きましたこちらのドイツ語サイトによりますと Meltdown は Intel では P6(Pentium Pro)以降の全てが影響を受けるが AMD は影響が無い様です、しかし Intelさん自身の発表では Nehalem 以降になっていますね。Core2世代以前は実際の所どうなんでしょう?筆者の機体で Nehalem 以降の Intel CPU 搭載機は13号機17号機それから今年予定していた22号機が対象となりそうです。
--追記ここまで

Meltdown と同時に発表された Spectre は AMD でも発生する可能性が示唆されてはいますが、具体的な実現性を検証出来ていませんし脆弱性として顕在化出来ないかもしれず、これを同時発表する事で Intel だけが悪者に成る事を回避する為に併せて発表されたダミーの可能性が有りそうです。実際に検証済みの脆弱性として顕在化しているのは Intel Core だけなのですから・・・

脆弱性の発表と同時に(予め準備していた)パッチをIntelが公開しましたが、過去5年に発売されたCPUのみがパッチの対象です。日本の製造物責任10年のような法律は無視して5年しか対応しないつもりなのか、それとも今後対応する予定なのか?どうなるのでしょう・・・

ところで、 VIA Nano兆芯 或いは Vortex86 などの x86第三勢力の事が、この件では一切語られていませんが、どうなんでしょうね?
 
 
 
プロフィール

DualSocketTheWorld

Author:DualSocketTheWorld
自作を始めて二十数台目くらいになりますが、最初からデュアルソケット限定(始めた当時はデュアルスロット)で自作しており、近年になってAMD K6を試したくなりSocket7でK6-2+のシングル構成で組んだのがシングル初です(以降、Bull/nano/Ryzenと数台仮組レベルで組んでいます)。

シングルマザー(含:シングルソケットマルチコア)や4ソケット以上の自作は基本的にしませんし、メーカー製PCの改造も基本的にはしません(ノートPCのSSD化くらいはしますが・・・)

基本路線はワークステーションと呼ばれる分野での自作で、OSもWindows系であればProfesionalが主な対象に成ります。

ゲーマーの様なOverClockは行わず、WS路線としてハイエンドCPUとハイエンドGPUの組み合わせで定格或いはDownClockで発熱を抑えつつ、その時のアーキテクチャに置いて爆速かつ静音を目指し、30年以上の長期に渡り稼動状態をキープする事を目指します。

※基本的にリンクフリーです。どこでも自由にどうぞ。

※画像は時々変ります。

※お決まりの文章ですが、改造は個人の責任で行ってください。ここに記載された情報は間違いを含んでいる可能性が有り、それを元に製作や改造などをして失敗しても筆者は一切責任持てませんので悪しからず。

筆者略歴:
小学生時代にゴミ捨て場で拾ったジャンクテレビ数台を分解して部品を取り出し真空管アンプを自作、中学生時代にPC8801mkⅡsrでZ80アセンブラを始める。社会人になって初のプログラムは弾道計算、後に医療系・金融系プログラマ~SEを経て100~200人規模プロジェクトのジェネラルマネジャを数年経験、独立して起業。現在は不動産所得で半引退生活。
(人物特定を避ける目的で一部経歴を変更しています)

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
アクセスカウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR