正直に言うと、この2つの間の境界線はほとんどなくなっており、両方(AD Blackfinなど)に分類できるプロセッサーがあります。
一般的に言えば:
マイクロコントローラーは、割り込みサブシステムを備えた整数演算プロセッサーです。ハードウェア乗算ユニットを使用する場合と使用しない場合などがあります。ポイントは、単純な数学用に設計されており、主に他のデバイスを制御するためです。
DSPは、ストリーミング信号処理用に最適化されたプロセッサです。多くの場合、単一の命令での積和などの一般的なタスクを高速化する特別な命令があります。多くの場合、他のベクトルまたはSIMD命令もあります。歴史的には、割り込みベースのシステムではなく、目的に合わせて最適化された非標準のメモリシステムで動作していたため、プログラミングが難しくなりました。それらは通常、データストリームを処理する1つの大きなループで動作するように設計されています。DSPは、整数、固定小数点、または浮動小数点プロセッサとして設計できます。
歴史的に、オーディオストリーム、ビデオストリームの処理、高速モーター制御、高速でのデータストリームの処理を必要とするものはすべて、DSPに依存していました。
一部のボタンを制御したり、温度を測定したり、文字LCDを実行したり、物を処理している他のICを制御したい場合は、マイクロコントローラーを使用します。
現在、ほとんどの場合、DSPのような命令が組み込まれた、またはストリーミングデータやその他のDSP操作を処理するオンチップコプロセッサを備えた汎用マイクロコントローラタイプのプロセッサがあります。特定の業界を除いて、純粋なDSPが使用されることはもうありません。
プロセッサ市場は、以前よりはるかに広く、ぼやけています。例えば、ARM cortex-A8 SoCをマイクロコントローラーとはほとんど考えていませんが、特にPoPパッケージでは、おそらく標準定義に適合しています。
編集:アプリケーションプロセッサの時代でさえDSPをいつ/どこで使用したかを説明するために少し追加すると思いました。
私が設計した最近の製品は、「ゾーン」ごとに入力のXチャンネルと出力のXチャンネルでオーディオ処理を行っていました。製品の使用目的は、何もしないで何年もそこに座って、何年もオーディオチャンネルを処理することを意味します。オーディオ処理は、さまざまな音響フィルターと機能で構成されていました。システムはまた、「ホットプラグ可能」であり、いくつかの独立した「ゾーン」をすべて1つのボックスに追加できます。合計3つのPCBデザイン(メインボード、バックプレーン、プラグインモジュール)で、バックプレーンは4つのプラグインモジュールをサポートしていました。ソロをやっていたので、とても楽しいプロジェクトでした。システム設計、回路図、PCBレイアウト、ファームウェアをやらなければなりませんでした。
単一のかさばるARMコアですべてを実行できたので、ゾーンごとに24ビットの固定小数点数で約50MIPSのDSPのみが必要でした。しかし、私はこのシステムが非常に長い間動作することを知っていたため、クリックやポップなどを絶対にしないことが重要であることを知っていました。ゾーンごとに低電力DSPと、システム管理の役割を果たした単一のPICマイクロコントローラーで実装することにしました。このように、uC機能の1つがクラッシュした場合(多分そのイーサネットポートに対するDDOS攻撃)でも、DSPは喜んで離れてしまい、誰も知らないでしょう。
そのため、マイクロコントローラーは2行の文字LCD、いくつかのボタン、温度監視、ファン制御(各ボードにはかなり高出力のオーディオアンプもありました)を実行する役割を果たし、イーサネット経由でAJAXスタイルのWebページを提供しました。また、シリアル接続を介してDSPを管理しました。
そのため、単一のARMコアを使用してすべてを行うことができた日でさえ、専用の信号処理ICが設計に必要な状況でした。
DSPに出会った他の領域:
*ハイエンドオーディオ-非常にハイエンドのレシーバーとコンサート品質のミキシングおよび処理装置
*レーダー処理-ローエンドアプリでもこれにARMコアを使用しました。
*ソナー処理
*リアルタイムコンピュータビジョン
ほとんどの場合、オーディオ/ビデオ/同様のスペースのローエンドとミッドエンドは、さまざまなアプリケーションの汎用CPUとco-procオフロードエンジンを組み合わせたアプリケーションプロセッサに引き継がれています。