ビジネス WinDbg入門 アクティブなスレッドと非アクティブなスレッド


新しいCPU時代のソフト開発

Herb Sutter氏のこの論文を紹介する第7回目は次の段落を取り上げます。まずは原文と訳文(要点訳)をご覧ください。なお、念のために申し上げておきますが、筆者はこの論文の翻訳許可をSutter氏から受け取っております。

Okay. So what does this mean?

A fundamentally important thing to recognize about this list is that all of these areas are concurrency-agnostic. Speedups in any of these areas will directly lead to speedups in sequential (nonparallel, single-threaded, single-process) applications, as well as applications that do make use of concurrency. That’s important, because the vast majority of today’s applications are single-threaded, for good reasons that I’ll get into further below.

Of course, compilers have had to keep up; sometimes you need to recompile your application, and target a specific minimum level of CPU, in order to benefit from new instructions (e.g., MMX, SSE) and some new CPU features and characteristics. But, by and large, even old applications have always run significantly faster?even without being recompiled to take advantage of all the new instructions and features offered by the latest CPUs.

That world was a nice place to be. Unfortunately, it has already disappeared.

この段落の要点は次の通りです。
そろそろ、問題をはっきりさせよう!

私たちはすでに次の3つのCPU設計者の視点を確認している。

クロックスピード(半導体技術 => 処理の高速化)

命令実行の最適化(回路設計 => 処理量の増大)

キャッシュ(回路実装 => メモリアクセスの削減)

これら3つの視点を眺めると分かるように、これまでのCPU設計には"同時実行"という視点は加味されていない。この3つの視点から速度向上を目指した場合、基本的には、シーケンシャル(非並列、シングルスレッド、シングルプロセス)アプリケーションの実行速度は間違いなく向上する。もちろん、"同時実行"を重視したアプリケーションの実行速度も当然向上する。ところが、今日利用されているアプリケーションの多くは、シングルスレッドである。マルチコア時代に入る今、後述するように、これは深刻な問題である。

新しいCPUが設計されれば、コンパイラーライタもそれに応じた修正を加えてきた。新規に追加された命令(MMXやSSEなど)や機能・性能を活用するためには、CPUの新仕様を見極めた上で、既存アプリケーションを再コンパイルする必要がある。これは面倒な作業といってよい。しかし、このような面倒な作業を一切行わなくとも、私たちのレガシーアプリケーションは新しいCPU搭載システム上で以前よりはるかに高速に動作するはずである。なんと素晴らしいことだろう!いや、この表現は正しくない。素晴らしいことだった、と過去形にすべきだ。そう、タダの昼飯にありつける時代は終わっている。問題をはっきりさせたところでいよいよ核心に迫りたい。


問題がはっきりしたようです。問題とは、現在の多くのアプリケーションが「1CPU+1スレッド」を前提として作られていることです。この前提は、「マルチコア+マルチスレッド」時代に対応できません。ある前提に問題がある場合、その前提の下で誕生したすべての結論は問題を含むことになります。私たちは今後、どのような前提を身に付ける必要があるのでしょうか。次回記事を楽しみに待ちましょう。

高速データ処理技術を研究されている新庄敏男氏は、"最近、データベースを知っている若い人にあったことがありません!"、と筆者に語っています。筆者は同氏のこの発言の真意を、"おそらく、ああいうことを指摘したいに違いない!"と推察できます。そして、この本の出版に関係した当時を思い出していました。その書籍には、米国ライフル協会がアセンブラーで開発した猪狩りゲームが入っています。そのゲームは、今は古めかしいマイクロチャネルアーキクチャーバスを前提とするものでした。筆者は、そのゲームをこれまた古めかしいISAバス用に移植しました。周囲にいた関係者の多くは、"その移植作業はやめたほうがよい"、と筆者をののしりました。筆者は、彼らの冷たい視線を浴びながら、5分くれ、後5分、と時間をせびり、終に完成させました。筆者は今、このような記事を楽しく読んでいます。

前へ | 次へ


 WinDbgスクリプティング講座  ホーム


Copyright©豊田孝 2004- 2008
本日は2008-12-04です。