非連続都市伝説シリーズ:DMAなら無限のメモリ帯域

呆れますな。

 

 

CPUに処理をさせないというのは、CPUの計算能力だけの話です。

 

たとえDMAであっても、CPUとバスを共有してたら、バスを占有しますね。

 

いくらメモリコントローラが先読みすると言ったって、DMAと競合状態がおきるわけです。

 

もちろん、バスをデバイスごとにぶつ切りにすれば、競合が避けられますね。組み込みマイコンなら、そんなことはお茶の子さいさいです。

 

# メモリの一貫性の維持とか大変でしょうけどね。

 

# そういえば昔はマルチプロセッサで、一貫性を

 

# ソフトウェア(OS)でカバーするのは常識でしたね。

 

 

 

さて、巨大ペイロードつまりでっかいオクテットを扱う場合、データフローにCPUを介在させないことは昔から行われていました。

 

たとえば画像転送装置などです。ペイロードが画像転送LSI w/ GbEであっても、100MIPSくらいのマイコンで制御系パケットだけ捌ければ充分だったわけです。

 

なにしろ肝心の画像データはマイコンのバスに一切ながれないからです。

 

# ヘッダだけ流すことは書くまでもない

 

 

 

こういうのは、一般的にoffload技術と呼ばれるもの(だとごみためでは理解してるもの)ですが、こういうシステム構成でDMA云々を語るのは筋違いですね。

 

 

 

さて、同一システム内にオフロード処理する系と、そうでない系が混在するとして、(オフロード処理用の)それぞれ同じスループットが出るといわれたら、ごみためまんは即座に

 

   

ダウト!

 

と叫びます。

 

   

オフロード用LSIまで積んでおいて、

   

オンロード処理で同じスループットが出るってどういうことすか。

 

という感想です。

 

太古の例なら、

 

   

マイコン性能が上がりすぎて、

   

いつの間にか・・・

   

JPEG圧縮伸張LSIを使った場合と、

   

IJGでソフトウェアエンコード/デコード処理した場合で、

   

スループットは同じになっちゃってました。(てへぺろ)

 

みたいな話はゴロゴロあるようですが。

 

たとえそんな場合でも専用LSIとの組み合わせはCPU負荷を下げるという効果はあるわけです。

 

しかしながら、処理結果の受け渡しにDMAが絡むなら、バスの占有率には注意が必要です。

 

 

 

さて、DMAがバスを食うのは誰でも知っていることで、ごみためで指摘するまでもないことのはずです。

 

それでも最近は、

 

   

いまどきはマイコンでもバスはPCI Express。

   

バス帯域は湯水のごとく・・・

 

という阿呆な議論も耳にします。かすかな記憶では、PCI Expressであっても、1レーンなら、32ビットPCI 66MHzとどっこいどっこいな気がします。

 

いずれにしても、

 

   

PCI Expressの方がPCIより速い

 

とかいうのは子供じみている感じがします。

 

そりゃまぁPCI Express2や3なら2倍4倍になるんでしょうけど。