From High-level Radio Protocol Specifications to Efficient Low-level Implementations via Partial Evaluation
Software-defined radio (SDR) is a challenging domain for language designers. To be useful in the real world, radio protocol implementations must operate at high data rates with low latency, yet to be useful to implementers, a language should allow programmers to express algorithms at a high level of abstraction without having to worry about the very low-level details that are necessary for meeting performance requirements. Ziria demonstrated that a high-level language for writing wireless physical layer (PHY) protocols could be competitive with hand-written C++, but only in a context where performance-critical computations, such as FFT and Viterbi, were still written in C++ and accessed via a foreign function interface.
We demonstrate that a new implementation of Ziria, embodied in the kzc compiler, allows even performance-critical blocks such as FFT and Viterbi to be written in a high-level language without sacrificing performance. Due to the ability of kzc to perform whole-program optimizations, a radio protocol pipeline using Viterbi written directly in Ziria can even outperform an implementation that calls out to C++. The contributions of this paper fall into two categories. First, we describe two new optimizations in kzc, both of which are critical for wringing performance out of high-level code: an aggressive partial evaluator for Ziria programs, and an automatic lookup-table (LUT) generator. Second, we show how to leverage these optimizations to implement three performance-critical blocks directly in Ziria: Viterbi decoding, the Fast Fourier Transform (FFT), and the inverse Fast Fourier Transform (IFFT).
Thu 7 SepDisplayed time zone: Belfast change
10:30 - 11:30
|From High-level Radio Protocol Specifications to Efficient Low-level Implementations via Partial Evaluation
|Destination-Passing Style for Efficient Memory Management