コンピュータのハードウエア

コンピュータのハードウエア

PCの持つ計算能力と記憶容量を考えると,[計算負荷を小さくできる],[メモリを消費しない]という意味がいまひとつ分かりにくいのではないかと思われます.
実際,皆さんが使っているパソコンやスマートフォンの能力はおおよそ以下のようなものです.

PC スマートフォン マイコン
CPU・プロセッサ Core i5/i7/i9, Xeon, Ryzen A16 Bionic(ARM系CPU),Snapdragon 数MHz∼100MHz以上
3∼4GHz 4∼8Core 1.5∼2.5GHz 2∼8Core
メインメモリ(RAM) 16∼64 GB 4∼8 GB 0.5 ∼ 512 kB
ストレージ(HDD, SSD, EPROM) 2∼3 TB以上 64∼256 GB 64 kB∼10 MB

現在では,小さなマイコンであっても,授業で扱うような規模のプログラムでは充分ですので,効率的なコーディングの効果が見えて来ないのも事実なのです.

MotherBoard of PC
ミニタワー型PCの内部.マザーボード,ディスク,電源,周辺機器などが納められている.

MotherBoard of PC
マザーボード(やや旧式)上にCPU,メモリなどが搭載されている.

プロセッサについて

コンピュータの頭脳は,なんと言ってもCPUである.
ソースコード中に記述した a = b + c; などの数値演算や, if(i < 0) などの比較演算・条件分岐は,CPUで行われる.

最新のCPUの動作クロックは,スマートフォンのような小型端末でさえ,数GHz以上となる.
また,1つの半導体パッケージに演算処理ユニットが複数収められ,並列に処理を実行できるマルチコアCPUが一般的である.

CPUが直接処理可能な機械語プログラムは,CPUの製造メーカーや,年代,製品ごとに異なるため,機械語で直接プログラムを書くと使い回しがしにくい.
そこで,機種依存を排したC言語などの高級言語でプログラムを記述して,コンパイラで機械語に翻訳する方法が採用されている.

CPUs CPUs
左:やや旧式のCPU 右:デスクトップPC・ワークステーション用CPU

CPU3
組み込み用CPU.マイクロコントローラとも呼ばれる.

メモリ(主記憶装置)について

メモリは,プログラム実行中に数値データ・文字データ,そしてプログラム自身(コードという)を一時的に記憶しておく,いわば作業場所である.
ソースコード中のint i;double data[100]; などの宣言により,メモリ内にデータの記憶場所が確保される.
最近のPCでは,少なくとも8GB以上の容量のメモリが搭載されていることが多い.スマホでも少なくとも2GB程度以上のメモリ搭載が一般的である.

SO-DIMM
ノートPC用内蔵メモリ.容量やピン数など様々な種類がある.

SDRAM
デスクトップPC用内蔵メモリ.こちらも多くの種類がある.

ディスク類(補助記憶装置)

実用的なプログラムでは,処理結果を単に画面に表示するだけでなく,何らかの方法でデータを永続的に(=電源を切っても)保存したい.
また,処理に必要なパラメータ・計算条件,入力データなどは,毎回キーボードから打ち込むのではなく,ディスク上から読み込んで処理を行う場合が多い.

コンピュータにおいては,このような機能を実現するハードウエアを補助記憶装置と呼ぶ. これらはディスク,ドライブ,ストレージとも呼ばれる.

補助記憶装置の具体的な例として,ハードディスク(HDD)や,ソリッドステートディスク(SSD), SDメモリ, USBメモリ, Blue-ray, DVD, CDROM(古くは MO, PD, FDD, 磁気テープ, パンチカード・・・)などが挙げられる. この中には,名称に「メモリ」とつくものがあるが,これらも補助記憶装置である.

HDD SSD
補助記憶装置.(左)容量は 61GB.ハードディスクドライブ,HDDと略す. (右):ソリッドステートディスクドライブ,SSDと略す.

マイコン:マイクロコントローラ

自動車やスマーホフォンなど,PCに比べて大幅に小型なコンピュータが数多く使われている. このようなハードウエアでは,小さな半導体にプロセッサやメモリ,入出力インターフェースなどがワンチップ化されている.

マイコンと略称で呼ばれるが,「マイクロコンピュータ」,「マイクロプロセッサ」,「マイクロコントローラ」などの呼称があります.
演算機能+いくつかの入出力系があるもので,家電製品や自動車,通信機器など何らかの装置に組み込む用途で使われます.

これに対し,PCはキーボードやマウス,ディスプレイが付けば完結して使うことが可能なものとなっています.
Raspberry Piは小さいながらもデスクトップPCとしての要件を満たす程度の性能を有しているものもあります.

いろいろなマイコンの種類を並べます. (加藤先生の元データはこちら
調査時点での情報なので,一部古い情報が残っている可能性がある.

特徴 主な開発言語 開発環境 価格(個人購入) 外観
Arduino AVRベースのマイクロコンピュータ C(部分的にC++) 無償のJAVA 比較的安価
\1,600∼\8,500
AVR RISC 8bitマイクロコントローラ アセンブラ, C言語 無償のアセンブラ
Cはgccなど
安価
\50∼\2,000
Basic Stamp PICベースマイクロコンピュータ Basic 無償で用意 やや高価
\2,500∼\4,500
H8 8(16,32)bitマイクロコントローラ
組み込み用
回数制限があるが書き換え可能
C/C++言語等 有償の専用品(HEW)
gcc(クロスコンパイラ)
比較的安価
\700∼\4,500
NXP
LPC
ARMマイクロプロセッサベース C/C++言語 オフラインコンパイラ(無償) 安価
∼\2,000
STMicro
F432KC
ARMマイクロプロセッサベース C/C++言語 クラウド上(無償)
オフラインコンパイラ
安価
∼\2,000
mbed
LPC1768
ARMマイクロプロセッサベース
Coretex M3
C++言語 クラウド上
オフラインコンパイラ
(いずれも無償)
やや高価
∼\7,000
PIC 8(16)bitマイクロコントローラ
組み込み用
アセンブラ, C言語 無償の開発環境(MPLAB) 安価
\50∼\2,000
PIC
Raspberry Pi, マイクロコンピュータというより,小型PC
Linuxマシンとして使用可能
アセンブラ, C言語,
python
gcc 他 やや高価
\5,000∼\15,000
RASPI
SuperH RISCチップ
32bitマイクロコントローラ(SH-2など)
32bitマイクロプロセッサ(SH-4, SH-Mobilleなど)
C/C++言語等 有償の専用品
gccとクロスコンパイラ
比較的安価
\900∼\3,000
Z80 8bitマイクロプロセッサ
昔はパソコン,今は組み込み用
アセンブラ, C言語 有償の専用品 比較的安価
¥1,000∼\1,500-