멀티코어 SoC가 등장함에 따라 반도체 디바이스, 보드, 서브시스템 사이의 경계가 새롭게 정립되고 있으며, 이에 따라 칩 대 칩, 보드 대 보드 인터커넥트의 필요성이 새롭게 대두되고 있다. 기존의 표준에 기반한 인터커넥트로는 이러한 변화에 대응할 수가 없기 때문이다.
1970년대에 처음으로 마이크로 프로세서가 발표되면서 일반적인 컴퓨팅 시스템은 개별 프로세서, 메모리 컨트롤러, I/O 인터페이스 디바이스를 사용하는 단일 보드로 구성되었고 각 디바이스는 보드 레벨의 버스로 서로 연결되었다. 그후 더 높은 성능이 요구되자 여러 개의 보드가 함께 조립되었으며, 백플레인이 시스템 레벨의 버스를 사용하여 카드 사이의 통신 기능을 제공했다.
초기에는 이러한 보드 및 시스템 인터커넥트 프로토콜이 독자적인 규격을 따랐다. 하지만 시간이 지날수록 이러한 비공개 프로토콜들은 이더넷, PCI 익스프레스 또는 RapidIO 같은 표준 인터커넥트 프로토콜에 자리를 내주게 되었다.
이와 동시에 무어의 법칙에 따라 IC 기술은 크게 발전하였으며, 특정 가격대에서 사용 가능한 트랜지스터의 수와 속도 모두 크게 향상되었다. 이러한 추세들로 인해 프로세서 성능은 비약적으로 발전하였다.
멀티코어 SoC의 대두
반도체 디바이스는 대부분의 세대에서 이러한 선순환을 거듭해왔다. 하지만 불행히도 단일 프로세서의 성능 발전 속도는 이제 사실상 멈춘 상태이다. 이러한 결과를 낳게 한 가장 중요한 요인은 전력 소모다. 트랜지스터의 소형화는 스위칭 주기의 단축을 이끌어냈다. 트랜지스터가 축소되면서 누설 전류량은 늘어났으며, 이는 고정 소비 전력의 증가로 이어졌다. 또한 트랜지스터의 스위칭 속도가 빨라짐에 따라 동적 소비 전력도 늘어났다.
오늘날의 반도체 공정 기술의 물리적 특성에 따라 전력 소비가 늘어나게 되면서 몇 가지 현실적인 문제가 부각되었다. 첫째는 개별 프로세서의 성능이 공급할 수 있는 전력량과 시스템 내에서 방출되는 전력량에 의해 제한된다는 것이다. 둘째는 트랜지스터 예산은 증가하지만 달성 가능한 클록 속도는 그렇지 않다는 것이다.
트랜지스터 예산이 꾸준히 증가함에 따라 업계는 복수의 프로세서 코어에 메모리 컨트롤러, 애플리케이션 가속기, I/O 인터페이스가 통합된 멀티코어 SoC 디바이스로 빠르게 옮겨갔다. 시스템 전반에 걸쳐 충분한 병렬 처리가 가능하다면 멀티코어 디바이스로 시스템 성능을 현저히 개선할 수 있기 때문이다.
개별 구성요소의 성능이 향상됨에 따라 각 구성요소가 사용하는 인터커넥트의 대역폭도 늘어났다. 각각의 기능이 하나의 멀티코어 SoC 디바이스 내에서 중첩됨에 따라 이러한 요구 조건 역시 시급히 해결돼야 한다는 목소리가 여기저기서 터져나왔다.
SoC가 부각되면서 개별 구성요소와 각 구성요소가 구현하는 시스템 아키텍처 사이의 문턱이 낮아졌다. 과거에는 하나의 보드에 완벽한 컴퓨팅 시스템 한 개가 탑재되었다면, 현재는 여러 개의 컴퓨팅 시스템이 하나의 디바이스에 구현되고 있는 것이다.
SoC 디바이스로 옮겨가는 추세는 SoC와 다른 디바이스 및 네트워크 사이의 인터커넥트에 대한 요구 조건을 변화시켰다. 초기의 경우, 보드 및 시스템 레벨 인터커넥트는 공유 버스를 사용했다. 인터커넥트 성능 향상에 대한 요구에 대해서는 클록 속도 향상과 버스 대역폭 확대 등 과거 프로세서에서와 유사한 형태의 대응 방식이 이루어지곤 했었다. 그러나 이러한 대응들은 역시 프로세서와 마찬가지로 물리적 특성에 따라 결국 버스를 공유하는 디바이스의 수를 줄일 수 밖에 없었다. 이는 버스 분할, 계층형 토폴로지, 그리고 궁극적으로 포인트-투-포인트, 스위치 기반의 네트워크로 이어졌다.
트래픽 스트림의 증가
임베디드 시스템은 대개 제어 플레인, 데이터 플레인, 시스템 관리 플레인이라는 세 가지 서브시스템 기능으로 분할된다. 시스템이 하나의 컴퓨팅 시스템으로 구성된 경우 시스템 레벨의 트래픽 스트림 수가 제한된다. 원칙적으로 가용한 버스 기반의 인터커넥트에서는 한번에 하나의 트래픽 스트림만을 수용할 수 있으므로 이는 다행한 일이다(그림 참조).
시스템 성능을 개선하기 위한 목적으로 각각의 기능마다 전용 프로세서가 적용되었지만, 복수의 동시 통신 스트림으로 인해 곧 서비스 품질(QoS) 문제가 떠올랐다. 대부분의 경우 대역폭을 최적화하고 개별 스트림 사이의 불필요한 상호 작용을 방지하고자 세 가지 독립적인 인터커넥트가 사용되었다. 이러한 시스템에서 각각의 프로세서는 단일 기능을 수행하며 단일 스트림 또는 소수의 트래픽 스트림만을 처리한다.
하지만 멀티코어 SoC로 인해 이러한 추세는 획기적으로 달라졌다. 각 코어가 자체 스트림을 처리함에 따라 이제는 칩 하나에서 수많은 트래픽 스트림을 예상할 수 있게 된 것이다.
멀티코어 아키텍처의 임시방편으로 하나의 멀티코어 SoC에 제어, 데이터, 관리 플레인 기능의 통합을 추구하면서 기존 코드의 병렬 처리라는 임박한 문제가 예상된다. 이는 예컨대 4개 코어를 탑재하고 있는 디바이스에 최소한 세 가지 이상의 스트림 증가를 야기할 것이다. 장기적으로 볼 때 소프트웨어는 멀티코어 중심이 될 것이며, 여러 개의 코어가 개별 데이터 또는 제어 플레인 기능을 수행하는 방향으로 되돌아갈 것이다. 어떤 경우라도 멀티코어 SoC를 사용한다면 복수의 트래픽 스트림이 존재하게 된다. 미래의 SoC에서는 8개, 16개 또는 그 이상의 코어를 사용하면서 향후 2~4년 사이에 단일 디바이스에서 지원하는 스트림 수가 크게 증가할 것이 예상된다.
다시 원래의 질문으로 돌아가보자. 현재의 인터커넥트 솔루션으로 과연 여러 개의 트래픽 스트림을 지원할 수 있는가? 간단히 답하자면 그렇다고 할 수 있다. 단일 인터커넥트로 전송하기 전에 멀티플렉싱을 적용하면 여러 개의 스트림을 지원할 수도 있을 것이기 때문이다. 하지만 여기에는 두 가지 해결해야 할 과제가 있다. 하나는 대상에서 스트림을 어떻게 디멀티플렉싱할 것인가 이고, 다른 하나는 보장 대역폭, 평균 또는 최소 대기 시간 등 각 스트림에 고유한 서비스 매개변수를 어떻게 지정할 것인가 하는 것이다.
이러한 문제를 해결하려면 몇 가지 프로토콜 기능이 필요하다. 첫째, 프로토콜에서 개별 스트림의 차별화를 지원해야 한다. 다시 말해, 프로토콜이 선로상의 패킷을 검사하고 해당 선로에 어떤 스트림이 속하는지 판단할 수 있어야 한다. 둘째, 패킷이 인터커넥트를 통과할 때 프로토콜에서 특정 서비스 매개변수를 적용할 수 있어야 한다. 이는 중재 및 흐름 제어를 통해 가능하다. 예를 들어, 견실한 QoS라면 인터커넥트상의 혼잡 현상 범위를 제한할 수 있는 복수의 흐름 제어 메커니즘이 필요하다. 이러한 메커니즘에는 링크 대 링크 방식의 종합적인 진입/퇴출 관리가 포함될 수 있다.
OSI 형식의 계층형 프로토콜을 사용하는 최신 포인트-투-포인트 인터커넥트라면 이러한 새로운 스트리밍 요구조건을 만족할 것이라고 짐작할 수도 있다. 하지만 불행히도 이보다 더 잘 준비된 것이 있는 게 현실이다.
다양한 인터커넥트 기술
오늘날의 임베디드 시스템에서 가장 널리 알려지고 사용되는 인터커넥트는 아마도 이더넷일 것이다. 이더넷의 확장성은 수년간의 서비스를 통해 입증되었다. 기본적인 레이어 2 이더넷 프레임은 데이터그램 형식의 트랜잭션만을 지원하며, 스트림 차별화 헤더 필드가 정의되어있지 않다. 그에 따라 다양한 트래픽 차별화 방식이 그 위 계층에 구현되었으며, 그 예로 레이어 2의 VLAN 태그에서 레이어 3 트래픽에 적용되는 IP 헤더상의 광범위한 5 터플(5-tuple)이 있다. 후자는 수백만 가지의 서로 다른 스트림을 지원할 수 있다.
불행히도 이더넷에서는 QoS를 구현하기 어렵다는 사실이 증명되었다. 주된 원인은 폭넓게 도입된 흐름 제어 메커니즘이 없기 때문이며, 제한적인 링크 수준의 PAUSE-프레임 프로토콜만이 적용된다. 링크 수준을 넘어서는 문제에 대응하는 기술로서 관심을 가질 만한 것이 몇 가지 있다. 여기에는 레이어 2에서 VLAN 우선 순위 태그(802.1Q)를 사용하는 것과 레이어 2와 3 사이에 MPLS 헤더를 사용하는 방법이 있으며, 트래픽 관리 또한 흔히 적용되는 솔루션이다. 비공개 임베디드 시스템의 경우 대부분 이러한 체계의 일부만이 적용되며, 이더넷과 함께 사용할 수 있는 완벽하고 일관적인 접근 방식은 정의된 바가 없다.
이더넷을 구성하는 프로토콜 중 많은 부분이 대개 소프트웨어에서 구현되므로 또 다른 관련 문제가 야기된다. 비교적 하드웨어 지원이 적으므로, 소프트웨어 트랙을 통과할 때 트래픽 흐름에 부과되는 대기 시간과 대기 시간 지터에 의해 달성 가능한 QoS 매개변수가 제한된다는 점이다.
RapidIO 인터커넥트 사양은 1999년 최초로 정의되었으며, 이는 이더넷보다 발전된 시스템 인터커넥트 솔루션을 상징한다. 임베디드 시스템을 대상으로 하는 이 솔루션은 유지보수, 읽기/쓰기, 메시징, 데이터그램 형태의 데이터 스트리밍을 포함한 기본적인 트랜잭션 유형을 여러 개 정의하는 사양이다. 메시징과 데이터 스트리밍은 최소 4Kbyte 메시징이 포함된 스트림 4개에서 64Kbyte 데이터 스트리밍 트랜잭션을 지원하는 수백만 개의 스트림까지 광범위한 기능을 직접 지원한다.
QoS는 이 사양의 개발 단계에서 중요한 고려 사항이었으며, 재시도 및 크레디트 기반 링크 수준 흐름 제어, 종합적인 XON/XOFF 및 트래픽 관리 프로토콜 등 몇 가지 흐름 제어 메커니즘이 포함되어 있다. 이와 함께 이 사양에는 모든 구현 방식에서 지원해야 하는 세 가지 최우선 흐름이 정의되어 있다. 높은 우선 순위의 흐름에 포함된 트래픽이 부하가 많은 시스템에서 우선 순위가 낮은 흐름 내의 트래픽보다 낮은 대기 시간으로 통과되어야 한다.
임베디드 시스템에 널리 사용되고 있는 또 다른 인터커넥트 기술로 PCI 익스프레스가 있다. 원래 PC와 서버 시장을 대상으로 개발된 PCI 익스프레스 인터커넥트는 구성, 이벤트 메시징, 읽기/쓰기 트랜잭션을 지원한다. 데이터 메시징 또는 데이터그램 트랜잭션 기능이 없으므로, 주소별로 또는 정의된 가상 채널(VC) 8개와 트래픽 클래스를 사용하여 트래픽 차별화를 구현해야 한다. 현재까지 주소 기반의 차별화는 표준화되지 않았으며, 대부분의 구현 사례는 2개 이상의 VC를 지원하지 않는다. 이는 표준 PCI 익스프레스 인터커넥트 솔루션으로 복수의 트래픽 스트림을 차별화하는 기능을 극도로 제한하는 요소이다.
또한 QoS 지원도 시스템 차원에서 제한된다. 포인트-투-포인트 구현에 충분하며, 견실한 가상 채널 기준의 크레디트 기반 링크 수준 흐름 제어 솔루션도 있다. 하지만 PCI 익스프레스 인터커넥트 기술은 이 기능을 넘어서는 흐름 제어를 지원하지 못한다.
인터커넥트 선택의 고려 사항
시스템 설계자들은 곧 다수의 코어, 가속기 블록, I/O 기능이 포함된 복잡한 SoC 디바이스를 활용하게 될 것이다. 외부 인터커넥트는 견실한 시스템 솔루션의 핵심 요소이다. 이러한 추세에 따라 시스템 내의 트래픽 스트림 수가 상당량 증가하며, 상호 연결과 그 구현 방식에 전례 없는 압박을 가할 것이다.
이더넷은 확실한 트래픽 차별화를 지원하지만 실제 적용 환경에서 견실한 QoS 기능을 갖추지 못했다. 대부분의 PCI 익스프레스 인터커넥트 구현 사례에는 트래픽 차별화 기능이 아예 결여되어 있다. PCI 익스프레스 인터커넥트 기술은 제한적인 흐름 제어 때문에 장래의 멀티코어 디바이스에 대비한 준비가 가장 미비한 것으로 보인다. RapidIO는 세 가지 우선 순위 흐름을 통해 수백만 스트림의 차별화된 트래픽을 지원하며 견실한 QoS 기능을 갖춰 세 가지 기술 중 가장 유리한 고지를 차지하고 있다.
대부분의 멀티코어 SoC는 현재 공통 SerDes PHY를 통해 복수의 외부 인터커넥트 프로토콜을 지원하고 있다. 예를 들어, 8개 코어를 탑재하고 있는 프리스케일의 QorIQ P4080 프로세서의 SerDes 레인 16개를 앞서 설명한 프로토콜 중 하나 이상을 지원하도록 구성할 수 있다. 이러한 유연성은 설계자에게 작업에 가장 적합한 프로토콜을 선택할 수 있도록 지원하는 것이다.
프로토콜을 선택할 때 고려해야 할 요구조건에는 일반적으로 성능, 대기 시간 요구조건, 타사 디바이스와의 호환성, 외부 프로트콜 지원 필요성 등이 포함된다. 멀티코어 SoC가 출현함에 따라 이제 새로운 요구조건에 트래픽 차별화 기능과 견실한 QoS의 기반이 되는 효율적인 흐름 제어가 포함되어야 한다.
그레그 쉬픈(Greg Shippen), 네트워크 시스템 사업부 시스템 설계자|프리스케일 반도체
====================
댓글 없음:
댓글 쓰기