Таким образом, вопрос был
, быстрее ли извлечь данные, которые находятся близко к ранее затронутой области, чем извлекать данные, которые находятся в совершенно другом месте
ответ - да, это быстрее.
TL; DR: DRAM имеет буфер (кеш, если хотите, хотя на самом деле это не кеш)
И причина тому - DRAMworkings.
- A SIMM - это 1 или 2 ранга, которые состоят из нескольких микросхем DRAM ( IC ).
Каждый IC состоит из нескольких банков (строки байтов + декодер строк / столбцов + буфер строк)
Если IC нумеруются от 0 до K , банки от 0 до M и строки от 0 до N ;
, то строки( 0 , м , n ), ( 1 , м , n ) ... ( K , m , n ) составляют страницу памяти (данные последовательных адресов).
(общий случай) Если у данного SIMM есть 8 микросхем на ранг, а в банке 1024 столбца (каждый по одному байту), размер страницы памяти (или всей буферизованной памяти) составляет 8 КБ.
С учетом вышесказанного, если вы обращаетесь к адресу, который находится на той же странице памяти, что и последний адрес, который был запрошен для этого же банка, будет задействован только декодер столбцов, что примерно в 2 раза быстрее, чем когдаадрес находится на другой странице.Примечание: разница в 2 раза относится только к DRAM и не относится к общему времени, чтобы добраться до ЦП, которое все равно будет> 100 мс.
Есть много деталей, которые нужно добавить, но яЯ совсем не умею это делать.
PS Эта тема не обсуждается широко, и все вышеперечисленное является лишь очень кратким обзором того, что имеет смысл для меня при изучении не очень хорошо написанной информации.