일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- stl
- pandas
- Photoshop
- 알고리즘
- margin
- align-items
- series
- Design Pattern
- c
- Flexbox
- dataframe
- Codility
- CSS
- c++
- 강화학습
- 포토샵
- 상태
- Gap
- Prefix Sums
- 백준
- SK바이오사이언스
- Javascript
- 수학
- 에라토스테네스의 체
- grid
- 통신사할인
- 소수
- skt membership
- 확률
- spring
Archives
- Today
- Total
sliver__
2.11 Parallelism and Instructions : Synchronization 본문
728x90
Parellel execution에서는 data race를 조심해야 한다.
multiple processor들이 하나의 data를 read/write할 때, 해당 동작은 atomic 해야만 한다.
load link(ll)와 store conditional(sc) 명령어를 사용하여 공유 데이터의 read / write를 수행한다.
Ex)
again: addi $t0,$zero,1 ;copy locked value
ll $t1,0($s1) ;load linked
sc $t0,0($s1) ;store conditional
beq $t0,$zero,again ;branch if store fails
add $s4,$zero,$t1 ;put load value in $s4
sc 가 실패하면 0을 반환하고 다시 again으로 이동한다.
sc 가 성공하면 1을 반환하고 add instruction이 수행된다.
ll 후 sc를 여러 synchronization에서 사용가능하다.
ll - sc 사이에 명령어가 사용될 수 있지만 적은게 좋다.
ll - sc 사이에 명령어가 사용된 경우에 sc가 실패하면 다시 again으로 이동하게 된다. 반복되는 경우에 예상치 못한 dead lock이 발생할 가능성도 있다.
728x90
'CS > 컴퓨터 구조' 카테고리의 다른 글
2.13 A C Sort Exampleto Put It All Together (0) | 2023.10.21 |
---|---|
2.12 Translating and Starting a Program (0) | 2023.10.21 |
2.10 MIPS Addressing for 32-bit immediates and Addresses (1) | 2023.10.21 |
2.9 Communicating with People (0) | 2023.10.21 |
2.8 Supporting Procedures in Computer Hardware (0) | 2023.10.21 |
Comments