Windows Subsystem for Linux
Windowsユーザーに贈るLinux超入門(マイナビ)
マイナビにてWindows Subsystem for Linux(WSL)の使い方入門が開始された。
本機能は2016年8月に登場したWindows 10 Version 1607から徐々に強化されてきた機能で、ある意味では過去にWindows Server向けに提供されてきたWindows Services for UNIXとか呼ばれてきたPOSIX互換機能に近い位置づけだが、ユーザースペースとカーネルとがコミュニケーションするSystem Callをエミュレート/トランスレートするという実装方法に違いがある。つまり、Linux用アプリケーションのSystem Callを変換してWindows NT Kernelで実行している。
…こうなってくると「それはLinuxなのか!?」という疑問が無くもない…「Windows用Linux互換レイヤー」とでも表現するのが適切に思える。
細かいことに文句を言っても仕方がないのだが、Free Software FoundationによればLinuxディストリビューションはGNU/Linuxと呼ばれるべきである。それはLinux KernelとGNU環境を組み合わせたものだからだといい、実際にRed Hat Enterprise LinuxのようなLinuxディストリビューションはLinux Kernel以外はGNUのコマンドやユーティリティー群に強く依存している。逆説的に言えばカーネルにLinux Kernelを用いることは必須ではなく、DebianのようにカーネルにFreeBSD Kernelを採用したGNU/kFreeBSDやGNI Hurdを採用したGNU/Hurdといったバリエーションも存在する。
その論調で言えばLinux互換レイヤー+Windows NT KernelでGNU環境を動作させるWSLはGNU/kWindowsNTとでも呼んだ方が適切という気がしなくもない。
ところで、もしWSLでDockerを動作せられるようになればLinux on LinuxでもLinux on WindowsでもないWSL on WSL on Windows NT Kernelなんてものも実現可能になる日が来るかもしれない。不具合はあるようだがWSL上でchrootすることも可能なようだし…
Intel Cannon Lake
Cannon LakeのCore i3-8121Uがこっそり発表、AVX-512命令対応もGPUは無効か
Intelによる最初の10nmプロセス世代製品(Tick世代)にして、2016年以来のSkylakeからのアーキテクチャー更新(Tock世代)にして、さらにCoreシリーズにAVX-512を導入するという、実に革新的な製品となるはずだったCannon Lakeだが、実に微妙な位置づけとなってしまった感がある。
興味深いのは、AVX-512対応でありながらXeon用のSkylake-SP(Skylakeを名乗りつつもAVX-512対応に併せてLoad/Store性能やメモリー階層が変更された別物)の流用ではなくSkylake-S - Kaby Lake-S - Coffee Lake-Sの系統からの拡張と見られる点ではなかろうか。
こうなってくると興味深いのは「AVX-512で速くなるのか?」という点だろう。
そもそもSkylake-SPでLoad/Storeとキャッシュ階層が拡張されたのは、従来の32 Byte/cycle(256-bit/cycle)では512-bit幅のSIMDに間に合わないことに起因する。それが、Load/Storeが32 Byte/cycleから強化されなかったということなら、Cannon Lakeでは演算ユニットも物理256-bitを2ハンプで論理512-bitを処理しているのだと推測できる(なにせ、仮にL1キャッシュにデータがあっても1回で半分しかロードできないのだから)。この場合、256-bit幅のAVX-2と比較して劇的には高速化しない可能性がある。
ところで、Intel Coreプロセッサーの対抗馬として存在感を高めているAMD Ryzenだが、Load/Store性能はCoreの半分(Load 16 Byte/cycle x 2、Store 16 Byte/cycle x 1)に抑えられ、AVX-2も実行こそ可能だが性能は抑えられている。そもそも、一部のワークロードを除けば整数演算が主体だし、256-bitともなるとレジスタファイルや演算ユニットで随分とリソースを食う(言い換えればSIMD演算ユニットやLoad/Storeユニットを簡略して、その分を別のリソースに回したり、あるいはコア数を増やしてリできる)し、広帯域のLoad/Storeユニットは発熱が馬鹿にならずIntelもAVX実行時には動作周波数を落としていたりする。一概にSIMD幅が大きいプロセッサーが速いとは言えない。