Giter Site home page Giter Site logo

ps2perf's Introduction

 Ps2Perf	 PS2 Performance Counters Functions
 ====================================================
 
 Some functions to use performance counters of EE 
 
 
* Why Use Them ?
 	
 		- If our program is using some kind of synchronization, 
 		we need something to know if we're making our functions faster or slower when we are modifying them.
 		Just use ProcessorCycle Event and you will know it :D.
 		
* What isn't for ?
		- Finetuning, for some events or exact count, counters should be initialized to something different than 0.

 
* How Use Them ?
		Well, it's no a patching utility , we need to put some instructions before&after functions.
		
		1 - Include in your project ps2Perf.h & ps2Perf.c
		2 - Set a Counters0, Counters1 structs in your code to save ps2Perf data.
		3 - initPs2Perf (); --> Just clear & stop Perfomance Counter Control Register (PCCR)
		4 - initCounter (&counter,PC0 or PC1); --> initialize counter's struct to 0
		5 - Select what you want to count 
			mode0Select 	(1,1,1,1);  Count on { Level 1 mode, kernel mode , supervisor mode, user mode }
			mode1Select 	(1,1,1,1);  
			
			event0Select 	(EVENT0);
			event1Select 	(EVENT1);
			
			Where EVENT0 can be (1..15) :
				EV0_ProcessorCycle 				
				EV0_SingleInstructionIssue			
				EV0_BranchIssued					
				EV0_BTACmiss						
				EV0_ITLBmiss						
				EV0_InstructionCacheMiss			
				EV0_AccessToDTLB					
				EV0_nonBlockingLoad				
				EV0_WBBSingleRequest				
				EV0_WBBBurstRequest				
				EV0_CPUAdressBusBusy				
				EV0_InstructionCompleted			
				EV0_NonBDSInstrucionCompleted		
				EV0_COP2InstructionCompleted		
				EV0_LoadCompleted					
 			And EVENT1 (0..15) :
	 			EV1_LowOrderBranchIssued		
				EV1_ProcessorCycle   			
				EV1_DualInstructionIssue		
				EV1_BranchMispredicted			
				EV1_TLBmiss						
				EV1_DTLBmiss					
				EV1_DataCacheMiss				
				EV1_WBBSingleRequestUnavailable	
				EV1_WBBBurstRequestUnavailable	
				EV1_WBBBurstRequestAlmostFull	
				EV1_WBBBurstRequestFull			
				EV1_CPUDataBusBusy				
				EV1_InstructionCompleted		
				EV1_NonBDSInstrucionCompleted	
				EV1_COP1InstructionCompleted	
				EV1_StoreCompleted				

		6 - startPs2Perf () ;   --> Just Start 	(no clear counters)
		7 - Execute code to count
		8 - stopPs2Perf  () ;   --> Stop Counting 	(no clear counters)
            
		9 - You can repeat 6-7-8
         
		10 - Eventually you can flushCounter (&counter,PC0,reStart)
         		It stops Counters, add current PC0 event to &counter->event, clear PC0, and reStart Counters (if reStart == 1 )

		11 - Finally you can access directly to counter->event.
            
		
		
		
* Any Examples?
	- Yes, just look & compile main.c
	  Performance counters are used to see differences between different array storage locations.
	  
* It would be very interesting to integrate it with future ps2link in pc side like a profiling tool 	  

CHANGELOG
----------------------------------------------------------------------------

26 January 2002 - Version 1.0

- First Release.

Greets
-----------------------------------------------------------------------------

To Oobles, Sjeep. Pukko and all ps2reality crew

COPYRIGHT AND PERMISSION NOTICE
----------------------------------------------------------------------------

Copyright 2002 (C) Mavy & Bigboss ([email protected] [email protected])
All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, and/or sell copies of the
Software, and to permit persons to whom the Software is furnished to do so,
provided that the above copyright notice(s) and this permission notice appear
in all copies of the Software and that both the above copyright notice(s)
and this permission notice appear in supporting documentation.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE
LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

Except as contained in this notice, the name of a copyright holder shall not
be used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization of the copyright holder.

</End>
	

ps2perf's People

Contributors

akuhak avatar sl1pkn07 avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

fjtrujy

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.