Lines Matching refs:mcp

76     : McPATComponent(_xml_data), l_ip(*interface_ip_), mcp(mcp_), mcs(mcs_) {
82 tdp_stats.readAc.access = 0.5 * mcp.num_channels * mcp.clockRate;
83 tdp_stats.writeAc.access = 0.5 * mcp.num_channels * mcp.clockRate;
91 if (mcp.mc_type == MC) {
92 if (mcp.type == 0) {
93 output_data.area = (2.7927 * log(mcp.peak_transfer_rate * 2) -
94 19.862) / 2.0 * mcp.dataBusWidth / 128.0 *
95 (l_ip.F_sz_um / 0.09) * mcp.num_channels;
97 output_data.area = 0.15 * mcp.dataBusWidth / 72.0 *
99 mcp.num_channels;
106 output_data.area = 0.243 * mcp.dataBusWidth / 8;
120 if (mcp.mc_type == MC) {
121 if (mcp.type == 0) {
130 (mcp.dataBusWidth/*+mcp.addressBusWidth*/);
142 backend_dyn = 0.9e-9 / 800e6 * mcp.clockRate / 12800 *
143 mcp.peak_transfer_rate* mcp.dataBusWidth / 72.0 *
149 backend_gates = 50000 * mcp.dataBusWidth / 64.0;
197 mcp.llcBlockSize * BITS_PER_BYTE / mcp.dataBusWidth +
205 : McPATComponent(_xml_data), l_ip(*interface_ip_), mcp(mcp_), mcs(mcs_) {
212 tdp_stats.readAc.access = 0.5 * mcp.num_channels;
213 tdp_stats.writeAc.access = 0.5 * mcp.num_channels;
220 if (mcp.mc_type == MC) {
221 if (mcp.type == 0) {
225 output_data.area = (6.4323 * log(mcp.peak_transfer_rate * 2) -
226 48.134) * mcp.dataBusWidth / 128.0 *
227 (l_ip.F_sz_um / 0.09) * mcp.num_channels / 2;//TODO:/2
233 mcp.clockRate / 17066 * mcp.peak_transfer_rate *
234 mcp.dataBusWidth / 16.0 * (l_ip.F_sz_um / 0.040)*
235 (l_ip.F_sz_um / 0.040) * mcp.num_channels;//um^2
239 output_data.area = 0.4e6 / 2 * mcp.dataBusWidth / 8 / 1e6;
255 if (mcp.mc_type == MC) {
256 if (mcp.type == 0) {
257 power_per_gb_per_s = mcp.LVDS ? 0.01 : 0.04;
273 phy_gates = 200000 * mcp.dataBusWidth / 64.0;
278 power.readOp.leakage = (mcp.withPHY ? phy_gates : 0) *
281 power.readOp.gate_leakage = (mcp.withPHY ? phy_gates : 0) *
287 // double phy_factor = (int)ceil(mcp.dataBusWidth/72.0);//Previous phy power numbers are based on 72 bit DIMM interface
304 double data_transfer_unit = (mcp.mc_type == MC)? 72:16;/*DIMM data width*/
306 (mcp.peak_transfer_rate * BITS_PER_BYTE / 1e3) * mcp.dataBusWidth /
307 data_transfer_unit * mcp.num_channels / mcp.clockRate;
313 mcp.llcBlockSize * BITS_PER_BYTE / 1e9 +
323 mcp(mcp_), mcs(mcs_) {
335 tag = mcp.addressbus_width + EXTRA_TAG_BITS + mcp.opcodeW;
336 data = int(ceil((physical_address_width + mcp.opcodeW) / BITS_PER_BYTE));
338 interface_ip.cache_sz = data * mcp.req_window_size_per_channel;
340 interface_ip.assoc = mcp.reorder_buffer_assoc;
341 interface_ip.nbanks = mcp.reorder_buffer_nbanks;
351 interface_ip.num_rd_ports = mcp.num_channels;
354 interface_ip.num_search_ports = mcp.num_channels;
358 interface_ip.throughput = 1.0 / mcp.clockRate;
359 interface_ip.latency = 1.0 / mcp.clockRate;
361 Uncore_device, mcp.clockRate);
379 //DIMM *mcp.dataBusWidth/72
380 frontendBuffer->rtp_stats.readAc.access = mcs.reads * mcp.llcBlockSize *
381 BITS_PER_BYTE / mcp.dataBusWidth * mcp.dataBusWidth / 72;
382 frontendBuffer->rtp_stats.writeAc.access = mcs.writes * mcp.llcBlockSize *
383 BITS_PER_BYTE / mcp.dataBusWidth * mcp.dataBusWidth / 72;
390 data = (int)ceil(mcp.dataBusWidth / BITS_PER_BYTE);
392 interface_ip.cache_sz = data * mcp.IO_buffer_size_per_channel;
394 interface_ip.assoc = mcp.read_buffer_assoc;
395 interface_ip.nbanks = mcp.read_buffer_nbanks;
397 interface_ip.specific_tag = mcp.read_buffer_tag_width > 0;
398 interface_ip.tag_w = mcp.read_buffer_tag_width;
405 interface_ip.num_rd_ports = mcp.num_channels;
412 interface_ip.throughput = 1.0 / mcp.clockRate;
413 interface_ip.latency = 1.0 / mcp.clockRate;
415 Uncore_device, mcp.clockRate);
424 readBuffer->rtp_stats.readAc.access = mcs.reads * mcp.llcBlockSize *
425 BITS_PER_BYTE / mcp.dataBusWidth;
426 readBuffer->rtp_stats.writeAc.access = mcs.reads * mcp.llcBlockSize *
427 BITS_PER_BYTE / mcp.dataBusWidth;
431 data = (int)ceil(mcp.dataBusWidth / BITS_PER_BYTE);
433 interface_ip.cache_sz = data * mcp.IO_buffer_size_per_channel;
435 interface_ip.assoc = mcp.write_buffer_assoc;
436 interface_ip.nbanks = mcp.write_buffer_nbanks;
438 interface_ip.specific_tag = mcp.write_buffer_tag_width > 0;
439 interface_ip.tag_w = mcp.write_buffer_tag_width;
446 interface_ip.num_rd_ports = mcp.num_channels;
453 interface_ip.throughput = 1.0 / mcp.clockRate;
454 interface_ip.latency = 1.0 / mcp.clockRate;
456 Uncore_device, mcp.clockRate);
465 writeBuffer->rtp_stats.readAc.access = mcs.reads * mcp.llcBlockSize *
466 BITS_PER_BYTE / mcp.dataBusWidth;
467 writeBuffer->rtp_stats.writeAc.access = mcs.writes * mcp.llcBlockSize *
468 BITS_PER_BYTE / mcp.dataBusWidth;
474 mcp.req_window_size_per_channel, 1, &interface_ip,
476 mcp.clockRate, Uncore_device);
487 children.push_back(new MCFrontEnd(xml_data, &interface_ip, mcp, mcs));
488 children.push_back(new MCBackend(xml_data, &interface_ip, mcp, mcs));
490 if (mcp.type==0 || (mcp.type == 1 && mcp.withPHY)) {
491 children.push_back(new MCPHY(xml_data, &interface_ip, mcp, mcs));
496 memset(&mcp, 0, sizeof(MCParameters));
514 ASSIGN_FP_IF("mc_clock", mcp.clockRate);
516 ASSIGN_ENUM_IF("mc_type", mcp.mc_type, MemoryCtrl_type);
517 ASSIGN_FP_IF("num_mcs", mcp.num_mcs);
518 ASSIGN_INT_IF("llc_line_length", mcp.llc_line_length);
519 ASSIGN_INT_IF("databus_width", mcp.databus_width);
520 ASSIGN_INT_IF("memory_channels_per_mc", mcp.num_channels);
522 mcp.req_window_size_per_channel);
524 mcp.IO_buffer_size_per_channel);
525 ASSIGN_INT_IF("addressbus_width", mcp.addressbus_width);
526 ASSIGN_INT_IF("opcode_width", mcp.opcodeW);
527 ASSIGN_INT_IF("type", mcp.type);
528 ASSIGN_ENUM_IF("LVDS", mcp.LVDS, bool);
529 ASSIGN_ENUM_IF("withPHY", mcp.withPHY, bool);
530 ASSIGN_INT_IF("peak_transfer_rate", mcp.peak_transfer_rate);
531 ASSIGN_INT_IF("number_ranks", mcp.number_ranks);
532 ASSIGN_INT_IF("reorder_buffer_assoc", mcp.reorder_buffer_assoc);
533 ASSIGN_INT_IF("reorder_buffer_nbanks", mcp.reorder_buffer_nbanks);
534 ASSIGN_INT_IF("read_buffer_assoc", mcp.read_buffer_assoc);
535 ASSIGN_INT_IF("read_buffer_nbanks", mcp.read_buffer_nbanks);
536 ASSIGN_INT_IF("read_buffer_tag_width", mcp.read_buffer_tag_width);
537 ASSIGN_INT_IF("write_buffer_assoc", mcp.write_buffer_assoc);
538 ASSIGN_INT_IF("write_buffer_nbanks", mcp.write_buffer_nbanks);
539 ASSIGN_INT_IF("write_buffer_tag_width", mcp.write_buffer_tag_width);
548 if (mcp.mc_type != MC) {
555 mcp.clockRate *= 1e6;
584 mcp.llcBlockSize = int(ceil(mcp.llc_line_length / BITS_PER_BYTE)) +
585 mcp.llc_line_length;
586 mcp.dataBusWidth = int(ceil(mcp.databus_width / BITS_PER_BYTE)) +
587 mcp.databus_width;