• ベストアンサー

ノートパソコンの1回の演算にかかる時間

DellのG3を使っています。 ものすごくいいCPUが載ってて、ものすごい回数の演算ができるみたいです。 二進数の計算で、    1+1=0 と、1回にかかる時間ってどれくらいなんでしょうか? そういう時間ってわかるんでしょうか? またわかる場合は、毎回同じ時間なんでしょうか? 人間の気分、みたいに天気や気温で変化したりするものでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • parts
  • ベストアンサー率62% (6364/10149)
回答No.4

Q/1回にかかる時間ってどれくらいなんでしょうか? A/あり得ないことですけど、演算ミス(キャッシュミスヒット、デッドロック、投機分岐デコードミスによるパイプライン廃棄)が全く起きず、キャッシュやメモリーのバッファーアンダーラン状態にならないと仮定すれば、クロック周波数が1GHzなら見た目の処理時間は最大10億回/秒です。2GHzなら20億回。3GHzなら30億回を上限として演算出来ます。だから、1GHzなら10億分の1秒です。 厳密値を出すなら、命令の入力から出力までに必要なクロックは製品によって異なります。最近のOut-of-Orderコアでは結果の入力から出力まで最低でも10~25ぐらいのクロックを喰うはずです。だから、CPUコアに入力されて終わって結果をCPUから出すまでの処理は、1GHzだと仮定して、良くて1億分の1秒、一般的なもので数百万分の1かさらに遅いぐらいじゃないかな?これを処理サイクルと言います。 一応、サイクルと見た目の演算の違いも書いておきます。 処理サイクルとは、命令を処理し始めてから終わるまでの時間のこと。 見た目の演算は1秒間で答えを出す回数のこと。 前者は、例えば食品工場でベルトコンベアなどをまわって、練ったり、焼いたり、箱に詰めたりして商品を作っていく工程に必要な時間のこと。これは同じスピードでベルトコンベア(プロセッサで言えば、クロック周波数)がまわるなら、いわゆる計算速度の下限値(もっと性能が落ち込むときの速度)に相当します。 それに対して、見た目の演算は、出来た商品が出てくる場所を定点観察し、1つのラインから作られて出てくる商品の数である。これは同じ速度でコンベアが回るならいわゆる演算の上限値となる。(不良品も含んでいることがあるかもしれないので注意) Q/演算速度は気候の影響を受けますか? A/受けるか受けないかだけで言えば受けます。気温だと製品によっては顕著に受けるかも知れません。それ以外の要件は通常一般家庭で運用する中で、もしもその影響があるなら正常動作しなくなる時にしか分からないでしょう。僅かな差が出ても気が付かない程度の差が出るだけですから。 電磁波や磁気・放射線の影響によって動作に狂いが生じることはあります。 一応温度を説明します。温度の影響という点では、今のプロセッサーならプロセッサーの内部温度が一定以上に加熱されると自動的にクロック周波数を制御して熱の発生を抑える仕組みが備わっています。そういう点では温度では若干の上下はあり、温度の低い時期の方が、結露などの心配がなければ(基板で結露が起きると故障の原因となることがあります)高い性能を維持出来る可能性があります。 夏場の屋外などで使う場合は最大性能が若干下がったり、最大性能を維持出来る時間が短くなる可能性が今でもあります。これは、CPUに限らず、GPU、メモリー、SSD(搭載モデルのみ)などの半導体全てで一定の熱量を超えた場合、熱クロック制御(サーマルクロックマネジメント)や熱放出制御(サーマルスロットリング)によって処理を抑える可能性があります。 尚、半導体全般の場合、温度が規程を超えて運用されると、過剰加熱状態になり、データを流すための回路スイッチ(通り抜け、分岐)処理やゲーティング(封鎖処理)が正常に出来なくなるため、正しい計算が出来なくなります。すると、動作が止まるのです。パソコンでそれが起きると、WindowsならBSoD(Blue Screen of Death、死のブルースクリーン)が表示され、再起動も行えず、平熱に戻るまで電源を切って冷ますしかなくなります。これを熱暴走と言います。 磁気や放射線の影響も同様で、これらも強いエネルギーを発する物だと演算を狂わせる(数値そのものを壊し化けさせる)特性があります。これらの場合でも、一定の水準まではエラーの訂正が行われるので、僅かに処理が遅くなる可能性がありますが、よほど特別な計測装置で常に演算速度を調べていない限り(それを調べるのに性能を常時大幅に喰らうので、この手のモニタリングは原因不明の不良が起きているサーバーなどで重点的に動作をチェックすると行った場合以外には通常は行いません)、たぶん利用者がそれに気が付くことはないでしょう。 それらの影響が見事にシステムに影響を与えていると分かったときには、熱暴走と同じようにシステムは停止します。(この場合、半導体で動くディスプレイなども変な画を出したりして、止まるはずです) 尚、1つのプロセッサーコアで同時に処理出来る演算の数は1つとは限りません。 一応ここからは蛇足で、1秒間に最大どれだけの演算が出来るかも書いておきます。 あくまで、物理的な理論上で考えられる限界の話です。 整数の四則演算であれば、プロセッサーコアに内蔵されているALU(Arithmetic Logic Unit/整数演算器)の数×クロック周波数の値×コア数分の処理に処理ミスの平均割合(ミスヒット、パイプラインクラッシュ率を差し引いた適正処理率)で掛けた物を1秒の間に行えます。 ちなみに、ミスヒット率を考慮しないものを実際のプロセッサで説明すると、 Core i7-9750H(2.6GHz-4.5GHz/6C/12T、TDP35-45W、Tjunction100℃)やCore i5-9300H(2.4GHz-4.1GHz/4C/8T、TDP35-45W、Tjunction100℃)で であれば、 9750Hならば1秒間に1つのALU換算で最大26億回(2.6GHz)~45億(4.5GHz)回演算出来るでしょう。 単純な整数和佐積算(整数の足し算、引き算、かけ算、割り算)の並列演算数は専用に機能するALUが2つ(2器/2 Units)なので、1つのコア(1C)辺り2倍になります。即ち最大90億回/秒となるわけです。9750Hはそれが6コアありますので、12個の和佐積算演算が1サイクル中に出来るということになります。90億×6コア(または45億回×12 ALUs)なので、540億/秒となる。 役割を整数和佐積算に限定しない場合、 これとは別に、FPU(浮動小数点演算器、Floating Point Unit)やAGU(Address generation unit )、ストアカウンター(Store Data)、Branch(ALU)などもありますので……。(このうちFPUとAGUは2器存在します) ALU(整数の足し算、引き算、かけ算、割り算)以外の処理を含めたら最大で約5系統の処理を同時に行うことが出来ます。 さらに、SMT(プロセッサーの括弧書きで12Tと書かれている数字)を考慮した場合、6系統から8系統の処理とほぼ同等の処理が出来るようになります。 即ち、Core i7-9750Hの場合、最大で1秒間に26億~45億(熱量に応じて変化する)×6~8系統処理(約1.2倍)×6コアの計算が1秒間に行えます。 9300Hならば、24億~41億×7から8系統×4コアの計算となります。この辺りは興味があるなら自分で計算して見ると良いでしょう。 尚、4T/4C(SMTなし)だったなら、24億~41億×5系統(5 Decode)×4コア程度に僅かな±が出る程度となるでしょう。 これにはAVX/SSEによるSIMDに基づく複数結果の同時出力を含みません(この場合は結果抽出数が上振れすることがあります)。また、ミスヒット率、バッファ枯渇は考慮されていませんのでご注意下さい。 また、これはあくまで推計であり演算重複などが生じる場合や、意図的な桁あふれ演算(バッファオーバーフロー演算)や分割演算をする場合、オーバーヘッド大きい演算の場合は内容によって性能が低下することがあります。 といった具合です。 最後に次の質問への答えです。 Q/そういう時間ってわかるんでしょうか? A/見た目で分かるのかというと実は分かりません。結果を見た上でおおよそこれぐらいだろうという数字は出てきますが、実はプロセッサーを設計している人でさえも、設計している中で正確に必ずこうなると分かっている訳では無く、出来た後の製品を動かして見て、計算を回した後にどれぐらいで「回っているようだ」と見ているのです。それが、推定値以上か以下かは設計して出して見ないと分からない訳です。 それぐらい、今の半導体は凄まじい性能で動いており、複雑な構造をしていると言えます。 だから、数値は理論だったり、実測(ベンチマークという共通の計算ソフトを動かして)の値を元にした推計値となり、これらの値は厳密値ではありません。あくまで、出力カ所を定点で見ている最大値となり、数式の入力から結果の出力は、プロセッサーブロックダイヤグラムを元に入力~出力までのルートを何クロックで通過するかを調べないと分かりません。(これを明確に知っているのは設計した企業の担当者のみでしょう。)

mathematiko
質問者

お礼

丁寧に回答いただけてありがとうございます。 こんなにお詳しいってすごいですね。とても勉強になりました・・・というか勉強するヒントありがとうございます。勉強します。

その他の回答 (3)

  • okok456
  • ベストアンサー率43% (2574/5942)
回答No.3

CPU:第9世代 インテル® CoreTM i7-9750H (12MB キャッシュ, 最大 4.5GHz まで可能, 6 コア) メモリ:16GB, 2x8GB, DDR4, 2666MHz 私のパソコンの数段上の能力がありそうです。 Windows 10の電卓で、2進数/16進数の計算を行う方法 を参考に Windows付属の電卓ソフトでやってみました。 https://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=019985 私のパソコンでも 二進数の計算で、1111111111+1111111111=11111111110 レベルでも「=」を押した瞬間に答えが表示されます。 人間が仕事しやすい環境がパソコンにも適しているよです・ 参考に パソコンが正常に動作する温度や湿度など https://michisugara.jp/archives/2011/lectures_22.html パソコンの熱暴走に気を付けよう! https://www.sakura-pc.jp/pc/contents/trouble/heat.html 尚、Excelでの二進数の計算は面倒なようです。 参考に 二進数 :Excel関数 を http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/dec2bin.html 私のPCでも100セルの10桁の数値の合計や平均値も瞬間的に表示します。 Dell G3は高画質な動きの速いゲームに素早い反応できるパソコンのようですね。 私のPCより遥かに早く起動し、データの大きな動画の編集や変換にも適しているでしょう。 YouTubeの4K映像もスムーズに再生できるかもしれませんね。 https://www.youtube.com/watch?v=sk9u_iFEue0 私のPCでは1440p60に設定すると止まってしまいます。

mathematiko
質問者

お礼

丁寧に回答いただけてありがとうございます。 こんなにお詳しいってすごいですね。とても勉強になりました・・・というか勉強するヒントありがとうございます。勉強します。

  • tmys10
  • ベストアンサー率36% (338/930)
回答No.2

> 二進数の計算で、 >   1+1=0 >と、1回にかかる時間ってどれくらいなんでしょうか? 1+1は10じゃないかと思いますがそれはさておき、 CPUが直接扱える命令は単純なものです。たとえば 1) レジスタAに「1」をセットする 2) レジスタBに「1」をセットする 3) レジスタAにレジスタBの値を加算し、結果をレジスタAにセットする というものです。 1秒間に実行できる命令の数は、MIPS (mega instruction per seconds)という単位で表します。Wikipediaで引くとCore i9-9900Kの性能は412,090MIPSです。(G3のCPUはCore i7-9750とあるのでもうちょっと遅いかも。) このCPUで3命令の実効にかかる時間は、 3 * 1/412,090e+6 = 7.2 e-12 = 0.0000000000072 秒となります。 > 毎回同じ時間なんでしょうか? 人間の気分、みたいに天気や気温で変化したりするものでしょうか? CPUは「クロック」と呼ばれる信号に合わせて動作します。クロックとは軍隊の行進に使われる太鼓のようなもので、クロックが速ければ動作が速く、遅ければ動作が遅くなります。クロックは一定なので処理にかかる時間も一定です。 しかし、現在のOSはマルチタスク型で同時に複数のプログラムが実行されます。これは命令と命令の間に他のプログラムの処理が割り込むことがあるということです。 実行の度に環境が異なるので、現実に処理時間を複数回測定すると異なる結果が出てくるでしょう。

mathematiko
質問者

お礼

丁寧に回答いただけてありがとうございます。 こんなにお詳しいってすごいですね。とても勉強になりました・・・というか勉強するヒントありがとうございます。勉強します。

  • chachaboxx
  • ベストアンサー率23% (412/1777)
回答No.1

一回の演算はクロック数でおおよそ見当がつきますが、複雑な命令の場合はCPUやGPUが対応していれば結果が安定しますが対応してないとOS側でCPUが実行できる命令に分解されるので結果がまちまちです。また、まとまった命令になるとその内容により予測分岐処理がはずれたり他の処理(ディスクアクセス等)のオーバーヘッドに待たされたり、OSからのタスクスライス(マルチタスクによる)で順番待ちになったりもあります。 最も単純な演算(CPU命令=足算=add)は、どんなCPUでも用意されている命令(1クロック処理)なので、例えば、スマホとスーパーコンピュータの速度の比較の目安にはなります。 基本的にCPUクロックの逆数が演算に要する時間です。 ※4GHzなら、250p秒=光が7.5cm進む時間

mathematiko
質問者

お礼

回答いただけてありがとうございます。 お詳しいんですね。

関連するQ&A

  • 演算対象の数字と演算子を入力して計算させる

    数字と演算子をそれぞれ入力し、優先順位の高い順に四則演算させるにはどのような考え方をすればよいのでしょうか。 数字をa[7]とおいて、演算子をop[7]としてそれぞれ配列に格納しましたが、そこから先に進めません。 オペランドと演算子の組み合わせならば優先順に計算してくれるのはわかっていますが、オペランドと演算子を格納した配列では上手く行きません。 実は既に全ての演算子の組み合わせをIfで表示させるプログラムを根性で作ったのですが、最適解を知りたいです。 言語はCでvisualstudioを使っております。 条件はn回数字を入力したらn-1回演算子を入力し、n回目に=を入力する。nの最大値は7とする。です。 だらだらと見辛い文章で申し訳ありませんが、何卒宜しくお願いします。

  • 多倍長演算における実行時間と計算量の差

    数学の論文において数値実験が必要だったため, 多倍長演算をC++で実行したところ,計算量とのギャップが生じました. その原因をコンピュータに詳しい方にアドバイスを頂きたいと思って質問させていただきました. 具体的には,n,m を同ビット として 以下の二つの演算を考えます. 演算(1) n * m 演算(2) n^2 % m (n^2は先に計算しておき,% (mod)の演算のみ) -------------------------------------------------- ■計算量評価 大雑把に(1)と(2)の計算量を比較すると (1) lg n * lg m = (lg n)^2 (2) (2*lg n - lg m) * lg m = (lg n)^2 となるので,(1) と (2)はほぼ同じ計算量となります. -------------------------------------------------- しかしながら,実際に計算をしてみると, n,m が 1000bit ほどまでは,ほぼ同じ計算時間なのですが, 2000bit, 4000bit ,..., と数を大きくしていくと,大きくしただけ (2) の速度が遅くなります. 具体的な実験結果は画像で添付いたします. 画像 (http://puu.sh/6iBQf.png) (1) と (2)の実行時間のギャップは何処から生じたものなのか,何かわかるかたがいらっしゃいましたら教えていただけたら嬉しいです. よろしくお願い致します. 予想:  コンピュータの知識があまりないですが,自分なりの予想では,(2)のn^2という数が大きすぎるため,演算においてメモリ間とのデータのやり取りで何かのオーバーヘッドが生じているのではないかと予想していますが,確証がもてません.

  • CPU使用率と、演算回数と消費電力の関係

    DELLのG3を使っています。 CPUの使用率についてお尋ねです。 とある数値計算でCPU使用率100%近くになっている場合、CPU使用率が100%の場合と50%の場合では、 о 計算している回数も倍違うんでしょうか? その回数とか具体的に数えられますか? о 100%の場合も50%の場合もファンのうるささは変わらない気がします。同じ消費電力でしたら、100%にしていたほうがパソコンを有効活用していることになるでしょうか? ちなみにノートPCだけどいつでも使えるように電源は入れたままでスリープにならないようにしています。

  • [VBS] 素早くローテート演算したい

    教えて下さい。 VBSで出来るだけ高速でローテート演算を行いたいです。 当方ではシフトJISの1バイトコード(16進数)を一度、10進数に直して さらにそこから2進数へ変換した後にローテートを行い、また10進数に直して~を行っています。 やはり処理に膨大な時間がかかってしまいます、、。 もっとスマートに素早く計算出来る方法があればご教示下さい。

  • JavaScriptの演算精度は?

    JavaScriptの演算にはIEEE 754が使用されていると聞いたのですが、その演算の精度はどれくらいですか? 小数を丸めて正しい答えを導きたいのですが、その場合どの桁を四捨五入すれば最も精度が良いですか? また、どれくらいの数までであれば正確に計算できますか? 体感的には15桁程度であれば正確だと考えています。 さらに、四捨五入を行う際に*1000000してから四捨五入し、あとで1000000で割ったりしようと思うのですが、その場合も桁溢れなどの可能性がありますか? 電卓を作成しようとして、精度につまずきました。 利用者に精度の説明をしたいのですが詳しくないため、困っています。 CPUが32bitの場合と64bitの場合の両方で教えて欲しいです。 ご存じの方がいらっしゃいましたらよろしくお願いしたします。

  • CPUの処理性能(クロックサイクルと演算回数)について

    CPUの処理性能の計算について、わかる方のお知恵を貸してください。 http://journal.mycom.co.jp/articles/2010/01/03/supercomputer2010/index.html の記事の中ほどに、以下の記述があります。 ---------------------- POWER7はPOWER ISA2.0.6に準拠しており、コアあたり4個の積和演算器を搭載し、サイクルあたり8つの倍精度浮動小数点演算を行うことができる。現在のIntelのNehalemコアが4演算であるのと比較すると2倍の演算数で、次世代のSandy Bridgeの演算数を先取りしている。 ---------------------- この、「4個の積和演算器で、サイクルあたり8つの倍精度浮動小数点演算を行うことができる」とは、このCPU(POWER7)の積和演算器は1サイクルで2つの倍精度浮動小数点演算を行うことができる仕様という意味でしょうか? そもそも、1サイクル=2演算というのは、個々の演算器の仕様に問わず常識的な意味なのでしょうか?

  • 【AIチップ】AIチップは今までの演算チップと制御

    【AIチップ】AIチップは今までの演算チップと制御チップの半導体チップと違って推論チップと学習チップが搭載されているって、半導体回路が自分で変化するんですか? 推論はただの計算プログラムだと思うので演算チップに計算式を追加したら計算して結果を返すチップってだけで理解出来ますが、学習チップというのはどういう仕組みですか? どこから学習するの? 推論の結果は一定のはず。なぜなら計算式を埋め込んでいるから幾ら計算回数を増やしても同じ結果になる。 その同じ計算式で同じ結果でどうやって学習していくのですか?

  • 2時間で4回お手洗いに行くことについて

    2時間で4回お手洗いに行くことについて 以前、マッサージを受けるとお手洗いが近くなることで相談したものです。 週末に受けてきましたが、やっぱりスタッフさんに実際どう思われたか気になります。 回数としては、 到着して着替えて施術前に一回、 うつ伏せから仰向けになるときに、一回 背面施術中に一回、 終わった直後に一回 また、緊張してしまうからかそれぞれですぐには終わることができず、完全に排尿できたことはありませんでした。 少しずつ分けてした感じですし、音姫も毎回3、4回繰り返しつかいました。 こんなにお手洗いいくといくらお手洗い近いと事前に伝えても、変に思われませんか?

  • PS3の演算能力をPCで活用する方法

    PS3の演算能力をPCで利用したいと思っています。 私はPCで演算ソフトを用いて、演算を行っています。しかし演算に時間がかかりすぎて困っています。 以前PS3を並列化させて高速演算の実行に成功したというニュースを見ました。そこでPCにPS3の演算能力を付加させたいと考えました。 ですがPCとPS3のCPUの並列接続の方法が分かりません。 そこでPCとPS3のCPUの並列接続の方法を教えてください。 PS3は分解し、最悪壊れても構いません。PCはwindowsXP(core 2 duo)とwindows7(i5)の二台がありますが、壊すことは決して出来ません。 C++言語とhtml言語はある程度理解できますが、CPUとGPUとの違いはあまり分からないような状況です。ちなみに扱っているソフトは、Matlab(行列などの計算)とPro/ENGINEER(設計ソフト)です。

  • 初等関数の計算時間

    C言語である計算を一億回したときの計算時間について調べています。 sinやcosなどの初等関数の計算は、足し算や引き算などの四則演算に比べ、計算時間がかかるのは何故ですか?