PROFILE V01.0 THE PROFILE PACKAGE IS A SET OF TWO MACRO MODULES AND THIS DOCUMENT THAT WILL ALLOW THE USER TO DETERMINE HOW OFTEN INSTRUCTION MEMORY LOCATIONS ARE EXECUTED AT RUN(CRAWL) TIME AND A SUMMARY OF WHAT INSTRUCTIONS WERE EXECUTED. THE 'MEASURE' MODULE IS TASK BUILT INTO THE USERS PROGRAM TO RECORD THE MEMORY LOCATIONS AND INSTRUCTIONS EXECUTED. THEN THE 'EVALUATE' PROGRAM IS RUN ON THE DATA GATHERED AND A LISTING OF THE RESULTS IS GENERATED. MEASURE.MAC THIS MODULE IS TASK BUILT INTO THE TASK TO BE MEASURED AND MAY NEED MODIFICATION AT BOTH THE SOURCE CODE LEVEL AND AT THE TASK BUILD LEVEL TO PROPERLY OPERATE WITH THE USERS PROGRAM. THE SOURCE CODE CHANGES ARE AS FOLLOWS: L.U.N. USEAGE. THE MEASURE MODULE REQUIRES THAT TWO(2) DATA FILES BE OPEN DURING THE TAKING OF DATA. THE SOURCE CODE USES A DEFAULT OF LUN 1 AND LUN 2. IF THESE ARE IN CONFLICT WITH THE USEAGE OF THE USER PROGRAM, THESE CAN BE ALTERED BY CHANGEING THE SYMBOLS 'INSLUN' AND 'LOCLUN' THAT ARE DEFINED AT THE BEGINING OF THE SORCE CODE TO NONCONFLICTING VALUES. EVENT FLAG USEAGE DATA GENERATED BY THE MEASURE MODULE IS KEPT ON DISK REQUIREING QIO'S TO RECOVER AND STORE BLOCKS OF COUNTERS. SINCE THIS MUST BE A SYNCHRONOUS OPERATION, QIOW$'S ARE USED SECIFYING AS DEFAULT EVENT FLAG 20(10). IF THIS CONFLICTS WITH THE USER PROGRAM, THIS CAN BE MODIFIED BY CHANGEING THE SYMBOL 'EVNFLG' AT THE BEGINING OF THE SOURCE TO A NON CONFLICTING ONE. DUE TO THE ADDITIONAL I/O REQUIRED BY THE MEASUREMENT ROUTINE, SEVERAL MODIFICATIONS MAY BE REQUIRED AT TASK BUILD TIME. OVERLAYS THE MEASUREMENT ROUTINE IS CALLED VIA THE T-BIT TRAP AFTER THE EXECUTION OF EACH INSTRUCTION, SO IT MUST RESIDE IN THE ROOT SEGMENT. ALSO IT DOES'NT KNOW ABOUT OVERLAYS, SO THAT THE DATA ON LOCATION USEAGE IN THE OVERLAY AREA IS THE SUM OF ALL THE OVERLAYS USEAGE. NUMBER OF ACTIVE FILES THE TASK BUILDER SETS UP THE TASK WITH A DEFAULT NUMBER OF ACTIVE FILES OF FOUR(4). SINCE THE MEASUREMENT ROUTINE REQUIRES 2, THIS LEAVES ONLY 2 FOR THE USER PROGRAM. THIS CAN BE EXTENDED BY 'ACTFIL=NNN' WHERE NNN ARE THE NUMBER OF ACTIVE FILES REQUIRED BY BOTH THE MEASUREMENT ROUTINE AND THE USER PROGRAM (SEE ALSO 'FCS I/O BUFFER SIZE') DATA FILE DISK ASSIGNMENT THE MEASUREMENT ROUTINE GENERATES 3 DATA FILES ON THE DEFAULT DISK ASSIGNED TO THE LUN'S USED (DEFAULT ARE 1 AND 2 BUT CAN BE CHANGED IN THE SOURCE). TKB DEFAULT IS SY: BUT THE USER CAN MODIFY THIS AT TKB TIME BY THE USE OF 'ASG=XXN:1:2'. FCS I/O BUFFER SIZE ($$FSR1) THE I/O REQUIREMENTS OF THE MEASUREMENT ROUTINE REQUIRE THE ASSIGNMENT OF SPACE FOR TWO(2) I/O BUFFERS. IF THE USER PROGRAM DOES NOT REQUIRE THIS AREA, THE MEASURE ROUTINE HAS BUILT IN TO IT THE TWO(2) BUFFERS THAT IT REQUIRES. IF THE USER PROGRAM DOES USE FCS I/O BUFFERS AND THE TOTAL BUFFER AREA IN $$FSR1 IS NOT SUFFICENT TO HANDLE ALL THE FILES THAT WILL BE OPEN SIMULTAINIOUSLY (TWO(2) OF WHICH ARE BY THE MEASUREMENT ROUTINE), THEN THE USER MUST EXTEND THEN SIZE OF THE I/O BUFFER AREA AT TKB TIME BY THE USE OF 'EXTSCT=$$FSR1:XXXX' WHERE 'XXXX' IS THE TOTAL SIZE OF THE I/O BUFFER AREA IN OCTAL BYTES (THE REQUIREMENT FOR THE MEASUREMENT ROUTINE IS 2040(8) BYTES) (SEE ALSO 'NUMBER OF ACTIVE FILES'). HIGHEST LUN USED THE TASK BUILDER BY DEFAULT SETS THE HIGHEST LUN USEABLE BY A TASK TO 6. IF THE USER TASK OR MODIFIED MEASURE ROUTINE REQUIRES A LUN HIGHER THAN 6, USE 'UNITS=N' WHERE 'N' IS THE HIHEST LUN USED. USER PROGRAM INTERFACE TO THE MEASUREMENT ROUTINE THE USER HAS FOUR(4) ENTRY POINTS THAT HE CAN CALL FROM FORTRAN OR ASSEMBLY TO INTERFACE WITH THE MEASUREMENT ROUTINE. CALL INIEXE (JSR PC,INIEXE) CALLED ONLY ONCE BY THE USER PROGRAM. THIS SUBROUTINE CREATES AND INITIALIZES THE THREE(3) DATA FILES USED IN THE PROFILE PACKAGE AND STARTS THE MEASUREMENT OF INSTRUCTION LOCATION'S EXECUTED AND INSTRUCTION TYPE EXECUTION SUMMARY (THE T-BIT TRAP IS ENABLED). THIS MUST BE THE FIRST EXECUTION MODULE SUBROUTINE CALLED AT RUN TIME. CALL TRMEXE (JSR PC,TRMEXE) CALLED ONLY ONCE BY THE USER PROGRAM. THIS SUBROUTINE TURNS OFF THE T-BIT TRAP, WRITES OUT ALL BUFFERS STILL IN MEMORY AND CLOSES ALL OPEN DATA FILES. THIS MUST BE THE LAST EXECUTION MODULE SUBROUTINE CALLED AT RUN TIME. CALL TROFF (JSR PC,TROFF) CALLED AT RUN TIME IN THE USER PROGRAM TO DISABLE MEASUREMENT OF PROGRAM ACTIVITY. CALL TRON (JSR PC,TRON) CALLED AT RUN TIME IN THE USER PROGRAM TO RE-ENABLE MEASURMENT OF PROGRAM ACTIVITY. FOR MOST USER PROGRAMS, THE ONLY REQUIREMENTS WILL BE TO DO A 'CALL INIEXE' AS THE FIRST EXECUTEABLE INSTRUCTION OF THE PROGRAM, AND A 'CALL TRMEXE' AS THE LAST. THE MEASUREMENT ROUTINE CREATES 3 DATA FILES FOR THE EVALUATION PROGRAM. MEASURE.DAT A ONE BLOCK LONG FILE THAT CONTAINS THE FOLLOWING INFORMATION FOR THE EVALUATION PROGRAM: TASK NAME (AS INSTALLED) TASK START TIME TASK START DATE LOCTCTR.DAT A 256(10) CONTIGUOUS BLOCK LONG FILE THAT CONTAINS I*4 COUNTERS, ONE FOR EACH VIRTUAL WORD ADDRESS IN THE USERS PROGRAM. AT THE COMPLETION OF EXECUTION OF EACH INSTRUCTION, THE T-BIT TRAP IS TAKEN, AND THE LOCATION OF THE NEXT INSTRUCTION TO BE EXECUTED IS OBTAINED FROM THE STACK, AND THE CORRESPONDING COUNTER FOR THAT LOCATION IS INCREMENTED. INSTCTR.DAT A 512(10) CONTIGUOUS BLOCK LONG FILE THAT CONTAINS I*4 COUNTERS, ONE FOR EACH OF THE POSSABLE 65536(10) INSTRUCTION BIT PATTERNS. AT THE COMPLETION OF EACH INSTRUCTION, THE T-BIT TRAP IS TAKEN, AND THE NEXT INSTRUCTION TO BE EXECUTED IS OBTAINED AND THE CORRESPONDING COUNTER FOR THAT BIT PATTERN IS INCREMENTED. EXECUTION TIME/SPACE OVERHEAD IT MUST BE NOTED, THAT EVEN WITH THE USE IN THE MEASUREMENT ROUTINE OF QIO'S RATHER THAT GET'S AND PUT'S, AND THE BUFFERING OF FOUR(4) LOCATION TABLES AND EIGHT(8) INSTRUCTION TABLES IN MEMORY TO REDUCE I/O, THE EXECUTION SPEED OF THE USER PROGRAM IS SEVERELY DEGRADED. A SMALL FORTRAN TEST PROGRAM SHOWED AN INCREASE OF EXECUTION TIME OF AS MUCH AS 130:1 OVER THE NON MEASURED EXECUTION TIME. THIS NUMBER IS SUPPLIED ONLY AS A ROUGH GUIDE AND NOT AS AN EXACT MEASURE OF ITS EFFECT ON THE RUN( OR IN THIS CASE CRAWL) TIME OF A USER PROGRAM. THE MEMORY REQUIREMENTS OF THE MEASUREMENT MODULE ARE AS FOLOWS: CODE/INTERNAL BUFFERS 3994(10) WORDS $$FSR1 (FCS I/O BUFFERS) 528(10) WORDS $$FSR2 34(10) WORDS $$RESL (FCS/SYSLIB ROUTINES) 2508(10) WORDS ______________ 7064(10) WORDS NOTE THAT IF THE USER PROGRAM DOES ANY FILE STRUCTURED I/O, THE FCS/SYSLIB ROUTINES IN $$RESL ARE USED BY BOTH THE USER PROGRAM AND THE MEASUREMENT ROUTINE. EVALUATION PROGRAM THE EVALUATION PROGRAM TAKES THE 3 DATA FILES GENERATED BY THE MEASUREMENT ROUTINE (DELETEING THEM WHEN DONE) AND GENERATES A LIST FILE SHOWING THE USER PROGRAM RUN TIME EXECUTION PROFILE. THE LIST FILE GENERATED HAS FOUR(4) PARTS: PROGRAM INSTRUCTION LOCATION USEAGE COUNT BY LOCATION THIS SECTION MAKES ONE PASS THROUGH THE LOCATION COUNTER DATA FILE AND PRINTS OUT IN INCREASING LOCATION ADDRESS ALL INSTRUCTION ADDRESSES WITH NON-ZERO USEAGE COUNT, GIVEING THE OCTAL ADDRESS AND THE DECIMAL USAGE COUNT. PROGRAM INSTRUCTION LOCATION USEAGE COUNT BY COUNT THIS SECTION IS THE RESULT OF A SORT DONE ON THE DATA FROM THE PREVIOUS SECTION. ALL ADDRESSES WITH NON-ZERO COUNTS ARE PRINTED OUT IN ORDER OF DECREASING USEAGE COUNTS. THE FORMAT BEING THE SAME AS THE FIRST SECTION OF THE PRINTOUT. PROGRAM INSTRUCTION USEAGE TABLE THIS SECTION PRINTS OUT INFORMATION ON ALL THE INSTRUCTIONS EXECUTED BY THE USER PROGRAM. FOR EACH INSTRUCTION EXECUTED, THE FORMAT IS AS FOLLOWS: INSTRUCTION MNEMONIC NUMBER OF TIMES USED(DECIMAL) E.G. EMT 1020 DEPENDING ON THE INSTRUCTION, ONE OR MORE OF THE FOLLOWING TABLES ARE PRINTED OUT FOLLOWING THE INSTRUCTION NAME AND TOTAL COUNT: REGESTER OR ACCUMULATOR ONLY MODE INSTRUCTION R0 R1 R2 R3 R4 R5 R6 R7 COUNT COUNT COUNT COUNT COUNT COUNT COUNT COUNT FULL SOURCE AND/OR INSTRUCTION MODE INSTRUCTION R0 R1 R2 R3 R4 R5 R6 R7 MODE R COUNT COUNT COUNT COUNT COUNT COUNT COUNT COUNT MODE (R) COUNT COUNT COUNT COUNT COUNT COUNT COUNT COUNT MODE (R)+ COUNT COUNT COUNT COUNT COUNT COUNT COUNT COUNT MODE @(R)+ COUNT COUNT COUNT COUNT COUNT COUNT COUNT COUNT MODE -(R) COUNT COUNT COUNT COUNT COUNT COUNT COUNT COUNT MODE @-(R) COUNT COUNT COUNT COUNT COUNT COUNT COUNT COUNT MODE X(R) COUNT COUNT COUNT COUNT COUNT COUNT COUNT COUNT MODE @X(R) COUNT COUNT COUNT COUNT COUNT COUNT COUNT COUNT (ANY MODE WHERE NO REGESTER IS USED, IS NOT PRINTED OUT) WHERE THE INSTRUCTION IS A FULL SOURCE AND DESTINATION REGESTER OPERAND TWO(2) TABLES ARE GENERATED, ONE EACH FOR SOURCE AND DESTINATION. PROGRAM SUMMARY THE FINAL PART OF THE LISTING IS A SUMMARY OF THE ENTIRE USER PROGRAM. THIS INCLUDES THE TOTAL NUMBER OF INSTRUCTIONS EXECUTED, A PAIR OF TABLES LAIKE THOSE IN PART THREE OF THE LISTING SHOWING FOR SOURCE AND DESINATION USEAGE THE CPU REGESTERS AND MODES OF USE, AND (IF ANY ARE USED) THE SOURCE AND DESTINATION UESAGES OF ANY FPU ACCUMULATORS. RUNNING THE EVALUATION PROGRAM NO USER INTERACTION IS REQUIRED IN THE OPERATION OF THE EVALUATION PROGRAM ONCE THE COMMAND 'RUN EVALUATE' HAS BEEN GIVEN. THE PROGRAM AUTOMATICALY LOOKS FOR THE THREE(3) DATA FILES GENERATED BY THE MEASUREMENT ROUTINE (DELETEING THEM WHEN DONE), GENERATEING A LIST FILE OF THE RESULTS ('EVALUATE.LST') AND SPOOLING IT WHEN DONE. BUILDING THE PROFILE PACKAGE THE MEASURE MODULE (MODIFIED AS NEEDED BY THE USER TO BE COMPATABLE WITH THE LUN AND EVENT FLAG USEAGE OF HIS PROGRAM) IS ASSEMBLED MAC MEASURE=MEASURE IT CAN THEN BE TASK BUILT INTO THE USER TASK WITH ANY REQUIRED OPTIONS AS OUTLINED EARLIER IN THIS DOCUMENT. THE EVALUATION PROGRAM NEED ONLY BE BUILT ONCE. MAC EVALUATE=EVALUATE TKB EVALUATE/FP=EVALUATE NOTE THE '/FP' AS PART OF THE PRINT OUT FORMATTING USES THE FPU. FOR ANY QUESTIONS, BUG REPORTS, IMPROVEMENTS CONTACT MICHAEL N. LEVINE CODE 3513 NAVAL WEAPONS CENTER CHINA LAKE CALIFORNIA 93555 (714) 939-2417 AVN 437-2417