这意味着从代理向内存电路提供地址到代理可以捕获数据为止>, 100ns 已经过去了。
使用平面页表,并且没有缓存,您希望的最佳时间是 200ns。实际上,从页表条目中读取地址需要时间,因此您可能会错过第二个内存操作的时钟。如果时钟是 1/4 访问时间,则可能需要 225ns 才能读取。
n 级从不搜索;它从虚拟地址准确地知道如何遍历页表;但是和上面的平面页表一样,每次读取可能会有一些延迟,因此读取具有 n 级页表的内存位置需要 (n * 100 + n * clock-latency) + 100。
内存读取操作如下所示:
Clock _______________|----------|__________|----------|__________
AddressValid _______/--------------\________
Address ..........AAAAAAAAAAAAAAAAAAAA]........
DataValid _______________________________/-------------\________
Data .................................DDDDDDDDDDDDDDDDDDD.......
因此,要点是:信号线仅在时钟沿(上升或下降)采样。在设置 AddressValid 信号之前,地址会稍微可用; AddressValid 信号在时钟上升之前稍微设置。这确保了地址和信号在被采样之前有时间变得稳定。
当时钟下降时,AddressValid 信号被移除。
存储设备在时钟上升沿检测到 AddressValid,因此对 Address 值进行采样。它获取内存,使其可用,然后在时钟上升沿之前设置 DataValid 信号。
当时钟下降时,存储设备会移除 DataValid 信号。
在时钟上升沿,代理检测到 DataValid,因此对 Data 值进行采样。读取操作现已完成。
请注意,这是大约 1976 年的内存电路的操作。现代的要花哨得多,但基本相同。