Tải bản đầy đủ (.pdf) (5 trang)

HKI 2013 2014 CK

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1016.39 KB, 5 trang )

ĐỀ THI CUỐI KỲ

TRƯỜNG ĐẠI HỌC CNTT
KHOA KỸ THUẬT MÁY TÍNH

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 (ielse 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:
1


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, DMem=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 đề

2


Câ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
sll $t1, $s0, 2
add $t1, $t1, $s3
beq $t0, $zero, Else
sw $s0, 0($t1)
j Exit
Else: sw $s1, 0($t1)
Exit:

// if (i//now $t1 holds the address of A[i] in D-mem
// A[i] = i
//A[i] = j

Câu 2 (1,5 điểm)
7(10) = 111(2)
3(10) = 11(2)
Step

Action

Quotient


Divisor

Remainder

0

Initial Vals

000

011 000

000 111

1

Rem = Rem – Div

000

011 000

101 111

Rem < 0, R= R + D, Q<<

000

011 000


000 111

Rshift Div

000

001 100

000 111

Rem = Rem – Div

000

001 100

111 011

Rem < 0, R=R + D, Q<<

000

001 100

000 111

Rshift Div

000


000 110

000 111

Rem = Rem – Div

000

000 110

000 001

Rem > 0, Q<<, Q0 = 1

001

000 110

000 001

Rshift Div

001

000 011

000 001

Rem = Rem – Div


001

000 010

111 110

Rem < 0, R=R + D, Q<<

010

000 010

000 001

Rshift Div

010

000 001

000 001

2

3

4

Kết quả: Thương số = 010(2) = 2(10); phần dư = 1



Câ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

IF

ID

nop
nop
add $s4, $s3, $s1


EX

MEM

WB

IF

ID

nop
nop
and $s5, $s4, $s1

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

IF

ID

EX

MEM

WB

IF

ID

EX

MEM

nop
add $s4, $s3, $s1
and $s5, $s4, $s1

WB

EX

MEM


WB


Câ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đ)
RegDst
0

Branch
0

MemRead
0

MemtoReg
0

ALUOp

MemWrite
0

ALUSrc
1

RegWrite
1


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.

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
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?
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



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×