본문 바로가기

Fun,Fun,Fun

MMX Pentium 프로세서


MMX Pentium 프로세서 ( 166MHz )



MMX 는 인텔이 자사의 Pentium 프로세서용으로 개발한 SIMD형 확장 명령어 세트이다. 56개의 명령을 포함한다. MMX는 MultiMedia eXtensions 의 약자라는 설이 있었지만, 인텔은 약어가 아닌 한단어라고 말하고있다.


MMX는 x87FPU 레지스터를 전용하여 하나의 명령으로 동시에 여러 정수 연산 처리 SIMD형 명령 확장이다. MMX 레지스터는 FPU 레지스터를 공유 하기 위해 부동 소수점 연산 명령은 독점적으로 사용해야 한다. 운영 체제가 프로세스 컨텍스트를 저장할때에는 MMX 명령어를 사용하여 프로세스가 FPU 명령을 사용하는것과 마찬가지로 보일뿐만 아니라 레지스터를 저장하면 된다. DSP의 우수 분야인 음성, 화상, 동영상등 의 멀티미디어 관계의 처리를 CPU 에서 처리할때 성능 향상이 기대 되었지만, 응용 프로그램 소프트웨어 측이 MMX를 사용 하도록 프로그램 되어 있지 않으면 MMX에 의한 성능 향상의 혜택은 받을 수 없다.



후에 전용 레지스터를 사용 SSE 명령어 세트가 확장 되어 보다 복잡한 데이터 처리 및 부동 소수점 연산에도 대응한다. 실질적으로 MMX는 불필요해져 인텔은 응용 프로그램 개발의 최적화 에있어서 MMX 의 사용을 피하는 것을 권장 하고있다. SSE 명령어 탑재 이후 명령의 종류나 처리 능력에 떨어지는 MMX 명령어는 주로 과거의 자산과의 호환성을 목적으로 구현, 제공 되고 있다.


인텔은 우선 이미 출시했던 Pentium 새로운 버전 ( 코드명 P55C )에 MMX를 탑재, Pentium Processor with MMX Technology 라고 칭하고 발매했다. 일반적으로 MMX Pentium 이라는 호칭으로 침투했다. 인텔 은 이후에 발매한 IA-32 아키텍처 프로세서의 MMX를 탑재 하고있다. 또한 다른 제조 업체의 IA-32 호환 프로세서의 일부에도 탑재되고 있다. 예를 들면, AMD의 K6등이다. 인텔은 타사가 MMX 라는 명칭을 사용하는 것에 대해 이를 중지하라는 소송으로 발전 했지만, 결국 회사 사이에 합의 했다.




성과와 한계
MMX 는 원래 일반적인 애플리케이션에서 상용되는 일이 적은 부동 소수점 연산 레지스터의 유효 이용의 관점에서 발상 되었다. x87 명령어와 MMX 명령어와 섞을 경우 첫 번째 MMX 명령어를 실행할때 필요한 초기화가 자동으로 이루어 지는데, 그 후에 또한 x87 명령을 실행하면 그전에 EMMS 명령을 실행하여 상태 를 클리어 할 필요가 있다. EMMS 명령은 Pentium 는 수십 사이클을 요했다. 각각의 실행에있어서 레지스터의 상태는 유지 및 저장은 되지 않는다. 한편, 새롭게 전용 레지스터를 늘리지 않고 기존 x87의 레지스터를 공유 했기 때문에 컨텍스트 스위치 마다 신설 레지스터의 저장등의 운영 체제 지원을 기다릴 필요가 없었다.


또한 MMX 가속화 할 정수 연산 처리에 제한된 부동 소수점 연산 처리를 많이 사용하는 3D 그래픽 관련 처리 능력의 향상은 기대할 수 없다. 인텔과 경쟁 하는 AMD는 앞서서 부동 소수점 연산도 취급한 SIMD 확장 명령 세트 3DNow 을 발표 하고 회사의 K6 - 2 프로세서에 탑재했다. 인텔은 AMD 보다 부동 소수점의 SIMD 명령어 세트의 제공에 뒤졌다. 인텔의 부동 소수점 SIMD 연산에 의한 속도는 Pentium III 이상에 탑재되는 SSE에서부터 였다.


역사
1997 년 1 월 : 인텔 MMX Pentium 발표.
1997 년 4 월 : AMD 가 MMX에 대응한 K6 프로세서를 발표.
1997 년 5 월 : 인텔 Pentium Pro 에 MMX를 추가, 고속화한 Pentium II 프로세서를 발표.


경쟁기능 등장
1998 년 5 월 : AMD가 부동 소수점 연산 처리 속도를 3DNow 탑재의 K6 - 2 프로세서를 발표.


후계 기능 발표
1999 년 2 월 : 인텔이 부동 소수점 연산 처리 속도 Streaming SIMD Extensions 탑재, Pentium III 프로세서를 발표.