def calc_hit_ratio_start_time_cache_size_subprocess(order,
    break_points_share_array, reuse_dist_share_array, q, **kwargs):
    """
    the child process for calculating hit rate of different cache size with different starting time, but fixed end time,
    and each child process will calculate for a column with a given starting time
    :param q:
    :param reuse_dist_share_array:
    :param break_points_share_array:
    :param order: the order of column the child is working on
    :return: a list of result in the form of (x, y, hit_ratio) with x as fixed value(starting time), y as cache size
    """
    max_rd = kwargs['max_rd']
    bin_size = kwargs['bin_size']
    result_list = []
    rd_distribution = [0] * int(max_rd // bin_size + 1)
    for i in range(break_points_share_array[order],
        break_points_share_array[-1]):
        rd_distribution[reuse_dist_share_array[i] // bin_size] += 1
    num_of_total_request = break_points_share_array[-1
        ] - break_points_share_array[order]
    accum = 0
    for i in range(len(rd_distribution)):
        accum += rd_distribution[i]
        result_list.append((order, i, accum / num_of_total_request))
    q.put(result_list)
