La utilidad principal de un FIFO radica en su capacidad para evitar tener que hacer que la CPU interactúe con eventos de caracteres individuales de manera crítica en el tiempo. Si el hardware de un chip puede ocuparse de todas las respuestas de tiempo crítico a los eventos de caracteres individuales, eso puede permitir que el manejo del puerto serial tenga una prioridad más baja de lo que sería necesario, permitiendo así que el chip sea mejor satisfacer las necesidades de tiempo de otros procesos.
Desafortunadamente, una FIFO en sí misma no suele ser suficiente para cumplir con los requisitos de tiempo, y en algunos casos podría ser más un obstáculo que una ayuda. Si, por ejemplo, una conexión usa señalización xon / xoff (anticuada, quizás, pero a veces aún se requiere en ausencia de otros cables de intercambio de manos) y un dispositivo recibe un xoff, debe diferir la transmisión en cualquier lugar más allá del carácter actual en el búfer de transmisión. . Para que un chip que tiene un búfer de transmisión grande pueda comunicarse de manera confiable con un dispositivo que tenga un búfer de recepción pequeño y use señalización xon / xoff, debe tener un medio para pausar la transmisión sin borrar el búfer [hardware adicional] o bien abstenerse de hacerlo poner más bytes en el búfer que el receptor podría manejar más allá del xoff [lo que requeriría una forma para que el transmisor sepa cuántos bytes había en el búfer - nuevamente, hardware adicional].
Además, no importa cuán grande sea el búfer de recepción de un chip, tendría que estar capturando constantemente todos los datos del búfer de recepción cada vez que estuviera transmitiendo para buscar un xoff a menos que un xoff recibido pueda ser detectado sin buscando todo [otra vez, más hardware].
Algunos dispositivos UART de hardware que están diseñados para ser encuestados de forma dispersa (por ejemplo, convertidores de USB a serie) tienen FIFO bastante grandes en ellos, pero también tienen hardware que les permite reaccionar de manera autónoma ante una serie de eventos externos. Para que un búfer grande en un UART integrado sea realmente útil, necesitaría tener un hardware junto con él que no se necesitaría tanto cuando se usa un UART más pequeño.
Todo lo que se ha dicho, el argumento de que DMA elimina la necesidad de un búfer grande no retiene totalmente el agua. Si los requisitos externos requieren que una aplicación maneje todos los eventos de caracteres en serie dentro de los tiempos de tres caracteres, el uso de un UART con doble búfer sin DMA puede facilitar los requisitos de tiempo de respuesta del software en comparación con el de un solo búfer y sin DMA, mientras que es mucho más conveniente que usar DMA.