20150512

1. 영어 기사 읽기
1) North Korean leader ordered aunt to be poisoned, defector says, CNN
– Kim Jong Un publicly called his uncle “scum,” claiming he had been working against the government and trying to topple the regime. (scum – 인간쓰레기, topple – 넘어뜨리다)
2) First-Ever In-Home Toilets Spotted for Ants, Scientific American
– No one is sure why black garden ants keep their feces inside the nest, especially given that Formicidae are otherwise fastidious housekeepers (fastidious – 깔끔한, 유난을 떠는)


2. Computer Architecture 청강
– Cache coherence 보장에는 write propagation과 write serialization이 필요하다. 쓰기는 반드시 모든 프로세서에 전달되어야 하며, 쓰기 순서는 serialize되어야 한다.
– Multiprocessor 환경에서, 일반적으로 데이터는 각 프로세서에 private하다. 멀티쓰레드 프로그램을 작성할 때, 고성능을 위해 그런 방식으로 프로그램을 작성하기 때문이다.
– MESI에서 M->S로 갈 때, 불필요한 write back이 발생한다. 캐시의 여러 곳에 같은 데이터가 존재함에도 bus write back이 발생한다. 캐시에 정보가 존재하는 한 write back을 미루는 것이 MOESI 프로토콜이다. I는 invalid, S는 valid & shared & clean, E는 valid & exclusive & clean, M은 valid & exclusive & dirty 상태이다. 이 중에 valid & shared & dirty에 대한 상태가 없음. 이 상태를 O라 하자.
– Coherence miss는 true sharing 또는 false sharing으로 인해 발생한다. False sharing은 생각보다 자주 발생한다. 구조체가 캐시라인 단위에 맞춰져 있지 않기 때문이다. 프로그래머가 캐시라인에 맞도록 구조체를 패딩함으로써 이를 해결할 수 있다. 예전에 SPEC 벤치마크에도 false sharing의 문제가 있었다.
– MESI 프로토콜에서 특정 주소에 대해 다른 프로세서의 캐시가 S 상태의 캐시라인을 가져도, 메모리가 캐시라인 요청에 응답한다. MESI 프로토콜을 수정해서 S 상태가 캐시라인 요청에 응답할 수는 있지만, 프로세서의 수가 많은 경우에 누가 응답하느냐의 문제가 있음.
– 초반의 SMP는 address network와 data network가 같은 bus를 공유했음. 90년대 쯤에는 address network와 data network를 분리해서 bus를 구성함. Address network는 브로드캐스팅과 직렬화에 유리해야 한다. Data network는 브로드캐스팅이 불필요하고, 직렬화하지 않아도 된다. point-to-point network를 사용해 높은 대역폭을 제공하면 좋다. Address network의 경우 명령어 + 주소 정도의 크기만 처리하면 되지만, data network는 데이터를 전송해야 하므로 더 큰 대역폭이 필요하다.
– 원래 bus는 한 번에 하나의 transaction을 실행할 수밖에 없으나, split-transaction bus는 동시에 여러 개의 transaction을 실행하자는 것. Bus를 pipelining하는 것. 한 개 transaction의 실행에 수십 cycle이 소요되므로, pipelining하는 것이 중요하다. 동시에 실행하는 것의 문제는 동시에 처리하는 두 개의 명령이 서로 충돌하는 경우이다. Split-transaction bus는 이를 확인하고 해결해줄 수 있어야 한다.
– 이전에는 bus network를 구성하기 위해 물리적으로 bus를 사용함. 하지만 프로세서의 수가 늘어나면서 다른 네트워크를 사용하게 됨. Tree를 사용하기도 하고, ring-based address network를 사용하기도 함. Tree의 경우에는 tree의 루트가 serialization point가 됨. Ring network는 bandwidth가 simple bus보다 더 크다. Ring network에서 한 개의 노드를 serialization point로 잡아서 serialize할 수 있다. 모든 요청은 해당 노드에 도달한 다음에 serialize되어 실제로 네트워크에서 영향을 준다.
– Multi-level cache에서 cache coherence는 조금 더 복잡해진다. Exclusive L1, L2를 갖는다면 L1과 L2 모두에 대해 snoop해야 한다. Inclusive L1, L2를 갖는다면 우선 L2를 snoop한 다음에 snoop hit이 발생하면 L1을 snoop한다.
– AMD HyperTransport(Hammer)에서는 snoop-based coherence with NUMA를 사용한다. 각 노드마다 일정 구간의 메모리를 가지는데, 각 노드는 자신이 갖는 영역의 홈 노드가 된다. 모든 메모리 요청은 홈 노드에서 serialize된다.


3. mmap, unmap, brk
mmap과 munmap은 프로세스 주소 공간에 메모리 할당과 해제를 위해 사용한다. brk는 메모리를 할당한다는 점에서는 mmap과 동일하지만, 할당 단위와 할당 해제에 대한 특성이 다르다. mmap은 페이지 단위로 메모리를 할당하는 반면에, brk는 더 작은 단위로 메모리 할당이 가능하다. mmap으로 할당한 공간은 munmap으로 할당 해제 가능하지만, brk로 할당한 공간은 할당 해제가 불가능하다.
References:
[1] What are the differences between “brk()” and “mmap()”?, Cprogramming.com, http://cboard.cprogramming.com/linux-programming/101090-what-differences-between-brk-mmap.html

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 )

Google+ photo

You are commenting using your Google+ 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 )

Connecting to %s

Recent Posts
누적 방문자 수
  • 142,141 hits
%d bloggers like this: