Cómo averiguar 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 una PC, aunque cuando se trata de elegir un microprocesador para su producto, es difícil asegurarse de que su elección permita que su concepto funcione óptimamente

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

¿Cuál es un buen proceso para descubrir 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 chips con esas propiedades es muy simple. Sinceramente, no podría ser más simple. El problema es saber si el chip es lo suficientemente rápido, de procesamiento y de operación.

He examinado bastante el LPC4337 y siento que sería adecuado, aunque el entorno de desarrollo me está causando muchos problemas, por eso todavía estoy mirando a mi 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 asegurarse de que un procesador sea lo suficientemente rápido para mi aplicación? ¿Cómo sé si un procesador de 80 MHz será lo suficientemente bueno o necesito algo del orden de 204 MHz o incluso más?

Funkyguy
fuente
1
Creo que también deberá proporcionar los requisitos de energía.
kolosy
Esto no responde a su pregunta, pero podría considerar mirar la nueva familia de microcontroladores PIC32MZ , que tienen el doble de Flash (2 MB) y tres veces más RAM (512 K), junto con el host USB 2.0, I²S y cinco I²C módulos por el mismo precio que el LPC4337. El IDE (MPLAB X) y el compilador son gratuitos, pero después de un período de prueba, debe pagar por el compilador optimizado si lo desea (el compilador GCC no optimizado sigue siendo gratuito). Microchip tiene bibliotecas libres de regalías para las pilas USB y TCP / IP.
tcrosley
2
Creo que algunos pueden estar perdiendo el punto de la pregunta. No estoy buscando una recomendación de piezas. Es simple asegurarse de que haya suficiente espacio en el chip o que haya los periféricos adecuados. Estoy más que nada buscando parámetros y pasos de procesamiento como guía para asegurarme de seleccionar un procesador lo suficientemente potente. Como en su velocidad.
Funkyguy
Si no puede distinguir lo que necesita de las especificaciones, ¿puede pedir muestras y prototipos?
Roger Rowland
@RogerRowland podría aunque es un proceso muy largo. Surly hay alguna manera de encontrar especificaciones mínimas para un programa
Funkyguy

Respuestas:

5

Depende de qué tan seguro deba estar. Trabajo en la industria espacial y esto normalmente se logra a través de lo que llamamos "presupuestos de CPU, RAM, ROM". Un presupuesto, ya sea el costo de la masa de energía o cualquier otra cosa, está desglosando su proceso en elementos manejables que puede cuantificar y resumir todos para obtener la demanda general. Luego, toma un factor de seguridad que depende de la madurez de su proyecto, disminuyendo con el tiempo para dar cuenta del 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 ocupa aproximadamente una pila / biblioteca / controlador en la memoria ROM: ya sea proporcionada por el autor, o puede compilarla sin cargarla. Sin embargo, esa cifra puede cambiar mucho cada vez que cambia su código debido a las optimizaciones del compilador.
  • RAM es mucho más complicado. Algunas herramientas en entornos de desarrollo integrados especializados le dan estimaciones de tiempo de ejecución , y puedo ver cómo se podría hacer esto, pero no conozco ninguna herramienta genérica, por ejemplo, proporcionada por GCC (¿alguien sabe lo contrario?). Lamentablemente, parece que se trata de contar los elementos más grandes o más asignados de su código (teniendo en cuenta las variables de por vida).
  • La CPU es más compleja porque, según la arquitectura (CISC o RISC), el MIPS (Millones de instrucciones por segundo, proporcional a la frecuencia del reloj de la CPU) podría o no ser representativo. Porque si tiene el código a mano, puede dividir la sección más crítica en instrucciones y calcular los MIPS requeridos a partir del tiempo requerido. Cualquier interrupción no desactivada DEBE considerarse activada en ese punto: la ley de Murphy y todo eso.

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

Esta es solo mi participación: aunque diseño 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 de muestreo máximo que depende de la latencia / demoras en la transmisión de la información a lo largo del flujo de trabajo, y el tiempo máximo que toma cada uno muestra de tarea.

Señor Mystère
fuente
avrdudepuede proporcionar estimaciones de cuánta RAM toman las variables globales, pero debe ejecutarla con la opción de ejecución en seco porque es fundamentalmente una herramienta de carga.
felixphew
1
La parte más difícil de estimar IMO es el uso de pila y montón. Nuestro sistema embebido actual (SO propietario), que se ejecuta en un PIC32, generalmente tiene más de 25 tareas en ejecución, muchas de las cuales necesitan un par de K o más cuando están activas. Obtienes varios de esos, además de un uso intensivo de la pila y pronto puedes estar cerca de quedarte sin RAM. Acabo de escribir una rutina recursiva de una semana o así que hace y tuvo que ser muy cuidadoso del uso de pila variable local (sin matrices, etc.)
tcrosley
Interesante, gracias. ¿Estima la cantidad de RAM asignada por su código (análisis de código o herramienta particular), o la mide en tiempo de ejecución? Me parece que MIPS es un poco más difícil de estimar porque no se puede estimar analizando el código sin dividirlo en instrucciones, a diferencia del uso de RAM (posible, no es fácil). Los subprocesos hacen que la tarea sea increíblemente más difícil, pero parece que el análisis de la CPU aún requiere más pasos; en general, es un problema menor. ¿Qué piensas?
Señor Mystère
2

Voy a simplificar su pregunta a "¿Cómo averiguar 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 pérdida de interrupción de energía ; esto requiere que se ejecuten 10,000 instrucciones en 10 milisegundos. Necesitará una CPU con al menos 1 MIP. Para convertir esto a "MHz", necesita saber la cantidad de ciclos de reloj por instrucción (cci). Supongamos que son 10 cci, su CPU necesitaría funcionar a 10 MHz o más rápido.

Guill
fuente
0

Si está buscando reducir el costo de la lista de materiales, a veces esos fabricantes de Shenzhen tienen algunas 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á buscando el mismo costo que el Pi, el Allwinner A31s es 6-8 veces más potente.

Maxthon Chan
fuente