Truy cập bộ nhớ trực tiếp (DMA) trong kiến ​​trúc máy tính

Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề





Để thực hiện một chương trình máy tính, nó đòi hỏi sự hoạt động đồng bộ của nhiều thành phần của máy tính. Ví dụ, Bộ xử lý - cung cấp thông tin điều khiển cần thiết, địa chỉ… vv, bus - để chuyển thông tin và dữ liệu đến và từ bộ nhớ đến các thiết bị I / O… vv. Yếu tố thú vị của hệ thống là cách nó xử lý việc truyền thông tin giữa các bộ xử lý, bộ nhớ và các thiết bị I / O. Thông thường, các bộ xử lý kiểm soát tất cả quá trình truyền dữ liệu, ngay từ khi bắt đầu chuyển đến việc lưu trữ dữ liệu tại đích. Điều này làm tăng thêm tải cho bộ xử lý và phần lớn thời gian nó ở trạng thái lý tưởng, do đó làm giảm hiệu quả của hệ thống. Để tăng tốc độ truyền dữ liệu giữa các thiết bị I / O và bộ nhớ, bộ điều khiển DMA hoạt động như trạm chủ. Bộ điều khiển DMA truyền dữ liệu với sự can thiệp tối thiểu của bộ xử lý.

Bộ điều khiển DMA là gì?

Thuật ngữ DMA là viết tắt của truy cập bộ nhớ trực tiếp. Thiết bị phần cứng được sử dụng để truy cập bộ nhớ trực tiếp được gọi là bộ điều khiển DMA. DMA bộ điều khiển là một đơn vị điều khiển , một phần của thiết bị I / O mạch giao diện , có thể chuyển các khối dữ liệu giữa các thiết bị I / O và bộ nhớ chính với sự can thiệp tối thiểu từ bộ xử lý.




Sơ đồ bộ điều khiển DMA trong kiến ​​trúc máy tính

Bộ điều khiển DMA cung cấp giao diện giữa bus và các thiết bị đầu vào-đầu ra. Mặc dù nó truyền dữ liệu mà không có sự can thiệp của bộ xử lý, nó được kiểm soát bởi bộ xử lý. Bộ xử lý khởi tạo bộ điều khiển DMA bằng cách gửi địa chỉ bắt đầu, Số lượng từ trong khối dữ liệu và hướng truyền dữ liệu. I.e. từ các thiết bị I / O vào bộ nhớ hoặc từ bộ nhớ chính đến các thiết bị I / O. Có thể kết nối nhiều thiết bị bên ngoài với bộ điều khiển DMA.

DMA trong kiến ​​trúc máy tính

DMA trong kiến ​​trúc máy tính



Bộ điều khiển DMA chứa một đơn vị địa chỉ, để tạo địa chỉ và chọn thiết bị I / O để truyền. Nó cũng chứa đơn vị điều khiển và bộ đếm dữ liệu để lưu giữ số lượng khối được chuyển và chỉ ra hướng truyền dữ liệu. Khi quá trình truyền hoàn tất, DMA thông báo cho bộ xử lý bằng cách tăng một ngắt. Sơ đồ khối điển hình của bộ điều khiển DMA được thể hiện trong hình bên dưới.

Sơ đồ khối điển hình của bộ điều khiển DMA

Sơ đồ khối điển hình của bộ điều khiển DMA

Hoạt động của bộ điều khiển DMA

Bộ điều khiển DMA phải chia sẻ bus với bộ xử lý để thực hiện truyền dữ liệu. Thiết bị giữ bus tại một thời điểm nhất định được gọi là bus master. Khi phải thực hiện chuyển từ thiết bị I / O sang bộ nhớ hoặc phân đoạn khác, bộ xử lý sẽ dừng việc thực thi chương trình hiện tại, tăng dần chương trình bộ đếm, di chuyển dữ liệu qua ngăn xếp sau đó gửi tín hiệu chọn DMA đến bộ điều khiển DMA qua bus địa chỉ.

Nếu bộ điều khiển DMA rảnh, nó yêu cầu điều khiển bus từ bộ xử lý bằng cách nâng tín hiệu yêu cầu bus. Bộ xử lý cấp bus cho bộ điều khiển bằng cách nâng tín hiệu cấp bus, lúc này bộ điều khiển DMA là bus chính. Bộ xử lý khởi tạo bộ điều khiển DMA bằng cách gửi địa chỉ bộ nhớ, số lượng khối dữ liệu được truyền và hướng truyền dữ liệu. Sau khi gán nhiệm vụ truyền dữ liệu cho bộ điều khiển DMA, thay vì lý tưởng nhất là đợi cho đến khi hoàn thành quá trình truyền dữ liệu, bộ xử lý tiếp tục thực hiện chương trình sau khi truy xuất các lệnh từ ngăn xếp.


Truyền dữ liệu bằng DMA trong máy tính bằng DMA

Truyền dữ liệu trong máy tính bằng bộ điều khiển DMA

Bộ điều khiển DMA hiện có toàn quyền kiểm soát các bus và có thể tương tác trực tiếp với bộ nhớ và các thiết bị I / O độc lập với CPU. Nó thực hiện việc truyền dữ liệu theo các lệnh điều khiển mà bộ xử lý nhận được. Sau khi hoàn thành quá trình truyền dữ liệu, nó sẽ vô hiệu hóa tín hiệu yêu cầu bus và CPU sẽ vô hiệu hóa tín hiệu cấp bus do đó chuyển quyền điều khiển các bus đến CPU.

Khi một thiết bị I / O muốn bắt đầu truyền thì nó sẽ gửi tín hiệu yêu cầu DMA đến bộ điều khiển DMA, tín hiệu này sẽ được bộ điều khiển công nhận nếu nó rảnh. Sau đó, bộ điều khiển yêu cầu bộ xử lý cho bus, tăng tín hiệu yêu cầu bus. Sau khi nhận được tín hiệu cấp bus, nó sẽ truyền dữ liệu từ thiết bị. Đối với n bộ điều khiển DMA có kênh, n số thiết bị bên ngoài có thể được kết nối.

DMA truyền dữ liệu theo ba chế độ bao gồm các chế độ sau.

đến) Chế độ chụp : Trong chế độ này, DMA chỉ chuyển giao các bus cho CPU sau khi hoàn thành việc truyền toàn bộ dữ liệu. Trong khi đó, nếu CPU yêu cầu bus, nó phải ở trạng thái lý tưởng và chờ truyền dữ liệu.

b) Chế độ ăn cắp chu kỳ : Trong chế độ này, DMA cho phép điều khiển các bus tới CPU sau khi chuyển mỗi byte. Nó liên tục đưa ra yêu cầu kiểm soát bus, thực hiện chuyển một byte và trả về bus. Bởi vì CPU này không phải đợi lâu nếu nó cần một bus cho tác vụ ưu tiên cao hơn.

c) Chế độ trong suốt: Ở đây, DMA chỉ truyền dữ liệu khi CPU đang thực hiện lệnh mà không yêu cầu sử dụng bus.

Bộ điều khiển DMA 8237

  • 8237 có 4 kênh I / O cùng với việc tăng số lượng kênh một cách linh hoạt.
  • Mỗi kênh có thể được lập trình riêng và có địa chỉ 64k và khả năng dữ liệu.
  • Khối điều khiển thời gian, khối điều khiển lệnh chương trình, khối mã hóa ưu tiên là ba khối chính của 8237A.
  • Các tín hiệu điều khiển thời gian bên trong và bên ngoài được điều khiển bởi khối điều khiển thời gian.
  • Các lệnh khác nhau do bộ vi xử lý đưa ra cho DMA được giải mã bằng khối điều khiển lệnh chương trình.
  • Kênh nào phải được ưu tiên cao nhất do mức độ ưu tiên quyết định khối mã hóa .
    8237A có 27 thanh ghi bên trong.

8237A hoạt động theo hai chu kỳ - Chu kỳ lý tưởng và chu kỳ hoạt động, trong đó mỗi chu kỳ chứa 7 trạng thái riêng biệt bao gồm một chu kỳ đồng hồ.

S0- Trạng thái đầu tiên, nơi bộ điều khiển đã yêu cầu bus và chờ thông báo từ bộ xử lý.

S1, S2, S3, S4 được gọi là trạng thái làm việc của 8237A nơi diễn ra quá trình truyền dữ liệu thực tế. Nếu cần thêm thời gian cho các trạng thái chờ chuyển giao, SW được thêm vào giữa các trạng thái này.

Đối với bộ nhớ - chuyển bộ nhớ phải được thực hiện, đọc từ bộ nhớ và ghi vào bộ nhớ. Tám tiểu bang được yêu cầu cho một lần chuyển. Bốn trạng thái đầu tiên với các chỉ số con S11, S12, S13, S14 thực hiện chuyển đọc từ bộ nhớ và bốn trạng thái tiếp theo S21, S22, S23, S24 là để truyền ghi vào bộ nhớ.

DMA chuyển sang trạng thái lý tưởng khi không có kênh nào yêu cầu dịch vụ và thực hiện trạng thái SI. SI là trạng thái không hoạt động trong đó DMA không hoạt động cho đến khi nó nhận được yêu cầu. Ở trạng thái này, DMA ở trong điều kiện chương trình mà bộ xử lý có thể lập trình DMA.

Khi DMA ở trạng thái lý tưởng và không nhận được yêu cầu kênh nào nữa, nó xuất tín hiệu HRQ đến bộ xử lý và chuyển sang trạng thái Hoạt động, nơi nó có thể bắt đầu truyền dữ liệu bằng chế độ liên tục, chế độ lấy cắp chu kỳ hoặc chế độ trong suốt.

8237 PinDiagram

Sơ đồ chân 8237

Bộ điều khiển DMA 8257

Khi được ghép nối với thiết bị cổng I / O Intel 8212 duy nhất, bộ điều khiển DMA 8257 tạo thành 4 kênh hoàn chỉnh Bộ điều khiển DMA . Khi nhận được yêu cầu chuyển, bộ điều khiển 8257-

  • Nhận quyền điều khiển bus hệ thống từ bộ xử lý.
  • Thiết bị ngoại vi được kết nối với kênh ưu tiên cao nhất được xác nhận.
  • Các bit ít quan trọng nhất của địa chỉ bộ nhớ được di chuyển qua các đường địa chỉ A0-A7 của bus hệ thống.
  • Điều đặc biệt nhất 8 bit của địa chỉ bộ nhớ được điều khiển đến cổng 8212 I / O thông qua các đường dữ liệu.
  • Tạo ra các tín hiệu điều khiển thích hợp để truyền dữ liệu giữa các thiết bị ngoại vi và các vị trí bộ nhớ được định địa chỉ.
  • Khi số lượng byte được chỉ định được chuyển, bộ điều khiển sẽ thông báo cho CPU kết thúc quá trình truyền bằng cách kích hoạt đầu ra đếm đầu cuối (TC).

Đối với mỗi kênh 8257 chứa hai Thanh ghi 16 bit - 1) Thanh ghi địa chỉ DMA và 2) Thanh ghi đếm đầu cuối, cần được khởi tạo trước khi một kênh được kích hoạt. Địa chỉ của vị trí bộ nhớ đầu tiên được truy cập được tải vào thanh ghi địa chỉ DMA. 14 bit thứ tự thấp hơn của giá trị được tải trong thanh ghi đếm đầu cuối cho biết số chu kỳ DMA trừ đi một trước khi kích hoạt đầu ra đếm đầu cuối. Loại hoạt động của một kênh được biểu thị bằng hai bit quan trọng nhất của thanh ghi số đầu cuối.

Sơ đồ chân 8257

Sơ đồ chân 8257

Ưu điểm và nhược điểm của bộ điều khiển DMA

Những ưu điểm và nhược điểm của bộ điều khiển DMA bao gồm những điều sau đây.

Ưu điểm

  • DMA tăng tốc hoạt động của bộ nhớ bằng cách bỏ qua sự tham gia của CPU.
  • Quá tải công việc trên CPU giảm.
  • Đối với mỗi lần chuyển, chỉ cần một vài số chu kỳ đồng hồ

Nhược điểm

  • Có thể thấy vấn đề về tính liên kết của bộ nhớ cache khi DMA được sử dụng để truyền dữ liệu.
  • Tăng giá của hệ thống.

DMA ( Truy cập bộ nhớ trực tiếp ) bộ điều khiển đang được sử dụng trong card đồ họa, card mạng, card âm thanh, v.v. DMA cũng được sử dụng để truyền nội bộ chip trong bộ xử lý đa lõi. Hoạt động ở một trong ba chế độ của nó, DMA có thể giảm tải đáng kể cho bộ xử lý. Bạn đã làm việc với chế độ nào của DMA? Chế độ nào bạn cho là hiệu quả hơn?