Como descobrir se um microprocessador é poderoso o suficiente


9

Todo mundo sabe que é fácil desenvolver uma prova de conceito para um dispositivo embutido em um Rasbperry Pi ou mesmo em um PC, embora quando se trata de escolher um microprocessador para o seu produto, é difícil ter certeza de que sua escolha permitirá que seu conceito funcione Otimamente.

Atualmente, tenho um projeto de streaming de mídia trabalhando com êxito no raspberry pi, embora o pi seja muito grande e volumoso para ser adequado como um dispositivo final. Também é afirmado que o dispositivo final é personalizado. Estou tendo dificuldades para encontrar confiança nos processadores que posso usar.

Qual é um bom processo para descobrir se um processador é poderoso o suficiente para executar meu aplicativo?

Basicamente, meus requisitos são:

  • Host USB ou pilha TCP / IP incorporada para operação WiFi
  • Protocolo de mídia I2S / PCM
  • I2C para configuração periférica

Encontrar chips com essas propriedades é muito simples. Honestamente, não poderia ser mais simples. A questão é saber se o chip é rápido o suficiente, processamento e operação.

Eu olhei bastante para o LPC4337 e acho que seria adequado, embora o ambiente de desenvolvimento esteja me causando um grande problema, por esse motivo ainda estou olhando em volta, o que me levou ao CC3200 da Texas Instruments , embora esse controlador seja executado apenas a 80 MHz e não tenho certeza se isso será forte o suficiente para o streaming de mídia em tempo real.

Quais são algumas etapas para garantir que um processador seja rápido o suficiente para o meu aplicativo? Como saber se um processador de 80 MHz será bom o suficiente ou preciso de algo da ordem de 204 MHz ou até mais?


11
Acho que você precisará fornecer requisitos de energia também.
kolosy

Isso não responde à sua pergunta, mas você pode considerar a nova família de microcontroladores PIC32MZ , que possui o dobro de Flash (2MB) e três vezes mais RAM (512K), juntamente com o host USB 2.0, I²S e cinco I²C módulos pelo mesmo preço que o LPC4337. O IDE (MPLAB X) e o compilador são gratuitos, mas após um período de teste, você deve pagar pelo compilador otimizado se desejar um (o compilador GCC não otimizado permanece livre). O Microchip possui bibliotecas isentas de royalties para as pilhas USB e TCP / IP.
tcrosley

2
Eu acho que alguns podem estar perdendo o objetivo da questão. Não estou procurando uma recomendação de peças. É simples garantir que haja espaço suficiente no chip ou se existem periféricos adequados. Estou mais procurando parâmetros e etapas de processamento como um guia para garantir que eu selecione um processador poderoso o suficiente. Como em sua velocidade.
Funkyguy

Se você não sabe o que precisa das especificações, pode pedir amostras e protótipo?
Roger Rowland

@RogerRowland Eu poderia, embora esse seja um processo muito demorado. Grosseiro há alguma maneira de encontrar especificações mínimas para um programa
Funkyguy

Respostas:


5

Depende de quão confiante você precisa ser. Eu trabalho na indústria espacial e isso normalmente é alcançado através do que chamamos de "orçamentos de CPU, RAM, ROM". Um orçamento, seja o custo da massa de energia ou qualquer outra coisa, está dividindo seu processo em itens gerenciáveis, que você pode quantificar e resumir para obter a demanda geral. Você assume um fator de segurança que depende da maturidade do seu projeto, diminuindo com o tempo para explicar o crescimento da demanda. Desde o início, ele se apóia fortemente na experiência e depois é refinado ao longo do tempo à medida que as tecnologias são selecionadas.

  • ROM é relativamente fácil. Você sabe quanto uma pilha / biblioteca / driver ocupa aproximadamente na memória ROM: fornecida pelo autor, ou pode compilá-la sem carregá-la. Esse número pode mudar muito toda vez que você altera seu código, devido às otimizações do compilador.
  • RAM é muito mais complicada. Algumas ferramentas em ambientes especializados especializados de desenvolvimento fornecem estimativas de tempo de execução , e posso ver como isso pode ser feito, mas não conheço nenhuma ferramenta genérica - por exemplo, fornecida pelo GCC (alguém sabe o contrário?). Infelizmente, parece que se trata de contar os elementos maiores ou mais alocados do seu código (contabilizando a vida útil das variáveis).
  • A CPU é mais complexa, pois, dependendo da arquitetura (CISC ou RISC), o MIPS (milhões de instruções por segundo, proporcional à freqüência do clock da CPU) pode ou não ser representativo. Como se você tiver o código em mãos, poderá dividir a seção mais crítica em instruções e calcular o MIPS necessário a partir do tempo necessário. Qualquer interrupção não desabilitada DEVE ser considerada desencadeada naquele momento - a lei de Murphy e tudo isso.

O exposto acima é extremamente difícil de determinar com precisão quando os agendadores entram em ação, assim que você tiver threads (a menos que os threads sejam alocados manualmente aos núcleos) e sistemas operacionais. Deve ser administrável para códigos simples de microcontroladores, mas vale a pena para a sua aplicação?

Esta é apenas a minha participação: mesmo que eu projete sistemas integrados, não fui responsável por esses orçamentos específicos (que são insumos para mim) e, na verdade, estou muito interessado em conhecer as histórias de especialistas sobre isso.

Adendo: Nos sistemas em tempo real, geralmente é mais fácil avaliar a adequação do sistema à tarefa através do tempo máximo de amostragem, que depende da latência / atrasos na transmissão das informações por todo o fluxo de trabalho e do tempo máximo gasto por cada um. amostra de tarefa.


avrdudepode fornecer estimativas de quanta RAM é usada por variáveis ​​globais, mas você deve executá-la com a opção dry run, porque é fundamentalmente uma ferramenta de upload.
Felixphew

11
A parte mais difícil de estimar o IMO é o uso de pilhas e pilhas. Nosso sistema embarcado atual (SO proprietário), executando em um PIC32, normalmente possui mais de 25 tarefas em execução, muitas delas precisando de alguns K heap ou mais quando estão ativas. Você obtém vários desses, além de um uso pesado da pilha e em breve poderá estar quase sem memória RAM. Eu escrevi uma rotina recursiva ou menos uma semana atrás e teve que ser muito cuidadoso de uso da pilha variável local (sem matrizes etc.)
tcrosley

Interessante, obrigado. Você estima a quantidade de RAM alocada pelo seu código (análise de código ou ferramenta específica) ou a mede em tempo de execução? Parece-me que o MIPS é um pouco mais difícil de estimar, porque não é possível analisar o código sem analisá-lo em instruções, ao contrário do uso da RAM (possível, não é fácil). Os threads tornam a tarefa incrivelmente mais difícil, mas parece que a análise da CPU ainda requer mais etapas - é simplesmente um problema menor em geral. O que você acha?
Mister Mystère

2

Vou simplificar sua pergunta para "Como descobrir se um microprocessador é rápido o suficiente"?
Você precisa identificar o processo / procedimento que requer o tempo de execução mais rápido. Se o seu processador puder executar as instruções necessárias no tempo especificado, ou menos, será rápido o suficiente.
Vamos ver um exemplo: Seu requisito mais rápido é processar uma perda de energia ; isso requer 10.000 instruções a serem executadas em 10 milissegundos. Você precisará de uma CPU com pelo menos 1 MIP. Para converter isso em "MHz", você precisa saber o número de ciclos de clock por instrução (cci). Vamos supor que seja 10 cci, sua CPU precisaria rodar a 10 MHz ou mais rápido.


0

Se você está procurando reduzir o custo da lista técnica, às vezes esses fabricantes de Shenzhen têm ofertas surpreendentes. Um exemplo: o Allwinner A10 tem mais opções computacionais de energia e conexão que o Raspberry Pi, mas provavelmente será mais barato se usado em seu projeto. Se você está procurando o mesmo custo que o Pi, o Allwinner A31s é 6-8 vezes mais poderoso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.