ここでCLKMクロックモードをLOWにして内部3分周するのが最も簡単な対策なのですが
それを使ったら負けなので(何に?)NDP専用のクロックを用意することにします。
といっても変更はCPLDで原振を分周しているカウンタからタップで8MHzを取り出し、それをNDPのCLK端子
に接続するだけです
![イメージ 1](https://cdn-ak.f.st-hatena.com/images/fotolife/O/O3I/20190804/20190804153738.jpg)
この回路で同じテストプログラムを実行させました
CPUは16MHzで動作しておりソフトウェア演算は8MHzの1/2の時間になるのはいいですが
一方NDPによる演算は同じ8MHz動作なので処理時間は変わらないはずです
ところが実際に動かしてみると1138us→626usと相当短縮されています
![イメージ 2](https://cdn-ak.f.st-hatena.com/images/fotolife/O/O3I/20190804/20190804153742.jpg)
これはNDP命令にデータを引き渡すCPUによる命令、定義域チェックや正規化のためのC言語による
オーバーヘッド部分がCPUの高速化によって大幅に短縮したと考えられます。
逆に言うと浮動小数点処理なのにNDP命令よりCPU命令のほうがずっとウェイトが大きいということになります
ここらへんは386ボードのときにも経験しましたがコードを生成するコンパイラの性能でかなり左右される
といえます