Image Map Image Map
Results 1 to 9 of 9

Thread: Why the 80286's division is so fast?

  1. Default Why the 80286's division is so fast?

    I am curious how was it possible to make so fast division by 1982? It takes only 22 cycles and is much faster than the 68030's division from 1987 which takes about 60 cycles!
    It is also a bit surprising that division of the 80486 is slower than the 80286 or 80386.

  2. #2

    Default

    Quote Originally Posted by vol.litwr View Post
    I am curious how was it possible to make so fast division by 1982? It takes only 22 cycles and is much faster than the 68030's division from 1987 which takes about 60 cycles!
    It is also a bit surprising that division of the 80486 is slower than the 80286 or 80386.
    Be careful with making comparisons based on instruction cycles without taking the clock speed into account. A processor with a deeper pipeline will look like it is taking more time to do the same work if you don't look at the clock speed, which is probably wrong because deeper pipelines are generally used to allow for faster clock speeds.

    Case in point - the 80286 architecture when it was new ran at speeds of 6 to 8 Mhz. The 68030 ran at 16 Mhz at it's slowest application.

  3. #3
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    30,997
    Blog Entries
    20

    Default

    In general, the question for divide operations (integer or floating) is "How much circuitry/silicon do you want to dedicate to implementation?", given that division is typically a low-frequency, high-latency operation, particularly with integer cases.

    Historically speaking, the CDC 6000-series mainframes had no integer division instructions and an optional integer multiply feature, although an integer multiply could be performed using the lower product of an unnormalized double-precision floating multiply. Floating divide took up a lot of circuitry. The Cray I had no division instructions at all--a "floating reciprocal approximation" instruction was provided that gave an estimate of the quotient that could be refined with a couple of iterations of Newton's method.

    That the 8086 had an integer division instruction at all was a bit surprising--and the 80286 obviously dedicated more silicon to it. I think Intel brought in the floating point SRT algorithm sometime in the Pentium series, and we all remember the 80386 FDIV debacle.

    Some division algorithms are data-sensitive; that is, some combinations of divisor/dividend will execute faster than others, since the division process is essentially iterative.

    If you're doing an integer divide by a constant, re-think your algorithm--almost certainly, you'll find it's possible to do without the divide instruction.

  4. Default

    Thanks. I'm curious only about integer division. FP uses completely different algorithms.

    Quote Originally Posted by mbbrutman View Post
    Be careful with making comparisons based on instruction cycles without taking the clock speed into account. A processor with a deeper pipeline will look like it is taking more time to do the same work if you don't look at the clock speed, which is probably wrong because deeper pipelines are generally used to allow for faster clock speeds.

    Case in point - the 80286 architecture when it was new ran at speeds of 6 to 8 Mhz. The 68030 ran at 16 Mhz at it's slowest application.
    The 80286 was available up to 25 MHz, and the 80386 - up to 40 MHz. The 80286 uses two times less transistors than the 68030. Is there anybody who knows how Intel could get so fantastic results?

  5. #5

    Default

    The 68030 is a full blown 32 bit CPU with a 32 bit databus, a 32 bit address bus, 32 bit registers (some even 64 bit) and a MMU unit so that might account for some more complex hardware inside.

  6. #6
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    30,997
    Blog Entries
    20

    Default

    Integer division is essentially an iterative process. So the question arises, "How much silicon (and therefore money) do you want to invest?" Clearly, the 80286 overshot the target and squandered its budget on the DIV implementation. Consider also, that a popular benchmark of the time, Dhrystone, includes no integer divides at all.

    A good read, starting on page 9.

  7. Default

    Quote Originally Posted by Chuck(G) View Post
    Integer division is essentially an iterative process. So the question arises, "How much silicon (and therefore money) do you want to invest?" Clearly, the 80286 overshot the target and squandered its budget on the DIV implementation. Consider also, that a popular benchmark of the time, Dhrystone, includes no integer divides at all.

    A good read, starting on page 9.
    Thank you very much! It is really a good read for me. However why to use a word "to squander"? IMHO the 80286, due to a good investment for performance, was faster than the much later and expensive 68030 for 8 and 16 bit data processing. It had much faster division, instant EA calculations, slightly faster multiplication and access to memory, ... IMHO the appearance of the 80286 meant the end of the PDP-11, VAX, 68k, ...

  8. #8
    Join Date
    Jan 2014
    Location
    Centero
    Posts
    6,878
    Blog Entries
    2

    Default

    IMHO it didn't matter much. Nobody switched architectures for this. In fact, I think the flat memory model of the 68k was much more influential. It would be a long time before new computer designs (non-PC-XT/AT-clone) would have Intel processors again.

  9. #9
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    30,997
    Blog Entries
    20

    Default

    The silicon was "squandered" on a rarely-used operation, when it might have gone toward some other more useful feature, say, a double-word pop count.

    Even today, integer divide is not a popular option even in fixed-point DSP

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •