FlexBulk: intelligently forming atomic blocks in blocked-execution multiprocessors to minimize squashes