벤치리뷰·뉴스·정보/아키텍처·정보분석

[아키텍처] Core Microarchitecture 속도의 비밀은 CISC의 아름다움

tware 2006. 6. 26. 23:00

 

실은 큰 아키텍처 혁신인 Core MA

 Intel은 드디어 새로운 CPU 마이크로 아키텍쳐 "Core Microarchitecture (Core MA)"를 기반으로 하는 차세대 CPU 군을 발표하기 시작했다. 서버 전용의 "Xeon 51xx (Woodcrest : 우드크레스트)"에 이어, 데스크탑 전용의 "Core 2 (Conroe : 콘로)", 모바일 전용의 "Core 2 (Merom : 메롬)"이 향후 수개월에 연이어 등장한다. Intel은 Core MA의 성능 / 소비 전력에 강한 자신감을 가지고 있으며, 이것으로 최근의 하락을 단숨에 회복할 생각이다.

 성능 / 소비 전력 (전력당 성능)으로는 강력한 장점의 Core MA. 그러나 그 비밀의 근원은 별로 이해되지 않았다. Intel이 체계적인 설명을 별로 하지 않았기 때문이다. 따라서 Core MA는 "섬세한 절전력 기술의 집합체에, 근본적인 마이크로 아키텍처 혁신으로는 보이지 않는" 혹은 "Banias (Pentium M)의 베이스가 된 P6(Pentium Pro / II / III) 아키텍처를 확장했을뿐 "이라고 자주 말한다.

 그러나 아마 이것은 모두 옳지 않다. Core MA는 명확하게 P6이나 NetBurst (Pentium 4)와는 다른 사상을 가지고, 마이크로 아키텍처가 근본적으로 혁신되어 있기 때문이다. 그것을 상징하는 것은, 내부 명령 (Micro Operations : uOPs)의 아키텍처다. Core MA와 NetBurst에서는, 이것이 근본적으로 다르​​기 때문에, 파이프 라인의 구조가 완전히 다르게 되어 있다.

 또 Core MA는, 그 앞으로 계속되는 새로운 아키텍처 노선의 제 1 스텝에 불과하다. Core MA의 앞에는, P6/NetBurst와 반대 방향으로 성장. 보다 급진적 미래 마이크로 아키텍처가 전망된다. 실제, Core MA의 특징적인 테크닉의 일부는, Core MA를 개발한 Intel 이스라엘 소속한 연구자가 몇년 전 발표한 "Power AwaReness thRough selective dynamically Optimized Traces (PARROT)"아키텍처의 논문 속에서 이미 보였다. 새로운 사상에 기반하는 마이크로 아키텍처의 골은 앞서 보이고 있으며, 그 최초의 스텝이 Core MA라고 생각하는 것도 가능하다.

 그러면 Core MA는 무엇이 NetBurst와 다른가? 그것은 "CISC (Complex Instruction Set

Computer)"인 점이다.

 

 

CISC의 이점을 파이프 라인에 활용한 Core MA

 

 

 

Intel의 Bob Valentine

 

 "Core MA의 중요한 점은 CISC의 아름다움(beauty = 이점)을 파이프 라인에 들여온 것에 있다"고 말한 것은 Intel의 Bob Valentine (밥 발렌타인)씨 (Senior Architect, Intel Architecture Group). Valentine 씨는 Intel의 차세대 마이크로 아키텍처 "Core Microarchitecture (Core MA)"의 디코더 부분의 아키텍처를 개발한 아키텍트. 즉, Core MA의 요점(요소)이 되는 명령어 디코더를 가장 잘 아는 인물이다. 그리고 그가, Core MA의 비밀은 CISC 명령어 세트 아키텍처 (ISA : Instruction Set Architecture)의 이점을 들여온 것에 있다고 말한다.

 CISC 운운은 조금 들어본 정도라고 묘한 이야기​​로 들릴지도 모른다. x86 계는, 전형적인 CISC계 ISA이기 때문이다. 그러나 잘 알려져 있는 것이지만, CPU 마이크로 아키텍처가 되면 얘기가 다르다. P6/NetBurst는, x86 명령을 CPU 내부에서 RISC (Reduced Instruction Set Computer)형의 uOPs로 변환하고 있기 때문이다. P6 이후 Intel의 IA-32 계 마이크로 아키텍처의 최대의 포인트는, RISC형의 (작고 단순한) 명령으로 분해, RISC 기술을 도입해서 고속화하는 것에 있었다. 하지만, Core MA는 그것을 부정한다. "(Core MA는) 더 이상 내부 RISC 프로세서가 아니다 (it 's no longer RISC Processor ​​inside)" 라고 Valentine 씨는 말한다. (펜티엄까지는 CISC형 x86 명령을 그대로 실행. P6부터 복잡한 명령인 CISC를 여러개의 작은 내부 RISC형 명령으로 분해해서 실행. P6부터 명령변환 + 슈퍼스칼라 + 아웃 오브 오더를(비 순차 실행) 도입. 486은 마이크로 코드 경유를 축소해서 동클럭 성능을 증가. 486까지는 스칼라 프로세서로 동시에 1명령 실행. 펜티엄은 슈퍼스칼라로(여러개의 파이프라인에서 명령을 동시 실행, 펜티엄은 최대 2개의 명령을 동시에 실행. 말 그대로 최대. 항상 2 명령은 아님. 명령의 종류에 따라서 최대 2개) 동클럭 성능을 증가. 다른 기사에서 인텔이 아닌 타사의 얘기지만, 순수 슈퍼스칼라는 2명령 정도가 한계로, 3명령 동시에 실행하도록 만들어도 실제 효용이 없다고 합니다. 그러니까 펜티엄 프로에서는 슈퍼스칼라 + 명령변환 (명령 분해) + 아웃 오브 오더를 사용했죠.)


 대충 말하자면, (P6 펜티엄 프로 부터) NetBurst까지 Intel CPU는, CISC의 피부를 쓴 RISC형 CPU 였다. 반면 Core MA에서는, 알맹이도 상당 부분까지 CISC형이 되었다. 알맹이를 전부 CISC로 돌린것은 아닌, 어느정도 CISC형의 uOPs를 채용했다는 의미지만, 방향성이 완전 반대인 것은 확실하다. 바꿔 말하면, RISC형이 훌륭하다는 사상을 부정하고, CISC형에 이점이 있다는 사상을 채용한 것이 Core MA가 된다.

 Intel이 RISC형 -> CISC형으로의 전환을 도모한 이유는 명쾌하다. NetBurst에서는 RISC 형 uOPs를 채용했기 때문에, RISC의 난점도 파이프 라인에 들어와 버렸다고 Intel이 생각하기 시작했기 때문이다. 최대의 난점은, 성능 / 소비 전력으로 (전력당 성능비율), Intel CPU가 비효율적이 되고, 소비 전력이 증대한 원인은 RISC화에 있었다고 Intel은 본다. 그래서 Core MA에서는, 이를 전환하는 것으로, 성능 / 소비 전력을 극적으로 향상시키는 것에 성공했다는 의미다.

이 의미를 명확하게 하려면, 일찍이 CISC 대 RISC의 ISA 논쟁까지 거슬러 올라갈 필요가 있다.

 

 

 

Core Architecture Block Diagram

 

 

자원이 적은 시대에 적합했던 CISC 아키텍처

 CISC의 특징으로 일반적으로 말하는 것은, 명령 수가(종류) 많은, 복잡한 처리를 행하는 명령이 많은, 명령 길이가 가변이며, 명령 포맷이 복수 있고, 메모리 - 레지스터 간 연산이 있는 것 등. (명령의 종류가 많다는 것은 처리 할 명령은 적다는 얘기 입니다. CISC의 복잡명령 1개로 처리되는 것을 RISC의 단순 명령을 2~3개로 처리해야 되기 때문이죠. RISC는 다 단순명령이고 명령의 종류가 적죠. CISC는 단순 명령도 있고, 복잡한 명령도 있고, 그래서 명령마다 길이가 다르고 (가변길이), 명령어 마다 처리 시간도 다 제각각인 것이구요. RISC는 반대죠. 그러니까 x86의 경우 외부로는 그대로 x86명령을 쓰니까 (CISC형) 호환이 되면서도 내부적으로는 복잡명령을 여러개의 단순명령으로 분해해서 동시에 처리하는 식으로 성능을 높여온 겁니다. 프로그램으로 치면  외부 인터페이스 (각종 버튼 위치나 메뉴 구성 등)는  똑같은데  내부적으로는 처리 방식을 다 바꿔서 성능을 높였다 이런거랑 비슷하다고 할 수 있겠죠.)

 

 이러한 CISC의 특징은 컴퓨터의 역사에 유래한다. CISC가 태어난 시점에서 어셈블러 코딩이 전제로, 프로그래머의 생산성을 높이기 쉬운 ISA를 정의할 필요가 있었다. 따라서 인간이 다루기 쉽도록 명령 종류를 늘려, 코딩시의 명령 스텝 수를 줄였다.


 그리고 CISC의 특징은 당시의 하드에도 지향하고 있었다. 명령 스텝 수의 절감에 의한 프로그램의 코드 크기의 절감은, 고가였던 메모리의 절약도 됐다. 또 CPU의 페치 대역도 절약​​되었다. 즉, CISC는 원래, 하드웨어 자원이 한정되어 있던 시대에 적합했다는 의미다. CISC의 이러한 방식은 80년경 까지는 잘 움직이고 있었다.

 그런데, 반도체 기술의 진보와 프로그래밍 환경의 변화에​​ 의해서 상황이 달라지기 시작했다. 메모리는 싸게되는 한편에, 고급 언어의 보급에 의해서 ISA를 복잡하게 하는 필연성이 옅어졌다. 또 칩의 집적도의 향상과 함께, CPU의 마이크로 아키텍처는 파이프라인 처리 (연속 명령 실행. 각 단계별로 연속해서 명령이 처리 됨. 기존에는 1명령이 끝난 이후에 새로운 명령이 들어와서 처리. 공장 컨베이어 벨트로 설명하면, 예전의 CPU들은  만들 제품이  투입되어서 컨베이어 벨트 끝에서 완성되면, 또 다른 제품이 들어오는데, 파이프라인 처리 방식은   컨베이어 벨트에 연속으로 계속 제품을 투입하고, 각 단계마다 각자의 부품을 조립하고 끝에서 완성되는 형태. 그러니까 구형 CPU들 비교할 때 이런게 완전 다른 CPU를 가지고 단순 클럭으로 비교해서 성능을 비교할 수 없습니다. 예전 CPU들은 파이프라인화가 되어 있는 CPU가 있고, 안되어 있는 CPU가 있기 때문에요. 이후에는 파이프라인 갯수(명령 실행 포트)가 몇개나 되는가? 거기에 디코더가 몇개의 명령을 동시 디코딩 할 수 있냐? 이런걸 알아야 성능을 비교할 수 있게 되구요.) 등이 등장하고, 고속화로의 길이 열렸다.


 그래서 잘 알려진것 처럼, 고급 언어에서 컴파일 된 오브젝트 코드를 고속으로 움직이도록 특화한  CPU를 만들자는 아이디어가 부상했다. 그 원류는 30년 전의 IBM "801 Project"로, 거기에서 잇달아 SPARC, MIPS, PowerPC, Alpha 등의 RISC 아키텍처가 태어났다.

 

 

CISC 대 RISC의 장점과 단점

(같은 일을 할 때 CISC와 RISC의 차이. CISC는 명령의 종류가 많은 만큼(복잡한 명령이 있음) 적은 명령으로 처리. RISC는 명령의 종류가 적은 만큼(단순 명령만 존재) CISC CPU가 하나의 명령으로(복잡한 명령) 처리하는 일을 단순 명령 여러개로 처리해야함. 명령어 자체의 처리는 아닌, 데이터 처리의 문제이지만 SIMD (AVX,SSE,MMX) 명령과 기존의 X86 명령의 차이와 비슷하다고 볼 수 있겠죠. x86 명령을 여러번 실행해서 처리해야할 일을 SIMD 명령을 쓰면 1명령으로 여러 데이터의 동일한 연산을 한번에 연산 할 수 있죠. 다들 아시다시피 SIMD 명령을 적극적으로 쓸 수 있으면 매우 빠르게 처리 할 수 있죠.

 

예전 PC잡지 에서 CISC와 RISC를 쉽게 설명을 할 때 다음과 같은 식으로 설명을 했던 것 같네요. 철수야 개똥이네 집에가서 물건을 받아서 영희네 집에 주고 오렴  이라고 명령을 내리는게 CISC CPU.  철수야 개똥이네 집에 가라, 물건을 받아라, 영희네로 가라, 물건을 주고 와라 이런식으로 명령을 내리는게 RISC, 라구요.)

 

[분석정보] x86을 고속화하는 조커기술 명령변환 구조

 

 

[분석정보] IDF 2007 Penryn 벤치마킹 세션 리포트

 

 

늘어난 자원을 활용한(살리는) RISC 아키텍처

 RISC에 공통되게 말하는 사상은, 고급 언어를 전제해서, 단순하고 적은 명령으로 제한(명령의 종류가 적음), 명령 길이를 고정하고, 명령 포맷도 제한한다. 메모리 액세스는 데이터의 로드(Load)계 명령과 스토어(Store)계 명령에 한정하고, 연산 명령은 레지스터 간의 연산에 한정한다. 명령 디코드를 빠르게 해, 간단한 명령을 파이프 라인에서 고속으로 실행되도록 한다. 실제로는 예외도 있지만, 기본적인 아이디어는 위처럼 말한다.


 RISC ISA는, 소프트웨어(컴파일러)에 의한 정적 스케줄링과 하드웨어에 (CPU 내부 스케줄러) 의한 동적 스케줄링 모두 쉽게한다. 예를 들면, 레이턴시가 긴 메모리에서 로드를, 전에 스케줄링 하는 것으로, 로드 레이턴시를 은폐하는 것이 가능했다. 의존성이 없는 명령끼리 병렬로 실행시키는 것도 쉽게된다. 그 결과, 슈퍼 스칼라와 아웃 오브 오더(out-of-order)실행등의 적용이 쉬워진다. 따라서 RISC는 눈부시게 성능을 늘릴 수 있었다.


그러나 RISC에도 난점이 있었다. 그것은 하드웨어 자원을 필요로 하는 것이다. 정적인 (처리해야 할) 명령 수가 늘기 때문에 프로그램 메모리 용량이 증가해서, 보다 많은 실제 메모리를 필요로 한다. 동적으로는, 같은 처리에 필요한 명령 스텝 수가 CISC보다 늘어나기 때문에, 명령 실행 사이클이 늘어난다. 따라서 같은 시간내에, CISC와 동등하거나 그 이상의 처리를 하기 위해서는, 단위 시간에 보다 많은 명령을 실행 가능하도록, 하드웨어 측면의 연구가 필요하다. 그 점도 자원을 소모한다 (회로를 쓰게된다. 더 많은 회로가 필요. IPC를 높이려면 더 많은 실행 포트 (파이프 라인) 갯수가 필요. CPU가 커짐.).

 예를 들면, 슈퍼 스칼라에서 보다 많은 명령을 병렬로 실행하려면, CPU에 넓은 명령어 페치 대역과 파이프라인 대역이 필요하게 된다. 슈퍼 파이프라인으로 CPU를 보다 고속으로 돌리려면, 보다 세분화 된 (슈퍼 파이프라인은 보다 더 단계 수가 많은, 깊은,긴 파이프 라인. 클럭을 높일 때 각 파이프 라인을 길게해서 클럭을 보다 쉽게 올림. 다만 이렇게 클럭을 올리려고 해도 많은 레치 회로가 필요. 즉 CPU가 커짐.) 파이프 라인이 필요하다. 이러한 마이크로 아키텍처의 확장도 자원을 필요로 한다. 즉, RISC는 일반론으로는, CPU의 성능을 올리는 대신에, 자원도 필요로 한다 (CPU회로가 복잡하고 커져야 함). 실제로는, ISA나 마이크로 아키텍처의 개량의 결과, 반드시 그런 단언은 없어졌지만, CISC 대 RISC 논쟁 때는 이렇게 말한다.

 


성능 / 소비 전력의 시대에 의문시 되는 RISC형 x86 CPU 아키텍처

 CISC 대 RISC에서 격렬한 논쟁이 달아 올랐던건 386부터 Pentium Pro (P6) 전까지의 시대였다. 그리고 P6 아키텍처는 어떤 의미에서 이 논쟁에 종지부를 찍​​었다. P6가 CISC 형의 x86 명령을, RISC 형의 내부 명령 (uOPs)으로 변환하는 방식을 취했기 때문이다. RISC형 uOPs를 사용하는 것으로, P6는 슈퍼 파이프라인, 슈퍼 스칼라, 아웃 오브 오더 실행 등, 당시의 RISC의 첨단 테크닉을 거의 수중에 넣었다.


 Intel은 RISC의 장점을 인정해서, 그것을 적극적으로 도입하는 것으로, CISC의 문제점으로 지적 되었던 부분을 극복한 셈이다. ISA 자체는 바꾸지 않고, CPU의 속에서 RISC형으로 변환하면 좋다고 하는 것이 Intel이 낸 대답이었다. 이 방식은 디코드 때의 명령 변환의 오버헤드는 있지만, 높은 성능을 달성 할 수 있었다.

 

매일경재 1995년 11월 3일 기사 경쟁 프로세서 현황

 

매일경재 1995년 11월 3일 기사 베일 벗은 차세대 프로세서 인텔 '펜티엄 프로' 컴퓨터 CPU 천하통일 굳히기

 

매일경재 1995년 12월 8일 기사 프로세서 전쟁 인텔 아성에 후발사 도전장

 

test.pdf

MICROPROCESSOR REPORT Intel Boosts Pentium Pro to 200 MHz. Integer Performance Beats the Best RISCs.  1995년 펜티엄 프로 (Pentium Pro) 성능 PDF 파일

 

24276806.pdf

1997년 펜티엄 프로 200Mhz 512kB & 256kB & 180Mhz 256kB 캐시, 펜티엄 200Mhz 512kB 캐시 제품 윈도95& 윈도NT 성능.

 

[고전 2005.11.30] 마이크로 아키텍처의 변화를 반영하는 "Core"브랜딩

 

[고전 1997/08/19] 인텔, 1MB의 L2캐시를 탑재한 Pentium Pro 200MHz를 출하

 

[고전 1998.06.10] Pentium II Xeon으로 서버 시장이 바뀐다

 

[고전 1998.06.19] PC EXPO : 컴퓨터 메이커의 생존을 건 새로운 패러다임 "Xeon"서버

 

[고전 1998/06/30] 인텔, 서버용 CPU Pentium II Xeon 공식 발표

 

[고전 1999/03/18] 인텔, 서버 / 워크스테이션용 CPU, Pentium III Xeon 발표


그 결과 점차 CISC 대 RISC 논쟁은 수습되어 간다. 그렇지만, RISC형 변환은 Intel 만의 독창은 아닌, 당시는 AMD의 "K5"나 NexGen의 "Nx586"등 유사 아키텍처의 CPU가 일제히 등장했다. Intel은 선구가 아닌 CPU 업계 전체의 기술 트렌드에 따랐을 뿐이었다.


 P6의 RISC형 uOPs 기법은, 차기 NetBurst (Pentium 4 / D) 아키텍처에도 확장되어 계승되었다. NetBurst에서는 명령 캐시가 x86 명령이 아닌 RISC형 uOPs를 격납하는 트레이스 캐쉬가 되어, 점점​​ RISC형의 스테이지가 늘었다. RISC 화가 도착한 것이 NetBurst 였다.

 CISC -> RISC 변환 방식은, 이렇게 x86 CPU에서 꽃피어 갔지만, 공정 기술이 0.13μm(130nm)에 도달한 때부터 문제가 떠올랐다. 공정을 미세화해도 전력이 내려가지 않으며, CPU의 성능 / 전력 효율이 가장 중요해지기 시작했기 때문이다. 그리고, NetBurst의 효율이 나쁜 이유중 하나는, RISC형 uOPs로 변환한다는 점에 있다고 Intel은 생각했다.

 NetBurst에서는 프론트의 디코더에서 CISC x86 명령에서 RISC형 uOPs로 변환해서 이후는, 파이프라인 안은 항상 RISC형 uOPs 단위로 다룬다. RISC형 uOPs로 분해하는 것으로, CISC 때 보다도 (처리해야 할) 명령수가 늘어나기 때문에, 파이프 라인 내부에서는 명령 슬롯이나 명령 제어 등의 CPU의 자원이 방대하게 필요하다. 파이프 라인 전반에 걸쳐서 자원을 먹기에, 이것은 사소한 것이 아닌 양이다. CPU가 비대화하는 최대의 원인이라고 말한다.

 NetBurst에서는, 파이프라인 안은 3 uOPs / 사이클의 대역이므로, 원래의 CISC의 x86 코드로 환산하면, 병렬도는 3명령 / 사이클 이하가 된다. 그래서 NetBurst에서는 파이프 라인을 세분화해서, 고클럭으로 돌리는 것으로, 3 uOPs / 사이클 대역에서도 성능을 얻었다 (IPC가 높지는 않지만 클럭에 의해서 ipc x 고클럭 = 성능을 얻음). 그러나 파이프라인을 세분화 함으로써 자원을 써버리고 말았다.(래치회로 늘어남. 그렇게 파이프라인 단계를 늘림. 파이프 라인 단계를 늘리면 고클럭에 유리. AMD도 쪽도 불도저 아키텍처 계열이 이전 k8 계열 아키텍처에 비해서 파이프 라인 단계가 깊음(김). 클럭도 높죠. 근본적인 IPC도 낮춘 것도  프레스캇과 동일...;;;;. 본격 저 IPC 고클럭 아키텍처;;;; 다만 이런 방식이 무조건 나쁘다는 뜻은 아닙니다. IPC가 낮아도 고 클럭으로 성능을 내나, IPC는 조금 더 높지만, 클럭이 낮은 CPU랑  누가 더 좋다 나쁘다 할 수가 없죠. 결국 최종 성능이 높은 CPU가 좋은 CPU입니다. 다만 문제는 고 클럭도 시대에 따라서 적당히 높게 가야지, 너무 높게 가면, 전력과 발열을 현실적으로 감당할 수가 없습니다. 그러다 보니 더욱 고클럭 지향 CPU가 나쁜 CPU 쪽으로 인식되는 거죠. 적당히 IPC와 고클럭을 잘 조율해서 만들어야 된다는 거죠.)

 심하게 말하면 NetBurst에서는 RISC형 uOPs 변환을 추구했기 때문에, 파이프라인 안에서는 자원을 먹는다는 RISC의 난점도 질질 끌어버린 것이다. 그리고, 자원은 소비 전력으로 환산된다. CPU의 소비 전력이 허용범위 안쪽이던 시대는, 그것도 허용 할 수 있었다. 그러나 CPU의 소비 전력이 천장에 도달하고, RISC 변환으로 생기는 낭비는 짐이 되기 시작했다. (프레스컷 부터... 노스우드 20 단계, 프레스컷 31단계로 훨씬 긴 파이프라인, 여기에 추가로 인텔 90나노 공정의 전력누수 문제. 2003년의 노트북용 베니어스는 짧은 파이프라인으로 IPC도 괜찮고, 전력대 성능비도 좋음. 90나노인 펜티엄M 도선의 경우도 베이어스랑 마찬가지...  아주 간단히 말하면 파이파인이 단계가 길면 (파이프 라인 숫자가 많은게 아닌). 고클럭화 유리, 파이프라인 스테이지를 나누기 위해서 레치회로 증가 (회로가 필요), 최초 첫 명령 실행 레이턴시가 길어짐 등이 있습니다. 파이프 라인 단계마다 명령이 줄줄이 있으니까 첫 명령 이후는 별 문제가 없구요. 다만 분기 예측 실패시 31단계를 다시 처리해서 나와야 합니다. 모 물론 이런 레이턴시가 길어지는 것은 그 만큼 1.5배 이상 2배로 클럭을 올린다면 실제 시간 기준으로 레이턴시가 늘어지지는 않겠죠. 클럭을 기준으로 하면 늘어지지 만요. 물론 이런식이 아니더라도, 기존 노스우드를  물리적 재 설계를 통해서도 클럭을 올릴 수는 있습니다. 흔히 xx 스테핑이 오버가 잘된다, 발열이 줄었다.  이런게 그런 겁니다. 다만 아예 파이프라인을 더 길게 (많은 단계) 만드는 거에 비하면 한계가 있죠.)

 


RISC하지 않는 것이야 말로 Core MA의 최대의 포인트

Core MA에서는, 이 문제를 "RISC형으로 분해하지 않는 것"으로 해결한다. Intel은 무엇이라도 이름을 붙이기에, 이것에도 "Micro-OPs Fusion (최근에는 Micro-Fusion 이라고 부른다)" 이라 붙였다. Micro-OPs Fusion은 Banias (베니어스) 마이크로 아키텍처 (Pentium M)에서 채용되어, Core MA에서 거의 완전한 모습이 되었다. Banias 보다 Core MA 쪽이, 보다 많은 x86 명령을, 1개의 Fused uOPs로서 다루는 것이 가능하다.

 

 

인텔 CPU의 uOPs 변화

 

알려진대로, Fusion(융합)이라고 부르는 것은, 복수의 RISC형 uOPs을 1개의 uOPs로 융합 시킨다는 개념이다. 그래서 Core MA 에서의 복합 uOPs는 "Fused uOPs"라고 부른다. 그러나 실상은 비교적 간단하게 CISC 형 x86 명령을 1 대 1로 Fused uOPs로 변환하고 있는 것에 지나지 않는다. 즉, CISC 명령을 분해하지 않는 것이 Micro-OPs Fusion의 본질이다.

"Micro-Fusion에서는 CISC 명령(의 변환)을, 보다 복잡한 포맷의 uOPs로 지켜, 적은 uOPs 수를 유지한다. 이에 따라서, C dynamic (동적 캐퍼시턴스)를 낮게 유지하고, 소비 전력을 억제한다"

 "Core MA에서는 다소 복잡한 x86 명령, 예를 들면, "레지스터 - 메모리 간의 더하기 (ADD Register, Memory) " 가 (Fused uOPs로) 가능하다. 이러한 오퍼레이션을 (uOPs로 분해하지 않고) 하나의 번들로 정리한다. 그래서 더 이상 내부 RISC 프로세서는 아니다. 그러나 (완전히) CISC 라는 것도 아니다. 보기에 따라서는, 매우 심플한 CISC 생각하는 것도 가능하다. 공통인 2개의 uOPs을 하나의(Fused)uOPs로 정리해 버리기 때문이다 "라고 Valentine은 말했다.

 즉, Core MA에서는 Micro-OPs Fusion에 의해서, 기존이면 복수의 RISC형 uOPs로 분해했던 x86 명령을, 1개의 Fused uOPs로 변환한다. Fused uOPs는 복수의 uOPs를 포함, 어떤 의미로는 CISC형의 구조가 된다. 예를 들어, 레지스터 - 메모리 사이의 더하기의 예라면, 기존의 RISC형 uOPs에서는, 메모리에서 레지스터로의 로드 uOP와 레지스터 사이의 가산 uOP의 2개로 분해 되었다. Core MA에서는 그것을 1개의 Fused uOP로서  정리해 다룬다는 의미다.

 따라서 RISC형 uOPs로 분해하던 때와 비교하면, 파이프 라인 내부의 uOPs 수를 크게 줄이는 것이 가능하다. 그 결과, 파이프라인의 회로 규모가 줄어서, 전력을 소비하는 다이나믹 캐퍼시턴스를 늘리지 않고, IP​​C (instruction per cycle : 1 사이클에서 실행 가능한 명령 수)를 높이는 것이 가능하게 되었다는 의미다.

 

 

Micro-op 감소

 

 

마지막 순간만 RISC형 uOPs로 실행

 다만 파이프라인을 통해서 CISC형 uOPs로 하면, CISC의 x86 명령을 네이티브 실행하는 것과 같아져, 고속화가 어렵게 된다. 레지스터 - 메모리 사이의 더하기의 예라면, 메모리로 부터의 데이터를 기다리는 사이, 실행 유닛이 아이들 상태가 된다. 그래서 Core MA는 최후의 순간에 Fused uOPs를 분해한다.

 "Micro-OPs Fusion 에서는(x86 명령을)복잡한 Fused uOPs로 디코딩 한다. Fused uOPs로 융합된 uOPs는, 각 클럭 사이클마다 동행한다 (파이프 라인을 흐른다). 그러나 실제로는, 실행 자체는 2 uOPs로서 진행된다. 다시 스케쥴을 진행하고 나서 실행하며, 여전히 아웃 ​​오브 오더 형 머신인 채다"라고 Valentine 씨는 말한다.

Core MA에서는, 실행 유닛 군에 uOPs를 발행하는 직전까지에, CISC형의 Fused uOPs로 두고, 마지막 순간에 간신히 RISC 형의 uOPs로 분해한다는 의미다. RISC의 이점은 역시 활용하지만, RISC형 uOPs로서 다루는 스테이지를 가능한 한 적게 한다.

Valentine 씨에 의하면, 각 실행 유닛에 각각 리져베이션 스테이션이 설치 되어 있다고 한다. Fused uOPs의 분해와 재스케줄링이 처리되는 것은, 그 직전으로 보인다. 분해된 uOPs는, 리져베이션 스테이션에서 대기해서, 실행 가능한 조합으로 발행된다. 생각하기에 따라서는 "x86 명령 -> Fused uOPs -> uOPs"로 2 단계로 디코딩 된다고 보는 것도 가능하다. 그렇지만 실제로는 최초의 디코드의 단계에서, 후단에서 분해되기 쉽도록 포맷된다고 한다.

Core MA에서는 4개의 x86 명령을 1사이클로 디코딩해서, 4 uOPs / 사이클의 파이프라인 대역으로 돌리는 "Wide Dynamic Execution"이 강조된다. 그러나 이렇게 보면, 그 이전에 내부 명령이 Fused uOPs가 되는 것으로, 보다 고효율이 되는 것을 알 수 있다. NetBurst에서는 3 uOPs / 사이클. 그런데, Core MA에서는 4 Fused uOPs / 사이클이므로, uOPs로 환산하면 피크 uOPs / 사이클은 훨씬 많아진다. 즉, NetBurst -> Core MA는 3이 4가 되는 이상으로 큰 차이가 존재한다.

이렇게 보면, Core MA의 파이프라인에서는, 가능한 한, CISC 형의 아키텍처를 유지하려고 하는 것을 알 수 있다. RISC 형으로 바꾸는 것은 최소한. 이것은 CISC 부분은 파이프 라인 안에서 최소한으로 멈추고, 가능한 한 RISC 하려던 NetBurst와는 정반대다. NetBurst까지 RISC의 이점을 활용하는 것을 주 목적으로 했지만, Core MA에서는 발상을 전환해서, CISC의 이점을 활용하고 있다.

 CPU 마이크로 아키텍처의 요점인 uOPs. 그 uOPs에 착안하면, Core MA는 지금까지의 Intel CPU와 정반대의 방향으로 향한 아키텍쳐인 것을 잘 알 수 있다. AMD는 K7/K8 아키텍처에서, 이미 어느정도 비슷한 방향으로 향했다. 이것 또한 트렌드로, CISC 대 RISC의 논쟁이 아득히 뒤로 멀어진 곳에서, 흔들렸던 CISC로 다시 되돌아온 시대가 찾아온 것 같다.

 

 

The Computer Chronicles - Reduced Instruction Set Computer (RISC) (1986)

https://youtu.be/DIccm7H3OA0

 

 

The Computer Chronicles - Programming (1984)
https://youtu.be/D5osk9lrGNg

 

The Computer Chronicles - Programming Languages (1990)

https://youtu.be/TcrmLfQx_to

 

 

[고전 2004.11.08] Intel CPU의 미래가 보이는 PARROT 아키텍처

 

 

[고전 2004.11.09] 전력 효율성에 초점을 둔 인텔 연구개발 (PARROT)

 

 

[고전 2005.11.30] 마이크로 아키텍처의 변화를 반영하는 "Core"브랜딩

 

 

[분석정보] 20년 후인 지금도 곳곳에서 살아남은 펜티엄 아키텍처

 

 

[분석정보] x86을 고속화하는 조커기술 명령변환 구조

 

 

[분석정보] 인텔(intel) CPU의 큰 이정표가 될 하스웰(Haswell) 드디어 등장

 

 

[정보분석] Penryn의 1.5 배 CPU 코어를 가지는 차세대 CPU "Nehalem"

 

 

[고전 2005.08.25] Intel이 차세대 마이크로 아키텍처 CPU를 공개

 

 

[분석정보] 명확해진 Core Microarchitecture

 

 

[분석정보] ARM버전 Windows로 시작된 x86 대 ARM의 CPU전쟁

 

 

[분석정보] 5W 이하의 저전력 프로세서의 개발로 향하는 Intel

 

 

[2000.08.25] 그래픽 통합 CPU 팀나(Timna)의 개요를 분명히-극적인 다이 크기 축소를 실현

 

[아키텍처] 환경 조건을 이용하여 성능을 끌어 올리는 터보 모드(전압 레귤레이터 전압 조절기)

 

 


[01년02월06일] 2010년 CPU 소비 전력은 600W?

 

 


[01년01월11일] Intel의 0.13μm 공정 P860/P1260에서 CPU는 어떻게 바뀌나

 

 


[01년01월17일] 10GHz CPU를 실현하는 Intel 0.03μm 트랜지스터 기술

 

 


[01년11월27일] 인텔 테라 헤르쯔 트랜지스터 기술 발표

 

 

 

[벤치리뷰] 인텔 코어2 듀오 제국의 역습