Re: 有谁了解多核处理器的同步是如何完成的?
时间:12-12
整理:3721RD
点击:
跟设计的cache的hierarchy有关,是共享的还是分布式的,还是都有。hierarchy越复杂。cache coherence protocol也越复杂。这方面的设计还是有很多道道的,对处理器的性能有致命影响。千万别把互锁设计成了死锁。AMD自从07年barcelona处理器被爆出这方面的一个BUG后,陷入困境良久。。。。。
可以阅读一下Computer Architecture: A Quantitative Approach 4th edtion的 Chapter 4介绍CMP和cache coherence。这方面的论文也很多的。
这方面的技术在复杂的ASIC和普通的SoC设计中都是很容易用到的。
.245
可以阅读一下Computer Architecture: A Quantitative Approach 4th edtion的 Chapter 4介绍CMP和cache coherence。这方面的论文也很多的。
这方面的技术在复杂的ASIC和普通的SoC设计中都是很容易用到的。
.245
本质是增加的额外信息来标识。 这不仅需要指令集支持,cpu实现,也需要总线互连/内存控制器的支持。比如arm里ldrex, strex是可以用来实现多核的互斥通信的。并且AMBA AXI总线中加入了lock[1:0]的总线信号标识当前的访问是否是exclusize访问,还需要内存控制器(slave)也支持互斥访问,记录互斥的master和addr。
这是摘arm的一段代码用于实现lock的。
Lock address : LockAddr
Lock free : 0x00
Lock taken : 0xFF
MOV R1, #0xFF ; load the ‘lock taken’ value
try LDREX R0, [LockAddr] ; load the lock value
CMP R0, #0 ; is the lock free?
STREXEQ R1, R0, [LockAddr]; try and claim the lock
CMPEQ R0, #0 ; did this succeed?
BNE try ; no – try again. . .
; yes – we have the lock