• 検索結果がありません。

本日の範囲 ファイルとその中身 コンピュータにおける情報の表現 ファイルとフォルダ コンピュータの仕組み 通信 ネットワーク, インターネット 情報の符号化, その限界 コマンドライン プログラムの仕組み 通信の符号化, その限界 暗号 簡単なプログラムの作成 実行 Excel で計算 データの可視

N/A
N/A
Protected

Academic year: 2021

シェア "本日の範囲 ファイルとその中身 コンピュータにおける情報の表現 ファイルとフォルダ コンピュータの仕組み 通信 ネットワーク, インターネット 情報の符号化, その限界 コマンドライン プログラムの仕組み 通信の符号化, その限界 暗号 簡単なプログラムの作成 実行 Excel で計算 データの可視"

Copied!
35
0
0

読み込み中.... (全文を見る)

全文

(1)

コンピュータが「計算」をする仕組み

(2)

本日の範囲

ファイルと その中身 ファイルと フォルダ コマンド ライン 簡単なプログラ ムの作成・実行 データの可視化Excel で計算・ 通信の符号 化 , その限界 暗号 情報の符号 化 , その限界 通信・ネットワーク , インターネット コンピュータの仕組み コンピュータにおける 情報の表現 プログラムの仕組み 基礎的概念 ( 本講義中では ) やや高度な概念 実技・実践

(3)

目標

 コンピュータの物理的な構成を大雑把に理解  CPU, メモリ , 2 次記憶 , ディスプレイ , マウス , キー ボード  コンピュータは ,CPU によって「機械語のプログ ラム」を実行して計算をしていることを理解  機械語のエッセンスを理解  高級言語 ( プログラミング言語 ) の基本アイデア を理解  ( 演習 ) 具体的なプログラミング言語で簡単なプ ログラムを書いてみる

(4)

演習目標

 プログラミング言語 Python  プログラムを書く時の考え方  具体的目標  数列 , 微分方程式 (Excel でやった例と比較しなが ら )  関数の最大・最小や根の計算  各種の確率や期待値の計算

(5)

コンピュータの物理的構成

出典 : 「情報機器と情報社会の仕組み素材集」 http://www.sugilab.net/jk/joho-kiki/index.html

(6)

CPU,

メモリ , 2 次記憶

メモリ CPU

ハードディスク (2 次記憶 )

(7)

メモリ ( 主記憶 )

 Bit (0 or 1) を保持できる (= 2 つの状態を区別で きる ) セルの集まり  実際には 8 bit (1 byte) より小さい単位でアクセ スされることはない  今時のメモリ 1 モジュール 数 GB (1GB=109 bytes)  各 byte に通し番号 ( 番地 ; アドレス ) があり , 指定した番地のデータを読み書きできる

(8)

CPU

の役割

 コンピュータが動く =CPU が命令を実行する  メモリ上に書かれている「命令」を実行  「命令」を実行した結果 , メモリ上のデータを書き 換えることができる  電源を入れた瞬間から切るまで , プログラムを 実行せずにやっていることはないといって過言 ではない

(9)

ハードディスク (2 次記憶 ) の役割

 メモリ ( 主記憶 ) と同様 , 「記憶装置の一種」  主記憶との違い  永続的 (= 電源を切っても消えない )  CPU が直接アクセスできるわけではない (= 一旦メ モリに移動してから処理する )  容量 / 費用 が大 (= 安い )  2 次記憶は「ファイル」を格納する場所とし て使われている

(10)

計算の「原理」を知るための簡単化

された CPU の構造

load 10,R1 load 11,R2 add R1,R2,R3 store R3,12 halt 123 345 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: PC : RX: RY: RZ: メモリ 番地 ( アドレス ) レジスタ 命令列 データ

(11)

レジスタ

 CPU 内部の少量のメモリ  主記憶とほとんど役割は同じ ( 足し算・掛け算 などの「演算」はレジスタに対してのみしか行 えない , という CPU もある )  特別重要なレジスタ : プログラムカウンタ (PC)  次に実行すべき命令の番地を保持するレジスタ

(12)

CPU

の動作

 以下をひたすら繰り返す  PC に格納されている番地に格納されている命令 (PC が指す命令 ) を実行  実行した命令が「停止命令 (halt) 」だったら終了  「命令を実行」すると  命令で指定されたメモリ , レジスタ ( 普通一ヶ所 ) が書き換わる  加えて ,PC が「次の命令」を指すように書き換わ る  ほとんどの命令は PC を 1 命令分増やす次の命 令はメモリ上での「次の命令」 )

(13)

CPU

の動作のアナロジー

 電源を入れるとマニュアル本の 1 ページ目を開き , 黙々と指示 ( 命令 ) にしたがう  マニュアル本の脇に方眼紙 ( メモリ ) も置いてある  マニュアルにかかれている指示の例  方眼紙の XX マス目に YY と書け  方眼紙の XX マス目と YY マス目の値を足し ,ZZ マス目 に書け  あるページを読み終わったら  たいがいの場合次のページへ進む  たまに , 「この質問の答えがハイなら XX ページ目ヘ進 め ( 戻れ ) 」

(14)

命令の種類 ( 大雑把な分類 )

 メモリ・レジスタ間移動 ( ロード・ストア )  演算 ( 加減乗除 ,etc.)  比較 ( 大小比較 , 等号比較 , etc.) と分岐   CPU ごとに似て非なる記法 ( 機械語 , アセンブ リ言語 ) で表す

(15)

記法上の注意

 以下で「例をあげて」それらしく説明するが ...  現実の CPU の記法と似ているが , 架空のもの ( 教科書や過去問とも違う )  現実の CPU は命令の種類が多い (Intel : > 700 個 ) し , 機種により記法が異なる  それらが多くなる理由 :  とにかく演算の種類が多い  同じ動作の演算でも対象となる語の種類 (8bit, 16bit, 整数か小数点つきの数か ) により命令が違う  要するに「原理は同じ」だが記法の「世界標準」 はない ( 細かい違いを気にしなくてよい )

(16)

ロード (

メモリ レジスタ )

load [R1],R2  レジスタ R1 に格納されているメモリ番地に格納され ている値をレジスタ R2 にコピー  (load [100],R2 は「 100 番地」からロード ) load [RX],RY x 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 1 6 PC: RX: RY: RZ: x 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 2 6 X PC: RX: RY: RZ: before after

(17)

以降言葉の省略

 混乱の恐れがないときは  レジスタ R に格納されている値 → R( の値 )  レジスタ R に格納されている番地 → R が指す番地  R1 が指す番地に格納されている値 → R が指す番 地の値  と省略する  例 : load [R1],R2  R1 が指す場所の値を R2 にコピー

(18)

ストア (

レジスタ メモリ )

store R1,[R2]  R1 を ,R2 が指す番地にコピー  (store R1,[100] は 100 番地にコピー ) store RX,[RY] ?? 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 1 100 6 PC: RX: RY: RZ: 100 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 2 100 6 PC: RX: RY: RZ: before after

(19)

演算

add R1,R2,R3  R1 + R2 を R3 へ格納 add RX,RY,RZ 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 1 100 200 ?? PC: RX: RY: RZ: add RX,RY,RZ 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 2 100 200 300 PC: RX: RY: RZ: before after

(20)

その他の演算

 sub (R1 – R2), mul (R1 * R2), … ( 算術演算 )  lt (R1 < R2), eq (R1 = R2), … ( 比較演算 )

 and (R1 and R2), or (R1 or R2), … ( 論理演算 )

(21)

分岐

bl R1,R2,R3  R1 < R2 ならば PC を R3 に , そうでなければ ( 普通 どおり ) 次の命令の番地に bl RX,RY,RZ 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 1 a b 5 PC: RX: RY: RZ: before bl RX,RY,RZ 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 5 500 800 5 PC: RX: RY: RZ: after (a< bだったら ) bl RX,RY,RZ 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 2 500 800 5 PC: RX: RY: RZ: after (a >= b だったら )

(22)

分岐の意義

 場合分け

 例 :x の正負によって以降の計算方法を変える

 繰り返し

(23)

halt

命令

 計算の終了を示す命令  現実の CPU では計算を終了したからと言って CPU を本当に止めてしまう分けではないが , 「計算の終わり」を示すための何らかの命令が 必要ということ

(24)

○○

を計算するプログラム」とは

命令 1 命令 2 ... ... 入力 1 入力 2 ... ... 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: メモリ 2 PC: R1: R2: R3: レジスタ 命令 1 命令 2 ... ... 入力 1 入力 2 ... 出力 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: メモリ PC: R1: R2: R3: レジスタ  入力データがメモリにおかれた初期状態から , 指定された番地に PC を設定し , あとはひたす ら halt 命令まで実行し続けると  必ず有限回の命令で停止 (halt) し ,  メモリ上の決まった位置に「答え」が書かれている  ような命令列の事

(25)

いくつかの現実の数字

 今時の普通のコンピュータ ( 目安 )  命令実行速度 : 1GHz-3GHz (1 サイクル 1 命令とし て 10 億~ 30 億命令 / 秒 )  メモリの大きさ : 1GB-100GB (10 億~ 1000 億バイ ト )  ディスクの大きさ : 100GB-1TB (1000 億~ 1 兆バ イト )  CPU がメモリを読む速度 1GB/sec-100GB/sec (1 億~ 100 億バイト / 秒 )  ネットワークからデータを受け取れる速度 100 万 ~ 10 億バイト (1MB/sec - 1GB/sec)

(26)

例題

 入力 :  X が 100 番地 ( 以降の記法 : x@100)  Y が 101 番地 (y@101)  出力 :  3x + 4y を 102 番地

(27)

どう考えるか ?

 方眼紙と鉛筆と消しゴムが渡されたと想像  紙がメモリ  方眼紙の余白はいくら使ってもよい ( 余白じゃ なくてもよい . 完璧な消しゴムあり )  走り出したら手は出せない  あくまで「完璧なマニュアルを書く」のが目的  各ステップは紙の上にかかれた数字に簡単な演算を 施して , 紙の余白に結果を書く , ということしかし てはいけない 100 200 100 200300 100 200300 800 100 200300 800 1100

(28)

load [100],RX mul 3,RX,RY store RY,[1000] load [101],RX mul 4,RX,RY store RY,[1001] load [1000],RX load [1001],RY add RX,RY,RZ store RZ,[102] halt 3x (x') 4y (y') x' + y'

(29)

|x|

を計算するプログラム

 入力 :  x @ 100  出力  |x| @ 101 load [100],RX bge RX,0,L sub 0,RX,RX L: store RX,[101] halt ラベル ( 直後の命令がおかれている番地を意味する ) x < 0 x >= 0

(30)

x

5

を計算するプログラム

 入力  x @ 100  出力  x5 @ 101 load [100],RX add 0,1,RY mul RX,RY,RY mul RX,RY,RY mul RX,RY,RY mul RX,RY,RY mul RX,RY,RY store RY,[101] halt 3 1 3 3 3 9 3 27 3 81 3 243

(31)

x

n

を計算するプログラム

 入力  x @ 100  n @ 101  出力  xn @ 102

(32)

以下は答えではない

 えーと ,x3 ならこれで ,x7 ならこっち , とか load [100],RX add 0,1,RY mul RX,RY,RY mul RX,RY,RY mul RX,RY,RY store RY,[101] halt load [100],RX add 0,1,RY mul RX,RY,RY mul RX,RY,RY mul RX,RY,RY mul RX,RY,RY mul RX,RY,RY mul RX,RY,RY mul RX,RY,RY store RY,[101] halt 求められているのはあくまで , 入力 (n) に応じて , x の何乗でも計算できる 「ひとつの」プログラム

(33)

答え :

 あと何回かけるのかもメモ リ ( またはレジスタ ) に書い ておく  その値が 0 になるまで「繰 り返し」 ( ジャンプを使っ て ) load [100],RX load [101],RZ add 0,1,RY L1: ble RZ,0,L2 mul RX,RY,RY sub RZ,1,RZ b L1 L2: store RY,[102] halt 3 1 4 3 3 3 3 9 2 3 27 1 3 81 0 RZ RY

(34)

「方眼紙と鉛筆」とのアナロジー

 人間だったら「あと何回かけるのか」を無意識 に覚えながら計算している  計算機は「次に何するか」を絶対に「レジス タ・メモリに書いてあること」からしか決めら れない   ルール : 「脳内記憶」使用禁止 ( 覚えておき たいことは紙に書く )  途中まで掛け算したところで記憶が飛んでも続 きができなくてはいけない

(35)

(

飛躍するが )

他にも「できそう」なこと

 要するに「どうすれば ( いかなる入力に対して も ) 常に答えが求まるか」が分かっているよう な問題は , それを「プログラム」に翻訳する事 は原理的にはできそう  連立一次方程式をとく ( ガウスの消去法 )  ベクトルの直交化 ( シュミットの直交化 )  この盤面は「詰み」ですか ( 将棋 )?  この手牌はテンパってますか ?

参照

関連したドキュメント

J-STAGE は、日本の学協会が発行する論文集やジャー ナルなどの国内外への情報発信のサポートを目的とした 事業で、平成

古物営業法第5条第1項第6号に規定する文字・番号・記号 その他の符号(ホームページのURL)

システムの許容範囲を超えた気海象 許容範囲内外の判定システム システムの不具合による自動運航の継続不可 システムの予備の搭載 船陸間通信の信頼性低下

【原因】 自装置の手動鍵送信用 IPsec 情報のセキュリティプロトコルと相手装置の手動鍵受信用 IPsec

る省令(平成 9

Google マップ上で誰もがその情報を閲覧することが可能となる。Google マイマップは、Google マップの情報を基に作成されるため、Google

建築基準法施行令(昭和 25 年政令第 338 号)第 130 条の 4 第 5 号に規定する施設で国土交通大臣が指定する施設. 情報通信施設 情報通信 イ 電気通信事業法(昭和

※ 本欄を入力して報告すること により、 「項番 14 」のマスター B/L番号の積荷情報との関