1. 개념


 transactional memory는 간단하게 operation 뭉텅이를 atomic하게 실행시켜주는 transaction을 위한 메모리이다. 만약 다른 코어에서 내가 쓴 메모리에 접근했다면, contention이 일어난 것인데 이를 언제 detect할 것인지 등에 대해(구현 방법에 대해) 얘기할 것이다.


2. 동작방법


 단순하게 한 transaction을 실행할 때 다른 코어에서 그 메모리를 건드리지 않으면 실행(commit? update?)한다. 아니면 Undo 한다(Haswell 기준). Undo는 transaction을 실행하기 전 메모리에 기록해놓는 것인데, Haswell은 hardware transactional memory가 구현되어 있어서 해당 hardware operation도 있고, 저장할 레지스터들도 다 준비되어 있다.


3. Design choices


 transactional memory를 구현하려면 세 가지를 고려해야 한다.

a. concurrency control - pessimistic: conflict가 많이 일어난다고 가정하고 lock을 걸고 실행한다.

   optimistic: conflict가 별로 없다고 가정하고 실행하고 validate해보고, Undo를 결정한다.

b. version management - eager: 바로 메모리에 써보고, Undo-log를 만든다.

lazy: 쓰지 않고, Redo-log를 만든다.

c. conflict detection - eager: lock 걸고 바로 확인해본다.

lazy: 다 실행하고 확인해본다.



구현방법은 링크로 대체한다.

https://www.slideshare.net/zzapuno/kgc2013-3

'분산시스템 (멀티코어 contention) - 수업' 카테고리의 다른 글

barriers  (0) 2017.06.21
futures, scheduling, and work distribution  (0) 2017.06.21
참고자료 및 더 볼거리  (0) 2017.06.16
priority queue (for concurrent)  (0) 2017.05.23
concurrent skip-list  (0) 2017.05.23
Posted by sjo200
,