GDIの同時実行を実現
Windows 7で、ウインドウ表示のレスポンスを高めているもうひとつの要素が、古くからある2DグラフィックスAPI「GDI」の同時実行機能だ。
Vistaでは、複数のウインドウを同時に表示する場合、各アプリケーションからのGDI命令を受けて、サーフェスに表示できるように変換する「GDIグラフィックスタック」が、排他制御で処理をしていた。GDI命令がGDIグラフィックスタックに渡されると、GDIグラフィックスタックがGPUにデータを順番に渡していた。
そのためVistaでは、あるアプリケーションのウインドウ表示が終了するまで、別のアプリケーションのウインドウ表示が待たされていた。そのときに、画面表示中のアプリケーションがHDD上の仮想メモリーからメモリーをページング(スワップイン)する必要が出た場合、GDIグラフィックスタックをロックしたまま、HDDからデータを呼び出すことになる。これもまた、画面表示に時間がかかる大きな理由になっていた。
![]() | ![]() | |
|---|---|---|
| Vistaでは、GDIグラフィックスタックは排他制御で動作する。そのため1度にひとつのアプリケーションしか処理できない | Windows 7ではGDIの同時実行機能により、複数のアプリケーションの表示を同時に処理できる(Windows 7の開発担当者ブログより引用) |
そこでWindows 7では、GDIグラフィックスタックの機能を見直し、排他制御するのではなく、複数のアプリケーションが同時に、GDIによるウインドウ表示をできるようにした。
この変更により、アプリケーションのウインドウ表示のレスポンスが向上した。表示に時間のかかるアプリケーションがあっても、ほかのアプリケーションはロックされないため、待ち時間もなく、すぐにウインドウ表示できる。そのため、見た目上はウインドウ表示のパフォーマンスが向上しているように見える。
![]() | Windows 7では複数のアプリケーションの表示が同時に実行されるため、同時実行時の処理性能が理想的なパターン並みに向上している |
|---|
またGDIの同時実行機能は、最近主流になっているマルチコアCPUにとっても大きなメリットがある。VistaではGDIグラフィックスタックがボトルネックだったので、せっかくマルチコアCPUが複数のアプリケーションを同時処理できるのに、その能力を十分に生かせなかった。
しかし、GDIの同時実行機能によりボトルネックとなる待ち時間が少なくなるため、複数のアプリケーションを同時に動作させている環境では、マルチコアCPUのメリットを生かせるようになる。GDIの同時実行機能はWDDM1.1だけでなく、WDDM1.0でも使用できる。
小幅な改良の積み重ねで体感速度を上げるWindows 7
Windows 7は「軽い」「速い」と言われるが、根本的にアーキテクチャーを変更してパフォーマンスを向上させたわけではない。例えばグラフィックスベンチマークなどでは、WDDM1.1とWDDM1.0を比較しても、パフォーマンスはほとんど変わらない。
しかし、ユーザーが実際にWindows 7を使ってみると、体感パフォーマンスは向上している。前述のように、WDDM1.1は多数のアプリケーションが起動されても、使用するシステムメモリーが一定以上には増えない。このことが、Windows 7のレスポンスの良さに関わっているのだろう。
Windows 7は「速くなった」と言うよりも、ユーザーがパソコンを利用する際のレスポンスを高め、ユーザーが心地よくパソコンが利用できるように開発されているのだ。
この連載の記事
- 第48回 5秒で起動するSplashtop OSを自作パソコンで試す
- 第47回 ベンチで検証 Internet Explorer 9 RCの互換性と性能
- 第46回 正式版の直前となるInternet Explorer 9 RC版が登場
- 第45回 Silverlightをさらに進化させる「Silverlight 5」
- 第44回 「Windows on ARM」が持つ意味と課題は何か?
- 第43回 GPUを利用できる仮想化ソフト XenClient 実践編
- 第42回 複数のWindowsを使い分ける仮想化ソフト XenClient
- 第41回 3秒で起動しWindowsと共存するOS「Splashtop OS」
- 第40回 最新版「PP7」に見るIE9の性能と互換性の高さ
- 第39回 独自の検証と改良でWindows 7の性能向上に挑むレノボ
- この連載の一覧へ


















