ip软件介绍

CPU缓存冷门知识讲解12

标签: | 作者:admin | VISITORS: | 来源:未知
28
Jan
2023
但越过L1 Cache之后,对L2$和L3$的速度要求就不再这么严苛。此时CPU 
core给出的虚拟地址请求会先通过TLB转换为物理地址,再送入下级缓存中查找。而检查进程有没有权限读取某一地址这一过程,仅在地址转换的时候发生,而这种转换和检查是需要时间的,所以有意地安排在了L1 
Cache之后。L1缓存这种必须求“快”的特性,成了整个事件的楔子。分支预测分支预测是一种提高流水线执行效率的手段。在遇到if..else..这种程序执行的分支时,可以通过以往的历史记录判断哪一分支是最可能被执行的分支,并在分支判断条件真正返回判断结果之前提前执行分支的代码。
 
 
详情可以在上面提到的连载文章中阅读。需要强调的是,提前执行的分支代码,即便事后证明不是正确的分支,其执行过程中所读取的数据也可以进入L1缓存。在Intel的官网文档《Intel? 64 
and IA-32 Architectures Optimization Reference Manual》第2.3.5.2节中指:L1 DCache Loads:- Be carried out speculatively, before preceding branches are resolved.- Take cache misses out of order and in an overlapped manner.Show you the [伪] code:if (likely(A < B)) { value = __(kernel_address_pointer);}当分支判断条件A < B被预测为真时,CPU会去提前执行对内核地址的读取。当实际条件为A > 
B时,虽然内核的值不会真正写入寄存器(没有retire),但会存入L1 Cache,再加之上一节介绍的,获取L1 
Cache的值毋须地址转换,毋须权限检查,这就为内核信息的泄漏创造了可能。
 
从理论上来讲,如果可以控制程序的分支判断,并且可以获取L1缓存中的数据(这个没有直接方法,但可以通过其他间接手法)的话,就完全可以获取内核信息。而分支预测这种特性是不能随随便便就关闭的,这也就是这次问题会如此棘手的原因。乱序执行还有一个原因是乱序执行,但原理大致类似。乱序执行是Intel在1995年首次引入Pentium 
Pro处理器的机制。其过程首先是将我们在汇编代码中看到的指令“打散”,成为更细粒度的微指令「micro-operations」,更小的指令粒度将会带来更多的乱序排列的组合,CPU真正执行的是这些微指令。没有数据依赖的微指令在有相应执行资源的情况下乱序并行执行,进而提升程序的并行程度,提高程序性能。但引入的问题是,读取内核数据的微指令可能会在流水线发出e__ception之前将内核数据写入L1 
 
 
 
电脑常见英文词汇
 
 
slider 滚轴 滑块
slot 条孔、槽 槽
smart pointer 灵巧指标、精灵指标 智能指针
snapshot 萤幕快照(图) 屏幕截图
specialization 特殊化、特殊化定义、特殊化宣告 特化
specification 规格 规格、规范
splitter 分裂视窗 切分窗口
software 软体 软件
solution 解法,解决方案 方案
source 原始码 源码、源代码
stack 堆叠 栈
stack unwinding 堆叠辗转开解(此词用於 exception 主题) 栈辗转开解 *
standard library 标准程式库
standard template library 标准模板程式库
statement 述句 语句、声明
status bar 状态列、状态栏 状态条
相关新闻
首页 | ip使用技巧 | 云手机使用相关 | ip软件介绍 | 蛙仔云手机
 分享按钮