Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!ll-xn!husc6!harvard!spdcc!dyer
From: d...@spdcc.COM (Steve Dyer)
Newsgroups: comp.unix.xenix,comp.sys.intel,comp.sys.ibm.pc
Subject: XENIX 386 benchmark results
Message-ID: <127@spdcc.COM>
Date: Tue, 30-Jun-87 04:40:02 EDT
Article-I.D.: spdcc.127
Posted: Tue Jun 30 04:40:02 1987
Date-Received: Sat, 4-Jul-87 22:40:35 EDT
Reply-To: d...@spdcc.COM (Steve Dyer)
Distribution: world
Organization: S.P. Dyer Computer Consulting, Cambridge MA
Lines: 34

Now that I have results for XENIX 386 along with my earlier figures,
this is a final posting of benchmarks of the Intel Inboard 386/AT,
for both XENIX 286 running in 16-bit memory and 32-bit memory and
XENIX 386 running in 32-bit memory.

At least from the Dhrystone benchmarks reported below, we're well
into Sun 3 territory, if not beyond!  Quite amazing...
---------------------------------------
All tests were run on the same hardware and software environment,
with the exception of the replacement of the 286 for the 386 card,
under SCO XENIX 286 OS v. 2.1.3 with Development System v. 2.1.4
or SCO XENIX 386 OS and Development System beta test with beta update (6/16/87).

	      IBM PC/AT 8mhz	  IBM PC/AT with Intel Inboard 386/AT
					at 16mhz, cache enabled
		XENIX 286	XENIX 286	XENIX 286	XENIX 386
		16-bit mem	16-bit mem	32-bit mem	32-bit mem

Drystone 1.0	no reg	reg	no reg	reg	no reg	reg	no reg	reg
		1278	1292	2293	2304	3429	3405	5259	5719
Drystone 1.1	1084	1094	1957	1963	2906	2893	4603	4922

Buchholz (sum of user & sys times in sec)

short cpu	0.3		0.2		0.1		0.1
medium cpu	3.3		1.9		1.2		0.5
long cpu	***		*** (values out of range)	2.6
short I/O	0.9		0.6		0.4		0.1
I/O bound	3.1		1.9		1.4		0.5
long mixed	56.9		33.8		21.8		8.9
-- 
Steve Dyer
d...@harvard.harvard.edu
d...@spdcc.COM aka {ihnp4,harvard,linus,ima,bbn,m2c}!spdcc!dyer

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!rutgers!princeton!allegra!ulysses!mhuxt!m10ux!braun
From: br...@m10ux.UUCP
Newsgroups: comp.unix.xenix,comp.sys.intel,comp.sys.ibm.pc
Subject: Re: XENIX 386 benchmark results
Message-ID: <225@m10ux.UUCP>
Date: Wed, 1-Jul-87 14:25:33 EDT
Article-I.D.: m10ux.225
Posted: Wed Jul  1 14:25:33 1987
Date-Received: Fri, 3-Jul-87 05:45:05 EDT
References: <127@spdcc.COM>
Organization: AT&T Bell Labs, Murray Hill
Lines: 17
Summary: What size are ints?


After seeing the various benchmarks for 80286, 80386, and 68020's,
I have been wondering: What sizes are the integers used by each machine?
I assume that a 80[012]86 is using 16 bit integers.  I would also suspect
taht a 68020 is benchmarked with 32 bit ints, since that's what you get
from Sun and the other 68020 workstation makers.
What about the 80386?  Are most of these benchmarks done running
the same binary on a '386 as used on the '286?  If so,
what happens to the '386's speed when it runs with 32 bit integers?

By the way, what support does the '386 have for 32 bit arithmetic
and 32 bit addressing?  Is it a new bunch of instructions, or
a different mode for the cpu?
-- 

Doug Braun		AT+T Bell Labs, Murray Hill, NJ
m10ux!braun		201 582-7039

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!rutgers!mit-eddie!bu-cs!m2c!spdcc!dyer
From: d...@spdcc.COM (Steve Dyer)
Newsgroups: comp.unix.xenix,comp.sys.intel,comp.sys.ibm.pc
Subject: Re: XENIX 386 benchmark results
Message-ID: <139@spdcc.COM>
Date: Thu, 2-Jul-87 21:45:36 EDT
Article-I.D.: spdcc.139
Posted: Thu Jul  2 21:45:36 1987
Date-Received: Sat, 4-Jul-87 08:56:09 EDT
References: <127@spdcc.COM> <225@m10ux.UUCP>
Organization: S.P. Dyer Computer Consulting, Cambridge MA
Lines: 41

In article <2...@m10ux.UUCP>, br...@m10ux.UUCP writes:
> After seeing the various benchmarks for 80286, 80386, and 68020's,
> I have been wondering: What sizes are the integers used by each machine?
> I assume that a 80[012]86 is using 16 bit integers.  I would also suspect
> taht a 68020 is benchmarked with 32 bit ints, since that's what you get
> from Sun and the other 68020 workstation makers.  What about the 80386?
> Are most of these benchmarks done running the same binary on a '386 as
> used on the '286?  If so, what happens to the '386's speed when it runs
> with 32 bit integers?
 
At least for "dhrystone", all integers are declared as "int", meaning that
the compiler chooses the natural size for its target architecture.
For XENIX 286 cc, int == 16 bits and for XENIX 386 cc, int == 32 bits.
Maybe my report wasn't clear enough (I thought it was), but I reported
results for both 286 objects and 386 objects running on the Intel 386
as well as baseline results for the 286 objects running on an 8mhz 286.

> By the way, what support does the '386 have for 32 bit arithmetic
> and 32 bit addressing?  Is it a new bunch of instructions, or
> a different mode for the cpu?

This is interesting.  First, both the 286 and 386 execute the same instructions
(the 386 has some extensions and new addressing modes, but this is generally
a true statement) but on the 386, the operand size can vary.  The 386's
registers are analogous to the 8086, but the "general registers" (if they
can be called that) are potentially 32 bits wide.  In real mode (and virtual-86
mode) the operand and address sizes are 16 bits by default, just like an 8086
or 286.  In protected mode, the address and operand sizes are determined by the
D-bit in the segment descriptor for the code currently executing.  If D==0,
then 16-bit addressing and operands are the default; if D==1, then all
addresses and operands are taken to be 32 bits wide.  There are two opcode
prefixes which invert the current sizes of addresses and operands for that
instruction.  These prefixes are most useful in a real mode DOS environment
to force 32-bit operations.  They're generally unnecessary in a protected mode
environment, since the OS sets your code segment selector appropriately.
I could imagine some hacks to get 16-bit behavior in a 32-bit environment,
but they'd be certainly unusual.
-- 
Steve Dyer
d...@harvard.harvard.edu
d...@spdcc.COM aka {ihnp4,harvard,linus,ima,bbn,m2c}!spdcc!dyer

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!husc6!sri-unix!sri-spam!mordor!lll-tis!ptsfa!ihnp4!alberta!ubc-vision!fornax!bby-bc!john
From: j...@bby-bc.UUCP (john)
Newsgroups: comp.unix.xenix,comp.sys.intel,comp.sys.ibm.pc
Subject: Re: XENIX 386 benchmark results
Message-ID: <130@bby-bc.UUCP>
Date: Fri, 3-Jul-87 14:00:18 EDT
Article-I.D.: bby-bc.130
Posted: Fri Jul  3 14:00:18 1987
Date-Received: Sat, 4-Jul-87 15:30:37 EDT
References: <127@spdcc.COM> <225@m10ux.UUCP> <139@spdcc.COM>
Organization: Burnaby, British Columbia, Canada
Lines: 19

> then 16-bit addressing and operands are the default; if D==1, then all
> addresses and operands are taken to be 32 bits wide.  There are two opcode
> prefixes which invert the current sizes of addresses and operands for that
> instruction.  These prefixes are most useful in a real mode DOS environment
> to force 32-bit operations.  They're generally unnecessary in a protected mode
> environment, since the OS sets your code segment selector appropriately.
> I could imagine some hacks to get 16-bit behavior in a 32-bit environment,
> but they'd be certainly unusual.

So if you want to do 16 and 32 bit arithmetic in the same procedure all the
instructions with operands of one of the sizes has to be prefixed?  Do any
of the existing compilers do this?

Are there instuctions for 16->32 and vice versa conversions along the
lines of CBW?

Assuming 32 bit wide memory is there any unusual speed penalties for
particular instuctions with 16/32 bit operands, e.g. are shifts faster
with one particualr size?

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!utgpu!water!watmath!clyde!cbosgd!ihnp4!ptsfa!ames!oliveb!intelca!mipos3!kds
From: k...@mipos3.UUCP
Newsgroups: comp.unix.xenix,comp.sys.intel,comp.sys.ibm.pc
Subject: Re: XENIX 386 benchmark results
Message-ID: <826@mipos3.UUCP>
Date: Wed, 8-Jul-87 16:34:29 EDT
Article-I.D.: mipos3.826
Posted: Wed Jul  8 16:34:29 1987
Date-Received: Sat, 11-Jul-87 16:20:41 EDT
References: <127@spdcc.COM> <225@m10ux.UUCP> <139@spdcc.COM> <130@bby-bc.UUCP>
Reply-To: k...@mipos3.UUCP (Ken Shoemaker ~)
Organization: Intel, Santa Clara, CA
Lines: 31

In article <1...@bby-bc.UUCP> j...@bby-bc.UUCP (john) writes:
>So if you want to do 16 and 32 bit arithmetic in the same procedure all the
>instructions with operands of one of the sizes has to be prefixed?

yes...

>
>Are there instuctions for 16->32 and vice versa conversions along the
>lines of CBW?

yes, both sign extend and zero extend are provided

>Assuming 32 bit wide memory is there any unusual speed penalties for
>particular instuctions with 16/32 bit operands, e.g. are shifts faster
>with one particualr size?

nope, the rate of instruction execution shouldn't change.  Of course, it takes
a clock to crack a prefix, so if you have lots of them, performance could
suffer.  My guess as to why 32-bit code seems to run so much faster than 16-bit
code on the 386 has to do with the differences in the programming model between
16-bit and 32-bit code: 32-bit code is always "small" mode (i.e., no segment
register reloads), can do 32-bit arithmetic operations in a single instruction,
and register usage is more general in 32-bit code.
-- 
The above views are personal.

...and they whisper and they chatter, but it really doesn't matter.

Ken Shoemaker, Microprocessor Design, Intel Corp., Santa Clara, California
uucp: ...{hplabs|decwrl|amdcad|qantel|pur-ee|scgvaxd|oliveb}!intelca!mipos3!kds
csnet/arpanet: k...@mipos3.intel.com

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!uunet!seismo!rutgers!ucla-cs!zen!ucbvax!hoptoad!gnu
From: g...@hoptoad.uucp (John Gilmore)
Newsgroups: comp.unix.xenix,comp.sys.intel,comp.sys.ibm.pc
Subject: Re: XENIX 386 benchmark results
Message-ID: <2413@hoptoad.uucp>
Date: Mon, 13-Jul-87 08:04:52 EDT
Article-I.D.: hoptoad.2413
Posted: Mon Jul 13 08:04:52 1987
Date-Received: Tue, 14-Jul-87 02:43:53 EDT
References: <127@spdcc.COM> <225@m10ux.UUCP> <139@spdcc.COM> <130@bby-bc.UUCP> <826@mipos3.UUCP>
Organization: Nebula Consultants in San Francisco
Lines: 24

k...@mipos3.UUCP (Ken Shoemaker) wrote:
>         My guess as to why 32-bit code seems to run so much faster than 16-bit
>code on the 386 has to do with the differences in the programming model between
>16-bit and 32-bit code: 32-bit code is always "small" mode (i.e., no segment
>register reloads), ...
> -- 
> The above views are personal.

I construe this as a "personal" statement by an Intel chip designer
that the whole concept of memory models and segment registers is wrong
-- not only did it make life hell for programmers [who bought Intel
machines], but he points out that the generated code using those models
is much slower, even on their whizziest new chip.

The statement that 32-bit code is always "small mode" belies the
waffling in the 386 architecture manuals that extolls the virtues of
segment registers even in a 32-bit address space.  They should have
been honest enough to describe them as a hack for 8086 compatability,
useless in other modes.

Welcome to reality, Intel!  Glad to have you with us.  And thanks for fixing it.
-- 
{dasys1,ncoast,well,sun,ihnp4}!hoptoad!gnu	     g...@postgres.berkeley.edu
Alt.all: the alternative radio of the Usenet.