20150521

Computer Architecture 청강
– spinlock 사용에는 atomic exchange 지원이 필요하다. 특정 주소에 대해 atomic operation을 수행하는 프로세서는, atomic operation이 끝날 때까지 해당 주소에 대한 cache invalidation message를 무시하게 된다.
– 하지만 이것(test-and-set)이 그리 효율적이지는 않다. 1000개의 코어가 있고, 한 개에서 critical section을 실행 중이라 하자. 나머지 999개는 계속해서 캐시를 읽고, invalidation message를 보낸다. 소프트웨어적으로 이러한 비효율을 제거할 수 있다 (test and test-and-set).
– test-and-set 외에, load linked + store conditional로 구현할 수도 있다. load linked에서 메모리 주소의 값을 읽고, store conditional에서 값을 저장하는데, 중간에 다른 코어에 의해 값이 변경된다면 재시도한다.
lock convoy: 동일한 우선순위를 갖는 여러 개의 쓰레드가 하나의 락을 공유할 때, 락이 쓰레드 사이에 이동함으로 인해 성능 저하가 발생하는 것.
priority inversion: 낮은 우선순위의 태스크가 높은 우선순위의 태스크를 선점함으로 인해 우선순위가 뒤집히는 문제. 탐사선 패스파인더에 이런 문제가 있었다.
– Transactional memory는 lock 없이도 correctness와 parallelism을 보장한다.

Advertisements
Tagged with: , , , , , , , ,
Posted in 1) Memo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 103,571 hits
%d bloggers like this: