Submit Search
Upload
コンピュータシステムの理論と実装3
•
Download as PPTX, PDF
•
0 likes
•
1,198 views
Y
Yoko Yama
Follow
勉強会用にO'Reillyの「コンピュータシステムの理論と実装」の第3章を纏めた資料です。
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 24
Download now
Recommended
コンピュータシステムの理論と実装1
コンピュータシステムの理論と実装1
H T
コンピュータシステムの理論と実装2
コンピュータシステムの理論と実装2
H T
DEBUG 裝屌指南 - 那些看起來高級的 LLDB 手勢
DEBUG 裝屌指南 - 那些看起來高級的 LLDB 手勢
Pofat Tseng
どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?
たけおか しょうぞう
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
catupper
cplds
cplds
Anish Gupta
Verilog-A.pptx
Verilog-A.pptx
AbdullahAl20
キーボード自作のススメ
キーボード自作のススメ
Retrieva inc.
Recommended
コンピュータシステムの理論と実装1
コンピュータシステムの理論と実装1
H T
コンピュータシステムの理論と実装2
コンピュータシステムの理論と実装2
H T
DEBUG 裝屌指南 - 那些看起來高級的 LLDB 手勢
DEBUG 裝屌指南 - 那些看起來高級的 LLDB 手勢
Pofat Tseng
どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?
たけおか しょうぞう
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
catupper
cplds
cplds
Anish Gupta
Verilog-A.pptx
Verilog-A.pptx
AbdullahAl20
キーボード自作のススメ
キーボード自作のススメ
Retrieva inc.
MikanOSと自作CPUをUSBで接続する
MikanOSと自作CPUをUSBで接続する
uchan_nos
Javaで作る超簡易x86エミュレータ
Javaで作る超簡易x86エミュレータ
Daisuke Kamikawa
コンピュータシステムの理論と実装 6章 アセンブラ
コンピュータシステムの理論と実装 6章 アセンブラ
Yoko Yama
Mips
Mips
Stefano Salvatori
광운대[바람] 3.vhdl test bench
광운대[바람] 3.vhdl test bench
NAVER D2
機械学習と深層学習入門
機械学習と深層学習入門
Yuta Takahashi
30分で分かる!OSの作り方
30分で分かる!OSの作り方
uchan_nos
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
Shuichi Tsutsumi
Read & write
Read & write
malaybpramanik
E.s unit 6
E.s unit 6
Sneha Chopra
實數表示法與運算
實數表示法與運算
encoret
Register organization, stack
Register organization, stack
Asif Iqbal
用 C# 與 .NET 也能打造機器學習模型:你所不知道的 ML.NET 初體驗
用 C# 與 .NET 也能打造機器學習模型:你所不知道的 ML.NET 初體驗
Ko Ko
input output Organization
input output Organization
Acad
用十分鐘 向jserv學習作業系統設計
用十分鐘 向jserv學習作業系統設計
鍾誠 陳鍾誠
Control unit design
Control unit design
Dhaval Bagal
Digital VLSI Design : Combinational Circuit
Digital VLSI Design : Combinational Circuit
Usha Mehta
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
Intro to Hardware Programming with the Arduino Uno
Intro to Hardware Programming with the Arduino Uno
Vui Nguyen
FPGA/Reconfigurable computing (HPRC)
FPGA/Reconfigurable computing (HPRC)
rinnocente
More Related Content
What's hot
MikanOSと自作CPUをUSBで接続する
MikanOSと自作CPUをUSBで接続する
uchan_nos
Javaで作る超簡易x86エミュレータ
Javaで作る超簡易x86エミュレータ
Daisuke Kamikawa
コンピュータシステムの理論と実装 6章 アセンブラ
コンピュータシステムの理論と実装 6章 アセンブラ
Yoko Yama
Mips
Mips
Stefano Salvatori
광운대[바람] 3.vhdl test bench
광운대[바람] 3.vhdl test bench
NAVER D2
機械学習と深層学習入門
機械学習と深層学習入門
Yuta Takahashi
30分で分かる!OSの作り方
30分で分かる!OSの作り方
uchan_nos
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
Shuichi Tsutsumi
Read & write
Read & write
malaybpramanik
E.s unit 6
E.s unit 6
Sneha Chopra
實數表示法與運算
實數表示法與運算
encoret
Register organization, stack
Register organization, stack
Asif Iqbal
用 C# 與 .NET 也能打造機器學習模型:你所不知道的 ML.NET 初體驗
用 C# 與 .NET 也能打造機器學習模型:你所不知道的 ML.NET 初體驗
Ko Ko
input output Organization
input output Organization
Acad
用十分鐘 向jserv學習作業系統設計
用十分鐘 向jserv學習作業系統設計
鍾誠 陳鍾誠
Control unit design
Control unit design
Dhaval Bagal
Digital VLSI Design : Combinational Circuit
Digital VLSI Design : Combinational Circuit
Usha Mehta
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
Intro to Hardware Programming with the Arduino Uno
Intro to Hardware Programming with the Arduino Uno
Vui Nguyen
FPGA/Reconfigurable computing (HPRC)
FPGA/Reconfigurable computing (HPRC)
rinnocente
What's hot
(20)
MikanOSと自作CPUをUSBで接続する
MikanOSと自作CPUをUSBで接続する
Javaで作る超簡易x86エミュレータ
Javaで作る超簡易x86エミュレータ
コンピュータシステムの理論と実装 6章 アセンブラ
コンピュータシステムの理論と実装 6章 アセンブラ
Mips
Mips
광운대[바람] 3.vhdl test bench
광운대[바람] 3.vhdl test bench
機械学習と深層学習入門
機械学習と深層学習入門
30分で分かる!OSの作り方
30分で分かる!OSの作り方
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
Read & write
Read & write
E.s unit 6
E.s unit 6
實數表示法與運算
實數表示法與運算
Register organization, stack
Register organization, stack
用 C# 與 .NET 也能打造機器學習模型:你所不知道的 ML.NET 初體驗
用 C# 與 .NET 也能打造機器學習模型:你所不知道的 ML.NET 初體驗
input output Organization
input output Organization
用十分鐘 向jserv學習作業系統設計
用十分鐘 向jserv學習作業系統設計
Control unit design
Control unit design
Digital VLSI Design : Combinational Circuit
Digital VLSI Design : Combinational Circuit
プログラムを高速化する話
プログラムを高速化する話
Intro to Hardware Programming with the Arduino Uno
Intro to Hardware Programming with the Arduino Uno
FPGA/Reconfigurable computing (HPRC)
FPGA/Reconfigurable computing (HPRC)
コンピュータシステムの理論と実装3
1.
コンピュータシステムの 理論と実装③ 横山 周平
2.
本日の予定 組み合わせ回路と順序回路(p41) 各種順序回路について(p42~p55) まとめ
3.
本日の予定 組み合わせ回路と順序回路(p41) 各種順序回路について(p42~p55) まとめ
4.
組み合わせ回路とは? (組み合わせ回路と順序回路) 1,2章で構築した回路のこと ※入力値の組み合わせだけで値が確定する!! 例:ORの場合は、必ず入力に1がある場合のみでしか1になりえない
特徴 単純な処理のため、たくさん処理出来る 欠点 状態(値)を保てない ※例:呼ぶ度に加算される回路など
5.
組み合わせ回路とは? (組み合わせ回路と順序回路) 1,2章で構築した回路のこと ※入力値の組み合わせだけで値が確定する!! 例:ORの場合は、必ず入力に1がある場合のみでしか1になりえない
特徴 単純な処理のため、たくさん処理出来る 欠点 状態(値)を保てない ※例:呼ぶ度に加算される回路など →時間が経過しても記憶出来る機能。記憶素子が必要!!
6.
記憶素子とは? (組み合わせ回路と順序回路) 時間経過してもデータを記録出来る回路のこと 上記を備えた論理回路を順序回路と呼ぶ
仕組み 同期,クロッキング,フィードバックループなど 複雑な技法を組み合わせて実現されている 順序回路 ~フリップフロップ(flip-flop)~ 複雑な記憶素子の機能を備えたプリミティブな順序回路。 本誌では、flip-flopを使用し、他の順序回路の構築を行う
7.
本日の予定 組み合わせ回路と順序回路(p41) 各種順序回路について(p42~p55) まとめ
8.
背景 (各種回路について) 記憶するという行為について 記憶という行為は、時間に依存する行為である。 つまり「前に記憶したものを今思い返す」ことである。 そのため、回路構築には、 時間の経過を表す方法を考察しなければならない。
9.
クロック (各種回路について) 継続的に行き来する信号を全ての順序回路に送信する。 例:tick→tock→tick→tock… tick→tockまでを周期(cycle)と呼ぶ
10.
フリップフロップ (各種回路について) 順序回路の最も基本(下位レベル)となる回路。 いくつか種類があるが、本誌ではD型フリップフロップ(DFF)のみ使用する。 DFFにより「時間に基づく振る舞い」が可能になる また、全ての順序回路は、DFFの組み合わせで構成されている。 t:現在のタイムユニット out:出力値 in:入力値 要約:1つ前の値を出力してるだけ out(t)=in(t-1) DFF(in=入力,out=出力); hdl式 式
11.
2値素子(Bit)/レジスタ(p43~44,p49~50) データの格納、呼び出しできる記憶装置。 ・読み込み(read) レジスタの値を読み込む。out(t)=out(t-1) ・書き込み(write) loadが1の場合は書き込み。out(t)=in(t-1) 次のクロック周期から値が変わる≒読み込みは常に1つ前の周期 ※前回の値を毎周期、書き込むことで記憶を実現している!! If load(t-1) then
out(t)=in(t-1) else out(t)=out(t-1) Register(in=入力,load=上書き有無,out=出力); hdl式 関数 (各種回路について) p43. p50図参照
12.
Bit/レジスタ の実装(p54) nand2tetries/03/aの「Bit.hdl」と「Register.hdl」の実装を行う。 ※RegisterはBitを配列にしただけ(一般的には16,32,64) このサイズをワードと言う (各種回路について) Register(in=入力[16],load=上書き有無,out=出力[16]); hdl式 Bit(in=入力,load=上書き有無,out=出力); hdl式 実装方法について ・p43図3-1参照 ・p50
13.
動作確認手順 nand2tetries/tools/HardwareSimulator.bat(macならsh)を実行 ・hdlファイルの読み込み ・testファイルの読み込み ・実行 (各種回路について)
14.
2値素子(Bit) (各種回路について) CHIP Bit
{ IN in, load; OUT out; PARTS: //loadが1の場合のみv1にinを設定 Mux(a=v2,b=in,sel=load,out=v1); DFF(in=v1,out=out,out=v2); }
15.
Register (各種回路について) CHIP Register
{ IN in[16], load; OUT out[16]; PARTS://Bitを16並べるだけ Bit(in=in[0],load=load,out=out[0]); Bit(in=in[1],load=load,out=out[1]); Bit(in=in[2],load=load,out=out[2]); // 省略 Bit(in=in[14],load=load,out=out[14]); Bit(in=in[15],load=load,out=out[15]); }
16.
メモリ (p44~p46,p51~52) ・任意の長さのワード(レジスタ)を記憶出来るもの。 ・レジスタをたくさん積み重ねることで、 RAM(Random Access
Memory)を構築できる。 ・RAMは物理的に存在する場所に関係なく、同じ時間で、 直接アクセスが可能となるようユニークなアドレスを割り振っている。 RAM8(in=入力,load=上書き有無,address=アドレス,out=出力); hdl式 (各種回路について) p45図参照
17.
メモリの実装(p51,52) nand2tetries/03/aの「RAM8.hdl」と「RAM64.hdl」の実装を行う。 ※RAM512以降は、RAM64と同じ為スキップ ・読み込み addressから対応するRAMを読み込む。out(t) = RAM[address(t)](t) ・書き込み loadを1に設定でaddressから対応するRAMに、 次のクロック周期で書き込む。
RAM[address(t-1)](t)=in(t-1) ※対象以外のaddressはload=0 ■ヒント 1章で作成した「DMux8Way、Mux8Way16」を使用 (各種回路について) out(t) = RAM[address(t)](t) If load(t-1) then RAM[address(t-1)](t)=in(t-1) 関数 p51,52参照
18.
RAM8 (各種回路について) CHIP RAM8
{ IN in[16], load, address[3]; OUT out[16]; PARTS: // アドレスに対応するLoad値取得 DMux8Way(in=load,sel=address,a=loadA,b=loadB,c=loadC,d=loadD,e=loadE,f=loadF,g=loadG,h=loadH); Register(in=in,load=loadA,out=outA); Register(in=in,load=loadB,out=outB); // 略 Register(in=in,load=loadG,out=outG); Register(in=in,load=loadH,out=outH); // アドレスのout値取得 Mux8Way16(a=outA,b=outB,c=outC,d=outD,e=outE,f=outF,g=outG,h=outH,sel=address,out=out); }
19.
RAM64 (各種回路について) CHIP RAM64
{ IN in[16], load, address[6]; OUT out[16]; PARTS://3bit単位で分けてRAM8を呼ぶ DMux8Way(in=load,sel=address[3..5],a=loadA,b=loadB,c=loadC,d=loadD,e=loadE,f=loadF,g=loadG,h=loadH); RAM8(in=in,load=loadA,address=address[0..2],out=outA); RAM8(in=in,load=loadB,address=address[0..2],out=outB); // 略 RAM8(in=in,load=loadG,address=address[0..2],out=outG); RAM8(in=in,load=loadH,address=address[0..2],out=outH); // アドレスのout値取得 Mux8Way16(a=outA,b=outB,c=outC,d=outD,e=outE,f=outF,g=outG,h=outH,sel=address[3..5],out=out); } RAM8*8のイメージ [000][000] RAM8A [001][000] RAM8B [010][000] RAM8C [011][000] RAM8D [100][000] RAM8E [101][000] RAM8F [110][000] RAM8G [111][000] RAM8H
20.
カウンタ (p46,p52~53) ・タイムユニットが進むごとに値が加算される。 out(t)=out(t-1)+c ※cには通常1が用いられる ・一般的なCPUにはプログラムカウンタが含まれ、 次に実行されるプログラム演算のアドレスとして解釈される。 ・加算以外に値の設定(load)とクリア(reset)が可能 PC(in=入力,lnc=加算有無,load=書込,reset=初期化,out=出力); hdl式 (各種回路について) p45図参照
21.
カウンタの実装(p52~54) nand2tetries/03/aの「PC.hdl」の実装を行う。 ・読み込み load,inc,resetが0の場合は、out(t)=out(t-1) ・加算 incが1の場合は、out(t)=out(t-1)+1 ※読み込んだ値+1 ・書き込み loadが1の場合は、out(t) =
in(t-1) ※前回の値に関わらず入力値を使う ・リセット resetが1の場合は、out(t)=0 ※前回の値,入力 に関わらず0を使う 上記の処理完了後に値を保存 (各種回路について) If reset (t-1) then out(t)=0 else if load(t-1) then out(t) = in(t-1) else if inc(t-1) then out(t) = out(t-1)+1 else out(t) = out(t-1) 関数 P54 図3-5参照
22.
PC (各種回路について) CHIP PC
{ IN in[16],load,inc,reset; OUT out[16]; PARTS: Inc16(in=r1,out=v1); Mux16(a=r1,b=v1,sel=inc,out=v2);// inc Mux16(a=v2,b=in,sel=load,out=v3);// load Mux16(a=v3,b[0..15]=false,sel=reset,out=v4); // reset Register(in=v4,load=true,out=out,out=r1); }
23.
本日の予定 組み合わせ回路と順序回路(p41) 各種順序回路について(p42~p55) まとめ
24.
まとめ(p46-p48,p56) 組み合わせ回路 組み合わせ回路とは、入力値のみで時間に関係なく出力値が直ちに決まる 回路 順序回路 順序回路とは、ひとつ以上のDFF回路が直接または間接的に組み込まれ、 出力値は、現在のクロック周期から次のクロック周期に移行した、 タイミング変化する。※同じく周期においては変化しない。
最後に 組み合わせ回路と順序回路を作成してきました。 これで、コンピュータ全体を構築するために必要な回路は全て 出揃ったことになります。 次回は、機械語です。少し、ソフトウェアよりになります。 (まとめ)
Download now