동기화(Synchronization)
- 메모리 영역을 공유하는 두 프로세서
- P1이 쓴 다음 P2가 읽는다.
- P1과 P2가 동기화되지 않으면 데이터 경합이 발생한다.
- 액세스 순서에 따라 결과가 달라진다.
- 하드웨어 지원 필요
- 읽기/쓰기 메모리 Atomic operation
- 읽기와 쓰기 사이에는 해당 위치에 대한 다른 접근이 허용되지 않는다.
- 단일 명령일 수 있다.
- 예: 레지스터 ↔ 메모리의 atomic swap
- Or 명령의 atomic 쌍
MIPS의 동기화
- Load linked
ll rt, offset(rs)
- Store conditional
sc rt, offset(rs)
- ll 이후 위치가 변경되지 않으면 성공
- rt = 1
- 위치가 변경되면 실패
- rt = 0
- 예: atomic swap (to test/set lock variable)
try:
add $t0, $zero, $s4 # s4를 t0로 옮김
ll $t1, 0($s1) # 메모리 s1 주소의 값을 t1에 넣음
sc $t0, 0($s1) # 메모리가 이전에 로드했던 값과 달라지지 않았으면
# t0가 1(성공) , 달라졌으면 t0가 0(실패)
beq $t0, $zero, try # t0이 0(실패)이면 try
add $s4, $zero, $t1 # t0가 1(성공)이면 t1을 s4로 옮김
'컴퓨터시스템구조' 카테고리의 다른 글
[컴퓨터시스템구조] 15. MIPS 배열 vs. 포인터 (0) | 2023.10.15 |
---|---|
[컴퓨터시스템구조] 14. MIPS Sort (1) | 2023.10.15 |
[컴퓨터시스템구조] 12. MIPS 주소지정 정리 (0) | 2023.10.14 |
[컴퓨터시스템구조] 11. MIPS 주소지정 (0) | 2023.10.14 |
[컴퓨터시스템구조] 10. MIPS 문자열 연산자(lb, lh, sb, sh) (0) | 2023.10.14 |