2010-05-12 42 views
6

Tôi có một thẻ NIC và một HDD được kết nối trên các khe PCIe trong một máy Linux. Lý tưởng nhất, tôi muốn gói các gói tin đến ổ cứng mà không liên quan đến CPU, hoặc liên quan đến nó tối thiểu. Có thể thiết lập truyền thông trực tiếp dọc theo bus PCI như thế không? Có ai có con trỏ như những gì để đọc lên trên để bắt đầu vào một dự án như thế này?Giao tiếp trực tiếp giữa hai thiết bị PCI

Cảm ơn tất cả.

+0

Bạn đang sử dụng bất kỳ chương trình nào cho điều này? – Jonas

+0

Có. Không có gì được viết ra, nhưng tôi giả định nó sẽ ở C. Tôi chỉ tự hỏi liệu nó có thể giao tiếp trực tiếp như thế không. – mindloss

Trả lời

2

Giả sử cả thẻ NIC và HDD là Điểm kết thúc (hoặc Điểm cuối kế thừa), bạn không thể chuyển lưu lượng truy cập mà không liên quan đến Root Complex (CPU).

PCIe, không giống như PCI hoặc PCI-X, không phải là bus mà là một liên kết, do đó bất kỳ giao dịch nào từ thiết bị Endpoint (nói NIC) sẽ phải đi qua Root Complex (CPU) để nhánh (HDD).

6

Không chắc chắn nếu bạn đang hỏi về PCI hoặc PCIe. Bạn đã sử dụng cả hai cụm từ và câu trả lời là khác nhau cho mỗi cụm từ.

Nếu bạn đang nói về một chiếc xe buýt PCI cũ: Câu trả lời là "có". Hội đồng quản trị để hội đồng quản trị DMA là doable. Các bo mạch quay video có thể đưa các khung video DMA trực tiếp vào bộ nhớ cạc đồ hoạ của bạn chẳng hạn.

Trong ví dụ của bạn, thẻ video có thể DMA trực tiếp đến thiết bị lưu trữ. Tuy nhiên, dữ liệu sẽ khá "thô". NIC của bạn sẽ không có khái niệm về một hệ thống tập tin chẳng hạn. Bạn cũng cần đảm bảo rằng bạn có thể lập trình công cụ DMA của NIC để nằm trong giới hạn của thanh ghi bộ điều khiển SATA của bạn. Bạn không muốn đi ra khỏi cuối của BAR!

Nếu bạn đang nói về một chiếc xe buýt PCIe hiện đại: Câu trả lời là "thường không, nhưng nó phụ thuộc". Giao dịch bus ngang hàng là một điều thú vị trong PCI Express Spec. Các thiết bị gốc phức tạp không cần thiết để hỗ trợ nó.

Trong thử nghiệm, DMA ngang hàng sẽ hoạt động, nếu thiết bị của bạn ở phía sau công tắc PCIe (không được cắm trực tiếp vào bo mạch chủ). Tuy nhiên, nếu thiết bị của bạn được kết nối trực tiếp với chipset (Root Complex), DMA ngang hàng sẽ không hoạt động, ngoại trừ một số trường hợp đặc biệt. Trường hợp đặc biệt đáng chú ý nhất sẽ là ví dụ quay video mà tôi đã đề cập trước đó. Các trường hợp đặc biệt được đề cập trong datasheets chipset.

Chúng tôi đã thử nghiệm PCIe DMA ngang hàng với một vài chipset Intel và AMD khác nhau và tìm thấy hành vi nhất quán. Đã không thử nghiệm các thế hệ chipset mới nhất. (Chúng tôi đã thảo luận về việc thiếu sự hỗ trợ PCIe DMA ngang hàng với Intel, không chắc chắn phản hồi của chúng tôi có ảnh hưởng đến bộ phận Kỹ thuật của họ hay không.)

Các vấn đề liên quan