• Tidak ada hasil yang ditemukan

コンピュータのしくみ

N/A
N/A
Protected

Academic year: 2024

Membagikan "コンピュータのしくみ"

Copied!
64
0
0

Teks penuh

(1)

コンピュータのしくみ

工学院大学 情報通信工学科 情報処理概論及演習

保坂修治

(2)
(3)

情報とは

送り手 受け手

知らせ

「関心がない」

雑音

「関心がある」

情報

受け手にとって有益なら「情報」になる

(4)

情報の価値 = 「情報量」

 ある事象が起きた時に、

それがどれほど起きにくいかを表す尺度

 情報を得ることで、不確かさが減る

情報量 確率

(5)

情報量

[

]

情報処理試験の出題が「ネットワーク」のみだったとすると、

基礎理論

ハードウエア

ネットワーク

セキュリティ

基礎理論

ハードウエア

ネットワーク

1 4

1 3

2bit 1.585bit

得られた情報

0.415bit

新たな情報

[

セキュリティは含まれない

]

最初の出題範囲 直前の出題範囲

(6)

情報量の定義

情報量を

I

、事柄が発生する確率を

P

とすると、

確率

1/2

で起こる事象の情報量を

1

単位として、これを

1bit

と呼ぶ

-log 2 (1/2) = -log 2 2 -1 = 1 bit {0,1}

𝐼 = −log 2 𝑃

(7)

情報量の単位

 最少単位: bit

 1B(Byte) = 8bit

 1KB( キロバイト ) = 2 10 バイト = 1024B

 1MB( メガバイト ) = 2 20 バイト = 1024KB

 1GB( ギガバイト ) = 2 30 バイト = 1024MB

 1TB( テラバイト ) = 2 40 バイト = 1024GB

(8)

情報量の例

出題範囲4分野(それぞれの出題確率が等しいとき)

I = -log 2 (1/4) = -log 2 (1/2 2 )

= -log 2 2 -2 = 2 bit I = -log 2 (1/3) = -log 2 (1/2*2/3)

= -log 2 (1/2) -log 2 (2/3) = 1 + 0.585 bit

= 1.585bit

(9)

演習 1.1

 (1)

色の表現が

256

色あるとする。このうち

1

色を表 現するための情報量はいくらか

I = -log 2 (1/256) = -log 2 (2 -8 ) = 8 bit

 (2) 52

枚のトランプから無作為に

1

枚を取り出すと

う試行で、♠の

A

という事象の情報量は

I = -log 2 (1/52) = -log 2 2 -5.70 = 5.70 bit

(10)

情報の種類

情報

文字・・・英字、記号、ひらがな、漢字

図形・・・直線、曲線、多角形

数値・・・整数、実数

音声・・・音楽、声

映像・・・写真、絵、イラスト、アニメーション、映画

色・・・色相、色彩、色調

信号

アナログ

デジタル
(11)

計算対象をデジタルで表す

ア ナ ロ グ 量 → デ ジ タ ル 量

時間

125

0000000001111101

SAMPLING

(12)

2進数(binary)

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 1

1ビット(bit)

最下位ビット

: LSB(Least Significant Bit)

最上位ビット

: MSB(Most Significant Bit)

(13)

2,8,16進数

10

進数

2

進数

8

進数

16

進数

1 6 1 5 1 4 1 3 1 2 1 1 1 0 9 8 7 6 5 4 3 2 1 0

1 0 0 0 0 1 1 1 1 1 1 1 0 1 1 0 1 1 1 0 0 1 0 1 1 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 0 1 0

2 0 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 7 6 5 4 3 2 1 0

1 0

E F

D C

B A

9 8

7 6

5 4

3 2

1 0

(14)

位取記数法

 10

進数

23.89 (10)

数値

N

r

進数のとき

N = a k ×r k + a k-1 ×r k-1 +

・・・

+ a 1 ×r 1 + a 0 ×r 0 + a -1 ×r -1

・・・

+ a -m ×r -m

このとき、

r

を基数と呼ぶ

23.89 = 20

+ 3

+ 0.8

+ 0.09

= 2×10 1 + 3×10 0 + 8×10 -1 + 9×10 -2

(15)

基数変換

 2

進数

10

進数変換

 [

] 101011.1101(2) 101011.1101

= 1×2 5 + 0×2 4 + 1×2 3 + 0×2 2 + 1×2 1 + 1×2 0 + 1×2 -1 + 1×2 -2 + 0×2 -3 + 1×2 -4

= 32 + 0 + 8 + 0 + 2 + 1 + 0.5 + 0.25 + 0.0 + 0.0625

= 43.8125(10)

(16)

基数変換

 10

進数

2

進数変換

 [

] 43(10) =

• 43÷2 = 21

・・・

1

• 21÷2 = 10

・・・

1

• 10÷2 = 5

・・・

0

• 5÷2 = 2

・・・

1

2÷2 = 1

・・・

0

101011(2)

(17)

8進数

8進数

(octdecimal)

 0,1,2,3,4,5,6,7

 2

進 数 を

3

桁 ご と に 区 切 っ た 表 現

 101 111 101(2) = 575(8)

 8

進数

10

進数変換

707(8)

7 × 8 2 + 7 × 8 1 + 7 × 8 0 = 455(10)

(18)

16進数

 16

進数

(hexadecimal)

 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

 2

進 数 を

4

桁 ご と に 区 切 っ た 表 現

 1111 0101(2) = F5(16)

 16

進数

10

進数変換

F0A0(16)

15×16 3 + 0×16 2 + 10×16 1 + 0×16 0 = 61600(10)

(19)

‘0’と‘1’だけ表記、負の数は?

補数を使って表す

(20)

2の補数表示

 2

進数で負の数を表す

2の補数の求め方

[

]

0011

(2) = 3(10)

10進数 2進数

7 6 5 4 3 2 1

0111 0110 0101 0100 0011 0010 0001 0 0000 -1

-2 -3 -4 -5 -6 -7 -8

1111 1110 1101 1100 1011 1010 1001 1000

1100

反転する

+) 1

1を加える

1101(2)

(21)

 16

進数

 1101 0101 0001 (2) = D51 (16)

演習1.1-(1)

2進数110101010001 (2)

を8進数、10進数、16進数に変換しなさ い。

 8

進数

 110 101 010 001 (2) = 6521 (8)

 10

進数

1×2 11 + 1×2 10 + 0×2 9 + 1×2 8 + 0×2 7 + 1×2 6 + 0×2 5 + 1×2 4 +0×2 3 + 0×2 2 + 0×2 1 + 1×2 0

= 3409 (10)

(22)

演習1.1-(2)

8

進数755(8)を

2

進数に変換しなさい

7 5 5(8) = 111 101 101(2)

(23)

演習

1-1(3)

10

進数

117

(10)を

2

進数に変換しなさい。

 117 ÷ 2 = 58 ・・・ 1

 58 ÷ 2 = 29 ・・・ 0

 29 ÷ 2 = 14 ・・・ 1

 14 ÷ 2 = 7 ・・・ 0

 7 ÷ 2 = 3 ・・・ 1

 3 ÷ 2 = 1 ・・・ 1

117 (10) = 1110101 (2)

(24)

演習

1-1(4)

10

進数

-14

(10)を

2

進数(

2

の補数、

8

ビット長)に変換しなさい。

 14

÷

2 = 7

・・・

0

 7

÷

2 = 3

・・・

1

 3

÷

2 = 1

・・・

1

14 = 1110 (2) 00001110 (2)

8bit

表現

反転

11110001 (2)

+1

11110010 (2)

(25)

英数字と日本語の表現

バイトコード

 ACII

コード

 2

バイトコード

 JIS

コード

シフト

JIS

コード

 EUC

コード

 ISO-2022-JP

 Unicode

(26)

ACIIコード

0 1 2 3 4 5 6 7

0 NULL DLE 0 @ P ‘ p

1 SOH DC1 ! 1 A Q a q 2 STX DC2 “ 2 B R b r 3 ETX DC3 # 3 C S d s 4 EOT DC4 $ 4 D T d t 5 ENQ NAK % 5 E U e u 6 AKN SYN & 6 F V f v 7 BEL ETB ` 7 G W g w 8 BS CAN ( 8 H X h x

9 HT EM ) 9 I Y i y

A LF SUB * : J Z j z B VT ESC + ; K [ k { C EF

, < L ¥ l |

D CR

- = M ] m }

E SO

. > N ^ n ~

F SI

/ ? O _ o DEL

American Standard Code for Information Interchange

58H = X

文字

X

08H = BS

制御コード

Back Space

(27)

Unicode

UTF-8

UTF-16

UTF-32

など複数の規格がある

UTF-8

ASCII

コードをそのまま利用可能

多言語に対応すべく、

すべての文字を2byte(16bit)で表現しようとした。

(28)

演習

1.2(1)

自分の名前のローマ字を一文字づつ

ASCII

コード(

10

進数)

に変換しなさい。

工学 太郎

KOGAKU TARO

 4B 4F 47 41 4B 55

 54 41 52 4F

(29)

演習

1.2(2)

ASCII

コードの

08(16)

09

16

)を表示しようとすると、どのよう な動作をするか。

 08(16) BS Back Space 1

文字後退

 09(16) HT Horizontal TAB

水平タブ
(30)

数値データの表し方

固定小数点

浮動小数点

小数点

(固定) 小数部 整数部

符号

mビット(固定) nビット(固定)

指数部

e

仮数部

f s

q

ビット

(

固定

) p

ビット

(

固定

)

s f × 2 e

(31)

コンピュータの基本動作

(32)

ノイマン型コンピュータ

コ ン ピ ュ ー タ

=

ノ イ マ ン 型 コ ン ピ ュ ー タ

1. 情報を 2 進数で表現する

2. プログラム内蔵型

(33)

情 報

マシン命令{演算命令、分岐命令、・・・}

命令

数値、文字、画像、音声、・・・

データ

(34)

命令

命令の形式

命令コード オペランド ・・・

命令コード: 命令の種類

オペランド: 命令の対象となるデータの格納場所

(35)

メモリ

線形メモリ

0000000番地 0000001

番地

0000002

番地

0000003

番地

0000004

番地

0000005番地 0000006

番地

0000007

番地

0000008

番地

FFFFFFFE

番地

FFFFFFFF

番地

(36)

コンピュータの基本機能

制御装置

入力装置

主記憶装置

データの流れ 制御情報の流れ

キーボード マウス カメラ

マイクロフォン

ディスプレイ プリンタ スピーカー

半導体メモリ ハードディスク 光ディスク

演算装置

出力装置 補助記憶装置

bus

(37)

CPUの内部構造

メインメモリ 内部データバス

ALU CPU: CENTRAL PROCESSING UNIT

ALU : (Memory Data Register)算術論理演算装置 PC:(Program Counter)プログラムカウンタ

IR : (Instruction Register)命令レジスタ PR : (Programu Register)プログラムレジスタ DEC :(Instruction Decorder)命令解読器

DECODER

制御信号

アドレス指定 R0

R1 R2 R3

CLOCK

DATA BUS

ADDRESS BUS レジスタ群

(38)

コンピュータの動作

命令フェッチ

• PC

の値でメインメ モリの番地を指定 する。その番地に 記憶されている命 令を取り出し

IR

格納する

命令デコード

• IR

に格納された 命令をデコーダで 解読し、制御信 号を生成する

実行

制御信号に従っ て、

ALU

や汎用レ ジスタを使った

処理が行われる 命令実行サイクル
(39)

記 憶 シ ス テ ム

レジスタ

キャッシュ メモリ 主記憶

補助記憶装置

高価 高速

安価 低速

容量

CPU内部

DRAM

HD,DVD-R/W,

フラッシュメモリ

(USB

メモリ

) SRAM

数百

psec

数十

msec

nsec

数十

nsec

SRAM

~数

MB

~数

GB

~数

KB

~数

TB

(40)

簡単なモデルによる動作の理解

制御装置 カウンタ レジスタ 演算装置 表示装置 メモリ

A B

0 1 2 3 4 5 6 7 8 9

番地

(41)

制御装置の動作

制御装置の内部状態 動作

0

停止する

1

レジスタ

A

B

のデータを加えた結果を表示装置に表示する

2

レジスタ

A

B

のデータを掛けた結果を表示装置に表示する

5 5

番地のメモリの内容をレジスタ

A

に移す

6 6番地のメモリの内容をレジスタBに移す

9

カウンタの値を0にする
(42)

動作(0)

制御装置 カウンタ レジスタ 演算装置 表示装置 メモリ

A B

5 6 1 0 0 5 6 2 0 0

0 1 2 3 4 5 6 7 8 9

番地

(43)

動作(1)

制御装置 カウンタ レジスタ 演算装置 表示装置 メモリ

A B

5 6 1 0 0 5 6 2 0 0

0 1 2 3 4 5 6 7 8 9

番地

5 5

(44)

動作(2)

制御装置 カウンタ レジスタ 演算装置 表示装置 メモリ

A B

5 6 1 0 0 5 6 2 0 0

1

0 1 2 3 4 5 6 7 8 9

番地

5 5

6 6

(45)

動作(3)

制御装置 カウンタ レジスタ 演算装置 表示装置 メモリ

A B

5 6 1 0 0 5 6 2 0 0

2

0 1 2 3 4 5 6 7 8 9

番地

5 6 6

1

5+6 11 11

(46)

動作(4)

制御装置 カウンタ レジスタ 演算装置 表示装置 メモリ

A B

5 6 1 0 0 5 6 2 0 0

3

0 1 2 3 4 5 6 7 8 9

番地

11 5 6

0

(47)

演習

1.4(1)

図1.7、1.8で6+7=13をさせるには、メモリのどこをどのようにすれば 変更すればよいか。

制御装置 カウンタ レジスタ 演算装置 表示装置 メ モ リ

A B

5 6 1 0 0 5 6 2 0 0

0 1 2 3 4 5 6 7 8 9

番地

6 7

(48)

ソ フ ト ウ エ ア

(49)

基本ソフトウエアと応用ソフトウエア

応用ソフトウエア

基本ソフトウエア

ハードウエア

ワードプロセッサ、表計算 ソフト、

TeX

、メールソフ ト、など

コンパイラ、デバッガ、オ ペレーティングシステム

(Windows, MacOS, UNIX, Linux,

マシン語

プログラミング言語

(C/C++,Java,C#,

FORTRAN,BASIC)

(50)

情報処理過程

問題

ハードウエア プログラム アルゴリズム

マシン語

:解決したい問題がある

プログラミングパラダイム、計算モデル

(アルゴリズムを作るための前提、考え方)

:問題を解決するための手順を用意する

:アルゴリズムをプログラミング言語を使って表現しなおす

:ハードウエアでマシン語を実行する

言語処理プログラム(コンパイラ、インタープリタ)

:ハードウエアが理解できるマシン語に翻訳する

(51)

コンピュータ言語

プログラム「

HelloWorld

」にみる機械語、アセンブリ言語、C言語によるコードの比較

00000400 55 89 E5 83 EC 28 C7 44 24 04 04 20 40 00 8D 45 00000410 FC 89 44 24 10 A1 10 20 40 00 C7 45 FC 00 00 00 00000420 00 C7 04 24 00 20 40 00 89 44 24 0C 8D 45 F8 89 00000430 44 24 08 E8 B8 07 00 00 89 EC 5D C3 8D 74 26 00 00000440 55 89 E5 83 EC 08 A1 20 20 40 00 85 C0 74 57 A3 00000450 30 20 40 00 A1 D4 40 40 00 85 C0 75 5A 83 F8 E0 00000460 74 22 83 C0 20 89 04 24 E8 63 07 00 00 8B 15 20 00000470 20 40 00 89 04 24 89 54 24 04 E8 61 07 00 00 A1 00000480 D4 40 40 00 83 F8 C0 74 1D 83 C0 40 89 04 24 E8 00000490 3C 07 00 00 8B 15 20 20 40 00 89 04 24 89 54 24 000004A0 04 E8 3A 07 00 00 E8 15 07 00 00 8B 15 30 20 40 000004B0 00 89 10 89 EC 5D C3 89 04 24 E8 11 07 00 00 8B

_main:

pushl %ebp

movl %esp, %ebp subl $8, %esp andl $-16, %esp movl $0, %eax

movl %eax, -4(%ebp) movl -4(%ebp), %eax call __alloca

call ___main

subl $12, %esp pushl $LC0 call _printf addl $16, %esp movl $0, %eax leave

ret

#include <stdio.h>

int main(void){

printf("Hello World!");

return 0;

}

『マシン語』(実行可能形式、下記はその一部)

C

言語』

『アセンブリ言語』

(52)

命令の種類

算術演算命令

数値データに対する演算命令{加算、減算、}

論演算命令

論理値データに対する演算命令{論理積、論理和、}

データ転送命令

メモリやレジスタと間のデータ転送

制御命令

命令実行順序を制御する命令{無条件分岐、条件分岐}

入出力命令

入出力装置の制御

割り込み命令

割り込みを発生する
(53)

プログラミング言語

言語 用途

1 JAVA

オブジェクト指向言語

2 C

低水準から高水準まで、

UNIX

システム開発用に誕生

3 C++

オブジェクト指向

4 C#

オブジェクト指向

5 PHP Web

アプリケーション

6 (Visual) Basic

7 Objective-C

オブジェクト指向、

iOS

MacOS

8 Python

スクリプト言語

,

9 Perl

10 Lua

・・・

11

JavaScript

12

Ruby

20

・・・

20位 Scheme、

30

・・・

30

Go

33

FORTRAN

40

・・・

41位 COBOL、44位 Haskell、 48位 Scala

TIOBE Software July 2011

(54)

OSの誕生: 1950年代

複数のプログラムを順番に実行するために、一つのプログラム が終了すると人手を使って次のプログラムを実行していた。

手間がかかる、時間がかかる

高価な機械を低い効率で利用するのは、不経済

プログラムの監視、自動ロード、自動実行

(55)

OSの役割

処理の効率を高め、コンピュータを経済的に利 用できようなサービスを提供するソフトウエア

様々なプログラムが共通で利用するプログラム

を提供することによって、プログラム開発を効率

化する

(56)

オペレーティング・システムの機能

1. プロセス管理

2. データ管理(ファイルシステム)

3. 実行管理

4. メモリ管理

5. ネットワーク管理

6. セキュリティ

7. GUI

(57)

OS: プロセス管理

1つ、または、複数の限られたCPUの使用権を、

複数のプログラム間で切り替えたり、配分したりする ためのスケジュールリングおよび管理

疑似マルチタスク

マルチタスク

並列処理
(58)

OS:データ管理(ファイルシステム)

ハードディスク、

CD-ROM

、USBメモリといった装置 の違いを吸収して、ファイルという共通した一つのシ ステムとして扱うことができるようにしている。

ファイルはファイル名によりアクセスを可能にする

ファイルシステムは階層構造しており、この階層構 造を利用してファイルを管理する
(59)

OS:入出力管理

入力装置(キーボード、マウス、・・・)

出力装置(ディスプレイ、プリンタ、・・・)

コンピュータの利用効率を上げるために、共通のプ ログラムをソフトウエア化した。

複数のプログラムからの入出力要求に対して、適 切な順序で入力装置、出力装置に指示を出す
(60)

OS:メモリ管理

複数のプログラムがメモリーにロード

有限サイズのメモリを有効に使用するため配分

プログラムが終了したときの、メモリ開放と再配分

仮想記憶
(61)

コンピュータ言語

アセンブリ言語

機械語命令を直接、人間に分かりやすい形に置き換 えたもの

命令の種類

算術演算命令 ・・・

ADD,SUB、MPY

論理演算命令 ・・・

AND,OR

データ転送命令 ・・・

LD,MOV

ST

制御、ジャンプ命令

・・・

JMP,CALL

RET

入手出力命令 ・・・

IN

OUT

割り込み命令 ・・・

ENI,DII,PUSH

POP

(62)

プログラム開発工程

システムの調査・分析 プログラミング設計

コーディング テスト

運用・保守

(63)

開発手法

ウォーターフォール・モデル

反復型

スパイラルモデルソフトウエア開発

アジャイル

形式型

モデル駆動型
(64)

参考

赤木、荒、石井、ほか「情報処理の基礎と演習

2

版」 共立出版

柴山潔「改訂新版コンピュータアーキテクチャの基礎」 近代科学社

講義「情報処理概論及演習」第

14

週補助資料

作成日

12 July 2010

作成者 保坂修治

Referensi

Dokumen terkait