Instruction set architecture là gì

Dưới đây là những mẫu câu có chứa từ "instruction-set architecture isa", trong bộ từ điển Từ điển Anh - Việt. Chúng ta có thể tham khảo những mẫu câu này để đặt câu trong tình huống cần đặt câu với từ instruction-set architecture isa, hoặc tham khảo ngữ cảnh sử dụng từ instruction-set architecture isa trong bộ từ điển Từ điển Anh - Việt

1. A network interface card [NIC] was developed for the IBM PC industry standard architecture [ISA] bus.

Một card mạng[NIC] đã được phát triển cho bus kiến trúc tiêu chuẩn công nghiệp[ PC] của IBM PC.

2. Advances in instruction-level parallelism dominated computer architecture from the mid-1980s until the mid-1990s.

Những ưu điểm của song song cấp câu lệnh đã thống trị kiến trúc máy tính từ giữa những năm 1980 cho đến giữa thập niên 1990.

3. Java bytecode is the instruction set of the Java virtual machine [JVM].

Mã byte Java [tiếng Anh: Java bytecode], là tập lệnh của máy ảo Java [JVM].

4. The same year she set up an architecture practice in Johannesburg.

Cùng năm đó, bà đã thiết lập một thực hành kiến trúc ở Johannesburg.

5. Mynydd Isa and Glantraeth both resigned from the league.

Mynydd Isa và Glantraeth đều rút khỏi giải đấu.

6. His instruction?

Ngài căn dặn họ điều gì?

7. Stylistically, Renaissance architecture followed Gothic architecture and was succeeded by Baroque architecture.

Phong cách, kiến trúc thời kỳ Phục hưng theo kiến trúc Gothic và được kế tục bởi kiến trúc Baroque.

8. Civic Instruction.

Giáo dục Công dân.

9. What instruction?

Chỉ thị nào vậy?

10. This tool was used to prune vines. —Isa 18:5

Công cụ này được dùng để tỉa cây nho.—Ês 18:5

11. Of course, if such instruction is to be effective, parents must set the proper example. —Luke 10:38-42.

Dĩ nhiên, muốn việc dạy dỗ đó có hiệu quả, cha mẹ phải làm gương tốt.—Lu-ca 10:38-42.

12. * Is not this the fast that I have chosen, Isa.

* Đó há chẳng phải là sự kiêng ăn mà ta chọn lựa?

13. Liquid architecture.

Kiến trúc lỏng.

14. Modern architecture.

Kiến trúc tân thời Không bền đâu.

15. Architecture Courses.

Ngành ngành thi đua.

16. In a computer using the Harvard architecture, the CPU can both read an instruction and perform a data memory access at the same time, even without a cache.

Trong một máy tính kiến trúc Harvard, CPU có thể vừa đọc một lệnh, vừa truy cập dữ liệu từ bộ nhớ cùng lúc.

17. Early in its duration, Isa caused light rainfall and moderate winds on Pohnpei.

Trong giai đoạn hoạt động đầu, Isa gây mưa nhỏ và gió tương đối tại Pohnpei.

18. So you can read " architecture active " or " active architecture. "

Vì thế các bạn có thể đọc được từ " architecture active " hoặc " active architecture. " [ kiến trúc chủ động ]

19. Virginia furniture and architecture are typical of American colonial architecture.

Đồ nội thất và kiến trúc Virginia mang đặc trưng của kiến trúc Hoa Kỳ thời thuộc địa.

20. Please give me instruction, Master

Hãy cho con chỉ dẫn, thưa Sư phụ.

21. The Master gave this instruction:

Đấng Chủ Tể đã đưa ra lời chỉ dẫn này:

22. Identifying God’s Channel of Instruction

Nhận ra công cụ giáo huấn của Đức Chúa Trời

23. In revising the ISA, the government met with key stakeholders to discuss amendments.

Trong khi kiểm tra, lãnh đạo Hội nghị tổ chức họp với các lãnh đạo đảng phái, liên minh để thảo luận về các yêu cầu sửa đổi.

24. Architecture in the Garden.

Kiến trúc trong Vườn quốc gia.

25. They guard sheep without needing instruction.

Nó bảo vệ cừu mà không cần hướng dẫn.

Simplicity favors regularity  Fix the size of instructions [simplifies fetching & decoding]  Fix the number of operands per instruction  Three operands is the natural number for a typical instruction 2. Smaller is faster  Limit the number of registers for faster access [typically 32] 3. Make the common case fast  Include constants inside instructions [faster than loading them]  Design most instructions to be register-to-register 4. Good design demands good compromises  Fixed-size instructions compromise the size of constants

72 trang | Chia sẻ: nguyenlam99 | Lượt xem: 1822 | Lượt tải: 0

Bạn đang xem trước 20 trang tài liệu Kiến trúc máy tính - Kiến trúc tập lệnh [Instruction Set Architecture], để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên

BK TP.HCM 2015 dce KIẾN TRÚC MÁY TÍNH KHOA HỌC & KỸ THUẬT MÁY TÍNH Võ Tấn Phương 2015 dce 2Kiến trúc Máy tính– Chương 3 © Fall 2015 Chapter 3 MIPS Instruction Set Architecture 2015 dce 3Kiến trúc Máy tính– Chương 3 © Fall 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ỉ 2015 dce 4Kiến trúc Máy tính– Chương 3 © Fall 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  Intel [8086, 80386, Pentium, ...] 1978  MIPS [MIPS I, II, III, IV, V] 1986  PowerPC [601, 604, ] 1993 2015 dce 5Kiến trúc Máy tính– Chương 3 © Fall 2015 Kiến trúc thanh ghi tích lũy Ví dụ lệnh: a = b+c; load b; // accumulator is implicit operand add c; store a; Accumulator ALU Memory registers address latch latch 2015 dce 6Kiến trúc Máy tính– Chương 3 © Fall 2015 Kiến trúc Stack Ví dụ lệnh: a = b+c; push b; push c; add; pop a; b b c b+c push b push c add pop a stack: ALU Memory stack stack pt latch latch latch 2015 dce 7Kiến trúc Máy tính– Chương 3 © Fall 2015 Các kiến trúc khác Stack Architecture Accumulator Architecture Register- Memory Memory- Memory Register [load-store] Push A Load A Load r1,A Add C,B,A Load r1,A Push B Add B Add r1,B Load r2,B Add Store C Store C,r1 Add r3,r1,r2 Pop C Store C,r3 Ví dụ lệnh C = A + B 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? 2015 dce 8Kiến trúc Máy tính– Chương 3 © Fall 2015 So sánh giữa các kiến trúc  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 2015 dce 9Kiến trúc Máy tính– Chương 3 © Fall 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] 2015 dce 10Kiến trúc Máy tính– Chương 3 © Fall 2015 Ví dụ chương trình hợp ngữ MIPS 2015 dce 11Kiến trúc Máy tính– Chương 3 © Fall 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ỉ 2015 dce 12Kiến trúc Máy tính– Chương 3 © Fall 2015 Sơ bộ kiến trúc MIPS Memory Up to 232 bytes = 230 words 4 bytes per word $0 $1 $2 $31 Hi Lo ALU F0 F1 F2 F31 FP Arith EPC Cause BadVaddr Status EIU FPU TMU Execution & Integer Unit [Main proc] Floating Point Unit [Coproc 1] Trap & Memory Unit [Coproc 0] . . . . . . Integer mul/div Arithmetic & Logic Unit 32 General Purpose Registers Integer Multiplier/Divider 32 Floating-Point Registers Floating-Point Arithmetic Unit 2015 dce 13Kiến trúc Máy tính– Chương 3 © Fall 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 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] $0 = $zero $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 $16 = $s0 $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 2015 dce 14Kiến trúc Máy tính– Chương 3 © Fall 2015 Quy ước tên gọi bộ thanh ghi MIPS Name Register Usage $zero $0 Always 0 [forced by hardware] $at $1 Reserved for assembler use $v0 – $v1 $2 – $3 Result values of a function $a0 – $a3 $4 – $7 Arguments of a function $t0 – $t7 $8 – $15 Temporary Values $s0 – $s7 $16 – $23 Saved registers [preserved across call] $t8 – $t9 $24 – $25 More temporaries $k0 – $k1 $26 – $27 Reserved for OS kernel $gp $28 Global pointer [points to global data] $sp $29 Stack pointer [points to top of stack] $fp $30 Frame pointer [points to stack frame] $ra $31 Return address [used by jal for function call]  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ố 2015 dce 15Kiến trúc Máy tính– Chương 3 © Fall 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  Immediate [I-Type]  Hằng số 16-bit là một phần của lệnh  Jump [J-Type]  Các lệnh nhảy có định dạng J-Type Op6 Rs5 Rt5 Rd5 funct6sa5 Op6 Rs5 Rt5 immediate16 Op6 immediate26 2015 dce 16Kiến trúc Máy tính– Chương 3 © Fall 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ớ 2015 dce 17Kiến trúc Máy tính– Chương 3 © Fall 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ỉ 2015 dce 18Kiến trúc Máy tính– Chương 3 © Fall 2015 R-Type Format  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 Op6 Rs5 Rt5 Rd5 funct6sa5 2015 dce 19Kiến trúc Máy tính– Chương 3 © Fall 2015 Các lệnh Cộng/Trừ số nguyên 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 2015 dce 20Kiến trúc Máy tính– Chương 3 © Fall 2015  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] Số nguyên nhị phân không dấu 2015 dce 21Kiến trúc Máy tính– Chương 3 © Fall 2015  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 Số nguyên có dấu dạng bù 2 2015 dce 22Kiến trúc Máy tính– Chương 3 © Fall 2015  Đả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 Số âm có dấu 2015 dce 23Kiến trúc Máy tính– Chương 3 © Fall 2015 Tầm biểu diễn của số nguyên không dấu Số nguyên không dấu 20-bit lớn nhất? Lời giải: 220 – 1 = 1,048,575 Storage Type Unsigned Range Powers of 2 Byte 0 to 255 0 to [28 – 1] Half Word 0 to 65,535 0 to [216 – 1] Word 0 to 4,294,967,295 0 to [232 – 1] Double Word 0 to 18,446,744,073,709,551,615 0 to [264 – 1] Byte 8 16 32 64 Half Word Word Double Word Storage Sizes 2015 dce 24Kiến trúc Máy tính– Chương 3 © Fall 2015 Tầm biểu diễn của số nguyên có dấu Số nguyên có dấu n-bit: Tầm biểu diễn từ -2n–1 đến [2n–1 – 1] Các số dương: 0 đến 2n–1 – 1 Các số âm: -2n–1 đến -1 Câu hỏi: Cho biết tầm biểu diễn của số nguyên có dấu 20 bits? Storage Type Unsigned Range Powers of 2 Byte –128 to +127 –27 to [27 – 1] Half Word –32,768 to +32,767 –215 to [215 – 1] Word –2,147,483,648 to +2,147,483,647 –231 to [231 – 1] Double Word –9,223,372,036,854,775,808 to +9,223,372,036,854,775,807 –263 to [263 – 1] 2015 dce 25Kiến trúc Máy tính– Chương 3 © Fall 2015 Nhớ và tràn [Carry vs Overflow]  Giá trị “nhớ” quan trọng khi  Cộng hoặc trừ số nguyên không dấu  Báo tổng dạng không dấu bị ngoài tầm biểu diễn  Xảy ra khi maximum giá trị không dấu n-bit  Giá trị “tràn” quan trọng khi  Cộng hoặc trừ số nguyên có dấu  Báo tổng dạng có dấu bị ngoài tầm biểu diễn  Tràn số xảy ra khi  Cộng hai số dương được tổng là số âm  Cộng hai số âm được tổng là số dương 2015 dce 26Kiến trúc Máy tính– Chương 3 © Fall 2015 0 1 0 0 0 0 0 0 0 1 0 0 1 1 1 1 + 1 0 0 0 1 1 1 1 79 64 143 [-113] Carry = 0 Overflow = 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 0 1 0 + 0 1 1 1 0 1 1 1 218 [-38] 157 [-99] 119 Carry = 1 Overflow = 1 111 Ví dụ về Nhớ/Tràn  “Nhớ” và “Tràn” là độc lập với nhau  Có bốn trường hợp [Ví dụ số 8-bit] 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 + 0 0 0 0 0 1 1 1 15 248 [-8] 7 Carry = 1 Overflow = 0 11111 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 + 0 0 0 1 0 1 1 1 15 8 23 Carry = 0 Overflow = 0 1 2015 dce 27Kiến trúc Máy tính– Chương 3 © Fall 2015 Ví dụ về phép Cộng/Trừ  Chuyển biểu thức sau sang hợp ngữ MIPS: f = [g+h] – [i+j]  Các biến được biễu diễn bằng các thanh ghi Giả sử f, g, h, i và j là các thanh ghi từ $s0 đến $s4  Kết quả dịch: f = [g+h] – [i+j] addu $t0, $s1, $s2 # $t0 = g + h addu $t1, $s3, $s4 # $t1 = i + j subu $s0, $t0, $t1 # f = [g+h]–[i+j] Kết quả tạm sử dụng thanh ghi $t0 = $8 và $t1 = $9  Dịch: addu $t0,$s1,$s2 sang mã máy  Lời giải: 000000 op 10001 rs = $s1 10010 rt = $s2 01000 rd = $t0 00000 sa 100001 func 2015 dce 28Kiến trúc Máy tính– Chương 3 © Fall 2015 Các phép toán luận lý  Xét 4 phép toán: and, or, xor, nor  AND có tính chất xóa: x and 0 = 0  OR có tính chất tạo: x or 1 = 1  XOR có tính chất đảo: x xor 1 = not x  NOR có thể dùng như NOT:  x nor x tương ứng not x x 0 0 1 1 y 0 1 0 1 x and y 0 0 0 1 x 0 0 1 1 y 0 1 0 1 x or y 0 1 1 1 x 0 0 1 1 y 0 1 0 1 x xor y 0 1 1 0 x 0 0 1 1 y 0 1 0 1 x nor y 1 0 0 0 2015 dce 29Kiến trúc Máy tính– Chương 3 © Fall 2015 Các lệnh luận lý Instruction Meaning R-Type Format and $s1, $s2, $s3 $s1 = $s2 & $s3 op = 0 rs = $s2 rt = $s3 rd = $s1 sa = 0 f = 0x24 or $s1, $s2, $s3 $s1 = $s2 | $s3 op = 0 rs = $s2 rt = $s3 rd = $s1 sa = 0 f = 0x25 xor $s1, $s2, $s3 $s1 = $s2 ^ $s3 op = 0 rs = $s2 rt = $s3 rd = $s1 sa = 0 f = 0x26 nor $s1, $s2, $s3 $s1 = ~[$s2|$s3] op = 0 rs = $s2 rt = $s3 rd = $s1 sa = 0 f = 0x27  Ví dụ: Giả sử $s1 = 0xabcd1234 và $s2 = 0xffff0000 and $s0,$s1,$s2 # $s0 = 0xabcd0000 or $s0,$s1,$s2 # $s0 = 0xffff1234 xor $s0,$s1,$s2 # $s0 = 0x54321234 nor $s0,$s1,$s2 # $s0 = 0x0000edcb 2015 dce 30Kiến trúc Máy tính– Chương 3 © Fall 2015 Phép dịch [Shift Operation]  Phép dịch thực hiện di chuyển tấc cả các bit của một thanh ghi sang trái hoặc phải  Có 3 lệnh dịch số lượng bit cố định: sll, srl, sra  sll/srl tương ứng shift left/right logical [số không dấu]  Trường “sa” [5-bit shift amount] chỉ số lượng bit được dịch  sra tương ứng shift right arithmetic [bảo toàn dấu]  Bit dấu [sign-bit] được thêm vào từ bên trái shift-in 0. . .shift-out MSB sll 32-bit register . . .shift-in 0 shift-out LSB srl . . .shift-in sign-bit shift-out LSB sra 2015 dce 31Kiến trúc Máy tính– Chương 3 © Fall 2015 Các lệnh dịch  Dịch với số lượng bit thay đổi [variable]: sllv, srlv, srav  Giống sll, srl, sra, nhưng số lượng bit dịch chứa trong thanh ghi  Ví dụ: giả sử $s2 = 0xabcd1234, $s3 = 16 Instruction Meaning R-Type Format sll $s1,$s2,10 $s1 = $s2 >>10 op = 0 rs = 0 rt = $s2 rd = $s1 sa = 10 f = 2 sra $s1, $s2, 10 $s1 = $s2 >> 10 op = 0 rs = 0 rt = $s2 rd = $s1 sa = 10 f = 3 sllv $s1,$s2,$s3 $s1 = $s2 >>$s3 op = 0 rs = $s3 rt = $s2 rd = $s1 sa = 0 f = 6 srav $s1,$s2,$s3 $s1 = $s2 >> $s3 op = 0 rs = $s3 rt = $s2 rd = $s1 sa = 0 f = 7 $s1 = 0x0000abcd $s1 = 0xcd123400sll $s1,$s2,8 sra $s1,$s2,4 $s1 = 0xfabcd123 srlv $s1,$s2,$s3 rt=$s2=10010op=000000 rs=$s3=10011 rd=$s1=10001 sa=00000 f=000110 $s1 = $s24 $s1 = $s2>>>$s3 2015 dce 32Kiến trúc Máy tính– Chương 3 © Fall 2015 Phép nhân dựa trên phép dịch  Lệnh dịch trái [sll] có thể thực hiện phép nhân  Khi số nhân là mũ của 2 Một số nguyên bất kỳ có thể biểu diễn thành tổng của các số là mũ của 2  Ví dụ: nhân $s1 với 36  Phân tích 36 thành [4 + 32] và sử dụng tính chất phân phối của phép nhân  $s2 = $s1*36 = $s1*[4 + 32] = $s1*4 + $s1*32 sll $t0, $s1, 2 ; $t0 = $s1 * 4 sll $t1, $s1, 5 ; $t1 = $s1 * 32 addu $s2, $t0, $t1 ; $s2 = $s1 * 36 2015 dce 33Kiến trúc Máy tính– Chương 3 © Fall 2015 Câu hỏi. . . sll $t0, $s1, 1 ; $t0 = $s1 * 2 sll $t1, $s1, 3 ; $t1 = $s1 * 8 addu $s2, $t0, $t1 ; $s2 = $s1 * 10 sll $t0, $s1, 4 ; $t0 = $s1 * 16 addu $s2, $s2, $t0 ; $s2 = $s1 * 26 Nhân $s1 với 26, sử dụng lệnh dịch và cộng Gợi ý: 26 = 2 + 8 + 16 Nhân $s1 với 31, Gợi ý: 31 = 32 – 1 sll $s2, $s1, 5 ; $s2 = $s1 * 32 subu $s2, $s2, $s1 ; $s2 = $s1 * 31 2015 dce 34Kiến trúc Máy tính– Chương 3 © Fall 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ỉ 2015 dce 35Kiến trúc Máy tính– Chương 3 © Fall 2015 Định dạng lệnh I-Type  Hằng số được sử dụng thường xuyên trong chương trình Lệnh dịch thuộc R-type chứa sẵn 5-bit dịch trong lệnh [sa] Vậy các lệnh khác, ví dụ: i = i +1;?  I-Type: Lệnh chứa hằng số [immediate]  Hằng số 16-bit được lưu trong lệnh Rs thanh ghi toán hạn nguồn Rt thanh ghi đích [destination]  Ví dụ lênh ALU kiểu I-Type: Add immediate:addi $s1, $s2, 5 # $s1 = $s2 + 5 OR immediate: ori $s1, $s2, 5 # $s1 = $s2 | 5 Op6 Rs5 Rt5 immediate16 2015 dce 36Kiến trúc Máy tính– Chương 3 © Fall 2015 Các lệnh số học luận lý [ALU] kiểu I-Type Instruction Meaning I-Type Format addi $s1, $s2, 10 $s1 = $s2 + 10 op = 0x8 rs = $s2 rt = $s1 imm16 = 10 addiu $s1, $s2, 10 $s1 = $s2 + 10 op = 0x9 rs = $s2 rt = $s1 imm16 = 10 andi $s1, $s2, 10 $s1 = $s2 & 10 op = 0xc rs = $s2 rt = $s1 imm16 = 10 ori $s1, $s2, 10 $s1 = $s2 | 10 op = 0xd rs = $s2 rt = $s1 imm16 = 10 xori $s1, $s2, 10 $s1 = $s2 ^ 10 op = 0xe rs = $s2 rt = $s1 imm16 = 10 lui $s1, 10 $s1 = 10 0] blez Rs,label nhảy tới label if [Rs = 0]  Không cần lệnh beqz & bnez. Tại sao? 2015 dce 42Kiến trúc Máy tính– Chương 3 © Fall 2015 Các lệnh Set on Less Than MIPS cung cấp lệnh gán bằng 1 khi nhỏ hơn [set on less than] slt rd,rs,rt if [rs < rt] rd = 1 else rd = 0 sltu rd,rs,rt unsigned < slti rt,rs,im16 if [rs < im16] rt = 1 else rt = 0 sltiu rt,rs,im16 unsigned <  So sánh có dấu / không dấu [Signed / Unsigned] Có thể sinh ra các kết quả khác nhau Giả sử $s0 = 1 và $s1 = -1 = 0xffffffff slt $t0,$s0,$s1 kết quả $t0 = 0 stlu $t0,$s0,$s1 kết quả $t0 = 1 2015 dce 43Kiến trúc Máy tính– Chương 3 © Fall 2015 Các lệnh rẽ nhánh khác  Phần cứng MIPS KHÔNG cung cấp các lệnh rẽ nhánh blt, bltu branch if less than [signed/unsigned] ble, bleu branch if less or equal [signed/unsigned] bgt, bgtu branch if greater than [signed/unsigned] bge, bgeu branch if greater or equal [signed/unsigned] Có thể thực hiện bằng 2 lệnh  Thực hiện? blt $s0,$s1,label  Lời giải: slt $at,$s0,$s1 bne $at,$zero,label  Thực hiện? ble $s2,$s3,label  Lời giải: slt $at,$s3,$s2 beq $at,$zero,label 2015 dce 44Kiến trúc Máy tính– Chương 3 © Fall 2015 Các lệnh giả Pseudo-Instructions  Cung cấp bởi assembler và được tự động chuyển đổi sang lệnh có thật  Mục đích để hỗ trợ lập trình hợp ngữ được dễ dàng  Assembler dùng thanh ghi $at = $1 trong các chuyển đổi  $at được gọi là thanh ghi assembler temporary ori $s1, $zero, 0xabcdli $s1, 0xabcd slt $s1, $s3, $s2sgt $s1, $s2, $s3 nor $s1, $s2, $s2not $s1, $s2 slt $at, $s1, $s2 bne $at, $zero, label blt $s1, $s2, label lui $s1, 0xabcd ori $s1, $s1, 0x1234 li $s1, 0xabcd1234 addu Ss1, $s2, $zeromove $s1, $s2 Các lệnh Thật tương ứngPseudo-Instructions 2015 dce 45Kiến trúc Máy tính– Chương 3 © Fall 2015 Các lệnh Jump, Branch và SLT Instruction Meaning Format j label jump to label op6 = 2 imm26 beq rs, rt, label branch if [rs == rt] op6 = 4 rs5 rt5 imm16 bne rs, rt, label branch if [rs != rt] op6 = 5 rs5 rt5 imm16 blez rs, label branch if [rs 0] op6 = 7 rs5 0 imm16 bltz rs, label branch if [rs < 0] op6 = 1 rs5 0 imm16 bgez rs, label branch if [rs>=0] op6 = 1 rs5 1 imm16 Instruction Meaning Format slt rd, rs, rt rd=[rs $s2] || [$s2 > $s3]] {$s4 = 1;} bgt $s1, $s2, L1 # yes, execute if part ble $s2, $s3, next # no: skip if part L1: li $s4, 1 # set $s4 to 1 next: 2015 dce 51Kiến trúc Máy tính– Chương 3 © Fall 2015 Bài tập. . .  Chuyển phát biểu IF sang hợp ngữ MIPS  $s1 và $s2 là giá trị không dấu [unsigned]  $s3, $s4, và $s5 là giá trị có dấu [signed] bgtu $s1, $s2, next move $s3, $s4 next: if[ $s1 Backward  Khoảng cách xa nhất ±215 lệnh [thông thường lệnh rẽ nhánh có địch chỉ đích lân cận vị trí lệnh] immediate26PC4 00Địa chỉ đích của lệnh Jump PC30 + immediate16 + 1 00 2015 dce 71Kiến trúc Máy tính– Chương 3 © Fall 2015 Summary of RISC Design  All instructions are typically of one size  Few instruction formats  All operations on data are register to register  Operands are read from registers  Result is stored in a register  General purpose integer and floating point registers  Typically, 32 integer and 32 floating-point registers Memory access only via load and store instructions  Load and store: bytes, half words, words, and double words  Few simple addressing modes 2015 dce 72Kiến trúc Máy tính– Chương 3 © Fall 2015 Four Design Principles 1. Simplicity favors regularity  Fix the size of instructions [simplifies fetching & decoding]  Fix the number of operands per instruction  Three operands is the natural number for a typical instruction 2. Smaller is faster  Limit the number of registers for faster access [typically 32] 3. Make the common case fast  Include constants inside instructions [faster than loading them]  Design most instructions to be register-to-register 4. Good design demands good compromises  Fixed-size instructions compromise the size of constants

Các file đính kèm theo tài liệu này:

  • kientrucmaytinh_chapter03_5987.pdf

Chủ Đề