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 đủ
pdf 72 trang Thùy Anh 21300 Free
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:

  • pdfbai_giang_kien_truc_may_tinh_chuong_3_phan_2_mips_instructio.pdf