#spatial #computer-architecture #temporal
#пространственная #компьютерная архитектура #временная
Вопрос:
Я хотел спросить о пространственной и временной локальности. Если я нахожусь в цикле, скажем, с переменной цикла i
, и я просматриваю массив с именем arr[i]
, то, когда я обращаюсь к arr [i], то, по моему мнению, это должна быть как временная, так и пространственная локальность, так как сначала я бы получил доступ i
и выяснил, что i
есть, а затем перешел к этому индексу. Здесь я делаю две вещи,
- Доступ
i
(временная локальность). - Доступ к адресу
arr[i]
(пространственная локальность).
Пожалуйста, скажите мне, прав ли я в этой конкретной ситуации.
Заранее спасибо.
Ответ №1:
Временная локальность: происходят ли события за короткий промежуток времени? Если это так, у них есть временная локальность. Если нет, то они этого не делают.
Пространственная локальность: объекты расположены близко друг к другу в пространстве (например, в памяти)? Если да, то они имеют пространственную локальность. Если нет, то они этого не делают.
Обратите внимание, что при использовании этих терминов вам нужно указать, что является локальным для чего; по отдельности они имеют мало смысла.
Элементы arr
will (предполагая обычно подразумеваемую реализацию «массива», т. Е. Элементы данных, Размещенные в непрерывном блоке) имеют пространственную локальность по отношению друг к другу. Вы не знаете (по крайней мере, из всего, что указано в вопросе), где i
будет расположено относительно arr
, поэтому вы не можете сказать, проявляют ли эти объекты пространственную локальность по отношению друг к другу или нет.
Операторы доступа i
и arr[i]
выполняются один за другим, поэтому они демонстрируют временную локальность, предполагая, что работа, которую вы выполняете над каждым элементом массива, дешевая; при этом предположении ссылки на различные элементы arr
последующих итераций также будут демонстрировать временную локальность. Однако, если для каждой итерации цикла вы вызываете какую-либо функцию, которая занимает много времени между доступом i
и arr
, больше не будет верно, что эти обращения демонстрируют временную локальность.