Với các biến nguyên i, j được gán lần lượt vào thanh ghi $s0, $s1; và địa chỉ nền của mảng số nguyên A được lưu trong thanh ghi $s3... Tính thời gian trễ lớn nhất cho lệnh trên e Nếu đổ
Trang 11
TRƯỜNG ĐẠI HỌC CNTT
KHOA KỸ THUẬT MÁY TÍNH
ĐỀ THI CUỐI KỲ MÔN: KIẾN TRÚC MÁY TÍNH
Thời gian: 90 phút Ghi chú: Được sử dụng tài liệu
Câu 1 (2 điểm)
a) Chuyển đổi mã assembly MIPS sang dạng mã máy MIPS: (1 điểm)
lw $s5, -28 ($s1)
sltiu $t1, $t2, 19
b) Chuyển dòng lệnh C dưới đây sang mã assembly của MIPS Với các biến nguyên i, j được gán lần lượt vào thanh ghi $s0, $s1; và địa chỉ nền của mảng số nguyên A được lưu trong thanh ghi
$s3 (1 điểm)
if (i<j) A[i]= i;
else A[i] = j;
Câu 2 (1 điểm)
Cho 2 số nguyên A và B trong hệ 10: A = 7, B = 3
Tính thương số và phần dư của A chia B theo cấu trúc phần cứng như trong hình 1, giả sử phép chia làm việc trong phạm vi số không dấu 3 bits (chú ý: sinh viên phải trình bày rõ ràng nội dung của từng thanh ghi qua từng bước)
Hình 1 (Dùng cho câu 2)
Câu 3 (2 điểm)
Cho 2 số thực dấu chấm động (floating-point) A và B trong hệ 10:
A = −0.0356125 x 102, B = 1125 x 10-2
a) Biểu diễn A và B theo chuẩn IEEE-754 độ chính xác đơn (1 điểm)
b) Giả sử A và B đang được biểu diễn theo IEEE-754 độ chính xác đơn, tính kết quả của A x B (chú
ý: trình bày rõ ràng từng bước tính toán và kết quả cuối cùng cũng phải được biểu diễn dưới dạng
IEEE-754 độ chính xác đơn) (1 điểm)
Câu 4 (2 điểm)
Cho đoạn chương trình sau được thực thi trong kiến trúc pipeline 5 tầng:
lw $s1, 4($s2)
add $s4, $s3, $s1
and $s5, $s4, $s1
Sử dụng lệnh nop để giải quyết nếu có xung đột dữ liệu (data hazard) trong hai trường hợp sau:
Trang 22
a Không dùng kỹ thuật “forwarding” (1 điểm)
b Dùng kỹ thuật “forwarding” (1 điểm)
Chú ý: Vẽ rõ ràng hình ảnh các chu kỳ pipeline khi đoạn lệnh trên thực thi
Câu 5 (3 điểm)
Cho một kiến trúc máy tính MIPS với datapath và tín hiệu điều khiển như hình 2
Đối với lệnh: addi Rt, Rs, Imm (ý nghĩa Rt = Rs + Imm)
a) Những block nào sẽ cần sử dụng cho lệnh trên, block nào không cần sử dụng?
b) Cho biết giá trị của các tín hiệu điều khiển?
c) Những block nào có cho dữ liệu output nhưng dữ liệu này không sử dụng? Những block nào
không cho output?
d) Cho thời gian trễ như sau: I-Mem=400ps, Add=100ps, Mux=30ps, ALU=120ps, Regs=200ps,
D-Mem=400ps, Control=100ps Tính thời gian trễ lớn nhất cho lệnh trên
e) Nếu đổi lệnh trên thành “addi Rt, Rs, Rx, Imm” thì phải thay đổi hay thêm vào hình trên những
block nào?
Hình 2 (Dùng cho câu 4)
Xác nhận trưởng bộ môn Giảng viên ra đề
Trang 3Câu 1 (1,5 điểm)
Sinh viên muốn thực hiện lệnh if, phải biết tận dụng các lệnh rẽ nhánh được học (hoặc beq hoặc bne)
slt $t0, $s0, $s1 // if (i<j) $t0=1 else $t0=0
sll $t1, $s0, 2
add $t1, $t1, $s3 //now $t1 holds the address of A[i] in D-mem
beq $t0, $zero, Else
sw $s0, 0($t1) // A[i] = i
j Exit
Else: sw $s1, 0($t1) //A[i] = j
Exit:
Câu 2 (1,5 điểm)
7(10) = 111(2)
3(10) = 11(2)
Rem < 0, R= R + D, Q<< 000 011 000 000 111
Rem < 0, R=R + D, Q<< 000 001 100 000 111
Rem > 0, Q<<, Q0 = 1 001 000 110 000 001
Rem < 0, R=R + D, Q<< 010 000 010 000 001
Kết quả: Thương số = 010(2) = 2(10); phần dư = 1
Trang 4Câu 4 (2 điểm)
a Không “forwarding” (1 điểm)
lw $s1, 4($s2)
nop
nop
add $s4, $s3, $s1
nop
nop
and $s5, $s4, $s1
Hình ảnh các chu kỳ pipeline khi đoạn lệnh trên thực thi:
lw $s1, 4($s2) IF ID EX MEM WB
nop
nop
add $s4, $s3, $s1 IF ID EX MEM WB
nop
nop
b Có “forwarding” (1 điểm)
lw $s1, 4($s2)
nop
add $s4, $s3, $s1
and $s5, $s4, $s1
Hình ảnh các chu kỳ pipeline khi đoạn lệnh trên thực thi:
lw $s1, 4($s2) IF ID EX MEM WB
nop
add $s4, $s3, $s1 IF ID EX MEM WB
and $s5, $s4, $s1 IF ID EX MEM WB
Trang 5Câu 5 (3 điểm)
addi Rt, Rs, Imm (ý nghĩa Rt = Rs + Imm)
a) Tất cả các block đều được sử dụng ngoài trừ Data memory (0,5đ)
b) Giá trị của các tín hiệu điều khiển? (0,5đ)
c) (0,5đ)
- Những block có cho dữ liệu output nhưng dữ liệu này không sử dụng: Bộ cộng thứ 2 (bộ cộng
mà có một input qua khối shift_left_2 trước khi vào bộ cộng)
- Những block không cho output: Data memory
d) (0,5đ)
Thời gian trễ lớn nhất cho lệnh trên = I-Mem + Mux + Regs + Mux + ALU + Mux + Regs
= 400 + 30 + 200 + 30 + 120 + 30 + 200 = 1010 ps
e) “addi Rt, Rs, Rx, Imm” (ý nghĩa Rt = Rs + Rx + Imm) (1đ)
- Việc cộng thưc hiện trên 3 toán hạng nên: hoặc sử dụng thêm 1 ALU hoặc chỉnh sửa lại ALU
đang có bằng cách đưa thêm một input thứ 3 vào (0.5 điểm)
- Trường opcode (6 bits), 3 thanh ghi (mỗi thanh ghi 5 bits) số bits trống còn lại trong format lệnh trên là 11 bits
Vậy trường Imm có thể sử dụng bao nhiêu bits tùy vào thiết kế, nhưng không quá 11 bits này Gọi
n là số bits cho trường Imm Khối Sign-extend hiện tại là mở rộng có dấu từ số tức thời 16 bits
thành 32 bits; vì vậy hoặc sử dụng thêm một khối Sign-extend với input là n bits hoặc chỉnh sửa khối Sign-extend sao cho có thể nhận cả input 16 bits và n bits
ALU cần thực hiện thao tác cộng
Giá trị mà ALUOp nên nhận ở đây phụ thuộc vào thiết kế của khối ALU Control (sao cho đảm bảo kết quả của ALU Control ra tương ứng với thao tác cộng)
Nếu theo thiết kế trong sách tham khảo chính thì ALUOp
có thể nhận 2 giá trị 00 giống như lw hoăc sw cho lệnh addi
này
Như mình đã thống nhất là ở đây có thêm Regs Nhưng sẽ có một số sinh viên không chú ý
sẽ không thêm ở đây
Vì đây là lần đầu, lỗi cũng do mình thống nhất trễ cho sinh viên, nên nếu sinh viên nào
không cộng ở đây mình cũng cho điểm full luôn được không mọi người?