
[라라비는 다수의 IA 코어와 16-Wide 벡터 유닛으로 구성]
라라비는 많은 뉴스들과 IDF 2008을 통해 공개된 내용은 많은 수의 IA 코어와 16-Wide 벡터 ALU
유닛을 제공하고 있으며, 각 코어들 간에는 공유되는 L2 캐쉬를 제공하여 데이터 공유와 높은 대역폭을 얻을 수 있어 처리 효율을 높여준다. 또,
각 코어들 간에는 1024bit 링버스 (비선형 방식, 각 방향 512bit)를 통해 메모리 액세스와 고정 기능 블럭의 빠른 접근, 캐쉬
일관성을 위한 빠른 접근이 가능해진다. 라라비에 적용되는 링버스는 2GHz 이상으로 동작될 것으로 예상되어 매우 높은 대역폭을 제공할 것으로
예상되고 있다.
또한, 메모리 컨트롤러는 라라비 블럭 다이어그램 상으로는 2개가 존재하는데 라라비는 AMD와 NVIDIA가
내부 64bit 메모리 컨트롤러를 사용하는 것과 달리 128bit 메모리 컨트롤러를 사용할 수 있다는 것을 말해준다. 참고로 현재의
GeForce GTX 280 512bit 메모리 인터페이스 (64bit x 8)로 구성, RV770 256bit 메모리 인터페이스
(64bit x 4)로 구성된다.
그 외에도 텍스처 처리를 위한 로직, 시스템 인터페이스 (현재의 PCIe 2.0 인터페이스 등), 디스플레이
인터페이스 (현재의 DVI, HDMI, DisplayPort 등)를 포함하고 있어 현재의 GPU들처럼 그래픽 카드로의 모습을 갖추고 있다.

[라라비는 스칼라 유닛과 CPU 코어 내의 벡터 유닛으로 구성]
라라비를 구성하는 부분은 펜티엄 P54C로 알려진 다수의 IA 코어와 16-Wide 벡터 ALU 유닛이
포함되어 있다. 코어 부분에 해당하는 부분은 앞서 언급하였듯이 코어들 간에 1024bit 링버스를 통해 연결되어 데이터의 공유와 처리 효율을
높일 수 있으며, 코어에는 L1과 L2 캐쉬, 그리고 스칼라 유닛과 벡터 유닛 그리고 스칼라와 벡터 레지스터도 별도로 제공된다. 그리고 x86
CPU의 SIMD (Single Instruction Multiple Data) 명령어인 SSE 명령어 등이 지원되어 CPU의 그것과 큰 차이가
없는 구조를 보여준다. 코어 내의 벡터 유닛은 클럭 당 16개의 32bit ops를 처리할 수 있으며, 코어는 순차적인 명령 실행, 파이프라인의
짧은 실행, L1 캐쉬로부터 빠른 접근, 각 코어 간에는 직접적으로 L2 캐쉬를 연결, L1과 L2 캐쉬 명령어를 미리 불러온다. 또,
4-Way SMT/ Hyper-Threading 기술이 추가되었다.
또한, 추가로 16-Wide 벡터 ALU 유닛이 내장되는데 데이터의 병렬 흐름을 제어해주며, 메모리를 읽어오는
동안 수 타입의 변환과 데이터 복제 등의 작업, 그리고 L1 캐쉬의 빠른 읽기, 레지스터로 읽은 랜의 재배열, 다수의 병합, Int32,
Float32, 그리고 새로 추가된 Float64 (64bit) 데이터를 다룬다. 16-Wide 벡터 유닛은 GPU의 벡터 연산을 담당하는
부분으로 볼 수 있으며, 다른 코어들과의 조합도 가능한 것으로 알려지고 있다.
16-Wide 벡터 ALU 유닛은 8-Wide 더블 연산을 지원하며, AMD와 NVIDIA의 스트림 프로세서
유닛과 비교할 수 있다. NVIDIA의 SP가 하나의 명령에 대응, AMD는 5개, 라라비는 벡터 유닛이 16개로 동작한다. NVIDIA는
SP가 GTX 280은 240개가 사용되고 AMD는 160개 (RV770), 인텔 라라비는 코어 적용에 따라
16-32개로 동작할 것으로 예상된다. 또, 인텔 라라비의 16-Wide 벡터 ALU 유닛은 싱글 쓰레드로 동작하는 프로그램에서 AMD처럼
16개가 모두 동작하기도 NVIDIA처럼 독립적으로 동작할 수도 있는 것으로 예상되고 있다. 따라서, AMD가 그랬던 것처럼 인텔 라라비 역시
컴파일러가 중요한 역할을 차지하게 될 것으로 예상되고 있다.
라라비는 쉽게 말해 CPU의 코어 (스칼라 유닛)와 그래픽 연산 부분을 담당하는 벡터 유닛의 조합으로
만들어지는 GPU라고 볼 수 있어 SSE 명령어의 지원 등으로 GPU보다는 CPU에 더 가까운 구조를 보여주고 이것이 범용 컴퓨팅 부분에 GPU보다
더 적합한 이유이다.

[2코어 CPU와 라라비 스펙 및 처리량 비교]
인텔 라라비는 코어2 듀오 L2 4MB 캐쉬를 가진 듀얼 코어 CPU와 같은 공정을 적용할 경우 대략 같은
다이 사이즈, 그리고 소비전력을 가진 모델이 10코어를 가지게 된다. 이들을 가상으로 성능을 비교할 경우 라라비 10코어는 듀얼 코어 프로세서와
비교하여 20배에 이르는 클럭 당 Multiply-add 명령어 처리 성능을 갖추고 있는 것으로 언급했다. 클럭 당 8개의 벡터 처리량을 가진
듀얼 코어와 비교하여 라라비는 160개나 더 많은 벡터 처리가 가능하다.


[라라비, 코어 증가에 따라 증대되는 성능]
인텔의 라라비는 사용되는 코어의 증가에 따른 성능 향상 부분도 언급되고 있는데 3가지의 게임 타이틀 모두 코어가 8개씩 늘어남에 따라 성능도
증가된다. 8개에서 16개로 넘어갈 때 2배에 가까운 성능이 그 후로 8개씩 늘어날 때마다 약 1배에 가까운 성능이 증가되는 것을 볼 수 있다.
비 그래픽 어플리케이션 성능 역시 32개의 코어가 8개의 약 3배에 가까운 향상을 보여준다. 16 코어에서 2배의 성능을 내려면 2배인 32
코어가 사용되어야 하는데 그 만큼 소비전력이나 발열 등이 증가될 것으로 예상된다.
이에 따라 라라비 역시 CPU나 그래픽 카드들과 마찬가지로 코어 크기가 증가됨에 따라 다이 사이즈 역시 증가되고 소비전력 발열이 증대되므로 제조
공정이 중요할 것으로 보여진다. 라라비 실제 제품의 출시가 늦어지는 것도 증가되는 다이 사이즈와 그에 따른 소비전력이나 발열을 현재의 65/
45nm 공정을 적용할 경우 현재의 GPU들에 대응할 수 있는 적절한 성능을 만들기 어렵기 때문으로 예상된다.
10개 코어를 가진 라라비가 65nm 공정의 코어2 듀오 L2 4MB 캐쉬와 같은 143mm^2의 다이 사이즈를 가질 것으로 예상되고 있고
45nm 공정에서 60-70% 로 다이 사이즈를 줄이더라도 소비전력 등으로 인해 16-32 코어 정도가 45nm 공정에서 만들 수 있는 최대
범위가 될 것으로 예상되고 있다.
병렬 컴퓨팅을 위한 Ct (C for Throughput Computation) 사용


AMD와 NVIDIA는 최근 GPU를 영상 인코딩이나 PhysX와 같은 물리엔진의 가속 등의 범용 목적에 사용할 수 있게 하기 위해 GPGPU와
NVIDIA의 경우 C언어 기반의 CUDA를 통해 이들이 가능하게 해주고 있다.
인텔 라라비 역시 앞서 언급한 것과 같이 GPU보다 CPU의 장점들을 취하고 있어 범용 컴퓨팅에 유리한 모습을 갖추고 있고 NVIDIA의 CUDA와 같이 C언어 기반의 Ct (C for Throughput Computation)를 통해 라라비에 사용하는 IA 코어에 최적화되도록
하여 범용 목적 등의 사용에 효과적으로 대응할 수 있게 된다. Ct는 라라비가 지원하는 SSE 명령어를 비롯하여 많은 코어와 캐쉬, 대역폭,
명령어 셋 향상을 위한 최적화를 가능하게 해준다.
또, 이런 소프트웨어 기술을 통해 인텔이 지향하는 비주얼 컴퓨팅에 더 가까이 다가갈 수 있으며, 현재의 그래픽 API 중 산업 표준인
DirectX와 OpenGL의 이용 뿐만 아니라 IA/ SSE/ 라라비 네이티브 컴파일러 등의 툴 등을 제공하고 Ct를 통해 보다 쉽게 사용하고
유연한 프로그래밍을 가능하도록 해준다.

인텔 라라비의 소프트웨어 구조는 GPU보다 CPU에 더 가까운데 이는 IA 코어가 펜티엄 프로세서를 기반으로 하고 있기 때문으로 볼 수 있다.
라라비 하드웨어 단계에는 렌더링 파이프라인, 라라비 네이티브 App, 드라이버 실행 유닛 등이 포함되고 드라이버 단계는 PCIe와 디스플레이
드라이버를 사용할 수 있게 되며, API는 현재의 게임을 만드는데 사용되는 산업 표준인 DirectX와 OpenGL, 그리고 라라비 네이티브
C/C++ 컴파일러의 활용이 가능하게 된다. 어플리케이션 단계에서는 개발자 환경에서는
컴파일러와 디버거 제공, 툴과 라이브러리에서는 성능 분석 툴, 사용자 프로그램에서는 그래픽스 어플리케이션과 라라비 네이티브 어플리케이션,
유틸리티에서는 드라이버 컨트롤 패널 등이 제공된다.