Chu kỳ nhận và thực hiện lệnh

Một phần của tài liệu Bài giảng Vi xử lý 1 - ĐH Sư Phạm Kỹ Thuật Nam Định (Trang 46 - 50)

2.5. Chu trình thực hiện lệnh

2.5.3. Chu kỳ nhận và thực hiện lệnh

Vi xử lý có 2 chức năng chính là nhận (Fetch) và thực hiện (Execute) lệnh.

Quá trình nhận lệnh: CPU nhận lệnh (mất 1-2 chu kỳ bus)

Quá trình thực hiện lệnh: Có những lệnh chỉ cần 2 chu kỳ đồng hồ là thực hiện xong lệnh. Song cũng có những lệnh cần rất nhiều chu kỳ đồng hồ. Cách tổ chức của

Mét chu kú bus

Địa chỉ Tín hiệu trạng thái

Địa chỉ ổn định

Địa chỉ Dữ liệu ghi TWr

CLK

ALE A16/S3- A19/S6 A8-A15

AD0-AD7

WR

DEN IO/M

8086 đã được cải tiến thông minh hơn nhiều so với các CPU thế hệ trước ở chỗ tổ chức 2 đơn vị hoạt động tương đối độc lập là EU( excutive unit) và BIU ( bus interface unit).

Trong thời gian EU thực hiện lệnh thì BIU vẫn có thể đảm nhận nhiệm vụ nhận trước các lệnh, cất tạm vào hàng đợi lệnh và các thanh ghi dữ liệu. Nhờ vậy mà khi bus bị bận trong chu kỳ đọc thì EU thực hiện các lệnh trước đó và khi bus bận trong chu kỳ ghi thì EU lại thực hiện lệnh khác. Với cách tổ chức này đã làm tăng hiệu quả của toàn bộ hệ thống lên rất nhiều.

Ta có thể tóm lại toàn bộ quá trình thực hiện lệnh và nhận lệnh như sau:

1/ BIU xuất nội dung của thanh ghi con trỏ lệnh IP (Instruction Pointer) ra bus địa chỉ

để chọn byte hay word đọc vào BIU.

2/ Thanh ghi IP được tăng thêm 1 để chuẩn bị nhận lệnh kế tiếp.

3/ Khi lệnh ở trong BIU, nó được đưa sang hàng lệnh (queue). Đây là một thanh ghi lưu trữ dạng FIFO (First In First Out – Vào trước ra trước), dùng cơ chế xử lý xen kẽ liên tục các dòng mã lệnh (kỹ thuật đường ống pipeline).

4/ Giả sử ban đầu hàng lệnh trống, EU sẽ không làm gì cả cho đến khi bắt đầu xuất hiện một lệnh trong hàng, EU sẽ lấy lệnh ra khỏi hàng và bắt đầu thực thi lệnh đó.

5/ Trong khi EU đang thực thi lệnh, BIU tiến hành nhận lệnh mới. Tuỳ theo thời gian thực thi lệnh mà BIU có thể đưa vào hàng lệnh nhiều lệnh mới trước khi EU thực hiện lệnh xong và tiếp tục lấy lệnh mới.

BIU được lập trình để có thể nhận một lệnh mới bất kỳ lúc nào hàng lệnh có chỗ cho 1 byte (8088) hay 2 byte (8086). Lợi ích của phương pháp xử lý theo cơ chế pipeline là EU có thể thực thi các lệnh gần như liên tục thay vì phải đợi BIU nhận thêm lệnh mới.

NhËn Thùc thi NhËn Thùc thi NhËn Thùc thi

(a)

Nhận (1) Nhận (2) Nhận (3) Đọc Nhận (4) Nhận (4) Nhận

Chê Thùc thi Chê Thùc thi Thùc thi Thùc thi Chê NhËn

(b)

(1): lệnh thực thi không cần dữ liệu trong hàng; (2): lệnh thực thi cần dữ liệu trong hàng; (3): lệnh nhảy; (4): các lệnh bị bỏ qua do lệnh nhảy

Hình 2.9(a) CPU thông thường dùng chu kỳ nhận và thực thi lệnh tuần tự; (b) kiến trúc dạng pipeline của 8086 cho phép thực thi các lệnh mà không bị trễ do quá trình nhận

lệnh

Câu hỏi và bài tập chương 2

Câu 1: Vẽ sơ đồ cấu trúc chung của bộ vi xử lý 80x86, nêu nguyên tắc hoạt động của bộ vi xử lý.

Câu 2: Trình bày các thanh ghi có trong vi xử lý 8086, nêu chức năng của các thanh ghi đó

Câu 3: Cho biết đặc điểm của thanh ghi cờ, tác dụng của mỗi bít trong thanh ghi cờ Câu 4: Kể tên các nhóm lệnh và các lệnh của vi xử lý 80x86. Mỗi lệnh cho 1 ví dụ minh họa

Câu 5: Hãy cho biết quá trình nhận và thực hiện lệnh được thực thi như thế nào C©u 6 :

Viết kết quả từng dòng lệnh và cho biết kết quả cuối cùng của các thanh ghi và ô nhớ sau khi kết thúc chương trình

Mov al,9 Mov cl,6 Lap:

Dec al Loop lap Al= ? ,Cl = ?

Clc

Mov al,10101010B Mov cl,4

Rcl al,cl Al = ?

Cl = ? ,CF = ? Mov al,56

Mov bl,78 Xor al,bl Rcr al,1 Al = ? CF = ?

Mov al,18 Mov dl,6 Stc Adc al,dl Al =?

Dl = ?

Chương 3: Lập trình hợp ngữ cho hệ vi xử lý

* Giới thiệu về chương trình hợp ngữ:

Trong chương trước ta đã giới thiệu khá tỉ mỉ tập lệnh của bộ vi xử lý 8086/88.

Trong chương này ta sẽ giới thiệu cách lập trình dùng hợp ngữ trên các máy IBM PC hoặc tương thích với IBM PC, vì đó là môi trường phổ thông và tiện lợi nhất để tạo ra và thử nghiệm các chương trình viết bằng hợp ngữ. Nói như vậy là vì:

Về phần cứng, máy IBM PC có cấu trúc khá tiêu biểu của một hệ vi xử lý.

Sau khi thiết kế xong phần cứng, bạn phải tiến hành lập trình cho vi xử lý để hoàn thiện sản phẩm của mình. Vi xử lý có thể được lập trình bằng ngôn ngữ bậc cao hay ngôn ngữ bậc thấp. Ngôn ngữ bậc thấp là ngôn ngữ được thiết kế riêng cho từng loại vi xử lý và thường được gọi là hợp ngữ (Assembly). Ngôn ngữ bậc cao là các ngôn ngữ gần với ngôn ngữ của con người và giống nhau cho nhiều loại vi xử lý. Mỗi loại ngôn ngữ đều có ưu và nhược điểm riêng. Với những người mới bắt đầu nghiên cứu về kỹ thuật vi xử lý nên bắt đầu với ngôn ngữ bậc thấp. Có một số điểm đáng lưu ý khi bạn lập trình cho một vi xử lý. Đó là trước tiên bạn phải hiểu rõ được các chế độ địa chỉ của vi xử lý đó. Chế độ địa chỉ chính là cách chỉ ra toán hạng nằm ở đâu. Toán hạng là các tham số, các hằng số, các ô nhớ, các thanh ghi, các bit, các cờ…hay nói chung là các đối tượng tham gia vào việc thực hiện lệnh. Thông thường thì một toán hạng (ví dụ như một thanh ghi) có thể được trỏ đến bằng một vài chế độ địa chỉ khác nhau. Mỗi chế độ địa chỉ có thế mạnh riêng của nó và tùy từng trường hợp mà ta nên chọn chế độ thích hợp khi lập trình. Sau đó bạn phải nắm bắt được tập lệnh (Instruction Set) của vi xử lý đó. Tập lệnh là tất cả những lệnh mà vi xử lý có thể hiểu được, có thể thực hiện được. Mỗi lệnh đều được mã hóa (hay được quy ước) bởi một chuỗi các bit 0 và 1. Các vi xử lý khác nhau thì có tập lệnh khác nhau do nhà sản xuất chip cung cấp.

Trước khi bắt đầu viết các lệnh cụ thể, bạn nên viết lưu đồ thuật toán thực hiện các nhiệm vụ cụ thể. Lưu đồ thuật toán là sơ đồ diễn giải trình tự thực hiện các nhiệm vụ một cách lôgic và liền mạch. Chỉ cần mất chút thời gian thực hiện công việc này, bạn sẽ có được cái nhìn vừa bao quát vừa chi tiết đối với chương trình mình định viết, nhờ

đó mà bạn lập trình nhanh hơn, hiệu quả hơn và dễ dàng phát hiện ra lỗi về thuật toán xử lý nếu chương trình chạy không như ý muốn. Chương trình sẽ được viết trong một file mã nguồn (thường có đuôi là ASM). Phần mềm trên máy tính có tên là “Trình biên dịch” (Compiler) sẽ dịch file mã nguồn sang một file có đuôi là OBJ. File này chứa thông tin cần thiết để có thể chuyển đổi sang file có đuôi HEX hay file có đuôi BIN (là các file chứa mã chương trình đã được chuyển sang dạng Hexa hay Binary) để có thể nạp vào trong bộ nhớ chương trình của vi xử lý. Trong khi lập trình, hãy đặc biệt lưu ý

Một phần của tài liệu Bài giảng Vi xử lý 1 - ĐH Sư Phạm Kỹ Thuật Nam Định (Trang 46 - 50)

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

(210 trang)