QEMU源码全解析31 —— Machine(1)

本文内容参考:

《趣谈Linux操作系统》 —— 刘超,极客时间

QEMU/KVM》源码解析与应用 —— 李强,机械工业出版社

特此致谢!

通过本系列前30篇文章,笔者已经将QEMU的一些基础知识进行了讲解。从本回开始,我们正式开始系统各个组成硬件的代码解析。

首先要介绍的当然是machine,即主板与固件的模拟。对应的文件是hw/core/machine.c。不过要在讲解代码之前,要先从QEMU命令行讲起。一个QEMU命令行的示例如下:

-machine pc-i440fx-trusty,accel=kvm,usb=off

命令行中的pci-i440fx是x86机器默认的架构。这里要对i440fx进行简要介绍。

INTEL 440FX芯片组

Intel 440FX(i440fx)是Intel(英特尔)在1996年发布的用来支持Pentium II(奔腾2)的主板芯片,距今已有20多年的历史,是一代比较经典的架构。虽然QEMU已经能够支持更先进的q35架构的模拟,但目前QEMU仍然默认使用i440fx架构。

当年,Intel公司凭借TRITON系列芯片组赚取了巨额利润后丝毫没有松懈,因为他们需要生产出更新的芯片组来配合PENTIUM PRO,就这样440FX芯片组诞生了。此款芯片组是Intel生产的第一款基于SLOT 1构架的芯片组,被人们称为NATOMA。NATOMA由四块芯片构成:82441FX/82442FX/82371SB/82093AA。其中82093AA可选,采用1*64-PIN PQFP形式封装,其余三块采用3*208-PIN PQFP形式封装。82093AA这枚芯片的作用就在于它能使440FX芯片组支持两个CPU并支持进行对称多进程独立I/O APIC处理。NATOMA不存在内存CACHE范围限制问题,因为PENTIUM PRO CPU的片内二级缓存可对所有内存进行CACHE操作。在内存管理方面,NATOMA也有很大进步,它可支持1GB内存容量。然而另人遗憾的是,它缺乏对SDRAM的支持。此外440FX采用PIIX3硬盘控制器,支持总线控制,最大数据传输率为PIO MODE 4/DMA MODE 2(16.6MB/S),它还支持USB,支持同步PCI,其支持的总线速度为60/66MHZ。

Intel 440FX由一个两芯片的北桥组成。主要组件是82441FX PCI桥和内存控制器,以及用于PCI总线的82442FX数据总线加速器。

该芯片组使用PIIX3 82371SB南桥芯片,支持高速总线主DMA IDE接口和USB,并充当PCI和ISA总线之间的桥梁。

主板以及核心芯片的实物图如下所示:

以i440fx为北桥、piix3为南桥的芯片组结构如下图所示:

Intel 440FX架构图

如上图所示,i440fx北桥包括PMC(PCI Bridge and Memory Controller)以及DBX(Data Bus Accelerator)。北桥的作用是向上连接多个处理器,向下连接内存以及PCI总线,该PCI总线可以衍生出一个PCI的设备树。

pii3南桥主要用来连接低速设备,包括IDE控制器、USB控制器等。各种慢速设备可以通过控制器连接到系统,如硬盘、USB设备等(与控制器对应)。南桥还会连接ISA总线,传统的ISA设备可以借此连接到系统。

这里边还有一个需要注意的地方,即中断控制器I/O APIC直接连接到处理器,设备的中断可以通过I/O APIC路由到处理器。

欲知后事如何,且看下回分解。

猜你喜欢

转载自blog.csdn.net/phmatthaus/article/details/132183026