对于个人研究,我想比较两种微处理器的性能:Intel8051和Sparc Leon3。为了评估这些功能,通过ISS (指令集模拟器)执行一组具有代表性的功能。然后,我收集统计数据,并对从模拟中得出的数据进行简单的推理。
由于我使用的8051微控制器的内核既没有外部存储器,也没有高速缓存,所以我想禁用Leon3上的指令高速缓存和数据高速缓存,以获得与第一个类似的数据。
我正在使用TSIM来模拟Leon 3。我在数据表上看到,这使用了一个控制寄存器来设置缓存的行为。因此,我在基准测试中使用的函数中添加了内联汇编指令,该指令写入此寄存器并将高速缓存设置为禁用。我确信寄存器中的位被更改了,但当我进行模拟时,我看到缓存被写入。我可以看到这一点,因为我可以告诉模拟器的命令。
我来这里是想问你是否可以帮助解决这个问题,或者你有什么想法,因为我被困住了。
发布于 2021-10-22 06:42:06
我没有使用过TSIM,但我用下面的代码测试了实际的leon3硬件。
它可能不是您想要的,但我希望您可以将您的代码与我的代码进行比较,以便至少正确禁用缓存:)
I_cache_disable() {
asm(" set 0x0c, %g1;");
asm(" sta %g1, [%g0] 2 ");
}
D_cache_disable() {
asm(" set 0x03, %g1");
asm(" sta %g0, [%g0] 2 ");
}我希望这段代码能有所帮助。
https://stackoverflow.com/questions/44985654
复制相似问题