Página 1 de 3

Cortex M4 sem FPU !!!

MensagemEnviado: 08 Out 2013 08:14
por RobL
Cuidado quem necessitar de um micro com FPU. Todo Cortex M4 tem FPU, exceto os da FreeScale.
A linha Kinetis da FreeScale tem os com sufixo K anunciado como um Cortex M4 e são mesmo. Somente o K70 desta linha tem FPU. Quase cai nesta.
O baixo preço desta linha "K" com CM4 é muito atraente, até que você nota que no diagrama em blocos, a FPU está com linha tracejada e em baixo, do diagrama de blocos, escrito como opcional. O que mais confunde ainda é o fato de existir software simulando uma FPU!!!
Uma pena, pois os periféricos são excelentes e me atenderia perfeitamente. É muito interessante, mas sem FPU.
Fica aí o alerta.

Re: Cortex M4 sem FPU !!!

MensagemEnviado: 08 Out 2013 09:42
por tcpipchip
Tá...mas...para que voce quer FPU ?

Re: Cortex M4 sem FPU !!!

MensagemEnviado: 08 Out 2013 14:47
por RobL
Simples, velocidade e economia de energia (possibilitar operar com bateria).
Certa operação com FPU é feita em 4 ciclos a mesma sem FPU leva aproximadamente 654 ciclos. Note o consumo de energia e tempo em processamento !!!

Re: Cortex M4 sem FPU !!!

MensagemEnviado: 08 Out 2013 15:27
por tcpipchip
humm!!!!!!!!!

Re: Cortex M4 sem FPU !!!

MensagemEnviado: 09 Out 2013 01:32
por msamsoniuk
RobL escreveu:Simples, velocidade e economia de energia (possibilitar operar com bateria).
Certa operação com FPU é feita em 4 ciclos a mesma sem FPU leva aproximadamente 654 ciclos. Note o consumo de energia e tempo em processamento !!!


e que operacao seria essa? O.o

Re: Cortex M4 sem FPU !!!

MensagemEnviado: 09 Out 2013 08:03
por marcelo_asm
mas tem componentes que tem a FPU, especificamente os que operam em 120MHz.

Re: Cortex M4 sem FPU !!!

MensagemEnviado: 09 Out 2013 10:33
por RobL
Marcelo Sam : Qualquer divisão simples que dê um irracional, no qual se quer certa precisão, já dá muitos ciclos sem FPU, em torno de 15X . Dependendo do método usado em outras operações, chegam até 6000 ou 11000 ciclos se usar Leibnitz ou Euler respectivamente. Com FPU teríamos em torno de 482 e 1763 para tais operações (em um CM4).

Marcelo_asm: Sim tem várias opções, mas não pelo preço da linha K20, K40 que é anunciado como tendo FPU, mas é opcional. E este opcional se quer existe cotado na DigiKey, por exemplo.
O que estava super interessante é ter um K20 com 64Kb com FlexRam, "FPU", DSP, etc, por U$2.00 para 250 peças .

Nota: No post anterior: 4 ciclos contra 654 ciclos le-se 65 ciclos.

Re: Cortex M4 sem FPU !!!

MensagemEnviado: 09 Out 2013 13:49
por proex
Acho que o consumo de corrente do chip nao aumenta só porque vc ta fazendo calculos.

Re: Cortex M4 sem FPU !!!

MensagemEnviado: 09 Out 2013 14:43
por vtrx
Acho que o consumo de corrente do chip nao aumenta só porque vc ta fazendo calculos.

Tambem acho pois a FPU é uma unidade a parte que gera consumo próprio com seus registros etc.

Re: Cortex M4 sem FPU !!!

MensagemEnviado: 09 Out 2013 15:02
por RobL
Sim, haverá aumento do consumo, se ela ficar sendo usada por maior tempo para realizar cálculos, os quais uma FPU reduziria o número de ciclos.
No caso é a duração do cálculo (aumento dos ciclos) que causará aumento do consumo.
Mesmo considerando o aumento do consumo do hardware da FPU, ainda teremos redução no consumo comparado a uma ALU(bem maior que uma FPU em consumo de energia) comum processando esses cálculos.
O uso da FPU é técnica recomendada por todos os fabricantes para redução do consumo de energia, quando se tem cálculos massivos.

Re: Cortex M4 sem FPU !!!

MensagemEnviado: 09 Out 2013 15:27
por Rodrigo_P_A
o pessoal esquece que CMOS consome quando está fazendo as coisas, e que praticamente não consome quando está parado!

Re: Cortex M4 sem FPU !!!

MensagemEnviado: 09 Out 2013 15:50
por andre_luis
RobL escreveu:Sim, haverá aumento do consumo, se ela ficar sendo usada por maior tempo para realizar cálculos, os quais uma FPU reduziria o número de ciclos. No caso é a duração do cálculo (aumento dos ciclos) que causará aumento do consumo.


se o sistema vai entrar em modo sleep, faz todo sentido a necessidade da FPU, mas caso contrário, mesmo uma operação de NOP não consome constantemente energia ? Como o uC executa as instruções sequencialmente, estaria sempre consumindo energia na mesma taxa do Clock.



+++

Re: Cortex M4 sem FPU !!!

MensagemEnviado: 10 Out 2013 02:26
por msamsoniuk
RobL escreveu:Marcelo Sam : Qualquer divisão simples que dê um irracional, no qual se quer certa precisão, já dá muitos ciclos sem FPU, em torno de 15X . Dependendo do método usado em outras operações, chegam até 6000 ou 11000 ciclos se usar Leibnitz ou Euler respectivamente. Com FPU teríamos em torno de 482 e 1763 para tais operações (em um CM4).

Marcelo_asm: Sim tem várias opções, mas não pelo preço da linha K20, K40 que é anunciado como tendo FPU, mas é opcional. E este opcional se quer existe cotado na DigiKey, por exemplo.
O que estava super interessante é ter um K20 com 64Kb com FlexRam, "FPU", DSP, etc, por U$2.00 para 250 peças .

Nota: No post anterior: 4 ciclos contra 654 ciclos le-se 65 ciclos.


hmmm entendi. mas pq ao inves de dividir a/b em 4 ciclos vc nao multiplica pelo reciproco a*(1/b) em 1 ciclo? a vasta maioria dos DSPs e FPGAs usa essa tecnica faz decadas e o resultado eh muito bom.

Re: Cortex M4 sem FPU !!!

MensagemEnviado: 10 Out 2013 07:57
por andre_luis
Marcelo Samsoniuk escreveu:...mas pq ao inves de dividir a/b em 4 ciclos vc nao multiplica pelo reciproco a*(1/b) em 1 ciclo?...


Nesse caso aí, não continuaria tendo de ser feita uma divisão (1/b) ?
Se b fosse um constante inteiro potencia de 2 ( b=2^n ), aí daria para fazer a divisão com 1 operação, já durante a compilação : ( a>>n ).


+++

Re: Cortex M4 sem FPU !!!

MensagemEnviado: 10 Out 2013 08:24
por RobL
Um dia será possível uma divisão qualquer, não trivial, com a precisão desejada, ser feita em um ciclo, em um multiplicador. Mas ainda não dá.
Certamente, tendo FPU, a engenharia de software do compilador saberá decidir, cada caso, se manda para a FPU ou se faz pelo inverso.

Em 8 bits sempre uso este processo e somente com unsigned. Nunca se usa 1/b (em micros capengas) e sim (1*2^n)/b ou até mesmo em base 10(com mais processamento), quando for algo simples para um display. Basta mudar o ponto decimal, para o ajuste .
No caso base 2, ao final é só deslocar para à direita. Provavelmente, o compilador já dará sua contribuição, transformando em produto com inteiros.