Don’t try this at home: overclocking RP2040 to 1GHz

David Bell is one of our interns, and is equipped with one of the office Peltier coolers. He decided last week to indulge in some experimentation to find out how much he could overclock a RP2040. The results surprised us.

It turns out that with some very special treatment, RP2040 can be overclocked to be shockingly fast. And overclocking it as David describes here will also stop it working altogether – but it’s all about the journey, right? Here’s David to tell you more.

RP2040 front and back view
How could David do such a thing to our beautiful chips?

One of the things I really like about RP2040 is how useful it is for learning about computing. Whether it’s picking up the basics of MicroPython, interfacing hardware with the GPIO, or learning how to write C for an embedded application, it has a lot to offer. One thing I’ve been using RP2040 to learn more about is overclocking, and as it turns out, RP2040 makes for a fantastic overclocking platform capable of reaching 1GHz, even outperforming the original Raspberry Pis.

To compare performance between the Pi and the Pico, I used the Dhrystone benchmark, an industry standard created by Reinhold Weicker in 1984. The version I used on the Pico was adapted for the RP2040 C/C++ SDK by Roy Longbottom, a veteran benchmarker. I also used Roy’s executables to run Dhrystone on a Pi 1 Model B and a Zero W. It should be noted that Roy’s Dhrystone scores for the Pi 1 at 700MHz and 1GHz are higher than the scores I was able to achieve – with the Pico at 1GHz still beating the Pi at 700MHz but losing out to the Pi at 1GHz.

Dhrystone scores on the Pico (using RP2040) and the Pi 1 and Zero W (both using BCM2835)

RP2040’s system clock runs with a max speed of 133MHz out of the box – a very respectable frequency for a microcontroller, but a long way off from the gigahertz frequencies of modern computers. Overclocking can help close that gap, but to get all the way up to 1GHz every trick in the book is needed to really push RP2040 to its limits (and very much beyond).

Overclocking basics: process, voltage and temperature

Before we go any further, it’s important to note that running your RP2040 outside of the limits given in the RP2040 datasheet will void your warranty, so if you decide to overclock your RP2040, continue at your own risk!

There are three key factors that determine the frequency of any processor – process (which can be thought as the inherent speed of the silicon), voltage, and temperature. A processor’s base frequency will reflect the worst case scenario for process, voltage and temperature, as processor manufacturers need to be able to guarantee that the base frequency will be met in all conditions. Overclocking is used to unlock the full performance of a given chip by increasing the frequency as much as the chip’s process will allow (for a given voltage and temperature).

pico rp2040
Stop scrolling if you don’t want to see a scorched Pico…

Overclockers will often try to maximise frequency by lowering the temperature of their processor and increasing the voltage. To further increase their chances, they might try to find a ‘golden chip’, a chip with a particularly fast process. On RP2040, process can be compared across chips by finding the chip with the highest ring oscillator frequency for a given voltage and temperature.

Getting to 1 GHz on RP2040

To get the most out of overclocking on RP2040, there are a couple of tricks that are helpful to get to higher frequencies. The first is copying the overclocking script to RAM, as the SPI flash used by RP2040 can’t keep up once RP2040 exceeds about 260 to 270MHz. The other trick is using the ring oscillator as the system clock, which is able to dynamically change frequency depending on voltage and temperature, meaning that it will always run as fast as the chip allows. This often means that you can get a small advantage over using the default crystal oscillator. However, to get the most out of the ring oscillator, it’s worth changing a few of its parameters: setting the divider to 1, the number of stages to 2, and the drive strength to maximum will maximise the frequency. For more details on how to do all of the above, I’ve put the scripts I used on GitHub.

In my overclocking attempt, I tried to maximise the voltage I could supply to the RP2040 by cutting the tracks on the Pico between the VREG_OUT pin and the DVDD pin. The DVDD pin supplies the voltage to the RP2040, so I soldered on connections to an external power supply to control RP2040’s core voltage directly.

The Pico after the overclocking attempt

To minimise temperature, I used a Peltier cooler to get the temperature down to -40°C. Once the chip was thoroughly frozen, I began to increase the voltage. To get to 1GHz, I had to increase the voltage all the way to 3V, a massive increase from the default 1.1V. However, the chip didn’t survive long at 3V. I was able to run Dhrystone a couple of times, but after being at such a high voltage for about two minutes, the chip duly died, and hasn’t been able to turn on since.

So, it’s official. Raspberry Pi silicon can outperform a Raspberry Pi, if that Raspberry Pi is 10 years old and the RP2040 is willing to sacrifice itself in the process. In terms of practical usage, I can’t think of any reason someone would want to overclock RP2040 to the point where it fries itself. But, just because you shouldn’t, doesn’t mean you mustn’t. 

20 comments
Jump to the comment form

Avatar

Now I feel SO much better about overclocking my bat detector to 158MHz!

Reply to Phil Atkin

Avatar

p.s any articles available to show us how to underclock below 10MHz?

Reply to Phil Atkin

Avatar

This is very interesting. Is it actually possible to overclock the processor to a frequency of > 700 Mhz?

Reply to OSoft Software Technologies

Avatar

Which microprocessor is used in Raspberry Pi Pico?

Reply to Rifat

Avatar

It’s a pair of arm cortex m0+ cores with a lot of peripherals

https://en.wikipedia.org/wiki/RP2040

Reply to Graeme Winter

Avatar

Check the RP2040 data sheet linked in the paragraph after the heading “Overclocking basics: process, voltage and temperature“ for the answer to this and lots of other useful information.

Reply to Infostud

Liz Upton

It’s a microcontroller, not a microprocessor. Pico is a dev board for RP2040, which is our in-house silicon, designed here at Pi Towers in Cambridge. Documentation about the chip is here if you want to dig in.

Reply to Liz Upton

Avatar

Raspberry own RP2040 😋-
Take a look at here more info: https://www.raspberrypi.com/products/rp2040/

Reply to salman faris

Avatar

I wonder what kind of stable/non-destructive overclock one could achieve with various cooling solutions. I know it depends on a lot of factors, but it’d be nice to know what people are able to achieve.

If the spi flash can’t keep up with >260-270 MHz, I’d be interested to know what it takes to get to 250 MHz. Can you get away with a small heat sink?

I’m tempted to try this out…

Reply to Abe Dillon

Avatar

So, have you tried to archieve the maximum stable overclock frequency at which the RP2040 _doesn’t_ die ?
And if yes, what frequency and voltage, etc., is it ?

Reply to att

Avatar

That’s my question too: how fast can you drive it WITHOUT killing it?

Reply to John Weiss

Avatar

> But, just because you shouldn’t, doesn’t mean you mustn’t.

A man after my own heart.

Reply to Jeff Geerling

Avatar

Ah, I was hoping you would see this.

Reply to infinitytec

Avatar

Congrats! We shall add Pico to our next round of liquid Nitrogen party using your methodology.

Reply to CooliPi

Avatar

Hey! The pico has a second CPU loitering around doing nothing when the ‘zero W only has one CPU…. :-)
The “it died after a few minutes” means that it can actually run at that voltage. Now 3V is pushing it, I’d suggest being a bit more modest maybe 2.2… 2.5V. And then you need a proper heatsink/cooling solution on the CPU to keep it at -40 while it is running.

Reply to Roger Wolff

Avatar

Now the question is: how did it die? Heat alone would be borderline manageable. Perhaps.
But if electron migration due to higher voltage is to blame there isn’t much one could do.

Reply to Robert Martinu

Avatar

It seems that water could condensed on the circuit. So if you submerged it in an oil or hydrocarbon that has a viscosity of water and you cooled that down you could run it faster by keeping the chip cold but in a non conductive fluid that would not allow ice formation.

Reply to Travis Bryant Moore

Avatar

Perfectly reasonable, to test the max frequency. Now that we know, I’m sure a lot of modders will want to clock it at a much more stable amd longer lasting 500Mhz, or 333Mhz.

Reply to ProDigit

Avatar

It’s quite an impressive overclock, 1Ghz on that chip is a lot, going from a measly 133Mhz to 1Ghz…wow

Reply to Denisa

Avatar

Could Raspberry pi silicon be used in the mainstream raspberry pi computers(or zero series at least)

Reply to Anonymous

Leave a Comment