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:
- 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/.
Đám mây Qualcomm AI 100 (AIC100)¶
Tổng quan¶
Dòng sản phẩm Qualcomm Cloud AI 100/AIC100 (bao gồm SA9000P - một phần của Snapdragon Ride) là thẻ bộ điều hợp PCIe chứa SoC ASIC chuyên dụng cho mục đích của việc vận hành Deep Learning trí tuệ nhân tạo (AI) một cách hiệu quả khối lượng công việc suy luận. Họ là những người tăng tốc AI.
Giao diện PCIe của AIC100 có khả năng cung cấp tốc độ PCIe Gen4 trên tám làn (x8). Một SoC riêng lẻ trên thẻ có thể có tới 16 NSP để chạy khối lượng công việc. Mỗi SoC có một CPU quản lý A53. Trên thẻ có thể có tới 32 GB DDR.
Nhiều thẻ AIC100 có thể được lưu trữ trong một hệ thống duy nhất để mở rộng quy mô tổng thể hiệu suất. Thẻ AIC100 có khả năng đa người dùng và có thể thực hiện khối lượng công việc từ nhiều người dùng một cách đồng thời.
Mô tả phần cứng¶
Thẻ AIC100 bao gồm AIC100 SoC, DDR trên thẻ và một bộ linh tinh thiết bị ngoại vi (PMIC, v.v.).
Thẻ AIC100 có thể là hệ số dạng PCIe HHHL (thẻ PCIe truyền thống), hoặc thẻ Dual M.2. Cả hai đều sử dụng PCIe để kết nối với hệ thống máy chủ.
Là điểm cuối/bộ chuyển đổi PCIe, AIC100 sử dụng VendorID(VID)/ tiêu chuẩn Kết hợp DeviceID(DID) để nhận dạng duy nhất chính nó với máy chủ. AIC100 sử dụng tiêu chuẩn Qualcomm VID (0x17cb). Tất cả các SKU AIC100 đều sử dụng giống nhau AIC100 DID (0xa100).
AIC100 không triển khai FLR (đặt lại mức chức năng).
AIC100 triển khai MSI nhưng không triển khai MSI-X. AIC100 thích 17 MSI hơn hoạt động (1 cho MHI, 16 cho Cầu DMA). Có thể quay trở lại 1 MSI trong những tình huống mà việc đặt trước 32 MSI là không khả thi.
Là một thiết bị PCIe, AIC100 sử dụng BAR để cung cấp giao diện máy chủ cho thiết bị phần cứng. AIC100 cung cấp BAR 3, 64 bit.
BAR đầu tiên có kích thước 4K và hiển thị giao diện MHI cho máy chủ.
BAR thứ hai có kích thước 2M và hiển thị giao diện Cầu DMA cho chủ nhà.
BAR thứ ba có kích thước thay đổi dựa trên từng AIC100 riêng lẻ cấu hình, nhưng mặc định là 64K. BAR này hiện không có mục đích.
Từ góc độ máy chủ, AIC100 có một số thành phần phần cứng chính -
MHI (Giao diện máy chủ Modem)
QSM (Trình quản lý dịch vụ QAIC)
NSP (Bộ xử lý tín hiệu thần kinh)
Cầu DMA
DDR
MHI¶
AIC100 có một giao diện MHI qua PCIe. Bản thân MHI được ghi lại tại MHI MHI là cơ chế mà máy chủ sử dụng để giao tiếp với QSM. Ngoại trừ dữ liệu khối lượng công việc qua Cầu DMA, tất cả tương tác với thiết bị xảy ra thông qua MHI.
QSM¶
Quản lý dịch vụ QAIC. Đây là ARM A53 CPU chạy hệ thống chính phần sụn của thẻ và thực hiện các nhiệm vụ quản lý trên thẻ. Nó cũng giao tiếp với máy chủ thông qua MHI. Mỗi AIC100 có một trong những cái này.
NSP¶
Bộ xử lý tín hiệu thần kinh. Mỗi chiếc AIC100 có tới 16 chiếc như vậy. Đây là bộ xử lý chạy khối lượng công việc trên AIC100. Mỗi NSP là một hình lục giác Qualcomm (Q6) DSP với HVX và HMX. Mỗi NSP chỉ có thể chạy một khối lượng công việc tại một thời điểm, nhưng nhiều NSP có thể được gán cho một khối lượng công việc duy nhất. Vì mỗi NSP chỉ có thể chạy một khối lượng công việc, AIC100 bị giới hạn ở 16 khối lượng công việc đồng thời. Khối lượng công việc “lập lịch” nằm trong tầm nhìn của máy chủ. AIC100 không tự động timelice.
Cầu DMA¶
Cầu DMA là công cụ DMA tùy chỉnh để quản lý luồng dữ liệu trong và ngoài khối lượng công việc. AIC100 có một trong số này. Cầu DMA có 16 các kênh, mỗi kênh bao gồm một tập hợp các FIFO yêu cầu/phản hồi. Mỗi hoạt động khối lượng công việc được chỉ định một kênh Cầu nối DMA duy nhất. Cầu DMA lộ diện các thanh ghi phần cứng để quản lý FIFO (con trỏ đầu/đuôi), nhưng yêu cầu máy chủ bộ nhớ để lưu trữ FIFO.
DDR¶
AIC100 có DDR trên thẻ. Tổng cộng, một chiếc AIC100 có thể có tới 32 GB DDR. DDR này được sử dụng để lưu trữ khối lượng công việc, dữ liệu cho khối lượng công việc và được sử dụng bởi QSM để quản lý thiết bị. NSP được cấp quyền truy cập vào các phần của DDR bằng cách QSM. Máy chủ không có quyền truy cập trực tiếp vào DDR và phải thực hiện yêu cầu QSM truyền dữ liệu tới DDR.
Luồng sử dụng cấp cao¶
AIC100 là bộ tăng tốc có thể lập trình, nhiều người dùng, thường được sử dụng để chạy mạng lưới thần kinh ở chế độ suy luận để thực hiện các hoạt động AI một cách hiệu quả. AIC100 không dành cho việc đào tạo mạng lưới thần kinh. AIC100 có thể được sử dụng cho khối lượng công việc tính toán chung.
Giả sử người dùng muốn sử dụng AIC100, họ sẽ làm theo các bước sau:
Biên dịch khối lượng công việc thành ELF nhắm mục tiêu (các) NSP
Đưa ra yêu cầu tới QSM để tải khối lượng công việc và các tạo phẩm liên quan vào thiết bị DDR
Đưa ra yêu cầu tới QSM để kích hoạt khối lượng công việc trên một nhóm NSP nhàn rỗi
Đưa ra yêu cầu tới DMA Bridge để gửi dữ liệu đầu vào tới khối lượng công việc cần xử lý được xử lý và các yêu cầu khác để nhận dữ liệu đầu ra đã được xử lý từ khối lượng công việc.
Khi khối lượng công việc không còn cần thiết nữa, hãy yêu cầu QSM để hủy kích hoạt khối lượng công việc, do đó đưa NSP trở lại trạng thái không hoạt động.
Khi khối lượng công việc và các hiện vật liên quan không còn cần thiết cho tương lai phiên, hãy đưa ra yêu cầu tới QSM để dỡ dữ liệu khỏi DDR. Điều này giải phóng DDR để người dùng khác sử dụng.
Luồng khởi động¶
AIC100 sử dụng luồng khởi động không flash, có nguồn gốc từ MSM của Qualcomm.
Khi AIC100 được bật nguồn lần đầu tiên, nó sẽ bắt đầu thực thi PBL (Bộ tải khởi động chính) từ ROM. PBL liệt kê liên kết PCIe và khởi tạo BHI (Boot Host Giao diện) thành phần của MHI.
Sử dụng BHI, máy chủ trỏ PBL đến vị trí của SBL (Bộ tải khởi động phụ) hình ảnh. PBL lấy hình ảnh từ máy chủ, xác thực nó và bắt đầu thực hiện SBL.
SBL khởi tạo MHI và sử dụng MHI để thông báo cho máy chủ rằng thiết bị đã nhập giai đoạn SBL. SBL thực hiện một số thao tác:
SBL khởi tạo phần lớn phần cứng (mọi thứ PBL chưa được khởi tạo), bao gồm DDR.
SBL giảm tải bootlog cho máy chủ.
SBL đồng bộ hóa dấu thời gian với máy chủ để ghi nhật ký trong tương lai.
SBL sử dụng giao thức Sahara để lấy hình ảnh chương trình cơ sở thời gian chạy từ chủ nhà.
Khi SBL đã lấy và xác thực chương trình cơ sở thời gian chạy, nó sẽ đưa NSP ra ngoài thiết lập lại và nhảy vào QSM.
QSM sử dụng MHI để thông báo cho máy chủ rằng thiết bị đã bước vào giai đoạn QSM (AMSS theo thuật ngữ MHI). Tại thời điểm này, thiết bị AIC100 đã có đầy đủ chức năng và sẵn sàng xử lý khối lượng công việc.
Thành phần không gian người dùng¶
Trình biên dịch¶
Có thể tìm thấy trình biên dịch mở cho AIC100 dựa trên LLVM ngược dòng tại: ZZ0000ZZ
Trình điều khiển chế độ người dùng (UMD)¶
Bạn có thể tìm thấy UMD mở có giao diện với trình điều khiển kernel qaic tại: ZZ0000ZZ
máy xúc sa mạc Sahara¶
Bạn có thể tìm thấy triển khai mở của giao thức Sahara được gọi là kickstart tại: ZZ0000ZZ
Kênh MHI¶
AIC100 xác định một số kênh MHI cho các mục đích khác nhau. Đây là một danh sách của các kênh được xác định và cách sử dụng của chúng.
++------------------+----------+---------------------------------------+ ID ZZ0000ZZ ZZ0001ZZ Mục đích | +============================================================================================================================== ZZ0002ZZ 0 & 1 ZZ0003ZZ Mọi dữ liệu được gửi tới thiết bị trên này | Kênh ZZ0004ZZ ZZ0005ZZ được gửi trở lại máy chủ. | ++------------------+----------+---------------------------------------+ ZZ0006ZZ 2 & 3 ZZ0007ZZ Được SBL sử dụng để lấy thời gian chạy | Phần mềm ZZ0008ZZ ZZ0009ZZ từ máy chủ. | ++------------------+----------+---------------------------------------+ ZZ0010ZZ 4 & 5 ZZ0011ZZ Được sử dụng để liên lạc với QSM qua | Giao thức ZZ0012ZZ ZZ0013ZZ DIAG. | ++------------------+----------+---------------------------------------+ ZZ0014ZZ 6 & 7 ZZ0015ZZ Dùng để thông báo cho máy chủ của hệ thống con | Sự kiện khởi động lại ZZ0016ZZ ZZ0017ZZ và giảm tải SSR | ZZ0018ZZ ZZ0019ZZ gặp sự cố. | ++------------------+----------+---------------------------------------+ ZZ0020ZZ 8 & 9 ZZ0021ZZ Được sử dụng cho Hệ thống con gỡ lỗi Qualcomm. | ++------------------+----------+---------------------------------------+ ZZ0022ZZ 10 & 11 ZZ0023ZZ Được sử dụng để Điều khiển Mạng Nơ-ron | Giao thức ZZ0024ZZ ZZ0025ZZ (NNC). Đây là chính | Kênh ZZ0026ZZ ZZ0027ZZ giữa máy chủ và QSM cho | ZZ0028ZZ ZZ0029ZZ quản lý khối lượng công việc. | ++------------------+----------+---------------------------------------+ ZZ0030ZZ 12 & 13 ZZ0031ZZ Được sử dụng bởi SBL để gửi bootlog tới | ZZ0032ZZ ZZ0033ZZ máy chủ. | ++------------------+----------+---------------------------------------+ ZZ0034ZZ 14 & 15 ZZ0035ZZ Được sử dụng để thông báo cho máy chủ về Độ tin cậy,| ZZ0036ZZ ZZ0037ZZ Khả năng tiếp cận, khả năng bảo trì (RAS) | Sự kiện ZZ0038ZZ ZZ0039ZZ. | ++------------------+----------+---------------------------------------+ ZZ0040ZZ 16 & 17 ZZ0041ZZ Dùng để lấy/đặt nguồn/nhiệt/vv | Thuộc tính ZZ0042ZZ ZZ0043ZZ. | ++------------------+----------+---------------------------------------+ ZZ0044ZZ 18 & 19 ZZ0045ZZ Không được sử dụng. | ++------------------+----------+---------------------------------------+ ZZ0046ZZ 20 & 21 ZZ0047ZZ Được sử dụng để đồng bộ hóa dấu thời gian trong | ZZ0048ZZ ZZ0049ZZ nhật ký phía thiết bị với thời gian lưu trữ | Nguồn ZZ0050ZZ ZZ0051ZZ. | ++------------------+----------+---------------------------------------+ ZZ0052ZZ 22 & 23 ZZ0053ZZ Được sử dụng để đồng bộ hóa định kỳ | Dấu thời gian ZZ0054ZZ ZZ0055ZZ trong nhật ký phía thiết bị với| ZZ0056ZZ ZZ0057ZZ nguồn thời gian của máy chủ. | ++------------------+----------+---------------------------------------+ ZZ0058ZZ 24 & 25 ZZ0059ZZ AF_QIPCRTR máy khách và máy chủ. | ++------------------+----------+---------------------------------------+
Cầu DMA¶
Tổng quan¶
Cầu DMA là một trong những giao diện chính kết nối với máy chủ từ thiết bị (cái còn lại là MHI). Là một phần của việc kích hoạt khối lượng công việc để chạy trên NSP, QSM gán cho mạng đó một kênh Cầu DMA. Kênh cầu nối DMA của khối lượng công việc (viết tắt là DBC) chỉ dành cho việc sử dụng khối lượng công việc đó và không được chia sẻ với khối lượng công việc khác.
Mỗi DBC là một cặp FIFO quản lý dữ liệu vào và ra khối lượng công việc. một FIFO là yêu cầu FIFO. FIFO khác là FIFO phản hồi.
Mỗi DBC chứa 4 thanh ghi trong phần cứng:
Yêu cầu con trỏ đầu FIFO (bù 0x0). Chỉ được đọc bởi máy chủ. Cho biết mục mới nhất trong FIFO mà thiết bị đã sử dụng.
Yêu cầu con trỏ đuôi FIFO (offset 0x4). Đọc/ghi bởi máy chủ. Máy chủ tăng thanh ghi này để thêm các mục mới vào FIFO.
Con trỏ đầu phản hồi FIFO (offset 0x8). Đọc/ghi bởi máy chủ. chỉ ra vật phẩm mới nhất trong FIFO mà chủ nhà đã sử dụng.
Phản hồi con trỏ đuôi FIFO (offset 0xc). Chỉ được đọc bởi máy chủ. Thiết bị tăng thanh ghi này để thêm các mục mới vào FIFO.
Các giá trị trong mỗi thanh ghi là các chỉ mục trong FIFO. Để có được vị trí của Phần tử FIFO được trỏ đến bởi thanh ghi: địa chỉ cơ sở FIFO + phần tử thanh ghi * kích thước.
Các thanh ghi DBC được hiển thị với máy chủ thông qua BAR thứ hai. Mỗi DBC tiêu thụ 4KB dung lượng trong BAR.
FIFO thực tế được hỗ trợ bởi bộ nhớ máy chủ. Khi gửi yêu cầu tới QSM để kích hoạt mạng, máy chủ phải tặng bộ nhớ để sử dụng cho FIFO. Do những hạn chế về ánh xạ bên trong của thiết bị, một đoạn liền kề của bộ nhớ phải được cung cấp cho mỗi DBC, nơi lưu trữ cả hai FIFO. Yêu cầu FIFO sẽ tiêu thụ phần đầu của đoạn bộ nhớ và phản hồi FIFO sẽ tiêu thụ phần cuối của đoạn bộ nhớ.
Yêu cầu FIFO¶
Phần tử FIFO yêu cầu có cấu trúc sau:
struct request_elem {
u16 req_id;
u8 seq_id;
u8 pcie_dma_cmd;
u32 reserved;
u64 pcie_dma_source_addr;
u64 pcie_dma_dest_addr;
u32 pcie_dma_len;
u32 reserved;
u64 doorbell_addr;
u8 doorbell_attr;
u8 reserved;
u16 reserved;
u32 doorbell_data;
u32 sem_cmd0;
u32 sem_cmd1;
u32 sem_cmd2;
u32 sem_cmd3;
};
Yêu cầu mô tả trường:
- req_id
ID yêu cầu. Phần tử FIFO yêu cầu và phần tử FIFO phản hồi có cùng một ID yêu cầu tham chiếu đến cùng một lệnh.
- seq_id
ID trình tự trong một yêu cầu. Bị bỏ qua bởi cầu DMA.
- pcie_dma_cmd
mô tả phần tử DMA của yêu cầu này.
- Bit(7) là cờ buộc msi, ghi đè logic DMA Bridge MSI
và tạo MSI khi yêu cầu này hoàn tất và QSM cấu hình Cầu DMA để xem bit này.
Bit (6:5) được bảo lưu.
Bit(4) là cờ mã hoàn thành và cho biết Cầu DMA sẽ tạo ra phần tử FIFO phản hồi khi yêu cầu này được hoàn thành.
Bit(3) cho biết yêu cầu này là chuyển danh sách liên kết(0) hay hàng loạt chuyển giao(1).
Bit(2) được bảo lưu.
Bits(1:0) cho biết loại chuyển giao. Không chuyển (0), sang thiết bị (1), từ thiết bị (2). Giá trị 3 là bất hợp pháp.
- pcie_dma_source_addr
địa chỉ nguồn để chuyển số lượng lớn hoặc địa chỉ của danh sách liên kết.
- pcie_dma_dest_addr
địa chỉ đích để chuyển số lượng lớn.
- pcie_dma_len
chiều dài của chuyển giao số lượng lớn. Lưu ý rằng kích thước của trường này giới hạn chuyển sang kích thước 4G.
- chuông cửa_addr
địa chỉ của chuông cửa sẽ đổ chuông khi yêu cầu này hoàn tất.
- chuông cửa_attr
thuộc tính chuông cửa.
- Bit(7) cho biết liệu có xảy ra việc ghi vào chuông cửa hay không.
Bit (6:2) được bảo lưu.
Bits(1:0) chứa mã hóa độ dài chuông cửa. 0 là 32-bit, 1 là 16 bit, 2 là 8 bit, 3 là dành riêng. Địa chỉ chuông cửa phải được căn chỉnh tự nhiên theo chiều dài đã chỉ định.
- dữ liệu chuông cửa
dữ liệu để ghi vào chuông cửa. Chỉ các bit tương ứng với chiều dài chuông cửa là hợp lệ.
- sem_cmdN
lệnh ngữ nghĩa.
- Bit(31) cho biết lệnh semaphore này đã được bật.
Bit(30) là hàng rào DMA tới thiết bị. Chặn yêu cầu này cho đến khi tất cả Quá trình chuyển DMA sang thiết bị đã hoàn tất.
Bit(29) là hàng rào DMA từ thiết bị. Chặn yêu cầu này cho đến khi tất cả Quá trình chuyển DMA từ thiết bị đã hoàn tất.
Bit (28:27) được bảo lưu.
Bits(26:24) là lệnh semaphore. 0 là NOP. 1 là init với giá trị quy định. 2 là tăng dần. 3 là giảm. 4 là chờ đợi cho đến khi semaphore bằng giá trị được chỉ định. 5 là chờ đợi cho đến khi semaphore lớn hơn hoặc bằng giá trị được chỉ định. 6 là “P”, đợi cho đến khi semaphore lớn hơn 0 thì giảm đi 1, 7 được bảo lưu.
Bit(23) được bảo lưu.
Bit(22) là sự đồng bộ hóa semaphore. 0 là đồng bộ hóa bài đăng, có nghĩa là Hoạt động semaphore được thực hiện sau khi chuyển DMA. 1 là presync, cổng chuyển DMA. Chỉ có một presync là được phép theo yêu cầu.
Bit(21) được bảo lưu.
Bits(20:16) là chỉ mục của semaphore để hoạt động.
Bit (15:12) được bảo lưu.
Bits(11:0) là giá trị semaphore được sử dụng trong các phép toán.
Nhìn chung, một yêu cầu được xử lý theo 4 bước:
Nếu được chỉ định, điều kiện ngữ nghĩa trước khi đồng bộ hóa phải đúng
Nếu được bật, quá trình chuyển DMA sẽ diễn ra
Nếu được chỉ định, các điều kiện ngữ nghĩa sau đồng bộ hóa phải đúng
Nếu được bật, chuông cửa sẽ được ghi
Bằng cách sử dụng các tín hiệu kết hợp với khối lượng công việc chạy trên NSP, đường ống dữ liệu có thể được đồng bộ hóa sao cho máy chủ có thể xếp hàng nhiều yêu cầu dữ liệu để khối lượng công việc xử lý, nhưng Cầu DMA sẽ chỉ sao chép dữ liệu vào bộ nhớ của khối lượng công việc khi khối lượng công việc đã sẵn sàng để xử lý đầu vào tiếp theo.
Phản hồi FIFO¶
Khi một yêu cầu được xử lý hoàn toàn, phần tử FIFO phản hồi sẽ được tạo nếu được chỉ định trong pcie_dma_cmd. Cấu trúc của phần tử FIFO phản hồi:
struct response_elem {
u16 req_id;
u16 completion_code;
};
- req_id
khớp với req_id của yêu cầu đã tạo ra phần tử này.
- mã hoàn thành
trạng thái của yêu cầu này. 0 là thành công. Khác không là một lỗi.
Cầu DMA sẽ tạo MSI cho máy chủ như một phản ứng đối với hoạt động trong phản hồi FIFO của DBC. Phần cứng cầu DMA có tính năng giảm bão IRQ thuật toán, trong đó nó sẽ chỉ tạo MSI khi phản hồi FIFO chuyển đổi từ trống đến không trống (trừ khi buộc MSI được bật và kích hoạt). trong phản hồi cho MSI này, máy chủ dự kiến sẽ rút hết phản hồi FIFO và phải hãy cẩn thận để xử lý mọi điều kiện chạy đua giữa việc xả FIFO và thiết bị chèn các phần tử vào FIFO.
Giao thức điều khiển mạng thần kinh (NNC)¶
Giao thức NNC là cách máy chủ đưa ra yêu cầu tới QSM để quản lý khối lượng công việc. Nó sử dụng kênh QAIC_CONTROL MHI.
Mỗi yêu cầu NNC được đóng gói thành một tin nhắn. Mỗi tin nhắn là một chuỗi giao dịch. Một giao dịch loại chuyển tiếp có thể chứa các phần tử được gọi là lệnh.
QSM yêu cầu các tin nhắn NNC phải được mã hóa endian nhỏ và các trường phải tự nhiên căn chỉnh. Vì có các phần tử 64 bit trong một số tin nhắn NNC, căn chỉnh 64 bit phải được duy trì.
Một thông báo chứa tiêu đề và sau đó là một loạt các giao dịch. Một tin nhắn có thể kích thước tối đa là 4K từ QSM đến máy chủ. Từ máy chủ đến QSM, một tin nhắn có thể tối đa là 64K (kích thước tối đa của một gói MHI), nhưng có một tính năng tiếp tục trong đó tin nhắn N+1 có thể được đánh dấu là phần tiếp theo của thông báo N. Thông báo này được sử dụng cho các giao dịch xfer DMA cực lớn.
Mô tả giao dịch¶
- sự đi qua
Cho phép không gian người dùng gửi tải trọng không rõ ràng trực tiếp đến QSM. Điều này được sử dụng cho các lệnh NNC. Không gian người dùng chịu trách nhiệm quản lý các yêu cầu về tin nhắn QSM trong tải trọng.
- dma_xfer
Chuyển DMA. Mô tả một đối tượng mà QSM nên đưa DMA vào thiết bị thông qua bộ dữ liệu địa chỉ và kích thước.
- kích hoạt
Kích hoạt khối lượng công việc lên NSP. Máy chủ phải cung cấp bộ nhớ để được sử dụng bởi DBC.
- vô hiệu hóa
Vô hiệu hóa khối lượng công việc đang hoạt động và đưa NSP về chế độ chờ.
- trạng thái
Truy vấn QSM về việc triển khai NNC. Trả về phiên bản NNC, và nếu CRC được sử dụng.
- chấm dứt
Giải phóng tài nguyên của người dùng.
- dma_xfer_cont
Tiếp tục chuyển DMA trước đó. Nếu chuyển DMA không thể được chỉ định trong một tin nhắn (bị phân mảnh cao), điều này giao dịch có thể được sử dụng để chỉ định nhiều phạm vi hơn.
- xác thực_phân vùng
Truy vấn QSM để xác định xem mã định danh phân vùng có hợp lệ hay không.
Mỗi tin nhắn được gắn thẻ id người dùng và id phân vùng. Id người dùng cho phép QSM để theo dõi tài nguyên và giải phóng chúng khi người dùng rời đi (ví dụ: quy trình gặp sự cố). Id phân vùng xác định phân vùng tài nguyên mà QSM quản lý, mà thông báo này áp dụng cho.
Tin nhắn có thể có CRC. Tin nhắn phải được áp dụng CRC cho đến QSM báo cáo thông qua giao dịch trạng thái rằng CRC không cần thiết. QSM trên SA9000P yêu cầu CRC để đảm bảo an toàn cho kênh đen.
Khởi động lại hệ thống con (SSR)¶
SSR là khái niệm hạn chế tác động của lỗi. Một thiết bị AIC100 có thể có nhiều người dùng, mỗi người có khối lượng công việc riêng đang chạy. Nếu khối lượng công việc của một người dùng gặp sự cố, hậu quả của việc đó sẽ chỉ giới hạn ở khối lượng công việc đó chứ không phải ảnh hưởng đến khối lượng công việc khác. SSR thực hiện được điều này.
Nếu một khối lượng công việc cụ thể gặp sự cố, QSM sẽ thông báo cho máy chủ qua QAIC_SSR MHI kênh. Thông báo này xác định khối lượng công việc theo DBC được chỉ định. A Sau đó, quy trình khôi phục nhiều giai đoạn được sử dụng để dọn dẹp cả hai bên và nhận được DBC/NSP chuyển sang trạng thái hoạt động.
Khi SSR xảy ra, mọi trạng thái trong khối lượng công việc đều bị mất. Bất kỳ đầu vào nào có trong quá trình hoặc được xếp hàng đợi chưa được phục vụ sẽ bị mất. Các hiện vật được tải sẽ vẫn ở trên thẻ DDR, nhưng máy chủ sẽ cần kích hoạt lại khối lượng công việc nếu nó mong muốn phục hồi khối lượng công việc.
Khi SSR xuất hiện đối với một NSP cụ thể, DBC được chỉ định sẽ đi qua các giao dịch trạng thái sau đây theo thứ tự:
- DBC_STATE_BEFORE_SHUTDOWN
Cho biết rằng NSP bị ảnh hưởng đã được tìm thấy do lỗi không thể khôi phục điều kiện.
- DBC_STATE_AFTER_SHUTDOWN
Cho biết NSP đang được đặt lại.
- DBC_STATE_BEFORE_POWER_UP
Cho biết thông tin gỡ lỗi của NSP đã được thu thập và được sẵn sàng để được chủ nhà thu thập (nếu muốn). Ở giai đoạn đó NSP được khởi động lại bởi QSM.
- DBC_STATE_AFTER_POWER_UP
Cho biết NSP đã được khởi động lại, hoạt động đầy đủ và đang ở trạng thái nhàn rỗi.
SSR cũng có tính năng thu thập sự cố tùy chọn. Nếu được bật, máy chủ có thể thu thập kết xuất bộ nhớ cho NSP bị lỗi và chuyển nó vào không gian người dùng thông qua hệ thống con dev_coredump. Máy chủ cũng có thể từ chối thu thập sự cố yêu cầu từ thiết bị.
Độ tin cậy, Khả năng tiếp cận, Khả năng phục vụ (RAS)¶
AIC100 dự kiến sẽ được triển khai trong các hệ thống máy chủ có hệ tư tưởng RAS áp dụng. Nói một cách đơn giản, RAS là khái niệm phát hiện, phân loại và báo cáo lỗi. Trong khi PCIe có AER (Báo cáo lỗi nâng cao) có yếu tố nào vào RAS, AER không cho phép thiết bị báo cáo chi tiết về nội bộ lỗi. Do đó, AIC100 triển khai cơ chế RAS tùy chỉnh. Khi có sự kiện RAS xảy ra, QSM sẽ báo cáo sự kiện với các chi tiết phù hợp thông qua QAIC_STATUS Kênh MHI. Quản trị viên hệ thống có thể xác định rằng một thiết bị cụ thể cần dịch vụ bổ sung dựa trên báo cáo RAS.
Đo từ xa¶
QSM có khả năng báo cáo các thuộc tính vật lý khác nhau của thiết bị và trong một số trường hợp, để cho phép chủ nhà kiểm soát chúng. Ví dụ bao gồm giới hạn nhiệt, chỉ số nhiệt và chỉ số công suất. Những mục này được truyền đạt thông qua Kênh QAIC_TELEMETRY MHI.