벤치리뷰·뉴스·정보/고전 스페셜 정보

[고전 1998.10.8] MPEG-2 인코딩까지 실현 가능한 Katmai의 신명령

tware 2005. 6. 10. 03:30


차세대 응용 프로그램을 위한 KNI

 

 "KNI (Katmai New Instructions 카트마이 뉴 인스트럭션 = SSE)의 목표는 응용 프로그램을 더 휴먼 인터랙션 (인간과의 상호 작용) 풍족하게 하는 것", "그것은 더 풍족한 3D 그래픽이나 MPEG-2 비디오 인코딩, 음성 인식 등이다 "

 

 9월 중순에 개최된 Intel의 개발자 컨퍼런스 "Intel Developer Forum (IDF)" 에서 Intel의 Ticky Thakkar 씨 (Principal Processor ​​Engineer)는 1999년의 새로운 MPU "Katmai (카트마이 : 코드명)" 와 "Tanner (태너 : 코드명, 펜3 제온)"가 지원하는 새로운 명령군 KNI의 목적을 이렇게 표현했다. KNI는 지금까지의 MPU로는 너무 무거웠던, 이러한 차세대 애플리케이션의 성능을 비약 시킨다고 한다. MMX와 마찬가지로 기존의 애플리케이션을 가속화 하는 기술이 아니라 어디까지나  KNI 대응의 차세대 애플리케이션을 고속화하는 기술이다.

 

 알버트 유 Intel 상급 부사장 겸 제너럴 매니저 (Microprocessor ​​Products Group)에 따르면, KNI에는 "Memory Streaming Architecture (메모리 스트리밍 아키텍처), 새로운 미디어 명령 (New Media Instructions : 뉴 미디어 인스트럭션), 그것에 SIMD-FP 3가지의 키 요소가 있다 "고 말했다. KNI에서 증가한 70개의 새로운 명령 (아직 자세한 것은 분명하지 않다)은 이 세 가지 요소로 크게 구분된다.

 


128 비트 레지스터를 신설한 SIMD-FP

 

 KNI의 3 요소 중에서도 가장 눈에 띄는 확장이 SIMD-FP이다. 이것은 부동 소수점 연산을 MMX와 같은 "SIMD (Single Instruction Multiple Data)"화한 것이다. MMX 에서는 팩화한 복수의 정수 데이터에 대해 1명령으로 동일한 처리를 병렬로 실행할 수 있다. SIMD-FP는 부동 소수점 데이터를 같은 수법으로 병렬 처리한다. 이것은 AMD가 개발한 x86 호환 (인텔을 제외한 x86 호환업체는 AMD의 3Dnow를 채택. 물론 SSE 이후는 3DNow! 대신 인텔의 SSE 시리즈를 채택. AMD 조차도 불도저 CPU부터 3DNow! 시리즈를 CPU에서 지원하지 않음. 이렇게 3DNow! 회로를 제거한다고 해도, 소프트가 MMX나 SSE도 함께 지원하면 하지, 3DNow! 만 지원하는 경우는 없기 때문에 호환성 문제는 없죠. AMD CPU도 MMX부터 AVX까지 세대마다 추가 했으니까요. 또 이런 SIMD 명령이 그냥 명령어를 만들기만 하면 된다고 생각하시는 분도 간혹 계십니다. 그래서 한번에 명령어 다 만들지 하나 만들고 나중에 또 추가하고 그러냐? 라고도 하시는데, 명령어 자체만 만든다고 해도 모든 미래를 내다보는 점쟁이도 아니고, 또 시간이 필요하다는걸 전혀 인식하지 못하는 말이고, 더 중요한 것은 해당 명령을 처리할 하드웨어가 있어야 하다는 겁니다. 새로운 명령이 만들어 졌다는 얘기는 CPU가 그 명령을 처리할 능력을 갖췄다는 얘기 입니다. 그냥 명령만 새로 만들고 컴파일러가 지원하면 돌아가는게 아닙니다. 그런거면 뭐하러 CPU를 연구하고 설계하겠습니까? 그냥 컴파일러만 새로 만들죠. 그리고 기존 CPU에서도 돌아가야 하겠죠. 그런데 구형 CPU에서는 안돌아간다는 것은 하드웨어가 필요하다는 얘기. 또는 굳이 돌아간다면 에뮬레이션 같은걸로 돌아갈 수도 있을텐데, 그러면 성능이 오를리가 없겠죠. 오히려 더 떨어지지나 않으면 다행.) 제조사가 공통적으로 지원하는 "3D Now!" 기술과 공통점이 있지만, 큰 차이가 있다. 그것은 KNI에서는 새롭게 독립된 레지스터 파일을 정의한 것이다.

 

 MMX나 3D Now!는 레지스터를 물리적으로 신설하지 않고, 부동 소수점 레지스터를 재정의 해서 사용하고 있는데, KNI는 128 비트 폭의 전용 레지스터 8개 (XMM0 ~ XMM7)를 신설했다. 그리고 128비트 (레지스터) 안에 32비트 단정밀도 부동 소수점 데이터를 4개의 팩 할 수 있는 데이터 형식을 정의했다. KNI의 SIMD-FP에서는 4개의 부동 소수점 연산을 병렬로 실행할 수 있기 때문에, 처리성능은 500MHz의 Katmai / Tanner의 경우 피크 2GFLOPS에 달한다. 또 (3D Now! 와 달리) 레지스터를 공유하지 않기 때문에, SIMD-FP는 기존의 부동 소수점 연산 유닛(x87)이나 MMX 유닛과 동시에 실행할 수 있다.

 

 KNI의 SIMD-FP 명령에는 로드/스토어 명령이나 기본적인 사칙연산 외에, 역수나 제곱근의 역수도 준비되어 있다. 기존 처리에 시간이 걸린 이 역수나 제곱근의 역수에서는, 룩 업 테이블을 사용 Newton-Raphson 법으로 정밀도를 높이는 기법에 의해 고속화 한다고 한다. 이 밖에 조건부 무브 명령, 고속의 팩크드 형식의 데이터 형식으로 데이터를 넣는 명령, SIMD-FP와 정수나 MMX 레지스터 사이에서 데이터를 변환하는 명령 등도 있다.

 

 이 SIMD-FP가 가장 효과를 발휘하는 것은, 3D 그래픽 지오메트리 처리다. 현재의 3D 게임 등은 이러한 처리에 부동 소수점 연산을 쓰기 때문에, 정수 데이터 밖에 처리 할 수​​ 없는 기존의 MMX에서는 고속화가 가능하지 않다. 그러나 SIMD-FP에서는 3D 그래픽에서 2배 이상의 성능 향상이 기대 가능하다고 Intel은 설명한다. 또 AC3 (돌비 디지털) 오디오 디코딩 및 스피치 프로세싱, 이미지 워핑과 같은 복잡한 2D 그래픽 처리도 고속화 된다고 말한다.

 


메모리에서 로드 / 스토어를 효율화

 

 메모리 스트리밍 아키텍처는 데이터 흐름을 새로운 명령어 (메모리 스트리밍 명령)으로 제어하는 것으로서, 버스의 효율을 향상시키는 기술이다. 예를 들어, 앞서서 필요한 데이터를 1차 캐쉬에 적재 할 수 있는 프리 페치 명령을 쓰는 것으로 페치를 연속으로 행하고, 데이터 대기에 의한 연산 유닛의 스톨을 없앤다. 중첩하여 연속 데이터 로드를 하는 것으로 실제로 메모리에서 데이터가 읽혀질 때까지 메모리 레이턴시를 숨길 수 있게 된다. Pentium II 계의 버스 (P6 버스)는 원래 파이프라인화 되어 있기 때문에 프리 페치 효과가 크다고 한다.

 

 또 메모리 스트리밍 명령은 캐시 계층을 의식한 명령이다. 읽기 시작한 데이터나 기록하는 데이터가 자주 재사용 하는지, 아니면 1번 밖에 사용하지 않는지에 따라서, 2차 캐시에 넣을지  넣지 않을지를 명시적으로 제어 가능하다. 예를 들어, MPEG-2 인코딩에서는 자주 재사용하는 I 프레임 정도를 2차 캐시에 넣는 것으로, 2차 캐시 슬래싱이 일어나는 것을 막는 것이 가능 하다고 한다.

 

 Intel에 따르면, 메모리 스트리밍 아키텍처는 다양한 유형의 애플리케이션에 유효하며, 10%  정도 성능이 향상 된다고 한다.

 


MPEG-2 인코딩용 명령도 추가

 

 KNI의 세 번째 요소 뉴 미디어 인스트럭션은, 기존 MMX 레지스터를 쓰는 명령으로 자주 사용하는 처리를 새롭게 더했다고 한다. 예를 들면, 요소 간의 차이의 절대 값의 합을 구하는 "Sum of Absolute Differences 명령"은 MPEG-2 비디오 등의 인코딩에 사용된다.

 

 MPEG-2 인코딩에서는(동영상 생산) 움직임 보상 예측이 방대한 계산량을 필요로 한다. 움직임 보상 예측에서는 하나의 프레임에서 16 × 16 도트의 매크로 블록을 가지고, 전후의 프레임의 검색 영역 안에서 그 블록과 비슷한 블록을 찾아 처리를 한다. 블록이 그대로 이동해 있으면, 그 블록의 화상 정보는 프레임간에 공유 할 수 있기 때문에 데이터의 양을 줄일 수 있다. 블록이 동일한지 어떤지는 블록의 각 도트를, 검색 영역의 도트와 1도트씩 비교하여 행한다. 구체적으로는 도트 사이의 차이를 구해서, 그 절대 값을 16 × 16 도트만큼 합계한다. KNI의 신명령은, 이 절대 값의 산출과 덧셈을 복수의 도트만큼 묶어서 1명령으로 처리 할 수​​ 있으므로 대폭적인  스피드 업이 예상된다.

 

 MPEG-2 인코딩에서는 이 Sum of Absolute Differences 명령과 메모리 스트리밍 아키텍처에 의해서 720 × 480 도트 30 프레임의 실시간 인코딩이 소프트웨어로 가능하다고 한다. 뉴 미디어 인스트럭션에는 이 밖에 "average with rounddown", "pack maximum", "pack minimum"등이 마련된다.

 


포괄적인 KNI

 

 KNI는 오랫동안 SIMD-FP를 의미한다고 생각하고 있었다. 그러나 간신히 개요가 밝혀진 KNI는 더 포괄적이고 규모가 큰 확장이다. 3D 그래픽뿐만 아니라 비디오나 인식처리 등 광범위한 애플리케이션 고속화가 실현 가능하다. 그렇지만, KNI는 다른 하이엔드 MPU가 도입하고 있는 멀티미디어 처리 명령과 비슷한 것이 많아, 특별히 독창적이라는 것은 아니다.

 

 SIMD-FP 부분만큼을 잡으면 KNI는 선행하는 3DNow!와 어느 정도 비슷하다. 예를들면, 역수나 제곱근의 역수 등의 고속화는 비슷한 접근을 취한것 같다. 다만 KNI가 128 비트 폭의 레지스터를 신설한 의미는 크다. KNI 에서는 32비트 단정밀도 부동 소수점 데이터를 4개를 팩 할 수 있는 반면, 3DNow!는 64비트 폭의 레지스터에 32비트 단정밀도 부동 소수점 데이터 2개를 팩화하는 사양이다. 다만 K6-2 프로세서 실제로는 3DNow! 명령어의 실행은 슈퍼 스칼라 화되어 있으며, 2명령을 동시에 실행가능 (가능하지 않은 조합도 있다)이기에 이론상의 피크 성능은 Katmai / Tanner과 다르지 않다 ( 동작 주파수가 같은 경우). 그 때문에, Intel은 SIMD-FP 레지스터가 플랫에 128비트 확보 할 수 있다는 점을 프레젠테이션에서 강조했다. 실제 레지스터의 양 자체가 많고, 게다가 기존의 MMX 명령이나 부동 소수점 명령과 공유하지 않기 때문에, 실제 성능은 KNI 쪽이 넘어설 가능성이 높다.

 

 

 다만, 레지스터의 확장은 Intel 이여서 생긴 것도 있다. x86 호환 업체가 독자적으로 레지스터를 확장하고, 게다가 그것이 Intel의 확장과 호환성이 없는 경우, OS 측이 기꺼이 대응할지 어떨지 알수 없다. 다음의 초점은 KNI에 x86 호환 메이커가 대응하는가 (법적으로 가능한가) 어떤가가 될지도 모른다. (몇% 점유하는 회사의 것을 지원할지.. 거의 모든 시스템에서 지원하는 것을 지원할지.. 함께 지원을 해도 무엇이 먼저 될지는 뻔한 이야기..)

 


배정밀도 부동 소수점 연산의 강화는 Merced에서?

 

 그런데 이 칼럼에서는 KNI에서 배정밀도 (64 비트)의 부동 소수점 데이터가 지원된다는 소문에 대해 몇번 언급했다. PC용 응용 프로그램 수준의 3D 그래픽은 단정밀도로 충분하지만  워크스테이션 세계의 3D 그래픽이나 과학기술 계산 용도로는 배정밀도의 지원은 필수가 된다. 실제로, Intel은 단정도 밖에 지원하지 않는다는 것으로, 그것은 이번 KNI의 확장의 목적이 전자인 PC 응용 프로그램으로 제한되어 있다는 것을 의미한다.

 

 Intel이 KNI을 단정밀도로 좁힌 이유에 대한 힌트는 전자 장치 전문지 Electronic Engineering Times 기사 "Internal layout of Intel 's Merced comes to light" (Electronic Engineering Times 9 / 28) 안에서 찾는 것이 가능할지도 모른다. 여기에는 그들이 독자적으로 입수한 Intel의 IA-64 프로세서 "Merced (머시드 : 코드명)"의 평면도 블록이 실려있다. 거기에 보이는 것은 거대한 부동 소수점 연산 유닛이다.

 

 

 

 그리고 그것을 또한 IDF의 알버트 유 Intel 상급 부사장 겸 제너럴 매니저 (Microprocessor ​​Products Group)의 키 노트 스피치에서 공개된 Merced 평면도의 사진 (위)와 대조시켜 보면 재미있다. 만약 각 블록의 배치가 Electronic Engineering Times의 기사대로 하면 사진에 보이는 Merced의 부동 소수점 연산 유닛은 칩 면적의 10%나 그 이상이라는 터무니 없는 크기이다. 즉, Intel은 배정밀도 부동 소수점 연산 성능 강화는 IA-64에서 근본적으로 행할 예정이므로 그때까지 SIMD화 등으로 어중간한 강화는 하지 않는다는 것일 것이다. (배정밀도 SIMD는 펜티엄4 SSE2에서 구현 됩니다.)

 

 

[고전 1997/01/13] 세가, MMX 전용 "전뇌전기 버추얼 온"과 전용 컨트롤러를 발표

 

 

[고전 1997/03/28] 게임 소프트 소감 전뇌전기 버추얼 온

 

 

[고전 1999/03/02] 인텔 Pentium III 일본에서도 정식발표. SSE 소프트 데모. 이벤트 개최

 

 

[고전 1999/03/10] 이곳이 바뀌었다 Pentium III 의 SSE 기능을 사용한 게임 WARGASM

 

 

 

 

[고전 1998/09/16] Katmai의 개요, Cascades, Coppermine, McKinley 계획을 발표

 

 

[고전 1998/06/04] "Katmai 대 K6-3"를 향해서 질주하는 Intel과 AMD

 

 

[고전 1997/10/17] Katmai 대 AMD-K6+ 3D 대 Cayenne, 그 후에는 Merced가 보인다

 

 

[고전 1999/03/01] 인텔 펜티엄 III 정식 발표, 당일 출하 개시

 

 

[고전 1999/02/23] K6-III로 정면으로 펜티엄 III에 맞서는 AMD

 

 

[고전 1999/02/23] AMD, L2캐시 내장, L3캐시까지 대응하는 K6-III

 

 

[고전 1998/05/29] AMD, 3DNow! 대응의 K6-2 발매

 

 

[고전 1998/08/14] Intel, AMD, Cyrix, IDT의 차세대 MPU의 모습이 10월 13일에 밝혀진다

 

 

[고전 1999/02/04] Microsoft DirectX 6.1을 정식 발표

 

 

[고전 1997.10.15] Intel과 HP공동으로 "Merced"의 기초 기술을 발표 및 단신 모음

 

 

 

[고전 2000.2.25] 인텔 사내경합이 낳은 Willamette 1.4GHz

 

 

[고전 2002.10.04] Pentium 8 후보 Nehalem 아키텍처

 

 

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

 

 

[고전 1998/08/14] Intel, AMD, Cyrix, IDT의 차세대 MPU의 모습이 10월 13일에 밝혀진다

 

 

[고전 1997.06.05] COMPUTEX TAIPEI '97 2일째 보고서

 

 

[고전 1997.08.28] 차세대 MPU를 위한 포석 AGP

 

 

[고전 1997.05.08] 펜티엄 II 등장. Slot2,100MHz 시스템 버스, IEEE 1394지원 등 시스템도 강화

 

 

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

 

 

[고전 1998.08.11] Intel, Pentium II ODP

 

 

[고전 1998.10.03] Socket 8용 Pentium II ODP가 드디어 상륙

 

 

[고전 1998.07.10] 다음 Slot 2 MPU Tanner는 하이엔드 워크스테이션 겨냥?

 

 

[고전 1999.02.22] 펜티엄 III 아난드텍 벤치마크

 

 

[고전 1999.02.23] AMD와 인텔의 새로운 CPU

 

 

[고전 1999.04.03] SSE 기술을 가진 인텔 펜티엄 III 500 리뷰

 

 

[고전 1997.10.31] Intel과 DEC 전격 제휴 MPU의 판도가 바뀐다