Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Intel 8088

From Wikipedia, the free encyclopedia
Intel microprocessor model

Intel 8088
D8088 in a ceramic DIP with silver pins
General information
Launched1979
Discontinued1998[1]
Common manufacturer
Performance
Max.CPUclock rate5 MHz to 16 MHz
Data width8 bits
Address width20 bits
Architecture and classification
ApplicationDesktop, Embedded
Technology node3 µm
Instruction setx86-16
Physical specifications
Transistors
Co-processorIntel 8087
Packages
Socket
Products, models, variants
Variant
History
PredecessorIntel 8085
Successors80186 and80286 (both of which were introduced in early 1982)
Support status
Unsupported

TheIntel 8088 ("eighty-eighty-eight", also callediAPX 88)[2][3][4]microprocessor is a variant of theIntel 8086. Introduced on June 1, 1979,[5][6][7][8] the 8088 has an eight-bit externaldata bus instead of the16-bit bus of the 8086. The 16-bit registers and the onemegabyte address range are unchanged, however. In fact, according to the Intel documentation, the 8086 and 8088 have the sameexecution unit (EU)—only thebus interface unit (BIU) is different. The 8088 was used in the originalIBM PC and inIBM PC compatible clones.

History and description

[edit]
Die of AMD 8088

The 8088 was designed at Intel's laboratory inHaifa,Israel, as were a large number of Intel's processors.[9] The 8088 was targeted at economical systems by allowing the use of an eight-bit data path and eight-bit support and peripheral chips; complex circuit boards were still fairly cumbersome and expensive when it was released. Theprefetch queue of the 8088 was shortened to four bytes, from the 8086's six bytes, and the prefetch algorithm was slightly modified to adapt to the narrower bus.[a] These modifications of the basic 8086 design were one of the first jobs assigned to Intel's new design office and laboratory in Haifa.

Variants of the 8088 with more than 5 MHz maximal clock frequency include the 8088–2, which wasfabricated using Intel's new enhancednMOS process calledHMOS and specified for a maximal frequency of 8 MHz. Later followed the 80C88, afully staticCHMOS design, which could operate with clock speeds from 0 to 8 MHz. There were also several other, more or less similar, variants from other manufacturers. For instance, theNEC V20 was apin-compatible and slightly faster (at the same clock frequency) variant of the 8088, designed and manufactured byNEC. Successive NEC 8088 compatible processors would run at up to 16 MHz. In 1984,Commodore International signed a deal to manufacture the 8088 for use in a licensedDynalogic Hyperion clone, in a move that was regarded as signaling a major new direction for the company.[10] The available CMOS version was outsourced toOki Electronic Industry Co., Ltd.[11] When announced, the list price of the 8088 was US$124.80.[12][13] The plastic package version was introduced in July 1981 for USD $14.10 per 100 in quantities.[14] Intel second sourced this microprocessor toFujitsu Limited.[15]

Differences from the 8086

[edit]

The 8088 is architecturally very similar to the 8086. The main difference is that there are only eight data lines instead of the 8086's 16 lines. All of the other pins of the device perform the same function as they do with the 8086 with two exceptions. First, pin 34 is no longerBHE (this is the high-order byte select on the 8086—the 8088 does not have a high-order byte on its eight-bit data bus).[16]: 5–97  Instead it outputs a maximum mode status,SS0. Combined with the IO/M and DT/R signals, the bus cycles can be decoded (it generally indicates when a write operation or an interrupt is in progress). The second change is the pin that signals whether a memory access or input/output access is being made has had its sense reversed. The pin on the 8088 is IO/M. On the 8086 part it isIO/M. The reason for the reversal is that it makes the 8088 compatible with the8085.[16]: 5–98 

Performance

[edit]

Depending on theclock frequency, the number of memorywait states, as well as on the characteristics of the particular application program, theaverage performance for the Intel 8088 ranged approximately from 0.33 to 1 millioninstructions per second.[17] Meanwhile, themovreg,reg andALU[b]reg,reg instructions, taking two and three cycles respectively, yielded anabsolute peak performance of between13 and12 MIPS per MHz, that is, somewhere in the range 3–5 MIPS at 10 MHz.

The speed of the execution unit (EU) and the bus of the 8086 CPU was well balanced; with a typical instruction mix, an 8086 could execute instructions out of the prefetch queue a good bit of the time. Cutting down the bus to eight bits made it a serious bottleneck in the 8088. With the speed of instruction fetch reduced by 50% in the 8088 as compared to the 8086, a sequence of fast instructions can quickly drain the four-byte prefetch queue. When the queue is empty, instructions take as long to complete as they take to fetch. Both the 8086 and 8088 take four clock cycles to complete a bus cycle; whereas for the 8086 this means four clocks to transfer two bytes, on the 8088 it is four clocks per byte. Therefore, for example, a two-byte shift or rotate instruction, which takes the EU only two clock cycles to execute, actually takes eight clock cycles to complete if it is not in the prefetch queue. A sequence of such fast instructions prevents the queue from being filled as fast as it is drained, and in general, because so many basic instructions execute in fewer than four clocks per instruction byte—including almost all the ALU and data-movement instructions on register operands and some of these on memory operands—it is practically impossible to avoid idling the EU in the 8088 at least14 of the time while executing useful real-world programs, and it is not hard to idle it half the time. In short, an 8088 typically runs about half as fast as 8086 clocked at the same rate, because of the bus bottleneck (the only major difference).

A side effect of the 8088 design, with the slow bus and the small prefetch queue, is that the speed of code execution can be very dependent on instruction order. When programming the 8088, for CPU efficiency, it is vital to interleave long-running instructions with short ones whenever possible. For example, a repeated string operation or a shift by three or more will take long enough to allow time for the 4-byte prefetch queue to completely fill. If short instructions (i.e. ones totaling few bytes) are placed between slower instructions like these, the short ones can execute at full speed out of the queue. If, on the other hand, the slow instructions are executed sequentially, back to back, then after the first of them the bus unit will be forced to idle because the queue will already be full, with the consequence that later more of the faster instructions will suffer fetch delays that might have been avoidable. As some instructions, such as single-bit-position shifts and rotates, take literally 4 times as long to fetch as to execute,[c] the overall effect can be a slowdown by a factor of two or more. If those code segments are the bodies of loops, the difference in execution time may be very noticeable on the human timescale.

The 8088 is also (like the 8086) slow at accessing memory. The same ALU that is used to execute arithmetic and logic instructions is also used to calculate effective addresses. There is a separate adder for adding a shifted segment register to the offset address, but the offset EA itself is always calculated entirely in the main ALU. Furthermore, the loose coupling of the EU and BIU (bus unit) inserts communication overhead between the units, and the four-clock period bus transfer cycle is not particularly streamlined. Contrast this with the two-clock period bus cycle of the 6502 CPU and the 80286's three-clock period bus cycle with pipelining down to two cycles for most transfers. Most 8088 instructions that can operate on either registers or memory, including common ALU and data-movement operations, are at least four times slower for memory operands than for only register operands. Therefore, efficient 8088 (and 8086) programs avoid repeated access of memory operands when possible, loading operands from memory into registers to work with them there and storing back only the finished results. The relatively large general register set of the 8088 compared to its contemporaries assists this strategy. When there are not enough registers for all variables that are needed at once, saving registers by pushing them onto the stack and popping them back to restore them is the fastest way to use memory to augment the registers, as the stack PUSH and POP instructions are the fastest memory operations. The same is probably not true on the 80186 and later; they have dedicated address ALUs and perform memory accesses much faster than the 8088 and 8086.

Finally, because calls, jumps, and interrupts reset the prefetch queue, and because loading the IP register requires communication between the EU and the BIU (since the IP register is in the BIU, not in the EU, where the general registers are), these operations are costly. All jumps and calls take at least 15 clock cycles. Any conditional jump requires four clock cycles if not taken, but if taken, it requires 16 cycles in addition to resetting the prefetch queue; therefore, conditional jumps should be arranged to be not taken most of the time, especially inside loops. In some cases, a sequence of logic and movement operations is faster than a conditional jump that skips over one or two instructions to achieve the same result.

Intel datasheets for the 8086 and 8088 advertised the dedicated multiply and divide instructions (MUL, IMUL, DIV, and IDIV), but they are very slow, on the order of 100–200 clock cycles each. Many simple multiplications by small constants (besides powers of 2, for which shifts can be used) can be done much faster using dedicated short subroutines. The 80286 and 80386 each greatly increase the execution speed of these multiply and divide instructions.[d]

Selection for use in the IBM PC

[edit]
IBM Personal Computer

The originalIBM PC is the most influential microcomputer to use the 8088. It has aclock frequency of 4.77 MHz (4/3 theNTSCcolorburst frequency). Some of IBM's engineers and other employees wanted to use theIBM 801 processor, some preferred the newMotorola 68000,[e] and others argued for a small and simple microprocessor, such as theMOS Technology 6502 orZilog Z80, which are in earlier personal computers. However, IBM already had a history of using Intel chips in its products and had also acquired the rights to manufacture the8086 family.[f]

IBM chose the 8088 over the 8086 because Intel offered a better price for the former and could supply more units.[18] Another factor was that the 8088 allowed the computer to be based on a modified8085 design, as it could easily interface with most nMOS chips with 8-bit databuses. These were mature, and therefore economical, components. This included ICs originally intended for support and peripheral functions around the 8085 and similar processors (not exclusively Intel's), which were already well known by many engineers, further reducing cost.[g]

The descendants of the 8088 include the80188,80186,80286,80386,80486, and latersoftware-compatible processors, including theIntel Core processors, which are popular today.

Gallery

[edit]
  • Intel 8088, original 5 MHz nMOS variant in plastic DIP package
    Intel 8088, original 5 MHznMOS variant in plasticDIP package
  • Plastic DIP40 8088, top view
    Plastic DIP40 8088, top view
  • Plastic DIP40 8088, bottom view
    Plastic DIP40 8088, bottom view
  • Intel 80C88A-2, later CMOS variant
    Intel 80C88A-2, laterCMOS variant
  • Intel 80C88 in PLCC44 package[gallery 1][19]
    Intel 80C88 inPLCC44 package[gallery 1][19]
  1. ^Sampling Q4 1985

Peripherals

[edit]

See also

[edit]

Notes

[edit]
  1. ^Specifically, the most obvious change is that the 8088 bus unit will prefetch a byte when it can if at least one byte of the queue is empty; the 8086 bus unit will not prefetch unless at least two of the six queue bytes are empty, so that it can prefetch a whole aligned 16-bit word, which it does in one bus cycle. The 8088, having an 8-bit external data bus, can only fetch one byte per bus cycle, so waiting to prefetch a whole word would have no benefit and would only delay, reducing the chance that the next instruction byte is already in the prefetch queue when it is needed.
  2. ^ALU stands for one of the instructions ADD, ADC, SUB, SBC, CMP, AND, OR, XOR, TEST.
  3. ^On the 8088, a shift instruction with an implied shift count of 1, which can execute in two clock cycles, is two bytes long and so takes eight clock cycles to fetch.
  4. ^Most of the technical information in this section is sourced from the Intel iAPX 86,88 User's Manual, August 1981 (Order Number: 210201-001) by Intel Corporation.
  5. ^Later used for the IBM InstrumentsLaboratory Computer.
  6. ^In exchange for giving Intel the rights to itsbubble memory designs. However, due to fierce competition from Japanese manufacturers, who were able to undercut by cost, Intel soon left this market and changed focus to microprocessors.
  7. ^68000 components were not widely available at the time, though it could useMotorola 6800 components to an extent.

References

[edit]
  1. ^CPU History – The CPU Museum – Life Cycle of the CPU.
  2. ^"iAPX 86, iAPX 88 user's manual"(PDF). RetrievedOctober 5, 2024.
  3. ^"iAPX 86, 88, 186 Microprocessors Part I, Workshop Notebook"(PDF). June 1984.
  4. ^"iAPX 286 Programmers' Reference Manual"(PDF). 1983. page 1-1.
  5. ^"Microprocessor Quick Reference Guide".Intel. Intel. RetrievedJune 1, 2019.
  6. ^"Microprocessor Quick Reference Guide".Intel. Intel. RetrievedJune 1, 2019.
  7. ^Singh, Renu (2006).Microprocessor Interfacing and Applications. New Age International. pp. 2–27.ISBN 81-224-1400-1. RetrievedJune 1, 2019.
  8. ^Govindarajalu, B. (2002).IBM PC and Clones: Hardware, Troubleshooting and Maintenance (2nd ed.). McGraw-Hill. p. 248.ISBN 978-0-07-048286-9. RetrievedJune 1, 2019.
  9. ^Gilder, George F. (October 10, 2013).The Israel Test.Encounter Books. p. 100.ISBN 978-1594036125.
  10. ^Cook, Karen (April 17 – May 1, 1984)."Commodore Adds Hyperion, Chips".PC Magazine. Vol. 1, no. 8. p. 52.
  11. ^Intel Corporation, "NewsBit: Intel Licenses Oki on CMOS Version of Several Products", Solutions, July/August 1984, Page 1.
  12. ^"Intel Brings Out 8-Bit MPU featuring 16-Bit Architecture".Computerworld. Vol. XIII, no. 20. May 14, 1979. p. 71. RetrievedNovember 21, 2011.
  13. ^Intel Corporation, "Microcomputer Components: Intel Introduces the 8089 IOP, an I/O processor for the advanced 8088/8086 CPU family, the first of a series of new subsystem components", Intel Preview, May/June 1979, Pg 9.
  14. ^Intel Corporation, "News Bits", Solutions, July/August 1981, Page 1
  15. ^Intel Corporation, "NewsBits: Second Source News", Solutions, January/February 1985, Page 1
  16. ^abOsborne 16 bit Processor Handbook (Adam Osborne & Gerry Kane)ISBN 0-931988-43-8.
  17. ^"Olympus MIC-D: Integrated Circuit Gallery - Intel 8088 Microprocessor". Archived fromthe original on May 19, 2009.
  18. ^Freiberger, Paul (August 23, 1982)."Bill Gates, Microsoft and the IBM Personal Computer".InfoWorld. Vol. 4, no. 33. p. 22. RetrievedJanuary 29, 2015.
  19. ^Ashborn, Jim; "Advanced Packaging: A Little Goes A Long Way", Intel Corporation, Solutions, January/February 1986, Page 2
  20. ^8086 Available for industrial environment, Intel Preview Special Issue: 16-Bit Solutions, Intel Corporation, May/June 1980, page 29.

External links

[edit]
Lists
Microarchitectures
IA-32 (32-bit x86)
x86-64 (64-bit)
x86ULV
Current products
x86-64 (64-bit)
Discontinued
BCD oriented (4-bit)
pre-x86 (8-bit)
Earlyx86 (16-bit)
x87 (externalFPUs)
8/16-bit databus
8087 (1980)
16-bit databus
80C187
80287
80387SX
32-bit databus
80387DX
80487
IA-32 (32-bit x86)
x86-64 (64-bit)
Other
Related
Authority control databases: NationalEdit this at Wikidata
Retrieved from "https://en.wikipedia.org/w/index.php?title=Intel_8088&oldid=1275764549"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp