开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

CMF介绍

项目介绍

简介

CMF(Cache Manage Framework)是基于鲲鹏硬件平台开发的缓存控制框架,由内核态驱动与命令行工具组成。

  • 内核态驱动与命令行工具通过ioctl进行交互。
  • 命令行工具解析用户命令行参数,通过用户态API将解析后命令发送给驱动API,驱动获取用户态参数后解析参数合法性,通过合法性校验后由硬件访问模块完成对硬件寄存器的查询与设置。

CMF通过变更硬件寄存器的值影响系统中L2 Cache(二级缓存)、L3 Cache(三级缓存)等资源的分配。

架构图

图 1 CMF架构图

应用场景

在使用鲲鹏920新型号处理器+昇腾800I A3推理服务器部署场景下存在算子下发速度较慢,导致NPU空闲占比较高,进而造成解码时延较长问题。CMF通过变更硬件寄存器的值影响系统中L2 Cache资源的分配,使Qwen 2 1.5B模型decode(解码)时延降低7%。

此外,CMF提供对外接口,外部应用可通过直接调用应用程序接口完成与驱动的交互,从而查看与修改硬件资源的分配策略。

使用限制

  • 当前仅支持物理机设置。
  • 驱动加载需在root用户权限下进行。
  • L2 I/D(Instruction/Data Cache)配置均不得少于2路。
  • 受驱动修改限制的核不能进行电源状态切换,电源状态切换时会导致复位。典型的电源状态切换包括重启、LPI打开、非performance模式下低功耗特性等。
  • 需要先加载内核态驱动,确认内核态驱动加载成功后,方可通过命令行工具对硬件寄存器进行读写。

目录结构

cmf/
├── drv                            # 内核态驱动源码目录
│   ├── CMakeListx.txt             # 定义驱动模块的编译规则与依赖
│   ├── cman_drv.c                 # 驱动主逻辑,实现ioctl接口与用户态通信
│   ├── cman_drv.h                 # 驱动头文件,定义内部数据结构与函数声明
│   ├── hw_regs_access.c           # 封装硬件寄存器读写操作的具体实现
│   ├── hw_regs_access.h           # 硬件访问接口头文件,定义寄存器操作函数
│   ├── Makefile                   # 配合内核构建系统编译驱动模块
│   ├── platform_info.c            # 获取与解析当前 CPU 平台信息的实现
│   └── platform_info.h            # 平台信息接口头文件,定义平台查询函数
├── uapi                           # 用户态API及工具源码
│   ├── CMakeListx.txt             # 定义用户态库及命令行工具的编译规则
│   ├── cmanuapi.c                 # 用户态 API 实现,封装 ioctl 调用逻辑
│   ├── cmanuapi.h                 # 用户态 API 头文件,供外部程序调用接口
│   └── devcman.cpp                # 命令行工具主程序,解析参数并调用 API
├── docs                           # 文档目录
│   ├── zh                         # 中文文档目录
│   |   ├── release_notes.md       # 版本说明书
│   |   ├── installation_guide.md  # 安装指南
│   |   ├── menu_cmf.md            # 文档指南
│   |   ├── user_guide.md          # 用户指南
│       └── best_practices.md      # 最佳实践
├── CMakeListx.txt                 # 项目构建配置文件
├── LICENSE                        # 开源许可证文件
├── CCBY                           # 开源文档许可证文件
└── README.md                      # 项目说明文档

版本说明

版本说明包含CMF本身的版本以及对应软硬件版本要求,具体请参见《版本说明书》。

学习文档

资源名称 资源简介
版本说明书 提供CMF每个发布版本的基础信息和特性更新信息。
项目介绍 提供CMF的概念和架构。
安装指南 提供CMF编译安装方法指导。
用户指南 提供CMF快速入门指导。
最佳实践 提供CMF使用实践案例。

环境部署

为保证您可以顺利安全地使用CMF,请确保所使用的环境信息在本章节提供的已验证环境范围内,具体参考《安装指南》。

用户指南

CMF命令行工具的使用方法和参数介绍。请参见《用户指南》。

贡献声明

欢迎大家为社区做贡献,如果使用过程中有任何问题/建议,或者需要反馈特性需求和bug报告,可以提交issues联系我们,具体贡献方法可参考这里。同时也欢迎大家在讨论专区展开讨论交流。感谢您的支持。

许可证书

本项目采用GPL-2.0许可证,详见LICENSE文件。 本项目文档适用CC-BY 4.0许可证,具体请参见LICENSE文件。

致谢

CMF由华为公司的下列部门联合贡献:

鲲鹏计算Boostkit开发部 感谢来自社区的每一个PR,欢迎贡献CMF!