Kim tra cui HK Kiến trúc Máy tính CS2009 Trang 1/2
Trường ĐH Bách Khoa TP.HCM
Khoa KH & KT Máy tính
ĐỀ THI CUI HC K I 2009-2010
Môn Kiến trúc Máy tính (CSE504002)
Thi gian: 90 phút
(Đưc tham kho tài liu, không được s dng máy tính laptop)
Bài 1: (2 điểm) Mt nhóm k đang thiết kế mt b x đơn giản. H phi chn la gia
cách hin thc theo kiu pipeline không pipeline. Các thông s thiết kế cho 2 cách hin thc
này được th hin trong bng sau:
Thông s thiết kế
Cách hin thc
pipeline
Cách hin thc
không pipeline
Tốc độ xung clock
600MHz
450MHz
CPI cho các lnh truy xut b nh
2.5
1.2
CPI cho các lnh s hc/lun lý
1
1
CPI cho các lệnh điều khin
2
1
a. Cho một chương trình bao gồm 20% các lnh s hc/lun lý, 10% các lệnh điều khin và
70% c lnh truy xut b nh. Xác định CPI trung bình cho mi cách hin thc. Cách
thiết kế nào hiu qu hơn?
Average CPI for Pipelined Version = (0.2*1 + 0.1*2 + 0.7*2.5) = 2.15
Average CPI for Non-Pipelined Version = (0.2*1 + 0.1*1 + 0.7*1.2) = 1.14
CPU execution time for Pipelined version = 2.15/(600 Mhz) = 3.58ns
CPU execution time for Non-Pipelined version = 1.14/(450 Mhz) = 2.53ns
Cách hin thc không pipeline nhanh hơn.
b. Cho một chương trình bao gồm 75% các lnh s hc/lun lý, 15% các lệnh điều khin
10% c lnh truy xut b nh. Xác định CPI trung bình cho mi cách hin thc. Cách
thiết kế nào hiu qu hơn?
Average CPI for Pipelined Version = (0.75*1 + 0.15*2 + 0.1*2.5) = 1.3
Average CPI for Non-Pipelined Version = (0.75*1 + 0.15*1 + 0.1*1.2) = 1.02
CPU execution time for Pipelined version = 1.3/(600 Mhz) = 2.16ns
CPU execution time for Non-Pipelined version = 1.02/(450 Mhz) = 2.26ns
Cách hin thc pipeline nhanh hơn.
Kim tra cui HK Kiến trúc Máy tính CS2009 Trang 2/2
Bài 2: (2.5 điểm) Dùng hp ng MIPS viết phiên bn hp ng cho đoạn chương trình C sau đây:
int A[100], B[100];
for (i=1; i < 100; i++) {
A[i] = A[i-1] + B[i];
}
Gi thiết rằng ban đầu ch có địa ch nn ca mảng A và B được lưu trong thanh ghi $a0$a1.
Đáp án
li $t0, 1 # Starting index of i
li $t5, 100 # Loop bound
loop: lw $t1, 0($a1) # Load A[i-1]
lw $t2, 4($a2) # Load B[i]
add $t3, $t1, $t2 # A[i-1] + B[i]
sw $t3, 4($a1) # A[i] = A[i-1] + B[i]
addi $a1, 4 # Go to i+1
addi $a2, 4 # Go to i+1
addi $t0, 1 # Increment index variable
bne $t0, $t5, loop # Compare with Loop Bound
halt: nop
Kim tra cui HK Kiến trúc Máy tính CS2009 Trang 3/2
Bài 3: (2 điểm) Cho mt b x b nh vt 16KB, đánh địa ch theo tng byte mt
cache có kích thước mi dòng là 8 byte.
a. Gi s cache dùng phương thc ánh x trc tiếp với trường tag trong đa ch là 7 bit.
Trình bày khung dạng địa ch b nh xác đnh các thông s sau: s khi trong b nh
chính và s dòng trong cache
S đơn vị có kh năng định v địa ch là byte
B nh có 16KB = 214 dùng địa ch 14 bit để xác định byte.
Mt khi trong b nh chính bng mt dòng trong cache (8 byte = 23) nên b nh
chính có 214/23 = 211 khi
Mt dòng trong cache 8 byte nên cn 3 bit cho phn byte offset, phn tag 7 bit
s bit để xác định dòng 14-7-3=4 => s dòng trong cache 24 = 16 dòng.
Tag
Line
Byte
b. Gi s cache dùng phương thức ánh x fully-associative. Trình bày khung dạng địa ch b
nh và xác định các thông s sau: s khi trong b nh chính và s dòng trong cache
Tương tự câu trên, s đơn vị có kh năng định v địa ch là byte, bô nh chinh có 211 khi.
Mt dòng trong cache có 8 byte nên cn 3 bit cho phn byte offset, phn tag 14-
3=11 bit. S dòng trong cache không xác định.
Tag
Byte
11 bit
3 bit
c. Gi s cache dùng phương thức 4-way set associative với trường tag trong địa ch là 8 bit.
Trình bày khung dạng địa ch b nh xác định các thông s sau: s khi trong b nh
chính, s dòng trong cache, s tp hp trong cache
S đơn vị có kh năng định v địa ch là byte.
B nh chinh có 211 khi.
Mt dòng trong cache 8 byte nên cn 3 bit cho phn byte offset, phn tag 8 bit
s bit để xác định tp hp 14-8-3=3 bit => 23 tp hp trong cache, mi tp
hp có 4 dòng => có tt c 23 * 4 = 25 dòng trong cache.
Tag
Set
Byte
Kim tra cui HK Kiến trúc Máy tính CS2009 Trang 4/2
Bài 4: (1.5 điểm) Mt s b x thanh ghi c đặc biệt để cha các bit trạng thái như: bit
carry, bit overflow, … Mô tả s khác nhau v chc năng giữa bit carry và bit overflow.
Cho ví d mt tác v s học để minh ha s khác nhau này.
C carry được thiết lp khi tác v s hc tạo ra bit carry vượt khi v trí MSB ca các toán hng.
C overflow được thiết lp khi tác v s hc tạo ra bit carry vượt khi v trí MSB ca thanh ghi
vt lý cha toán hng.
Overflow xảy ra khi kích thước thanh ghi không đủ lớn để gi kết qu ca tác v s hc, trong
khi c carry được dùng để ch th v trí MSB ca giá tr kết qu lớn hơn (hoặc nh hơn trong
trường hp n) giá tr toán hng 1 bit.
Ví d cng 2 s nguyên 0x0100 và 0x0110 được lưu trong các thanh ghi 16 bit, kết qu thu được
0x1010, c carry được thiết lập, nhưng cờ overflow li không có.
Kim tra cui HK Kiến trúc Máy tính CS2009 Trang 5/2
Bài 5: (2 điểm) Cho đoạn chương trình sau:
loop: sw $t0, 0($t0)
lb $t1, 0($t0)
beq $t1, $t2, exit
addi $t0, $t0, 1
j loop
exit:
Gi s trước khi thực thi đoạn chương trình trên giá tr ca thanh ghi
$t0 = 0xFFFFFFF1
$t2 = 0x00000001
Xác định thi gian b x lý MIPS đơn chu k thực thi đoạn chương trình trên. Cho biết:
Thi gian thc thi ca lnh lb bng thi gian thc thi ca lnh lw
Thi gian thc thi ca lnh addi bng thi gian thc thi ca lnh add
Thi gian thc thi ca các khi chức năng chính như sau:
Memory (đọc hoc ghi): 100ps
Register file (đọc hoc ghi): 20ps
ALU và các b cng: 30ps
Thi gian thc thi bằng 0 đi vi các b chn kênh (multiplexor), b điều khin (control
unit), b m rng du (sign extension unit), truy xut thanh ghi PC.
Đáp án:
Thi gian thc thi ca tng câu lnh:
Câu lnh
S ln
thc thi
Np lnh
Đọc t
thanh ghi
Tác v
ca ALU
Truy xut
b nh
Ghi vào
thanh ghi
Thi gian
thc thi
sw
17
100
20
30
100
250
lb
17
100
20
30
100
20
270
beq
17
100
20
30
150
addi
16
100
20
30
20
170
j
16
100
100
($t0 và $t1 có cùng giá tr chy t 0xFFFFFFF1 đến 0xFFFFFFFF, 0x00000000, 0x00000001
17 giá tr; hai lnh sau lnh beq s không thc hin ln cui)
Tng thi gian thc thi = (250+270+150)*17 + (170+100)*16 = 15.710ps