SlideShare a Scribd company logo
コンピュータシステム
の理論と実装①
本の概要
• コンピュータを一から作っていくこと
で、コンピュータの仕組みを学ぶ(ボト
ムアップ式)
• 前半はハードウェア、後半はソフト
ウェアを扱う
• コンピュータ作成後、テトリスを作る
nand2tetris (nand to tetris)
→ nandからtetrisへ
第1章 ブール論理
コンピュータは、電気信号を用いる
→ オン:1、オフ:0 として, 「0と1」の2つのラベルで表さ
れる数(2進数)で情報処理
2進数について学ぶ必要がある!
2進数に関する学問 → ブール代数
ブール代数
ブール値 ・・・ 2つのラベルを持った値
ex) on/off 、 true/false 、 1/0
ブール関数 ・・・ ブール値を引数に持つ関数
ex) fが引数xを反転して返すブール関数の場合
f(x) = തx ⇔ ቊ
f 0 = 1
f 1 = 0
ブール関数の基本要素
・10進数では四則演算が関数の基本要素
→ 一般的な関数は四則演算が複数合わさって構成
・2進数では次の3つが基本要素
・And
・Or
・Not
→ 一般的な関数はAnd、Or、Notが複数合わさって構成
基本ブール関数(And)
And(x,y)=ቊ
1 x = y = 1
0 others
イメージ図
x y And(x,y)
0 0 0
0 1 0
1 0 0
1 1 1
x y
基本ブール関数(Or)
Or(x,y)=ቊ
0 x = y = 0
1 others
イメージ図
x y Or(x,y)
0 0 0
0 1 1
1 0 1
1 1 1
A
A B
基本ブール関数(Not)
Not(x)=ቊ
0 x = 1
1 x = 0
イメージ図
x
x Not(x)
0 1
1 0
ブール関数の表現方法
• 真理値表
引数とブール関数の値を対応させた表
• ブール式
+ や ・のような演算子を用いた表現
ブール関数の表現方法(真理値表)
真理値表
全てのブール変数の組み合わせとブール関数の値を対応させた表
Andは2つの引数が1の場合1、それ以外の場合0をとるブール関数
x y And(x,y)
0 0 0
0 1 0
1 0 0
1 1 1
ブール関数の表現方法(ブール式)
・ブール式
+ や ・のような演算子を用いた表現
・基本的なブール式
・And(x,y) ≡ x・y
・Or(x,y) ≡ x+y
・Not(x) ≡ തx
→ 右辺のような演算子を用いると便利
正規表現
正規表現・・・複数のブール値を1つのブール式にまとめた表現
ex) 2要素ブール値集合の正規表現
x+y
x , y x・y
തx+y
⋮
変数x,yと演算子+,・, ഥ の組み合わせ
※ 要素数が𝑛個の場合、正規表現は22 𝑛
通り存在
ブール値集合 正規表現
全部で16通り
ブール関数と正規表現
任意のブール関数は少なくとも1つの正規表現で表すことができる
ex) ブール関数f(x,y) → ブール関数fはブール値x,yを持つ
x+y, x・y, ・・・
計16個
→ ブール関数fは16個の正規表現の内
どれかで表せる!
正規表現
ブール関数と正規表現
任意のブール関数は少なくとも1つの正規表現で表せる
任意のブール関数は、・(And)と+(Or)と ഥ (Not)を用いて表せる
新たなブール関数Nandを使って表せる
Nandとは
Nand ・・・ Not and の略
Nand(x,y) = x・y = ቊ
0 x = y = 1
1 others
x y Nand(x,y)
0 0 1
0 1 1
1 0 1
1 1 0
Nandと基本ブール関数
Nandのみを用いてAnd、Or、Notを表すことができる。
Not(x) = തx = x・x = Nand(x,x)
And(x,y) = x・y = x・y = Nand(x, y)
= Nand(Nand(x,y),Nand(x,y))
Or(x,y) = x + y = തx・തy (∵ド・モルガンの法則)
= Nand(Nand(x,x),Nand(y,y))
最後の資料参照
Nandとブール関数
任意のブール関数は少なくとも1つの正規表現で表せる
任意のブール関数は、・(And)と+(Or)と ഥ (Not)を用いて表せる
任意のブール関数はNandを用いて表せる
論理ゲート
(論理)ゲート ・・・ ブール関数を物理的に実現したデバイス
Orゲート(p.6参照)
基本ブール関数(And、Or、Not)に対応する論理ゲートを基本論
理ゲートという。
And
Not
複合ゲート
複合ゲート ・・・ 複数の基本論理ゲートを組み合わせたもの
ex) Andゲート2つを組み合わせた複合ゲート
And
And
論理設計
2種類の回路構成図
・インターフェイス ・・・ 外部構成
・実装 ・・・ 内部構成
インターフェイス 実装
And
And
And
回路の仮想構築
・PC上で仮想的な回路を構築することができる
・PC上で回路構築するためのツール
→ハードウェア記述言語(Hardware Description Language:HDL)
ハードウェアシミュレータ(ここではHSと略す)
・HDLで構築したい回路の内容を記述 → HSで回路を仮想構築
作業
1. 必要フォルダをダウンロード
2. hdlファイルの記述
3. シミュレーション
1. フォルダのダウンロード
・公式ホームページhttps://www.nand2tetris.org
にアクセス
・Software → Download から
Download the Nand2tetris Software Suite
をクリックしダウンロード
ダウンロードフォルダ
① projectsフォルダ → hdlファイル、tstファイル、cmpファイル
などが含まれる
・hdlファイル ・・・ ゲート内容を記述する(各自で記述)
・tstファイル ・・・ シミュレータが行うテスト内容(記述済)
・cmpファイル ・・・ 正しい出力結果(記述済)
② toolsフォルダ → シミュレータやコンパイラなどが含まれる
2. hdlファイルの記述
ゲート名.hdl のファイルをテキストエディタで記述
・メモ帳
・Visual Studio
・・・・
ハードウェア記述言語(HDL)
HDL ・・・ ゲート(回路)の構造を記述するための言語
Andゲートの記述例
→ ゲートの名前、インターフェイス情報、実装情報で構成
HDLの具体例
AndゲートをHDLで記述してみる!
projectsディレクトリ → 01 → And.hdl を開く
・ゲート名
CHIP ゲート名 (記述済)
次に論理設計(インターフェイス部と実装部)を考える!
・インターフェイス部
インターフェイス(外部構造) → 2入力と1出力
入力端子、出力端子それぞれに名前を付ける
・入力 a,b
・出力 out
{}内の初めに
IN 入力端子名;
OUT 出力端子名;
(記述済)
And
a
b
out
• 実装部
Andゲートはブール関数で表すと
And(a,b) = Nand(Nand(a,b),Nand(a,b))
→Nandゲートにa,bを入力して,その出力値を再びNand
に入力
Andゲートの実装(内部構造)
※上図の端子Nand(a,b)の名前をout1としている
NandNand
a
b
Nand(a,b)=out1
And(a,b)=out
• 実装部
既に作成済みゲート(パーツ)への接続手順
→ 今の例だと、Nandがパーツ
・NandゲートのHDLに記述されたインターフェイス部を確認
Nandの入力端子名 a,b
Nandの出力端子名 out
・Nand(Nandの端子名=Andの端子名)で接続
Nand(a=a, b=b, out=out1) Nand
a
b
o
u
t
out1
a
b
• 実装部
PARTS:
パーツ名(パーツ端子名=チップ端子名);
NandNand
a
b
out
out1
HDL全体の構成
CHIP ゲート名{
IN 入力端子名;
OUT 出力端子名;
PARTS:
パーツ名(パーツ端子=チップ端子);
}
3. シミュレーション
・シミュレーションファイルを開く
toolsディレクトリ → HardwareSimulator.bat (windows)
HardwareSimulator.sh (Linux)
・ファイルの読み込み
Load Script をクリック
↓
シミュレートしたい
tstファイルを選択
・シミュレート
Runをクリックすると
シミュレート開始
(黄色線が現在シミュレート
してる箇所)
最後までシミュレートできれば
下に 「End of Scipt ~~~」が
表示される
• 画面説明
各ピンの値
HDL
プログラムがシミュ
レートしてる箇所の
表示
各ピンの値の表現方法 下記に表示するファイル
基本論理ゲートの作成
・Notゲート
Not(in) = Nand(in,in)
• Orゲート
Or(a,b)= Nand(Nand(a,a),Nand(b,b))
Nandin out
Nand
Nand
Nand
a
b
out
その他の論理ゲートの作成
• Xorゲート
2つの値が異なる場合に1、それ以外は0
a b Xor(a,b)
0 0 0
0 1 1
1 0 1
1 1 0
• Xorゲート
<正規表現を求めるテクニック>
1. 出力値が1のものに着目
2. それぞれのブール式を考える
3. 2の全ての要素を論理和で結合
1. 右表の黄色2つ
2. 1つ目: out = തa・b 、 2つ目: out = a・തb
3. Xor(a,b) = തa・b + a・തb
a b Xor(a,b)
0 0 0
0 1 1
1 0 1
1 1 0
最後の参考資料参照
• Xorゲート
Xor(a,b) = തa・b + a・തb
And
And
Or
Not
Not
a
b
out
• マルチプレクサ(Mux)
3つの入力 = 2つのデータビット+1つの選択ビット
選択ビットの値によって、出力値が決まる
・sel=0のとき、aを出力
・sel=1のとき、bを出力
Mux
a
b
out
sel
a b sel out
0 0 0 0
0 1 0 0
1 0 0 1
1 1 0 1
0 0 1 0
0 1 1 1
1 0 1 0
1 1 1 1
• マルチプレクサ(Mux)
Muxの正規表現は?
<正規表現を求めるテクニック>
1. 出力値が1のものに着目
Muxの場合、右表の黄色4つ
2. それぞれのブール式を考える
1つ目,2つ目 → out=a・sel
3つ目,4つ目 → out=b・sel
3. 2の全ての要素を論理和で結合
out = a・sel + b・sel
a b sel out
0 0 0 0
0 1 0 0
1 0 0 1
1 1 0 1
0 0 1 0
0 1 1 1
1 0 1 0
1 1 1 1
• マルチプレクサ(Mux)
Muxの真理値表を右のように見やするすることで、
正規表現が求めやすくなる!
1行目のブール式 : a・sel
2行目のブール式 : b・sel
→ out = a・sel + b・sel
sel out
0 a
1 b
• マルチプレクサ(Mux)
out = a・sel + b・sel
And
And
Not
Or outsel
b
a
• デマルチプレクサ(DMux)
Muxの逆で、1つの入力に対して選択ビットの値によって
2つの出力に分ける。
・sel=0のとき、a=in, b=0
・sel=1のとき、a=0, b=in
DMux
a
b
in
sel
sel a b
0 in 0
1 0 in
• デマルチプレクサ(DMux)
a = in・sel 、 b = in・sel
And
And
Not
sel
in
a
b
sel a b
0 in 0
1 0 in
・多ビットゲート
ハードウェアでは複数ビットからなる配列(バス)を操作する
ことが一般的
→ 多ビットゲートが必要
・多ビットゲート
1入力に対して、複数ビットを扱える
ex) 16ビットバスのゲート
16入力 1入力
ゲート16個 ゲート
1ビットの
情報 16ビットの
情報
・多ビットNotゲート
多ビットNotゲートをHDLで記述する!
多ビットになっても、基本的に回路図は変わらず!
16ビットバス
入力
Not
16
16ビットバス
出力
・多ビットNotゲート
入出力端子名[ビット数]
ビット数分のNotゲート
※初めのビット番号は0
使いたいパーツが完成していない場合の対処
多ビットNotゲートのパーツで
Notゲートを使いたい!
↓
Notゲート完成してない。。。
↓
ビルトイン回路(既に完成済の回路)
を使う!
使いたいパーツが完成していない場合の対処
・ビルトイン回路の管理場所
ダウンロードファイルの
tools → builtInChips
に多くのビルトイン回路がある。
使いたいパーツが完成していない場合の対処
・シミュレータの動作
projectsフォルダ内のhdlファイルを読み込む
↓
対象ファイルが見つからない場合、 builtInChipsの
hdlファイルを読み込む
⇒ ビルトイン回路を使う場合、projectsフォルダの
hdlファイルを別の場所に移しておく!
・多ビットAnd, 多ビットOr,多ビットマルチプレクサ
→ 各自で!
・多入力Orゲート
多入力の場合でも、バスのように
入力端子名[入力数]
で宣言
Or
Or
In[0]
In[1]
In[2]
・多入力/多ビットマルチプレクサ
4入力16ビットマルチプレクサ
out = a・sel[0]・ sel[1] + b・sel[0]・ sel[1]
+ c・ sel[0]・sel[1] + d・sel[0]・sel[1]
sel[1] sel[0] out
0 0 a
0 1 b
1 0 c
1 1 d
Mux
a
b out
sel[1]
c
d
sel[0]
・多出力デマルチプレクサ
4出力デマルチプレクサ
a = in・sel[0]・ sel[1] 、 b = in・sel[0]・ sel[1]
c = in・ sel[0]・sel[1] 、 d = in・sel[0]・sel[1]
sel[1] sel[0] a b c d
0 0 In 0 0 0
0 1 0 In 0 0
1 0 0 0 In 0
1 1 0 0 0 in
DMux
a
bin
sel[1]
c
d
sel[0]
・ 、8入力16ビットマルチプレクサ, 8出力デマルチプレクサ
→ 各自で!
参考資料(ド・モルガンの法則)
ここでは和集合と積集合を次のように定義します。
・和集合 ・・・ A+B (Or(A,B)に対応)
・積集合 ・・・ A・B (And(A,B)に対応)
和集合 積集合
A B A B
参考資料(ド・モルガンの法則)
ド・モルガンの法則
・ A + B = ഥA ・ ഥB
・ A・B = ഥA + ഥB
A B 否定 A B
A B 否定 A B
参考資料(正規表現を求めるテクニック)
<正規表現を求めるテクニック>
1. 出力値が1のものに着目
2. それぞれのブール式を考える
3. 2の全ての要素を論理和で結合
の簡単な証明
2変数ブール関数X(a,b)に関して𝑘個の出力値が1となるとする。
さらに、
X 𝑎, 𝑏 = σ𝑖=0
𝑘
𝐴𝑖(𝑎, 𝑏)
※σ は論理和の
X 𝑎, 𝑏 =1となる 𝑎, 𝑏 の集合をM、 X 𝑎, 𝑏 =0となる 𝑎, 𝑏 の集合
をNとする。
このとき、任意のMの要素mに対して
X m = σ𝑖=0
𝑘
𝐴𝑖(𝑚) = 1
は明らかに成り立つ。
また、任意のNの要素nに対して
X n = σ𝑖=0
𝑘
𝐴𝑖(n) = 1
∴ 𝐴0 n + 𝐴1 n + ・・・ + 𝐴 𝑘 n = 0
参考資料(正規表現を求めるテクニック)
<正規表現を求めるテクニック>
1. 出力値が1のものに着目
2. それぞれのブール式を考える
3. 2の全ての要素を論理和で結合
で、本当に正規表現になってる?
黄色のブール式をA(a,b)とB(a,b)とする。
このとき、
Xor(a,b) =A(a,b)+B(a,b)
が本当にあってるか確認!
⇒ Xor=0になる(a,b)の組み合わせで AとBが0になることを
確認できれば十分!
a b Xor(a,b)
0 0 0
0 1 1
1 0 1
1 1 0
A(a,b)
B(a,b)
Xor(0,0)=0なので
A(0,0)+B(0,0) = 0
∴ A(0,0)=B(0,0) = 0 (※ +は論理和)
同様に、 Xor(1,1)=0なので
A(1,1)=B(1,1) = 0
つまり、 Xor=0となる(a,b)の組み合わせでは
AもBも0になる!
a b Xor(a,b)
0 0 0
0 1 1
1 0 1
1 1 0
A(a,b)
B(a,b)
一般的なお話
あるゲートGに関して、G=1を満たすGの変数の集合をKとする。
(つまり、G(K)=1ということ)
さらに、Kの各要素𝑘𝑖に対するブール式を𝐴𝑖とする。
(前ページでは、 𝐴1 =A, 𝐴2 = B)
このとき、
G = ራ
𝑖
𝐴𝑖
が成り立つ。ここで、 ‫ڂ‬ は全ての要素を論理和で結合するこ
とを表す記号である。
・任意のKの要素では、 𝐴𝑖のどれか一つが1になる
・G=0となる変数集合では, 𝐴𝑖全てが0になる

More Related Content

What's hot

確率ロボティクス第12回
確率ロボティクス第12回確率ロボティクス第12回
確率ロボティクス第12回
Ryuichi Ueda
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
Masakazu Matsushita
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
ryosuke-kojima
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門Yosuke Onoue
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
torisoup
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
 
PostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解くPostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解く
Hiroya Kabata
 
Cache-Oblivious データ構造入門 @DSIRNLP#5
Cache-Oblivious データ構造入門 @DSIRNLP#5Cache-Oblivious データ構造入門 @DSIRNLP#5
Cache-Oblivious データ構造入門 @DSIRNLP#5Takuya Akiba
 
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例
Hirohito Kato
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
Norishige Fukushima
 
強化学習における好奇心
強化学習における好奇心強化学習における好奇心
強化学習における好奇心
Shota Imai
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
Yusuke Uchida
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
 
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング
Norishige Fukushima
 
通信対戦ゲームを作った話
通信対戦ゲームを作った話通信対戦ゲームを作った話
通信対戦ゲームを作った話
mipsparc
 
async/awaitダークサイド is 何
async/awaitダークサイド is 何async/awaitダークサイド is 何
async/awaitダークサイド is 何
Kouji Matsui
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
京大 マイコンクラブ
 

What's hot (20)

確率ロボティクス第12回
確率ロボティクス第12回確率ロボティクス第12回
確率ロボティクス第12回
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
PostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解くPostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解く
 
Cache-Oblivious データ構造入門 @DSIRNLP#5
Cache-Oblivious データ構造入門 @DSIRNLP#5Cache-Oblivious データ構造入門 @DSIRNLP#5
Cache-Oblivious データ構造入門 @DSIRNLP#5
 
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
 
強化学習における好奇心
強化学習における好奇心強化学習における好奇心
強化学習における好奇心
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
 
Gpu vs fpga
Gpu vs fpgaGpu vs fpga
Gpu vs fpga
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング
 
通信対戦ゲームを作った話
通信対戦ゲームを作った話通信対戦ゲームを作った話
通信対戦ゲームを作った話
 
async/awaitダークサイド is 何
async/awaitダークサイド is 何async/awaitダークサイド is 何
async/awaitダークサイド is 何
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
 

Similar to コンピュータシステムの理論と実装1

30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
Hirotaka Kawata
 
core dumpでcode golf
core dumpでcode golfcore dumpでcode golf
core dumpでcode golf
Nomura Yusuke
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
信之 岩永
 
Lチカで終わらせないArduino シリアル通信 Part1(移行済)
Lチカで終わらせないArduino シリアル通信 Part1(移行済)Lチカで終わらせないArduino シリアル通信 Part1(移行済)
Lチカで終わらせないArduino シリアル通信 Part1(移行済)
tomitomi3 tomitomi3
 
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519Yasuhiro Ishii
 
OSC Tokyo 2013 Spring JRPUG
OSC Tokyo 2013 Spring JRPUGOSC Tokyo 2013 Spring JRPUG
OSC Tokyo 2013 Spring JRPUG
Hideki Aoshima
 
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010Tsukasa Oi
 
150130 edison-ug
150130 edison-ug150130 edison-ug
150130 edison-ug
Takehiko Tomiyama
 
0からコンピュータを作ってみた
0からコンピュータを作ってみた0からコンピュータを作ってみた
0からコンピュータを作ってみた
YuuOkano
 
Exploring the x64
Exploring the x64Exploring the x64
Exploring the x64FFRI, Inc.
 
Intel GoldmontとMPXとゆるふわなごや
Intel GoldmontとMPXとゆるふわなごや Intel GoldmontとMPXとゆるふわなごや
Intel GoldmontとMPXとゆるふわなごや
Masaki Ota
 
HTTP/2, QUIC入門
HTTP/2, QUIC入門HTTP/2, QUIC入門
HTTP/2, QUIC入門
shigeki_ohtsu
 
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
Hirotaka Kawata
 
Bluetooth通信の 仕組みと活用法紹介
Bluetooth通信の仕組みと活用法紹介Bluetooth通信の仕組みと活用法紹介
Bluetooth通信の 仕組みと活用法紹介
Takehiko YOSHIDA
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表Hirotaka Kawata
 
4章 Linuxカーネル - 割り込み・例外 5
4章 Linuxカーネル - 割り込み・例外 54章 Linuxカーネル - 割り込み・例外 5
4章 Linuxカーネル - 割り込み・例外 5
mao999
 
Lチカで終わらせないArduino シリアル通信 Part2(移行済)
Lチカで終わらせないArduino シリアル通信 Part2(移行済)Lチカで終わらせないArduino シリアル通信 Part2(移行済)
Lチカで終わらせないArduino シリアル通信 Part2(移行済)
tomitomi3 tomitomi3
 
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
ryos36
 
Interrupts on xv6
Interrupts on xv6Interrupts on xv6
Interrupts on xv6
Takuya ASADA
 

Similar to コンピュータシステムの理論と実装1 (20)

30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
 
core dumpでcode golf
core dumpでcode golfcore dumpでcode golf
core dumpでcode golf
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
 
Lチカで終わらせないArduino シリアル通信 Part1(移行済)
Lチカで終わらせないArduino シリアル通信 Part1(移行済)Lチカで終わらせないArduino シリアル通信 Part1(移行済)
Lチカで終わらせないArduino シリアル通信 Part1(移行済)
 
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
 
KOGEI & KAIT Funnel WS
KOGEI & KAIT Funnel WSKOGEI & KAIT Funnel WS
KOGEI & KAIT Funnel WS
 
OSC Tokyo 2013 Spring JRPUG
OSC Tokyo 2013 Spring JRPUGOSC Tokyo 2013 Spring JRPUG
OSC Tokyo 2013 Spring JRPUG
 
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
 
150130 edison-ug
150130 edison-ug150130 edison-ug
150130 edison-ug
 
0からコンピュータを作ってみた
0からコンピュータを作ってみた0からコンピュータを作ってみた
0からコンピュータを作ってみた
 
Exploring the x64
Exploring the x64Exploring the x64
Exploring the x64
 
Intel GoldmontとMPXとゆるふわなごや
Intel GoldmontとMPXとゆるふわなごや Intel GoldmontとMPXとゆるふわなごや
Intel GoldmontとMPXとゆるふわなごや
 
HTTP/2, QUIC入門
HTTP/2, QUIC入門HTTP/2, QUIC入門
HTTP/2, QUIC入門
 
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
 
Bluetooth通信の 仕組みと活用法紹介
Bluetooth通信の仕組みと活用法紹介Bluetooth通信の仕組みと活用法紹介
Bluetooth通信の 仕組みと活用法紹介
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表
 
4章 Linuxカーネル - 割り込み・例外 5
4章 Linuxカーネル - 割り込み・例外 54章 Linuxカーネル - 割り込み・例外 5
4章 Linuxカーネル - 割り込み・例外 5
 
Lチカで終わらせないArduino シリアル通信 Part2(移行済)
Lチカで終わらせないArduino シリアル通信 Part2(移行済)Lチカで終わらせないArduino シリアル通信 Part2(移行済)
Lチカで終わらせないArduino シリアル通信 Part2(移行済)
 
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
 
Interrupts on xv6
Interrupts on xv6Interrupts on xv6
Interrupts on xv6
 

コンピュータシステムの理論と実装1