/* * calculates the cost of reading and writing a block of data across planes. */ static double ssd_crossover_cost (ssd_t *s, ssd_element_metadata *metadata, int from_blk, int to_blk) { if (ssd_same_plane_blocks(s, metadata, from_blk, to_blk)) { return 0; } else { double xfer_cost; // we need to read and write back across the pins xfer_cost = ssd_data_transfer_cost(s, s->params.page_size); return (2 * xfer_cost); } }
/* * calculates the cost of reading and writing a block of data across planes. */ static double ssd_crossover_cost (ssd_t *s, ssd_element_metadata *metadata, ssd_power_element_stat *power_stat, int from_blk, int to_blk) { if (ssd_same_plane_blocks(s, metadata, from_blk, to_blk)) { return 0; } else { double xfer_cost; // we need to read and write back across the pins xfer_cost = ssd_data_transfer_cost(s, s->params.page_size); ssd_power_flash_calculate(SSD_POWER_FLASH_BUS_DATA_TRANSFER, 2*xfer_cost, power_stat, s); return (2 * xfer_cost); } }