# PyXL - Python을 실행하는 하드웨어 프로세서

> Clean Markdown view of GeekNews topic #20590. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=20590](https://news.hada.io/topic?id=20590)
- GeekNews Markdown: [https://news.hada.io/topic/20590.md](https://news.hada.io/topic/20590.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-04-29T10:35:28+09:00
- Updated: 2025-04-29T10:35:28+09:00
- Original source: [runpyxl.com](https://www.runpyxl.com/gpio)
- Points: 19
- Comments: 6

## Summary

**PyXL**은 **Python**을 하드웨어에서 직접 실행하는 **커스텀 프로세서**로, **인터프리터**나 **JIT** 없이 동작합니다. Zynq-7000 FPGA에서 실행되며, ARM CPU가 설정과 메모리를 처리하여 **결정론적**이고 **일관된** 성능을 제공합니다. **GPIO** 왕복 시간은 **480ns**로, **MicroPython**의 **PyBoard**보다 **30배** 빠릅니다. **실시간 제어 시스템**, **로봇 공학**, **임베디드 산업 시스템** 등에서 엄격한 시간 제한을 충족할 수 있습니다.

## Topic Body

- **Python** 을 하드웨어에서 직접 실행하는 **커스텀 프로세서** 로, **인터프리터** 나 **JIT** 없이 동작함  
- PyXL의 **GPIO** 왕복 시간은 **480ns**로, MicroPython의 PyBoard보다 **30배** 빠름  
- Zynq-7000 FPGA에서 실행되며, **ARM CPU**가 설정과 메모리를 처리함  
- **GPIO**는 **일반 목적 입출력**을 의미하며, **PyXL**은 이를 하드웨어에서 직접 실행하여 **VM**이나 **소프트웨어 스택**을 거치지 않음  
- **실시간 제어 시스템**, **로봇 공학**, **임베디드 산업 시스템** 등에서 **결정론적**이고 **일관된** 성능을 제공  
  
---  
  
### PyXL 소개  
  
- **PyXL**은 **Python**을 하드웨어에서 직접 실행하는 **커스텀 프로세서**임  
- **인터프리터**나 **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 함수**와 상호작용하여 하드웨어 레지스터를 처리함  
- **PyXL**은 **Python 바이트코드**를 하드웨어에서 직접 실행하여 **인터프리터**나 **함수 호출** 없이 **네이티브 하드웨어**에서 실행함  
  
### GPIO 테스트  
  
- **Arty 보드**의 두 핀을 **점퍼 케이블**로 연결하여 테스트함  
- **Python 프로그램**을 작성하여 **GPIO 핀1**이 **1**로 설정된 후 **다른 핀**에서 **1**이 측정될 때까지의 시간을 측정함  
- **PyXL**과 **PyBoard**의 **MicroPython VM**을 비교하는 **비디오**를 통해 성능 차이를 확인함  
  
### PyXL의 프로그램 구조  
  
- **Python 프로그램**은 **CPython Bytecode**로 컴파일된 후 **PyXL 어셈블리**로 변환됨  
- **바이너리**가 생성되어 **네트워크**를 통해 **Arty 보드**로 전송됨  
- **ARM CPU**가 **애플리케이션**을 받아 **PyXL 하드웨어**와 **공유 메모리**에 복사하고 실행함  
  
### 플랫폼 비교  
  
- **GPIO 왕복 지연 시간**: **PyXL**은 **480ns**, **MicroPython (PyBoard)**는 **14,741ns**  
- **PyXL**은 **PyBoard**보다 **30배** 빠르며, **클럭 속도**를 **정규화**하면 **50배** 빠름  
  
### PyXL의 장점  
  
- **Python VM**은 **소프트웨어 인터프리터**를 기반으로 하여 **오버헤드**와 **복잡성**을 초래함  
- **PyXL**은 이러한 **장벽**을 제거하여 **Python 코드**를 하드웨어에서 직접 실행함  
- **GPIO 접근**은 **물리적**이며, **제어 흐름**은 **예측 가능**하고 **일관된** 성능을 제공함  
  
### PyXL의 응용 분야  
  
- **실시간 제어 시스템**에서 **순수 Python**으로 구현 가능  
- **ML 추론** 및 **센서 응답 루프**에서 **엄격한 시간 제한**을 충족함  
- **로봇 공학**에서 **모터 피드백** 및 **센서 융합**을 **사이클 수준의 정밀도**로 처리함  
- **임베디드 산업 시스템**에서 **타이밍**과 **신뢰성**이 중요한 경우에 적합함

## Comments



### Comment 38018

- Author: cgl00
- Created: 2025-04-30T13:59:52+09:00
- Points: 1

버전 변경에는 어떻게 대처하나요?

### Comment 37979

- Author: bus710
- Created: 2025-04-30T07:03:00+09:00
- Points: 1

HiL 엔지니어들에게 어쩌면 좋은 소식이 될 수 있겠네요.

### Comment 37966

- Author: huiya
- Created: 2025-04-29T14:17:55+09:00
- Points: 1

오 신기하네요

### Comment 37959

- Author: jujumilk3
- Created: 2025-04-29T11:46:48+09:00
- Points: 1

너무기대가되네요

### Comment 37958

- Author: scari
- Created: 2025-04-29T11:41:40+09:00
- Points: 1

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

### Comment 37947

- Author: neo
- Created: 2025-04-29T10:35:28+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=43820228) 
* 어떤 코드가 실행될 수 있는지에 대한 제한이 있는지 궁금함. 메모리 제한이나 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에 컴파일된 바이트코드를 전달하는 것인지 궁금함. 재미있음. 맞게 이해했는지 궁금함
