제퍼넷 로고

내 SoC 설계에 NoC가 필요한 경우는 언제입니까?

시간

마이클 프랭크와 프랭크 쉬르마이스터

가장 단순한 제품을 제외하고 거의 모든 최신 시스템 온 칩(SoC) 장치는 네트워크 온 칩(NoC)을 사용하여 온 칩 통신을 구현합니다. 어떤 사람들은 NoC를 사용해야 하는지 또는 보다 기본적인 접근 방식으로 충분한지 의문을 제기합니다.

SoC에는 무엇이 있습니까?

SoC는 컴퓨터 또는 기타 전자 시스템의 대부분 또는 모든 구성 요소를 통합하는 집적 회로(IC)입니다. SoC는 지적 재산(IP) 블록이라는 여러 기능 단위로 구성됩니다. 이러한 블록의 대부분은 타사 공급업체에서 제공됩니다. 이 SoC를 경쟁 제품과 차별화하는 "비밀 소스"를 제공하는 나머지 부분은 사내에서 만들 것입니다.

이러한 IP 블록에는 MPU(마이크로프로세서 장치), GPU(그래픽 처리 장치) 및 NPU(신경망 처리 장치)와 같은 프로세서 코어가 포함될 수 있습니다. 다양한 유형의 메모리 IP 외에도 다른 IP 블록이 통신, 유틸리티, 주변 장치 및 가속 기능을 수행할 수 있습니다.

버스, 크로스바 스위치 및 NoC

각 IP 블록은 시스템의 메모리 공간 어딘가에 표시됩니다. "트랜잭션"이라는 용어는 시스템 메모리 공간의 주소에서 데이터 바이트를 쓰거나 읽는 작업을 의미합니다. SoC가 마법을 수행하려면 IP 블록이 어떤 형태의 상호 연결을 통해 서로 "대화"하기 위해 트랜잭션을 사용해야 합니다. "개시자" 및 "대상"이라는 용어는 트랜잭션을 생성하거나 트랜잭션에 응답하는 IP 블록을 나타냅니다.

1990년대에 SoC에 사용된 주된 상호 연결 메커니즘은 버스였습니다. 매우 단순화된 표현이 그림 1에 나와 있습니다. "버스"라고 표시된 라인은 데이터 버스, 주소 버스 및 관련 제어 신호를 구현하는 여러 와이어로 구성됩니다.

그림 1: 간단한 버스 상호 연결 구조.

많은 초기 SoC 설계에는 중앙 처리 장치(CPU) 형태의 단일 이니시에이터 IP 블록만 있습니다. 이니시에이터가 주소 버스에 주소를 배치하면 모든 대상 IP 블록이 이를 보고 그 중 하나가 스스로에게 "그게 나야"라고 말할 것입니다. Initiator가 이후에 읽기 명령을 내리거나 데이터 버스에 데이터를 배치하고 쓰기 명령을 내리면 적절한 대상이 응답합니다.

일부 초기 SoC는 여러 이니시에이터를 사용할 수 있습니다. 예를 들어 CPU에는 DMA(직접 메모리 액세스) 기능이 수반될 수 있으며, 이 기능을 사용하여 서로 다른 메모리 영역과 주변 장치 간에 대용량 데이터 블록을 빠르게 전송할 수 있습니다. 설계의 이니시에이터 수가 증가함에 따라 버스 제어를 위해 협상할 수 있는 일종의 중재 체계를 구현해야 합니다.

2000년대 초반에 SoC 설계가 점점 더 복잡해지면서(점점 더 많은 IP 블록을 포함하고 여러 이니시에이터를 사용함) 크로스바 스위치 기반 상호 연결 아키텍처를 사용하는 것이 일반화되었습니다(그림 2). 다시 한 번, 이 다이어그램의 각 라인은 데이터, 주소 및 제어 신호로 구성된 다중 와이어 버스를 나타냅니다.

그림 2: 간단한 크로스바 스위치 상호 연결 구조.

이 경우 모든 개시자는 모든 대상과 통신할 수 있습니다. 스위치는 이니시에이터에서 대상으로 그리고 다시 그 반대로 전달될 때 트랜잭션을 라우팅하며 여러 트랜잭션이 언제든지 "진행 중"일 수 있습니다. 각 스위치는 트랜잭션을 버퍼링하는 기능이 있으므로 많은 스위치가 동시에 도착하면 우선 순위가 더 높은 스위치를 결정할 수 있습니다.

SoC 디자인은 크기와 복잡성이 계속 증가했습니다. 1990년대 초반의 SoC에는 수십 개의 IP 블록만 포함될 수 있으며 전체 장치는 20,000~50,000개의 논리 게이트 및 레지스터로 구성될 수 있습니다. 그에 비해 오늘날 SoC는 수백 개의 IP 블록을 포함할 수 있으며 각 블록에는 수십만 또는 때로는 수백만 개의 논리 게이트 및 레지스터가 포함됩니다.

같은 기간 동안 데이터 버스의 폭은 8비트에서 16비트, 32비트, 64비트 이상으로 증가했습니다. 실제로 오늘날 데이터 전송의 일반적인 크기는 64바이트(512비트) 캐시 라인으로, 라우팅 정체 문제로 빠르게 이어집니다. 실리콘 칩 프로세스의 발전으로 인해 트랜지스터가 수십 배로 축소되었지만 칩의 와이어 폭이 같은 속도로 감소하지 않았기 때문에 이러한 문제가 악화되었습니다.

이러한 문제를 해결하기 위해 오늘날의 설계자는 네트워크 온 칩의 개념을 채택했습니다. 간단한 NoC 예가 그림 3에 나와 있습니다. 이 경우 트랜잭션에는 전달되는 정보 패킷이 포함됩니다. 각 패킷은 목적지 주소를 반영하는 헤더와 데이터, 명령, 요청 유형 등을 포함하는 본문으로 구성됩니다.

그림 3: 간단한 네트워크 온 칩 상호 연결 아키텍처.

여러 패킷의 정보가 특정 시간에 "진행 중"일 수 있으며 다시 한 번 스위치는 트랜잭션을 버퍼링하고 우선 순위를 지정할 수 있습니다. 모든 이니시에이터가 모든 대상과 통신할 필요가 없기 때문에 아키텍처에 이를 반영하여 상호 연결 요구 사항을 더욱 최소화할 수 있습니다.

기성품 또는 "자신의 롤"?

한 가지 관점에서 NoC를 사용하면 SoC 설계가 크게 간소화되지만 NoC를 개발하는 주체에 따라 크게 달라집니다. "소켓"이라는 용어는 IP 블록과 NoC 사이의 물리적 인터페이스(예: 데이터 폭) 및 통신 프로토콜을 나타냅니다. SoC 업계는 여러 소켓 프로토콜(OCP, APB, AHB, AXI, STBus, DTL 등)을 정의하고 채택했습니다.

서로 다른 데이터 폭 외에도 동일한 디자인의 IP 블록은 서로 다른 주파수에서 클록킹될 수 있습니다. SoC 설계에는 수백 개의 IP 블록이 포함될 수 있으며 그 중 다수는 다른 타사 공급업체에서 제공되므로 IP는 다른 소켓 프로토콜을 사용할 수 있습니다. 이러한 다양성을 수용하려면 개시자와 대상 소켓 간의 트랜잭션을 변환해야 할 수 있습니다.

여러 SoC 프로젝트를 지원하는 사내 NoC에는 여러 차원에서 구성 가능성과 유연성이 필요합니다. 결과적으로 처음부터 NoC를 개발하는 것은 SoC의 나머지 부분을 설계하는 것만큼 복잡하고 시간이 많이 소요될 수 있습니다. 또한 개발자는 이제 NoC와 나머지 설계의 두 가지를 확인하고 디버깅해야 합니다.

해결 방법은 다음과 같은 기성품 NoC 솔루션을 사용하는 것입니다. FlexNoC동맥. 이 경우 직관적인 인터페이스를 통해 설계자는 각 블록의 소켓 특성(폭, 프로토콜, 주파수 등)과 함께 아키텍처를 형성하는 IP 블록을 식별할 수 있습니다. 개발자는 또한 어떤 이니시에이터가 어떤 대상과 통신해야 하는지 지정할 수 있습니다. 이 시점에서 NoC를 생성하는 것은 사실상 "푸시 버튼" 작업입니다.

어쨌든 시스템 온 칩은 얼마나 복잡합니까?

설계에 네트워크 온 칩이 필요한 경우에 대한 질문으로 돌아가 보겠습니다. 직관적인 대답은 더 작은 디자인은 제외될 수 있다는 것입니다. 그러나 Semico Research의 Rich Wawrzyniak과의 최근 토론에서 그는 고객에게서 이미 확인된 사실을 확인했습니다. 산업 및 IoT 도메인의 더 작은 설계에서도 사용자는 종종 조립하고 조정해야 하는 10~100개의 IP 블록에 직면합니다.

아래 그림 4와 같이 Semico는 SoC의 네 가지 범주를 정의합니다. 그 중 100개, 즉 200-1개의 개별 블록과 200개 이상의 상호 연결이 있는 기본 SoC, 275-4개의 블록과 275개 이상의 복잡한 상호 연결이 있는 Value Multicore SoC, >5개의 블록과 10개 이상의 복잡한 상호 연결이 있는 고급 성능 SoC는 명확한 과녁입니다. 네트워크 온 칩의 자동화를 위한 목표. 그러나 상용 컨트롤러의 경우에도 설계자는 상호 작용해야 하는 100~XNUMX개의 개별 블록에 직면합니다.

엔지니어는 더 작은 설계를 위해 "그냥 NoC를 직접 수행"하는 경향이 있습니다. 그러나 종종 그들은 NoC 자동화를 활용하기 위해 Arteris에 전화를 걸었어야 한다는 사실을 곧 깨닫게 됩니다.

그림 4: Semico의 시스템 온 칩의 네 가지 복잡성 범주.

결론

이 칼럼의 시작 부분에 "내 SoC 설계에 NoC가 필요한 경우는 언제입니까?"라는 질문이 있습니다. 포즈를 취했다. 간단한 대답은 오늘날 점점 더 정교해지는 SoC 설계에는 라우팅 및 성능 목표를 최적으로 달성하기 위해 항상 NoC가 필요하다는 것입니다. 최첨단 NoC를 구현하는 가장 쉬운 방법은 다음에서 FlexNoC를 사용하는 것입니다. 동맥.

Frank Schirrmeister는 Arteris IP의 솔루션 및 비즈니스 개발 담당 부사장입니다.

spot_img

최신 인텔리전스

spot_img