显示操作-FMC/FSMC(3)
先说几个名词:
1、FMC:(Static Memory Controller)静态存储控制器
2、FSMC:(Flexible Static Memory Controller)灵活的静态存储控制器
3、FLASH:(fast large area scan hardware)快速大面积扫描硬件
4、SDRAM:(synchronous dynamic random-access memory)同步动态随机存取内存
5、DDR:全称是DDR SDRAM(Double Data Rate SDRAM),根据DDR2,DDR3,DDR4,速度倍数不同
先说下内存条吧。内存有几个重要的参数:
1、频率:计算机系统的时钟速度是以频率来衡量的。内存主频和CPU主频一样,习惯上被用来表示内存的速度, 它代表着该内存所能达到的最高工作频率。而内存本身并不具备晶体振荡器,因此内存工作时的时钟信 号是由主板芯片组的北桥或直接由主板的时钟发生器提供的,也就是说内存无法决定自身的工作频率, 其实际工作频率是由主板来决定的。但是最高工作频率,每种内存都是限定的。
有时,内存的频率还有超频或低频,这与CPU工作时可以超频或低频一样。
2、容量
3、延迟值:读取数据所延迟的时间,相关有
(1)系统时钟循环周期---他表示了SDRAM能运行的最大频率。
(2)存取时间---类似于EDO/FPM DRAM,他代表了读取数据所延迟的时间。
(3)CAS(纵向地址脉冲)反应时间---CAS的延迟时间。
以上5个名词,都是外部存储器,其性能比一般IO操作快,且运作时序不需要CPU、单片机进行具体操作。
一、FMC/FSMC
FSMC与FMC是总线接口,只要给定目的地址和数据,它运行相关逻辑。单片机通过操作对应的地址表,进行数据的读写。还可以根据不同外设要求,配置时序、协议、传输字节数。
控制LCD的方法有两种,一个是通过普通IO口,一个是通过外部存储控制。而IO控制时序控制麻烦,占用大量接口,传输速度慢。如果单片机内部存储空间不足,IO口控制的传输数据量又会受到限制。所以,常用的方式是使用外部存储控制。
二、为什么要用FMC/FSMC
根据电脑里,CPU与内存的关系。内存相当于缓存,毕竟CPU的运算速度和数据吞吐量有限,假设CPU每秒读写5000次,如果不用不用缓存,一旦每秒有超过500次请求数据运算,50次并发请求。那么CPU的负荷会非常大,即便CPU能支撑,也会造成服务不稳定和访问速度下降等问题。
缓存,就是将从CPU、数据库中获取的结果,暂时保存起来,在下次使用的时候,无需重新到CPU重新运算或数据库中获取,减少读写次数,从而降低CPU、数据库的压力。
使用缓存的好处:
(1)获取数据可直接从缓存获取,如果没有再到CPU、数据库中读写。这样减少对CPU、数据库的负载,减少读写次数,有利于释放运行资源
(2)对于不经常改变、活跃度不高的数据,由缓存暂存,下次读写直接从缓存中获取,无需经过CPU、数据库
(3)高性能。提高CPU、数据库性能,加快速率,减少耗时操作
(4)高并发。减少卡机、速度慢的可能性
三、注意事项
缓存与数据库双写不一致的情况。
一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去。
串行化可以保证一定不会出现不一致的情况,但是它也会导致系统的吞吐量大幅度降低,用比正常情况下多几倍的机器去支撑线上的一个请求。
最经典的就是缓存+数据库读写的模式(Cache Aside Pattern)。
- 读的时候,先读缓存,缓存没有的话,再读数据库,然后取出数据后放入缓存,同时返回响应。
- 更新的时候,先更新数据库,然后再删除缓存。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步