수요일, 3월 08, 2006

최적화 - 파이프라이닝

요즘 나오는 마이크로프로세서들은 대부분 파이프라이닝 기능을 가지고 있다. 파이프라이닝은 CPU내부 작동 시 독립적으로 작동하는 부분을 충분히 활용하는 기술이다. 하나의 CPU instruction을 수행하는데 일련의 여러 가지 일 (가져오기, 계산하기, 저장하기, 등등)이 필요한데, 하나의 명령을 수행 할 때 다음 명령을 가져오는 일은 미리 해둘 수 있는 것 을 활용한 것이다.

인간도 이러한 최적화를 자신도 모르게 수행한다. 예를 들어 문으로 들어갈 때 문앞까지 간 다음 손으로 문을 열지 않고 문 앞 적당한 거리에서 부터 손이 문의 손잡이 앞으로 간다. 열쇠를 꺼내야 한다면 그 전에 이미 손은 주머니로 갈 것이다.

파이프 라이닝 기술은 CPU가 분기를 할 때 깨지게 된다. 조건에 따라서 미리 가져온 명령이 무용지물이 될 수 있기 때문이다. 심각할 것 까진 아니겠지만 어쨌든 파이프라이닝 손실에 따라 성능에는 약간의 문제가 생긴다.

인간도 이러한 실수가 있다. 문이 잠기지 않은 줄 알았는데 잠겼을 경우 문앞에서 주머니에 손을 넣어 열쇠를 꺼내야 한다.

인간의 파이프라이닝 최적화는 무의식적으로 진행되기 때문에 경우에 따라서는 좀 심각한 경우도 있을 수 있다. 남자화장실의 소변기에서 소변을 볼 때, '남대문'이라는 애칭을 가지고 있는 지퍼를 열고 일을 본다. 그러나 인간의 최적화에 따라 자주가는 화장실에 갈 때에는 보통 무의식적으로 소변기 앞에 서기도 전에 걸어가면서 지퍼를 내린다. 그런데 가끔가다가 너무 빨리 지퍼를 내리는 경우도 있다. 화장실 문을 열기도 전에 말이다. 이 때 화장실 문이 잠겨있는 걸 발견했다면 심각할 수도 있겠다.

댓글 2개:

익명 :

닭, 너 또 여자 화장실에 들어갔구나. 분기 예측을 잘해야지. ㅉㅉ

- jrogue

파름 :

난 너같은 실수는 안한다. 넌 여자화장실에 들어갔다 나와서 우리가 이야기해 줄 때 까지 여자화장실 들어갔단 사실을 몰랐잖아.

하긴, 닭은 인간의 성별구분하기 힘들지. 사람도 병아리 감별사가 존재하듯...