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 |