Vietnamese (machine translation)

Lưu ý

Mục đích của file này là để độc giả tiếng Việt có thể đọc và hiểu tài liệu nhân kernel dễ dàng hơn, không phải để tạo ra một nhánh tài liệu riêng. Nếu bạn có bất kỳ nhận xét hoặc cập nhật nào cho file này, vui lòng thử cập nhật file tiếng Anh gốc trước. Nếu bạn thấy có sự khác biệt giữa bản dịch và bản gốc, hoặc có vấn đề về bản dịch, vui lòng gửi góp ý hoặc patch cho người dịch của file này, hoặc nhờ người bảo trì và người review tài liệu tiếng Việt giúp đỡ.

Bản gốc:

Uacce (Unified/User-space-access-intended Accelerator Framework)

Người dịch:

Google Translate (machine translation)

Phiên bản gốc:

8541d8f725c6

Cảnh báo

Tài liệu này được dịch tự động bằng máy và chưa được review bởi người dịch. Nội dung có thể không chính xác hoặc khó hiểu ở một số chỗ. Khi có sự khác biệt với bản gốc, bản gốc luôn là chuẩn. Bản dịch chất lượng cao (được review) được đặt trong thư mục vi_VN/.

Uacce (Khung tăng tốc hợp nhất/dành cho người dùng truy cập vào không gian)

Giới thiệu

Mục tiêu của Uacce (Khung tăng tốc hợp nhất/dành cho người dùng truy cập vào không gian) là cung cấp Địa chỉ ảo được chia sẻ (SVA) giữa các bộ tăng tốc và quy trình. Vì vậy, máy gia tốc có thể truy cập bất kỳ cấu trúc dữ liệu nào của cpu chính. Điều này khác với việc chia sẻ dữ liệu giữa CPU và thiết bị io, chia sẻ chỉ nội dung dữ liệu chứ không phải địa chỉ. Do địa chỉ thống nhất, phần cứng và không gian người dùng của quy trình có thể chia sẻ cùng một địa chỉ ảo trong giao tiếp. Uacce lấy bộ tăng tốc phần cứng làm bộ xử lý không đồng nhất, trong khi IOMMU chia sẻ cùng các bảng trang CPU và kết quả là có cùng một bản dịch từ va đến pa.

__________________________ __________________________

ZZ0000ZZ ZZ0001ZZ ZZ0002ZZ ZZ0003ZZ ZZ0004ZZ ZZ0005ZZ

ZZ0000ZZ

ZZ0001ZZ và V V

__________ __________

ZZ0002ZZ ZZ0003ZZ ZZ0004ZZ ZZ0005ZZ ZZ0006ZZ ZZ0007ZZ

ZZ0008ZZ ZZ0009ZZ V pa V pa

ZZ0010ZZ ZZ0011ZZ ZZ0012ZZ

Ngành kiến ​​​​trúc

Uacce là mô-đun hạt nhân, chịu trách nhiệm về iommu và chia sẻ địa chỉ. Trình điều khiển và thư viện người dùng được gọi là WarpDrive.

Thiết bị uacce, được xây dựng xung quanh IOMMU SVA API, có thể truy cập nhiều không gian địa chỉ, bao gồm cả không gian không có PASID.

Một khái niệm ảo, hàng đợi, được sử dụng để liên lạc. Nó cung cấp một Giao diện giống FIFO. Và nó duy trì một không gian địa chỉ thống nhất giữa ứng dụng và tất cả phần cứng liên quan.

___________________ ________________

Người dùng ZZ0000ZZ API ZZ0001ZZ ZZ0002ZZ -----------> ZZ0003ZZ ZZ0004ZZ ZZ0005ZZ

ZZ0006ZZ ZZ0007ZZ ZZ0008ZZ ZZ0009ZZ ZZ0010ZZ v |

___________________ _________ |

ZZ0011ZZ ZZ0012ZZ | bộ nhớ mmap ZZ0013ZZ ZZ0014ZZ | giao diện r/w ZZ0015ZZ ZZ0016ZZ | ZZ0017ZZ |

ZZ0018ZZ | Đăng ký ZZ0019ZZ | ZZ0020ZZ | ZZ0021ZZ | ZZ0022ZZ ZZ0023ZZ ZZ0024ZZ ZZ0025ZZ

------------- ZZ0026ZZ ZZ0027ZZ |
ZZ0028ZZ ZZ0029ZZ |

ZZ0030ZZ | V. | ___________________ ZZ0031ZZ | ----------------- ZZ0032ZZ

ZZ0033ZZ

Nó hoạt động như thế nào

Uacce sử dụng mmap và IOMMU để chơi trò lừa.

Uacce tạo chrdev cho mọi thiết bị đã đăng ký với nó. Hàng đợi mới là được tạo khi ứng dụng người dùng mở chrdev. Bộ mô tả tập tin được sử dụng với tư cách là người dùng xử lý hàng đợi. Thiết bị tăng tốc tự thể hiện dưới dạng đối tượng Uacce, xuất dưới dạng một chrdev vào không gian người dùng. Ứng dụng người dùng giao tiếp với phần cứng bằng ioctl (dưới dạng đường dẫn điều khiển) hoặc bộ nhớ chia sẻ (dưới dạng đường dẫn dữ liệu).

Đường dẫn điều khiển đến phần cứng là thông qua thao tác tệp, trong khi đường dẫn dữ liệu là thông qua không gian mmap của hàng đợi fd.

Không gian địa chỉ tệp hàng đợi:

/**
  • enum uacce_qfrt: kiểu qfrt

  • @UACCE_QFRT_MMIO: vùng mmio của thiết bị

  • @UACCE_QFRT_DUS: vùng chia sẻ người dùng thiết bị

*/

enum uacce_qfrt {

UACCE_QFRT_MMIO = 0, UACCE_QFRT_DUS = 1,

};

Tất cả các vùng đều là tùy chọn và khác nhau tùy theo loại thiết bị. Mỗi vùng chỉ có thể được thêm một lần, nếu không -EEXIST sẽ trả về.

Vùng mmio của thiết bị được ánh xạ tới không gian mmio phần cứng. Nói chung là được sử dụng cho chuông cửa hoặc thông báo khác cho phần cứng. Nó không đủ nhanh dưới dạng kênh dữ liệu.

Vùng chia sẻ người dùng thiết bị được sử dụng để chia sẻ bộ đệm dữ liệu giữa tiến trình người dùng và thiết bị.

Thanh ghi Uacce API

Thanh ghi API được xác định trong uacce.h.

cấu trúc uacce_interface {

tên char[UACCE_MAX_NAME_SIZE]; cờ int không dấu; const struct uacce_ops *ops;

};

Theo khả năng của IOMMU, cờ uacce_interface có thể là:

/**
  • Cờ thiết bị UACCE:

  • UACCE_DEV_SVA: Địa chỉ ảo được chia sẻ

  • Hỗ trợ PASID

  • Hỗ trợ lỗi trang thiết bị (PCI PRI hoặc SMMU Stall)

*/

#define UACCE_DEV_SVA BIT(0)

cấu trúc uacce_device *uacce_alloc(struct device *parent,

cấu trúc uacce_interface *giao diện);

int uacce_register(struct uacce_device *uacce); void uacce_remove(struct uacce_device *uacce);

kết quả uacce_register có thể là:

Một. Nếu mô-đun uacce không được biên dịch, ERR_PTR(-ENODEV)

  1. Thành công với những lá cờ mong muốn

  2. Thành công với những lá cờ được đàm phán chẳng hạn

uacce_interface.flags = UACCE_DEV_SVA nhưng uacce->flags = ~UACCE_DEV_SVA

Vì vậy, trình điều khiển người dùng cần kiểm tra giá trị trả về cũng như các cờ uacce-> đã thương lượng.

Trình điều khiển người dùng

Không gian mmap của tệp hàng đợi sẽ cần trình điều khiển người dùng để kết nối liên lạc giao thức. Uacce cung cấp một số thuộc tính trong sysfs để trình điều khiển người dùng sử dụng kết hợp máy gia tốc phù hợp cho phù hợp. Thêm chi tiết trong Tài liệu/ABI/testing/sysfs-driver-uacce.