TO:	Norm, Doug, Dave, Ron.
FROM:	Chris

I have been trying to determine why a V10 @11.1MHz is slower than a Q10 @10Mhz 
when running CPU intensive programs under UNIX.  A number of customers have 
noticed this behavior, including NBI's ISS people.  The note conveys what
I have found out.

First, the problem does exist.  Under UNIX, CPU bound programms run 5-10% 
slower on the V10 however, standalone the V10 is 9% faster - which is the
expected difference between 11.1MHz and 10MHz.

To tackle the problem I have implemented a kernel profiling scheme to see where
time is being spent.  The profiler samples the state of the machine at an 
external rate by causing level 7 interrupts (non-maskable) and tabulating 
information from the saved processor state when the interrupt occured.

The UNIX program I have been concentrating my efforts on sets an 'alarm' to
go off in the future, and sees how much work it can do before the alarm signals.
The test program is given below:

		int	done(), x = 0;
		main()
		{
			signal(SIGALRM, done);
			alarm(300);	/* 5 mins */
			for (;;) x++;
		}
		done()
		{
			printf("0-%d\n",x);
			exit(0);
		}

On a Q10 @10MHz the program prints "0-71897245", on the V10 @11.1MHz the result
is "0-6504562".  Although the V10 has a 9% faster clock rate it did 10% less 
work.  The test program was run single user. Measuring the time by hand 
yields the same results as /bin/time, indicating the CTC is interrupting at 
the correct rate.

Attached are results of the profiling the test program on the two machines
with an 800Hz sample rate.  My problem is I dont know how to explain the results
without Doug laughing.  Of course, my explanation involves hardware:  the CPU is
effectively not running at 11.1MHz because of delayed DTACK's on some operation
which occurs only in the UNIX kernel, such as accessing the page or segment 
registers.

Please have a look at the data and schematics then offer advice; I am 
at an impass and will stop working on this problem until more insight is
gained.
