Ver Mensaje Individual
  #25  
Antiguo 30-08-2008
HySTD HySTD is offline
Miembro
 
Registrado: sep 2006
Posts: 15
Reputación: 0
HySTD Va por buen camino
Cita:
no se que es CPI
CPI = Ciclos por instrucción.

Cita:
ni tampoco sabia q podia "fallar" el acceso a memoria
Pues si, de hecho se está constantemente fallando entre un nivel y otro de la jerarquía de memoria.

Cita:
¿podrias poner un ejemplo? aunque fuese en c.
Por supuesto, o en Delphi también:

for i:=0 to 9 do begin
v[i]:=v[i]+1;
end;

en la primera referencia al primer elemento del vector "v" (v[0]), el procesador accede a caché, y el dato no se encuentra en ella, asi que se produce un fallo "forzoso". Debe acceder a RAM para buscarlo (Entonces aumenta el tiempo de acceso --> hay una penalización por fallo), supuesto el caso que alli se encuentra, se trae un bloque completo a caché, esto es, se traerá todos los elementos del vector a ésta. Cuando en el bucle se acceda a v[1], el elemento ya estará en caché con el consecuente resultado de una disminución de tiempo de acceso que si tuviese que ir a RAM. Del mismo modo ocurriría entre RAM y Disco; de hecho cuando ejecutas un programa (almacenado en disco), Tras la llamada a CreateProcess (para Windows), se logra cargar en RAM debido a los fallos: Si no se encuentra un dato requerido o solicitado por la CPU se busca en el siguiente nivel de la jerarquía, y se lo trae a un nivel más cercano (rápido) para la CPU, con una traducción distinta de las direcciones.

Bueno espero, con este hilo en general, haber aclarado algunos conceptos útiles para la programación a bajo nivel.

Un saludo.

Última edición por HySTD fecha: 30-08-2008 a las 21:29:19.
Responder Con Cita