冰块的博客

日拱一卒 不期而至

synchronous abort

内存硬件错误触发的系统异常

简介 在arm64架构设备上,遇到过内存硬件问题导致的系统异常,非内核代码问题。 据boot同事说和启动阶段配置内存涉及到内存时序的一个参数有关。 查阅arm cpu手册,根据异常错误码EC区分。 EC, bits [31:26] Exception Class. Indicates the reason for the exception that this register ...

perf introduction

perf原理与应用

简介 与Ftrace相反,Perf的监控范围主要限于单个进程。 因此Perf更适合分析特定程序的行为,比如代码的缓存友好性,或者每个函数中花费的时间。 Perf工具本身是构建在内核的perf_events子系统之上,该子系统实际上实现了跟踪、分析和采样功能。 Perf还可以利用Ftrace的架构来连接到跟踪点,类似于Ftrace和LTTng进行跟踪。 Perf_events内部使用一个...

arm64 FIQ

arm64架构FIQ中断

FIQ简介 FIQ中断的设计旨在提供比普通中断更高的优先级。 在AArch64架构中,中断级别是由中断控制器来管理的。 FIQ通常具有较高的中断级别,以确保它们在系统中的其他中断之前被快速处理。 较高的优先级意味着可以打断普通中断,在系统发生异常发生时深入到异常现场。 系统陷入内核态运行时如果出现关中断死循环的场景,或者关中断后处理时间过长,都可以利用FIQ中断捕捉问题上下文。 当发生F...

sched domain & group

调度域和调度组

简介 Linux内核引入调度域(sched domain)和调度组(sched group)的目的是优化任务调度,以更好地适应多核和多处理器系统的复杂性。 这两个概念提供了一种层次结构,允许操作系统更有效地管理和调度任务,以提高系统的整体性能和响应性。 cpu 拓扑 分三个级别 Package (PKG) Multi-Core Cache (MC) Simultaneou...

CPU Isolation

CPU隔离

简介 cpu隔离是个很有用的特性。目的是最小化指定cpu上的内核活动,这些内核活动可能导致延迟,降低性能。 有些高带宽网络应用或者实时系统,对延迟和性能有特殊要求,必须独占cpu,不能受到任何其它系统活动的干扰。 比如DPDK超高的网络带宽不允许发生丢包或者抖动。 系统活动比如,中断、timer、内核线程(比如workqueues),页面回收等, 这些异步的事件处理对于维护系统正常运行...

riscv PMP内存保护机制

riscv pmp momery mechanism

PMA 简介 PMA,即Physical Memory Attributes,物理内存属性 完整的系统物理内存映射包含各种地址空间范围: 常规内存区域 MMIO区域 空洞 每个内存区域有自己的访问属性,可能是如下特性的某个集合 支持/不支持 读取、写入或者执行 支持/不支持 子字或者子块访问 支持/不支持 原子操作操作 支持/不支持 缓存一致性 具有...

iommu概述

kernel iommu

本文翻译自 An Introduction to IOMMU Infrastructure in the Linux Kernel 概述 The Input-Output Memory Management Unit (IOMMU) 是内存控制器中的一个硬件组件,用于将设备虚拟地址(也可以称为I/O地址或设备地址)转换为物理地址。 这种硬件辅助的I/O地址转换显著提高了虚拟环境中的系...

riscv mmu 介绍

riscv mmu instroduction

MMU负责将虚拟地址转换为物理地址, 实现虚拟内存的管理。 在SUPERVISOR模式下,所有虚拟内存地址都经历单级地址转换过程,以将其转换为相应的物理地址; 当存在HYPERVISOR时,虚拟地址可以经历两级地址转换过程: 在第一阶段中,客户虚拟地址(GVA)被转换为客户物理地址(GPA), 在第二阶段中,GPA被转换为监管者物理地址。这两个阶段也被称为VS阶段和G阶段的转换。 五级...

riscv plic中断控制器

riscv plic

简介 PLIC(platform-level interrupt controller),平台级中断控制器。 PLIC将各种设备中断复用到Hart上下文的外部中断线上,具有硬件支持的中断优先级。 PLIC支持最多1023个中断(0号中断保留) 和15872个上下文,但实际中断和上下文的数量取决于PLIC的实现。 PLIC规范中声称支持15872个上下文,这个数字是基于对多个中断目标和...

riscv原子指令

riscv atomic instructions

简介 原子操作需要处理器提供硬件支持,不同的处理器体系结构在原子操作上会有不同的实现。 对riscv架构来说,就是A扩展,也被称为原子指令集扩展。 包含了一些指令,可以原子地读取、修改和写入内存,主要是为了在同一内存空间中的多个RISC-V处理器之间提供同步。 A扩展提供了两种类型的原子指令,分别是原子fetch-and-op内存(AMO)指令和load-reserved/store-c...