Nhập toán hạng, xử lý và lưu dữ liệu

Một phần của tài liệu Giáo trình kiến trúc máy tính nguyễn trung đồng (Trang 80 - 84)

Chương IV Chương trình và thực hiện chương trình

3. Kiến trúc thanh ghi của CPU

4.8. Nhập toán hạng, xử lý và lưu dữ liệu

Trong các bước còn lại, đơn vị điều khiển CU gửi tín hiệu đã giải mã của mã lệnh cho Đơn vị số học và logic, đồng thời gửi tín hiệu RD yêu cầu đọc dữ liệu từ bộ nhớ tại địa chỉ đã nạp trong thanh ghi địa chỉ bộ nhớ (MAR).

Dữ liệu được đọc cũng sẽ được gửi về Đơn vị số học và logic, Đơn vị số học và logic thực hiện các thao tác xử lý dữ liệu cần thiết và lưu kết quả trong thanh ghi gộp.

Tóm lại, một chu kỳ lệnh bao gồm các bước sau đây:

(1) Tính địa chỉ lệnh: Xác định địa chỉ của lệnh sẽ được thực thi. Thông thường điều này được thực hiện bằng cách cộng 1 vào địa chỉ của lệnh trước. Tuy nhiên, tùy thuộc vào độ dài của lệnh và tổ chức từ trong bộ nhớ thì có thể cộng một hằng số khác. Trong trường hợp lệnh vừa được thực thi là lệnh rẽ nhánh thì địa chỉ lệnh được cho (tuỳ theo các định địa chỉ) bởi phần địa chỉ của lệnh trước đó.

Nguyễn Trung Đồng – Tel 0983 410 866

(2) Đọc lệnh: Bước này đọc lệnh từ ô nhớ có địa chỉ đã được xác định

ở bước 1 vào CPU.

Nhận lệnh IF Giải mã lệnh ID Tạo Địa chỉ và nhận toán hạng GOA&OF Xử lý EX Lưu kết quả WR

(3) Giải mã lệnh: Giải mã phần mã lệnh trong lệnh để xác định loại tác

vụ sẽ được thực hiện và xác định địa chỉ các toán hạng sẽ được sử dụng.

(4) Tạo địa chỉ toán hạng: Nếu hoạt động thực hiện lệnh liên quan đến

toán hạng trong bộ nhớ thì xác định địa chỉ của toán hạng đó.

(5) Nạp toán hạng: Đọc toán hạng từ thanh ghi hoặc từ ô nhớ đãđược

xác định từ bộ nhớ vào thanh ghi đệm bộ nhớ.

(6) Xử lý dữ liệu: Thực hiện hoạt động xử lý dữ liệu được xác định

trong lệnh.

(7) Lưu kết quả: Lưu kết quả vào thanh ghi chứa (Acc) hoặc vào 1 vị

trí nhớ đã được xác định trong bộ nhớ hay các thiết bị khác.

Sơ đồ sau đây minh họa các trạng thái của một chu kỳ lệnh căn bản:

Nhận lệnh IF Giải mã lệnh ID Tạo Địa chỉ và nhận toán hạng GOA&OF Xử lý EX Lưu kết quả WR Tính toán và nạp địa chỉ lệnh Nhận lệnh ở địa chỉ nói trên Giải mã mã lệnh và toán hạng Tạo địa chỉ của toán hạng Nạp toán hạng. Xử lý dữ liệu. Lưu kết quả xử lý. Thời gian

Tóm gọn, ta thấy có năm bước cơ bản để CPU thực hiện được một lệnh.

Sau năm bước trên, CPU quay lại bước 1 để thực hiện tác vụ nhận lệnh tiếp theo.

Lưu ý rằng các lệnh của một số máy tính cho phép sử dụng nhiều toán hạng, do đó có thể có nhiều trạng thái Tạo địa chỉ toán hạng và Nạp toán

hạng trước khi xử lý dữ liệu.

Để minh họa, ta hãy khảo sát ví dụ thực hiện đoạn chương trình sau đây, được đặt tại địa chỉ 300H

Giả sử nội dung ô nhớ có địa chỉ là (940H) là 0302H, nội dung ô nhớ có địa chỉ (941H) là 0022H Giả sử rằng con trỏ lệnh bắt đầu tại vị trí 300H.

Để thực hiện, các lệnh sẽ được đọc tuần tự từ vị trí 300H, 301H, v.v.

Đoạn chương trình này thực hiện việc cộng các nội dung các ô nhớ trong bộ nhớ tại các địa chỉ 940H và 941H.

Tại chu kỳ đọc lệnh thứ nhất, thanh đếm chương trình PC chứa nội dung là 300H, đó là địa chỉ của lệnh đầu tiên. Địa chỉ này được nạp vào thanh ghi địa chỉ bộ nhớ MAR. Nội dung ô nhớ có địa chỉ 300H được đọc và nạp vào thanh ghi đệm bộ nhớ và sau đó được đưa vào thanh ghi lệnh. Nội dung thanh đếm chương trình PC tự động tăng lên 1 để có nội dung là 301H. Thanh ghi gộp có nội dung 0000H.

Trong chu kỳ thực thi lệnh đầu tiên, lệnh được giải mã và xác định rằng cần thực hiện thao tác nhận dữ liệu (LOAD) từ địa chỉ 940H. Thanh ghi địa chỉ bộ nhớ MAR được nạp nội dung 940H. Nội dung 0302H tại địa chỉ này của bộ nhớ được nạp vào thanh ghi đệm MBR và sau đó được nạp vào thanh ghi gộp Acc.

LOAD @940H;Lấy nội dung ô nhớ có địa chỉ là 940H

nạp vào Acc

ADD @941H; Cộng nội dung thanh ghi gộp Acc với nội

dung ô nhớ có địa chỉ là 941H, kết quả đặt tại thanh ghi Acc

300H 301H

940H 941H

Nguyễn Trung Đồng – Tel 0983 410 866

Trong chu kỳ đọc lệnh thứ hai, vì con trỏ lệnh đang có nội dung 301H, nội dung này được nạp vào thanh ghi địa chỉ bộ nhớ MAR. Nội dung của ô nhớ có địa chỉ 301H sau đó được nạp vào thanh ghi đệm bộ nhớ (MBR) và thanh ghi lệnh. Con trỏ lệnh tăng lên 1 để có nội dung 302H. Thanh ghi gộp có nội dung 0302H.

Trong chu kỳ thực thi lệnh thứ hai, lệnh được giải mã và xác định rằng cần thực hiện thao tác cộng dữ liệu (ADD) từ địa chỉ 941H vào nội dung của thanh ghi gộp ACC. Con trỏ lệnh chứa nội dung 302H, thanh ghi địa chỉ bộ nhớ được nạp nội dung 941H. Nội dung 0022H tại địa chỉ 941H của bộ nhớ được nạp vào thanh ghi đệm. Nội dung này được chuyển tới bộ số học và logic để cộng với nội dung của thanh ghi gộp, thành 0342H. Kết quả cuối cùng được lưu ở thanh ghi gộp.

Ghi chú

Trong quá trình thực thi chương trình, CPU tuần tự giải mã các lệnh và thực hiện những thao tác được yêu cầu. Trong phần trên chúng ta đã minh họa quá trình thực hiện lệnh với sự truyền dữ liệu từ bộ nhớ vào thanh ghi lệnh trong CPU. Ngoài bộ nhớ, CPU còn có thể trao đổi dữ liệu với các thiết bị nhập và xuất. Nói chung, những thao tác yêu cầu CPU thực hiện được chia làm bốn dạng

Trao đổi dữ liệu giữa CPU và bộ nhớ: Dữ liệu được truyền từ

CPU đến bộ nhớ hoặc ngược lại.

Trao đổi dữ liệu giữa CPU và thiết bị nhập/xuất: Dữ liệu có thể truyền ra ngoài hoặc từ ngoài vào bằng cách truyền giữa CPU và các mô-đun nhập/xuất.

Xử lý dữ liệu: CPU thực hiện các tính toán số học và logic trên dữ liệu.

Điều khiển: Một lệnh có thể xác định trật tự các lệnh sẽ được

thực thi có thay đổi hay không. Ví dụ, CPU có thể đọc lệnh tại địa chỉ 149, lệnh lưu ở địa chỉ này có thể cho biết thêm thông tin là lệnh tiếp theo sẽ được đọc tại địa chỉ 182. CPU ghi nhớ thông tin này bằng cách nạp địa chỉ 182 vào con trỏ lệnh. Nhờ đó chu kỳ đọc tiếp theo sẽ được thực hiện tại địa chỉ 182 chứ không phải tại địa chỉ tiếp theo là 150.

Một phần của tài liệu Giáo trình kiến trúc máy tính nguyễn trung đồng (Trang 80 - 84)

Tải bản đầy đủ (PDF)

(183 trang)