都在48M主頻下跑同一個(gè)dhrystone測(cè)試,CH32V305運(yùn)行事件17ms,CH32X035運(yùn)行時(shí)間51ms,差了三倍。請(qǐng)問(wèn)是否正常?
都使用GCC12編譯,-Os優(yōu)化,開(kāi)啟-flto,V4C和V4F差別這么大嗎?
都在48M主頻下跑同一個(gè)dhrystone測(cè)試,CH32V305運(yùn)行事件17ms,CH32X035運(yùn)行時(shí)間51ms,差了三倍。請(qǐng)問(wèn)是否正常?
都使用GCC12編譯,-Os優(yōu)化,開(kāi)啟-flto,V4C和V4F差別這么大嗎?
在X035的測(cè)試程序上把Dhrystone測(cè)試函數(shù)全部加Highcode(在RAM中運(yùn)行)看下,理論上會(huì)提高一倍性能左右(Coremark測(cè)試結(jié)果)。因?yàn)閂305是有零等待閃存區(qū)的,不必用Highcode,而X035系列沒(méi)有,X035系列的FLASH在48M下有2個(gè)等待。如果把測(cè)試代碼全部移動(dòng)到RAM中運(yùn)行,閃存速度帶來(lái)的影響會(huì)減小很多。
X035加Highcode可以參考例程里的RunInRam,主要是要替換啟動(dòng)匯編和鏈接腳本,然后給需要在內(nèi)存中運(yùn)行的加
__attribute__((section(".highcode")))
屬性即可。
將dhrystone代碼放到.highcode以后,執(zhí)行時(shí)間從51ms增加到了56ms,更慢了。
理論上不應(yīng)該會(huì)更慢,等官方人員解答一下吧
您好,在48MHz主頻下,CH32X035會(huì)有一個(gè)2等待的延遲,你可以都設(shè)置成8M的主頻試一下,8M主頻下,注意CH32X035的FLASH設(shè)置成零等待,這種情況下,測(cè)試結(jié)果應(yīng)該是差不多的,若結(jié)果差異較大,可測(cè)試代碼發(fā)我(lzs@wch.cn)具體看一下
@TECH62,代碼在SRAM中運(yùn)行也會(huì)有2等待延遲嗎?
您好,程序放在SRAM里,取指令和訪問(wèn)數(shù)據(jù),里面總線也會(huì)有沖突,都在同一個(gè)RAM,無(wú)法做到0等待,你可以按照我前面回復(fù)說(shuō)的都在8M主頻試一下
應(yīng)用本身對(duì)性能有一些要求,48M主頻降到8M主頻是無(wú)法接受的
前天試了X033,flash延遲比較大,12M主頻和V303基本一樣,24M略低,48M相對(duì)24M提升不大。