Tải bản đầy đủ (.docx) (18 trang)

Đề tài 27. Nghiên cứu tìm hiểu về tập lệnh của hệ vi xử lý AMD 29000.

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (476.31 KB, 18 trang )

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



×