情報処理基礎

コンピュータの歴史

1950年代、j.フォン・ノイマンは計算の手順を記憶装置に記憶させ、手順を順次とりだして計算していくプログラム記憶(Stored Program)方式を提案した。現在もこのノイマン型がコンピュータの基本となっている。

デバイスの進化

このころの論理素子は真空管であったが、その後トランジスタ、IC、LSI、超LSIと進化してきている。

マイクロコンピュータ

1971年インテルから4ビットマイクロプロセッサ4004(MCS-4)が発表された。その後 8080、8086と進化してきた。X86と呼ばれるプロセッサである。そのほかにモトローラのM6800などがあった。
年代別

1971年4ビット4004
1973年8ビット8080
1977年16ビット8086
1980年代32ビット

コンピュータの仕組み

Block diagram

主記憶

アドレスを指定(入力)すると、データが出てくる構造になっている。

Memory

アドレスを与えてからデータが出てくるまでの時間をアクセスタイムという。性能を示す重要な要素である。 従来は磁気コアが使われていた。そのため主記憶のことをコアということがある。 現在は半導体が使われている。 メモリ、RAMなどの呼称がある。 RAM(Random Access Memory)とROM(Read Only Memory)の2種類がある。RAMは自由に読み書きができるメモリである。ROMは読み取り専用のメモリで、通常は不揮発性であり、電源を切っても記憶は消えない。 RAMにはSRAMとDRAMがある。

演算・制御装置

演算装置は加算器と結果がはいるアキュムレータ(レジスタ)などで構成される。 制御装置はクロックに同期して全体を制御する。次に実行する命令の番地を保持するプログラムカウンタを内蔵する。

Memory

コンピュータの動作

ノイマン型コンピュータの動作は非常に単純。 命令のフェッチと実行を繰り返すだけ。 ただし、これを高速に実行する。1秒間に100万回以上とか。 これを見ている人はコンピュータが同時にいろいろなことをやってくれている ように見える。1種の手品のようなもので、実際はその瞬間に行っているのは1つのことだけ。

Ececution

フェッチしたとき、つぎの命令をとりだせるよう記憶装置への ポインタ(Addressを持つ)が+1(インクリメント)される。 このポインタのことを通常プログラムカウンタ(インストラクションポインタ)という。 記憶装置には命令(Instruction)が蓄えられている。これは有用な動作を コンピュータがするように人間がプログラムしたもの。

基本はノイマン型だが、性能向上のために加えられてきた点をあげる。 1.クロック周波数のUP 実行速度が生命なのだが、これはクロックに同期している。クロックが倍になれば 性能も倍になる(と一般的には言える)。クロック周波数は年々UPしている。 より高いクロックに耐えるIC(半導体回路)の開発ということもできる。 2.パイプライン方式 プログラムを実行している間に並行してつぎの命令をフェッチ(プリフェッチ)している。これをパイプライン方式という。 3.割り込み 緊急の事象(Event)が発生した場合には、現在実行中のプログラムを一時中断してそ の事象の処理ためのプログラムを走らせることができる。もどり番地を保持するため にスタックポインタが使われる。 4.キャッシュ CPUと同じチップ上にRAMを持ち、ここから命令をフェッチして実行する。 このことにより、マザーボード上の外部のRAM(主記憶)よりフェッチする場合に 比べて高速に実行できる。この内部RAMのことをキャッシュという。キャッシュ には2項のパイプライン方式でプリフェッチして、主記憶のコピーが作成される。 プログラムには条件判断による分岐があるためプリフェッチしてあるプログラムの 方に実行が行かない場合がある。この場合プリフェッチした内容は破棄される。 このことをヒット率という。(プリフェッチが役立った場合) 5.仮想記憶 主記憶の大きさには限界があるため、極端に大きなプログラムは実行できない。 そこでより大きな記憶領域をもつ補助記憶(HDD)を主記憶にみたてるのが仮想記憶 。主記憶をはみ出した部分を実行するときは主記憶を補助記憶にコピーして領域 を空ける。これをスワッピングという。WindowsでもRAMが少ない場合は、この スワッピングが発生し、その結果として実行速度が低下したりするのは周知のこと。 6.RISC Fetch、Execを繰り返すので、この部分の設計(アーキテクチャ)が性能に重要な影響 を及ぼす。命令のビット長を短くし、命令の数を減らすことにより実行速度を上げよ うとする手法。対するものにCISCがある。X86プロセッサはCISC。

入力装置

キーボード
カード読み取り装置 CR:CardReadre
光学式マーク読み取り装置 OMR
紙テープリーダ PTR
光学文字読み取り装置 OCR:Optical Character Reader
マウス
ライトペン
ディジタイザ

出力装置

CRT
液晶ディルプレイ
プリンタ
プロッタ

補助記憶装置

もっとも使われているのが磁気ディスク(ハードディスクドライブ:HDDともいう)である。 磁気テープ装置 フロッピーディルクドライブ MO その他

デジタル信号

コンピュータが内部で使っているのはデジタル信号である。これは1か0の値をもつ2値信 号である。通常は電圧で表現し相対的に高いほう(High)を1低いほう(Low)を0としている。 電圧としては5Vが一般的だが、3.3Vなどいろいろある。

WaveFormDigital

アナログ信号は自然界に一般的に存在する信号で、マイクを通してとった人の声などは アナログ信号で連続値である。

WaveFormAnalog

アナログ信号は信号処理の過程で劣化していってしまう。ビデオのコピーなどがその例 で画質が低下する。これに対しデジタル信号は劣化するという現象はない。CDのコピ ーなどは使用価値的には原版と同じである。従って信号を早いうちにデジタル化して あとはデジタル回路(コンピュータも含まれる)で処理しようというのが最近の傾向と なっている。デジタル化してコンピュータのソフトで処理すればアナログ処理のように いちいち回路がいらない点もコスト的に有利だ。

ビット

Bit : Binary Digit
デジタル信号の1桁(最小単位)がビットである。 8ビットの値を通常バイトという。また、16ビットの値を通常ワードという。

2進数

桁の重み

10進数:Decimal
例 1988 : 0から9の数字で構成

Power10

桁の重みとは1,10,100,1000...のことで10進数では10倍になってゆく。

2進数:Binary

例 1011B : 0と1で構成

Power10

桁の重みとは1,2,4,8,...のことで2進数では2倍になってゆく。

10進数でいち、じゅう、ひゃく、せん、まんとおぼえているように2進数でも 16ビットの値くらいは暗記しておく。

ビット番号(桁)
0
1
2
3
16 4
325
646
1287
2568
5129
102410
204811
409612
819213
1638414
3276815
6553616

(忘れたら覚えているところから倍々してゆく)

10進数から2進数への変換

方法1
与えられた10進数から引ける最大の2進数の重みを求めこれで引くことを繰り返す

Convert10-2

25は11001となる。

方法2
与えられた10進数を2で割って余り(1か0になる)を並べてゆく。 最初の余りが最下位桁(LSB)、最後の余りが最上位桁となる。

Convert10-2_1

(最上位ビット:MSB (Most Significant Bit), 最下位ビット:LSB (Least Significant Bit) という。)

2進数から10進数への変換

1の立っている桁の重みを足したもの(和)が10進数である。

Convert2-10

小数

10進小数

0.1235

Decimal10

2進小数

0.1011

Decimal2

相互の変換については各自のテーマとする。
10進小数と2進小数間では正確に変換できない場合があるので注意が必要。 組込系のソフトウエアでは小数にせず、整数で扱うようにする場合も多い。 5.1Vは51とし単位を0.1Vとして扱うなどして小数にならないようにする。

2進数における負の値 -符号なしと符号付の整数-

マイナスの値の表現

8ビットの数値11111111Bについて。 符号なしなら255、符号付なら-1である。 符号付整数の場合MSB(最上位桁)をSignBit(符号ビット)といい、ここが1なら負の数となる。

SignBit

符号付整数と10進数の対比はつぎのようになる。

01111111+127
00000011
00000010
00000001
00000000
11111111-1
11111110-2
11111101-3
10000000-128

符号付8ビット整数は+127から-128の範囲の値をとる。

2進数の四則演算と補数

加算

加算の規則はつぎの4通り。

被加数
加数
10Carry(桁上がり)
101111
0101
1000016

減算

減算の規則はつぎの4通り

被減数00
減数01
11Borrou(借り)
 
101111
0101
0110

乗算

乗算の規則はつぎの4通り

被乗数
乗数
            
101111
110113
1011
00000
101100
1011000
10001111143

除算

除算の規則は0で割る場合が除外されるのでつぎの2通り

被除数
除数
10商:2
101015/2
10
余り:1

補数

コンピュータの演算回路は加算が基本になっており、減算も補数を使って加算で処理する。

元の数 00000010 (10進の2)

1の補数

各ビットを反転したもの
     11111101

2の補数

1の補数に+1したもの
     11111110

これは-2となっている。
減算は2の補数を足せばよい。

16進数

2進数で表現すると桁数が多くなってわかりにくい場合がある。2進数を4ビットづつ区切り これを16進数として表現する方法が使われる。これには0~9の数字とA~Fの文字を使う。 対応表はつぎの通り。

2進数16進数10進数
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010 10
1011 11
1100 12
1101 13
1110 14
1111 15

表記方法

10進数

そのまま。特に10進数であることを確認したいばあいはDをつける。 Exp. 1011D

2進数

Bをつける。1011B

16進数

Hをつける。0FAB2H
C言語では0xをつける。Exp. 0xFAB2

各プログラミング言語上では表記方法が規定されているのでそれに従う必要がある。

BCDコード

BCD : Binary Coded Decimal
10進数の各桁を4ビットづつの2進数に置き換えて表すのが2進化10進数である。

10進数2進化10進数
1390001 0011 1001

文字コード

8ビットの数値に文字を割り当てたものがASCIIコードである。8ビット(1バイト)で表せる 文字は256種類である。

ASCII CODE 表

(American Standard Code for Information Interchange)

b3b2b1 b0
b7 0000 0000 11
b6 0000 1111 00
b5 0011 0011 00
b4 0101 0101 01
0000 NULDE0 @Pp
0001 SHD1!1 AQaq
0010 STXD2"2 BRbr
0011 ETXD3#3 CScs
0100 ETD4$4 DTdt
0101 ENQNAK%5 EUeu
0110 ACKSN&6 FVfv
0111 BLEB'7 GWgw
1000 BSCN(8 HXhx
1001 HTEM)9 IYiy
1010 LFSB*: JZjz
1011 HMEC+; K[k{
1100 FF+ L\l|
1101 CR M]m}
1110 S0. N^n
1111 S1/? O_o

文字コードにはこのほかにつぎのようなものがある。 Shift Jisコード Windows JISコード EUCコード UNIX,Linux UNICODE

論理演算

論理積 AND

真理値表

ABOUT
000
010
100
111

論理和 OR

真理値表

ABOUT
000
011
101
111

否定 NOT

真理値表

ABOUT
01
10

排他論理和 EXOR

真理値表

ABOUT
000
011
101
110

メモリーマップ