가상머신 ‘임페라스(Imperas)’를 활용한 스마트카 소프트웨어(SW) 테스트 ②

최태우 기자 / 기사승인 : 2020-05-04 10:17:35
  • -
  • +
  • 인쇄
▲ 드라이브.AI의 자율주행차 [source=drive.ai]
앞으로 소개할 Imperas의 기능은 가상머신 기반의 임베디드 소프트웨어 테스트를 수행하기 위한 초기단계인 가상 플랫폼 제작부터 임베디드 소프트웨어의 성능을 테스트하는 최종단계까지의 내용을 담고 있다.

개발의 편의성과 소프트웨어 테스트의 요구사항에 맞게 커스터마이징할 수 있는 각종 검증, 분석, 프로파일링과 디버깅 기술을 개발자와 소프트웨어 테스트 엔지니어를 대상으로 공유하고자 한다.

다양한 모델 라이브러리 지원
Imperas 솔루션은 ARM, MIPS, 르네사스(Renesas), 파워PC(PowerPC), 인텔/아트멜(Intel/Alteral) Nios, 자일링스(Xilinx) 등 주요 임베디드 프로세서 벤처들이 활용하고 있는 200여개 이상의 프로세서와 100여개 이상의 주변장치, 다양한 플랫폼을 라이브러리 형태로 지원하고 있다.


가상 플랫폼 개발자는 Imperas가 지원하는 라이브러리를 활용해 환경 구축이 가능하기 때문에 테스트 환경 구축에 대한 시간적인 노력을 최소화 할 수 있다.

코드 자동 생성기 - cpuGen, iGen
Imperas가 제공해 주는 모델 라이브러리 내에 테스트하려는 타겟 CPU 모델을 지원해 주지 않는 경우가 존재할 수도 있다. 

 

이런 상황에서는 개발자가 직접 플랫폼부터 프로세서, 주변장치 등을 개발하는 상황에 직면하게 되는데 cpuGen과 iGen 등의 코드 자동 생성기를 활용하여 개발의 리소스 문제를 해결할 수 있다(cpuGen는 프로세서를, iGen은 주변장치와 플랫폼 코드를 자동으로 생성해 준다).
 


코드 자동 생성기를 사용하기 위해 모델 개발자는 프로세서의 정의, CPU 레지스터, 명령어 형식, 메모리 맵, 플래그, 명령어 타입 등을 TCL 스크립트에 작성한다.

이 TCL 스크립트 내의 정보들을 기반으로 시뮬레이션 구축을 위한 필수적인 코드들(레지스터 정의, 명령어 디코더, 포트 등)을 model 템플릿 파일에 자동 생성한다. 기본적인 골격들을 자동으로 만들어 주는 셈이다. 개발자는 이 골격 내에 명령어와 주변장치의 행위들만 정의해주면 된다.

또한, Imperas Simulator가 타겟 모델을 직접적으로 호출하기 위한 SystemC TLM 2 인터페이스와 어셈블러 및 디스어셈블러를 위한 최소한의 명령어 정보들을 생성하고 명령어 및 기타 프로세서 항목에 대한 설명을 XML 형식으로 제공한다.

이렇듯 cpuGen, iGen을 활용한 모델 프레임워크의 자동화 생성 기술은 가상화 개발에 필요한 주요 구성 요소 구축에 소요되는 시간을 절약시키고 개발자가 초기단계에서 진행하는 수작업에서 부주의로 발생하는 오류를 제거할 수 있다.

VAP - Verification, Analysis, Profiling
VAP는 단일 혹은 멀티 코어 임베디드 소프트웨어의 각종 검증과 분석 및 프로파일링 기능을 제공하는 도구다. 

 

소프트웨어 바이너리 파일로 실행한 시뮬레이터와 독립적으로 디버거 기능을 병합함으로써 동적으로 변수 및 메모리 등의 검사를 수행할 수 있어 소프트웨어에 내장된 소스코드 수정이 필요 없기 때문에 이식성이 뛰어나다.

또한, 회사 또는 프로젝트 별로 설계된 프로파일링, 분석 및 검증 요구사항에 맞게 사용자 정의 기능을 활용할 수 있다. 예를 들어, 멀티코어 장치 내의 코어 간 통신 테스트, 메모리 위치 추적, 코드 커버리지, 내부 시뮬레이션 또는 특정 환경 접근을 위한 API 커스터마이징이 가능하다.
 


다음은 VAP 도구를 활용해 지원하는 다양한 검증, 분석 및 프로파일링 기능들이다. 기존 대부분의 도구에서 디버그 환경을 적용할 때, 버그가 사라진 것처럼 보이거나 디버거 내에서 소스코드를 실행할 때 가짜 버그가 나타나는 Hiesenbugs 현상이 생길 수 있다.

이는 프로그램을 디버깅하는 차원에서 특정 출력 값을 삽입하거나 디버거를 연동하는 과정에서 발생하기 때문에 버그 탐지가 쉽지 않다.

Imperas의 SlipStreamer 기술은 시스템 바이너리에 추가적인 코드의 삽입이나 변경할 필요 없이 실행 바이너리 그대로 테스트를 수행하여 시간적인 영향 또는 사이드 이펙트(side effect)를 제거한다. 이를 통해 존재하지 않은 버그 발생을 차단할 수 있으며 디버깅 중에 숨겨지는 버그를 손쉽게 찾을 수 있어 엔지니어는 효율적으로 오류 검출을 수행할 수 있다.

3Debug - Spatial, Temporal, Abstract
3Debug는 공간(Spatial), 시간(Temporal), 추상(Abstract) 등의 3차원 디버그 방식을 지원한다. 멀티코어 기반 아키텍처 내의 모든 프로세서와 주변 장치의 행위들을 디버깅 할 수 있으며, 프로세서 내의 특정 실행을 제어하고 플랫폼의 일부 또는 전체 영역을 타겟으로 하여 시스템 전체 실행에 따른 변화량을 측정할 수 있다.

프로세스 내에서 발생할 수 있는 공유메모리의 충돌 여부를 모니터링 할 수 있으며 메모리 사용량을 분석하고 오류가 발생하는 지점을 간단하게 찾을 수 있다. 3Debug가 지원하는 3차원 방식에 대한 설명은 다음과 같다.

- Spatial: 소프트웨어가 동작하는 모든 프로세서 또는 코어뿐만 아니라 각종 주변장치 요소에 대한 추적, 디버그, 분석, 검증한다
- Temporal: 시스템에서 발생하는 이벤트와 활동들을 순차적으로 브레이크 포인트를 설정하여 모니터링 및 추적할 수 있다. 코어 간의 스케줄링 되는 코드 또한 제어할 수 있다.
- Abstract: 시스템에서 발생하는 행위에 대한 추상화 레벨을 생성함으로써 디버깅, 분석, 검증 등의 기능들을 각종 이벤트나 시스템 작동에 대한 수행 성능을 높여준다.


QuantumLeap - 멀티코어 호스트 PC를 활용한 병렬 가속화 시뮬레이션 엔진
대부분의 스마트카에 내장되는 시스템온칩(SoC) 하드웨어 플랫폼은 모두 병렬로 실행되는 하드웨어 가속기와 결합된 멀티코어 임베디드 프로세서가 탑재되어 있다. 

 

기존의 단일 스레드 기반의 가상 플랫폼 시뮬레이터의 성능으로는 SoC에 최적화된 환경이 지원되지 않아 효율적인 가상 플랫폼 기반 소프트웨어 개발에 어려움이 발생한다. 이는 소프트웨어 성능 테스트 관점에서도 신뢰성을 보장하지 못한다.

QuantumLeap은 호스트 시스템의 모든 프로세서에 시뮬레이션 된 코어를 할당함으로써 가상화 플랫폼 기반 소프트웨어 개발의 문제점들을 해소한다.

코어의 효율적인 동기화를 통해 코어 간 통신의 영향을 최소화하는 동시에 여러 호스트 프로세서의 시뮬레이션에 선형적인 스케일링을 가능케 한다. 또한 소프트웨어 테스트 과정에서 소프트웨어, 가상 플랫폼 모델 또는 개발 환경에 대한 변경 없이 모델을 제공하면서 실제 환경과 유사한 시뮬레이션 환경을 보장한다.
 


QuantumLeap의 성능은 표준 벤치마크를 사용하여 동등한 상용 솔루션보다 평균 15배 빠른 성능을 갖고 있다. 표준 3.4GHz 쿼드 코어 호스트 PC에서 실행되는 멀티코어 ARM 코어텍스(Cortex)-A9의 OVP 모델을 기준으로 초당 16억개 이상의 명령어 해석 성능을 보장한다.

QuantumLeap 가속화 장치는 OVP에서 제공하는 모델 라이브러리와 함께 동작 가능하며 전체 125개 이상의 프로세서 모델들을 가속화할 수 있다.

 

 

글 : 이기영 / TND팀 주임연구원 / 쿤텍

 

[저작권자ⓒ IT비즈뉴스. 무단전재-재배포 금지]

  • 글자크기
  • +
  • -
  • 인쇄
뉴스댓글 >

주요기사

+

많이 본 기사

마켓인사이트

+

컴퓨팅인사이트

+

스마트카

+

PHOTO NEWS