谢邀(搞不懂为啥这么老的问题现在也有人邀请)。先说结论,严格意思上的CPU驱动和内存驱动是没有的。在答题之前我看了一下别人的答案,居然没有一个完全正确,也是奇事一件。我们来看一下为什么别的答案错了,错在哪里和正确的结论是什么。
有人说intelppm.sys是CPU的驱动,看起来的却像,它和其他驱动在设备管理器中位置完全一样:
右键点CPU,查看驱动确实能看到intelppm.sys。那为什么又说不是呢?intelppm全称是IntelProcessorPowerManagement,顾名思义,就是Intel处理器电源管理模块,它的任务十分明确,就是处理Intel CPU的省电功能的。它和BIOS报上来的ACPI SSDT表中的P State和C State一起工作,为大家在不用或者少用CPU时节省一定的电力。P State和C State的详细内容见:
它就管这么点事,别的都不管。有的答案说的中断啊,多CPU啊,X86 CPU和其他CPU不同的部分,并不是在它里面,而是在其他的地方,具体在哪,我后面再讲。它的大小也很小,只有几十K。它的名字叫Intelppm,但它不来自Intel,而是微软home made,AMD有不同的文件。它的功能单一,各种CPU (X86,ARM, MIPS)的不同并不体现在它之内,有的CPU种类干脆就没有这种驱动,所有它不是严格意义上的CPU驱动。
没有,内存不是即插即用设备。它是隐藏设备,在设备管理器中叫做“Motherboard Resources”,和其他PCIe Root Complex混在一起,不同好找。一个简单的办法是使用资源来查看:
红框部分就是BIOS报告给Windows的可用内存空间。我们点击其他的部分,例如PCIe Root Complex,就可以看到他们的驱动是pci.sys。那内存呢?
答案就是没有。我们知道内存大小是BIOS报告的,但是不同的内存模型是怎么处理的呢?
真正的处理各种CPU不同架构的程序在HAL里,HAL就是Hardware Abstraction Layer,即硬件抽象层。HAL是个dll,不同的CPU,甚至不同的中断处理架构(PIC/APIC)都有不同的HAL,支持不支持ACPI也有不同的HAL。早期Windows安装后带有很多HAL,还可以切换,后期趋近于安装后只有一个HAL。HAL的名字的信息见参考资料1。
CPU、内存等等不同而的不同操作都抽象在HAL里面,但它也并不是严格意义的驱动。
CPU和内存的操作实际上都包含在Intel的IA32手册中,微软提供独一份就行了,并不要货出多门。主板上的CPU和内存的不同都被BIOS隐藏并通过一致的接口报告给了操作系统,别的程序和驱动并不要关心。这就决定了CPU和内存没有驱动。Intelppm.sys是推出了P/C State后引入了AMD和Intel对电源管理不同才新加的,原先并没有,这也从另外一个方面证明Intelppm.sys并不是CPU的驱动。
欢迎大家关注我的专栏和用微信扫描下方二维码加入微信公众号"UEFIBlog",在那里有最新的文章。同时欢迎大家给本专栏和公众号投稿!
参考资料: