ABOUT ME

-

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

     

    cast-32A.pdf
    다운로드

     

    앞절에서 제기된 여러가지 이슈에 대한 구체적인 대응책을 설명하기에 앞서 CAST-32A 문서에서는 이 문서가 적용되는 대상과 적용되지 않는 대상을 구분해서 설명하고 있다. 여기서 적용된다는 말의 의미는 결과적으로 이 문서가 제시하는 목표(Objective)를 모두 달성해야 한다는 의미이다. MCP라면 무조건 해당될 것 같은데 실제로는 MCP라고 하더라도 이 문서의 내용을 고려하지 않아도 되는 경우가 있다는 것이다. 과연 그것은 어떤 경우일까?

     

    참고로 여기서의 목표(Objective)DO-178 가이드라인에서 제시되었던 인증을 위해서 지원자가 달성해야 하는 목표(Objective)와 동일한 개념으로 이해할 수 있다.

     

    (1)   이 문서가 적용되는 경우

     

    CAST-32AMCP에 대한 문서이긴 하지만 실제 적용 기준은 아래와 같이 좀 더 세분화된다.

     

     

    해석을 보자.

     

    이 문서(Position paper)는 멀티코어 프로세서가 다음과 같은 경우에 적용한다.
    -       둘 혹은 그 이상의 코어가 활성화되는 경우
    -       적재된 소프트웨어 혹은 MCP 하드웨어 기기의 IDALA, B 혹은 C이고
    -       어플리케이션이 아래(5.2.3 i5.2.3 ii)의 제외되는 유형 중 하나가 아닌 경우

     

    위의 설명 중 IDAL“Item Development Assurance Level”의 약자로 시스템 레벨에서 사용하는 용어이긴 하지만 DO-178에서 이야기하는 소프트웨어 레벨과 유사한 개념이라고 이해하면 된다. 결과적으로 IDALA, B, C라는 것은 시스템 안전성에 상당히 중요한 것이라는 의미이다.

     

    특히 위의 설명에서 유의해야 할 부분은 활성화(Active)”라는 단어이다. 다음에 나올 제외되는 유형에서 설명이 되겠지만 여러 개의 코어를 가지고 있다고 하더라도 각각의 코어가 활성화되는지 활성화되지 않는지가 상당히 중요하다. 극단적으로 보자면 여러 개의 코어를 가지고 있더라도 만약 그 중 오직 하나의 코어만 활성화되어 있다면 그것은 실질적으로 SCP와 같다고도 볼 수 있기 때문이다.

     

    어쨌든 위의 세 가지 경우에 해당하는 경우 CAST-32A를 고려해야 하고 반대로 해당하지 않는 경우에는 CAST-32A를 고려할 필요가 없다. 특히 위의 설명 중에서도 세 번째에 나오는 제외되는 유형을 이해하게 되면 반대로 어떤 경우에 CAST-32A를 고려해야 하는지를 알 수 있다. 이제 그 제외되는 유형에 대해서 알아보자.

     

    (2)   이 문서가 적용되지 않는 경우

     

    CAST-32A가 적용되지 않는 경우에 대해서는 다음과 같이 크게 세 가지 경우를 들고 있다.

     

    -       소프트웨어 어플리케이션의 동적 할당

    -       하이퍼스레딩

    -       이 논문이 면제되는 프로세서

     

    각각의 기술적인 내용이 많겠지만 여기에서는 CAST-32A에서 설명하는 내용에 대해서만 확인해 본다.

     

    n  소프트웨어 어플리케이션의 동적 할당 (Dynamic Allocation of Software Applications)

     

    먼저 해당하는 설명을 보자.

     

     

    해석을 보자.

     

    이 논문은 소프트웨어 어플리케이션 혹은 스레드가 운영 시스템, 소프트웨어 하이퍼바이저 혹은 다른 방법에 의해서 어떤 다른 코어 (혹은 다른 코어들)로 동적으로 재할당될 수 있는 MCP 플랫폼은 커버하지 않는다.

     

    쉽게 말해서 A코어에서도 실행되었다가 B코어, 혹은 C코어에서도 실행되는, 소프트웨어가 실행될 수 있는 코어를 자유롭게 선택할 수 있는 플랫폼인 경우에는 이 문서를 참조할 수 없다는 말이다. 여기서 동적 할당의 기준은 다음과 같이 시작 시점에서 할당이 결정되는 것을 말한다.

     

     

    해석을 보자.

     

    코어에 대한 어플리케이션의 할당은 MCP 소프트웨어의 시작에서 수행될 수 있으며 소프트웨어의 그 이후의 동작이 수행되는 동안은 아니다.

     

    필자는 이 부분을 MCP 플랫폼이 처음 부팅이 되면서 운영체제에 의해서 소프트웨어가 정해진 코어에 탑재되고 그 이후부터는 탑재된 코어에서 종료시까지 계속 운영되는 형태로 이해를 하고 있다. 그리고 위의 설명처럼 동작이 수행되는 동안에 소프트웨어가 다시 다른 코어로 실행 환경이 변경되지 않는 것이다. 이와 같은 기준의 할당이 가능한 MCP 플랫폼을 사용하는 경우에는 어떻게 해야 할까? CAST-32A에서는 인증당국(CA)에 물어보라고(?) 가이드하고 있다.

     

     

    해석을 보자.

     

    소프트웨어 어플리케이션 혹은 스레드의 동적 할당을 사용하기를 원하는 지원자는 인증당국(CA)과 연락해야 한다.

     

    인증당국이 어떤 답을 주는지까지는 언급되어 있지 않지만 어쨌든 인증당국에 이를 알려서 그것을 사용하는 경우 인증을 받을 수 있는지, 어떤 식으로 인증을 받아야 하는지를 면밀하게 협의해야 한다는 말이다. 참고로 인증 기준이 모호한 경우에는 무조건 인증당국의 확인을 받는 것이 가장 우선이라는 점을 기억하자.

     

    n  하이퍼스레딩 (Hyperthreading)

     

    CAST-32A 문서에는 하이퍼스레딩(Hyperthreading) 자체에 대한 설명은 나와있지 않다. 그래서 구글링을 해보니 관련된 설명이 많이 검색되었는데 그 중 아래와 같은 그림을 찾을 수 있었다.

     

     

     

    그림 19 싱글스레딩과 하이퍼스레딩의 비교

     

    ※ 출처) http://kilcon.tistory.com/4

     

    왼쪽의 SINGLE THREDING은 하나의 프로세서에서 결과물이 순차적으로 나오는 것을 볼 수 있다. 이에 반해서 오른쪽의 HYPER THREADING의 경우에는 하나의 프로세서에서 결과물이 동시에 나오고 있다. 여기서 하나의 프로세서는 하나의 코어로 이해할 수 있고 그렇다면 하이퍼스레딩은 결국 하나의 코어가 멀티코어와 유사하게 동시 처리가 가능한 구조를 말하는 것이다. 참고로 이것은 멀티코어 프로세서가 일반화되기 전 과도기적으로 만들어졌던 기술로써 싱글코어 프로세서의 성능 향상을 위한 일종의 트릭(?)이라고 보면 된다.

     

    어쨌든 결론적으로 CAST-32A 문서는 이런 식의 하이퍼스레딩을 사용하는 프로세서에 대해서는 적용할 수 없다는 점을 분명히 하고 있다. 이 경우에도 앞서와 마찬가지로 인증당국과 연락해서 처리해야 할 부분이다.

     

    n  이 논문이 면제되는 프로세서 (Processors Exempted from this Paper)

     

    MCP 프로세서의 종류 중 다음의 두 가지 유형의 프로세서는 이 문서의 적용을 받지 않는다.

     

    -       Lock-step 프로세서

    -       멀티코어를 사용하면서도 MCP 특성(공유 리소스, 하이퍼바이저 등)을 사용하지 않는 프로세서

     

    각각의 내용을 이해하기 위해서는 추가적인 설명을 확인할 필요가 있다.

     

        Lock-step 프로세서

     

    CAST-32A에서는 Lock-step 프로세서의 기술적인 설명을 직접적으로 하고 있지는 않지만 이런 종류의 프로세서가 어떻게 동작하는 지를 제시함으로써 기술적인 배경을 간접적으로 설명하고 있다.

     

     

    해석을 보자.

     

    둘 혹은 더 많은 활성화된 코어들을 가진 Lock-step 프로세서는 각각의 코어들이 동일한 소프트웨어를 주관하고 lock-step에서 동일한 소프트웨어를 실행함으로써 동일한 입력 데이터에 기반해서 그들의 출력이 안전 필수 어플리케이션에서의 사용을 위해 비교될 수 있다. (추가적인 코어는 때때로 입력/출력을 위해 제공된다.)

     

    사실 필자도 기술적인 배경을 가지고 있는 것이 아니기 때문에 이 부분에 대한 설명이 쉽지만은 않은 것이 사실이다. 하지만 CAST-32A 문서를 여러 번 반복해서 읽어보고 전반적인 내용을 파악하는 과정에서 이 부분이 무엇을 말하고자 하는지에 대해서 이해할 수 있었다고 생각된다. 참고로 사전을 통해서 “Lock-step”이라는 용어가 사용된 문장들을 보면 대체로 일관되다혹은 동일하다의 뉘앙스를 받을 수 있는데 아래의 설명에는 그런 부분도 반영되어 있다.

     

    -       Lock-step 프로세서는 멀티 코어를 가지고 있지만 여러 개의 코어들이 서로 다른 소프트웨어가 아니라 동일한 소프트웨어를 실행한다

    -       때때로 여러 개의 코어 중 하나를 입력/출력을 위한 용도로만 사용할 수 있다

    -       여러 개의 코어를 오가는 입력과 출력이 동일하다는 것에 대한 확인을 위해서 비교될 수 있다

    -       이상의 특성에 기반해서 본다면 Lock-step 프로세서는 안전 필수 어플리케이션에 사용될 수 있다

     

    멀티코어를 사용하긴 하지만 동일한 소프트웨어를 실행하고 각각의 코어에 사용되는 입력과 출력을 확실하게 인식하고 비교할 수 있다면 멀티코어에서 실행되는 소프트웨어는 MCP 사용의 영향을 받지 않는다고 판단하는 것이다. 실제 그것이 가능한지는 둘째 치더라도 개념적으로는 충분히 이해할 수 있는 부분이라고 판단된다.

     

        멀티코어를 사용하면서도 MCP 특성(공유 리소스, 하이퍼바이저 등)을 사용하지 않는 프로세서

     

    여기서 말하는 프로세서의 핵심은 아래의 문장에서 찾을 수 있을 듯하다.

     

     

    붉은색으로 표시된 부분을 보면 오직 전통적인 데이터버스로만 연결된으로 해석할 수 있다. 이것이 무슨 의미일까? 앞서 MCP의 특성으로 공유리소스(메모리, 캐쉬 등)를 언급한 것을 기억할 것이다. 공유리소스를 사용하는 경우에는 필수적으로 경쟁이 나타나게 되고 이것은 소프트웨어의 안전성에 큰 영향을 미칠 수 있게 된다. 그런데 위의 설명에서는 그것을 사용하지 않고 오직 전통적인 데이터버스로만 연결된다고 말하고 있다. 이렇게 되면 공유리소스의 사용으로 나타날 수 있는 문제가 원천적으로 사라지게 된다.

     

    다른 설명들이 더 있지만 결국 이 유형의 프로세서에서 중요한 점은 공유리소스의 사용으로 발생할 수 있는 변수를 원천적으로 방지함으로써 MCP 사용에 있어서 고려해야 할 부분이 없다는 점을 이야기하는 것이다.

     

    참고로 위의 두 가지 유형에 해당하기 때문에 CAST-32A 문서를 고려하지 않는 경우에는 기존의 SCP 기반으로 수행하는 DO-178 인증 목표(Objective)를 충족하는 것으로 충분하다. 아래 설명에서 그런 취지의 내용을 확인할 수 있고 다음 절에서 설명하는 목표(Objective)에 대한 내용을 통해서도 관련 부분을 확인할 수 있을 것이다.

     

     

    해석은 다음과 같다.

     

    둘 혹은 세 개의 활성화된 코어를 가진 일부 유형의 MCP는 그들의 구조에 있어서 이 문서의 추가적인 지침 내용에 의해서 커버될 필요가 없는 싱글 코어 프로세서의 현존하는 조합과 충분히 비슷하다고 고려된다.

     

     

    댓글

Designed by Tistory.