summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2019-05-16 10:02:30 +0800
committerIru Cai <mytbk920423@gmail.com>2019-05-16 11:51:07 +0800
commit256aad6ceba41c3a65d9076021599545df3ed9b6 (patch)
tree19f1b4b2a7d92dc1280905441c114845d2b75590
parent3284d32453ae44f7c3280aee26c19c5d8c65ca5e (diff)
downloaddissertation-256aad6ceba41c3a65d9076021599545df3ed9b6.tar.xz
upd
-rw-r--r--chap/abs.tex10
-rw-r--r--chap/chap1.tex8
-rw-r--r--chap/chap2.tex36
-rw-r--r--chap/chap3.tex22
-rw-r--r--chap/chap4.tex34
-rw-r--r--chap/chap5.tex17
-rw-r--r--exp_data.odsbin33003 -> 34180 bytes
-rw-r--r--thesis.bib10
-rw-r--r--thesis.tex1
9 files changed, 75 insertions, 63 deletions
diff --git a/chap/abs.tex b/chap/abs.tex
index 107c77e..6ce4199 100644
--- a/chap/abs.tex
+++ b/chap/abs.tex
@@ -4,26 +4,26 @@
\begin{cabstract}
现代微处理器设计主要考虑性能和功耗。随着软硬件变得越来越复杂,安全在
计算机系统的设计中逐渐受到重视。Meltdown 和 Spectre 攻击的发现,表明
- 处理器微架构的优化,虽然不影响程序的正确运行,但是可能破坏系统的安全
+ 处理器微体系结构的优化,虽然不影响程序的正确运行,但是可能破坏系统的安全
性。其中 Spectre 攻击利用处理器的推测式执行,通过暂态指令的执行构造隐
蔽信道,将程序中的秘密信息泄露给攻击者,破坏了程序的安全保证和系统的
隔离性。由于推测式执行是处理器优化执行性能的重要手段,在防御 Spectre
攻击的同时,减少防御手段带来的性能下降,是一个复杂的问题。
- 本文基于 gem5 模拟平台,设计了一种用于防御 Spectre 攻击的微架构,并
+ 本文基于 gem5 模拟平台,设计了一种用于防御 Spectre 攻击的微体系结构,并
对其进行评估。主要工作内容如下:
\begin{enumerate}
\item 调研现有的侧信道攻击、Meltdown 和 Spectre 攻击技术,深入分析这
些攻击技术的原理。
\item 调研现有的 Meltdown 和 Spectre 防御方案,分析这些方案的设计思
想、实现方法、安全性和开销
- \item 设计一种用于防御 Spectre 攻击的微架构,并在 gem5 中模拟。该微架
+ \item 设计一种用于防御 Spectre 攻击的微体系结构,并在 gem5 中模拟。该微架
构基于动态信息流追踪技术,它用于检测推测式执行中的指令是否直接或间
接依赖一个推测式执行中从内存装载的值,进而可能泄露数据。本文将这种
技术和已有的安全装载数据的方案 InvisiSpec 结合使用,并在 gem5 中实
现了这些模型。
- \item 评测这种微架构的安全性和性能。在 gem5 中模拟这种微架构,用构造
- 的验证程序进行测试,表明设计的微架构满足本文的安全特性。用 SPEC
+ \item 评测这种微体系结构的安全性和性能。在 gem5 中模拟这种微体系结构,用构造
+ 的验证程序进行测试,表明设计的微体系结构满足本文的安全特性。用 SPEC
CPU2006 进行性能评测,平均性能开销为 8.5\%,优于只使用动态信息流追
踪检测技术或只使用 InvisiSpec 的模型的性能。
\end{enumerate}
diff --git a/chap/chap1.tex b/chap/chap1.tex
index ab7912f..2807cb7 100644
--- a/chap/chap1.tex
+++ b/chap/chap1.tex
@@ -24,15 +24,15 @@
2018年公布的 Meltdown\supercite{meltdown} 和
Spectre\supercite{spectre} 攻击使人们发现,虽然处理器在执行指令产生异
常,或推测式执行错误后,通过恢复可以使体系结构层次上的状态保持正确,但
-是这些错误执行的指令在微架构中产生了副作用,并且可能泄露系统中的秘密数
+是这些错误执行的指令在微体系结构中产生了副作用,并且可能泄露系统中的秘密数
据,破坏了系统的安全。从 Meltdown 和 Spectre 被发现之后,Intel、AMD、
ARM等处理器设计厂商,和Google、Microsoft等软件厂商,均提出了软件补丁或
处理器微码更新,用于减轻 Meltdown 和 Spectre 的威胁。Intel 在后续的处
-理器中,也在硬件上对一些攻击做出了防御。
+理器中,也在硬件上对一些攻击做出了防御。\supercite{intel-9900k}
已有的基于软件的解决方法,存在性能开销大,防御的攻击种类单一等缺点。因
-此也有研究,尝试通过微架构的设计,低开销地防御 Meltdown 和 Spectre 攻
-击。本文的目标是设计并实现一种微架构,防御 Spectre 攻击。
+此也有研究,尝试通过微体系结构的设计,低开销地防御 Meltdown 和 Spectre 攻
+击。本文的目标是设计并实现一种微体系结构,防御 Spectre 攻击。
\section{研究平台与环境}
diff --git a/chap/chap2.tex b/chap/chap2.tex
index 0f68d0e..c8afa39 100644
--- a/chap/chap2.tex
+++ b/chap/chap2.tex
@@ -20,8 +20,8 @@ Diffie-Hellman,RSA 等密码的私钥。\supercite{TimingAttack} 这是最早
现代计算机系统采用多种优化手段,优化可以作用于处理的数据的值、数据的位
置、数据存放位置的访问频率等,攻击者可以通过这些优化产生的效果,推断出
-计算机系统处理的秘密数据的值。基于软件的微架构侧信道攻击
-\supercite{gruss}利用微架构优化造成的时间区别,这种攻击不需要物理访问
+计算机系统处理的秘密数据的值。基于软件的微体系结构侧信道攻击
+\supercite{gruss}利用微体系结构优化造成的时间区别,这种攻击不需要物理访问
计算机系统,只需要在系统上运行代码。
高速缓存计时攻击是一种重要的侧信道攻击的方式。当高速缓存中存在一个地址
@@ -92,8 +92,8 @@ Meltdown 型攻击利用的是处理器异常产生的暂态指令,这些指
但是,乱序执行中的内存访问会影响缓存,而缓存的状态又可以通过缓存侧通道
进行检测。因此,攻击者可以通过在乱序执行的指令流中,读取特权态的内存来,
-来得到整个内核内存的数据,并通过微架构隐蔽通道传送出来,然后攻击者在隐
-蔽信道的接收端,找出这个临时寄存器的值。因此,在微架构层次,即实际的
+来得到整个内核内存的数据,并通过微体系结构隐蔽通道传送出来,然后攻击者在隐
+蔽信道的接收端,找出这个临时寄存器的值。因此,在微体系结构层次,即实际的
硬件实现中,存在可利用的安全性问题。
% background: address spaces
@@ -227,7 +227,7 @@ Foreshadow 对 Intel SGX 所追求的安全模型产生了深远的影响,在
型的攻击中,可以发现 Intel 的 CPU 将内存访问违例检查放到了指令提交的时
间,使得在页错误发生之前,未授权的内存内容仍然可以到达流水线中其后执行
的乱序执行的指令。Meltdown 攻击利用了这个时间窗口,在暂态指令中,将只有
-特权态能访问的内存编码至持久的微架构状态。
+特权态能访问的内存编码至持久的微体系结构状态。
现代 Intel 处理器使用虚拟地址索引,物理地址标签的一级缓存。如
图\ref{fig:addr-tran} 所示,这种缓存索引方式使得地址翻译可以和一级缓存
@@ -264,7 +264,7 @@ Fault)\supercite{l1tf}。Foreshadow-NG\supercite{foreshadowNG} 利用相同
Foreshadow-OS 利用了这种错误造成的暂态执行的指令。虽然访问页表中标记为
不存在的页会触发终端错误存在,在页表项中的元数据表示在缓存中的物理地址
的情况下,处理器仍然将一级数据高速缓存中未授权数据传递到暂态乱序执行中。
-然后可以和其他暂态执行攻击一样,将秘密数据从微架构暂态执行域带入体系结
+然后可以和其他暂态执行攻击一样,将秘密数据从微体系结构暂态执行域带入体系结
构状态中,例如,使用基于缓存的隐蔽通道。更糟糕的是,如果操作系统支持大
于 4KB 的页(例如,2MB 或 1GB),攻击者可以通过无意的映射访问最大页面大
小的内存范围。由于所有软件本质上共享相同的物理地址空间,因此元数据创建
@@ -455,7 +455,7 @@ Spectre 攻击通常从设置阶段(setup phase)开始,攻击者执行一
Flush+Reload 攻击中清除探测数组对应缓存行的操作。
在第二个阶段,处理器在推测式执行中,将受害者上下文中的秘密信息,传送至
-微架构隐蔽信道。攻击者向受害者通过系统调用等方式发送请求,以出发这个推
+微体系结构隐蔽信道。攻击者向受害者通过系统调用等方式发送请求,以出发这个推
测式执行。攻击者也可以通过自身代码的推测式执行,从同一进程获取敏感信息,
例如在利用 JIT 编译器的环境中,攻击者可以泄露这个环境中不希望其中执行
的代码访问的数据。
@@ -542,7 +542,7 @@ if (x < array1_size)
行的代码可以将一个比较结果泄露到一个固定的地址。上述缓存状态在限制更多
的情形,如 \verb|array1_size| 在缓存中时,攻击也可能可以进行。
-这种攻击已经在 Intel, AMD 的多个处理器微架构,和一些支持推测式执行的
+这种攻击已经在 Intel, AMD 的多个处理器微体系结构,和一些支持推测式执行的
ARM 处理器上进行验证,确认它们受 Spectre v1 的影响。
除了使用原生的机器指令,利用 JavaScript 和 Linux 内核的 eBPF 的 JIT 编
@@ -742,11 +742,11 @@ Spectre-RSB\supercite{spectre-returns}\supercite{ret2spec} 利用了 RSB
\subsubsection{Spectre-STL}
-Spectre v4 利用的是 load 指令的推测式执行。处理器执行 load 指令时,如
-果此前有地址未知的 store 指令,会认为这个 load 指令和这些地址未知的
-store 指令地址不同,并推测式执行这个 load 指令,将其地址中的值装入目的
-寄存器。如果在计算出 store 的地址后,发现和已执行 load 访问了相同数据,
-则处理器需要重新执行这个 load 和之后的指令。在推测式执行的过程中,暂态
+Spectre v4 利用的是装载指令的推测式执行。处理器执行装载指令时,如
+果此前有地址未知的存储指令,会认为这个装载指令和这些地址未知的
+存储指令地址不同,并推测式执行这个装载指令,将其地址中的值装入目的
+寄存器。如果在计算出存储的地址后,发现和已执行装载访问了相同数据,
+则处理器需要重新执行这个装载和之后的指令。在推测式执行的过程中,暂态
指令可以泄露这个地址中的旧值。
\section{Meltdown 和 Spectre 的其他形式}
@@ -782,8 +782,8 @@ NetSpectre不会跨越进程边界,而是通过将有效和无效值交替地
在 NetSpectre 攻击中,攻击者需要利用两个 Spectre 组件:泄露组件和传输
组件,这些组件在收到网络数据包时执行。泄漏组件在攻击者控制的内存地址处
-访问数据,并根据访问的数据改变一些微架构状态。传输组件可以进行任意操作,
-它的运行时间取决于泄露组件修改的微架构状态。这些组件可以存在于网络驱动
+访问数据,并根据访问的数据改变一些微体系结构状态。传输组件可以进行任意操作,
+它的运行时间取决于泄露组件修改的微体系结构状态。这些组件可以存在于网络驱动
程序,以及网络协议和网络服务的实现。
图 \ref{fig:netspectre_leak} 是一个 Spectre v1 组件,它是处理网络数据
@@ -800,7 +800,7 @@ if (x < bitstream_length)
\label{fig:netspectre_leak}
\end{figure}
-为了在远程攻击中使目标系统在推测式执行中改变微架构状态,攻击者采用原始
+为了在远程攻击中使目标系统在推测式执行中改变微体系结构状态,攻击者采用原始
Spectre 的方法。为了触发远程系统的推测式执行,攻击者进行以下操作:
\begin{enumerate}
@@ -822,11 +822,11 @@ flag 的缓存状态会发生变化。如果 \verb|bitstream[x]| 为 1,则 flag
要完成 NetSpectre 攻击,攻击者需要测量一个秘密值泄露时的网络响应时间。
由于响应时间的差异在纳秒级,因此攻击者需要进行大量的测量,此时可以得到
-明显的微架构状态差异。
+明显的微体系结构状态差异。
\begin{figure}[htbp]
\centering
- \includegraphics[width=0.8\textwidth]{netspectre.eps}
+ \includegraphics[width=0.5\textwidth]{netspectre.eps}
\caption{NetSpectre 的泄露组件和传输组件\supercite{netspectre}}
\label{fig:netspectre_gadgets}
\end{figure}
diff --git a/chap/chap3.tex b/chap/chap3.tex
index a755996..90e8133 100644
--- a/chap/chap3.tex
+++ b/chap/chap3.tex
@@ -193,7 +193,7 @@ SafeSpec 原则可以用于在推测式执行中保护缓存和 TLB,方法是
InvisiSpec \supercite{invisispec} 使推测式执行产生的副作用在数据缓存中
不可见,从而可以防御利用推测式执行的攻击。它的目标是阻止由推测式执行的
-装载操作产生的微架构侧信道和隐蔽信道,如缓存占用、缓存行替换算法信息、
+装载操作产生的微体系结构侧信道和隐蔽信道,如缓存占用、缓存行替换算法信息、
缓存一致性状态等。和 SafeSpec 不同,InvisiSpec 支持多处理器。
Spectre 等攻击由暂态指令引起,为了定义 InvisiSpec 的攻击模型,
@@ -229,7 +229,7 @@ Speculative Store Bypass & 装载指令和更早的存储指令地址别名\tabu
\centering
\end{table}
-InvisiSpec 的微架构基于两种机制。第一个机制中,不安全的推测式执行的装载
+InvisiSpec 的微体系结构基于两种机制。第一个机制中,不安全的推测式执行的装载
操作将数据读入至推测式执行缓冲区(Speculative Buffer,SB)中,而不读入
缓存,从而不修改缓存存储层次的状态。由于缓冲区中的数据不产生缓存一致性
事务,因此可能造成内存一致性违例。第二个机制解决这个问题,当推测式执行
@@ -404,7 +404,7 @@ InvisiSpec 会增大存储系统中各个缓存之间,和缓存和主存之间
Meltdown 和 Spectre 提供了新了构造数据通道的方式。通过利用错误的推测式
执行,攻击者可以使处理器执行通常无法访问的代码路径。在 Meltdown 中,攻
击者推测式执行一段代码,作为数据通道,它可以非法访问秘密数据,并在异常
-发生之前通过微架构副作用传输至接受者。在 Spectre 中,攻击者使分支预测器
+发生之前通过微体系结构副作用传输至接受者。在 Spectre 中,攻击者使分支预测器
预测错误,使处理器沿着攻击者选择的路径推测式执行,这在受害者中形成了数
据通道。因此,构建数据通道有三种方法:
@@ -439,7 +439,9 @@ DAWG 的目标是阻止任何攻击者和受害者安全域之间的基于缓存
的路之内。在此之上,缓存所带的元数据,如替换策略的状态,也要在保护域内
定义,并安全地划分。
-图\ref{fig:dawg-cache}展示了 DAWG 缓存的结构。
+图\ref{fig:dawg-cache}展示了 DAWG 缓存的结构。处理器中增加几个 MSR,用
+于记录处理器当前所在的保护域,和保护域的策略。每个逻辑核在访问存储器时
+均带有一个域标识字段。
除了硬件修改之外,DAWG 还需要软件的支持,用于管理程序的保护域,和每个
域对应的安全策略。
@@ -535,7 +537,7 @@ Conditional Speculation \supercite{conditional-speculation} 是一种检测
推测式执行中的潜在的泄露数据的访存指令,并阻止其执行的方法。为了检测可
能在推测式执行中泄露数据的指令,此工作提出安全依赖(security
dependence)的概念,类似于数据依赖和控制依赖,这种新的依赖性用于描述泄
-漏微架构信息具有潜在安全风险的推测性执行的指令。对于信道 $c$,指令 $j$
+漏微体系结构信息具有潜在安全风险的推测性执行的指令。对于信道 $c$,指令 $j$
安全依赖于指令 $i$,如果:
\begin{itemize}
@@ -702,12 +704,12 @@ SpectreGuard\supercite{spectreguard} 是一种以数据为中心的软硬件结
的Spectre 防御方案。这种方案考虑到对于软件开发人员来说,识别程序中的秘
密数据(如密钥)比识别可能受到攻击的 Spectre 组件代码容易。因
此,SpectreGuard 在操作系统中提供接口,使程序可以标记敏感的内存区域,硬
-件上只需要简单的微架构扩展,就可以阻止 Spectre 攻击。和已有的防御方案相
+件上只需要简单的微体系结构扩展,就可以阻止 Spectre 攻击。和已有的防御方案相
比,它不需要依靠编译器识别程序中可能受攻击的代码,也不需要复杂的硬件修
改。
Spectre 攻击需要分为三个步骤:从存储系统装载秘密数据,将秘密数据转发至
-依赖于这个数据的指令,执行依赖于这个数据的指令,通过微架构隐蔽信道泄露
+依赖于这个数据的指令,执行依赖于这个数据的指令,通过微体系结构隐蔽信道泄露
秘密。数据的泄露在第二、三步进行,如果秘密数据被装载,但不被转发,秘密
也不会泄露给攻击者。
@@ -716,7 +718,7 @@ Spectre 攻击需要分为三个步骤:从存储系统装载秘密数据,将
内存区域时,才需要延迟转发。当秘密数据不经常访问时,总体开销可以忽略。
敏感数据的标记通过在页表中添加一个位实现,在软件中可以扩展操作系统
-的mmap, mprotect 等接口,或通过运行库、编译器、连接器实现。在微架构中,
+的mmap, mprotect 等接口,或通过运行库、编译器、连接器实现。在微体系结构中,
指令执行后,执行结果将转发至后续依赖于这个指令的指令,而如果指令是访问
了敏感区域的指令,则推迟它的转发。
@@ -735,7 +737,7 @@ Spectre 攻击需要分为三个步骤:从存储系统装载秘密数据,将
% Data Oblivious ISA(OISA)是一种 ISA 扩展,用于阻止信息通过侧信道泄露。
% 设计原则:
% \begin{itemize}
-% \item ISA的安全性和微架构无关
+% \item ISA的安全性和微体系结构无关
% \item ISA不会阻止现代微处理器的优化技术
% \end{itemize}
%
@@ -755,7 +757,7 @@ Spectre 攻击需要分为三个步骤:从存储系统装载秘密数据,将
由于 Meltdown 型攻击和 Spectre 型攻击利用的暂态指令不同,因此防御方案
也不同。
-对于 Meltdown 型攻击,防御方法相对简单。只要使产生异常的指令在微架构层
+对于 Meltdown 型攻击,防御方法相对简单。只要使产生异常的指令在微体系结构层
次上无法访问体系结构层次上无法访问的数据,即可以阻止 Meltdown 型攻击。
在现有的处理器中,需要使用 KAISER 等防御方案,会造成一定性能的损失。
diff --git a/chap/chap4.tex b/chap/chap4.tex
index 16726d3..892ecea 100644
--- a/chap/chap4.tex
+++ b/chap/chap4.tex
@@ -1,11 +1,11 @@
-\chapter{针对 Spectre 攻击的微架构设计}\label{sec:mywork}
+\chapter{针对 Spectre 攻击的微体系结构设计}\label{sec:mywork}
本章讲解本文提出的一种防御 Spectre 攻击的方法,该方法使用动态信息流追
踪的方法,检测 Spectre 组件指令流中可能泄露秘密数据的访存指令,并使用
一种安全的方法执行这些访存指令。
-这种微架构设计不需要软件的支持,未修改的软件和操作系统可以直接在采用这
-种微架构改进的处理器中执行。
+这种微体系结构设计不需要软件的支持,未修改的软件和操作系统可以直接在采用这
+种微体系结构改进的处理器中执行。
\section{威胁模型}
@@ -177,12 +177,12 @@ void victim(size_t x, uint8_t k) {
移指令的执行结果,从而推测出内存中秘密数据的值,因此这样的装载指令也是
不安全的指令。
-这种检测方案的微架构实现如图\ref{fig:spectre_dift}所示。
+这种检测方案的微体系结构实现如图\ref{fig:spectre_dift}所示。
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{spectre_dift.eps}
- \caption{基于 DIFT 的 Spectre 检测方法的微架构示意图}
+ \caption{基于 DIFT 的 Spectre 检测方法的微体系结构示意图}
\label{fig:spectre_dift}
\end{figure}
@@ -208,9 +208,9 @@ void victim(size_t x, uint8_t k) {
大。这种方法和 Conditional Speculation
\supercite{conditional-speculation} 中的基于缓存命中的过滤器基本相同。
-\section{针对 Spectre 攻击的微架构在 gem5 中的实现}
+\section{针对 Spectre 攻击的微体系结构在 gem5 中的实现}
-以下介绍这种可抵抗 Spectre 攻击的微架构在 gem5 模拟器中的实现。首先分
+以下介绍这种可抵抗 Spectre 攻击的微体系结构在 gem5 模拟器中的实现。首先分
析 gem5 中乱序执行处理器的实现,然后分别介绍 InvisiSpec 和本文使用的
DIFT 方案在 gem5 中的实现。
@@ -250,7 +250,7 @@ gem5 的提交阶段由 DefaultCommit 类实现,它提交 ROB 队列头部的
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{load_exec.eps}
- \caption{gem5 O3CPU 执行 load 指令的过程}
+ \caption{gem5 O3CPU 执行装载指令的过程}
\label{fig:load_exec}
\end{figure}
@@ -303,17 +303,17 @@ InvisiSpec 中,一级缓存处理 SpecLoad 和 Expose 的部分状态如
% hit based
-%% 而对于只在缓存命中时执行装载指令的方案,设计相对简单。它只需要处理
-%% SpecLoad 请求。
+% 而对于只在缓存命中时执行装载指令的方案,设计相对简单。它只需要处理
+% SpecLoad 请求。
-%% 在这种情形下,不需要添加额外状态。缓存行在任一状态下,接收 SpecLoad 时
-%% 状态不变。缓存命中时,则执行 spec\_load\_hit 将缓存行中的内容返回至处
-%% 理器。
+% 在这种情形下,不需要添加额外状态。缓存行在任一状态下,接收 SpecLoad 时
+% 状态不变。缓存命中时,则执行 spec\_load\_hit 将缓存行中的内容返回至处
+% 理器。
-%% 而在缓存缺失时,则在其中添加一个 spec\_load\_miss 操作,它向处理器返回
-%% 一个缓存缺失的响应。LSQ 在写回的过程中处理这个响应,为其对应的缓存缺失
-%% 的指令设置表\ref{tab:inst_status}中的 FenceDelay 属性,并通知指令队列需
-%% 要推迟这条访存指令的执行。
+% 而在缓存缺失时,则在其中添加一个 spec\_load\_miss 操作,它向处理器返回
+% 一个缓存缺失的响应。LSQ 在写回的过程中处理这个响应,为其对应的缓存缺失
+% 的指令清除表\ref{tab:inst_status}中的 ReadyToExpose 属性,并通知指令队列需
+% 要推迟这条访存指令的执行。
\subsection{执行流水线的修改}
diff --git a/chap/chap5.tex b/chap/chap5.tex
index 007b13b..4264699 100644
--- a/chap/chap5.tex
+++ b/chap/chap5.tex
@@ -4,9 +4,9 @@
本文对 gem5 模拟器修改,对以下 5 种配置进行评测:Baseline, Fence,
Fence+DIFT, IS, IS+DIFT. Baseline 表示受 Spectre 攻击影响的处理器模型,
-Fence 和 IS 分别表示对所有推测式执行中的 load 指令,推迟执行和用
+Fence 和 IS 分别表示对所有推测式执行中的装载指令,推迟执行和用
InvisiSpec的方案执行,Fence+DIFT 和 IS+DIFT 则是使用动态信息流追踪识别
-可能泄露秘密数据的 load,只对这些 load 使用相应的安全的执行方案。
+可能泄露秘密数据的装载指令,只对这些装载使用相应的安全的执行方案。
表\ref{tab:gem5_conf}中列出了所有处理器配置的基本配置。
@@ -62,14 +62,14 @@ L2 Cache & 2MB, 16路组相联, 8周期延迟\tabularnewline
\section{评测指标}
-本文评测每种微架构设计的安全性和性能。安全性表现为是否受 Spectre 攻击的
-影响,本文构造测试程序测试微架构的安全性。性能指标使用每个微架构设计运
+本文评测每种微体系结构设计的安全性和性能。安全性表现为是否受 Spectre 攻击的
+影响,本文构造测试程序测试微体系结构的安全性。性能指标使用每个微体系结构设计运
行基准程序,和 Baseline 的运行时间的比值,平均性能取这些比值的几何平均
数。
\section{评测结果与分析}
-\subsection{微架构安全性测试}
+\subsection{微体系结构安全性测试}
本文构造一个测试程序对每种配置的处理器进行安全性的测试,用于验证实现的
方案可以防御 Spectre 攻击。
@@ -166,15 +166,16 @@ Baseline 的运行时间。
\label{fig:is_spec06_result}
\end{figure}
-从评测结果可以看出,在使用 DIFT 识别可能泄露数据的 load 指令后,推迟这
+从评测结果可以看出,在使用 DIFT 识别可能泄露数据的装载指令后,推迟这
些指令的执行,有 15\% 的性能开销,平均性能开销比 InvisiSpec 小。在此基
-础上,用 InvisiSpec 的方案执行这些 load 指令,可以进一步将性能开销减少
+础上,用 InvisiSpec 的方案执行这些装载指令,可以进一步将性能开销减少
至 8.5\%. 其中在 IS+DIFT 方案中,有 12 个基准程序的性能开销在 3\% 以下,
6 个在 10\% 至 20\%. 性能开销最大的是 omnetpp, 所有安全的方案都会造成
94\% 以上的性能开销。
为了观察使用基于信息流追踪的检测机制的效果,可以统计 IS 和 IS+DIFT 方
-案中 SpecLoad 请求的数量。
+案中 SpecLoad 请求的数量。表\ref{tab:specload}列出两种方案中,SpecLoad
+请求的数量和程序的总操作数(gem5 模拟后得出的 sim\_ops 结果)的比例。
\begin{table}
\centering
diff --git a/exp_data.ods b/exp_data.ods
index 52024c9..e02d4a6 100644
--- a/exp_data.ods
+++ b/exp_data.ods
Binary files differ
diff --git a/thesis.bib b/thesis.bib
index d61bd0c..db1f334 100644
--- a/thesis.bib
+++ b/thesis.bib
@@ -58,6 +58,16 @@
year = {2018},
month = Feb,
url = {https://www.paulkocher.com/doc/MicrosoftCompilerSpectreMitigation.html},
+ type = {OL}
+}
+
+@online{intel-9900k,
+ url = {https://www.anandtech.com/show/13659/analyzing-core-i9-9900k-performance-with-spectre-and-meltdown-hardware-mitigations},
+ year = {2018},
+ month = 12,
+ author = {Ian Cutress},
+ title = {Analyzing Core i9-9900K Performance with Spectre and Meltdown Hardware Mitigations},
+ type = {OL}
}
@misc{meltdownprime,
diff --git a/thesis.tex b/thesis.tex
index 73b6e38..766090d 100644
--- a/thesis.tex
+++ b/thesis.tex
@@ -26,7 +26,6 @@
\usepackage{minted}
\usepackage{multirow}
-\usepackage{tabulary}
\setminted{frame=single,linenos=true}
% 对于 linespread 值的计算过程有兴趣的同学可以参考 pkuthss.cls。