Các phương pháp trao đổi dữliệu

Một phần của tài liệu kĩ thuật vi xử lí (Trang 109 - 110)

Trong thực tế tồn tại 3 kiểu trao đổi dữ liệu bằng cách truy nhập trực tiếp vào bộ nhớ như sau:

 Treo CPU một khoảng thời gian để trao đổi cả mảng dữ liệu.

 Treo CPU để trao đổi từng byte.

 Tận dụng thời gian không dùng buýt để trao đổi dữ liệu.

V.4.2.1 Trao đổi cả một mảng dữ liệu

Trong chế độ này CPU bị treo trong suốt quá trình trao đổi mảng dữ liệu. Chế độ này được dùng khi ta có nhu cầu trao đổi dữ liệu với ổ đĩa hoặc đưa dữ liệu ra hiển thị. Các bước để chuyển một mảng dữ liệu từ bộ nhớ ra thiết bị ngoại vi:

1. CPU phải ghi từ điều khiển và từ chế độ làm việc vào DMAC để quy định cách thức làm việc, địa chỉ đầu của mảng nhớ, độ dài của mảng nhớ, . . .

2. Khi thiết bị ngoại vi có yêu cầu trao đổi dữ liệu, nó đưa DREQ =1 đến DMAC. 3. DMAC đưa ra tín hiệu HRQ đến chân HOLD của CPU để yêu cầu treo CPU. Tín hiệu

HOLD phải ở mức cao cho đến hết quá trình trao đổi dữ liệu.

4. Nhận được yêu cầu treo, CPU kết thúc chu kỳ buýt hiện tại, sau đó nó treo các buýt của mình và đưa ra tín hiệu HLDA báo cho DMAC được toàn quyền sử dụng buýt. 5. DMAC đưa ra xung DACK để báo cho thiết bị ngoại vi biết là có thể bắt đầu trao đổi

dữ liệu.

6. DMAC bắt đầu chuyển dữ liệu từ bộ nhớ ra thiết bị ngoại vi bằng cách đưa địa chỉ của byte đầu ra buýt địa chỉ và đưa ra tín hiệu MEMR=O để đọc một byte từ bộ nhớ ra buýt dữ liệu. tiếp đó DMAC đưa ra tín hiệu IOW =0 để ghi đưa dữ liệu ra thiết bị ngoại vi. DMAC sau đó giảm bộ đếm số byte còn phải chuyển, cập nhật địa chỉ của byte cần đọc tiếp, và lặp lại cá c động tác trên cho tới khi hết số đếm (TC).

7. Quá trình DMA kết thúc, DMAC cho ra tín hiệu HRQ=0 để báo cho CPU biết để CPU dành lại quyền điều khiển hệ thống.

V.4.2.2 Treo CPU để trao đổi từng byte.

Trong cách trao đổi dữ liệu này CPU không bị treo lâu dài trong một lần nhưng thỉnh thoảng lại bị treo trong khoảng thời gian rất ngắn đủ để trao đổi 1 byte dữ liệu (CPU bị lấy

Chương V. Tổng quan về các phương pháp vào ra dữ liệu

-110-

mất một số chu kỳ đồng hồ). Do bị lấy đi một số chu kỳ đồng hồ như vậy lên tốc độ thực hiện một công việc nào đó của CPU chỉ bị suy giảm chứ không dừng lại. Cách hoạt động cũng tương tự như phần trước, chỉ có điều mỗi lần DMAC yêu cầu treo CPU thi chỉ có một byte được trao đổi.

V.4.2.3 Tận dụng thời gian CPU không dùng buýt để trao đổi dữ liệu.

Trong cách trao đổi dữ liệu này, ta phải có các logic phụ bên ngoài cần thiết để phát hiện ra các chu kỳ xử lý nội bộ của CPU (không dùng đến buýt ngoài) và tận dụng các chu kỳ đó vào việc trao đổi dữ liệu giữa thiết bị ngoại vi với bộ nhớ. Trong cách làm này thì DMAC và CPU luân phiên nhau sử dụng buýt và việc truy nhập trực tiếp bộ nhớ kiểu này không ảnh hưởng gì tới hoạt động bình thường của CPU.

Một phần của tài liệu kĩ thuật vi xử lí (Trang 109 - 110)