Árbitro (electrónica)

Dispositivo electrónico que asigna acceso a recursos compartidos

Los árbitros son dispositivos electrónicos que asignan acceso a recursos compartidos.

árbitro de bus

Existen múltiples formas de realizar un arbitraje de bus de computadora , siendo las variedades más populares: [1] [2]

  1. paralelo centralizado dinámico donde se utiliza un árbitro central para todos los maestros como se analiza en este artículo;
  2. serie centralizada (o "en cadena") donde, al acceder al bus, el maestro activo pasa la oportunidad al siguiente. En esencia, cada maestro conectado contiene su propio árbitro;
  3. arbitraje distribuido por autoselección (arbitraje de bus distribuido) donde el acceso se concede automáticamente en función de la decisión tomada localmente utilizando información de otros maestros;
  4. arbitraje distribuido por detección de colisiones donde cada maestro intenta acceder al bus por su cuenta, pero detecta conflictos y vuelve a intentar las operaciones fallidas.

Un árbitro de bus es un dispositivo que se utiliza en un sistema de bus multimaster para decidir qué master de bus podrá controlar el bus en cada ciclo de bus. El tipo más común de árbitro de bus es el árbitro de memoria en un sistema de bus de sistema .

Un árbitro de memoria es un dispositivo utilizado en un sistema de memoria compartida para decidir, para cada ciclo de memoria, qué CPU tendrá permitido acceder a esa memoria compartida. [3] [4] [5]

Algunas instrucciones atómicas dependen del árbitro para evitar que otras CPU lean la memoria "a mitad de camino" de instrucciones atómicas de lectura-modificación-escritura .

Normalmente, un árbitro de memoria está integrado en el controlador de memoria / controlador DMA .

Algunos sistemas, como el PCI convencional , tienen un único dispositivo de arbitraje de bus centralizado al que se puede señalar como "el" árbitro de bus, que normalmente estaba integrado en el chipset. [6] Otros sistemas utilizan un arbitraje de bus descentralizado, donde todos los dispositivos cooperan para decidir quién es el siguiente. [7] [8]

Cuando cada CPU conectada al árbitro de memoria tiene ciclos de acceso a la memoria sincronizados, el árbitro de memoria puede diseñarse como un árbitro sincrónico. De lo contrario, el árbitro de memoria debe diseñarse como un árbitro asincrónico.

Árbitros asincrónicos

Una forma importante de árbitro se utiliza en circuitos asincrónicos para seleccionar el orden de acceso a un recurso compartido entre solicitudes asincrónicas. Su función es evitar que se produzcan dos operaciones a la vez cuando no deberían. Por ejemplo, en un ordenador que tiene varias CPU u otros dispositivos que acceden a la memoria del ordenador y tiene más de un reloj , existe la posibilidad de que las solicitudes de dos fuentes no sincronizadas puedan llegar casi al mismo tiempo. "Casi" puede ser muy cercano en el tiempo, en el rango de sub- femtosegundos . El árbitro de memoria debe decidir entonces qué solicitud atender primero. Desafortunadamente, no es posible hacer esto en un tiempo fijo [Anderson 1991]. [ aclaración necesaria ]

Árbitros asincrónicos y metaestabilidad

Los árbitros rompen los empates. Como un circuito flip-flop , un árbitro tiene dos estados estables correspondientes a las dos opciones. Si dos solicitudes llegan a un árbitro con una diferencia de unos pocos picosegundos (hoy, femtosegundos ), el circuito puede volverse metaestable antes de alcanzar uno de sus estados estables para romper el empate. Los árbitros clásicos están especialmente diseñados para no oscilar de forma descontrolada cuando son metaestables y para decaer desde una metaestabilidad lo más rápido posible, normalmente mediante el uso de energía adicional. La probabilidad de no haber alcanzado un estado estable disminuye exponencialmente con el tiempo después de que se hayan proporcionado las entradas.

A mediados de los años 70 se encontró una solución fiable a este problema. Aunque no es posible un árbitro que tome una decisión en un tiempo fijo, se puede hacer funcionar uno que a veces tarde un poco más en el caso difícil (llamadas de atención). Es necesario utilizar un circuito de sincronización de varias etapas que detecte que el árbitro aún no se ha establecido en un estado estable. El árbitro entonces retrasa el procesamiento hasta que se haya alcanzado un estado estable. En teoría, el árbitro puede tardar un tiempo arbitrario en establecerse (véase el principio de Buridan ), pero en la práctica, rara vez tarda más de unos pocos tiempos de retardo de compuerta . El artículo clásico es [Kinniment y Woods 1976], que describe cómo construir un "flip flop de 3 estados" para resolver este problema, y ​​[Ginosar 2003], una advertencia a los ingenieros sobre errores comunes en el diseño de árbitros.

Este resultado tiene una importancia práctica considerable, ya que los ordenadores multiprocesador no funcionarían de forma fiable sin él. Los primeros ordenadores multiprocesador datan de finales de los años 1960, antes del desarrollo de árbitros fiables. Algunos de los primeros multiprocesadores con relojes independientes para cada procesador sufrían de condiciones de carrera de árbitros y, por tanto, de falta de fiabilidad. Hoy en día, esto ya no es un problema.

Árbitros sincrónicos

Los árbitros también se utilizan en contextos sincrónicos para asignar acceso a un recurso compartido. Un árbitro de frente de onda es un ejemplo de árbitro sincrónico que está presente en un tipo de conmutador de red grande .

Referencias

  1. ^ Noergaard 2012, pág. 297.
  2. ^ Gottlieb 1999.
  3. ^ Michael Fingeroff. "High-Level Synthesis Blue Book". 2010. p. 270. cita: "El árbitro de bus o memoria procesa la solicitud de los diferentes procesos y decide quién tiene acceso al bus/memoria".
  4. ^ Arten Esa, Bryan Myers. "Diseño de un árbitro para memoria DDR3". 2013.
  5. ^ Kearney, DA; Veldman, G. "Un árbitro de memoria multibanco concurrente para núcleos IP dinámicos utilizando round robin de omisión inactiva". 2003. DOI: 10.1109/FPT.2003.1275789.
  6. ^ docs.oracle.com https://docs.oracle.com/cd/E19620-01/805-4447/auto2/index.html . Consultado el 26 de julio de 2024 . {{cite web}}: Falta o está vacío |title=( ayuda )
  7. ^ Tim Downey. "Arbitraje en los autobuses"
  8. ^ Shun Yan Cheung. "Arbitraje en los autobuses"

Fuentes

  • DJ Kinniment y JV Woods. Circuitos de sincronización y arbitraje en sistemas digitales. Actas del IEE. Octubre de 1976.
  • Carver Mead y Lynn Conway. Introducción a los sistemas VLSI Addison-Wesley. 1979.
  • Sutherland, Ivan ; Ebergen, Jo (agosto de 2002), "Computadoras sin relojes" (PDF) , Scientific American , 287 (2): 62–69, Bibcode :2002SciAm.287b..62S, doi :10.1038/scientificamerican0802-62, PMID  12140955, archivado desde el original (PDF) el 2004-12-14[ enlace muerto ]
  • Ran Ginosar. "Catorce maneras de engañar a tu sincronizador" ASYNC 2003.
  • J. Anderson y M. Gouda, "Una nueva explicación del fenómeno Glitch", Acta Informatica, vol. 28, núm. 4, págs. 297–309, abril de 1991.
  • Noergaard, T. (2012). Arquitectura de sistemas integrados: una guía completa para ingenieros y programadores. Serie de tecnología integrada. Elsevier Science. ISBN 978-0-12-382197-3. Consultado el 25 de julio de 2023 .
  • Gottlieb, Allan (1999). "Class Notes for Computer Architecture". cs.nyu.edu . Universidad de Nueva York . Consultado el 25 de julio de 2023 .
  • Metaestabilidad de la lógica digital
  • Rendimiento de metaestabilidad de los FIFO sincronizados
  • La bibliografía 'asincrónica' Archivado el 8 de agosto de 2020 en Wayback Machine.
  • Interfaces autotemporizadas eficientes para cruzar dominios de reloj
Obtenido de "https://es.wikipedia.org/w/index.php?title=Arbitro_(electrónica)&oldid=1237702750"