Bài giảng Kiến trúc máy tính - Tuần 4: Kiến trúc bộ lệnh (Tiếp theo)

KIẾN TRÚC MÁY TÍNH  
Tuần 4  
KIẾN TRÚC BỘ LỆNH  
(Tiếp theo)  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
1
Tuần 04 – Kiến trúc bộ lệnh (tiếp theo)  
Mục tiêu:  
1.Hiểu cách biểu diễn và cách thực thi các lệnh trong máy  
tính  
2.Chuyển đổi lệnh ngôn ngữ cấp cao sang assembly và mã  
máy  
3.Chuyển đổi lệnh mã máy sang ngôn ngữ cấp cao hơn  
4.Biết cách lập trình bằng ngôn ngữ assembly cho MIPS  
Slide được dịch và cá c hì nh được lấy từ sá ch tham khảo:  
Computer Organization and Design: The Hardware/Software Interface,  
Patterson, D. A., and J. L. Hennessy, Morgan Kaufman, Revised Fourth Edition,  
2011.  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
2
Tuần 4 – Kiến trúc bộ lệnh  
1. Giới thiệu  
2. Các phép tính  
3. Toán hạng  
4. Số có dấu và không dấu  
5. Biểu diễn lệnh  
6. Các phép tính Logic  
7. Các lệnh điều kiện và nhảy  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
3
Biểu diễn lệnh  
Làm thế nào một lệnh (add $t0, $s1, $s2) lưu giữ được trong máy tính?  
Máy tính chỉ thể làm việc với các tín hiệu điện tử thấp và cao, do đó một  
lệnh lưu giữ trong máy tính phải được biểu diễn như một chuỗi của "0" và  
"1", được gọi mã máy/lệnh máy.  
Ngôn ngữ máy (Machine language): biểu diễn nhị phân được sử dụng để  
giao tiếp trong một hệ thống máy tính.  
Để chuyển đổi từ một lệnh sang mã máy (machine code) sử dụng định  
dạng lệnh (instruction format).  
Định dạng lệnh: Một hình thức biểu diễn của một lệnh bao gồm các trường của số  
nhị phân.  
dụ một định dạng lệnh:  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
4
Biểu diễn lệnh  
dụ: Chuyển đổi một lệnh cộng trong MIPS thành một  
lệnh máy:  
add $t0,$s1,$s2  
Với định dạng lệnh:  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
5
Biểu diễn lệnh  
Trả lời: Chuyển đổi một lệnh cộng trong MIPS thành một lệnh máy:  
add $t0, $s1, $s2  
Định dạng lệnh:  
Mã máy:  
Mỗi phân đoạn của một định dạng lệnh được gọi một trường (ví dụ trường op,  
rs, rt, rd, shamt, funct).  
Trong ngôn ngữ assembly MIPS, thanh ghi $s0 đến $s7 chỉ số tương ứng từ 16  
đến 23, và thanh ghi $t0 đến $t7 chỉ số tương ứng từ 8 đến 15.  
Các trường rs, rt, rd chứa chỉ số của các thanh ghi tương ứng; trường op và funct  
có giá trị bao nhiêu cho từng loại lệnh do MIPS quy định  
Trường ‘shamt’?  
Tra trong bảng “MIPS reference data” (trang 2 sách tham khảo chính) để có các giá trị  
cần thiết  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
6
Biểu diễn lệnh  
Từ một mã máy đang có, như thế nào máy tính hiểu?  
op  
rs  
rt  
rd  
shamt  
funct  
Trường đầu tiên (op, tức opcode có giá trị 0) và trường cuối cùng (funct, tức  
function có giá trị 20hex) kết hợp báo cho máy tính biết rằng đây lệnh cộng  
(add).  
Trường thứ hai (rs) cho biết toán hạng thứ nhất của phép toán cộng (rs hiện có  
giá trị 17, tức toán hạng thứ nhất của phép công là thanh ghi $s1)  
Trường thứ ba (rt) cho biết toán hạng thứ hai của phép toán cộng (rt hiện có giá  
trị 18, tức toán hạng thứ hai của phép công là thanh ghi $s2)  
Trường thứ tư (rd) là thanh ghi đích chứa tổng của phép cộng (rd hiện có giá trị  
8, tức thanh ghi đích chứa tổng là $t0).  
Trường thứ năm (shamt) không sử dụng trong lệnh add này  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
7
Biểu diễn lệnh  
Các dạng khác nhau của định dạng lệnh MIPS :  
R-type hoặc R-format (cho các lệnh chỉ làm việc với thanh ghi)  
I-type hoặc I-format (cho các lệnh có liên quan đến số tức thời truyền  
dữ liệu)  
J-type hoặc J-format (lệnh nhảy, lệnh ra quyết định)  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
8
Biểu diễn lệnh  
Các dạng khác nhau của định dạng lệnh MIPS :  
op (Hay còn gọi là opcode, mã tác vụ): Trong cả ba định dạng của lệnh,  
trường op luôn chiếm 6 bits.  
Khi máy tính nhận được mã máy, phân tích op sẽ cho máy tính biết được đây  
(*)  
lệnh gì , từ đó cũng biết được mã máy thuộc loại định dạng nào, sau đó  
các trường tiếp theo sẽ được phân tích.  
(*)Lưu ý: MIPS quy định nhóm các lệnh làm việc với 3 thanh ghi (R-format) đều có op là 0. Vì  
vậy, với R-format, cần dùng thêm trường ‘funct’ để biết chính xác lệnh cần thực hiện lệnh  
nào.  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
9
Biểu diễn lệnh  
Các trường của R-format:  
rs: Thanh ghi chứa toán hạng nguồn thứ nhất  
rt: Thanh ghi chứa toán hạng nguồn thứ hai  
rd: Thanh ghi toán hạng đích, nhận kết quả của các phép toán.  
shamt: Chỉ dùng trong các câu lệnh dịch bit (shift) - chứa số lượng bit cần  
dịch (không được sử dụng sẽ chứa 0)  
funct: Kết hợp với op (khi op bằng 0) để cho biết mã máy là lệnh gì  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
10  
Biểu diễn lệnh  
Các trường của I-format và J-format:  
Vùng “constant or address” (thỉnh thoảng gọi là vùng immediate) là vùng  
chứa số16 bit.  
Với lệnh liên quan đến memory (như lw, sw): giá trị trong thanh  
ghi rs cộng với số 16 bits này sẽ địa chỉ của vùng nhớ lệnh  
này truy cập đến.  
Với lệnh khác (như addi): 16 bits này chứa số tức thời  
Vùng “address” là vùng chứa số 26 bit (dùng cho lệnh ‘j’)  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
11  
Biểu diễn lệnh  
dụ một số lệnh MIPS và các trường tương ứng  
“reg” nghĩa chỉ số thanh ghi (giữa 0 và 31)  
“address” nghĩa là 1 địa chỉ 16 bit.  
“n.a.(không áp dụng) nghĩa trường này không xuất hiện trong định dạng  
này.  
Lưu ý rằng lệnh ‘add’ ‘sub’ có cùng giá trị trong trường "op"; do đó phần  
cứng sẽ sử dụng thêm trường "funct" để quyết định đây lệnh gì  
Funct = 32ten = 20hex lệnh ‘add’  
Funct = 34ten = 22hex lệnh ‘sub’  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
12  
Biểu diễn lệnh  
dụ: Chuyển ngôn ngữ cấp cao Assembly MIPS mã máy  
Chuyển câu lệnh sau sang assembly MIPS và sau đó chuyển thành mã máy:  
A[300] = h + A[300]  
Biết A một mảng nguyên, mỗi phần tử của A cần một từ nhớ để lưu trữ; $t1 chứa địa  
chỉ nền/cơ sở của mảng A $s2 tương ứng với biến nguyên h.  
Đáp án: Assembly MIPS:  
lw $t0,1200($t1) # Dùng thanh ghi tạm $t0 nhận A[300]  
add $t0,$s2,$t0 # Dùng thanh ghi tạm $t0 nhận h + A[300]  
sw $t0,1200($t1) # Lưu h + A[300] trở lại vào A[300]  
Mã máy cho ba lệnh trên:  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
13  
Biểu diễn lệnh  
Kết luận:  
1.Các lệnh được biểu diễn như là các con số.  
2.Chương trình được lưu trữ trong bộ nhớ được đọc hay viết giống như các  
con số.  
Xem lệnh như dữ liệu là cách tốt nhất để đơn giản hóa cả bộ  
nhớ phần mềm của máy tính.  
Để chạy/thực thi một chương trình, đơn giản chỉ cần nạp chương trình và  
dữ liệu vào bộ nhớ; sau đó báo với máy tính để bắt đầu thực thi chương  
trình tại vị trí mà nó đã được cấp phát.  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
14  
Tuần 4 – Kiến trúc bộ lệnh  
1. Giới thiệu  
2. Các phép tính  
3. Toán hạng  
4. Số có dấu và không dấu  
5. Biểu diễn lệnh  
6. Các phép tính Logic  
7. Các lệnh điều kiện và nhảy  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
15  
Các phép tính Logic  
Hình 7: C và Java các phép tính logic và lệnh MIPS tương ứng.  
Shift: Lệnh dịch chuyển bit.  
AND: là phép toán logic “VÀ”.  
OR: là một phép toán logic “HOẶC”  
NOT: kết quả là 1 nếu bit đó là 0 và ngược lại.  
NOR: NOT OR.  
Hằng số rất hữu ích trong các phép toán logic AND và OR cũng như trong  
phép tính số học, vì vậy MIPS cung cấp các lệnh trực tiếp andi ori.  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
16  
Tuần 4 – Kiến trúc bộ lệnh  
1. Giới thiệu  
2. Các phép tính  
3. Toán hạng  
4. Số có dấu và không dấu  
5. Biểu diễn lệnh  
6. Các phép tính Logic  
7. Các lệnh điều kiện và nhảy  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
17  
Các lệnh điều kiện và nhảy  
Một máy tính (PC) khác với các máy tính tay (calculator) chính là dựa trên khả  
năng đưa ra quyết định.  
Trong ngôn ngữ lập trình, đưa ra quyết định thường được biểu diễn bằng cách sử  
dụng câu lệnh “if”, đôi khi kết hợp với câu lệnh “go to”.  
Ngôn ngữ Assembly MIPS cũng chứa các lệnh hỗ trợ ra quyết định, tương tự với  
câu lệnh "if" go to".  
dụ: beq register1, register2, L1  
Lệnh này có nghĩa đi đến câu lệnh có nhãn L1 nếu giá trị của thanh ghi register1  
bằng giá trị thanh ghi register2.  
Từ ‘beq’ viết tắt của “branch if equal” (rẽ nhánh nếu bằng)  
Các lệnh như ‘beq’ được gọi lệnh rẽ nhánh có điều kiện.  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
18  
Các lệnh điều kiện và nhảy  
Các lệnh rẽ nhánh có điều kiện (conditional branch) của MIPS:  
branch on equal  
beq $s1, $s2 25  
if ($s1 == $s2) goto PC + 4 + 100  
if ($s1 != $s2) goto PC + 4 + 100  
branch on not equal bne $s1, $s2, 25  
set on less than  
slt $s1, $s2, $s3  
slt $s1, $s2, $s3  
if ($s2 < $s3) $s1 = 1; else $s1 = 0  
if ($s2 < $s3) $s1 = 1; else $s1 = 0  
set on less than  
unsigned  
Conditional  
branch  
set on less than  
immediate  
slt $s1, $s2, 20  
slt $s1, $s2, 20  
if ($s2 < 20) $s1 = 1; else $s1 = 0  
if ($s2 < 20) $s1 = 1; else $s1 = 0  
set on less than  
immediate unsigned  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
19  
Các lệnh điều kiện và nhảy  
Ngoài ra còn có các lệnh rẽ nhánh có điều kiện khác, nhưng là  
nhóm lệnh giả (pseudo instructions)  
branch on less than  
branch greater than  
branch less than or equal  
blt  
Conditional  
branch  
bgt  
ble  
(pseudo  
instruction)  
bge  
branch greater than or equal  
(Tham khảo trang số 2, sách tham khảo chính)  
03/2017  
Copyrights 2017 CE-UIT. All Rights Reserved.  
20  
Tải về để xem bản đầy đủ
ppt 28 trang yennguyen 09/04/2022 9760
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 - Tuần 4: Kiến trúc bộ lệnh (Tiếp theo)", để 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:

  • pptbai_giang_kien_truc_may_tinh_tuan_4_kien_truc_bo_lenh_tiep_t.ppt