64位计数器的尽头是什么?等你老了它还没数完!

CPU能有序运行,靠的是一个叫做计数器的元件。就拿8位计数器来说,它通过8个独立的输出引脚表示当前计数值,每来一个脉冲,它的计数值加1。比如在最开始,它的引脚都是低电平,代表0。然后来一个脉冲,它的第一个引脚输出高电平,代表数值1。以此来推,会一直计数到最大值255。

如果把计数器的输出连接到ROM的输入,这样就能按顺序读取ROM里面的数据,这样最大可以寻址到256字节的ROM。ROM里面存储的是代码,程序就是这样按顺序运行的。

如果脉冲的频率是1MHZ,也就是1秒钟来100万个脉冲,那么计数到最大值需要255微秒。如果是16位计数器,可以计数的最大值是65535,计数到最大值需要65毫秒。32位计数器可以计数的最大值是42亿,计数到最大值需要1.19个小时。但如果频率提升到1GHZ,也就是每秒10亿个脉冲,那么每4.29秒计数器就能溢出一次。

如果是64位计数器,给它1GHZ的脉冲,你觉得要计数到最大值需要多少秒?即全部输出都为1的时候需要多少秒?答案是非常惊人的584年,不可思议!虽然64位相比于32位计数器提升了一倍,但是计数时间相差了几十亿倍,这就是恐怖的指数增长效应。

64位计数器可以寻址到1677万TB的寻址空间,现在还没有单台设备能容纳这么多数据。除了用于程序计数,64位计数器应用最多的就是时间戳计数器。简单来说TSC就像是一个超级精确的秒表,可以持续运行数百年而不需要担心溢出。

对比32位计数器,溢出时间只有4秒,你可以用它来测量一段代码运行了多久,或者你的某段代码运行的快不快。比如要想知道CPU运行了多长时间,也可以通过这个64位计数器计数值推算出来。

这就是我对计数器的一些简单理解,希望对你有帮助!

原文链接:,转发请注明来源!