2018-07-06

Windows 10 + Snapdragon 835を採用したASUS NovaGoを手に入れてみた

これはWindows/arm64 (Windows on Arm) を採用し、Snapdragon 835を搭載したラップトップ。まずこのarm64を採用したWindowsの最初のリリースはHP Envy x2とこのASUS NovaGoLenovo Miix 630はこの3機種。HPのは3月リリース、Lenovoのは6月。ASUSは4月くらいにはリリースされてたようなんだけど、6月になってやっと手に入りやすくなった。NovaGoがAmazon.com (US)で入手可能になったので手に入れてみた。なおUSのMicrosoft Storeでもオーダー可能になってる (日本へ発送可能かは知らない)

お値段は、本体価格が699ドル+送料で、781.08ドル。輸入コストも考えると比較的安く手に入った。(ホントは6月にアメリカ行ってる時に現地で入手したかったけどどこにもなかった)

普通に起動 & セットアップして、Windows Sモードを解除 (Microsoft StoreでWindows 10 Proを入手すればいいだけ。無償) した後、いろいろテストしてみた。


アプリケーション

  • Edgeは当然のことながらネイティブアプリケーション
  • x86なアプリケーションを動かすためのJITはXTCACHEというプロセスがやっている模様
  • arm64なネイティブアプリ以外にも、arm 32bit (ARMNTと呼ばれるThumb2モードのみのもの。Surface RTとかWindows Phone 8以降で使ってたモード。これもネイティブで動作可能)、x86 (これはJIT使って動的にarm64へ変換してるはず)、と3つのアーキテクチャをサポートしてる
  • \Windows\SysWow64、\Windows\SysArm32、\Windows\System32と各CPUモード毎にSystem32ディレクトリがある。なお、\Program Filesも\Program Files (Arm)とか\Program Files (x86)とか存在する
  • Windows Subsystem for Linuxはversion 1803に上げると使える。
  • Internet Explorer 11も含まれているけど、どうもx86版のみ
  • Firefox (x86)は動作するけど、Chrome (x86)はVersion 1709だとちょくちょくクラッシュする。Version 1803にすれば安定するし、パフォーマンスもちょっとよくなる

WebブラウザのJITで生成されたコードをJITでarm64に変換するのはよりコストがかかる (モジュールだったら一回コンパイルした後キャッシュ持てばいいだけだし) ので、もっと遅いかと思ったら、まぁこんな程度でしょう的な感じ。これはFirefoxでSunSpiderを実行した結果

Edgeだと


開発環境

  • Visual Studioはx86なら動くのでインストール可能。x86_arm64なクロスコンパイラがあるので、これでクロス環境でなくてもネイティブアプリを作ることはできる (amd64_arm64なコンパイラだと起動できないため)
  • デバッガ (cdb、windbg) はネイティブ版 (arm64) がWindows SDKに含まれているので、それを使えばネイティブアプリをデバッグ可能
  • 生成コードを見る限りUNIXなAArch64 ABIと同様。ARMNT (Thumb2) の時と同様これはarmの定義したABIをそのまま使ってる
ファーストインプレッションはこのような感じです。

2018-02-17

x86/x64最適化勉強会に行ってきた

申し込もうと思ったら、もうすでに満席だったのでLTやるということで参加できた。セーフ。

何をLTで話そうと考えてたのだけど、ScalewayのARM64クラウドが思ったよりパフォーマンスがよくなくて、その理由を調べてたところこれがThunderXを採用してたために遅かった。それでいろんなベンチマークを取ってたら20ドルで買ったPINE64よりも遅い話が見つかったのでnssのコードを書くのとARMv8の勉強を兼ねて発表してきた



FirefoxではOpenSSLを使わずにNetscape由来のnssというライブラリを使っていて、今はRedHatと共同開発ということになっている。これがARMの上だと全く最適化を入れていない (昔ARMv7の頃に最適化は自分が書いた) し、ARMv8にはせっかくAESとかSHA256とかのハードウェア命令が入っているので、それを使ってみようということで3日間くらい仕事終わりの深夜にコードを書いてた。

パフォーマンスデータもCortex-A72とかNVIDIA Danverとかのデータを取りたかったけど、android/aarch64用にベンチを取るためのコンパイル環境を整える時間がなかったので、取ってない。取ったら資料をアップデートするかも。Cortex-A72の解析用にHiKey960買おうかな。

ということで、いろいろ勉強にはなったので、後でパッチを投げておく。たぶんFirefox 62には間に合えばって感じで。

2018-01-02

2017年に買った物

デスクトップPC

家のデスクトップPCはずっとSandBridge世代を使ってたので、デスクトップをi7-7700で組直した。以前のPCはそのままicecreamのクラスタに参加してるので、これで家のビルド環境は1.5倍くらいには早くなったと思う。


YubiKey 4

今働いてる会社だと2段階認証を使ってるので、いちいちスマホで認証するのも面倒だってことで、会社で使ってるワークステーション用に購入。便利ですよね、マジで。これを複数買うって言ってる人達の気持ちが非常に分かります。2018年はFirefoxでもFIDOサポート入るしね


GPD Pocket

LibrettoやVAIO Pのオーナーだった自分としては買わないと行けないでしょ!ってことで購入。でもキーボード配列が変態過ぎるためコーディングには使いづらいし、スペースキーを深く押さないと認識してくれないので、LibrettoとかVAIO Pとかはキーボードが超優秀だったんだなと改めて認識した。

ということで使う時はLGのBluetoothキーボードとともに使ってる。

OSはDebian/sidに入れ替えたのだけど、最新カーネルを使わないとブートしないとか音が鳴らないとかbluetoothを使うためにはちょっとしたスクリプトを実行する必要があるとか細かい不具合はあるのだけど、Libretto 20の頃なんてUSB-FDDを使うためにドライバ書いたりしたけど、今は楽になったなぁと感じる。



Amazon Echo Plus

Alexa使ってみたくて。でもAmazonのオーダーを試そうとしたけど、自分の欲しいものを上手く認識してくれない。また音楽もロックやダンスミュージックばかりで、これも認識するのが非常につらい。まだ自分にとっては音声認識は早かった模様。

ということで目覚ましと天気予報として使ってる。2万円する目覚まし時計ですね。