这里提到了预取指令:https://c9x.me/x86/html/file_module_x86_id_252.html它允许系统程序提示cpu关于哪些数据应该进入缓存。但是,如果引导加载程序将一个简单的程序作为操作系统加载 - 就像MikeOS一样简单 - 那么,这些提示是否可以确定哪些数据位于缓存上,因为只有一个进程指示cpu - 或者仍然cpu自己做分支预测?是否意味着cpu的内部分支预测更适合此目的?
答案 0 :(得分:0)
分支目标缓冲区(以及分支历史记录缓冲区等其他分支预测缓存)与L1D / L1I / L2 / L3内存缓存完全分开。
x86没有指令来管理分支预测缓存,只有数据/指令缓存(大多数人只是说“缓存”时的意思)。 AFAIK,没有其他架构也有分支预测缓存的缓存控制指令,但你似乎只讨论x86。
我也不确定你是否真的试图询问分支预测缓存,或者你是否完全混淆了CPU的工作方式。请参阅Ulrich Drepper撰写的What Every Programmer Should Know About Memory,以及2017年的一些小问题更新。 What Every Programmer Should Know About Memory?
除了关于控制数据/指令缓存内容的评论中的链接之外,这几乎可以说是回应这样一个混淆的问题(正如我所说的那样,大多数人的意思是什么)谈论将数据加载到缓存中。)