Arquivo para categoria ARM

ARMando…

Quantos computadores(PC’s e Notebook’s) há em sua casa, no seu trabalho. Ok, agora pare e pense por quantos embarcados você passou, aqueles sistemas que você chama de “burro” porque só faz um tipo de tarefa. São eles telefones celulares(em especial os smartphones), impressores de rede, routeadores, televisores, etc, todos aqueles que desempenham alguma função sem sua intervenção humana(tirando a parte de ligar e desligar da tomada).

Acredite, não são “burros” assim, alias, a sua complexidade pode envolver muito estudo, já que a concorrência não dá trela, e cada nova mudança em um device driver requer um bom trabalho pra embarcar a solução em pouco espaço de memória.

Por baixo de tudo há um processador, seja no seu desktop ou dentro de algum microcontrolador, mas cada um com sua particularidade. O mais comum hoje em dias são os Intel’s e Arm’s, e bora lá alguns MSP’s, AVR’s e Atmel’s também, dependendo do grau de necessidade do seu sistema.

Pois bem, o que seria ARM? Advanced RISC Machine óbvio não é? Talvez, mas voltando ao primário… RISC, é uma arquitetura de computadores que leva em consideração a simplicidade do hardware com um conjunto de instruções mais simples, exigindo mais do programador(em ASM) para elaboração de algum programa. Isto seria pior então? Não, por se tratar de simplicidade também o seu CPI(Cycles per Instruction) é baixo, assim comandos ASM tem valores de ciclos por instrução inferiores, próximo de 1, invés da arquitetura CISC(Complex Instruction Set Computer) que em média tem valores superiores. Agora dá pra entender quando ficamos felizes quando alguma plataforma ARM chega a 1GHz, enquanto estamos falando já em 3GHz nos CISCs, de maneira grosseira o RISC gasta menos tempo para um comando, mas usa mais instruções que o CISC, que usa mais tempo para apenas um processo. Confuso? Veja este link de um exemplo de CISC e este outro link para RISC, onde o link para o site da Intel mostra a utilização do AVX uma instrução capaz de trabalhar com até 256bits, bem leiam…

Não é só isso a diferença entre essas duas tecnologias, vale ressaltar outros detalhes como maior número de registradores no RISC, isso dá a possibilidade de não precisar armazenar dados internamente ao processador e não precisar recorrer a gravação em memória. Tudo bem que memória é rápida, mas registros internos ao processador é muito mais rápido, imagine então parar o que você esta fazendo no processador para acessar um dado externo, viu?

Parece que a computação de hoje convergiu para poucas famílias invés de aumentar. Cheguei a estudar em computadores com processadores da serie Sparc, e hoje só temos usado Intel Intel Intel Intel, nada que tenha contra a eles, mas os modelos de negócio dos demais não foram resistentes o suficiente, onde sobrou a nós a briga entre Intel e AMD na computação pessoal.

A ARM foi diferente, ela só vende a “idéia” de como será feito o processador e outros que constroi seu próprio ARM, daí você vê ARM da Samsung, Qualcomm, etc. Até a Intel já andou fabricando no passado RISCs da ARM, leia sobre o XScale, antigo mas rodou bastante(isso é outra história).

Pelo que vejo ARM para aplicações multimídia veio pra ficar, ainda mais que atacou pelas beiradas na utilização de plataformas heterogênes, juntando-se com DSP’s ou processadores de video dedicado, deixando apena ao processador de uso geral as demais aplicações e dando melhor flexibilidade ao sistema.

Seja o Sandy Bridge da Intel ou o Fusion da AMD, o ARM também seja brincar bem com multimídia(ex. NVidia Tegra), à baixo preço como o consumidor gosta não é à toa que de celulares à set top box, ARM tomou conta.

Hoje é possível trabalhar com diversas arquiteturas a baixíssimo preço aos iniciantes com placas de menos de US$ 100 e até a conjuntos mais caros com placas robustas, ferramentas e suporte técnico de outras empresas, isso vai depender de sua necessidade e capital da sua ideia. Hoje eu tenho uma BeagleBoard xM, e através dela que faço meus testes além de usar compilador cruzado(cross compiling) ou emuladore(Qemu), e confesso não ter usado 10% do potencial dessa placa ainda.

Links Adicionais

http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Extended-Asm

http://www.coding.com.br/embarcado/opcode-stats/

:wq!

Deixe um comentário