xultz escreveu:Legal, Sam, muito interessante saber que você está mexendo com isso, de quebra já responde a uma pergunta filosofal que vem sido feita há muitos e muitos séculos: esse trem desse Risc-V é bão mesmo?
Se você está se dedicando ao assunto, então é porque ele é sim. Deu até uma mega animada prá estudar e eventualmente fazer um deles piscar um led.
entao, faz um anos que eu estou trabalhando com um soft-DSP proprietario de 16 bits em FPGA. apesar de eu mesmo ter comecado a ideia e desenvolvido varios cores similares, meu colega de trabalho foi a fundo escovando bits e conseguiu algo assombrosamente eficiente! comecamos substituindo DSPs discretos e foi evoluindo... no ultimo projeto que fiz ano passado, implementei uma stack IP em assembler capaz de suportar centenas de canais RTP na FPGA! apesar de ser 16 bits, um unico soft-DSP rodando a miseros 64MHz consegue segurar de boas o ping flood de um core2 duo de 2GHz. mas tem seus problemas... comeca com o assembler: nao eh exatamente um bicho de sete cabecas, mas certamente teria sido bem mais simples implementar em C! mas o problema eh que nosso soft-DSP proprietario nao tem compilador C: pesquisei sobre a possibilidade de portar e pareceu impossivel. fui pelo caminho contrario, que seria pegar algo suportado e tentar implementar, mas nao pareceu que ia ficar bom com nada que o compilador suporta:
https://www.gnu.org/software/gcc/backends.htmle nem entrei na questao de patentes: mexer no GCC provavelmente iria requerer liberar o codigo (licenca GPL). usar uma arquitetura existente poderia infrigir patentes dessa arquitetura, salvo as mais antigas cujas patentes expiraram (68000, por exemplo). um soft-68000 com suporte a GCC tem umas 3000LUTs, roda a uns 40MHz no maximo e tem performance maxima de uns 20MIPS. nao eh ruim se considerar que eh 10x melhor que um 68000 tipico, mas eh bem fraquinho comparativamente com outras opcoes modernas. eu nao consigo, por exemplo, tirar codigo de um DSP discreto legado e colocar nele... comparativamente, nosso soft-DSP proprietario tem 600LUTs, consegue atingir a 133MHz e roda ateh uns 1000MIPS se vc for muito bom em paralelizar e otimizar codigo em assembler.
bom, quando tudo parecia meio perdido, eu fiquei sabendo do RISCV... foi meio que por acidente, na epoca que saiu o meltdown e spectre para x86. e mesmo assim, demorou meses para cair a ficha e entender conceitualmente como o negocio funcionava. um ponto chave era a licenca BSD, que possui o melhor dos mundos aberto e corporativo: livre para usar, livre para mexer, livre para optar nao abrir seus codigos secretos. comecei a testar com o picorv32, que eh um core aberto relativamente compacto (~1000 LUTs) e veloz (~150MHz em uma spartan-6):
https://github.com/cliffordwolf/picorv32compilei um cross-gcc para ele e magicamente funcionava!
infelizmente a implementacao nao era realmente tao boa quanto eu esperava: em 150MHz, ele rendia no maximo 50MIPS. fueh! mas pera, o RISCV define o set de instrucoes, nao a implementacao... e como eu jah tinha projetado outros processadores mais simples de 16 bits e conseguia uma boa relacao entre clock e performance, fui tirar a prova para ver se conseguia melhorar isso. um belo dia, partindo do zero, projetei um core RISCV que conseguia 75MIPS rodando em 75MHz. em uma noite! jah era uma melhoria de 50%, mas a vantagem maior era ter construido em torno de uma arquitetura de harvard e usar um conceito de bus mais eficiente, essencial para manter 1 clock/instrucao, ao menos operando dentro da FPGA.
bom, isso foi um ano atras e atualmente esse core consegue um maximo de 100MIPS em 100MHz na mesma spartan-6. ainda falta bastante coisa para poder substituir um 68000 ou coldfire, mas jah rola substituir DSPs e ter mais conforto colocando software embarcado em FPGA. e nesse meio tempo tambem rolaram varias coisas interessantes: surgiram novos cores RISCV para FPGAs e isso por si abalou as estruturas de licencas do ARM, MIPS e POWER!
os dois primeiros sao arquiteturas chuleh, mas o POWER come x86s no cafeh da manha e eh usado em supercomputadores:
https://www.networkworld.com/article/32 ... tml#slide1do top 10, 3 usam POWER, incluindo os 2 primeiros. mas a coisa nao eh simples para estes caras nao... comparativamente, basta dizer que a primeira implementacao free do POWER (no momento a unica existente eh um POWER8) possui 11 mil LUTs, ou seja, consome 11x mais area que um RISCV tipico. nao que nao tenha RISCV grande, de fato os maiores talvez sejam 20x maiores que que eu projetei, mas tambem existem alguns muito menores, talvez com 1/4 do tamanho. pelo tamanho, suponho que nao passe de 40 ou 50MHz. enfim, da mesma forma, existem alguns ARMs e MIPSes que consomem seus respectivos espacos e nao eh pouco.
o ponto chave eh que existem muitos cores RISCV:
https://riscv.org/risc-v-cores/ao inves de serem cores padroes como no caso do MIPS e ARM, ou entao de uma solucao pontual como no POWER, existe uma vasta variedade de cores RISCV que foram criados justamente pq os desenvolvedores originais nao acharam algo que batesse com seus requisitos. e isso eh apenas a primeira onda, ou seja, pessoal que partiu do zero e comecou a testar em FPGA, com performances entre 50 e 550MHz. enquanto eu coloco um RISCV rodando a 100MHz em uma FPGA, tem cara que tah lah na frente colocando 1800 RISCV rodando a 550MHz em uma FPGA:
https://twitter.com/jangray/status/1161314901500915712e a medida que as tecnicas se refinam e se confirmam validas, a tendencia agora eh vir uma segunda onda justamente de cores amplamente testados em FPGA e implementados em ASICs, subindo a performance para 2.5GHz, caso dos chips anunciados pela hawei, western digital, nvidia e, quem diria, ateh mesmo a amada microchip do @fabim
https://www.electronicdesign.com/indust ... -mate-fpgabom, no meu caso eh questao de sobrevivencia: jah trabalho em tempo integral com FPGAs, superei o desafio do DSP discreto, matei dezenas de ASICs e para ir adiante preciso superar a barreira do processador discreto e do compilador C. para o pessoal de microcontroladores e outras areas, a motivacao provavelmente eh menor. mas acho que independente da area, eh apenas uma questao de tempo para o RISCV chegar.
detalhe interessante: o primeiro chip feito de nanotubos de carbono eh um RISCV:
https://techreport.com/news/3465249/res ... nanotubes/