다중 코어 SoC는 빠른 속도로 2010의 업계 표준이 되어가고 있다.

Figure 1: Hybrid AMP/SMP on SMP architecture.


기술 동향을 예측하는 것은 산업계의 전문가들에게도 쉬운 문제가 아니지만, 쉽게 알 수 있는 하나의 경향은 멀티 코어 SoC기술 사용이 확산될 것이라는 것으로서, 여기에는 그럴만한 많은 이유가 있다.


첫째, 증가하는 성능 요구 사항 및 전력등과 같은 문제점을 해결하기 위해, 워크 스테이션 분야에서 몇 년전부터 멀티 코어 프로세서를 사용하여 설계를 해왔다. 현재 워크 스테이션 분야에서의 멀티 코어 채택율은 이제 포화상태에 이르렀으며, 범용 운영체제에 의해 멀티 코어에 대한 기술적인 지원이 되고 있는 반면, 임베디드 분야에서는 이제 막 멀티코어 아키텍처의 채택을 모색하고 있다. 둘째, 많은 SoC 업체들이 Cavium, Freescale, MIPS 및 ARM을 포함한 멀티 코어 솔루션을 제공하고 있지만, 현재까지 이러한 솔루션은 네트워킹 분야에 국한되어 왔고, 저전력 보다는 성능향상을 위해 많이 사용되어 왔다. 또한 임베디드 분야에서의 소프트웨어 지원 또한 하나의 문제점이 될 수 있다.


현재 ARM 11 MPCore 및 Cortex-A9 MPCore 설계가 현재 임베디드 시장에서 주류의 멀티코어 IP로서 많은 호응을 얻고 있다. 결과적으로, 많은 SoC업체들은 그들의 차세대 설계를 위한 기본으로서 Cortex-A9 MPCore하드웨어를 채택하고 있다. 텍사스 인스트루먼트사는 듀얼 코어 Cortex-A9 MPCore를 적용한 OMAP4를 자사의 차세대 플랫포옴으로서 올해 하반기에 출시할 예정이다. ST 마이크로 시스템 또한 Cortex-A9 MPCore를 적용한 자사의 디바이스에 대한 출시를 준비중이다. 증가하는 컴퓨팅 능력에 대한 요구와 더불어, 많은 업체들이 멀티 코어 하드웨어를 채택하고 있다. 한편, 하드웨어에 비해 뒤쳐져 있는 SoC분야에서의 소프트웨어가 이제는 멀티코어를 위해 한 단계 발전해야할 시간이다.


멀티코어를 어떤식으로 설계하는가도 짚고 넘어가야할 하나의 중요한 개념이다. 두 가지 종류의 설계를 고려할 수 있다: AMP (비대칭형 멀티 프로세서) 및 SMP (대칭형 멀티 프로세서). AMP는 다른 종류의 코어들로 이루어져 있으며, 각각의 코어는 다른 운영체제하에서 다른 명령어 셋을 실행하며, 운영체제가 없는 경우도 있다. 코어들 간의 통신을 위해 하나의 운영체제를 적용한 단일 코어를 이용하고 있으며, 최소한의 리소스를 공유하여 모든 디바이스를 운용하고 있다. 반면, SMP는 동일한 CPU코어로 이루어져 있으며, 이들 코어는 모든 서비스가 동일하며, 동일한 명령어 셋 및 메모리 구조를 가진다. 이는 코어들 사이의 워크로드 분할에 있어 적절한 균형을 이룰 수 있게 해준다.


그러면, SMP 하드웨어 상에서 AMP의 장점을 이용하는 것이 가능할까? 답은 그렇다이다. 실제적으로 하드웨어 자체가 SMP이고, SMP모드로 모든 코어를 운용하는 것이 최선의 솔루션이 아니기 때문이다. 시스템을 할 수 있는 최적화할 수 있는 방안 및 여러 운영체제간의 작업을 효율적으로 나누는 여러 가지 방안도 있다. SMP 하드웨어가 여러 운영 체제 도메인으로 나뉘어지고, 각 도메인이 멀티 코어간에 상호 동작이 가능하도록 하는 하이브리드식 접근 방법 (그림 참조)이 이상적인 운영방법중의 하나가 될 수 있다.


어플리케이션 설계자들 또는 시스템 통합 엔지니어들이 보통, 단일 코어에서 하나의 SMP 시스템내의 멀티코어를 위한 코드를 개발하는데 기술적으로 많은 어려운 일이 있다. SMP 스케쥴러상에서 코드를 스케줄링할 때, 코드간의 상호 의존 관계를 고려하는 것이 아주 중요하다. 멀티 코어 시스템에서 코드를 실행할 때 발생하는 문제점에 대한 두 가지 원인이 있다.


하나는, 전역적인 세마포아 (semaphore)로서 마스터 인터럽트를 이용하는 것이다. (세마포아는 공유 리소스로의 동시 접근을 막기 위해 사용되는 개념이다). 하나의 빠른 시스템간의 세마포아로서 마스터 인터럽트를 사용하는 것이 단일 코어 운영체제상에서는 일반적이다. 둘째로는 시스템이 적절하게 공급되도록 하기 위해 우선 순위에 의존하는 것이다. 우선 순위 기반의 스케쥴링은 단일 코어에서는 동작을 잘 하지만, 다중 코어에서는 높은 순위의 스레드를 실행하기 위해 멀티 코어의 장점들을 없앨 수 있는 많은 문제점들이 있다. 예를 들면, 낮은 순위의 스레드가 하나의 코어상에 스케줄되어 있다면, 동시에 해당 데이타 블럭에 접근하려는 두 개의 스레드간에 경주 조건 (race condition) 을 발생시킬 수 있으며, 이는 성능상의 병목현상을 일으킬 수도 있다.


반대로, AMP 또한 SMP상에서 사용될 수도 있다. 사실상, 이것이 여러 운영체제간의 이상적인 관계일 수도 있다. 코드를 운영체제간에 나누어 동시에 코드를 실행하는 것이 보안성을 향상시키고 출력율을 높일 수 있는 가장 효율적인 방법이다. 이는 각 운영체제에게 효율적인 코드 실행을 위한 전용 캐쉬를 공급해준다.


대부분의 운영체제는 OS 도메인간의 통신을 위해 IPC (Inter-Processor Communication) 메카니즘을 이용하고 있으며, 이는 지적 재산권적인 문제를 일으킬 수 있다. 이러한 문제를 위해 멀티 코어 개발 위원회는 API 기반의 표준인 MCAPI (Multicore Communication API)를 만들었다. 이는 RTOS (Real Time OS) 및 GPOS(General Purpose OS) 업체가 MCAPI를 채택하면, 제안된 API 로 만들어진 코드를 이용하여 IPC 코드를 바꾸지 않고 다른 시스템에서 사용될 수 있다.


결론적으로, 다중 코어 SoC는 빠른 속도로 2010의 업계 표준이 되어가고 있으며, 운영체제도 하드웨어가 SMP 및 AMP 설계를 적용가능하도록 빠르게 바뀌어가고 있다. 또한, 운영체제 업체들도 MCAPI와 같은 IPC메카니즘을 위한 새로운 표준을 채택해 나가고 있다.

URL : http://www.eetimes.com/news/latest/showArticle.jhtml?articleID=224400326


<출처> NDSL, 2010. 4. 19

Posted by TopARA

댓글을 달아 주세요