Práctica Memoria Cache: cache Unificado = un solo cache para datos e instrucciones=> se generan conflictos estructurales AMAT IF =t aciertoTasa fallo⋅t fallo AMAT MEM =1 AMAT IF => se agrega un ciclo por cada acceso a memoria (conflicto estructural) AMAT = AMAT IF fracls⋅AMAT MEM 1 frec ls cache Harvard=Cache dividido, datos e instrucciones elimina conflictos estructurales AMAT MEM =t acierto , INST Tasa fallo , INST⋅t fallo , INST AMAT MEM =t acierto , DATOS Tasa fallo , DATOS⋅t fallo , DATOS AMAT = AMAT IF fracls⋅AMAT MEM 1 frec ls CPI =CPI base AMAT IF – t acierto , INST frecls∗ AMAT MEM – t acierto , DATOS Ejercicios: 1Se tiene un benchmark con 30% load/store, originalmente se había calculado un CPI de 3, sin embargo se habia olvidado considerar una memoria real que no contiene toda la información. a) t acierto=2[ciclos ], t fallo=200 [ciclos] y la frecuencia de fallo es de 5% (cache unificada) i) Calcule AMAT ii) Calcule nuevo CPI b) Se tiene el mismo caso anterior pero ahora se considera cache Harvard lo que da una taza de error de 10% en datos y 2% en instrucciones. i) Calcule AMAT ii) Calcule nuevo CPI 2En el procesador anterior se decide utilizar una estructura Harvard. Sin embargo unos ingenieros lograron optimizar el uso de la memoria cache de manera que el tiempo acierto se reduce a 1 ciclo para instrucciones, sacrificando en fallo de datos que aumenta a 250 ciclos. Paralelamente los ingenieros unificadores lograron disminuir la frecuencia de fallo a la mitad (2.5%) para la arquitectura unificada incrementando en 2 ciclos el tiempo de acierto y el tiempo de fallo. Que implementación conviene? 3Obtenga la frecuencia de fallos necesaria en arquitectura unificada para obtener el mismo CPI que con arquitectura Harvard, considere que ambas arquitecturas tienen los mismos tiempos de acierto y de fallo (pero distintas tazas). Soluciones: 1ta=2;tf=200; Tfu=5/100; %Taza fallo unificado Tfd=10/100; %Taza fallo datos Tfi=2/100; %Taza fallo instrucciones fls=30/100; %frecuencia load y store CPIb=3; %unificado: AMAT_IFu=ta+Tfu*tf; AMAT_MEMu=1+AMAT_IFu; disp('Pregunta 1:') disp('---unificado---') AMATu=(AMAT_IFu+fls*AMAT_MEMu)/(1+fls) CPIu=CPIb+(AMAT_IFu-ta)+fls*(AMAT_MEMu-ta) %harvard: AMAT_IFh=ta+Tfi*tf; AMAT_MEMh=ta+Tfd*tf; disp('---Harvard---') AMATh=(AMAT_IFh+fls*AMAT_MEMh)/(1+fls) CPIh=CPIb+(AMAT_IFh-ta)+fls*(AMAT_MEMh-ta) 2- tau=4;tai=1;tad=2; tfu=202;tfi=200;tfd=250; Tfu=2.5/100; %Taza fallo unificado Tfd=10/100; %Taza fallo datos Tfi=2/100; %Taza fallo instrucciones fls=30/100; %frecuencia load y store CPIb=3; %unificado: AMAT_IFu=tau+Tfu*tfu; AMAT_MEMu=1+AMAT_IFu; AMATu=(AMAT_IFu+fls*AMAT_MEMu)/(1+fls); CPIun=CPIb+(AMAT_IFu-tau)+fls*(AMAT_MEMu-tau); %harvard: AMAT_IFh=tai+Tfi*tfi; AMAT_MEMh=tad+Tfd*tfd; AMATh=(AMAT_IFh+fls*AMAT_MEMh)/(1+fls); CPIhn=CPIb+(AMAT_IFh-ta)+fls*(AMAT_MEMh-ta); disp('Pregunta 2:') if(CPIun<min([CPIu CPIh CPIhn])) disp('La nueva implementación de la cache unificada es la mejor') elseif (CPIhn<min([CPIu CPIh CPIun])) disp('La nueva implementación de la cache Harvard es la mejor') elseif (CPIh<min([CPIu CPIhn CPIun])) disp('La primera implementación de la cache Harvard es la mejor') elseif (CPIu<min([CPIh CPIhn CPIun])) disp('La primera implementación de la cache Unificada es la mejor') end 3) CPI base AMAT IF , U – t acierto , U f ls⋅ AMAT MEM , U – t acierto, U =CPI base AMAT IF , M –t acierto , M f ls⋅ AMAT MEM , M – t acierto , M t aciertoT fu⋅t falla −t acierto f ls⋅t aciertoT fu⋅t falla −t acierto 1=t aciertoT fhI⋅t falla −t acierto f ls⋅t acierto T fhM⋅t falla −t acierto T fu⋅t falla f ls⋅T fu⋅t falla1=T fhI⋅t falla f ls⋅T fhM⋅t falla T fu⋅t falla f ls⋅T fu⋅ f ls⋅ f ls =t falla⋅T fhi f ls⋅T fhM T fu⋅t falla f ls 1=t falla⋅T T fu = fhi f ls⋅T fhM − f ls t falla⋅T fhi f ls⋅T fhM − f ls t falla f ls 1