首页 > 编程知识 正文

在8051中,可使用的堆栈最大深度为,cpu二级缓存重要吗

时间:2023-05-06 13:12:41 阅读:116929 作者:1658

处理器实现原子操作的方法1 .总线锁2 .缓存锁3 .在任何情况下处理器都不使用缓存锁

随着多核时代的到来,并发操作已经成为一种普通现象,cpu处理器实现原子操作,需要(1)使用总线锁保证原子性。 )2)使用缓存锁保证原子性。

1 .总线锁

总线锁定是指锁定cpu和内存之间的通信,在锁定过程中其他cpu处理器无法操作其他内存中的数据,从而增加总线锁定的开销。

总线锁定的安装采用cpu提供的LOCK#信号,当一个cpu将该信号输出到总线时,其他cpu的请求被阻止,该cpu独占共享存储器。何为总线?

CPU总线是所有CPU连接到芯片组的主干道,负责CPU与所有外部部件(包括缓存、内存和北桥)的通信。 控制总线向每个部件发送控制信号,通过地址总线发送地址信号,指定要访问的部件,并通过数据总线双向传输。

2 .缓存锁定缓存锁定采用“缓存锁定”将原子操作放入cpu缓存中进行(L1、L2、L3缓存)。 “高速缓存锁定”是指在共享内存锁定时,处理器更改内存地址并通过高速缓存一致性机制保证原子性,而不是在总线上发出LOCK#信号。 http://www.Sina.com/http://www.Sina.com /

缓存一致性机制总体上是指一个CPU在处理缓存中的数据后,通知另一个CPU是销毁存储在它们内部的缓存,还是从主内存中重新读取。

因为缓存一致性机制会阻止同时修改由两个以上处理器缓存的内存区域数据,当其他处理器回写已被锁定的缓行的数据时,会使缓存行无效

缓存行(以缓存的基本数据单位,在Intel CPU中通常为64字节)的几个状态命名)的全名为Modified、Exclusive、Share or Invalid。 在此协议中,每个高速缓存行必须保持两个状态位,以便每个数据单位处于四种状态之一: m、e、s和I。 各状态的含义如下。 m :变更了。 处于这种状态的数据,只有本CPU有缓存数据,其他CPU没有。 另外,其状态已针对存储器内的值进行了修正,未更新到存储器中。

e :是独占的。 该状态的数据与本CPU有缓存且该数据未发生变更即存储器内一致。

s :我在分享。 此状态的数据被多个CPU缓存,并与内存匹配。

I :无效。 此CPU的缓存已经无效。

总结4种状态,可以分为2个垄断(m和e )共享) s和I )。

独占: m只有此cpu,缓存已修改,与内存不匹配; e只在这个cpu上。 缓存未更改,与内存匹配。

共享: s位于多cpu缓存中,并且该缓存未被修改为与内存匹配; I包含在多cpu缓存中,缓存更改与内存不匹配,缓存将被禁用。

处于m状态的缓存行必须始终接收尝试读取与该缓存行对应的主存储地址的所有操作。 如果收到,则必须在执行该操作之前将缓存行中的数据写回CPU。

状态为s的缓存行必须始终接收禁用缓存行或独占使用缓存行的请求,如果收到,则必须将缓存行的状态设置为I。

处于e状态的缓存行必须始终监听尝试读取与该缓存行相对应的主存储地址的其他操作,并且如果监听到,则必须将缓存行的状态设置为s。

如果CPU需要读取数据,并且该高速缓存线的状态为I,则必须从内存中读取数据,并将自己的状态设置为s。 如果不是I,则可以直接读取缓存的值,但在此之前,如果其他CPU也有该数据的缓存,并且状态为m,则必须将缓存更新到内存中,然后再读取。

如果CPU需要写入数据,则只能在缓存行为m或e时执行。 否则,必须发出特殊的RFO指令(Read Or Ownership,这是总线事务),以向其他CPU通知缓存无效) I )。 在这种情况下,性能开销相对较大。 写入完成后,将缓存状态更改为m。

3 .在所有情况下,处理器都不使用缓存锁缓存一致性机制?MESI协议?或如果正在操作的数据跨越多个缓存线(cache line ),处理器将调用总线锁定。第一种情况是:部分操作的数据不能被缓存在处理器内部。 对于英特尔486和奔腾处理器,即使已锁定

内存空间还在处理器的高速缓存线上调用总线锁定

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。