我正在阅读Lpc2148手册,在静态Ram部分,我偶然发现
回写缓冲区
SRAM控制器结合了一个写回缓冲区,以防止在背对背写操作期间CPU中断。写回缓冲区总是保存软件发送到SRAM的最后数据.此数据仅在软件请求另一次写入时才写入SRAM。(仅当软件进行另一次写入时才将数据写入SRAM )。如果发生芯片复位,实际的SRAM内容将不会反映最近的写入请求(即,在“温暖”芯片复位之后,SRAM不反映最后的写入操作)。任何在重置后检查SRAM内容的软件都必须考虑到这一点。两个相同的写入到一个位置,保证数据将在重置后出现。
这是什么意思。他所说的CPU停止和背靠背写到是什么意思?
发布于 2012-03-14 04:22:53
我不是个EE,所以这是外行的比喻。你是超市里唯一的购物者。因为生意很慢,只有一个出纳员在这班工作。这里没有结账柜台,只有收银台和条形码扫描仪。你把一件一件的东西交给收银员。当收银员拿着一件物品时,他们不能拿另一件东西。只有当收银员完成扫描一个项目,他们才能接受另一个项目。如果你没有一个袋子或手推车,你把单独的物品从货架到收银台,没有问题。但是,如果你给出纳员带来了不止一件商品,并试图同时(背靠背)把它们全部交给收银员,你就不能一个一个地把它们递给收银员,然后等待每件物品都被处理。这叫摊子。
突然,带传送带的收银台发明了。现在你把你的购物放在柜台上,可以自由地去买更多的东西。收银员以自己(慢)的速度扫描物品,因为有一个地方可以放置它们,也可以让收银员找到它们。你可以放在柜台上的物品的数量是有限的,但它确实允许你放下一些东西,继续购物,使你的购物更有效率。
有一个小问题:在结账柜台发明之前,当你想知道购物狂潮要花多少钱时,你可以看看收银机显示的总金额。但现在,你需要看看收银机和柜台上尚未处理的物品。
这就是为什么读取SRAM指令首先暗中检查您正在读取的地址是否是写入队列/缓冲区中要写入的地址之一。如果是这样的话,它从具有相同地址的最新写队列条目中获取值,而不是实际从SRAM读取。从写入队列中的地址读取的速度可能比从SRAM中读取的快,但是从当前不在写入队列中的地址读取的开销会稍微慢一些(或者,如果SRAM读取和缓存搜索并行进行,则至少会降低能量效率)。总的来说,这会使阅读变得更糟,但是没有等待写的好处是值得的。
他们告诉你的是,他们的收银员有一个错误:它耗尽写队列不是直到它是空的,而是直到只剩下一个项目在柜台上。一家小酒吧。然后,收银员会永远盯着那家小酒吧,而不让它结账。如果你需要购买蛇条,你需要把另一个东西放在柜台上。然后,收银员会很高兴地移动传送带,并拿起蛇条。这篇文章建议你使用另一个窃笑条,但你不必这么做。一般来说,你放在柜台上的最后一件东西永远不会被收银员处理。
https://stackoverflow.com/questions/8970613
复制相似问题