際際滷

際際滷Share a Scribd company logo
TR働畛NG 畉I H畛C BCH KHOA H N畛I
VI畛N O T畉O SAU 畉I H畛C
BI T畉P L畛N
KI畛M CH畛NG VI M畉CH
畛 ti:
KI畛M CH畛NG B畉NG PH働NG PHP M
PH畛NG B畛 X畛 L MIPS
Nh坦m th畛c hi畛n: L DON THI畛N
C XUN TO畉N
L TH畛 NH NG畛C
Gi畉ng vi棚n h動畛ng d畉n: TS. NGUY畛N 畛C MINH
H N畛i, 1-2015
1
M畛C L畛C
M畛C L畛C...........................................................................................................................................................................1
Ph畉n 1. T畛ng quan d嘆ng vi x畛 l箪 MIPS ................................................................................................................2
1.1 L畛ch s畛 ph叩t tri畛n................................................................................................................................................2
1.2 C叩c s畉n ph畉m 達 c坦 tr棚n th畛 tr動畛ng (C叩c c担ng tr狸nh bi b叩o nghi棚n c畛u 達 c坦 v c坦 li棚n quan) ......3
1.3 Nguy棚n t畉c thi畉t k畉 b畛 MIPS.............................................................................................................................4
1.4 M畛t s畛 l畛nh s畛 d畛ng trong MIPS .....................................................................................................................5
1.5 Ph但n lo畉i MIPS...................................................................................................................................................6
1.5.1. Thi畉t k畉 董n xung nh畛p ............................................................................................................................6
1.5.2. Thi畉t k畉 a xung nh畛p...............................................................................................................................6
1.5.3. Thi畉t k畉 pipeline........................................................................................................................................7
1.6 C叩c 畛ng d畛ng c畛a b畛 x畛 l箪 MIPS ..................................................................................................................10
Ph畉n 2. Ph但n t鱈ch v th畛c hi畛n ki畛m ch畛ng ......................................................................................................12
2.1 L畛a ch畛n ph動董ng ph叩p ki畛m ch畛ng ..............................................................................................................12
2.1.1. T畉m quan tr畛ng c畛a ki畛mch畛ng thi畉t k畉............................................................................................12
2.1.2. C叩c lo畉i ki畛mch畛ng trong quy tr狸nh thi畉t k畉 vi m畉ch ......................................................................12
2.2 M担 h狸nh ki畛m ch畛ng.........................................................................................................................................13
2.3 Th畛c hi畛n thi畉t k畉 MIPS Pipeline...................................................................................................................13
2.3.1. Y棚u c畉u thi畉t k畉 .......................................................................................................................................13
2.3.2. S董 畛 thi畉t k畉 ...........................................................................................................................................14
2.3.3. Thi畉t k畉 chi ti畉t t畛ng kh畛i......................................................................................................................15
2.4 Th畛c hi畛n c叩c ph辿p to叩n trong MIPS d湛ng C++........................................................................................18
Ph畉n 3. K畉t qu畉 t畛ng h畛p v m担 ph畛ng..............................................................................................................21
3.1 S董 畛 kh畛i c畛a s畉n ph畉m.................................................................................................................................21
3.2 Thu畉t to叩n, linh ki畛n, ki畉n tr炭c m畉ch............................................................................................................21
Ph畉n 4. 叩nh gi叩 k畉t qu畉 v h動畛ng ph叩t tri畛n .................................................................................................22
2
Ph畉n 1. T畛ng quan d嘆ng vi x畛 l箪 MIPS
1.1 L畛ch s畛 ph叩t tri畛n
MIPS vi畉t t畉t c畛a Microprocessor without Interlocked Pipeline Stages, l ki畉n tr炭c b畛 t畉p
l畛nh RISC ph叩t tri畛n b畛i MIPS Technologies [1].
B畛 x畛 l箪 MIPS 畉u ti棚n 動畛c nghi棚n c畛u vo nm 1981 b畛i m畛t nh坦m c叩c nh nghi棚n c畛u
thu畛c 畉i h畛c Stanford do John L. Hennessy 畛ng 畉u, v畛i m畛c ich c董 b畉n l nh畉m tng
畛t xu畉t hi畛u nng th担ng qua s畛 d畛ng m畛t 動畛ng 畛ng l畛nh (pipeline instructions),
m畛t c担ng ngh畛 達 動畛c bi畉t 畉n t畛 l但u nh動ng l畉i kh坦 ph叩t tri畛n.
Th担ng th動畛ng m畛t 動畛ng 畛ng s畉 m畛 r畛ng vi畛c ch畉y m畛t c但u l畛nh thnh vi b動畛c, b畉t 畉u
th畛c hi畛n b動畛c m畛t c畛a c但u l畛nh tr動畛c khi c但u l畛nh tr動畛c hon thnh. Trong khi 坦, thi畉t
k畉 truy畛n th畛ng y棚u c畉u ph畉i 畛i cho 畉n khi m畛t c但u l畛nh hon thnh m畛i 動畛c ch畉y c但u
l畛nh ti畉p theo.Thi畉t k畉 theo pipeline lm gi畉m 叩ng k畛 th畛i gian r畉nh r畛i c畛a CPU khi th畛c
hi畛n li棚n ti畉p c叩c c但u l畛nh.
Kh坦 khn trong qu叩 tr狸nh t狸m hi畛u thi畉t k畉: theo ph動董ng ph叩p 動畛ng 畛ng l畛nh n坦
y棚u c畉u m畛t kh坦a 畛ng b畛 (interlocks) 動畛c ci 畉t 畛 ch畉c ch畉n r畉ng c叩c c但u l畛nh
chi畉m nhi畛u chu k狸 畛ng h畛 畛 th畛c hi畛n s畉 d畛ng 動畛ng 畛ng l畉i 畛 n畉p nhi畛u d畛
li畛u h董n. Nh畛ng kh坦a 畛ng b畛 ny c畉n m畛t th畛i gian l畛n 畛 ci 畉t v 動畛c cho l
ro c畉n ch鱈nh trong vi畛c tng t畛c 畛 x畛 l鱈 trong t動董ng lai.
Y棚u c畉u 畉t ra trong qu叩 tr狸nh thi畉t k畉: y棚u c畉u t畉t c畉 c叩c c但u l畛nh ph畉i 動畛c hon
thnh trong 1 chu k狸 xung nh畛p nh畛 th畉 l畉o b畛 動畛c s畛 c畉n thi畉t c畛a kh坦a 畛ng b畛.
Thi畉t k畉 ny 達 lo畉i b畛 動畛c m畛t s畛 c但u l畛nh h畛u d畛ng, 叩ng k畛 nh畉t l c叩c l畛nh
nh但n, chia y棚u c畉u nhi畛u b動畛c nh動ng n坦 cho th畉y hi畛u su畉t t畛ng th畛 c畛a h畛 th畛ng
tng l棚n r探 r畛t v狸 c叩c vi x畛 l箪 c坦 th畛 ch畉y 畛 xung nh畛p l畛n h董n r畉t nhi畛u.
畉n nm 1984, Hennessy r畛i tr動畛ng 畉i h畛c Stanford 畛 thnh l畉p c担ng ty MIPS
Computer System.H畛 cho ra 畛i thi畉t k畉 畉u ti棚n l R2000 vo nm 1985, sau 坦 ph叩t
tri畛n R3000
vo nm 1998. Nh畛ng CPU 32 bit ny t畛n t畉i trong su畛t nh畛ng nm 1980, v 動畛c s畛
d畛ng ch畛 y畉u trong c叩c d嘆ng m叩y ch畛 SGI.
Nm 1991 MIPS cho ra 畛i b畛 vi x畛 l箪 64 bit 畉u ti棚n R4000.Tuy nhi棚n MIPS g畉p kh坦
khn trong ti ch鱈nh trong khi tung s畉n ph畉m ny ra th畛 tr動畛ng. Thi畉t k畉 ny r畉t quan
tr畛ng 畛i v畛i SGI-m畛t trong nh畛ng kh叩ch hng c畛a MIPS l炭c b畉y gi畛, v狸 th畉 SGI 達 mua
3
l畉i c担ng ty vo nm 1992 畛 b畉o v畛 thi畉t k畉 kh担ng b畛 m畉t i. T畛 坦 MIPS tr畛 thnh
m畛t c担ng ty con c畛a SGI v 動畛c bi畉t 畉n b畛i t棚n MIPS Technologies
1.2 C叩c s畉nph畉m 達 c坦 tr棚n th畛 tr動畛ng (C叩c c担ng tr狸nh bi b叩o nghi棚n
c畛u 達 c坦 v c坦 li棚n quan)
C叩c th畉 h畛 MIPS kh畛i 畉u l ki畉n tr炭c 32 bit sau m畛 r畛ng ra 64 bit. Nhi畛u s畛a 畛i
c畛a MIPS, bao g畛m MIPS I, MIPS II, MIPS III, MIPS IV, MIPS V, MIPS32 v
MIPS64. Phi棚n b畉n hi畛n t畉i l MIPS32 v MIPS64.
C滴ng c坦 m畛t vi tu畛 ch畛n m畛 r畛ng, baog畛m MIPS-3D (1 t畉p l畛nh 董n gi畉n c叩c c但u l畛nh
SIMD v畛 d畉u ch畉m 畛ng 畛 th畛c hi畛n c叩c t叩c v畛 v畛 畛 h畛a 3D), MIPS16e (kh畉 nng n辿n
vi l畛nh 畛 ti畉t ki畛m kh担ng gian b畛 nh畛) v MIPS MT (MultirTheading) ki畉n tr炭c
a lu畛ng m畛i 動畛c b畛 xung cho h畛 th畛ng.
C叩c d嘆ng vi x畛 l箪 MIPS th動董ng m畉i 達 動畛c s畉n xu畉t:
 R2000
Xu畉t hi畛n tr棚n th畛 tr動畛ng vo nm 1985, 動畛c b畛 sung th棚m nhi畛u c但u l畛nh m畛i, c坦
th畛 動畛c kh畛i t畉o 畛 ch畉 畛 big-endian hay little-endian, c坦 32 thanh ghi 32 bit,
nh動ng kh担ng c坦 thanh ghi m達 i畛u ki畛n. R2000 c滴ng h畛 tr畛 t畛i 4 b畛 x畛 l箪, m畛t
trong s畛 坦 畉m nhi畛m vi畛c x畛 l箪 c叩c ngo畉i l畛 v b畉y trong khi ba chi畉c c嘆n l畉i s畛
d畛ng cho c叩c m畛c 鱈ch kh叩c. i畛u ny 動畛c h畛 tr畛 trong R2010 FTU - b畛 x畛 l箪 c坦
32 thanh ghi 32 bit c坦 th畛 動畛c s畛 d畛ng nh動 l 16 thanh ghi 64 bit cho k畉t qu畉
ch鱈nh x叩c g畉p 担i.
 R3000
Theo sau R2000 vo nm 1998, n坦 b畛 sung th棚m 32kB Cache (v s畛m 動畛c tng
l棚n 64kB) cho c叩c l畛nh v d畛 li畛u, k竪m theo 坦 l c董 ch畉 cache coherency h畛 tr畛
cho nhi畛u b畛 x畛 l箪. R3000 c滴ng bao g畛m MMU - m畛t t鱈nh nng ph畛 bi畉n c畛a
CPUs k畛 nguy棚n ny. R3000 tr畛 thnh thi畉t k畉 MIPS 畉u ti棚n thnh c担ng trong
l挑nh v畛c th動董ng m畉i. R3000A 動畛c s畛 d畛ng c畛c k畛 thnh c担ng trong c叩c m叩y
Sony PlayStation, ch畉y v畛i t畛c 畛 40 MHz, truy畛n th担ng tin 畛 t畛c 畛 32 c但u l畛nh
trong 1 gi但y. R3000 c滴ng i k竪m v畛i R3100 FTU trong c湛ng m畛t chip 董n. C叩c
h達ng kh叩c c滴ng tham gia s畉n xu畉t nh動 Pacemips v畛i R3400, IDT v畛i R3500.
R3900 c畛a Toshiba l ch鱈p 畉u ti棚n d畉ng SoC (System on a Chip) 動畛c
s畛 d畛ng trong c叩c m叩y t鱈nh c叩 nh但n c畉m tay s畛 d畛ng h畛 i畛u hnh Windows CE.
 R4000
4
動畛c 動a ra vo nm 1991, m畛 r畛ng t畉p l畛nh MIPS 畛 h畛 tr畛 畉y 畛 ki畉n tr炭c
64 bit, chuy畛n FTU vo main 畛 t畉o ra m畛t h畛 th畛ng chip 董n l畉 (Single-chip
system), x畛 l箪 v畛i t畛c 畛 l棚n t畛i 100Mhz, tuy nhi棚n 畛 畉t 動畛c t畛c 畛 ny b畛
nh畛 畛m ph畉i b畛 gi畉m xu畛ng c嘆n 8kB v c畉n 3 chu k畛 畛 truy c畉p. T畉n s畛 x畛 l箪
cao 畉t 動畛c nh畛 vi畛cl動u tr畛 th担ng qua c担ng ngh畛 動畛ng 畛ng s但u (deep pipelining
 hay c嘆n g畛i l super-pipelining t畉i th畛i i畛m 坦). 1993 R4400 xu畉t hi畛n v畛i 16kB
cache, b畛 x畛 l箪 64 bit l畛n v 1 b畛 i畛u khi畛n cache m畛 r畛ng l棚n t畛i 1MB (cahe
level 2). Ngoi ra c嘆n c叩c h畛 R4200, R4300, VR4300, R4300i, R4600 Orion,
R4700 Orion, R5650, R5000, R5000FTU, RM7000, RM9000...C叩c b畛 x畛 l箪
ny 動畛c s畛 d畛ng r畉t r畛ng r達i : C叩c m叩y Nitendo 64, Cisco routers, WebTV set-top
Box (Hi畛n nay l Micrisoft TV)
 R8000 (1994)
L thi畉t k畉 MIPS si棚u v担 h動畛ng (superscala) 畉u ti棚n, cho ph辿p x畛 l箪 2 ALU v 2
ph辿p t鱈nh nh畛 m畛i chu k畛. Thi畉t k畉 ny m畛 r畛ng t畛i 6 chip, h畛 tr畛 4MB cache m畛
r畛ng.
 R10000 (1995)
L m畛t thi畉t k畉 chip 董n l畉, ch畉y 畛 t畛c 畛 cao h董n R8000, c坦 32kB cache ch鱈nh cho
c叩c c但u l畛nh v d畛 li畛u. C叩c thi畉t k畉 ti畉p theo c畛a R1000 l R12000 v R14000 v畛i
h畛 tr畛 DDR SRAM trong cache v t畛c 畛 l棚n t畛i 200 MHz. Ngoi ra c嘆n c叩c thi畉t
k畉 R16000, R16000A, R6000.
1.3 Nguy棚n t畉c thi畉t k畉 b畛 MIPS
 T鱈nh 董n gi畉n quan tr畛ng h董n t鱈nh quy t畉c (Simplicity favors regularity)
 Ch畛 th畛 k鱈ch th動畛c c畛 畛nh(32 bit)
 t 畛nh d畉ng ch畛 th畛 (3 lo畉i 畛nh d畉ng)
 M達 l畛nh 畛 v畛 tr鱈 c畛 畛nh(6 bit 畉u)
 Nh畛 h董n th狸 nhanh h董n
 S畛 ch畛 th畛 gi畛i h畉n
 S畛 thanh ghi gi畛i h畉n
 S畛 ch畉 畛 畛a ch畛 gi畛i h畉n
 Tng t畛c c叩c tr動畛ng h畛p th担ng d畛ng
 C叩c to叩n h畉ng s畛 h畛c l畉y t畛 thanh ghi (m叩y t鱈nh d畛a tr棚n c董 ch畉 load-store)
5
 C叩c ch畛 th畛 c坦 th畛 ch畛a to叩n h畉ng tr畛c ti畉p
 Thi畉t k畉 t畛t 嘆i h畛i s畛 th畛a hi畛p
 3 lo畉i 畛nh d畉ng ch畛 th畛 [1]:
+ R-ch畛 th畛 thanh ghi: 2 to叩n h畉ng ngu畛n thanh ghi, 1 to叩n h畉ng
鱈ch thanh ghi.
+ I-ch畛 th畛 tr畛c ti畉p: 1 to叩n h畉ng ngu畛n thanh ghi, 1 to叩n h畉ng
ngu畛n tr畛c ti畉p, 1 to叩n h畉ng 鱈ch thanh ghi.
+ J-ch畛 th畛 nh畉y: 1 to叩n h畉ng ngu畛n tr畛c ti畉p.
H狸nh 3.1 Ba 畛nh d畉ng ch畛 th畛 l畛nh
1.4 M畛t s畛 l畛nh s畛 d畛ng trong MIPS
Sau 但y l c叩c l畛nh 動畛c s畛 d畛ng trong MIPS 32 bits[2]:
6
B畉ng 3.1 L畛nh c畛a MIPS 32 bits
1.5 Ph但n lo畉i MIPS
1.5.1. Thi畉t k畉 董n xung nh畛p
L thi畉t k畉 m c叩c pha th畛c hi畛n: n畉p, gi畉i m達 and th畛c hi畛n, ghi c畛a m畛i l畛nh trong m畛t
chu k畛 畛ng h畛 [3]:
H狸nh 3.2 Thi畉t k畉 董n xung nh畛p
 働u i畛m: 董n gi畉n v d畛 hi畛u.
 Nh動畛c i畛m:
 S畛 d畛ng chu k畛 畛ng h畛 kh担ng hi畛u qu畉  chu k畛 畛ng h畛 動畛c 畉t theo l畛nh
ch畉m nh畉t.
C叩c l畛nh ph畛c t畉p nh動 l畛nh nh但n d畉u ph畉y 畛ng: T畛n di畛n t鱈ch thi畉t k畉 v狸 c畉n nh但n 担i
m畛t s畛 kh畛i ch畛c nng (VD: b畛 c畛ng) v狸 ch炭ng kh担ng th畛 動畛c chia s畉 trong c湛ng 1 chu
k畛 畛ng h畛.
1.5.2. Thi畉t k畉 a xung nh畛p
L thi畉t k畉 m chia l畛nh thnh c叩c pha th畛c hi畛n: IF, ID, EX, MEM, WB. M畛i pha th畛c
hi畛n trong 1 chu k畛 xung nh畛p [4].
7
H狸nh 3.3 Thi畉t k畉 a xung nh畛p
 働u i畛m:
 Th畛i gian th畛c hi畛n (= s畛 pha) c畛a m畛i l畛nh 動畛c i畛u ch畛nh t湛y thu畛c 畛 ph畛c t畉p
c畛a l畛nh.
 C叩c kh畛i ch畛c nng 動畛c chia s畉 gi畛a c叩c pha kh叩c nhau c畛a l畛nh do m畛t kh畛i
ch畛c nng c畛 th畛 kh担ng c畉n trong ton b畛 c叩c pha th畛c hi畛n c畛a l畛nh.
 Nh動畛c i畛m:
 C叩c l畛nh th畛c hi畛n li棚n ti畉p nhau.
 L畛nh tr動畛c 動畛c th畛c hi畛n xong m畛i 畉n l畛nh sau v狸 v畉y xu畉t hi畛n kho畉ng th畛i
gian r畛i gi畛a c叩c kh但u.
1.5.3. Thi畉t k畉 pipeline
Kh叩c v畛i thi畉t k畉 董n xung nh畛p khi c叩c l畛nh 畛u 動畛c th畛c hi畛n xong trong m畛t
chu k狸 m叩y, thi畉t k畉 pipeline chia m畛t c但u l畛nh ra thnh 5 b動畛c (steps) [5]:
8
H狸nh 3.4 C叩c b動畛c th畛c hi畛n l畛nh
 N畉p l畛nh v c畉p nh畉p gi叩 tr畛 PC (Instruction Fetch  IF)
 畛c thanh ghi v gi畉i m達 l畛nh ( Intruction Decode  ID)
 Th畛c hi畛n l畛nhR, t鱈nh 畛a ch畛 b畛 nh畛(Execution  EX)
 畛c ho畉c ghi d畛 li畛u tr棚n b畛 nh畛 d畛 li畛u (Memory access MEM)
 Ghi k畉t qu畉 vo t畛p thanh ghi (Write back  WB
C但u l畛nh sau kh担ng c畉n 畛i c但u l畛nh tr動畛c hon t畉t m畛i b畉t 畉u th畛c hi畛n m m畛i step s畉
動畛c th畛c hi畛n li棚n ti畉p, do 坦 c畉i thi畛n 叩ng k畛 v畛 t畛c 畛 th畛c hi畛n c叩c ch動董ng tr狸nh:
H狸nh 3.5 Chu tr狸nh th畛c hi畛n l畛nh
D動畛i 但y l s董 畛 ki畉n tr炭c MIPS khi th畛c hi畛n theo pipeline:
H狸nh 3.6 S董 畛 ki畉n tr炭c MIPS pipeline
C叩c b動畛c th畛c hi畛n m畛t c但u l畛nh:
9
 畛c l畛nh t畛 b畛 nh畛 ( Instruction Fetch  IF):
 S畛 d畛ng 畛a ch畛 l動u trong thanh ghi PC 畛 gi畉i m達 ra m達 m叩y c畛a c但u l畛nh ti畉p
theo v l動u vo thanh ghi trung gian IF/ID.
 Gi叩 tr畛 PC 動畛c c畛ng th棚m 4 v l動u vo thanh ghi trung gian IF/ID.
 Gi畉i m達 l畛nh v 畛c c叩c thanh ghi (Intruction Decode  ID):
 S畛 d畛ng m達 m叩y c畛a c但u l畛nh l動u trong thanh ghi IF/ID lm 畉u vo cho kh畛i
Regfile.
 Kh畛i Control s畛 d畛ng ph畉n opcode c畛a m達 m叩y c畛a c但u l畛nh 畛 gi畉i m達 thnh c叩c
t鱈n hi畛u i畛u khi畛n, ngoi t鱈n hi畛u SignEx 動畛c s畛 d畛ng cho kh畛i m畛 r畛ng, c叩c t鱈n
hi畛u kh叩c 動畛c l動u vo thanh ghi trung gian ID/EX.
 畛c c叩c thanh ghi Rs, Rt t畛 b畛 thanh ghi v l動u vo thanh ghi trung gian
ID/EX Kh畛i m畛 r畛ng s畛 d畛ng t鱈n hi畛u SignEx t畛 kh畛i Control 畛 m畛 r畛ng d畉u hay
m畛 r畛ng zero c畛a 16 bit th畉p c畛a m達 m叩y thnh 32 bit v l動u vo thanh ghi ID/EX.
 畛a ch畛 c叩c thanh ghi Rs, Rt, Rd 動畛c l動u vo thanh ghi ID/EX.
 T鱈nh to叩n k畉t qu畉 c畛a c但u l畛nh ho畉c 畛a ch畛 (Execution  EX):
 Kh畛i ALU s畛 d畛ng c叩c 畉u vo 達 動畛c l動u trong thanh ghi ID/EX 畛 t鱈nh to叩n
v l動u k畉t qu畉 vo thanh ghi trung gian EX/MEM.
 M畛t b畛 mux 動畛c d湛ng 畛 l畛a ch畛n thanh ghi 鱈ch t畛 2 thanh ghi Rt, Rd v l動u 畛a
ch畛 vo thanh ghi EX/MEM.
 畛a ch畛 m畛i c畛a PC sau c但u l畛nh BNE c滴ng 動畛c t鱈nh to叩n trong kh畛i ny.
 M畛t s畛 b畛 mux 動畛c d湛ng 畛 l畛a ch畛n gi叩 tr畛 m畛i cho PC t畛 c叩c c但u l畛nh r畉
nh叩nh BNE, J, JR.
 C叩c t鱈n hi畛u i畛u khi畛n MemWrite, MemtoReg v RegWrite 動畛c l動u ti畉p vo
thanh ghi EX/MEM.
 畛c ho畉c ghi d畛 li畛u tr棚n b畛 nh畛 d畛 li畛u ( Memory access  MEM):
 S畛 d畛ng k畉t qu畉 t鱈nh to叩n t畛 kh畛i ALU v t鱈n hi畛u i畛u khi畛n MemWrite t畛 thanh
ghi EX/MEM 畛 th畛c hi畛n 畛c ho畉c ghi vo b畛 nh畛 d畛 li畛u. K畉t qu畉 畛c ghi vo
thanh ghi trung gian MEM/WB.
 C叩c gi叩 tr畛 畉u ra c畛a ALU, 畛a ch畛 thanh ghi 鱈ch c湛ng v畛i 2 t鱈n hi畛u i畛u khi畛n
MemtoReg v RegWrite 動畛c ghi l畉i vo thanh ghi MEM/WB
 Ghi k畉t qu畉 vo thanh ghi ( Write back  WB):
 S畛 d畛ng t鱈n hi畛u MemtoReg t畛 thanh ghi MEM/WB 畛 l畛a ch畛n d畛 li畛u c畉n ghi
vo thanh ghi.
 S畛 d畛ng 畛a ch畛 thanh ghi 鱈ch v t鱈n hi畛u cho ph辿p ghi RegWrite 畛 th畛c hi畛n
c担ng vi畛c ghi d畛 li畛u vo b畛 thanh ghi.
10
1.6 C叩c 畛ng d畛ng c畛a b畛 x畛 l箪 MIPS
Ki畉n tr炭c MIPS 動畛c s畛 d畛ng r畛ng r達i trong c叩c 畛ng d畛ng c担ng nghi畛p nh動 DVD player,
Netwoking, camera s畛,
 DVD player
(Pioneer DVR-
57H)
 Networking
3COM  3102 Business IP Phone
3COM  3106 Cordless Phone
11
Canon EOS 450D
Sony playstation PSX (CPU Type: LSI/MIPS R3000A, Architecture: 32 bit,
Clockspeed 33,8 MHz)
Sony Playstation Portable ( CPU 333MHz MIPS R4000) [2]
12
Ph畉n 2. Ph但n t鱈ch v th畛c hi畛n ki畛m ch畛ng
Ph畉n ny ph但n t鱈ch v ph但n chia c叩c ch畛c nng c畛a s畉n ph畉m t畛 坦 l畉p ra k畉 ho畉ch thi畉t
k畉, ph叩t tri畛n s畉n ph畉m.
2.1 L畛a ch畛n ph動董ng ph叩p ki畛m ch畛ng
2.1.1. T畉m quan tr畛ng c畛a ki畛m ch畛ng thi畉t k畉
Ki畛m ch畛ng vi m畉ch l qu叩 tr狸nh t狸m ki畉m ph叩t hi畛n l畛i trong thi畉t k畉 vi m畉ch.
L畛i trong thi畉t k畉 vi m畉ch l s畛 sai kh叩c trong ho畉t 畛ng c畛a thi畉t k畉 v畛i y棚u c畉u k畛 thu畉t
畉t ra. Nh畛ng l畛i ny c坦 th畛 x畉y ra trong qu叩 tr狸nh thi畉t k畉, qu叩 tr狸nh s畉n xu畉t vi m畉ch ho畉c
qu叩 tr狸nh s畛 d畛ng vi m畉ch trong h畛 th畛ng. D湛 l l畛i x畉y ra trong qu叩 tr狸nh no th狸 chi ph鱈
畛 kh畉c ph畛c c滴ng th動畛ng kh叩 l畛n do 坦 c畉n ph叩t hi畛n s畛m l畛i 畛 tr叩nh t畛n nhi畛u th畛i
gian, c担ng s畛c v ti畛n b畉n 畛 s畛a l畛i.
2.1.2. C叩c lo畉i ki畛m ch畛ng trong quy tr狸nh thi畉t k畉 vi m畉ch
M畛t s畛 lo畉i ki畛m ch畛ng th動畛ng d湛ng trong quy tr狸nh thi畉t k畉 vi m畉ch l ki畛m ch畛ng b畉ng
h狸nh v畉, ki畛m ch畛ng d湛ng m担 ph畛ng v ki畛m ch畛ng h狸nh th畛c.
Ki畛m ch畛ng m担 ph畛ng Ki畛m ch畛ng h狸nh th畛c
Ki畛m ch畛ng d畛a tr棚n xung nh畛p. C叩c gi叩 tr畛
畉u vo 動畛c 動a vo b畉n thi畉t k畉 h畛 th畛ng
v cho ph辿p m叩y t鱈nh th畛c hi畛n vi畛c t鱈nh
to叩n 畉u ra
Ki畛m ch畛ng d湛ng c叩c c担ng th畛c, m担 h狸nh
to叩n h畛c 畛 m担 h狸nh h畛 th畛ng v ch畛ng
minh t鱈nh ho畉t 畛ng 炭ng c畛a m畉ch.
働u i畛m:
 Tr畛c quan v畛i ng動畛i s畛 d畛ng
 Kh担ng qu叩 kh坦 畛 thi畉t l畉p h畛 th畛ng
m担 ph畛ng vi m畉ch
働u i畛m:
 Kh畉 nng t狸m 動畛c l畛i cao h董n
 Th畛i gian ki畛m ch畛ng c坦 th畛 nh畛
h董n
 畛 bao ph畛 l畛n h董n
Nh動畛c i畛m:
 畛 bao ph畛 kh担ng cao
 T畛n ti nguy棚n t鱈nh to叩n, m畉t nhi畛u
th畛i gian 畛 m担 ph畛ng h畉t c叩c
tr動畛ng h畛p ki畛m ch畛ng cho vi m畉ch.
T畛i 動u m畉ch 畉nh h動畛ng l畛n 畉n t畛c
畛 m担 ph畛ng
Nh動畛c i畛m:
 Kh坦 h狸nh dung v thi畉t l畉p m担 h狸nh
to叩n h畛c cho m畉ch
 Quy tr狸nh thi畉t l畉p m担 h狸nh to叩n h畛c
m畉t nhi畛u th畛i gian
13
Th担ng qua vi畛c ph但n t鱈ch c叩c ph動董ng ph叩p ki畛m ch畛ng, 畛ng th畛i d畛a vo gi畛i h畉n th畛i
gian hon thnh 畛 ti c滴ng nh動 m畛c 畛 ph畛c t畉p c畛a ki畉n tr炭c MIPS, nh坦m s畉 ti畉n hnh
th畛c hi畛n ki畛m ch畛ng b畛 MIPS pipeline d湛ng ph動董ng ph叩p m担 ph畛ng.
2.2 M担 h狸nh ki畛m ch畛ng
Nguy棚n t畉c c董 b畉n c畛a ki畛m ch畛ng l t畉o s畛 d動 th畛a n棚n nh坦m quy畉t 畛nh t畉o m畛t d畉ng
tri畛n khai kh叩c c畛a thi畉t k畉, sau 坦 ti畉n hnh so s叩nh hai d畉ng tri畛n khai.
Ph動董ng h動畛ng tri畛n khai:
 X但y d畛ng m担 h狸nh thi畉t k畉 MIPS Pipeline 畛 m畛c RTL d湛ng ng担n ng畛 Verilog v
c担ng c畛 Quatus c畛a Altera.
 X但y d畛ng m担 h狸nh t鱈nh gi叩 tr畛 炭ng c畛a c叩c ph辿p to叩n d湛ng ng担n ng畛 C/C++ v s畛
d畛ng visual express 2010.
 M担 ph畛ng hai m担 h狸nh 畛ng th畛i v so s叩nh k畉t qu畉.
2.3 Th畛c hi畛n thi畉t k畉 MIPS Pipeline
2.3.1. Y棚u c畉u thi畉t k畉
 Y棚u c畉u ch畛c nng
 B畛 x畛 l箪 MIPS 32 bit c坦 kh畉 nng th畛c hi畛n c叩c l畛nh c董 b畉n nh動 c叩c ph辿p
to叩n s畛 h畛c (c畛ng, tr畛, nh但n ), truy c畉p b畛 nh畛 v畛i hai ch畛 th畛 (lw, sw),
l動u tr畛, 畛c v ghi d畛 li畛u 
 Th畛c hi畛n b畉ng ng担n ng畛 m担 t畉 ph畉n c畛ng VerilogHDL.
 Gi畉i quy畉t 動畛c c叩c xung 畛t c董 b畉n trong MIPS Pipeline.
 Y棚u c畉u phi ch畛c nng
14
B畛 x畛 l箪 MIPS sau khi 動畛c thi畉t k畉 kh担ng ch畛 畉t nh畛ng ch畛c nng k挑 thu畉t m
c畉n 畉t y棚u c畉u phi ch畛c nng nh動 sau:
 D畛 s畛 d畛ng trong vi畛c m担 ph畛ng
 叩p 畛ng 動畛c c叩c c但u l畛nh c董 b畉n
 D畛 dng n但ng c畉p v s畛a l畛i khi c畉n thi畉t.
 Gi叩 thnh h畛p l箪
 MIPS ho畉t 畛ng 畛n 畛nh v c坦 畛 tin c畉y cao
 Nng l動畛ng ti棚u th畛 th畉p
Tuy nhi棚n trong khu担n kh畛 c畛a bi t畉p l畛n ny, ch炭ng em ch畛 d畛ng l畉i 畛 vi畛c
nghi棚n c畛u v m担 t畉 ki畉n tr炭c c畛a b畛 x畛 l箪 MIPS, kh担ng 畉t v畉n 畛 gi叩 thnh
lm m畛t ti棚u ch鱈 叩nh gi叩.
2.3.2. S董 畛 thi畉t k畉
C叩c th担ng s畛 畉u vo v 畉u ra c畛a thi畉t k畉:
C畛ng S畛 bit H動畛ng M担 t畉
IReady 1 Input T鱈n hi畛u b叩o b畛 nh畛 l畛nh s畉n
sng g畛i d畛 li畛u
IData 32 Input M達 l畛nh 動畛c l畉y t畛 b畛 nh畛 l畛nh
DataIn 32 Input D畛 li畛u 動畛c 畛c ra t畛 b畛 nh畛 d畛
li畛u
15
DReady 1 Input T鱈n hi畛u i畛u khi畛n vi畛c 畛c d畛
li畛u vo t畛 b畛 nh畛 d畛 li畛u
IAddr 30 Output 畛a ch畛 l畛nh trong b畛 nh畛 l畛nh
c畉n th畛c thi
IRead 1 Output T鱈n hi畛u i畛u khi畛n vi畛c 畛c 畛a
ch畛 ch畛a l畛nh c畉n th畛c thi trong
b畛 nh畛 l畛nh
DRead 1 Output T鱈n hi畛u i畛u khi畛n vi畛c 畛c t畛
b畛 nh畛 d畛 li畛u
DAddr 30 Output 畛a ch畛 trong b畛 nh畛 d畛 li畛u c畉n
畛c/ghi d畛 li畛u
DWrite 4 Output T鱈n hi畛u i畛u khi畛n vi畛c ghi vo
b畛 nh畛 d畛 li畛u
DataOut 32 Output D畛 li畛u 動畛c ghi vo b畛 nh畛 d畛
li畛u
2.3.3. Thi畉t k畉 chi ti畉t t畛ng kh畛i
Trong ph畉n ny nh坦m s畉 t畉p trung tr狸nh by m畛t s畛 kh畛i quan tr畛ng trong ki畉n tr炭c MIPS
Pipeline
Kh畛i Control Unit :
L kh畛i sinh ra c叩c t鱈n hi畛u i畛u khi畛n cho con Mips khi c坦 l畛nh c畛a b棚n ngoi 動a
vo d動畛i d畉ng m達 l畛nh.
畉u vo : Op[5:0] , Funct[ 5:0] l畉y t畛 m達 l畛nh.
Zero l畉y t畛 畉u ra c畛a kh畛i ALU
畉u ra : C叩c t鱈n hi畛u 畛 i畛u khi畛n c叩c kh畛i kh叩c l :
+) T鱈n hi畛u 動a d畛 li畛u t畛 b畛 nh畛 ra thanh ghi Memtoreg
+) T鱈n hi畛u Regwrite, Memwrite
+) T鱈n hi畛u ch畛n ALUSrc, PCSrc, RegDst
+) T鱈n hi畛u ALUControl
16
Kh畛i Register File :
L kh畛i thanh ghi c畛a con Mips. 畉u vo s畉 l 畛a ch畛 c畛a c叩c thanh ghi 動a vo t畛
m達 l畛nh v d畛 li畛u quay v畛 thanh ghi t畛 giai o畉n WB. 畉u ra s畉 l d畛 li畛u n畉m
trong thanh ghi m 畛a ch畛 l畛nh tr畛 t畛i.
畉u vo : +) RegwriteW : t鱈n hi畛u cho ph辿p 畛c m達 l畛nh t動董ng 畛ng vo
thanh ghi qua WB
+) M達 l畛nh t動董ng 畛ng c畛a Rs, Rt : InstrD[25:21], InstrD[20:16]
+) D畛 li畛u tr畉 v畛 WriteRegW[4:0] v t鱈n hi畛u k畉t qu畉 ResultW
畉u ra : D畛 li畛u 動畛c 畛c trong 2 thanh ghi m m達 l畛nh truy c畉p t畛i 畛a ch畛 c畛a n坦
Readdata1, Readdata2
Kh畛i ALU :
L kh畛i ph畛c v畛 nhi畛m v畛 t鱈nh to叩n.
畉u vo : +) T鱈n hi畛u ch畛n lo畉i t鱈nh to叩n : c畛ng, tr畛, nh但n, chia : ALUControl 動畛c
sinh ra t畛 ControlUnit
+) D畛 li畛u 動畛c 畛c t畛 2 thanh ghi trong t畉p thanh ghi Register file
Readdata1, Readdata2 32 bit
畉u ra: +) D畛 li畛u ra sau khi 動畛c t鱈nh to叩n ALUOut 32 bit.
+) T鱈n hi畛u Zero s畛 d畛ng trong l畛nh r畉 nh叩nh beq, bne.
17
Kh畛i SignExt :
Kh畛i 動畛c s畛 d畛ng v畛i nhi畛m v畛 chuy畛n 畛i d畛 li畛u d畛ch t畛 16 bit trong m達 l畛nh
thnh 32 bit 畛 th畛c hi畛n cho nhi畛m v畛 t鱈nh to叩n.
畉u vo : D畛 li畛u d畛ch 動畛c l畉y trong 16 bit cu畛i c畛a m達 l畛nh Instr[15:0]
畉u ra : D畛 li畛u dich 動畛c chuy畛n thnh 32 bit b畉ng c叩ch l畉y 16 bit 畉u b畉ng bit th畛 16
v 16 bit cu畛i l Instr[15:0]. y[31:0] = [16(Instr[15]), Instr[15:0]].
T畛 c叩c kh畛i tr棚n v m畛t s畛 kh畛i logic c董 b畉n kh叩c ta x但y d畛ng 動畛c b畛 MIPS a
xung nh畛p nh動 h狸nh v畉:
畛 a xung nh畛p ta chia l畛nh thnh 5 giai o畉n IF, ID, EX, MEM, WB. M畛i giai o畉n 動畛c
th畛c hi畛n trong m畛t chu k畛. Trong s董 畛 g畛m c坦 c叩c kh畛i ch鱈nh nh動 l kh畛i Control Unit,
kh畛i Register File, kh畛i ALU, kh畛i SignExt.
T畛 MIPS a xung nh畛p ch炭ng ta ti畉n hnh pipeline b畛 vi x畛 l箪 b畉ng c叩ch th棚m
vo c叩c thanh ghi tr畉ng th叩i IFID, IDEX, EXMEM, MEMWB, PC. C叩c thanh ghi s畉 th畛c
hi畛n nhi畛m v畛 chuy畛n ti畉p d畛 li畛u gi畛a c叩c kh但u
18
2.4 Th畛c hi畛n c叩c ph辿p to叩n trong MIPS d湛ng C++
Trong ph畉n ny nh坦m s畛 d畛ng c叩c ph辿p to叩n c坦 trong th動 vi畛n C 畛 t鱈nh to叩n. C叩c
ph辿p to叩n (Instruction) 動畛c s畛 d畛ng l : c畛ng, tr畛, nh但n, chia 動畛c m達 h坦a t動董ng 畛ng v畛i
c叩c s畛 t畛 0 畉n 3 v 動畛c sinh ng畉u nhi棚n trong file Instruction.txt, c叩c to叩n h畉ng(Data)
c滴ng 動畛c sinh ra ng畉u nhi棚n trong file data.txt. C叩c gi叩 tr畛 trong hai file ny c滴ng l 畉u
vo cho qu叩 tr狸nh m担 ph畛ng m畉ch b畉ng techbench. Sau khi t鱈nh to叩n b畉ng c叩c ph辿p to叩n c坦
trong th動 vi畛n C, k畉t qu畉 畉u ra s畉 動畛c ghi vo file output.txt.
H狸nh b棚n d動畛i s畉 minh h畛a cho qu叩 tr狸nh t鱈nh to叩n s畛 d畛ng th動 vi畛n C:
K畉t qu畉 so s叩nh gi叩 tr畛 畉u ra c畛a hai ki畛u t鱈nh to叩n s畉 ki畛m ch畛ng 畛 ch鱈nh x叩c c畛a vi畛c
thi畉t k畉t m畉nh (verilog). T畛 坦 ta c坦 th畛 ph叩t hi畛n c叩c l畛i (n畉u c坦) trong qu叩 tr狸nh thi畉t k畉.
19
Code C++:
#include<iostream>
#include<stdio.h>
#include<conio.h>
#include <cstdlib>
#include<ctime>
using namespace std;
long add (long a, long b);
long sub (long a, long b);
long mul (long a, long b);
long divi (long a, long b);
int main()
{
int A[100],B[100],KQ[100];
long i,j ,a,b ;
int test_case;
srand(time(0));
//L畉y gi叩 tr畛 to叩n h畉ng ng畉u nhi棚n r畛i 動a vo file Toanhang.txt
freopen("instruction.txt","w",stdout);
for (int n=1;n<=50;n++)
{
int x=rand()%4;
cout<<x<<" ";
}
fclose(stdout);
//L畉y hai to叩n t畛 ng畉u nhi棚n r畛i 動a vo file 畉u vo input.txt
freopen("data.txt","w",stdout);
for (int m=1;m<=50;m++)
{
//srand(time(0));
a = rand();
b = rand();
cout<<a<<" "<<b<<endl ;
}
fclose(stdout);
//Cho to叩n h畉ng vo m畉ng A
freopen("data.txt","r",stdin);
for ( i=1;i<=50;i++)
{
cin>>A[i*2-1]>>A[i*2];
}
fclose(stdin);
//Cho to叩n t畛 vo m畉g B
freopen("instruction.txt","r",stdin);
for ( j=1;j<=50;j++)
cin>>B[j];
fclose(stdin);
for (test_case=1;test_case<=50;test_case++){
switch (B[test_case])
{
20
case 0: {
KQ[test_case]=add(A[test_case*2-1],A[test_case*2]);
break;
}
case 1: {
KQ[test_case]=sub(A[test_case*2-1],A[test_case*2]);
break;
}
case 2:{
KQ[test_case]=mul(A[test_case*2-1],A[test_case*2]);
break;
}
case 3:{
KQ[test_case]=divi(A[test_case*2-1],A[test_case*2]);
break;
}
default: cout<< "ma lenh sai";
}
}
// ghi k畉t qu畉 vo file 畉u ra output.txt
freopen("output.txt","w",stdout);
for (int k=1;k<=50;k++)
cout<<KQ[k]<<" ";
fclose(stdout);
}
long add(long a,long b)
{
return a+b;
}
long sub (long a,long b)
{
return a-b;
}
long mul(long a,long b)
{
return a*b;
}
long divi ( long a, long b)
{
return a/b;
}
21
Ph畉n 3. K畉t qu畉 t畛ng h畛p v m担 ph畛ng
Ph畉n ny tr狸nh by v畛 c叩c ph動董ng 叩n k畛 thu畉t 動畛c s畛 d畛ng 畛 thi畉t k畉 s畉n ph畉m.
C坦 th畛 l l畛a ch畛n c叩c linh ki畛n ph畉n c畛ng cho m畉ch.
C坦 th畛 l l畛a ch畛n thu畉t to叩n th畛c hi畛n m畛t ch畛c nng m畉ch.
C坦 th畛 l l畛a ch畛n ki畉n tr炭c m畉ch
3.1 S董 畛 kh畛i c畛a s畉n ph畉m
Ph畉n ny lm r探 c叩c kh畛i th畛c hi畛n ch畛c nng trong m畉ch, k畉t n畛i v giao ti畉p gi畛a c叩c
kh畛i. Ph畉n ny ph畉i lm r探 動畛c t鱈n hi畛u vo v ra kh畛i t畛ng kh畛i.
3.2 Thu畉t to叩n, linh ki畛n, ki畉n tr炭c m畉ch
Ph畉n ny lm r探 vi畛c l畛a ch畛n thu畉t to叩n hay linh ki畛n ph畉n c畛ng hay ki畉n tr炭c m畉ch 畛
th畛c hi畛n c叩c kh畛i ch畛c nng
M畛i kh畛i ch畛c nng n棚n n棚u ra 鱈t nh畉t 2 ph動董ng 叩n th畛c hi畛n v l畛a ch畛n d畛a tr棚n c叩c ti棚u
ch鱈 k畛 thu畉t 畛nh l動畛ng.
22
Ph畉n 4. 叩nh gi叩 k畉t qu畉 v h動畛ng ph叩t tri畛n
Ph畉n ny m担 t畉 vi畛c thi畉t k畉 c畛 th畛 t畛ng kh畛i ch畛c nng.
N畉u l m畉ch ph畉n c畛ng th狸 tr狸nh by s董 畛 nguy棚n l箪, m担 ph畛ng s董 畛 nguy棚n l箪 c畛a
m畉ch.
N畉u l ph畉n m畛m th狸 tr狸nh by l動u 畛 thu畉t to叩n, c畉u tr炭c d畛 li畛u, khai b叩o c叩c hm.
23
[1] http://en.wikipedia.org/wiki/MIPS_instruction_set, truy c畉p ngy 25/01/2015.
[2] http://en.wikipedia.org/wiki/PlayStation_Portable, truy c畉p ngy 25/01/2015.

More Related Content

What's hot (20)

2 kien truc phan mem
2 kien truc phan mem2 kien truc phan mem
2 kien truc phan mem
Ly hai
Ki畉n tr炭c m叩y t鱈nh v h畛p ng畛 bi 04
Ki畉n tr炭c m叩y t鱈nh v h畛p ng畛 bi 04Ki畉n tr炭c m叩y t鱈nh v h畛p ng畛 bi 04
Ki畉n tr炭c m叩y t鱈nh v h畛p ng畛 bi 04
Nh坦c Nh坦c
Ki畉n tr炭c m叩y t鱈nh
Ki畉n tr炭c m叩y t鱈nhKi畉n tr炭c m叩y t鱈nh
Ki畉n tr炭c m叩y t鱈nh
LE The Vinh
Ki畉n Tr炭c Lu但n Phi棚n
Ki畉n Tr炭c Lu但n Phi棚nKi畉n Tr炭c Lu但n Phi棚n
Ki畉n Tr炭c Lu但n Phi棚n
Thieu Mao
Ktmt chuong 1
Ktmt chuong 1Ktmt chuong 1
Ktmt chuong 1
T湛ng T嘆 M嘆
Bai tap3
Bai tap3Bai tap3
Bai tap3
H畉ng L棚
60318032 baigiang-ktmt-2010
60318032 baigiang-ktmt-201060318032 baigiang-ktmt-2010
60318032 baigiang-ktmt-2010
Em Cu
Ng但n hng c但u h畛i tr畉c nghi畛m ki畉n tr炭c m叩y t鱈nh
Ng但n hng c但u h畛i tr畉c nghi畛m ki畉n tr炭c m叩y t鱈nhNg但n hng c但u h畛i tr畉c nghi畛m ki畉n tr炭c m叩y t鱈nh
Ng但n hng c但u h畛i tr畉c nghi畛m ki畉n tr炭c m叩y t鱈nh
kakalaxaxa
Bai giang cau_truc_may_tinh
Bai giang cau_truc_may_tinhBai giang cau_truc_may_tinh
Bai giang cau_truc_may_tinh
Th湛y Linh
BGKTMT Ch2 t畛 ch畛c h畛 th畛ng m叩y t鱈nh
BGKTMT Ch2 t畛 ch畛c h畛 th畛ng m叩y t鱈nhBGKTMT Ch2 t畛 ch畛c h畛 th畛ng m叩y t鱈nh
BGKTMT Ch2 t畛 ch畛c h畛 th畛ng m叩y t鱈nh
Cao Toa
3 To chuc bo vi xu ly
3 To chuc bo vi xu ly3 To chuc bo vi xu ly
3 To chuc bo vi xu ly
Ly hai
Ktmt chuong 5
Ktmt chuong 5Ktmt chuong 5
Ktmt chuong 5
T湛ng T嘆 M嘆
Cau truc may tinh
Cau truc may tinhCau truc may tinh
Cau truc may tinh
nothingandnothing
Vi x畛 l箪 c畉u tr炭c m叩y t鱈nh
Vi x畛 l箪 c畉u tr炭c m叩y t鱈nhVi x畛 l箪 c畉u tr炭c m叩y t鱈nh
Vi x畛 l箪 c畉u tr炭c m叩y t鱈nh
leeduy
vxl.vdk.TranThanhPhong
vxl.vdk.TranThanhPhongvxl.vdk.TranThanhPhong
vxl.vdk.TranThanhPhong
Long Tran Huy
Tim hieu thanh ghi in asm
Tim hieu thanh ghi in asmTim hieu thanh ghi in asm
Tim hieu thanh ghi in asm
My 叩
C畉u t畉o v nguy棚n l箪 ho畉t 畛ng cpu
C畉u t畉o v nguy棚n l箪 ho畉t 畛ng cpuC畉u t畉o v nguy棚n l箪 ho畉t 畛ng cpu
C畉u t畉o v nguy棚n l箪 ho畉t 畛ng cpu
beu09vn
Tongquanktmt
TongquanktmtTongquanktmt
Tongquanktmt
Tung Luu
Chuong02
Chuong02Chuong02
Chuong02
na
ki畉n tr炭c m叩y t鱈nh v h畛p ng畛 Bi 00
ki畉n tr炭c m叩y t鱈nh v h畛p ng畛 Bi 00ki畉n tr炭c m叩y t鱈nh v h畛p ng畛 Bi 00
ki畉n tr炭c m叩y t鱈nh v h畛p ng畛 Bi 00
Nh坦c Nh坦c
2 kien truc phan mem
2 kien truc phan mem2 kien truc phan mem
2 kien truc phan mem
Ly hai
Ki畉n tr炭c m叩y t鱈nh v h畛p ng畛 bi 04
Ki畉n tr炭c m叩y t鱈nh v h畛p ng畛 bi 04Ki畉n tr炭c m叩y t鱈nh v h畛p ng畛 bi 04
Ki畉n tr炭c m叩y t鱈nh v h畛p ng畛 bi 04
Nh坦c Nh坦c
Ki畉n tr炭c m叩y t鱈nh
Ki畉n tr炭c m叩y t鱈nhKi畉n tr炭c m叩y t鱈nh
Ki畉n tr炭c m叩y t鱈nh
LE The Vinh
Ki畉n Tr炭c Lu但n Phi棚n
Ki畉n Tr炭c Lu但n Phi棚nKi畉n Tr炭c Lu但n Phi棚n
Ki畉n Tr炭c Lu但n Phi棚n
Thieu Mao
60318032 baigiang-ktmt-2010
60318032 baigiang-ktmt-201060318032 baigiang-ktmt-2010
60318032 baigiang-ktmt-2010
Em Cu
Ng但n hng c但u h畛i tr畉c nghi畛m ki畉n tr炭c m叩y t鱈nh
Ng但n hng c但u h畛i tr畉c nghi畛m ki畉n tr炭c m叩y t鱈nhNg但n hng c但u h畛i tr畉c nghi畛m ki畉n tr炭c m叩y t鱈nh
Ng但n hng c但u h畛i tr畉c nghi畛m ki畉n tr炭c m叩y t鱈nh
kakalaxaxa
Bai giang cau_truc_may_tinh
Bai giang cau_truc_may_tinhBai giang cau_truc_may_tinh
Bai giang cau_truc_may_tinh
Th湛y Linh
BGKTMT Ch2 t畛 ch畛c h畛 th畛ng m叩y t鱈nh
BGKTMT Ch2 t畛 ch畛c h畛 th畛ng m叩y t鱈nhBGKTMT Ch2 t畛 ch畛c h畛 th畛ng m叩y t鱈nh
BGKTMT Ch2 t畛 ch畛c h畛 th畛ng m叩y t鱈nh
Cao Toa
3 To chuc bo vi xu ly
3 To chuc bo vi xu ly3 To chuc bo vi xu ly
3 To chuc bo vi xu ly
Ly hai
Vi x畛 l箪 c畉u tr炭c m叩y t鱈nh
Vi x畛 l箪 c畉u tr炭c m叩y t鱈nhVi x畛 l箪 c畉u tr炭c m叩y t鱈nh
Vi x畛 l箪 c畉u tr炭c m叩y t鱈nh
leeduy
vxl.vdk.TranThanhPhong
vxl.vdk.TranThanhPhongvxl.vdk.TranThanhPhong
vxl.vdk.TranThanhPhong
Long Tran Huy
Tim hieu thanh ghi in asm
Tim hieu thanh ghi in asmTim hieu thanh ghi in asm
Tim hieu thanh ghi in asm
My 叩
C畉u t畉o v nguy棚n l箪 ho畉t 畛ng cpu
C畉u t畉o v nguy棚n l箪 ho畉t 畛ng cpuC畉u t畉o v nguy棚n l箪 ho畉t 畛ng cpu
C畉u t畉o v nguy棚n l箪 ho畉t 畛ng cpu
beu09vn
Tongquanktmt
TongquanktmtTongquanktmt
Tongquanktmt
Tung Luu
Chuong02
Chuong02Chuong02
Chuong02
na
ki畉n tr炭c m叩y t鱈nh v h畛p ng畛 Bi 00
ki畉n tr炭c m叩y t鱈nh v h畛p ng畛 Bi 00ki畉n tr炭c m叩y t鱈nh v h畛p ng畛 Bi 00
ki畉n tr炭c m叩y t鱈nh v h畛p ng畛 Bi 00
Nh坦c Nh坦c

Similar to Kiem chung vi_mach_report_update (20)

Bai Tap Vi Xu Ly
Bai Tap Vi Xu LyBai Tap Vi Xu Ly
Bai Tap Vi Xu Ly
guestb10ee52
Bao cao vdk_va_pic
Bao cao vdk_va_picBao cao vdk_va_pic
Bao cao vdk_va_pic
H畉i Nguy畛n
TI LI畛U P N V CU H畛I KI畛M TRA, ST H畉CH KI畉N TH畛C CHUYN NGNH.Tuy畛n d畛...
TI LI畛U P N V CU H畛I KI畛M TRA, ST H畉CH KI畉N TH畛C CHUYN NGNH.Tuy畛n d畛...TI LI畛U P N V CU H畛I KI畛M TRA, ST H畉CH KI畉N TH畛C CHUYN NGNH.Tuy畛n d畛...
TI LI畛U P N V CU H畛I KI畛M TRA, ST H畉CH KI畉N TH畛C CHUYN NGNH.Tuy畛n d畛...
nataliej4
Embedded linux edited
Embedded linux editedEmbedded linux edited
Embedded linux edited
Nguy畛n Anh
L畛nh CMD_NewStar-LPI1.pdf
L畛nh CMD_NewStar-LPI1.pdfL畛nh CMD_NewStar-LPI1.pdf
L畛nh CMD_NewStar-LPI1.pdf
TruongVanTuyen3
T畛 H畛C LPI 1
T畛 H畛C LPI 1 T畛 H畛C LPI 1
T畛 H畛C LPI 1
Hong 畉t
chuong1_gioi thieu ve .he thong VLSI.ppt
chuong1_gioi thieu ve .he thong VLSI.pptchuong1_gioi thieu ve .he thong VLSI.ppt
chuong1_gioi thieu ve .he thong VLSI.ppt
SangL72
BTL-NMDT_GROUP4
BTL-NMDT_GROUP4BTL-NMDT_GROUP4
BTL-NMDT_GROUP4
Nhok Ly
畛 ti: Thi棚t k棚 va thi c担ng m担 hinh c担ng vi棚n 4.0, HOT, 9
畛 ti: Thi棚t k棚 va thi c担ng m担 hinh c担ng vi棚n 4.0, HOT, 9畛 ti: Thi棚t k棚 va thi c担ng m担 hinh c担ng vi棚n 4.0, HOT, 9
畛 ti: Thi棚t k棚 va thi c担ng m担 hinh c担ng vi棚n 4.0, HOT, 9
D畛ch V畛 Vi畉t Bi Tr畛n G坦i ZALO 0917193864
Thi畉t k畉 v ch畉 t畉o 8 m担 h狸nh th畛c hnh m担n vi i畛u khi畛n s畛 d畛ng vi i畛u khi...
Thi畉t k畉 v ch畉 t畉o 8 m担 h狸nh th畛c hnh m担n vi i畛u khi畛n s畛 d畛ng vi i畛u khi...Thi畉t k畉 v ch畉 t畉o 8 m担 h狸nh th畛c hnh m担n vi i畛u khi畛n s畛 d畛ng vi i畛u khi...
Thi畉t k畉 v ch畉 t畉o 8 m担 h狸nh th畛c hnh m担n vi i畛u khi畛n s畛 d畛ng vi i畛u khi...
Man_Ebook
Linux+01
Linux+01Linux+01
Linux+01
Duong Hieu
bi t畉p l畛n m担n ki畉n tr炭c m叩y t鱈nh v h畛 i畛u hnh
bi t畉p l畛n m担n ki畉n tr炭c m叩y t鱈nh v h畛 i畛u hnhbi t畉p l畛n m担n ki畉n tr炭c m叩y t鱈nh v h畛 i畛u hnh
bi t畉p l畛n m担n ki畉n tr炭c m叩y t鱈nh v h畛 i畛u hnh
dangdinhkien2k4
BTL - NMT - Nh坦m 4 - MT1405
BTL - NMT - Nh坦m 4 - MT1405BTL - NMT - Nh坦m 4 - MT1405
BTL - NMT - Nh坦m 4 - MT1405
Nhok Ly
Quan ly bo nho ngoai trong linux
Quan ly bo nho ngoai trong linuxQuan ly bo nho ngoai trong linux
Quan ly bo nho ngoai trong linux
Thu Lam
Lu畉n vn Thi畉t k畉 thi c担ng h畛 th畛ng gi叩m s叩t v i畛u khi畛n thi畉t b畛 b畉ng GPRS...
Lu畉n vn Thi畉t k畉 thi c担ng h畛 th畛ng gi叩m s叩t v i畛u khi畛n thi畉t b畛 b畉ng GPRS...Lu畉n vn Thi畉t k畉 thi c担ng h畛 th畛ng gi叩m s叩t v i畛u khi畛n thi畉t b畛 b畉ng GPRS...
Lu畉n vn Thi畉t k畉 thi c担ng h畛 th畛ng gi叩m s叩t v i畛u khi畛n thi畉t b畛 b畉ng GPRS...
tailieuhocnet
畛 N MN H畛C H畛 TH畛NG NHNG M畉NG KHNG DY - Contiki OSreport.pdf
畛 N MN H畛C H畛 TH畛NG NHNG M畉NG KHNG DY - Contiki OSreport.pdf畛 N MN H畛C H畛 TH畛NG NHNG M畉NG KHNG DY - Contiki OSreport.pdf
畛 N MN H畛C H畛 TH畛NG NHNG M畉NG KHNG DY - Contiki OSreport.pdf
Man_Ebook
T狸m hi畛u v畛 Linux
T狸m hi畛u v畛 LinuxT狸m hi畛u v畛 Linux
T狸m hi畛u v畛 Linux
Nhan Nguyen
Ki畉n tr炭c m叩y t鱈nh v h畛 i畛u hnh - Nh坦m 14
Ki畉n tr炭c m叩y t鱈nh v h畛 i畛u hnh -  Nh坦m 14Ki畉n tr炭c m叩y t鱈nh v h畛 i畛u hnh -  Nh坦m 14
Ki畉n tr炭c m叩y t鱈nh v h畛 i畛u hnh - Nh坦m 14
ssuseraf6e97
Bai Tap Vi Xu Ly
Bai Tap Vi Xu LyBai Tap Vi Xu Ly
Bai Tap Vi Xu Ly
guestb10ee52
TI LI畛U P N V CU H畛I KI畛M TRA, ST H畉CH KI畉N TH畛C CHUYN NGNH.Tuy畛n d畛...
TI LI畛U P N V CU H畛I KI畛M TRA, ST H畉CH KI畉N TH畛C CHUYN NGNH.Tuy畛n d畛...TI LI畛U P N V CU H畛I KI畛M TRA, ST H畉CH KI畉N TH畛C CHUYN NGNH.Tuy畛n d畛...
TI LI畛U P N V CU H畛I KI畛M TRA, ST H畉CH KI畉N TH畛C CHUYN NGNH.Tuy畛n d畛...
nataliej4
Embedded linux edited
Embedded linux editedEmbedded linux edited
Embedded linux edited
Nguy畛n Anh
L畛nh CMD_NewStar-LPI1.pdf
L畛nh CMD_NewStar-LPI1.pdfL畛nh CMD_NewStar-LPI1.pdf
L畛nh CMD_NewStar-LPI1.pdf
TruongVanTuyen3
T畛 H畛C LPI 1
T畛 H畛C LPI 1 T畛 H畛C LPI 1
T畛 H畛C LPI 1
Hong 畉t
chuong1_gioi thieu ve .he thong VLSI.ppt
chuong1_gioi thieu ve .he thong VLSI.pptchuong1_gioi thieu ve .he thong VLSI.ppt
chuong1_gioi thieu ve .he thong VLSI.ppt
SangL72
BTL-NMDT_GROUP4
BTL-NMDT_GROUP4BTL-NMDT_GROUP4
BTL-NMDT_GROUP4
Nhok Ly
Thi畉t k畉 v ch畉 t畉o 8 m担 h狸nh th畛c hnh m担n vi i畛u khi畛n s畛 d畛ng vi i畛u khi...
Thi畉t k畉 v ch畉 t畉o 8 m担 h狸nh th畛c hnh m担n vi i畛u khi畛n s畛 d畛ng vi i畛u khi...Thi畉t k畉 v ch畉 t畉o 8 m担 h狸nh th畛c hnh m担n vi i畛u khi畛n s畛 d畛ng vi i畛u khi...
Thi畉t k畉 v ch畉 t畉o 8 m担 h狸nh th畛c hnh m担n vi i畛u khi畛n s畛 d畛ng vi i畛u khi...
Man_Ebook
bi t畉p l畛n m担n ki畉n tr炭c m叩y t鱈nh v h畛 i畛u hnh
bi t畉p l畛n m担n ki畉n tr炭c m叩y t鱈nh v h畛 i畛u hnhbi t畉p l畛n m担n ki畉n tr炭c m叩y t鱈nh v h畛 i畛u hnh
bi t畉p l畛n m担n ki畉n tr炭c m叩y t鱈nh v h畛 i畛u hnh
dangdinhkien2k4
BTL - NMT - Nh坦m 4 - MT1405
BTL - NMT - Nh坦m 4 - MT1405BTL - NMT - Nh坦m 4 - MT1405
BTL - NMT - Nh坦m 4 - MT1405
Nhok Ly
Quan ly bo nho ngoai trong linux
Quan ly bo nho ngoai trong linuxQuan ly bo nho ngoai trong linux
Quan ly bo nho ngoai trong linux
Thu Lam
Lu畉n vn Thi畉t k畉 thi c担ng h畛 th畛ng gi叩m s叩t v i畛u khi畛n thi畉t b畛 b畉ng GPRS...
Lu畉n vn Thi畉t k畉 thi c担ng h畛 th畛ng gi叩m s叩t v i畛u khi畛n thi畉t b畛 b畉ng GPRS...Lu畉n vn Thi畉t k畉 thi c担ng h畛 th畛ng gi叩m s叩t v i畛u khi畛n thi畉t b畛 b畉ng GPRS...
Lu畉n vn Thi畉t k畉 thi c担ng h畛 th畛ng gi叩m s叩t v i畛u khi畛n thi畉t b畛 b畉ng GPRS...
tailieuhocnet
畛 N MN H畛C H畛 TH畛NG NHNG M畉NG KHNG DY - Contiki OSreport.pdf
畛 N MN H畛C H畛 TH畛NG NHNG M畉NG KHNG DY - Contiki OSreport.pdf畛 N MN H畛C H畛 TH畛NG NHNG M畉NG KHNG DY - Contiki OSreport.pdf
畛 N MN H畛C H畛 TH畛NG NHNG M畉NG KHNG DY - Contiki OSreport.pdf
Man_Ebook
T狸m hi畛u v畛 Linux
T狸m hi畛u v畛 LinuxT狸m hi畛u v畛 Linux
T狸m hi畛u v畛 Linux
Nhan Nguyen
Ki畉n tr炭c m叩y t鱈nh v h畛 i畛u hnh - Nh坦m 14
Ki畉n tr炭c m叩y t鱈nh v h畛 i畛u hnh -  Nh坦m 14Ki畉n tr炭c m叩y t鱈nh v h畛 i畛u hnh -  Nh坦m 14
Ki畉n tr炭c m叩y t鱈nh v h畛 i畛u hnh - Nh坦m 14
ssuseraf6e97

Kiem chung vi_mach_report_update

  • 1. TR働畛NG 畉I H畛C BCH KHOA H N畛I VI畛N O T畉O SAU 畉I H畛C BI T畉P L畛N KI畛M CH畛NG VI M畉CH 畛 ti: KI畛M CH畛NG B畉NG PH働NG PHP M PH畛NG B畛 X畛 L MIPS Nh坦m th畛c hi畛n: L DON THI畛N C XUN TO畉N L TH畛 NH NG畛C Gi畉ng vi棚n h動畛ng d畉n: TS. NGUY畛N 畛C MINH H N畛i, 1-2015
  • 2. 1 M畛C L畛C M畛C L畛C...........................................................................................................................................................................1 Ph畉n 1. T畛ng quan d嘆ng vi x畛 l箪 MIPS ................................................................................................................2 1.1 L畛ch s畛 ph叩t tri畛n................................................................................................................................................2 1.2 C叩c s畉n ph畉m 達 c坦 tr棚n th畛 tr動畛ng (C叩c c担ng tr狸nh bi b叩o nghi棚n c畛u 達 c坦 v c坦 li棚n quan) ......3 1.3 Nguy棚n t畉c thi畉t k畉 b畛 MIPS.............................................................................................................................4 1.4 M畛t s畛 l畛nh s畛 d畛ng trong MIPS .....................................................................................................................5 1.5 Ph但n lo畉i MIPS...................................................................................................................................................6 1.5.1. Thi畉t k畉 董n xung nh畛p ............................................................................................................................6 1.5.2. Thi畉t k畉 a xung nh畛p...............................................................................................................................6 1.5.3. Thi畉t k畉 pipeline........................................................................................................................................7 1.6 C叩c 畛ng d畛ng c畛a b畛 x畛 l箪 MIPS ..................................................................................................................10 Ph畉n 2. Ph但n t鱈ch v th畛c hi畛n ki畛m ch畛ng ......................................................................................................12 2.1 L畛a ch畛n ph動董ng ph叩p ki畛m ch畛ng ..............................................................................................................12 2.1.1. T畉m quan tr畛ng c畛a ki畛mch畛ng thi畉t k畉............................................................................................12 2.1.2. C叩c lo畉i ki畛mch畛ng trong quy tr狸nh thi畉t k畉 vi m畉ch ......................................................................12 2.2 M担 h狸nh ki畛m ch畛ng.........................................................................................................................................13 2.3 Th畛c hi畛n thi畉t k畉 MIPS Pipeline...................................................................................................................13 2.3.1. Y棚u c畉u thi畉t k畉 .......................................................................................................................................13 2.3.2. S董 畛 thi畉t k畉 ...........................................................................................................................................14 2.3.3. Thi畉t k畉 chi ti畉t t畛ng kh畛i......................................................................................................................15 2.4 Th畛c hi畛n c叩c ph辿p to叩n trong MIPS d湛ng C++........................................................................................18 Ph畉n 3. K畉t qu畉 t畛ng h畛p v m担 ph畛ng..............................................................................................................21 3.1 S董 畛 kh畛i c畛a s畉n ph畉m.................................................................................................................................21 3.2 Thu畉t to叩n, linh ki畛n, ki畉n tr炭c m畉ch............................................................................................................21 Ph畉n 4. 叩nh gi叩 k畉t qu畉 v h動畛ng ph叩t tri畛n .................................................................................................22
  • 3. 2 Ph畉n 1. T畛ng quan d嘆ng vi x畛 l箪 MIPS 1.1 L畛ch s畛 ph叩t tri畛n MIPS vi畉t t畉t c畛a Microprocessor without Interlocked Pipeline Stages, l ki畉n tr炭c b畛 t畉p l畛nh RISC ph叩t tri畛n b畛i MIPS Technologies [1]. B畛 x畛 l箪 MIPS 畉u ti棚n 動畛c nghi棚n c畛u vo nm 1981 b畛i m畛t nh坦m c叩c nh nghi棚n c畛u thu畛c 畉i h畛c Stanford do John L. Hennessy 畛ng 畉u, v畛i m畛c ich c董 b畉n l nh畉m tng 畛t xu畉t hi畛u nng th担ng qua s畛 d畛ng m畛t 動畛ng 畛ng l畛nh (pipeline instructions), m畛t c担ng ngh畛 達 動畛c bi畉t 畉n t畛 l但u nh動ng l畉i kh坦 ph叩t tri畛n. Th担ng th動畛ng m畛t 動畛ng 畛ng s畉 m畛 r畛ng vi畛c ch畉y m畛t c但u l畛nh thnh vi b動畛c, b畉t 畉u th畛c hi畛n b動畛c m畛t c畛a c但u l畛nh tr動畛c khi c但u l畛nh tr動畛c hon thnh. Trong khi 坦, thi畉t k畉 truy畛n th畛ng y棚u c畉u ph畉i 畛i cho 畉n khi m畛t c但u l畛nh hon thnh m畛i 動畛c ch畉y c但u l畛nh ti畉p theo.Thi畉t k畉 theo pipeline lm gi畉m 叩ng k畛 th畛i gian r畉nh r畛i c畛a CPU khi th畛c hi畛n li棚n ti畉p c叩c c但u l畛nh. Kh坦 khn trong qu叩 tr狸nh t狸m hi畛u thi畉t k畉: theo ph動董ng ph叩p 動畛ng 畛ng l畛nh n坦 y棚u c畉u m畛t kh坦a 畛ng b畛 (interlocks) 動畛c ci 畉t 畛 ch畉c ch畉n r畉ng c叩c c但u l畛nh chi畉m nhi畛u chu k狸 畛ng h畛 畛 th畛c hi畛n s畉 d畛ng 動畛ng 畛ng l畉i 畛 n畉p nhi畛u d畛 li畛u h董n. Nh畛ng kh坦a 畛ng b畛 ny c畉n m畛t th畛i gian l畛n 畛 ci 畉t v 動畛c cho l ro c畉n ch鱈nh trong vi畛c tng t畛c 畛 x畛 l鱈 trong t動董ng lai. Y棚u c畉u 畉t ra trong qu叩 tr狸nh thi畉t k畉: y棚u c畉u t畉t c畉 c叩c c但u l畛nh ph畉i 動畛c hon thnh trong 1 chu k狸 xung nh畛p nh畛 th畉 l畉o b畛 動畛c s畛 c畉n thi畉t c畛a kh坦a 畛ng b畛. Thi畉t k畉 ny 達 lo畉i b畛 動畛c m畛t s畛 c但u l畛nh h畛u d畛ng, 叩ng k畛 nh畉t l c叩c l畛nh nh但n, chia y棚u c畉u nhi畛u b動畛c nh動ng n坦 cho th畉y hi畛u su畉t t畛ng th畛 c畛a h畛 th畛ng tng l棚n r探 r畛t v狸 c叩c vi x畛 l箪 c坦 th畛 ch畉y 畛 xung nh畛p l畛n h董n r畉t nhi畛u. 畉n nm 1984, Hennessy r畛i tr動畛ng 畉i h畛c Stanford 畛 thnh l畉p c担ng ty MIPS Computer System.H畛 cho ra 畛i thi畉t k畉 畉u ti棚n l R2000 vo nm 1985, sau 坦 ph叩t tri畛n R3000 vo nm 1998. Nh畛ng CPU 32 bit ny t畛n t畉i trong su畛t nh畛ng nm 1980, v 動畛c s畛 d畛ng ch畛 y畉u trong c叩c d嘆ng m叩y ch畛 SGI. Nm 1991 MIPS cho ra 畛i b畛 vi x畛 l箪 64 bit 畉u ti棚n R4000.Tuy nhi棚n MIPS g畉p kh坦 khn trong ti ch鱈nh trong khi tung s畉n ph畉m ny ra th畛 tr動畛ng. Thi畉t k畉 ny r畉t quan tr畛ng 畛i v畛i SGI-m畛t trong nh畛ng kh叩ch hng c畛a MIPS l炭c b畉y gi畛, v狸 th畉 SGI 達 mua
  • 4. 3 l畉i c担ng ty vo nm 1992 畛 b畉o v畛 thi畉t k畉 kh担ng b畛 m畉t i. T畛 坦 MIPS tr畛 thnh m畛t c担ng ty con c畛a SGI v 動畛c bi畉t 畉n b畛i t棚n MIPS Technologies 1.2 C叩c s畉nph畉m 達 c坦 tr棚n th畛 tr動畛ng (C叩c c担ng tr狸nh bi b叩o nghi棚n c畛u 達 c坦 v c坦 li棚n quan) C叩c th畉 h畛 MIPS kh畛i 畉u l ki畉n tr炭c 32 bit sau m畛 r畛ng ra 64 bit. Nhi畛u s畛a 畛i c畛a MIPS, bao g畛m MIPS I, MIPS II, MIPS III, MIPS IV, MIPS V, MIPS32 v MIPS64. Phi棚n b畉n hi畛n t畉i l MIPS32 v MIPS64. C滴ng c坦 m畛t vi tu畛 ch畛n m畛 r畛ng, baog畛m MIPS-3D (1 t畉p l畛nh 董n gi畉n c叩c c但u l畛nh SIMD v畛 d畉u ch畉m 畛ng 畛 th畛c hi畛n c叩c t叩c v畛 v畛 畛 h畛a 3D), MIPS16e (kh畉 nng n辿n vi l畛nh 畛 ti畉t ki畛m kh担ng gian b畛 nh畛) v MIPS MT (MultirTheading) ki畉n tr炭c a lu畛ng m畛i 動畛c b畛 xung cho h畛 th畛ng. C叩c d嘆ng vi x畛 l箪 MIPS th動董ng m畉i 達 動畛c s畉n xu畉t: R2000 Xu畉t hi畛n tr棚n th畛 tr動畛ng vo nm 1985, 動畛c b畛 sung th棚m nhi畛u c但u l畛nh m畛i, c坦 th畛 動畛c kh畛i t畉o 畛 ch畉 畛 big-endian hay little-endian, c坦 32 thanh ghi 32 bit, nh動ng kh担ng c坦 thanh ghi m達 i畛u ki畛n. R2000 c滴ng h畛 tr畛 t畛i 4 b畛 x畛 l箪, m畛t trong s畛 坦 畉m nhi畛m vi畛c x畛 l箪 c叩c ngo畉i l畛 v b畉y trong khi ba chi畉c c嘆n l畉i s畛 d畛ng cho c叩c m畛c 鱈ch kh叩c. i畛u ny 動畛c h畛 tr畛 trong R2010 FTU - b畛 x畛 l箪 c坦 32 thanh ghi 32 bit c坦 th畛 動畛c s畛 d畛ng nh動 l 16 thanh ghi 64 bit cho k畉t qu畉 ch鱈nh x叩c g畉p 担i. R3000 Theo sau R2000 vo nm 1998, n坦 b畛 sung th棚m 32kB Cache (v s畛m 動畛c tng l棚n 64kB) cho c叩c l畛nh v d畛 li畛u, k竪m theo 坦 l c董 ch畉 cache coherency h畛 tr畛 cho nhi畛u b畛 x畛 l箪. R3000 c滴ng bao g畛m MMU - m畛t t鱈nh nng ph畛 bi畉n c畛a CPUs k畛 nguy棚n ny. R3000 tr畛 thnh thi畉t k畉 MIPS 畉u ti棚n thnh c担ng trong l挑nh v畛c th動董ng m畉i. R3000A 動畛c s畛 d畛ng c畛c k畛 thnh c担ng trong c叩c m叩y Sony PlayStation, ch畉y v畛i t畛c 畛 40 MHz, truy畛n th担ng tin 畛 t畛c 畛 32 c但u l畛nh trong 1 gi但y. R3000 c滴ng i k竪m v畛i R3100 FTU trong c湛ng m畛t chip 董n. C叩c h達ng kh叩c c滴ng tham gia s畉n xu畉t nh動 Pacemips v畛i R3400, IDT v畛i R3500. R3900 c畛a Toshiba l ch鱈p 畉u ti棚n d畉ng SoC (System on a Chip) 動畛c s畛 d畛ng trong c叩c m叩y t鱈nh c叩 nh但n c畉m tay s畛 d畛ng h畛 i畛u hnh Windows CE. R4000
  • 5. 4 動畛c 動a ra vo nm 1991, m畛 r畛ng t畉p l畛nh MIPS 畛 h畛 tr畛 畉y 畛 ki畉n tr炭c 64 bit, chuy畛n FTU vo main 畛 t畉o ra m畛t h畛 th畛ng chip 董n l畉 (Single-chip system), x畛 l箪 v畛i t畛c 畛 l棚n t畛i 100Mhz, tuy nhi棚n 畛 畉t 動畛c t畛c 畛 ny b畛 nh畛 畛m ph畉i b畛 gi畉m xu畛ng c嘆n 8kB v c畉n 3 chu k畛 畛 truy c畉p. T畉n s畛 x畛 l箪 cao 畉t 動畛c nh畛 vi畛cl動u tr畛 th担ng qua c担ng ngh畛 動畛ng 畛ng s但u (deep pipelining hay c嘆n g畛i l super-pipelining t畉i th畛i i畛m 坦). 1993 R4400 xu畉t hi畛n v畛i 16kB cache, b畛 x畛 l箪 64 bit l畛n v 1 b畛 i畛u khi畛n cache m畛 r畛ng l棚n t畛i 1MB (cahe level 2). Ngoi ra c嘆n c叩c h畛 R4200, R4300, VR4300, R4300i, R4600 Orion, R4700 Orion, R5650, R5000, R5000FTU, RM7000, RM9000...C叩c b畛 x畛 l箪 ny 動畛c s畛 d畛ng r畉t r畛ng r達i : C叩c m叩y Nitendo 64, Cisco routers, WebTV set-top Box (Hi畛n nay l Micrisoft TV) R8000 (1994) L thi畉t k畉 MIPS si棚u v担 h動畛ng (superscala) 畉u ti棚n, cho ph辿p x畛 l箪 2 ALU v 2 ph辿p t鱈nh nh畛 m畛i chu k畛. Thi畉t k畉 ny m畛 r畛ng t畛i 6 chip, h畛 tr畛 4MB cache m畛 r畛ng. R10000 (1995) L m畛t thi畉t k畉 chip 董n l畉, ch畉y 畛 t畛c 畛 cao h董n R8000, c坦 32kB cache ch鱈nh cho c叩c c但u l畛nh v d畛 li畛u. C叩c thi畉t k畉 ti畉p theo c畛a R1000 l R12000 v R14000 v畛i h畛 tr畛 DDR SRAM trong cache v t畛c 畛 l棚n t畛i 200 MHz. Ngoi ra c嘆n c叩c thi畉t k畉 R16000, R16000A, R6000. 1.3 Nguy棚n t畉c thi畉t k畉 b畛 MIPS T鱈nh 董n gi畉n quan tr畛ng h董n t鱈nh quy t畉c (Simplicity favors regularity) Ch畛 th畛 k鱈ch th動畛c c畛 畛nh(32 bit) t 畛nh d畉ng ch畛 th畛 (3 lo畉i 畛nh d畉ng) M達 l畛nh 畛 v畛 tr鱈 c畛 畛nh(6 bit 畉u) Nh畛 h董n th狸 nhanh h董n S畛 ch畛 th畛 gi畛i h畉n S畛 thanh ghi gi畛i h畉n S畛 ch畉 畛 畛a ch畛 gi畛i h畉n Tng t畛c c叩c tr動畛ng h畛p th担ng d畛ng C叩c to叩n h畉ng s畛 h畛c l畉y t畛 thanh ghi (m叩y t鱈nh d畛a tr棚n c董 ch畉 load-store)
  • 6. 5 C叩c ch畛 th畛 c坦 th畛 ch畛a to叩n h畉ng tr畛c ti畉p Thi畉t k畉 t畛t 嘆i h畛i s畛 th畛a hi畛p 3 lo畉i 畛nh d畉ng ch畛 th畛 [1]: + R-ch畛 th畛 thanh ghi: 2 to叩n h畉ng ngu畛n thanh ghi, 1 to叩n h畉ng 鱈ch thanh ghi. + I-ch畛 th畛 tr畛c ti畉p: 1 to叩n h畉ng ngu畛n thanh ghi, 1 to叩n h畉ng ngu畛n tr畛c ti畉p, 1 to叩n h畉ng 鱈ch thanh ghi. + J-ch畛 th畛 nh畉y: 1 to叩n h畉ng ngu畛n tr畛c ti畉p. H狸nh 3.1 Ba 畛nh d畉ng ch畛 th畛 l畛nh 1.4 M畛t s畛 l畛nh s畛 d畛ng trong MIPS Sau 但y l c叩c l畛nh 動畛c s畛 d畛ng trong MIPS 32 bits[2]:
  • 7. 6 B畉ng 3.1 L畛nh c畛a MIPS 32 bits 1.5 Ph但n lo畉i MIPS 1.5.1. Thi畉t k畉 董n xung nh畛p L thi畉t k畉 m c叩c pha th畛c hi畛n: n畉p, gi畉i m達 and th畛c hi畛n, ghi c畛a m畛i l畛nh trong m畛t chu k畛 畛ng h畛 [3]: H狸nh 3.2 Thi畉t k畉 董n xung nh畛p 働u i畛m: 董n gi畉n v d畛 hi畛u. Nh動畛c i畛m: S畛 d畛ng chu k畛 畛ng h畛 kh担ng hi畛u qu畉 chu k畛 畛ng h畛 動畛c 畉t theo l畛nh ch畉m nh畉t. C叩c l畛nh ph畛c t畉p nh動 l畛nh nh但n d畉u ph畉y 畛ng: T畛n di畛n t鱈ch thi畉t k畉 v狸 c畉n nh但n 担i m畛t s畛 kh畛i ch畛c nng (VD: b畛 c畛ng) v狸 ch炭ng kh担ng th畛 動畛c chia s畉 trong c湛ng 1 chu k畛 畛ng h畛. 1.5.2. Thi畉t k畉 a xung nh畛p L thi畉t k畉 m chia l畛nh thnh c叩c pha th畛c hi畛n: IF, ID, EX, MEM, WB. M畛i pha th畛c hi畛n trong 1 chu k畛 xung nh畛p [4].
  • 8. 7 H狸nh 3.3 Thi畉t k畉 a xung nh畛p 働u i畛m: Th畛i gian th畛c hi畛n (= s畛 pha) c畛a m畛i l畛nh 動畛c i畛u ch畛nh t湛y thu畛c 畛 ph畛c t畉p c畛a l畛nh. C叩c kh畛i ch畛c nng 動畛c chia s畉 gi畛a c叩c pha kh叩c nhau c畛a l畛nh do m畛t kh畛i ch畛c nng c畛 th畛 kh担ng c畉n trong ton b畛 c叩c pha th畛c hi畛n c畛a l畛nh. Nh動畛c i畛m: C叩c l畛nh th畛c hi畛n li棚n ti畉p nhau. L畛nh tr動畛c 動畛c th畛c hi畛n xong m畛i 畉n l畛nh sau v狸 v畉y xu畉t hi畛n kho畉ng th畛i gian r畛i gi畛a c叩c kh但u. 1.5.3. Thi畉t k畉 pipeline Kh叩c v畛i thi畉t k畉 董n xung nh畛p khi c叩c l畛nh 畛u 動畛c th畛c hi畛n xong trong m畛t chu k狸 m叩y, thi畉t k畉 pipeline chia m畛t c但u l畛nh ra thnh 5 b動畛c (steps) [5]:
  • 9. 8 H狸nh 3.4 C叩c b動畛c th畛c hi畛n l畛nh N畉p l畛nh v c畉p nh畉p gi叩 tr畛 PC (Instruction Fetch IF) 畛c thanh ghi v gi畉i m達 l畛nh ( Intruction Decode ID) Th畛c hi畛n l畛nhR, t鱈nh 畛a ch畛 b畛 nh畛(Execution EX) 畛c ho畉c ghi d畛 li畛u tr棚n b畛 nh畛 d畛 li畛u (Memory access MEM) Ghi k畉t qu畉 vo t畛p thanh ghi (Write back WB C但u l畛nh sau kh担ng c畉n 畛i c但u l畛nh tr動畛c hon t畉t m畛i b畉t 畉u th畛c hi畛n m m畛i step s畉 動畛c th畛c hi畛n li棚n ti畉p, do 坦 c畉i thi畛n 叩ng k畛 v畛 t畛c 畛 th畛c hi畛n c叩c ch動董ng tr狸nh: H狸nh 3.5 Chu tr狸nh th畛c hi畛n l畛nh D動畛i 但y l s董 畛 ki畉n tr炭c MIPS khi th畛c hi畛n theo pipeline: H狸nh 3.6 S董 畛 ki畉n tr炭c MIPS pipeline C叩c b動畛c th畛c hi畛n m畛t c但u l畛nh:
  • 10. 9 畛c l畛nh t畛 b畛 nh畛 ( Instruction Fetch IF): S畛 d畛ng 畛a ch畛 l動u trong thanh ghi PC 畛 gi畉i m達 ra m達 m叩y c畛a c但u l畛nh ti畉p theo v l動u vo thanh ghi trung gian IF/ID. Gi叩 tr畛 PC 動畛c c畛ng th棚m 4 v l動u vo thanh ghi trung gian IF/ID. Gi畉i m達 l畛nh v 畛c c叩c thanh ghi (Intruction Decode ID): S畛 d畛ng m達 m叩y c畛a c但u l畛nh l動u trong thanh ghi IF/ID lm 畉u vo cho kh畛i Regfile. Kh畛i Control s畛 d畛ng ph畉n opcode c畛a m達 m叩y c畛a c但u l畛nh 畛 gi畉i m達 thnh c叩c t鱈n hi畛u i畛u khi畛n, ngoi t鱈n hi畛u SignEx 動畛c s畛 d畛ng cho kh畛i m畛 r畛ng, c叩c t鱈n hi畛u kh叩c 動畛c l動u vo thanh ghi trung gian ID/EX. 畛c c叩c thanh ghi Rs, Rt t畛 b畛 thanh ghi v l動u vo thanh ghi trung gian ID/EX Kh畛i m畛 r畛ng s畛 d畛ng t鱈n hi畛u SignEx t畛 kh畛i Control 畛 m畛 r畛ng d畉u hay m畛 r畛ng zero c畛a 16 bit th畉p c畛a m達 m叩y thnh 32 bit v l動u vo thanh ghi ID/EX. 畛a ch畛 c叩c thanh ghi Rs, Rt, Rd 動畛c l動u vo thanh ghi ID/EX. T鱈nh to叩n k畉t qu畉 c畛a c但u l畛nh ho畉c 畛a ch畛 (Execution EX): Kh畛i ALU s畛 d畛ng c叩c 畉u vo 達 動畛c l動u trong thanh ghi ID/EX 畛 t鱈nh to叩n v l動u k畉t qu畉 vo thanh ghi trung gian EX/MEM. M畛t b畛 mux 動畛c d湛ng 畛 l畛a ch畛n thanh ghi 鱈ch t畛 2 thanh ghi Rt, Rd v l動u 畛a ch畛 vo thanh ghi EX/MEM. 畛a ch畛 m畛i c畛a PC sau c但u l畛nh BNE c滴ng 動畛c t鱈nh to叩n trong kh畛i ny. M畛t s畛 b畛 mux 動畛c d湛ng 畛 l畛a ch畛n gi叩 tr畛 m畛i cho PC t畛 c叩c c但u l畛nh r畉 nh叩nh BNE, J, JR. C叩c t鱈n hi畛u i畛u khi畛n MemWrite, MemtoReg v RegWrite 動畛c l動u ti畉p vo thanh ghi EX/MEM. 畛c ho畉c ghi d畛 li畛u tr棚n b畛 nh畛 d畛 li畛u ( Memory access MEM): S畛 d畛ng k畉t qu畉 t鱈nh to叩n t畛 kh畛i ALU v t鱈n hi畛u i畛u khi畛n MemWrite t畛 thanh ghi EX/MEM 畛 th畛c hi畛n 畛c ho畉c ghi vo b畛 nh畛 d畛 li畛u. K畉t qu畉 畛c ghi vo thanh ghi trung gian MEM/WB. C叩c gi叩 tr畛 畉u ra c畛a ALU, 畛a ch畛 thanh ghi 鱈ch c湛ng v畛i 2 t鱈n hi畛u i畛u khi畛n MemtoReg v RegWrite 動畛c ghi l畉i vo thanh ghi MEM/WB Ghi k畉t qu畉 vo thanh ghi ( Write back WB): S畛 d畛ng t鱈n hi畛u MemtoReg t畛 thanh ghi MEM/WB 畛 l畛a ch畛n d畛 li畛u c畉n ghi vo thanh ghi. S畛 d畛ng 畛a ch畛 thanh ghi 鱈ch v t鱈n hi畛u cho ph辿p ghi RegWrite 畛 th畛c hi畛n c担ng vi畛c ghi d畛 li畛u vo b畛 thanh ghi.
  • 11. 10 1.6 C叩c 畛ng d畛ng c畛a b畛 x畛 l箪 MIPS Ki畉n tr炭c MIPS 動畛c s畛 d畛ng r畛ng r達i trong c叩c 畛ng d畛ng c担ng nghi畛p nh動 DVD player, Netwoking, camera s畛, DVD player (Pioneer DVR- 57H) Networking 3COM 3102 Business IP Phone 3COM 3106 Cordless Phone
  • 12. 11 Canon EOS 450D Sony playstation PSX (CPU Type: LSI/MIPS R3000A, Architecture: 32 bit, Clockspeed 33,8 MHz) Sony Playstation Portable ( CPU 333MHz MIPS R4000) [2]
  • 13. 12 Ph畉n 2. Ph但n t鱈ch v th畛c hi畛n ki畛m ch畛ng Ph畉n ny ph但n t鱈ch v ph但n chia c叩c ch畛c nng c畛a s畉n ph畉m t畛 坦 l畉p ra k畉 ho畉ch thi畉t k畉, ph叩t tri畛n s畉n ph畉m. 2.1 L畛a ch畛n ph動董ng ph叩p ki畛m ch畛ng 2.1.1. T畉m quan tr畛ng c畛a ki畛m ch畛ng thi畉t k畉 Ki畛m ch畛ng vi m畉ch l qu叩 tr狸nh t狸m ki畉m ph叩t hi畛n l畛i trong thi畉t k畉 vi m畉ch. L畛i trong thi畉t k畉 vi m畉ch l s畛 sai kh叩c trong ho畉t 畛ng c畛a thi畉t k畉 v畛i y棚u c畉u k畛 thu畉t 畉t ra. Nh畛ng l畛i ny c坦 th畛 x畉y ra trong qu叩 tr狸nh thi畉t k畉, qu叩 tr狸nh s畉n xu畉t vi m畉ch ho畉c qu叩 tr狸nh s畛 d畛ng vi m畉ch trong h畛 th畛ng. D湛 l l畛i x畉y ra trong qu叩 tr狸nh no th狸 chi ph鱈 畛 kh畉c ph畛c c滴ng th動畛ng kh叩 l畛n do 坦 c畉n ph叩t hi畛n s畛m l畛i 畛 tr叩nh t畛n nhi畛u th畛i gian, c担ng s畛c v ti畛n b畉n 畛 s畛a l畛i. 2.1.2. C叩c lo畉i ki畛m ch畛ng trong quy tr狸nh thi畉t k畉 vi m畉ch M畛t s畛 lo畉i ki畛m ch畛ng th動畛ng d湛ng trong quy tr狸nh thi畉t k畉 vi m畉ch l ki畛m ch畛ng b畉ng h狸nh v畉, ki畛m ch畛ng d湛ng m担 ph畛ng v ki畛m ch畛ng h狸nh th畛c. Ki畛m ch畛ng m担 ph畛ng Ki畛m ch畛ng h狸nh th畛c Ki畛m ch畛ng d畛a tr棚n xung nh畛p. C叩c gi叩 tr畛 畉u vo 動畛c 動a vo b畉n thi畉t k畉 h畛 th畛ng v cho ph辿p m叩y t鱈nh th畛c hi畛n vi畛c t鱈nh to叩n 畉u ra Ki畛m ch畛ng d湛ng c叩c c担ng th畛c, m担 h狸nh to叩n h畛c 畛 m担 h狸nh h畛 th畛ng v ch畛ng minh t鱈nh ho畉t 畛ng 炭ng c畛a m畉ch. 働u i畛m: Tr畛c quan v畛i ng動畛i s畛 d畛ng Kh担ng qu叩 kh坦 畛 thi畉t l畉p h畛 th畛ng m担 ph畛ng vi m畉ch 働u i畛m: Kh畉 nng t狸m 動畛c l畛i cao h董n Th畛i gian ki畛m ch畛ng c坦 th畛 nh畛 h董n 畛 bao ph畛 l畛n h董n Nh動畛c i畛m: 畛 bao ph畛 kh担ng cao T畛n ti nguy棚n t鱈nh to叩n, m畉t nhi畛u th畛i gian 畛 m担 ph畛ng h畉t c叩c tr動畛ng h畛p ki畛m ch畛ng cho vi m畉ch. T畛i 動u m畉ch 畉nh h動畛ng l畛n 畉n t畛c 畛 m担 ph畛ng Nh動畛c i畛m: Kh坦 h狸nh dung v thi畉t l畉p m担 h狸nh to叩n h畛c cho m畉ch Quy tr狸nh thi畉t l畉p m担 h狸nh to叩n h畛c m畉t nhi畛u th畛i gian
  • 14. 13 Th担ng qua vi畛c ph但n t鱈ch c叩c ph動董ng ph叩p ki畛m ch畛ng, 畛ng th畛i d畛a vo gi畛i h畉n th畛i gian hon thnh 畛 ti c滴ng nh動 m畛c 畛 ph畛c t畉p c畛a ki畉n tr炭c MIPS, nh坦m s畉 ti畉n hnh th畛c hi畛n ki畛m ch畛ng b畛 MIPS pipeline d湛ng ph動董ng ph叩p m担 ph畛ng. 2.2 M担 h狸nh ki畛m ch畛ng Nguy棚n t畉c c董 b畉n c畛a ki畛m ch畛ng l t畉o s畛 d動 th畛a n棚n nh坦m quy畉t 畛nh t畉o m畛t d畉ng tri畛n khai kh叩c c畛a thi畉t k畉, sau 坦 ti畉n hnh so s叩nh hai d畉ng tri畛n khai. Ph動董ng h動畛ng tri畛n khai: X但y d畛ng m担 h狸nh thi畉t k畉 MIPS Pipeline 畛 m畛c RTL d湛ng ng担n ng畛 Verilog v c担ng c畛 Quatus c畛a Altera. X但y d畛ng m担 h狸nh t鱈nh gi叩 tr畛 炭ng c畛a c叩c ph辿p to叩n d湛ng ng担n ng畛 C/C++ v s畛 d畛ng visual express 2010. M担 ph畛ng hai m担 h狸nh 畛ng th畛i v so s叩nh k畉t qu畉. 2.3 Th畛c hi畛n thi畉t k畉 MIPS Pipeline 2.3.1. Y棚u c畉u thi畉t k畉 Y棚u c畉u ch畛c nng B畛 x畛 l箪 MIPS 32 bit c坦 kh畉 nng th畛c hi畛n c叩c l畛nh c董 b畉n nh動 c叩c ph辿p to叩n s畛 h畛c (c畛ng, tr畛, nh但n ), truy c畉p b畛 nh畛 v畛i hai ch畛 th畛 (lw, sw), l動u tr畛, 畛c v ghi d畛 li畛u Th畛c hi畛n b畉ng ng担n ng畛 m担 t畉 ph畉n c畛ng VerilogHDL. Gi畉i quy畉t 動畛c c叩c xung 畛t c董 b畉n trong MIPS Pipeline. Y棚u c畉u phi ch畛c nng
  • 15. 14 B畛 x畛 l箪 MIPS sau khi 動畛c thi畉t k畉 kh担ng ch畛 畉t nh畛ng ch畛c nng k挑 thu畉t m c畉n 畉t y棚u c畉u phi ch畛c nng nh動 sau: D畛 s畛 d畛ng trong vi畛c m担 ph畛ng 叩p 畛ng 動畛c c叩c c但u l畛nh c董 b畉n D畛 dng n但ng c畉p v s畛a l畛i khi c畉n thi畉t. Gi叩 thnh h畛p l箪 MIPS ho畉t 畛ng 畛n 畛nh v c坦 畛 tin c畉y cao Nng l動畛ng ti棚u th畛 th畉p Tuy nhi棚n trong khu担n kh畛 c畛a bi t畉p l畛n ny, ch炭ng em ch畛 d畛ng l畉i 畛 vi畛c nghi棚n c畛u v m担 t畉 ki畉n tr炭c c畛a b畛 x畛 l箪 MIPS, kh担ng 畉t v畉n 畛 gi叩 thnh lm m畛t ti棚u ch鱈 叩nh gi叩. 2.3.2. S董 畛 thi畉t k畉 C叩c th担ng s畛 畉u vo v 畉u ra c畛a thi畉t k畉: C畛ng S畛 bit H動畛ng M担 t畉 IReady 1 Input T鱈n hi畛u b叩o b畛 nh畛 l畛nh s畉n sng g畛i d畛 li畛u IData 32 Input M達 l畛nh 動畛c l畉y t畛 b畛 nh畛 l畛nh DataIn 32 Input D畛 li畛u 動畛c 畛c ra t畛 b畛 nh畛 d畛 li畛u
  • 16. 15 DReady 1 Input T鱈n hi畛u i畛u khi畛n vi畛c 畛c d畛 li畛u vo t畛 b畛 nh畛 d畛 li畛u IAddr 30 Output 畛a ch畛 l畛nh trong b畛 nh畛 l畛nh c畉n th畛c thi IRead 1 Output T鱈n hi畛u i畛u khi畛n vi畛c 畛c 畛a ch畛 ch畛a l畛nh c畉n th畛c thi trong b畛 nh畛 l畛nh DRead 1 Output T鱈n hi畛u i畛u khi畛n vi畛c 畛c t畛 b畛 nh畛 d畛 li畛u DAddr 30 Output 畛a ch畛 trong b畛 nh畛 d畛 li畛u c畉n 畛c/ghi d畛 li畛u DWrite 4 Output T鱈n hi畛u i畛u khi畛n vi畛c ghi vo b畛 nh畛 d畛 li畛u DataOut 32 Output D畛 li畛u 動畛c ghi vo b畛 nh畛 d畛 li畛u 2.3.3. Thi畉t k畉 chi ti畉t t畛ng kh畛i Trong ph畉n ny nh坦m s畉 t畉p trung tr狸nh by m畛t s畛 kh畛i quan tr畛ng trong ki畉n tr炭c MIPS Pipeline Kh畛i Control Unit : L kh畛i sinh ra c叩c t鱈n hi畛u i畛u khi畛n cho con Mips khi c坦 l畛nh c畛a b棚n ngoi 動a vo d動畛i d畉ng m達 l畛nh. 畉u vo : Op[5:0] , Funct[ 5:0] l畉y t畛 m達 l畛nh. Zero l畉y t畛 畉u ra c畛a kh畛i ALU 畉u ra : C叩c t鱈n hi畛u 畛 i畛u khi畛n c叩c kh畛i kh叩c l : +) T鱈n hi畛u 動a d畛 li畛u t畛 b畛 nh畛 ra thanh ghi Memtoreg +) T鱈n hi畛u Regwrite, Memwrite +) T鱈n hi畛u ch畛n ALUSrc, PCSrc, RegDst +) T鱈n hi畛u ALUControl
  • 17. 16 Kh畛i Register File : L kh畛i thanh ghi c畛a con Mips. 畉u vo s畉 l 畛a ch畛 c畛a c叩c thanh ghi 動a vo t畛 m達 l畛nh v d畛 li畛u quay v畛 thanh ghi t畛 giai o畉n WB. 畉u ra s畉 l d畛 li畛u n畉m trong thanh ghi m 畛a ch畛 l畛nh tr畛 t畛i. 畉u vo : +) RegwriteW : t鱈n hi畛u cho ph辿p 畛c m達 l畛nh t動董ng 畛ng vo thanh ghi qua WB +) M達 l畛nh t動董ng 畛ng c畛a Rs, Rt : InstrD[25:21], InstrD[20:16] +) D畛 li畛u tr畉 v畛 WriteRegW[4:0] v t鱈n hi畛u k畉t qu畉 ResultW 畉u ra : D畛 li畛u 動畛c 畛c trong 2 thanh ghi m m達 l畛nh truy c畉p t畛i 畛a ch畛 c畛a n坦 Readdata1, Readdata2 Kh畛i ALU : L kh畛i ph畛c v畛 nhi畛m v畛 t鱈nh to叩n. 畉u vo : +) T鱈n hi畛u ch畛n lo畉i t鱈nh to叩n : c畛ng, tr畛, nh但n, chia : ALUControl 動畛c sinh ra t畛 ControlUnit +) D畛 li畛u 動畛c 畛c t畛 2 thanh ghi trong t畉p thanh ghi Register file Readdata1, Readdata2 32 bit 畉u ra: +) D畛 li畛u ra sau khi 動畛c t鱈nh to叩n ALUOut 32 bit. +) T鱈n hi畛u Zero s畛 d畛ng trong l畛nh r畉 nh叩nh beq, bne.
  • 18. 17 Kh畛i SignExt : Kh畛i 動畛c s畛 d畛ng v畛i nhi畛m v畛 chuy畛n 畛i d畛 li畛u d畛ch t畛 16 bit trong m達 l畛nh thnh 32 bit 畛 th畛c hi畛n cho nhi畛m v畛 t鱈nh to叩n. 畉u vo : D畛 li畛u d畛ch 動畛c l畉y trong 16 bit cu畛i c畛a m達 l畛nh Instr[15:0] 畉u ra : D畛 li畛u dich 動畛c chuy畛n thnh 32 bit b畉ng c叩ch l畉y 16 bit 畉u b畉ng bit th畛 16 v 16 bit cu畛i l Instr[15:0]. y[31:0] = [16(Instr[15]), Instr[15:0]]. T畛 c叩c kh畛i tr棚n v m畛t s畛 kh畛i logic c董 b畉n kh叩c ta x但y d畛ng 動畛c b畛 MIPS a xung nh畛p nh動 h狸nh v畉: 畛 a xung nh畛p ta chia l畛nh thnh 5 giai o畉n IF, ID, EX, MEM, WB. M畛i giai o畉n 動畛c th畛c hi畛n trong m畛t chu k畛. Trong s董 畛 g畛m c坦 c叩c kh畛i ch鱈nh nh動 l kh畛i Control Unit, kh畛i Register File, kh畛i ALU, kh畛i SignExt. T畛 MIPS a xung nh畛p ch炭ng ta ti畉n hnh pipeline b畛 vi x畛 l箪 b畉ng c叩ch th棚m vo c叩c thanh ghi tr畉ng th叩i IFID, IDEX, EXMEM, MEMWB, PC. C叩c thanh ghi s畉 th畛c hi畛n nhi畛m v畛 chuy畛n ti畉p d畛 li畛u gi畛a c叩c kh但u
  • 19. 18 2.4 Th畛c hi畛n c叩c ph辿p to叩n trong MIPS d湛ng C++ Trong ph畉n ny nh坦m s畛 d畛ng c叩c ph辿p to叩n c坦 trong th動 vi畛n C 畛 t鱈nh to叩n. C叩c ph辿p to叩n (Instruction) 動畛c s畛 d畛ng l : c畛ng, tr畛, nh但n, chia 動畛c m達 h坦a t動董ng 畛ng v畛i c叩c s畛 t畛 0 畉n 3 v 動畛c sinh ng畉u nhi棚n trong file Instruction.txt, c叩c to叩n h畉ng(Data) c滴ng 動畛c sinh ra ng畉u nhi棚n trong file data.txt. C叩c gi叩 tr畛 trong hai file ny c滴ng l 畉u vo cho qu叩 tr狸nh m担 ph畛ng m畉ch b畉ng techbench. Sau khi t鱈nh to叩n b畉ng c叩c ph辿p to叩n c坦 trong th動 vi畛n C, k畉t qu畉 畉u ra s畉 動畛c ghi vo file output.txt. H狸nh b棚n d動畛i s畉 minh h畛a cho qu叩 tr狸nh t鱈nh to叩n s畛 d畛ng th動 vi畛n C: K畉t qu畉 so s叩nh gi叩 tr畛 畉u ra c畛a hai ki畛u t鱈nh to叩n s畉 ki畛m ch畛ng 畛 ch鱈nh x叩c c畛a vi畛c thi畉t k畉t m畉nh (verilog). T畛 坦 ta c坦 th畛 ph叩t hi畛n c叩c l畛i (n畉u c坦) trong qu叩 tr狸nh thi畉t k畉.
  • 20. 19 Code C++: #include<iostream> #include<stdio.h> #include<conio.h> #include <cstdlib> #include<ctime> using namespace std; long add (long a, long b); long sub (long a, long b); long mul (long a, long b); long divi (long a, long b); int main() { int A[100],B[100],KQ[100]; long i,j ,a,b ; int test_case; srand(time(0)); //L畉y gi叩 tr畛 to叩n h畉ng ng畉u nhi棚n r畛i 動a vo file Toanhang.txt freopen("instruction.txt","w",stdout); for (int n=1;n<=50;n++) { int x=rand()%4; cout<<x<<" "; } fclose(stdout); //L畉y hai to叩n t畛 ng畉u nhi棚n r畛i 動a vo file 畉u vo input.txt freopen("data.txt","w",stdout); for (int m=1;m<=50;m++) { //srand(time(0)); a = rand(); b = rand(); cout<<a<<" "<<b<<endl ; } fclose(stdout); //Cho to叩n h畉ng vo m畉ng A freopen("data.txt","r",stdin); for ( i=1;i<=50;i++) { cin>>A[i*2-1]>>A[i*2]; } fclose(stdin); //Cho to叩n t畛 vo m畉g B freopen("instruction.txt","r",stdin); for ( j=1;j<=50;j++) cin>>B[j]; fclose(stdin); for (test_case=1;test_case<=50;test_case++){ switch (B[test_case]) {
  • 21. 20 case 0: { KQ[test_case]=add(A[test_case*2-1],A[test_case*2]); break; } case 1: { KQ[test_case]=sub(A[test_case*2-1],A[test_case*2]); break; } case 2:{ KQ[test_case]=mul(A[test_case*2-1],A[test_case*2]); break; } case 3:{ KQ[test_case]=divi(A[test_case*2-1],A[test_case*2]); break; } default: cout<< "ma lenh sai"; } } // ghi k畉t qu畉 vo file 畉u ra output.txt freopen("output.txt","w",stdout); for (int k=1;k<=50;k++) cout<<KQ[k]<<" "; fclose(stdout); } long add(long a,long b) { return a+b; } long sub (long a,long b) { return a-b; } long mul(long a,long b) { return a*b; } long divi ( long a, long b) { return a/b; }
  • 22. 21 Ph畉n 3. K畉t qu畉 t畛ng h畛p v m担 ph畛ng Ph畉n ny tr狸nh by v畛 c叩c ph動董ng 叩n k畛 thu畉t 動畛c s畛 d畛ng 畛 thi畉t k畉 s畉n ph畉m. C坦 th畛 l l畛a ch畛n c叩c linh ki畛n ph畉n c畛ng cho m畉ch. C坦 th畛 l l畛a ch畛n thu畉t to叩n th畛c hi畛n m畛t ch畛c nng m畉ch. C坦 th畛 l l畛a ch畛n ki畉n tr炭c m畉ch 3.1 S董 畛 kh畛i c畛a s畉n ph畉m Ph畉n ny lm r探 c叩c kh畛i th畛c hi畛n ch畛c nng trong m畉ch, k畉t n畛i v giao ti畉p gi畛a c叩c kh畛i. Ph畉n ny ph畉i lm r探 動畛c t鱈n hi畛u vo v ra kh畛i t畛ng kh畛i. 3.2 Thu畉t to叩n, linh ki畛n, ki畉n tr炭c m畉ch Ph畉n ny lm r探 vi畛c l畛a ch畛n thu畉t to叩n hay linh ki畛n ph畉n c畛ng hay ki畉n tr炭c m畉ch 畛 th畛c hi畛n c叩c kh畛i ch畛c nng M畛i kh畛i ch畛c nng n棚n n棚u ra 鱈t nh畉t 2 ph動董ng 叩n th畛c hi畛n v l畛a ch畛n d畛a tr棚n c叩c ti棚u ch鱈 k畛 thu畉t 畛nh l動畛ng.
  • 23. 22 Ph畉n 4. 叩nh gi叩 k畉t qu畉 v h動畛ng ph叩t tri畛n Ph畉n ny m担 t畉 vi畛c thi畉t k畉 c畛 th畛 t畛ng kh畛i ch畛c nng. N畉u l m畉ch ph畉n c畛ng th狸 tr狸nh by s董 畛 nguy棚n l箪, m担 ph畛ng s董 畛 nguy棚n l箪 c畛a m畉ch. N畉u l ph畉n m畛m th狸 tr狸nh by l動u 畛 thu畉t to叩n, c畉u tr炭c d畛 li畛u, khai b叩o c叩c hm.
  • 24. 23 [1] http://en.wikipedia.org/wiki/MIPS_instruction_set, truy c畉p ngy 25/01/2015. [2] http://en.wikipedia.org/wiki/PlayStation_Portable, truy c畉p ngy 25/01/2015.