EPIC 아키텍처

명시적 병렬 명령어 컴퓨팅(Explicity Parallel Instruction Computing, EPIC)은 1997년에 HP-인텔 연합이 1980년대 초부터 연구자들이 조사해 온 컴퓨팅 패러다임을 설명하기 위해 만들어낸 용어이다. 이 패러다임은 독립 아키텍처라고도 불린다. 이는 인텔과 HP가 인텔 아이테니엄 아키텍처를 개발하는 데 기반이 되었으며, HP는 나중에 "EPIC"이 아이테니엄 아키텍처의 오래된 용어일 뿐이라고 주장했다. EPIC은 복잡한 온-다이 회로 대신 컴파일러를 사용하여 병렬 명령어 실행을 제어함으로써 마이크로프로세서가 소프트웨어 명령어를 병렬로 실행할 수 있도록 한다. 이는 더 높은 클럭 주파수에 의존하지 않고도 단순한 성능 확장을 가능하게 하기 위함이었다.

 VLIW의 뿌리 
1989년까지 HP의 연구원들은 축소 명령어 집합 컴퓨터 (RISC) 아키텍처가 사이클당 명령어 하나라는 한계에 도달하고 있음을 인식했다. 그들은 나중에 EPIC으로 명명된 새로운 아키텍처에 대한 조사를 시작했다. 이 연구의 기반은 VLIW였는데, VLIW에서는 여러 연산이 각 명령어에 인코딩된 다음 여러 실행 장치에 의해 처리된다.

EPIC의 목표 중 하나는 명령어 스케줄링의 복잡성을 CPU 하드웨어에서 소프트웨어 컴파일러로 옮기는 것이었다. 컴파일러는 명령어 스케줄링을 정적으로 (추적 피드백 정보의 도움을 받아) 수행할 수 있다. 이는 CPU 내부에 복잡한 스케줄링 회로가 필요 없게 하여 공간과 전력을 절약하고 추가 실행 자원을 포함한 다른 기능에 활용할 수 있게 한다. 마찬가지로 중요한 목표는 컴파일러를 사용하여 병렬 실행을 위한 추가 기회를 찾고 활용함으로써 명령어 수준 병렬성 (ILP)을 더욱 활용하는 것이었다.

VLIW(최소한 초기 형태)는 주류가 되는 것을 막는 몇 가지 단점이 있다:
 VLIW 명령어 집합은 구현 간에 하위 호환되지 않는다. 더 넓은 구현(더 많은 실행 장치)이 구축될 때, 더 넓은 기계를 위한 명령어 집합은 이전의 좁은 구현과 하위 호환되지 않는다.
 CPU 캐시와 DRAM을 포함하는 메모리 계층 구조의 로드 응답은 결정론적 지연을 갖지 않는다. 이로 인해 컴파일러에 의한 로드 명령어의 정적 스케줄링이 매우 어려워진다.
EPIC 아키텍처는 VLIW 아키텍처에서 발전했지만, 슈퍼스칼라 아키텍처의 많은 개념을 유지했다.

 VLIW를 넘어서 
EPIC 아키텍처는 VLIW의 단점을 극복하기 위해 몇 가지 기능을 추가한다:
 여러 소프트웨어 명령어 그룹을 번들이라고 한다. 각 번들에는 다음 번들에 의해 이 연산 집합이 의존하는지 여부를 나타내는 스톱 비트가 있다. 이 기능을 통해 향후 구현에서는 여러 번들을 병렬로 발행할 수 있다. 종속성 정보는 컴파일러에 의해 계산되므로 하드웨어는 피연산자 종속성 검사를 수행할 필요가 없다.
 소프트웨어 프리페치 명령어는 데이터 프리페치의 한 유형으로 사용된다. 이 프리페치는 로드에 대한 캐시 적중 가능성을 높이며, 캐시의 다양한 수준에서 필요한 시간적 지역성의 정도를 나타낼 수 있다.
 추측성 로드 명령어는 데이터가 사용될지 (제어 종속성을 우회) 또는 사용되기 전에 수정될지 (데이터 종속성을 우회) 알려지기 전에 추측적으로 데이터를 로드하는 데 사용된다.
 체크 로드 명령어는 추측성 로드가 나중의 저장에 의존했는지 여부를 확인하여 추측성 로드를 돕고, 따라서 다시 로드해야 하는지 확인한다.

EPIC 아키텍처는 또한 ILP를 높이기 위한 아키텍처 개념을 포함한다:
 예측 실행은 분기의 발생을 줄이고 명령어의 투기적 실행을 높이는 데 사용된다. 이 기능에서는 분기 조건이 예측 레지스터로 변환되어 실행된 명령어의 결과를 취해지지 않은 분기 측에서 제거하는 데 사용된다.
 일반 목적 레지스터 내의 not a thing 비트를 사용하는 지연 예외는 가능한 예외를 지나 투기적 실행을 허용한다.
 매우 큰 아키텍처 레지스터 파일은 레지스터 이름 변경의 필요성을 피한다.
 다방향 분기 명령어는 여러 대안 분기를 하나의 번들로 결합하여 분기 예측을 개선한다.

아이테니엄 아키텍처는 또한 회전 레지스터 파일을 추가했는데, 이는 수동으로 언롤링하고 레지스터 이름을 변경할 필요가 없기 때문에 소프트웨어 파이프라이닝에 유용한 도구이다.

 기타 연구 개발 
아이테니엄 아키텍처 개발과 직접적으로 관련되지 않은 EPIC 아키텍처에 대한 다른 연구가 있었다:
 웬메이 후가 이끄는 일리노이 어배너-섐페인 대학교의 IMPACT 프로젝트는 이 주제에 대한 많은 영향력 있는 연구의 원천이었다.
 HP-labs의 PlayDoh 아키텍처는 또 다른 주요 연구 프로젝트였다.
 젤라토는 학술 및 상업 연구자들이 아이테니엄 서버에서 실행되는 리눅스 응용 프로그램을 위한 보다 효과적인 컴파일러를 개발하기 위해 노력한 오픈 소스 개발 커뮤니티였다.

 같이 보기 
 복잡 명령어 집합 컴퓨터 (CISC)
 축소 명령어 집합 컴퓨터 (RISC)
 MISC
 VLIW
 NISC
 단일 명령어 집합 컴퓨터
 컴퓨터 구조
 슈퍼스칼라
 와이드 이슈

 각주 

 외부 링크 
 EPIC의 역사적 배경
 Mark Smotherman (2002) "EPIC 아키텍처 및 구현 이해"

분류:명령어 처리