4

在计算机的 RAM 中存储了一个较长的程序,用 Forth 编程语言编写。它包含三个子函数,并且在 CPU 的一级缓存中存储它们占用了太多字节。

需要一个缓存策略来决定只有一个 RAM 窗口被复制到 CPU 缓存中。Forth CPU 能够从一级缓存中读取,但不能从 RAM 中读取,因为访问 RAM 需要很长时间。

图中,指令指针指向第一个字,到目前为止已经执行了一个命令,很快就会到达“:add”这个字的末尾。但那时会发生什么?

如果 CPU 已执行第一级缓存 (+) 中的最后一条命令,则没有其他命令。Forth CPU 的哪个部分决定卸载 CPU 缓存的当前内容并从 RAM 中检索新块?

在此处输入图像描述

我不确定这是否与“块缓冲区”、“Forth VM 中的堆栈缓存”或“基于硬件的 CPU 缓存”有关。文献有点混乱:

4

1 回答 1

1

实际上,这似乎是一个不特定于 Forth CPU 的一般问题。

CPU 中将数据从内存中检索到缓存中的部分称为缓存控制器单元缓存控制电路

另请参阅:微处理器设计/缓存wikibook,CPU 如何识别指令是否已解码问题。

于 2018-04-19T21:05:10.790 回答