distribuciones tipo fase en memorias rram con rgauss.inf.um.es/umur/xjurponencias/poster/p5.pdf ·...

1
DISTRIBUCIONES TIPO FASE EN MEMORIAS RRAM CON R C. Acal, J.E. Ruiz-Castro, A. M. Aguilera Departamento de Estadística e Investigación Operativa. Universidad de Granada. Facultad de Ciencias. Avd. Fuentenueva s/n, 18071 GRANADA, España. ([email protected], [email protected], [email protected]) RESUMEN Y OBJETIVOS DEL ESTUDIO En las últimas décadas, las Resistive Random Access Memories (RRAM) han sido propuestas como unas de las más firmes candidatas a sustituir la actual tecnología Flash en el mercado de memorias no volátiles, gracias a que tienen unas excelentes propiedades físicas y ofrecen magníficas posibilidades de fabricación en la tecnología CMOS actual. La naturaleza estocástica de los procesos físicos que hay detrás del funcionamiento de las memorias resistivas, hace que la variabilidad sea uno de los temas a tratar desde el punto de vista de la industria antes de la comercialización e industrialización de estos aparatos. Hoy en día, y con el fin de extraer información sobre este tema, la industria electrónica hace uso de la distribución Weibull para modelizar los puntos de voltaje reset y set de datos experimentales medidos en las RRAMs. Sin embargo, en muchas ocasiones el ajuste que se obtiene con la Weibull no es del todo preciso y en consecuencia, hay que plantearse un enfoque diferente. Bajo este contexto, se ha desarrollado un nuevo análisis de fiabilidad basado en las distribuciones Tipo Fase (PHD), el cual proporciona un mejor ajuste y una mejor interpretación de los parámetros que arrojará nueva luz sobre el problema de la variabilidad y la física detrás del funcionamiento de RRAMs. Todos los cálculos, ajustes y gráficos se han obtenido mediante el paquete estadístico R utilizando funciones propias que han implementado los autores del trabajo. CURVAS RESET num=c(5,1970) set.seed(5);v=abs(rnorm(100));i=abs(rnorm(100)) plot(v,i,type="n",xlab=expression(V[app](V)),ylab="Current(A)",ylim=c(-18,-6)) legend("topleft",c("Reset Voltage"),pch=c(16),col=c("red")) for(j in 1:length(num)){ c<- read.table(paste(dir,paste("Cycle_R",num[j],".txt",sep=""),sep="/")) v=abs(c$V1);i=log(c$V2) pp=sapply(2:length(c$V2), function(j)(c$V2[(j-1)]-c$V2[j])>=(0.7*c$V2[(j-1)])) p=min(which(pp==TRUE)) lines(v,i,type="l",col="green",lwd=1.5); points(v[p],i[p],col="red",lwd=4)} arrows(0.5, -12, 1.15, -8, length=0.1); arrows(0.85, -12, 1.8, -8.25, length=0.1) text(0.75,-12.5,"Reset Voltage") LECTURA PUNTOS RESET #-> DIRECTORIO QUE CONTIENE LOS ENSAYOS dir=“DIRECTORIO DONDE SE ENCUENTRE LOS DATOS" #-> Vr,Ir e Tr VECTORES DONDE GUARDAREMOS LOS PUNTOS CRÍTICOS Vr=vector();Ir=vector();Tr=vector() #-> n NÚMERO DE CICLOS REGISTRADOS EN EL LABORATORIO n=2818 #->FUNCIÓN PARA DETERMINAR LOS PUNTOS RESET for(i in 1:n){ file <- read.table(paste(dir,paste("Cycle_R",i,".txt",sep=""),sep="/")) file$V1=abs(file$V1) vol=file$V1;int=file$V2 a=sapply(2:length(int), function(j)(int[(j-1)]-int[j])>=(0.7*int[(j-1)])) punto=min(which(a==TRUE)) Vr=c(Vr,file[punto,1]); Ir=c(Ir,file[punto,2]); Tr=c(Tr,file[punto,3]) } reset=matrix(c(Vr,Ir,Tr),ncol=3); reset=as.data.frame(reset);names(reset)=c("Vreset","Ireset","Treset") #-> ELIMINAMOS AQUELLOS CICLOS DONDE NO SE PRODUCEN PUNTOS RESET na=which(is.na(Vr));reset=reset[-na,] #-> ELIMINAMOS LOS PUNTOS ANÓMALOS ENCONTRADOS eli=which(log(reset$Treset)<0);reset=reset[-eli,] AJUSTE WEIBULL mc=function(d,fig=TRUE,tipo){ datos=sort(d) x=log(datos); pi=(1:length(x)-0.5)/length(x); y=log(-log(1-pi)) ## NUBE DE PUNTOS recta=lm(y~x) b=recta$coefficients[1] ## TERMINO INDEPENDIENTE DE LA RECTA y=ax+b a=recta$coefficients[2] ## PENDIENTE DE LA RECTA y=ax+b correlacion=round(summary(recta)$r.squared,2) ## BONDAD DEL AJUSTE beta=a; lambda=exp(b/beta) ## ESTIMACION PARAMETROS WEIBULL #-> REPRESENTACIÓN GRÁFICA if(fig==TRUE){ if(tipo=="RESET"){ plot(x,y,xlab=expression(Ln(V[reset](V))),mgp = c(1.75, 0.5, 0),tck=0.025, ylab=expression(Ln(-Ln(1-F[reset]))),main="Ajuste por Weibull",col="red") } if(tipo=="SET"){ plot(x,y,xlab=expression(Ln(V[set](V))),mgp = c(1.75, 0.5, 0),tck=0.025, ylab=expression(Ln(-Ln(1-F[set]))),main="Ajuste por Weibull",col="red") } abline(recta,col="blue",lwd=2) axis(side=4,labels=F,tick=TRUE,tck=0.02); axis(side=3,labels=F,tick=TRUE,tck=0.02) abline(b,beta-0.1*beta,col="green",lwd=2);abline(b,beta+0.1*beta,col="black",lwd=2) #-> PARA LA LEYENDA beta1=round(beta-0.1*beta,3);beta2=round(beta+0.1*beta,3);beta_b=round(beta,3) v_63=round(1/lambda,3) legend("bottomright",c(expression("Experimental Data"), substitute(paste("Fitting (", beta[V], "=",b,",",V[63~'%'],"=",l,")"),list(b=beta_b,l=v_63)), substitute(paste(beta[V],"=",b1),list(b1=beta1)), substitute(paste(beta[V],"=",b2),list(b2=beta2)) ), lty=c(0,1,1,1),pch=c(1,NA,NA,NA),col=c("red","blue","green","black"),box.lty=0) } #-> SALIDA DE LA FUNCIÓN (RESULTADOS) resultado=data.frame(correlacion,beta,lambda,b,a) names(resultado)=c("Coef.Corr","beta","lambda","b: y=ax+b","a: y=ax+b") return(resultado) } AJUSTE ERLANG library(expm); par(cex=1) phd=function(d,tipo,fases){ w=mc(d,fig=F);w=as.numeric(w) ## AJUSTE WEIBULL CON EL FIN DE COMPARAR datos=sort(d) x=log(datos); pi=(1:length(x)-0.5)/length(x); y=log(-log(1-pi)) #-> REPRESENTACIÓN GRÁFICA if(tipo=="RESET"){ plot(exp(x),exp(y),xlab=expression(V[reset](V)),mgp = c(1.75, 0.5, 0),tck=0.025, ylab=expression(-Ln(1-F[reset])),main="Ajuste Weibull vs PHD",col="red") } if(tipo=="SET"){ plot(exp(x),exp(y),xlab=expression(V[set](V)),mgp = c(1.75, 0.5, 0),tck=0.025, ylab=expression(-Ln(1-F[set])),main="Ajuste Weibull vs PHD",col="red") } #-> REPRESENTAMOS AJUSTE WEIBULL (r=x*beta+log(lambda)*beta) r=x*w[2]+w[4] r1=x*(w[2]-0.1*w[2])+w[4]; r2=x*(w[2]+0.1*w[2])+w[4] points(exp(x),exp(r),lwd=2,col="cyan",type="l") points(exp(x),exp(r1),lwd=2,col="green",type="l") points(exp(x),exp(r2),lwd=2,col="black",type="l") axis(side=4,labels=F,tick=TRUE,tck=0.02); axis(side=3,labels=F,tick=TRUE,tck=0.02) #-> REPRESENTAMOS AJUSTE ERLANG CON ESTRUCTURA PHD f=fases #NUMERO DE ESTADOS FIJOS a=f/mean(datos) #ESTIMACION M.V. DEL PARAMETRO DE LA MATRIZ T vpi=c(1,rep(0,f-1)); uno=rep(1,f) #VECTOR ALPHA Y VECTOR E D0=diag(1,f) #ESTIMACION MATRIZ T diag(D0)=-a; for(i in 1:f-1){ D0[i,i+1]=a} kk=vector() # -ln(R(t)) for(i in 1:length(datos)){ kk[i]=-log(vpi%*%expm(D0*datos[i])%*%uno) } points(datos,kk,type="l",col="blue",lwd=2) #->PARA LA LEYENDA EXTRAPOLAMOS EL CODIGO EMPLEADO UTILIZADO EN WEIBULL } ASPECTOS TEORICOS Funciones y distribuciones usuales en estudios de fiabilidad. Función de distribución. F(t) Función de fiabilidad. R(t)=1-F(t) Análisis gráfico. Distribuciones Tipo Fase EXPRESIONES DISTRIBUCIÓN WEIBULL = {− ) ; ≥; ,> DISTRIBUCIONES TIPO FASE = (); ≥ CASO PARTICULAR DE LA ERLANG = (, , … , ) , = F. FIABILIDAD rt=function(d,tipo,fases){ w=mc(d,fig=F);w=as.numeric(w) datos=sort(d) pi=(1:length(datos)-0.5)/length(datos) #-> CALCULO DE LA R(t) DE LA WEIBULL beta=w[2];lambda=w[3] w=exp(-(lambda *datos)^beta) #R(t) WEIBULL #-> CALCULO DE LA R(t) DE LA ERLANG f=fases #NUMERO DE ESTADOS FIJOS a=f/mean(datos) #PARAMETRO DE LA MATRIZ T vpi=c(1,rep(0,f-1)) uno=rep(1,f); D0=diag(1,f) #VECTOR e Y ALPHA diag(D0)=-a #MATRIZ T for(i in 1:f-1){ D0[i,i+1]=a} ph=vector() #R(t) PHD for(i in 1:length(datos)){ ph[i]=vpi%*%expm(D0*datos[i])%*%uno} #-> REPRESENTACION GRÁFICA if(tipo=="RESET"){ plot(datos,1-pi,type="l",xlab=expression(V[reset](V)), kkkylab=expression(R(V[reset](V))),main="Comparacion kkkR(T)",mgp = c(1.75, 0.5, 0),tck=0.025) } if(tipo=="SET"){ plot(datos,1-pi,type="l",xlab=expression(V[set](V)), kkkylab=expression(R(V[set](V))),main="Comparacion kkkR(T)",mgp = c(1.75, 0.5, 0),tck=0.025) } points(datos,w,type="l",col="blue",lwd=2) points(datos,ph,type="l",col="red",lwd=2) #-> PARA LA LEYENDA COPIAMOS EL CODIGO DEL AJUSTE ERLANG } MTM2017-87708-P FEDER C. Acal, J.E. Ruiz-Castro, A.M. Aguilera, F. Jimenez-Molinos, J.B. Roldan, Phase-Type distributions for studying variability in resistive memories, Journal of Computational and Applied Mathematics. 345 (2019) 23-32. Keen, Kevin J. (2010) Graphics for Statistics and Data Analysis with R. Boca Raton, FL: Chapman & Hall/CRC. Sarkar, Deepayan. (2008) Lattice: Multivariate Data Visualization with R. New York: Springer.

Upload: others

Post on 19-Oct-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DISTRIBUCIONES TIPO FASE EN MEMORIAS RRAM CON Rgauss.inf.um.es/umur/xjurponencias/poster/p5.pdf · La naturaleza estocástica de los procesos físicos que hay detrás del funcionamiento

DISTRIBUCIONES TIPO FASE EN MEMORIAS RRAM CON R

C. Acal, J.E. Ruiz-Castro, A. M. AguileraDepartamento de Estadística e Investigación Operativa. Universidad de Granada. Facultad de Ciencias.

Avd. Fuentenueva s/n, 18071 GRANADA, España. ([email protected], [email protected], [email protected])

RESUMEN Y OBJETIVOS DEL ESTUDIOEn las últimas décadas, las Resistive Random Access Memories (RRAM) han sido propuestas como unas de las más firmes candidatas a sustituir la actual tecnología Flash en elmercado de memorias no volátiles, gracias a que tienen unas excelentes propiedades físicas y ofrecen magníficas posibilidades de fabricación en la tecnología CMOS actual. Lanaturaleza estocástica de los procesos físicos que hay detrás del funcionamiento de las memorias resistivas, hace que la variabilidad sea uno de los temas a tratar desde elpunto de vista de la industria antes de la comercialización e industrialización de estos aparatos. Hoy en día, y con el fin de extraer información sobre este tema, la industriaelectrónica hace uso de la distribución Weibull para modelizar los puntos de voltaje reset y set de datos experimentales medidos en las RRAMs. Sin embargo, en muchasocasiones el ajuste que se obtiene con la Weibull no es del todo preciso y en consecuencia, hay que plantearse un enfoque diferente. Bajo este contexto, se ha desarrollado unnuevo análisis de fiabilidad basado en las distribuciones Tipo Fase (PHD), el cual proporciona un mejor ajuste y una mejor interpretación de los parámetros que arrojará nuevaluz sobre el problema de la variabilidad y la física detrás del funcionamiento de RRAMs. Todos los cálculos, ajustes y gráficos se han obtenido mediante el paquete estadístico Rutilizando funciones propias que han implementado los autores del trabajo.

CURVAS RESETnum=c(5,1970)set.seed(5);v=abs(rnorm(100));i=abs(rnorm(100))plot(v,i,type="n",xlab=expression(V[app](V)),ylab="Current(A)",ylim=c(-18,-6))legend("topleft",c("Reset Voltage"),pch=c(16),col=c("red"))

for(j in 1:length(num)){c<- read.table(paste(dir,paste("Cycle_R",num[j],".txt",sep=""),sep="/"))v=abs(c$V1);i=log(c$V2)pp=sapply(2:length(c$V2), function(j)(c$V2[(j-1)]-c$V2[j])>=(0.7*c$V2[(j-1)]))p=min(which(pp==TRUE))lines(v,i,type="l",col="green",lwd=1.5); points(v[p],i[p],col="red",lwd=4)}

arrows(0.5, -12, 1.15, -8, length=0.1); arrows(0.85, -12, 1.8, -8.25, length=0.1)text(0.75,-12.5,"Reset Voltage")

LECTURA PUNTOS RESET#-> DIRECTORIO QUE CONTIENE LOS ENSAYOSdir=“DIRECTORIO DONDE SE ENCUENTRE LOS DATOS"

#-> Vr,Ir e Tr VECTORES DONDE GUARDAREMOS LOS PUNTOS CRÍTICOSVr=vector();Ir=vector();Tr=vector()

#-> n NÚMERO DE CICLOS REGISTRADOS EN EL LABORATORIOn=2818

#->FUNCIÓN PARA DETERMINAR LOS PUNTOS RESETfor(i in 1:n){file <- read.table(paste(dir,paste("Cycle_R",i,".txt",sep=""),sep="/"))

file$V1=abs(file$V1)vol=file$V1;int=file$V2a=sapply(2:length(int), function(j)(int[(j-1)]-int[j])>=(0.7*int[(j-1)]))punto=min(which(a==TRUE))

Vr=c(Vr,file[punto,1]); Ir=c(Ir,file[punto,2]); Tr=c(Tr,file[punto,3])}reset=matrix(c(Vr,Ir,Tr),ncol=3);reset=as.data.frame(reset);names(reset)=c("Vreset","Ireset","Treset")

#-> ELIMINAMOS AQUELLOS CICLOS DONDE NO SE PRODUCEN PUNTOS RESETna=which(is.na(Vr));reset=reset[-na,]

#-> ELIMINAMOS LOS PUNTOS ANÓMALOS ENCONTRADOSeli=which(log(reset$Treset)<0);reset=reset[-eli,]

AJUSTE WEIBULLmc=function(d,fig=TRUE,tipo){

datos=sort(d)x=log(datos); pi=(1:length(x)-0.5)/length(x); y=log(-log(1-pi)) ## NUBE DE PUNTOS

recta=lm(y~x)b=recta$coefficients[1] ## TERMINO INDEPENDIENTE DE LA RECTA y=ax+ba=recta$coefficients[2] ## PENDIENTE DE LA RECTA y=ax+bcorrelacion=round(summary(recta)$r.squared,2) ## BONDAD DEL AJUSTEbeta=a; lambda=exp(b/beta) ## ESTIMACION PARAMETROS WEIBULL

#-> REPRESENTACIÓN GRÁFICAif(fig==TRUE){if(tipo=="RESET"){plot(x,y,xlab=expression(Ln(V[reset](V))),mgp = c(1.75, 0.5, 0),tck=0.025,

ylab=expression(Ln(-Ln(1-F[reset]))),main="Ajuste por Weibull",col="red") }if(tipo=="SET"){plot(x,y,xlab=expression(Ln(V[set](V))),mgp = c(1.75, 0.5, 0),tck=0.025,

ylab=expression(Ln(-Ln(1-F[set]))),main="Ajuste por Weibull",col="red") }

abline(recta,col="blue",lwd=2)axis(side=4,labels=F,tick=TRUE,tck=0.02); axis(side=3,labels=F,tick=TRUE,tck=0.02)abline(b,beta-0.1*beta,col="green",lwd=2);abline(b,beta+0.1*beta,col="black",lwd=2)

#-> PARA LA LEYENDAbeta1=round(beta-0.1*beta,3);beta2=round(beta+0.1*beta,3);beta_b=round(beta,3)v_63=round(1/lambda,3)legend("bottomright",c(expression("Experimental Data"),

substitute(paste("Fitting (", beta[V], "=",b,",",V[63~'%'],"=",l,")"),list(b=beta_b,l=v_63)),substitute(paste(beta[V],"=",b1),list(b1=beta1)),substitute(paste(beta[V],"=",b2),list(b2=beta2)) ),lty=c(0,1,1,1),pch=c(1,NA,NA,NA),col=c("red","blue","green","black"),box.lty=0) }

#-> SALIDA DE LA FUNCIÓN (RESULTADOS)resultado=data.frame(correlacion,beta,lambda,b,a)names(resultado)=c("Coef.Corr","beta","lambda","b: y=ax+b","a: y=ax+b")return(resultado) }

AJUSTE ERLANG

library(expm); par(cex=1)

phd=function(d,tipo,fases){w=mc(d,fig=F);w=as.numeric(w) ## AJUSTE WEIBULL CON EL FIN DE COMPARARdatos=sort(d)x=log(datos); pi=(1:length(x)-0.5)/length(x); y=log(-log(1-pi))

#-> REPRESENTACIÓN GRÁFICAif(tipo=="RESET"){plot(exp(x),exp(y),xlab=expression(V[reset](V)),mgp = c(1.75, 0.5, 0),tck=0.025,

ylab=expression(-Ln(1-F[reset])),main="Ajuste Weibull vs PHD",col="red") }if(tipo=="SET"){plot(exp(x),exp(y),xlab=expression(V[set](V)),mgp = c(1.75, 0.5, 0),tck=0.025,

ylab=expression(-Ln(1-F[set])),main="Ajuste Weibull vs PHD",col="red") }

#-> REPRESENTAMOS AJUSTE WEIBULL (r=x*beta+log(lambda)*beta)r=x*w[2]+w[4]r1=x*(w[2]-0.1*w[2])+w[4]; r2=x*(w[2]+0.1*w[2])+w[4]

points(exp(x),exp(r),lwd=2,col="cyan",type="l")points(exp(x),exp(r1),lwd=2,col="green",type="l")points(exp(x),exp(r2),lwd=2,col="black",type="l")axis(side=4,labels=F,tick=TRUE,tck=0.02); axis(side=3,labels=F,tick=TRUE,tck=0.02)

#-> REPRESENTAMOS AJUSTE ERLANG CON ESTRUCTURA PHDf=fases #NUMERO DE ESTADOS FIJOSa=f/mean(datos) #ESTIMACION M.V. DEL PARAMETRO DE LA MATRIZ Tvpi=c(1,rep(0,f-1)); uno=rep(1,f) #VECTOR ALPHA Y VECTOR ED0=diag(1,f) #ESTIMACION MATRIZ T

diag(D0)=-a; for(i in 1:f-1){ D0[i,i+1]=a}kk=vector() # -ln(R(t))

for(i in 1:length(datos)){kk[i]=-log(vpi%*%expm(D0*datos[i])%*%uno) }

points(datos,kk,type="l",col="blue",lwd=2)

#->PARA LA LEYENDA EXTRAPOLAMOS EL CODIGO EMPLEADO UTILIZADO EN WEIBULL}

ASPECTOS TEORICOS• Funciones y distribuciones usuales en

estudios de fiabilidad.• Función de distribución. F(t)• Función de fiabilidad. R(t)=1-F(t)

• Análisis gráfico.• Distribuciones Tipo Fase

EXPRESIONES

DISTRIBUCIÓN WEIBULL

𝑹 𝒕 = 𝐞𝐱𝐩{− 𝝀𝒕)𝜷 ; 𝒕 ≥ 𝟎; 𝝀, 𝜷 > 𝟎

DISTRIBUCIONES TIPO FASE

𝑹 𝒕 = 𝛂𝐞𝐱𝐩(𝑻𝒕)𝒆; 𝒕 ≥ 𝟎

CASO PARTICULAR DE LA ERLANG

𝛼 = (𝟏, 𝟎, … , 𝟎) , 𝑻 =

−𝝀 𝝀𝟎 −𝝀

𝟎 𝟎 ⋯𝝀 𝟎 ⋯

⋮ ⋮𝟎 ⋯𝟎 ⋯

⋱ ⋱ ⋮𝟎 −𝝀 𝝀⋯ 𝟎 −𝝀

F. FIABILIDAD

rt=function(d,tipo,fases){

w=mc(d,fig=F);w=as.numeric(w)datos=sort(d)pi=(1:length(datos)-0.5)/length(datos)

#-> CALCULO DE LA R(t) DE LA WEIBULLbeta=w[2];lambda=w[3] w=exp(-(lambda *datos)^beta) #R(t) WEIBULL

#-> CALCULO DE LA R(t) DE LA ERLANGf=fases #NUMERO DE ESTADOS FIJOSa=f/mean(datos) #PARAMETRO DE LA MATRIZ Tvpi=c(1,rep(0,f-1))uno=rep(1,f); D0=diag(1,f) #VECTOR e Y ALPHAdiag(D0)=-a #MATRIZ T

for(i in 1:f-1){ D0[i,i+1]=a}ph=vector() #R(t) PHD

for(i in 1:length(datos)){ph[i]=vpi%*%expm(D0*datos[i])%*%uno}

#-> REPRESENTACION GRÁFICAif(tipo=="RESET"){

plot(datos,1-pi,type="l",xlab=expression(V[reset](V)), kkkylab=expression(R(V[reset](V))),main="ComparacionkkkR(T)",mgp = c(1.75, 0.5, 0),tck=0.025) }if(tipo=="SET"){

plot(datos,1-pi,type="l",xlab=expression(V[set](V)), kkkylab=expression(R(V[set](V))),main="ComparacionkkkR(T)",mgp = c(1.75, 0.5, 0),tck=0.025) }

points(datos,w,type="l",col="blue",lwd=2)points(datos,ph,type="l",col="red",lwd=2)

#-> PARA LA LEYENDA COPIAMOS EL CODIGO DEL AJUSTE ERLANG}

MTM2017-87708-PFEDER

• C. Acal, J.E. Ruiz-Castro, A.M. Aguilera, F. Jimenez-Molinos, J.B. Roldan, Phase-Type distributions for studying variability in resistive memories, Journal of Computational and Applied Mathematics. 345 (2019) 23-32.

• Keen, Kevin J. (2010) Graphics for Statistics and Data Analysis with R. Boca Raton, FL: Chapman & Hall/CRC. • Sarkar, Deepayan. (2008) Lattice: Multivariate Data Visualization with R. New York: Springer.