1. ハードウェアとは

ハードウェアとは、目に見えて手で触れられる物理的な装置のことです。

パソコンはもちろん、Webサーバーやスマートフォン、スーパーコンピューターから様々な家電に入っているコンピュータには、共通の装置が5つあります。コンピュータの5大装置とよばれています。①制御装置、②演算装置、③入力装置、④主記憶装置、⑤出力装置の5つです。また、①制御装置と②演算装置をあわせてCPU(中央処理装置)といいます。さらに、5大装置には含まれませんが、ハードディスクやSSDなどの補助記憶装置も重要な装置です。

  1. 制御装置【Control Unit】 制御装置は、コンピュータの動作全体を制御し、命令の解釈と実行を行う重要な部分です。主な役割は、プログラムの命令をメモリから取得し、データを演算装置に送り、実行順序を制御することです。CPUの一部であり、指令サイクルに基づいて、各部品の動作を同期させています。
  2. 演算装置 【Arithmetic Logic Unit, ALU】演算装置は、コンピュータが計算や演算を行うための部分です。算術演算(加算、減算、乗算、除算など)と前章で学んだ論理演算(AND、OR、NOTなど)を実行します。制御装置から受け取った命令に従って演算を行い、結果を主記憶装置やレジスタに保存します。
  3. 入力装置 【Input Devices】入力装置は、ユーザーがコンピュータに情報を提供するための装置です。キーボード、マウス、タッチパッド、スキャナーなどが一般的な入力装置です。これらの装置によって文字、数値、画像、音声などがコンピュータに入力され、処理されるデータとなります。
  4. 主記憶装置 【Main Memory】主記憶装置は、コンピュータが実行中のプログラムやデータを一時的に格納するメモリです。主記憶装置はRAM【Random Access Memory】としても知られ、高速にアクセスできます。CPUは主記憶装置からデータや命令を取得して処理を行います。
  5. 出力装置 【Output Devices】出力装置は、コンピュータの処理結果をユーザーに表示したり、印刷したりするための装置です。ディスプレイ、プリンター、スピーカー、プロジェクターなどが一般的な出力装置です。これらの装置によって処理結果や情報がユーザーに出力されます。

これらの5大装置が連携して動作することによって、コンピュータは情報処理を行い、様々なタスクを実行します。制御装置が全体の動作を統括し、演算装置が計算を行い、入力装置と出力装置が情報の入出力を担当し、主記憶装置がデータの一時的な格納を担います。

新人エンジニア
コンピュータの5大装置

2. CPU

CPU【Central Processing Unit】は、コンピュータの中央処理装置で、その機能はコンピュータの「脳」に例えられます。CPUはコンピュータが実行するすべての命令を解釈し、制御し、命令に基づいて計算やデータの操作を行います。コンピュータ内の他のハードウェアやソフトウェアとの相互作用を統制し、コンピュータの性能と能力の大部分を決定します。

具体的には、CPUは以下のような機能を果たします。

2.1 命令の実行

コンピュータのプログラムは一連の命令で構成されています。CPUはこれらの命令をフェッチ(取り出し)、デコード(解読)、そして実行します。このプロセスは命令サイクルまたはフェッチ-デコード-実行サイクルとして知られています。

2.2 計算の実行

CPUは算術演算装置【Arithmetic Logic Unit, ALU】を含み、基本的な算術(加算、減算など)と論理(AND、OR、NOTなど)の演算が可能になります。

2.3 データ転送の制御

CPUはメモリとの間でデータを送受信します。CPUはプログラムの指示に従ってデータを読み取り、書き込み、移動できます。

2.4 入出力の管理

CPUは、キーボード、マウス、プリンター、ディスプレイなどの入出力デバイスと通信します。ユーザーがコンピュータと対話したり、コンピュータがユーザーにフィードバックを提供したりすることが可能になります。

CPUの性能はそのアーキテクチャ(設計)、クロック速度(命令を処理する速度)、コアの数(一度に複数の命令を処理できる核となる部品の数)、キャッシュのサイズ(高速にアクセス可能なメモリの量)などによって決まります。

CPUは、ハードウェアの進化により、高速化、マルチコア化、エネルギー効率の向上などの進化を遂げています。より強力で効率的なコンピュータシステムが可能になり、複雑なソフトウェア、ビッグデータの処理、高度なゲームやVR、AIといった技術が実現しています。

(Intel Core i7-6700K)FCLGA1151。
Eric Gaba, Wikimedia Commons user Sting, CC 表示-継承 4.0, リンクによる

例題

基本情報処理技術者試験 平成18年秋期 午前問19 PCのCPUのクロック周波数の問題にチャレンジしてみましょう。

実験

タスクマネージャーを起動して(ショートカットキーは Ctrl + Shift + Esc)複数のアプリケーションを起動してみましょう。CPUはどうなりますか?

ここからシステム開発中は余計なアプリケーションは閉じるということの大切さを読み取ってください。

新人エンジニア
タスクマネージャーのプロセスタブ
新人エンジニア
タスクマネージャーのパフォーマンスタブ

2. メモリ

メモリは、コンピュータにおける一時的なデータ保管場所であり、CPUが直接アクセスして情報を読み書きすることができます。メモリは通常、RAM【Random Access Memory】という形で存在し、コンピュータが作動している間、アプリケーションやオペレーティングシステムがデータを一時的に保管するのに使われます。

メモリの主な特徴は以下の通りです。

2.1 揮発性

RAMは揮発性メモリであり、電源が切られるとその内容は消失します。これは、データの永続的な保存にはハードドライブやSSD【Solid State Drive】のような非揮発性のストレージデバイスが使用される理由です。なお、パソコンでもスマホでも調子が悪いときに最良の方法は再起動することです。なぜなら、再起動することによってメモリ上のゴミデータを一掃することができるからです。

2.2 高速

RAMはCPUが直接アクセスできるため、非揮発性ストレージと比較して読み書き速度がはるかに高速です。このため、現在実行中のアプリケーションやプロセスのデータはRAMに保管されます。

2.3 ランダムアクセス

メモリはランダムアクセス可能で、つまり任意の順序で任意の場所にアクセスすることが可能です。CPUは必要なデータを直接、高速に取り出すことができます。

なお、ランダムアクセスと対になる言葉がシーケンシャルアクセスです。磁気テープのように順番にしかアクセスできない構造のことをいいます。

メモリは、アプリケーションの実行速度とコンピュータのパフォーマンスに大きな影響を与えます。メモリが少ないと、アプリケーションはデータを一時的にディスクにスワップ(交換)する必要があります。ディスクアクセスはメモリからの読み書きよりも遅いです。そのため、多くのアプリケーションを同時に実行するため、または大量のデータを処理するためには、十分な量のメモリが必要です。

DDR2 ram mounted.jpg
GFDL 1.2, リンク

例題

基本情報処理技術者試験 平成27年春期 午前問22 SRAMと比較した場合のDRAMの特徴の問題にチャレンジしてみましょう。

実験1

タスクマネージャーを起動したまま、複数のアプリケーションを起動してみましょう。メモリはどうなりますか?

ここでもシステム開発中は余計なアプリケーションは閉じるということの大切さを読み取ってください。

新人エンジニア
タスクマネージャーのメモリ

2.4 DRAMとSRAM

DRAM【Dynamic Random Access Memory】とSRAM【Static Random Access Memory】は、コンピュータシステムのメインメモリとして使用される2種類のRAM(ランダムアクセスメモリ)です。これらの2つのメモリは、いずれもデータへの高速アクセスを可能にしますが、設計と機能の面で重要な違いがあります。

DRAM

  • DRAMはメモリセルごとに1つのトランジスタと1つのコンデンサで構成され、ビット情報をコンデンサの電荷として保存します。しかし、コンデンサは時間とともに電荷を失ってしまうため、DRAMは定期的に「リフレッシュ(電荷を再充電する)」する必要があります。動的(ダイナミック)と名付けられているゆえんです。
  • 一般的に、DRAMはSRAMよりも製造コストが低いため、より大量のメモリを提供できます。したがって、DRAMは一般的にシステムのメインメモリとして使用されます。

SRAM

  • SRAMは、メモリセルごとに6つのトランジスタで構成されています。トランジスタは特殊な配線配置を使用してデータを保存し、DRAMと異なり電荷のリフレッシュは必要ありません。SRAMが静的(スタティック)と呼ばれるゆえんです。
  • SRAMはDRAMよりも高速で信頼性が高いですが、製造コストが高いです。したがって、SRAMは一般的にキャッシュメモリとして使用されます。キャッシュメモリは頻繁にアクセスされるデータを一時的に保存する領域です。

話し合ってみましょう

パソコンでもスマホでも不調になったときに最初に試すのが再起動です。なぜ、再起動が問題を解決するのでしょうか?

2.5 ノイマン型コンピュータとメモリ

現代のコンピュータはノイマン型コンピュータと呼ばれています。つまり、プログラムとデータを同じメモリ空間に格納して扱うコンピュータです。メモリのアドレスは、ノイマン型コンピュータにおいてたいへん重要な概念です。

ノイマン型コンピュータのメモリは、コンピュータが実行するプログラムやその実行に必要なデータを保持する場所です。このメモリは連続したアドレス空間に配置されており、各アドレスにはデータや命令が格納されています。

メモリのアドレスは、コンピュータがメモリ内の特定のデータや命令を参照するために使用されます。CPUは、プログラムを順番に読み込んで解釈し、それに基づいてデータを取り出し、演算を行い、必要に応じて結果をメモリに書き戻します。

プログラムの命令もまた、メモリ上に格納されており、それらもアドレスによって識別されます。プログラムの実行中、CPUは次に実行するべき命令のアドレスを保持し、それを取り出して実行します。このように、プログラムの流れはメモリ内の命令の順序によって制御されます。

一般的なノイマン型コンピュータのメモリアクセスは、特定のアドレスに対して読み取り(データを取得)または書き込み(データを更新)が行われることで構成されます。メモリアドレスは整数値で表され、コンピュータアーキテクチャによってそのサイズが異なります(例:32ビットアーキテクチャでは32ビットのアドレス、64ビットアーキテクチャでは64ビットのアドレスを使用します。例えば、Windowsでも64ビットアーキテクチャを採用していますが、過去のアプリケーションとの互換性を確保する目的で32ビットの互換モードも提供しています)。

新人エンジニア
Windowsにおける64bitと32bit(x86)アーキテクチャ

ノイマン型コンピュータのメモリのアドレスが、プログラムとデータを同じ空間に配置したことで、プログラムの自己修正や動的なデータ構造の作成など、柔軟で高度なコンピュータプログラムの実現が可能になりました。このアーキテクチャは、現代の一般的なコンピュータの基盤となっており、皆さんがお使いのコンピュータも全てノイマン型コンピュータです。

2.6 メモリとアドレス

コンピュータメモリは、"箱"として例えることができます。各"箱"には一意の"アドレス"があります。これは物理的な住所と同様に、それぞれのメモリアドレスがコンピュータ内の一意の場所を指し示すものです。

メモリアドレスを使った説明を試みてみましょう。一般的には、アドレスは整数として表されます。コンピュータのメモリを一連の番地を持つ街と考えてみましょう。たとえば、"123番街"はメモリアドレスの一つで、特定のデータ(10)が格納されています。"124番街"は別のメモリアドレスで、異なるデータ(20)が格納されています。

CPUがプログラムを実行する際、メモリアドレスを参照して必要なデータを読み取りまたは書き込みます。たとえば、CPUは"123番街"にあるデータと"124番街"にあるデータを合計して、"125番街"にデータを書き込みます。

(上記の操作をCPUに代わって皆さんがやってみてください)

新人エンジニア
メモリのアドレスのイメージ

次回学びますが、メモリアドレス管理はオペレーティングシステム(OS)の重要な役割の一つで、メモリアドレスを各プログラム間で適切に割り当てて、互いに干渉しないようにする機能を担っています。

このように、コンピュータのメモリ管理は、街の番地システムと非常によく似ています。しかし、実をいえば、メモリ管理はとても複雑で、各アドレスが何バイトのデータを保持できるか、どのようにデータがエンコード(符号化)されているか、アドレスがどのように割り当てられるかなど、多くの要素があります。

実験2

Cheat Engineはオープンソースのメモリスキャナ/エディタで、その名の通り、主にゲームのチート作成に使用されますが、任意のプロセスのメモリをスキャン、表示、編集することができます。時間的な余裕があれば、講師からデモを見せてもらってください。

新人エンジニア
Cheat Engineを使うことでメモリの状態を可視化できる

2.7 スラッシング

複数のアプリケーションがメインメモリ(RAM)を使い切った場合、通常、オペレーティングシステム(OS)が一部のメモリをディスクに移動させる処理を開始します。この処理は「ページング」または「スワッピング」と呼ばれ、OSがアクティブなプログラム間で利用可能なメモリを分割する方法の一部です。

スワップはメモリの一部をディスク上の特定の領域(スワップスペースまたはページファイルと呼ばれる)に一時的に移動することで、物理的なRAMが不足してもシステムが稼働し続けるようにします。ただし、ディスクはRAMに比べて遥かに遅いため、大量のページングが行われるとシステムのパフォーマンスが著しく低下します。この現象は一般的に「スラッシング」と呼ばれ、CPUがページングの処理に忙しくなり、アプリケーションの実行に必要なリソースが不足する状況を指します。

このような状況を避けるためには、次のような対策を取ることが推奨されます。

  1. 必要ないアプリケーションは終了する。メモリ不足が発生している場合、使用していないアプリケーションを終了してメモリを解放すると良いでしょう。
  2. メモリを追加する。物理的なメモリ(RAM)が足りない場合、メモリを追加することを検討してみてください。
  3. アプリケーションのメモリ使用量を最適化する。アプリケーションの設定を調整して、メモリ使用量を最小限に抑えるようにすることも有効です。(以下の実験3参照)
  4. スワップスペースを増やす。スワップスペースが少ない場合、スワップスペースを増やすことを検討してみてください。ただし、これはあくまで一時的な解決策であり、パフォーマンスの低下を引き起こす可能性があるため注意が必要です。(以下の実験4参照)

実験3

エクリプス(Eclipse)でメモリの割り当てを変更するためには、eclipse.iniファイルを編集します。Eclipse IDEが使うことができるJavaヒープメモリの最小量と最大量を設定できます。以下の図のようにメモリのサイズが変われば成功です。

新人エンジニア
ヒープ・サイズが変わることを確かめる

以下の手順で操作してください。

1.エクリプスのインストールディレクトリに移動します。エクリプスのショートカットを右クリックし、「プロパティ」を選択した後、そのショートカットが指しているパスを探します。そのパスに移動すると、eclipse.iniファイルを見つけることができます。

2.eclipse.iniファイルをテキストエディタで開きます。

3.以下の二つのパラメータを見つけます(存在しない場合は追加することも可能です)

-Xms : これはJVMが起動時に確保する初期ヒープサイズを表します。
-Xmx : これはJVMが使用できる最大ヒープサイズを表します。

4.これらの値を変更します。例えば、起動時に512MBのメモリを確保し、最大で2048MBまで使用できるように設定したい場合は、次のように記述します。

-Xms512m
-Xmx2048m

5.ファイルを保存して閉じます。

6.Eclipseを再起動します。新しいメモリ設定が適用されるはずです。

注1 最大ヒープサイズは、システムの利用可能なメモリによります。あまりにも多くのメモリを割り当てると、システムのパフォーマンスに影響を及ぼす可能性がありますので、注意してください。

注2 メモリ割り当ては、ヒープメモリだけでなく、ヒープ以外のメモリも含まれます。そのため、メモリの割り当てサイズとヒープサイズは一致しません。

注3 実験終了後は元に戻しておきましょう。

実験4

実際には行いませんが、Windowsでスワップスペースを増やす手順を確認しましょう。(以下の手順はWindowsのバージョンにより微妙に異なります)

Windowsの検索窓に[コントロールパネル] と入力します。

  • [システム] > [詳細設定]を開きます。
  • [パフォーマンス]セクションの[設定]をクリックします。
  • [詳細設定]タブを開き、[仮想メモリ]セクションの[変更]をクリックします。
  • ページングファイルのサイズを調整するドライブを選択し、[カスタムサイズ]を選択します。初期サイズと最大サイズをメガバイト単位で入力します。
  • [設定]をクリックしてから、[OK]をクリックします。
  • 必要に応じてシステムを再起動します。

この手順により、スワップスペースを増やすことができます。ただし、スワップスペースはディスク上に存在するため、RAMよりも遅いです。したがって、スワップスペースに頼りすぎるとシステムのパフォーマンスが低下する可能性があります。スワップスペースを増やす代わりに、RAMを増設することを検討してください。

3. ストレージデバイス

ストレージデバイスは、コンピュータシステムにおいてデータを永続的に保管するためのハードウェアです。メモリとは異なり、ストレージデバイスは非揮発性であり、電源が切れてもデータが消失しません。このデバイスは、コンピュータのOS、アプリケーション、ユーザーの個人データなど、様々な形式のデータを保存します。

主なストレージデバイスの種類には以下のものがあります。

3.1 ハードディスクドライブ(HDD)

HDDは磁気材料にデータを書き込むという古典的な方式を使用します。このタイプのデバイスは大量のデータを格納できますが、機械的な部品を含むため、衝撃に弱く、またSSDと比較してデータの読み書きが遅いというデメリットがあります。

3.2 ソリッドステートドライブ(SSD)

SSDはフラッシュメモリという技術を使用してデータを保存します。SSDはHDDよりもはるかに高速で、衝撃に強く、消費電力も少ないです。ただし、HDDと比較して一般的には高価で、同じ価格では少ない容量しか提供できないというデメリットがあります。

3.3 その他のストレージデバイス

光学式ストレージ(CD、DVD、Blu-ray)

これらのデバイスはレーザーを使用してデータをディスクに読み書きします。これらは主にデータの配布や長期保存に使用されますが、現代ではフラッシュドライブやクラウドストレージに取って代わられつつあります。

フラッシュドライブ(USBドライブ)

小型で携帯性があり、さらには比較的低コストなため、データの転送や一時的な保存によく使用されます。

また、ストレージデバイスの選択は、使用目的、コスト、性能、信頼性など、様々な要因によって影響を受けます。そして、最近では、物理的なストレージデバイスの代わりに、データをインターネット経由でアクセス可能なリモートサーバに保存するクラウドストレージも広く利用されています。

調べてみましょう

ハードディスクを廃棄する際には物理的に破壊することが最も確実です。なぜ、「削除」するだけでは十分でないのでしょうか?講師に尋ねてみましょう。

4. 入力デバイス

入力デバイスとは、ユーザーからの入力情報をコンピュータに送るためのハードウェアデバイスのことを指します。これには、キーボード、マウス、タッチパッド、スキャナー、マイクロフォン、ウェブカメラ、ゲームコントローラー、タッチスクリーンなどが含まれます。

以下に、主な入力デバイスの機能を説明します

4.1 キーボード

キーボードは最も一般的な入力デバイスで、ユーザーがテキストを入力したり、特定のコマンドを実行したりするために使用します。キーボードは標準入力とよばれることがあります。

4.2 マウス

マウスはポインティングデバイスとして分類され、ユーザーがグラフィカルユーザーインターフェイス(GUI)を操作するために使用します。ユーザーはマウスを動かすことでカーソルを画面上で移動させ、ボタンをクリックすることで選択や実行を行います。

これらの入力デバイスは、ユーザーがコンピュータと対話し、情報を送信するための基本的なツールです。

キーボードの扱い方のコツとショートカットキーをまだ講師から聞いていない人はこの機会に説明を受けてください。

新人エンジニア
キーボードの扱い方のコツ

5. 出力デバイス

出力デバイスとは、コンピュータが処理した結果をユーザーに表示、提供するためのハードウェアデバイスのことを指します。これには、モニター、プリンター、スピーカーなどが含まれます。

以下に、主な出力デバイスの機能を説明します。

モニター

モニターは最も一般的な出力デバイスで、テキスト、画像、ビデオなどの視覚情報を表示します。

プリンター

プリンターはデジタル情報を印刷します。この印刷はテキストやグラフィックスの形で行われ、レポート、写真、チケットなどを作成するのに使用されます。

これらの出力デバイスは、コンピュータが情報をユーザーに伝えるための基本的なツールです。一部のデバイス、たとえばタッチスクリーンモニターなどは、入力と出力の両方を提供し、ユーザーとの相互作用をさらに強化します。

6. キャッシュについて

コンピュータシステムは効率的に機能するために、様々なキャッシュメカニズムを使用しています。キャッシュは、頻繁に使用される情報を一時的に保存するための高速ストレージで、システムの性能を向上させるために使用されます。主として以下のような種類があります。

CPUキャッシュ

プロセッサ内部に存在し、最も高速でアクセス可能なキャッシュです。このキャッシュは、CPUが直接アクセスできるデータと命令を保存します。頻繁に使用される情報がこのキャッシュに存在する場合、CPUは遅い主記憶から情報をフェッチする必要がなく、その結果、システムのパフォーマンスが向上します。通常、L1、L2、L3という3つのレベルのCPUキャッシュがあり、L1が最も高速で小規模、L3が最も大規模で比較的遅いです。

ディスクキャッシュまたはページキャッシュ

キャッシュは、最近使用されたデータまたはファイルを保持し、繰り返しアクセスするための時間を短縮します。ディスクキャッシュはRAMに配置され、ディスクI/Oの時間コストを削減します。

ブラウザキャッシュ

ウェブブラウザは、最近訪れたウェブサイトのコンテンツをキャッシュに保存します。同じウェブページを再度訪問するときに、全てのコンテンツを再度ダウンロードする必要がなくなり、ページのロード時間が大幅に短縮されます。

ブラウザキャッシュに注意

ブラウザキャッシュの主な問題は、更新されたウェブページがすぐに表示に反映されないことです。なぜなら、ブラウザはキャッシュされた旧バージョンを表示するためです。この問題を解決するために、ユーザーはWebページを強制的にリロードする必要があります。強制的にページをリロードするショートカットキーは「Ctrl + Shift + r」ですので覚えてください。

例題

基本情報処理技術者試験 平成28年春期 午前問11  キャッシュメモリの効果の問題にチャレンジしてみましょう。

補助単位について

コンピュータは非常に高速なので、CPUの時間を扱う単位が秒では大きすぎます。また、大容量の記憶領域を持ちますのでメモリの容量を扱う単位がバイトでは小さすぎます。

そこで以下のような補助単位を使います。(一部ですが現状のコンピュータシステムでよく使われる範囲にとどめました)

小さい方の補助単位
補助単位記号指数表記10進数表記
ミリ 【milli】m10-3 0.001
マイクロ 【micro】µ1 0-60.000 001
ナノ 【nano】n1 0-90.000 000 001
ピコ 【pico】p1 0-120.000 000 000 001
大きい方の補助単位
補助単位記号指数表記10進数表記※
キロ 【kilo】k1031 000
メガ 【mega】M1061 000 000
ギガ 【giga】G1091 000 000 000
テラ 【tera】T10121 000 000 000 000
※ただし、データ容量の場合は2進数使用のため1kByteが正確には1024byteになる

例題

現在使用中のパソコンの仕様書から以下の項目を調べてみましょう。

ハードウェア名項目の例調べた結果を以下にメモしてください
CPU(プロセッサ)モデル名、コア数、クロック周波数など
メモリ(RAM)容量、種類(DDR4など)、速度
ストレージHDDまたはSSDの容量、種類、インターフェース(SATA, NVMeなど)
ディスプレイ画面解像度、サイズ、リフレッシュレート

次回は、「データ表現を知ってもっとコンピュータと仲良くなる」を学びます。

 最後までお読みいただきありがとうございます。