- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
处理器 x86/x86_64 中使用哪种寻址方式缓存 L1、L2 和 L3(LLC) - 物理或虚拟(使用 PT/PTE 和 TLB),不知何故 PAT(page attribute table)对它有影响吗?
在这种情况下,驱动程序(内核空间)和应用程序(用户空间)之间有区别吗?
简短回答 - 英特尔使用 虚拟索引,物理标记 (VIPT) L1 缓存:What will be used for data exchange between threads are executing on one Core with HT?
8-way
缓存中定义 Set
需要低 12 bits
,在 virt 和 phys 中是相同的)最佳答案
你的问题的答案是 - 这取决于。这严格来说是一个 CPU 设计决策,它在性能和复杂性之间进行权衡。
以最近的英特尔酷睿处理器为例 - 它们被物理标记并虚拟索引(至少根据 http://www.realworldtech.com/sandy-bridge/7/ )。这意味着缓存只能在纯物理地址空间中完成查找,以确定该行是否存在。但是,由于 L1 是 32k,8 路关联,这意味着它使用 64 个集合,因此您只需要地址位 6 到 11 即可找到正确的集合。碰巧的是,虚拟地址和物理地址在此范围内是相同的,因此您可以在读取缓存集的同时查找 DTLB - 一个已知的技巧(请参阅 - http://en.wikipedia.org/wiki/CPU_cache 以获得很好的解释)。
从理论上讲,可以构建一个虚拟索引 + 虚拟标记缓存,这将消除通过地址转换(TLB 查找,以及在 TLB 未命中的情况下进行页面遍历)的要求。然而,这会导致许多问题,尤其是内存别名——两个虚拟地址映射到同一个物理地址的情况。
假设core1在这样的全虚拟缓存中有虚拟地址A缓存(它映射到物理地址C,但我们还没有做这个检查)。 core2 写入映射到相同 phys addr C 的虚拟地址 B - 这意味着我们需要某种机制(通常是“窥探”,由 Jim Goodman 创造的术语)使 core1 中的该行无效,管理数据合并和一致性管理如果需要的话。但是,core1 无法响应该监听,因为它不知道虚拟地址 B,并且不在虚拟缓存中存储物理地址 C。所以你可以看到我们有一个问题,虽然这主要与严格的 x86 系统相关,但其他架构可能更宽松,并允许对此类缓存进行更简单的管理。
关于其他问题 - 我能想到的与 PAT 没有真正的联系,缓存已经设计好了,并且不能针对不同的内存类型进行更改。另一个问题的相同答案 - 硬件主要在用户/内核模式之间的区别之下(除了它提供的安全检查机制,主要是各种环)。
关于caching - 在处理器 x86/x86_64 中使用物理或虚拟寻址来缓存 L1、L2 和 L3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19039280/
我正在尝试提供即时转码的视频。不幸的是,这意味着寻求不起作用。我假设这是因为浏览器不知道视频有多长,因此无法正确显示搜索栏。 有谁知道是否可以对视频的时长进行硬编码? 我想到的另一个选择可能是创建我自
我是一名优秀的程序员,十分优秀!