| /***************************************************************************** | |
| * McPAT | |
| * SOFTWARE LICENSE AGREEMENT | |
| * Copyright 2012 Hewlett-Packard Development Company, L.P. | |
| * All Rights Reserved | |
| * | |
| * Redistribution and use in source and binary forms, with or without | |
| * modification, are permitted provided that the following conditions are | |
| * met: redistributions of source code must retain the above copyright | |
| * notice, this list of conditions and the following disclaimer; | |
| * redistributions in binary form must reproduce the above copyright | |
| * notice, this list of conditions and the following disclaimer in the | |
| * documentation and/or other materials provided with the distribution; | |
| * neither the name of the copyright holders nor the names of its | |
| * contributors may be used to endorse or promote products derived from | |
| * this software without specific prior written permission. | |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
| * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
| * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
| * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
| * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
| * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.” | |
| * | |
| ***************************************************************************/ | |
| #ifndef ARCH_CONST_H_ | |
| #define ARCH_CONST_H_ | |
| typedef struct{ | |
| unsigned int capacity; | |
| unsigned int assoc;//fully | |
| unsigned int blocksize; | |
| } array_inputs; | |
| //Do Not change, unless you want to bypass the XML interface and do not care about the default values. | |
| //Global parameters | |
| const int number_of_cores = 8; | |
| const int number_of_L2s = 1; | |
| const int number_of_L3s = 1; | |
| const int number_of_NoCs = 1; | |
| const double archi_F_sz_nm = 90.0; | |
| const unsigned int dev_type = 0; | |
| const double CLOCKRATE = 1.2*1e9; | |
| const double AF = 0.5; | |
| //const bool inorder = true; | |
| const bool embedded = false; //NEW | |
| const bool homogeneous_cores = true; | |
| const bool temperature = 360; | |
| const int number_cache_levels = 3; | |
| const int L1_property = 0; //private 0; coherent 1, shared 2. | |
| const int L2_property = 2; | |
| const bool homogeneous_L2s = true; | |
| const bool L3_property = 2; | |
| const bool homogeneous_L3s = true; | |
| const double Max_area_deviation = 50; | |
| const double Max_dynamic_deviation =50; //New | |
| const int opt_dynamic_power = 1; | |
| const int opt_lakage_power = 0; | |
| const int opt_area = 0; | |
| const int interconnect_projection_type = 0; | |
| //******************************Core Parameters | |
| #if (inorder) | |
| const int opcode_length = 8;//Niagara | |
| const int reg_length = 5;//Niagara | |
| const int instruction_length = 32;//Niagara | |
| const int data_width = 64; | |
| #else | |
| const int opcode_length = 8;//16;//Niagara | |
| const int reg_length = 7;//Niagara | |
| const int instruction_length = 32;//Niagara | |
| const int data_width = 64; | |
| #endif | |
| //Caches | |
| //itlb | |
| const int itlbsize=512; | |
| const int itlbassoc=0;//fully | |
| const int itlbblocksize=8; | |
| //icache | |
| const int icachesize=32768; | |
| const int icacheassoc=4; | |
| const int icacheblocksize=32; | |
| //dtlb | |
| const int dtlbsize=512; | |
| const int dtlbassoc=0;//fully | |
| const int dtlbblocksize=8; | |
| //dcache | |
| const int dcachesize=32768; | |
| const int dcacheassoc=4; | |
| const int dcacheblocksize=32; | |
| const int dcache_write_buffers=8; | |
| //cache controllers | |
| //IB, | |
| const int numIBEntries = 64; | |
| const int IBsize = 64;//2*4*instruction_length/8*2; | |
| const int IBassoc = 0;//In Niagara it is still fully associ | |
| const int IBblocksize = 4; | |
| //IFB and MIL should have the same parameters CAM | |
| const int IFBsize=128;// | |
| const int IFBassoc=0;//In Niagara it is still fully associ | |
| const int IFBblocksize=4; | |
| const int icache_write_buffers=8; | |
| //register file RAM | |
| const int regfilesize=5760; | |
| const int regfileassoc=1; | |
| const int regfileblocksize=18; | |
| //regwin RAM | |
| const int regwinsize=256; | |
| const int regwinassoc=1; | |
| const int regwinblocksize=8; | |
| //store buffer, lsq | |
| const int lsqsize=512; | |
| const int lsqassoc=0; | |
| const int lsqblocksize=8; | |
| //data fill queue RAM | |
| const int dfqsize=1024; | |
| const int dfqassoc=1; | |
| const int dfqblocksize=16; | |
| //outside the cores | |
| //L2 cache bank | |
| const int l2cachesize=262144; | |
| const int l2cacheassoc=16; | |
| const int l2cacheblocksize=64; | |
| //L2 directory | |
| const int l2dirsize=1024; | |
| const int l2dirassoc=0; | |
| const int l2dirblocksize=2; | |
| //crossbar | |
| //PCX | |
| const int PCX_NUMBER_INPUT_PORTS_CROSSBAR = 8; | |
| const int PCX_NUMBER_OUTPUT_PORTS_CROSSBAR = 9; | |
| const int PCX_NUMBER_SIGNALS_PER_PORT_CROSSBAR =144; | |
| //PCX buffer RAM | |
| const int pcx_buffersize=1024; | |
| const int pcx_bufferassoc=1; | |
| const int pcx_bufferblocksize=32; | |
| const int pcx_numbuffer=5; | |
| //pcx arbiter | |
| const int pcx_arbsize=128; | |
| const int pcx_arbassoc=1; | |
| const int pcx_arbblocksize=2; | |
| const int pcx_numarb=5; | |
| //CPX | |
| const int CPX_NUMBER_INPUT_PORTS_CROSSBAR = 5; | |
| const int CPX_NUMBER_OUTPUT_PORTS_CROSSBAR = 8; | |
| const int CPX_NUMBER_SIGNALS_PER_PORT_CROSSBAR =150; | |
| //CPX buffer RAM | |
| const int cpx_buffersize=1024; | |
| const int cpx_bufferassoc=1; | |
| const int cpx_bufferblocksize=32; | |
| const int cpx_numbuffer=8; | |
| //cpx arbiter | |
| const int cpx_arbsize=128; | |
| const int cpx_arbassoc=1; | |
| const int cpx_arbblocksize=2; | |
| const int cpx_numarb=8; | |
| const int numPhysFloatRegs=256; | |
| const int numPhysIntRegs=32; | |
| const int numROBEntries=192; | |
| const int umRobs=1; | |
| const int BTBEntries=4096; | |
| const int BTBTagSize=16; | |
| const int LFSTSize=1024; | |
| const int LQEntries=32; | |
| const int RASSize=16; | |
| const int SQEntries=32; | |
| const int SSITSize=1024; | |
| const int activity=0; | |
| const int backComSize=5; | |
| const int cachePorts=200; | |
| const int choiceCtrBits=2; | |
| const int choicePredictorSize=8192; | |
| const int commitWidth=8; | |
| const int decodeWidth=8; | |
| const int dispatchWidth=8; | |
| const int fetchWidth=8; | |
| const int issueWidth=1; | |
| const int renameWidth=8; | |
| //what is this forwardComSize=5?? | |
| const int globalCtrBits=2; | |
| const int globalHistoryBits=13; | |
| const int globalPredictorSize=8192; | |
| const int localCtrBits=2; | |
| const int localHistoryBits=11; | |
| const int localHistoryTableSize=2048; | |
| const int localPredictorSize=2048; | |
| const double Woutdrvnandn =30 *0.09;//(24.0 * LSCALE) | |
| const double Woutdrvnandp =12.5 *0.09;//(10.0 * LSCALE) | |
| const double Woutdrvnorn =7.5*0.09;//(6.0 * LSCALE) | |
| const double Woutdrvnorp =50 * 0.09;// (40.0 * LSCALE) | |
| const double Woutdrivern =60*0.09;//(48.0 * LSCALE) | |
| const double Woutdriverp =100 * 0.09;//(80.0 * LSCALE) | |
| /* | |
| smtCommitPolicy=RoundRobin | |
| smtFetchPolicy=SingleThread | |
| smtIQPolicy=Partitioned | |
| smtIQThreshold=100 | |
| smtLSQPolicy=Partitioned | |
| smtLSQThreshold=100 | |
| smtNumFetchingThreads=1 | |
| smtROBPolicy=Partitioned | |
| smtROBThreshold=100 | |
| squashWidth=8 | |
| */ | |
| /* | |
| prefetch_access=false | |
| prefetch_cache_check_push=true | |
| prefetch_data_accesses_only=false | |
| prefetch_degree=1 | |
| prefetch_latency=10000 | |
| prefetch_miss=false | |
| prefetch_past_page=false | |
| prefetch_policy=none | |
| prefetch_serial_squash=false | |
| prefetch_use_cpu_id=true | |
| prefetcher_size=100 | |
| prioritizeRequests=false | |
| repl=Null | |
| split=false | |
| split_size=0 | |
| subblock_size=0 | |
| tgts_per_mshr=20 | |
| trace_addr=0 | |
| two_queue=false | |
| cpu_side=system.cpu0.dcache_port | |
| mem_side=system.tol2bus.port[2] | |
| */ | |
| //[system.cpu0.dtb] | |
| //type=AlphaDT | |
| #endif /* ARCH_CONST_H_ */ |