I’m writing a paper on CPU design and implementation of different mathematical operations, such as addition, multiplication, division, square roots and logarithms. The paper is also about numerical analysis. However, I seem to have reached a dead end. As a result, I have some questions
- Is there any reading material (other papers, books) which can break down some of the operations in simpler steps?
- I was under the impression Newton’s method was used for square roots (and sometimes division), and that a Taylor series was used for logarithms. Is this false? What is used?
- Is it different in software implemented floating point support?
I realize it might depend on the CPU architecture, so answers for a common CPU like one of the newer Intel i7 processors (x86 architecture in general) would be appreciated.
Thanks a lot!
For addition, you want to learn about carry look-ahead adders (specifically the Kogge-Stone adder).
The design of high-performance multipliers is a rather involved subject, and probably outside the scope of what you want to consider for a school project if you aren’t a grad student.
Newton’s method is not typically used in hardware square root or dividers; Goldschmidt’s method is sometimes used (see Peter Markstein’s paper on the subject for a source; it’s quite readable), as it is more suited to hardware, but variants of the schoolbook method are also frequently used (often with a radix larger than two; look into signed-digit division algorithms).
Software implementations tend to be quite different entirely.