PRAM 模型中 CRCW 和 EREW 的主要区别是什么?

What is the main difference between CRCW and EREW in PRAM model?

在PRAM模型中,多个处理器同步行动,对不同的数据集执行相同的命令。

每种算法有两种read/write模式;

  1. 并发(并发读取 & 并发写入
  2. 独占(独占读取 & 独占写入

我比较费解的是这两种模式到底有什么区别,哪个好像更熟练?

如果两个进程试图同时从同一内存位置读取怎么办? (此操作定义明确。)

如果两个进程试图同时写入同一个内存位置怎么办? (此操作定义不明确:最终值会是某些进程写入的值吗?如果是,是哪个?会是 "mixture" 吗?)

您可以使用一种或另一种模型设计算法,即允许自己并发 reads/writes 或不。

最多"powerful"的机器是CRCW机型,它能给出最快的算法,其次是CREW。

理论:

may harness one of the below listed principal approach to concurrent-events' handling policies not observed in any pure-[SERIAL]系统.

鉴于机器物理主体的性质,下面列出的一些策略可能(但不需要)匹配处理目标,然后基于软件的工具可以采用其他策略(未在下面列出,因此不由 基于硬件的资源直接支持),当然,需要花费额外的时间(附加开销)来协调此类策略执行步骤和措施。

正如下面 3.2.x 中所观察到的,一些基于硬件的策略 可能 直接有利于专业化, 非普遍化 、图像处理或类似情况,而通用计算图不会得到正确的结果,如果不通过某种排他性锁定或原子操作的方式进行保护,因为下面列出的 CRCW 策略确保 none系统有效导致 "just"-[CONCURRENT] 计划的代码执行并发引发的写入访问冲突。


  • EREW ( Exclusive Read, Exclusive Write ):

1.1) 不允许多个处理器并发访问内存
1.2) 如果两个或多个处理器试图同时读取或写入同一个内存单元,则行为是 undefined


  • CREW ( Concurrent Read, Exclusive Write ):

2.1) 并发读取同一个内存单元是可以的
2.2) 对同一单元的两次并发写入导致 未指定的行为


  • CRCW ( Concurrent Read, Concurrent Write ):

3.1) 并发读写都OK
3.2) 并发写入的行为必须进一步指定:

3.2.1) Weak-CRCW: concurrent write only OK if all processors write 0
3.2.2) Common-mode-CRCW: 所有处理器都需要写入相同的值
3.2.3) Arbitrary-winner-CRCW:对手选择其中一个值(确实是彩票)
3.2.4) Priority-CRCW: 具有最高ID的处理器的值被写入
3.2.5) Strong-CRCW: { 最大 |最小的}-值写成