From ca49349212ee4e6bad310b39b3bb6aafab0d7510 Mon Sep 17 00:00:00 2001
From: Iru Cai <mytbk920423@gmail.com>
Date: Fri, 10 May 2019 23:34:32 +0800
Subject: add TODO and FIXME

---
 chap/chap4.tex | 46 +++++++++++++++++++++++++++++++++++++---------
 1 file changed, 37 insertions(+), 9 deletions(-)

(limited to 'chap/chap4.tex')

diff --git a/chap/chap4.tex b/chap/chap4.tex
index d6df685..455e2b6 100644
--- a/chap/chap4.tex
+++ b/chap/chap4.tex
@@ -1,4 +1,4 @@
-\chapter{可抵抗Spectre攻击的微架构的设计与实现}\label{sec:mywork}
+\chapter{针对 Spectre 攻击的微架构设计}\label{sec:mywork}
 
 本章讲解本文提出的一种防御 Spectre 攻击的方法，该方法使用动态信息流追
 踪的方法，检测 Spectre 组件指令流中可能泄露秘密数据的访存指令，并使用
@@ -22,6 +22,8 @@ Spectre-RSB 攻击，此方法可以扩展至 Spectre-STL 攻击。攻击者在
 
 \section{基于动态信息流追踪的Spectre检测方法}
 
+\Todo: 这一节是否可以写到3页？
+
 动态信息流追踪（Dynamic Information Flow Tracking）\supercite{dift}是
 一种硬件安全策略，通过识别可疑的信息流，并限制可疑信息的使用，保护程序
 的安全。它最早用于防止攻击者利用缓冲区溢出攻击执行恶意代码，也可以用于
@@ -37,6 +39,12 @@ CSF\supercite{context-sensitive-fencing} 中的译码级信息流追踪框架 DI
 
 本文使用 DIFT 检测 Spectre 组件中泄露数据的 load 指令。详细设计如下：
 
+\Todo: 解释为什么使用这种方法，和其他相似方法（DLIFT, TPBuf, SG(Full)）的比较
+
+\Todo: 增加结构示意图和代码描述
+
+\Todo: 使用更加详细的描述
+
 \begin{itemize}
 \item 为每个物理寄存器添加一位标记，表示这个寄存器的数据是否来自于推测
   式执行中从内存读取的数据
@@ -68,7 +76,19 @@ void victim(size_t x, uint8_t k) {
 问可能泄露 \verb|array1[x]| 的数据。因此，如果一条控制指令依赖于被标记
 的寄存器，则对它进行标记，其后的所有 load 指令都认为不安全。
 
-\section{可抵抗 Spectre 攻击的微架构的实现}
+\Todo: 解释怎样处理以上的情形
+
+\section{使用推测式执行缓冲区}
+
+\Todo: 说明在检测到不安全的访存指令后，推迟它的执行和用 InvisiSpec 的 SpecBuf 执行的区别
+
+\Todo: 为什么只对部分指令使用，对推测式执行中的部分指令使用 InvisiSpec 是否需要修改
+
+\Todo: 本文使用的基于 DIFT 的检测方法和 InvisiSpec 结合
+
+\section{针对 Spectre 攻击的微架构在 gem5 中的实现}
+
+\Todo: 这节介绍怎样在 gem5 中实现我的工作
 
 以下介绍这种可抵抗 Spectre 攻击的微架构在 gem5 模拟器中的实现。首先分
 析 gem5 中乱序执行处理器的实现，然后分别介绍 InvisiSpec 和本文使用的
@@ -76,6 +96,8 @@ DIFT 方案在 gem5 中的实现。
 
 \subsection{gem5 的乱序执行处理器}
 
+\Todo: 做一个 gem5 流水线的示意图？
+
 gem5 的乱序执行处理器实现在 FullO3CPU 类中，它又用类实现类处理器的以下
 流水级：取指（Fetch）、译码（Decode）、重命名（Rename）、发射/执行/回
 写（IEW）、提交（Commit）。
@@ -101,14 +123,20 @@ gem5 的发射、执行和回写三个阶段由一个类 DefaultIEW 实现，它
 gem5 的提交阶段由 DefaultCommit 类实现，它提交 ROB 队列头部的指令，更
 新 ROB 的状态。
 
-\subsection{InvisiSpec 的实现}
+\subsection{InvisiSpec的LSQ的实现}
+
+\Todo: InvisiSpec 所用的 load 指令执行逻辑在 gem5 LSQ 中的实现
 
-% 本文使用 InvisiSpec 执行检测为不安全的 load 指令。相对于阻止该 load 指
-% 令的执行，使用 InvisiSpec 执行该指令，可以使依赖于这个指令的指令可以继
-% 续执行，减少性能损失。以下分析 InvisiSpec 的详细设计，在下一节中分析将
-% xSpectre 检测技术和 InvisiSpec 结合的方法。
+\subsection{推测式执行缓冲区的实现}
 
-% InvisiSpec 使用推测式执行缓冲区保存推测式执行中 load 指令得到的数据，
-% 这部分代码在。
+\Todo: InvisiSpec 的 SpecBuf 在 gem5 中的实现
+
+\subsection{InvisiSpec对缓存一致性协议的修改}
+
+\Todo: InvisiSpec 的 SpecBuf 在 gem5 中的实现
 
 \subsection{动态信息流追踪的实现}
+
+\Todo: 本文所用的 DIFT 方案在 gem5 中的实现，和已有 InvisiSpec 代码的结合
+
+\Todo: 如何添加一个总结性的章节？
-- 
cgit v1.2.3

