ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [컴퓨터구조] SoC
    공학/컴퓨터구조 2023. 12. 10. 19:48

    글의 참고

    - Cortex-A9 Technical Reference Manual

    - Cortex-A9 MPCore Technical Reference Manual


    글의 전제

    - 밑줄로 작성된 글은 강조 표시를 의미한다.

    - 그림 출처는 항시 그림 아래에 표시했다.


    글의 내용

    - Overview

    " `Cortex-A9 Technical Reference Manual` 문서에서는 Cortex-A9 Processor 를 설계하는데 2 가지 방법을 제시한다.

    1. Uni-processor
    2. Multi-Core processor(최대 4개 까지 가능)

     

     

    " 아래 구조를 보면 알 수 있겠지만, Cortex-A9 이라는 것은 하나의 Processor 를 의미한다. 즉, Cortex-A9 자체가 SoC 는 아니다. Cortex-A9 MPCore 도 마찬가지다. 다수의 Cortex-A9 를 의미할 뿐이다. 그런데, `Cortex-A9 MPCore Technical Reference Manual` 문서에서는 벤더사(Qualcomm, Samsung, Mediatek 등) 들을 위해서 주변 IP`s 들을 어떻게 구성해야 하는지를 친절하게 알려준다. 그래서, SoC 를 처음 공부하는 사람들에게는 `Cortex-A 가 SoC 구나!` 하는 착각을 만들기도 한다. 그러나, Cortex-A 는 Processour Unit 의 구조를 의미한다. SoC 는 Processour Unit 과 주변 IP`s 들의 조합으로 이루어진다. 예를 들어, Samsung Exynos4412 모델이 Cortex-A9 MPCore 기반의 SoC 라고 볼 수 있다.

     

     

    " Exynos4412 의 block diagram 은 아래와 같다. 아래에서 `Multi-Core Processing Unit` 부분만 Cortex-A 를 의미한다. 나머지 subsystem 들은 AMBA 를 따르는 IP`s 들이라고 보는 것이 맞다.

     

     

    " 아래 그림은 `ARM Ecosystem` 을 보여준다. Embedded 분야에서는 intel, arm 과 같은 processor 제조사에 붙는 별칭이 없다.그냥, `arm` 이고 `intel` 이다. arm 설계도를 사서 자체 chip 을 개발하는 회사(qualcomm, broadcom, apple, samsung 등) 을 `SoC Manufacturer` 라고 부른다. 국내에는 2023.12 을 기준으로 텔레칩스, 파두 등이 있다. 그리고, SoC 제조사에서 만든 칩을 가지고 실제 유저가 사용하는 `제품` 을 만드는 회사를 OEM(`Original Equipment Manufacturer`) 이라고 부른다. 대표적으로 samsung & apple 이 있다. 그리고, 대부분의 일반 제조업 회사들이 전부 여기에 속한다. 마지막으로, `end user` 는 OEM 에서 만든 실제품을 사용하는 사용자를 의미한다.

     

    " 그런데, samsung & apple 같은 경우는 2개 이상 영역에서 활동하는 것을 볼 수 있다. 맞다. samsung 이나 apple 은 초기에는 OEM 에만 속해있었지만, 자체 chip 을 개발하면서 현재는 all-rounder 로 활동중이다. samsung 같은 경우는 arm 기반에 exynos 칩을 내놓았지만, 현재 거의 빛을 보지 못하고 있다. 그러나, apple 같은 경우는 자체 processor 설계부터 arm 기반의 SoC 까지, 자기네 제품군들에 대해 최적화한 칩들을 선보이면서 매년 전 세계를 놀래키고 있다. 심지어, apple 은 자체 OS 인 iOS 를 통해 software 마저도 자체 개발에 성공하면서, 최적화에 끝판왕을 달리고 있다.

    https://www.researchgate.net/figure/Relationships-in-the-ARM-Ecosystem_fig2_357474242

     

     

    - ADP ARM SoC

    " ARM(ARM Development Platform) SoC 개발 가이드 문서를 보면, 아래와 같은 block diagram 을 확인할 수 있다. 현재 시점(2023.12)을 기준으로 아래 block diagram 은 현재까지도 사용하고 있는 구조라고 볼 수 있다. 문서에서 제시하는 스펙을 요약하면 다음과 같다.

    더보기

    1.2 Components

     

    The ADP SoC consists of the following:
    1. A standalone development motherboard, ARM® Versatile™ Express Juno Development Platform V2M-Juno r2, instantiating the ADP SoC fabricated in TSMC28HPM.

    2. A Software Development Kit (SDK) that supports each hardware platform and contains the following:
     - ADP AArch64 firmware with standardized Application Programming Interfaces (APIs).
     - AArch64 Linux kernel with big.LITTLE MP support.
     - AArch32 and AArch64 Linux user space example.

    3. DS-5 tool support.

    The processor clusters contain the following fully coherent processor clusters:
     - Dual core Cortex®-A72 processor cluster.
     - Quad core Cortex-A53 processor cluster.

    4. The GPU cluster contains an I/O-coherent Mali™-T624 Series GPU.

    5. The compute platform also contains a Cortex-M3 System Control Processor (SCP) for power control and thermal management.

    6. External interfaces include:
     - External memory capability includes DDR3-1600 dual channel striped memories.
     - USB2 and a custom SoC to Field Programmable Gate Array (FPGA) prototyping extension interface.
     - A Peripheral Component Interconnect Express (PCIe) Gen2.0 four lanes, Root Port, and PHY, that has both I/O coherent and non-coherent modes.

     

    " SoC 구조를 볼 때, 가장 먼저 공부해야 할 부분은 on-chip internal bus interface 다. 아래 구조를 기준으로 말하자면, arm 에서 AMBA 구조를 보여준다. AMBA 에는 ADB(AMBA Doamin Bridge)-400, CCI-400, NIC-400, TZC-400, DMC-400 등이 있다.


    Juno r2 ARM Development Platform SoC Technical Overview

     

     

    " 위에 block diagram 을 좀 더 내부적으로 살펴보면 아래와 같다. Cores 들을 제외한 I/O subsystems 들은 모두 MMU 를 거치는 구조임을 확인할 수 있다.  

     

     

     

    - ARM cluster

    " 여태까지는 ARM Core 하나가 어떤 components 들로 구성되어있는지를 확인했다. 그러나, arm 은 여러 cores 들을 하나의 그룹으로 묶어서 관리한다. arm 에서는 이 그룹을 `cluster` 라고 부른다. 왜 여러 cores 들을 하나의 cluster 로 묶어서 관리할까? 여러 가지 이유가 있을 수 있지만, 가장 많이 거론되는 이유는 `cache coherent` 다. 이미 과학적으로 memory hierarchy 구조가 늘어날 수 록(cache level 이 증가할 수 록), 퍼포먼스가 좋아지는 부분은 입증되었다. 그래서, 하나의 cluster 안에 존재하는 cores 들끼리 공유하는 cache 를 만들게 된다. 이렇게, L2 Cache 가 도입되면서 cluster 의 개념도 함께 등장했다. 아래 그림은 Cortex-A57 single cluster 의 block diagram 을 나타낸다. 그런데, 아래에서 GIC 는 도대체 어디에 위치하고 있는 걸까? 

     


    ARM Cortex-A Series Programmer’s Guide for ARMv8-A

     

     

    " 아래 그림에서 cluster 와 L2 cache 의 관계를 좀 더 명확하게 확인할 수 있다.  


    ARM Cortex-A Series Programmer’s Guide for ARMv8-A

     

Designed by Tistory.