在尝试读取寄存器值之前添加NOP

问题描述 投票:0回答:0

添加

nop
是在再次从寄存器地址读取之前添加一些延迟以获得预期值并退出 while 循环的好主意吗? 或者在RISC-V机器中继续读取寄存器直到
read_reg_val != 1
以提高性能?

我的思考过程是

Solution 1
是一个更好的主意,等待1个时钟周期,而不是像
Solution 2
那样不必要地读取寄存器。

这两种解决方案的

pros
cons
会是什么?

Solution 1

uint32_t read_reg_val = (*((volatile const uint32_t *)(reg_addr))); 
while (read_reg_val)
{
  asm("nop");
  read_reg_val = (*((volatile const uint32_t *)(reg_addr))); 
}

Solution 2

uint32_t read_reg_val = (*((volatile const uint32_t *)(reg_addr))); 
while (read_reg_val)
{
  read_reg_val = (*((volatile const uint32_t *)(reg_addr))); 
}
c assembly embedded riscv
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.