. Các phƣơng pháp ánh xạ cache a) Ánh xạ tr c tiếp
Các phƣơng pháp điều khiển vào ra
Phân loại:
Vào ra bằng chương trình Vào ra bằng ngắt
Truy cập bộ nhớ trực tiếp DMA
6.2.1. Vào ra bằng chƣơng trình - polling
Nguyên tắc chung:
Sử dụng lệnh vào ra trong chương trình để trao đổi dữ liệu với cổng vào ra. Khi CPU thực hiện chương trình gặp lệnh vào ra thì CPU điều khiển trao
CPU và thiết bị ngoại vi chỉ trao đổi dữ liệu khi có tín hiệu móc nối báo sẵn sàng (Ready/Akc) của các phía. Sau khi máy tính khởi động thiết bị ngoại vi (khối ghép nối), máy tính luôn chờ và kiểm tra trạng thái sẵn sàng của thiết bị ngoại vi gồm các bước:
(1) Đọc thông tin về trạng thái sẵn sàng của thiết bi ngoại vi
(2) Kiểm tra: Nếu thiết bị ngoại vi sẵn sàng thì trao đổi dữ liệu, ngược lại thì về bước (1) để kiểm tra lại.
Phương pháp này được dùng khi tốc độ trao đổi dữ liệu của các bên (CPU và thiết bị ngoại vi) rất không bằng nhau.
Nh n xét:
Việc trao đổi thông tin là tin cậy vì chỉ trao đổi khi thiết bị ngoại vi sẵn sàng.
Tốn thời gian CPU vì phải kiểm tra trạng thái sẵn sàng của thiết bị ngoại vi, việc kiểm tra này do CPU đảm nhiệm nên giảm hiệu suất của hệ thống. Phù hợp với những hệ thống không đòi hỏi cao về tốc độ trao đổi dữ liệu,
hệ thống có ít thiết bị ngoại vi.
6.2.2. Vào ra bằng phƣơng pháp ngắt
Bình thường máy tính thực hiện một chương trình (công việc) nào đó. Khi thiết bị ngoại vi có yêu cầu trao đổi dữ liệu, nó sẽ gửi tín hiệu yêu cầu ngắt CPU dừng công việc hiện tại, phục vụ cho trao đổi dữ liệu thông qua tín hiệu yêu cầu ngắt IRQ (Interrupt Request) tác động vào chân INTR (chân tiếp nhận yêu cầu ngắt) của CPU. CPU nhận được yêu cầu ngắt, nếu chấp nhận nó sẽ đưa ra xung INTA xác nhận tới thiết bị ngoại vi, sau đó CPU tìm chương trình con phục vụ ngắt tương ứng số hiệu ngắt và thực hiện nó. Đó chính là chương trình con thực hiện trao đổi
(vào/ra) dữ liệu do thiết bị ngoại vi yêu cầu. Khi trao đổi xong (ISR – Interrupt Service Routine) kết thúc thì CPU tiếp tục công việc (chương trình) đã bị gián đoạn.
6.2.3. Vào ra sử dụng DM
Trong các phương pháp vào/ra dữ liệu bằng chương trình kể trên, dữ liệu phải được chuyển qua lại từ bộ nhớ đến CPU rồi đến thiết bị ngoại vi hoặc ngược lại bằng việc thực hiện từng lệnh (MOV, IN hoặc OUT) của CPU với sự tham gia của các thanh ghi. Dữ liệu của mỗi lần vận chuyển là byte hoặc word (2 byte), tốc độ trao đổi dữ liệu phụ thuộc rất nhiều vào tốc độ thực hiện các lệnh trao đổi dữ liệu kể trên. Nói chung, tốc độ trao đổi dữ liệu là không thể nhanh được. Với các thiết bị làm việc với bộ nhớ khối như màn hình, ổ đĩa, ... yêu cầu trao đổi cả mảng dữ liệu thì phương pháp vào/ra dữ liệu bằng chương trình là không phù hợp. Khi đó người ta nghĩ đến việc điều khiển dữ liệu vào/ra trực tiếp từ bộ nhớ đến thiết bị ngoại vi hoặc ngược lại mà không thông qua CPU bằng những lệnh trao đổi dữ liệu như MOV, IN hoặc OUT. Đó là phương pháp vào/ra dữ liệu bằng cách truy nhập trực tiếp bộ nhớ (DMA – Direcr Memory Access). Trong trường hợp này CPU trao quyền điều khiển cho một mạch phần cứng phụ điều khiển việc vào/ra dữ liệu, đó là DMAC – DMA Controller
Yêu cầu ngắt Chương trình con phục vụ ngắt (trao đổi dữ liệu) Chương trình
Các thành phần của DM C
Thanh ghi dữ liệu: chứa dữ liệu trao đổi.
Thanh ghi địa chỉ: chứa địa chỉ của ngăn nhớ dữ liệu Bộ đếm dữ liệu: chứa số từ dữ liệu cần trao đổi
Khối logic điều khiển: điều khiển hoạt động của DMAC
Hoạt động của DM
Khi cần vào ra dữ liệu thì CPU nhờ DMAC tiến hành vào ra dữ liệu với thông tin cho biết như sau:
- Địa chỉ thiết bị vào ra
- Địa chỉ đầu của mảng nhớ chứa dữ liệu và DMAC nạp thanh ghi địa chỉ
- Số từ dữ liệu cần truyền và DMAC nạp vào bộ đếm dữ liệu - CPU sẽ đi thực hiện việc khác
- DMAC điều khiển việc trao đổi dữ liệu sau khi truyền một từ dữ liệu thì nội dung thanh ghi địa chỉ tăng lên và nội dung bộ đếm dữ liệu giảm xuống một đơn vị.
- Khi bộ đếm bằng dữ liệu bằng 0, DMAC gởi tín hiệu ngắt CPU để báo kết thúc DMA
DMA truyền theo khối: DMAC sử dụng BUS để truyền cả khối dữ liệu (CPU chuyển nhượng BUS cho DMAC)
DMA lấy chu kỳ: DMAC cưỡng bức CPU treo tạm thời từng chu kỳ BUS để thực hiện truyền một từ dữ liệu
DMA trong suốt: DMAC nhận biết những chu kỳ nào CPU không sử dụng BUS thì chiếm BUS để trao đổi dữ liệu (DMAC lấy lén chu kỳ)
Đặc điểm DM
CPU không tham gia trong quá trình trao đổi dữ liệu
DMAC điều khiển trao đổi dữ liệu giữa bộ nhớ chính và Module vào ra với tốc độ nhanh.
Phù hợp với yêu cầu trao đổi mảng dữ liệu có kích thước lớn.