From f2e79906f0681735649a4991fdd45742ee65b999 Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Wed, 15 May 2019 08:55:18 +0800 Subject: upd --- chap/chap3.tex | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/chap/chap3.tex b/chap/chap3.tex index 045e9a8..85885cd 100644 --- a/chap/chap3.tex +++ b/chap/chap3.tex @@ -161,19 +161,11 @@ SafeSpec 防止推测式执行的产生的值影响提交状态,从而阻止 替换影子状态中的条目,使得接收者发现其推测式执行状态丢失。如果在影子状 态满时阻塞执行,接收者可以发现它的执行时间变长。 -SafeSpec 的一个问题是如果一个长延迟指令,例如从内存中读取数据的指令, -在执行过程中被取消,它的状态需要丢弃。因此,如果一个长延迟指令的结果返回, +%SafeSpec 的一个问题是如果一个长延迟指令,例如从内存中读取数据的指令, +%在执行过程中被取消,它的状态需要丢弃。因此,如果一个长延迟指令的结果返回, +%而没有匹配的事务,则丢弃这个结果。 - -如果指令已经启动了高延迟操作,例如从内存中读取,我们必须确保在收到内存 -后可以丢弃内存中的响应。 执行的指令推测性地将任何结果状态存储到阴影结 -构。 因此,如果收到长等待时间回复并且没有匹配的事务,我们只是丢弃这些 -值。 然而,也可能希望在系统中较低地过滤这些事务,使得提交的事务直接提 -交,并且压缩的事务在适当的位置被取消。 为了控制此过滤器的大小,我们可 -以在分支粒度中包含一个带有事务和跟踪操作的分支ID。 过滤器还可用于标记 -已提交的分支,以便与其对应的内存响应直接提交到永久结构。 - -\Todo: SafeSpec for caches and TLB +%\Todo: SafeSpec for caches and TLB %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsubsection{InvisiSpec} @@ -761,6 +753,11 @@ Spectre 攻击需要分为三个步骤:从存储系统装载秘密数据,将 次上无法访问体系结构层次上无法访问的数据,即可以阻止 Meltdown 型攻击。 在现有的处理器中,需要使用 KAISER 等防御方案,会造成一定性能的损失。 +SafeSpec 和 InvisiSpec 也将防御 Meltdown 型攻击作为它们的目标之一,但 +是在现有的 Meltdown 型攻击中,泄露数据的隐蔽信道由攻击者构造,攻击者可 +以利用缓存之外的信道泄露数据,因此只阻止缓存信道不能有效地防御 +Meltdown 型攻击。 + Spectre 攻击的防御相对复杂。对于软件防御方案,在分支后添加串行化指令或 数据依赖,阻止推测式执行的发生,会有 30\% 以上的性能下降。 \supercite{spec-load-hardening} 使用静态分析工具 -- cgit v1.2.3