A型システムエンジニアの勉強メモ

情報処理試験の午前問題をネタにして、解説をじっくり書きながら勉強しています。基礎は大事。

広告

基本情報技術者試験 令和元年度 秋季 午前 問12

CPU のクロックに関しての問題。ついでに演算性能(FLOPS)についても。

 

--------------------------

基本情報技術者試験

令和元年度 秋期 午前 問12

 

1 GHz のクロックで動作する CPU がある。この CPU は、機械語の 1 命令を平均 0.8 クロックで実行できることが分かっている。この CPU は 1 秒間に平均何万命令を実行できるか。

 

ア 125

イ 250

ウ 80,000

エ 125,000

--------------------------

解説

 

 

CPU についての問題。

Central Processing Unit:中央演算装置

システムエンジニアは CPU を「石」と呼ぶこともある。なんでだろう。

 

 

「1 GHz のクロックで動作する CPU」

CPU は一定間隔のリズムで CPU 内部の各パーツを動かして処理をしている。

リズムが早いほど、高速に処理ができる。

そのリズム(クロック)が 1 GHz であるということ。

 

つまり、1 秒間に 1 G(ギガ)クロック分の処理ができる CPU となる。

G(ギガ)は 10⁹ なので、1 G クロック = 1 × 10⁹ クロック = 1,000,000,000 クロックである。 

 

 

機械語の 1 命令を平均 0.8 クロックで実行できる」

0.8 クロックあれば平均して 1 命令を処理できるということ。

この CPU は 1 秒間に 1,000,000,000 クロックなので、1 秒間に処理できる命令は

1,000,000,000 [クロック] ÷ 0.8 [クロック/命令] =1,250,000,000 命令となる。

 

 

「この CPU は 1 秒間に平均何万命令を実行できるか」

1 秒間に 1,250,000,000 命令を実行できるが、問題が聞いているのは何万命令かなので、

1,250,000,000 命令 = 125,000 × 10,000 命令 = 125,000 万命令 であり、正解は選択肢エとなる

 

 

CPU の問題ついでに CPU の演算性能について少し書いてみる。

Intel Xeon Gold 6152 という CPU を例にしてみる。

Intel Xeon Gold 6152 Processor 30.25M Cache 2.10 GHz 製品仕様

周波数 2.10 GHz で、コア数が 22 となっている。

 

昔の CPU は 1 コアしかないものもあったが、今の CPU はほぼマルチコアプロセッサとなっている。

コア毎に異なる処理を割り当てて、複数の命令を並列に処理することができる。

人によっては 「CPU の数は?」 と言いながら、意図としては 「コアの数は?」 を聞いているケースもあるので注意が必要である。

 

Intel Xeon Gold 6152 は周波数 2.10 GHz で動くコアが 22 個搭載されている。

各コアは浮動小数点演算ができるユニットを 32 個搭載している(この個数は CPU のアーキテクチャで決まってくるもの)。

※「32個搭載」と書くと厳密には異なるけども、概念の説明ということでご勘弁を。。。

 

これら数値の掛け算が FLOPS(Floating-point Operations Per Second)という性能指標になる。

2.10 GHz × 22 コア × 32 ユニット = 1,478.4 GFLOPS

 

FLOPS は 1 秒あたり(Per Second)に何回の浮動小数点演算(Floating-point Operations)ができるか、という指標である。

 

22 コアが各々 32 個の浮動小数点演算ユニットをもつので、CPU としては 22 × 32 = 704 個の浮動小数点演算ユニットをもつことになる。

704 個の各ユニットが 2.10 GHz(=1 秒間に 2.10 G回)のリズムで動作ができるので、

1 秒間に 704 × 2.10G = 1,478.4 G 回の浮動小数点演算ができる CPU である、ということになる。

 

ただし、この CPU には AVX という機能があり、その機能を利用した場合は周波数が 1.40GHz となるため、 性能は 985.6 GFLOPS となる。

GFLOPS の数値は低く見えるが AVX の機能で効率よく計算ができるので、計算にかかる時間は短くなる(可能性もある)。

 

 

FLOPS の性能指標は上のとおり全ての浮動小数点演算ユニットが常に動いた場合の数値となっているが、実際に使われるようなソフトウェアで、そんな状況はまず起こらない。

ディスクやメモリの I/O 待ち、複数コアを使うために処理を割り振るオーバーヘッド等で仕事をしていないユニットは必ず発生する。

また、コア数を多くすれば CPU としての FLOPS はよくなるが、業務で使うソフトウェアが複数コアを使う並列化に向いていないものであると全く意味がない。

 

CPU の FLOPS 値は理論上の参考値とはなるが、業務で実際に使うソフトウェアの特性も考慮にいれて最適な CPU を選ぶ必要がある。

とはいっても精度の高い推測は難易度が高いので、いくつかの CPU で実際にソフトウェアを動かしてみるベンチマークがよく行われる。

 

 

前後の問題はこちら。

koki2016.hatenadiary.com