Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 4: Mô hình Von Neumann và kiến trúc tập lệnh LC-3

4.1 Các thành phần cơ bản

4.2 Một ví dụ về mô hình von Neumann: LC-3

4.3 Quá trình xử lý lệnh

4.4 Thay đổi quá trình xử lý lệnh

4.5 Khái niệm ISA LC-3

4.6 Nhóm lệnh thi hành

4.7 Nhóm lệnh di chuyển dữ liệu

4.8 Nhóm lệnh điều khiển

4.9 Ba cấu trúc lệnh trong LC-3

4.10 Một ví dụ

pdf91 trang | Chuyên mục: C/C++ | Chia sẻ: yen2110 | Lượt xem: 655 | Lượt tải: 0download
Tóm tắt nội dung Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 4: Mô hình Von Neumann và kiến trúc tập lệnh LC-3, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 tạo ra cũng tương tự như với lệnh LD và ST. 
Tuy nhiên, thay vì đây địa chỉ của toán hạng chứa dữ liệu cần được 
nạp hay lưu, thì toán hạng này lại chứa địa chỉ của toán hạng là 
dữ liệu cần được nạp hay lưu. Vì phải qua trung gian như vậy 
nên ta mới có kiểu định vị địa chỉ gián tiếp. Với kiểu định vị 
này, ta thấy toán hạng chứa dữ liệu cần làm việc có thể ở bất cứ 
đâu trong bộ nhớ 64K, chứ không bị giới hạn trong tầm 9 bit 
[8:0] như trong trường hợp lệnh LD và ST. Thanh ghi đích cho 
LDI và thanh ghi nguồn trong STI cũng được xác định bằng các 
bit [11:9] trong lệnh. 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.7 Nhóm lệnh di chuyển dữ liệu 
 4.7.2 Indirect mode 
Ví dụ 4.10: Nếu lệnh 
ở địa chỉ x4A1B, và chứa đựng của x49E8 là x2110, việc thực thi 
lệnh này sẽ lấy dữ liệu từ ô nhớ có địa chỉ x2110 nạp vào thanh 
ghi R3. 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.7 Nhóm lệnh di 
chuyển dữ liệu 
 4.7.2 Indirect mode 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.7 Nhóm lệnh di chuyển dữ liệu 
 4.7.3 Base+offset mode 
 Lệnh LDR (opcode = 0110) và STR (opcode = 0111) dùng kiểu 
định vị Base+offset. Kiểu định vị này xác định địa chỉ toán 
hạng trong bộ nhớ 64K bằng cách lấy 6 bit offset được mở rộng 
dấu IR[5:0] cộng với thanh ghi nền trong vùng IR[8:6]. 
 Ví dụ 4.11: Nếu R2 đang chứa trị 16 bit x2345, lệnh 
nạp R1 nội dung của ô nhớ x2362 (x2345 + x1D). 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.7 Nhóm lệnh di 
chuyển dữ liệu 
 4.7.3 Base+offset 
mode 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.7 Nhóm lệnh di chuyển dữ liệu 
 4.7.4 Immediate mode 
Ví dụ 4.12: Nếu ô nhớ x4018 chứa lệnh LEA R5, #-3, và thanh ghi 
PC chứa x4018, ta có lệnh 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.7 Nhóm lệnh di chuyển dữ liệu 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.7 Nhóm lệnh di chuyển dữ liệu 
 4.7.5 Ví dụ: Giả sử các lệnh được chứa trong các ô nhớ từ địa 
chỉ x30F6 tới x30FC như hình 4.10 sau. 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 Các lệnh điều khiển thay đổi trình tự các lệnh thực thi trong 
chương trình. LC-3 có năm mã lệnh thực hiện việc này: lệnh rẻ 
nhánh (Branch) có điều kiện, lệnh nhảy (Jump) không điều 
kiện, gọi chương trình con, TRAP, và lệnh trả vể từ ngắt 
(Interrupt). Trong mục này chủ yếu chúng ta nói về lệnh rẻ 
nhánh có điều kiện, lệnh nhảy không điều kiện, và TRAP. 
4.8.1 Lệnh rẻ nhánh có điều kiện 
 Định dạng của lệnh rẻ nhánh có điều kiện (opcode = 0000) như 
sau: 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 4.8.1 Lệnh rẻ nhánh có điều kiện 
 Trong LC-3, tất cả các lệnh mà có ghi trị vào các thanh ghi đa 
dụng sẽ đặt trị cho ba mã điều kiện (NZP) là ADD, AND, NOT, 
LD, LDI, LDR, và LEA. 
 Các mã điều kiện được lệnh rẻ nhánh có điều kiện sử dụng để 
xác định xem có thay đổi trình tự lệnh hay không; nghĩa là, xem 
sự thực thi lệnh có theo trình tự thường thấy như là kết quả của 
việc tăng thanh ghi PC trong phase FETCH của mỗi lệnh hay 
không. 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 4.8.1 Lệnh rẻ nhánh có điều kiện 
 Trong khi thực hiện phase EXECUTE, bộ xử lý khảo sát các mã 
điều kiện mà các bit tương ứng của nó trong lệnh là 1. 
 Nếu có một mã điều kiện mà được kiểm tra và thấy bằng 1, 
thanh ghi PC được nạp bằng địa chỉ có được trong phase 
EVALUATE ADDRESS. 
 Ngược lại, khi không có một mã điều kiện mà được kiểm tra và 
thấy bằng 1, PC giữ trị không đổi. 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 4.8.1 Lệnh rẻ nhánh có điều kiện 
 Ví dụ 4.13: Nếu giá trị cuối cùng được nạp vào một thanh ghi 
đa dụng nào đó là 0, thì lệnh hiện thời (ở ô nhớ x4027) dưới đây 
sẽ nạp thanh ghi PC bằng trị x4101 (x4028 + x0D9), tức lệnh kế 
cần thực thi sẽ ở ô nhớ x4101, chứ không phải ở ô nhớ x4028. 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 4.8.1 Lệnh rẻ nhánh có điều kiện 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 4.8.1 Lệnh rẻ nhánh có điều kiện 
 Nếu tất cả ba bit [11:9] đều là 1???? 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 4.8.1 Lệnh rẻ nhánh có điều kiện 
 Ví dụ 4.14: Nếu lệnh sau đây 
 ở ô nhớ x507B được thực thi, thi thanh ghi PC được nạp trị 
x5201. Độc giả hãy suy nghĩ xem nếu tất cả ba bit [11:9] trong 
lệnh BR đều bằng không, điều gì sẽ xảy ra? 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 4.8.2 Ví dụ 
 Giả sử chúng ta đã có 12 ô nhớ từ x3100 tới x310B chứa 12 số 
nguyên mà chúng ta cần tính tổng. 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 4.8.2 Ví dụ 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 4.8.3 Hai phương pháp điều khiển lặp 
 Chúng ta dùng thuật ngữ lặp (loop) để mô tả chuỗi lệnh cần 
được thực thi lặp đi lặp lại theo một cơ chế điều khiển nào đó. 
 Mỗi khi thân vòng lặp được thực hiện ta gọi là sự lặp lại 
(iteration) của vòng lặp. 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 4.8.3 Hai phương pháp điều khiển lặp 
 Trong ví dụ ở mục trên, phương pháp biến đếm được sử dụng. 
Nếu chúng ta biết chính xác số lần lặp là n lần, thì đơn giản 
chúng ta chỉ cần gán cho biến đếm trị n, và sau mỗi lần lặp, 
chúng ta cần giảm biến đếm này và kiểm tra nó xem có là 0 hay 
chưa. Nếu chưa là 0, chúng ta đặt trị cho thanh ghi PC bằng địa 
chỉ của lệnh đầu thân vòng lặp, và tiếp tục sự lặp lại. 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 4.8.3 Hai phương pháp điều khiển lặp 
 Phương pháp thứ hai là dùng trị canh (sentinel). Cách này đặc 
biệt hiệu quả khi chúng ta không biết trước có bao nhiêu sự lặp 
lại cần phải được thực hiện. Thông thường quá trình lặp sẽ là 
dãy các sự kiện cần xử lý, chúng ta cần thêm vào dãy sự kiện 
này một sự kiện là kiểm tra một giá trị mà chúng ta biết trước 
hay theo quy ước là không bao giờ xuất hiện trong các sự kiện 
gốc. Nếu việc kiểm tra này xảy ra, tức việc lặp kết thúc. Giá trị 
đó được gọi là trị canh. 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 4.8.4 Ví dụ 
 Giả sử chúng ta cần cộng các trị nguyên dương từ ô nhớ x3100 
tới x310B. Khi đó chúng ta có thể dùng bất kỳ trị âm nào để 
làm trị canh. Giả sử trị canh được chứa ở ô nhớ x310C là -1. 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 4.8.4 Ví dụ 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 4.8.5 Lệnh JMP 
 Lệnh JMP nạp thanh ghi PC bằng trị của thanh ghi xác định bời 
các bit [8:6] của lệnh. Nếu lệnh JMP nằm ở địa chỉ x4000, R2 
chứa trị x6600, và PC chứa x4000, thì lệnh JMP ở x4000 sẽ 
được thực thi, làm cho lệnh kế tiếp là lệnh ở x6600. Vì các 
thanh ghi đều dài 16 bit, có thể mã hóa địa chỉ cho cả bộ nhớ 
64K của ISA LC-3, nên lệnh JMP không có giới hạn cho lệnh 
kế cần được thực thi. 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 4.8.6 Lệnh TRAP 
 Lệnh TRAP (opcode = 1111) cho phép lấy dữ liệu vào và xuất 
dữ liệu ra khỏi máy tính và có định dạng như sau. 
 Lệnh này thay đổi trị của thanh ghi PC, làm nó chỉ tới một vị trí 
trong bộ nhớ mà là một phần của hệ điều hành để hệ điều hành 
thực hiện một tác vụ nào đó nhân danh chương trình đang được 
thực thi. Theo kiểu nói của ngôn ngữ hệ điều hành, chúng ta nói 
lệnh TRAP gọi một dịch vụ của hệ điều hành (service call). Các 
bit [7:0] của lệnh TRAP tạo nên một trapvector 8 bit, xác định 
dịch vụ cần gọi mà chương trình muốn hệ điều hành thực hiện. 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.8 Nhóm lệnh điều khiển 
 4.8.6 Lệnh TRAP 
 Một số dịch vụ chúng ta cần biết để sử dụng ngay là : 
• Nhập một ký tự từ bàn phím: trapvector = x23 
• Xuất một ký tự ra màn hình: trapvector = x21 
• Kết thúc chương trình: trapvector = x25. 
 Khi hệ điều hành hoàn tất dịch vụ, bộ đếm chương trình PC sẽ 
được đặt trở lại địa chỉ của lệnh ngay sau lệnh TRAP trong 
chương trình đang được thực thi, và chương trình tiếp tục chạy. 
Đây cũng là khả năng thực hiện giao tiếp của LC-3 giữa hệ đều 
hành và chương trình đang được thực thi. 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.9 Ba cấu trúc lệnh trong LC-3 
 4.9.1 Ba cấu trúc cơ bản trong lập trình có cấu trúc 
 Trong lập trình có ba cấu trúc lệnh cơ bản để thực hiện các tác 
vụ cần thiết, đó là các cấu trúc tuần tự (sequential), điều kiện 
(conditional), và lặp (iterative). Hình 4.16 trình bày ba cấu trúc 
cơ bản triển khai tác vụ cần thực thi (task). 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.9 Ba cấu trúc lệnh trong LC-3 
 4.9.1 Ba cấu trúc cơ bản trong lập trình có cấu trúc 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.9 Ba cấu trúc lệnh trong LC-3 
 4.9.2 Ba cấu trúc trong LC-3 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.10 Một ví dụ 
 Đếm số lần xuất hiện của một ký tự xác định trước (được 
nhập từ bàn phím) trong một mảng ký tự (file) cho trước. Sau 
đó hiển thị số lần xuất hiện này ra màn hình(chấp nhận số lần 
xuất hiện tối đa của một ký tự là 9) 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.10 Một ví dụ 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.10 Một ví dụ 
CHƢƠNG 4 
MÔ HÌNH VON NEUMANN 
 VÀ KIẾN TRÚC TẬP LỆNH LC-3 
 4.10 Một ví dụ 
HEÄ THOÁNG MAÙY TÍNH VAØ NGOÂN 
NGÖÕ C 
 KEÁT THUÙC CHÖÔNG 4 

File đính kèm:

  • pdfbai_giang_he_thong_may_tinh_va_ngon_ngu_c_chuong_4_mo_hinh_v.pdf