Tải bản đầy đủ

Bài giảng Kiến trúc máy tính: Chương 6 (Giao diện bộ xử lý với I/O)

10/12/2017

Bộ xử lí dùng 2 cách để liên lạc với các bộ phận vào ra:
+ cách thứ nhất: cách này thường được sử dụng, là cách dùng một vùng
địa chỉ của bộ nhớ làm vùng địa chỉ của các ngoại vi. Khi đọc hay viết vào vùng địa
chỉ này của bộ nhớ là liên hệ đến các ngoại vi.

Cấu trúc hệ thống vào ra

1


10/12/2017

Tất cả các thiết bị ngoại vi đều chậm hơn CPU và RAM. Vì
vậy cần có các mô-đun vào ra nối ghép các thiết bị ngoại vi
với CPU và bộ nhớ chính.

Mô-đun vào ra:
Chức năng:
Điều khiển và định thời.

Trao đổi thông tin với CPU.
Trao đổi thông tin với các thiết bị ngoại vi.
Đệm giữa bên trong máy tính với các thiết
bị ngoại vi.
Phát hiện lỗi của các thiết bị ngoại vi.

Cấu trúc chung của mô-đun vào ra

2


10/12/2017

Các thành phần của mô-đun vào ra:
Thanh ghi đệm dữ kiệu: đệm dữ liệu trong quá trình
trao đổi.
Các cổng vào ra (I/O port): kết nối các thiết bị ngoại
vi, mỗi cổng có một địa chỉ xác định.
Thanh ghi trạng thái/điều khiển: lưu giữ thông tin
trạng thái/điều khiển cho các cổng vào ra.
Khối logic điều khiển: điều khiển các mô-đun vào ra.

Kết nối CPU
CPU phát địa chỉ đến bộ nhớ hay mô-đun vào ra.
Đọc lệnh và dữ kiệu.
Đưa dữ liệu ra sau khi xử lí.
Phát tín hiệu điều khiển đến mô-đun nhớ hay mô-đun vào
ra.
Nhận tín hiệu ngắt.

3


10/12/2017

+ Cách thứ hai, dùng mã lệnh riêng biệt cho vào/ra (tức là
có các lệnh vào/ra riêng, không trùng với lệnh đọc hay viết
vào ô nhớ).

Trong đó có 2 phương pháp chính để liên


lạc:
Dùng phương pháp thăm dò (polling)
Dùng yêu cầu ngắt IRQ (Interrupt
ReQuest)
Dùng bộ xử lí DMA (Direct Memory
Access)

Bộ xử lý phát sinh một lệnh I/O đến các đơn vị I/O, sau đó,
nó chờ trong trạng thái "busy" cho đến khi thao tác này
hoàn tất trước khi tiếp tục xử lý.

Bộ xử lý phát sinh một lệnh I/O đến các đơn vị I/O, sau
đó, nó tiếp tục việc xử lí cho tới khi nhận được một ngắt
từ đơn vị I/O báo là đã hoàn tất, nó tạm ngưng việc xử lý
hiện tại để chuyển qua xử lí ngắt.

4


10/12/2017

DMA là một kỹ thuật chuyển dữ liệu nhanh từ một card thiết bị
tới bộ nhớ, từ bộ nhớ ra card thiết bị, hoặc trong một vài
trường hợp từ một vị trí trong bộ nhớ tới một vị trí khác. Việc
chuyển theo DMA rất quan trọng vì nó không yêu cầu đến sự
thực thi của CPU. Chuyển theo DMA được thực hiện bằng cách
lập trình một chip có tên là bộ điều khiển DMA (gọi ngắn gọn là
DMAC), chip đó nằm trên bo mạch hệ thống của mọi máy PC.
Mỗi lần bộ điều khiển được khởi động và quá trình chuyển dữ
liệu bắt đầu, CPU được tự do và làm việc khác trong khi DMAC
tiếp tục thực hiện chuyển dữ liệu

5


10/12/2017

Khi không dùng DMA

Khi dùng DMA

Khi không có DMA, dữ liệu từ disk phải đưa lên bus, chuyển tới CPU,
sau đó CPU phải đưa lên bus một lần nữa mới chuyển tới memory.
Khi DMA hoạt động, DMA sẽ đạt dữ liệu từ Disk lên bus và chuyển
thằng tới Memory mà không qua CPU.

6


10/12/2017

Chip DMA (DMAC) được sử dụng trong phần lớn các máy PC là chip
có ký hiệu 8237A hoặc tương đương. Các dòng máy Micro Channel và
EISA đã sửa đổi kỹ thuật DMA tạo ra một chip riêng có các chức năng
hơn hẳn 8237A, nhưng có rất ít chương trình điều khiển thiết bị tận
dụng được những ưu điểm mở rộng đó. Dòng máy IBM-XT chỉ sử dụng
một chip 8237A lập trình được cung cấp 4 kênh DMA riêng rẽ, đánh số
từ 0 đến 3. Dòng máy IBM-AT (chiếm phần lớn thị trường máy PC hiện
nay) sử dụng 2 chip 8237A cung cấp 8 kênh DMA độc lập đánh số từ 0
đến 7. Chỉ có 7 trong số 8 kênh DMA sử dụng được vì một kênh (kênh
4) được sử dụng để liên kết hai bộ điều khiển với nhau sao cho chúng
có thể làm việc như một đơn vị thống nhất. Kênh 0 đến 3 chuyển 8 bit
dữ liệu cùng một lúc và có thể lưu 64KB chỉ trong một lần hoạt động,
trong khi kênh 5 đến 7 chuyển 16 bit và có thể chuyển được 128KB
trong một lần hoạt động.

7


10/12/2017

Giống như bộ điều khiển ngắt, nơi nhận yêu cầu ngắt từ các
thiết bị thông qua đường IRQ, một DMAC nhận yêu cầu DMA
thông qua đường DMA request (DREQ). Chip 8237A cung cấp
một vài phương thức và phương pháp hành động khác nhau, tuy
nhiên một quá trình chuyển điển hình từ thiết bị tới bộ nhớ diễn ra
như sau:
DMAC được lập trình đầu tiên với địa chỉ của bộ nhớ sẽ ghi
dữ liệu và số byte được chuyển. Khi thiết bị đã sẵn sàng bắt đầu
quá trình chuyển, nó kích hoạt đường DREQ để kết nối với DMA.
Sau khi được CPU cho phép điều khiển đường truyền, DMAC
đưa ra địa chỉ bộ nhớ và tạo ra tín hiệu để một byte (hoặc một từ)
dữ liệu được đọc từ thiết bị và ghi vào vùng được chỉ định trong
bộ nhớ. Sau đó nó cập nhật địa chỉ bộ nhớ cho byte tiếp theo và
lặp lại quá trình trên cho tới khi toàn bộ dữ liệu được chuyển
hoàn tất. Dựa trên cách bộ điều khiển được lập trình, mỗi byte
được chuyển có thể yêu cầu một tín hiệu DREQ riêng rẽ (phương
thức chuyển đơn) hoặc chỉ một tín hiệu có thể khởi động tất cả
quá trình truyền (phương thức chuyển khối hoặc theo yêu cầu).

Điểm khác nhau cơ bản là:
CPU dùng để thực hiện mã (code)
DMAC dùng để chuyển dữ liệu
Một cách tốt để hiểu sự khác nhau trên là minh họa các quá trình trên như
là một cuộc chơi bóng ném. CPU là người chơi ném bóng với hai người
khác được gọi là A và B. Để chuyển bóng từ A tới B, CPU phải bắt quả bóng
do A ném và tung nó cho B. DMA, theo một cách khác, sẽ nói A tung trực
tiếp quả bóng cho B. Trong lúc ấy, CPU có thể làm các công việc khác như
khởi động cầu thủ tiếp theo.

8


10/12/2017

Sau khi bộ điều khiển đã đọc toàn bộ dữ liệu từ thiết bị vào buffer của nó
và kiểm tra checksum. Bộ điều khiển chuyển byte đầu tiên vào bộ nhớ
chính tại địa chỉ được mô tả bởi địa chỉ bộ nhớ DMA. Sau đó nó tăng địa
chỉ DMA và giảm số bytes phải chuyển. Quá trình này lập cho tới khi số
bytes phải chuyển bằng 0, và bộ điều khiển tạo một ngắt. Như vậy không
cần phải copy khối vào trong bộ nhớ, nó đã hiện hữu trong bộ nhớ.

9



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×