고급 프로세스 노드가 더 이상 예전처럼 높은 클럭 속도와 낮은 전력 소비를 제공하지 못한다는 것은 이미 잘 알려진 사실입니다. 여러 세대에 걸쳐 로직 속도는 계속 증가해 왔지만 메모리 액세스 시간은 그렇지 않았습니다(그림 1). 프로세서의 속도 제한 경로는 거의 항상 메모리를 통해 이루어집니다. 이는 반도체 물리학의 현실적인 한계로 인해 미래의 프로세스 노드에서도 변하지 않을 상황입니다.

동시에 임베디드 애플리케이션의 최대 클럭 속도는 1GHz~2GHz 범위에서 정점을 찍었습니다(그림 2). 물론 2GHz 이상으로 클럭되는 몇 가지 예외가 있지만 대부분의 애플리케이션에서는 불가능합니다. 클럭 속도에 따라 급격히 증가하는 전력 소비와 면적에는 제한이 있습니다. 대부분의 임베디드 설계는 1GHz 미만으로 클럭되고 있으며 이는 미래에도 변하지 않을 것입니다. 클럭 속도를 높여 성능을 향상시키는 것은 대부분의 임베디드 설계에서 현실적인 접근 방식이 아닙니다.

문제는 임베디드 애플리케이션에 대한 성능 요구 사항이 계속 증가하고 있다는 점입니다. 이는 경쟁, 새로운 기능의 추가, 애플리케이션 공간의 요구 사항 변화로 인해 발생합니다. 예를 들어, 더 큰 용량과 더 빠른 액세스 속도에 대한 수요로 인해 SSD 드라이브의 크기가 빠르게 증가하고 있습니다. 또한 드라이브 수명을 연장하고 데이터 액세스 및 성능을 개선하기 위해 컴퓨팅 스토리지와 인공 지능이 추가되고 있습니다. 이 모든 것이 SSD 컨트롤러와 이를 구현하는 데 사용되는 프로세서에 대한 성능 요구 사항을 높이고 있습니다.

프로세서 성능 향상

프로세서 성능을 향상시키기 위해 많은 방법이 사용되어 왔습니다. 메모리 속도의 한계를 극복하기 위해 파이프라인 단계 수를 늘리는 방법이 수년 동안 사용되어 왔습니다. 예를 들어, 2주기 메모리 액세스를 지원하는 DesignWare® ARC® HS 프로세서 10단계 파이프라인은 16 FFC 공정에서 1.8GHz(최악의 경우)로 클럭될 수 있습니다. 임베디드 설계의 클럭 속도에는 한계가 있으므로 프로세서 파이프라인에 더 많은 스테이지를 추가해도 이점이 제한적입니다. 향후에는 상황이 달라질 수 있지만 현재로서는 10단계 파이프라인이 임베디드 설계에 최적입니다.

슈퍼스칼라 구현은 증가된 면적과 전력 대비 성능 향상이라는 측면에서 좋은 절충안입니다. 단일 이슈 아키텍처에서 이중 이슈로 전환하면 면적과 전력을 제한적으로 늘리면서 RISC 성능을 최대 40%까지 향상시킬 수 있습니다. 이는 임베디드 프로세서를 위한 좋은 절충안입니다. 트라이 이슈 또는 쿼드 이슈로 전환하면 면적과 전력은 더 증가하지만 성능은 더 낮아집니다. 어떤 대가를 치르더라도 성능은 임베디드 프로세서의 목표가 될 수 없습니다.

주문 외 실행(OoO)을 추가하면 클럭 속도를 높이지 않고도 임베디드 애플리케이션의 성능을 향상시킬 수 있습니다. 일반적으로 전체 OoO를 지원하는 CPU는 임베디드에 적합하지 않으며, 제한된 접근 방식을 사용하면 프로세서 크기를 늘리지 않고도 최적의 성능 향상을 얻을 수 있습니다. 제한적 OoO는 일반적으로 하이엔드 임베디드 프로세서에 사용됩니다.

캐시는 메모리를 프로세서에 더 가깝게 가져와 성능을 향상시키는 데 사용됩니다. 캐시는 프로세서에 대해 단일 사이클 액세스를 가지며, 필요할 때 정보가 캐시에 저장되어 있기 때문에 성능이 향상됩니다. 자주 사용되는 코드와 데이터는 레벨 1 캐시에 보관됩니다. 사용 빈도가 낮은 코드와 데이터는 액세스 속도가 느린 레벨 2 캐시 또는 외부 메모리에 보관되었다가 필요할 때 액세스됩니다. 멀티코어 프로세서의 경우 L1 데이터 캐시 간의 일관성을 유지하면 성능도 향상됩니다. L1 캐싱과 일관성은 임베디드 프로세서에서 일반적으로 사용되는 반면, L2 캐시(및 레벨 3)는 고급 애플리케이션에만 사용됩니다.

임베디드 설계에서 다중 프로세서의 사용이 증가하고 있습니다. 몇 년 전만 해도 일반적인 시스템 온 칩(SoC)에는 1~2개의 프로세서가 탑재되었습니다. 오늘날에는 저가형 설계에서도 5개 이상의 프로세서를 사용하는 것이 일반적이며, 그 수는 점점 더 늘어나고 있습니다. 이를 지원하기 위해 미드레인지 및 하이엔드 임베디드 애플리케이션용 프로세서는 멀티코어 구현을 제공합니다. 2개, 4개, 8개의 CPU 코어를 지원하는 프로세서를 사용할 수 있습니다. Linux 또는 다른 운영 체제를 사용하면 프로그래머가 CPU 코어 전체에서 원활하게 작동하면서 실행의 균형을 맞춰 성능을 향상시킬 수 있습니다.

임베디드 설계에서 하드웨어 가속기의 사용이 증가하고 있습니다. 하드웨어 가속기는 최소한의 전력과 면적으로 높은 성능을 제공하면서 프로세서의 부하를 덜어줍니다. 하드웨어 가속기의 가장 큰 단점은 프로그래밍이 불가능하다는 점입니다. 프로세서와 함께 작동하도록 가속기를 추가하면 이 문제를 완화할 수 있습니다. 안타깝게도 기존 프로세서는 하드웨어 가속기를 지원하는 기능이 제한적이거나 아예 없습니다. ARC 프로세서와 같은 일부 프로세서는 사용자가 프로세서 파이프라인에 하드웨어를 추가할 수 있는 사용자 지정 명령어를 지원합니다. 사용자 지정 명령도 매력적이지만 하드웨어 가속기는 추가적인 이점을 제공하며 프로세서와 함께 사용할 경우 상당한 성능 향상을 제공할 수 있습니다.

임베디드 애플리케이션의 프로세서 성능을 향상시키는 데는 여러 가지 어려움이 있습니다. 프로세서는 이미 더 심층적인 파이프라인, 슈퍼스칼라 구현 및 OoO 도움말을 지원하고 있지만 여기까지만 가능하며 캐싱은 일관성과 마찬가지로 이미 많이 사용되고 있기 때문에 더 이상의 성능 향상은 기대하기 어렵습니다. 임베디드 설계자가 이미 추구하고 있는 더 높은 성능의 길은 설계에 더 많은 CPU 코어와 하드웨어 가속기를 구현하는 것입니다.

차세대 임베디드 프로세서 아키텍처

차세대 프로세서는 대규모 멀티코어 구현과 하드웨어 가속에 대한 지원을 추가할 것입니다(그림 3). 프로세서 공급업체는 기존 프로세서에 인터페이스를 추가하는 것 이상의 일을 해야 합니다. 4개 또는 8개의 CPU 코어를 지원하는 프로세서는 이미 최대 주파수 한계에 도달했으며 타이밍 마감에 심각한 문제가 발생할 수 있습니다. 코어를 더 추가하는 것은 문제를 더욱 악화시킬 뿐입니다. 차세대 프로세서는 타이밍 클로저를 촉진하고 속도 제한을 해결하며 내부 대역폭을 늘리기 위해 내부 프로세서 인터커넥트를 완전히 재설계하는 것부터 시작해야 합니다. 또한 외부 인터페이스의 대역폭을 늘려 프로세서 안팎으로의 데이터 이동을 지원해야 합니다.

서비스 품질(QoS)은 네트워크 온 칩(NOC)에서 광범위하게 구현되어 왔지만 멀티코어 프로세서에서는 구현이 제한적이었습니다. 차세대 프로세서에서는 프로그래머가 각 CPU 코어와 가속기에 대한 내부 대역폭을 관리하여 성능을 극대화할 수 있는 기능이 제공될 예정입니다. 이는 애플리케이션에 따라 다르며 모든 설계에 QoS가 필요한 것은 아니지만, 예측 가능한 성능을 보장하기 위해 많은 설계에서 필수적인 요소가 될 것입니다.

대규모 프로세서 클러스터의 장점

대형 멀티코어 프로세서는 소형 멀티코어 프로세서에 비해 장점이 있습니다. 4개의 CPU 코어를 가진 3개의 프로세서 클러스터가 아닌 12개의 CPU 코어를 가진 프로세서를 구현하면 CPU 코어 간의 지연 시간이 줄어들고 코어 간 스누핑을 직접 지원할 수 있습니다. 또 다른 장점은 소프트웨어 확장성이 향상된다는 점입니다. 12-CPU 코어 프로세서는 프로그래머에게 소프트웨어 분할 방식에 대한 유연성을 제공하며, 필요한 성능에 따라 작업을 처리하는 데 사용되는 코어 수를 동적으로 할당할 수 있습니다. 여러 프로세서 클러스터를 사용하면 CPU 코어 간에 균일하게 액세스할 수 없기 때문에 이러한 수준의 소프트웨어 성능을 제어하기가 더 어렵습니다.

또한 대형 멀티코어 프로세서는 하드웨어 가속기와 긴밀하게 결합함으로써 이점을 얻을 수 있습니다. 하드웨어 가속기 인터페이스를 SoC 버스를 통해 연결하는 대신 프로세서 내부로 이동하면 SoC 버스의 지연 시간과 트래픽을 줄이는 동시에 데이터 공유 및 시스템 성능을 향상시킬 수 있습니다. 또한 공유 사용자 레지스터를 구현하면 가속기에 대한 프로그래밍 가능한 제어의 효율성을 높일 수 있습니다.

ARC HS5x/HS6x

Synopsys의 차세대 DesignWare ARC HS5x 및 ARC HS6x 프로세서 IP는 앞서 설명한 여러 가지 방법을 활용하여 프로세서 성능을 향상시킵니다. 이들 제품은 고속 10단계 이중 이슈 파이프라인으로 제작되어 전력과 면적을 제한적으로 늘리면서 기능 유닛의 활용도를 높일 수 있습니다. ARC 64비트 HS6x 프로세서는 전체 64비트 파이프라인과 레지스터 파일을 갖추고 있으며 64비트 가상 및 52비트 물리적 주소 공간을 지원하여 현재 및 미래의 대용량 메모리를 직접 주소 지정할 수 있을 뿐만 아니라 효율적인 데이터 이동을 위한 128비트 로드 및 스토리지를 지원합니다(그림 4).

32비트 ARC HS5x 및 64비트 HS6x 프로세서의 멀티코어 버전에는 비동기 클록킹과 최대 800GB/s의 내부 총 대역폭으로 타이밍 클로징을 용이하게 하도록 설계된 고급 고대역폭 내부 프로세서 인터커넥트가 포함되어 있습니다. 새로운 ARC HS 프로세서의 멀티코어 버전에는 최대 12개의 CPU 코어를 연결하고 최대 16개의 사용자 하드웨어 가속기를 위한 인터페이스를 지원하는 고급 인터커넥트 패브릭이 포함되어 있습니다. 각 코어는 자체 전원 도메인에 상주하며 다른 코어와 비동기 클록 관계를 맺을 수 있어 타이밍 클로저를 지원합니다. 모든 DesignWare ARC 프로세서와 마찬가지로 HS5x 및 HS6x 프로세서는 고도로 구성 가능하며 임베디드 애플리케이션의 고유한 성능, 전력 및 면적 요구 사항을 충족하는 맞춤형 명령어를 지원할 수 있는 APEX(ARC Processor EXtension) 기술을 구현합니다.

소프트웨어 개발을 가속화하기 위해 ARC HS5x 및 HS6x 프로세서는 고효율 코드를 생성하는 ARC 메타웨어 개발 툴킷의 지원을 받습니다. 이 프로세서에 대한 오픈 소스 도구 지원에는 Zephyr 실시간 운영 체제, 최적화된 Linux 커널, GNU 컴파일러 컬렉션(GCC), GNU 디버거(GDB) 및 관련 GNU 프로그래밍 유틸리티(binutils)가 포함됩니다.

요약

임베디드 애플리케이션에 대한 성능 요구 사항은 계속 증가할 것입니다. 이러한 애플리케이션에 사용되는 프로세서의 성능도 향상되어야 합니다. 이는 면적과 전력은 제한되어 있고 프로세서 성능 향상은 이미 이루어졌기 때문에 쉽지 않은 일입니다. 고급 프로세스 노드는 더 이상 예전만큼의 이점을 제공하지 못하며 임베디드 프로세서 속도는 제한되고 있습니다. 슈퍼스칼라 및 OoO 기능은 하이엔드 프로세서에서 흔히 볼 수 있으며, 64비트는 필요하지만 성능 향상에 한계가 있습니다. 8개 이상의 CPU 코어를 지원하는 차세대 멀티코어 프로세서와 하드웨어 가속기의 내부 연결이 필요합니다. DesignWare ARC HS5x 및 HS6x 프로세서 IP 와 같은 새로운 프로세서는 확장 가능한 성능과 기능을 제공하는 동시에 설계자가 임베디드 애플리케이션의 전력 및 면적 요구 사항을 관리할 수 있도록 해줍니다. 고급 아키텍처를 기반으로 구축되고 고속 내부 인터커넥트로 구현된 이 프로세서는 오늘날 하이엔드 임베디드 애플리케이션의 성능 요구 사항을 충족하는 동시에 향후 설계를 위한 충분한 여유를 제공합니다.