Upgrade to Pro — share decks privately, control downloads, hide ads and more …

コンピュータはなぜ0と1なのか / How and Why Computers Operate Using Binary Code

コンピュータはなぜ0と1なのか / How and Why Computers Operate Using Binary Code

PHP勉強会#151の資料です

HASEGAWA Tomoki

April 12, 2023
Tweet

More Decks by HASEGAWA Tomoki

Other Decks in Technology

Transcript

  1. 長谷川智希 @tomzoh
    2023/04/12 PHP勉強会@東京 #151
    コンピュータはなぜ0と1なのか
    アナログの現実世界と電子計算機

    View Slide

  2. 2
    ௕୩઒ஐر
    ͸͕ͤΘ ͱ΋͖
    @tomzoh
    http://www.dgcircus.com
    デジタルサーカス株式会社 副団長CTO
    ॴଐ ٕज़ΧϯϑΝϨϯεओ࠻
    دߘɾஶॻ
    来たれ!PHPer!We are hiring!

    View Slide

  3. 3
    ௕୩઒ஐر
    ͸͕ͤΘ ͱ΋͖
    @tomzoh
    ٕज़ΧϯϑΝϨϯεӡӦࢀՃ 8FCJ04ΞϓϦ։ൃ
    $16 ϨτϩήʔϜػ ిࢠ޻࡞ Ϗʔϧ
    αοΧʔ؍ઓ ϨϯλϧΧʔτϨʔε ʜ
    ϥΠϑϫʔΫ

    View Slide

  4. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか 4
    コンピュータはなぜ0と1なのか
    アナログの現実世界と電子計算機

    View Slide

  5. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    CPUによって設計が違ったり


    わかりやすさを優先して単純化して

    説明している箇所があります
    5
    Disclaimer

    View Slide

  6. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    0と1しか処理できないコンピュータ
    • コンピュータは0と1しか処理できない


    • ソフトウェアエンジニアならなんとなく実感としてもある


    • 常に2進数が背後にある感じ


    • ビット演算とか浮動小数点演算(の誤差)とか


    • 文字コードが16進数表記だったり


    • どうして0と1なのか


    • 0と1しか無いのにきれいな絵や音を出せるのはなぜか
    6

    View Slide

  7. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    現実世界と論理世界
    アナログとデジタル
    • コンピュータ = 電子計算機 (電算機)


    • デジタルの値(離散値)を扱う


    • コンピュータは現実世界に存在している


    • 現実世界はアナログの世界


    • 電気回路はアナログ


    • 現実世界に存在する電気回路で数値計算や論理演算をしたい
    7

    View Slide

  8. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    電気回路での数値表現
    • コンピュータは数値を電気回路の電圧として表現する


    • ある電圧より高ければ1、低ければ0の2値とする


    • 電気回路の配線は抵抗があるので遠くでは電圧が下がる


    • メモリから255を読み込んだ時に近いメモリだと255だけど遠いメモリだと254に…


    • 2値であれば多少下がっても1は1でいられる


    • 回路を単純にできる


    • 電気回路上でのCPU


    • 物理的なCPUは「足」がたくさんある


    • 足1本=1bitでデータを表現する
    8

    View Slide

  9. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか 9

    View Slide

  10. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか 10
    数値を電圧の高低の2値で

    表現しているから
    A
    Q コンピュータはなぜ0と1なのか

    View Slide

  11. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    もう少し深掘りする
    11

    View Slide

  12. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    なぜ電圧の高低でコンピュータができるのか
    • コンピュータはなぜ0と1なのか


    • 数値を電圧の高低の2値で表現しているから


    • 電圧の高低からvar_dump()ができるの…?


    • 遠すぎない…?


    • PHPはマシン語で書かれたプログラム


    • せめて電圧の高低からマシン語が動くところまで解説
    12

    View Slide

  13. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    コンピュータの構成
    13

    View Slide

  14. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    コンピュータの構成
    コンピュータはCPUと入出力、
    メモリで構成される


    CPUを中心に接続されている


    CPUは…


    メモリを読み書きする


    入出力(I/O)にアクセスする


    これで「コンピュータ」になる
    14
    CPU
    メモリ
    I/O


    コント


    ローラ
    GPU
    USB
    Blue


    tooth
    入出力


    I/O

    View Slide

  15. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    CPU: 中央演算装置
    15
    Central Processing Unit

    View Slide

  16. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    CPU
    中央演算装置 - Central Processing Unit
    • データをどこかから持ってきてもう1つのデータと何らかの演算をし、

    結果をどこかに保管する装置


    • 「どこか」


    • レジスタ


    • メモリ


    • 入出力(I/O)


    • CPUの命令は本当にこういう命令しか無い


    • と言いつつ最近のCPUは機能が多く、機能に関連する命令もたくさんある
    16

    View Slide

  17. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    レジスタ
    CPUに内蔵された爆速メモリ
    • CPUに内蔵されたメモリ


    • 「近い方が速い」大原則で爆速


    • Z80の場合 8bitレジスタ 8個


    • 8ビットの値しか格納できない変数が8個だけあるプログラミング言語


    • それ以外の値はメインメモリや(入出力(I/O)の先にある)ストレージに保存する


    • とても遅いのでできるだけ避けたい


    • 特殊なレジスタ


    • PC プログラムカウンタ:


    • 今実行している命令のアドレス


    • 値を入れるとジャンプになる
    17

    View Slide

  18. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    命令の順次実行
    実行中アドレスを格納するレジスタ: プログラムカウンタ
    • CPUはメモリに格納された命令を順番に実行する


    • 命令を実行し、完了したらPCレジスタの値を+1する


    • すると次のサイクルではメモリの1つ先の命令を実行することになる


    • データをどこかから持ってきてもう1つのデータと何らかの演算をし、

    結果をどこかに保管する装置


    • ジャンプですらPCレジスタへの値の保存


    • 「データをPCレジスタから持ってきてジャンプ先のアドレスを加算し、結果をPCレジスタ
    に保管する」


    • マルチスレッドのCPUはPCレジスタが2つある
    18

    View Slide

  19. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    CPUの回路
    19

    View Slide

  20. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    前提事項
    • ここからしばらく右の図をベースに説明します


    • "CPUの創りかた"のTD4 CPU


    • これは概念図ではなく配線図


    • 青い箱 IC


    • 紫色の箱 入力=スイッチ 出力=LED


    • グレーの箱 ICのピンに分類をつけただけ


    • グレーの太い線は4本の配線


    • つまりこのCPUのレジスタは4ビットの値を保存できる


    • (あとで出てくる)細い線は1本の配線
    20
    A
    レジスタ
    B
    レジスタ
    入力
    PC
    レジスタ
    メモリ
    Address Data
    演算器
    Decoder
    出力
    セレクタ

    View Slide

  21. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    AレジスタのIC
    Aレジスタのリアル見た目
    21
    A
    レジスタ
    B
    レジスタ
    入力
    PC
    レジスタ
    メモリ
    Address Data
    演算器
    Decoder
    出力
    セレクタ
    入力用
    出力用
    入力用 出力用
    4 BIT SYNCHRONOUS

    BINARY COUNTERS
    https://www.ti.com/jp/lit/ds/symlink/sn74hc161.pdf

    View Slide

  22. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    A
    レジスタ
    B
    レジスタ
    入力
    PC
    レジスタ
    メモリ
    Address Data
    演算器
    Decoder
    出力
    セレクタ
    CPUの回路 - TD4の場合
    CPU内部のデータの流れ
    • TD4の構成


    • A, B, PCの3レジスタ


    • 入力/出力


    • レジスタと入力/出力は4bit幅


    • 動作イメージ


    • ①レジスタ or 入力のうち1つが選択される


    • ②選択されたものとメモリの上位4bit →
    演算器


    • ③演算器の結果 → レジスタ or 出力


    • データが循環している
    22
    CPUの創りかた https://amzn.to/3zOZnRa
    4本の信号線
    ① ②


    View Slide

  23. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    A
    レジスタ
    B
    レジスタ
    入力
    PC
    レジスタ
    メモリ
    Address Data
    演算器
    Decoder
    出力
    セレクタ
    CPUの回路
    命令の読み出しとデコード
    • PCレジスタを担当するIC


    • 4本の足がメモリと接続されている


    • 4本の足にアドレスを出力している


    • メモリはPCレジスタの足が指定したア
    ドレスのデータを出力している


    • 上位4ビットは演算に使う


    • 下位4ビットは命令に使う


    • 下位4ビットを見てみると…
    23
    演算4bit
    命令4bit

    View Slide

  24. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    CPUの回路
    CPUの命令って何?
    • メモリの足の状態でデータの流れを

    コントロールするようになっている


    セレクタ 演算器にどのデータを入れるか


    演算器 演算の種類


    レジスタ/出力 演算器の出力をどこに保管するか


    • データをどこかから持ってきて

    もう1つのデータと何らかの演算をし、

    結果をどこかに保管する装置


    • CPU命令: データの流れをコントロールするもの


    • 右の図で言うとデータの下位4bit
    24
    A
    レジスタ
    B
    レジスタ
    入力
    PC
    レジスタ
    メモリ
    Address Data
    演算器
    Decoder
    出力
    セレクタ

    View Slide

  25. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    CPUクロックによる状態遷移
    電子ピタゴラ装置
    • CPUはクロックにあわせて動く


    • クロック:

    定期的に0Vと5Vが切り替わる信号線


    • M2だと3.5GHz = 35億回/秒


    • 全ICにクロックが入力されている


    • クロックの立ち上がり(0V→5V)


    • PCレジスタに1が加算される


    • セレクタや演算器の状態が確定


    • クロックの立ち下がり(5V→0V)


    • 命令で指定されたレジスタが現在の状態を保
    存する
    25
    A
    レジスタ
    B
    レジスタ
    入力
    PC
    レジスタ
    メモリ
    Address Data
    演算器
    Decoder
    出力
    セレクタ

    View Slide

  26. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    ナンデモ作れるNAND
    CPUの原子
    • レジスタやセレクタ、加算機、メモリ


    • 論理演算の塊


    • 論理演算: OR, AND, XOR, …


    • PHPで 0 & 1 = 0, 1 & 1 = 1 とかやる

    アレと同じ


    • NOT + ANDのNANDという演算


    • CPUに必要な素子はNANDだけあれば

    組合せで作れる


    • NANDがあればNANDemoできる


    • 元気ですか〜!
    26
    https://basics.k-labo.work/2017/08/31/論理演算/

    View Slide

  27. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    いろいろなNAND
    27
    余談

    View Slide

  28. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    リレー
    • 電気的にコントロールできるスイッチ


    • 電圧をかけるとスイッチが切り替わる


    • 電気的な機械で「カチッ」って音がするやつは

    こいつが動いている


    • コンセントにつけるタイマーとか
    28
    https://amzn.to/43rEdGh

    View Slide

  29. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    リレーでNAND
    NANDatte〜
    29
    https://tams.informatik.uni-hamburg.de/applets/hades/webdemos/05-switched/20-relays/and-nand.html

    View Slide

  30. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか 30
    http://recursion.jp/rl/relay/j/index.html

    View Slide

  31. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    真空管でNAND
    31
    https://www.quora.com/How-were-vacuum-tubes-used-to-make-computers

    View Slide

  32. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか 32
    https://twitter.com/toukatsujin/status/1051016883355377665/photo/1

    View Slide

  33. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    トランジスタでNAND
    33
    http://www.gxk.jp/elec/musen/1ama/H12/html/H1208A10_.html

    View Slide

  34. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    NANDで作るコンピュータ
    • Nandgame


    • https://nandgame.com


    • ブラウザ上でNANDを組み合せてコンピュータを作る


    • 「演算器を作れ」みたいなお題が出てブラウザ上で線を接続して正解を探す


    • From Nand to Tetris


    • https://www.nand2tetris.org


    • NANDでCPUを作ってテトリスを動かす


    • CPUの創りかた


    • 言わずと知れた名著
    34

    View Slide

  35. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    Nandgame
    35
    https://nandgame.com/

    View Slide

  36. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    From Nand to Tetris
    36
    https://www.oreilly.co.jp/books/9784873117126/

    View Slide

  37. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    CPUの創りかた
    37
    https://amzn.to/43ioLfP

    View Slide

  38. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    CPUが直接実行可能な言語: マシン語
    データの取得, 演算, 保存
    • CPUの内部で電気回路として表現されたデータ処理 = マシン語


    • データの取得, 演算, 保存


    • こんなシンプルなマシン語でPHPやJavaは動いている


    • C言語はプログラムソースをマシン語に変換しているのでマシン語そのもの


    • マシン語からPHP, Javaまでのプログラム実行の話は

    PHP勉強会#147「
    プ

    グ
    ラムを実行するとは
    ど
    ういうことか」参照
    38

    View Slide

  39. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    補足: 条件付きジャンプ
    演算器のフラグ
    • さすがに代入とジャンプだけではすべてのプログラムは表現できない


    • 規定回数のループとか作れないし


    • 演算器は演算結果によってフラグを立てる


    • 演算の結果が0になったら立つゼロフラグとか


    • 演算の結果が桁あふれしたら立つキャリーフラグとか


    • フラグの状態を出力する足がある


    • 演算命令の次に条件付きジャンプ命令を置く


    • a = a - 10 の次に jp z, 0x0000 を置く


    • a = 10 だったら演算の結果が0になりゼロフラグが立った状態で次の命令を実行する


    • jp z, 0x0000 だと、ゼロフラグが立っていたらジャンプ、立っていなければ次に行く
    39

    View Slide

  40. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    まとめ
    40

    View Slide

  41. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    まとめ
    0と1で表現される電子ピタゴラスイッチ
    • コンピュータは数値を電圧の高低の2値で表現しているから0と1しか扱えない


    • コンピュータはCPU, 入出力(I/O), メモリからできている


    • CPUと入出力(I/O), メモリはICの足どうしが導線で接続されている


    • CPUの中はクロックで状態が遷移する電子ピタゴラスイッチだった


    • NANDがあればなんでも作れる


    • ぜひやってみてください!

    (Nandgameはお手軽でおすすめ)
    41
    ௕୩઒ஐر
    ͸͕ͤΘ ͱ΋͖
    @tomzoh

    View Slide

  42. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    おまけ & 参考
    42

    View Slide

  43. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    CPUと周辺デバイスの通信
    • CPUは周辺デバイスと通信するときにアドレスを指定してデータを送受信する


    • 例えばメモリの場合:


    • メモリは1つのアドレスに1バイトのデータがある


    • PHPの配列をイメージすると良い


    • 1バイトの数値が入る巨大な配列


    • アドレス指定が64bitなら配列の添字が64bit幅


    • 0x0000000000000000〜0xffffffffffffffff


    • 最大16EB(エクサバイト)


    • 32bitだと 0x00000000〜0xffffffffの4GB
    43

    View Slide

  44. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    CPUとメモリの接続
    CPUがメモリからデータを受け取りたい場合
    CPUはメモリにアドレスを指定する


    アドレス指定用の足の電圧をコントロールする


    アドレスが0xC001なら
    0b1100000000000001なので

    16本の足の電圧を5V, 5V, 0V, …, 5Vにする


    メモリは足の電圧を測定する


    CPUと線でつながっているので16本の足は5V,
    5V, 0V, …, 5V。


    つまり0b1100000000000001 = 0xC001
    とわかる
    44
    1
    1
    0
    1
    CPU
    MEMORY
    ?
    ?
    ?
    ?
    "%%3&44 %"5"
    "%%3&44 %"5"
    アドレス 16本
    データ 8本
    ここからしばらくZ80

    View Slide

  45. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    CPUとメモリの接続
    CPUがメモリからデータを受け取りたい場合
    メモリはデータを出力する


    データ通信用の足の電圧をコントロールする


    データが0x89なら0b10001001なので

    8本の足の電圧を5V, 0V, 0V, … 5Vにする


    CPUは足の電圧を測定する


    メモリと線でつながっているので8本の足は5V,
    0V, 0V, …, 5V。


    つまり0b10001001 = 0x89とわかる
    45
    1
    1
    0
    1
    ?
    ?
    ?
    ?
    CPU
    MEMORY
    ?
    ?
    ?
    ?
    1
    0
    0
    1
    "%%3&44 %"5"
    "%%3&44 %"5"
    アドレス 16本
    データ 8本

    View Slide

  46. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    アドレスバス・データバス
    CPUの話をすると必ずアドレスバス・データ
    バスという言葉がでてくる


    アドレスを指定する信号線一式 = アドレスバス


    データを送受信する信号線一式 = データバス


    バスの信号線の数(幅)はCPUによって違う


    Z80の場合:


    アドレスバス16bit


    データバス8bit
    46
    1
    1
    0
    1
    ?
    ?
    ?
    ?
    CPU
    MEMORY
    ?
    ?
    ?
    ?
    1
    0
    0
    1
    "%%3&44 %"5"
    "%%3&44 %"5"
    アドレス 16本
    データ 8本

    View Slide

  47. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    CPUとメモリの接続
    CPUがメモリにデータを書き込みたい場合
    書き込みも同じ感じ


    CPUはアドレスとデータを出力する


    メモリは指定されたアドレスに

    指定されたデータを保存する
    47
    1
    1
    0
    1
    1
    0
    1
    0
    CPU
    MEMORY
    ?
    ?
    ?
    ?
    ?
    ?
    ?
    ?
    "%%3&44 %"5"
    "%%3&44 %"5"
    アドレス 16本
    データ 8本

    View Slide

  48. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    読み込み/書き込みの表現
    メモリは書き込みか読み込みかどう判断するの?


    そう思った方は大変鋭い


    CPUの動作を表す信号線


    現在のアクセスがCPUから見て書き込みなのか読み
    込みなのかを表す信号線RDとWR


    RDが有効な時


    メモリはアドレス信号線を見てデータを返す


    WRが有効な時


    メモリはアドレス信号線とデータ信号線を見てデータ
    を保存する
    48
    1
    1
    0
    1
    1
    0
    1
    0
    CPU
    MEMORY
    ?
    ?
    ?
    ?
    ?
    ?
    ?
    ?
    "%%3&44 %"5"
    "%%3&44 %"5"
    0 ?
    1 ?
    3% 83
    3% 83

    View Slide

  49. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    足の電圧を測定?
    • このページまでで「足の電圧を測定」とか書いてきた


    • この考え方は「コンピュータの上からの見え方」


    • 実際は…


    • メモリ=アドレスの足に電圧をかけられるとデータの足の電圧が変わっちゃう回路
    49

    View Slide

  50. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    "%%3&44 %"5"
    メモリの回路
    メモリから値を読み込む時のメモリ内部の動作
    • 16本の信号線でアドレス指定


    • 2進数16bitの値→65,535本の
    うち1本だけが1になっている状態
    に変換される


    • メモリセルが選択されて

    保存されたデータが電圧の形で

    再現される


    • = データ信号線の足の電圧が変わる


    • この動きは電気回路なので高速
    50
    MEMORY
    1
    0
    1
    1
    1
    1
    0
    0
    1 1 0 0 0 0 0 0
    1
    A0
    A1
    A2
    A14
    A15
    D0
    D1
    D2
    D3
    %&$0%&3
    16本 65,536本

    View Slide

  51. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    I/O
    "%%3&44 %"5"
    3%
    83
    CPUと入出力(I/O)の接続
    並列接続されてバスを共有するメモリや入出力(I/O)
    CPUとメモリは

    アドレスバスとデータバスで接続されている


    CPUと入出力(I/O)は?


    アドレスバスとデータバスで接続されている


    メモリと並行に接続されている


    メモリとI/Oが同時に動いちゃわない?


    と思った方は鋭い


    CPUが「おまえな」と指示する信号線がある


    Z80の場合、メモリ操作をあらわすMEMRQと入出
    力(I/O)操作をあらわすIOREQ
    51
    CPU
    MEMORY
    "%%3&44 %"5"
    "%%3&44 %"5"
    3%
    83
    3%
    83
    .&.3 32
    *03&2
    32

    View Slide

  52. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか 52
    I/O
    "%%3&44 %"5"
    3%
    83
    CPU
    MEMORY
    "%%3&44 %"5"
    "%%3&44 %"5"
    3%
    83
    3%
    83
    .&.3 32
    *03&2
    32
    I/O
    "%%3&44 %"5"
    3%
    83
    CPU
    MEMORY
    "%%3&44 %"5"
    "%%3&44 %"5"
    3%
    83
    3%
    83
    .&.3 32
    *03&2
    32

    View Slide

  53. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    補足
    メモリ


    大きく分けて、メインメモリ(一次記憶)、ストレージ(二次記憶)


    ここまでで話したメモリはメインメモリの方


    ストレージは入出力(I/O)の先にある


    メモリの大原則として近い方が速いというのがある


    メモリの速度 (M2 Pro MacBook Pro)


    メインメモリ: 200GB/s


    ストレージ: 5GB/s


    53

    View Slide

  54. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    "CPUの創りかた"よりTD4回路図
    54
    レジスタ&出力
    セレクタ 演算器
    入力
    Decoder

    View Slide

  55. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    コンピュータの構成要素間の接続
    • コンピュータがCPUと入出力(I/O)、メモリで構成されているのはわかった


    • 具体的にどうやってつながっている?


    • CPUはこんな形をしている


    • メモリも同じ様な形をしている


    • 足どうしが線でつながっている


    • 入出力(I/O)も同じ


    • I/OコントローラICとつながっている
    55

    View Slide

  56. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか 56

    View Slide

  57. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか 57
    CPU
    メモリ
    配線

    View Slide

  58. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    コンピュータの構成要素
    CPU


    Central Processing Unit / 中央演算装置


    データをどこかから持ってきてもう1つのデータと何らかの演算をし、

    結果をどこかに保管する装置


    入出力(I/O)


    メモリ
    58

    View Slide

  59. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    コンピュータの構成要素
    CPU


    入出力(I/O)


    入力: キーボード, トラックパッド, タッチパネル, …


    出力: ディスプレイ, スピーカー, …


    両方: ネットワーク, USB, Bluetooth, …


    メモリ
    59

    View Slide

  60. 長谷川智希 @tomzoh
    コンピュータはなぜ0と1なのか
    コンピュータの構成要素
    CPU


    入出力(I/O)


    メモリ


    CPUが使う命令やデータを保存する装置


    大きく分けて、メインメモリ(一次記憶)、ストレージ(二次記憶)


    MacだとAppleのWebでは「メモリ」「ストレージ」と書かれている


    iPhoneとかで「512GB」とか言ってるのはストレージの方


    AppleのWebには「容量」とだけ書いてある メインメモリは公表されない
    60

    View Slide