Из Вашего сообщения напрашивается вывод: если я все промежуточные данные объединю в единый массив, то проблема должна исчезнуть. По идее new может располагать массивы как рядом, так и далеко друг от друга. В принципе, от этого может и возникать наблюдаемая нестабильность. Верно ли я понимаю?
Не совсем: не так важно как далеко данные, важно какие у их адресов
младшие биты. Они могут быть в разных концах 2ГБ пространства, но иметь одинаковые младшие 13 битов (для вашего процессора) — и будет беда с кэшем L1. Одинаковые 15 младших битов — и беда с кэшем L2. Беда в том случае, если по таким вот адресам расположены более 8-ми адресуемых объектов (включая и стек и все переменные, вообще все данные). 17 объектов (про 13 был не прав) с одинаковыми 19 младшими битами надо для "переполнения" кэша L3 объёмом 8МБ.
И при этом самые младшие 6 битов адреса наоборот не влияют, они в одной кэшлинии, потому одинаковыми выше я подразумевал лишь биты 12..6 или 14..6 или 18..6 (нумерация с 0).
на основании полученной информации можно с высокой уверенностью предположить, что данные у меня в chache на долго не задерживаются и чтение данных идёт в основном из памяти?
Я не видел к этому
веских оснований, пока это лишь предположение, подтверждают ли Ваши опыты его или нет — мне непонятно.