2013-12-12

プログラミング用語を段階的に定義(1) 『CPU』

20131212132508.jpg

[ PR ]


CPUは、プログラミングで最も基本的なものなので、最初の1つに選びました。

この連載では、普通のプログラミング用語集と少し違い、初歩的な定義から順番にだんだんと本質的な定義へと段階的に定義していこうと思います。

定義

『CPUとは、コンピュータの中枢部分で、各装置を制御したり、入力装置や記憶装置からデータを受け取って演算し、出力装置や記憶装置にデータを出力する装置である。』

これは、次の図を見ると分かりやすいと思います。

20131212143632.jpg

入力装置はマウスやキーボードなど、出力装置はディスプレイやプリンタなど、記憶装置はハードディスクやメモリなどです。

ちなみに、本物のCPUは次のようなものです。

20131212142529.jpg

もう少し掘り下げてみます。

『CPUは一定の周波数で動作し、その周波数をクロック周波数という。CPUに接続される各回路はこの周波数を基準に動作する。』

clock-number.jpg

(上図は日経BPより引用)

クロック周波数は、CPUの性能を表すものとして知られていて、例えば 1.8GHz などのようにHz(ヘルツ)で表されることが多いです。

『CPUの中には複数の処理装置(プロセッサ、コア)を持つものもあり、それをマルチコアという。
この場合、各プロセッサは並列処理されるため、マルチコアを活用するには並列処理に対応したプログラムを書く必要がある。』

multicore.jpg

(上図は、Frank Mueller Lab "Chapter 1 - Basics of Cell Architecture"より引用)

これは、デュアルコア(2つのコア)やクアッドコア(4つのコア)という表現もされますね。

コアが複数になると、通常のプログラミングよりも一般に難しくなってきます。そのため、ソフトウェアの中にはマルチコアを活用できないものもありますが、各コアの配分はOSが上手く調整します。

『CPUにはメーカーごとに様々な種類があり、IntelやAMD、ARMなどがある。
例えばIntelとAMDでは処理の方法が違うため、Intelで動作する 機械語 はAMDでは動かない。』

intel-vs-amd.jpg

このことはよくMacで問題になりますね。Intel Macで作られたプログラム(機械語)は、PowerPC Macでは動かないので、両方で利用できるソフトウェアはユニバーサルバイナリという形式で配布されます。

まとめ

どうでしたでしょうか。段階的に分けることでよりわかりやすくなったんじゃないかと思います。

次回から少しずつ別のトピックも解説していこうと思います。

[改訂新版] これからはじめるプログラミング基礎の基礎
谷尻 かおり
技術評論社
売り上げランキング: 15,409

コメントはTwitterアカウントにお願いします。

RECENT POSTS


[ PR ]

.