神农鼎 发表于 2025-10-17 10:30:58

指令在 i-Cache 里面运行, STC32G144K246, 64MHz / 72M / 90M / 100M / 120M

STC32G144K246 的内部 Flash的速度是 33MHz ~ 40MHz:
1,用高速的 i-Cache 运行程序;
2,用 WTST 寄存器设置 取程序的等待时间
      64MHz,   等1,FLASH/32MHz;
      90MHz,   等2,Flash/30MHz;
      100MHz, 等2,Flash/33MHz;
      120MHz, 等3,Flash/30MHz;
如有异常现象,多增加一个时钟等待

指令在 i-Cache 里面运行时,
按每条指令的实际执行时钟数=指令时钟数运行,
时钟频率越高,速度越快

https://www.stcaimcu.com/data/do ... t/STC32G144K246.pdf







国芯人工智能 发表于 2025-10-17 10:33:01

针对您关于 STC32G144K246 微控制器在高主频下运行程序时涉及 i-Cache 与 WTST 设置的说明,以下为专业角度的分析与建议。

一、i-Cache 的作用与运行机制

STC32G144K246 内部集成 指令缓存(i-Cache),其作用是缓存从 Flash 中读取的指令,以减少因 Flash 访问速度限制而引入的等待周期,从而提升 CPU 的指令执行效率。

在无 i-Cache 的情况下,CPU 每次取指都需要访问 Flash。由于 Flash 的访问速度受限(STC32G144K246 的 Flash 最高频率约为 33MHz ~ 40MHz),当主频超过 Flash 的访问能力时,必须插入等待周期(Wait States)以确保取指的稳定性。

而启用 i-Cache 后,指令首次从 Flash 读取后会被缓存到高速缓存中,后续执行相同指令时可以直接从 i-Cache 中读取,从而显著减少 Flash 访问次数,提高指令执行效率。

二、主频与 Flash 速度不匹配时的等待周期设置(WTST)

由于 Flash 的访问频率限制,当主频高于 Flash 的最大访问频率时,需要通过 WTST 寄存器 设置适当的取指等待周期,以保证程序运行的稳定性。

根据 STC32G144K246 的数据手册,建议设置如下:

| 主频(MHz) | WTST 设置 | 等效 Flash 访问频率(MHz) |
|-------------|-----------|-----------------------------|
| 64          | 1         | 32                        |
| 90          | 2         | 30                        |
| 100         | 2         | 33.3                        |
| 120         | 3         | 30                        |
注:Flash 的访问频率 = 主频 / (WTST + 1)

在设置 WTST 时,应确保 Flash 的访问频率不超过其最大支持频率(通常不超过 40MHz)。若发现系统运行不稳定或指令执行异常,建议适当增加等待周期(即 WTST 值)以提高稳定性。

三、i-Cache 运行模式下的指令执行效率

当程序运行在 i-Cache 模式 下时,CPU 执行指令的速度不再受限于 Flash 的访问速度,而是取决于 CPU 的主频与指令本身的执行周期数。

因此:
每条指令的实际执行时间 = 指令周期数 × 1 / 主频
主频越高,执行速度越快

但需注意:虽然 i-Cache 可以显著提升执行效率,但在以下场景中仍可能触发 Flash 访问:
首次执行某段指令
指令不在缓存中(Cache Miss)
缓存被清空或刷新(如跳转到未缓存区域)

此时仍需依赖 WTST 设置的等待周期,确保 Flash 访问的稳定性。

四、优化建议

1. 启用 i-Cache:建议在系统初始化阶段开启 i-Cache,以提升整体执行效率。
2. 合理配置 WTST:根据当前主频设置合适的等待周期,避免因 Flash 速度不足导致取指失败。
3. 测试与调试:在不同主频下运行系统,观察是否有异常(如死机、跑飞、指令执行错误等),如有异常可适当增加 WTST 值。
4. 优先使用高频稳定模式:若对性能要求极高,建议选择主频在 Flash 支持范围内的运行模式(如 100MHz 时 Flash 实际访问频率为 33.3MHz,接近其上限)。
5. 代码布局优化:将高频调用的函数或中断服务程序安排在 Flash 的连续地址空间,提高 i-Cache 命中率。

五、参考资料
STC32G144K246 数据手册
https://www.stcaimcu.com/data/download/Datasheet/STC32G144K246.pdf

六、结语

综上所述,在 STC32G144K246 上使用 i-Cache 并合理配置 WTST 寄存器,可以在保证系统稳定性的前提下,充分发挥 CPU 的性能潜力。建议用户在实际开发中根据具体应用场景进行优化与测试,以达到最佳的运行效果。

如需进一步技术支持或代码示例,欢迎继续交流。

[本文内容由国芯人工智能辅助生成,仅供参考]

神农鼎 发表于 2025-10-17 13:18:02










神农鼎 发表于 2025-10-17 13:23:12







深圳湾 发表于 2025-10-17 17:09:30

这个FLASH的速度还能提高吗

神农鼎 发表于 2025-10-17 17:10:32

提高 i-Cache,不需要提高 Flash 了

zxcv1973 发表于 2025-10-17 18:13:33

神农鼎 发表于 2025-10-17 17:10
提高 i-Cache,不需要提高 Flash 了

i-Cache的容量有多大,100MHz下2个等待时钟能不能在工业环境中长期稳定运行

神农鼎 发表于 2025-10-17 20:39:51



https://www.stcaimcu.com/data/download/Datasheet/STC32G144K246.pdf

esfzuxbr 发表于 2025-10-20 00:01:39

国芯人工智能 发表于 2025-10-17 10:33
针对您关于 STC32G144K246 微控制器在高主频下运行程序时涉及 i-Cache 与 WTST 设置的说明,以下为专业角度 ...

可以列举几种可行的代码布局优化方案吗,不太懂怎么安排在FLASH的连续地址空间

冬不拉 发表于 2025-10-22 00:05:55

学习学习
页: [1]
查看完整版本: 指令在 i-Cache 里面运行, STC32G144K246, 64MHz / 72M / 90M / 100M / 120M