ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux 内核 arch/powerpc 的 CPU 家族全景:从 601 到 POWER10 与 BookE 嵌入式体系

Linux 内核 arch/powerpc 的 CPU 家族全景:从 601 到 POWER10 与 BookE 嵌入式体系 Linux 内核 arch/powerpc 的 CPU 家族全景从 601 到 POWER10 与 BookE 嵌入式体系【免费下载链接】linuxLinux kernel source tree项目地址: https://gitcode.com/GitHub_Trending/li/linux本指南以 Documentation/arch/powerpc/cpu_families.rst 为骨架系统梳理 Linux 内核arch/powerpc所支持的各大 CPU 家族及其 MMU内存管理单元架构差异。读完本文你将掌握 Book3S、IBM BookE、Freescale BookE、8xx 与 A2 core 五大分支的谱系关系、TLB/Hash MMU/Radix MMU 三种页表机制的适用范围以及这些家族分类在 Kconfig.cputype 与 mmu.h 中的具体落地方式。背景为什么 PowerPC 内核需要CPU 家族分类arch/powerpc是 Linux 内核中硬件形态最丰富的架构之一它既要支持 32 位与 64 位服务器/桌面处理器POWER 系列、G3/G4/G5又要覆盖从网络设备到超算的各类嵌入式核心4xx、8xx、e500、e5500、A2 等。这些处理器虽然共享 Power 指令集基因但在页表管理方式上分化出截然不同的路径Hash MMU经典 PowerPC 服务器方案使用哈希页表HPTRadix MMUPOWER9 起引入的新式页表类似 x86 页表结构软件加载 TLBTLB 条目由内核软件填充常见于嵌入式核心硬件辅助/间接 TLB由硬件加速完成部分地址翻译如 e6500 与 A2。原文档正是围绕这些差异把arch/powerpc支持的处理器划分成五大谱系。下面的各节逐一展开。Book3Saka sPAPR服务器与桌面主脉Book3S 是覆盖最广、谱系最长的家族其核心特征为Hash MMU603 和 e300 除外Radix MMUPOWER9 及以后软件加载 TLB603 和 e300可选软件加载 TLB 以配合 Hash MMU755、7450、e60032 位与 64 位混合的庞大家族树。原文档给出的完整谱系如下-------------- ---------------- | Old POWER | -------------- | RS64 (threads) | -------------- ---------------- | v -------------- ---------------- ------ | 601 | -------------- | 603 | --- | e300 | -------------- ---------------- ------ | | v v -------------- ----- ---------------- ------- | 604 | | 755 | --- | 750 (G3) | --- | 750CX | -------------- ----- ---------------- ------- | | | v v v -------------- ---------------- ------- | 620 (64 bit) | | 7400 | | 750CL | -------------- ---------------- ------- | | | v v v -------------- ---------------- ------- | POWER3/630 | | 7410 | | 750FX | -------------- ---------------- ------- | v -------------- ---------------- | POWER3 | | 7450 | -------------- ---------------- | | v v -------------- ---------------- | POWER4 | | 7455 | -------------- ---------------- | | v v -------------- ---------------- | POWER4 | -- | 970 | | 7447 | -------------- ------- ---------------- | | | v v v -------------- ------- ---------------- | POWER5 | | 970FX | | 7448 | -------------- ------- ---------------- | | | v v v -------------- ------- ---------------- | POWER5 | | 970MP | | e600 | -------------- ------- ---------------- | v -------------- | POWER5 | -------------- | v -------------- ------- | POWER6 | -?- | Cell | -------------- ------- | v -------------- | POWER7 | -------------- | v -------------- | POWER7 | -------------- | v -------------- | POWER8 | -------------- | v -------------- | POWER9 | -------------- | v -------------- | POWER10 | -------------- --------------- | PA6T (64 bit) | ---------------这个谱系图传递了三条关键信息双引擎并行演化左侧从 601/604 出发经 620首个 64 位成员演进到 POWER3/POWER4/POWER5……POWER10 的服务器主线右侧从 603/750G3出发经 7400/7410/7450 演进到 e600 的嵌入式主线。MMU 形态的分水岭603/e300 是软件加载 TLB 的代表604 及之后的服务器核心采用 Hash MMU从POWER9 开始支持 Radix MMU。旁支RS64线程化、970 系列G5源自 POWER4、Cell 处理器与 POWER6 有交叉关系原文档以-?-表示、以及独立的 64 位 PA6TP.A. Semi。内核源码中这一家族由CONFIG_PPC_BOOK3S_32与CONFIG_PPC_BOOK3S_64两个配置分支承接。见 Kconfig.cputypePPC_BOOK3S_32对应 512x/52xx/6xx/7xx/74xx/82xx/83xx/86xx即 601/603/604/750/7400/7450/e300 等 32 位核心PPC_BOOK3S_64对应 Server processors即 POWER5/970/POWER6/POWER7/POWER8/POWER9/POWER10 等服务器处理器在 32 位分支内部还有PPC_BOOK3S_603Support for 603 SW loaded TLB依赖PPC_BOOK3S_32默认开启与PPC_BOOK3S_604Support for 604 HASH MMU两个细分开关——这正好对应原文档中603 用软件加载 TLB、其余用 Hash MMU的划分。Hash 与 Radix 在内核中的实现位置从 arch/powerpc/mm/book3s64/Makefile 可以看到两类 MMU 在 64 位 Book3S 下的模块划分Hash 路径hash_pgtable.o hash_utils.o hash_tlb.o slb.o slice.oSLB 即 Segment Lookaside Buffer与 Hash HPT 配套的段式翻译组件Radix 路径radix_pgtable.o radix_tlb.o radix_hugetlbpage.o仅在CONFIG_PPC_RADIX_MMU开启时编译。在 mmu.h 中两种模式通过 MMU 特性标志区分CONFIG_PPC_64S_HASH_MMU对应MMU_FTR_HPTE_TABLE哈希页表以及MMU_FTR_1T_SEGMENT、MMU_FTR_68_BIT_VA等服务器特性CONFIG_PPC_RADIX_MMU对应MMU_FTR_TYPE_RADIX、MMU_FTR_GTSEGuarded Storage 相关等。MMU_FTRS_ALWAYS会根据配置自动归一到MMU_FTR_TYPE_RADIX或MMU_FTR_HPTE_TABLEmmu.h供early_mmu_has_feature()等运行期判断使用。IBM BookE440/450/460/476 嵌入式家族IBM BookE 家族的特征非常简洁软件加载 TLB全部 32 位。谱系为 440 → 450 → 460 → 476其中 450 分支派生出了BG/PBlue Gene/P超算芯片-------------- | 440 | -------------- | v -------------- ---------------- | 450 | -- | BG/P | -------------- ---------------- | v -------------- | 460 | -------------- | v -------------- | 476 | --------------在配置层面该家族由config 44xAMCC 44x, 46x or 47x承接见 Kconfig.cputype并自动选择PPC_DCR_NATIVE、PHYS_64BIT支持 64 位物理地址、PPC_KUEP等选项。更细的 476 支持由 arch/powerpc/platforms/44x/Kconfig 中的PPC_47x提供mmu.h 中MMU_FTRS_ALWAYS会按CONFIG_PPC_47x/CONFIG_44x分别固定为MMU_FTR_TYPE_47x/MMU_FTR_TYPE_44x。Motorola/Freescale 8xx硬件辅助的软件 TLB8xxMPC8xx家族是最精简的一支软件加载 硬件辅助software loaded with hardware assist全部 32 位谱系仅一个节点MPC8xx Core。------------- | MPC8xx Core | -------------硬件辅助意味着 TLB 加载虽由软件发起但硬件会参与部分翻译流程这与纯软件加载的 BookE 形成对比。配置上由PPC_8xxFreescale 8xx控制见 Kconfig.cputype并自动选择FSL_SOC、PPC_KUEP、HAVE_ARCH_VMAP_STACK同时开启ARCH_SUPPORTS_HUGETLBFS与HUGETLBFS8xx 是支持大页的早期嵌入式核心。mmu.h 中对应MMU_FTR_TYPE_8xx。Freescale BookE从 e200 到多线程 e6500Freescale BookE 家族的核心特征是软件加载 TLBe6500 增加硬件加载的间接 TLB 条目HW loaded indirect TLB entries32 位与 64 位混合。谱系如下-------------- | e200 | -------------- -------------------------------- | e500 | -------------------------------- | v -------------------------------- | e500v2 | -------------------------------- | v -------------------------------- | e500mc (Book3e) | -------------------------------- | v -------------------------------- | e5500 (64 bit) | -------------------------------- | v -------------------------------- | e6500 (HW TLB) (Multithreaded) | --------------------------------演化要点e200面向极低功耗应用e500/e500v2是网络/通信设备主流e500mc开始引入 Book3e 体系e5500跨入 64 位e6500进一步加入硬件间接 TLB 条目加载并支持多线程SMT。e6500 在 Power ISA 版本上属于 v2.06见 Documentation/arch/powerpc/isa-versions.rst。从源码可以印证 e6500 的特殊地位setup_64.c 在检查book3e_htw_mode ! PPC_HTW_E6500时说明e6500 tablewalk mode下 TLB 处理程序的行为需要特殊对待sysfs.c 通过PVR_VER(cur_cpu_spec-pvr_value) PVR_VER_E6500识别 e6500 并提供其特有属性traps.c 针对 e6500 核心的 L1 DCWSData cache write shadow mode位做了专门处理e500mc.c 中 KVM 亦按e6500名称区分虚拟化行为。配置侧Freescale BookE 由PPC_85xxFreescale 85xx→PPC_E500承接见 Kconfig.cputype并在PPC_BOOK3E_64Embedded processors自动选择PPC_E500、PPC_E500MC、PPC_DOORBELL等见 Kconfig.cputype中进入 64 位世界。mmu.h 为CONFIG_PPC_E500标注了MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS | MMU_FTR_USE_TLBILX其中MMU_FTR_BIG_PHYS即 e500 系列支持大物理地址空间的体现。IBM A2 coreBook3E 与超算 BG/QIBM A2 core 家族的特征Book3E 体系软件加载 TLB 硬件加载的间接 TLB 条目与 e6500 类似的技术路线64 位。谱系-------------- ---------------- | A2 core | -- | WSP | -------------- ---------------- | v -------------- | BG/Q | --------------A2 是 IBM 为高吞吐计算设计的低功耗多线程核心衍生出WSPWire-Speed Processor与BG/QBlue Gene/Q超算处理器。它与 Freescale e6500 共享软件 TLB 硬件间接 TLB 条目的设计思路同属 Book3E 体系内核中 Book3E 64 位的 TLB 实现位于 arch/powerpc/mm/nohash/Makefile 中的tlb_64e.o tlb_low_64e.o book3e_pgtable.o由CONFIG_PPC_BOOK3E_64控制与 Book3S 的 Hash/Radix 实现完全分离。五大家族一览与内核配置对照家族MMU/TLB 形态位宽代表处理器内核配置入口Book3SsPAPRHash MMUPOWER9 支持 Radix603/e300 用软件 TLB32/64 混合601…POWER10、970、Cell、PA6TPPC_BOOK3S_32/PPC_BOOK3S_64、PPC_BOOK3S_603/PPC_BOOK3S_604IBM BookE软件加载 TLB全部 32 位440、450BG/P、460、47644x、PPC_47xMotorola/Freescale 8xx软件加载 硬件辅助全部 32 位MPC8xx CorePPC_8xxFreescale BookE软件加载 TLBe6500 增加 HW 间接 TLB32/64 混合e200、e500、e500v2、e500mc、e5500、e6500PPC_85xx→PPC_E500、PPC_BOOK3E_64IBM A2 coreBook3E软件 TLB HW 间接 TLB64 位A2、WSP、BG/QPPC_BOOK3E_64从工程视角看这个分类直接决定了内核三套并行 MMU 子系统的构建Book3S 走 arch/powerpc/mm/book3s64/Hash/RadixBookE含 A2与 8xx 走 arch/powerpc/mm/nohash/而各 CPU 的 MMU 特性则在 mmu.h 的MMU_FTRS_POSSIBLE/MMU_FTRS_ALWAYS位图中登记。理解这张家族地图是阅读arch/powerpc内存管理、平台初始化与 KVM 相关代码的第一块敲门砖。【免费下载链接】linuxLinux kernel source tree项目地址: https://gitcode.com/GitHub_Trending/li/linux创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表