|

미션 크리티컬 제품 등 국방 전자산업은 항상 품질을 궁극의 목표로 삼아왔다. 군의 컴퓨터와 통신 시스템과 모든 전자물품은 어떤 이의 시스템보다도 한 두 발짝 앞서 있어야 한다는 것이 보편적인 생각이었다. 이는 국가안전의 문제였기 때문이다. 그래서 품질은 설계 고려사항 중에서도 가장 중요한 사항이었고 지금도 마찬가지이다.
품질은 군사/국방 관련 제품에서 매우 중요하며, 고품질의 제품을 개발하는데 MIL-SPEC, MIL-STD, 국가항공우주표준(National Aerospace Standards) 등 수많은 설명서와 가이드라인이 있는 이유도 그 때문이다. 오늘날의 임베디드 프로세서와 소프트웨어는 고품질 고성능의 군사/국방전자공학을 촉진시킬 수 있다.
수 년에 걸쳐, 군사 전자공학과 민간의 미션 크리티컬 전자공학 산업은 보다 뛰어난 최종결과를 얻기 위해 아날로그나 ASIC 기반의 고정함수 장비를 통합 소프트웨어 기반 프로그래머블 시스템으로 전환하고 있다. 세계2차 대전 이후 레이더 시스템이 설계되었지만, 지금 사용되고 있는 현대의 시스템은 소프트웨어 및 프로그래머블 하드웨어에서 중요한 프로세싱을 하고 있다. 무선 통신 장비의 대부분이 다양한 소프트웨어 정의 무선의 구현을 기반으로 하고 있다. 그 밖에 소프트웨어 기반 제품의 예로, 스마트 무기의 신호 지능형 장비 컨트롤 기능과 영상 기능이 있다. 그림 1에는 한 개 이상의 프로세서에서 수행되는 여러 가지 다양한 기능들이 나와 있다.
그림1. 미사일 추적 애플리케이션의 블록 다이어그램
기능성
임베디드 프로세서는 군사/국방 전자공학에서 충분한 성능과 기능을 제공해야 한다. 원하는 시스템 기능을 구현하는 것이 품질 달성에서 제일 중요한 부분이다. 그러려면 더욱 빠른 다목적 프로세서(general purpose processor, GPP), 디지털 신호 처리(digital signal processor, DSP), 원시 처리 기능용 FPGA가 필요하다. 또한, 이것은 온오프 칩 메모리의 사용, 고대역폭 I/O와 커넥티비티 옵션의 사용, 특정 기능의 하드웨어 가속 등과 같은 다른 요소들도 결정한다. 더욱 성능을 높이려면 멀티코어 DSP도 사용해야 한다. 이것은 미래의 제품을 구현할 수 있는 이상적인 방법이다. 대다수의 알고리즘에는 고속 고정밀 계산이 필요하다. 따라서 이러한 시스템들은 32bit와 64bit 프로세서를 활용하고 있으며, 고정소수점과 부동소수점 수학능력을 둘 다 갖추고 있고, 병렬처리 파이프라인 아키텍처에 기반하고 있다. 또한 고급 다이렉트 메모리 액세스(direct memory access, DMA) 아키텍처를 가지고 있으며, 하드웨어 기반 인터 프로세스/프로세서 통신 메커니즘도 담을 수 있다. 아래의 그림 2는 TI의 최신 C64x+ 고정소수점 VLIW (Very Long Instruction Word) DSP 아키텍처의 블록 다이어그램이다.

그림 2. TI의 고정소수점 C64x+ DSP 코어의 아키텍처
JTRS 라디오 레이더 건과 같은 핸드헬드 및 휴대형 시스템은 배터리 구동이고 휴대가 간편하여 군 전투용으로 이상적이다. 이러한 시스템을 설계하려면 고급 전력격리기능과 전원관리 기능을 갖춘 초저전력 프로세서가 필요하다. 휴대형 디바이스용 시스템온칩(SoC) 솔루션은 필요한 모든 주변장치와 가속기, GPP와 DSP까지 한 칩에 구현하고 있다.
소프트웨어를 통해 아날로그 시스템으로는 설계가 불가능했을 기능까지 개발할 수 있게 되었다. 소프트웨어는 신속한 저비용 개발(민첩성)과 개조 편의성(유연성), 다단계 기능 제품의 재활용(확장성과 업그레이드성) 등을 가능하게 해준다. 그러나, 소프트웨어는 하드웨어만큼 안정적이지 않으며 설계, 개발, 실험 페이즈에서 더 많은 리소스를 필요로 한다. 유지관리와 실험은 소프트웨어 기반 설계에 필요한 그 밖의 핵심 요구사항이다. 필드에서의 소프트웨어 업그레이드, 원격 모니터링, 디버깅 등을 가능하게 해주는 기능들로 인해 소프트웨어의 유지관리도 간편하다. 설명형 오류 메시지를 갖춘 소프트웨어는 실행 중에도 내부 데이터 구조에 접근할 수 있도록 해주고 기타 디버깅 기능들은 시스템의 실험을 가능하게 해준다. 프로세서는 JTAG 인터페이스, 하드웨어 에뮬레이션 로직, 내부 트래픽 버퍼 등과 같은 다양한 하드웨어 기능들을 갖추고 있어서 실험 가능한 소프트웨어를 작성하는데 도움이 된다. 여기에는 CMM, TQM, ISO 등 소프트웨어 개발 프로세스를 규정하는 다수의 표준들이 있다. 또한, 구체적인 소프트웨어 개발 요소들에 필요한 그 밖의 품질 표준들도 설정되어 있다. 예를 들어, “MISRA C”는 자동차 오토모티브 C 언어 코딩 가이드라인이다.
신뢰성
신뢰할 수 있는 미션 크리티컬 애플리케이션에 사용되는 프로세서는 극한의 물리적 조건에서도 작동할 수 있어야 한다. 예를 들자면 55oC ~ 120oC의 온도에서도 작동해야 한다거나 전자기 방출을 견딜 수 있어야 한다. 그러나 그게 다가 아니다. 소프트웨어 역시 신뢰할 수 있고 유지관리가 가능해야 한다. 이러한 제품들에, 고장 시에 시스템을 재시작하는 간단한 기능부터 멀티카드 시스템의 정교한 소프트웨어 및 하드웨어 중복 대책까지 다양한 소프트웨어 내고장성 대책과 중복 대책이 사용되고 있다. 이러한 시스템에는 다른 카드의 핫 백업 역할을 하는 한 개 이상의 중복 카드와 관련 소프트웨어가 있어서, 고장이 탐지되면 백업 카드로 전환이 된다. 또한 이러한 시스템은 인클로저 온도, 쿨링 팬의 작동, 소프트웨어 장애 같은 시스템 조건의 변화를 감시하며 이러한 변화에 대응한다. 소프트웨어 기반 시스템에서 한 가지 공통된 장애 지점이 SRAM과 FLASH 같은 온오프 칩 메모리의 장애이다. 현대의 프로세서와 메모리 칩에는 이러한 오류를 동시에 탐지, 교정할 수 있는 기능이 들어 있으며 운영체제(OS) 소프트웨어는 메모리의 다른 부분으로 데이터를 복사하는 등의 장애 극복 기능들을 가지고 있다.
보안
보안은 의도치 않은 조작이나 사용으로부터 시스템이 스스로를 보호하고 사용하지 못하도록 만드는 기능이다. 현대의 프로세서에는 부트로더를 저장하는 보안 ROM 같은 기능들이 들어 있어서 원치 않는 소프트웨어가 시스템에 로딩되는 것을 막아주며, 메모리 조작을 판단하는 로직이 들어 있다. 또한, 보안 통신을 지원하기 위해 암호 알고리즘을 구현한 하드웨어 가속기가 들어 있는 칩들도 있다. 운영체제는 바이러스와 그 밖의 맬웨어가 핵심 소프트웨어의 실행을 방해하지 못하도록 다양한 보안 구현들을 구현하고 있다. 소프트웨어 엔지니어는, 방어 프로그래머블 기술과 이 OS 기능들을 이용하여 보안 소프트웨어를 설계하고 있다.
휴대성
소프트웨어 휴대성은 매우 매력적인 기능이다. 휴대성이란, 여러 번의 개정을 거치는 동안에도 같은 소프트웨어를 기본 하드웨어처럼 사용할 수 있는 능력, 또는 OS가 바뀌어도 같은 애플리케이션 소프트웨어를 사용할 수 있는 능력을 말한다. 소프트웨어 휴대성을 위해 소프트웨어를 레이어 방식으로 설계하는 경우가 많다. 이런 경우 HAL (hardware abstraction layers)를 통해 하드웨어에서 메인 기능을 추출하고 OSAL (OS abstraction layer)에서 OS를 추출하여 디바이스 드라이버와 알고리즘 같이 OS 독립 코드를 작성한다. 반도체 회사들은 코드의 포워드 호환성과 백워드 호환성을 유지하기 위해 연속 세대로 프로세서 아키텍처를 개발하려 하고 있다. 이렇게 되면, 프로세서에 구현된 고품질의 소프트웨어를 새로운 플랫폼에서도 다시 사용할 수 있게 된다.
하드웨어의 재활용 또한 매력적인 특성이다. 기능의 대부분이 소프트웨어에서 구현되기 때문에 서로 다른 여러 가지 완제품에서도 소프트웨어 부하만 바꾸어 같은 플랫폼을 계속 사용할 수 있으리라는 예상이 가능하다. 예컨대 같은 플랫폼을 사용하여 SDR (software defined radio)에서 서로 다른 파형을 지원하는 것처럼 말이다. RapidIO 같은 통합 인터페이스를 가진 프로세서는 다수의 칩을 함께 연결할 수 있고, PCIe는 인터 카드 통신을 가능하게 해준다. 이를 통해 확장형 하드웨어의 설계가 가능해진다. 그림 3은, 다수의 DSP를 사용하는 SDR 베이스밴드 프로세싱 카드의 하이레벨 블록 다이어그램이다.

그림 3. TI DSP를 사용하여 SDR 구현
용이성
“사용 용이성“ 또한 중요한 성질이다. 사용자 인터페이스는 설명 없이도 알 수 있을 만큼 간단해야 한다. 간단한 메뉴 기반의 그래픽 유저 인터페이스 (GUI) 를 흔히 선호하는 이유이다. 오늘날의 SoC는 온칩 주변장치로 터치스크린 컨트롤러, 오디오 비디오 및 기타 인터페이스들을 지원하는 경우가 많다. OS는 종합적인 사용자 인터페이스를 개발할 수 있도록 고급 GUI 소프트웨어를 제공하고 있다.
고품질의 소프트웨어 정의 제품에는 소프트웨어와 하드웨어 모두에 외연적 내연적 기능들이 다수 구현되어야 한다. 멀티코어 DSP와 GPP의 확산으로 소프트웨어 프로그래밍의 복잡성이 늘어나고 그로 인해 고품질을 달성하기가 까다로워졌다. TI 같은 반도체 회사들은 소프트웨어 개발자가 더욱 높은 수준의 코드를 작성할 수 있도록 새로운 고성능의 멀티코어 프로세서를 개발하는데 투자를 멈추지 않고 있다. 동시에 소프트웨어 산업은 멀티코어 프로세서를 최대한 활용할 수 있도록 다양한 표준과 프레임워크를 내놓고 있다. 이러한 기술 발전들이 군용시장과 민간시장에서 고품질 소프트웨어 기반 미션 크리티컬 제품을 개발할 수 있는 새로운 기회를 만들어내고 있다.
|