DSP와 표준 마이크로 컨트롤러의 차이점은 무엇입니까?


84

DSP가 디지털 신호 처리에 최적화되어 있음을 이해하지만 그것이 IC 선택 작업에 ​​어떤 영향을 미치는지 잘 모르겠습니다. 마이크로 컨트롤러로하는 거의 모든 것은 디지털 신호 처리와 관련이 있습니다!

예를 들어, 인기있는 Microchip dsPIC30 또는 33 DSP와 다른 16 비트 제품인 PIC24 범용 마이크로 컨트롤러를 비교해 보겠습니다. dsPIC 및 PIC는 동일한 메모리 및 속도를 갖도록 구성 할 수 있으며 주변 장치 세트가 유사하고 A / D 기능이 유사하며 핀 수, 전류 소모 등이 유사합니다. Digikey의 목록에 나타나는 유일한 주요 차이점은 발진기. 가격 (또는 그 문제에 대한 다른 분야)을 보면 차이를 알 수 없습니다.

다양한 프로토콜 (I2C, SPI 등)을 사용하여 몇 가지 외부 센서로 작업하려면 A / D 변환을 수행하고 일부 데이터를 일부 직렬 플래시에 저장하고 일부 버튼에 응답하고 데이터를 문자로 푸시하십시오 LCD와 FT232 (일반적인 임베디드 시스템)에서 어떤 칩을 사용해야합니까? DSP가 어떤 식 으로든 PIC보다 뒤 떨어질 것 같지는 않으며,이 신비로운 "DSP 엔진"을 제공합니다. 내 코드는 항상 수학을 수행하며 가끔 부동 소수점이나 분수가 필요하지만 DSP를 사용하여 이점을 얻을 수 있는지 모르겠습니다.

다른 벤더의 DSP와 마이크로 컨트롤러를보다 일반적으로 비교하는 것도 똑같이 유용 할 것입니다. 나는 이것들을 토론의 시작점으로 사용하고 있습니다.

답변:


64

솔직히 말해서 둘 사이의 경계는 오늘날 거의 사라졌으며 둘 다로 분류 될 수있는 프로세서가 있습니다 (예 : AD Blackfin).

일반적으로 말하면:

마이크로 컨트롤러는 인터럽트 서브 시스템이있는 정수 수학 프로세서입니다. 일부는 하드웨어 곱셈 장치를 가질 수 있고, 일부는 그렇지 않을 수도 있습니다. 요점은 간단한 수학을 위해 설계되었으며 대부분 다른 장치를 제어하기위한 것입니다.

DSP는 스트리밍 신호 처리에 최적화 된 프로세서입니다. 그들은 종종 단일 명령으로 곱하기 누적과 같은 일반적인 작업을 가속화하는 특별한 명령을 가지고 있습니다. 또한 종종 다른 벡터 또는 SIMD 명령어가 있습니다. 역사적으로 이들은 인터럽트 기반 시스템이 아니었고 목적에 맞게 최적화 된 비표준 메모리 시스템으로 작동하여 프로그래밍하기가 더 어려워졌습니다. 일반적으로 데이터 스트림을 처리하는 하나의 큰 루프에서 작동하도록 설계되었습니다. DSP는 정수, 고정 소수점 또는 부동 소수점 프로세서로 설계 될 수 있습니다.

역사적으로 오디오 스트림, 비디오 스트림을 처리하려면 빠른 모터 제어를 수행하십시오. 빠른 속도로 데이터 스트림을 처리해야하는 것은 DSP를 찾는 것입니다.

일부 버튼을 제어하고, 온도를 측정하고, 문자 LCD를 실행하고, 물건을 처리하는 다른 IC를 제어하려면 마이크로 컨트롤러를 사용하십시오.

오늘날, 스트리밍 데이터 또는 기타 DSP 작업을 처리하기 위해 DSP와 같은 명령어가 내장되어 있거나 온칩 보조 프로세서가있는 범용 마이크로 컨트롤러 유형 프로세서가 대부분 있습니다. 특정 산업을 제외하고는 순수한 DSP가 더 이상 많이 사용되지 않습니다.

프로세서 시장은 예전보다 훨씬 넓고 흐릿합니다. 예를 들어 ARM cortex-A8 SoC를 마이크로 컨트롤러로 생각하기는 어렵지만 표준 정의, 특히 PoP 패키지에 적합합니다.

편집 : 응용 프로그램 프로세서 시대에도 DSP를 언제 어디서 사용했는지 설명하기 위해 비트를 추가한다고 생각했습니다.

내가 디자인 한 최근 제품은 '영역'당 X 채널 입력 및 X 채널 출력으로 오디오 처리를 수행했습니다. 제품을 의도적으로 사용한다는 것은 누군가가 제품을 만지지 않고 수년 동안 오디오 채널을 처리하면서 종종 그 일을하고 있다는 것을 의미했습니다. 오디오 처리는 다양한 음향 필터와 기능으로 구성되었습니다. 이 시스템은 또한 하나의 박스에 몇 개의 독립적 인 '영역'을 추가 할 수있는 기능을 갖춘 "핫 플러그 ​​가능"기능을 갖추고 있습니다. 총 3 개의 PCB 디자인 (메인 보드, 백플레인 및 플러그인 모듈)이었고 백플레인은 4 개의 플러그인 모듈을 지원했습니다. 솔로로 할 때 꽤 재미있는 프로젝트로 시스템 설계, 회로도, PCB 레이아웃 및 펌웨어를 수행해야했습니다.

이제 부피가 큰 단일 ARM 코어로 전체 작업을 수행 할 수있었습니다. 영역 당 24 비트 고정 소수점 수에 대해 약 50MIPS의 DSP 작업 만 필요했습니다. 그러나이 시스템이 매우 오랫동안 작동한다는 것을 알았 기 때문에 클릭 또는 팝 등을하지 않는 것이 중요하다는 것을 알았습니다. 영역 당 저전력 DSP와 시스템 관리 역할을 수행하는 단일 PIC 마이크로 컨트롤러로 구현하기로 결정했습니다. 이런 식으로 uC 기능 중 하나가 충돌하더라도 이더넷 포트에서 DDOS 공격이 발생하더라도 DSP는 행복하게도 계속 막을 수 있으며 아무도 몰랐을 것입니다.

따라서 마이크로 컨트롤러는 2 라인 문자 LCD, 일부 버튼, 온도 모니터링 및 팬 제어 (각 보드에는 상당히 고출력 오디오 증폭기가 있음)를 실행하는 역할을 수행했으며 이더넷을 통해 AJAX 스타일 웹 페이지를 제공하기까지했습니다. 또한 직렬 연결을 통해 DSP를 관리했습니다.

따라서 단일 ARM 코어를 사용하여 모든 작업을 수행 할 수 있었던 상황에서도 전용 신호 처리 IC를 설계했습니다.

내가 DSP에 부딪친 다른 영역들 :

* 고음질 오디오-매우 고급 수신기 및 콘서트 품질 믹싱 및 처리 장치

* 레이더 처리-저급 앱에서이를 위해 ARM 코어도 사용했습니다.

* 음파 처리

* 실시간 컴퓨터 비전

대부분의 경우, 오디오 / 비디오 / 유사한 공간의 하단 및 중간 끝은 범용 CPU와 다양한 애플리케이션을위한 보조 프로세서 오프로드 엔진을 결합한 애플리케이션 프로세서에 의해 대체되었습니다.


1
아마 또 다른 추가. 약 80 개의 I / O 라인과 12 개의 아날로그 입력을 가진 어플리케이션에서 우리는 이제 I / O 스트림을 처리하기 위해 연결된 FPGA가있는 단일 마이크로 컨트롤러를 사용하고 있습니다. 이와 같은 솔루션이 점점 보편화되고 있습니다. 우리는이 시스템 ( embeddedarm.com/products/board-detail.php?product=ts-7800) 을 사용하여 짧은 시장 출시 기간 동안 개발을 신속하게 진행하고 있으며 매우 잘 작동한다고 말해야합니다 (물론 가격은 이러한 제품은 판매 가격 / 예상치가 낮은 애플리케이션에는 적합하지 않을 수 있습니다.) – Wouter Simons 33 초 전
Wouter Simons

모든 마이크로 컨트롤러에 인터럽트가있는 것은 아닙니다. 미션 크리티컬 애플리케이션에서는 사용되지 않습니다. 적절한 사례 : 전투기에 사용되는 Viper 컨트롤러.
stevenvh

15

많은 디지털 신호 프로세서에는 '일반적인'프로세서에는없는 다양한 기능이 있습니다.

  1. 두 피연산자가 RAM에서 페치 된 피연산자 쌍당 하나의주기 비율로 곱하기 누산을 수행하는 기능.
  2. 포인터를 랩핑하기 위해 수동 코드를 사용하지 않고도 버퍼를 반복적으로 사용할 수 있도록 '모듈러스'또는 '래핑'주소 지정 형식을 수행하는 기능. 예를 들어 3205x에는 '버퍼 시작'및 '버퍼 엔드'레지스터가 있습니다. 코드가 'buffer start'를 가리키는 포인터 레지스터를 증가 시키거나 감소 시키려고 시도하면 프로세서는 'buffer end'로 포인터를로드합니다. 3205x에는 역 반송 모드도 있습니다. 여기서 주소 추가 전파는 MSB를 LSB로 전달합니다. 이것은 N이 2의 거듭 제곱 일 경우 모듈로 -N 어드레싱을 허용하지만, 물건은 뒤죽박죽으로 저장됩니다.
  3. 명령을 다시 가져올 필요없이 'n'번 실행하도록 지정하는 기능. 8088과 같은 일부 프로세서에는 몇 가지 명령어가 포함되어 있지만 많은 DSP가이를 여러 명령어에서 허용합니다.
  4. 분기없이 코드 블록을 최대 'n'번 반복해서 실행하도록 지정할 수 있습니다. 각 코드를 가져 오기 전에 'loop-end'레지스터에 대해 프로그램 카운터를 검사합니다. 일치하고 루핑이 활성화되면 프로그램 카운터가 'loop-start'로 다시로드됩니다 (그렇지 않으면 증가합니다). 'loop-count'가 0이면 루핑이 비활성화됩니다. 그렇지 않으면 '루프 카운트'가 감소합니다.

많은 DSP는 곱셈 누산의 두 피연산자를 동시에 페치 할 수 있도록 별도의 버스를 갖습니다. 나는 그렇게 할 수있는 비 DSP를 본 적이 없다. 칩이 DSP가되기 위해 '부족해야'하는 기능은 알지 못하지만, 이중 작동 및 페칭을 허용하는 데 필요한 추가 실리콘 공간은 다른 일반적으로 유용한 목적으로 사용되지 않는 실리콘 공간입니다.


나는 곱하기 누산에 익숙했지만 모듈로 어드레싱과 반복 페치 프리 코드 실행은 내가 익숙하지 않은 기능이었습니다.
Kevin Vermeer

1
당신은 훌륭한 답변을 많이 가지고 있으며, 이전과 새로운 질문에 대해 작업하는 것이 멋지다. 사기 탐지 알고리즘 및 일일 담당자 제한 이 아닌 경우 모든 답변을 검토하고 찬성합니다 . 그래도 하루에 몇 개를 기대하십시오! 멋진 일을 계속하십시오!
Kevin Vermeer

@reemrevnivek : 내 답변이 도움이 된다니 다행입니다. 앞서 언급했듯이 이중 인출 다중 누적 설계는 비 DSP 프로세서에서는 볼 수없는 기능입니다. ARM은 곱하기 누산 및 모듈로 주소 지정 (256 바이트 테이블에 대해 유효 주소 (예 : (R0 + (R1 >> 24)) 사용)을 필요로하는) ​​작업을 잘 수행하지만 일반적인 ARM은 다음을 수행하기 위해 4 개의 명령이 필요합니다. DSP는 한 번의 주기로 작동합니다.
supercat

MAC은 두 개의 피연산자 명령어 a <-a + b * c입니다.
Trismegistos 2016 년

@Trismegistos : N- 항목 반복 MAC 연산에는 총 2N + 1 피연산자가 포함됩니다. 각 항목 전에 누산기를 가져 와서 나중에 저장할 필요는 없습니다. 반복되지 않는 곱하기 가산 프로세서는 3 개의 피연산자를 가질 수 있지만 반복 MAC은주기 당 2 개의 피연산자를 가져옵니다.
supercat

13

다른 사람들이 언급하지 않은 한 가지는 숫자 오버플로에 대한 동작입니다. 일반 프로세서에서는 일반적으로 최대 값에서 최소값으로 둘러싸입니다.

DSP 사용의 경우 채도를 대신 사용하는 옵션이 종종 있습니다 . 즉, 오버플로시 값은 최대 값을 유지하므로 왜곡이 적고 아날로그 회로의 동작을 더 잘 모방합니다.


9

DSP와 표준 uController의 가장 큰 차이점은 uC에없는 DSP의 MAC (Multiply Accal Feature)입니다. 이는 FFT (예 : 하나)와 같은 진정한 디지털 신호 처리 수학을 수행하려는 경우에 유용합니다. 표준 마이크로 컨트롤러에서 FFT를 수행하는 것은 DSP의 MAC에서 FFT를 수행하는 것과 비교하여 시간이 오래 걸립니다.

I2C 및 직렬 신호 처리는 DSP에서 파형을 처리하는 것과 다릅니다. 직렬 신호는 비트 뱅킹이므로 완전히 다른 종류의 처리가 진행됩니다.

DSP 포럼에 대한 비슷한 토론이 있습니다 : DSP vs. 마이크로 프로세서


DSP 블록 다이어그램에서 Accumulator를 보았지만 그것이 무엇인지 몰랐습니다. 알아 둘만 한! ASCII 데이터를 보낼 때 I2C 및 직렬은 파형 처리와 동일하지 않지만 일부 주변 장치 (직렬 액세스 가속도계, 외부 A / D, GPS 등)는 데이터 스트림에서 파형을 인코딩합니다. 어떻게 든 DSP에!
케빈 베르메르

3
대부분의 신호 처리는 수학적으로 행렬과 벡터를 곱하는 것으로 구성됩니다. 이 작업을 수행하면 많은 대답 = a b + c d + e * f 유형 계산이 수행됩니다. 많은 명령을 필요로하는 MAC이없는 CPU에서는 MAC을 사용하면 몇 배 더 빠를 수 있습니다.
Mark

1
이 의견은 잘못 작성되었습니다. 전부는 아니지만 많은 MCU에 MAC 기능이있는 하드웨어 승수가 포함되어 있습니다. 이것은 DSP와 MCU의 구별과 관련이 없습니다. 예, DSP는 MCU보다 MAC을 가질 가능성이 높지만이 작은 기능보다 훨씬 더 근본적인 차이가 있습니다.

2
시계를 15 년 동안 되 돌리면이 기능을 갖춘 MCU가 거의 없습니다. DSP에서 MAC 또는 이와 동등한 기능을 사용한다면 DSP가 있다고 정직하게 말할 수 있습니까? 나는 그것을 가지고 있지 않거나 너무 가까운 물건을 가지고 싶지 않다면 분명히 사고 싶지 않을 것입니다. Harvard와 von Neuman 및 메모리 액세스에 들어가면 아키텍처 차이가 있지만 자세한 설명을하지 않고 간단한 대답을하고있었습니다. "Flat out WRONG"이라고 말하면 댓글이 너무 거칠다고 생각합니다. 다루어야 할 깊이에 대한 답변을 게시 할 수 있습니다.
Jay Atkinson

@ 아드리안 : 귀하의 의견이 잘못되었습니다. MCU에 MAC 기능이있는 경우 DSP로 판매됩니다.
요한.

5

DSP를 차별화하는 데 사용한 것은 산술 연산, 특히 곱셈에 대한 최적화였습니다. 요즘에는 마이크로 컨트롤러가 곱셈 및 나눗셈 명령을받는 것은 드문 일이 아닙니다. 일부는 고정 소수점 연산 (예 : TI TMS320s 'IQ'lib)에 대한 하드웨어 지원을 제공하는 한 DSP 칩으로 신호 처리를 수행하는 데있어 여전히 우위에있는 반면, 마이크로는 정수 단위 만 포함 할 가능성이 높습니다.

개인적으로 디자인을 위해 두 가지 중 하나를 선택할 때 응용 프로그램에서 가끔 모드 변경 논리 만 사용하여 반복 계산을 요구했는지 아니면 필요에 따라 짧은 계산 순서 만 수행해야하는지 분류하려고합니다. 전자는 DSP, 후자는 마이크로 일 것이다.

물론 OMAP과 같은 재미있는 것들이 있습니다. = P


1
나는 의도의 차이 (두 번째 단락)를 이해한다고 생각하지만, 마이크로는 DSP와 같은 수학 능력이없고 DSP는 마이크로와 같은 주변 장치 세트를 가질 때 왜 그렇게 할 것인지 잘 모르겠습니다. 내가 OP에서 말했듯이 dsPIC33과 PIC24는 거의 동일한 기능 세트와 동일한 가격을 가질 수 있습니다. 내가 틀렸다면 정정하지만 DSP에 반복적 인 처리 기능이 있지만 PIC24 (또는 내가 본 다른 마이크로)가 듀얼과 같이 모드 변경에서 DSP보다 이점이 있다고 생각하지 않습니다. 파이프 라인 또는 더 빠른 플래시.
Kevin Vermeer

@ reemrevnivek : 그래서 왜 항상 DSP를 선택하지 않습니까?
JustJeff

@JustJeff : 그렇습니다. 정확히 내가 말하는 것입니다.
Kevin Vermeer

1

MAC 명령이 가질 수있는 또 다른 가능한 기능은 곱셈을 가리키는 레지스터를 자동 증가시키는 것입니다. (16 비트 고정 소수점) Clarkspur 코어를 사용하는 Zilog DSP를 프로그래밍했습니다. 이는 3 개의 버스가있는 하버드 아키텍처의 변형으로, 명령 메모리, 데이터 램 뱅크 1 및 데이터 램 뱅크 2의 세 가지 메모리 영역에 동시에 액세스 할 수있게합니다. 한 램 뱅크의 데이터 스트림과 다른 램 뱅크의 계수를 사용하면 MAC / 포인터 증가 작업 당 하나의 단일주기 명령으로 FIR 필터를 수행하십시오. C에서 단일 명령어는 다음과 같습니다.

누산기 + = 램 뱅크 1 [r1 ++] * 램 뱅크 2 [r2 ++];

물론이 명령은 각 계수에 대해 반복됩니다.

또한 이전에 언급하지 않았지만 DSP (적어도 내가 사용했던 오래된 것)는 일반적으로 RISC 아키텍처이며 단일 사이클 (또는 동일한 사이클 수)에서 실행되는 많은 또는 대부분의 명령으로 설계되었습니다. 이를 통해 결정적인 인터럽트 응답 (활성화 된 인터럽트 라인과 실행 된 ISR의 첫 번째 명령 사이의 고정 클럭 카운트)을 프로그래밍 할 수있는 반면, 대부분의 다른 프로세서는 다중 사이클 명령에서 인터럽트가 발생하는 지점. 고정 된 실행 시간은 반복적 인 출력에서 ​​여러 클럭 시간 지터를 제거합니다.

OPic이 Microchip Pic과 DSPic을 비교했을 때 DSPic이 MAC 명령과 다른 몇 가지 추가 기능을 갖춘 Pic 일 뿐이라는 신호 이해가 있었지만 신호 처리 기능을 수행하는 마이크로 컨트롤러의 속도를 확실히 높일 수는 있지만 (논의 된 다른 기능이 없기 때문에) 용어를 DSP라고 부르는 용어를 추진하고있을 수 있습니다. MSP430은 하드웨어 MAC이있는 버전으로도 제공되지만 아무도 DSP를 호출하지 않습니다.

10 ~ 15 년 전 인텔의 주류 프로세서가 "네이티브"신호 처리 (1990 년대 오디오 제작에 일반적으로 사용되는 전용 DSP 프로세서가있는 확장 카드 대신)에 MAC 및 이와 유사한 명령을 추가했다는 점을 기억합니다. 56k 전화 접속 PC 버스 모뎀은 A / D 및 D / A 변환기 일 뿐이며 주 프로세서를 사용하여 모뎀 신호 인코딩 및 디코딩 기능을 수행하므로 더 효율적인 프로세서 사용이 필요했습니다. 비디오 편집 / 인코딩 / 디코딩 및 오디오 녹음 / 제작과 같은 미디어 사용은 DSP 유형 명령에 의해 크게 가속화됩니다.


태양 아래 새로운 것은 없습니다. <g>C의 초기 시절에 증가 및 감소 연산자는 PDP에서 단일 하드웨어 명령어로 직접 변환되도록 설계되었습니다.
피트 베커
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.