Đầu cơ cho Mô phỏng. Đổi mới trong xác minh

Đầu cơ cho Mô phỏng. Đổi mới trong xác minh

Nút nguồn: 2547459

Đây là một ý tưởng thú vị, sử dụng song song suy đoán được phần cứng hỗ trợ để tăng tốc độ mô phỏng, với một khuynh hướng yêu cầu phần cứng tùy chỉnh. Paul Cunningham (VP/GM cấp cao, Xác minh tại Cadence), Raúl Camposano (Silicon Catalyst, doanh nhân, cựu CTO của Synopsys và hiện là CTO của Silvaco) và tôi tiếp tục loạt bài về ý tưởng nghiên cứu của chúng ta. Như mọi khi, thông tin phản hồi chào mừng.

Đầu cơ cho mô phỏng

Sự đổi mới

Lựa chọn của tháng này là Chronos: Tính song song suy đoán hiệu quả cho máy gia tốc. Các tác giả đã trình bày bài báo tại Hội nghị về hỗ trợ kiến ​​trúc cho ngôn ngữ lập trình và hệ điều hành năm 2020 và đến từ MIT.

Khai thác tính song song bằng cách sử dụng bộ xử lý đa lõi là một tùy chọn cho các ứng dụng mà tính song song là hiển nhiên. Các thuật toán khác có thể không được phân vùng dễ dàng như vậy nhưng có thể được hưởng lợi từ việc thực thi suy đoán khai thác tính song song nội tại. Thông thường, việc thực thi suy đoán phụ thuộc vào sự gắn kết của bộ đệm, chi phí cao, đặc biệt là cho mô phỏng. Phương pháp này bỏ qua nhu cầu về sự nhất quán, cục bộ hóa việc thực thi tác vụ để tính toán các ô xếp theo đối tượng đọc-ghi mục tiêu, đảm bảo rằng có thể phát hiện xung đột cục bộ mà không cần quản lý sự nhất quán toàn cầu. Các tác vụ có thể thực thi song song theo suy đoán; bất kỳ xung đột nào được phát hiện đều có thể được hủy kiểm soát từ một tác vụ thông qua các tác vụ con của nó, sau đó được thực hiện lại mà không cần dừng các luồng khác.

Một điểm lưu ý khác ở đây. Phương pháp này hỗ trợ mô phỏng dựa trên độ trễ, không giống như hầu hết các kỹ thuật tăng tốc phần cứng.

Quan điểm của Paul

Chà, thật là một bài báo có chỉ số octan cao tuyệt vời từ MIT! Khi được hỏi về tính toán song song, tôi nghĩ ngay đến các luồng, bộ chuyển đổi và tính nhất quán của bộ nhớ. Tất nhiên, đây là cách các CPU đa lõi hiện đại được thiết kế. Nhưng nó không phải là cách duy nhất để hỗ trợ song song hóa trong phần cứng.

Bài báo này đề xuất một kiến ​​trúc thay thế để song song hóa được gọi là Chronos dựa trên một hàng đợi có thứ tự các nhiệm vụ. Trong thời gian chạy, các tác vụ được thực thi theo thứ tự dấu thời gian và mỗi tác vụ có thể tạo các tác vụ phụ mới được thêm động vào hàng đợi. Quá trình thực thi bắt đầu bằng cách đặt một số tác vụ ban đầu vào hàng đợi và kết thúc khi không còn tác vụ nào trong hàng đợi.

Các tác vụ trong hàng đợi được phân bổ song song cho nhiều yếu tố xử lý (PE) – có nghĩa là Chronos đang thực hiện các tác vụ trong tương lai một cách suy đoán trước khi tác vụ hiện tại hoàn thành. Nếu tác vụ hiện tại làm mất hiệu lực bất kỳ tác vụ nào được thực thi theo suy đoán trong tương lai thì hành động của các tác vụ trong tương lai đó sẽ được "hoàn tác" và chúng được xếp hàng lại. Thực hiện khái niệm này một cách chính xác trong phần cứng không phải là điều dễ dàng, nhưng đối với người dùng bên ngoài thì điều đó thật tuyệt: bạn chỉ cần mã hóa thuật toán của mình như thể hàng đợi tác vụ đang được thực thi tuần tự trên một PE duy nhất. Không cần mã hóa bất kỳ mutexes nào hoặc lo lắng về bế tắc.

Các tác giả triển khai Chronos trong SystemVerilog và biên dịch nó thành FPGA. Phần lớn bài báo được dành để giải thích cách họ đã triển khai hàng đợi tác vụ và bất kỳ thao tác hủy kiểm soát cần thiết nào trong phần cứng để đạt hiệu quả tối đa. Chronos được đo điểm chuẩn trên bốn thuật toán rất phù hợp với kiến ​​trúc dựa trên hàng đợi tác vụ. Mỗi thuật toán được triển khai theo hai cách: cách thứ nhất là sử dụng PE dành riêng cho thuật toán cụ thể và cách thứ hai là sử dụng CPU RISC-V nhúng 32 bit mã nguồn mở có sẵn làm PE. Sau đó, hiệu suất của Chronos được so sánh với việc triển khai phần mềm đa luồng của các thuật toán chạy trên máy chủ Intel Xeon có mức giá tương tự như FPGA đang được sử dụng cho Chronos. Kết quả thật ấn tượng – Chronos có tỷ lệ tốt hơn gấp 3 đến 15 lần so với sử dụng máy chủ Xeon. Tuy nhiên, so sánh Bảng 3 với Hình 14 khiến tôi hơi lo lắng rằng hầu hết những lợi ích này đến từ các PE dành riêng cho thuật toán chứ không phải từ chính kiến ​​trúc Chronos.

Vì đây là một blog xác minh nên tôi đã phóng to điểm chuẩn mô phỏng cấp cổng một cách tự nhiên. Ngành EDA đã đầu tư rất nhiều để thử và song song hóa mô phỏng logic và thật khó để đạt được lợi ích lớn ngoài một số trường hợp sử dụng cụ thể. Điều này chủ yếu là do hiệu suất của hầu hết các mô phỏng trong thế giới thực bị chi phối bởi các lệnh tải/lưu trữ bị thiếu trong bộ đệm L3 và chuyển ra DRAM. Chỉ có một trường hợp thử nghiệm được đánh giá chuẩn trong bài báo này và nó là một bộ bổ sung lưu trữ mang theo 32 bit nhỏ. Nếu bạn đang đọc blog này và muốn thực hiện một số điểm chuẩn kỹ lưỡng hơn, vui lòng cho tôi biết - nếu Chronos thực sự có thể mở rộng quy mô tốt trên các mô phỏng trong thế giới thực thì nó sẽ có giá trị thương mại rất lớn!

Quan điểm của Raúl

Đóng góp chính của bài báo này là Mô hình thực thi nhiệm vụ được sắp xếp theo thứ tự (SLOT) theo vị trí không gian điều này hiệu quả đối với các bộ tăng tốc phần cứng khai thác tính song song và suy đoán cũng như đối với các ứng dụng tạo các tác vụ một cách linh hoạt trong thời gian chạy. Hỗ trợ song song động là không thể tránh khỏi đối với mô phỏng và đồng bộ hóa suy đoán là một tùy chọn hấp dẫn, nhưng chi phí nhất quán quá cao.

SLOT tránh sự cần thiết của sự gắn kết bằng cách hạn chế mỗi tác vụ hoạt động (ghi) trên một đối tượng và hỗ trợ các tác vụ được sắp xếp để kích hoạt tính nguyên tử của nhiều đối tượng. Các ứng dụng SLOT được sắp xếp, các tác vụ được tạo động được đặc trưng bởi dấu thời gian và id đối tượng. Dấu thời gian chỉ định các ràng buộc về đơn đặt hàng; id đối tượng chỉ định sự phụ thuộc dữ liệu, nghĩa là, các tác vụ phụ thuộc vào dữ liệu khi và chỉ khi chúng có cùng một id đối tượng. (nếu có sự phụ thuộc đọc thì tác vụ có thể được thực thi theo cách suy đoán). Tính năng phát hiện xung đột trở nên cục bộ (không có cấu trúc theo dõi phức tạp) bằng cách ánh xạ id đối tượng tới lõi hoặc ngăn xếp và gửi từng tác vụ tới nơi ánh xạ id đối tượng của nó.

Sản phẩm Chronos hệ thống được triển khai trong khung AWS FPGA dưới dạng một hệ thống có 16 ô, mỗi ô có 4 phần tử xử lý dành riêng cho ứng dụng (PE), chạy ở tốc độ 125 MHz. Hệ thống này được so sánh với đường cơ sở bao gồm Intel Xeon E20-40v2.4 5 nhân/2676 luồng 3 GHz, được chọn cụ thể vì giá của nó tương đương với FPGA (khoảng $2/giờ). Chạy một tác vụ trên một PE, Chronos nhanh hơn 2.45 lần so với mức cơ bản. Khi số lượng tác vụ đồng thời tăng lên, quá trình triển khai Chronos sẽ tăng tỷ lệ lên mức tăng tốc tự tương đối là 44.9 lần trên 8 ô, tương ứng với mức tăng tốc 15.3 lần so với quá trình triển khai CPU. Họ cũng so sánh việc triển khai dựa trên RISC-V có mục đích chung thay vì các PE dành riêng cho ứng dụng; PE nhanh hơn gấp 5 lần so với RISC-V.

Tôi thấy bài báo này rất ấn tượng vì nó bao gồm mọi thứ, từ khái niệm đến định nghĩa về mô hình thực thi SLOT, đến việc triển khai phần cứng và so sánh chi tiết với CPU Xeon truyền thống cho 4 ứng dụng. Nỗ lực là đáng kể, Chronos có hơn 20,000 dòng SystemVerilog. Kết quả là tốc độ trung bình 5.4 lần (trong số 4 ứng dụng) so với các phiên bản song song phần mềm, do tính song song nhiều hơn và sử dụng nhiều hơn thực thi suy đoán. Bài báo cũng đáng đọc để áp dụng cho các nhiệm vụ không mô phỏng; bài báo bao gồm ba ví dụ.

Chia sẻ bài đăng này qua:

Dấu thời gian:

Thêm từ bánwiki