[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Doom Conversion (was Dragons Lair



In article <Zm3WWBt.wdphoenix@delphi.com>,
Leslie M. Barstow III  <wdphoenix@delphi.com> wrote:
>Joseph <jlee@clyde.ICS.UCI.EDU> writes:
> 
>>Now where are you getting this info from? Where's the benchmarks?  A 486
>>can execute most of its instructions in around 1 cpu cycle.  With a
> 
>Here's my basis...
>A GS's average cycle count is about 3-4.
>A Mac's average cycle count (excluding the PowerPC) is about 8
>A 386 (relative to a Mac) uses about 3 times more average.
>The 486 reduced this by half.

Bzzt!

>Therefore a GS should run things about 3 times faster than a 486 of equivalent
>speed, if both are optimized equally.
>The GS-Mac, Mac-386, GS-386, and 386-486 comparisons are all out there...
> 
>I don't know where you get your information - the 486 is not a pipelining
>chip.  It is impossible to do anything in one cycle without some advanced help
>The best the 486 can do (assuming intelligent cacheing) is about 3-4 cycles,
>assuming it accesses some information other than the instruction.

The 486 _is_ a pipelined processor, though the problem with (almost) all
pipelined processors is the latency due to instruction interdependencies.
It has four general-purpose 32-bit registers, and an additional 4 if you're
a clever programmer.  Additionally, only simple instructions are pipelined,
or those which do not have an SIB, for example (what's an SIB?  It's a
neat displacement parameter that is similar to the functional GS code of a
LDA index, ASL {up to four times}, CLC, ADC offset or equivalent code).
Instructions like these take a bit longer on a 486, though they are by
no means as slow as the equal GS code.  They can all run in 8, 16, or 32
bit mode as well.  Another _major_ factor for faster processing is a
multiply and divide opcode, something which would be used a lot in texture
mapping as done in Doom or W3D.

The Pentium is even faster, with _two_ pipelines.  It can execute most
cached code in an average of 1-2 cycles/instruction.  Don't try to
divide with it though :)

>For comparison, take the GS adc instruction:
>cycle   operation
>1       load instruction
>2       load immediate data
>3       A + M -> A (c)

And the GS multiply instruction....oops, there isn't one!

>This is typical of a simple instruction.  It is also NOT typical of most x86
>instructions, which require additional processing to determine addressing mode,
>length of instruction, etc.
> 
>Although Dhrystone exists for the GS, I am unsure if it is optimized, and I
>guarantee all x86 versions are quite well-optimized.  Benchmarks would be
>somewhat lopsided considering this - we're not measuring compilers, we're
>comparing chips.

If you wrote a Dhrystone test for the GS in ASM it would still not compare
to a 486 with a crappy compiled version.  The GS would compare to a 286 or
_perhaps_ a 386SX.  I wouldn't want to play Doom on anything other than
a 486DX2 with VLB graphics, though.  If you want to see some awesome
graphics on a GS, buy Mazer II.  It's fast (on a Zipped GS) and has some
tough puzzles to solve, unlike Doom.

Andre