「サーバサイドでは順調だが~」とか言ってるように、デスクトップ用途の話なんですよねこれきっと。 と、なると、マルチコアが有用な利用法を考えて、かつユーザに受け入れられる必要があります。ただ、デスクトップ用途のほとんどは「人間とのインタラクション」だと考えると、人間のI/Oは並列化しづらい性質のものなので(少なくとも言語的思考の流れや注視点は2つ以上にすることは困難)、CPUにはI/Oに関係しない仕事をやらせるか、「壁紙を動画にする」などの無駄な仕事をやらせるかのどちらかになるのだと思います。 そもそも、今のPCに求められてる機能って
- In
ソフトウェアって一括りにするのは間違いで (スコア:2, 興味深い)
と、なると、マルチコアが有用な利用法を考えて、かつユーザに受け入れられる必要があります。ただ、デスクトップ用途のほとんどは「人間とのインタラクション」だと考えると、人間のI/Oは並列化しづらい性質のものなので(少なくとも言語的思考の流れや注視点は2つ以上にすることは困難)、CPUにはI/Oに関係しない仕事をやらせるか、「壁紙を動画にする」などの無駄な仕事をやらせるかのどちらかになるのだと思います。
そもそも、今のPCに求められてる機能って
- In
Re:ソフトウェアって一括りにするのは間違いで (スコア:2, 興味深い)
それこそが古く凝り固まった考え方なのではないか?と思うのです。
人間が同時に操作できない点に縛られて後ろ向きになったり、
別々の複数のソフトウェアやバックグラウンドのI/Oを走らせる用途しかアイデアがないとか、
そういう古典的な並列コアの使い方を何とかしろよと問われているのだと思うのですが。
ほとんど効果が見えないSIMD命令の類も同じ。本当に動画のエンコードぐらいしか活用方法がないの?
マルチメディア処理用命令と業界全体が思い込んでるだけじゃないの?
=-=-= The Inelegance(無粋な人) =-=-=
Re:ソフトウェアって一括りにするのは間違いで (スコア:0)
PCでもたとえば「C2Q未満のCPUは起動時チェックで蹴落として良い」と言われたら、嬉々としてチューニングを始める開発者は多いと思います。
Intelが出資して、そういうソフトウェアを増やせば良いのでは。もし目覚ましい効果があれば、実行環境の足切りも促進されるでしょう。
Re:ソフトウェアって一括りにするのは間違いで (スコア:1)
バックグラウンドではゲームという物が常に動いているわけです
マルチプロセス/スレッドで組んでくれよってだけの話なので
旧CPUを蹴落とす必要はありません
シングルCPUだとしてもその辺はOSが調整してくれます
ただし、プロセス/スレッド間通信の分処理は遅くなるでしょうが...
Re:ソフトウェアって一括りにするのは間違いで (スコア:0)
> シングルCPUだとしてもその辺はOSが調整してくれます
じゃなくて
> シングルCPUだとしてもその辺はOSが問題なく確実に調整してくれます
だったら話も違ってくるだろうけど。
プロ用の動画編集ツールとか、パフォーマンス命な製品ならともかく、マルチコアの処理能力を存分に発揮なんてしなくても現状で十分、というケースも多いだろうし。
Re:ソフトウェアって一括りにするのは間違いで (スコア:1)
単一CPUでも動作しますよ
ただし、スレッドを使う/使わないはプログラム固有の事なのでさすがにCPUが単一だから
スレッドを別けずに自動的に動作するみたいな事はOSはしてくれません
(そんなこと勝手にしたらバグが出る可能性もあるし(笑))
別けておいてもらえれば、後は選択できるので問題はないでしょう
>マルチコアの処理能力を存分に発揮なんてしなくても現状で十分
と言うかデスクトップの場合、ゲーム等後ろで何か処理し続けるって物で無いと
現状で十分って状況になり始めてるかと
画像/動画処理等処理が重い物をマルチ化して高速化するって話以上は
デスクトップ環境では不要でしょう
後は人に余ってるCPUパワー貸し出すとか?
Re:ソフトウェアって一括りにするのは間違いで (スコア:0)
そこはIntelにしてもAMDにしても、使わない時はコアを停止させるって方に進んでいるみたいだから、いっそ逆に、負荷が少ない時は本当に一つのコア以外は使わない様にするって方が有効っぽいと思う。
それだけでモバイルなんかの運用時間は目で見て解るほど変わる筈だし。
Re:ソフトウェアって一括りにするのは間違いで (スコア:0)
#えぇ、あくまでも動画エンコード用に導入したんです。
##ということにしたいなぁ。
Re:ソフトウェアって一括りにするのは間違いで (スコア:1)
見落としてたけど、これ、とても大事な指摘だと思う。
ある処理をスレッドに分割するとして、「いくつ」に分割すれば良いのでしょうか。
スレッドが少なすぎると活かされないコアが出ます。スレッドが多すぎるとタスクスイッチングのコストがもったいなくなります。
現状では、1コア~2コア、ハイパースレッディングのP4で4コアぐらいですね。現状ではこの程度なので、4スレッドに分割! と決め打っても問題なさそうですが、4コアとか8コアとか、さらにハイパースレッディングを復活!なんて出てくれば、この辺の問題を無視できなくなりそうです。
ちょっと解決法を考えてみます。
一つの方法としては、CPUからコア数を直接聞きに行く方法が思いつきます。しかし、重い処理をするときは、処理内容をN個のスレッドに分割する処理を入れるだなんて、プログラマはたいへんだと思います。
また、「スレッド数 = コア数」と決め打って良いかどうかという問題もあります。IO処理が伴うならば、コア数より多めが良いだろうし、バックで(重めの)別プロセスが走ってる場合は、コア数より少なめが良いだろうし。
どうも OS が「仲介役」をしてくれないと、この問題の解決は難しそうです。
おっ、この「仲介役」の仕組みで特許を取れば、MSから金をがっぽりとれそうな予感!!
Re:ソフトウェアって一括りにするのは間違いで (スコア:1)
1つのコードで対応するのは困難だし、コードを分けるといろいろな問題が噴出する訳ですね。
しかし、複数の環境が同時に絡むネトゲはともかく、
他のことはそう考えなくていい単体のアプリケーションなら、
それはそれで並列化が進んでもいい様な気がします。
低級な部分(OSとか)のより進んだ対応の方が求められているんでしょうか。
そうなるとプログラマやSEの時間的余裕も必要になるので、マネージャーや営業の意識改革も必要か。
購買求心力にさほど影響しない部分だから難しそうだな…。
でもそれで本当はどうでもいい見た目の為に無駄にマルチコアのリソース食うなんて、アホくさい哀しい未来だな。
技術的に夢のある未来が見たい…。
=-=-= The Inelegance(無粋な人) =-=-=
Re:ソフトウェアって一括りにするのは間違いで (スコア:1)
>他のことはそう考えなくていい単体のアプリケーションなら、
>それはそれで並列化が進んでもいい様な気がします。
逆ですよー、複数の環境/処理が同時に進む物はマルチ化の恩恵を受けやすいんです
人の入力とは関係なしに動作可能ですから
すでにマルチスレッド対応なゲームは出ています
MMOならSWGがマルチ対応です(日本語版ぽしゃったけど)他にも有るんじゃないかな?
逆に単一アプリはどうしても入力待ち/処理待ちと言う物が存在するので
処理自体を高速化するためにマルチにする事は可能でも
入力待ちを高速化することはできません
また処理中のデータをロックする必要が出た場合、
処理が終わる前に処理中断以外の入力を受け付ける事ができません
単一アプリで効率的にマルチ処理を実施するには入力装置の革命も必要かもしれませんね