20150519

Computer Architecture 청강
– 오늘은 consistency에 대해 이야기할 것.
– Coherence와 Consistency의 차이점
1) Coherence는 ISA의 일부가 아니다. 하지만 consistency는 ISA의 일부이다.
2) Coherence는 한 개의 변수를 여러 개의 코어가 공유하는 상황을 처리하고, consistency는 두 개 이상의 변수가 연관되는 상황이 일반적.
– 다음 코드는 ISA에 따라 기대한대로 동작할 수도 있고, 아닐 수도 있다.

CA_consistency
– Sequential consistency는 1) 각 프로세서가 자신의 load, store 명령을 프로그램 순서로 처리, 2) 다른 프로세서의 load, store 명령을 프로그램 순서로 본다. 3) global order는 모두에게 같다. Sequential consistency가 충족되면 위 프로그램은 기대한 대로 동작한다.
– Sequentially consistent한 machine을 만드는 것은 매우 쉽다. 하지만 sequential consistency를 충족하려면 OoO-core가 불가능하다 (심각한 성능 저하)
– load가 store보다 일반적으로 프로그램 실행 성능에 중요하므로, reordering을 통해 load가 먼저 실행된다. 하지만 이렇게 되는 경우 앞서 보았던 코드가 제대로 동작하지 않는다. x86에서 이렇게 코딩하면 예상한대로 동작하지 않으며, 이것은 프로그래머의 잘못이다.
– OoO execution 상황에서 데이터 업데이트도 생각처럼 동작하지 않을 수 있다. 서로 다른 주소에 쓰기가 발생할 때, 하나는 cache miss로 인해 늦게 완료되고, 다른 하나는 cache hit으로 인해 일찍 완료된다면 데이터 상태 예상과 다를 수 있다.
– Processor consistency는 W->R ordering만 완화하고, 나머지는 모두 유지한다. Processor consistency는 x86, SPARC 등에서 사용한다.
– Weak ordering은 모든 ordering을 완화하고, memory fence instruction을 추가한다. Memory barrier가 kernel, device driver 등에서 많이 쓰인다. Weak ordering은 Alpha, Itanium, ARM, PowerPC 등에서 사용한다.
– Processor consistency에도 memory fence instruction이 있다. W->R ordering을 완화했으나, 경우에 따라 W->R ordering을 강제해야 할 수 있기 때문이다.
– Processor consistency, Weak ordering을 사용하는 머신에서 sequential consistency 유지하고 싶다면, 모든 메모리 접근에서 fence instruction 사용하면 된다.
– OoO core에서 consistency를 유지하는 방법으로 speculation을 사용할 수 있다. LSQ를 탐색해서 speculation이 옳은지 확인한다.

Advertisements
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

누적 방문자 수
  • 90,796 hits
%d bloggers like this: