(二)学习英特尔处理器一般架构原则

软件的特权级别

在IaaS这样的云环境下(Amazon EC2)它们的CPU运行软件是在四个不同特权级别如下图。
(二)学习英特尔处理器一般架构原则_第1张图片
每一个特权级别都比下面一个级别有更高的权限级别,所以一个高级别权限的软件可以自由的读写在低级别权限软件上的代码和数据。也就是说,一个软件信任所有比自己权限高的软件,并且系统安全必须考虑所有特权级别的软件。
系统管理模式(SMM)用于主板制造商实现风扇控制和深度睡眠等功能,以及模拟缺少的硬件。因此,引导软件在计算机固件中负责将DRAM的一个连续子集设置为系统管理RAM
(SMRAM),并将在SMM模式下运行所需的所有代码加载到SMRAM中。SMRAM享有特殊的硬件保护,可以防止权限较低的软件访问SMM代码。
IaaS云提供商允许他们的用户去运行在虚拟机中被选中的操作系统。硬件虚拟化,被Intel称为虚拟机扩展(VMX),可以支持虚拟机监听程序。虚拟机监听器处于一个比操作系统高级的特权级别并负责在共享同一物理机器的多个操作系统之间分配硬件资源。内核用CPU硬件虚拟化特性让每个操作系统认为它们都拥有自己独立的一台计算机,叫做虚拟机。虚拟机管理器代码通常的运行特权是0 ring即root权限。在虚拟机扩展的root模式下并利用硬件虚拟化的虚拟机管理器通常比基于二进制转换的虚拟机管理器具有更好的性能和更小的代码库。
系统研究文献建议将操作系统拆分为一个小内核,该内核运行在一个高特权级别,称为内核模式或管理模式,在Intel体系结构中称为ring 0。内核分配计算机资源给其他系统组件,像运行在低特权权限的设备驱动和设备服务。然而,由于性能的原因,主流操作系统有大量的代码运行在0 ring特权级别。它们的单内核包括设备驱动程序、文件系统代码、网络堆栈和视频功能。
应用软件,比如Web服务器或游戏客户端,运行在最低特权等级也就是用户等级3 ring。在IaaS云环境,客户提供的虚拟机映像以VMX非root模式运行,因此其中的应用程序代码在VMX非root中运行。

地址空间

为英特尔架构编写的软件使用四种不同的物理地址空间访问计算机资源。(二)学习英特尔处理器一般架构原则_第2张图片
地址空间在目的和内容上有部分重叠,这可能导致混淆。本节简要介绍了Intel体系结构定义的物理地址空间,重点介绍了它们的用途和用于管理它们的方法。

寄存器空间

由用于访问CPU的寄存器文件的名称组成,寄存器文件是在CPU时钟频率下运行的惟一内存,可以使用它而不会造成任何延迟损失。寄存器空间由CPU的体系结构定义,并记录在SDM中。一些寄存器,如控制寄存器(CR)在配置CPU的操作中扮演特定的角色。例如,CR3在地址转换中起着核心作用。这些寄存器只能由系统软件访问。其余的寄存器构成应用程序的执行上下文,这实际上是一个高速的存取空间。这些寄存器可以在所有特权级别访问,它们的分配由软件的编译器管理。许多CPU指令只对寄存器中的数据进行操作,并且只将结果放在寄存器中。

内存空间

通常指地址空间或物理地址空间,由236(64GB) - 240 (1TB)个地址组成。内存空间主要用于访问DRAM,但也用于与内存映射设备通信,这些设备从系统总线上读取内存请求,并为CPU编写响应。一些CPU指令可以从内存空间读取它们的输入,或者使用内存空间存储结果。内存映射的一个比较著名的例子是,在计算机启动时,内存地址0xFFFFF000 0xFFFFFFFF(位于4GB位置下面的64 KB内存)被映射到闪存设备,闪存设备保存引导计算机的代码的第一阶段。在引导过程中,内存空间由计算机固件在设备和DRAM之间划分。有时,系统软件包括修改内存空间分区的特定于主板的代码。OS内核依赖于地址转换来控制应用程序对内存空间的访问。管理程序依赖于相同的机制来控制操作系统。

输入/输出(I / O)空间

这部分空间由216个I / O地址组成,通常称为端口。 I / O端口专门用于与设备通信。 CPU提供用于读取和写入I / O空间的特定指令。 I / O端口按标准或事实分配给设备。 例如,端口0xCF8和0xCFC始终用于访问PCI 配置空间。CPU为系统软件实现了一种机制,以提供对应用程序的细粒度I/O访问。然而,所有现代内核都限制应用程序软件直接访问I/O空间,以限制应用程序错误的潜在危害。

模型专用寄存器(MSR)

空间由232个MSR组成,用于配置CPU的操作。MSR空间最初是为使用特定于CPU模型的固件而设计的,但是一些MSR已经被提升到体系结构MSR状态,使它们成为Intel体系结构的一部分。例如,体系结构MSR 0x10拥有一个高分辨率、单调递增的时间戳计数器。CPU提供从MSR空间读写的指令。指令只能由系统软件使用。一些msr还通过应用程序可访问的指令公开。例如,应用程序可以通过RDTSC和RDTSCP指令读取时间戳计数器,这对于基准测试和优化软件非常有用。

你可能感兴趣的:(论文学习)