我遇到过这段代码,自epoc开始以来已经计算了纳秒,自启动以来我已经计算好了但
http://code.metager.de/source/xref/cloudius-systems/osv/arch/aarch64/arm-clock.cc#61
[x11, x12 ... x1m
x21, x22 ... x2m
.
.
xn1, xn2 ... xnm]
CNTVCT是循环计数器寄存器,为什么该寄存器的值除以CPU频率再乘以NANO_PER_SEC?
此外,如何从这些纳秒中推导出时间?
答案 0 :(得分:1)
为什么该寄存器的值除以CPU频率 乘以NANO_PER_SEC?
转换单位
CNTVCT 在每个时钟周期递增
频率是每秒的时钟周期
NANO_PER_SEC 是每秒纳秒
所以看看单位:
CNTVCT * NANO_PER_SEC
-------------
frequency
他们是:
clocks * nano/sec
------------------------
clocks/sec
等于(将分子和分母乘以sec
)
clocks * nano
-------------
clocks
等于(将分子和分母除以clocks
)
nano
所以你需要按频率除以获得秒并乘以纳米以使其达到纳秒秒
此外,如何从这些纳秒中推导出时间?
纳秒是自启动时间,而不是纪元
但是,你可以得到当前的时间,减去当前的纳秒,然后按照纳秒进行调整