support for reading memory larger than GTP_RB_DATA_MAX

multiple allocation and  try to avoid inner fragments as much as possible