Ring Oscillators

This page collects GPIO and communication ring oscillator timing tests for embedded systems (the prior page is here).

GPIO

The GPIO test measures how quickly pins can communicate with a processor core; this is relevant for implementing real-time algorithms that are not supported by processor peripherals. In this, two pins are connected; a bit is output on one, read on the other, inverted in software, and the loop repeated, with the frequency of the resulting oscillation reported. Twice this frequency is the rate of reading, modifying, and writing to pins (plus the loop overhead).

frequency (MHz) processor description date
60.00 iCE40UP5K iCEBreaker V1.0e, 120 MHz, Verilog (notes) September 2021
23.08 IMXRT1062 Teensy 4.1, 600 MHz, Fast, GPIO August 2021
16.66 PocketBeagle C, PRU March 2019
4.616 ATSAME54 C, SRAM (aligned) January 2021
4.000 ATxmega8E5 C, VPORT October 2015
3.810 ESP32-WROOM C, GPIO December 2020
3.737 ATSAMD51 C, PORT November 2018
3.067 Raspberry Pi 4 C, bcm2835, Buster December 2020
2.817 Raspberry Pi Zero C, bcm2835, Buster December 2020
2.528 ATSAMD11C C, IOBUS November 2020
2.172 AVR128DB32 C, VPORT December 2020
1.808 ATtiny412 Arduino, DigitalReadFast/WriteFast March 2021
1.808 ATtiny412 C, VPORT November 2020
1.171 ATSAMD11C C, PORT November 2020
1.056 ATtiny412 C, PORT November 2020
0.345 Raspberry Pi 4 Python, RPi.GPIO, Buster March 2021
0.331 ATtiny412 Arduino, digitalRead/Write November 2020
0.153 Raspberry Pi 4 C, libgpiod, Buster December 2020
0.153 Raspberry Pi 4 C, gpiolib, Buster December 2020
0.029 Raspberry Pi 4 Python, gpiozero, Buster March 2021


Communication

The communication test measures how quickly two nodes can exchange messages; this is relevant for implementing real-time and high data-rate algorithms. In this, the "from" node sends a byte to the "to" node, which adds 1 to it and sends it back. This is repeated many times, and the number of round trips is divided by the total time. Twice that frequency is approximately the byte rate in one direction, and 16 times that frequency is approximately the bit rate in one direction.

frequency (MHz) from link to date
0.250 iCE40, Verilog (notes) tx/rx jumpers (3.3V) iCE40, Verilog September 2021
0.010 i7-8700T, C, termios USB 2.1 ATSAMD11C, Arduino, SerialUSB April 2021
0.007 i7-8700T, Python, pySerial USB 2.1 ATSAMD11C, Arduino, SerialUSB March 2021