Skip to content

riscv: Add qspinlock support #90

Description

@uestc-gr

实现了使用 Zacas 和 Zabha 扩展的 [cmp]xchgXX() 宏,并最终利用这些新引入的宏来为 qspinlocks 添加支持,如果硬件不支持Zacas 和 Zabha 或 Ziccrse扩展,则回退到ticket spinlock。
这个补丁的意义:
1、通过使用 Zacas 和 Zabha 扩展,以及优化的 qspinlock 实现,可以显著提高内核在多核环境下的性能,尤其是在高并发场景下
2、该补丁能够在不同硬件配置下灵活选择锁的实现方式,增强了内核对不同硬件平台的兼容性

测试方法:
1、qemu开启zabha和zacas特性
2、内核开启CONFIG_COMBO_SPINLOCKS配置选项
3、内核启动后启动日志打印"Queued spinlock using Zabha: enabled"
4、运行spinlock测试用例

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions