[eris]memo>TamarinOps.memo 17-Jul-85 17:31:55 Dynamic instruction statistics collectd June 81 by Dorado PC sampling of program "TEST". Static instruction statistics collectd Oct 84 from NEXT>FULL.SYSOUT. Name Size %Dynamic %Static WAddr_ @ RAddr Op IB Misc Stack TagTrap PreCond Context ---- ---- -------- ------- ------ - ----- -- -- ---- ----- ------- ------- ------- (1) Constants SCn 1 11 6 _ S_S+1 SIC 1 4 2 _ IB S_S+1 SICX 2 5 0.5 _ IDB S_S+1 GCONST 5 1? 1 _ IQB S_S+1 ACONST 3,4 2? 4 _ + IDB S_S+1 COPY 1 3 3 _ S_S+1 POP 5 6 _ S_S-1 (2) Variables VARn 1 19 16 _ S_S+1 VARX 2 3 3 _ S_S+1 VARM 2 0.05? 0.05? _ @[<'Fx>, IB] S_S+1 GVAR 3,4 3 2 _ @[<'Val>,IDB] S_S+1 FVARn 1 2 2? _ @[] S_S+1 BoundP FVARn_ 1 0.5? 0.5 @[] _ ***** S_S-1 StackP VARn_ 1 2 2 _ VARn_^ 1 2 1 _ S_S-1 VARX_ 2 1? 1? _ S_S-1 VARIX 2 ? ? _ @[] S_S+1 DirectP (3) Stack UNBIND 2 1 1 _ S_IB DUNBIND 2 1 1 _ S_IB (4) Arithmetic GREATERP 1 1 _ [ - ]NMINUSP S_S-1 IntegerP2 PLUS 1 1 _ + S_S-1 IntegerP3 DIFF 1 1 _ - S_S-1 IntegerP3 AND 1 0.3 _ AND S_S-1 IntegerP2 LLSH 1 1 _ FU 0 IntegerP3 LRSH 1 1 _ FU IntegerP2 OR ? ? _ OR S_S-1 IntegerP2 XOR ? ? _ XOR S_S-1 IntegerP2 (5) Memory GETPTR 2 1 2 _ @[ + IB] PointerP PUTPTR 2 3 2 @[+IB] _ Rev? S_S-1 PointerP PUTPTR^ 2 ? ? @[+IB] _ Rev? S_S-2 PointerP ADDBASE 1 1 0.4 _ + S-S-1 IntegerP1 (6) Lists/Types CAR 1 2 3 _ @[] ListP CDR 1 2 3 _ @[,,1] ListP TYPEPn 1 1? 1 _IF LispP THEN _NIL (UserLispP) DTESTn 1 ? ? _ P TYPEP 2 1 0.4 _IF @['TypeTable,] #IB THEN _NIL (UserLispP) DTEST 2 0 2 IF @['TypeTable,] #IB THEN Trap DTestP (7) Control RET 3 2 _ S_S+1 SlowRet PreLoad _prev RETNV 3 2 _ SlowRet PreLoad _prev RETEI 3 2 _ EnbInt SlowRet PreLoad _prev PAGEFAULT _ <'MDR> DisInt arg _ 1 GOTO[TRAP] TRAPn (Interrupts) _ @[<'FnDef>,,n] GOTO[Call] APPLYFN 1 ? 0.1 'arg _ _ @[<'FnDef>,,] AtomP GOTO[Call] FNn 3,4 3 7 _ @[<'FnDef>,,IDB] arg _ n PreDump GOTO[Call] Call: <'R0> _ @4[<'Code>] PC _ ,,arg <'All>_ <'Unbind> cur _ next _ S_S-1 until arg=0 arg_arg-1 ENBINT 1 - - EnbInt DISINT 1 - - DisInt TAILFNX 4,5 (8) Jumps NOPn 1-5 1? 1? NOP JUMP 1 1 1 PC _ PC + n JUMPX 2 1 2 PC _ PC + sIB JUMPXX 3,5 1 1 PC _ PC + sIDB TFJUMP 1 6 4 PC _ PC + sIB IF EQ S_S-1 TFJUMPX 2 2 2 PC _ PC + sIB IF EQ S_S-1 NTFJMPX 2 4 2 PC _ PC + sIB IF EQ (S_S-1) JEQ? 2 3 3 PC _ PC + sIB IF EQ S_S-2 EQL JGREATERP? 2 1 1 PC _ PC + sIB IF GT S_S-2 JLISTP? 2 1 1 PC _ PC + sIB IF LISTP S_S-2 JREFILL - 8? - <'IB> _ @4[] GOTO[IREFILL] IREFILL - 12 - <'IB> _ @4[] (9) Frames MYCLINK 1 - - _ S_S+1 PreFlush MYCLINK_ 1 - - _ PreFlush REFRESH(2ms) 0.01 arg _ N _ arg_arg-1 until arg=0 DUMP .1 @4[<'Free>,arg] _ arg_arg+4 until arg=TOS _ _ @[,,next] LOAD .1 _ arg_0 _ @4[] arg_arg+4 until arg=TOS (10) Misc CSTORE ? BLTSTEP ? BITBLTSTEP ? FVLOOKSTEP ? REFCNT ? GCSCANSTEP? ? EXDIS _ S_S-1 ADDB _ + IB ADDDB _ + IDB SUBB _ - IB RSB _ @[ + IB] S_S+1 WB @[+IB] _ S_S-2 WSB @[+IB] _ S_S-2 (11) Macros 'NIL 2 2 SC0 'T 1 1 SC1 '0 1 1 SC2 '1 1 1 SC3 'UNBIND 1 1 SC4 SNIC ? 0.1 '0 SNIC DIFF SWAP 0.1 0.1? ? IVARn 11 8 VARn PVARn 8 8 VARn PVARX 3 3 VARn or VARX or VARM LISTP ? 1 TYPEP0 INTEGERP ? ? TYPEP1 FLOATP ? ? TYPEP2 TYPEMASK ? ? ? BIND (2NIL 1PV) 1 1 VAR_^, 'NIL, VAR_, VAR_^ UNBIND1 (2NIL 1PV) 0.3 'UNBIND, VAR_, VAR_, VAR_^ GETBASE 4 2 1 GETBASEPTR, GETFIELD GETBITS 3 fd, n 1? 0.2 4 GETBASEPTR n, GETFIELD fd 7 GETBASEPTR n, RSHIFT fd, SICXX, AND GETBYTE 3 0.1 PUTBASE 1 0.4 ,GETBASEPTR,,PUTFIELD,PUTBASEPTR PUTBITS 3 fd, n 1? 0.2 6 ,GETBASEPTR,,PUTFIELD,PUTBASEPTR ,GETBASEPTR,, LSHIFT fd, G PUTBYTE 3 0.0 RSH, ADDBASE, GETBASEPTR,,PUTFIELD,PUTBASEPTR (12) UFNs CONTEXTSWITCH(n) Temp _ (MYCLINK) MYCLINK_ ContextTable(n) ContextTable(n) _ Temp RETEI INTERRUPT n _ (InteruptNo) Temp _ (MYCLINK) MYCLINK_ ContextTable(n) ContextTable(n) _ Temp RETURN UFN1 XOP1(32) GETBYTE 3% PUTBYTE 3% GETWORD PUTWORD VAG2 1% NTYPX ? BIN ELT UNBOX UNBOX2 INTEGERTRAP BOX UFN2 XOP2 (11) RPLPTR GCREF UFN2 XOP2 MISC (256) APPLYFN CHECKAPPLY RPLACA RPLACD CONS GETP FMEMB GETHASH PUTHASH CREATECELL BOUT BITBLT NTHCHC SETA RPLCHARCODE EVAL \RETURN ARG0 MYARGCOUNT MYALINK TIMES2 QUOTIENT ITIMES2 FPLUS2 FDIFF FTIMES2 FQUOTIENT FGREATERP FLOATP NUMBERP XOP3 (23) GVAR_ GETBITS PUTBITS XOP5 (29) PUTBITS 30-Oct-84 11:42:26 File started 14-Jul-85 14:53:29 first pass of microcode DISCUSSION Independence of VM Mapping from instruction PLA I assume that a Map Entry Cache miss will be rapidly turned into a Map Entry memory fetch and that the new Map Entry will be chached and the memory fetch will be resumed without microcode intervention. When the Instruction Fetch Unit prefetches instructions, the prefetcher conceptually has a slightly different PD than the instruction decoder's PC. Issues ufn's Atom representation types and tags multi value return VMM opcodes interpreter C.L. catch throw Interloops UNBOXED bits on stack for GETBITS and PUTBITS RefCnt?