- 締切済み
CPUの計算量、計算速度について
いくつかのゲームやパソコンのCPUは64bitなどのようですが、 64bitというのは、約1844京です。 このデータを約2GHzのスピードで処理する。 すると、2GHzは20億ぐらいなので、 1844京÷20億=92億秒 92億秒、約10万日かかってしまいます。 これはもしかして割るのではなく、かけるのでしょうか? 1844京のデータを1秒間に20億回取り扱える。 1844京×20億が、1秒間に取り扱える限界のデータ量ということでしょうか? ただ、スパコンの京が1秒に計算できる量が「1京」と聞いています。 私の認識はどこが誤っているのでしょうか?
- みんなの回答 (12)
- 専門家の回答
みんなの回答
- kimamaoyaji
- ベストアンサー率26% (2802/10380)
32Bitや64Bitは一回に扱える実数データーの大きさですから計算の数値としては1です また2GHzとCPUクロックはなっていますが1回の計算を行うのに単純な1の加算や減算で4クロック必要です、(X86、X64系は4クロック)一番短い命令でも0.5GHz=1秒間に500万回、平均的計算では100万回程度と言う事になります。また1Gflops以上がスパーコンピューターと言われていますが、現状で最も高速なXeon16CPUでもMflops台です、TESLAなどGPUコンピューティングを使えばスパコンになるレベル、ちなみに京は10Pflopsですから1Gflopsの1万倍の速度で64Bit2GHzのCPUを約70万個で計算して1京な訳です、64Bit2GHzCPU1個が約1844京にはなりません。 1位のサンウエイタイフーンは1.45GHzのCPUを1000万個で9Pflopsです。
- doxob
- ベストアンサー率22% (48/209)
No.9です。 実は実数表現の先頭の1bitが符号になっています。実数部1+47bit,指数部1+15bitみたいなかんじですね。で、先頭が1なら負,0なら正を表します。
- doxob
- ベストアンサー率22% (48/209)
追加です。 64bitとは、一度に出し入れできるデータ長です。計算できる最大が64bitではありません。 2回に分けて128bit長もありますし、16回に分けて1Kbit長のデータもあります。場合によっては32bitデータを1度に2個扱う事もあります。
お礼
データ個数でなく、データ長であること理解できました。 ありがとうございました。
- doxob
- ベストアンサー率22% (48/209)
No.5です。 判り易く、単精度整数でお話しました。 実際は実数部24bit,指数部8bitとか、実数部48bit指数部16bitとかの実数表現をつかいます。 ただ、時間の計算とか、数を数えるとかなら、整数の方が演算速度が速いので可能な限り整数を使います。
お礼
なるほど、分割するのですね。 ではなぜ、正の数、負の数を分けるケースがあるのでしょうか? 自然数と「-1」だけあれば、かけて負の数を表現すれば、 表現できる数が半分に減ることはないのにと思ったのですが。 実数と指数を分けて保有するなら、自然数とプラスマイナスという分けて持つ考えも成立するのではと思ったのですが。 演算になにか不利なのでしょうかね。 bit数やflopsなどについてイメージが掴めたのですが、 この先は、演算処理の方法を理解しないと、正確な理解ができないようですね。 演算処理を少し調べてみます。 ご回答ありがとうございました。
- dragon-man
- ベストアンサー率19% (2714/13698)
>633兆倍ということでしょうか!!! また、何か間違っている気がするのですが・・・ インテルのCore i7はWindowsを動かすための汎用CPUです。その中の浮動小数点演算回路は機能のごくごく一部に過ぎません。スパコンに搭載されるCPUは汎用機能はなく、演算機能に特化されています。それを大量に(何万個も)用いて多数の演算を同時並行に(並列に)実行します。それで桁違いに早いのです。同じコンピュータでも、スパコンとパソコンはまったく違う構造なのです。スパコンは数値演算(基本的には掛け算)に特化したコンピュータで、数値計算以外のことは何も出来ません。
お礼
インテルが158[G]Flopsとのことなので、 「京」は、1京Flops 10^16Flops VS (1.58×10^11)×4 4コアのため4倍 (10^16)÷((1.58×10^11)×4) =1.58*10^4 15800倍 4コアで単純に4倍していいのかわかりませんが、兆単位ではなくなったので、 実際の倍数にそこそこ近くなった気がします。
- Eureka_
- ベストアンサー率41% (5096/12301)
>64ビットカラー 色情報はR,G,Bそれぞれにビット値を保持し、最近の主流としては輝度情報も含みますから、64ビットカラーを表示するためには256ビットのデータが必要ですがね。 自然数だとまあだいたい10の19乗弱で間違ってませんが、それだけです。正負、小数を考えはじめるとぐっと数字の枠は狭まりますし、そもそもが「数字」という1つのデータですからそれが10の19乗個あるわけではない。 ちなみに8ビットと8バイトは全然別物ですし、8ビットで表現できるのは自然数にして3桁です。 まあつまり、 >あくまでも、 >64bit×2Ghzであり、 >1844京個×2Ghzではない このご理解は大筋で正しい。 確か、ビット数以外の基本設計が同じCPUを仮定すれば(およそ存在し得ませんが)、64ビットCPUなら1回の処理で済むところ32ビットCPUなら4回以上の処理(上位下位32ビットずつの演算を4組行い、さらにその結果を統合する処理)が必要になります。 噛み砕けば16桁の演算を8桁の電卓でするような面倒になる、と。CPUのビット数っていうのはつまり電卓の桁数で。
お礼
64bit(8byte)は自然数なら、1から1844京までの数字を表現できるということですね。 8bit(1byte)なら256まで。 数字の1~1844兆の間の数を、 1秒間に20億回、ディスプレイに表示させることが可能なのでしょうか? 2GHzのCPUなら。 ディスプレイ表示がまた手間がかかるなら、CPU脳内だけで考えるだけでもいいのですが。
- Eureka_
- ベストアンサー率41% (5096/12301)
>158FLOPS SI接頭辞が抜けてるのは間違いありません。多分G(ギガ)がどっか行った。 https://ja.wikipedia.org/wiki/FLOPS あとまあ、理論値と実効値の差もあるかも知れない。あるいは演算精度の違いか。
お礼
Gですね。 ありがとうございます。
- doxob
- ベストアンサー率22% (48/209)
CPUの64bitと言うのはCPUが一度に扱う事の出来るデータの大きさを表しています。 つまり一度に8バイトを読み書き出来ます。(数字で言えば8桁、漢字で言えば4文字) これが64bitの意味です。 そしてここで、20GHzのスピードとは、1秒間に最高20億回計算できるという事です。 例えば掛け算の命令が1クロックで処理できると仮定すると、4桁×4桁=8桁の計算が1/20億秒で出来る事になります。(CPUが32bitだと2桁×2桁=4桁になります) つまり1秒で20億回計算できます。 ですが、最近はCPUがマルチコア(演算部分が複数個ある)になっていますから、4コアなら4倍の80億回毎秒となります。 そこで、単純計算でこのパソコンのCPUを125万個つなげればスパコンの京と同じ性能が出せる事になります。 簡単に言うと、実際の京も同じような作り方で、基本になるCPUの性能が格段に違いますが、88,128個のCPUをつなぐ事で出来ています。
お礼
最後までご丁寧にお付き合いくださり、誠にありがとうございました。
補足
64bitってたかだか8bitであり、 8bitでは、たかだか数字8桁しか表現できない。 たかだかというのは、私は64bitで1844兆のなんらかのものを表現できるとおもっていたからです。 それこそ、数字だと10^19まで表現できると思っていたのです。 2^64 電気のオンオフで、ピンが64本あるので、 2^64が表現できていると思っていたのです。 どこが理解が間違っているのでしょうか?
- akauntook
- ベストアンサー率19% (295/1481)
大体全部違う。 64bit はデータ量ではない。 http://abm.asukabook.com/jp/expert/64or32.html かけるとか割るの話は論外として、そもそも動作周波数での1クロックあたり1つの処理を必ず行うわけじゃない。 http://www.way-on.com.tw/PCbasal/kiso/cpu7.htm 知っているものがデータ量しかないのかもしれないが、データ量しかないはずがない。 >スパコンの京が1秒に計算できる量が「1京」と聞いています。 こんなこと言っているやつがいたなら、そいつが頭おかしい。 計算の量って何? 適当ですね。正しい事は正しい表現でしか伝えられないので、正しいことばで学びましょう。 https://ja.m.wikipedia.org/wiki/%E4%BA%AC_(%E3%82%B9%E3%83%BC%E3%83%91%E3%83%BC%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)
- dragon-man
- ベストアンサー率19% (2714/13698)
お考えの前提がまったく違っています。スーパーコンピュータを含め、コンピュータの演算性能は1秒間に実行できる浮動小数点演算数回数(Flops)で表します。たとえば1京フロップスなどと。CPUの周波数性能(Hz)ではありません。たとえば33GHzのインテルCore i7の浮動小数点演算性能は約158Flopsですが、これはCPUに搭載されている演算回路の性能であって、CPUが動作する周波数とは直接の関係はありません。
お礼
Flopsとhzは別物になるのですね。 HzがたくさんならFlopsも上がる簡単な関係にはないとのことですね。 この点は理解できました。 ご回答ありがとうございます。
補足
インテルCore i7とは、おそらく現行機種のほぼ最上位のCPUなのでしょうね。 それですら158Flops 「京」は、1京Flops 10^16Flops VS 1.58×10^2 (10^16)÷(1.58×10^2) =6.33×10^14 633兆倍ということでしょうか!!! また、何か間違っている気がするのですが・・・
- 1
- 2
補足
符号で1bitとってるんですね。 納得いきました。 ありがとうございます。