BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
---------oo0000oo---------
BÁO CÁO BÀI TẬP LỚN
Bộ môn: Kiến trúc máy tính
Đề tài: Nghiên cứu tìm hiểu về tập lệnh của hệ vi xử lý AMD 29000
Giáo viên hướng dẫn: Thầy Nguyễn Thanh Hải.
Nhóm: 10
Họ và tên sinh viên
Mã sinh viên
1. Đỗ Công Minh
1041360333
2. Nguyễn Huy Huân
1041060197
3. Đinh Văn Trường
1041060227
4. Vương Đình Pháp
1041060132
5. Phạm Công
0941060161
Hà Nội, tháng 10 năm 2016
1
Mục lục:
A. Mở đầu.....................................................................................trang 3.
B. Nội dung...................................................................................trang 4.
I. Giới thiệu tổng quan về bộ vi xử lý AMD Am29000..............................trang 4.
II. Trình bày sơ đồ khối chức năng bên trong CPU AMD Am29000............trang 6.
III. Đặc điểm chức năng các thanh trong AMD 29000....................................trang 7.
1. Khối điều khiển (CU - Control Unit).....................................................trang 7.
2. Khối tính toán ALU (Arithmetic Logic Unit).......................................trang 8.
3. Các thanh ghi (Registers).......................................................................trang 8.
a, Thanh ghi mục đích chung.................................................................trang 8.
b, Thanh ghi địa chỉ................................................................................trang 10.
c, Thanh ghi chung.................................................................................trang 10.
d, Thanh ghi cục bộ Stack Pointer.........................................................trang 10.
e, Thanh ghi cục bộ................................................................................trang 11.
f, Thanh ghi bank...................................................................................trang 11.
IV. Cấu trúc lệnh cùng tập lệnh của AMD Am 29000..................................... trang 12.
1 SỐ TẬP LỆNH AMD Am29000................................................................... trang 17.
2
A.
MỞ ĐẦU
Vi xử lý (CPU) là gì?
Trước hết để tránh những băn khoăn đáng tiếc trong khi nghiên cứu tài liệu, tôi
xin được giới thiệu đôi chút về 02 khái niệm “vi xử lý” (microprocessor) và “vi điều
khiển (microcontroller). Về cơ bản hai khái niệm này không khác nhau nhiều, “vi xử
lý” là thuật ngữ chung dùng để đề cập đến kỹ thuật ứng dụng các công nghệ vi điện tử,
công nghệ tích hợp và khả năng xử lý theo chương trình vào các lĩnh vực khác nhau.
Vào những giai đoạn đầu trong quá trình phát triển của công nghệ vi xử lý, các chip
(hay các vi xử lý) được chế tạo chỉ tích hợp những phần cứng thiết yếu như CPU cùng
các mạch giao tiếp giữa CPU và các phần cứng khác. Trong giai đoạn này, các phần
cứng khác (kể cả bộ nhớ) thường không được tích hợp trên chip mà phải ghép nối
thêm bên ngoài. Các phần cứng này được gọi là các ngoại vi (Peripherals). Về sau,
nhờ sự phát triển vượt bậc của công nghệ tích hợp, các ngoại vi cũng được tích hợp
vào bên trong IC và người ta gọi các vi xử lý đã được tích hợp thêm các ngoại vi là các
“vi điều khiển”. Việc tích hợp thêm các ngoại vi vào trong cùng một IC với CPU tạo
ra nhiều lợi ích như làm giảm thiểu các ghép nối bên ngoài, giảm thiểu số lượng linh
kiện điện tử phụ, giảm chi phí cho thiết kế hệ thống, đơn giản hóa việc thiết kế, nâng
cao hiệu suất và tính linh hoạt. Trong tài liệu này, ranh giới giữa hai khái niệm “vi xử
lý” và “vi điều khiển” thực sự không cần phải phân biệt rõ ràng. Chúng tôi sẽ dùng
thuật ngữ “vi xử lý” khi đề cập đến các khái niệm cơ bản của kỹ thuật vi xử lý nói
chung và sẽ dùng thuật ngữ “vi điều khiển” khi đi sâu nghiên cứu một họ chip cụ thể.
Về cơ bản kiến trúc của một vi xử lý gồm những phần cứng sau:
Đơn vị xử lý trung tâm CPU (Central Processing Unit).
Các bộ nhớ (Memories).- Các cổng vào/ra song song (Parallel I/O Ports).
Các cổng vào/ra nối tiếp (Serial I/O Ports).
Các bộ đếm/bộ định thời (Timers).
Ngoài ra với mỗi loại vi điều khiển cụ thể còn có thể có thêm một số phần cứng
khác như bộ biến đổi tương tự-số ADC, bộ biến đổi số-tương tự DAC, các mạch điều
chế dạng sóng WG, điều chế độ rộng xung PWM…
Bộ não của mỗi vi xử lý chính là CPU, các phần cứng khác chỉ là các cơ quan chấp
hành dưới quyền của CPU. Mỗi cơ quan này đều có một cơ chế hoạt động nhất định
mà CPU phải tuân theo khi giao tiếp với chúng. Để có thể giao tiếp và điều khiển các
cơ quan chấp hành (các ngoại vi), CPU sử dụng 03 loại tín hiệu cơ bản là tín hiệu địa
chỉ (Address), tín hiệu dữ liệu (Data) và tín hiệu điều khiển (Control). Về mặt vật lý
thì các tín hiệu này là các đường nhỏ dẫn điện nối từ CPU đến các ngoại vi hoặc thậm
chí là giữa các ngoại vi với nhau. Tập hợp các đường tín hiệu có cùng chức năng gọi là
các bus. Như vậy ta có các bus địa chỉ, bus dữ liệu và bus điều khiển
3
B.
NỘI DUNG
I. Giới thiệu tổng quan về vi xử lý AMD Am29000
AMD am29000 là một load-store CPU xuống từ thiết kế Berkeley RISC (và các dự
án của IBM 801), như là một kế hiện đại với trước năm 2900 hàng loạt bitslice bắt đầu
từ khoảng năm 1981). Giống như các thiết kế SPARC đã được giới thiệu trong thời
gian ngắn sau đó, 29000 có một tập lớn các thanh ghi chia thành bộ cục bộ và chung.
Nhưng mặc dù nó đã được giới thiệu trước khi SPARC, nó có một phương pháp đơn
giản hơn về quản lý thanh ghi.
AMD am29000 thiết kế RISC có hiệu suất cao. Nó là đáng chú ý nhất đối với con
số khổng lồ 192 thanh ghi lập trình của nó (hầu hết các chip RISC có 32; Pentium có
8). Nhưng bất chấp tất cả ưu điểm về kiến trúc của 29K, nó vẫn không tồn tại dài.
Mặc dù hàng năm nhiều triệu đơn vị được bán ra, AMD (Advanced Micro
Devices) vẫn khai tử gia đình 29K vào năm 1995. AMD từ bỏ toàn bộ một dòng sản
phẩm này chỉ dù nó trở thành kiến trúc RISC thứ hai bán chạy nhất trên thế giới bởi vì
chi phí hỗ trợ của nó quá cao.
Tổng quan về sản phẩm
AMD Am29000 là bộ vi xử lý 32-bit RISC, 4 tầng đường ống , 512-byte BTC
(Branch Target Cache)
Đặc điểm khác biệt:
- Full 32-bit, kiến trúc ba bus.
- Chỉ dẫn 23 triệu mỗi giây (MIPS) duy trì ở 33 MHz.
- 33 ,25 , 20 và 16-MHz tần số hoạt động.
- Efflclent thực hiện các chương trình ngôn ngữ cấp cao.
4
- Công nghệ CMOS.
- 4 GB không gian địa chỉ ảo với nhu cầu phân trang .
- Chỉ dẫn đồng thời và dữ liệu truy cập.
- Hỗ trợ chế độ truy cập.
- 192 thanh ghi mục đích chung.
- 512-byte Branch Target Cache.
- Quản lý 64 đơn vị bộ nhớ nhập.
- Phân tách, đường ống địa chỉ, chỉ dẫn, và bus dữ liệu.
- Kiến trúc chỉ dẫn ba địa chỉ.
- Tùy chọn byte / nửa words truy cập.
Các Am29000 chứa một đơn vị thực hiện chức năng cao, một tập tin thanh ghi lớn
(192 thanh ghi), một Branch Target Cache (32 bit- 4 tầng đường ống ), một đơn vị
quản lý bộ nhớ (64 mục), và một băng thông cao, đường ống bên ngoài kênh với sự
chỉ dẫn và các bus dữ liệu riêng biệt. Các tập tin thanh ghi linh hoạt có thể được sử
dụng như một bộ nhớ cache cho các biến thời gian chạy trong chương trình thực hiện,
hoặc là một bộ sưu tập của các bank thanh ghi phân bổ cho các nhiệm vụ riêng biệt
trong các ứng dụng đa nhiệm.
Các Am29000 cung cấp một mức đáng kể suất hoạt động trên bộ xử lý khác trong
các lớp học, vì phần lớn các tính năng xử lý được xác định với hiệu suất tối đa đạt
được trong tâm trí. Phần này mô tả các tính năng của Am29000 từ điểm nhìn của hiệu
suất hệ thống.
Thời gian chu kỳ
Các bộ xử lý hoạt động ở tần số 33 MHz. Chu kỳ thời gian xử lý đơn là 30 ns/kỳ.
Các kiến trúc và hệ thống giao diện Am29000 được thiết kế sao cho chu kỳ thời gian
xử lý có thể giảm với những cải tiến công nghệ.
Bốn tầng đường ống
Các Am29000 sử dụng một đường ống dẫn bốn giai đoạn, cho phép nó để thực thi một
lệnh mỗi chu kỳ đồng hồ. Các bộ vi xử lý có thể hoàn thành một chỉ dẫn trên mỗi chu
kỳ, mặc dù bốn chu kỳ được yêu cầu từ khởi đầu của một chỉ dẫn để hoàn thành nó.
Tại một tần số hoạt động 33-MHz, tỷ lệ thực hiện chỉ thị tối đa là 33 triệu lệnh mỗi
giây (MIPS). Các đường ống dẫn Am29000 được thiết kế sao cho Am29000 thể hoạt
động ở tốc độ thực hiện chỉ thị tối đa một phần đáng kể thời gian.
interlock đường ống dẫn được thực hiện bởi phần cứng xử lý. Ngoại trừ một vài
trường hợp đặc biệt, nó không phải là cần thiết để sắp xếp lại chương trình để tránh
phụ thuộc đường ống.
5
II.
Trình bày sơ đồ khối chức năng bên trong CPU
AMD Am29000
SƠ ĐỒ KHỐI BÊN TRONG CPU AMD Am2900
Các Bus chỉ dẫn chuyển vào bộ xử lý, Bus dữ liệu chuyển dữ liệu đến và từ bộ xử lý,
và Bus địa chỉ cung cấp địa chỉ cho cả chỉ dẫn và dữ liệu truy cập. Các bus địa chỉ
cũng tăng gấp đôi chức năng của nó để chuyển dữ liệu đến một bộ đồng xử lý.
Kể từ khi cả hai địa chỉ bus dữ liệu và truyền dữ liệu, bộ vi xử lý Am29000 có thể
chuyển 64 bit thông tin cho đồng xử lý trong một chu kỳ.
Một đơn vị dấu chấm động (FPU) cung cấp chính xác đơn và hoạt động nổi-điểm
chính xác đôi. Có phân chia độc lập và mạch gốc vuông, trong đó cho phép các chức
năng để tiến hành song song với các hoạt động khác.
Bằng cách gán một không gian địa chỉ đặc biệt trên kênh bus, một bộ xử lý có thể
gắn trực tiếp với bộ xử lý. Điều này cho phép việc chuyển giao của các toán hạng và
các thông tin khác trên bus địa chỉ mà không can thiệp với các chức năng giải quyết
bình thường.
6
Các 29000 của bộ vi xử lý có ba địa chỉ kiến trúc tập lệnh, và các lập trình viên có
hoàn toàn tự do để phân bổ sử dụng thanh ghi. Có 192 thanh ghi mục đích chung, cho
phép giữ lại các tính toán trung gian do đó tránh được sự phá hủy không cần thiết của
dữ liệu.
Có 125 chỉ dẫn trong các bộ, mà chia thành chín lớp. Đây là những số nguyên số
học, so sánh, logic, sự thay đổi, chuyển dữ liệu, liên tục, dấu chấm động, chi nhánh, và
linh tinh. Tất cả các lệnh có thể hoàn thành trong vòng một chu kỳ bộ xử lý duy nhất.
III. Đặc điểm chức năng các thanh trong CPU
AMD Am29000
ĐƯỜNG ĐI CỦA DỮ LIỆU TRONG CPU
4. Khối điều khiển (CU - Control Unit)
Thành phần của CPU có nhiệm vụ thông dịch các lệnh của chương trình và
điều khiển hoạt động xử lí, được điều tiết chính xác bởi xung nhịp đồng hồ hệ
thống.
Mạch xung nhịp đồng hồ hệ thống dùng để đồng bộ các thao tác xử lí trong và
ngoài CPU theo các khoảng thời gian không đổi. Khoảng thời gian chờ giữa hai
xung gọi là chu kỳ xung nhịp. Tốc độ theo đó xung nhịp hệ thống tạo ra các
7
xung tín hiệu chuẩn thời gian gọi là tốc độ xung nhịp – tốc độ đồng hồ tính
bằng triệu đơn vị mỗi giây (MHz).
5. Khối tính toán ALU (Arithmetic Logic Unit)
Chức năng khối tính toán ALU thực hiện các phép toán số học và logic sau đó
trả lại kết quả cho các thanh ghi hoặc bộ nhớ.
Trong CPU, một bộ số học và logic (ALU – Arithmetic logic unit) là một mạch
điện tử thực hiện phép tính số học và logic. ALU là một phần tử cơ bản của
CPU của một máy tính.Bộ vi xử lý chứa rất nhiều và rất phức tạp các ALU
6. Các thanh ghi (Registers)
Một thanh ghi (registers) là một bộ nhớ dung lượng nhỏ và rất nhanh được sử
dụng để tăng tốc độ xử lý của các chương trình máy tính bằng cách cung cấp
các truy cập trực tiếp đến các giá trị cần dùng. Hầu hết, nhưng không phải tất
cả, các máy tính hiện đại hoạt động theo nguyên lý chuyển dữ liệu từ bộ nhớ
chính vào các thanh ghi, tính toán trên chúng, sau đó chuyển kết quả vào bộ
nhớ chính.
Các thanh ghi xử lý là phần đầu tiên của phân cấp bộ nhớ, và cung cấp nhanh
nhất vào hệ thống để xử lý dữ liệu. Thuật ngữ này thường được dùng để nói đến
một tập các thanh ghi có thể được chỉ trực tiếp cho việc nhập hay xuất các câu
lệnh, xem thêm ở tập lệnh. Chúng được gọi là ” kiến trúc thanh ghi”. Ví dụ, đưa
các biến số thường dùng vào thanh ghi là một hoạt động then chốt làm tăng
hiệu ứng của chương trình. Việc này có tên là register allocation và thường
được thực hiện bởi một trình biên dịch trong giai đoạn phát sinh mã hoá.
Các Am29000 có ba lớp các thanh ghi có thể truy cập bằng cách chỉ dẫn. Đây
là những thanh ghi mục đích chung, thanh ghi mục đích đặc biệt, và LookNgoài Buffer (TLB) thanh ghi dịch. Bất kỳ hoạt động nhu liệu có trong
Am29000 có thể được thực trên thanh ghi mục đích dụng chung, trong khi ghi
mục đích đặc biệt và thanh ghi TLB được truy cập chỉ bằng cách di chuyển dữ
liệu rõ ràng hoặc từ sổ mục đích chung. cơ chế bảo vệ khác nhau ngăn chặn sự
truy cập của một số các thanh ghi của chương trình chế độ người dùng.
a. Thanh ghi mục đích chung
Các Am29000 kết hợp 192 thanh ghi mục đích chung. Việc tổ chức các thanh
ghi mục đích chung trong hình sau.
Absolute REG#
General-Purpose Register
Indirect Pointer Access
1
Stack Pointer
64
Global Register 64
65
Global Register 65
66
Global Register 66
8
126
Global Register 126
127
Global Register 127
Global Registers
128
Local Register 125
129
Local Register 126
130
Local Register 127
131
Local Register 0
132
Local Register 1
Local Registers
Stack point 131
254
Local Register 123
Local Register 124
thanh ghi mục đích chung giữ các loại sau đây của các toán hạng để sử dụng chương
trình:
1. Địa chỉ dữ liệu 32-bit
2. Số nguyên 32-bit dấu hoặc không dấu
3. Địa chỉ chi nhánh mục tiêu 32-bit
4. Chuỗi bit logic 32-bit
5. Ký tự 8-bit dấu hoặc không dấu
6. Số nguyên 16-bit dấu hoặc không dấu
7. Logic
8. Số dấu chấm động chính xác đơn.
9. Số dấu chấm động chính xác kép (trong hai thanh ghi)
Bởi vì một số lượng lớn các thanh ghi mục đích chung được cung cấp, một số
lượng lớn các dữ liệu thường được sử dụng có thể được giữ trên chip, nơi mà
thời gian truy cập là nhanh nhất.
Am29000 chỉ dẫn có thể xác định hai thanh ghi mục đích chung cho toán
hạng nguồn, và một thanh ghi mục đích chung để lưu trữ các kết quả giảng dạy.
Những thanh ghi này được quy định bởi ba lĩnh vực giảng dạy 8-bit chứa số
thanh ghi. Sổ thanh ghi có thể được chỉ định trực tiếp theo chỉ dẫn, hoặc gián
tiếp bởi một trong ba thanh ghi mục đích đặc biệt.
b, Thanh ghi địa chỉ
Các thanh ghi mục đích chung được phân chia thành 64 thanh ghi chung và
128 thanh ghi cục bộ, phân biệt bởi các bit nhất đáng kể về số lượng thanh ghi.
Sự khác biệt giữa các thanh ghi chung và cục bộ là kết quả của những cân nhắc
thanh ghi-giải quyết.
9
Các thuật ngữ sau đây được sử dụng để mô tả các thay đồ quảng cáo- các thanh
ghi mục đích chung:
1. Thanh ghi số - đây là một phần mềm cấp số lượng cho một thanh ghi mục
đích chung. Ví dụ, đây là số lượng chứa trong một chỉ dẫn. Số thanh ghi trong
khoảng 0-255.
2. Số thanh ghi chung - đây là một số phần mềm cấp cho một thanh ghi chung.
số thanh ghi chung trong khoảng 0-127.
3. Thanh ghi số cục bộ là một số phần mềm cấp cho thanh ghi một đầu mối.
Các thành thanh ghi num cục bộ nằm trong khoảng 0-127.
4. Thanh ghi số tuyệt đối - đây là một số cấp phần cứng, sử dụng để chọn một
thanh ghi mục đích chung trong ký File. Số thanh ghi tuyệt đối trong khoảng 0255.
c, Thanh ghi chung
Khi bit nhất ý nghĩa của một số thanh ghi là 0, một thanh ghi chung được
chọn. Bảy bit kém đáng kể về số lượng thanh ghi cho thanh ghi số chung. Đối
với thanh ghi chung, số lượng thanh ghi tuyệt đối là tương đương với thanh ghi
số.
Thanh ghi chung 2 đến 63 là chưa thực hiện. Một cố gắng để truy cập vào các
thanh ghi mang lại kết quả không thể đoán trước. Tuy nhiên, họ có thể được
bảo vệ từ do người sử dụng truy cập chế độ do thanh ghi chung bảo vệ.
Các thanh ghi số gắn liền với thanh ghi chung số 0 và 1 có ý nghĩa đặc biệt.
Con số của thanh ghi chung là 0 xác định rằng một con trỏ gián tiếp được sử
dụng như là nguồn gốc của số thanh ghi; có một con trỏ gián tiếp cho mỗi thanh
ghi chỉ dẫn toán hạng / kết quả. Thanh ghi chung chứa 1 chứa Stack Pointer,
được sử dụng trong việc giải quyết các sổ thanh ghi cục bộ như được giải thích
dưới đây.
d, Thanh ghi cục bộ Stack Pointer
Stack Pointer là một thanh ghi 32-bit có thể là một toán hạng của một chỉ dẫn
như bất kỳ thanh mục đích chung khác. Tuy nhiên, một bản sao của thanh ghi
chung được duy trì bởi phần cứng bộ xử lý được sử dụng trong thanh ghi cục bộ
giải quyết. Bản sao này được thiết lập chỉ với kết quả của số học và chỉ dẫn
logic. Nếu Stack Pointer được thiết lập với các kết quả của bất kỳ lớp sự chỉ dẫn
khác, thanh ghi cục bộ không thể được truy cập dự đoán cho đến khi Stack
Pointer được thiết lập lại một lần nữa với một số học hoặc hướng dẫn logic.
e, Thanh ghi cục bộ
Khi bit nhất ý nghĩa của một số thanh ghi là 1, thanh ghi một cục bộ được chọn.
Bảy bit thiểu đáng kể số lượng thanh ghi cho thanh ghi số cục bộ . Đối với
thanh ghi cục bộ, số thanh ghi tuyệt đối được thu được bằng cách thêm số thanh
ghi cục bộ để bit 8-2 của Stack Pointer và cắt bỏ các kết quả đến 7 bit; bit giá trị
nhất của thanh ghi số ban đầu là không thay đổi (tức là, nó vẫn còn là 1). Việc
bổ sung Stack Pointer áp dụng cho số thanh ghi cục bộ cung cấp một hình thức
hạn chế về căn cứ bù trừ giải quyết trong sổ đăng ký địa phương. Stack Pointer
10
chứa địa chỉ cơ sở 32-bit. Điều này giúp quản lý lưu trữ thời gian chạy của biến
đối với các thủ tục tự động lồng nhau
f, Thanh ghi bank
Đối với mục đích của việc hạn chế quyền truy cập, các thanh ghi mục đích
chung được chia thành các thanh ghi bank thông tin. Thanh ghi bank bao gồm
16 thanh ghi (trừ bank 0, trong đó có chưa thực hiện thanh ghi 2 đến 15) và
được phân chia theo thanh ghi số tuyệt đối, như thể hiện trong hình.
Thanh ghi bank chứa 16 bit bảo vệ, nơi mà mỗi bit kiểm soát chế độ người
dùng. Bit 6-15 của thanh ghi bank Bưbảo vệ không ảnh hưởng đến mục đích
chung từ 0 đến 15 tương ứng. Khi một bit trong thanh ghi bank là 1 và thanh
ghi một trong các bank tương ứng được quy định như một toán hạng thanh ghi
hoặc dẫn thanh ghi bằng cách một chỉ dẫn trong chế độ người dùng , một sự vi
phạm bẫy bảo vệ xảy ra. Lưu ý bảo vệ đó là dựa trên các số thanh ghi tuyệt đối;
trong trường hợp thanh ghi cục bộ, Stack Pointer. Ngoài ra được thực hiện
trước khi kiểm tra bảo vệ.
Khi bộ xử lý ở chế độ giám sát, Ngân hàng Đăng ký Đăng ký Bảo vệ không có
tác dụng trên các truy cập thanh ghi mục đích chung
Tổ chức thanh ghi bank
Register
Bank Protect
Register Bit
Absolute-
Register Numbers
2 through 15
1
16 through 31
32 through 47
48 through 63
4
General-Purpose
Registers
Bank 0
(unimplemented)
Bank 1
(unimplemented)
Bank 2
(unimplemented)
Bank 3
(unimplemented)
64 through 79
Bank 4
80 through 95
Bank 5
6
96 through 111
Bank 6
7
112 through 127
Bank 7
128 through 143
Bank 8
144 through 159
Bank 9
10
160 through 175
Bank 10
11
176 through 191
Bank 11
12
192 through 207
Bank 12
13
208 through 223
Bank 13
14
224 through 239
Bank 14
240 through 255
Bank 15
11
IV. Cấu trúc lệnh cùng tập lệnh của AMD Am
29000
Các kiến trúc ba địa chỉ của các tập lệnh AM29000 cho phép một trình biên dịch
hoặc ngôn ngữ lập trình lắp ráp để ngăn chặn sự phá hủy hết các toán hạng, và hỗ trợ
thanh ghi phân bổ và toán hạng tái sử dụng. toán hạng chỉ dẫn có thể được chứa trong
bất kỳ 2 trong số 192 thanh ghi mục đích chung, và kết quả giảng dạy có thể được lưu
trữ trong bất kỳ của 192 thanh ghi mục đích chung.
Trình biên dịch hoặc hợp ngữ lập trình viên có hoàn toàn tự do để phân bổ, sử dụng
thanh ghi. Không có sự đóng góp của một thanh ghi đặc biệt hoặc nhóm thanh ghi vào
một lớp đặc biệt của hoạt động. Các tập lệnh được thiết kế để giảm thiểu số lượng các
tác dụng phụ và các hoạt động ngầm của chỉ dẫn
Hầu hết Am 29000 chỉ dẫn có thể chỉ định 8 bit không đổi là một trong các toán
hạng nguồn. hằng số lớn hơn được xây dựng sử dụng một hoặc hai chỉ dẫn thêm chỉ
định một địa chỉ từ 16 bit.
Các tập lệnh Am 290000 chứa 117 chỉ dẫn. các chỉ dẫn được chia thành chín lớp
1. Số học- Thực hiện nguyên cộng, trừ, nhân, chia và các phép toán khác.
Mnemonic
D
D
Operation Description
DEST <-SRCA + SRCB
DEST <-SRCA + SRCB
IF signed overflow THEN Trap (Out Q Range)
DEST <-SRCA + SRCB
IF unsigned overflow THEN Trap (Out Q Range)
DEST <-SRCA + SRCB + C
DEST <-SRCA + SRCB + C
IF signed overflow THEN Trap (Out Q Range)
DEST <-SRCA + SRCB + C
IF unsigned overflow THEN Trap (Out Q Range)
SUB
DEST <-SRCA — SRCB
SUBS
DEST <-SRCA — SRCB
IF signed overflow THEN Trap (Out Of Range)
SUBU
DEST <-SRCA — SRCB
IF unsigned underflow THEN Trap (Out Of Range)
SUBC
DEST <-SRCA — SRCB —1 + C
SUBCS
DEST <-SRCA — SRCB —1 + C
IF signed overflow THEN Trap (Out Of Range)
SUBCU
DEST <-SRCA — SRCB —1 + C
IF unsig ned underflow THEN Trap (Out Of Range)
SUBR
DEST <-SRCB — SRCA
SUBRS
DEST <-SRCB — SRCA
SUBRU
DEST <-SRCB — SRCA
SUBRC
DEST <-SRCB - SRCA —1 + C
SUBRCS
DEST <-SRCB - SRCA —1 + C
IF signed overflow THEN Trap (Out Q Range)
SUBRCU
DEST <-SRCB — SRCA —1 + C
IF unsigned underflow THEN Trap (Out O Range)
MULTIPLU
DEST <-SRCA " SRCB (unsigned)
IF signed overflow THEN Trap (Out Of Range)
IF unsigned underflow THEN Trap (Out Of Range)
12
MULTIPLY
DEST <-SRCA ” SRCB (signed)
MUL
Perform 1-brt step of a multiply operation (signed)
MULL
Complete a sequence of multiply steps
MULTM
DEST <-SRCA ” SRCB (signed), most-significant bits
MULTMU
DEST <-SRCA “ SRCB (unsigned), most-significant bits
MULU
Perform 1 -bit step of a multiply operation (unsigned)
DIVIDE
DEST <-(Q//SRCA)/SRCB (signed) Q <-Remainder
DIVIDU
DEST <-(Q//SRCA)/SRCB (unsigned) Q <-Remainder
DIVO
Initialize for a sequence oi divide steps (unsigned)
DIV
Perform 1-bit step of a divide operation (unsigned)
DIVL
Complete a sequence of divide steps (unsigned)
DIVREM
Generate remainder for divide operation (unsigned)
2. So sánh- Thực hiện so sánh số học và logic. Một số chỉ dẫn trong lớp này cho
phép thế hệ của một cái bẫy nếu điều kiện so sánh không được đáp ứng
Operation Description
IF SRCA - SRCB THEN DEST <-TRUE
ELSE DEST <-FALSE
CPNEO
CPLT
CPLTU
CPLE
CPLEU
CPGT
CPGTU
CPGE
CPGEU
CPBYTE
IF SRCA <> SRCB THEN DEST <-TRUE
ELSE DEST <-FALSE
IF SRCA < SRCB THEN DEST <-TRUE
ELSE DEST <-FALSE
IF SRCA < SRCB (unsigned) THEN DEST <-TRUE
ELSE DEST <-FALSE
IF SRCA <• SRCB THEN DEST <-TRUE
ELSE DEST <- FALSE
IF SRCA <- SRCB (unsigned) THEN DEST <-TRUE
ELSE DEST <-FALSE
IF SRCA > SRCB THEN DEST <-TRUE
ELSE DEST <-FALSE
IF SRCA > SRCB (unsigned) THEN DEST <-TRUE
ELSE DEST <-FALSE
IF SRCA >- SRCB THEN DEST <-TRUE
ELSE DEST <-FALSE
IF SRCA >- SRCB (unsigned) THEN DEST <-TRUE
ELSE DEST <-FALSE
IF (SRCA.BYTE0 - SRCB.BYTE0) OR
(SRCA.BYTE1 - SRCB.BYTE1) OR
(SRCA.BYTE2 - SRCB.BYTE2) OR
(SRCA.BYTE3 - SRCB.BYTE3)THEN DEST <-TRUE
ELSE DEST <-FALSE
IF SRCA - SRCB THEN Continue
ELSE Trap (VN)
ASNEQ
IF SRCA <> SRCB THEN Continue
ELSE Trap (VN)
ASLT
IF SRCA < SRCB THEN Continue
ASLTU
ELSE Trap (VN)
IF SRCA < SRCB (unsigned) THEN Continue
ELSE Trap (VN)
ASLE
IF SRCA <- SRCB THEN Continue
ELSE Trap (VN)
ASLEU
IF SRCA <- SRCB (unsigned) THEN Continue
ELSE Trap (VN)
ASGT
IF SRCA > SRCB THEN Continue
ASGTU
IF SRCA > SRCB (unsigned) THEN Continue
ELSE Trap (VN)
ASGE
IF SRCA >- SRCB THEN Continue
ELSE Trap (VN)
ASGEU
IF SRCA >- SRCB (unsigned) THEN Continue
ELSE Trap (VN)
ELSE Trap (VN)
13
3. Logical- Thực hiện một tập hợp các phép toán, các phép logic.
Mnemonic
Operation Description
DEST <-SRCA 6 SRCB
ANDN
NAND
DEST <-- (SRCA 6 SRCB)
OR
DEST <-SRCA | SRCB
NOR
DEST <-- (SRCA | SRCB)
XOR
DEST <-SRCA ³ SRCB
XNOR
DEST <-- (SRCA ³ SRCB)
4. Chuyển- Thực hiện các phép tính số học và chuyển đổi logic, và cho phép khai
thác từ 32-bit words đến 64-bit double words.
Mnemonic
Operation Description
SLL
DEST <-SRCA << SRCB (zero fill)
SRL
DEST <-SRCA >> SRCB (zero fill)
SRA
DEST <-SRCA >> SRCB (sign fill)
EXTRACT
DEST <-high
5. Di chuyển dữ liệu- Thực hiện phong trào của fiebs dữ liệu giữa các thanh ghi,
ARD sự di chuyển dữ liệu đến và đi từ các thiết bị bên ngoài và những kỷ niệm.
Mnemonic
Operation Description
LOAD
DEST <-EXTERNAL WORD [SRCB]
LOADL
LOADSET
DEST <-EXTERNAL WORD [SRCB]
assert ”LOCK output during access
DEST <-EXTERNAL WORD [SRCB]
EXTERNAL WORD [SRCB] <-h'FFFFFFFF’,
assert UK output during access
LOADM
DEST.. DEST + COUNT <-
EXTERNAL WORD [SRCBI
EXTERNAL WORD [SRCB + COUNT ” 4]
STORE
STOREL
EXTERNAL WORD [SRCB] <-SRCA
EXTERNAL WORD [SRCB] <-SRCA
assert
STOREM
output during access
EXTERNAL WORD [SRCB] ..
EXTERNAL WORD [SRCB + COUNT " 4] <
SRCA .. SRCA + COUNT
EXBYTE
DEST <-SRCB, with low-order byte replaced
by byte in SRCA selected by BP
EXHW
DEST <-SRCB, w4h low-order half-word replaced
by half-word in SRCA selected by BP
EXHWS
DEST <- ha#-word in SRCA selected by BP,
sign-extended to 32 bits
INBYTE
DEST <-SRCA, with byte selected by BP replaced
by low-order byte of SRCB
INHW
DEST <-SRCA, with half-word sets::ted by BP replaced
by low-order half-word of SRCB
14
MFSR
DEST <-SPECIAL
MFTLB
DEST <-TLB [SRCA]
MTSR
SPDEST <-SRCB
MTSRIM
SPDEST <- 0I16
MTTLB
TLB [SRCA] <-SRCB
6. Hằng- Cho phép các thế hệ của các giá trị không đổi lớn trong thanh ghi.
Operation Description
CONST
DEST <-0I16
CONSTH
Replace high-order half-word of SRCA by 116
CONSTN
DEST <-1116
7. Floating Point bao gồm cho điểm số học, so sánh và chuyển đổi định dạng nổi.
Những chỉ dẫn hiện chưa thực hiện có trực tiếp trong phần cứng xử lý.
Mnemonic
Operation Description
FADD
DEST (single-precision) <-SRCA (single-precision)
+ SRCB (single-precision)
DEST (double-precision) <-SRCA (double-precision)
+ SRCB (double-precision)
FSUB
DEST (single-precision) <-SRCA (single-precision)
-SRCB (single-precision)
DSUB
DEST (double-precision) <-SRCA (double-precision)
-SRCB (double-precision)
FMUL
DEST (single-precision) <-SRCA (single-precision)
” SRCB (single-precision)
FDMUL
DEST (double-precision) <-SRCA (single-precision)
” SRCB (single-precision)
DMUL
DEST (double-precision) <-SRCA (double-precision)
“ SRCB (double-precision)
FDIV
DEST (single-precision) <-SRCA (single-precision)/
SRCB (single-precision)
DDIV
DEST (double-precision) <-SRCA (double-precision)/
SRCB (double-precision)
FEO
IF SRCA (single-precision) - SRCB (single-precision)
THEN DEST <-TRUE
ELSE DEST <-FALSE
DEO
IF SRCA (double-precision) - SRCB (double-precision)
THEN DEST <-TRUE
ELSE OEST <-FALSE
FCE
IF SRCA (single-precision) >- SRCB (single-precision)
THEN DEST <-TRUE
ELSE DEST <-FALSE
DGE
FGT
IF SRCA (double-precision) >- SRCB (double-precision)
THEN DEST <-TRUE
ELSE DEST <-FALSE
IF SRCA (single-precision) > SRCB (single-precision)
THEN DEST <-TRUE
ELSE DEST <-FALSE
DGT
IF SRCA (double-precision) > SRCB (double-precision)
THEN DEST <-TRUE
ELSE DEST <-FALSE
SORT
DEST (single-precision, double-precision, extended-precision)
<-SORT[SRCA (single-precision, double-precision, extended-precision)]
CONVERT
DEST (integer, single-precision, double-precision)
<-SRCA (integer, single-precision, double-precision)
CLASS
DEST (single-precision, double-precision, extended-precision)
<-CLASS[SRCA (single-precision, double-precision, extended-precision)]
15
8. Nhánh- Thực hiện các chương trình nhảy và cá chương trình con.
Operation Description
DEST <-PC//00 + 8
PC <-TARGET
Execute delay instruction
CALLI
DEST <-PC//00 + 8
PC <-SRCB
Execute delay instruction
PC <-TARGET
Execute delay instruction
JMPI
JMPT
PC <-SRCB
Execute delay instruction
IF SRCA - TRUE THEN PC <-TARGET
Execute delay instruction
JMPTI
IF SRCA - TRUE THEN PC <-SRCB
Execute delay instruction
JMPF
IF SRCA - FALSE THEN PC <-TARGET
Execute delay instruction
JMPFI
IF SRCA - FALSE THEN PC <-SRCB
Execute delay instruction
JMPFDEC
IF SRCA - FALSE
THEN SRCA <-SRCA
-J
PC <-TARGET
ELSE
SRCA <-SRCA -1
Execute delay instruction
9. Miscellaneous -Thực hiện chức năng điều khiển linh tinh và các hoạt động
không được cung cấp bởi các lớp khác.
Mnemonic
Operation 0escrlp!lon
Determine number of leading zeros in a word
SETIP
Set IPA, IPB, and IPC with operand register numbers
EMULATE
Load IPA and IPB with operand register numbers, and Trap (VN)
INV
Reset all Valid bits in Branch Target Cache to zeros
IRET
Perform an interrupt return sequence
IRETlNV
Perform an interrupt return sequence. and reset all Valid bits
in Branch Target Cache to zeros
HALT
Enter Halt mode on next cycle
Các Am29000 thực hiện 117 chỉ dẫn. Tất cả các chỉ dẫn thực thi trong một chu trình
đơn trừ IRET, IRETINV, LOADM, STOREM, và bẫy chỉ dẫn như chỉ dẫn điểm nổi.
Hầu hết các chỉ dẫn sử dụng với thanh ghi mục đích chung cho toán hạng và kết quả.
Tuy nhiên, trong hầu hết các chỉ dẫn, 8 bit không đổi có thể được sử dụng ở vị trí của
một toán hạng dựa vào thanh ghi. Một số chỉ dẫn sử dụng với sổ đặc dụng, thanh ghi
TLB, các thiết bị bên ngoài, bộ nhớ và vi xử lý.
Phần này mô tả chỉ dẫn chín lớp trong Am29000, và cung cấp một bản tóm tắt ngắn
gọn về hoạt động chỉ dẫn.
16
1 SỐ TẬP LỆNH AMD Am29000
17
18