summaryrefslogtreecommitdiff
path: root/chap/chap1.tex
diff options
context:
space:
mode:
Diffstat (limited to 'chap/chap1.tex')
-rw-r--r--chap/chap1.tex19
1 files changed, 12 insertions, 7 deletions
diff --git a/chap/chap1.tex b/chap/chap1.tex
index 4a0e94e..7ddf6b6 100644
--- a/chap/chap1.tex
+++ b/chap/chap1.tex
@@ -51,8 +51,8 @@ Tomasulo 算法\supercite{tomasulo},可以识别指令之间的依赖关系,
它的 ROB 使得流水线中可以同时存在 224 个微操作,它的分支预测器可以预测
分支的方向和目标地址,使处理器在预测的目标处取出指令至指令缓存。
-2018 年公布的 Meltdown\supercite{meltdown} 和
-Spectre\supercite{spectre} 攻击使人们发现,虽然处理器在执行指令产生异
+2018 年公布的“熔断”(Meltdown)\supercite{meltdown}和“幽灵”(Spectre)
+\supercite{spectre} 攻击使人们发现,虽然处理器在执行指令产生异
常,或推测式执行错误后,通过恢复可以使体系结构层次上的状态保持正确,但
是这些错误执行的指令在微体系结构中产生了副作用,并且可能泄露系统中的秘
密数据,破坏了系统的安全。在 Meltdown 和 Spectre 之后,研究者发现了更
@@ -100,20 +100,25 @@ gem5 是一个模拟平台,由 GEMS\supercite{gems} 和 M5\supercite{m5} 两
MIPS, RISC-V 等指令系统。作为一个开源的模拟器,学术界和工业界都为 gem5
的开发做出贡献,使得 gem5 称为体系结构研究中最流行的模拟器之一。
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width=0.8\textwidth]{gem5_cpu.pdf}
+ \caption{gem5 支持的 CPU 模型\supercite{gem5-tutorial}}
+ \label{fig:gem5_cpu}
+\end{figure}
+
gem5 的灵活性使得研究者可以根据需要选择不同的系统模型,取得模拟速度和精
度的平衡。gem5 支持以下模型的配置:
-\begin{itemize}
-\item CPU 模型:gem5 支持四种不同的 CPU 模型。AtomicSimpleCPU 模拟一个
- 单周期处理器,模拟速度最快。TimingSimpleCPU 在此之上增加对存储访问时
- 间的模拟。O3CPU 则是一个详细的乱序执行处理器模型。
+\begin{enumerate}
+ \item CPU 模型:如图\ref{fig:gem5_cpu},gem5 支持多种不同的 CPU 模型。AtomicSimpleCPU 模拟一个单周期处理器,模拟速度最快。TimingSimpleCPU 在此之上增加对存储访问时间的模拟。O3CPU 则是一个详细的乱序执行处理器模型。此外,gem5 还支持使用 KVM 虚拟化技术模拟 CPU 的执行。
\item 系统模式:gem5 可以用系统调用模拟(SE)和全系统(FS)两种模式进
行模拟,前者模拟大多数的系统调用,无需对操作系统和设备进行模拟,而后
者则模拟了操作系统和设备,同时执行用户态和内核态的指令。
\item 存储系统:gem5 包含两种存储系统模型,来自 M5 的 Classic 模型容易
配置且模拟速度快,而来自 GEMS 的 Ruby 模型则提供了一个可以精确模拟缓
存一致性模型的存储系统模拟框架。
-\end{itemize}
+\end{enumerate}
gem5 模拟器使用 C++ 编写,并集成了 Python,模拟器的核心功能由 C++ 实现,
而 Python 用于初始化、配置和控制模拟器。为了支持多种指令系统和缓存一致