1
0
mirror of https://github.com/prirun/p50em.git synced 2026-05-03 14:58:50 +00:00

em.c, etc: use gv.xxx instead of gvp->xxx for 13% speed increase, from

37.5 Prime MIPS on Linode VM to 42.5 MIPS.  gvp-> was faster on the
PowerPC architecture when gvp was kept in a dedicated register, but
that does not apply to Intel.

Old:

Timing CPU,  20.0 ticks per second...
  35.3 Prime MIPS for 16-bit ADD loop
  40.0 Prime MIPS for 16-bit MPY loop
  42.1 Prime MIPS for 16-bit DIV loop
  21.4 Prime MIPS for 32-bit ADD loop
  30.8 Prime MIPS for 32-bit MPY loop
  28.6 Prime MIPS for 32-bit DIV loop
  57.1 Prime MIPS for 16-bit X=0 loop
  44.4 Prime MIPS for 32-bit X=0 loop
  37.5 average Prime MIPS

New:

Timing CPU,  20.0 ticks per second...
  42.9 Prime MIPS for 16-bit ADD loop
  53.3 Prime MIPS for 16-bit MPY loop
  47.1 Prime MIPS for 16-bit DIV loop
  24.0 Prime MIPS for 32-bit ADD loop
  38.1 Prime MIPS for 32-bit MPY loop
  32.0 Prime MIPS for 32-bit DIV loop
  57.1 Prime MIPS for 16-bit X=0 loop
  44.4 Prime MIPS for 32-bit X=0 loop
  42.4 average Prime MIPS
This commit is contained in:
Jim
2020-03-08 23:46:14 -04:00
parent 35adf0905a
commit 9054d69446
6 changed files with 330 additions and 333 deletions

View File

@@ -333,7 +333,7 @@ char * pncdumppkt(unsigned char * pkt, int len) {
struct timeval tv1;
#ifndef NOTRACE
if (!gvp->traceflags & T_RIO) return;
if (!gv.traceflags & T_RIO) return;
if (gettimeofday(&tv1, NULL) != 0)
fatal("pnc gettimeofday 3 failed");
@@ -868,7 +868,7 @@ int devpnc (int class, int func, int device) {
struct timeval tv0,tv1;
double pollts;
//gvp->traceflags = ~T_MAP;
//gv.traceflags = ~T_MAP;
if (class >= 0 && !configured) {
TRACE(T_INST|T_RIO, "PIO to PNC ignored, class=%d, func='%02o, device=%02o\n", class, func, device);
@@ -1066,7 +1066,7 @@ int devpnc (int class, int func, int device) {
}
TRACE(T_RIO, "PNC configured\n");
devpoll[device] = PNCPOLL*gvp->instpermsec;
devpoll[device] = PNCPOLL*gv.instpermsec;
if (gettimeofday(&tv0, NULL) != 0)
fatal("pnc gettimeofday 1 failed");
@@ -1283,7 +1283,7 @@ int devpnc (int class, int func, int device) {
devpoll[device] = olddevpoll;
sawsigio = 0;
} else {
devpoll[device] = PNCPOLL*gvp->instpermsec;
devpoll[device] = PNCPOLL*gv.instpermsec;
time(&timenow);
pncaccept(timenow); /* accept 1 new connection each poll */
pncconnect(timenow); /* finish a pending connection */
@@ -1295,8 +1295,8 @@ rcvexit:
intrexit:
if (enabled && ((pncstat & 0xC000) | intstat) != intstat) {
if (gvp->intvec == -1) {
gvp->intvec = pncvec;
if (gv.intvec == -1) {
gv.intvec = pncvec;
intstat |= (pncstat & 0xC000);
} else
devpoll[device] = 100;