Subset of x86 instruction set architecture for floating-point arithmetic
x87 is a floating-point-related subset of the x86 architectureinstruction set. It originated as an extension of the 8086 instruction set in the form of optional floating-point coprocessors that work in tandem with corresponding x86 CPUs. These microchips have names ending in "87". This is also known as the NPX (numeric processor extension). Like other extensions to the basic instruction set, x87 instructions are not strictly needed to construct working programs, but provide hardware and microcode implementations of common numerical tasks, allowing these tasks to be performed much faster than corresponding machine code routines can. The x87 instruction set includes instructions for basic floating-point operations such as addition, subtraction and comparison, but also for more complex numerical operations, such as the computation of the tangent function and its inverse, for example.
Most x86 processors since the Intel 80486 have had these x87 instructions implemented in the main CPU, but the term is sometimes still used to refer to that part of the instruction set. Before x87 instructions were standard in PCs, compilers or programmers had to use rather slow library calls to perform floating-point operations, a method that is still common in (low-cost) embedded systems.
Description
The x87 registers form an eight-level deep non-strict stack structure ranging from ST(0) to ST(7) with registers that can be directly accessed by either operand, using an offset relative to the top, as well as pushed and popped. (This scheme may be compared to how a stack frame may be both pushed/popped and indexed.)
There are instructions to push, calculate, and pop values on top of this stack; unary operations (FSQRT, FPTAN etc.) then implicitly address the topmost ST(0), while binary operations (FADD, FMUL, FCOM, etc.) implicitly address ST(0) and ST(1). The non-strict stack model also allows binary operations to use ST(0) together with a direct memory operand or with an explicitly specified stack register, ST(x), in a role similar to a traditional accumulator (a combined destination and left operand). This can also be reversed on an instruction-by-instruction basis with ST(0) as the unmodified operand and ST(x) as the destination. Furthermore, the contents in ST(0) can be exchanged with another stack register using an instruction called FXCH ST(x).
These properties make the x87 stack usable as seven freely addressable registers plus a dedicated accumulator (or as seven independent accumulators). This is especially applicable on superscalar x86 processors (such as the Pentium of 1993 and later), where these exchange instructions (codes D9C8..D9CFh) are optimized down to a zero clock penalty by using one of the integer paths for FXCH ST(x) in parallel with the FPU instruction. Despite being natural and convenient for human assembly language programmers, some compiler writers have found it complicated to construct automatic code generators that schedule x87 code effectively. Such a stack-based interface potentially can minimize the need to save scratch variables in function calls compared with a register-based interface[1] (although, historically, design issues in the 8087 implementation limited that potential.[2][3])
The x87 provides single-precision, double-precision and 80-bit double-extended precision binary floating-point arithmetic as per the IEEE 754-1985 standard. By default, the x87 processors all use 80-bit double-extended precision internally (to allow sustained precision over many calculations, see IEEE 754 design rationale). A given sequence of arithmetic operations may thus behave slightly differently compared to a strict single-precision or double-precision IEEE 754 FPU.[4] As this may sometimes be problematic for some semi-numerical calculations written to assume double precision for correct operation, to avoid such problems, the x87 can be configured using a special configuration/status register to automatically round to single or double precision after each operation. Since the introduction of SSE2, the x87 instructions are not as essential as they once were, but remain important as a high-precision scalar unit for numerical calculations sensitive to round-off error and requiring the 64-bitmantissaprecision and extended range available in the 80-bit format.
Performance
Clock cycle counts for examples of typical x87 FPU instructions (only register-register versions shown here).[5]
The A...B notation (minimum to maximum) covers timing variations dependent on transient pipeline status and the arithmetic precision chosen (32, 64 or 80 bits); it also includes variations due to numerical cases (such as the number of set bits, zero, etc.). The L → H notation depicts values corresponding to the lowest (L) and the highest (H) maximal clock frequencies that were available.
* An effective zero clock delay is often possible, via superscalar execution.
§ The 5 MHz 8087 was the original x87 processor. Compared to typical software-implemented floating-point routines on an 8086 (without an 8087), the factors would be even larger, perhaps by another factor of 10 (i.e., a correct floating-point addition in assembly language may well consume over 1000 cycles).
Manufacturers
Companies that have designed or manufactured[a] floating-point units compatible with the Intel 8087 or later models include AMD (287, 387, 486DX, 5x86, K5, K6, K7, K8), Chips and Technologies (the Super MATH coprocessors), Cyrix (the FasMath, Cx87SLC, Cx87DLC, etc., 6x86, Cyrix MII), Fujitsu (early Pentium Mobile etc.), Harris Semiconductor (manufactured 80387 and 486DX processors), IBM (various 387 and 486 designs), IDT (the WinChip, C3, C7, Nano, etc.), IIT (the 2C87, 3C87, etc.), LC Technology (the Green MATH coprocessors), National Semiconductor (the Geode GX1, Geode GXm, etc.), NexGen (the Nx587), Rise Technology (the mP6), ST Microelectronics (manufactured 486DX, 5x86, etc.), Texas Instruments (manufactured 486DX processors etc.), Transmeta (the TM5600 and TM5800), ULSI (the Math·Co coprocessors), VIA (the C3, C7, and Nano, etc.), Weitek (the 1067, 1167, 3167 and 4167), and Xtend (the 83S87SX-25 and other coprocessors).
The 8087 was the first math coprocessor for 16-bit processors designed by Intel. It was built to be paired with the Intel 8088 or 8086 microprocessors. (Intel's earlier 8231 and 8232 floating-point processors, marketed for use with the i8080 CPU, were in fact licensed versions of AMD's Am9511 and Am9512 FPUs from 1977 and 1979.[6])
80C187
Although the original 1982 datasheet for the (NMOS based) 80188 and 80186 seem to mention specific math coprocessors,[7] both chips were actually paired with an 8087.
However, in 1987, to work with the refreshed CMOS based Intel 80C186 CPU, Intel introduced the 80C187[8] math coprocessor. The 80C187 interface to the main processor is the same as that of the 8087, but its core is essentially that of an 80387SX and is thus fully IEEE 754-compliant and capable of executing all the 80387's extra instructions.[9]
80287
The 80287 (i287) is the math coprocessor for the Intel 80286 series of microprocessors. Intel's models included variants with specified upper frequency limits ranging from 6 up to 12 MHz. The NMOS version were available 6, 8 and 10 MHz.[10] The available 10 MHz Intel 80287-10 Numerics Coprocessor version was for 250 USD in quantities of 100.[11] These boxed version of 80287, 80287-8, and 80287-10 were available for USD $212, $326, and $374 respectively. There was boxed version of 80C287A available for USD $457.[12] Other 287 models with 387-like performance are the Intel 80C287, built using CHMOS III, and the AMD 80EC287 manufactured in AMD's CMOS process, using only fully static gates.
Later followed the i80287XL with 387SX microarchitecture with a 287 pinout,[13] the i80287XLT, a special version intended for laptops, as well as other variants. It contains an internal 3/2 multiplier, so that motherboards that ran the coprocessor at 2/3 CPU speed could instead run the FPU at the same speed of the CPU. Both 80287XL and 80287XLT offered 50% better performance, 83% less power consumption, and additional instructions.[14]
The 80287 works with the 80386 microprocessor and was initially the only coprocessor available for the 80386 until the introduction of the 80387 in 1987. However, the 80387 is strongly preferred for its higher performance and the greater capability of its instruction set.
6 MHz version of the Intel 80287
Intel 80287 die shot
Intel 80287XL
Intel 80287XLT
80387
The 80387 (387 or i387) is the first Intel coprocessor to be fully compliant with the IEEE 754-1985 standard. Released in 1987,[15] two years after the 386 chip, the i387 includes much improved speed over Intel's previous 8087/80287 coprocessors and improved characteristics of its trigonometric functions. It was made available for USD $500 in quantities of 100.[16] Shortly afterwards, it was made available through Intel's Personal Computer Enhancement Operation for a retail market price of USD $795.[17] The 25 MHz version was available in retail channel for USD $1395.[18] The Intel M387 math coprocessor met under MIL-STD-883 Rev. C standard. This device was tested which includes temperature cycling between -55 and 125 °C, hermeticity sealed and extended burn-in. This military version operates at 16 MHz. This military version was available in 68-lead PGA and quad flatpack. This military version was available for USD $1155 in 100-unit of quantities for the PGA version.[19] The 33 MHz version of 387DX was available and it has the performance of 3.4 megawhetstones per second.[20] The following boxed version of 16-, 20-, 25-, and 33-MHz 387DX math coprocessor were available for USD $570, $647, $814, and $994 respectfully.[21] The 8087 and 80287's FPTAN and FPATAN instructions are limited to an argument in the range ±π/4 (±45°), and the 8087 and 80287 have no direct instructions for the SIN and COS functions.[22][full citation needed]
Without a coprocessor, the 386 normally performs floating-point arithmetic through (relatively slow) software routines, implemented at runtime through a software exception handler. When a math coprocessor is paired with the 386, the coprocessor performs the floating-point arithmetic in hardware, returning results much faster than an (emulating) software library call.
The i387 is compatible only with the standard i386 chip, which has a 32-bit processor bus. The later cost-reduced i386SX, which has a narrower 16-bit data bus, can not interface with the i387's 32-bit bus. The i386SX requires its own coprocessor, the 80387SX, which is compatible with the SX's narrower 16-bit data bus. Intel released the low power version of 387SX coprocessor.[23]
There was an Intel387 SL Mobile Math Coprocessor that has power-management features which can run without significantly reducing battery life. There are two battery-saving power-down modes. The first one contains "stop clock" mode which automatically shutting down the math coprocessor when it not needed. This mode consumes about 25 microamperes. The second mode operates automatically when the user is running application which requires the coprocessor is executing an instruction. That mode typically consumes 30 percent less battery power (about 100 mA) than the regular Intel387 SX Math Coprocessor. It goes to "idle" mode when it is not executing an instruction down to less than 4 mA a 96 percent power reduction compared to the active mode. It will work in the range of 16 to 25 MHz and does not require BIOS or hardware reconfiguration. It was available for USD $189.[24]
The i487SX (P23N) was marketed as a floating-point unitcoprocessor for Intel i486SX machines. It actually contained a full-blown i486DX implementation. When installed into an i486SX system, the i487 disabled the main CPU and took over all CPU operations. The i487 took measures to detect the presence of an i486SX and would not function without the original CPU in place.[25][26][failed verification]
80587
The Nx587 was the last FPU for x86 to be manufactured separately from the CPU, in this case NexGen's Nx586.
^Fabless companies design a chip and rely on a fabbed company to manufacture it, while fabbed companies can do both the design and the manufacture by themselves.
References
^William Kahan (2 November 1990). "On the advantages of 8087's stack"(PDF). Unpublished course notes, Computer Science Division, University of California at Berkeley. Archived from the original(PDF) on 18 January 2017.
^Yoshida, Stacy, "Math Coprocessors: Keeping Your Computer Up for the Count", Intel Corporation, Microcomputer Solutions, September/October 1990, page 16
^Intel Corporation, "New Product Focus Component: A 32-Bit Microprocessor With A Little Help From Some Friends", Special 32-Bit Issue Solutions, November/December 1985, page 13.
^Yoshida, Stacy, "Math Coprocessors: Keeping Your Computer Up for the Count", Intel Corporation, Microcomputer Solutions, September/October 1990, page 16
Universitario (CUBA)Nama penuhClub Universitario de Buenos AiresUniUnión de Rugby de Buenos AiresJulukanCUBADidirikan11 Mei 1918; 105 tahun lalu (1918-05-11)LetakBuenos Aires, ArgentinaLapanganVilla de Mayo, Buenos Aires RayaKetuaMarcelo Perri[1]PelatihJuan José Villar Tomás CóppolaLigaTorneo de la URBA Grupo I20168° of Top 14[2] Baju ke-1 Baju ke-2 InternasionalSitus web resmiwww.cuba.org.ar Templat:Club Universitario de Buenos Aires sections Club Universitario de B...
Artikel ini membutuhkan rujukan tambahan agar kualitasnya dapat dipastikan. Mohon bantu kami mengembangkan artikel ini dengan cara menambahkan rujukan ke sumber tepercaya. Pernyataan tak bersumber bisa saja dipertentangkan dan dihapus.Cari sumber: Wilayah metropolitan Las Vegas – berita · surat kabar · buku · cendekiawan · JSTOR (October 2007) Untuk kota di dalamnya, lihat Las Vegas, Nevada. Untuk penggunaan lain, lihat Las Vegas. The Las Vegas Strip, ...
العلاقات الأندورية التشيلية أندورا تشيلي أندورا تشيلي تعديل مصدري - تعديل العلاقات الأندورية التشيلية هي العلاقات الثنائية التي تجمع بين أندورا وتشيلي.[1][2][3][4][5] مقارنة بين البلدين هذه مقارنة عامة ومرجعية للدولتين: وجه المقارنة أندو�...
Cet article est une ébauche concernant un logiciel libre. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. GNU Zile Informations Développé par Projet GNU Première version 6 juin 1997 Dernière version 2.6.2 (4 mai 2021)[1] Dépôt git.savannah.gnu.org/cgit/zile.git Écrit en C et Lisp Système d'exploitation GNU/Linux, BSD et macOS Environnement GNU/Linux, FreeBSD, NetBSD, OpenBSD, GNU, Mac OS X Langues Angla...
Disambiguazione – Se stai cercando altri significati, vedi Eros (disambigua). ErosEros che incorda l'arco - Copia romana in marmo dall'originale di Lisippo conservata nei Musei Capitolini di Roma. Nome orig.Ἔρως Lingua orig.greco antico Caratteristiche immaginarieProfessioneDio dell'amore fisico AffiliazioneDei primigeniDei olimpici (divinità minore) Eros (in greco antico: Ἔρως?, Érōs) è, nella religione greca, il dio dell'amore fisico e del desiderio[1], in...
Major League Baseball team season 2017 Cincinnati RedsLeagueNational LeagueDivisionCentralBallparkGreat American Ball ParkCityCincinnati, OhioRecord68–94 (.420)Divisional place5thOwnersBob CastelliniGeneral managersDick WilliamsManagersBryan PriceTelevisionFox Sports Ohio(Thom Brennaman, Chris Welsh, Jim Kelch, George Grande, Jeff Brantley, Jim Day, Jeff Piecoro)RadioWLW (700 AM)Reds Radio Network(Marty Brennaman, Jeff Brantley, Jim Kelch, Thom Brennaman, Doug Flynn, Chris Welsh)Stats...
В Википедии есть статьи о других людях с фамилией Трота. Карл Дитрих фон Тротанем. Carl-Dietrich von Trotha Имя при рождении Карл Дитрих Эрнст Вильгельм фон Трота Дата рождения 25 июня 1907(1907-06-25) Место рождения Крайзау, Германия Дата смерти 28 июня 1952(1952-06-28) (45 лет) Место смерти Ф�...
West and East Germany team competing at the 1960 Summer Olympics Sporting event delegationUnited Team of Germany at the1960 Summer OlympicsFlag of Germany superimposedwith the Olympic ringsIOC codeEUANOCUnited Team of Germanyin Rome, Italy25 August-11 SeptemberCompetitors293 (238 men, 55 women) in 17 sportsFlag bearerFritz Thiedemann (equestrian)MedalsRanked 4th Gold 12 Silver 19 Bronze 11 Total 42 Summer Olympics appearances (overview)195619601964Other related appearances Germ...
A list of deities of the Celtic peoples Part of a series onCeltic mythologies Religion (Proto) Deities (list) Animism Gaelic Irish Scottish Brythonic Welsh Breton Cornish Literary works Mythological Cycle Ulster Cycle Fianna Cycle Kings' Cycles Mabinogion Matter of Britain Welsh Triads Motifs Otherworld Beheading game Champion's portion Geas Imbas Sovereignty goddess/Loathly lady Magic mist Niskai Sacred trees Shapeshifting Silver Branch Threefold death Wasteland Well of wisdom Festivals Samh...
Overview of the use and culture of cannabis in Wisconsin, U.S. Part of a series onCannabis ArtsCulture 420 (chan) Books Magu (deity) Names Religion Judaism Latter-day Saints Sikhism Smoke-in Spiritual use Sports Stoner film Stoner rock Terms Chemistry Cannabinoid receptors Cannabinoid receptor type 1 Cannabinoid receptor type 2 Cannabinoids 2-AG 2-AGE, Noladin ether AEA CBC CBL CBD CBDV CBG CBN CBV NADA THC THCV Virodhamine Synthetic cannabinoids AM-2201 CP-55940 Dimethylheptylpyran HU-210 HU...
Tax levied on property purchases or documents This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Stamp duty – news · newspapers · books · scholar · JSTOR (January 2012) (Learn how and when to remove this message) Part of a series onTaxation An aspect of fiscal policy Policies Government revenue Property tax equ...
2022 film score by Michael GiacchinoMarvel Studios' Werewolf by Night (Original Soundtrack)Film score by Michael GiacchinoReleasedOctober 7, 2022 (2022-10-07)StudioAbbey Road StudiosGenreFilm scoreLength41:25Label Hollywood Marvel Music Michael Giacchino chronology Thor: Love and Thunder(2022) Werewolf by Night (Original Soundtrack)(2022) Next Goal Wins(2023) Marvel Cinematic Universe soundtrack chronology She-Hulk: Attorney at Law(2022) Werewolf by Night(2022) Black P...
Steve Lillywhite Steve Lillywhite (Londra, 15 marzo 1955) è un produttore discografico britannico. Indice 1 Carriera 2 Note 3 Bibliografia 4 Altri progetti 5 Collegamenti esterni Carriera Entra nell'industria discografica nel 1972, nella casa discografica Polygram con la quale produce un demo per gli Ultravox, per poi passare successivamente alla Island Records. Gli saranno affidati i nuovi musicisti della nascente new wave. Nel 1980 produce Peter Gabriel (III) che si rivela interessante sop...
2001 soundtrack album by Aventuras En El TiempoAventuras En El TiempoSoundtrack album by Aventuras En El TiempoReleasedJuly 31, 2001[1]Recorded2001GenrePop, latin popLength39:54LabelFonovisa[1]ProducerAlejandro Abaroa[2]Aventuras En El Tiempo chronology Aventuras En El Tiempo(2001) Aventuras En El Tiempo En Vivo(2001) Aventuras En El Tiempo is a soundtrack for the Mexican television series Aventuras En El Tiempo (Adventures In Time), it was released in Mexico b...
Barbadian cricketer (born 1988) Kemar RoachRoach in 2010Personal informationFull nameKemar Andre Jamal RoachBorn (1988-06-30) 30 June 1988 (age 36)Saint Lucy, BarbadosHeight173 cm (5 ft 8 in)BattingRight-handedBowlingRight-arm fastRoleBowlerInternational information National sideWest Indies (2008–present)Test debut (cap 279)9 July 2009 v BangladeshLast Test25 January 2024 v AustraliaODI debut (cap 144)20 August 2008 v ...
Evalyn KnappKnapp, 1932LahirEvelyn Pauline Knapp(1906-06-17)17 Juni 1906Kansas City, Missouri, A.S.Meninggal12 Juni 1981(1981-06-12) (umur 74)[1]Los Angeles, California, A.S.PekerjaanAktrisTahun aktif1929 –1943Suami/istriDr. George A. Snyder (1934–1977; his death) Evalyn Knapp (nee Evelyn Pauline Knapp; 17 Juni 1906 – 12 Juni 1981) adalah seorang aktris film Amerika pada akhir 1920-an, 1930-an, dan 1940-an. Dia adalah aktris terkemuka B-film serial pada ...