Página 1 de 1

ARM7 versus CORTEX

MensagemEnviado: 15 Jun 2008 14:05
por proex
Eu tenho ouvido muito falar nesse tal de Cortex, uma versão da arquitetura ARM mas nunca ficou claro quais sao as diferenças, vantagens e desvantagens entre eles.

Resolvi comparar os dois abaixo:

Luminary: LM3S610, 50MHz, 32kFlash, 8k SRAM, 2 UART, 1 I2C, 2x10bit ADC, $6.57 para 100 unidades.

NXP: LPC2103, 70 MHz, 32kFlash, 8k SRAM, 2 UART, 2 I2C, 8x10bit ADC, $2.92 para 100 unidades.

De cara o LPC é 2.25 mais barato, tem 4 vezes mais A/Ds, tem 2 I2Cs e é 1.4 vezes mais rápido.

No datasheet da NXP, o LPC consome 0.28mW/MHz contra 0.19mW/MHz do Cortex. (consumo somente da CPU, periféricos desligados).

O NXP adota arquitetura Von Neumann. O Cortex adota a arquitetura Harvard.

O tempo de resposta para atendimento de uma interrupçao é de 12 ciclos no CORTEX contra 48 ciclos no ARM ou seja, o CORTEX atende uma interrupçao 4 vezes mais rápido que um ARM.

O CORTEX tem alguns recursos que no ARM precisam ser colocados por fora, se precisar: brown-out detector e on-chip temperature sensor.

Mas tem alguns detalhes que são estranhos.

O CORTEX usa 33mil portas lógicas na CPU (excluídos periféricos)
O ARM usa 60mil portas.

Esse corte de quase a metade de portas lógicas no CORTEX deveria influir no custo final do chip mas o que vemos é que acaba saindo muito mais caro para nós. Isso é muito estranho.

Atualmente os CORTEX disponibilizam muito menos pinos que os LPCs. Isso também deveria contribuir para um custo menor.

Existe ainda algumas diferenças básicas, entre eles, na forma de tratamento e de moviventaçao dos dados dentro do chip.

O CORTEX executa algumas instruções de DSPs como a Bit Reverso, usada em cálculos de FFT. No ARM isso precisa ser feito por software.

Nesse ponto, o CORTEX leva algumas vantagens sobre o ARM mas nada que justifique a grande diferença de preço, em relação ao desempenho final.

Particularmente penso como Steve Jobs, : Uma nova tecnologia só será viável economicamente se truxer no minimo 40% de redução de custo e 40% de aumento de desempenho.

Deve haver alguma grande vantagem nos Cortex que eu ainda nao consegui identificar.

MensagemEnviado: 15 Jun 2008 14:18
por xultz
Algumas comparações não foram muito felizes, proex.
Primeiro, não pode levar a pensar que todos os Cortex são Luminary, e todos os ARM7 são NXP.
Segundo, Cortex e ARM7 são cores. O que tem em volta influencia muto mais no preço final. E brown-out detector e on-chip temp sensor não têm nada a ver com o core, foi uma decisão da engenharia do chip colocar ou não este recurso. E você analizar, a linha LPC21XX e LPC23XX têm chip que aparentemente são idênticos, mas os 23 são mais baratos. O motivo é que a tecnologia empregada na fabricação destes são mais modernos e mais baratos.

Então, s eeventulamente (e eu aposto que isto esteja acontecendo) os LPCs estiverem vendendo muito melhor que os Luminary, o preço daqueles acabará caindo em relação a estes, independente de ter um core Cortex fodão ou um core PIC xexelento.

MensagemEnviado: 15 Jun 2008 21:29
por Monk
Compara com os cortex da ST, estes provavelmente serão mais baratos.

MensagemEnviado: 16 Jun 2008 01:39
por jeff
http://www.sabereletronica.com.br/secoes/leitura/483
http://www.embedded.com/columns/guest/206801769

ST: STM32F103C6T6, 72MHz, 32kFlash, 10k SRAM, 2 UART, 1 I2C, 1 USB, 1 CAN, 2x12bit ADC, $5,46 para 01 unidade, $4.58 para 100 unidades.
Na MOUSER, www.mouser.com

Abraços,
Jeff

MensagemEnviado: 16 Jun 2008 09:33
por Ander_sil

Re: ARM7 versus CORTEX

MensagemEnviado: 19 Jun 2008 19:55
por Viktor
proex escreveu:De cara o LPC é ........1.4 vezes mais rápido.


O clock pode ser mais alto, porém os 50MHz tornam o Luminary mais rápido que os 72MHz do NXP.

MensagemEnviado: 20 Jun 2008 14:21
por mastk
Harvard tente a ser mais lento que von neumann, principalmente em coisas complexas, não?

MensagemEnviado: 23 Jun 2008 08:46
por chipselect
[quote="mastk"]Harvard tente a ser mais lento que von neumann, principalmente em coisas complexas, não?[/quote]

Por quê harvard seria mais lento mastk?

MensagemEnviado: 23 Jun 2008 09:28
por Viktor
mastk escreveu:Harvard tente a ser mais lento que von neumann, principalmente em coisas complexas, não?


Harvard é mais rápido pois não precisa compartilhar o barramento com dados/instruções

MensagemEnviado: 23 Jun 2008 09:31
por Jorge_Francisco
chipselect escreveu:
mastk escreveu:Harvard tente a ser mais lento que von neumann, principalmente em coisas complexas, não?


Por quê harvard seria mais lento mastk?


Porque em Harvard fuma-se maconha e Von Neumann era um cara sério.Brincadeira,heheh.

Re: ARM7 versus CORTEX

MensagemEnviado: 01 Jul 2008 13:51
por polesapart
http://www.arm.com/products/CPUs/ARM_Cortex-M3.html

A tabelinha diz quase tudo. O que ela nao diz, está nas entrelinhas do texto, como o fato do cortex m3 possuir divisor de inteiros por hardware, o que além de acelerar certos tipos de operações, deixa o código menor, assumindo um programa em C e que o teu código faça divisão de variáveis e não de constantes (pq o compilador precisa ser muito ruim pra não compensar isto), por que a biblioteca de divisão genérica é meio gigante, especialmente naqueles ports em que o compilador usa a mesma rotina para 32 e 64 bits (ele enfia o código da de 64 bits logo de uma vez, que é maior).

Uma coisa que é interessante ressaltar é que o tempo de interrupção no cortex m3 é determinístico: assumindo memória com 0 wait-states, 12 ciclos de clock após a interrupção a primeira instrução do handler executa, 6 se já estava em modo de interrupção quando houve a ativação. No arm7tdmi não é bem assim: é relativamente fácil prever o pior caso (assumindo que o código não esteja espalhado com disable interrupts), mas não o caso médio, por quê o arm7tdmi funciona assim: quando uma interrupção ocorre, a instrução sendo executada completa, é só antes de executar a próxima que o core verifica que há uma interrupção pendente. No caso de uma instrução load/store multiple (ldm/stm, respectivamente), isto pode acarretar no pior caso. No caso ainda na linha da NXP, quando usando a flash com o módulo acelerador de memória, o determinismo diminui mais ainda.

A propósito, Na maioria das aplicações isto não quer dizer nada, pelo menos eu nunca trabalhei nem conheci quem tenha trabalhado com algo que precise de interrupções determinísticas na faixa das centenas de nanosegundos. :-)

Outro detalhe no cortex m3 é que o mapa de memória dele é universalizado e também o controlador de interrupções, isto significa que portar entre os diversos fornecedores de soluções baseadas em cortex m3 é teoricamente mais fácil do que entre os diversos de outros µCs, incluindo outros ARM, mas na prática eu não ponho minha mão no fogo.

MensagemEnviado: 01 Jul 2008 14:22
por xultz
Pessoal, não sei se vocês conhecem o polesapart (também conhecido por Alex), mas o cara é um crânio em programação, principalmente em Linux e mais recentemente embarcados.
Além de tudo, é super gente boa, eu recomendo vocês enxerem o saco dele com dúvidas, para que não pareça que eu sou o único no mundo que faz isso...

MensagemEnviado: 01 Jul 2008 16:45
por Ander_sil
Seja bem vindo Alex ao fórum...

mais um pra nóis pentelhar hehehe...

falo!

MensagemEnviado: 02 Jul 2008 11:26
por polesapart
Ander_sil escreveu:Seja bem vindo Alex ao fórum...

mais um pra nóis pentelhar hehehe...

falo!


E vc acha que eu não vou pentelhar vcs tbm? hehehe! Valeu!