英特尔处理器如何访问Branch Trace Store缓冲区?

use*_*274 5 linux x86 kernel intel linux-kernel

英特尔处理器具有分支跟踪存储(BTS)功能,可记录分支并将其存储在用户/程序指定的缓冲区中.事实上,我想知道处理器是通过MMU单元(页面表)访问BTS缓冲区还是直接物理访问BTS缓冲区?

小智 4

来自英特尔手册第 3 卷第 17.4.9 章(BTS 和 DS 保存区域)的 32 位版本调试存储区域的映像

\n\n

在此输入图像描述

\n\n
\n

BTS buffer base \xe2\x80\x94 BTS 缓冲区第一个字节的线性地址。该地址应指向自然双字边界。

\n
\n\n

对于IA32_DS_AREA MSR

\n\n
\n

将DS 缓冲区管理区的基线性地址写入 IA32_DS_AREA MSR。

\n
\n\n
\n\n

一般来说,您设置给处理器的每个地址都是线性地址,因此它独立于段集,并且只有在激活时才进行分页。
\n当然,只有在不创建递归依赖性的情况下才是正确的,例如CR3寄存器。

\n\n

直接回答您的问题:如果激活了寻呼,则给定的地址将被转换,否则将按原样使用

\n