Cómo saber si un microprocesador es lo suficientemente potente

9

Todo el mundo sabe que es fácil desarrollar una prueba de concepto para un dispositivo integrado en un rasbperry pi o incluso en una PC, aunque cuando se trata de elegir un microprocesador para su producto, es difícil asegurarse de que su elección le permita concepto para trabajar de manera óptima.

Actualmente tengo un proyecto de transmisión de medios que funciona correctamente en la frambuesa pi, aunque el pi es demasiado grande y voluminoso para que sea adecuado como dispositivo final. También se afirma que el dispositivo final es personalizado. Me cuesta mucho encontrar confianza en los procesadores que puedo usar.

¿Cuál es un buen proceso para averiguar si un procesador es lo suficientemente potente como para ejecutar mi aplicación?

Básicamente mis requisitos son:

  • host USB o pila TCP / IP incorporada para operación WiFi
  • protocolo de medios I2S / PCM
  • I2C para configuración periférica

Encontrar fichas con esas propiedades es muy simple. Sinceramente, no podría ser más simple. El problema es poder saber si el chip es lo suficientemente rápido, de procesamiento y de funcionamiento.

He visto el LPC4337 bastante y creo que sería adecuado aunque el entorno de desarrollo me está causando muchos problemas, por ese motivo sigo mirando alrededor, lo que me llevó al CC3200. de Texas Instruments, aunque ese controlador solo funciona a 80 MHz y no estoy seguro de si será lo suficientemente fuerte para la transmisión de medios en tiempo real.

¿Cuáles son algunos pasos para garantizar que un procesador sea rápido suficiente para mi aplicación? ¿Cómo puedo saber si un procesador de 80 MHz será lo suficientemente bueno o si necesito algo del orden de 204 MHz o incluso más?

    
pregunta Funkyguy

3 respuestas

5

Depende de cuánta confianza tengas que ser. Trabajo en la industria espacial y esto se logra normalmente a través de lo que llamamos "CPU, RAM, presupuestos ROM". Un presupuesto, ya sea en masa o en cualquier otra cosa, está desglosando su proceso en elementos manejables que puede cuantificar y resumir para obtener la demanda general. Luego toma un factor de seguridad que depende de la madurez de su proyecto, disminuyendo con el tiempo para tener en cuenta el crecimiento de la demanda. Al principio, depende en gran medida de la experiencia y luego se refina con el tiempo a medida que se seleccionan las tecnologías.

  • ROM es relativamente fácil. Usted sabe cuánto toma aproximadamente una pila / biblioteca / controlador en la memoria ROM: ya sea por parte del autor, o puede compilarlo sin subirlo. Esa cifra puede cambiar mucho cada vez que cambie su código debido a las optimizaciones del compilador.
  • RAM es mucho más complicado. Algunas herramientas en entornos de desarrollo integrados especializados le brindan estimaciones de tiempo de ejecución , y yo puedo ver cómo se puede hacer esto, pero no tengo conocimiento de ninguna herramienta genérica, por ejemplo, proporcionada por GCC (¿alguien sabe de otra manera?). Lamentablemente, suena como si se tratara de contar los elementos más grandes o más asignados de su código (teniendo en cuenta la vida útil de las variables).
  • La CPU es más compleja, ya que, dependiendo de la arquitectura (CISC o RISC), los MIPS (Millones de instrucciones por segundo, proporcionales a la frecuencia de reloj de la CPU) podrían o no ser representativos. Porque si tiene el código a mano, puede dividir la sección más crítica en instrucciones y calcular el MIPS requerido a partir del requisito de tiempo. Cualquier interrupción no deshabilitada DEBE ser considerada como activada en ese punto, la ley de Murphy y todo eso.

Lo anterior es extremadamente difícil de determinar con precisión cuando se activan los programadores, tan pronto como tenga subprocesos (a menos que los subprocesos se asignen manualmente a los núcleos) y los sistemas operativos. Debería ser manejable para códigos de microcontroladores simples, pero ¿vale la pena para su aplicación?

Esta es solo mi participación: aunque diseñé sistemas integrados, no he sido responsable de esos presupuestos particulares (que son insumos para mí), y en realidad estoy muy interesado en conocer las historias de expertos sobre eso.

Anexo: Con los sistemas en tiempo real, generalmente es más fácil evaluar la adecuación del sistema a la tarea a través del tiempo máximo de muestreo que depende de la latencia / demoras en la transmisión de la información a través del flujo de trabajo y el tiempo máximo Tomado por cada muestra de tarea.

    
respondido por el Mister Mystère
2

Voy a simplificar su pregunta: "¿Cómo saber si un microprocesador es lo suficientemente rápido "?
Debe identificar el proceso / procedimiento que requiere el tiempo de ejecución más rápido. Si su procesador puede ejecutar las instrucciones requeridas en el tiempo dado, o menos, entonces es lo suficientemente rápido. Veamos un ejemplo: su requisito más rápido es procesar una interrupción de pérdida de energía ; esto requiere 10,000 instrucciones para ser ejecutado en 10 milisegundos. Necesitará una CPU con al menos 1 MIP. Para convertir esto a "MHz", necesita conocer el número de ciclos de reloj por instrucción (cci). Supongamos que es de 10 cci, su CPU debería funcionar a 10 MHz o más rápido.

    
respondido por el Guill
0

Si busca reducir el costo de la lista de materiales, a veces los fabricantes de Shenzhen tienen ofertas sorprendentes. Un ejemplo: Allwinner A10 tiene más poder de cómputo y opciones de conexión que Raspberry Pi, pero probablemente será más barato si se usa en su diseño. Si está considerando el mismo costo que el Pi, el Allwinner A31s es 6-8 veces más poderoso.

    
respondido por el Maxthon Chan

Lea otras preguntas en las etiquetas