Giả sử một chương trình Y kh c được chạy trên máy tính, mất 0.05s.. Biết chương trình Y chỉ chứa hai loại lệnh là A và B; CPI trung bình của m y t nh đối với chương trình Y này là 2.5; v
Trang 1Học kỳ II – năm 2014-2015 PHẦN 2 TỰ LUẬN (4đ) – 2 câu
1 [2đ] Chuyển đoạn lệnh C dưới đây sang mã assembly MIPS (biết các biến đều là số nguyên và mỗi phần tử
của mảng chứa 1 từ nhớ/4 bytes)
Các biến tương ứng với các thanh ghi trong ngoặc: i ($s0), j ($s1), final ($s2)
A là mảng có địa chỉ nền/cơ sở lưu trong thanh ghi $s3
C code
if (i < j)
{
final = A[i];
i = i + 1;
}else
{
final = A[j];
j = j - 1;
}
MIPS code (sinh viên làm bài tại đây)
(Dưới đây là code gợi ý, tất cả code tương tự đúng đều được chấp nhận)
bge $s0, $s1, else sll $t0, $s0, 2 add $t0, $t0, $s3
lw $s2, 0($t0) addi $s0, $s0, 1
j exit else:
sll $t0, $s1, 2 add $t0, $t0, $s3
lw $s2, 0($t0) addi $s0, $s1, -1 exit:
2 [2đ] Cho một m y t nh có tập lệnh g m 5 lớ lệnh , B, C, D E CPI tương ứng của từng lớp lệnh như
bảng sau:
CPI Class A CPI Class B CPI Class C CPI Class D CPI class E
a Giả sử một chương trình X chứa 15% lệnh nhóm A, 10% lệnh nhóm B, 25% lệnh nhóm C, 30% lệnh nhóm
D và 20% lệnh nhóm E CPI trung bình của m y t nh tương ứng với chương trình X l bao nhiêu?
b Giả sử một chương trình Y kh c được chạy trên máy tính, mất 0.05s Biết chương trình Y chỉ chứa hai loại lệnh là A và B; CPI trung bình của m y t nh đối với chương trình Y này là 2.5; và máy tính có tần số 2GHz Hỏi chương trình Y chứa bao nhiêu lệnh A, bao nhiêu lệnh B?
(sinh viên làm bài tại đây)
Trang 2Đề 001 (Tài liệu tham khảo xem trang thứ 4 của đề thi)
2
a CPI trung bình chương trình X = 0.15 x 4 + 0.1 x 3 + 0.25 x 2 + 0.3 x 1 + 0.2 x 2 = 2.1
b Không t n tại một chương trình Y như thế
Cách 1 Lập luận:
Chương trình Y chỉ chứa hai nhóm lệnh A và B; CPI của A là 4 và CPI của B là 3; vậy CPI trung bình của chương trình Y hải lớn hơn 3 nhỏ hơn 4 Nếu chương trình Y có CPI chỉ bằng 2.5 không t n tại một chương trình như thế
Cách 2 Tính toán:
Đặt x là số lệnh A, y là số lệnh B
CPU time (thời gian chạy chương trình) = 0.05 s
CPI (trung bình chương trình Y) = 2.5
Clock rate = 2 GHz = 2 x 109Hz
Instruction count (tổng số lệnh chương trình = (0.05 x 2 x 109)/2.5 = 0.04 x 109
x + y = 0.04 x 109 (1)
Mặt khác, ta có:
CPI (trung bình chương trình Y) = x
x y CPI(lệnh A) + y
x y CPI(lệnh B)
Từ (1) 2.5 = 9
0.04 10
x
0.04 10
y
× 3
4x + 3y = 0.1 × 109 (2)
Giải hệ hương trình (1) (2), với điều kiện x và y phải là số không âm vô nghiệm Không t n tại một chương trình Y như ậy
Lưu ý:
Câu a: 1 điểm
Câu b: 1 điểm (Sinh viên đưa ra được hệ phương trình (1) và (2) nhưng không kết luận được cho 0.75)