• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

sst/core/techModels/libMcPATbeta/nuca.h

00001 /*------------------------------------------------------------
00002  *                              CACTI 6.5
00003  *         Copyright 2008 Hewlett-Packard Development Corporation
00004  *                         All Rights Reserved
00005  *
00006  * Permission to use, copy, and modify this software and its documentation is
00007  * hereby granted only under the following terms and conditions.  Both the
00008  * above copyright notice and this permission notice must appear in all copies
00009  * of the software, derivative works or modified versions, and any portions
00010  * thereof, and both notices must appear in supporting documentation.
00011  *
00012  * Users of this software agree to the terms and conditions set forth herein, and
00013  * hereby grant back to Hewlett-Packard Company and its affiliated companies ("HP")
00014  * a non-exclusive, unrestricted, royalty-free right and license under any changes,
00015  * enhancements or extensions  made to the core functions of the software, including
00016  * but not limited to those affording compatibility with other hardware or software
00017  * environments, but excluding applications which incorporate this software.
00018  * Users further agree to use their best efforts to return to HP any such changes,
00019  * enhancements or extensions that they make and inform HP of noteworthy uses of
00020  * this software.  Correspondence should be provided to HP at:
00021  *
00022  *                       Director of Intellectual Property Licensing
00023  *                       Office of Strategy and Technology
00024  *                       Hewlett-Packard Company
00025  *                       1501 Page Mill Road
00026  *                       Palo Alto, California  94304
00027  *
00028  * This software may be distributed (but not offered for sale or transferred
00029  * for compensation) to third parties, provided such third parties agree to
00030  * abide by the terms and conditions of this notice.
00031  *
00032  * THE SOFTWARE IS PROVIDED "AS IS" AND HP DISCLAIMS ALL
00033  * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
00034  * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL HP
00035  * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
00036  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
00037  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
00038  * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
00039  * SOFTWARE.
00040  *------------------------------------------------------------*/
00041 
00042 
00043 #ifndef __NUCA_H__
00044 #define __NUCA_H__
00045 
00046 #include "basic_circuit.h"
00047 #include "McPATcomponent.h"
00048 #include "parameter.h"
00049 #include "assert.h"
00050 #include "cacti_interface.h"
00051 #include "wire.h"
00052 #include "mat.h"
00053 #include "io.h"
00054 #include "router.h"
00055 #include <iostream>
00056 
00057 
00058 
00059 class nuca_org_t {
00060   public:
00061   ~nuca_org_t();
00062 //    int size;
00063     /* area, power, access time, and cycle time stats */
00064     McPATComponent nuca_pda;
00065     McPATComponent bank_pda;
00066     McPATComponent wire_pda;
00067     Wire *h_wire;
00068     Wire *v_wire;
00069     Router *router;
00070     /* for particular network configuration
00071      * calculated based on a cycle accurate
00072      * simulation Ref: CACTI 6 - Tech report
00073      */
00074     double contention;
00075 
00076     /* grid network stats */
00077     double avg_hops;
00078     int rows;
00079     int columns;
00080     int bank_count;
00081 };
00082 
00083 
00084 
00085 class Nuca : public McPATComponent
00086 {
00087   public:
00088     Nuca(
00089         TechnologyParameter::DeviceType *dt);
00090     void print_router();
00091     ~Nuca();
00092     void sim_nuca();
00093     void init_cont();
00094     int calc_cycles(double lat, double oper_freq);
00095     void calculate_nuca_area (nuca_org_t *nuca);
00096     int check_nuca_org (nuca_org_t *n, min_values_t *minval);
00097     nuca_org_t * find_optimal_nuca (list<nuca_org_t *> *n, min_values_t *minval);
00098     void print_nuca(nuca_org_t *n);
00099     void print_cont_stats();
00100 
00101   private:
00102 
00103     TechnologyParameter::DeviceType *deviceType;
00104     int wt_min, wt_max;
00105     Wire *wire_vertical[WIRE_TYPES],
00106          *wire_horizontal[WIRE_TYPES];
00107 
00108 };
00109 
00110 
00111 #endif

Generated on Fri Oct 22 2010 11:02:18 for SST by  doxygen 1.7.1