Gracias por la aclaracion, solamente era eso, si lo que dices tiene sentido ya me extraña, solamente se pasan los datos pero no se pueden leer.
Si yo tengo lo siguiente.
prefetchnta (%rsp, %r8)
movb (%rsp, %r8), %r14b
Se supone que la CPU usaria la cache, pero eso en mi caso funcionaria? Bueno es que no quiero subir el codigo, pero eso en realidad ayudaria mucho.
Un saludo.
Modifico:
offset es un array de unos 200 bytes, lo que tengo que hacer es pasar un byte de un puntero y luego sumarlo offset y pasar el valor.
Ejemplo:
offset = 0x6000 r14b = 0x10
r14b * 1 + offset = 0x6010
Y pasaria el valor de la posicion 0x6010, pero puedo aplicar la cache para algo asi?
Bueno tambien e estado leyendo que prefetchtna depende de la CPU y de la implementacion carga como minimo unos 32 bytes, eso pone en el manual.
A donde pretendo llegar es a esto, como dije anteriormente carga unos 32 bytes, entonces esto siguiente tendria que funcionar no?
prefetchnta (%rsp, %r8)
movb (%rsp, %r8), %r14b
movb 1(%rsp, %r8), %r14b
movb 2(%rsp, %r8), %r14b
Sabrias decirme de cuanto seria la optimizacion?
Bueno modifico una vez mas para decir que ya se como implementarlo, segun estado leyendo un athlon 64 o un opteron carga en la cache unos 64 bytes, si no entendi mal, solamente tengo que usar prefetch unas cuantas veces para cargar el array en la L1 de la cache, supongo que asi sera mas rapido ya que tengo que repetir eso unas 50 veces en un loop, lo que no se como comprobarlo.
Bueno no me enrollo mas, gracias por tu tiempo Amadeo Magnus.