walker2048 发表于 2024-7-15 18:17

全能小网关|CH32V208--2. 关于 ch32的零等待区的一些理解

### 前言
CH32V208评估板是wch出品的一款搭载了CH32V208WBU6处理器的评估开发板。
CH32V208 搭载 V4C 内核,增加内存保护功能,减少硬件除法周期。在产品功能上支持 144MHz 主频零等待运行,该系列产品集成 2Mbps 低功耗蓝牙BLE 通讯模块、10M 以太网 MAC+PHY 模块、USB2.0 全速设备+主机/设备接口、CAN 控制器等。前言
CH32V208评估板是wch出品的一款搭载了CH32V208WBU6处理器的评估开发板。
CH32V208 搭载 V4C 内核,增加内存保护功能,减少硬件除法周期。在产品功能上支持 144MHz 主频零等待运行,该系列产品集成 2Mbps 低功耗蓝牙BLE 通讯模块、10M 以太网 MAC+PHY 模块、USB2.0 全速设备+主机/设备接口、CAN 控制器等。

#### 1、什么是零等待
想要理解零等待是什么,我们需要先了解什么是Flash等待周期。Flash 等待周期(Flash Wait State)是指在处理器访问 Flash 存储器时,由于 Flash 存储器的访问速度较慢,处理器需要等待的时钟周期数。等待周期的存在是为了确保处理器能够正确读取或写入 Flash 存储器中的数据。

为什么需要等待周期
1. 速度差异:
处理器的时钟频率通常比 Flash 存储器的访问速度快得多。为了协调两者之间的速度差异,需要引入等待周期。
2. 数据稳定性:
Flash 存储器在读取或写入数据时需要一定的时间来确保数据稳定。等待周期提供了足够的时间来完成这些操作。

#### 2、等待周期的影响
等待周期的数量直接影响系统的性能。更多的等待周期意味着处理器在访问 Flash 存储器时需要更多的时间,从而降低了整体系统的性能。因此,减少等待周期是提高系统性能的一个重要方面。

在一些MCU的架构里,存在ICache,也就是指令缓存这个独立的设备,这个设备就是为了加速取指,使用一定的缓存策略提前加载Flash里的内容。
单片机缓存的工作原理类似于计算机中的缓存系统:当处理器需要访问数据或指令时,它首先检查缓存中是否存在所需的数据。如果数据已经存在于缓存中(命中),处理器将直接从缓存中获取数据,从而避免了对慢速外部存储器的访问。如果数据不在缓存中(未命中),处理器将从外部存储器中加载数据,并将其存储在缓存中以供后续访问使用。

像stm32f103这个非常常见的芯片,就没有cache,所以它是可以根据运行频率来指定flash等待周期的。

#### 3、WCH的零等待区
其实WCH芯片的零等待区,就是厂商将一部分的SRAM划分为零等待区,然后硬件在上电时自动将 Flash里最前面的部分搬运到零等待区里,只要程序没有超过零等待区的大小,那就不需要去Flash里取数据和指令。
在规格书里,我们也可以看到,零等待区可以有几种配置,如下图


可以看出零等待区和可用的SRAM总和大小是始终不变的,也就是128 + 64 其实就是芯片的SRAM大小,只是有一部分被硬件征用作为缓冲区来使用。这个过程是用户不可干预的,我们只能按照硬件规定的几种配置里选择一种,可用SRAM最大只是64K,这个时候零等待区就是128K。

#### 总结
这种硬件自带的零等待区实现方式,比用户自行搬运程序到RAM里运行的零等待实现方式,相对来说更简单一些,整个程序都是零等待的(只要低于零等待区大小)。灵活性方面,就没有用户自己控制RAM内容方便了。
页: [1]
查看完整版本: 全能小网关|CH32V208--2. 关于 ch32的零等待区的一些理解