十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

[AutoSar]工程中的cpuload陷阱(二)

[AutoSar]工程中的cpuload陷阱(二) 目录关键词平台说明背景一、 存储类型1.1 RAM1.1.1 SRAM1.1.1.1特性和用途1.1.2 DRAM1.1.2.1特性和用途1.2 ROM1.2.1 PROM1.2.1.1特性和用途1.2.2 EPROM1.2.2.1 特性和用途1.2.3 EEPROM1.2.3.1特性和用途1.3 FLASH1.3.1 Nor Flash1.3.1.1特性和用途1.3.2 Nand Flash1.3.2.1特性和用途1.3.3 Nand Flash 和 Nor flash 区别1.4 cache1.4.1cache分类1.5 Scratchpad MemorySPM高速缓存器1.6 SPM 和cache 区别1.7 小结二、 存储结构的发展三、三种经典的单片机结构3.1 global RAM Local RAM3.2单核MCU3.3 多核MCU3.4 多核异构四、不同的mapping对性能的影响。4.1 背景4.2mapping到 global RAM4.3 mapping到local RAM4.4 mapping 到 local ram 带SPM4.5 硬件校验4.6小结关键词嵌入式、C语言、autosar平台说明项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言CC编译器HighTec (GCC)回到总目录背景在嵌入式系统中单片机的存储器分为不同的层次包括速度更快但容量较小的寄存器、速度适中但容量适中的内部RAMRandom Access Memory和较慢但容量较大的外部存储器如Flash存储器和特殊类型的高速缓存 Scratchpad memory。Scratchpad memory 与传统的缓存比如 L1、L2、L3 缓存有所不同因为它不受处理器硬件的自动管理。程序员需要显式地将数据存储在 Scratchpad memory 中以确保更精准的内存访问和更高的性能。这些不同的存储器对CPU负载CPU Load有着不同的影响。另外不同的芯片硬件设计和存储分布也决定了不同的memory mapping 对性能的影响。一、 存储类型1.1 RAM1.1.1 SRAM在单片机Microcontroller中SRAMStatic Random-Access Memory静态随机存取存储器是一种用于存储数据的类型。与动态随机存取存储器DRAM不同SRAM 不需要定期刷新操作因此速度更快但相对来说也更昂贵且占用更多的空间。1.1.1.1特性和用途1.静态性质 SRAM 是一种静态存储器这意味着它的数据保持在存储器中只要供电保持而不需要像动态存储器那样进行周期性的刷新。t2.快速访问 SRAM 提供快速的读写访问时间这使得它在需要快速存取的应用中很有用例如在嵌入式系统和单片机中。3.相对较小的密度 相较于动态存储器SRAM 的存储密度较小这意味着每个存储单元需要更多的晶体管占用更多的芯片空间1.1.2 DRAM在单片机中DRAMDynamic Random-Access Memory动态随机存取存储器通常不是首选的内存类型但是价格便宜。1.1.2.1特性和用途1.动态性 DRAM 存储器单元需要定期刷新以保持存储的信息。这与静态内存如 SRAM不同后者不需要刷新。2.随机访问 与顺序访问存储器例如磁带不同DRAM 允许在存储器中直接访问任意位置的数据。1.2 ROM1.2.1 PROM“PROM” 通常指的是可编程只读存储器Programmable Read-Only Memory。PROM 是一种存储数据的芯片它的特点是在生产后可以被编程一次而之后的内容不能再次被更改。与普通的只读存储器ROM不同PROM 具有可编程的特性允许用户将特定的数据或程序写入其中。1.2.1.1特性和用途1.可编程性 PROM 具有可编程的特性意味着在制造之后用户可以将数据或程序写入这种存储器。一旦编程完成其内容将保持不变。2.只读性 尽管 PROM 具有可编程的能力但它的基本特性是只读存储器用户不能在正常操作中随意修改其中的内容。它被设计成在编程后仅允许读取操作。3.一次编程 与一些可擦除可编程只读存储器EEPROM 或 Flash不同PROM 通常是一次性的一旦编程完成就不能再次擦除或修改。广泛用途 PROM 在嵌入式系统和单片机中用于存储固件、程序或配置数据。它通常用于存储在制造过程中就能确定的静态数据而不是需要在运行时动态修改的数据。随着技术的发展许多新型存储器技术已经出现如EEPROM、Flash等它们提供了更多的灵活性和可擦写性。然而PROM 仍然在某些应用中有其用途特别是在一次性编程的场景中。1.2.2 EPROMEPROM 是可擦除可编程只读存储器Erasable Programmable Read-Only Memory的缩写。它是一种用于存储固定数据的存储器类型其中的数据在生产后是只读的但是可以通过特殊的操作进行擦除和重新编程。1.2.2.1 特性和用途1.只读存储器ROM的一种 EPROM 是只读存储器的一种因为其中的数据通常在制造时被设定并且通常不允许在运行时进行修改。不同于一些其他只读存储器EPROM 允许进行擦除和重新编程从而可以多次使用。2.擦除和编程操作 EPROM 的特殊之处在于它允许通过使用紫外线激光或特殊设备进行擦除。在擦除之后可以使用专门的编程设备将新的数据编程到芯片中。这使得 EPROM 具有可重新编程的能力尽管擦除和编程操作通常需要一些专业设备。3.应用 EPROM 在历史上用于存储程序代码、固定的配置信息等。然而由于其擦除和编程过程相对较为复杂现代的存储器技术更常用于嵌入式系统和单片机中。4.被替代的存储器类型 随着技术的发展EPROM 逐渐被更先进、更方便的可擦除存储器类型取代如 EEPROMElectrically Erasable Programmable Read-Only Memory和 Flash 存储器。这些存储器类型具有更快的擦除和编程速度而且不需要紫外线激光。在单片机和嵌入式系统中通常使用 Flash 存储器而不是 EPROM因为 Flash 存储器更容易擦除和编程同时还提供了更高的性能。1.2.3 EEPROMEEPROM 是一种可擦写可编程只读存储器Electrically Erasable Programmable Read-Only Memory的缩写。在单片机和嵌入式系统中EEPROM 通常被用来存储需要在断电后保持的数据例如配置设置、校准值、计数器状态等。EEPROM 和传统的 ROM只读存储器不同之处在于它允许在需要时通过电子方式进行擦除和编程而不需要将芯片从系统中移除。这使得在运行时更新存储在 EEPROM 中的数据成为可能而不会影响其他部分的程序或数据。可以被按字节读写1.2.3.1特性和用途1.配置存储 存储系统配置和参数例如通信设置、显示选项等。2.校准数据 存储传感器校准值、系统参数等以确保系统在各种条件下的准确性。3.计数器和计时器状态 保存计数器和计时器的当前状态以便在断电后恢复。4.唯一设备标识 为设备分配唯一标识符以便在生产和使用过程中进行跟踪。5.防止数据丢失 保存临时数据以防止系统断电时丢失重要信息。1.3 FLASHFlash Memory闪存结合了ROM和RAM的长处广义上也可以说是ROM是可擦除可编程的存储器因为flash简化了电路数据密度更高成本更低不同与EEPROM是不能以字节为最小单位擦除。只能把1写为0不能把0写为1操作flash的时候都是先要擦除才能写不然数据会错乱。1.3.1 Nor Flash或称为 NOR Flash 存储器是一种非易失性存储器Non-Volatile MemoryNVM技术常用于单片机和嵌入式系统中。与 NAND Flash 不同Nor Flash 和 NAND Flash 是两种不同的闪存存储技术它们在内部结构和应用场景上有一些差异。1.3.1.1特性和用途1.结构 Nor Flash 存储器的内部结构相对简单数据存储和读取速度较快。它通常采用并行存储的方式这意味着每个存储单元都有独立的访问通道可直接寻址。2.读取速度 Nor Flash 具有较快的随机读取速度因为它可以直接通过地址线寻址任何存储位置适用于需要快速随机访问的应用。3.用途 Nor Flash 通常用于嵌入式系统的代码存储例如单片机中的程序存储器。由于其较快的读取速度它适用于需要执行代码的应用场景。4.读取方式 Nor Flash 支持随机访问这意味着可以按地址直接读取存储器中的数据。这使得 Nor Flash 在执行代码时表现优越因为程序代码通常需要在随机位置执行。5.擦写方式按字节擦除Nor Flash 的擦写速度相对较慢擦写单元的大小通常比 NAND Flash 大。这使得 Nor Flash 不如 NAND Flash 适合大容量数据的快速写入。1.3.2 Nand FlashNAND Flash 是一种非易失性存储器技术常用于嵌入式系统和单片机中。它是一种基于 NAND 门的闪存技术用于存储数据并且相对于 NOR Flash 具有较高的存储密度和较低的成本。1.3.2.1特性和用途1.存储原理 NAND Flash 存储信息的方式类似于传统的 NAND 门的工作原理。它由一系列的存储单元组成每个单元可以存储一个或多个位的信息。这些单元通过在浮栅中存储电荷来表示数据的状态。2.结构 NAND Flash 存储器被组织成块Block、页Page和字节Byte。一般而言一个块包含多个页而一个页包含多个字节。数据的写入和擦除通常是以块为单位进行的。3.快速读取和写入 NAND Flash 具有相对较快的读取和写入速度这使得它在需要快速访问大量数据的应用中非常有用。4.高密度和低成本 NAND Flash 的结构允许在芯片上实现高存储密度从而提供相对较大的存储容量。此外由于 NAND Flash 的制造成本相对较低因此它是一种成本效益高的存储解决方案。1.3.3 Nand Flash 和 Nor flash 区别NAND Flash和NOR Flash都是常见的非易失性存储器Flash Memory类型它们在单片机应用中都有自己的特点和用途。以下是它们之间的一些主要区别1.结构和内部组织NAND Flash NAND Flash 使用 NAND 门结构其中存储单元被组织成页面和块。它通常以块Block为单位进行擦除而读和写是以页面Page为单位进行的。NOR Flash NOR Flash 使用 NOR 门结构其中存储单元以字节为单位组织。 NOR Flash 通常允许随机访问存储单元这意味着可以直接读取和写入任意地址的数据。读取速度2.读取速度NAND Flash NAND Flash 通常具有更高的读取速度特别是在顺序读取方面。NOR Flash NOR Flash 通常具有较慢的读取速度特别是对于大容量存储器。写入速度和擦除3.写入速度NAND Flash NAND Flash 的写入速度相对较快但擦除速度相对较慢。擦除通常以块为单位进行。NOR Flash NOR Flash 具有相对较慢的写入速度但擦除速度较快。 NOR Flash 的擦除是以扇区为单位进行的。寿命和耐用性4.存储密度NAND Flash NAND Flash 通常具有较高的存储密度但相对较低的寿命。它适用于大容量存储如固态硬盘SSD。NOR Flash NOR Flash 具有较高的寿命和较好的耐用性适用于需要频繁读取和较低存储密度的应用如嵌入式系统的代码存储。适用场景5.存储容量NAND Flash 适用于大容量、顺序读取较多的应用如数据存储。NOR Flash 适用于小容量、需要频繁读取的应用如嵌入式系统的代码存储。在选择 Flash 存储器时开发者需要考虑应用的特定需求包括读取和写入的频率、存储密度、寿命要求等。因此NAND Flash和NOR Flash在单片机中的选择取决于具体的应用场景。1.4 cache缓存Cache通常不是一种存储类型而是一种高速缓存存储器用于临时存储处理器频繁访问的数据和指令以提高程序性能。缓存是一种在处理器和主存之间的高速存储器存储了最近被处理器访问的数据和指令。1.4.1cache分类1.指令缓存Instruction Cache 存储处理器执行的程序的指令。当处理器需要执行指令时它首先检查指令缓存如果命中缓存中已经有该指令就可以快速执行否则需要从主存中加载指令。2.数据缓存Data Cache 存储处理器读取和写入的数据。类似于指令缓存当处理器需要访问数据时它首先检查数据缓存如果命中就可以快速读取或写入数据否则需要从主存中加载或写回数据。3.联合缓存Unified Cache 有些系统使用统一的缓存来存储指令和数据。在这种情况下缓存中的存储单元可以被用作指令或数据具体取决于处理器的需要。缓存的作用是通过提供快速访问最常用的数据和指令来减少对主存的访问次数从而提高程序的性能。缓存的大小和组织方式可以因处理器架构而异一些高性能的单片机可能具有更大、更高级的缓存系统而一些资源受限的系统可能没有缓存或只有很小的缓存。在嵌入式系统中设计者需要根据应用的需求权衡资源利用和性能。1.5 Scratchpad MemorySPM高速缓存器在一些嵌入式系统或特定的硬件架构中程序员可以使用spm内存来暂存一些计算中间结果或需要快速访问的数据。这种内存通常相对较小但由于程序员对其直接控制可以更灵活地使用。1.6 SPM 和cache 区别在单片机中Cache 和 Scratchpad Memory高速暂存存储器是两个不同的概念它们分别用于不同的目的。Cache:作用 Cache 是一种高速缓存用于存储最常用的数据和指令以提高对内存的访问速度。它通常用于缓存主存RAM中的数据以减少处理器访问内存的时间。管理 Cache 通常由硬件自动管理不需要程序员干预。数据在被访问时如果在 Cache 中找到就是缓存命中cache hit否则需要从主存中加载数据这称为缓存未命中cache miss。层次 大多数现代单片机和处理器具有多级缓存如 L1 Cache、L2 Cache 等层次结构的目的是更好地匹配不同的性能需求。Scratchpad Memory:作用 Scratchpad Memory 是一块被程序员直接管理的内存用于存储程序执行过程中的临时数据。程序员可以显式地将数据存储在 Scratchpad Memory 中以提高对这些数据的访问速度。管理 与 Cache 不同Scratchpad Memory 由程序员负责管理需要手动分配和释放。程序员可以通过直接访问内存地址来读写 Scratchpad Memory 中的数据。用途 Scratchpad Memory 常用于一些对性能要求较高的嵌入式系统例如在嵌入式控制器中用于存储计算中的中间结果、临时变量等。在总体上Cache 和 Scratchpad Memory 都是用于提高内存访问效率的技术但它们的管理方式、作用和使用场景存在很大的不同。Cache 由硬件管理自动缓存常用数据而 Scratchpad Memory 由程序员手动管理用于存储程序中特定的临时数据。1.7 小结目前使用的在单片机上大部分用的是Nor Flash和SRAMcacheSPM有些也带有EEPROM但一般都比较小。![在这里插入图片描述](https://img-blog.csdnimg.cn/7a3c889fe14a40c5ad466f7fff9a19a5.png二、 存储结构的发展在现代嵌入式单片机中存储结构经历了显著的演进从最初的原始ROM和RAM组成逐渐发展为更为先进和灵活的ROM、RAM、Cache以及Scratchpad MemorySPM的复合结构。原始的ROM仅用于存储固定的程序代码而现代单片机的ROM已经演变为Flash存储器支持可擦写、可编程的特性使得固件更新更为便捷。RAM仍然用于存储变量和程序运行时的临时数据。与此同时引入了Cache机制用于高效地缓存频繁访问的数据和指令以提升存储器访问速度。Cache在现代单片机中扮演着关键的角色通过在处理器和主存之间建立快速的数据缓存有效地降低了存储访问延迟提高了系统性能。此外Scratchpad MemorySPM的引入为程序员提供了更直接的内存控制权用于存储临时数据和中间计算结果从而优化了特定应用的性能。SPM的手动管理允许程序员更灵活地定制内存使用方式适应不同的嵌入式系统需求。综合而言现代嵌入式单片机的存储结构已经从简单的ROM和RAM进化为更为复杂和多样化的组合涵盖了Flash存储器、Cache、以及Scratchpad Memory等元素以满足不断增长的计算需求和性能要求三、三种经典的单片机结构3.1 global RAM Local RAM*Global RAM全局RAM*定义 Global RAM 通常指的是在整个程序执行期间都可以访问的内存区域。这是在程序的全局范围内定义的变量可以在程序的任何地方使用。作用 全局RAM中的变量在程序的所有函数和模块中都是可见的。这使得这些变量成为共享数据可以在整个程序中使用。通常全局RAM用于存储全局状态、配置参数、以及在不同部分之间共享的数据。Local RAM局部RAM定义 Local RAM 则是在特定函数或代码块中定义的局部变量的内存区域。这些变量只在其被定义的函数或代码块的执行期间存在离开该函数或代码块后这些变量的内存可能会被释放。作用 局部RAM用于存储临时变量、函数参数以及其他仅在函数执行期间需要的数据。局部变量的作用域仅限于定义它们的函数这有助于隔离不同部分的数据提高代码的可维护性和安全性。在典型的嵌入式系统和单片机中由于资源有限全局RAM和局部RAM的合理使用对于优化内存和提高系统性能都非常重要。程序员需要根据程序的需求和设计目标合理地管理全局和局部变量的内存使用。3.2单核MCU特性不带cache和SPM主频一般不高于400MHZ3.3 多核MCU特性带cache和SPM主频一般300 - 800 MZH3.4 多核异构特性带有cache 和SPM 主频一般大于800Mhz有外接 flash和DRAM通过memory 控制器映射可以访问。进程内有L缓存进程间有L2缓存核间有L3缓存。四、不同的mapping对性能的影响。4.1 背景在汽车软件开发中通常会用到ETH或者CAN这中大数据的频繁更新会消耗大量的cpu资源。如果我们利用上述的特性会大大提高cpu的利用率提高性能。例如把ETHbuffer或者canbuffer mapping到不同的内存中。4.2mapping到 global RAM4.3 mapping到local RAM4.4 mapping 到 local ram 带SPM4.5 硬件校验如果硬件带校验功能可以把一些必要的计算交给硬件处理会大幅度提高性能4.6小结要实现代码的高性能运行要注意以下几点1.高频率访问的代码尽量放到SPM。2.通讯总线会占用极高的内存资源要把共享代码放到cache中。3.尽量开启cache如果涉及到多核数据交互和数据一致性请仔细甄别。4.检查第三方包中的缓存配置。5.评估工程中的数据哪些该放到什么类型的内存中通用规则离cpu越近的内存速度越快。6.通常情况下mcu的主频不会决定性能瓶颈内存才会决定。回到总目录
返回列表