VAX780 cross-page instruction fetch times ???

Alan S. Watt swatt at ittvax.UUCP
Fri Dec 30 14:10:14 AEST 1983


Does anyone have any information about the execution times on a VAX780
that might explain the following:

   A large program was changed in one function, and ran about 15%
   slower after the change.  The function changed was never called in
   the test runs.  The effect of the change was to make the changed
   function 8 bytes smaller.  I created a third version by putting 8
   'asm("nop");' statements at the end of the function, which made all
   external symbols have the same address as the earlier version.  The
   result ran at the same speed as the first version.

These tests were repeated enough times to wash out any normal
variations in the UNIX timing mechanism.  The difference of 15% was
observed for tests running ~12 user CPU seconds and ~8 user CPU
minutes.  This was run on a reasonably quiet 4.1bsd system with
4Meg memory, and no abnormal paging load at the time of the tests.

Both versions were complied and linked with -g (sdb symbols) and -p
(profiling) options.

The program in question is a Petrinet analysis program with essentially
random data reference behavior during most of the execution.  It uses a
modified malloc() function which avoids the abominable paging behavior
of the standard one.

I remember hearing of strange crashes which occurred when instruction
fetches crossed page boundaries under some special circumstances.  The
only theory I have is that adding those extra bytes displaced the
remainder of the program such that significantly fewer instructions
crossed between pages.

	- Alan S. Watt
	{ decvax, duke, purdue, allgra, research }!ittvax!swatt
	decvax!ittvax!swatt at Berkeley	(ARPA)



More information about the Comp.unix.wizards mailing list