固定小数点演算っていう概念自体を普通は知らないと思います.なぜかというと、C言語には浮動小数点演算が実装されているので、フツーは何も考えずに
float x;
double y;
x = 1.23456e-12;
y = x / 9.87654321e-36;
などと浮動小数点演算をバシバシ使えるからです.
これ、浮動小数点演算をなにげなく使っていますけど、C言語のコンパイラが隠れて上手に処理してくれているからユーザーには簡単に見えているだけで、実際の内部処理はややこしくて、その数値のメモリへの格納だけでも下図のようにめんどくさいです.
わたしの想像ですけど、たとえばxとyを掛けるときには、①仮数部同士を掛ける→②指数部同士を加える→③指数部の桁上げ桁下げを仮数部に加える→④符号をつける という4段階の手順を経るのでしょう.答えを得るまでに要する命令step数も長くかかります.つまり、高速で動かすのは難しい.高速な信号処理が難しい、となります.
一方で、固定小数点数値のメモリ上への格納は、たとえばC言語の整数のlongだったら 単純に32bitの符号付き整数がメモリ上に置かれるだけです.上の図に似せて描くとこんな感じです.構造が簡単です.
xとyを掛けるときには、乗算回路にxとyを入力すれば1クロックでxyを取り出せます.なのでとても高速ですし、回路規模も小さくて済みます.速くて安いを享受できます.
ではつづく. つぎへ 前へ
人気ブログランキングへ
0 件のコメント:
コメントを投稿