12.07.2015 Views

Periféricos de almacenamiento

Periféricos de almacenamiento

Periféricos de almacenamiento

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

2.16 Tratamiento <strong>de</strong> errores 41efectos tales que unos cancelen a otros. Sin embargo, pue<strong>de</strong> calcularse la probabilidad <strong>de</strong> que talconjunto <strong>de</strong> errores ocurra, y es muy baja si el polinomio generador es a<strong>de</strong>cuado.La operación a realizar es en principio una división y podría ser implementada <strong>de</strong> esa forma,pero <strong>de</strong> hecho, esto pue<strong>de</strong> conseguirse mucho más fácilmente con un hardware <strong>de</strong>dicado en forma<strong>de</strong> registro <strong>de</strong> <strong>de</strong>splazamiento. El registro sólo necesita tantas etapas como bits CRC, usualmente16. Cuando escribimos, la ca<strong>de</strong>na <strong>de</strong> bits que forma el bloque se introduce <strong>de</strong>ntro <strong>de</strong>l registro almismo tiempo que se escribe en el disco. Cuando toda la ca<strong>de</strong>na ha sido introducida, el contenido<strong>de</strong>l registro es utilizado como CRC. Durante la lectura, se usa el mismo hardware; el dato y el CRCagregado se pasan a través <strong>de</strong>l registro y su contenido final <strong>de</strong>be ser comparado con cero.En el caso <strong>de</strong> los errores <strong>de</strong> escritura <strong>de</strong> hecho, sólo po<strong>de</strong>mos saber si los datos se hanescrito correctamente leyéndolos, y por supuesto, el error pue<strong>de</strong> ocurrir cuando hacemos la lectura<strong>de</strong> chequeo <strong>de</strong> los datos (en la lectura <strong>de</strong> chequeo no comparamos los datos leídos con los datosoriginales; usamos simplemente el CRC para comprobar si existen o no errores en los datos leídos<strong>de</strong>l disco). Por lo tanto, la <strong>de</strong>tección <strong>de</strong> errores <strong>de</strong> escritura usa exactamente el mismo proceso enla <strong>de</strong>tección <strong>de</strong> errores. Sólo po<strong>de</strong>mos distinguir entre los dos primeros suponiendo que el error seproduce en la lectura; si falla en respuesta a las técnicas <strong>de</strong> recuperación que usamos para loserrores <strong>de</strong> lectura, entonces comenzamos a tratar el error como <strong>de</strong> escritura.Hemos visto cómo <strong>de</strong>tectar errores; ahora vamos a consi<strong>de</strong>rar cómo po<strong>de</strong>mos tratarlos en elproceso conocido como recuperación <strong>de</strong>l error. Hay básicamente dos métodos. El primero consistesimplemente en tratar <strong>de</strong> leer o escribir el bloque completo y lo llamamos reintento ('retry'). Elotro método usa un código redundante <strong>de</strong> datos para i<strong>de</strong>ntificar en qué bit particular ocurre el falloy entonces corregirlo: esto es la corrección <strong>de</strong>l error. Todas las controladoras <strong>de</strong> disco magnéticoutilizan el primer método, y muchas también usan el segundo variando el nivel <strong>de</strong> corrección.Aunque la corrección <strong>de</strong> errores esté disponible, es más rápida y eficaz la relectura y por lo tanto,se intenta primero. Las unida<strong>de</strong>s <strong>de</strong> discos con interfaces inteligentes, realizarán la relectura <strong>de</strong>forma automática y el procesador central no será consciente <strong>de</strong> que ocurre el error, excepto en unacierta oscilación en el flujo <strong>de</strong> datos. Otras unida<strong>de</strong>s <strong>de</strong> disco, necesitarán <strong>de</strong> la ayuda <strong>de</strong>l sistemaoperativo. Si el dispositivo <strong>de</strong>tecta un error en el bloque que ha leído, no lo pasa al procesadorprincipal, pero sí señala el error, y el procesador principal da el comando necesario para que serealice una nueva lectura <strong>de</strong>l bloque. Esto se repite si es necesario una serie <strong>de</strong> veces, a menudohasta 10 intentos. En el caso <strong>de</strong> que el bloque aún no se haya leído correctamente el procesadorcentral activa un 'hard-error'.La corrección <strong>de</strong> errores, en contraste con 'retry', no involucra al sistema operativo y<strong>de</strong>pen<strong>de</strong> <strong>de</strong> si existe bastante redundancia en el código <strong>de</strong> datos, para permitir al dispositivoencontrar qué bit particular es el erróneo, y entonces, corregirlo. Cualquier esquema <strong>de</strong> corrección<strong>de</strong> errores particular pue<strong>de</strong> corregir sólo cierto número <strong>de</strong> bits; si hay más errores en este bloque,la unidad tiene que recurrir a 'retry'. En <strong>de</strong>finitiva, el número <strong>de</strong> bits que se pue<strong>de</strong>n <strong>de</strong>tectar esproporcional al grado <strong>de</strong> redundancia en la ca<strong>de</strong>na <strong>de</strong> datos, aunque algunos métodos <strong>de</strong>codificación son mejores que otros a este respecto.El CRC discutido antes proporciona un cierto grado en la corrección <strong>de</strong> errores si elcontenido <strong>de</strong>l registro <strong>de</strong> <strong>de</strong>splazamiento no es cero <strong>de</strong>spués <strong>de</strong> la lectura <strong>de</strong>l bloque y su CRC. Enese caso se <strong>de</strong>muestra la existencia <strong>de</strong> un error; y el contenido es, <strong>de</strong> hecho, un indicativo <strong>de</strong> ladirección <strong>de</strong>l bit erróneo, con tal <strong>de</strong> que sea uno sólo. Sin embargo, sólo po<strong>de</strong>mos aprovechar estainformación si po<strong>de</strong>mos <strong>de</strong>mostrar que sólo ha habido un error. Para ello realizamos un segundoCRC (<strong>de</strong> hecho, uno <strong>de</strong> ellos se <strong>de</strong>scribe como Error Correcting Co<strong>de</strong> o ECC), calculado <strong>de</strong> otramanera. El ECC se usa para corregir el bloque en el que se supone que sólo ha ocurrido un error; elCRC chequea si el bloque corregido es realmente correcto.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!