プログラマーなら知っておきたいコンピューターのスペック



##コンピューターの仕組みとスペックについて
プログラマーならPCを選ぶときスペックを見ると思いますが、
ここで改めてPCのスペックについてまとめてみました。
PCを選ぶときは大きく分けて、以下の3つの項目を参考にすると思います。

- プロセッサ

- メモリ

- ストレージ

上記3つの項目を見ていく前にまずコンピューターの5台装置の
仕組みを理解する必要があります。

##コンピューターの5台装置

<img src="https://qiita-image-store.s3.amazonaws.com/0/77808/c1ffb6cf-44ad-6de0-a120-c143dff771ac.png" width=600px>
上記の図のように5台装置は入力装置、出力装置 、記憶装置、制御装置 、演算装置の5つとなっています。
一連の流れをざっくり説明すると

ユーザーがキーボード(入力装置)で数値を入力
↓
記憶装置に入力した数値を一時的に記憶
↓
演算装置で演算
↓
制御装置が記憶装置に出力装置への出力を命令
↓
出力装置に計算結果が表示される

といった感じです。

プロセッサーはこの中で言うと演算装置と制御装置にあたります


##プロセッサ
コンピューターの中枢を担うプロセッサです。CPUとも言います。(Central Processing Unitの略）
人間でいうと頭脳にあたるところで、プロセッサの性能が良ければ良いほどPCの機能も良いです。

マウス、キーボード、ハードディスク等の周辺機器はCPUにデータを送り
制御、演算を実行します。

####制御装置
制御装置はコンピューター全体の操作を制御する場所で
各装置に動作の指示やタイミング教えたりします。
5台装置の残りの４つの装置を制御するところで司令塔の役割を担っています。

####演算装置
ALU（Arithmetic and Logic Unit）とも言います。
ここでは制御装置から支持を受けてデーターを計算、演算を実行します

###プロセッサの性能について
プロセッサの性能を見るときは以下の項目を参考にすることが多いと思います。

- クロック周波数
- コア数/スレッド数
- ターボブースト
- キャッシュメモリ



####クロック周波数
クロック周波数を簡単に言うと、コンピューターが動作をする上でのテンポです。
オーケストラに指揮者がいるように全体の楽器のタイミングを揃える必要があり、
クロック周波数はそのオーケストラの役割を担います。
![clock.png](https://qiita-image-store.s3.amazonaws.com/0/77808/7f70a0e8-4d8b-9a31-971d-301b34da0fa7.png)

CPUは内部の部品の動作を合わるために、クロック信号を使います
クロック信号は電圧が高い、電圧が低いを周期的に繰り返しており、電圧が高くなった時から次にまた電圧が高くなる時までが1クロックです。 
そして1クロックの時間が短いほど高速に動作します（周期Tが１クロック）

「Hz」（ヘルツ）という単位が一般的です。
1秒間に何回振動したかを示す単位で、CPUでは1秒間のクロック数を示すイメージです。

単位をいくつかあげると以下となっています。

- 1Hz：1秒あたり1回
- 1KHz：1秒あたり1000回
- 1MHz：1秒あたり100万回
- 1GHz：1秒あたり10億回
- 1THz：1秒あたり1兆回

今のコンピューターだと「GHz」（ギガヘルツ）が主流です。


####コア数/スレッド数
コアとはCPUの中心で実際に処理を行う場所です。コア数が多ければ多いほど
処理可能な作業数が増えます。
複数のコアを搭載しているものをマルチコアと呼び、
コアが２つで「ディアルコア」、4つで「クアッドコア」、6つで「ヘキサコア」とそれぞれ呼びます。

スレッドとはコアあたりの同時にこなせる作業数
例えば1コア2スレッドのCPUがあったとしたらそのCPUは同時に２つの
アプリケーションを実行できます。

####ターボブースト
ターボブーストは主にインテルのCore iシリーズに搭載されている機能です。
通常時のクロック周波数よりも早くコアの処理速度をあげることができます。

例えば4コアのCPUがあったとして通常は定格のクロック周波数で作動しています。
状況に応じて2コアだけで動作すると判断した場合残りの2コアのスイッチは切られ、
代わりに動作している2コアのクロック周波数が上がります。

<img width="651" alt="boost.png" src="https://qiita-image-store.s3.amazonaws.com/0/77808/48755aa6-30f2-1380-d342-57947121923a.png">


中にはマルチコアに対応してないソフトがあるのでそういったときのために
ターボブーストの役割が発揮されます。

####キャッシュメモリ
CPUに搭載されているメモリです。
通常はメインメモリに蓄えられたデータを処理しますが、
頻繁に扱うデータはキャッシュメモリに蓄えます。

キャッシュメモリはメインメモリに比べて容量は少ないですが、
メインメモリあるデータを取ってくるのではなく、
CPU内にあるメモリのデータにアクセスして処理するので、データを処理するのが早いです。
<img width="514" alt="memori.png" src="https://qiita-image-store.s3.amazonaws.com/0/77808/f798d3be-de66-ff39-5025-b97a3ecaa13f.png">


##メモリ
メモリをわかりやすく言うと作業スペースと例えられることが多いです。
スペースが大きければ大きいほど同時に作業できることが増えていきます。

CPUにクロック周波数があったようにメモリにもクロック周波数があります。
クロック周波数が高ければ高いほど、一度に遅れる情報量が増えます。

メモリにも規格があり
現在だとDDR3やDDR4が主流で、
DDR4が一番データの送受信が早いです。

####メモリとHDD
HDDとメモリの違いについてですが、
メモリを机に例えるなら、HDDは本棚や引き出しに例えられます。

メモリは作業するときに一時的にデータを記憶し、そのデータを使用して
処理をします。
HDDは長期的にデータを保存しますが、処理が遅いです。

CPUからHDDにアクセスしてデータを取ってきても処理が遅いので
コンピューター全体の速度も遅くなってしまいます。

そこでその仲介役としてメモリが存在します。

##ストレージ
データが保管・保存される場所
HDDはこのストレージにあたります。

まずHDDの構造は、中にデータを記録するプラッタと呼ばれる磁性体が塗られた円盤が複数入っていて、磁気ヘッドで書き込み・読み出しをする仕組みになっています。
プラッタは高速で回転しているので、回転中に大きな衝撃が加わると、プラッタとヘッドが接触するなどして破損やデータ消失等、動作不良の原因となることがあります。
<img width="500" src="https://qiita-image-store.s3.amazonaws.com/0/77808/88d82eb3-7b09-0e7a-dce9-5c5090250d8d.jpeg">


最近のコンピューターはSSDを搭載していることが多いです。
SSD（ソリッド・ステート・ドライブ）はHDDと比べて無音で高速と言われています。

![ssd.jpg](https://qiita-image-store.s3.amazonaws.com/0/77808/e331a445-6f44-f343-4a7d-8990a675fbc0.jpeg)

SSDはHDDに比べて駆動部分がないため無音で、
メモリチップにデータの読み書きをするので速度も早いです。

しかしHDDはSSDよりも大容量でかつ値段もSSDに比べて抑えられてます。
コンピューターに動画をたくさん入れる人はHDDのほうがいいかもしれません。


##おわりに
コンピューターを選ぶ上で主に上記の３つを参考にすることが多いと思います。
他にもこういうの参考にすることあるみたいなのあれば教えてもらいたいです。