segunda-feira, 17 de abril de 2017

É Brasil! 1600Mhz! Recorde de overclock no Raspberry Pi Zero é nosso! Primeiro lugar em pontos no HWBOT prime!

overclock extremo no Raspberry Pi Zero

É com alegria que anuncio nosso recorde mundial de overclock no Raspberry Pi Zero com 1600Mhz. Não somente isso, ultrapassamos o primeiro lugar em pontos do HWBOT prime para o SoC BCM2835!

Há alguns dias eu postava em nossas redes sociais a imagem abaixo com a legenda "Hoje é dia de maldade", a maioria pensou que o componente havia caído, mas na realidade ele foi removido de propósito. Era o início de uma modificação de hardware para overclock.

overclock extremo no Raspberry Pi Zero
Como tudo começou

 

Os recordes


Há alguns meses atrás realizei testes preliminares de overclock no Raspberry Pi Zero, ainda sem qualquer modificação de hardware. Em 1100Mhz o sistema pareceu estável, já em 1200Mhz só completava o boot ocasionalmente (vcore em 1,4v).

O recorde anterior de overclock até onde se tem conhecimento era do Niuulh com 1550Mhz (mas baixa pontuação, somente 608.5 pps).

Nossa configuração bateu não somente esse recorde como diversos outros do SoC BCM2835, além de bater o recorde de pontos no HWBOT com 855,04! O primeiro lugar em frequência desse SoC continua sendo do RRainbo com 1620Mhz (Raspberry Pi B+) mas com menor pontuação (um detalhe é que ele cita ter utilizado frequências de memória 600Mhz e core 600Mhz).

Nosso recorde inicial enviado para o HWBOT havia sido de 1560Mhz, com memória à 700Mhz, core_freq à 625Mhz e 844,01 pontos.

Mas queríamos mais, muito mais. Eu não estava satisfeito com tanto trabalho e tempo para chegar somente até aí.

Foi então que atingimos a marca de 1600Mhz na CPU, 700Mhz na memória, 625Mhz core_freq, 600Mhz gpu com a melhor rodada do hwbot marcando 855,04 pontos! O que o software HWBOT prime faz é calcular quantos números primos por segundo se consegue calcular (pps).  O resultado pode ser conferido aqui.

overclock extremo no Raspberry Pi Zero


Os desafios


Não foi uma tarefa fácil. A barreira inicial para ir bem além dos 1200Mhz estava no vcore, a alimentação da CPU. Com tensão controlada via software, o máximo que se consegue ir nesse SoC é 1,4v com over_voltage configurado em 8.

A saída é alimentar diretamente a CPU, com uma fonte de energia externa. Para realizar isso no Raspberry Pi Zero é necessário remover uma bobina SMD perto do SoC marcada como L3. Após removida temos dois contatos, sendo um da saída do SMPS do SoC, VDD_OUT e a outra a entrada de alimentação da CPU VDD_CORE.

overclock extremo no Raspberry Pi Zero

No esquemático abaixo do antigo Modelo B rev 2.1 é possível ter uma ideia de como é feita a ligação.

overclock extremo no Raspberry Pi Zero

Para minha infelicidade, não possuo uma fonte precisa dos seus 6 dígitos. Resolvi utilizar um regulador do tipo step down LM2596 e com entrada de 5V. O VCC (+) foi ligado no local apropriado e o GND no pino mais próximo possível (pode ser visto em outra imagem). É possível notar também a solda da conexão TV, que foi nosso output em um LCD com conexão RCA para saber o que estava ocorrendo.

overclock extremo no Raspberry Pi Zero
VCC

Os primeiros testes foram realizados até mesmo sem dissipador, começando em 1300Mhz (com tensão ainda meio baixa), subindo para 1400Mhz. Posteriormente adicionei um dissipador e refrigeração simples. Nesse ponto lembro-me de ter conseguido já chegar na casa dos 1500Mhz-1510Mhz com cerca de 2-2,05v. A temperatura embora subisse rápido, não era alarmante (ao menos para o sensor do SoC) e não me recordo de ter passado de 45 graus. Obs: adesivo do dissipador foi removido e utilizei pasta térmica comum.

overclock extremo no Raspberry Pi Zero

Apesar de conseguir ir além dessa marca no boot, não era possível rodar o hwbot acima disso sem que a placa travasse, sistema desse crash, kernel panic, etc.

Segundo informações antigas do engenheiro dom no fórum do Raspberry Pi, testes em laboratório levaram a descoberta de que a cada 100mV de tensão era possível subir cerca de 100Mhz. Embora não seja uma conta exata, percebi mais ou menos isso em certas ocasiões. Outro detalhe é que eles testaram o SoC até 2,3v sem fritar.

Voltando ao nosso overclock, temos cerca de 1500Mhz à 2,05v. Para aumentar a frequência basta eu aumentar a tensão correto?! Entretanto há um pequeno problema, acima de 2,08v o SoC não dava mais boot, nem a imagem colorida de testes da GPU aparece. Outros que já realizaram esse tipo de modificação lidaram com problemas parecidos, mais ou menos nessa faixa de tensão.

A partir daí o papo de resfriamento do SoC começa a ficar sério. Há algum tempo atrás comprei uma pastilha peltier TEC12706, um dos motivos foi justamente para esse overclock, adquiri também um outro Raspberry Pi Zero especificamente para isso. Uma forma barata de se atingir baixas temperaturas sem ter que lidar com nitrogênio líquido, embora a nossa opção também trouxesse problemas, como a condensação.

Uma questão que não havia percebido é o fato do slot microsd ser ligeiramente mais alto do que o SoC e estava me causando problemas para encaixar no peltier. Resolvi o problema cortando um pedaço de alumínio para ficar entre eles, não ficou em um tamanho perfeito (foi no olho mesmo) mas serviu.

overclock extremo no Raspberry Pi Zero
Comparação com o dissipador anterior

Na foto abaixo é possível ver o suporte já com pasta térmica dos dois lados e o GND soldado que não vimos antes.

overclock extremo no Raspberry Pi Zero

Para se atingir temperaturas realmente baixas é necessário um bom dissipador do lado "quente" do peltier, utilizei um antigo dissipador que era do Athlon XP 2600 stock. Inicialmente utilizei um fan pequeno fixado de um dos lados. Para se trabalhar melhor com todo o esquema (gambiarra? a ideia aqui é bater recorde e não beleza :) ) produzido deixei tudo na posição contrária.

overclock extremo no Raspberry Pi Zero

Posteriormente com a necessidade de melhor refrigeração, troquei o fan por um maior.

overclock extremo no Raspberry Pi Zero

Em uma dessas últimas configurações (já com peltier) foi que o recorde de 1560Mhz (já batendo o recorde do Raspberry Pi Zero anterior de 1550Mhz) foi atingido. O problema da condensação ainda era leve, sendo mais em cima da pastilha peltier do que outra coisa.

A partir daí subir mais a frequência se tornava cada vez mais complicado, embora até realizasse o boot, em geral o sistema ia para o brejo antes ou na hora do benchmark do hwbot. Eu precisava resfriar muito mais. Substituir o dissipador por um maior ou melhorar a ventilação eram algumas das opções, entretanto eis que tive uma ideia e pensei: Por que não mergulhar toda parte de baixo do dissipador em água gelada salinizada?! Para quem não sabe, a água comum tende a congelar em cerca de 0 C° entretanto a água salgada dependendo da mistura pode chegar à congelar somente em -20 C° graus! Eu realmente não calculei a mistura, só adicionei o tanto que achei necessário e deixei líquido suficiente para conseguir mergulhar o dissipador nele.

overclock extremo no Raspberry Pi Zero

No primeiro boot com essa solução consegui 2,4 C° no SoC. Obs: Ignore os volts, isso é do over_voltage interno, estamos alimentando externamente.

overclock extremo no Raspberry Pi Zero

Com essas temperaturas, a condensação com o tempo começou a ficar crítica.

overclock extremo no Raspberry Pi Zero

Criei um script no boot para retornar algumas informações com o vcgencmd (ferramenta mais confiável para ler a frequência, etc) e para executar o HWBOT. Uma observação é que nem toda execução do HWBOT irá retornar exatamente o mesmo resultado, embora tenha que ser próximo.

Com essa configuração, em uma das execuções conseguimos bater o recorde de pontos no HWBOT prime, com 855,04. As imagens da tela não estão muito legais pois na hora eu só queria um output, além de ser uma tela pequena de resolução baixa (utilizei meu antigo LCD) não configurei uma fonte maior. O software de benchmark grava um arquivo onde é necessário enviar no site para validação dos pontos.

overclock extremo no Raspberry Pi Zero

A tensão utilizada nesse momento era cerca de 2,06-2,07v. A temperatura como pode ser vista na imagem estava em cerca de 15 C° e 16,4 C° após a execução. Nesse ponto dos testes percebi que o sistema de refrigeração atual estava conseguindo manter a temperatura nos 15 graus mesmo após eles.

Atualização: Finalmente saiu um vídeo sobre o overclock:


 

O bloqueio dos 1600Mhz


Ir além dos 1600Mhz e bater o recorde do SoC era também um objetivo. Há três problemas atuais para se fazer isso.

1- O firmware que antigamente era bloqueado para os 1500Mhz hoje está com limite em 1600Mhz
2- O firmware modificado start_2ghz.elf fornecido em 2014 não funciona (ao menos atualmente) no Raspberry Pi Zero apesar de ter o mesmo SoC (eu testei).
3- Segundo o engenheiro dom haveria um limite no PLL de 3.2GHz sendo necessário ao menos um divisor por 2, o que faria com que frequências acima de 1600Mhz na teoria não funcionarem de forma trivial. De todo modo na teoria há um recorde de 1620Mhz.

No momento estou satisfeito com os recordes atingidos, não somente por representar o EverPi como também o Brasil.

Posteriormente irei tentar conseguir um firmware atual desbloqueado ou talvez o aumento de limite no stock para ver se realmente será possível ir além.

Ainda não comprou um Raspberry Pi? Veja aqui nossas dicas e indicações para comprar seu Raspberry Pi.

Referências:
https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=69929
http://elinux.org/RPiconfig
https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/Raspberry-Pi-Rev-2.1-Model-AB-Schematics.pdf
Emoticon utilizado na imagem: https://s-media-cache-ak0.pinimg.com/originals/31/fb/09/31fb09b4799d8d5ba2821d93303517b5.png

24 comentários:

  1. PARABENS MANO, excelente ver o seu esforço... muito legal

    ResponderExcluir
  2. Parabéns pelo trabalho e criatividade na hora da refrigeração!
    E vai Corinthians!.. digo.. Brasil!!!

    Abs
    Eduardo - Guarulhos SP

    ResponderExcluir
  3. MTo bom parabens foi legal saber como foi feito, problema q os gringo sabem como ele fez e vai fazer o msm, ou ate msm ja poder nitrogenio liquido msm como ele flw

    ResponderExcluir
  4. Meus parabéns pela conquista, e o Sr conseguiu ser featured no Hackaday, então parabéns novamente.

    http://hackaday.com/2017/04/18/brazil-wins-the-raspberry-pi-overclocking-olympics/

    ResponderExcluir
  5. Parabéns!!
    Fiquei sabendo pela matéria do Hackaday!

    ResponderExcluir
  6. Cheguei aqui pelo Hackaday...

    Rapaz, não sabia que o LM2596 aguentava um tranco desses... E eu aqui com medo de usar um pra alimentar meu Pi3 com ele haha.

    Não sou especialista no assunto, mas não daria pra lidar com o problema da condensação impermeabilizando a placa com epoxi ou silicone?

    ResponderExcluir
    Respostas
    1. Então, para alimentar o RPI normalmente sempre acreditei que seria normal, mas confesso que fiquei com receio de ter algum problema para alimentar direto o vcore pois esse precisa de uma alimentação bemmm estável, infelizmente era o que eu tinha e acabou funcionando (apesar de eu ter colocado um capacitor adicional (embora não fosse low ESR)) para ajudar. A tensão nem sempre ficava extremamente estável (digo na faixa de 10mv~), mas foi suficiente.

      Em relação a condesação não me preocupei muito em resolver isso, entretanto pode ser que sua ideia funcione. Pelo que vi o pessoal que faz overclocks em PCs utiliza coisas como armaflex e um tal de eraser (que parece um epoxi em cima da placa, mas é borracha).

      Excluir
  7. Que show!!! Parabéns!!!!!👏👏👏👏👏👏

    ResponderExcluir
  8. Congratulation! Sorry I do not know Portuguese; I read your post through Google translation! I am also stepping into the overclocking community, and I think your achievement is very cool. I have a Raspberry Pi 3, and using various home-made heatsinks and alcohol-cooled techniques, I was able to get my Pi to 1530 MHz with 3 cores enable. I am trying to get all 4 cores, but without an external power source to the cpu, I'm unable to do so. If you happen to know where I can get supply and where to apply the external voltage, it would be much appreciated. Thank you!
    Link to my Hwbot prime submission: http://hwbot.org/submission/3548643_

    ResponderExcluir
    Respostas
    1. Hi, thank you. I have not done this in rpi3 yet, so i don't really know here put supply in. But i know there's a mod on rpi2 to change the reference voltage that MAYBE works on rpi3 too: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=6201&start=950#p765205. Btw the power supply that i used is the LM2596 with 5v on input. Not the best choice but works fine on rpizero. Nice frequency and keep going!

      Excluir
    2. Hey thank you for the reply. I will definitely try out the board you suggested, and see how that go. I just got up to 1st place on hwbot.org yesterday after some trials and errors, now I want to see how much the pi can handle with external voltage:
      http://hwbot.org/submission/3551970_

      Excluir
    3. Hi, nice! But this record is for RPI2 ou RPI3? I asked because hwbot put on BCM2836 list. But i see you got the record for BCM2837 too, nice.

      Excluir
    4. Thank you. I notice that if you enter in the submission box as "Raspberry Pi 3", the page will redirect your submission to a separate chart. However, hwbotprime itself is unable to distinguish between the old RPi2 and the new RPi3, with almost the exact performance recorded at the same frequency. My guess is since Raspbian is still a 32bit OS, hwbotprime treats the two pi as the same chip until they release the new 64bit OS.

      Excluir