summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2019-05-13 17:12:07 +0800
committerIru Cai <mytbk920423@gmail.com>2019-05-13 17:12:07 +0800
commit822af478ba5436d072f6df05a3cce175ebeb307c (patch)
treee28b5b1d8affe85f5eacb55bf91f4bdd7dd0aedb
parent63495de320b19a8ef1acbb8935e9f412245c4742 (diff)
downloaddissertation-822af478ba5436d072f6df05a3cce175ebeb307c.tar.xz
upd
-rw-r--r--chap/chap4.tex13
1 files 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 类为指令添加新的状态和属性,添加的主要的指令状态和属性