[컴퓨터구조론] 프로세스 동기화

티라노·2025년 3월 30일

컴퓨터구조론

목록 보기
6/18

Synchronization

프로세스가 동기화되지 않아서 발생하는 문제를 Data race라고 한다.

Atomic read/write memory operation

프로세스를 동기화하기 위해 쓰이는 메모리 관련 명령어이다.

lr.w rd, (rs1)

rs1에 해당하는 주소의 데이터를 rd로 불러오는 명령어이다.
lw와 다른 점은 메모리 공간에서 불러오는 과정에서 다른 프로세스에서 rs1을 수정하는지 감시한다는 점이다.

sc.w rd, rs2, (rs1)

rs2의 값을 rs1의 주소에 저장하는 명령어이다. rd는 저장 명령어가 실패했을 시 non-zero값, 성공했을 시 0을 반환한다.
store 도중에 다른 프로세스가 rs1에 간섭하여 초기값과 달라졌다면 저장에 실패할 수 있다. 실패 시 restore를 진행하면 된다. 이 반복 시도는 보통 branch를 사용하여 구현한다.

레지스터 선택
sc.w에서 saved 레지스터를 사용하지 않으면 실패하는 경우 오류가 생길 수 있다.

x9, 0, again

동기화 명령어의 한계

1. base instruction만 사용할 수 있다.
lr.w와 sc.w는 메모리 공간 감시를 겸하는 복잡한 명령어이다.
따라서 덧셈, 뺄셈 등 기본적인 연산만 가능하고 총 16개까지의 명령어만 사용할 수 있다. floating point 연산 등은 불가능하다.

2. 메모리 접근이 제한된다.
lr.w와 sc.w 사이에 load/store가 불가능하고 다른 주소에 대한 lr/sc또한 불가능하다. 뒤로 가는 branch 이동은 sc.w가 실패했을 경우에만 가능하다.

t번이라고 할 때
1 : 1+t(1+1+4+1+2)=1+9t
2 : 1+1+1+t(4+1+2)=3+7t

문제1: bne x9, x0, again

0개의 댓글