From 822af478ba5436d072f6df05a3cce175ebeb307c Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Mon, 13 May 2019 17:12:07 +0800 Subject: upd --- chap/chap4.tex | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/chap/chap4.tex b/chap/chap4.tex index f1c7e0a..5be6d75 100644 --- a/chap/chap4.tex +++ b/chap/chap4.tex @@ -189,7 +189,7 @@ void victim(size_t x, uint8_t k) { 致推测式执行中,后续所有依赖于这条指令的指令都会被推迟,降低流水线的利 用率,导致性能下降。 -一种方法是使用 InvisiSpec \supercite{invisiSpec},和 Spectre 攻击的检测 +一种方法是使用 InvisiSpec \supercite{invisispec},和 Spectre 攻击的检测 机制结合后,可以作为单条不安全指令的执行机制。它将不安全指令从内存中读 到的数据放入推测式执行缓冲区中,后续的指令可以使用这条指令的执行结果, 确保指令流的继续执行。在推测式执行错误时,推测式执行缓冲区的内容会被丢 @@ -206,8 +206,6 @@ void victim(size_t x, uint8_t k) { \section{针对 Spectre 攻击的微架构在 gem5 中的实现} -\Todo: 这节介绍怎样在 gem5 中实现我的工作 - 以下介绍这种可抵抗 Spectre 攻击的微架构在 gem5 模拟器中的实现。首先分 析 gem5 中乱序执行处理器的实现,然后分别介绍 InvisiSpec 和本文使用的 DIFT 方案在 gem5 中的实现。 @@ -304,6 +302,15 @@ InvisiSpec 中,一级缓存处理 Load 和 Expose 的部分状态如 而对于只在缓存命中时执行装载指令的方案,设计相对简单。它只需要处理 SpecLoad 请求。 +在这种情形下,不需要添加额外状态。缓存行在任一状态下,接收 SpecLoad 时 +状态不变。缓存命中时,则执行 spec\_load\_hit 将缓存行中的内容返回至处 +理器。 + +而在缓存缺失时,则在其中添加一个 spec\_load\_miss 操作,它向处理器返回 +一个缓存缺失的响应。LSQ 在写回的过程中处理这个响应,为其对应的缓存缺失 +的指令设置表\ref{tab:inst_status}中的 FenceDelay 属性,并通知指令队列需 +要推迟这条访存指令的执行。 + \subsection{执行流水线的修改} 我们在 DynInst 类为指令添加新的状态和属性,添加的主要的指令状态和属性 -- cgit v1.2.3