Floating-point unit: Difference between revisions

Content deleted Content added
History: correction (Intel 80486 is a microprocessor with integrated FPU, not a coprocessor), removed redundant or unfocused links, updated link targets
Improved/updated linking (text and target) for the end user; removed "Radix point" / "decimal point" from See also, as they are rather useless here.
Line 2:
[[File:X87 FPUs.jpg|Collection of the x87 family of math coprocessors by Intel|thumb|180px]]
 
A '''floating-point unit''' ('''FPU''', colloquially a '''math coprocessor''') is a part of a [[computer]] system specially designed to carry out operations on [[floatingFloating-point numberarithmetic|floating-point]]s numbers.<ref>{{Cite journal |author-last1=Anderson |author-first1=Stanley F. |author-last2=Earle |author-first2=John G. |author-last3=Goldschmidt |author-first3=Robert Elliott |author-last4=Powers |author-first4=Don M. |date=January 1967 |title=The IBM System/360 Model 91: Floating-Point Execution Unit |journal=[[IBM Journal of Research and Development]] |volume=11 |issue=1 |pages=34–53 |doi=10.1147/rd.111.0034 |issn=0018-8646}}</ref> Typical operations are [[addition]], [[subtraction]], [[multiplication]], [[division (mathematics)|division]], and [[square root]]. Some FPUs can also perform various [[transcendental function]]s such as [[Exponential function|exponential]] or [[trigonometric]] calculations, but the accuracy can be very low,<ref>{{cite web |url=https://randomascii.wordpress.com/2014/10/09/intel-underestimates-error-bounds-by-1-3-quintillion/ |title=Intel Underestimates Error Bounds by 1.3 quintillion |author=Bruce Dawson |website=randomascii.wordpress.com | date=2014-10-09|accessdate=2020-01-16}}</ref><ref>{{cite web |url=https://software.intel.com/en-us/blogs/2014/10/09/fsin-documentation-improvements-in-the-intel-64-and-ia-32-architectures-software |title=FSIN Documentation Improvements in the “Intel® 64 and IA-32 Architectures Software Developer’s Manual” |website=intel.com | date=2014-10-09|accessdate=2020-01-16}}</ref> so that some systems prefer to compute these functions in software.
 
In general-purpose [[computer architecture]]s, one or more FPUs may be integrated as [[execution unit]]s within the [[central processing unit]]; however, many [[embedded processor]]s do not have hardware support for floating-point operations (while they increasingly have them as standard, at least 32-bit ones).
Line 44:
In the 1980s, it was common in [[IBM PC]]/compatible [[microcomputers]] for the FPU to be entirely separate from the [[Central processing unit|CPU]], and typically sold as an optional add-on. It would only be purchased if needed to speed up or enable math-intensive programs.
 
The IBM PC, [[IBM Personal Computer XT|XT]], and most compatibles based on the 8088 or 8086 had a socket for the optional 8087 coprocessor. The [[IBM Personal Computer/AT|AT]] and [[Intel 80286|80286]]-based systems were generally socketed for the [[x87#80287|80287]], and [[Intel 80386|80386]]/[[80386SX]]-based machines{{snd}} for the [[x87#80387|80387]] and [[Intel 80387SX|80387SX]] respectively, although early ones were socketed for the 80287, since the 80387 did not exist yet. Other companies manufactured co-processors for the Intel x86 series. These included [[Cyrix]] and [[Weitek]].
 
Coprocessors were available for the [[Motorola 68000 series|Motorola 68000 family]], the [[Motorola 68881|68881 and 68882]]. These were common in [[Motorola 68020]]/[[Motorola 68030|68030]]-based [[workstation]]s, like the [[Sun -3]] series. They were also commonly added to higher-end models of Apple [[Macintosh]] and Commodore [[Amiga]] series, but unlike IBM PC-compatible systems, sockets for adding the coprocessor were not as common in lower-end systems.
 
There are also add-on FPUs coprocessor units for [[microcontroller]] units (MCUs/μCs)/[[single-board computer]] (SBCs), which serve to provide floating-point [[arithmetic]] capability. These add-on FPUs are host-processor-independent, possess their own programming requirements ([[Mathematical operation|operations]], [[instruction set]]s, etc.) and are often provided with their own [[integrated development environment]]s (IDEs).
Line 56:
* [[CORDIC]] routines are used in many FPUs to implement functions but not greatly increase gate count
* [[Execution unit]]
* [[IEEE 754]] floating-point standard]] (also known as IEEE&nbsp;754)
* [[IBM Floatinghexadecimal Pointfloating Architecturepoint]]
* [[Radix point]]
** [[decimal point]]
* [[Graphics processing unit]]
* [[Multiply–accumulate operation]]
* [[Fused multiply–add]]
 
== References ==