Предположим, что я кормить массив T array[N]
на мой процессор, где T
большой тип, большой struct
это больше чем 64
байт, предполагая, что 64
байты — это также размер вашей строки кэша в вашем процессоре; мой вопрос: что такое наблюдаемое поведение? Что я могу диагностировать?
Очевидно, я предполагаю, что мой T
и мой array
упакованы и выровнены, а соответствующие структуры данных оптимизированы с точки зрения их размещения и размещения в памяти. Мое основное внимание уделяется случаю, когда T> строка кэша, и техническим возможностям, которые могут объяснить, что происходит в этих обстоятельствах.
Ваш процессор не видит типов, в частности нет struct
типы или что-то еще, это инкапсуляция для конкретного языка. Он видит только доступ к отдельным полям, которые ваш компилятор отделяет от этого. Все эти поля являются целыми числами, указателями или числами с плавающей точкой в конце, и ваш процессор знает, как эффективно их обрабатывать.