首先要考慮的是你關心的是哪方面的性能。你更關心的是你想要的絕對吞吐量(每秒性能),還是每MHz的性能?在像機器視覺這樣的應用中,由于是連續運行的,需要使用復雜的算法,你很可能會關心絕對吞吐量。然而,如果你有一個低占空比的無線傳感器節點,當節點喚醒時,你會希望它在盡可能少的時鐘周期內處于活躍狀態。這意味著你會關心每MHz實現多少計算量。
大約40年前,人們用MIPS(每秒數百萬條指令)來比較處理器,但問題是——什么是指令?指令在復雜性和架構上有很大的不同,因此與RISC指令相比,CISC處理器中的操作通常需要更少的周期。MIPS只有在比較相似體系架構的產品時才有用,有些人稱之為“毫無意義的性能指標”!
另一個考慮的是你最關心的是哪種計算類型。是整數運算還是浮點計算?過去,MFLOPS(每秒百萬浮點操作)是一個流行的衡量標準。但同樣,這里的 "操作"又具體指的是什么?
如今,綜合基準已經普遍用于處理器IP內核。它們具有以下特征:
5. 可將基準測試結果表示為一個數字
Dhrystone 基準是在過去36年中一直很流行的基準。它的名字是一個文字游戲,將它與曾經流行的Whetstone基準進行比較。Whetstone專注于浮點運算,而Dhrystone專注于整數和字符串運算。Dhrystone基準測試結果通常被引用為DMIPS(Dhrystone得分除以名義上的1 MIPS的機器的分數)。不過該基準一直受到批評,因為現代編譯器可以優化掉部分工作,這意味著它部分地測試了編譯器而不是處理器性能。
對于浮點運算,目前很少使用Whetstone,更可能使用LINPACK。LINPACK涉及使用浮點數對矩陣進行LU分解。其結果用MFLOPS表示。
另一個流行的嵌入式應用合成基準是EEMBC的CoreMark®,其目標是進行代表嵌入式整數處理需求的操作。它們包括列表處理、矩陣操作、有限狀態機和CRC。
正如你所見,有各種各樣的基準測試系統,每一種都適合于度量略有不同的性能類型。那么,在為項目選擇處理器IP時,如何評估性能呢?如果你的嵌入式軟件具有與綜合基準相似的操作,那么該基準可以快速而簡單地為你提供有用的初始指導。然而,通常這樣的基準測試引用每MHz,例如CoreMark/MHz。對于希望在每個周期獲得良好結果的低功率應用,通常每MHz是一個很好的指示。但是,如果你正在尋找更高的絕對性能,這可能會帶來誤導。相反,你應該考慮,比如說,在你的目標時鐘頻率下可以達到的CoreMarks。
如果你的主要問題是浮點性能,請記住DMIPS和CoreMark是整數基準。您最好在浮點基準(例如LINPACK)的基礎上比較內核。
最終,投入時間在處理器核心上運行現實的軟件以評估該核心是否能提供你所需要的性能總是有意義的。如果你正在研究RISC-V,那么對你的軟件進行分析,了解計算瓶頸在哪里,也可以評估添加自定義指令是否能提高性能。
https://codasip.com/2020/08/20/understanding-the-performance-of-processor-ip-cores/