Subscribed unsubscribe Subscribe Subscribe

Schi Heil と叫ぶために

hiroakiuno's blog

白井健三と大谷翔平に共通する運を引き寄せようとする考え方

生きるヒント

今週の報道ステーションで、ひねり王子こと白井健三のインタビューがあった。リオオリンピックで決めた新技シライ2は本番まで一度も成功したことなかったのに、欲してこそスポーツと考えて本番で挑戦したのだとか。一つ一つの言葉が独特で才能が隠しきれずにあふれ出てる感じを受けたが、中でも先輩の内村航平について語っている以下の部分がとても印象的だった。

「航平さんは調子が良くても悪くても、毎日やることが変わらない。僕は調子が悪いときは同じ技に本数をかけてしまったり、調子が良い時と同じことが出来ない。運が向くような練習をしている。世界チャンピオンになるべき存在」と語った。五輪について「良いイメージを持っていますし、五輪は味方」と語った。
価格.com - 「報道ステーション」2016年9月26日(月)放送内容 | テレビ紹介情報

運を自分に向けようと考えている。

これ実は日本ハム大谷翔平と同じ考え方。大谷が花巻東高校時代に書いた有名な目標達成シート(マンダラート)というのがある。ドラ1・8球団という目標を真ん中に書き、それを達成するための8個の要素を周りに書くのだが、その1つに運を挙げている。そしてその運を向上させるために、あいさつを心掛け、ゴミ拾いをし、読書し、審判を敬うんだそうだ。高校生の考えとは思えない。

http://m.sponichi.co.jp/baseball/news/2013/02/02/jpeg/G20130202005109500_view.jpg
newspicks.com

で、その大谷は昨日マジック1で登板が回ってきて、1安打完封で優勝を決めた。最大11.5ゲーム差をひっくり返した大逆転の胴上げ投手。エースだからいい場面で投げるのは当然というのもあるが、実はマジックは前日に既に1だったものの、日本ハムは負けソフトバンクは勝ち大谷に回ってきた。

何かに導かれるように回ってきた大一番で、自身初の1安打完封。自身が持つ球団記録にあと1つに迫る15三振を奪い、4年ぶりのリーグ制覇に導いた。「込み上げてくるものがあったけど(9勝目を挙げ、首位を奪取した21日の)ソフトバンク戦とは違って淡々と冷静に投げることができた」。9連勝で3年連続2桁の10勝目。前人未到の「10勝、20本塁打、100安打」を成し遂げた。

優勝してこその二刀流…大谷、栗山監督に約束「今年日本一に」 ― スポニチ Sponichi Annex 野球

何かに導かれるように回ってきた。何かというのは単なる数学的なランダムな運ではなく、天才が努力して引き寄せようとした運なんだろうなと思った。

書評とまとめ - コンピュータアーキテクチャ技術入門 高速化の追求×消費電力の壁

books

私はソフトウェアエンジニアだが、組み込み系なのでハードの知識を求められることも多い。最近一層それが求められる方面に自ら飛び込んだので、知識を補足する教科書を読みたいと思っていた。教科書といっても論理回路電磁気学を勉強し直すとかじゃなくて、組み込みのデバイスを選定したり、システム構成の一長一短を見極めたりする際のハード面の俯瞰した知識。1冊でドンピシャの教科書があるわけないとは思うが、デキる人が経験の裏に持っている整理された知識とか応用を利かす際にベースとなる考え方とかがなるべく吸収できる本。

そんな目的で今回選んだ本がこれ。

コンピュータアーキテクチャというとパタヘネ本が思いついたが、俯瞰は十分できるだろうが分量が多く、費用対効果という点でおいしさに欠け避けた。パタヘネ本に限らず、コンピューターアーキテクチャの教科書というと、2進数や浮動小数点の説明から始まり、論理回路やブール演算、命令の話がきて、高速化の話がくるのが一般的。この本は WEB+DB PRESS なのでターゲット読者はソフト寄りだが、そういった教科書の流れは踏襲している。ただ掘り下げるところと端折るところのバランスは実践的で私が求めているものに近かった。

目次
第1章 コンピュータシステムの基本
第2章 プロセッサ技術
第3章 並列処理
第4章 低消費電力化技術
第5章 GPU技術
第6章 メモリ技術
第7章 ストレージ技術
第8章 周辺技術
第9章 データセンターとスーパーコンピュータ
詳細はこちら

2014年6月初版と比較的新しく、例えば第8章で入出力インターフェースを説明する際に、キーボードじゃなくてタッチパネルを掘り下げている点や、第9章として GoogleAmazon のサーバー用途のコンピューターの特徴や、スーパーコンピュータ「京」についても書かれている点は特徴だと思う。ただ、私が感じたこの本の一番の特長は、CPU/GPU/並列処理/メモリ/ストレージ/周辺技術という一般的な構成に加えて、低消費電力化技術を章にしている点じゃないかと思う。CMOS だからスイッチすると電力を食うという話から始まり、リーク電流、さらには big.LITTLE や ACPI の電源管理ステートの話、そしてレギュレーターの電源効率のようなシステム面で省電力につながるポイントに加えて、最後は省電力のためのプログラミングテクニックまでが第4章という35ページに詰まっている。35ページなのでざっくりと言えばざっくりだがソフトエンジニアが読むハードウェア本としてはいい分量だと思う。

あえて不満というか要望を上げるとすれば、

  • GPU の章はもう少し突っ込んだ解説が欲しかった。CPU と GPUアーキテクチャの違いや、GPGPU ネタも述べられていたが、例えばハイエンド GPU とローエンド GPU でどの辺が違うのかとか指標みたいなのが知りたかった。
  • I2C や SPI などのバス周りについても解説が欲しかった。PCI Express や USB は少し触れられているが、その他のバスやバスのアーキテクチャ等はふれられていない。

割り切った本を探しておきながら、あれもこれも欲しかったというわがままだが参考まで。

最後に、本の中で「それ、知りたかったこと。アタリ!」と思った部分を列挙しておく。技術本を読むときはこれが多ければ多いほど求めていた本である。どこが心に響くかは人によって違うのであくまで自分の備忘録だが、頭の整理もかねて、質問を自分で作って Q&A 方式にしてみた。

Q.1) 1次キャッシュは I と D に分かれているのに、なぜ2次キャッシュは分かれていないんだろう?

(p.95)
このため、最近のコンピューターでは、命令とデータを分離した1次キャッシュを持つプロセッサが一般的になっています。一方、2次キャッシュは、1次キャッシュをミスしたアクセスだけを処理するので、1次キャッシュの1/10以下とアクセス頻度が低くなり、1次キャッシュほど忙しくありません。このため、命令とデータは分離せず、共通のキャッシュとするのが一般的です。

Q.2) Intel であれ ARM であれ、最近の CPU の話には必ず仮想化が出てくるが、仮想化ってぶっちゃけ誰が何の用途にそんなに必要としているんだろうか?

(p.144)
仮想化は1967年にIBMメインフレームで実用化された長い歴史を持つ技術ですが、Webサーバーのホスティングで一気に普及が加速しました。
(中略)
サーバー統合を行うと、必要なサーバー台数が減り、ハードウェアコストや電力コストが減ることから、企業での仮想化の導入が進みました。
また、仮想化を使うと、1つの仮想マシンで動いていたOSやアプリケーションを、実行を中断することなく、別の仮想マシンに移すジョブマイグレーションも可能になります。
(中略)
このように、現在では、仮想化はデータセンター運用の柔軟性を確保する上で不可欠の技術となっています。

Q.3) pthread などソフトウェアのマルチスレッドと、Intel などの CPU の説明にあるハードウェアのマルチスレッドってどう違うのか?

(p.156)
ハードウェアの方では、1つのプロセッサコアで複数の命令列を並行して実行できる能力を持つ場合、プロセッサが「マルチスレッド」機能を持つと言います。

(p.165)
用語が紛らわしいのですが、p.156 のコラムで説明したとおり、ハードウェアで言う「マルチスレッド」は、それぞれのスレッドが個別の命令とデータ空間を持つプロセスを実行することができ、ソフトウェアで言うスレッドしか実行できないということはありません。

Q.4) 最近は組み込みでもメモリバンド幅不足が問題になることが多いが、DDR や LPDDR ではなく GDDR 使うという案はだめなのか?値段だけか?

(p.277)
GDDR5 DRAM は高性能ですが、システムとして大きなメモリ容量が実現できないこと、消費電力が大きいこと、値段が高いことから、メインメモリとしての使用には向かず、もっぱら、高性能GPUや高性能の演算アクセラレータのメモリとして使われています。

Q.5) LPDDR は普通の DDR と比べてなぜ値段が高くなるのか。需要と供給の関係だけか?

(p.278)
シリコンウェファから切り出した DRAM チップを研磨して薄く加工して、積層して組み立てるという手間が掛かるので、通常の DDR3 DIMM と比べるとビット単価が高くなります。

2016年の世界のリスクを集めてみた

2016年世界の何大リスクというよう雑誌記事を連続で目にしたら、どれが共通でどれが差分なのか気になり、せっかくなので他の有名どころのリスク分析も集めて整理してみた。今回集めたのは、

  • 世界経済7つのリスク (Newsweek 2016年3/1号)
  • 日本企業を取り巻く8つのリスク (東洋経済 2016年3/12号)
  • 発火の可能性が高いグローバルリスク Top 5 (世界経済フォーラム Global Risks Report 2016)
  • 実際に発火した場合に影響が大きいグローバルリスク Top 5 (世界経済フォーラム Global Risks Report 2016)
  • 2016年のトップ・リスク (米ユーラシア・グループ)
  • Global Risks 2016 (2016年版PHPグローバル・リスク分析)

順に列挙すると、

世界経済7つのリスク (Newsweek 2016年3/1号)

  1. Gゼロ
  2. 石油
  3. PIGS
  4. ドイツ銀行
  5. 自動取引
  6. BRICS
  7. 恐怖そのもの

Newsweek (ニューズウィーク日本版) 2016年 3/1 号 [世界経済 7つのリスク]

Newsweek (ニューズウィーク日本版) 2016年 3/1 号 [世界経済 7つのリスク]

日本企業を取り巻く8つのリスク (東洋経済 2016年3/12号)

  1. マイナス金利
  2. アップルショック
  3. 円高転換
  4. 資源安
  5. 米国ピークアウト
  6. 中国異変
  7. インバウンド失速
  8. 消費税先送り

発火の可能性が高いグローバルリスク Top 5 (世界経済フォーラム Global Risks Report 2016)

  1. Large-scale involuntary migration (大規模な難民問題)
  2. Extreme weather events (極端な気象変動)
  3. Failure of climate change mitigation and adaptation (気候変動緩和策の失敗)
  4. Interstate conflict with regional consequences (国際紛争)
  5. Major natural catastrophes (自然災害)

Global Risks 2016 - Reports - World Economic Forum (訳はこちらを利用)

実際に発火した場合に影響が大きいグローバルリスク Top 5 (世界経済フォーラム Global Risks Report 2016)

  1. Failure of climate change mitigation and adaptation (気候変動緩和策の失敗)
  2. Weapons of mass destruction (大量破壊兵器)
  3. Water crises (水危機)
  4. Large-scale involuntary migration (大規模な難民問題)
  5. Severe energy price shock (エネルギー株の極端な価格下落)

Global Risks 2016 - Reports - World Economic Forum (訳はこちらを利用)

2016年のトップ・リスク (米ユーラシア・グループ)

  1. 同盟の空洞化
  2. 閉ざされた欧州
  3. 中国の占有スペース
  4. IS と「友人」たち
  5. サウジアラビア
  6. 科学技術者の興隆
  7. 予測できない指導者たち
  8. ブラジル
  9. 十分でない選挙
  10. トルコ

ユーラシア・グループ「2016年のトップ・リスク」

Global Risks 2016 (2016年版PHPグローバル・リスク分析)

  1. 中国経済悪化と国際商品市況低迷に挟撃されるアジア中進諸国
  2. 止まらない中国の海洋進出が招く緊張の増大と拡大
  3. 深まる中国依存と主体思想の狭間で揺れ動く北朝鮮
  4. テロと移民問題がもたらすEUの亀裂と反統合の動き
  5. グローバル化するISILおよびその模倣テロ
  6. 加速するサウジアラビアの国内不安定化と原油市場の混乱
  7. 地域覇権をめざし有志連合内で「問題児化」するトルコ
  8. 選挙イヤーが宙づりにする米国の対外指導力
  9. 金融主導グローバル化の終焉で幕が開く、大企業たたきと「P2P 金融」時代
  10. 加速するM2M/IoTが引き金を引くサイバー脅威の現実化

政策シンクタンク PHP総研 外交・安全保障 政策研究・政策提言 「PHPグローバル・リスク分析」2016年版

という感じ。

ちなみに、今回驚いたというか発見だったのが Newsweek に書いてあった中国の GDP 成長率の情報は信頼できないという説明。中国が GDP 成長率目標を 7% から 6.5% に下げたというようなニュースはよく耳にしていたが、そのたびに 6.5 % でも十分高いじゃん、そんなに問題なんだろうかとずっと思っていた。

それに対して中国政府が発表している数値は信頼できず実際はもっと低いと。調べてみると確かにそうらしい。ややこしいもんだ。

FinTech をはじめとする X-Tech ってどれくらい種類あるのか

先日、いつもの美容室に行ったらクレジットカード決済の方法が従来のものから楽天スマートペイに代わっていた。これも FinTech の一つなんだろう。

昨年 2015 年の技術トレンドの一つに、動画サービス、AI、IoT、シェアリングエコノミーなどと並んで FinTech がある。

Finance × Technology で FinTech だが、技術やビジネスの盛り上がりはともかく、「× Technology」 って安易だよなと思っていた。だいたい何か新しいことすれば Technology だろうし、昔からバイオテクノロジーと言うように Technology つけることに目新しさはない。でもそういえば、ちょっと前は AdsenseAdWords みたいな広告技術をアドテク(Ad×technology)って言ってなと思い出し、きっとブームにあやかってこの手の略語がごまんとあるんじゃないかと思って調べてみた。どうやら X-Tech と呼ぶらしい。つまり X はパラメータで何でもでもありですよと。

FinTech に続くメジャーどころとしては、EdTech(教育×Tech) が見つかる。以前からある Skype 英会話なんかもここに属するんじゃないかと思う。あとは MediTech(医療xTech)HealthTech(ヘルスケアxTech) がある。その他、AgriTech(農業xTech)RETech (不動産×Tech)SportTech(スポーツ×Tech) あたりは確かになと思うところがある。FoodTech(食×Tech) は名前からはピンと来なかったが、配達に関する進化が生鮮食品まで及んでいることは最近よくニュースで見かける。

ただ、FashTech(ファッションxTech) までいくと略語にちょっと無理が出てくるし、GovTech(公的分野xTech) に関しては略語にあやからず行政の技術革新がんばろうと言いたい。

追記

他にもいくつか見つけた。LegalTech というのは思いつかない組み合わせだった。

書評 - 大世界史 現代を生きぬく最強の教科書

books

ここ最近日本人以外の人と仕事をする機会が増えた。言語能力の問題で言いたいことが言えなくて苦しむことも多いが、ちょっとした会話の際に文化や歴史認識の間違いが心配で発言をためらうこともある。また地政学リスクという言葉もよく聞くようになった。世界全体がなんだか混乱していて先が不透明だ。
そんな中、中東問題をはじめ特に宗教が絡んでいる最近のトピックスを少しでも理解したいというモチベーションで読んでみた。中東をはじめ、中国、ドイツ、ロシア、アメリカ、沖縄などの幅広い問題が歴史と紐づけて説明されていた。

「情と理」というフレーズがある。最近私の仕事では理の方を強く求められていると感じているが、人間を相手にする以上、論理だけではうまくいかないものもある。なんかあいつ嫌いだからというのはよくある情の一つだが、もっと広く考えると、歴史や宗教に関係する問題もそうだと思う。

だからこそ、主婦やビジネスパーソンにも、歴史を学ぶ意味があります。一人の人間が、人生のなかで経験できることには限りがある。しかし、歴史を学ぶことによって、自分では実際には経験できないことを代理経験できる。こうした代理経験を積むことは、単なる娯楽にとどまりません。より直接的に、人生に役立つのです。論理だけでは推し量れない、現実の社会や人間を理解するための手がかりになるからです。

ごみ × IoT でスマートごみ収集

以前から不便だと感じているものの一つに毎週決められたごみの日がある。この前の年末年始も大掃除を済ませてすっきり帰省と行きたかったがごみの日は次の日で、仕方なくごみは家で年越しした。

前日から出しておけば近隣の問題になるし、かといって明日ついでに出しといてという近所づきあいにも無理がある。最近シェアリングエコノミーとかマッチングビジネスが流行っているのでそれに絡めて「いい感じ」に解決できないかと考えたことはあるが、やはり物理的にもごみで心理的にもごみなので難しい。

そんな中、この問題を別の角度から IoT と絡めて解決しようとする Enevo というサービスを見つけた。

vimeo.com

こちらの PDF によると、ごみ処理コストの約半分は収集・運搬費らしい。そこで毎週決まった日にごみがあろうがなかろうが回収に行くのではなく、ごみ箱にセンサーをつけ、超音波でごみの量を測り、収集側にフィードバックし、効率よく回収するという仕組みだ。

調べると Enevo の他にも Smartbin という類似のサービスや、センサーではなくごみ箱そのものの BigBelly Sorlar というサービスもある。BigBelly Sorlar は日本でも大学のキャンパスを使って実験が始まっているそうだ。

流行りの IoT にあやかったスマート○○というサービスが山のようにあるが、実際にスマートなのはそれほどない。IoT がらみのスマートなよい例として覚えておこう。

big.LITTLE の制御ソフトウェア技術を整理してみよう (その3)

前々回前回からの big.LITTLE の勉強の続き。

続いて big.LITTLE MP (GTS) について。例によって

からポイントを引用すると、

 前回の記事でbig.LITTLE MPもIKSと同じCPUのオペレーティングポイントを使っていると書いたが、これは古い仕様で、現在は異なるという。ARMによると、big.LITTLE MPでは、Linux/Unixでのスケジューラへのキューである「run queue」から得られる「load average」によるCPU負荷の値を使っているという。原則的にはrun queueでの占有率が高くなり、load averageの比率が一定を越えると、そのCPUコアをLITTLEコアからbigコアへと切り替える仕組みだ。

ここで、run queue と load average について調べる。まず run queue というのは実行可能なプロセスが登録されているキューのこと。run queue は CPU ごとにある。

実行可能なプロセスはRUNキューに登録されます。Linuxカーネル2.6のRUNキューは実行優先度ごとにスロットを用意しています。

(略)

マルチプロセッサシステムでは、RUNキュー(activeキューとexpiredキューの組み)をCPUごとに用意します。CPUごとに用意したプロセススケジューラは、そのCPU用のRUNキュー上のプロセスに対して働きます。この構造により、特定のプロセスは、毎回特定のCPU上で実行されることとなり、キャッシュメモリやTLBが有効利用されます。

UNIX USER 2004年6月号「Linuxカーネル2.6解読室」より転載:プロセススケジューラの実装――プロセススケジューリング(その4) (1/2) - ITmedia エンタープライズ

次に load average は CPU 使用率とは異なるシステム負荷指標で、

Linuxロードアベレージは「ロードアベレージは過去1分、5分、15分の間の実行待ちプロセス数の平均数 = 実行したくても他のプロセスが実行中で実行できないプロセスが平均で何個ぐらい存在してるか」を示す値です。ボトルネックが CPU、メモリ、ディスク等々どこにあるかは関係なく、仕事の実行までにどれぐらい待たされているかを示す値なので、システムのスループットを計測する指標の入り口になる値です。
マルチコア時代のロードアベレージの見方 - naoyaのはてなダイアリー

とのこと。

で、big.LITTLE の記事に戻ると、

 big.LITTLE MPではrunqueueから得られるload averageによってCPU負荷の情報を得ている。big.LITTLE MP側には負荷に対するマイグレーションしきい値(migration threshold)が設定されており、それを越えるとコアを切り替える。ただし、LITTLEからbigへとアップする時のしきい値と、bigからLITTLEへとダウンする時のしきい値は異なる設定がされている。

とある。最大のポイントは IKS では「CPU 使用率」を見て「big と LITTLE のコア」をガチャンと切り替えていたのに対し、big.LITTLE MP では「load average」を見てタスクの 「big と LITTLE への割り当て」を変えていることだろう。ちなみに load average と CPU 使用率との違いは

がわかりやすい。

また big と LITTLE が頻繁に切り替わりすぎないようにヒステリシスを設けていることが上記からわかるし、

現在のbig.LITTLE MPの場合は、これまでロードしたことがない新しいスレッドをローンチする場合には、まずbigコアに割り当てる仕様となっているという。

 ただし、この場合、全てのスレッドが必ずLITTLEコアに割り当てられて立ち上がると、ムダな電力消費が生じてしまう。そこで、big.LITTLE MPではヒストリテーブルをスレッド毎に参照することで、負荷が小さいスレッドはLITTLEコアに割り当てる操作を行なっているという

という風に、初期の割り当てをどうするかや履歴を見てインテリジェントに割り当てるなどの工夫がされている。

最後に、IPA と EAS について。前々回に用語を整理していた際は、GTS -> IPA -> EAS という進化なのかと思ったが、もう少し資料を読んでみると big.LITTLE 技術としての進化は GTS -> EAS であって、IPA はその前提となる技術のようだ。少なくとも IPA は big.LITTLE に限った話ではなさそうで、熱の予測を考慮して CPU の電力を変えるという技術のようだ。Linux の mainstream にも取り込まれている。Proactive という単語が強調されているように、IPA のポイントも熱の「先読み」「予測」になっている。

で、IPA も踏まえて GTS を発展させたのが EAS みたい。EAS のポイントは、GTS の load average に加えて、IPA の熱の予測も踏まえ、また従来の DVFS も含めて、負荷/熱/電力/周波数をトータルでコントロールするために big.LITTLE を用いる仕組みということのようだ。

  • Energy Aware Scheduling
    • Integrates CPU capacity awareness, Energy model, DVFS & Idle into mainline Linux scheduler
    • Designed to support a wide range of topologies
    • Prototypes running today

https://s3-ap-southeast-1.amazonaws.com/dgfactor/arm2015/Taipei/A2_ThermalVision_v5_Techcon2_TM_v1+-+Taiwan_Thomas+Molgaard.pdf

その他、まだ全然読めていない記事や参考資料。