并发编程(一)计算机理论模型

简介: 并发编程(一)计算机理论模型

计算机理论模型

计算机理论模型.png

多CPU架构

多CPU架构.png

缓存一致性协议

在多处理器系统中,每个处理器都有自己的高速缓存,而它们又共享同一主内存(MainMemory)。基于高速缓存的存储交互很好地解决了处理器与内存的速度矛盾,但是 也引入了新的问题:缓存一致性(CacheCoherence)。当多个处理器的运算任务都涉及同一块主内存区域时,将可能导致各自的缓存数据不一致的情况,如果真的发生这种情况,那同步回到主内存时以谁的缓存数据为准呢?为了解决一致性的问题,需要各个处理器访问缓存时都遵循一些协议,在读写时要根据协议来进行操作,这类协议有MSIMESI(IllinoisProtocol)、MOSI、Synapse、Firefly及DragonProtocol,等等

缓存一致性协议.png

MESI

MESI.png

小知识

缓存行大小为64Bytes;

以Long型占8个字节为例,一个缓存行可以放8个Long型变量。

当一个线程修改了缓存行中某一个变量,其他线程整个缓存行都会失效。

而如果这个缓存行中有一些变量是我们不希望被频繁从主内存同步的,我们想让这样的变量好好的呆在CPU缓存中,就只在更新时从主内存同步,而不是因为其他变量的原因被同步。我们可以怎样做呢?

我们可以这样:比如有一个Long型变量A,我们可以在这个变量前后都定义7个不使用的Long变量(只是为了占用缓存行)。这样就可以让变量A不受影响了。

定义7个是因为缓存行一共64字节,一个缓存行最多能放8个long类型变量

目录
相关文章
|
3月前
|
算法 安全 Java
深入理解Java中的并发编程模型
深入理解Java中的并发编程模型
|
4月前
|
安全 Java 调度
解密Java并发编程的奥秘
解密Java并发编程的奥秘
|
5月前
|
算法 安全 Java
探索Java并发编程的奥秘
【5月更文挑战第26天】 在多线程的世界里,Java并发编程是一块重要的领域。本文将深入探讨Java并发编程的基本概念、实现方式以及常见问题,帮助读者更好地理解和掌握并发编程的技巧。
34 2
|
5月前
|
Java API 调度
[AIGC] 深入理解Java并发编程:从入门到进阶
[AIGC] 深入理解Java并发编程:从入门到进阶
|
5月前
|
消息中间件 Java Linux
多线程理论基础
多线程理论基础
|
缓存 安全
并发编程学习一
并发编程学习一
72 0
|
分布式计算 算法 安全
史上最全的Java并发系列之并发编程的挑战
前言 文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820… 种一棵树最好的时间是十年前,其次是现在
161 0
|
机器学习/深度学习 人工智能 自然语言处理
深入浅出谈谈深度学习~
深度学习的概念由Hinton等人于2006年提出。深度学习可以简单理解为传统神经网络的拓展。如下图所示,深度学习与传统的神经网络之间有相同的地方,二者的相同之处在于,深度学习采用了与神经网络相似的分层结构:系统是一个包括输入层、隐层(可单层、可多层)、输出层的多层网络,只有相邻层的节点之间有连接,而同一层以及跨层节点之间相互无连接。
320 0
深入浅出谈谈深度学习~
下一篇
无影云桌面