最糟糕的情况是从内存中获取操作数

时间:2014-02-25 22:40:58

标签: c assembly

我不确定如何解决这个问题。有人可以解释我应该采取的步骤,因为我需要理解这个问题。

考虑到地址对齐,从具有60纳秒周期时间和8位宽数据总线的存储器中获取4字节操作数所需的最坏情况时间是多少?

提前致谢

2 个答案:

答案 0 :(得分:1)

假设没有缓存或TLB未命中命中,那么精心设计的处理器的“典型”最坏情况应该是四个,60ns的单字节读取 - > 240ns。这可能是预期的答案。

要真正回答这个问题,你需要考虑不正常的情况。

评论指出,如果硬件出现故障可能会花费无限时间,但这是一个笑话答案。

但即使硬件没有出现故障,它也可能比你想象的要长很多。

另一位评论者指出,如果有页面地图,您可能会对页面地图(“TLB”)重新填充感到惊讶。重写页面转换时隙的TLB未命中可能需要在实际数据读取开始之前读取一个或几个字节的“字”(指针/保护位)。

然后考虑跨越虚拟页面边界的4字节值的情况,并且至少有一个虚拟页面已从物理内存推送到磁盘上的页面文件。然后访问时间由寻找/旋转/读取/调整存储器映射的时间确定,所有这些都需要几十毫秒(如果磁头必须寻找长距离则更多)。

如果两个页面都被推送到磁盘,您可能会面临2次搜索时间。如果驱动器已经停止运转,则会更加延迟,并且必须旋转。

设计糟糕的操作系统可能会陷入页面上不存在的低位地址,然后是第一页中的页面,重新启动指令,在第二页上出现页面不存在的错误,逐出第一页第二页的空格,第二次重新启动违规指令,然后重复此循环。然后访问可以永远不会出现硬件故障。我假设现代操作系统锁定顺序虚拟页面对以避免这种情况。 (如果考虑到指令体可能跨越页面边界,并且可能也不存在于内存映射中,这会变得非常疯狂。)

答案 1 :(得分:0)

这个问题没有意义。如果数据总线是8位宽,那么除非你正在读取跨越字节边界的位字段,否则地址对齐对于长度为几倍的操作数(1到n)不是问题。