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
Forkers
fjtrujyRecommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.