Windows内核支援哪些CPU?
Intel x86/x86_64
IA64已不再支持.
AMD amd64
ARM (Windows On Arm: WOA)
ARM具备低功耗优势, 除了高通, 还有Broadcom/NXP等都支援ARM架构.
苹果自研M系列开了头,ARM不仅有低功耗,同样有性能,Windows也想分一杯羹。
Alpha
MIPS
PPC
NT4.0之后,这三种架构都不支持了。
详细参考:Windows 处理器要求
内核对多处理器的支援
Windows NT内核设计之初就需要支援多处理器,典型的多处理器技术是SMP.
Windows内核中有NT_UP宏区分单处理器或多处理器。
内核用如下变量记录处理器个数:
//
// KeNumberProcessors - This is the number of processors in the configuration.
// If is used by the ready thread and spin lock code to determine if a
// faster algorithm can be used for the case of a single processor system.
// The value of this variable is set when processors are initialized.
//CCHAR KeNumberProcessors = 0;
多CPU和多核CPU
多CPU代表多个或多路CPU,多核CPU代表一个CPU包含多核,二者概念截然不同。双CPU和单CPU 双核是不同形态,性能不同,内核支援形式也不同。
CPU/SoC需要为内核提供哪些支援?
除了基本的指令支援外,CPU还需要提供必要的"支持"以满足内核需要。
异常和中断处理
指令异常或信号、中断可以注册对应处理函数,完成内核异常处理。否则,内核遇到异常无法正常收尾。
时钟中断是任何抢占式内核都必须依赖的基本功能,没有它,多任务并发就成为了一纸空文。
特权模式和用户模式切换
处理器必须提供模式切换指令方便用户模式调用到内核模式例程,同时支援返回到用户模式继续运行,以支援安全访问模式。比如,int指令和sysenter指令。
互斥指令
不同Thread执行路径不同,很可能访问同一硬件资源或软件空间,为了避免同时访问带来的不预期后果,CPU必须提供互斥指令,可以"锁定"执行,此机制必须由硬件提供,从技术上纯软件不可替代。比如Intel LOCK指令可在早期CPU锁定内存总线达到互斥访问作用。
虚拟内存管理
现代操作系统一般有管理虚拟内存的能力,不同进程切换会发生虚拟地址转换的不同。此时,CPU必须有能力保存不同进程的虚拟内存页表。对于x86, CR3寄存器保存了进程页表物理地址。