20150416

1. 영어 기사 읽기
1) A Few Hundred Smartphones Could Catch Earthquakes Early, Scientific American
2) Are human head transplants coming soon?, CNN
– a 45-year-old reference in a primate and there is no evidence that the spinal cord was anastomosed functionally (anastomose – 맥관 등을 문합시키다)


2. Computer Architecture 청강
– Reservation station에 기반한 구현에서는 RAT가 값을 architectural register file, ROB, 또는 resevation station pointer로 매핑한다. Physical register file에 기반한 구현에서는 항상 physical register로 매핑한다.
– PRF 구현에서 틀린 speculation을 복구하려면, ROB, issue queue 비우고 active map을 architectural map으로 덮어씌우면 됨.
– Memory dependence는 memory disambiguation 때문이다. (dependence가 있는지 확인하기 어려움)
– 이를 해결하려면 store 명령어와 load 명령어가 차례대로 실행되도록 해야 한다. load store queue (LSQ)를 사용해 해결할 수 있다. LSQ는 load queue와 store queue로 이루어지며, 각 entry는 ROB에 대한 pointer를 갖는다. store queue를 검색해, 특정 load 명령 이전에 같은 주소에 대한 store가 있는지 확인
– LSQ를 사용하면 store forwarding 가능하다. 특정 경우에 memory 접근 필요 없이 store queue에서 load queue로 forwarding 가능. 이전의 모든 store 명령어의 주소를 확인해야 한다는 오버헤드 있음. Store queue 안의 메모리 주소가 확인되지 않으면 진행할 수 없음.
– x86에는 레지스터 수가 적어서, short memory dependence가 많았다. register spill이 많이 발생했음. 따라서 store forwarding을 통한 성능 향상이 컸다.
– Store forwarding에서의 오버헤드 해결하고자 speculative load execution 기법 제안됨. Store queue 값이 확인되지 않아도, 우선 load를 실행. 만약에 틀렸다면 복구해준다. 틀렸다면 그 뒤의 명령어를 모두 비우고 다시 실행하면 된다. 선택적으로 비울 수도 있으나, 그것을 구현하려면 ROB가 매우 복잡해진다는 문제가 있음.
– Speculative load execution도 문제가 있음. for loop 안에 store, load 명령어가 있으며 speculation이 매번 틀린다면 큰 오버헤드가 됨. ㅣ를 해결하려면 predictor를 사용하면 됨.
– Superscalar 구현 어려운 점. 1) CISC는 명령어의 길이가 다르므로, superscalar로 decoding할 때 문제가 된다. predecode 기법을 사용하면 개선할 수 있다. 2) branch 명령어가 중간에 있으면 동시에 여러 명령어를 issue할 수 없다. trace cache를 사용해 해결할 수 있다. 최대 성능을 낼 수 없음. 3) 명령어 사이의 의존이 있으면 해결하기 어렵다. 4) register file의 port 수도 늘어나야 함. 5) bypassing (값이 레지스터 파일에 쓰이기 전에 사용하는 것) 동시에 실행되는 명령이 늘어나면 bypassing logic도 더 넓어져야 함.
– true dependence가 있으면 최대한 빠르게 실행해야 한다. true dependence가 critical path에 있기 때문이다.
– 중요: ILP를 제한하는 주요한 원인은 LLC miss이다. load 명령어에서 LLC miss가 발생해서 instruction window를 이동시키지 못하면 성능이 크게 떨어진다.
– Multithreading은 한 개의 프로세서 안에서 여러 개의 HW context를 유지하는 기술. 내부 로직에서 일부는 thread id가 구분되어야 하고, 그 외에는 구분할 필요가 없다.
– SMT를 사용하면 speculation depth를 줄인다. Single thread가 ROB를 모두 사용하면 speculation이 더 많아지지만, two thread가 ROB 공유하면 한 개의 thread의 speculation depth는 줄어든다.
– cache miss로 인한 메모리 접근에 쓰이는 오버헤드는 300~400 cycle

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

누적 방문자 수
  • 88,534 hits
%d bloggers like this: