一般将数据会因为CPU的读写操作而改变数据内容的设为cache区。例如flash的读操作,如果是一段循环的程序,使用cache后这段程序可能都读入到cache中,CPU在取指时只需要读取内部SRAM,也就是cache中的内容,这样会大大加快程序执行的速度。当然flash并不总是作为cache区,就像whl223兄所说,在写flash时,如果不是写穿式的,flash的内容可能得不到即使的更新。
而一般数据会因为外接的因素改变的,就作为non-cache区,典型的例如串口、网口。如果采用cache,则发往这些设备的数据不能及时发出去,而读取设备时,也不能读到最新的接收数据了,所以一定要作为non-cache。
共享一些知识:
在CPU与主存之间增加了Cache之后,便存在数据在CPU和Cache及主存之间如何存取的问题。读写各有2种方式。
贯穿读出式(Look Through)
该方式将Cache隔在CPU与主存之间,CPU对主存的所有数据请求都首先送到Cache,由Cache自行在自身查找。如果命中,则切断CPU对主存的请求,并将数据送出;不命中,则将数据请求传给主存。
该方法的优点是降低了CPU对主存的请求次数,缺点是延迟了CPU对主存的访问时间。
旁路读出式(Look Aside)
在这种方式中,CPU发出数据请求时,并不是单通道地穿过Cache,而是向Cache和主存同时发出请求。由于Cache速度更快,如果命中,则Cache在将数据回送给CPU的同时,还来得及中断CPU对主存的请求;不命中,则Cache不做任何动作,由CPU直接访问主存。
它的优点是没有时间延迟,缺点是每次CPU对主存的访问都存在,这样,就占用了一部分总线时间。
写穿式(Write Through)
任一从CPU发出的写信号送到Cache的同时,也写入主存,以保证主存的数据能同步地更新。
它的优点是操作简单,但由于主存的慢速,降低了系统的写速度并占用了总线的时间。
回写式(Copy Back)
为了克服贯穿式中每次数据写入时都要访问主存,从而导致系统写速度降低并占用总线时间的弊病,尽量减少对主存的访问次数,又有了回写式。
它是这样工作的:数据一般只写到Cache,这样有可能出现Cache中的数据得到更新而主存中的数据不变(数据陈旧)的情况。但此时可在Cache 中设一标志地址及数据陈旧的信息,只有当Cache中的数据被再次更改时,才将原更新的数据写入主存相应的单元中,然后再接受再次更新的数据。这样保证了Cache和主存中的数据不致产生冲突。
----------------------------------------------------------------------------------
44B0处理器将寻址的空间分为cache区和非cache区,cache区就是读写都采用cache机制的区域,non-cache区则不采用。一般flash、sdram等存储器都作为cache区,I/O设备都作为non-cache区。
rNCACHBE0,rNCACHBE1是non-cache区的地址范围设定寄存器。
阅读(438) | 评论(0) | 转发(0) |