14P by GN⁺ 18시간전 | ★ favorite | 댓글 4개
  • Python 을 하드웨어에서 직접 실행하는 커스텀 프로세서 로, 인터프리터JIT 없이 동작함
  • PyXL의 GPIO 왕복 시간은 480ns로, MicroPython의 PyBoard보다 30배 빠름
  • Zynq-7000 FPGA에서 실행되며, ARM CPU가 설정과 메모리를 처리함
  • GPIO일반 목적 입출력을 의미하며, PyXL은 이를 하드웨어에서 직접 실행하여 VM이나 소프트웨어 스택을 거치지 않음
  • 실시간 제어 시스템, 로봇 공학, 임베디드 산업 시스템 등에서 결정론적이고 일관된 성능을 제공

PyXL 소개

  • PyXLPython을 하드웨어에서 직접 실행하는 커스텀 프로세서
  • 인터프리터JIT 없이 실리콘에서 Python 코드를 실행함
  • CPython ByteCode커스텀 어셈블리로 변환하여 파이프라인 프로세서에서 실행함

PyXL의 특징

  • C인라인 루프가 아님
  • MicroPython이나 JIT가 아님
  • Linux운영체제를 실행하지 않음
  • 결정론적이고 속도를 위해 설계된 Python 전용 프로세서임

PyXL의 실행 환경

  • Zynq-7000 FPGA에서 실행되며, Arty-Z7-20 개발 보드 사용
  • PyXL 코어100MHz에서 실행됨
  • ARM CPU가 설정과 메모리를 처리하며, Python 코드는 하드웨어에서 직접 실행됨

GPIO란 무엇인가?

  • GPIO일반 목적 입출력을 의미하며, 소프트웨어LED, 버튼, 센서, 모터 등을 제어할 수 있게 함
  • MicroPython에서는 Python 코드C 함수와 상호작용하여 하드웨어 레지스터를 처리함
  • PyXLPython 바이트코드를 하드웨어에서 직접 실행하여 인터프리터함수 호출 없이 네이티브 하드웨어에서 실행함

GPIO 테스트

  • Arty 보드의 두 핀을 점퍼 케이블로 연결하여 테스트함
  • Python 프로그램을 작성하여 GPIO 핀11로 설정된 후 다른 핀에서 1이 측정될 때까지의 시간을 측정함
  • PyXLPyBoardMicroPython VM을 비교하는 비디오를 통해 성능 차이를 확인함

PyXL의 프로그램 구조

  • Python 프로그램CPython Bytecode로 컴파일된 후 PyXL 어셈블리로 변환됨
  • 바이너리가 생성되어 네트워크를 통해 Arty 보드로 전송됨
  • ARM CPU애플리케이션을 받아 PyXL 하드웨어공유 메모리에 복사하고 실행함

플랫폼 비교

  • GPIO 왕복 지연 시간: PyXL480ns, **MicroPython (PyBoard)**는 14,741ns
  • PyXLPyBoard보다 30배 빠르며, 클럭 속도정규화하면 50배 빠름

PyXL의 장점

  • Python VM소프트웨어 인터프리터를 기반으로 하여 오버헤드복잡성을 초래함
  • PyXL은 이러한 장벽을 제거하여 Python 코드를 하드웨어에서 직접 실행함
  • GPIO 접근물리적이며, 제어 흐름예측 가능하고 일관된 성능을 제공함

PyXL의 응용 분야

  • 실시간 제어 시스템에서 순수 Python으로 구현 가능
  • ML 추론센서 응답 루프에서 엄격한 시간 제한을 충족함
  • 로봇 공학에서 모터 피드백센서 융합사이클 수준의 정밀도로 처리함
  • 임베디드 산업 시스템에서 타이밍신뢰성이 중요한 경우에 적합함

오 신기하네요

너무기대가되네요

본 프로젝트 개발자가 이번 PyCon US에서 해당 내용으로 발표를 합니다. 올초에 프로포절 리뷰할 때도 리뷰어들 사이에서 꽤 많은 화제가 되었는데 그에 비해 발표 소개 내용이 너무 소박하네요. 파이콘 가시는 분들은 꼭 한번 들어보시기를 추천합니다.

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

Hacker News 의견
  • 어떤 코드가 실행될 수 있는지에 대한 제한이 있는지 궁금함. 메모리 제한이나 OS 상호작용을 제외하고. 동적 언어의 런타임을 목표로 하는 바이트코드를 맞춤형 프로세서로 만드는 아이디어가 최근에 충분히 탐구되지 않았다고 생각함. 왜 이 방향을 선택했는지, 왜 좋은 아이디어였는지, 그리고 구현 과정에 대해 알고 싶음

  • 전통적인 VM이나 인터프리터 없이 Python 프로그램을 직접 실행하는 하드웨어 프로세서를 구축했음. 초기 벤치마크: GPIO 왕복 시간이 480ns로 MicroPython보다 30배 빠름

  • 매우 멋진 작업임. 최종 기능 세트가 맞춤형 하드웨어를 만드는 것보다 파이썬 문법을 가진 타입 안전 언어를 네이티브로 컴파일하는 것보다 더 클지 궁금함. 백그라운드 가비지 컬렉션은 말처럼 쉽지 않지만, 이미 인상적으로 어려운 작업을 해낸 사람과 이야기하고 있음

  • 왜 Python을 "컴파일"하는 것이 일상적이지 않은지 궁금함. 인터프리터가 빠른 반복, 호환성 등에 좋다는 것은 이해하지만, Python 세계에서는 컴파일의 이점을 포기하고 "소스" 파일을 프로덕션에 덤프하는 것이 왜 받아들여지는 관행인지 궁금함

  • 매우 흥미로움. 근본적인 물리적 한계는 무엇인지 궁금함. 즉, 타이밍 정밀도, 지연 시간 및 지터. PyXL 바이트코드가 입력에 얼마나 빠르게 반응할 수 있는지. ARTIQ라는 유사한 것이 있는데, Python 코드를 '임베디드 수준' 성능으로 실행함. ARTIQ는 양자 물리학 실험실에서 흔히 사용됨. Python 코드와 FPGA가 서로 소통해야 하는데, 이는 기술적으로 어렵고 많은 함정이 있음. PyXL이 사용자에게 더 간단하게 만든다면, 이는 모두에게 큰 이점임

  • C#이 나왔을 때, 누군가가 .Net 바이트코드를 네이티브로 실행하는 프로세서를 만들 것이라고 확신했음. 어떤 HDL을 사용하여 프로세서를 설계했는지 궁금함. 프로세서의 어셈블리 언어를 공유할 수 있는지 궁금함. 기존 프로세서(ARM/x86/RISCV 등)에 대한 바이트코드 컴파일러를 만드는 것과 비교하여 프로세서를 설계하고 Python 바이트코드 컴파일러를 만드는 이점이 무엇인지 궁금함

  • Python 개발자들에게 질문하고 싶음. 이 프로젝트를 보고 인상적이라고 생각하지만, 언어에 대한 외부인으로서 이해가 되지 않음. a) 이전에 Python으로 인해 어려웠던 점, b) Python이 이 작업에 유용한 이유, c) Python 자체에 대한 생각이 궁금함. Python 2와 3, 가상 환경, 각 버전의 라이브러리 등으로 인해 어려움을 겪었음. PHP/Go 개발자로서 관심이 있지만, 이러한 문제로 인해 주저하게 됨

  • 놀라운 작업임. FPGA에서 훌륭한 구현을 볼 때마다 Tabula가 성공하지 못한 것이 아쉬움. 매우 혁신적이고 빠른 FPGA였음

  • ASIC이 Python 전용 마이크로컨트롤러를 실행하고 있으며, Python에 맞춘 마이크로코드를 가지고 있는 것이 맞는지 궁금함. Python 바이트코드를 마이크로코드로 컴파일하는 컴파일러와 지원 인프라가 ASIC에 컴파일된 바이트코드를 전달하는 것인지 궁금함. 재미있음. 맞게 이해했는지 궁금함