第2回

DSPは何に使われているのか

いわゆるディジタル信号処理(Digital Signal Processing; これもDSP)で 使われます。 主に、音声帯域の信号(〜100kHz程度)に対して、 フィルタ処理などを行うのに使います。

DSPをはじめて知ったが、どのようなものかあまり分からなかった

ディジタル信号処理(で使う積和演算)を高速に処理できるように 特化されたプロセッサ、と考えてください。

DSPの欠点はなにか

積和演算などのディジタル信号処理で行う演算以外は、 それほど速く実行できない、というところでしょうか。

DSPとμPはどちらが多く使われているのか

汎用性、という意味では、圧倒的にマイクロプロセッサですね。

μPの動作のところで命令regの役割はなんなのか、また書き込みのタイミングはどうやっているのか

命令レジスタは、メモリから読み込んできた、実行するべき命令を、 一時的(その命令の実行が終わるまでの間)に記憶しておく場所、です。 書き込みは、メモリから命令を持ってくるタイミング(フェッチ)です。

DSPの命令コードにはオペランドがないのか、だとすればどうやって命令コードに対応するデータを命令コードに対応するデータメモリからフェッチできるか良く分からなかった

いえ、演算命令には、演算対象(オペランド)が必ず必要です。 そのオペランドを、印でクスレジスタなどを用いて効率的に指定できる、 というだけのことです。

DSPの構成でのメモリを指定する専用のレジスタをもつというのが良く分からない、なにが長所なのか?

DSPの特徴のポインタを持つと言うところがよくわからない

データが入っているメモリの中の場所を、メモリの中のデータとして 記憶しておくと、メモリの場所を指定するためのアドレスをメモリから 持ってくる、という、二度手間になってしまいます。 そこで、専用のレジスタを、プロセッサ内に持つ、ということです。

DSPの他にはどのようなμPがあるのか

ある用途に特化したプロセッサを設計すれば、それが DSPのような、用途特化のプロセッサ、となります。 たとえばメディアプロセッサと呼ばれる、8ビットや16ビットなどの 比較的精度の低いデータに対する演算を複数同時に実行できるようにした もの、などがあります。 (これは音声データの符号化などの処理の効率を高めたものです)

DSPの構成のZ(n−1)の初期値はどうなっているのか

Z(1)=A(1)・B(1)+Z(0)ですから、最初はゼロ、ですね。

C(M)を求めながら、Z(M-1)を求めることはないのか

よく考えていただくとわかるのですが、 残念ながらそれは無理です。 乗算器の結果C(M)をALU(加算器)に渡しても、その結果であるZ(M)が 出てくるまでには少し時間がかかります。 で、その演算にかかる時間があらかじめ分かっていれば、 そのタイミングで、その結果をZ(M)とすることができますが、 残念ながら、そのタイミングは、演算内容などによって異なるため、 あらかじめ知ることはできません。 したがって、「クロック周期」ごとに、出力レジスタ(実体は後述のように Dフリップフロップ)でタイミングを切る必要があります。

DSPでC(M)を求められるメリットが良く分からなかった

C(M)は乗算の結果、ですね。 これを、ALU(加算器)に、どんどん連続して渡すことで、 乗算器とALUを休ませることなく、効率よく結果を求めることができます。

DSPが高速演算可能な構成をしているのは、実時間信号演算処理を目的としているからなのか

基本的にその通りです。

μPの計算の流れが少し分かりづらく、もう少し詳しくやって欲しかった

すいません、時間の関係で駆け足になってしまいました。 講義資料などで、再度、追いかけてみてください。

DSPの積和演算器でパイプライン処理を行っているとあるが、パイプライン処理を行う場合、キャッシュを置くと効率的に処理を行えるのではないか

積和演算の対象であるデータは、メモリ中にあるA(M)やB(M)ですが、 これは1回の積和演算で1回しか使われませんから、 キャッシュを置いても、キャッシュがヒットすることがないため、 残念ながら効率はあがりません。

DSP等で専用の演算回路を作るとき回路が大きくなるとクロック等はどうなっているのか

大きく分けて、2つの考え方があります。 最も遅い演算器のスピードのあわせて、全体の制御をするように クロック信号を与える方法と、 各演算器ごとに、動作のタイミングを変える、というものです。 後者の方が効率がよさそうですが、制御(とその制御回路の設計)が 難しくなります。

積和演算器の構成が良く理解できなかった

講義資料の方に、もう少し詳しくまとめておきましたので、 復習してみてください。

乗算専用の回路とはどのような構成なのか

この講義の第8回目あたりで詳しく触れる予定です。

DSPは普通のPCにも使われているのか

部分的に使われているものもあるようですね。 つまりメインのマイクロプロセッサの機能を補完する形で、 音声などのデータ処理専用に使われているものもあるようです。

DSPの積和演算を高速化することによって何に役立つのか

ディジタル信号処理が高速になり、例えばリアルタイム(実時間)処理が 可能となるわけです。 それにより、例えば、いましゃべった声にエコーをかける、というような 処理が可能となります。

実験で書き換え可能な回路としてDSPを用いたとおもうが、書き換え可能というのはDSPの特徴ではないのか

いえ、プログラムを書き換え可能、ということは、ノイマン型アーキテクチャの コンピュータ全般に言えることです。 おそらくその実験での、「DSPが書き換え可能」とは、 フィルタ処理などを、回路ではなく、プログラムで記述しているために、 プログラムを変更することで処理を変更することができる、 という意味だと思われます。

ウィンドウズでよくregeditでレジストリを修正したりするが、これとμPのレジスタとは関係はないのか

残念なが関係ありません。 レジストリはregistory、レジスタはregistorです。(確かに似ているな・・・) レジスタは、プロセッサの中にあるメモリ、と考えてください。

μPの構成で、ハーバードorプリンストン、バスの数、演算器の種類と数などあるが、これらは実際にはそれぞれどのような物に選ばれるのか

適材適所、ですね。

マクロプロセッサという言葉はあるのか

あまり聞きませんね。

「μ」ってどういう意味なのか

10-6をあらわすマイクロ、の記号です。

R1のデータD1を選ぶときの流れが良く分からなかった

プロセッサ内のデータバスを通って、ALUのもう一方の入り口へ至ります。

μPとメモリとI/Oデバイスの接続方法で最初に説明した方法で「絡まる」と言う表現をしていたがニュアンスが分からなかった、配線が複雑になるということなのか

そう考えていただければよいと思います。 I/Oが増えれば増えるほど、複雑になっていくことになります。

バス一本でどれほどのスピードが出せるのか

バスの種類によりけり、ですね。 具体的には、バスの電気容量、信号の振幅などに依存します。

バス型接続に欠点はないのか

基本的に、誰かと誰かがデータのやりとりをしていると、 他の人がバスを使えない、という欠点があります。 またすぐ隣とデータのやりとりをするときでも バス全体を駆動(信号に応じて電圧や電流を変化させる)するために 消費電力が大きくなる、という欠点もあります。

データのやり取りの手段は「バス」型接続以外にないのか

アドレスバスとデータバスの構成は違うのか、またそれらが1つにまとまるとどういう短所があるのか

1つのバスを、アドレスを送るときとデータを送るときに分けて 使う方法も、(主にバスを減らすために)もちろんありますが、 当然、効率が悪くなります。

バスインターフェイス回路とはどのような仕組みの回路なのか

アドレスバスに、PCなどの値を出力したり、 データバスからデータを読み取って必要な箇所(レジスタなど)に渡したり、 逆にデータバスに、レジスタなどの値を出力する、などの 制御を、制御回路の制御に応じて行う回路です。 具体的には、双方向バスバッファなどからなる論理回路です。

バスに関して(1)1バス、(2)2,3のバスと2通りのバスをならったが、実際のμPの中では、どちらのバスが主流なのか(予想:コストや場所の面から考えて(1)なのでは…)、またそれぞれの長所と短所はなにか

残念ながら(2)が主流のようです。 つまりそこまで性能に関する市場のニーズ(機能飢餓)が高い、ということでしょうね。 またスケーリングによる微細化によって、相対的にバスの占めるチップ面積が 小さくなっている、ということも要因でしょう。 長短所は、講義中にお話したとおりですが、(1):長所=省面積、短所=効率が悪い。(2):長所=効率が高い、短所=大面積、といったところでしょうか。

バスは説明を聞く限り、片道工事中の道路か線路にしか思えないので、なぜそれを“バス”と言うのか納得しづらい

確かにその通りです。 ただ接続としては、多くのデバイスが「共有」していますから、 バス、と呼ぶようです。 またバスの利用効率を高めるために、1対1のデータのやりとりのときに、 その両者が使っているバスの一部分だけを電気的に切り離し、 他のデバイスが使えるようにする、という工夫も、研究されているようです。

普通のPCは大体プリンストンということなのか

なぜほとんどの計算機がハーバード型なのか

メモリを、命令用とデータ用に分けることの(主にコスト的な)デメリットが 大きいので、プリンストンアーキテクチャを取るものが多いようです。 ただし詳細は触れませんでしたが、キャッシュメモリは、 命令用とデータ用を分ける、ハーバードアーキテクチャのキャッシュメモリを 採用しているプロセッサは、(インテルのx86シリーズを含め)多いようです。

ハーバード、プリンストンアーキテクチャは詳しくどう違うのか

メモリを、プログラムを入れておく命令用メモリと 演算結果などを入れておくデータ用メモリを分ける、という違いです。

ハーバードはアメリカの大学と関係あるのか

それぞれのアーキテクチャが主に研究されている大学が、 ハーバード大とプリンストン大だ、と聞いたことがあります。

ノイマン型でない計算機にはどのようなものがあるのか

いわゆるデータフローマシンと呼ばれる、 データの中に命令のようなものを埋め込んだタイプの計算機があります。 それらはまとめて「非ノイマン型計算機」と呼ばれるようです。 (そのまんまですね)

レジスタをとめるとは、どのようにして行うのか

レジスタの実体はDフリップフロップです。 Dフリップフロップは、クロックの立ち上がり(または立下り)の時点での D入力の値を、出力Qに渡し、それを保持する、という機能があります。 この機能により、例えばレジスタに入力に入っている乗算器の結果を、 すぐに加算器に渡すのではなく、ワンテンポ待つ、ということができる わけです。

セルアレイってなんですか

メモリは数値(データ)を記憶しておくものですが、 数値(最終的には1または0の1ビット)を記憶しておく回路を メモリセル(memory cell)と呼びます。 それが並んでメモリになるわけですが、 そのメモリセルの並びを、セルアレイ(cell array)と呼びます。
ソボクな疑問集に戻る / 講義資料のページに戻る