Bài giảng Kiến trúc máy tính - Chương 2: Ngôn ngữ máy: Tập lệnh - Nguyễn Thanh Sơn

Tóm tắt Bài giảng Kiến trúc máy tính - Chương 2: Ngôn ngữ máy: Tập lệnh - Nguyễn Thanh Sơn: ... lệnh dạng R  op: Mã lệnh (opcode)  rs: Chỉ số thanh ghi nguồn thứ nhất  rt: Chỉ số thanh ghi nguồn thứ nhì  rd: Chỉ số thanh ghi đích  shamt: Số bit dịch chuyển  funct: mã chức năng mở rộng (extends opcode) op rs rt rd shamt funct 6 bits 6 bits 5 bits 5 bits 5 bits 5 bits BK...ng hồ chậm hơn  All instructions penalized! (không thống nhất cho các lệnh)  beq và bne: trường hợp thường xảy ra  Đó là sự kết hợp tốt BK TP.HCM Dấu và Không dấu 25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 38  So sánh có dấu: slt, slti  So sánh không dấu: sltu, sltui  ...ug-16 Khoa Khoa học & Kỹ thuật Máy tính 51  Tập ký tự dạng Byte-encoded  ASCII: 128 Ký tự  95 graphic, 33 điều khiển  Latin-1: 256 Ký tự  ASCII, +96 ký tự graphics  Tập ký tự 32-bit dạng Unicode:  Sử dụng trong Java, C++ wide characters,  Chứa toàn bộ mã ký tự thế giới, cùng...

pdf70 trang | Chia sẻ: havih72 | Lượt xem: 240 | Lượt tải: 0download
Nội dung tài liệu Bài giảng Kiến trúc máy tính - Chương 2: Ngôn ngữ máy: Tập lệnh - Nguyễn Thanh Sơn, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
oa Khoa học & Kỹ thuật Máy tính 17 
 Cho 1 số n-bit như sau: 
 Tầm giá trị: –2(n – 1) đến +2(n – 1) – 1 
 Ví dụ: 
 1111 1111 1111 1111 1111 1111 1111 11002 
= –1×231 + 1×230 +  + 1×22 +0×21 +0×20 
= –2,147,483,648 + 2,147,483,644 = –410 
 Giá trị 1 số nhị phân cĩ dấu 32-bit sẽ 
là 
 –2,147,483,648 đến +2,147,483,647 
BK 
TP.HCM 
Số nguyên cĩ dấu dạng bù 2 (tt.) 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 18 
 Bit 31 là bit dấu 
 1 cĩ nghĩa là số âm (-) 
 0 cĩ nghĩa là số khơng âm (+) 
 Dạng –(–2n – 1) khơng tồn tại 
 Các số khơng âm biểu diễn giống số khơng 
dấu và số bù 2 
 Vài số đặc biệt như: 
 0: 0000 0000  0000 
 –1: 1111 1111  1111 
 Số âm nhỏ nhất: 1000 0000  0000 
 Số dương lớn nhất: 0111 1111  1111 
BK 
TP.HCM 
Số âm cĩ dấu 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 19 
 Đảo giá trị bit và cộng 1 
 Đảo giá trị bit: 1 → 0, 0 → 1 
 Ví dụ: giá trị (-) 2 
 +2 = 0000 0000  00102 
 –2 = 1111 1111  11012 + 1 
 = 1111 1111  11102 
BK 
TP.HCM 
Mở rộng bit với số cĩ dấu 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 20 
 Biểu diễn với số bit nhiều hơn 
 Dữ nguyên giá trị 
 Ví dụ: Trong tập lệnh MIPS 
 addi: mở rộng số bit giá trị tốn hạng trực tiếp 
 lb, lh: mở rộng số bit với byte/(1/2 từ) được nạp 
 beq, bne: mở rộng số bit của độ dời địa chỉ 
 Thêm giá bit dấu vào các bit mở rộng bên trái 
 Đối với giá trị khơng dấu: gán 0s 
 Ví dụ: chuyển số 8-bit thành số 16-bit 
 +2: 0000 0010 => 0000 0000 0000 0010 
 –2: 1111 1110 => 1111 1111 1111 1110 
BK 
TP.HCM 
Biểu diễn lệnh 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 21 
 Lệnh được mã hĩa thành giá trị nhị phân 
 Gọi là mã máy 
 Các lệnh của MIP 
 Mã hĩa thành từ lệnh 32-bit 
 Chia thành các phần nhỏ: Mã lệnh, thanh ghi, .. 
 Theo quy tắc! 
 Các thanh ghi MIP được đánh số: 
 $t0 – $t7 tương ứng với thanh ghi 8 – 15 
 $t8 – $t9 tương ứng với thanh ghi 24 – 25 
 $s0 – $s7 tương ứng với thanh ghi 16 – 23 
BK 
TP.HCM 
Các lệnh dạng R 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 22 
 Cấu trúc thành phần của lệnh dạng R 
 op: Mã lệnh (opcode) 
 rs: Chỉ số thanh ghi nguồn thứ nhất 
 rt: Chỉ số thanh ghi nguồn thứ nhì 
 rd: Chỉ số thanh ghi đích 
 shamt: Số bit dịch chuyển 
 funct: mã chức năng mở rộng (extends opcode) 
op rs rt rd shamt funct 
6 bits 6 bits 5 bits 5 bits 5 bits 5 bits 
BK 
TP.HCM 
Ví dụ: Lệnh dạng R 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 23 
 add $t0, $s1, $s2 
special $s1 $s2 $t0 0 add 
0 17 18 8 0 32 
000000 10001 10010 01000 00000 100000 
000000100011001001000000001000002 = 0232402016 
BK 
TP.HCM 
Biểu diễn số dạng hệ 16 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 24 
 Hệ số 16 
 Rút gọn cách biểu diễn chuỗi nhị phân 
 4 bits cho mỗi số hex 
 Ví dụ: eca8 6420 
 1110 1100 1010 1000 0110 0100 0010 0000 
BK 
TP.HCM 
Lệnh MIPS dạng I 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 25 
 Các lệnh số học trực tiếp hoặc lệnh nạp/cất 
 rt: Thanh ghi đích hoặc nguồn 
 Nếu là hằng: –215 to +215 – 1 
 Nếu là địa chỉ: Độ dời + địa chỉ cơ sỏ chứa trong rs 
 Nguyên tắc thiết kế 4: Thiết kế tốt yêu cầu sự 
kết hợp hợp lý 
 Nhiều dạng lệnh làm phức tạp giải mã, nhưng cho 
phép lệnh chứa đồng nhất chỉ trong 32-bit 
 Giữ dạng lệnh càng giống nhau càng tốt 
op rs rt constant or address 
6 bits 5 bits 5 bits 16 bits 
BK 
TP.HCM 
Tổ chức chương trình 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 26 
 Lệnh được biểu diễn dạng 
nhị phân, giống như dữ liệu 
 Lệnh và dữ liệu được lưu 
trong bộ nhớ 
 Các chương trình cĩ thể 
thực hiện trên các chương 
trình khác, ví dụ: compilers, 
linkers,  
 Tương thích nhị phân cho 
phép chương trình thực hiện 
trên các máy khác nhau  
ISA chuẩn 
BK 
TP.HCM 
Tác tác vụ luận lý 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 27 
 Các lệnh xử lý bit 
 Cĩ tác dụng rút trích hoặc thêm nhĩm 
bit vào 1 từ 
BK 
TP.HCM 
Các tác vụ dịch (shift) 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 28 
 shamt: dịch vị trí các bits 
 Dịch trái 
 Dịch trái các bit n vị trí và gán n bit bên phải 
giá trị 0 
 sll bởi i bits cĩ nghĩa nhân 2i 
 Dịch phải 
 Dịch phải các bit n vị trí và gán n bit bên trái 
giá trị 0 
 srl bởi i bits cĩ nghĩa chia 2i (chỉ khơng dấu) 
op rs rt rd shamt funct 
6 bits 6 bits 5 bits 5 bits 5 bits 5 bits 
BK 
TP.HCM 
Tác vụ “VÀ” (AND) 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 29 
 Dùng để đánh dấu các bits trong 1 từ 
 Chọn một số bits, xĩa số cịn lại về 0 
 and $t0, $t1, $t2 
BK 
TP.HCM 
Tác vụ “hoặc” (OR) 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 30 
 Thêm 1 số bit vào 1 từ 
 Gán giá trị 1 nhĩm bit thành 1 trong khi 
giữ nguyên giá trị các bit cịn lại 
 or $t0, $t1, $t2 
BK 
TP.HCM 
Các tác vụ “Not” 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 31 
 Cĩ tác dụng đảo giá trị các bit trong 1 
từ: đổi 0 thành 1, và 1 thành 0 
 MIPS cĩ tốn tử NOR với 3 tốn hạng 
 a NOR b == NOT ( a OR b ) 
 nor $t0, $t1, $zero Register 0: 
always read as 
zero 
0000 0000 0000 0000 0011 1100 0000 0000 $t1 
1111 1111 1111 1111 1100 0011 1111 1111 $t0 
BK 
TP.HCM 
Các tác vụ điều kiện 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 32 
 Rẽ nhánh đến 1 lệnh cĩ nhãn, nếu điều kiện 
thỏa 
 Nếu khơng thỏa, tiếp tục 
 beq rs, rt, L1 
 Nếu (rs == rt), nhảy đến lệnh cĩ nhãn L1; 
 bne rs, rt, L1 
 Nếu (rs != rt), nhảy đến lệnh cĩ nhãn L1; 
 j L1 
 Nhảy vơ điều kiện đến lệnh cĩ nhãn L1 
BK 
TP.HCM 
Biên dịch các phát biểu if 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 33 
 C code: 
 if (i==j) f = g+h; 
else f = g-h; 
 f, g,  chứa trong $s0, $s1,  
 Sau khi biên dịch thành MIPS code: 
 bne $s3, $s4, Else 
 add $s0, $s1, $s2 
 j Exit 
Else: sub $s0, $s1, $s2 
Exit:  
BK 
TP.HCM 
Biên dịch các phát biểu Loop 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 34 
 C code: 
 while (save[i] == k) i += 1; 
 i chứa trong $s3, k trong $s5, địa chỉ của 
save chứa trong $s6 
 Sau khi biên dịch thành MIPS code: 
 Loop: sll $t1, $s3, 2 
 add $t1, $t1, $s6 
 lw $t0, 0($t1) 
 bne $t0, $s5, Exit 
 addi $s3, $s3, 1 
 j Loop 
Exit:  
BK 
TP.HCM 
Khối căn bản (Basic Blocks) 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 35 
 Một khối chứa tuần tự các lệnh, trong 
đĩ 
 Khơng cĩ rẽ nhánh đi (except at end) 
 Khơng chứa địa chỉ đích đến (except at 
beginning) 
 Biên dịch sẽ nhận biết 
khối này để tối ưu kết 
quả dịch 
 Tăng nhanh việc xử lý các 
lệnh trong khối này 
BK 
TP.HCM 
Các tác vụ kiểm tra điều kiện khác 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 36 
 Gán kết quả là 1, nếu điều kiện thỏa 
 Nếu khơng thỏa, gán là 0 
 slt rd, rs, rt 
 if (rs < rt) rd = 1; else rd = 0; 
 slti rt, rs, constant 
 if (rs < constant) rt = 1; else rt = 0; 
 Sử dụng kết hợp với lệnh beq, bne 
 slt $t0, $s1, $s2 # if ($s1 < $s2) 
bne $t0, $zero, L # branch to L 
BK 
TP.HCM 
Thiết kế lệnh rẽ nhánh 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 37 
 Tại sao khơng cĩ lệnh blt, bge, etc? 
 <, ≥, Thực hiện phần cứng chậm hơn 
=, ≠ 
 Khi kết hợp với rẽ nhánh sẽ phải thực hiện 
nhiều việc hơn  yêu cầu xung đồng hồ 
chậm hơn 
 All instructions penalized! (khơng thống 
nhất cho các lệnh) 
 beq và bne: trường hợp thường xảy ra 
 Đĩ là sự kết hợp tốt 
BK 
TP.HCM 
Dấu và Khơng dấu 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 38 
 So sánh cĩ dấu: slt, slti 
 So sánh khơng dấu: sltu, sltui 
 Ví dụ 
 $s0 = 1111 1111 1111 1111 1111 1111 1111 1111 
 $s1 = 0000 0000 0000 0000 0000 0000 0000 0001 
 slt $t0, $s0, $s1 # cĩ đấu 
 –1 < +1  $t0 = 1 
 sltu $t0, $s0, $s1 # khơng dấu 
 +4,294,967,295 > +1  $t0 = 0 
BK 
TP.HCM 
Ví dụ: Case/Switch 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 39 
Dịch đoạn mã C sau đây sang hợp ngữ MIPS 
Switch ( k ) { 
case 0 : f = i + j ; break ; 
case 1 : f = g + h ; break ; 
case 2 : f = g - h ; break ; 
case 3 : f = i - j ; break ; 
} 
 Giả sử các biến f đến k tương ứng với $s0 đến $s5, thanh ghi $t2 mang 
giá trị 4 
Ví dụ: Case/Switch 
slt $t3 , $s5 , $zero 
bne $t3 , $zero , Exit 
slt $t3 , $s5 , $t2 
beq $t3 , $zero , Exit 
add $t1 , $s5 , $s5 
add $t1 , $t1 , $t1 
add $t1 , $t1 , $t4 
lw $t0, 0($t1) 
jr $t0 
.......................... 
L0: add $s0 , $s3 , $s4 
 j Exit 
L1: add $s0 , $s1 , $s2 
 j Exit 
L2: sub $s0 , $s1 , $s2 
 j Exit 
L3: sub $s0 , $s3 , $s4 
Exit: .. 
25-Aug-16 
Khoa Khoa học & Kỹ thuật Máy tính 
 40 
BK 
TP.HCM 
Gọi thủ tục 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 41 
 Các bước thực hiện gọi thủ tục 
1. Chuyển thơng số vào vị trí (thanh ghi) 
2. Chuyển quyền điều khiển cho thủ tục 
3. Nhận tài nguyên lưu trữ cho thủ tục 
4. Thực hiện cơng việc của thủ tục 
5. Chuyển kết quả vào vị trí (thanh ghi) để 
trả về cho chương trình gọi 
6. Trở về chương trình gọi 
BK 
TP.HCM 
Ý đồ sử dụng các thanh ghi 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 42 
 $a0 – $a3: chứa thơng số (reg’s 4 – 7) 
 $v0, $v1: giá trị trả về (reg’s 2 and 3) 
 $t0 – $t9: chứa giá trị tạm 
 Cĩ thể thay đổi nội dung khi thực hiện thủ tục 
 $s0 – $s7: bảo vệ 
 Cất/khơi phục bởi thủ tục 
 $gp: Con trỏ tồn cục dữ liệu tĩnh (reg 28) 
 $sp: stack pointer (reg 29) 
 $fp: frame pointer (reg 30) 
 $ra: Địa chỉ trở về (reg 31) 
BK 
TP.HCM 
Lệnh gọi thủ tục 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 43 
 Gọi thủ tục: jump and link (jal) 
 jal ProcedureLabel 
 Địa chỉ lệnh kế chứa trong thanh ghi $ra 
 Nhảy đến địa chỉ đích 
 Trở về chương trình gọi: jump register 
 jr $ra 
 Sao giá trị của $ra vào PC 
 Cĩ thể dùng nhảy theo điều kiện 
 Ví dụ: phát biểu case/switch 
BK 
TP.HCM 
Ví dụ: gọi thủ tục (leaf) 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 44 
 C code: 
 int leaf_example (int g, h, i, j) 
{ int f; 
 f = (g + h) - (i + j); 
 return f; 
} 
 Thơng số g, , j chứa trong $a0, , $a3 
 f trong $s0 (vì vậy, $s0 cất trong stack) 
 Kết quả trả về trong $v0 
BK 
TP.HCM 
Ví dụ: gọi thủ tục (tt.) 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 45 
 Sau khi biên dịch thành MIPS code: 
 leaf_example: 
 addi $sp, $sp, -4 
 sw $s0, 0($sp) 
 add $t0, $a0, $a1 
 add $t1, $a2, $a3 
 sub $s0, $t0, $t1 
 add $v0, $s0, $zero 
 lw $s0, 0($sp) 
 addi $sp, $sp, 4 
 jr $ra 
BK 
TP.HCM 
Gọi thủ tục (Non-Leaf) 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 46 
 Thủ tục gọi thủ tục khác 
 Gọi đệ quy, thủ tục gọi phải cất vào 
stack thơng tin: 
 Địa chỉ trở về của nĩ trong thủ tục “cha” 
 Tất cả các thơng số và giá trị tạm thời 
 Phục hồi từ stack sau khi thủ tục kết 
thúc 
BK 
TP.HCM 
Ví dụ: gọi thủ tục (Non-Leaf) 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 47 
 C code: 
 int fact (int n) 
{ 
 if (n < 1) return f; 
 else return n * fact(n - 1); 
} 
 Thơng số n chứa trong $a0 
 Kết quả trả về chứa trong $v0 
BK 
TP.HCM 
Ví dụ: gọi thủ tục (Non-Leaf) tt. 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 48 
 Sau khi biên dịch thành MIPS code: 
 fact: 
 addi $sp, $sp, -8 # adjust stack for 2 items 
 sw $ra, 4($sp) # save return address 
 sw $a0, 0($sp) # save argument 
 slti $t0, $a0, 1 # test for n < 1 
 beq $t0, $zero, L1 
 addi $v0, $zero, 1 # if so, result is 1 
 addi $sp, $sp, 8 # pop 2 items from stack 
 jr $ra # and return 
L1: addi $a0, $a0, -1 # else decrement n 
 jal fact # recursive call 
 lw $a0, 0($sp) # restore original n 
 lw $ra, 4($sp) # and return address 
 addi $sp, $sp, 8 # pop 2 items from stack 
 mul $v0, $a0, $v0 # multiply to get result 
 jr $ra # and return 
BK 
TP.HCM 
Cách lưu trữ trong Stack 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 49 
 Dữ liệu cục bộ được cấp phát tại thủ tục 
 e.g., C automatic variables 
 Procedure frame (activation record) 
 Compiler sử dụng để quản lý lưu trữ trong stack 
BK 
TP.HCM 
Bố cục chứa trong bộ nhớ 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 50 
 Text: mã lệnh chương trình 
 Dữ liệu tĩnh: biến tồn cục 
 Ví dụ: static variables in C, 
constant arrays and strings 
 $gp initialized to address 
allowing ±offsets into this 
segment 
 Dữ liệu động: heap 
 E.g., malloc in C, new in Java 
 Stack: lưu trữ tự động 
BK 
TP.HCM 
Dữ liệu ký tự 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 51 
 Tập ký tự dạng Byte-encoded 
 ASCII: 128 Ký tự 
 95 graphic, 33 điều khiển 
 Latin-1: 256 Ký tự 
 ASCII, +96 ký tự graphics 
 Tập ký tự 32-bit dạng Unicode: 
 Sử dụng trong Java, C++ wide characters,  
 Chứa tồn bộ mã ký tự thế giới, cùng với symbols 
 UTF-8, UTF-16: variable-length encodings 
BK 
TP.HCM 
Nhĩm các lệnh Byte/Halfword 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 52 
 Dùng cho các tác vụ xử lý theo bit 
 MIPS byte/halfword load/store 
 Xử lý chuỗi khá phổ biến 
lb rt, offset(rs) lh rt, offset(rs) 
 Sign extend to 32 bits in rt 
lbu rt, offset(rs) lhu rt, offset(rs) 
 Zero extend to 32 bits in rt 
sb rt, offset(rs) sh rt, offset(rs) 
 Chỉ ghi phần giá trị thấp byte/halfword 
BK 
TP.HCM 
Ví dụ: Sao chuỗi (String Copy) 
 C code (nạve): 
 Ký tự Null- đánh dấu kết thúc string 
 void strcpy (char x[], char y[]) 
{ int i; 
 i = 0; 
 while ((x[i]=y[i])!='\0') 
 i += 1; 
} 
 Địa chỉ của x, y chứa trong $a0, $a1 
 i chứa trong $s0 
25-Aug-16 53 Khoa Khoa học & Kỹ thuật Máy tính 
BK 
TP.HCM 
Ví dụ: String Copy (tt.) 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 54 
Sau khi biên dịch thành MIPS code: 
strcpy: 
 addi $sp, $sp, -4 # adjust stack for 1 item 
 sw $s0, 0($sp) # save $s0 
 add $s0, $zero, $zero # i = 0 
L1: add $t1, $s0, $a1 # addr of y[i] in $t1 
 lbu $t2, 0($t1) # $t2 = y[i] 
 add $t3, $s0, $a0 # addr of x[i] in $t3 
 sb $t2, 0($t3) # x[i] = y[i] 
 beq $t2, $zero, L2 # exit loop if y[i] == 0 
 addi $s0, $s0, 1 # i = i + 1 
 j L1 # next iteration of loop 
L2: lw $s0, 0($sp) # restore saved $s0 
 addi $sp, $sp, 4 # pop 1 item from stack 
 jr $ra # and return 
BK 
TP.HCM 
Hằng 32-bit 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 55 
 Phần lớn các hằng hạn chế trong 16-bit 
 Đáp ứng đủ cho các tốn hạng trực tiếp 16-bit 
 Với các Hằng lớn hơn (32-bit) 
 lui rt, constant 
 Sao 16-bit của hằng vào 16 bits bên trái của rt 
 Xĩa 16 bits bên phải của rt về 0 
0000 0000 0011 1101 0000 0000 0000 0000 lui $s0, 61 
0000 0000 0111 1101 0000 1001 0000 0000 ori $s0, $s0, 2304 
BK 
TP.HCM 
Xác định địa chỉ rẽ nhánh 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 56 
 Dạng lệnh rẽ nhánh gồm: 
 Opcode, 2 thanh ghi, target address 
 Vị trí nhảy đến địa chỉ rẽ nhánh thường 
gần lệnh rẽ nhánh: nhảy tới hoặc lui 
op rs rt constant or address 
6 bits 5 bits 5 bits 16 bits 
 Tương đối với giá trị PC 
 Địa chỉ đích = PC + offset × 4 
 PC đã tăng lên 4, khi lệnh thực hiện 
BK 
TP.HCM 
Địa chỉ nhảy trực tiếp 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 57 
 Đích của lệnh Jump (j and jal) bất cứ 
đâu trong đoạn lệnh chương trình 
op address 
6 bits 26 bits 
 (Pseudo) Địa chỉ đích 
 = PC3128 : (address × 4) 
BK 
TP.HCM 
Ví dụ: Xác định địa chỉ đích 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 58 
 Sử dụng lại đoạn code vịng lặp trước đây 
 Giả sử Loop bắt đầu từ địa chỉ 80000 
Loop: sll $t1, $s3, 2 80000 0 0 19 9 2 0 
 add $t1, $t1, $s6 80004 0 9 22 9 0 32 
 lw $t0, 0($t1) 80008 35 9 8 0 
 bne $t0, $s5, Exit 80012 5 8 21 2 
 addi $s3, $s3, 1 80016 8 19 19 1 
 j Loop 80020 2 20000 
Exit:  80024 
BK 
TP.HCM 
Rẽ nhánh xa 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 59 
 Trong trường hợp địa chỉ đích rẽ nhánh 
quá xa (vượt giá trị độ dời 16-bit), Hợp 
ngữ sẽ điều chỉnh lại code. 
 Ví dụ: 
 beq $s0,$s1, L1 
 ↓ 
 bne $s0,$s1, L2 
 j L1 
L2:  
BK 
TP.HCM 
Tĩm tắt Addressing Mode 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 60 
BK 
TP.HCM 
Đồng bộ 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 61 
 Hai bộ xử lý dùng chung 1 vùng bộ nhớ 
 P1 ghi thơng tin, sau đĩ P2 đọc 
 Cĩ sự tranh chấp truy cập, nếu P1 & P2 khơng địng 
bộ với nhau  Kết quả khơng xác định được 
 Hỗ trợ phần cứng yêu cầu 
 Tác vụ Atomic đọc/ghi bộ nhớ 
 Khơng cho phép truy cập nào khác, khi xảy ra tác vụ 
đọc hoặc ghi 
 Các tác vụ thực hiện chỉ với 1 lệnh 
 Ví dụ: hốn vị register ↔ memory 
 Hoặc 1 cặp atomic lệnh 
BK 
TP.HCM 
Đồng bộ trong MIPS 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 62 
 Load linked: ll rt, offset(rs) 
 Store conditional: sc rt, offset(rs) 
 Succeeds if location not changed since the ll 
 Returns 1 in rt 
 Fails if location is changed 
 Returns 0 in rt 
 Ví dụ: atomic swap (to test/set lock variable) 
try: add $t0,$zero,$s4 ;copy exchange value 
 ll $t1,0($s1) ;load linked 
 sc $t0,0($s1) ;store conditional 
 beq $t0,$zero,try ;branch store fails 
 add $s4,$zero,$t1 ;put load value in $s4 
BK 
TP.HCM 
Lệnh giả trong hợp ngữ 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 63 
 Phần lớn lệnh trong hợp ngữ tương 
đồng 1-1 với lệnh mã máy 
 Lệnh giả (Pseudo): dễ nhớ, ví dụ 
 move $t0, $t1 → add $t0, $zero, $t1 
 blt $t0, $t1, L → slt $at, $t0, $t1 
 bne $at, $zero, L 
 $at (register 1): assembler temporary 
BK 
TP.HCM 
Biên dịch và thực hiện 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 64 
BK 
TP.HCM 
Tạo Object Module 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 65 
 Assembler (hoặc compiler) biên dịch chương 
trình ra lệnh máy 
 Thiết lập các thơng tin để xây dựng 1 chương 
trình để cĩ thể thực thi, bao gồm 
 Header: đặc tả nội dung của object module 
 Text segment: các lệnh đã được biên dịch 
 Static data segment: dữ liệu được cấp phát cho 
chương trình trong suốt quá trình tực thi 
 Relocation info: định vị tuyệt đối của chương trình 
được nạp vào bộ nhớ 
 Symbol table: global definitions and external refs 
 Debug info: liên quan đến gỡ rối chương trình 
BK 
TP.HCM 
Liên kết các Object Modules 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 66 
 Linker: Cịn gọi là link editor, cho phép ghép các object file 
riêng lẻ lại với nhau thành một chương trình thống nhất cĩ 
thể thực thi được gọi là executable file 
 Quá trình ghép diễn ra theo 3 bước 
 Xếp mã chương trình và dữ liệu lại với nhau 
 Xác định địa chỉ cho các nhãn chương trình và dữ liệu So trùng các 
tham cứu nội và ngoại (internal/external reference) 
 Một executable file cĩ các thành phần gần giống với object 
file trừ các phần: relocation information, symbol table và 
debugging information 
 Các object file, ngồi các chương trình do người dùng 
(user) viết, cịn cĩ các trình con viết sẵn trong thư viện 
(library) do compiler cung cấp, do người dùng tạo lập hay 
từ các nguồn chuyên biệt 
BK 
TP.HCM 
Nạp một chương trình 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 67 
 Nạp tập tin thực thi trên đĩa vào bộ nhớ 
1. Đọc header để xác định dung lượng các đoạn 
2. Tạo khơng gian địa chỉ ảo 
3. Khởi động dữ liệu trong bộ nhớ 
4. Set up arguments on stack 
5. Khởi động các thanh ghi (gồm $sp, $fp, $gp) 
6. Nhảy tới đầu chương trình 
 Sao các thơng số vào $a0,  và gọi main 
 Khi kết thúc trở về từ main, do exit syscall 
BK 
TP.HCM 
Liên kết động 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 68 
 Chỉ liên kết/nạp khi thủ tục được gọi 
 Yêu cầu phần code của thủ tục được cấp 
phát bộ nhớ 
 Tránh việc phát sinh cấp phát sinh ra bởi 
kết nối với thư viện 
 Tự động cập nhật phiên bản mới của thư 
viện 
BK 
TP.HCM 
Kết luận 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 69 
 Các nguyên tắc thiết kế 
1. Simplicity favors regularity 
2. Smaller is faster 
3. Make the common case fast 
4. Good design demands good compromises 
 Các lớp phần mềm/cứng 
 Biên dịch, Hợp ngữ, Phần cứng 
 MIPS: là mơ hình đặc thù kiến trúc tập 
lệnh RISC 
BK 
TP.HCM 
Kết luận (tt.) 
25-Aug-16 Khoa Khoa học & Kỹ thuật Máy tính 70 
 Đo đạc thực hiện tập lệnh của MIP với 
chương trình đánh giá 

File đính kèm:

  • pdfbai_giang_kien_truc_may_tinh_chuong_2_ngon_ngu_may_tap_lenh.pdf