
x86架构
文章平均质量分 81
河马虚拟化
这个作者很懒,什么都没留下…
展开
-
IOMMU是如何划分PCI device group的?
IOMMU的一个主要作用就是将IO设备发出的请求地址IOVA(I/O Virtual Address)转化为物理内存地址,如果没有IOMMU,那么所有的IO设备都将使用相同的物理地址空间访问物理内存。引入IOMMU后,就会引入IOVA这个地址空间,IO设备可以通过IOVA虚拟地址访问物理内存。在虚拟化引入之前,IOMMU主要有两个功能:创建IOVA到HPA的映射,让设备能够访问任意物理内存。比如,有些I/O设备的寻址空间只有4G,但是平台的物理内存大于4G,为了让这样的I/O设备能够访问4G空间原创 2021-01-05 08:19:13 · 6455 阅读 · 3 评论 -
如何获取x86 CPU L1、L2和L3 cache的大小
CPU cache是介于CPU内核和物理内存(动态内存 dynamic RAM)之间的若干块静态内存(staic RAM),static RAM的访问速度比dynamic RAM的访问速度要快很多,而且不需要像dynamic RAM那样由于会漏电需要保持一定的刷新频率。static RAM作为访问dynamic RAM的缓存,对于系统的内存访问性能起到了很大的提升作用,但是由于static RAM的成本比较高,所以一般static RAM或者说Cache的大小都比较有限,一般都在几十KB到几十MB的范围内。原创 2020-11-05 08:25:00 · 4852 阅读 · 0 评论 -
Intel x86 CPU中断和异常的定义和分类
中断通常被定义为一个打断CPU芯片指令执行的事件,该事件对应到对应到CPU芯片内部或者外部的电路产生的电子信号。中断信号可以被划分为同步中断和异步中断:同步中断,该类型中断由CPU的控制单元在执行指令的时候产生,并且是在当前指令执行完毕下一个指令执行之前产生。 异步中断,该类型中断由其他硬件设备在任意的时间产生,并且遵循CPU的时钟信号传递给CPU。对于Intel的CPU而言,它将同步...原创 2018-12-18 21:23:54 · 2668 阅读 · 2 评论 -
什么是CPU Die?
在看CPU相关的手册的时候,经常会看到Die的字样,刚开始不太理解是什么意思,感觉有点像是一颗CPU芯片,但是这样理解还是不够准确。后来各种查找,终于找到了Die的准确意思,原来Die是处理器在生产过程中引入的概念。总的来说,Die或者CPU Die指的是处理器在生产过程中,从晶圆(Silicon Wafer)上切割下来的一个个小方块(这也是为啥消费者看到的CPU芯片为什么都是方的的原因),...原创 2018-12-02 09:20:09 · 45597 阅读 · 3 评论 -
Intel VT-d(5)- DMAR表组织结构
在系统上电的时候,BIOS/UEFI负责检测并初始化重定向硬件(即VT-d硬件),为其分配相应的物理地址,并且以ACPI表中的DMAR(DMA Remapping Reporting)表的形式告知VT-d硬件的存在。DMAR的格式如下所示,先是标准的APCI表的表头,然后是Host Address Width表示该系统中支持的物理地址宽度;标志字节Flag表示VT-d硬件支持的一些功能,最后是...原创 2018-11-24 15:27:11 · 4317 阅读 · 0 评论 -
Intel VT-d(4)- Interrupt Posting
Interrupt-posting是VT-d中中断重映射功能的一个扩展功能,该功能也是针对可重映射的中断请求。Interrupt-posting功能让一个可重映射的中断请求能够被暂时以一定的数据形式post(记录)到物理内存中,并且可选择性地主动告知CPU物理内存中暂时记录着pending的中断请求。在x86处理器的虚拟化中,Interrupt-posting再加上APIC Virtualiz...原创 2018-11-17 07:53:45 · 2221 阅读 · 0 评论 -
Intel VT-d(3)- 中断重映射
VT-d硬件中除了包含DMA重映射硬件外,也会包含中断重映射硬件,该中断重映射单元让系统软件能够对I/O设备产生的中断(包括从I/O APIC发送过来的中断,I/O设备产生的以MSI、MSI-X形式传递的中断,不包含中断重映射硬件本身产生的中断)的传输进行控制,而不仅仅取决于硬件的连接。对于VT-d硬件而言,中断请求就是从外面发送进来对物理地址范围0xFEEX_XXXXh的写请求。VT-d中,...原创 2018-11-11 08:41:37 · 4582 阅读 · 2 评论 -
Intel VT-d(2)- DMA重定向
DMA重定向硬件一般位于Root Complex中,Root-Complex是PCIe系统中引入的概念,它将CPU、内存子系统和PCIe子系连接起来。如下图所示:而Root Complex则经常被集成到CPU芯片上、MCH(Memory Controller Hub)上或者是IOH(I/O hub)上。DMA重定向硬件将来自于I/O子系统的内存访问请求分为两类:不带地址空间ID的请...原创 2018-11-04 13:22:11 · 4805 阅读 · 0 评论 -
Intel VT-d(1)- 简介
Intel VT-d的全称是Intel Virtualization Technology for Direct I/O,它是Intel虚拟化技术的一部分,主要针对的是I/O子系统,它的实现主要是通过在硬件上引入重定向单元,该硬件重定向单元用于对I/O子系统的DMA操作和中断传递进行重定向,从而辅助VMM(Virtual Machine Monitor)实现I/O子系统的虚拟化。一般情况下VM...原创 2018-10-28 19:20:53 · 17725 阅读 · 0 评论 -
CPU在空闲的时候做什么
对于大部分负载并不重的计算机而言,可以说CPU大部分的时间都是停留在"idle task"中,在Windows中从任管理器中可以看到大部分的CPU时间都停留在System Idle Process,如下图所示:在Linux中,idle task并不是一个独立的线程,但是可以通过top指令查看CPU的idle比例:总的来说,在Intel x86架构CPU中,“idle task”的...原创 2018-10-14 21:59:51 · 8301 阅读 · 4 评论 -
Intel x86 CPU的地址转换加速机制
在x86 CPU中分页机制引入了线性地址和物理地址的概念,从而在一个独立的物理地址空间上,能够同时存在多个相同且独立的线性地址空间。在分页使能的情况下,CPU访问内存的时候,线性地址首先通过页表查询的机制转化为物理地址,然后再通过物理地址完成物理内存的访问。对于64位的x86 CPU,若采用4级的分页机制,其基本结构如下图所示:首先CR3寄存器存放着分级地址转换页表的入口地址,该地址指...原创 2018-09-21 07:37:28 · 1180 阅读 · 0 评论 -
x86 CPU虚拟化环境中的地址转换加速机制
前面讲过,在Intel x86 CPU中,为了加快线性地址到物理地址的转换,引入了各种地址转换的cache(TLB、PDE cache、PDPTE cache、PML4 cache)和PCID(Processor Context Identifier)机制。不清楚的可以出门左转查看上一篇文章。而在虚拟化环境中,即VMX(Virtual Machine Extension)中,Intel x86...原创 2018-09-26 08:00:21 · 1558 阅读 · 0 评论 -
x86 CPU的MSR寄存器
MSR(Model Specific Register)是x86架构中的概念,指的是在x86架构处理器中,一系列用于控制CPU运行、功能开关、调试、跟踪程序执行、监测CPU性能等方面的寄存器。MSR寄存器的雏形开始于Intel 80386和80486处理器,到Intel Pentium处理器的时候,Intel就正式引入RDMSR和WRMSR两个指令用于读和写MSR寄存器,这个时候MSR就算被正...原创 2018-09-16 08:29:37 · 11686 阅读 · 0 评论 -
VMX(3) -- VMXON Region
对于Intel x86处理器,在打开VMX(Virtual Machine Extension),即执行VMXON指令的时候需要提供一个4KB对齐的内存区间,称作VMXON region,该区域的物理地址作为VMXON指令的操作数。该内存区间用于支持逻辑CPU的VMX功能,该区域在VMXON和VMXOFF之间一直都会被VMX硬件所使用。VMXON Region内存区域的要求跟VMCS类...原创 2018-08-23 06:57:06 · 1811 阅读 · 0 评论 -
VMX(2) -- VMCS理解
在虚拟化中,为了实现vCPU,既要模拟CPU的运行,又要记录vCPU的状态(包括对vCPU运行的控制信息),在Intel x86处理器的VMX(Virtual Machine Extension)功能中,通过引入根运行模式(VMX root operation)和非根模式(VMX non-root operation),直接让vCPU运行在逻辑CPU上,在软件上省去了对vCPU运行的模拟,同时也大...原创 2018-08-19 08:57:56 · 3304 阅读 · 0 评论 -
VMX(1) -- 简介
VMX(Virtual Machine Extension)是Intel 64和IA-32架构处理器级别的功能,用于支持虚拟化。VMX支持两种类型的软件:Virtual-machine monitor(VMM),VMM对处理器和平台硬件具有完全的控制权限。VMM为客户软件提供虚拟处理器的抽象,从而让客户软件能够直接在逻辑CPU上跑。 客户软件(Guest software)。每个虚拟机(VM...原创 2018-08-14 07:24:09 · 17484 阅读 · 0 评论 -
x86基本运行模式和内存模型
个人理解所谓的Intel x86架构其实就是Intel 64和IA-32架构的总称。IA-32架构支持三种基本的运行模式,每种模式下可执行的指令和可用的功能可能不一样: 保护模式(Protected Mode)。这是最常见的模式,这是一个受保护的并且支持多任务的环境。之所以受保护是因为在这个模式下,能够对内存及一些外围设备提供硬件级别的保护设置,如分段机制,分页机制。大部分OS都运行在这...原创 2018-08-01 07:21:02 · 2515 阅读 · 0 评论 -
x86处理器运行环境
任何程序跑在IA-32处理器上都需要一个特定的环境来支持,比如程序代码的读取,数据的存储和状态的保存等。这些资源组成IA-32处理器基本的运行环境,这些资源主要包括:地址空间(Address Space)。任何程序跑在IA-32处理器上的时候都可以看到一个线性地址空间,该地址空间大小为2的32次方。该线性地址空间需要通过分页机制映射到物理地址,该线性地址空间让程序以为自己可以访问到系统中的任何...原创 2018-08-05 07:17:56 · 1124 阅读 · 0 评论