帮助设计的网站,电脑微信公众号登录入口,广告设计软件ai,深圳代理记账多少钱一月总线锁
总线锁就是使用处理器提供的一个 LOCK#xff03;信号#xff0c;当一个处理器在总线上输出此信号时#xff0c;其他处理器的请求将被阻塞住#xff0c;那么该处理器可以独占共享内存。 CPU和内存之间的通信被锁#xff01;#xff01; 如果多个 处 理器同 时对 …总线锁
总线锁就是使用处理器提供的一个 LOCK信号当一个处理器在总线上输出此信号时其他处理器的请求将被阻塞住那么该处理器可以独占共享内存。 CPU和内存之间的通信被锁 如果多个 处 理器同 时对 共享 变 量 进 行 读 改写操作那么共享变 量就会被多个 处 理器同 时进 行操作 这样读 改写操作就不是原子的操作完之后共享变 量的 值 会和期望的不一致。 举 个栗子如果 i 1 我 们进 行两次 i 操作 期望的 结 果是 3 但是有可能 结 果是 2。 原因可能是多个处理器同时从各自的缓存中读取变量 i分别进行加1操作然后分别写入系统内存中。 那么想要保证读改写共享变量的操作是原子的就必须保证CPU1读改写共享变量的时候CPU2不能操作缓存了该共享变量内存地址的缓存。这时就可以使用总线锁解决问题。 缓存锁
缓存锁指内存区域如果被缓存在处理器的缓存行中并且在Lock操作期间被锁定那么当它执行锁操作回写到内存时处理器不在总线上声言LOCK信号而是修改内部的内存地址并允许它的缓存一致性机制来保证操作的原子性因为缓存一致性机制会阻止同时修改由两个以上处理器缓存的内存区域数据当其他处理器回写已被锁定的缓存行的数据时会使缓存行无效。 有的CPU不支持性能比较好 缓存一致性机制
当某块CPU对缓存中的数据进行操作后就通知其他CPU放弃储存在它们内部的缓存或者从主内存中重新读取。 有两种情况下处理器不会使用缓存锁定
当操作的数据不能被缓存在处理器内部或操作的数据跨多个缓存行cache line时则处理器会调用总线锁定。 有些处理器不支持缓存锁定。对于Intel 486和Pentium处理器就算锁定的内存区域在处理器的缓存行中也会调用总线锁定。