ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20. DO-178 인증을 위한 멀티코어 프로세서에 대한 이해 – CAST-32A (1)
    잡談/DO-178 응용 2019. 2. 13. 16:45

    cast-32A.pdf

    우리가 실생활에서 사용하는 컴퓨터에는 이미 멀티코어 프로세스라는 개념이 너무도 자연스럽게 적용되어 있다. 기술력의 발전과 함께 그것을 기반으로 한 시장 역시 엄청나게 빨리 형성되었기 때문이다. 그런데 이러한 자연스러운 기술과 시장이 항공기에 대해서는 전혀 다른 이야기가 된다. , 항공기에는 당연한 듯한 멀티코어 프로세스의 사용이 상당히 제한적이고 어렵다는 말이다. 왜 그럴까?

     

    이와 관련해서 FAA에서 발행한 문서로 CAST-32A가 있다.


     

    그림 18 CAST-32A

     

    제목에는 단순하게 아래와 같이 표기되어 있다.

     

    “Multi-core Processors”

     

    이 문서는 한마디로 MCP, 즉 멀티코어 프로세서에 대해서 FAA가 무엇을 고려하고 있는지를 설명하는 문서이다. 구체적으로는 MCP를 사용하는 경우 지원자가 충족해야 할 목표(Objective)를 하나하나 제시하고 그에 대한 배경을 설명하고 있다.

     

    이 문서의 목적을 설명하는 부분을 보면 서두에서 제시한 이유를 짐작할 수 있는 내용이 나온다.


     

    해석을 보자.

     

    1. 목적

     

    CAST 논문의 목적은 멀티코어 프로세서(MCP)에서 실행하는 소프트웨어 항공 시스템의 안전, 성능 그리고 무결성에 영향을 줄 수 있는 주제들을 구분하는 것이다.

     

    MCP를 사용하는 경우 항공기의 안전성이나 성능, 혹은 무결성에 영향을 줄 수 있기 때문에 현재 전세계의 수 많은 컴퓨터에 아무런 문제없이 자연스럽게 사용되는 멀티코어 프로세서가 항공기에서는 그러한 이유로 그 사용이 엄격하게 제한되고 있는 것이다. 참고로 이 문서가 릴리즈 된 시점을 보면 (201611월이다) 멀티코어 기술이 항공분야에서는 얼마나 조심스럽게 적용되고 있는지를 짐작할 수 있다.


     

    (1)   MCP를 사용하는 이유

     

    솔직히 멀티코어 프로세서에 대해서 필자는 잘 알지 못한다. 다만 이 문서를 이해하는데 있어서 기술적인 부분을 깊게 이해해야 하는 것은 아니라고 판단되므로 여기서 멀티코어 프로세서에 대한 부분은 이 문서내에서 설명하는 수준으로만 기술할 예정이다.

     

    CAST-32A 문서를 기준으로 보자면 항공분야에서 MCP를 사용하는 이유는 간단하게 정리하자면 아래와 같은 두 가지 이유로 요약할 수 있다.

     

    -       전통적인 싱글코어 프로세서보다 더 좋은 성능을 발휘함

    -       하나의 칩에 더 많은 기능들이 포함되어 있음

     

    아래는 이것을 설명한 부분이다.


     

    해석을 보자.

     

    MCP는 전통적인 싱글코어 프로세서(SCP)를 능가하는 성능상의 상당한 향상을 제공하기위해 설계되었다. MCP는 또한 네트워크 인터페이스, 내장된 보안, 메모리 관리 등 시스템 구현을 위한 칩의 숫자를 줄일 수 있는 다른 내장된 기능들을 포함한다. 하나의 기기에 통합된 여러 개의 코어를 가지는 것은 더 많은 기능들이 하나의 프로세서와 장비의 한 부분에서 함께 통합되는 것을 허용할 수 있다. 따라서 항공 장비 공급자들은 그들의 시스템에서 MCP를 사용하는 것에 관심을 가지고 있다. MCP를 사용하는 추가적인 이유는 많은 SCP들이 쓸모없게 될 가능성이 있다는 점이다.

     

    MCP를 사용함으로써 무엇보다도 성능이 향상될 수 있고 이전에는 여러가지 기능을 수행하기 위해서 여러 개의 칩을 사용했었는데 이제는 하나의 칩으로 그것이 가능하게 됨으로써 비용을 감소할 수 있게 된 장점을 설명하고 있다. 그리고 무엇보다도 기술과 시장의 변화에 따라서 기존 SCP가 더 이상 역할을 수행하지 못하게 되고 그에 따라서 현실적으로는 단종등과 같은 상황이 생기게 되는 부분도 MCP를 사용하는 중요한 요인이 되고 있는 것도 사실이다.

     

    이러한 배경으로 볼 때 아무리 안전이 중요한 항공기라고 하더라도 이제는 MCP의 시용에 대해서 보다 적극적으로 도입을 고려해야 하는 상황이 되었고 실제로도 그 사용 빈도가 점차 증가하고 있는 것이 사실이다.

     

    (2)   MCP가 문제가 될 수 있는 부분

     

    CPU가 여러 개의 코어를 가지고 있다는 것은 결국 여러가지 일을 동시에 수행한다는 것을 의미한다. 그렇기 때문에 여러가지 일을 순서대로 처리하는 것보다는 당연히 속도가 빨라지게 된다. 하지만 동시에 수행하려고 하다 보니 기존에 하나씩 처리하는 것에서는 없었던 문제들이 발생하게 되었다. CAST-32A에서는 이를 다음과 같이 설명하고 있다.


     

    해석을 보자.

     

    MCP는 각각이 소프트웨어 어플리케이션을 주관하고 실행할 수 있는 둘 혹은 더 많은 프로세싱 코어를 가지고 있기 때문에 동시에 여러 소프트웨어 어플리케이션을 실행할 수 있다. 여러 어플리케이션들은 MCP의 동일한 공유 리소스들을 (메모리, 캐쉬 그리고 외부 인터페이스와 같은) 동일한 시간에 접근하려고 시도할 수 있고 따라서 그러한 리소스들에 대한 경쟁이 생길 수 있다.

     

    사실 항공기에서 MCP를 사용하는 데 있어서 가장 큰 문제는 바로 위의 설명과 같은 공유 리소스에 대한 동시 사용에 있다. SCP에서는 동시 사용 자체가 불가능하므로 그런 고민 자체가 없었는데 여러 소프트웨어를 동시에 실행할 수 있는 MCP가 나오면서 그런 이슈가 등장하게 된 것이다. 그래서 MCP에서는 다음과 같은 해결책이 제시되고 있다.


     

    해석을 보자.

     

    대부분의 MCPMCP 리소스에 대한 요구를 다루고 중재하기 위해서 상호연락과 같은 내부 메커니즘을 가지고 있다.

     

    기술적으로 설명하자면 너무 복잡하게 될 것 같고 결국 핵심은 경쟁(Contention)”을 해소하기 위해서 상호연락(Interconnect)”의 형태를 통해서 그것을 조율하는 것으로 이해할 수 있다. 그런데 이 방법에서는 다음과 같은 치명적인 문제가 따라오게 된다.


     

    해석을 보자.

     

    하지만 어플리케이션간의 공유 리소스에 대한 경쟁은 그 리소스로의 접근에 있어서 일반적으로 지연되는 결과를 가져올 수 있다. 이들 지연은 어플리케이션이 실행될 때 실제 자신이 수행되는 시간보다 더 오랜 시간이 걸리게 될 수 있는 어플리케이션간의 시간 간섭의 형태이다.

     

    비록 상호연락과 같은 방법을 사용해서 사용에 대한 순서는 조율이 되겠지만 결국 나중에 사용하는 경우에는 그 만큼의 지연이 발생하게 되는 것이다. 나중에 다시 설명되겠지만 만약 안전과 관련된 기능을 긴급하게 수행해야 하는 경우가 있을 경우 자칫 이러한 약간의 지연조차도 항공기의 안전에 치명적인 영향을 주게 될 수도 있다.

     

    그런데 또 다른 이슈가 있다.


     

    해석을 보자.

     

    거기에는 또한 MCP 메커니즘을 통한 어플리케이션간의 기능 간섭이 있을 수 있다.

     

    무슨 이야기일까? 이어지는 내용을 보자.


     

    해석을 보자.

     

    간섭은 또한 운영 시스템 혹은 소프트웨어 하이퍼바이저와 같은 MCP상에 설치된 소프트웨어 컴포넌트들 때문에 발생할 수도 있다.

     

    앞에서 설명한 MCP의 공유 리소스와는 별개로 다른 소프트웨어의 영향으로 기능적인 간섭이 생길 수 있다는 말이다. 대표적으로는 운영체제(OS)의 영향을 들 수 있을 것이고 위에서 제시한 소프트웨어 하이퍼바이저라는 것은 MCP에서 동시에 수행되는 어플리케이션을 전체적으로 총괄하는 소프트웨어라고 보면 된다. 앞서 설명한 상호연락조율을 담당하는 것으로 물론 이는 운영체제에서 수행할 수도 있을 것이다.

     

    결국 문제는 이러한 것들이 항공기의 안전에 영향을 줄 수 있다는 점이다. CAST-32A에서는 다음과 같이 설명하고 있다.


     

    해석을 보자.

     

    MCP상에서 실행하는 소프트웨어 어플리케이션간의 간섭은 안전 필수의 소프트웨어 어플리케이션들이 비결정론적인 혹은 안전하지 않은 방식으로 동작하도록 만들 수 있거나 그들이 안전 필수 기능의 실행을 완료하기에 충분한 시간을 가지는 것을 방해할 수 있다.

     

    만약 하나의 MCP가 하나의 시스템 이상으로부터 소프트웨어 어플리케이션을 주관한다면 간섭은 또한 하나의 시스템으로부터의 안전 필수 소프트웨어 어플리케이션이 다른 시스템으로부터의 어떤 어플리케이션으로부터 악영향을 받도록 만들 수가 있다.

     

    위의 설명을 간략하게 요약하면 다음과 같다.

     

    -       소프트웨어 사이에 간섭이 있을 경우 안전 필수(Safety-critical) 소프트웨어의 동작이 정상적으로 완료되지 않을 수 있다

    -       MCP가 여러 시스템을 관리하는 목적으로 사용되는 경우에는 A 시스템에서 실행되는 안전 필수 소프트웨어 동작이 B 시스템의 영향을 받아서 제대로 동작하지 않을 수 있다

     

    SCP를 대신해서 MCP를 사용하는 것인데 이것이 항공기에 사용하는 경우라면 고려해야 할 부분이 상당히 다양해진다는 것을 확인할 수 있다. 결론적으로 항공기에 MCP를 사용하는 경우 문제가 될 수 있는 부분은 다음과 같이 정리할 수 있다.

     

    -       공유리소스의 사용에 따른 문제 발생 가능성

    -       운영체제와 같은 다른 소프트웨어 모듈의 간섭에 따른 문제 발생 가능성

     

    CAST-32A 문서는 바로 이러한 MCP의 적용에 따른 문제점에 대해서 특히 감항당국(FAA)이 무엇을 신경쓰고 있는지, 그것을 어떻게 이해하고 어떤 식으로 대응해야 하는지를 자세하게 설명하고 있다. 다음 절에서 그 구체적인 내용을 하나하나 확인해 보자.

     


    댓글

Designed by Tistory.