19 điểm bởi GN⁺ 2025-04-29 | 6 bình luận | Chia sẻ qua WhatsApp
  • Python được chạy trực tiếp trên phần cứng bằng một bộ xử lý tùy biến, hoạt động mà không cần interpreter hay JIT
  • Thời gian khứ hồi GPIO của PyXL là 480ns, nhanh hơn 30 lần so với PyBoard chạy MicroPython
  • Chạy trên FPGA Zynq-7000, với CPU ARM xử lý cấu hình và bộ nhớ
  • GPIOvào/ra đa dụng, và PyXL thực thi nó trực tiếp trong phần cứng, không đi qua VM hay ngăn xếp phần mềm
  • Cung cấp hiệu năng deterministicnhất quán cho các lĩnh vực như hệ thống điều khiển thời gian thực, roboticshệ thống công nghiệp nhúng

Giới thiệu PyXL

  • PyXL là một bộ xử lý tùy biến chạy Python trực tiếp trên phần cứng
  • Chạy mã Python ngay trên silicon mà không cần interpreter hay JIT
  • Chuyển đổi CPython ByteCode thành assembly tùy biến để thực thi trên một bộ xử lý pipeline

Đặc điểm của PyXL

  • Không phải C hay vòng lặp inline
  • Không phải MicroPython hay JIT
  • Không chạy Linux hay hệ điều hành
  • Là bộ xử lý chuyên cho Python, được thiết kế để đạt tính deterministictốc độ

Môi trường chạy của PyXL

  • Chạy trên FPGA Zynq-7000, sử dụng bo mạch phát triển Arty-Z7-20
  • Lõi PyXL chạy ở 100MHz
  • CPU ARM xử lý cấu hình và bộ nhớ, còn mã Python được thực thi trực tiếp trong phần cứng

GPIO là gì?

  • GPIO là viết tắt của vào/ra đa dụng, cho phép phần mềm điều khiển LED, nút bấm, cảm biến, động cơ và nhiều thiết bị khác
  • Trong MicroPython, mã Python tương tác với hàm C để xử lý các thanh ghi phần cứng
  • PyXL thực thi trực tiếp bytecode Python trong phần cứng, chạy trên phần cứng native mà không cần interpreter hay lời gọi hàm

Kiểm thử GPIO

  • Việc kiểm thử được thực hiện bằng cách nối hai chân trên bo mạch Arty bằng cáp jumper
  • Viết một chương trình Python để đo thời gian từ lúc chân GPIO 1 được đặt thành 1 cho đến khi giá trị 1 được đo ở chân còn lại
  • So sánh hiệu năng qua video đối chiếu giữa PyXLVM MicroPython trên PyBoard

Cấu trúc chương trình của PyXL

  • Chương trình Python trước tiên được biên dịch thành CPython Bytecode, sau đó chuyển thành assembly PyXL
  • Một binary được tạo ra và gửi tới bo mạch Arty qua mạng
  • CPU ARM nhận ứng dụng, sao chép nó vào phần cứng PyXLbộ nhớ dùng chung, rồi thực thi

So sánh nền tảng

  • Độ trễ khứ hồi GPIO: PyXL480ns, MicroPython (PyBoard)14,741ns
  • PyXL nhanh hơn 30 lần so với PyBoard, và nếu chuẩn hóa theo xung nhịp thì nhanh hơn 50 lần

Ưu điểm của PyXL

  • Python VM dựa trên software interpreter, dẫn đến overheadđộ phức tạp
  • PyXL loại bỏ những rào cản này để thực thi mã Python trực tiếp trong phần cứng
  • Truy cập GPIO mang tính vật lý, còn luồng điều khiển có thể dự đoán được và mang lại hiệu năng nhất quán

Ứng dụng của PyXL

  • Có thể triển khai bằng Python thuần trong hệ thống điều khiển thời gian thực
  • Đáp ứng giới hạn thời gian nghiêm ngặt trong suy luận MLvòng phản hồi cảm biến
  • Xử lý phản hồi động cơhợp nhất cảm biến trong robotics với độ chính xác ở mức chu kỳ
  • Phù hợp với hệ thống công nghiệp nhúng nơi thời gianđộ tin cậy là yếu tố quan trọng

6 bình luận

 
cgl00 2025-04-30

Bạn xử lý việc thay đổi phiên bản như thế nào?

 
bus710 2025-04-30

Có lẽ đây có thể là một tin vui với các kỹ sư HiL.

 
huiya 2025-04-29

Ồ, thú vị ghê.

 
jujumilk3 2025-04-29

Rất đáng mong đợi.

 
scari 2025-04-29

Nhà phát triển của dự án này sẽ có bài thuyết trình về nội dung này tại PyCon US lần này. Ngay từ lúc review proposal hồi đầu năm, chủ đề này cũng đã gây bàn tán khá nhiều giữa các reviewer, nhưng so với mức độ đó thì phần giới thiệu bài nói chuyện lại quá khiêm tốn. Nếu bạn có đến PyCon, tôi rất khuyến nghị hãy nghe thử một lần.

https://us.pycon.org/2025/schedule/presentation/40/

 
GN⁺ 2025-04-29
Ý kiến Hacker News
  • Tò mò không biết có những hạn chế nào về loại mã có thể chạy được hay không, ngoài giới hạn bộ nhớ hay tương tác với OS. Tôi nghĩ ý tưởng tạo bytecode hướng tới runtime của ngôn ngữ động trên một bộ xử lý tùy biến gần đây chưa được khám phá đủ nhiều. Muốn biết vì sao lại chọn hướng này, vì sao nó là một ý tưởng hay, và quá trình hiện thực hóa diễn ra như thế nào

  • Đã xây dựng một bộ xử lý phần cứng chạy trực tiếp chương trình Python mà không cần VM hay trình thông dịch truyền thống. Benchmark ban đầu: thời gian khứ hồi GPIO là 480ns, nhanh hơn MicroPython 30 lần

  • Công việc rất tuyệt vời. Tôi tự hỏi liệu bộ tính năng cuối cùng có lớn hơn việc tạo phần cứng tùy chỉnh so với việc biên dịch native một ngôn ngữ an toàn kiểu dữ liệu nhưng có cú pháp Python hay không. Garbage collection chạy nền không hề đơn giản như lời nói, nhưng tôi đang nói chuyện với người đã làm được một việc vốn đã khó đến mức ấn tượng

  • Tôi thắc mắc vì sao việc "biên dịch" Python lại không phổ biến trong đời sống hằng ngày. Tôi hiểu trình thông dịch có lợi cho vòng lặp lặp lại nhanh, tính tương thích, v.v., nhưng trong thế giới Python, tôi thắc mắc vì sao việc từ bỏ lợi ích của biên dịch và đẩy các file "source" thẳng vào production lại trở thành thông lệ được chấp nhận

  • Rất thú vị. Tôi tò mò đâu là những giới hạn vật lý căn bản. Cụ thể là độ chính xác thời gian, độ trễ và jitter. Bytecode PyXL có thể phản ứng nhanh đến mức nào với đầu vào. Có một thứ tương tự là ARTIQ, chạy mã Python với hiệu năng ở mức 'embedded'. ARTIQ thường được dùng trong các phòng thí nghiệm vật lý lượng tử. Mã Python và FPGA phải giao tiếp với nhau, điều này về mặt kỹ thuật rất khó và có nhiều cạm bẫy. Nếu PyXL khiến việc này đơn giản hơn cho người dùng thì đó là lợi ích lớn cho tất cả mọi người

  • Khi C# ra mắt, tôi từng tin chắc sẽ có ai đó tạo ra một bộ xử lý chạy native bytecode .Net. Tôi muốn biết họ đã dùng HDL nào để thiết kế bộ xử lý. Tôi cũng muốn biết liệu có thể chia sẻ assembly language của bộ xử lý hay không. Tôi thắc mắc lợi ích của việc thiết kế bộ xử lý rồi tạo trình biên dịch bytecode Python là gì, so với việc tạo trình biên dịch bytecode cho các bộ xử lý hiện có (ARM/x86/RISCV, v.v.)

  • Muốn hỏi các lập trình viên Python. Nhìn dự án này tôi thấy rất ấn tượng, nhưng với tư cách người ngoài cuộc với ngôn ngữ này thì tôi chưa hiểu lắm. a) trước đây Python đã gây khó khăn gì cho bạn, b) vì sao Python hữu ích cho công việc này, c) bạn nghĩ gì về chính Python. Tôi từng gặp khó khăn vì Python 2 và 3, virtual environment, thư viện của từng phiên bản, v.v. Là một lập trình viên PHP/Go, tôi có quan tâm nhưng vẫn do dự vì những vấn đề này

  • Thật đáng kinh ngạc. Mỗi khi thấy một triển khai tuyệt vời trên FPGA, tôi lại tiếc vì Tabula đã không thành công. Đó là một FPGA rất sáng tạo và rất nhanh

  • Tôi hiểu có đúng không rằng ASIC đang chạy một vi điều khiển chuyên cho Python, với microcode được tinh chỉnh cho Python. Và rằng có một trình biên dịch biên dịch bytecode Python sang microcode, cùng với hạ tầng hỗ trợ để chuyển bytecode đã biên dịch vào ASIC. Thú vị thật. Tôi muốn biết mình có hiểu đúng hay không