KeyStone™ 프로세서를 활용한 의료용 소프트웨어 개발
  • 2013-09-02
  • 김창수 기자, cskim@elec4.co.kr
  • 글 | 데이 거나니(Uday Gurnai), 애플리케이션 엔지니어, 텍사스 인스트루먼트


TI DSP를 통해 진단 처리 시스템의 더 높은 해상도 이미지 스캔이 가능해졌고 환자를 돌보는 사람들은 실시간으로 주요 임상 데이터를 제공받을 수 있게 됐다. 의료 시스템의 프로세싱 제약을 뛰어넘는 이 기술은 TI의 키스톤 아키텍처의 내재 병렬 기능을 제공할 뿐만 아니라, 이를 통해 소프트웨어 개발자들은 TI의 고급 아키텍처를 보다 잘 활용할 수 있다.

의료기술의 혁신에 있어서 임베디드 소프트웨어 개발자의 역할이 매우 중요해졌다. 오늘날 다양한 의료 시스템에 사용되는 임베디드 프로세서는 고난도의 복잡한 연산을 저전력으로 실시간 처리해야 한다. 예를 들어 TI의 혁신적인 DSP를 통해 진단 처리 시스템의 더 높은 해상도의 이미지 스캔이 가능해졌고 환자를 돌보는 사람들은 실시간으로 주요 임상 데이터를 제공받을 수 있게 됐다. 의료 시스템의 프로세싱 제약을 뛰어넘는 이 기술은 TI의 키스톤(KeyStone) 아키텍처의 내재 병렬(inherent parallelism) 기능을 제공할 뿐만 아니라, 이를 통해 소프트웨어 개발자들은 TI의 고급 아키텍처(다중 코어, 급속 데이터 패스, 고속 주변장치 등)를 보다 잘 활용할 수 있다. TI는 견고한 소프트웨어 개발 에코시스템을 구축하여, TI의 고성능 키스톤 기반 SoC(시스템온칩)를 십분 활용한 최적의 의료용 애플리케이션을 빠르고 쉽게 개발할 수 있도록 지원한다.

시작하기
일반적으로 개발환경은 TI 툴이 설치된 호스트 컴퓨터와 이클립스 기반의 CCS(Code Composer Studio™) IDE로 구성돼 있다. CCS IDE는 코드 편집, 시뮬레이션, EVM(평가 모듈) 상의 러닝/디버깅이 가능한 원스톱 개발 환경이다. 호스트 컴퓨터와 EVM은 향상된 트레이스(trace) 및 디버깅 기술을 제공하는 에뮬레이터를 통해 연결된다. CCS IDE는 개발자들이 애플리케이션을 미세 조정할 수 있도록 계측, 프로파일링과 시각화 툴 기능을 제공한다. TI의 무료 멀티코어 소프트웨어 개발 키트(MCSDK)는 플랫폼 소프트웨어, 실시간 운영 시스템 SYS/BIOS™, ARM짋을 위한 리눅스 운영 시스템, 프로세서 로우 레벨 드라이버, 하이 레벨 API, 알고리즘 라이브러리와 코어 소프트웨어 빌딩 블록 모두를 한 패키지에 담았다. 또한 독창적인 데모 애플리케이션과 예제도 함께 제공해 개발자들이 원활히 개발을 시작할 수 있게 지원한다. 이를 통해 개발자들은 MCSDK 내의 API를 활용해 멀티코어에서 구동되는 애플리케이션을 제작할 수 있고 키스톤 기반 프로세서의 다양한 하드웨어 기능의 혜택을 누릴 수 있다.

개발 툴
MCSDK와 기본적 소프트웨어 빌딩 블록으로 개발자들은 알고리즘 혁신에 집중할 수 있다. 새로운 임상 요구를 충족하는 과정에서 리서치 및 의료 제품을 차별화하는 노블 알고리즘의 구현과 새로운 지적 재산을 창출한다. DSP 같은 프로그래머블 프로세서를 통해 개발자는 다양한 소프트웨어 접근방법으로 최적의 소프트웨어를 찾을 수 있을 것이다. 빠른 개발 시작을 위해 TI는 널리 사용되는 신호 처리, TI의 DSP에 최적화된 연산 및 이미지 프로세싱 기능을 포함한 DSPLIB, MATHLIB, IMGLIB 같은 복수의 알고리즘 라이브러리를 출시했다. TI 코덱 페이지에서 다양한 TI 플랫폼에 최적화된 여러 비디오, 오디오, 스피치 애플리케이션의 코덱들을 접할 수 있다. 의료용 영상 개발자들은 의료용 영상을 위한 소프트웨어 툴 키트(STK-MED)를 이용하여 초음파 및 광 간섭 단층 영상(optical coherence tomography) 애플리케이션에 최적화된 빌딩 블록을 이용할 수 있다. 이는 B-Mode 프로세싱, 도플러(Doppler) 신호 처리, 스캔 변환, 큐빅 스플라인 보간법(cubic spline interpolation), FFT 및 IFFT, 강도 및 로그 계산 기능 등을 이용할 수 있다. 또한 STK-MED이 제공하는 알고리즘 소스 코드를 사용할 수 있기 때문에 개발자들은 이런 기능들을 쉽게 확장하여 맞춤형 모듈을 만들어 의료 시스템을 차별화 할 수 있다.

테스팅 및 확인

소프트웨어 개발자들은 510(k) 혹은 PMA 전송에 관한 확인 데이터를 수집하여 미국 식품의약국(FDA)의 디바이스 클리어런스 및 허가를 받는 데 중요한 역할을 한다. 예를 들어 의료용 영상 시스템은 디바이스의 마지막 이미지 출력이 정확하고 예상된 출력에 근접하다는 사실 증명을 위해 신호 처리 블록 각각의 정확성과 정밀성을 입증해야 한다. TI의 STK-MED는 포함된 알고리즘을 위한 테스트 프로젝트와 레퍼런스 테스트 벡터를 포함하고 있다. 이들 프로젝트는 개발자들이 TI의 CCS 환경 및 통합된 소프트웨어 툴을 사용하여 출력 정확도 및 성능 분석을 위해 고유의 확인 테스트를 설계하는 사례를 선보여준다.
디버그 및 트레이스 툴은 테스트 및 확인 과정, 소프트웨어 개발 주기 과정에 매우 유용하다. TI의 키스톤 기반 프로세서의 경우, CToolsLib은 코어 추적 및 시스템 트레이스가 가능하다. 코어 트레이스는 프로그램 카운터, 명령 타이밍, DSP를 위한 코어 메모리 접근 및 코어 이벤트를 모니터 할 수 있는 기술을 제공한다. 시스템 트레이스 기능은 트레이스 간의 상관성 및 전체 시스템에 연관된 코어 가시성 및 프로세싱을 포함한 멀티코어 애플리케이션 계측을 제공한다. 장애 관리 라이브러리를 통해 애플리케이션은 DSP 레지스터 데이터를 어느 고장 검출에든지 저장할 수 있다. CCS IDE에 통합된 멀티코어 시스템 분석기는 또한 애플리케이션 성능 및 구동을 실시간으로 분석하고 시각화하며 프로파일 할 수 있다.



시스템 수준 구현
알고리즘이 실행되면 다음 단계는 이 둘을 시스템 수준 구현 내에 통합하여 타깃 임베디드 디바이스에 완전한 신호 체인을 연결시키는 것이다. 리소스 관리, 인터프로세서 커뮤니케이션 및 데이터 이동 기술은 이 단계에서 가장 중요한 사항이다. TI는 키스톤 기반 SoC에 소프트웨어 부품을 제공하여 위 작업들을 실현한다. 리소스 관리 LLD(low level driver), IPC(inter-processor communication) 패키지 및 MCSDK의 향상된 직접 메모리 접근 LLD 및 알고리즘이 쉽게 플러그-앤드-플레이 될 수 있도록 도와주는 코덱 엔진 인터페이스와 프레임워크 부품 라이브러리 등이 그 예다. 개발자는 또한 PCI Express, 하이퍼링크, 기가비트 이더넷 혹은 데이터를 다른 디바이스로 옮길 수 있는 시리얼 RapidIO®(SRIO) 같은 고속 인터페이스를 활용할 수 있다. 뿐만 아니라 멀티코어 내비게이터를 활용하여 디바이스 내에서 전용 메모리 사이에 데이터를 전송할 수 있다. MCSDK는 또 각각 주변장치들을 위한 관련 LLD 및 사용 예제를 포함한다.
소프트웨어 부품의 확장성과 사용의 편리성을 살펴보기 위해 IPC 소프트웨어 패키지를 예로 들어 보자. IPC API는 같은 코어나 다른 코어 혹은 다른 디바이스 상의 스레드(thread) 사이의 통신이 가능하다. IPC 전송은 다양한 방식으로 가능한데, 공유 메모리 전송 혹은 내비게이터 전송을 통해 동일 디바이스 상에 존재하는 코어 간의 통신이 가능하다. 두 디바이스 사이에 코어 간 통신을 원한다면 SRIO 인터페이스를 사용하면 된다. 개발자 입장에서 IPC가 훌륭한 이유는 바로 하위 전송과 상관없이 같은 API를 사용할 수 있다는 점이다. TI의 키스톤 Ⅱ 제품군 같이 한 쪽엔 ARM, 다른 쪽에는 DSP를 둔 이종 시스템은 IPC API가 DSP 쪽에서 사용될 수 있고, 해당 API는 ARM 쪽에 사용될 수 있다.
개발자가 멀티코어 임베디드 디바이스 내에서 각각의 코어를 활용하고 기능을 연결할 수 있다는 점은 시스템 수준 구현의 또 다른 장점이다. 대표적인 2개의 모델로는 기능 병렬화와 데이터 병렬화가 있다. 차이점 설명을 위해 초음파와 광 간섭 단층 영상을 예로 들어보자. 초음파 시스템의 미드엔드(mid-end) 프로세싱을 위해 한 DSP 코어에서 B-mode 프로세싱을 실행하고 다른 DSP 코어에서는 도플러 프로세싱을 실행하며, 세 번째 DSP 코어에는 스캔 변환을 사용하고 ARM 코어를 통해 디스플레이 및 유저 인터페이스를 사용한다. 이는 기능 병렬화 전략에 해당한다. 광 간섭 단층 영상의 경우에는 각각의 입력 데이터 프레임이 여러 DSP 코어에 걸쳐 잘라지고 나뉘어지며 같은 알고리즘 세트(배경 제거, 리샘플링, FFT, 각각 코어에 구동되는 강도 계산 및 로그 압축)를 통해 처리된다. 이것이 데이터 병렬화의 예이다.
TI의 의료용 영상 데모 애플리케이션 스타터(MIDAS) 소프트웨어 패키지는 위에 서술된 초음파 및 광간섭 단층 영상 신호 체인을 실행한다. MID
AS는 STK-MED의 알고리즘 모듈을 활용하고 MCSDK와 다른 소프트웨어 부품을 사용하여 실시간 제약을 뛰어넘는 시스템 수준 구현을 실현한다. 이를 통해 개발자는 알고리즘을 함께 통합하여 TI 임베디드 프로세서에서 완전한 신호 처리 플로를 실현할 수 있다(그림 2 참조).



오픈소스 툴
소프트웨어 개발자는 오픈소스 병렬 프로그래밍 API를 TI의 MCSDK에 포함되어 있는 OpenMP, OpenEM 소프트웨어 패키지 및 OpenCL 지원과 함께 TI의 키스톤 기반 프로세서에 활용할 수 있다. OpenMP는 다중 코어에 걸친 애플리케이션을 비교적 쉽게 병렬화 할 수 있는 컴플라이어 명령어 및 라이브러리 루틴을 포함한다. OpenMP 구현은 그림 3에서 보여 지는 바와 같이 포크조인(fork-join) 모델을 기반으로 한다. OpenMP 프로그램은 순차적 영역에서 초기 스레드(또는 마스터 스레드)로 시작한다. 병렬 영역과 접하게 되면 컴플라이어 명령어 “#pragma omp parallel”의 명령 하에 워커 스레드라 불리는 추가 스레드가 스케줄러에 의해 자동적으로 생성된다. 이 스레드들은 병렬 코드의 블록에서 동시에 작동된다. 병렬 영역이 종료되면 프로그램은 다른 스레드가 종료될 때까지 기다리다가 다음 순차적 영역을 위한 싱글 스레드 실행을 재개한다. OpenEM은 최적의 방식으로 시스템의 모든 리소스에 걸쳐 이벤트를 역동적으로 스케줄 하는 중앙 집중 런타임 시스템이다. OpenEM은 이벤트 구동형이며 하나의 코어에서 여러 개의 코어로 쉽게 조정이 가능하다.



추가 지원
의료용 소프트웨어 개발자들을 위한 소프트웨어 패키지 호스트뿐만 아니라, TI E2E™ 커뮤니티와 TI 임베디드 에코시스템을 구성하는 서드파티를 통해 추가적인 지원을 확보할 수 있다. E2E 커뮤니티를 통해 시스템 개발자들은 기술적 문제에 대해 TI 엔지니어와 직접 상담할 수 있다. 또한 TI는 TI 디자인 네트워크의 서드파티 협력사들과 긴밀히 협력하여 그들의 툴을 추가 멀티코어 프로그래밍, 프로파일링 및 분석 기술을 제공하는 개발 에코시스템에 접목시키고 있다. 예를 들어 폴리코어(PolyCore)의 폴리-플랫폼(Poly-Platform)은 애플리케이션이 하나의 코어에서 많은 코어로 조정 가능하도록 하는 툴과 런타임 소프트웨어로 구성되어 있다. 크리티컬블루(CriticalBlue)의 프리즘(prism)은 멀티코어 분석 및 탐구가 가능하고 개발자는 이를 이용해 다양한 병렬 전략을 평가할 수 있다.

학습 자료

사용자 가이드, 백서, 애플리케이션 노트, 온라인 교육 형태의 광범위한 학습 자료와 특정 의료 애플리케이션을 위한 레퍼런스 다이어그램은 유용하고 상세한 리소스이다. TI 멀티코어 웹 페이지를 방문하면 이러한 자료를 확인할 수 있다. 임베디드 프로세서(EP) Wiki에서는 TI 직원과 커뮤니티 멤버가 작성한 기술원고, 가이드, 팁들을 제공하며, 멀티코어 위키 페이지에서는 키스톤 SoC 관련 기사를 요약하여 제공한다. TI는 전세계적으로 키스톤 SoC, 프로그래밍 및 다른 관련 주제에 관한 교육 세미나를 진행 중에 있으며, TI 코리아 온라인 교육 사이트(titraining.
kr)를 방문하면 다양한 교육 비디오를 시청할 수 있다. 또한 TI는 의료 기술을 위한 다수의 아날로그 부품, 마이크로컨트롤러, 기타 프로세서를 제공하고 있으며, TI의 헬스테크(HealthTech) 제품 가이드를 통해서도 관련 정보를 얻을 수 있다.

요약
TI의 키스톤 기반 프로세서는 하드웨어의 첨단 기술을 자랑하며 저전력에 최고의 멀티코어 프로세싱 기술을 선보인다. 이러한 하드웨어는 산업을 주도하는 안정된 소프트웨어 시스템을 구축하여 멀티코어 프레임워크를 지원하고, 이를 통해 의료 시스템 설계자들이 혁신 및 차별화를 실현할 수 있도록 지원하는 한편 빠르게 시스템 차원의 문제를 해결한다. TI는 새로운 하드웨어와 소프트웨어를 지속적으로 혁신, 개발하고 있으며, 모듈 방식의 소프트웨어 접근방식을 통해 고객이 손쉽게 차세대 SoC 제품을 사용할 수 있게끔 지원하고 있다. TI의 목표는 통합 에코시스템을 마련해 의료기술 분야의 엔지니어들이 소비자에게 신속하게 애플리케이션을 전달하고 오늘날의 다양한 임상 요구를 충족할 수 있도록 도와주는 것이다.  ES

<저작권자(c)스마트앤컴퍼니. 무단전재-재배포금지>



  • 100자평 쓰기
  • 로그인

세미나/교육/전시
TOP