ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ARMv8 기초] Exception level과 Execution state
    하드웨어 스케치북 2020. 4. 2. 21:06
    반응형

    ARMv7 CPU부터 ARMv8 CPU까지 다루면서 ARM 기반 CPU에 대해 공부를 해나가고 있는데,

    블로그에 정리하면 좋겠다는 생각이 들어서 정리해 보려고 한다.

     


    @ARM

     

    얼마전 ARM에서 발표한 loadmap이다. 저전력과 효율성을 표방하며 모바일 시장을 점령하던 ARM이 이제는 그 영역을 서버와 데이터센터로 넓히고, 보안에 중점을 두는 하이엔드 컴퓨팅에도 그 명성을 이어가려는 모양이다.

     

    그리고 Cortex A76과 Cortex A78이후 곧 베일에 쌓인 ARMv9도 출시가 예정되어 있다.

     

    일단은 가장 많이 사용되는 ARMv8에 대해 기초부터 차근차근 정리해 봐야겠다.

     


    ARMv8 Fundamental

     

    1. Exception Level and Security State

     

    ARMv8에서 어떤 program은 4가지 Exception level을 가진다. ARMv8의 AArch64 execution state에서는 Exception level이 execution privilege를 결정한다.

    이 Exception level이 ARMv8 architecture의 기초가 되는 개념이며 모든 operation은 현재 정의된 exception level에서 수행되고, system register를 비롯한 register들은 하나 또는 그 이상의 형태로 각 exception level에 존재하게 된다.

     

    각 Exception level에 따른 privilege는 아래와 같다.

     

    EL3 > EL2 > EL1 > EL0

    왼쪽으로 갈수록 privilege가 높으며, higher exception level이라고 표현한다. 반대로 EL0쪽으로 갈 수록 privilege가 낮고 lower exception level이라고 표현한다.

     

    Exception level은 ARMv8 architecture에서 수행되는 S/W type에 따라 아래와 같이 간단하게 나눌 수 있다.

     

    EL0: User applications. Lowest privilege level.

    EL1: An operating system kernel (e.g., Linux kernel)

    EL2: Hypervisor (e.g., KVM virtualization)

    EL3: Low-level firmware, including the Secure Monitor (e.g., baremetal assembly/C code)

     

     

    ARMv8은 또한 두 가지 security state를 제공하는데, Secure와 Non-secure로 나뉜다.

    Non-secure state는 Normal world로 표현되고, Secure state는 Secure world로 표현된다.

     

    Linux를 비롯한 OS는 Normal world에서 수행되며, 때로는 trusted OS가 secure world에서 수행될 수 있다. ARM에서는 Trustzone을 이용하여 system을 normal world와 secure world로 분리하여 H/W 또는 S/W attack으로부터 system을 보호한다.

     

    Non-secure state에서는 Secure memory에 접근이 불가능하며, Secure state에서만 접근이 가능하다.

    이렇게 System에서는 특정 memory나 register의 security를 trustzone을 이용해 control할 수 있으며, 각 exce

     

     

     

     

    앞서 EL2를 Hypervisor로 소개하였는데, ARMv8은 이를 이용하여 virtualization을 제공한다. Virtualization이란 하나 이상의 OS가 동일 system에서 수행되는 것으로 가장 대표적인 예는 virtualbox나 vmware등의 virtual machine을 이용해 Windows OS에서 Linux/Unix 기반 OS를 사용하거나 MAC OS에서 windows OS를 사용하는 것이다.

     

    또한 EL3에서 동작하는 Secure monitor는 Normal world와 Secure world 사이의 gateway 역할을 한다.

     

    2. Execution states

     

    ARMv8 architecture에서는 exception level과 security state뿐만 아니라 AArch64 (ARM64) / AArch32 두 가지의 Execution State를 제공한다. AArch64 state는 ARMv7과 달리 ARMv8에서만 사용할 수 있는 유니크한 state로 이름에서 알 수 있듯이 64-bit general purpose register (GPR)를 사용한다. 반대로 AArch32에서는 ARMv7과 호환성을 유지하기 위해 제공되는 형태로 32-bit general purpose register를 사용하여 backward compatibility를 제공한다.

     

     

    AArch64와 AArch32는 Xn과 Wn으로 general purpose register를 구분하여 표현하고, execution state에 따라 각기 다른 system register를 제공하기도 하며 같은 register도 execution state에 따라 각각의 field가 다른 attribute를 가질 수도 있다. 

     

    ex) SPSR (Saved Process Status Register)의 경우 execution state에 따라 각 field가 나타내는 attribute가 다르다.

    ex) general purpose register : execution state에 따라 Xn (64-bit form)와 Wn (32-bit form: ARMv7의 Rn와 같은 형태)으로 표현

     

     

     

     

    @reference ARM DOC 100878-0100_en

    반응형

    댓글

Designed by Tistory.