You are on page 1of 5

KIỂM TRA CUỐI KỲ

CẤU TRÚC MÁY TÍNH


(Nhóm 15)

Câu 1: Phát hiện các Hazard trong đoạn mã MIPS sau khi chạy trên bộ vi xử lý pipeline
5 stages:
• Phụ thuộc nào là Data Hazard cần giải quyết bằng Forwarding.
• Phụ thuộc nào là Data Hazard cần giải quyết bằng stall (bubble) và forwarding.
add $3, $4, $2
sub $5, $3, $1
lw $6, 200($3)
add $7, $3, $6

Có những data Hazard và cách giải quyết:

Câu 2: Xét đoạn mã MIPS sau khi chạy trên bộ xử lý ư34pipeline 5 stages:
sw $6, 0($7)
lw $8, 0($7)
add $9,c $8, $2
• Phát hiện các Hazard và cách giải quyết của bộ xử lý
• Compiler có thể thay đổi đoạn mã để tránh việc phải chèn thêm 1 bubble như thế
nào?

• Phát hiện Hazard và cách giải quyết của bộ xử lý


Lệnh sw $6, 0($7) : Memory[$7+0] = $6 : đưa giá trị thanh ghi $6 vào A[0] với
$7 là địa chỉ của mảng A
Lệnh lw $8, 0($7) : $8 = Memory[$7 + 0] : lấy giá trị A[0] từ bộ nhớ đưa vào
thanh ghi $8.
• K có Hazard
Giữa lệnh lw $8, 0($7)và add $9, $8, $2 có hazard thông qua thanh ghi $8, bộ xử
lý giải quyết bằng stall.
• Compiler có thể thay đổi đoạn mã để tránh chèn stall:
sw $6, 0($7)
lw $8, 0($7)
nop
add $9, $8, $2

Câu 3: 1 cache Direct Mapped 16 one-word blocks. Cho tham chiếu bộ nhớ như bên
dưới, xác định tình trạng của cache:
Word address Memory Block address Hit or Miss Type
1 1 Miss-CS
134 134 Miss-CS
212 212 Miss-CS
1 1 Hit
135 135 Miss-CS
213 213 Miss-CS
162 162 Miss-CS
161 161 Miss-CS
2 2 Miss-CS
44 44 Miss-CS
41 41 Miss-CS
221 221 Miss-CS

• Nội dung sau cùng trong cache:


Block Data at Memory Block Address Block Data at Memory Block Address
0 8
1 1 161 9 41
2 162 2 10
3 11
4 212 12 44
5 213 13 221
6 134 14
7 135 15

Câu 4: Cho hệ thống nhớ:


Level Hit Time Hit Rate Access Time
L1
L2 5 cycles 90% 5 + 0.1*100=15 cycles
Main Memory 50 cycles 99% 50 + 0.01*5000=100 cycles
Disk 5000 cycles 100% 5000 cycles
• Cache L1:
• Direct Mapped: Hit Time 1cycle, 80% Hit Rate
• 2-way Set Associate: Hit Time 2 cycles, 90% Hit Rate
• Fully Associate: Hit Time 3 cycles, 95% Hit Rate
Kiểu thực hiện nào cho 1 hệ thống nhớ nhanh nhất?

• Direct Mapped:
AMAT = 1 + 15 * 0.2 = 4 cycles
• 2 way SA:
AMAT = 2 + 15 * 0.1 = 3.5 cycles
• Fully Associate:
AMAT = 3 + 15 * 0.05 = 3.75 cycles
Vậy Cache L1 theo kiểu 2 way SA là tốt nhất

Câu 5: Cho hệ thống nhớ:


Level Hit Time Hit Rate
L1 1 cycle 90%
L2 5 cycles 80%
Main Memory 100 cycles 95%
Disk 100000 cycles 100%
• Giả sử chỉ được thay đổi Miss Rate đối với 1 mức duy nhất (L1, L2 hoặc Main
Memory) thì thay đổi mức nào là tốt nhất?
• Giảm Miss Rate 1 nửa
• Tăng Miss Rate gấp đôi

• Giảm Miss rate 1 nửa:


• Giảm Memory:
AMAT = [(100000 x 0.025 +100) x 0.2 + 5] x 0.1 + 1 = 53.5 cycles
• Giảm L2:
AMAT = [(100000 x 0.05 +100) x 0.1 + 5] x 0.1 + 1 = 52.5 cycles
• Giảm L1:
AMAT = [(100000 x 0.05 +100) x 0.1 + 5] x 0.05 + 1 = 52.25 cycles
• Giảm Miss Rate 1 nửa vs Cache L1 là tốt nhất

• Tăng Miss rate gấp đôi:


• Tăng Memory:
AMAT = [(100000 x 0.1 +100) x 0.2 + 5] x 0.1 + 1 = 203.5 cycles
• Tăng L2:
AMAT = [(100000 x 0.05 +100) x 0.4 + 5] x 0.1 + 1 = 205.5 cycles
• Tăng L1:
AMAT = [(100000 x 0.05 +100) x 0.2 + 5] x 0.2 + 1 = 206 cycles
• Tăng Miss Rate gấp đôi với Main memory là tốt nhất

Câu 6: Tính toán tổng số bit cần thiết để thực hiện đối với từng bộ nhớ cache có kích cỡ
16 word được thực hiện khác nhau sau đây (bộ nhớ định địa chỉ theo word sử dụng địa
chỉ 32 bit)
• Direct Mapped, block size: 1 word, write back
• Direct Mapped, block size: 4 word, write back
• 2 way Set Associative, block size: 1 word, write through
• Fully associate, block size: 1 word, write back, fetch on write miss

Bộ nhớ 232 word


• Direct Mapped, block size 1 word, write back
• Số block trong cache: 16 block
• Số block trong bộ nhớ 232
• Write back, cần 1 bit dirty cho mỗi block
• Mỗi word cần 1 bit valid, do mỗi block 1 word, cần 1 bit valid trong 1 block
• Số bit data trong 1 block: 1word = 4 byte = 32 bit
• Số bit tag trong 1block: 232/24 = 228 nên cần 28 bit tag.
• Tổng số bit cần thực hiện: (1 + 1 + 28 + 32) x 16 = 992 bits

• Direct Mapped, block size 4 word, write back


• Số block trong cache: 4 block
• Số block trong bộ nhớ 232/22 = 230 block
• Write back, cần 1 bit dirty cho mỗi block
• Mỗi word cần 1 bit valid, do mỗi block 1 word, cần 1 bit valid trong 1 block
• Số bit data trong 1 block: 4 word = 16 byte = 128 bit
• Số bit tag trong 1block: 230/22 = 228 nên cần 28 bit tag.
• Tổng số bit cần thực hiện: (1 + 4 + 28 + 128) x 4 = 644 bits
• 2 way SA, block size 1 word, write through:
• Write through, k cần dirty
• Số block trong cache: 16 block
• 1 set có 2 block, có 8 set
• Số block trong bộ nhớ 232 block
• Mỗi word cần 1 bit valid, do mỗi block 1 word, cần 1 bit valid trong 1 block
• Số bit data trong 1 block: 1word = 4 byte = 32 bit
• Số bit tag trong 1block: 232/23 = 229 nên cần 29 bit tag.
• Tổng số bit cần thực hiện: (1 + 29 + 32) x 8 x 2 = 992 bits

• Fully associate, block size: 1 word, write back, fetch on write miss:
• Số block trong cache: 16 block
• Fetch on write miss, không cần bit valid
• Số block trong bộ nhớ 232
• Write back, cần 1 bit dirty cho mỗi block
• Số bit data trong 1 block: 1word = 4 byte = 32 bit
• Số bit tag trong 1block: 232/1 = 232 nên cần 32 bit tag
Tổng số bit cần thực hiện: (1 + 32 + 32) x 16 = 1040 bits

Câu 7: 1 cache 2-way Set Associate 16 one-word blocks. Cho tham chiếu bộ nhớ như
bên dưới, xác định tình trạng cache:

Word address Memory Block address Hit or Miss Type


1 1 Miss-CS
4 4 Miss-CS
8 8 Miss-CS
5 5 Miss-CS
20 20 Miss-CS
17 17 Miss-CS
19 19 Miss-CS
56 56 Miss-CS
9 9 Miss-CS
11 11 Miss-CS
4 4 Hit
43 43 Miss-CS
5 5 Hit
6 6 Miss-CS
9 9 Hit
17 17 Hit

• Nội dung sau cùng trong cache:


Set Data at Memory Block Address Data at Memory Block Address
0 8 56
1 1 9 17
2
3 19 43 11
4 4 20
5 5
6 6
7

Câu 8: Tính CPU excution time liên quan tới câu 7 (Bó tay vì không ai nhớ đề)
Áp dụng Miss Rate từ câu 7. Cho thời gian stall time tính theo chu kỳ của 3 level. Mỗi
level cho chu kỳ truy cập vào chúng ( đơn vị là cycles). Tính thời gian truy cập trung
bình của mỗi level.
Câu b là tính hiệu suất.

Câu 9: Tìm mã máy (nhị phân) cho 2 lệnh của MIPS: Shift Left Logical (sll) và lệnh nop.
Có nhận xét gì khi so sánh 2 lệnh này?
sll $10, $15, 20
nop

Mã máy:
• sll $10, $15, 20 : 000000 00000 01111 01010 10100 000000
• nop : 000000 00000 00000 00000 00000 000000
• nhận xét:lê ̣nh sll và lê ̣nh nop có cùng 6 bit opcode và 6 bit function 2 lê ̣nh đều có
khuôn dạng lê ̣nh R
• trong khi lê ̣nh sll thao tác với thanh ghi $15 rồi lưu lại trên thanh ghi $10 còn nop
thì đéo làm gì cả

Câu 10: Thiết kế datapath và control cho 2 lệnh sll và nop của bộ xử lý single cycle (Lưu
ý về giá trị của tín hiệu điều khiển cần thiết):

You might also like