RISC-V AIA学习1----介绍

PLIC(平台级中断控制器)

PLIC 是 Platform-Level Interrupt Controller 的缩写,PLIC 是计算机系统中管理硬件中断的 “总调度员”。不同的外设比如 GPIO、UART 等会产生中断,PLIC 负责管理这些中断,决定哪个中断先被处理。比如,当多个外设同时请求中断时,PLIC 会根据优先级排队,让 CPU 先处理最重要的那个。

  • 场景类比:
    想象一个公司有多个部门(外设),每个部门遇到问题时都要找老板(CPU)汇报。但老板一次只能处理一件事,PLIC 就像老板的秘书,负责:
    1. 接收所有部门的请求(中断信号);
    2. 按优先级排队(比如财务部的紧急程度比保洁部高);
    3. 通知老板处理当前优先级最高的请求。

特点:

  • 硬件中断:通过物理信号线(如 IRQ 线)传递请求。
  • 固定优先级:每个外设的优先级在硬件设计时确定,不够灵活。
  • 适用场景:传统嵌入式系统或单核处理器。

MSI(消息信号中断)

MSI 是一种用 “软件消息” 替代硬件信号线的中断触发方式。

  • 场景类比:
    部门不再通过秘书(PLIC)传递请求,而是直接给老板发邮件(写特定内存地址)。邮件内容可以包含请求类型和优先级,老板收到邮件后自己处理。

特点:

  • 软件触发:通过写入特定内存地址触发中断,无需物理线路。
  • 动态优先级:中断的优先级和内容可通过软件灵活配置。
  • 扩展性强:适合多核处理器或虚拟化环境(如云服务器中的虚拟机动态分配中断)

AIA 规范为何引入 MSI?

  • 痛点:传统 PLIC 的硬件中断在复杂系统中扩展性差(比如需要大量物理线路)。
  • 优势:
    • 节省资源:无需为每个外设分配独立的中断线。
    • 灵活管理:中断的优先级、触发方式可动态调整。
    • 适应多核:多核 CPU 可通过 MSI 消息直接分配任务,减少竞争。

Hart的概念:

Hard thread硬件线程,在多核处理器中,每个核就是一个hart,每个hart可以同时处理不同任务

现在AIA规范增加了对MSI消息中断的支持,RISCV的两个标准中断控制器

  1. APLIC(在软件的配置下,将线中断转换成MSI中断,收集并处理MSI中断)
  2. IMSIC(任务是收集和处理中断,然后将这些中断以线连接或者MSI的方式传递给hart)

通常在较大的系统中,比如支持PCI设备的系统,每个hart都有IMSIC,从而完全支持MSI,可以用来控制external interrupt

一、 不带IMSIC的中断

当RSIC-V hart不带IMSIC时,外部中断通过独享的中断线传送到hart内。

在这种情况下,APLIC作为外部中断控制器,负责将所有外部中断路由至不同的hart中,并对不同的外部中断进行优先级排序。

APLIC会根据软件配置(即Delgate)将外部中断有选择性的传入到hart中的M态或者S态。

二、带IMSIC的外部中断

IMSIC用来接收MSI中断,因此,每个 IMSIC 在物理地址空间中被分配了一个或多个不同的地址,当对这些地址进行写入时,接收的 IMSIC 就表示该行为为 external interrupt。所有 IMSIC 在机器的实体地址空间中都有唯一的地址,所以每个 IMSIC 都可以接收 MSI。

MSI中断的实现方式

MSI中断通过向内存映射地址写数据的方式实现。MSI 只是一种对特定的内存写入,硬件接受该地址表示为 interrupt。

想象计算机的内存就像一个巨大的文件柜,里面有很多抽屉,每个抽屉都有一个特定的编号(地址)。MSI 中断就像是一种特殊的 “写文件” 操作。当我们需要给计算机传达一个中断信号时,不需要用复杂的硬件线路去专门传递,而是直接往文件柜的某个特定抽屉(内存映射地址)里放一份文件(写数据)一旦硬件发现这个特定抽屉里有新文件了,就知道这是一个中断信号(interrupt),需要停下来处理这个事情。

IMSIC接收MSI中断

IMSIC用来接收MSI中断。因此,每个 IMSIC 在物理地址空间中被分配了一个或多个不同的地址,当对这些地址进行写入时,接收的 IMSIC 就表示该行为为 external interrupt

IMSIC 就像是文件柜的管理员。每个管理员(IMSIC)都负责管理文件柜里的一个或几个特定抽屉(物理地址空间中的一个或多个不同地址)。当有人往这些管理员负责的抽屉里放文件(对特定地址进行写入操作)时,管理员就知道这是一个外部中断信号(external interrupt),然后会按照规定去处理这个中断。而且,每个管理员负责的抽屉编号都是独一无二的,这样就保证了每个 IMSIC 都能准确接收到属于自己的 MSI 中断,不会出现混乱。

③特权等级与中断控制

IMSIC 针对 machine level 和 supervisor level 有独立的地址,通过不同地址写入的权限,可以授予或拒绝每个级别发出 interrupt 信号的能力

  • 独立地址的作用:
    管理层(machine level)和员工层(supervisor level)的邮箱(地址)是分开的。
    • 权限控制:只有特定部门能往对应邮箱发邮件(写数据触发中断)。例如:
      • 管理层邮箱:允许发送高优先级中断(如系统故障)
      • 员工层邮箱:只能发送普通中断(如应用请求)
    • 避免干扰:不同部门的任务清单(interrupt file)独立,防止越权操作。

Interrupt File(中断文件)

面向特定特权等级下的hart的MSI中断会被记录在IMSIC的interrupt file中

每个 IMSIC 管理员有一个 “任务清单”(interrupt file),记录两类信息:

  • Pending 位(eip0-eip63):任务是否已提交(类似 “待办事项标记”)
  • Enable 位(eie0-eie63):是否允许接收该任务(类似 “任务开关”)

特点:

  • 每个任务清单支持最多 2047 个任务(编号 1-2047   64个寄存器*32个中断=2048),编号 0 固定禁用
  • 每个任务用 32 位寄存器管理(类似每行记录一个任务的详细信息)

⑤APLIC 的角色变化

  • 传统情况(无 IMSIC):
    APLIC 像 “传统邮局”,直接通过物理线路(wired interrupt)发送信件(中断)给 hart。
  • risc-v 系统中 hart有 IMSIC 时:
    APLIC 像 “智能邮局”,将传统信件(wired interrupt)转换成电子邮件(MSI),再通过 IMSIC 管理员的邮箱(内存地址)发送。
    • 软件配置:通过设置 APLIC 的寄存器,决定:
      • 中断发送给哪个 hart 的哪个特权等级对应的 IMSIC的interrupt file
      • 中断的优先级(类似邮件的紧急程度)

⑥虚拟化支持(Guest Interrupt File)

  • 类比:
    公司开设多个 “虚拟子公司”(虚拟机),每个子公司有自己的任务清单(guest interrupt file)。
  • 作用:
    • 虚拟机之间的中断相互隔离(类似子公司独立处理自己的任务)
    • 增强安全性:物理主机(hypervisor)通过控制 guest 文件,确保虚拟机无法越权访问真实硬件。

三、其它中断

本地中断(local interrupt),包含timer interruptsoft interrupt(IPI),它们是hart内部的中断,不会通过APLIC和IMSIC

四、在hart中的中断ID定义

RISC-V 特权架构为每个 hart 上的 interrupt cause 定义了不同的 ID number ,这是当 trap 发生时自动写入 mcause 或是 scause 的。

  • major identity:中断的 “部门编号”(如管理部、员工部)
    • S 级(员工层):部门编号 9
      (例如:普通应用程序触发的中断)
    • H 级(虚拟管理层):部门编号 10
      (例如:虚拟机监控程序处理的中断)
    • M 级(最高管理层):部门编号 11
      (例如:硬件故障等紧急中断)

                作用:快速区分中断的优先级和处理权限。

 

  • minor identity:中断的 “任务编号”(如 “网络请求”、“磁盘读写”)
    • 线中断(wired interrupt):由 APLIC(邮局)配置任务编号
      (例如:设置 “磁盘中断” 为任务 5)
    • MSI 中断:由设备(如显卡)直接指定任务编号
      (例如:显卡发送任务 10 表示 “画面渲染完成”)

                作用:在同一部门内区分具体任务类型。        

中断路由规则

1. 中断只能发给一个 hart

  • 类比:每个任务只能分配给一条生产线(hart)处理,不能同时发给多条。
  • 原因:
    • 简化硬件设计,避免多个 hart 同时响应导致冲突。
    • 软件可精确控制中断处理逻辑(例如:让特定 hart 处理网络中断)。

2. 如何选择目标 hart?

  • 软件配置:通过 APLIC(邮局)或设备寄存器设置中断的目标 hart。
    • 例如:将 “磁盘中断” 配置为只发给 hart 0 的 S 级部门。
  • 定时器中断:每个 hart 自己的闹钟,只能由自己处理。
    • 类比:每个生产线自己的闹钟,不会干扰其他生产线。

3. 多 hart 协作的限制

  • 无法广播:不能像广播通知一样同时发给所有 hart。
    • 替代方案:
      若需向多个 hart 发送中断(如处理器间中断 IPI),必须逐个发送。
      类比:通知多个同事需要单独发消息,不能群发。

中断的可见性

  • 本地中断:只能在发起的 hart 内部可见。
    (例如:某个 hart 的内部计算错误,其他 hart 不知道)
  • 虚拟中断:虚拟机内部的中断,物理主机不可见。
    (例如:虚拟机 A 的键盘中断,不会影响物理主机或虚拟机 B)
### 解决 PP-OCRv4 出现的错误 当遇到 `WARNING: The pretrained params backbone.blocks2.0.dw_conv.lab.scale not in model` 这样的警告时,这通常意味着预训练模型中的某些参数未能匹配到当前配置下的模型结构中[^2]。 对于此问题的一个有效解决方案是采用特定配置文件来适配预训练权重。具体操作方法如下: 通过指定配置文件 `ch_PP-OCRv4_det_student.yml` 并利用已有的最佳精度预训练模型 (`best_accuracy`) 来启动训练过程可以绕过上述不兼容的问题。执行命令如下所示: ```bash python3 tools/train.py -c configs/det/ch_PP-OCRv4/ch_PP-OCRv4_det_student.yml ``` 该方案不仅解决了参数缺失带来的警告,还能够继续基于高质量的预训练成果进行微调,从而提升最终检测效果。 关于蒸馏的概念,在机器学习领域内指的是将大型复杂网络(teacher 模型)的知识迁移到小型简单网络(student 模型)。这里 student 和 teacher 的关系是指两个不同规模或架构的神经网络之间的指导与被指导的关系;其中 teacher 已经经过充分训练并具有良好的性能,而 student 则试图模仿前者的行为模式以达到相似的效果但保持更高效的计算特性。 至于提到的 `Traceback` 错误信息部分,由于未提供具体的跟踪堆栈详情,难以给出针对性建议。不过一般而言,这报错往往涉及代码逻辑错误或是环境配置不当等问题。为了更好地帮助定位和解决问题,推荐记录完整的异常日志,并仔细检查最近修改过的代码片段以及确认依赖库版本的一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值