2012-10-28 31 views
1

我正在研究嵌入式系统中的存储器层次结构的主题。在一些嵌入式SOC器件上,专门的SRAM被提供在芯片上。我的问题是:SOC嵌入式SRAM缓存一致性

为什么SOC嵌入式SRAM通常不缓存相干与主存储系统?

因此,通常将SRAM映射到非高速缓存的地址空间。

我知道,SRAM的内容依赖于应用程序,通常特异性接头部分映射特定的数据结构,以减少访问时间,这些数据到SRAM。例如,可以将中断向量表放入SRAM中,减少访问时间并强制确定性中断处理。高速缓存SRAM会使SRAM访问不确定,因为可能发生高速缓存未命中。

无论如何,如果这是关系到SRAM为什么不连贯缓冲的原因,我不明白。

谢谢。

回答

4

在死记忆我们通常非常快。取决于你询问缓存的大小和芯片内存的速度是相同的,所以通过增加额外的周期和通过将sram放在它前面来扩大访问速度来减慢在线SRAM是很愚蠢的。这些系统通常也有片上闪存,并且需要缓存或某种缓存来加速执行,在这种情况下,您会在闪存前看到缓存。要使用sram前面的缓存进行数据访问,您需要某种类型的内存管理,更多的东西来减少死亡空间以及更多东西来减慢速度。一个简单的解决方案是,例如在芯片设计中声明所有的地址集都是未缓存的,并将外设放在那里,如果启用了缓存,并且将你的内存和闪存放在那里,那么所有的内容都是msbit未设置为可缓存的。

如果芯片和片外存储器的片外存储器空间可能需要缓存,并且可能像高位地址位或位解决方案只有片外存储器被缓存(因为它可能较慢)。

为了启动向量表,需要一直处于闪存状态。有些系统在启动后让你切换内存对地址空间的响应,分支到闪存的另一个地址空间,翻转一个控制位,现在在内存中有内存,然后你在内存中复制或创建新的向量表。在启动时保持ivt的闪存不一定是非确定性的,我会倾向于它是非常确定的,就像片上RAM一样确定性的。也许每个访问速度慢几个钟。您的中断和任何其他执行性能通常更多地取决于您的语言和编译器而不是系统。

也许你应该指定你困惑的确切系统或系统。

+0

所以原因是SRAM和缓存的性能非常相似,因为它们都是采用相同的内存技术。这就是为什么不需要CPU和SRAM之间的缓存。关于矢量表,我同意你的看法。 – salvo

+0

他们将可能碰巧是相同的技术,因为它是相同的芯片,代工厂和单元库。主要原因在于它们是本地存储器,根据成本等因素,每次传输可能需要一个或几个时钟。没有具体细节,但我们只能谈论可能会有所不同的一般性问题。 –