Bài giảng Kiến trúc máy tính - Chương 3, Phần 2: MIPS instruction set architecture - Võ Tấn Phương
dce
2015
KIẾN TRÚC MÁY TÍNH
KHOA HỌC & KỸ THUẬT MÁY TÍNH
BK
TP.HCM
Võ Tấn Phương
dce
2015
Chapter 3
MIPS Instruction Set Architecture
Kiến trúc Máy tính– Chương 3
© Fall 2015
2
dce
2015
Nội dung trình bày
Kiến trúc tập lệnh (Instruction Set Architecture)
Sơ bộ kiến trúc bộ xử lý MIPS
R-Type Các lệnh số học, luận lý, dịch
I-Type Các lệnh số học, luận lý có hằng số
Các lệnh nhảy và rẽ nhánh
Chuyển phát biểu If và các biểu thức boolean
Các lệnh truy xuất bộ nhớ Load & Store
Chuyển đổi khối lặp và duyệt mảng
Các chế độ định địa chỉ
Kiến trúc Máy tính– Chương 3
© Fall 2015
3
dce
2015
Kiến trúc tập lệnh (ISA)
Là dao diện chính giữa phần cứng và phần mềm, là cái
nhìn trừu tượng của phần cứng trên quan điểm phần mềm
Kiến trúc tập lệnh bao gồm…
Tập lệnh và định dạng lệnh
Kiểu dữ liệu, cách mã hóa và biễu diễn
Đối tượng lưu trữ: Thanh ghi (Registers) và bộ nhớ (Memory)
Các chế độ định địa chỉ để truy xuất lệnh và dữ liệu
Xử lý các điều kiện ngoại lệ (vd: chia cho 0)
Ví dụ
(Phiên bản)
Năm giới thiệu
1978
Intel
MIPS
(8086, 80386, Pentium, ...)
(MIPS I, II, III, IV, V)
1986
PowerPC (601, 604, …)
1993
Kiến trúc Máy tính– Chương 3
© Fall 2015
4
dce
2015
Kiến trúc thanh ghi tích lũy
Accumulator
latch
ALU
latch
Memory
address
registers
Ví dụ lệnh: a = b+c;
load b;
add c;
store a;
// accumulator is implicit operand
Kiến trúc Máy tính– Chương 3
© Fall 2015
5
dce
2015
Kiến trúc Stack
latch
latch
stack
ALU
latch
Memory
stack pt
Ví dụ lệnh: a = b+c;
push b;
add
pop a
push b
push c
push c;
add;
pop a;
b
c
b
b+c
stack:
Kiến trúc Máy tính– Chương 3
© Fall 2015
6
dce Các kiến trúc khác
2015
Ví dụ lệnh C = A + B
Stack
Accumulator Register-
Memory-
Memory
Register
Memory
Architecture Architecture
(load-store)
Push A
Push B
Add
Load A
Add B
Store C
Load r1,A
Add C,B,A Load r1,A
Add r1,B
Load r2,B
Store C,r1
Add r3,r1,r2
Store C,r3
Pop C
Bài tập: C = A + B + 5 chuyển sang lệnh dung kiến trúc
Stack và thanh ghi tích lũy?
Kiến trúc Máy tính– Chương 3
© Fall 2015
7
dce So sánh giữa các kiến trúc
2015
Thanh ghi tích lũy
Một toán hạn (có thể là thanh ghi hoặc memory), thanh
ghi tích lũy được sử dụng ngầm định
Stack
Không toán hạn: các toán hạn ngầm định trên đỉnh Stack
(TOS)
Register (load store)
Ba toán hạn đều là thanh ghi
Load & Store là các lệnh dành riêng cho việc truy xuất
memory (truy xuất gián tiếp thông qua thanh ghi)
Register-Memory
Hai toán hạn, một là memory
Memory-Memory
Ba toán hạn, có thể tất cả là memory
Kiến trúc Máy tính– Chương 3
© Fall 2015
8
dce
2015
Tập lệnh
Tập lệnh là ngôn ngữ của bộ xử lý
Kiến trúc tập lệnh MIPS được dùng trong môn học này
Loại: Reduced Instruction Set Computer (RISC)
Thiết kế đơn giản và tinh tế
Giống với kiến trúc RISC được phát triển giữa thập niên
80 đến thập niên 90
Rất phổ biến, được dùng bởi
. Silicon Graphics, ATI, Cisco, Sony, etc.
Phổ biến sau bộ xử lý Intel IA-32
. Gần 100 triệu bộ xử lý MIPS được bán trong năm 2002
Ví dụ kiến thúc khác: Intel IA-32
Loại: Complex Instruction Set Computer (CISC)
Kiến trúc Máy tính– Chương 3
© Fall 2015
9
dce
2015
Ví dụ chương trình hợp ngữ MIPS
Kiến trúc Máy tính– Chương 3
© Fall 2015
10
dce
2015
Nội dung trình bày
Kiến trúc tập lệnh (Instruction Set Architecture)
Sơ bộ kiến trúc bộ xử lý MIPS
R-Type Các lệnh số học, luận lý, dịch
I-Type Các lệnh số học, luận lý có hằng số
Các lệnh nhảy và rẽ nhánh
Chuyển phát biểu If và các biểu thức boolean
Các lệnh truy xuất bộ nhớ Load & Store
Chuyển đổi khối lặp và duyệt mảng
Các chế độ định địa chỉ
Kiến trúc Máy tính– Chương 3
© Fall 2015
11
dce
2015
Sơ bộ kiến trúc MIPS
. . .
Memory
4 bytes per word
Up to 232 bytes = 230 words
. . .
EIU
FPU
Execution &
Integer Unit
(Main proc)
Floating
Point Unit
(Coproc 1)
$0
$1
$2
F0
32 General
F1
F2
Purpose
Registers
32 Floating-Point
Registers
$31
F31
Arithmetic &
Logic Unit
Integer
mul/div
FP
Arith
ALU
Floating-Point
Arithmetic Unit
Hi
Lo
TMU
Trap &
Memory Unit
(Coproc 0)
BadVaddr
Status
Cause
EPC
Integer
Multiplier/Divider
Kiến trúc Máy tính– Chương 3
© Fall 2015
12
dce
2015
Bộ 32 thanh ghi đa mục đích MIPS
32 Thanh ghi đa dụng (General Purpose Registers)
Sử dụng dấu $ để biểu diễn thanh ghi
$0 = $zero $16 = $s0
$1 = $at
$2 = $v0
$3 = $v1
$4 = $a0
$5 = $a1
$6 = $a2
$7 = $a3
$8 = $t0
$9 = $t1
$10 = $t2
$11 = $t3
$12 = $t4
$13 = $t5
$14 = $t6
$15 = $t7
$17 = $s1
$18 = $s2
$19 = $s3
$20 = $s4
$21 = $s5
$22 = $s6
$23 = $s7
$24 = $t8
$25 = $t9
$26 = $k0
$27 = $k1
$28 = $gp
$29 = $sp
$30 = $fp
$31 = $ra
. $0 là thanh ghi 0, $31 là thanh ghi 31
Tất cả thanh ghi là 32 bit MIPS32
Thanh ghi $0 luôn bằng 0
. Giá trị ghi vào thanh ghi $0 được bỏ qua
Quy ước tên tương ứng
Mỗi thanh ghi có tên tương ứng
. Để chuẩn hóa mục đích sử dụng trong
phần mềm
Ví dụ: $8 - $15 tương ứng $t0 - $t7
. Được dùng cho các giá trị tạm (temporary)
Kiến trúc Máy tính– Chương 3
© Fall 2015
13
dce Quy ước tên gọi bộ thanh ghi MIPS
2015
Assembler tham khảo thanh ghi bằng tên hoặc số
Lập trình viên thường dùng thanh ghi theo tên
Assembler chuyển tham khảo từ tên sang số
Name
$zero
Register
$0
Usage
Always 0
(forced by hardware)
$at
$1
Reserved for assembler use
Result values of a function
Arguments of a function
Temporary Values
$2 – $3
$4 – $7
$8 – $15
$16 – $23
$24 – $25
$26 – $27
$28
$v0– $v1
$a0– $a3
$t0– $t7
$s0– $s7
$t8– $t9
$k0– $k1
$gp
Saved registers
(preserved across call)
More temporaries
Reserved for OS kernel
Global pointer
(points to global data)
$sp
$fp
$ra
$29
$30
$31
Stack pointer
Frame pointer
Return address
(points to top of stack)
(points to stack frame)
(used by jal for function call)
Kiến trúc Máy tính– Chương 3
© Fall 2015
14
dce
2015
Ba định dạng lệnh của MIPS ISA
Tấc cả các lệnh đều có độ dài 32-bit, có 3 loại:
Register (R-Type)
Các lệnh sử dụng 2 toán hạn là giá trị 2 thanh ghi và lưu
kết quả vào thanh ghi
Op: mã phép toán quy định lệnh
Op6
Rs5
Rt5
Rd5
sa5
funct6
Immediate (I-Type)
Hằng số 16-bit là một phần của lệnh
Op6
Rs5
Rt5
immediate16
Jump (J-Type)
Các lệnh nhảy có định dạng J-Type
Op6
immediate26
Kiến trúc Máy tính– Chương 3
© Fall 2015
15
dce
2015
Phân loại lệnh trong tập lệnh – nhóm lệnh
Các lệnh số học nguyên (Integer Arithmetic)
Các lệnh cộng/trừ, lệnh luận lý (and, or, nor, xor) và lệnh dịch
(shift left, shift right)
Các lệnh truy xuất dữ liệu từ bộ nhớ (Data Transfer)
Lệnh Load&Store tương ứng thao tác Đọc/Ghi
Hỗ trợ dữ liệu byte (1byte), half word (2byte), word (4byte)
Nhảy và rẽ nhánh (Jump and Branch)
Các lệnh điều khiển dòng thực thi khác cách tuần tự
Các lệnh số học số thực (Floating Point Arithmetic)
Các lệnh thao tác trên các thanh ghi số thực
Các lệnh phụ
Các lệnh hỗ trợ xử lý ngoại lệ (exceptions)
Các lệnh quản lý bộ nhớ
Kiến trúc Máy tính– Chương 3
© Fall 2015
16
dce
2015
Tiếp theo …
Kiến trúc tập lệnh (Instruction Set Architecture)
Sơ bộ kiến trúc bộ xử lý MIPS
R-Type Các lệnh số học, luận lý, dịch
I-Type Các lệnh số học, luận lý có hằng số
Các lệnh nhảy và rẽ nhánh
Chuyển phát biểu If và các biểu thức boolean
Các lệnh truy xuất bộ nhớ Load & Store
Chuyển đổi khối lặp và duyệt mảng
Các chế độ định địa chỉ
Kiến trúc Máy tính– Chương 3
© Fall 2015
17
dce
2015
R-Type Format
Op6
Rs5
Rt5
Rd5
sa5
funct6
Op: mã phép toán (opcode)
Cho biết lệnh làm phép toán gì
funct: function code – mở rộng opcode
Có thể có 26 = 64 functions có thể mở rộng cho một opcode
MIPS sử dụng opcode 0 để định nghĩa lệnh loại R-type
Ba thanh ghi toán hạn (Register Operand)
Rs, Rt: Hai toán hạn nguồn
Rd: Toán hạn đích chứa kết quả
sa: Quy định số bit dịch trong các lệnh dịch
Kiến trúc Máy tính– Chương 3
© Fall 2015
18
dce Các lệnh Cộng/Trừ số nguyên
2015
Instruction
Meaning
R-Type Format
add $s1, $s2, $s3 $s1 = $s2 + $s3 op = 0 rs = $s2 rt = $s3 rd = $s1 sa = 0 f = 0x20
addu $s1, $s2, $s3 $s1 = $s2 + $s3 op = 0 rs = $s2 rt = $s3 rd = $s1 sa = 0 f = 0x21
sub $s1, $s2, $s3 $s1 = $s2 – $s3 op = 0 rs = $s2 rt = $s3 rd = $s1 sa = 0 f = 0x22
subu $s1, $s2, $s3 $s1 = $s2 – $s3 op = 0 rs = $s2 rt = $s3 rd = $s1 sa = 0 f = 0x23
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 được hiểu là số nguyên không dấu =>
không bị “tràn” ( không xảy ra arithmetic exception)
Cờ tràn không xét đến
Nhiều ngôn ngữ lập trình bỏ qua “tràn”:
Phép toán + được dịch thành addu
Phép toán – được dịch thành subu
Kiến trúc Máy tính– Chương 3
© Fall 2015
19
dce
2015
Số nguyên nhị phân không dấu
Cho 1 số n-bit, có dạng
Tầm vực giá trị sẽ là: 0 đến +2n – 1
Ví dụ:
0000 0000 0000 0000 0000 0000 0000 10112
= 0 + … + 1×23 + 0×22 +1×21 +1×20
= 0 + … + 8 + 0 + 2 + 1 = 1110
Giá trị 1 số nhị phân không dấu 32-bit sẽ
là:
0 đến +4,294,967,295 (giá trị thập phân)
Kiến trúc Máy tính– Chương 3
© Fall 2015
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính - Chương 3, Phần 2: MIPS instruction set architecture - Võ Tấn Phương", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_kien_truc_may_tinh_chuong_3_phan_2_mips_instructio.pdf

