bg2
TRANSCRIPT
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 11
Tổ chức máy tínhTổ chức máy tínhHọc kỳ 1 2011-2012Học kỳ 1 2011-2012
Bài 2: Assembly và mã máy của bộ Bài 2: Assembly và mã máy của bộ xử lý MIPS 32 bitxử lý MIPS 32 bit(Đọc chapter 2 : 2.1 đến 2.7)(Đọc chapter 2 : 2.1 đến 2.7)
Hồ Viết Việt Hồ Viết Việt ThS. GVCThS. GVCBộ môn Kỹ thuật máy tính, Khoa Điện tử Viễn thôngBộ môn Kỹ thuật máy tính, Khoa Điện tử Viễn thông
Đại học Bách khoa Đà NẵngĐại học Bách khoa Đà Nẵng
[email protected]@gmail.com
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 22
Mục tiêu bài 2Mục tiêu bài 2Chuyển đổi một đoạn chương trình Assembly của Chuyển đổi một đoạn chương trình Assembly của MIPS32 sang mã máyMIPS32 sang mã máyChuyển đổi một đoạn mã máy sang Assembly của Chuyển đổi một đoạn mã máy sang Assembly của MIPS32MIPS32Chuyển đổi một đoạn mã C sang Assembly của MIPS32Chuyển đổi một đoạn mã C sang Assembly của MIPS32Thực hiện một vài giả lệnh bằng một số tối thiểu các Thực hiện một vài giả lệnh bằng một số tối thiểu các lệnh Assembly của MIPS32lệnh Assembly của MIPS32Viết được một chương trình assembly có thể chạy trên Viết được một chương trình assembly có thể chạy trên phần mềm PCSPIMphần mềm PCSPIM
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 33
Phần cứng của ComputerPhần cứng của Computer
Control
Datapath MemoryCentral Processing
Unit (CPU)Hay “processor”
Input
Output
5 thành phần cơ bản của phần cứng
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 44
Phần mềm của ComputerPhần mềm của Computer
Application software,a program in C:
swap (int v[ ], int k){int temp;
temp = v[k];v[k] = v[k+1];v[k+1] = temp;
}
MIPS binary machine code:
00000000101000010000000000011000000000000001100000011000001000011000110001100010000000000000000010001100111100100000000000000100101011001111001000000000000000001010110001100010000000000000010000000011111000000000000000001000
Compiler Assembler
Application software
Hardware
Systems software
MIPS compiler output,assembly language program:
swap;muli $2, $5, 4add $2, $4, $2lw $15, 0 ($2)lw $16, 4 ($2)sw $16, 0 ($2)sw $15, 4 ($2)jr $31
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 55
Kiến trúc tập lệnh (ISA)Kiến trúc tập lệnh (ISA)Một tập lệnh cung cấp mối liên kết giữa phần Một tập lệnh cung cấp mối liên kết giữa phần mềm và phần cứng.mềm và phần cứng.Với cùng một tập lệnh, người lập trình phần mềm Với cùng một tập lệnh, người lập trình phần mềm và người kỹ sư phần cứng hoạt động ít nhiều độc và người kỹ sư phần cứng hoạt động ít nhiều độc lập với nhau.lập với nhau.ISA được thiết kế nhằm khai thác được tính năng ISA được thiết kế nhằm khai thác được tính năng cao nhất từ công nghệ phần cứng sẵn có.cao nhất từ công nghệ phần cứng sẵn có.
Inst
ruc
tio
ns
etSoftware Hardware
Application software
Hardware
Systems software
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 66
Kiến trúc tập lệnh (ISA)Kiến trúc tập lệnh (ISA)
ISAISA– Định nghĩa các thanh ghiĐịnh nghĩa các thanh ghi– Định nghĩa các mode truyền dữ liệu giữa các thanh Định nghĩa các mode truyền dữ liệu giữa các thanh
ghi với bộ nhớ và I/Oghi với bộ nhớ và I/O– Số lượng đủ các lệnhSố lượng đủ các lệnh– Độ dài và khuôn dạng của câu lệnh: cố định hay thay Độ dài và khuôn dạng của câu lệnh: cố định hay thay
đổiđổi
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 77
Các kiểu ISACác kiểu ISAComplex instruction set computer (CISC)Complex instruction set computer (CISC)– Nhiều lệnh (vài trăm)Nhiều lệnh (vài trăm)– CPI > 1CPI > 1– Ví dụ: Intel PentiumVí dụ: Intel Pentium
Reduced instruction set computer (RISC)Reduced instruction set computer (RISC)– Ít lệnh (vài chục)Ít lệnh (vài chục)– CPI = 1CPI = 1– pipeliningpipelining– Ví dụ: ARM, MIPSVí dụ: ARM, MIPS
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 88
PipeliningPipelining
FetchInstruction
DecodeOpcode
FetchOperands
ExecuteOperation
StoreResult
Mặc dù một lệnh cần 5 cycle để được thực hiện nhưng trong một cycle có thể hoàn tất được một lệnh. Vì sao?
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 99
Sự tăng trưởng về số lượng của MIPS và Sự tăng trưởng về số lượng của MIPS và các bộ xử lý kháccác bộ xử lý khác
Chúng ta sẽ học kiến trúc Chúng ta sẽ học kiến trúc tập lệnh của các bộ xử lý tập lệnh của các bộ xử lý MIPSMIPS– MIPS tương tự với MIPS tương tự với
nhiều kiến trúc khác từ nhiều kiến trúc khác từ những năm 1980những năm 1980
– Gần 100 triệu bộ xử lý Gần 100 triệu bộ xử lý MIPS được sản xuất MIPS được sản xuất trong năm 2002trong năm 2002
– MIPS được nhiều hãng MIPS được nhiều hãng sử dụng: NEC, Cisco, sử dụng: NEC, Cisco, Nintendo, Silicon Nintendo, Silicon Graphics, Sony, …Graphics, Sony, …
1400
1300
1200
1100
1000
900
800
700
600
500
400
300
200
100
01998 2000 2001 20021999
Other
SPARC
Hitachi SH
PowerPC
Motorola 68K
MIPS
IA-32
ARM
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 1010
Tập lệnh MIPS (RISC)Tập lệnh MIPS (RISC)Các lệnh thực hiện các thao tác đơn giản.Các lệnh thực hiện các thao tác đơn giản.Có tính regularity về khuôn dạng – mỗi lệnh Có tính regularity về khuôn dạng – mỗi lệnh dài 1 word, gồm một mã lệnh (dài 1 word, gồm một mã lệnh (opcode)opcode) và và các đối số (các đối số (arguments)arguments)..Giảm thiểu việc truy cập bộ nhớ – dùng các Giảm thiểu việc truy cập bộ nhớ – dùng các thanh ghi làm đối số bất cứ khi nào có thể.thanh ghi làm đối số bất cứ khi nào có thể.Có 3 kiểu lệnh (khuôn dạng lệnh):Có 3 kiểu lệnh (khuôn dạng lệnh):
Kiểu thanh ghi (R) – chỉ dùng thanh ghi làm đối số.Kiểu thanh ghi (R) – chỉ dùng thanh ghi làm đối số.Kiểu tại chỗ (I) – dùng thanh ghi và các số làm đối số. Kiểu tại chỗ (I) – dùng thanh ghi và các số làm đối số. Kiểu nhảy(J) – dùng địa chỉ làm đối số.Kiểu nhảy(J) – dùng địa chỉ làm đối số.
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 1111
Các lệnh số học của MIPS Các lệnh số học của MIPS Tất cả các lệnh đều có 3 toán hạngTất cả các lệnh đều có 3 toán hạng
Trât tự các toán hạng là cố định (đầu tiên là toán hạng đích)Trât tự các toán hạng là cố định (đầu tiên là toán hạng đích)
Ví dụ: lệnh cộng addVí dụ: lệnh cộng add
C : C : a = b + c;
MIPS :MIPS : add a, b, c
“The natural number of operands for an operation like addition is “The natural number of operands for an operation like addition is three… requiring every instruction to have exactly three three… requiring every instruction to have exactly three operands conforms to the philosophy of keeping the hardware operands conforms to the philosophy of keeping the hardware simple”simple”
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 1212
Các lệnh số học của MIPS Các lệnh số học của MIPS Nguyên lý thiết kế 1: Đơn giản là Đều. Nguyên lý thiết kế 1: Đơn giản là Đều.
Hạn chế:Hạn chế:
C :C : a = b + c + d;
MIPS :MIPS : add a, b, cadd a, a, d
Các toán hạng phải là thanh ghi với lệnh add và Các toán hạng phải là thanh ghi với lệnh add và nhiều lệnh số học khácnhiều lệnh số học khác
MIPS định nghĩa tất cả 32 thanh ghi 32-bitMIPS định nghĩa tất cả 32 thanh ghi 32-bit
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 1313
Quy ước (khuyến cáo) sử dụng thanh ghiQuy ước (khuyến cáo) sử dụng thanh ghiTên Số Sử dụng
$zero $0 Hằng số 0
$v0-$v1 $2-$3 values for results and expression evaluation
$a0-$a3 $4-$7 arguments
$t0-$t7 $8-$15 temporaries
$s0-$s7 $16-$23 saved
$t8-$t9 $24-$25 more temporaries
$gp $28 global pointer
$sp $29 stack pointer
$fp $30 frame pointer
$ra $31 return address
Thanh ghi $1 ($at) dành cho assembler, $26-$27 dành cho hệ điều hành2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 1414
Thanh ghi và Bộ nhớThanh ghi và Bộ nhớ
Processor I/O
Control
Datapath
Memory
Input
Output
Toán hạng của các lệnh số học phải là thanh ghiToán hạng của các lệnh số học phải là thanh ghiMIPS chỉ có 32 thanh ghi 32-bitMIPS chỉ có 32 thanh ghi 32-bit
Trình biên dịch (compiler) liên kết Biến với Thanh ghi.Trình biên dịch (compiler) liên kết Biến với Thanh ghi.Nếu một chương trình cần nhiều biến? Phải dùng đến Nếu một chương trình cần nhiều biến? Phải dùng đến bộ nhớ.bộ nhớ.
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 1515
Tổ chức bộ nhớTổ chức bộ nhớBộ nhớ được xem như một mảng một chiều lớn và có Bộ nhớ được xem như một mảng một chiều lớn và có địa chỉ bắt đầu là 0.địa chỉ bắt đầu là 0.
Một địa chỉ trong bộ nhớ là một chỉ số dùng để truy cập Một địa chỉ trong bộ nhớ là một chỉ số dùng để truy cập vào mảng.vào mảng.
"Byte addressing”: định địa chỉ theo byte, mỗi chỉ số trỏ "Byte addressing”: định địa chỉ theo byte, mỗi chỉ số trỏ đến 1 byte.đến 1 byte.
2004 © Morgan Kaufman Publishers
32 bit word
32 bit word
32 bit word
32 bit word
.
.
.
8 bits of data 8 bits of data 8 bits of data 8 bits of data
8 bits of data 8 bits of data 8 bits of data 8 bits of data
8 bits of data 8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data 8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
Byte 0 byte 1 byte 2 byte 3
byte 4 byte 10
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 1616
Tổ chức bộ nhớTổ chức bộ nhớĐơn vị dữ liệu thông thường là wordĐơn vị dữ liệu thông thường là word
Đối với MIPS, 1 word là 32 bit tức là 4 byte.Đối với MIPS, 1 word là 32 bit tức là 4 byte.
Địa chỉ byteĐịa chỉ byte
của wordcủa word
223232 byte có địa chỉ từ 0 đến 2 byte có địa chỉ từ 0 đến 232 32 – 1 – 1
223030 word có địa chỉ là 0, 4, 8, ... 2 word có địa chỉ là 0, 4, 8, ... 232 32 – 4 – 4
Word là alignedWord là alignedi.e., 2 bit thấp nhất của một địa chỉ word là 00?i.e., 2 bit thấp nhất của một địa chỉ word là 00?
...
Mỗi thanh ghi lưu trữ 32 bit dữ liệu
Dùng địa chỉ 32 bit
2004 © Morgan Kaufman Publishers
0
4
8
12
.
32 bits of data
32 bits of data
32 bits of data
32 bits of data
32 bits of data
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 1717
Các lệnh chuyển dữ liệu: lw, sw Các lệnh chuyển dữ liệu: lw, sw Các lệnh Load (lw) và Store (sw)Các lệnh Load (lw) và Store (sw)Ví dụ:Ví dụ:
C:C: A[12] = h + A[8];
MIPS :MIPS : lw $t0, 32($s3) # giả sử $s3 chứa địa chỉ của A add $t0, $s2, $t0 # giả sử h ở $s2
sw $t0, 48($s3)
Có thể dùng tên hoặc dùng số cho thanh ghiCó thể dùng tên hoặc dùng số cho thanh ghiVì toán hạng của các lệnh số học phải là thanh ghi nên không thể Vì toán hạng của các lệnh số học phải là thanh ghi nên không thể viết:viết:
add 48($s3), $s2, 32($s3)
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 1818
Ví dụ đầu tiênVí dụ đầu tiênCó thể tìm mã MIPS của hàm swap (mã C)?Có thể tìm mã MIPS của hàm swap (mã C)?
Lúc đầu, tg 5 chứa k; tg 4 chứa địa chỉ của v, tg Lúc đầu, tg 5 chứa k; tg 4 chứa địa chỉ của v, tg 31 chứa địa chỉ quay về31 chứa địa chỉ quay về
swap(int v[], int k);{ int temp;
temp = v[k];v[k] = v[k+1];v[k+1] = temp;
}
swap:sll $2, $5, 2add $2, $4, $2lw $15, 0($2)lw $16, 4($2)sw $16, 0($2)sw $15, 4($2)jr $31
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 1919
Có chuyện gì?Có chuyện gì?
Khi gặp “câu lệnh swap”:Khi gặp “câu lệnh swap”:– Nhảy đến chương trình con swapNhảy đến chương trình con swap
Các tg $4 và $5 chứa các đối sốCác tg $4 và $5 chứa các đối số
Tg $31 chứa địa chỉ quay vềTg $31 chứa địa chỉ quay về
– Hoán đổi 2 word trong bộ nhớHoán đổi 2 word trong bộ nhớ– Nhảy ngược lại địa chỉ quay về để tiếp tục phần còn lại Nhảy ngược lại địa chỉ quay về để tiếp tục phần còn lại
của chương trìnhcủa chương trình
.
.swap...
Địa chỉ quay về
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 2020
Bộ nhớ và Thanh ghiBộ nhớ và Thanh ghi
Word 0
Word 1
Word 2
v[0] (Word n)
048
12 .
4n . . .
4n+4k.
v[1] (Word n+1)
Register 0
Register 1
Register 2
Register 3
Register 4
Register 31
Register 5
v[k] (Word n+k)
4n
k
Memory
byte addr.
jump addr.v[k+1] (Word n+k+1)
.
.
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 2121
Ví dụ đầu tiênVí dụ đầu tiênCó thể tìm mã MIPS của swap?Có thể tìm mã MIPS của swap?
swap(int v[], int k);{ int temp;
temp = v[k]v[k] = v[k+1];v[k+1] = temp;
}
swap:sll $2, $5, 2add $2, $4, $2lw $15, 0($2)lw $16, 4($2)sw $16, 0($2)sw $15, 4($2)jr $31
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 2222
Cho đến giờ…Cho đến giờ…MIPSMIPS
— Truy cập các word trong bộ nhớ theo địa chỉ byte— Truy cập các word trong bộ nhớ theo địa chỉ byte— Toán hạng của lệnh số học như lệnh cộng phải là — Toán hạng của lệnh số học như lệnh cộng phải là
thanh ghithanh ghi
LệnhLệnh Ý nghĩaÝ nghĩa
add $s1, $s2, $s3 $s1 = $s2 + $s3sub $s1, $s2, $s3 $s1 = $s2 – $s3lw $s1, 100($s2) $s1 = Memory[$s2+100] sw $s1, 100($s2) Memory[$s2+100] = $s1
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 2323
Mỗi lệnh dài 32 bit cũng giống như thanh ghi, như wordMỗi lệnh dài 32 bit cũng giống như thanh ghi, như word– Ví dụ: Ví dụ: add $t1, $s1, $s2– Các thanh ghi đều có số và tên: Các thanh ghi đều có số và tên: $t1= $9, $s1= $17, $s2= $18
Khuôn dạng lệnh kiểu R:Khuôn dạng lệnh kiểu R:
000000 10001 10010 01001 00000 100000
op rs rt rd shamt funct
Ngôn ngữ máyNgôn ngữ máy
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 2424
Nữu ƯớcNữu Ước
GrandCentralStation
TimesSquare
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 2525
Xét các lệnh load word và store word…Xét các lệnh load word và store word…– Nguyên lý thiết kế 1?Nguyên lý thiết kế 1?– Nguyên lý thiết kế 4: Good design demands a compromiseNguyên lý thiết kế 4: Good design demands a compromise
Khuôn dạng lệnh mới:Khuôn dạng lệnh mới:– I-type là khuôn dạng của các lệnh chuyển dữ liệuI-type là khuôn dạng của các lệnh chuyển dữ liệu– R-type ?R-type ?
Ví dụ lệnh load word: Ví dụ lệnh load word: lw $t0, 32($s2)lw $t0, 32($s2)
35 18 9 32
op rs rt một số 16 bit
Compromise ở chỗ nào?Compromise ở chỗ nào?
Ngôn ngữ máyNgôn ngữ máy
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 2626
Lệnh cũng là các bitLệnh cũng là các bit
Chương trình được lưu trữ trong bộ nhớ Chương trình được lưu trữ trong bộ nhớ Được đọc/ghi giống như dữ liệuĐược đọc/ghi giống như dữ liệu
Lấy và Thực hiện (Fetch và Execute)Lấy và Thực hiện (Fetch và Execute)Lệnh được lấy từ bộ nhớ và đặt vào một thanh ghi đặc biệtLệnh được lấy từ bộ nhớ và đặt vào một thanh ghi đặc biệt
Các bit Opcode sẽ điều khiển các hoạt động tiếp theoCác bit Opcode sẽ điều khiển các hoạt động tiếp theo
Lấy lệnh kế tiếp và cứ thế tiếp tụcLấy lệnh kế tiếp và cứ thế tiếp tục
Processor MemoryBộ nhớ lưu trữ dữ liệu,chương trình
Stored Program Computer (SPC)Stored Program Computer (SPC)
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 2727
Các lệnh ra quyết địnhCác lệnh ra quyết định– Thay đổi trình tự thực hiện,Thay đổi trình tự thực hiện,– i.e. thay đổi “lệnh kế tiếp” cần thực hiệni.e. thay đổi “lệnh kế tiếp” cần thực hiện
Các lệnh rẽ nhánh (branch) có điều kiện của MIPS:Các lệnh rẽ nhánh (branch) có điều kiện của MIPS:
bne $t0, $t1, Label beq $t0, $t1, Label
Ví dụ: C:Ví dụ: C: if (i==j) h = i + j;
MIPS: bne $s0, $s1, Labeladd $s3, $s0, $s1
Label: ....
Điều khiển (Control)Điều khiển (Control)
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 2828
Các lệnh rẽ nhánh không điều kiện của MIPS:Các lệnh rẽ nhánh không điều kiện của MIPS:j label
Ví dụ:Ví dụ:if (i!=j) beq $s4, $s5, Lab1 h=i+j; add $s3, $s4, $s5else j Lab2 h=i-j; Lab1:sub $s3, $s4, $s5
Lab2:...
Có thể xây dựng một vòng lặp Có thể xây dựng một vòng lặp for?for?
Cấu trúc Điều kiệnCấu trúc Điều kiện
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 2929
Cho đến bây giờ…Cho đến bây giờ…LệnhLệnh Ý nghĩaÝ nghĩaadd $s1,$s2,$s3 $s1 = $s2 + $s3sub $s1,$s2,$s3 $s1 = $s2 – $s3lw $s1,100($s2) $s1 = Memory[$s2+100] sw $s1,100($s2) Memory[$s2+100] = $s1bne $s4,$s5,Label Lệnh kế tiếp ở tại Label nếu
$s4 ≠ $s5beq $s4,$s5,Label Lệnh kế tiếp ở tại Label nếu
$s4 = $s5j Label Lệnh kế tiếp ở tại Label
Các khuôn dạng lệnh:Các khuôn dạng lệnh:
op rs rt rd shamt funct
op rs rt 16 bit address
op 26 bit address
R
I
J2004 © Morgan Kaufman Publishers
Các lệnh logic và dịch bitCác lệnh logic và dịch bit
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 3030Tổ chức máy tínhTổ chức máy tính
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 3131
Đã có các lệnh: beq, bne, thế còn Branch-if-less-than?Đã có các lệnh: beq, bne, thế còn Branch-if-less-than?
Lệnh Set on Less Than (slt):Lệnh Set on Less Than (slt):if $s1 < $s2 then
$t0 = 1slt $t0, $s1, $s2 else
$t0 = 0
Có thể dùng lệnh này để xây dựng “lệnh” mới:Có thể dùng lệnh này để xây dựng “lệnh” mới:
blt $s1, $s2, Label
Assembler cần một thanh ghi cho việc này,Assembler cần một thanh ghi cho việc này,— thanh ghi $at ($1)— thanh ghi $at ($1)
Điều khiểnĐiều khiển
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 3232
Giả lệnh (Pseudoinstructions)Giả lệnh (Pseudoinstructions)
bltblt $s1, $s2, label$s1, $s2, labelAssembler chuyển thành:Assembler chuyển thành: sltslt $at, $s1, $s2$at, $s1, $s2
bnebne $at, $zero, label$at, $zero, label
Vài giả lệnh khác: bgt, ble, bge, li, moveVài giả lệnh khác: bgt, ble, bge, li, moveKhông được thực hiện bằng phần cứngKhông được thực hiện bằng phần cứngAssembler chuyển giả lệnh thành các lệnh máyAssembler chuyển giả lệnh thành các lệnh máyThanh ghi $1($at) dành cho việc chuyển giả Thanh ghi $1($at) dành cho việc chuyển giả lệnh thành lệnh máy.lệnh thành lệnh máy.
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 3333
Các hằng số nhỏ được dùng khá thường xuyên Các hằng số nhỏ được dùng khá thường xuyên e.g., e.g., A = A + 5;A = A + 5;
B = B + 1;B = B + 1;C = C – 18;C = C – 18;
Cách giải quyết?Cách giải quyết?– Đặt các hằng số điển hình trong bộ nhớ và nạp vào khi cần. Đặt các hằng số điển hình trong bộ nhớ và nạp vào khi cần. – Tạo ra các thanh ghi cố định (như $zero) cho các hằng số khác.Tạo ra các thanh ghi cố định (như $zero) cho các hằng số khác.
Các lệnh MIPS:Các lệnh MIPS: addi $29, $29, 4
slti $8, $18, 10andi $29, $29, 6ori $29, $29, 4
Nguyên lý thiết kế 3: Make the common case fast. Nguyên lý thiết kế 3: Make the common case fast.
Hằng số nhỏ (16-bit)Hằng số nhỏ (16-bit)
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 3434
Cần nạp một số 32 bit vào một thanh ghi? Phải dùng 2 lệnhCần nạp một số 32 bit vào một thanh ghi? Phải dùng 2 lệnh
Trước hết dùng lệnh "load upper immediate" :Trước hết dùng lệnh "load upper immediate" :
lui $t0, 1010101010101010
Rồi nạp các bit thấp bằng lệnh ori:Rồi nạp các bit thấp bằng lệnh ori:ori $t0, $t0, 1010101010101010
1010101010101010 0000000000000000
0000000000000000 1010101010101010
1010101010101010 1010101010101010
ori
1010101010101010 0000000000000000
16 bit đều bằng 0
Các hằng số lớn hơn 16-bit?Các hằng số lớn hơn 16-bit?
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 3535
Tất cả các lệnh máy của MIPS đều dài 32 bitTất cả các lệnh máy của MIPS đều dài 32 bit
Chỉ có 3 khuôn dạng lệnh:R, I và JChỉ có 3 khuôn dạng lệnh:R, I và J
Các giả lệnh không được thực hiện bằng phần cứngCác giả lệnh không được thực hiện bằng phần cứng
op rs rt rd shamt funct
op rs rt 16 bit address
op 26 bit address
R
I
J
Sơ kết về ISA của MIPSSơ kết về ISA của MIPS
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 3636
Các lệnh rẽ nhánh và nhảy:Các lệnh rẽ nhánh và nhảy:
bne $t4, $t5, Labelbne $t4, $t5, Label Lệnh tiếp theo ở tại Label Lệnh tiếp theo ở tại Label nếu nếu($t4) ($t4) ≠≠ ($t5) ($t5)
beq $t4, $t5, Labelbeq $t4, $t5, Label Lệnh tiếp theo ở tại Label Lệnh tiếp theo ở tại Label nếu nếu($t4) ($t4) == ($t5 ($t5
j Labelj Label Lệnh tiếp theo ở tại Label Lệnh tiếp theo ở tại Label
Hai khuôn dạng I, J:Hai khuôn dạng I, J: op rs rt 16 bit rel. address
op 26 bit absolute address
I
J
Địa chỉ trong các lệnh beq, bne và jĐịa chỉ trong các lệnh beq, bne và j
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 3737
Các lệnh rẽ nhánh có điều kiện:Các lệnh rẽ nhánh có điều kiện:bne $t4,$t5,Labelbne $t4,$t5,Labelbeq $t4,$t5,Labelbeq $t4,$t5,Label
Khuôn dạng I và J:Khuôn dạng I và J: – 215 to 215 – 1 ~ ±32 Kwords±32 Kwords
Địa chỉ tương đốiĐịa chỉ tương đối 226 = 64 64 Mwords Mwords– Đối với PC (program counter)Đối với PC (program counter)
Địa chỉ trong các lệnh bne, beqĐịa chỉ trong các lệnh bne, beq
2004 © Morgan Kaufman Publishers
op rs rt 16 bit address
op 26 bit address
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 3838
Ví dụ: Vòng lặp trong CVí dụ: Vòng lặp trong C
while ( save[i] == k )while ( save[i] == k )
i += 1;i += 1;
Với k cho trướcVới k cho trước
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 3939
Compiler phát ra mã MIPSCompiler phát ra mã MIPSCompiler dùng các thanh ghi làm các biến:
$s3 (reg 19) ← i ban đầu bằng 0$s5 (reg 21) ← k$s6 (reg 22) ← Địa chỉ của mảng save[ ]
Compiler phát ra mã MIPS Assembly sau:
Loop: sll $t1, $s3, 2 # Temp reg $t1 = 4 * iadd $t1, $t1, $s6 # $t1 = address of save[i]lw $t0, 0($t1) # Temp reg $t0 = save[i]bne $t0, $s5, Exit # go to Exit if save[i] ≠ kaddi $s3, $s3, 1 # i = i + 1j Loop # go to Loop
Exit:Hãy chuyển đoạn mã trên sang mã máy, giả sử nó bắt
đầu từ địa chỉ 80000
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 4040
Địa chỉ của các lệnh …Địa chỉ của các lệnh …
00 00 1919 99 22 00
00 99 2222 99 00 3232
3535 99 88 00
55 88 2121 +2+2
88 1919 1919 11
22 20000 (memory word address)20000 (memory word address)
. . . . .. . . . .
sll
add
lw
bne
addi
j
80000
80004
80008
80012
80016
80020
80024
Memory Machine codeByte addr. Bits 31-26| 25-21 | 20-16 | 15-11 | 10 – 6 | 5 – 0 |
$t0 ≡ Reg 8, $t1 ≡ Reg 9, $s3 ≡ Reg 19, $s5 ≡ Reg 21, $s6 ≡ Reg 22temp temp i k save
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 4141
Tính địa chỉ byte của Tính địa chỉ byte của ExitExit
Exit = +2Exit = +2 là một số nguyên 16-bit trong lệnh bne là một số nguyên 16-bit trong lệnh bne 000101 01000 10101 000101 01000 10101 0000000000000010 = 20000000000000010 = 2$PC = 80016 là địa chỉ của lệnh kế tiếp lệnh bne$PC = 80016 là địa chỉ của lệnh kế tiếp lệnh bne 00000000000000010011100010010000 = 8001600000000000000010011100010010000 = 80016Nhân đối số của bne với 4 (dịch trái 2 bit)Nhân đối số của bne với 4 (dịch trái 2 bit) 0000000000001000 = 80000000000001000 = 8$PC $PC ← ← $PC + 8$PC + 800000000000000010011100010011000 = 8002400000000000000010011100010011000 = 80024Do vậy, Địa chỉ byte của Do vậy, Địa chỉ byte của ExitExit là 80024. là 80024.
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 4242
Tính địa chỉ byte của Tính địa chỉ byte của LoopLoopĐối số trong lệnh J là Đối số trong lệnh J là 2000020000
000010000010 00000000000100111000100000 = 20000 00000000000100111000100000 = 20000
$PC = 80024, khi J đang được thực hiện$PC = 80024, khi J đang được thực hiện
000000000000000000010011100010011000 = 800240000000000010011100010011000 = 80024
Nhân đối số của J với 4Nhân đối số của J với 4
0000000000010011100010000000 = 800000000000000010011100010000000 = 80000
Nối thêm 4 bit cao nhất từ $PCNối thêm 4 bit cao nhất từ $PC
000000000000000000010011100010000000 = 800000000000000010011100010000000 = 80000
Do vậy, Do vậy, LoopLoop có địa chỉ byte là 80000. có địa chỉ byte là 80000.
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 4343Tổ chức máy tínhTổ chức máy tính
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 4444
Tóm tắtTóm tắtCác thanh ghi MIPS và Bộ nhớCác thanh ghi MIPS và Bộ nhớ
$s0-$s7, $t0-$t9, $zero, Fast locations for data. In MIPS, data must be in registers to perform
32 registers $a0-$a3, $v0-$v1, $gp, arithmetic. MIPS register $zero always equals 0. Register $at is
$fp, $sp, $ra, $at reserved for the assembler to handle large constants.
Memory[0], Accessed only by data transfer instructions. MIPS uses byte
230 memoryMemory[4], ..., addresses, so sequential words differ by 4. Memory holds data
words Memory[4294967292] structures, such as arrays, and spilled registers, such as those
saved on procedure calls.
Các lệnh của MIPSCác lệnh của MIPS
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 4545Tổ chức máy tínhTổ chức máy tính
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 4646
Các lệnh MIPSCác lệnh MIPSMIPS assembly language
Category Instruction Example Meaning Commentsadd add $s1, $s2, $s3 $s1 = $s2 + $s3 Three operands; data in registers
Arithmetic subtract sub $s1, $s2, $s3 $s1 = $s2 - $s3 Three operands; data in registers
add immediate addi $s1, $s2, 100 $s1 = $s2 + 100 Used to add constants
load w ord lw $s1, 100($s2) $s1 = Memory[$s2 + 100]Word from memory to register
store w ord sw $s1, 100($s2) Memory[$s2 + 100] = $s1 Word from register to memory
Data transfer load byte lb $s1, 100($s2) $s1 = Memory[$s2 + 100]Byte from memory to register
store byte sb $s1, 100($s2) Memory[$s2 + 100] = $s1 Byte from register to memoryload upper immediate
lui $s1, 100 $s1 = 100 * 216 Loads constant in upper 16 bits
branch on equal beq $s1, $s2, 25 if ($s1 == $s2) go to PC + 4 + 100
Equal test; PC-relative branch
Conditional
branch on not equal bne $s1, $s2, 25 if ($s1 != $s2) go to PC + 4 + 100
Not equal test; PC-relative
branch set on less than slt $s1, $s2, $s3 if ($s2 < $s3) $s1 = 1; else $s1 = 0
Compare less than; for beq, bne
set less than immediate
slti $s1, $s2, 100 if ($s2 < 100) $s1 = 1; else $s1 = 0
Compare less than constant
jump j 2500 go to 10000 Jump to target address
Uncondi- jump register jr $ra go to $ra For sw itch, procedure return
tional jump jump and link jal 2500 $ra = PC + 4; go to 10000 For procedure call
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 4747
Byte Halfword Word
Registers
Memory
Memory
Word
Memory
Word
Register
Register
1. Immediate addressing
2. Register addressing
3. Base addressing
4. PC-relative addressing
5. Pseudodirect addressing
op rs rt
op rs rt
op rs rt
op
op
rs rt
Address
Address
Address
rd . . . funct
Immediate
PC
PC
+
+
2004 © Morgan Kaufman Publishers
Các mode địa chỉ addi
add
lw, sw
beq, bne
j
Các mode địa chỉCác mode địa chỉ
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 4848Tổ chức máy tínhTổ chức máy tính
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 4949
Thay đổi thiết kế:Thay đổi thiết kế:
– Cung cấp nhiều lệnh mạnh hơnCung cấp nhiều lệnh mạnh hơn
– Mục đích là giảm số câu lệnh cần thực hiệnMục đích là giảm số câu lệnh cần thực hiện
– Hệ quả là cycle time dài hơn và/hoặc CPI cao hơnHệ quả là cycle time dài hơn và/hoặc CPI cao hơn
Các kiến trúc khácCác kiến trúc khác
–“The path toward operation complexity is thus fraught with peril.
To avoid these problems, designers have moved toward simpler
instructions”
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 5050
IA - 32IA - 321978:1978: Intel công bố bộ vi xử lý 8086 (16 bit )Intel công bố bộ vi xử lý 8086 (16 bit )1980:1980: Bộ đồng xử lý toán 8087 được bổ sungBộ đồng xử lý toán 8087 được bổ sung1982:1982: Bộ vi xử lý 80286 có không gian địa chỉ 24-bit và nhiều Bộ vi xử lý 80286 có không gian địa chỉ 24-bit và nhiều
lệnh hơnlệnh hơn1985:1985: 80386 mở rộng lên 32-bit, có thêm nhiều mode địa chỉ80386 mở rộng lên 32-bit, có thêm nhiều mode địa chỉ1989-1995:1989-1995: 80486, Pentium, Pentium Pro bổ sung thêm các lệnh có 80486, Pentium, Pentium Pro bổ sung thêm các lệnh có
hiệu suất caohiệu suất cao1997: 1997: 57 lệnh “MMX” mới được bổ sung ở Pentium II57 lệnh “MMX” mới được bổ sung ở Pentium II1999: 1999: Pentium III có thêm 70 lệnh (SSE – Pentium III có thêm 70 lệnh (SSE –
streaming SIMD extensions)streaming SIMD extensions)2001: 2001: Thêm144 lệnh nữa (SSE2)Thêm144 lệnh nữa (SSE2)2003: 2003: AMD tăng không gian địa chỉ lên 64 bits, mở rộng kích cỡ AMD tăng không gian địa chỉ lên 64 bits, mở rộng kích cỡ
các thanh ghi lên 64 bit và nhiều thay đổi khác (AMD64)các thanh ghi lên 64 bit và nhiều thay đổi khác (AMD64)2004: 2004: Intel chấp nhận AMD64 (và gọi là EM64T) rồi bổ sung nhiều Intel chấp nhận AMD64 (và gọi là EM64T) rồi bổ sung nhiều
mở rộng mediamở rộng media““This history illustrates the impact of the “golden handcuffs” of compatibility:This history illustrates the impact of the “golden handcuffs” of compatibility:““adding new features as someone might add clothing to a packed bag”adding new features as someone might add clothing to a packed bag”“an architecture that is difficult to explain and impossible to love”“an architecture that is difficult to explain and impossible to love”
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 5151
Tổng quan IA-32Tổng quan IA-32Độ phức tạp:Độ phức tạp:– Các lệnh có độ dài từ 1 đến 17 byteCác lệnh có độ dài từ 1 đến 17 byte– Một toán hạng vừa là nguồn vừa là đíchMột toán hạng vừa là nguồn vừa là đích– Một toán hạng có thể ở bộ nhớMột toán hạng có thể ở bộ nhớ– Các mode địa chỉ phức tạpCác mode địa chỉ phức tạp
Saving grace:Saving grace:– Việc thực hiện phần cứng các câu lệnh thường sử dụng không Việc thực hiện phần cứng các câu lệnh thường sử dụng không
quá khóquá khó– Compiler có thể tránh được các phần chạy chậm trong kiến trúcCompiler có thể tránh được các phần chạy chậm trong kiến trúc
““what the 80x86 lacks in style is made up in quantity, what the 80x86 lacks in style is made up in quantity, making it beautiful from the right perspective”making it beautiful from the right perspective”
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 5252
Các thanh ghi của IA-32Các thanh ghi của IA-32
Các thanh ghi 32-bit bắt đầu từ 80386Các thanh ghi 32-bit bắt đầu từ 80386
GPR 0
GPR 1
GPR 2
GPR 3
GPR 4
GPR 5
GPR 6
GPR 7
Code segment pointer
Stack segment pointer (top of stack)
Data segment pointer 0
Data segment pointer 1
Data segment pointer 2
Data segment pointer 3
Instruction pointer (PC)
Condition codes
Use
031Name
EAX
ECX
EDX
EBX
ESP
EBP
ESI
EDI
CS
SS
DS
ES
FS
GS
EIP
EFLAGS2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 5353
Các hạn chế của IA-32Các hạn chế của IA-32
Không phải tất cả các thanh ghi đều là Không phải tất cả các thanh ghi đều là thanh ghi đa năngthanh ghi đa năng
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 5454
Các lệnh tiêu biểu của IA-32Các lệnh tiêu biểu của IA-32Bốn kiểu lệnh chính với số nguyên:Bốn kiểu lệnh chính với số nguyên:– Chuyển dữ liệu như move, push, popChuyển dữ liệu như move, push, pop– Số học và Logic (đích ở thanh ghi hoặc bộ nhớ)Số học và Logic (đích ở thanh ghi hoặc bộ nhớ)– Điều khiển (sử dụng các cờ )Điều khiển (sử dụng các cờ )– Thao tác stringThao tác string
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 5555
Các khuôn dạng lệnh của IA-32 Các khuôn dạng lệnh của IA-32 Các khuôn dạng tiêu biểu (có độ dài khác nhau)Các khuôn dạng tiêu biểu (có độ dài khác nhau)
a. JE EIP + displacement
b. CALL
c. MOV EBX, [EDI + 45]
d. PUSH ESI
e. ADD EAX, #6765
f. TEST EDX, #42
ImmediatePostbyteTEST
ADD
PUSH
MOV
CALL
JE
w
w ImmediateReg
Reg
wd Displacementr/m
Postbyte
Offset
DisplacementCondi-tion
4 4 8
8 32
6 81 1 8
5 3
4 323 1
7 321 8
2004 © Morgan Kaufman Publishers
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 5656
Tham khảo thêmTham khảo thêmIA-32, IA-64 (CISC)IA-32, IA-64 (CISC)
A. S. Tanenbaum, A. S. Tanenbaum, Structured Computer Organization, Fifth Structured Computer Organization, Fifth EditionEdition, Upper Saddle River, New Jersey: Pearson Prentice-, Upper Saddle River, New Jersey: Pearson Prentice-Hall, 2006, Chapter 5.Hall, 2006, Chapter 5.
ARM (RISC)ARM (RISC)D. Seal, D. Seal, ARM Architecture Reference Manual, Second EditionARM Architecture Reference Manual, Second Edition, , Addison-Wesley Professional, 2000.Addison-Wesley Professional, 2000.
SPARC (Scalable Processor Architecture)SPARC (Scalable Processor Architecture)
PowerPCPowerPCV. C. Hamacher, Z. G. Vranesic and S. G. Zaky, Computer V. C. Hamacher, Z. G. Vranesic and S. G. Zaky, Computer Organization, Fourth Edition, New York: McGraw-Hill, 1996.Organization, Fourth Edition, New York: McGraw-Hill, 1996.
Học kỳ 1 2011-2012Học kỳ 1 2011-2012 Tổ chức máy tínhTổ chức máy tính 5757
Bộ xử lý MIPS 32 bit có 32 thanh ghi 32-bitBộ xử lý MIPS 32 bit có 32 thanh ghi 32-bit
Bộ nhớ bao gồm các word được đánh địa chỉ theo byteBộ nhớ bao gồm các word được đánh địa chỉ theo byte
Ba khuôn dạng lệnh: R, I, JBa khuôn dạng lệnh: R, I, J
Bốn nguyên lý thiết kế tập lệnh:Bốn nguyên lý thiết kế tập lệnh:– 1. simplicity favors regularity1. simplicity favors regularity– 2. smaller is faster2. smaller is faster– 3. good design demands compromise3. good design demands compromise– 4. make the common case fast4. make the common case fast
Tóm tắt bài 2 Tóm tắt bài 2
2004 © Morgan Kaufman Publishers