/***************************************************************************** * 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_ */