검수요청.png검수요청.png

디지털 신호처리장치

해시넷
sosodam (토론 | 기여)님의 2020년 9월 4일 (금) 13:54 판
이동: 둘러보기, 검색

DSP(Digital Signal Processor)는 디지털 신호 처리를 위해 특별히 제작된 마이크로프로세서로 특히 실시간 운영 체제 계산에 사용된다.

개요

DSP는 디지털 신호 처리의 운영 요구에 최적화된 아키텍처를 가진 전문 마이크로프로세서 칩이다. DSP는 MOS 집적회로 칩에서 제작된다. 기본 조작은 필터링(filtering), 프리어 변환, 상관 함수의 산출, 부호화, 변복조, 미분, 적분, 적응 신호 처리 등이다. 음성 합성, 음성 인식, 음성 부호화, 압축, 중고속 모뎀, 반향 소거 장치(echo canceller) 등의 음성 및 통신 시스템에서 채용되고 있으며, 화상 처리나 서보 모터(servo motor) 제어 등의 고속 디지털 제어 분야에 대한 적용도 실용화되고 있다.[1] 또한 음향신호 처리 분야에서는 맹인 또는 일반인을 위한 전자 음성 발생 장치, 전자오락 등에 이용하며, 3차원 영상처리와 애니메이션에도 이용한다. HDD와 같은 소형의 기계장치를 제어할 수 있으며, 순수한 통신을 위한 디지털 필터로 이용한다. 컴퓨터에는 주 CPU(중앙처리장치)와는 별도의 보조 처리기로 사용하여 음향이나 영상처리를 할 때에 CPU의 부담을 줄여주는 역할을 한다.[2] 뿐만 아니라 오디오 신호 처리, 통신, 디지털 이미지 처리, 레이더, 음파 탐지 및 음성 인식 시스템, 휴대전화, 디스크 드라이브, 고화질 텔레비전(HDTV) 제품 등 일반 소비자 전자 장치 등에 널리 사용된다. DSP의 목표는 일반적으로 연속적인 실제 아날로그 신호를 측정, 필터링 또는 압축하는 것이다. 대부분의 범용 마이크로프로세서는 디지털 신호 처리 알고리즘도 성공적으로 실행할 수 있지만, 실시간으로 그러한 처리를 지속적으로 따라가지 못할 수도 있다. 또 전용 DSP는 통상 전력 효율이 높아 전력 소비 제약 때문에 휴대전화 등 휴대용 기기에 더 적합하다. DSP는 여러 데이터나 지침을 동시에 가져올 수 있는 특수한 메모리 아키텍처를 사용하는 경우가 많다. 또한 DSP는 데이터 압축 기술을 구현하는 경우가 많은데, 특히 이산 코사인 변환(DCT)은 DSP에서 널리 사용되는 압축 기술이다. 디지털 신호 처리 알고리즘은 일반적으로 일련의 데이터 샘플에서 많은 수의 수학적 연산을 빠르고 반복적으로 수행해야 한다. 신호는 아날로그에서 디지털로 끊임없이 변환되고, 디지털로 조작되었다가 다시 아날로그 형태로 변환된다. 많은 DSP 애플리케이션은 지연 시간에 제약이 있다. 즉, 시스템이 작동하려면 DSP 연산을 일정한 시간 내에 완료해야 하며, 지연 처리를 실행할 수 없다. 대부분의 범용 마이크로프로세서와 운영체제는 DSP 알고리즘을 성공적으로 실행할 수 있지만, 전력 효율 제약 때문에 휴대 전화나 PDA와 같은 휴대용 장치에서는 사용하기에 적합하지 않다. 그러나 특수화된 DSP는 더 나은 성능, 더 낮은 대기 시간 및 특수 냉각 또는 대형 배터리에 대한 요구사항이 없는 저비용 솔루션을 제공하는 경향이 있다. 이러한 성능 개선으로 인해 수백 또는 수천 개의 아날로그 필터, 스위치, 주파수 변환기 등이 업링크된 신호를 수신 및 처리하고 다운링크를 준비하기 위해 필요한 상용 통신 위성에 디지털 신호 처리가 도입되었으며, 특수화된 DSP로 대체될 수 있다. 위성의 중량, 전력 소비량, 복잡성/건설 비용, 운영의 신뢰성 및 유연성에 상당한 이점이 있다. 예를 들어 2018년에 발사된 운용사 SES의 SES-12와 SES-14 위성은 모두 DSP를 사용해 용량의 25%를 가진 에어버스 디펜스 앤 스페이스가 만들었다.[3]

역사

배경

독립형 DSP 칩이 등장하기 전에는 일반적으로 비트 슬라이스 칩을 사용하여 초기 디지털 신호 처리 애플리케이션을 구현하였다. AMD 2901 비트-슬라이스 칩은 부품 제품군이 탑재된 것이 매우 인기 있는 선택이었다. AMD의 참조 설계가 있었지만, 특정 설계의 세부사항은 응용 프로그램 특정이었다. 이러한 비트 슬라이스 아키텍처는 때때로 주변 멀티플라이어 칩을 포함할 수 있다. 이러한 곱셈기의 예로는 TDC1008과 TDC1010을 포함한 TRW의 시리즈가 있으며, 그 중 일부는 축열조를 포함하며 필요한 곱셈-축적(MAC) 기능을 제공한다. 전자신호처리는 1970년대에 MOSFET(금속산화반도체 전계효과 트랜지스터, 또는 MOS 트랜지스터)의 폭넓은 채택에 의해 혁명화되었다. MOS 집적회로 기술은 1970년대 초 최초의 단일칩 마이크로프로세서와 마이크로컨트롤러의 기초가 되었다. 그리고 그 후, 최초의 단일칩 DSP가 되었다. 1970년대 후반, DSP에서 또 다른 중요한 발전은 데이터 압축이었다. 선형예측코딩(LPC)은 1966년 나고야 대학교의 이타쿠라 후미타다(Itakura Fumitada)와 닛폰 텔레그래프·전화(NTT)의 사이토 슈조(Shuzo Saito)에 의해 처음 개발되었으며, 이후 비슈누 애털(Bishnu Atal)과 맨프레드 슈뢰더(Manfred R. Schroeder)는 1970년대 초중반 벨랩스에서 1970년대 후반 최초의 스피치 신디사이저 DSP 칩을 개발했다. 이산 코사인 변환(DCT)은 1970년대 초 나시르 아흐메드(Nasir Ahmed)에 의해 처음 제안되었고, 이후 DSP 칩에서 널리 구현되어 많은 기업들이 이산 코사인 변환 기술을 기반으로 DSP 칩을 개발하였다. 이산 코사인 변환은 인코딩, 디코딩, 비디오 부호화, 오디오 부호화, 멀티플렉싱, 제어 신호, 신호, 아날로그-디지털 변환, 휘도 및 색상 차이 포맷에 널리 사용되며 모션 추정, 모션 보정, 프레임 간 예측과 같은 인코딩 작업에도 사용된다. 정량화, 지각 가중치, 엔트로피 인코딩, 가변 인코딩, 모션 벡터 등의 디코딩 연산과 디스플레이를 위한 다른 컬러 포맷(YIQ, YUV, RGB) 간의 역방향 연산과 같은 디코딩 연산이 있다.[3]

발전

1976년 리처드 위긴스(Richard Wiggins)는 텍사스 인스트루먼트 댈러스 연구시설에서 폴 브리더러브(Paul Breedlove), 래리 브링햄(Larry Brantingham), 진 프란츠(Gene Frantz)에게 스피크&스펠(Speak&Strate) 개념을 제안했다. 그로부터 2년 후 1978년, 그들은 업계 최초의 DSP인 TMS5100이 기술 중심축을 이루면서 최초의 스피크&스펠을 제작했다. 또한 음성 합성을 수행하기 위해 선형 예측 코딩을 사용한 최초의 칩이 되는 다른 이정표를 세웠다. 이 칩은 7µm PMOS 제작 공정을 통해 제작이 가능해졌다. 1978년, 아메리칸 마이크로 시스템(AMI)은 S2811을 출시했다. AMI S2811 신호처리 주변장치는 이후 많은 DSP와 마찬가지로 단일 명령으로 곱셈-누적 작동을 수행할 수 있는 하드웨어 승수를 가지고 있다. S2281은 DSP로 특수 설계된 최초의 집적회로 칩으로, 이전에는 양산되지 않았던 기술인 VMOS(V-groove MOS)를 사용하여 제작되었다. 모토로라 6800을 위한 마이크로프로세서 주변 장치로서 설계되었으며, 호스트에 의해 초기화되어야 했다. 하지만 S2811은 시장에서 성공하지 못했다.

1979년 인텔은 2920을 아날로그 신호 프로세서로 출시했다. 내부 신호 처리기가 탑재된 온칩형 ADC/DAC를 보유하고 있었지만 하드웨어 승수가 없어 시장에서 성공하지 못했다.

1980년, 최초의 독립형 완전한 DSP가 국제 고체-상태 회로 컨퍼런스에서 발표되었다. 두 프로세서는 모두 공중 교환 전화망 (Public switched telephone network) 통신 분야의 연구에 의해 영감을 받았다. 음성 대역 애플리케이션에 도입된 µPD7720은 가장 상업적으로 성공한 초기 DSP 중 하나이다. 알타미라(Altamira) DX-1은 지연된 분기 및 분기 예측이 있는 쿼드 정수 파이프라인을 활용한 또 하나의 초기 DSP였다.

1983년에 선보인 TMS32010인 텍사스인스트루먼츠(TI)가 제작한 또 다른 DSP는 더욱 큰 성공을 거둔 것으로 나타났다. 그것은 하버드 아키텍처에 기반을 두고 있어서 별도의 지시와 데이터 메모리를 가지고 있었다. 또한 이미 부하와 누수 또는 곱하기와 같은 지시와 함께 특수 지침 세트를 가지고 있었으며, 16비트 숫자로 작동할 수 있었고 곱하기 추가 작업에 390ns가 필요했다. 텍사스인스트루먼츠는 현재 범용 DSP 시장의 선두주자이다.

약 5년 후 DSP 2세대가 확산되기 시작했다. 그들은 두 개의 피연산자를 동시에 저장하기 위한 3개의 메모리를 가지고 있었고, 꽉 끼는 루프를 가속화할 수 있는 하드웨어를 포함시켰으며, 또한 루프 애드드레싱이 가능한 어드레싱 장치를 가지고 있었다. 이들 중 일부는 24비트 변수에 대해 작동했으며 일반적인 모델은 MAC에 대해 약 21ns만 필요했다. 이 세대의 구성원들은 AT&T DSP16A나 모토로라 56000 같은 모델이 있다. 3세대의 주요 개선점은 데이터 경로에 애플리케이션별 단위와 지침이 등장하거나, 때로는 코프로세서로 나타나는 것이었다. 이 단위들은 푸리에 변환 또는 매트릭스 연산처럼 매우 구체적이면서도 복잡한 수학 문제의 하드웨어 가속화를 허용했다. 모토로라 MC68356과 같은 일부 칩은 병렬로 작동하기 위해 두 개 이상의 프로세서 코어를 포함하기도 했다. 4세대는 명령어 집합과 명령어 인코딩/디코딩의 변경이 가장 잘 특징 지어진다. SIMD 확장이 추가되었고, VLIW와 슈퍼칼라 아키텍처가 나타났다.[3]

구조

소프트웨어

범용 프로세서의 표준에 따르면 DSP 명령어 세트는 종종 매우 불규칙한 경우가 많다. 전통적인 명령어 세트는 더 다양한 작업을 수행할 수 있는 더 일반적인 명령어로 구성되는 반면, 디지털 신호 처리에 최적화된 명령어 세트에는 다음과 같은 일반적인 수학적 작동에 대한 지침이 포함되어 있다. 기존의 명령어 세트와 DSP 최적화 명령어 세트 모두 임의 작업을 계산할 수 있지만, 계산하는 데 여러 ARM 또는 x86 명령이 필요할 수 있는 작업에는 DSP 최적화 명령어 세트에 하나의 명령어만 필요할 수 있다. 소프트웨어 아키텍처에 대한 한 가지 함축적 의미는 손으로 최적화된 조립 코드 루틴(조립 프로그램)이 필수 알고리즘을 처리하기 위해 고급 컴파일러 기술에 의존하는 대신 일반적으로 재사용을 위해 라이브러리에 패키징된다는 것이다. 현대 컴파일러 최적화를 하더라도 손으로 최적화된 조립품 코드는 더 효율적이고 DSP 계산에 관련된 많은 공통 알고리즘은 아키텍처 최적화를 최대한 활용하기 위해 수기로 작성된다. 소프트웨어 아키텍처의 명령 집합은 다음과 같다.[3]

명령 집합
  • 멀티-어큐뮬레이션(MAC, 퓨전 멀티-애드, FMA 포함) 작업
    • 모든 종류의 매트릭스 연산에 광범위하게 사용된다.
      • 필터링을 위한 콘볼루션
      • 도트 제품
      • 다항식 평가
    • 기본 DSP 알고리즘은 다중 계산 성능에 크게 의존한다.
      • 유한 임펄스 응답(FIR) 필터
      • 푸리에 변환 패스트(FFT)
  • 관련 ISA 및 지침
    • 단일 명령 다중 데이터(SIMD)
    • 매우 긴 명령어(VLIW)
    • 수퍼스칼라 구조
  • 푸리에 변환 패스트 상호 참조를 위한 링 버퍼 및 비트 역방향 주소 지정 모드에서 모듈로 주소 지정을 위한 특수 명령어
  • DSP는 때때로 하드웨어를 단순화하고 코딩 효율성을 높이기 위해 시간 역학 인코딩을 사용한다.
  • 다중 산술 단위는 명령 주기당 여러 가지 접근을 지원하는 메모리 아키텍처를 요구할 수 있다. 일반적으로 2개의 개별 데이터 버스에서 2개의 데이터 값을 동시에 판독할 수 있도록 지원한다.
  • 명령어 가져오기 또는 종료 테스트를 위해 오버헤드 제로 루프 및 하드웨어 루프 버퍼와 같은 매우 엄격한 루프에서 몇 개의 명령어를 실행할 수 있는 아키텍처 지원과 같은 특수 루프 제어가 있다.
데이터 지침
  • 포화 산술은 오버플로를 생성하는 연산이 레지스터가 감싸는 대신 보유할 수 있는 최대(또는 최소) 값으로 누적된다. 많은 범용 중앙처리장치처럼 최소로 오버플로되지 않고 최대값으로 유지된다. 때때로 다양한 스티커 비트 작동 모드를 사용할 수 있다.
  • 고정점 산술은 종종 산술 처리 속도를 높이기 위해 사용된다.
  • 파이프라이닝의 이점을 높이기 위한 단일 사이클을 작동한다.
프로그램 흐름
  • 데이터 경로에 직접 통합된 부동 소수점 장치
  • 파이프라인 아키텍처
  • 병렬 멀티플라이어-어큐뮬레이터(MAC 장치)
  • 하드웨어 제어 루프, 루프 작업에 필요한 오버헤드 감소 또는 제거

하드웨어

엔지니어링에서 하드웨어 아키텍처는 시스템의 물리적 요소와 상호관계를 식별하는 것을 말한다. 흔히 하드웨어 설계 모델이라고 불리는 이 설명은 하드웨어 설계자가 그들의 구성요소가 시스템 아키텍처에 어떻게 적합한지 이해할 수 있도록 하며 소프트웨어 개발 및 통합에 필요한 중요한 정보를 소프트웨어 구성요소 설계자에게 제공한다. 하드웨어 아키텍처의 명확한 정의는 다양한 전통적인 엔지니어링 분야(예: 전기 및 기계공학)가 새로운 기계, 장치 및 구성품을 개발 및 제조하기 위해 더 효과적으로 협력할 수 있도록 한다. 하드웨어는 컴퓨터 공학 산업 내에서 하드웨어와 그 위에서 실행되는 소프트웨어를 명시적으로 구별하기 위해 사용되는 표현이기도 하다. 그러나 자동화 및 소프트웨어 엔지니어링 분야의 하드웨어는 단순히 어떤 종류의 컴퓨터일 필요는 없다. 현재 자동차는 아폴로 우주선보다 훨씬 더 많은 소프트웨어를 달린다. 또한, 현대의 항공기는 표준 컴퓨터 하드웨어와 IC 유선 논리 게이트, 아날로그 및 하이브리드 장치, 기타 디지털 구성 요소와 같은 전문 하드웨어 구성 요소 및 표준 컴퓨터 하드웨어에 내장되고 배포된 수천만 개의 컴퓨터 명령을 실행하지 않고는 작동할 수 없다. 컴퓨터, 개인휴대단말기(PDA), 휴대전화, 외과용 계측기, 위성, 잠수함 등 광범위한 응용 분야에 걸쳐 분리된 물리적 구성품이 어떻게 결합하여 복잡한 시스템을 형성하는지를 효과적으로 모델링할 필요가 있다.

메모리 아키텍처

DSP는 대개 스트리밍 데이터에 최적화되어 있으며, 하버드 아키텍처나 수정본 노이만 아키텍처와 같이 여러 데이터나 지시사항을 동시에 가져올 수 있는 특수한 메모리 아키텍처를 사용한다. 이 아키텍처는 별도의 프로그램과 데이터 메모리를 사용한다. 때로는 복수의 데이터 버스에서 동시 접속도 가능하다. DSP는 때때로 캐시 계층 구조와 관련 지연에 대해 알기 위해 지원 코드에 의존할 수 있다. 이것은 더 나은 성과를 낼 수 있는 절충이다. 또한 직접 메모리 액세스(DMA)를 광범위하게 사용한다.

주소 지정 및 가상 메모리

DSP는 다중 태스크 운영 체제를 자주 사용하지만 가상 메모리나 메모리 보호에 대한 지원은 없다. 가상 메모리를 사용하는 운영 체제는 프로세스 간의 컨텍스트 전환에 더 많은 시간이 필요하므로 지연 시간이 증가한다.[3]

  • 하드웨어 모듈로 주소 지정
    • 래핑 테스트 없이 원형 버퍼 구현 가능
  • 비트 변환 주소 지정, 특수 주소 지정 모드
    • 푸리에 변환 패스트 계산에 유용함
  • 메모리 관리 장치 제외
  • 주소 생성 단위

특징

비교

하드웨어 코덱과의 차이

DSP가 하드웨어 코덱과 다른 점은 하드웨어 코덱의 경우 한번 설치된 프로그램을 변경할 수 없다는 점과, DSP의 경우 필요할 때 여러 프로그램을 메모리에 올려 리프로그래밍을 할 수 있다는 점이다. 이 차이는 간단하게 휴대폰의 단일 칩 체제(SoC)에서도 설명이 되는데, 초기 엔비디아 테그라(NVIDIA Tegra) 동영상 코덱 지원의 경우 내부에 내장된 동영상 코덱이 하드웨어 코덱이기 때문에 어떤 논리적 꼼수를 쓰더라도 하드웨어 가속 프로그램을 변경할 수 없었다. 그러나 DSP는 메모리에 프로그램을 올리면 바로 다른 데이터를 처리할 수 있다. 캡처보드에 DSP가 몇 개 안 보임에도 불구하고 수십 가지 인코더와 디코더를 지원하는 이유이다.[4]

펜티엄 칩과의 차이

디지털 신호 처리에 펜티엄 칩을 사용하면 안 되는 이유는 없다. 자주 쓰이지 않는 가장 큰 이유는 비싸기 때문이기도 하다. 비등한 이유로 엄청난 전력 소모 요인도 있다. 비용 측면이 크게 고려되지 않는 분야에서는 펜티엄 칩이 훌륭한 신호처리엔진으로 사용되고 있다. 먼저 펜티엄 칩이 어느 분야에 주로 쓰이는지 알아야 한다. 펜티엄과 같은 칩은 범용 프로세서로 분류하고, 영어로 GPP(General Purpose Processor)라고 부르기도 한다. 이러한 범용 칩들의 특징으로는 매우 큰 메모리를 관리할 수 있다는 것과, 윈도우 XP와 같은 범용 대용량 운영체제를 탑재할 수 있다는 것이 대표적이다. 실제로 게임기부터 산업용 PC 등 곳곳에 쓰이고 있다. 하지만 실시간 시스템에서는 펜티엄과 같은 GPP의 사용 비율이 얼마 되지 않는다. 대체적으로 실시간 시스템의 경우, 요구하는 작업 수는 많지 않으나 작업 특성상 계산량을 많이 요구하며 시간 내에 처리하지 못하면 시스템에 치명적인 오류가 발생하는 특징을 띄고 있다. 이런 분야에 DSP 칩이 널리 쓰인다.[5]

각주

참고 자료

같이 보기


  검수요청.png검수요청.png 이 디지털 신호처리장치 문서는 자동차 부품에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.