コンピュータ基礎

スポンサーリンク

コンピュータの概要

コンピュータの構成装置

  • 入力装置:外部からの信号をデータとして入力する。(キーボード、マウスなど)
  • 記憶装置:データを格納する。(メモリ、ハードディスクなど)
  • 制御装置:入力装置、出力装置、記憶装置への指令を行う。(中央処理装置(CPU))
  • 演算装置:算術、論理演算などの処理を行う。(中央処理装置(CPU))
  • 出力装置:データを外部に信号として出力する。(ディスプレイ、プリンタなど)

記憶装置の種類

  • キャッシュメモリ:CPU(中央処理装置)とメインメモリ(主記憶装置)の間にある記憶装置。CPUの処理速度を落とさずに高速でのデータ入出力を可能にする。CPUのチップ内部に存在してSRAMを使用している。メインメモリ(主記憶装置)にはDRAMを使用している。
  • 補助記憶装置:主記憶装置を補助する記憶装置。ハードディスク、SSD、DVD、USBメモリなど。

入力装置のインタフェース

  • PCI:パラレル伝送を使用した規格。PCI Expressはシリアル伝送である。
  • PS/2:マウスやキーボードを接続するための規格。現在はUSBなどに置き変わっている。
  • SCSI:パラレル伝送を使用した規格。
  • USB:PCと周辺機器の接続方法を統一することを目的に開発されシリアル伝送の規格。
    1つのコントローラーチップあたり127台までの機器が接続できる。
    機器の電力をバス自身から供給できるバスパワード駆動機能や、PCや周辺機器の電源を入れたままの状態でコネクタを抜き挿しできるホットプラグ機能、端子を接続すると自動的にドライバなどをインストールして設定を行うプラグ・アンド・プレイ機能を実現した。

入力装置

  • タッチパネル:指やペンで画面に触れることで信号を入力する装置。静電容量方式(電流の変化を利用)と抵抗膜方式(圧力に反応する)がある。

コンピュータの性能

クロック周波数

中央演算装置(CPU)が処理のタイミングを合わせるための周波数。

サイクルタイム(クロックサイクル時間)

コンピュータのデータの読み込みまたは書き込みをしてから、次の読み込みまたは書き込みをするまでの時間。
サイクルタイム=1クロックの周期Tであり、クロック周波数f=1/Tである。

CPI(Cycles Per Instruction)

1命令あたりの平均サイクル数を示す。
CPI=4とは、1つの命令の処理に4サイクル(4×サイクルタイム)使用するという意味である。

MIPS(Million Instructions Per Second)

コンピュータの処理速度をあらわす単位の一つで、毎秒何百万回の命令を実行できるかを表す。

システムの信頼度

2つのシステムの信頼度をそれぞれA1、A2とすると結合した信頼度Aは以下のようになる。
信頼度は0<A<1の値で表される。
直列接続:A=A1×A2
並列接続:A=1-(1-A1)(1-A2)

RASIS

コンピュータシステムを評価するのに用いられる5つの項目の頭文字を繋ぎ合わせた用語。

  • 信頼性(Reliability):稼働時間当たりの障害発生回数(MTBF)などの指標で表す。
  • 可用性(Availability):一定時間に対する稼働時間の割合(稼働率)などの指標で表す。
  • 保守性(Serviceability):障害発生から復旧までの平均時間(MTTR)などの指標で表す。
  • 保全性(Integrity):過負荷や障害などによるデータの破壊や喪失、不整合などの起こりにくさを表す。
  • 機密性(Security):外部からの不正侵入や、機密データの漏洩などの起こりにくさを表す。

システムの稼働率

システムが正常に稼働している時間の割合。
直列:稼働率を乗ずる。
並列:停止する確率(1ー稼働率)をそれぞれ求めて乗じて、全体の停止する確率を求め、1ー全体の停止する確率となる。

記憶素子の種類

RAM(揮発性メモリ)

電源供給が無いと記憶が無くなる。主に読み書きを頻繁に行う作業用メモリ。

  • DRAM:コンデンサで構成され、高速だが一定時間ごとに再書き込みが必要となる。
    処理過程での作業記憶用として使用する。主記憶装置(メインメモリ)として使用される。
  • SRAM:フリップフロップで構成され、電源供給状態でデータ保存が可能である。高速で消費電流も少ないが大容量化が難しい。キャッシュメモリとして使用される。

ROM(不揮発性メモリ)

電源供給が無くても記憶が保持される。読み取り専用やデータ保存用のメモリ。

  • マスクROM:製造段階でデータを書き込む。消去はできない。
  • EP-ROM:紫外線で消去が可能である。
  • EEPROM:RAMより低速だが一定回数の書き換えが可能である。高い電圧をかけるとデータを消去できる。読み書きのサイズがバイトサイズで小さいため、小容量のデータ保存に使われる。
  • フラッシュメモリ:EEPROMの一種で、読み書きのサイズが数十キロバイト程度のデータ(ブロック)なので、大容量のデータ保存に使われる。
  • HDD:磁性体を塗布した円盤が数枚、軸を中心に固定されており、高速に回転する構造になっている。磁気ヘッドの付いたアームを操作して、磁気の力でデータを読み書きする。円盤には、トラックというデータ記録用の領域が同心円状に何本もあり、1本のトラックはさらにセクタという小さい区画に分割されている。補助記憶装置として使われる。
  • SDD:フラッシュメモリのチップを集積した構造なので、高速な読み込みが可能である。補助記憶装置として使われる。

コンピュータ言語

コンピュータへの命令をコンピュータ言語の文法で記述したテキストをソースコードと呼ぶ。

  • 機械語:2進符号によって表される言語。
  • アセンブラ言語:ニーモニックコード(簡易記号)によって書き表す言語。
  • インタプリタ言語:人間の言葉に近い対話形言語。実行時に逐次解釈しながら実行される。(BASICなど)
  • コンパイラ言語:実行前にあらかじめコンパイラによって機械語に変換する言語。インタプリタ言語より処理は速い。(Cなど)
  • マクロ:オフィス用のソフトウェアなどで、一連の操作手順をあらかじめ定義しておき、実行する機能。マクロ用の言語で記述される。

信号処理

AーD変換

アナログ信号をデジタル信号に変換し、コンピュータで扱えるデータに変換する。
標本化→量子化→符号化の順で行う。

  • 標本化(サンプリング):連続したアナログ信号を一定間隔で離散的な値に変換する。単位時間当たりの標本回数のことをサンプリング周波数と呼ぶ。
    標本化定理により、元のアナログ信号の最大周波数の2倍を超えた周波数でサンプリングすれば元の波形を再現できる。2倍以下の周波数で標本化すると、周波数の差に相当する低周波の擬似的な信号が折り返し雑音として生成されてしまう。これをエイリアシングという。
  • 量子化:標本化で計測されたアナログ値を、デジタル値(何段階かの値)に変換して整数化する。
  • 符号化:量子化した整数値を2進数などに表現する。

周波数解析

信号に含まれる周波数(波長)を各成分の分布(スペクトル)に変換して解析する。
信号の復元やフィルタなどに利用する。

  • フーリエ変換:アナログ信号に含まれる周波数成分を分解する。
  • 離散フーリエ変換:デジタル信号に含まれる周波数成分を分解する。
  • 高速フーリエ変換(FFT):離散フーリエ変換を効率的に計算するアルゴリズム。

進数計算

N進数とは、桁上がりするまでの数を示している。
10進数なら0→9の10個で桁上がりし、2進数なら0→1の2個で桁上がりし、16進数は0→Fの16個で桁上がりする。

16進数と10進数の対応

1~9までは同じで、以降の10~15は以下のように表記する。
10→A、11→B、12→C、13→D、14→E、15→F

コンピュータのデータ単位

コンピュータのデータは2進数で扱っている。2進数の1桁をビット(bit)と呼び、これが最小単位となる。
1ビットとは21で、表現できる値は0、1の2通りである。
16ビットとは216で、表現できる値は0~65536通りとなる。
1バイト(byte)とは8ビットで、16ビットは2バイトとなる。

進数の変換

10進数をN進数へ変換

10進数をN進数に変換するには、以下の手順で行う。
①10進数をNで割り、商を下、余りを横に書く。
②最終的に残った余りを下から順番に並べていく。
例:9を2進数にする場合(2で割っていく)
9→(1001)2

N進数を10進数へ変換

N進数を10進数に変換するには、以下の手順で行う。
①Nのべき乗形式の各桁を計算する。
②計算した桁の数をすべて足す。
例:2進数を10進数に変換
(1100)2→ (23×1)+(22×1)+(21×0)+(20×0)=12
例:16進数を10進数に変換
(5A2)16→ (162×5)+(161×A)+(160×2)=1442

2進数をN進数へ変換

2進数を他のN進数のビット幅で区切って、区切り毎に値を変換する。
例:8進数に変換(3ビットで区切る)
(111 011 100 001)2→(7341)8
例:16進数に変換(4ビットで区切る)
(1101 0111)2→(D7)16

2進数の表現

論理シフト・回転シフト

  • 左論理シフト:左からずれて捨てられ、右に0を補う。
           2ビット左シフト:10100→10000
  • 右論理シフト:右からずれて捨てられ、左に0を補う。
           2ビット右シフト:1010000101
  • 左回転シフト:右からずれて捨てられ、左に捨てたものを補う。
           3ビット右回転シフト:1010010010
  • 右回転シフト:左からずれて捨てられ、右に捨てたものを補う。
           3ビット左回転シフト:10100→00101

2進化10進数(BCD)

10進数の1桁を4ビットの2進数に変換する。
23→(0010 0011)2

符号付き2進数

  • 符号付き
    (0111 1111)2 = 127
    (1000 0000)2 = ー128
    (1111 1100)2 = ー4
    (1111 1111)2 = ー1
  • 符号無し
    (0111 1111)2 = 127
    (1000 0000)2 = 128
    (1111 1100)2 = 252
    (1111 1111)2 = 255
  • 絶対値表示方式:単純に上位1ビットを符号にしたもの。
    (1000 1000)2 = ー8

2の補数

16進数(271)16を2の補数にするには
①2進数に変換する。(0010 0111 0001)2
②各ビットを反転する。(1101 1000 1110)2
③+1する。(1101 1000 1111)2

論理回路

論理回路の構成要素

AND(論理積)

入力の両方が1の時に出力が1となり、その他は0となる。

$\displaystyle A・B $

OR(論理和)

入力の片方または両方が1の時に出力が1となり、両方が0の時に0となる。

$\displaystyle A+B $

NOT(否定)

入力を反転して出力する。

$\displaystyle \overline{A} $

NAND(否定論理積)

ANDの出力を反転して出力する。

$\displaystyle \overline{A・B} $

NOR(否定論理和)

ORの出力を反転して出力する。

$\displaystyle \overline{A+B} $

ExOR(排他的論理和)

ORの出力で、入力の両方が1の時は1ではなく0を出力する。

$\displaystyle \overline{A}・B+A・\overline{B} $

論理式の法則

ド・モルガンの法則

長いNOT棒で繋がった値は、ANDとORを逆転させて、個々の値のNOTに分割できる。

$\displaystyle \overline{A・B}=\overline{A}+\overline{B} $

$\displaystyle \overline{A+B}=\overline{A}・\overline{B} $

二重否定

$\displaystyle \overline{\overline{A}}=A $

同一則

$\displaystyle X+X=X  X・X=X $

相補則

$\displaystyle X+\overline{X}=1  X・\overline{X}=0 $

分配則

$\displaystyle (A+B)・(A+C)=A+B・C $

カルノー図を使用した論理式

次の真理値表の出力を表す論理式をカルノー図で求める。

  1. ABCDの4個の要素(16個の箱)のカルノー図を作り、Xの値を設定する。
    縦横の順番は00→01→11→10であることに注意する。
  2. 「1」が設定された隣接の箱を2のべき乗の数で囲んでいく。このとき、表の上下、左右は繋がっているものとして考える。
    今回は16個の箱なので、16→8→4→2の順番で囲んでいく。
    16個、8個は無い。4個がピンクと青の2か所、2個が緑の1か所となる。

    2個の囲み箇所については、下の図の点線で示す所などもあるが、必要な要素は重複して囲まれていない「1」が存在するものだけである。
    点線の囲み箇所は、いずれも「1」が他の囲みと重複しているため、これらは考えないで無視する。
  3. ピンク・青・緑の囲み箇所について、それぞれ論理式を作成し、その論理和が出力の論理式となる。
    論理式への変換は、囲まれた箇所すべてで同じ要素のものは残し、異なるものは残さない。
    (ピンクの場合では、4つの箇所でAとBはすべて同じで、CとDは異なるもの(CD)を含むので残さない)

ピンク:$\overline{A}・\overline{B}$
  青:$\overline{A}・\overline{D}$
  緑:$A・B・C$
出力の論理式:$\overline{A}・\overline{B}+\overline{A}・\overline{D}+A・B・C$

フリップフロップ

1ビットの情報(0,1)を保持する(記憶する)ことができる論理回路。
出力端子は順出力と反転出力の2つある。
組み合わせることで、数を数えるカウンタ回路や、数値を記憶するレジスタ回路を作る。

チャタリング防止回路

チャタリングとは、手動でパルスを発生する場合などに、スイッチのON/OFFの出力が安定するまで、断続的な反跳動作を繰り返すこと。
これを防止するためには、出力前にシュミットトリガNOTゲートを接続する方法や、フリップフロップ回路を接続する方法がある。

RSフリップフロップ

入力端子がS、Rの2個、出力端子がQ、Q(NOT)の2個存在する。
SET=1でQ=1、RESET=1でQ=0となる。
S=R=0の場合、出力は変化しない。(保持)
S=R=1は禁止されている。

JKフリップフロップ

入力端子がJ、Kの2個、出力端子がQ、Q(NOT)の2個、タイミング端子CLK、リセット端子CLRが存在する。JとKの入力信号のセットで出力が変化する。
J=1、K=0の場合、Q=1となる。
J=0、K=1の場合、Q=0となる。
J=K=0の場合、出力は変化しない。(保持)
J=K=1の場合、出力は反転する。
CLR=0の場合、出力Q=0(リセット)となる。
CLK(クロック)入力があり、回路図のCLKに〇がある時はクロック信号の立下りで動作し、無い場合は立上りで動作する。
クロック入力からフリップフリップの出力信号が変化するまで少し時間が遅れる。従って多段構成のフリップフロップ回路では、前段の出力信号から次のフリップフロップが変化するまで伝播遅れが段数分発生する。

Dフリップフロップ(ディレイ)

入力端子がDの1個、出力端子がQ、Q(NOT)の2個、タイミング端子CLKが存在する。
CLK(クロック)入力のタイミングで入力端子Dの値を記憶する。
CLK(クロック)入力のタイミングで入力端子Dが変化するまで、記憶した値を出力端子Qに出力する。

Tフリップフロップ(トグル)

入力端子がTの1個、出力端子がQ、Q(NOT)の2個、タイミング端子CLKが存在するものもある。
入力端子Tの値が0→1のタイミングで出力端子Qが反転する。
CLK端子がある場合は、CLK(クロック)入力のタイミングで出力端子Qが反転する。

バブルソートのフローチャート

バブルソートとは、隣り合う2つのデータの大小を比較して、並べたい順序になっていなければ入れ替える操作を繰り返すことで整列を行う方法である。
小さい順に並べるものを昇順、大きい順に並べるものを降順という。
プログラムのフローチャートは、どちらも基本的に同じで、⑥のデータの比較部分が逆になる。

昇順ソートのフローチャート

処理の流れ(小さい順に並べる)

  1. データを格納する配列(箱)をa[1]~a[n]のn個作成してデータを格納する。
  2. 基準となる配列a[i]と比較する配列a[j]でデータの大小を判定する。
  3. 基準となる配列a[i]の位置はそのままで、比較する配列a[j]の位置を最後の配列までずらしていき、判定を繰り返す。
  4. データの入れ替えが必要な場合は、基準となる配列a[i]と比較する配列a[j]のデータを入れ替える。
  5. 入れ替え後も、基準となる配列a[i]の位置はそのままで、比較する配列a[j]の位置を最後の配列までずらしていき、判定を繰り返す。
  6. 比較する配列a[j]が最後までいったら、基準となる配列a[i]の位置を一つずらして、同様に比較判定を繰り返す。
  7. 基準となる配列a[i]が最後の一つ手前までいったら、終了する。

A~Dルートの処理

A:基準となる配列a[i]のデータの方が、比較する配列a[j]のデータより小さいので、何もしないルート。
B:基準となる配列a[i]のデータの方が、比較する配列a[j]のデータより大きいので、データの入れ替えが必要で、一旦mにデータを移してから配列のデータa[i]とa[j]を入れ替えるルート。
C:基準となる配列a[i]の位置はそのままで、比較する配列a[j]の位置を+1ずらして、また比較するルート。
D:基準となる配列a[i]の位置を+1ずらして、その隣の比較する配列a[j]から、また比較するルート。

①~⑪の処理

①データの個数がn個であることを読み込む。
②データを格納する配列(箱)をn個作成する。
③作成した配列a[1]~a[n]にデータを読み込んで格納する。
④基準となる配列a[i]の位置iに1を設定して初期化する。
⑤比較する配列a[j]の位置jに、現在基準となる配列a[i]の位置+1の値を設定する。
⑥基準となる配列a[i]のデータが、比較する配列a[j]のデータより大きいか判定する。
⑦比較する配列a[j]の位置jを+1して隣にずらす。
⑧比較する配列a[j]の位置が、データの個数nを超えていないか判定する。
⑨基準となる配列a[i]の位置iを+1して隣にずらす。
⑩基準となる配列a[i]の位置が、データの個数n-1を超えていないか判定する。
⑪ソートが終わった配列を出力する。

降順ソートのフローチャート

昇順ソートのフローチャート⑥の比較処理が、以下の判定に変わる。
a[i]<a[j]:基準となる配列a[i]のデータが、比較する配列a[j]のデータより小さいか判定する。


Ver1.0.3

タイトルとURLをコピーしました