20150409

1. 영어 기사 읽기
1) South Carolina policeman charged with murder after video of shooting emerges, CNN
2) Artificial Sweeteners May Change Our Gut Bacteria in Dangerous Ways, Scientific American
– These seemingly magical molecules deliver a dulcet taste without its customary caloric punch. (dulcet – 감미로운)


2. Computer Architecture 청강
– Tomasulo algorithm에서 instruction이 commit될 때에만 레지스터의 상태를 영구적으로 변화시킨다.
– VLIW에서는 OoO core처럼 내부적으로 dependence graph를 생성할 필요가 없다. 그냥 동시에 여러 개의 instruction을 commit하면 된다.
– Tomasulo algorithm에서 key concept는 reservation station이다. Reservation station은 명령어의 operand를 담고있는 것. Reservation station은 명령어의 결과를 reservation station name으로 대체한다 (register renaming).
– Dispatch는 명령어를 reservation station에 보내는 것. Issue는 reservation station에서 실행 유닛으로 보내는 것. Completion은 명령어의 실행이 끝나는 것.
– Instruction queue에서 명령어가 나갈 때 register file에 접근한다. 명령어와 레지스터 정보를 reservation station에 전달. Tomasulo algorithm에서 동시에 표현할 수 있는 이름의 수는 reservation station 수에 제한된다. Tomasulo algorithm을 사용하면 실행은 true dependence (RAW)에 의해서만 제약됨.
– Tomasulo algorithm에 몇 가지 단점이 있음. 동일한 레지스터 값이 여러 곳에 저장되어 있을 수 있음. Speculative execution은 지원하지 않음. 연산이 끝나면 register file에 바로 업데이트하므로 speculative한 실행이 불가능함. 인터럽트에 대해 정확하지 않음.
– Speculative execution은 옳지 않더라도 명령어를 미리 실행해보고, 틀리면 다시 올바르게 실행하는 것.
– Speculative execution을 지원하려면 instruction commit을 지연시키면 된다. commit하기 전까지 결과를 다른 곳 (reorder buffer)에 저장해두고, 옳은 경우에 commit한다. ROB에 결과를 차례대로 넣어둔 다음에, 명령어가 끝나고 예외 상황이 발생하지 않으면 commit한다.
– ROB가 어떻게 speculative execution을 지원하는가?: ROB에 명령어의 결과가 차례대로 저장되어 있으므로, 중간에 branch 명령이 잘못 실행되었다면 그 뒤를 flush하면 된다. 따라서 ROB에 명령어가 정확히 올바른 순서로 저장되어 있어야 한다.
– ROB entry에는 instruction type, value, destination register, status 정보가 저장됨.
– Reservation station에서는 register name을 reservation station name으로 renaming했다면, ROB에 들어오면 ROB id로 renaming한다. ROB id로 renaming을 하기 위해 register alias table (RAT)를 유지한다.
– ROB entry가 모자라면 아무것도 하지 못하고 기다리고 있어야 함.
– speculative execution 이 실패하면 ROB를 flush하고, RAT를 valid한 상태로 바꾸고, PC를 복구한다.
– partial flush를 지원하기 위해 ROB를 여러 개의 작은 ROB로 나눌 수 있다.
– Load instruction을 실행하기 위해서는 ROB 안에 같은 주소에 대한 store, 모르는 주소에 대한 store 명령어가 있으면 안 된다. Load instruction을 조금 더 일찍 실행하기 위해서 load store queue (LSQ)를 만든다. Load 명령어, store 명령어를 따로 관리한다.
– 자세한 내용이 궁금하다면 [ISCA’85] Implementing Precise Interrupts in Pipelined Processors 읽어보면 됨.

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

누적 방문자 수
  • 101,234 hits
%d bloggers like this: