본문 바로가기
카테고리 없음

컴퓨터 구조 - 22

by For Liberty. 2022. 6. 5.
반응형

3. 결과 쓰기(Write result) - 결과가 산출되면 CDB에 (명령이 이슈될 때 기록된 ROB 태그와 함께 출력되며 다시 CDB로부터 ROB 와 이 결과를 기다리고 있는 예약 스테이션에 보내진다. 예약 스테이션은 사용할 수 있는 상태로 표시된다. Store 명령의 경우는 특별한 작업이 요구된다. 저장할 값이 산출되면 ROB 엔트리의 값 필드에 기록되어야 한다. 아직 값이 산출되지 않았다면 이 값이 브로드캐스트될 때까지 CDB를 감시하여야 하며 이 값이 산출되는 순간 store에 해당하는 ROB 엔트리의 값 필드 역시 갱신된다. 설명을 쉽게 하기 위해 일단 이러한 과정이 store의 결과 쓰기 단계에서 발생한다고 가정하자. 뒤에서 어떻게 이러한 제한 사항이 제거될 수 있는지 논의할 것이다. 4. 완료(Commit) - 이 단계는 명령어 처리를 완료하는 마지막 단계로 이 이후에는 오직 명령의 결과만이 남게 된다. (일부 프로세서에서는 이 완료 단계를 "완료(completion)" 또는 "졸업(graduation)" 단계라고도 한다) 완료되는 명령이 예측이 빗나간 분기 명령인지, store인지, 또는 다른 일반 명령 (정상 완료) 인지에 따라 완료 단계는 세 가지 다른 작업을 수행한다. 정상 완료는 명령이 ROB의 서두에 놓이게 되고 결괏값이 버퍼에 존재할 때 발생한다. 프로세서는 결괏값을 레지스터에 쓰고 명령을 ROB으로부터 제거한다. Store 명령의 완료는 레지스터 대신에 메모리가 갱신되는 것을 제외하고는 유사하게 처리된다. 잘못된 예측으로 판명된 분기 명령이 ROB의 서두에 놓이게 되면 예측 실행이 잘못되었음을 나타낸다. ROB은 플러쉬되고 분기 명령 후의 올바른 다음 명령부터 실행은 재시작된다. 분기가 올바르게 예측된 경우 분기 명령의 처리는 완료된다. 일단 명령이 완료되면 레지스터 또는 메모리에 최종 결과가 써져서 ROB 엔트리의 필요성은 없어지므로 해당하는 ROB 엔트리는 반환된다. ROB이 꽉 찬 경우는 엔트리가 생길 때까지 명령어의 이슈는 중단된다. 다중 이슈와 정적 스케줄링을 이용한 ILP의 활용. 이전 내용에서 제어 해저드에 의한 스톨을 제거하면 이상적인 1의 CPI를 달성할 수 있다. 그 이상으로 성능을 향상하려면 CPI를 1 이하로 줄여야 한다. 하지만, 한 클록 사이클에 단 하나의 명령만 이슈 한다면 CPI를 더 이상 줄이는 것은 불가능하다. 앞으로 논의할 다중 이슈 프로세서 (multiple-issue processors)의 목표는 한 클록 사이클에 여러 개의 명령을 이슈 하는 것이다. 다중 이슈 프로세서에는 다음의 3가지 유형이 존재한다. 1. 정적으로 스케줄 된 슈퍼스칼라 프로세서 2. VLIW(very long instruction word) 프로세서 3. 동적으로 스케줄 된 슈퍼스칼라 프로세서 두 유형의 슈퍼스칼라 프로세서에서 매 클록마다 이슈되는 명령의 수는 일정하지 않으며 정적으로 스케줄 되는 경우는 순차적 실행을 사용하고 동적으로 스케줄 되는 경우는 비순차적 실행을 사용한다. 반면에 VLIW 프로세서에서는 클록마다 일정한 수의 명령을 이슈 하는데 이 명령들은 하나의 큰 명령에 속해 있거나 명령들 사이의 병렬성이 명령에 의해 구체적으로 명시된 고정된 명령어 패킷을 사용한다. VLIW 프로세서는 기본적으로 컴파일러에 의해 정적으로 스케줄 된다. 뒤에서 기술하였듯이 인텔과 HP가 IA-64 아키텍처를 창시했을 때, 이와 같은 아키텍처를 위해 EPIC(explicitly parallel instruction coding)이라는 이름을 사용하였다. 비록 정적 스케줄링을 사용하는 슈퍼스칼라 프로세서는 클록마다 일정하지 않은 수의 명령을 이슈 하지만, 실제로는 VLIW에 더 가까우며 두 방식 모두 컴파일러에 의존하여 코드를 스케줄 한다. 이슈 폭이 증가함에 따라 정적 스케줄 된 슈퍼스칼라 프로세서의 장점은 감소하기 때문에 정적 스케줄링을 사용하는 프로세서는 이슈 폭이 작을 때, 일반적으로 두 명령을 한 클록에 이슈 하는 경우에 주로 사용된다. 이슈 폭이 그보다 클 때 대부분의 프로세서는 VLIW나 동적 스케줄링을 사용하는 슈퍼스칼라 프로세서로 구현된다. 정적 스케줄링을 사용하는 프로세서와 VLIW 프로세서는 하드웨어와 요구되는 컴파일러 기술이 유사하기 때문에 이 절에서는 VLIW에 중점을 두어 설명한다. 하지만, 이 절에서 논의하는 대부분의 내용은 정적 스케줄링을 사용하는 슈퍼스칼라 프로세서에도 쉽게 적용될 수 있다. 기본 VLIW 방식. VLIW는 여러 개의 독립적인 기능 장치를 사용한다. 여러 독립적인 명령을 여러 장치로 이슈 하는 방식 대신에 VLIW는 여러 연산을 하나의 긴 명령에 패키지하거나 이슈 패킷에 있는 명령들이 똑같은 제한 사항을 만족하도록 요구한다. 이 두 방식에 근본적인 차이점은 없기 때문에 원 VLIW 방식에서처럼 하나의 명령에 여러 연산이 속해 있는 것을 가정한다. VLIW의 장점은 최대 이슈 폭이 증가함에 따라 커지므로 이슈 폭이 큰 프로세서에 중점을 두어 논의하기로 하자. 간단한 2-이슈 프로세서에서 슈퍼스칼라 프로세서의 오버헤드는 크지 않다. 많은 설계자가 4-이슈 프로세서의 오버헤드 역시 감당할 수준 정도라고 주장하기도 하지만, 다음 장에서 살펴보듯 이러한 오버헤드의 증가가 이슈 폭을 증가시키는 데 가장 큰 제한 사항이 된다.

반응형

댓글