« 2011年1月24日

2011年1月25日の投稿

2011年1月28日 »

本ブログではCPUやGPUねたを書いているとはいえ、私は別段そのような仕事に従事しているわけではありません。また、大学でも物理を専攻したため、半導体の設計などの知識はありません。このため、CPUやGPUねたは、基本的にWEB上の記事の受け売りや目に見える数字(ダイサイズ、ベンチなど)を整理しているだけにすぎません。

とはいえ、プログラムを書く上でCPUやGPUの特性を知っていれば人よりも少しは前に進める可能性があるため、"プロセッサを支える技術"を読んでみました。

Hisa Ando氏は、MYCOMや"Ando's Processor Information Page"(毎週土曜日に更新される)の記事が書かれている方です。

非常に基礎的なところから、現代のCPU設計に関するところまで網羅しています。私にとって一番面白いのは"2.5マイクロアーキテクチャの発展"と"3.1マイクロアーキテクチャを支える技術"などが勉強になりました。細かい記載のため、全てを理解は出来ませんでしたが、キャッシュコフィーレンシとかこんなこと中でやっているのかと理解しました(マルチソケットの場合)。AMDのBarcelonaでTLBのバグがありましたが、TLBの役割とかもようやく理解できました。

単に興味がある内容だったため読みましたが、プログラムを書く上で勉強にもなりました。特に2点あります。

1点目は、スーパースカラーを意識した書き方です。例えば、ループアンローリングです。ループを減らす書き方をすれば性能が上がるそうです。なので、試してみました。ループ回数を減らすベンチ(Javascript)を書いてみました。

for (var i = 0; i < max; i = i + 2){
sum += i;
sum += i + 1;
}

Chromeで測定した結果は以下の様になっています(CPUはPhenom II X6 1090Tです)。

確かに効果がありました。1回加算と10回加算(ループ回数が10分の1)では20%近く時間を削減しています。JavascriptのJITでこの数字です。悪くないかも知れませんが、ソースの見づらさを考えるとマルチスレッドを多用したほうが効果がありそうです。シングルスレッド向上をあきらめてマルチコアに進む理由もこれならば分かります。

2点目は、掛け算よりも割り算の方がコストが高いところです。ソースは以下のようなもので試してみました。

掛け算ソース

var kakeru = 1 / waru;
for (var i = 0; i < max; i = i + 1){
sum += i * kakeru;
}

割り算ソース

for (var i = 0; i < max; i = i + 1){
sum += i / waru;
}

結果は以下になります。

K10(Phenom II)の割り算は、掛け算よりも多くのコストがかかっています。この数字にループアンローリングの1回加算のの1,900msを差し引いた値程度の差があります(整数加算のデータをそのまま使えないかも知れませんが)。毎回掛け算にすれば言い訳ではなく、掛け算の元の割り算の計算コストもあるため、同じ数字で2度割るのならば、最初に割り算を行い(掛け算の元)、それから掛け算を二回行えばの値がペイできる計算になります。

ThinkPad X201s(Nehalemコア)の場合は、また違ったデータになっているため全てのCPUにで同様の動作をするわけではなさそうです。

直感的でない書き方になりますが、割り算のコストを考えると多用する科学計算等には適用できるケースが多いかも知れません。

このほかにスラッシング(キャッシュの奪い合いによる性能低下)や、スーパースカラー&Out-of-Orderで制御ハザードやデータハザードを発生させないつくりにする方法も提示されていますが、それをソースに落とし込むのはちょっと難しいため書けませんが少し気にして書くと違うのかも知れません。

ただし最近はもっともネックであるHDDの遅さをメモリキャッシュしたりSSDに変更したりするほうが効果的なことがあります。メモリやSSDの速度はCPUから比べると相当遅いですが、それでもHDDから比べると相当早いため、効果を発揮していることを考えるとCPUの改善も限られるのかも知れません。

現在のPC向けCPUは、多くの改善が施されています。Sandy BridgeはuOPsキャッシュが効果的に動いていると言われていますし、Bulldozerもラディカルな構成になると言われています。このため、本書で扱われている内容を超えた機能が盛り込まれ始めています(本書ではNehalemを例に取り上げています)。

現在のトレンドを見るには少し内容が足りないかと言うとそうでもなく、ちょうどARM系CPUがPC向けCPU並にリッチになろうとしているため(Out-of-Orderの搭載もARM Cortex-A9から。ARM Cortex-A15から仮想化の導入。)、ARMチップの進歩を見守るにはちょうど良いと思います。

WEB上の資料を漁っても本書の様に細かく説明しているのはほとんどありません。このため、本書を片手にCPU開発記事を眺めてみるのも良いのではないでしょうか。

また上記でテストしたソースは、ソース置き場のcputestcode.htmlです。興味があれば使ってください。

櫻吉 清(さくらきち きよし)

« 2011年1月24日

2011年1月25日の投稿

2011年1月28日 »

» このブログのTOP

» オルタナティブ・ブログTOP



プロフィール

櫻吉 清

櫻吉 清

IT業界ウオッチを趣味としている。知的好奇心の趣くままに何でもチャレンジして、とりあえず壁にぶつかってみる。

詳しいプロフィール

Special

- PR -
カレンダー
2013年4月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
kichi
Special オルタナトーク

仕事が嫌になった時、どう立ち直ったのですか?

カテゴリー
エンタープライズ・ピックアップ

news094.gif 顧客に“ワォ!”という体験を提供――ザッポスに学ぶ企業文化の確立
単に商品を届けるだけでなく、サービスを通じて“ワォ!”という驚きの体験を届けることを目指している。ザッポスのWebサイトには、顧客からの感謝と賞賛があふれており、きわめて高い顧客満足を実現している。(12/17)

news094.gif ちょっとした対話が成長を助ける――上司と部下が話すとき互いに学び合う
上司や先輩の背中を見て、仕事を学べ――。このように言う人がいるが、実際どのようにして学べばいいのだろうか。よく分からない人に、3つの事例を紹介しよう。(12/11)

news094.gif 悩んだときの、自己啓発書の触れ方
「自己啓発書は説教臭いから嫌い」という人もいるだろう。でも読めば元気になる本もあるので、一方的に否定するのはもったいない。今回は、悩んだときの自己啓発書の読み方を紹介しよう。(12/5)

news094.gif 考えるべきは得意なものは何かではなく、お客さまが高く評価するものは何か
自社製品と競合製品を比べた場合、自社製品が選ばれるのは価格や機能が主ではない。いかに顧客の価値を向上させることができるかが重要なポイントになる。(11/21)

news094.gif なんて素敵にフェイスブック
夏から秋にかけて行った「誠 ビジネスショートショート大賞」。吉岡編集長賞を受賞した作品が、山口陽平(応募時ペンネーム:修治)さんの「なんて素敵にフェイスブック」です。平安時代、塀に文章を書くことで交流していた貴族。「塀(へい)に嘯(うそぶ)く」ところから、それを「フェイスブック」と呼んだとか。(11/16)

news094.gif 部下を叱る2つのポイント
叱るのは難しい。上司だって人間だ、言いづらいことを言うのには勇気がいるもの。役割だと割り切り、叱ってはみたものの、部下がむっとしたら自分も嫌な気分になる。そんな時に気をつけたいポイントが2つある。(11/14)

news094.gif 第6回 幸せの創造こそ、ビジネスの使命
会社は何のために存在するのでしょうか。私の考えはシンプルです。人間のすべての営みは、幸せになるためのものです――。2012年11月発売予定の斉藤徹氏の新著「BE ソーシャル!」から、「はじめに」および、第1章「そして世界は透明になった」を6回に分けてお送りする。(11/8)

オルタナティブ・ブログは、専門スタッフにより、企画・構成されています。入力頂いた内容は、アイティメディアの他、オルタナティブ・ブログ、及び本記事執筆会社に提供されます。


サイトマップ | 利用規約 | プライバシーポリシー | 広告案内 | お問い合わせ