mc_constants.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _CONSTANTS_H
00019 #define _CONSTANTS_H
00020 #include <math.h>
00021 #include <stdint.h>
00022
00023
00024
00025
00026 typedef unsigned long long int Time;
00027 typedef unsigned long long int Addr_t;
00028 typedef unsigned int uint;
00029 typedef unsigned int UInt;
00030
00031
00039 #ifndef USE_ZESTO
00040 enum cache_command { CACHE_NOP, CACHE_READ, CACHE_WRITE, CACHE_WRITEBACK, CACHE_PREFETCH, REFRESH, INVALIDATE, FWD_DIRTY, READ_RESPONSE, WRITE_RESPONSE, ACK };
00041 #else
00042 #include "../zesto/zesto-cache.h"
00043 #endif
00044 enum DRAM_PAGE_POLICY { OPEN_PAGE_POLICY, CLOSE_PAGE_POLICY};
00045 enum MC_SCHEDULLING_ALGO { PAR_BS, FR_FCFS, FC_FS, NFQ};
00046 enum ADDR_MAP_SCHEME { PAGE_INTERLEAVING, PERMUTATION, CACHELINE_INTERLEAVING, SWAPPING, GENERIC, NO_SCHEME, LOCAL_ADDR_MAP};
00047 enum DRAM_CONFIG { DDR3_1333_9,
00048 DDR3_1600_10,
00049 DDR3_1333_6,
00050 DDR2_533_4,
00051 DDR2_667_4
00052 };
00053 extern DRAM_PAGE_POLICY dram_page_policy;
00054 extern MC_SCHEDULLING_ALGO mc_scheduling_algorithm;
00055 extern ADDR_MAP_SCHEME addr_map_scheme;
00056
00057 extern uint NO_OF_THREADS;
00058 extern uint NO_OF_CHANNELS ;
00059 extern uint NO_OF_RANKS ;
00060 extern uint NO_OF_BANKS ;
00061 #define NO_OF_BUFFERS NO_OF_BANKS
00062 extern uint NO_OF_ROWS;
00063 extern uint NO_OF_COLUMNS;
00064 extern uint COLUMN_SIZE ;
00065 #define BLOCKS_PER_ROW 128 // (int)log2() = n bits. Cache line Per Row
00066 #define CACHE_BLOCK_SIZE 64 // (int)log2() = z bits. L2 Cache Block Size
00067 #define ROW_SIZE NO_OF_COLUMNS*COLUMN_SIZE //(Also equal to BLOCKS_PER_ROW*CACHE_BLOCK_SIZE)
00068 #define DRAM_SIZE NO_OF_CHANNELS*NO_OF_RANKS*NO_OF_BANKS*NO_OF_ROWS*ROW_SIZE
00069 #define TAG_BITS 8 // t bits
00070
00071 #define USE_MSHR 1
00072 extern uint MSHR_SIZE ;
00073
00074
00075 extern uint MAX_BUFFER_SIZE ;
00076 extern uint MAX_CMD_BUFFER_SIZE ;
00077 extern uint RESPONSE_BUFFER_SIZE ;
00078
00079 #define BATCH_FORM_TIME 2000;
00080 #define MAX_BATCH_SIZE 5
00081 #define MAX_READ_OV_WRITE 8
00082
00083 extern uint NETWORK_ADDRESS_BITS ;
00084 extern uint NETWORK_THREADID_BITS ;
00085 extern uint NETWORK_COMMAND_BITS ;
00086
00087 #define READ_SIZE CACHE_BLOCK_SIZE
00088 #define WRITE_SIZE CACHE_BLOCK_SIZE
00089 #define PREFETCH_SIZE CACHE_BLOCK_SIZE
00090 #define WRITEBACK_SIZE CACHE_BLOCK_SIZE
00091
00092 #define REFRESH_PERIOD CORE_SPEED*64000 // 64ms
00093 #define REFRESH_INC (ullint)floor(REFRESH_PERIOD/(8192)) - BUS_CYCLE // -1 BUS_CYCLE to be on the safe side
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135 extern float CORE_SPEED;
00136 extern float CYCLE_2_NS;
00137
00138 extern unsigned int DDR_BUS_WIDTH;
00139 extern float BUS_SPEED;
00140 extern float MEM_SPEED;
00141 extern float MEM_CYCLE;
00142 extern float BUS_CYCLE;
00143 extern float CYCLE_2_NS;
00144 extern float tREFI;
00145 extern float tRFC;
00146 extern float tRC;
00147 extern float tRAS;
00148 extern unsigned int t_CMD;
00149 extern unsigned int t_RCD;
00150 extern unsigned int t_RRD;
00151 extern unsigned int t_RAS;
00152 extern unsigned int t_CAS;
00153 extern unsigned int t_RTRS;
00154 extern unsigned int t_OST;
00155 extern unsigned int t_WR;
00156 extern unsigned int t_WTR;
00157 extern unsigned int t_RP;
00158 extern unsigned int t_CCD;
00159 extern unsigned int t_AL;
00160 extern unsigned int t_CWD;
00161 extern unsigned int t_RC;
00162 extern unsigned int t_RTP;
00163 extern unsigned int t_RFC;
00164
00165 #endif
00166