[net.micro] NEC V30 availability, benchmarks, info

kim@mips.UUCP (Kim DeVaughn) (09/19/85)

[ ... go ahead, eat my bits ... ]

Well, I found one (an 8 MHz V30, that is) at one of the local NEC
distributors ... the 1st one I called, and I got the last one they
had in stock, no less (maybe I *am* living "right," afterall :-) )!
The salesman I spoke with said they'd be getting more in "soon," as
I mentioned I wanted to pick up a spare.  The distributor I used is:

	Western Microtechnology		ph:  408-725-1660
	10040 Bubb Rd.
	Cupertino, CA     95014
	
The price (quantity of one) was  $20.10  plus tax.  This was for the
8 MHz, ceramic part, and has to be just about the best deal I've seen
in many moons!   By the way, the actual NEC part numbers for the V30
series of chips are:

	uPD70116D-8	8 MHz, ceramic
	uPD70116D-5	5 MHz, ceramic
	uPD70116C-8	8 MHz, plastic
	uPD70116C-5	5 MHz, plastic

(Replace the "16" with "08" and you get the V20 (8088 compatible) p/n's.)


There were alot of distributors listed on the sheet NEC sent with the V30
spec, so you shouldn't have too much trouble finding one.  I did recognize
one outfit on the list from the back pages of Radio-Electronics or Popular
Electronics in days-gone-by.  They were (are?) used to dealing with small
volume, mail-orders; you might try them if your local distributor doesn't
want to sell you just one chip.  They are:

	Mouser Electronics		ph:  619-449-2300
	11433 Woodside Av.
	Santee, CA   92071
	
NEC's address (so you can get a spec) is:

	NEC Electronics, Inc.		ph: 800-632-3532 in California
	401 Ellis St.			    800-632-3531 elsewhere
	PO Box 7241
	Mt. View, CA    94039
	
Note: I am not associated with any of the above companies, except as a
      satisfied customer.



Ok, now for some quick-and-dirty before/after benchmark numbers:

System:    Fujitsu u-16s w/8087 (8 MHz)
SCP:	   MS-DOS 2.11
Compiler:  TurboPascal 3.01A (w/8087 support)

Benchmark:	program bench(output);

		var
		  i,j,k,l:	integer;
		  r:		real;
		  s:		string[100];
		  t,u:		string[50];
		
		begin
		  i := 0;
		  r := 0.0;
		  s := '';
		  t := 'ABCDEFGHIJKLMNOPQRSTUVWXYABCDEFGHIJKLMNOPQRSTUVWXY';
		  u := 'abcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxy';
		  
		  repeat until keypressed;   {start timing when a key is hit}
		  
		  for j := 1 to 1000 do
		      for k := 1 to 1000 do	{1 to 50 for string test}
			  for l := 1 to 10 do
			      {one of:	    	}
			       i := i + 1;	{integer}
			      {r := r + 1.0;}	{real}
			      {s := t + u;  }	{string assign/concatinate}
		  
		  writeln(^G,i{or r, or s}); {stop timing when the bell rings}
		end.


Results:	     |    8086     |    V30      |  %-improvement
	  ---------------------------------------------------------
	   integer   |   150.75    |   144.30    |     4.3%
	   real	     |  1489.24    |  1357.94    |     8.8%
	   string    |   497.50	   |   296.25	 |    40.5%      <---- !!
		     |		   |		 |
	   Mgen	+    |  1012.14	   |   935.84	 |     7.5%
	   Msho ++   |    23.09    |    18.35    |    20.5%
	   
	   Times are in seconds.
	 + Mgen is a Mandelbrot set generating program (compute intensive).
	++ Msho is a display routine for Mgen's data   (data-move intensive).

The machine sucessfully ran all the diagnostics, floppy and hard-disk tests,
rupt driven communication/modem program, etc.  In short, the s/w couldn't
tell the difference (obviously, there were no s/w timing loops in anything
I ran ... at least none that were critical).

Subjectively, MASM seems to run about 20%-30% faster, and scrolling thru text
in various editors is quite noticeably faster.  I am a little surprised by 
the integer vs. real results (I expected to see the least improvement in code
that uses the 8087); I haven't looked at the code Turbo generates tho.  In
any case, a performance improvement of 15%-20% for average, interactive work
is well worth $21.51, I'd say (and the chip was only slightly warm after a
couple of hours of experimentation)!


Here's a look at the "extra" instructions in the V30 and V20 (note that these
are NEC's mnemonics):

80186 compatible:	PUSH imm	. pushes immediate data onto the stack
			PUSH R		. pushes 8 general registers onto stack
			POP R		. pops 8 general registers from stack
			MUL imm		. executes 16-bit multiply of register
					  or memory contents by immediate data
			SHL imm8	. shifts/rotates register or memory by
			SHR imm8	  immediate value
			SHRA imm8
			ROL imm8
			ROR imm8
			ROLC imm8
			RORC imm8
			CHKIND		. checks array index against
					  designated boundaries
			INM		. moves a string from I/O port to mem
			OUTM		. moves a string from mem to I/O port
			PREPARE		. allocates an area for a stack frame
					  and copies previous frame pointers
			DISPOSE		. frees the current stack frame on a
					  procedure exit

NEC unique:		INS		. insert bit-field
			EXT		. extract bit-field
			ADD4S		. adds packed decimal strings
			SUB4S		. subtract one packed decimal string
					  from another
			CMP4S		. compares two packed decimal strings
			ROL4		. rotates one BCD digit left thru AL
					  lower 4 bits
			ROR4		. rotates one BCD digit right thru AL
					  lower 4 bits
			TEST1		. tests a sspecified bit; sets/resets
					  zero-flag
			NOT1		. inverts a specified bit
			CLR1		. clears a specified bit
			SET1		. sets a specified bit
			REPC		. repeats next (string) instruction
					  until carry-flag is cleared
			REPNC		. repeats next (string) instruction
					  until carry-flag is set
			FP02		. additional float-pt processor call

8080 emulation mode:	BRKEM		. start 8080 emulation mode
			RETEM		. return from emulation mode
			CALLN		. call native-mode (V30) subroutine
					  from within 8080 emulation mode
					  (use normal RETI to return)


Looks like NEC just may have developed the "Z-80" of the 8086-style
16-bitters ...

Enjoy!

/kim

"The difference between science and the fuzzy subjects is that science
requires reasoning, while those other subjects mearly require scholarship."
-- Lazarus Long

[generic disclaimer]
-- 

UUCP:  {decvax,ucbvax,ihnp4}!decwrl!mips!kim
DDD:   415-960-1200
USPS:  MIPS Computer Systems Inc,  1330 Charleston Rd,  Mt View, CA 94043