19 puan yazan GN⁺ 2025-04-29 | 6 yorum | WhatsApp'ta paylaş
  • Python'ı doğrudan donanım üzerinde çalıştıran özel bir işlemci olup yorumlayıcı veya JIT olmadan çalışır
  • PyXL'in GPIO gidiş-dönüş süresi 480ns olup MicroPython'un PyBoard'una göre 30 kat daha hızlıdır
  • Zynq-7000 FPGA üzerinde çalışır ve ARM CPU yapılandırma ile belleği yönetir
  • GPIO, genel amaçlı giriş/çıkış anlamına gelir ve PyXL, bunu VM ya da yazılım yığını üzerinden geçmeden doğrudan donanımda yürütür
  • Gerçek zamanlı kontrol sistemleri, robotik ve gömülü endüstriyel sistemler gibi alanlarda deterministik ve tutarlı performans sağlar

PyXL'e giriş

  • PyXL, Python'ı doğrudan donanımda çalıştıran özel bir işlemcidir
  • Yorumlayıcı veya JIT olmadan silikon üzerinde Python kodu çalıştırır
  • CPython ByteCode'u özel assembly'ye dönüştürerek pipeline işlemci üzerinde yürütür

PyXL'in özellikleri

  • C ya da inline loop değildir
  • MicroPython ya da JIT değildir
  • Linux ya da bir işletim sistemi çalıştırmaz
  • Deterministik olacak ve hız sağlayacak şekilde tasarlanmış Python odaklı bir işlemcidir

PyXL'in çalışma ortamı

  • Zynq-7000 FPGA üzerinde çalışır ve Arty-Z7-20 geliştirme kartı kullanılır
  • PyXL çekirdeği 100MHz hızında çalışır
  • ARM CPU yapılandırma ve belleği yönetirken Python kodu doğrudan donanımda çalıştırılır

GPIO nedir?

  • GPIO, genel amaçlı giriş/çıkış anlamına gelir ve yazılımın LED, düğme, sensör, motor gibi bileşenleri kontrol etmesini sağlar
  • MicroPython'da Python kodu, donanım register'larını işlemek için C fonksiyonlarıyla etkileşime girer
  • PyXL, Python bytecode'unu doğrudan donanımda çalıştırarak yorumlayıcı veya fonksiyon çağrısı olmadan yerel donanım üzerinde yürütür

GPIO testi

  • Test için Arty kartı üzerindeki iki pin jumper kablo ile bağlanır
  • Python programı yazılarak GPIO pin 1'in 1 olarak ayarlanmasının ardından diğer pin üzerinde 1 ölçülene kadar geçen süre ölçülür
  • PyXL ile PyBoard üzerindeki MicroPython VM karşılaştırmasını gösteren video üzerinden performans farkı doğrulanır

PyXL'in program yapısı

  • Python programı, önce CPython Bytecode'a derlenir, ardından PyXL assembly'sine dönüştürülür
  • Binary oluşturulur ve üzerinden Arty kartına gönderilir
  • ARM CPU, uygulamayı alır, PyXL donanımı ile paylaşımlı belleğe kopyalar ve çalıştırır

Platform karşılaştırması

  • GPIO gidiş-dönüş gecikmesi: PyXL için 480ns, MicroPython (PyBoard) için 14,741ns
  • PyXL, PyBoard'dan 30 kat daha hızlıdır; clock hızı normalize edildiğinde bu fark 50 kata çıkar

PyXL'in avantajları

  • Python VM, yazılım yorumlayıcısına dayandığı için overhead ve karmaşıklık oluşturur
  • PyXL, bu engelleri kaldırarak Python kodunu doğrudan donanımda çalıştırır
  • GPIO erişimi fizikseldir; kontrol akışı öngörülebilirdir ve tutarlı performans sağlar

PyXL'in kullanım alanları

  • Gerçek zamanlı kontrol sistemlerinde saf Python ile uygulama geliştirilebilir
  • ML inference ve sensör tepki döngülerinde katı zaman kısıtlarını karşılar
  • Robotikte motor geri bildirimi ve sensör füzyonu çevrim düzeyinde hassasiyetle işlenebilir
  • Gömülü endüstriyel sistemlerde, zamanlama ve güvenilirliğin kritik olduğu durumlar için uygundur

6 yorum

 
cgl00 2025-04-30

Sürüm değişiklikleriyle nasıl başa çıkıyorsunuz?

 
bus710 2025-04-30

Bu, HiL mühendisleri için belki de iyi bir haber olabilir.

 
huiya 2025-04-29

Vay, ilginçmiş.

 
jujumilk3 2025-04-29

Gerçekten çok heyecan verici görünüyor.

 
scari 2025-04-29

Bu projenin geliştiricisi bu içeriği bu yılki PyCon US'te sunacak. Bu yılın başında öneri incelemesi yapılırken de değerlendiriciler arasında epey konuşulmuştu; buna kıyasla sunum tanıtımı fazla mütevazı kalmış. PyCon'a gidenlere mutlaka bir kez dinlemelerini tavsiye ederim.

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

 
GN⁺ 2025-04-29
Hacker News yorumları
  • Bellek kısıtları veya OS etkileşimleri dışında, hangi kodların çalıştırılabildiğine dair kısıtlar olup olmadığını merak ediyorum. Dinamik bir dilin çalışma zamanını hedefleyen bytecode'u özel bir işlemciye dönüştürme fikrinin son dönemde yeterince araştırılmadığını düşünüyorum. Neden bu yönün seçildiğini, bunun neden iyi bir fikir olduğunu ve uygulama sürecini öğrenmek isterim

  • Geleneksel bir VM veya yorumlayıcı olmadan Python programlarını doğrudan çalıştıran bir donanım işlemcisi inşa edilmiş. İlk benchmark'lar: GPIO gidiş-dönüş süresi 480ns, bu da MicroPython'dan 30 kat daha hızlı

  • Gerçekten çok havalı bir çalışma. Nihai özellik setinin, özel donanım üretmek yerine Python sözdizimine sahip type-safe bir dili native olarak derlemekten daha büyük olup olmayacağını merak ediyorum. Arka planda çalışan garbage collection söylendiği kadar kolay değil, ama bunu etkileyici derecede zor bir işi zaten başarmış biriyle konuşuyorum

  • Python'ı neden "compile" etmenin gündelik bir pratik olmadığını merak ediyorum. Yorumlayıcıların hızlı yineleme, uyumluluk vb. açısından iyi olduğunu anlıyorum, ama Python dünyasında derlemenin avantajlarından vazgeçip üretime "source" dosyalarını olduğu gibi bırakmanın neden kabul gören bir pratik olduğunu merak ediyorum

  • Çok ilgi çekici. Temel fiziksel sınırların ne olduğunu merak ediyorum. Yani zamanlama hassasiyeti, gecikme ve jitter. PyXL bytecode'unun girdilere ne kadar hızlı tepki verebildiğini. ARTIQ adında benzer bir şey var; Python kodunu 'embedded-level' performansla çalıştırıyor. ARTIQ kuantum fiziği laboratuvarlarında yaygın olarak kullanılıyor. Python kodu ile FPGA'nın birbiriyle iletişim kurması gerekiyor; bu teknik olarak zor ve birçok tuzak içeriyor. PyXL bunu kullanıcı için daha basit hale getiriyorsa, bu herkes için büyük bir avantajdır

  • C# çıktığında, birinin .Net bytecode'unu native olarak çalıştıran bir işlemci yapacağından emindim. İşlemciyi tasarlamak için hangi HDL'nin kullanıldığını merak ediyorum. İşlemcinin assembly dilinin paylaşılıp paylaşılamayacağını da merak ediyorum. ARM/x86/RISCV gibi mevcut işlemciler için bir bytecode derleyicisi yazmakla karşılaştırıldığında, işlemciyi tasarlayıp Python bytecode derleyicisi yapmanın avantajının ne olduğunu merak ediyorum

  • Python geliştiricilerine bir sorum var. Bu projeyi görüp etkileyici buluyorum ama dile dışarıdan bakan biri olarak anlamakta zorlanıyorum. a) Daha önce Python yüzünden sizi zorlayan şeyler neydi, b) Python bu iş için neden faydalı, c) Python'ın kendisi hakkında ne düşünüyorsunuz? Python 2 ve 3, virtual environment'lar, her sürümün kütüphaneleri vb. yüzünden zorlandım. PHP/Go geliştiricisi olarak ilgimi çekiyor ama bu sorunlar yüzünden çekingen kalıyorum

  • İnanılmaz bir çalışma. FPGA üzerinde harika bir uygulama gördüğüm her seferde Tabula'nın başarılı olamamış olmasına üzülüyorum. Son derece yenilikçi ve hızlı bir FPGA'ydi

  • ASIC'in Python'a özel bir mikrodenetleyici çalıştırdığını ve Python'a göre uyarlanmış microcode'a sahip olduğunu doğru mu anlıyorum, merak ediyorum. Python bytecode'unu microcode'a compile eden bir derleyicinin ve bunu destekleyen altyapının, ASIC'e derlenmiş bytecode'u ileten yapı olup olmadığını merak ediyorum. Eğlenceli. Doğru anlayıp anlamadığımı merak ediyorum