Może komuś się przyda:
kupiłem płytkę CH32V003 dla RISC-V Nano i programator WchlinkeE 1v3,
całość działa pod MounRiver studio.
Przy zegarze 48 MHz:
szacunkowo szybkość majtania GPIO (przykład GPIO):
while (1) { GPIO_WriteBit(GPIOD, GPIO_Pin_6, (i == 0) ? (i = Bit_SET) : (i = Bit_RESET)); }
to około 0.93 MHz
Dodanie 2 floatów (32 bity) zajmuje od 115 do 167 cykli, mnożenie 516-831 cykli
(sprawdzałem SysTick->CNT;)
Czyli mamy 57 kflops dla mnożenia i 280 kflops dla dodawania. O ile pamiętam
arduino miało w podobnym teście 22 kflops.
Dodanie 2 liczb u8 też trwało koło kilkunastu cykli
Pętla typu
for (ii=0; ii<255; ii++)
for (jj=0; jj<255; jj++)
{
kz=kx+ky;
}
dla zmiennych typu u8 wykonuje sie 494 ns na obrot, czyli jakieś 24 cykle na obrót.
Samo mounriver studio akceptuje double, działają 3.5x wolniej niż floaty.
Miałem problemy z wyświetlaniem wyników działań na floatach printfem.
Jak widać te risci nie są tak szybkie jak mogłoby sie wydawać, chociaż same
scalaki są oczywiście tańsze od avr.
kupiłem płytkę CH32V003 dla RISC-V Nano i programator WchlinkeE 1v3,
całość działa pod MounRiver studio.
Przy zegarze 48 MHz:
szacunkowo szybkość majtania GPIO (przykład GPIO):
while (1) { GPIO_WriteBit(GPIOD, GPIO_Pin_6, (i == 0) ? (i = Bit_SET) : (i = Bit_RESET)); }
to około 0.93 MHz
Dodanie 2 floatów (32 bity) zajmuje od 115 do 167 cykli, mnożenie 516-831 cykli
(sprawdzałem SysTick->CNT;)
Czyli mamy 57 kflops dla mnożenia i 280 kflops dla dodawania. O ile pamiętam
arduino miało w podobnym teście 22 kflops.
Dodanie 2 liczb u8 też trwało koło kilkunastu cykli
Pętla typu
for (ii=0; ii<255; ii++)
for (jj=0; jj<255; jj++)
{
kz=kx+ky;
}
dla zmiennych typu u8 wykonuje sie 494 ns na obrot, czyli jakieś 24 cykle na obrót.
Samo mounriver studio akceptuje double, działają 3.5x wolniej niż floaty.
Miałem problemy z wyświetlaniem wyników działań na floatach printfem.
Jak widać te risci nie są tak szybkie jak mogłoby sie wydawać, chociaż same
scalaki są oczywiście tańsze od avr.