首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么静态随机存取存储器(SRAM)不需要内存控制器?

为什么静态随机存取存储器(SRAM)不需要内存控制器?
EN

Stack Overflow用户
提问于 2021-12-10 07:19:50
回答 3查看 380关注 0票数 1

我一直在研究引导加载器,并且对大部分的源代码都有一个解释,ROM代码在大多数芯片上,它们告诉芯片在启动后该去哪里,然后ROM代码将一小块代码加载到SRAM中。

我的问题是DRAM需要一个控制器才能运行,但为什么SRAM不需要呢?谁控制SRAM?或者它是如何被控制的?另外,在系统对SRAM进行处理并且DRAM耗尽之后,会发生什么情况?

我还不知道这是否有意义,但最好能从u和Linux的角度来回答。

EN

回答 3

Stack Overflow用户

发布于 2021-12-10 07:43:37

两者都需要控制器,但DRAM需要定期刷新以保持其状态(在凝汽器中),而与通过锁存电路存储其状态的SRAM不同。

这意味着,如果要在重置后(例如从Linux或U)保留内存的内容,则必须在重置步骤期间将DRAM控制器配置为“自动刷新”内存。SRAM没有这样的需求。

票数 1
EN

Stack Overflow用户

发布于 2021-12-10 10:39:54

通常,当您从引导加载器的角度引用SRAM时,控制器可以访问的是内部RAM。控制器使用AHB/AXI总线(用于基于ARM的设备)访问此RAM。可能有一个存储器桥将从AHB/AXI总线的信号转换为存储器总线。因此,从软件的角度来说,它是透明的,不需要特定的软件配置来访问这个RAM。

票数 1
EN

Stack Overflow用户

发布于 2021-12-10 23:36:19

..。然后ROM代码将一小块代码加载到SRAM中。

对于某些SoC来说,这是一个常见的过程,但这不是必需的。有替代的引导方案。

使用CRIS处理器的Etrax SoC(现在已停产)要求将DRAM参数存储在非易失性存储器(NVM)中。嵌入式ROM引导代码访问此NVM,并初始化DRAM控制器。因此,ROM引导代码能够直接引导Linux内核。

一些ARM SoC具有引导存储器选择器(BMS)引脚(例如Atmel AT91SAM9xxx和微芯片SAMA5Dx),可以禁用内部ROM代码,并且处理器在从具有就地执行(XIP)功能的外部NVM (例如NVM或闪存)重置后执行代码。这种引导方案可以定制为初始化外部DRAM,然后加载U甚至Linux内核。

我的问题是DRAM需要一个控制器才能运行,但为什么SRAM不需要呢?谁控制SRAM?或者它是如何被控制的?

DRAM需要一个控制器,因为这种类型的内存技术需要定期刷新。在可以访问DRAM之前,需要以编程方式初始化DRAM控制器。加载到SRAM中的引导代码的一个功能是执行DRAM控制器的初始化。

相比之下,SRAM接口要简单得多。通常没有"SRAM控制器“。SRAM接口的控制逻辑通常达到要求“控制器”的复杂程度。例如,我使用了一个SBC,它的Z80微处理器直接连接到SRAM (HM6264)和EPROM (MBM2764)内存IC,再加上一些地址解码逻辑。

现代SoC上的"SRAM控制器“主要是外部SRAM与内部系统总线的缓冲接口。SoC的内部内存不需要任何软件初始化,并且可以在重置后立即访问。

另外,在系统对SRAM进行处理并且DRAM耗尽之后,会发生什么情况?

通常,当内部SRAM不作为Linux内核管理的内存的一部分时,它就会被闲置。我不知道这是否是由于任何技术原因,例如虚拟内存或缓存问题,或者疏忽,还是对同构内存的简单性的渴望。

对于一些so来说,内部SRAM的数量是如此之少(例如Atmel AT91SAM926x中的8KB),因此在内核中使用它的努力可以被认为是一个糟糕的成本效益权衡。

请参阅有关Atmel/微芯片SAMA5D3x上SRAM的核补丁的讨论。

设备驱动程序仍然可以使用内部SRAM作为其专用内存区域作为高速缓冲区。例如,有一个核补丁来使用SRAM来保存以太网传输数据包,以避免传输不足的错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70300977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档