[App 개발] Cell 아키텍쳐 (1)
본문
-------------------------------------------------------
셀 아키텍쳐
서론
Note: 셀 프로세서에 대한 최근 새로운 정보는 Updates & Clarifications 를 보십시오.
플스 3를 위해서 소니, 도시바, IBM 이 설계한 “셀 프로세서”는 외관상 가격에 비해 상당한 컴퓨팅 능력을 갖고 있는 것 같이 보입니다. 이 글에서는 셀 아키텍쳐의 기본적인 내용과 그 속에 숨은 깊은 의미를 게임기 측면보다 전체 컴퓨터 산업 측면에서 정말 이 칩이 피씨와 경쟁할 제품인지 살펴보고자 합니다.
STI (소니, 도시바, IBM) 연합이 지금까지 공개한 내용은 아주 모호한 편입니다만, 이 글의 내용은 시스템의 상세한 내용을 공개하고 있는 특허 출원서*를 기초한 것입니다. 불행히도 이 출원서는 읽고 이해하기 대단히 어려워서 기술자들조차도 이 내용이 교류되고 있지 않습니다.
저는 이 출원서를 해독하여 셀 프로세서와 이것을 실제 구동하는 “소프트웨어 셀” 에 대한 자세한 내용을 1장과 2장에 기술합니다.
지금 상태로는 어떤 성능 비교도 없으므로 제시하는 표들은 특허 출원서에 있는 내용, 혹은 4.6 GHz 칩의 내용을 인용한 것입니다. 따라서 모든 성능 비교는 가설의 최대치를 근거로 한 예측입니다.
셀은 벡터 프로세싱 아키텍쳐를 가지고 있고 이것은 사용에 약간의 제약이 있습니다. 출원서에서 소개하는 벡터 프로세싱이 가져다주는 많은 장점에 대한 내용은 3장에서 살펴보겠습니다.
셀 프로세서를 채용한 최초의 기계는 아마도 피씨의 성능을 능가하게 될 것이고, 계속 그 상황을 유지하게 될 지도 모릅니다만, 피씨 시장이란 항상 극심한 경쟁을 겪어왔고 항상 새 기술을 낡은 것으로 만들어 왔습니다. 4장에서는 왜 피씨가 셀을 이길 것이며 셀의 어떤 점이 패배의 요인이 될 지를 설명하겠습니다.
5장에서는 요약 정리하여 결론을 내리고 참고 문헌을 정리하겠습니다. 1장과 2장 내용을 읽고 싶지 않은 분들을 위해서 셀 아키텍쳐의 간략한 소개를 적었습니다.
* 이것은 마사카즈 스즈오키와 타케시 야마자키가 제출한 2002년 특허 출원서를 번역한 것입니다.
1장: 셀의 내부
1장과 2장에서는 셀 아키텍쳐에 대해 설명합니다. 1장은 셀 프로세서의 컴퓨팅 하드웨어에 대한 내용입니다.
셀을 자세히 분석하는 것은 그리 쉽지 않습니다. 셀에 대해서 처음 발표한 내용은 아주 모소했고 특허가 공개되기 전까지 그 내용은 알려지지 않았습니다. 많은 사람들이 별로 주의를 기울이지 않았고 단지 inquirer 가 이 내용을 소개했습니다.
불행히도 이 특허 서류는 마치 텍스트 모드 겐투를 실행한 로보트 변호사가 쓴 글 같이 어렵기 때문에 이것을 해독하듯 읽지 않으면 안됩니다. 서류에는 최종 시스템의 개요를 설명하지 않지만 몇 가지 다른 옵션이 있음을 기술하고 있습니다.
최근 발표된 새로운 셀 웍스테이션의 개요와 상세 설명으로 셀 기반 시스템이 어떤 모습을 갖게 될 것인지를 볼 수 있게 되었습니다.
특허 서류는 방대하고 복잡한 문서이지만 저는 시스템의 개요에 대해서 설명할 만큼 이해할 수 있게 되었습니다. 그러나 실제 셀 프로세서는 특허 서류에서 설명하지 않은 내용이나 변경된 사항이 있을 수도 있습니다.
배경
이 제품은 원래 플레이스테이션 3를 위한 기술로 선전되었지만, 셀은 훨씬 더 많은 용도로 설계되었습니다. 주요 전자기기 생산업체인 소니와 도시바는 다양한 전자부품을 구매하고 있으며, 셀을 개발하게 된 이유는 자신들의 전용 부품을 만듦으로써 비용을 절약하기 위한 목적이었습니다. 블루레이, 고화질 TV, HD 캠코더, 그리고 플스 3 같은 차세대 가전 기술에는 고성능 컴퓨팅 성능을 만족하는 칩이 요구되었습니다. 셀은 이러한 용도에 사용될 것이며, IBM 은 이 칩으로 서버를 구축하며 서드 파티 생산자에게 판매도 할 것입니다.
소니와 도시파는 플스 2 를 같이 제조하였고 이번에는 좀 더 강력한 성능의 설계가 필요했고 새로운 칩을 설계 제조할 수 있는 제 3 의 파트너의 협조가 필요했습니다. IBM 은 칩 디자인의 장점 뿐만 아니라, 반도체 제조 과정의 어려움을 해결할 수 있는 실리콘 공정의 선도 기업입니다. 반도체 제조업체가 제조공정상 어떤 문제에 부딪혔을 때 그 문제 해결 의뢰를 받는 기업이 IBM 입니다.
이번 프로젝트에 소요되는 금액은 어마어마합니다. 두 개의 65나노 칩 제조 공정이 개당 십억불에 건립되었으며 소니는 피쉬킬에 제조 라인을 설립하느라 수억을 IBM 에 지불했습니다. 그리고 실제 제조 공정에서 칩이 출하되기 전까지 수천만 불이 더 개발비로 지불되어야 합니다.
셀 아키텍쳐는 무엇인가
셀은 고성능 분산 컴퓨팅을 위한 아키텍쳐입니다. 셀은 하드웨어 셀과 소프트웨어 셀을 포함하는 것입니다. 소프트웨어 셀은 데이터와 프로그램(apulet)으로 구성되며, 이것을 하드웨어 셀로 전달하여 계산 결과를 돌려받습니다.
이 아키텍쳐는 한 가지 방식으로 고정된 것이 아닙니다. 만약 컴퓨터, 플스 3, HDTV 에 모두 셀 프로세서가 탑재된다면 이 기기들을 서로 한 데 묶을 수 있습니다. 업계에서는 이러한 방식에 대해서 예전부터 논의해 왔지만 실제로 셀은 그 일을 할 수 있도록 설계되었습니다. 텔레비젼에서 “Contact” 를 보면서 플스 3 에서는 5분마다 SETI@home 을 통해서 백그라운드 계산을 수행한다고 할 때, SETI 유닛의 계산이 어느 정도 속도로 수행되는지 아시면 엄청나게 놀라실 것입니다. 셀은 아주 빠릅니다.
여기서 더 나아가 셀은 소프트웨어를 네트웍을 통해서 전 세계로 퍼뜨릴 수 있습니다. 셀은 PDA 로부터 서버까지 통용될 수 있도록 설계되어 있어서 서로 다른 시스템을 모아서 고성능 셀 컴퓨터를 만들 수도 있습니다.
스케일링은 셀의 기능중 하나에 불과합니다. 개별 시스템은 그 자체만으로도 충분한 능력이 있습니다. 셀 시스템의 개별 계산 유닛을 Processing Element (PE) 라고 하며, 개별 PE 자체는 각각 250 GFlops 의 이론적인 계산 능력을 가진 강력한 프로세서입니다. 컴퓨팅 세계에서 제시되는 표들 (대역폭, 계산능력, 처리능력) 등은 이론적인 최대치이며 현실적으로는 거의 일어나지 않습니다. 셀은 이런 경우와 달라서 실제 최대 계산 능력에 가까운 힘을 발휘하게 될 것입니다.
상세 개요
개별 프로세싱 엘리먼트 (하드웨어 셀) 은 다음의 요소로 구성됩니다.
프로세싱 유닛 (PU) 1개
어태치드 프로세싱 유닛 (APU) 8개
DMA 컨트롤러
I/O 인터페이스
전체 상세 개요는 아직 발표되지 않았지만 몇 가지 내용은 공개되었습니다.
4.6 GHz
1.3v
방열판을 부착한 상태로 섭씨 85도
6.4 Gb/sec off-chip communication
모든 내부 프로세싱 유닛은 고속 메모리와 I/O 시스템이 반드시 필요합니다. 소니와 도시바는 이를 위해서 램버스사로부터 “옐로스톤”, “레드우드” 기술을 라이센스하였습니다. 6.4 Gb/s I/O 는 램버스의 설계 중 일부입니다.
프로세싱 유닛 (PU)
살펴보신 대로 PU 는 64비트 “파워 아키텍쳐” 프로세서입니다. 파워 아키텍쳐는 파워피씨와 파워 프로세서에서 채용되어 온 IBM 의 기술입니다. 현재 이에 해당하는 프로세서는 3 종 (POWER 5, POWER 4, POWER 4 의 변종 PowerPC 970 (G5) ) 입니다.
IBM 의 보도자료에 따르면 셀 프로세서는 “멀티 쓰레드, 멀티 코어” 이지만 APU 는 멀티 쓰레드가 아닙니다. PU 는 아마도 POWER 5 코어를 베이스로 한 것 같습니다. IBM 은 현재 “next generation 970” 이라는 혼란스러운 이름을 가지고 이런 종류의 칩을 개발중이라고 확인하였습니다.
물론 IBM 이 위에서 설명한 것과는 전혀 다른 64비트 CPU 를 설계할??가능성도 있습니다. IBM 은 이런 종류의 일을 그 전에도 했던 적이 있으므로 전혀 불가능한 생각은 아닙니다. 440CPU 를 이용한 블루진 슈퍼 컴퓨터 프로세서의 이름은 440 이지만 임베디드 시스템에서 사용하는 칩과는 전혀 다른 제품입니다.
POWER 프로세서가 PU 에 채용된다면 그리 높은 클럭속도를 가지지는 않을 것입니다. 왜냐하면 POWER 코어는 전력을 많이 소모하므로 전력 소비를 줄이기 위해서 클럭 속도를 줄여야 할 것이기 때문입니다.
플스 3 에는 4 개의 셀이 채용될 것이라고 알려져 있으므로 시스템에는 모두 네 개의 POWER 5 베이스 코어가 탑재되는 꼴입니다. 게다가 PU 는 단지 컨트롤러에 불과할 뿐이고, 실제 동작은 APU 에서 이루어진다는 점은 매우 놀라운 것입니다.
Attached Processor Units (APU)
셀에는 8개의 APU 가 탑재됩니다. APU 는 각각 독립적인 벡터 프로세서를 탑재합니다. 128 x 128 비트 레지스터를 가지고 있으며 32GFlops 의 성능을 가진 네 개의 부동소숫점 유닛과 32 GOps 의 성능을 가진 네 개의 정수 유닛을 가집니다. APU 에는 캐시 대신 128 KB 의 로컬 메모리가 있어서 실제 동작에는 가상 메모리 시스템이 필요치 않습니다.
독립 프로세싱
APU 는 코프로세서가 아닙니다. 이들은 자체적인 권한을 가진 독립된 프로세서입니다. PU 는 소프트웨어 셀을 할당하여 작업을 수행하도록 합니다. APU 는 소프트웨어 셀의 apulet 을 종료할 때까지 혹은 작업 중단 지시가 있을때까지 계산을 수행합니다. PU 는 원격 프로시져 콜로 APU 를 설정합니다. 이것은 APU 를 직접 호출하는 것이 아니라 메모리 입출력을 수행하는 DMA 컨트롤러를 이용하여 호출됩니다.??
벡터 프로세싱
APU 는 벡터(SIMD) 프로세서이며, 한 번의 명령으로 여러 작업을 동시에 수행합니다. 벡터 컴퓨팅은 1970년대부터 슈퍼컴퓨터에 사용되었으며 최신 프로세서에는 동일한 개념을 가진 미디어 가속기 (SSE, AltiVec) 등이 탑재되어 있습니다. 각각의 APU 는 사이클당 4 x 32 비트 연산 (8 곱셈-덧셈) 능력이 있습니다. 이를 위해서 프로그램은 “벡터화” 되어야 하며, 비디오, 오디오, 3D 그래픽, 과학계산에서 이를 이용할 수 있습니다.
AltiVec과의 관계
벡터 유닛은 PowerPC G4 와??G5 에서도 찾아볼 수 있습니다만 몇 가지 차이점이 있습니다. 먼저 레지스터의 갯수가 AltiVec 은 32개이지만 APU 는 128 개이며, APU 는 로컬 메모리를 사용하며, AltiVec 은 기존의 PowerPC 명령어에 부가된 기능으로 PowerPC 의 일부분으로 동작되지만 APU 는 완전 독립된 프로세서입니다. 두 가지에는 비슷한 점이 많이 있지만 직접 호환성은 없을 것입니다. 그러나 이들간의 프로그램 개수는 어렵지 않을 것으로 보입니다.
APU 로컬 메모리
캐시 메모리와 가상 메모리 시스템이 없다는 것은 APU 가 기존 CPU 와는 다른 방법으로 동작된다는 뜻입니다. 프로그램을 작성하기는 더 어렵지만 복잡도를 줄이고 성능을 향상시킬 수 있는 방향으로 APU 는 설계되어 있습니다.
일반 캐시
일반 CPU 들은 레지스터에서 명령을 수행하여 메모리를 읽거나 씁니다. 메인 메모리에서 직접 작업하는 것은 상당히 느리기 때문에 캐시 (고속 메모리의 일종) 를 이용하여 메인 메모리 조작 속도의 문제를 해결합니다. 캐시는 현재 프로세서에서 작업중인 메모리의 일부분을 정합니다. 만약 1MB 메모리 공간에서 작업중이라면 캐시에는 그 중의 일부분만 반영될 것입니다. (대략 수백 바이트 정도) 캐시를 더 늘이거나 혹은 전체 데이터를 모두 읽어오는 캐시 설계방법도 있지만 가격이 비싸거나 속도가 더 느려질 수 있습니다.
작업중인 데이터가 캐시에 없으면 CPU 는 정지되고 필요한 데이터가 불러들여질 때까지 기다립니다. 이렇게 되면 프로세서는 약 수백 사이클 정지되는 셈입니다. 최신 서버 CPU들 (POWER나 이타늄같은 대용량 고속 캐시 제품)은 필요한 메모리를 기다리는데 대략 80% 의 시간을 소모하는 것으로 추산됩니다.
요즘 보편화되고 있는 듀얼 코어 CPU 는 캐시를 공유합니다. 만약 두 개의 코어나 다른 시스템 장치가 동일한 메모리 공간을 사용하려 할 때 캐시에 저장된 데이터는 쓸모없어지고 다시 새로 업데이트 되어야 합니다.
이런 모든 경우를 해결하기 위해서는 특별한 구조와 수행 시간이 필요하며 이러한 요소들이 기존 시스템이 메모리를 억세스하는 속도를 저하시킵니다. 시스템에 프로세서가 더 많이 탑재될 수록 이 문제들은 더 복잡하게 됩니다. 캐시는 기존 CPU 의 메모리 억세스 속도를 높여 주지만 이를 위해서 소모되는 시간도 발생합니다.
APU 의 로컬 메모리는 캐시가 아니다
캐시 디자인의 이런 복잡성을 해결하고 속도를 향상시키기 위하여 셀에서는 이 구조를 채택하지 않습니다. 그 대신 8 개의 로컬 메모리가 있어서 개별 APU 에 하나씩 할당됩니다.
APU 는 로컬 메모리에서 입출력된 데이터를 레지스터에 받아서 명령을 수행합니다. 로컬 메모리는 1024bit 블럭씩 메인 메모리를 억세스할 수 있지만 APU 는 메인 메모리를 직접 억세스할 수 없습니다.
캐시 구조를 사용하지 않는 대신 캐시를 채용함으로써 필요한 복잡성을 줄일 수 있게 됩니다. 로컬 메모리는 개별 APU 만 억세스할 수 있습니다.
이는 시스템의 유연성을 떨어뜨리고 프로그램의 복잡성을 증가시키게 되지만, 이러한 구조는 데이터를 APU 레지스터에 엄청난 속도로 전달할 수 있습니다. 만약 사이클당 2 개의 레지스터가 로컬 메모리를 억세스할 수 있다면 초당 147 기가바이트를 처리할 수 있는 시스템이 됩니다. 이것은 단지 하나의 APU 에 해당하는 것이며, 전체 로컬 메모리의 총 bandwidth 는 테라바이트 수준을 넘게 되며, 캐시 시스템을 채택한 프로세서는 이 정도 성능에 근접할 제품이 없습니다. 셀은 데이터 공급 방식의 APU 와 로컬 메모리 방식의 설계로 이것을 달성하였습니다.
간섭
APU 메커니즘이 있으려면 간섭 메카니즘도 있어야 합니다. 두 개의 APU 가 동일한 메모리를 사용하는 것을 방지하기 위해서 RAM 에 약간의 가외 데이터와 로컬 저장소에 가외의 “busy” 비트를 첨가한 메카니즘이 사용됩니다. 이 메커니즘을 소화하려면 특허 청원서에 소개된 여러 개의 다이어그램과 자세한 설명을 읽어야 합니다. 하지만 이 구조는 단지 데이터 읽기를 가능/불가능하게 하는 것과 어떤 APU 가 메모리를 사용하는지를 기록하는 것이므로 캐시를 계속 업데이트하는 구조보다는 훨씬 간단합니다.
이 시스템은 메모리 억세스를 복잡하게 하여 속도를 떨어뜨리게 됩니다. 가외의 데이터 저장 장소를 칩에 내장하여 속도를 높일 수는 있지만 현재 상태로는 실리콘 용적을 늘려 단가를 높이는 것은 실효성이 없어 보입니다.
아직까지 PU 에 대해서는 “파워 아키텍쳐” 를 채택했다는 것 외에 알려진 바가 많지 않지만 일반적인 CPU 디자인상 보통의 캐시와 간섭 메카니즘을 내장하고 있다고 보는 것이 좋을 것 같습니다. (아마 메모리 서브시스템에 맞게 변형되었겠지요)
데이터가 제대로 공급된 APU 는 엄청난 성능의 프로세싱 능력을 나타낼 것입니다만…
APU 는 연결될 수도 있습니다. 스트림으로 프로세스 데이터를 여러 개의 APU 에 병렬로 공급할 수 있습니다. 이 경우 셀은 이론적인 한계로 250 GFlops 의 프로세싱 성능을 가집니다. 2장에서는 이 기능과 셀의 나머지 부분, 그리고 아키텍쳐의 다른 측면을 살펴보겠습니다.
최신글이 없습니다.
최신글이 없습니다.
댓글목록 3
영환군님의 댓글
으흐.. 너무 어려워요.. -_-;
몇번을 봐도.. 어려워요.. ㅠ.ㅠ
hongjuny님의 댓글
제 번역 실력이 영 파이라서 그렇습니다. ㅡㅡ;
일단 번역이 다 끝나고 난 다음에 제 나름대로 다이제스트 버젼으로 하나 정리해 보도록 할테니 그걸 보시면 훨씬 더 간단하게 이해가 되어서 다른 곳에서 아는체를 하는데 도움이 되실 것으로 생각합니다. ㅎㅎㅎ
영환군님의 댓글
ㅎㅎㅎ 역시나 hongjuny님은 KMUG 지식in 입니다~ 잇힝~
Cell 프로세서가 PC에 적용된다면.. 어느정도 퍼포먼스일까.. 에 대한 것은 아마 관심이 많은 분들이 많을텐데.. +_+