• Bốn nguyên tắc thiết kế cơ bản• Ba toán hạng trong máy tính • Biểu diễn lệnh trong máy tính • Phân loại được lệnh theo 3 định dạng: R-type, I-Type, J-Type • Phân loại được lệnh theo c
Trang 1COMPUTER ARCHITECTURE
Lecture 2
Instruction: Language of the Computer
Chapter 2
Trang 2• Bốn nguyên tắc thiết kế cơ bản
• Ba toán hạng trong máy tính
• Biểu diễn lệnh trong máy tính
• Phân loại được lệnh theo 3 định dạng:
R-type, I-Type, J-Type
• Phân loại được lệnh theo chức năng
• Chuyển đổi lệnh giữa các ngôn ngữ: cấp cao, hợp ngữ, và ngôn ngữ máy.
The goals
Trang 4• Slide:
• Computer Organization and Design, 4th Edition,
Patterson & Hennessy, © 2008, MK
• Mary Jane Irwin, Penn State University
Trang 51 Arithmetic instruction
2 Logical instruction
Lecture contents
Trang 6Instruction format
op op op
R format: Các lệnh có các toán hạng là toán hạng thanh ghi
I format: Các lệnh có các toán hạng là toán hạng bộ nhớ
J format: Các lệnh nhảy (Jump)
Trang 7MIPS instruction class
Instruction class MIPS example
Trang 8MIPS instruction encoding
Trang 9• Base 16
• Compact representation of bit strings
• 4 bits per hex digit
Trang 10Add Signed instruction
Trang 11Add Unsigned instruction
Trang 13Add Immediate instruction
addi $rt, $rs, imm
Operation: Rt = Rs + imm
Imm: Hằng số 16 bit có dấu
Rs: toán hạng nguồn
Rt: toán hạng đích
Trang 14add Immediate Example
Trang 17Addition/subtraction Integer
Lệnh Phép toán R-Format
Op Rs Rt Rd Sa Func add $s1, $s2, $s3 $s1 = $s2 + $s3 0 $2 $3 $1 0 0x20 (32) addu $s1, $s2, $s3 $s1 = $s2 + $s3 0 $2 $3 $1 0 0x21 (33) sub $s1, $s2, $s3 $s1 = $s2 - $s3 0 $2 $3 $1 0 0x22 (34) subu $s1, $s2, $s3 $s1 = $s2 - $s3 0 $2 $3 $1 0 0x23 (35)
• add & sub: “tràn” (overflow) sinh ra arithmetic exception
• Trong trường hợp “tràn”, kết quả không được ghi vào thanh ghi đích
• addu & subu: hoạt động giống add & sub
• Tuy nhiên các toán hạn g được hiểu là số nguyên không dấu => không bị “tràn” ( không xảy ra arithmetic
exception)
Trang 18Overflow and Carry
• Giá trị “nhớ” quan trọng khi…
• Cộng hoặc trừ số nguyên không dấu
• Báo tổng dạng không dấu bị ngoài tầm biểu diễn
• Xảy ra khi < 0 hoặc >maximum giá trị không dấu
n-bit
• Giá trị “tràn” quan trọng khi …
• Cộng hoặc trừ số nguyên có dấu
• Báo tổng dạng có dấu bị ngoài tầm biểu diễn
• Tràn số xảy ra khi
• Cộng hai số dương được tổng là số âm
• Cộng hai số âm được tổng là số dương
Trang 19Review: range number
• Số không dấu n bit
• Tầm biểu diễn: 0 to +2 n – 1
• Số có dấu n bit
• Tầm biểu diễn: –2 n – 1 to +2 n – 1 – 1
0 0
1 1
2 n 2 n
1 n 1
x
0 0
1 1
2 n 2 n
1 n 1
x
Trang 20Review: range number
Trang 21Review: range number
Trang 22Overflow and Carry
Trang 26Assignment
• Ví dụ: mã C của lệnh
f = (g + h) - (i + j);
• f, …, j in $s0, …, $s4
Trang 27• Các lệnh thao tác trên bit
Logical Operations
Shift left << << sll Shift right >> >>> srl
Bitwise AND & & and, andi
Tách, chèn các bit vào 1 word
Trang 28• shamt: dịch bao nhiêu bit
• Phép dịch trái
• Dịch trái và điền các bít 0
• Dịch trái (sll)i bits tương đương nhân với 2 i
• Phép dịch phải
• Dịch phải và điền các bit 0 vào bên phải
• Dịch phải (srl) i bits tương đương với chia cho 2 i
Trang 29• Di chuyển các bit bên trái hoặc phải của 1 từ
sll $t2, $s0, 8 #$t2 = $s0 << 8 bits srl $t2, $s0, 8 #$t2 = $s0 >> 8 bits
• Instruction Format ( R format)
MIPS Shift Operations
5 bits dịch được tối đa 31 vị trí
0 $rs = 0 $rt = s0
16
$rd=t2 10
Trang 30• Thường sử dụng cho việc tạo mặt nạ cho các bit
• Chọn một số bit, xoá các bit còn lại
Trang 31AND Operations
Trang 32OR Operations
Trang 33• Chèn các bit 1 vào trong 1 từ, các bit còn lại không đổi
Trang 34XOR Operations
Trang 36NOT Operations
Trang 37• Đảo bit
• Change 0 to 1, and 1 to 0
• Sử dụng phép NOR thay cho NOT
• Tại sao không sử dụng phép NOT?
Trang 38Summary
Trang 40CORE INSTRUCTION SET
Trang 41• SignExtImm: Mở rộng bit cho 16 bit cao
• ZeroExtImm: Mở rộng bit 0 cho 16 bit cao
SignExtImm vs ZeroExtImm
Trang 43• Khởi tạo số 32 bit dùng lệnh "load upper
Trang 44• Khởi tạo 1 giá trị 32 bit cho thanh ghi
• Lưu ý: không có giá trị 32 bit trong lệnh I-Type
• Sử dụng lệnh “load upper immediate”
• Ví dụ: khởi tạo $s1=0xA54765D9 (hằng số 32-bit)
How About Larger Constants?
Trang 45• Khởi tạo các thanh ghi sau
Trang 46• Khởi tạo các thanh ghi sau
Trang 47• Khởi tạo giá trị thanh ghi $s0 = 0x12
• Tính f= s0*0x1422_ac12, lưu f vào thanh ghi $s1
assignments
Trang 48• Khảo sát các giá trị thanh ghi t0,t1,a0 khi thực hiện tuần tự các lệnh:
• Chuyển đổi các lệnh sang mã nhị phân
Trang 49Next Lecture and Reminder