¿Qué significa una condición de carrera?

9

Soy un nuevo ingeniero eléctrico, así que ten paciencia. Escucho a algunos de los otros ingenieros con los que trabajo hablar sobre una condición de carrera que existe en uno de nuestros circuitos.

¿Qué significa eso?

    
pregunta Stihl Alighve

3 respuestas

16

Significa, muy simplemente, que dos cosas al mismo tiempo "compiten" por el resultado.

Un ejemplo es un circuito con un restablecimiento y un pin de ajuste. Si activa el restablecimiento, la salida se convierte en 0. Si activa el establecimiento, la salida se convierte en 1. Si primero activa el ajuste y luego se restablece muy, muy rápidamente después de se verá el reinicio, por lo que la salida es 0.

Pero, si ambos se activan al mismo tiempo, ¿qué sucede?

Si el diseñador de circuitos prestó atención, debería haber una respuesta, si eso es importante para la función. Si no hay una respuesta segura a esa pregunta, el circuito tiene una condición de carrera, donde la señal del conjunto y el reinicio "compiten" entre sí para ver cuál gana para determinar la salida.

La ruta con el menor retraso generalmente ganará, pero luego puede ver la condición de carrera como el disparador exacto en el que la ruta más retrasada se activa exactamente antes de la más rápida.

Muchos circuitos, incluidos los bloques de construcción lógicos dentro de los circuitos integrados, tienen ciertas condiciones de carrera, pero generalmente son tales que cuando se usa el circuito de la forma prevista, no se notará. Muy a menudo, cuando los ingenieros dicen "condición de carrera" en voz alta un par de veces, en realidad significan que también puede ocurrir en el uso normal, lo que sería un problema, porque en una condición de carrera no se puede predecir el funcionamiento normal.

En el software, el término también se usa, pero a menudo para indicar problemas de tiempo o bloqueos. Sin embargo, es un principio similar. A menudo, cuando tiene dos procesos en una computadora que se ejecutan de forma independiente, pero al usar la misma memoria, protege esa memoria para que no la escriba una, mientras que la otra la está utilizando. Si no lo hace, lo llaman una posible condición de carrera: un proceso podría ser leer un valor que solo está en proceso de ser actualizado, o ambos podrían estar escribiendo en él al mismo tiempo y entonces usted no sabe Qué sucederá.

    
respondido por el Asmyldof
6

El término "condición de carrera" implica que (1) dos o más señales pueden llegar en cualquier orden, arbitrariamente cerca una de la otra, y (2) no es posible mostrar analíticamente que existe una probabilidad esencialmente cero de cualquier posible combinación de tiempos de llegada que plantea un problema.

Desde el punto de vista de un solo flip flop cuya entrada de datos puede cambiar en cualquier momento con respecto al reloj, las transiciones casi simultáneas en el reloj y las entradas de datos pueden representar una condición de carrera. Sin embargo, desde el punto de vista del comportamiento general del circuito, no plantearían una condición de carrera si solo pudieran ocurrir en momentos en que ningún circuito descendente se preocuparía por lo que sostenía el pestillo, y ningún circuito descendente comenzaría a preocuparse por lo que sostenía el pestillo hasta después de la llegada de un pulso de reloj que no podría estar cerca de ninguna transición en la entrada de datos.

Además, debido a que a menudo no es posible eliminar absolutamente por completo toda posibilidad de temporizaciones de entrada problemáticas, muchos análisis de las condiciones de carrera dirán que si la salida de un registro se alimenta a otro que está controlado por el mismo reloj, el segundo registro siempre mantendrá un nivel alto "limpio" o un nivel "limpio" bajo, incluso si las entradas al primer registro hicieron que capturara un nivel de entrada que estaba justo en el umbral de conmutación. En teoría, sería posible que el primer pestillo capturara un nivel que estaba justo por encima o por debajo de su umbral de conmutación exacto, de modo que el nivel de salida cambiaría precisamente cuando llegara el siguiente impulso de reloj.

Como consecuencia, si uno fuera por ej. tome una entrada y pásela en una secuencia de tres flip flops, y tenga un circuito con salida alta cuando el segundo flop fue alto pero el tercero fue bajo, luego cualquier flanco ascendente que ocurra en la entrada de datos que está precedido por una el período de reloj que vale un tiempo bajo, y seguido por un período de reloj completo de hora alta, esencialmente garantizará que la salida del circuito sea alta durante exactamente un período de reloj.

simular este circuito : esquema creado usando CircuitLab

En este esquema, una señal con temporización algo irregular se normaliza a un reloj de tres maneras de tal manera que genera una salida que es alta para un ciclo de reloj después de cada flanco ascendente. El primer intento de normalizar la señal genera una salida de aspecto desagradable y tiene una condición de carrera obvia si la entrada y el reloj cambian simultáneamente. El segundo enfoque es mucho mejor, pero todavía tiene una condición de carrera (que el simulador no puede activar) si la sincronización del reloj y los datos hacen que el primer registro capture un valor intermedio. El tercer enfoque representa una práctica común, y generalmente se consideraría seguro, ya que incluso si el primer registro no logra capturar un nivel alto limpio o un nivel bajo limpio, es muy poco probable que la salida del primer registro tenga exactamente el comportamiento correcto para causar El segundo registro para no agarrar limpiamente. Si los datos cambian muy cerca del reloj, puede ser capturado en el ciclo actual, o no ser capturado hasta el siguiente, pero si cualquiera de las dos situaciones sería aceptable, no hay condición de carrera.

    
respondido por el supercat
2

En resumen, significa que el resultado de un proceso se verá afectado por la secuencia de llegada de dos entradas, y esa secuencia es indeterminada (no se puede garantizar).

    
respondido por el JRobert

Lea otras preguntas en las etiquetas

Comentarios Recientes

Esto es confuso a primera vista, pero la última frase es en realidad una red de seguridad. Si observamos cómo se pueden 'romper' los pernos, significa que el tamaño o la forma incorrecta del perno está uniendo los componentes. ¿Cómo sé que es una condición de carrera? Incluso si te encuentras con un grupo de luces centelleantes y alguien ha escrito la configuración correcta en la sección correcta, puede significar algo diferente. Si bien solo los pernos del cigüeñal, el plato y la palanca de cambios se mantendrán... Lees verder