Localidad Temporal vs Espacial con matrices


Estoy un poco confundido sobre los significados de la localidad espacial y temporal. Espero que al mirarlo con un ejemplo de matriz me ayude a entenderlo mejor.

En un ejemplo como este: A [0] [1], A[0] [2], A[0] [3].... etc

¿Esto demuestra la localidad temporal? Veo que se accede a la misma fila muchas veces, pero con diferentes desplazamientos... ¿significa esto que se accede a una dirección diferente?

También, estoy en lo cierto al decir que un ejemplo como este: A [1], A[2], A[3]... etc

Demuestra la localidad espacial?

Espero que alguna aclaración sobre cómo funcionan las localidades temporales y espaciales en código real me ayude a entenderlas mejor.

Author: Peter Cordes, 2013-04-30

4 answers

La localidad espacial y temporal describen dos características diferentes de cómo los programas acceden a los datos (o instrucciones). Wikipedia tiene un buen artículo sobre localidad de referencia .

Se dice que una secuencia de referencias tiene spatial localidad si las cosas a las que se hace referencia cerca en el tiempo también están cerca en el espacio (direcciones de memoria cercanas, sectores cercanos en un disco, etc.). Se dice que una secuencia tiene temporal localidad si los accesos a la misma cosa están agrupados en el tiempo.

Si a el programa accede a cada elemento en una matriz grande y lo lee una vez y luego pasa al siguiente elemento y no repite un acceso a cualquier ubicación dada hasta que haya tocado cualquier otra ubicación, entonces es un caso claro de localidad espacial pero no localidad temporal. Por otro lado, si un programa pasa tiempo accediendo repetidamente a un subconjunto aleatorio de las ubicaciones en la matriz antes de pasar a otro subconjunto aleatorio se dice que tiene temporal localidad pero no localidad espacial. Un programa bien escrito tendrá estructuras de datos que agrupan cosas a las que se accede juntas, asegurando así localidad espacial. Si es probable que el programa acceda a B poco después de que acceda a A, entonces ambos A y B deben asignarse uno cerca del otro.

Su primer ejemplo

A[0][1], A[0][2], A[0][3]

Muestra localidad espacial, las cosas a las que se accede cerca en el tiempo están cerca en el espacio. No muestra localidad temporal porque no has accedido a la misma cosa más de una vez.

Su segundo ejemplo

A[1], A[2], A[3]

También muestra la localidad espacial, pero no la localidad temporal.

Aquí hay un ejemplo que muestra temporal localidad

A[1], A[2000], A[1], A[1], A[2000], A[30], A[30], A[2000], A[30], A[2000], A[30], A[4], A[4]
 60
Author: amdn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-15 19:00:00

En palabras simples,

Localidad temporal: El concepto de que un recurso al que se hace referencia en un punto con el tiempo se hará referencia de nuevo en algún momento en el futuro cercano.

Localidad espacial: El concepto de que la probabilidad de referenciar un recurso es más alto si un recurso cercano se acaba de referenciar.

Fuente(s): Wikipedia

 12
Author: Chinmayee Shenvi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-17 10:57:22

Aquí hay un ejemplo de código con localidad:

var sum = 0;
for (i = 0; i < n; i++){
  for(j=0; j < m ; j++){
    sum += a[i][j];
    }
}
return sum;
  • Existe localidad temporal porque la suma se accede con frecuencia en el bucle. La localidad temporal se explota manteniendo valores de instrucciones y datos usados recientemente en la memoria caché y explotando una jerarquía de caché. O incluso en un registro, no en la memoria en absoluto.

  • Existe localidad espacial porque tenemos una matriz " a " y nos acceda a cada elemento de la matriz en orden. Espacial locality se explota generalmente mediante el uso de bloques de caché más grandes y mediante la incorporación de mecanismos de prefetching (obtención de elementos de uso anticipado) en la lógica de control de caché.

 2
Author: superrcoop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-26 01:41:00

La localidad temporal es el caso especial de la localidad espacial .

 0
Author: laura,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-19 07:37:12