AVR clock/instrução vs outros uC

Software e Hardware para ATMEL

Moderadores: 51, guest2003, brasilma

AVR clock/instrução vs outros uC

Mensagempor eletroinf » 10 Ago 2016 12:20

Extraído da piclist, bem interessante.

A tecnologia dos AVRs difere da maioria dos outros uCs, e é ai que ele ganha disparado.

Os outros uCs dividem o clock e o mantém estável por todo o chip, cada clock do cristal efetua uma "onda de processamento" interno, alguns chips necessitam 4 ondas, outros 12, como é o caso dos 8051 tradicionais. Isso é feito assim pois a tecnologia eletronica usada tem que ser sincronizada e precisa, pulsos quadradinhos e com tempos bem definidos.

No AVR é diferente, ele cria inumeros minusculos atrasos no clock, o que produz uma cascata de pulsinhos que seguem o clock mestre. Cada pulsinho desses defasado gera uma onda de processamento praticamente independente das outras ondas. Acontece que certas coisas não precisam ser sincronizadas, basta que ao necessitar do resultado, ele esteja esperando pronto. Isso é quase uma onda analógica, coisas acontecem e o resultado fica esperando para ser usado. Determinados atrasos buscam resultados, outros disparam a operação de determinados circuitos. Em certos atrasos os resultados são colhidos e alimentam outros circuitos que irão iniciar a operação naquele momento. Ou seja, se fosse considerar tudo o que acontece, um AVR rodando a 16MHz seria equivalente a usar um clock de quase 100MHz, mas não isso, são os pequenos atrasos que causam tal diferença.

Essa tecnologia é muito dificil de ser imitada, e também foi usada nos uCs da familia 8051 da Atmel, que reduziu a divisão do clock de 12 para 4, E PARA SER mais ou menos compativel com o 8051 tradicional, pois eles poderiam fazer o 8051 rodando em single clock, como fizeram no AVR. Isso também foi estratégia de marketing para promover os AVRs, senão todo mundo continuaria usando os 8051 rodando a single clock e mataria os AVRs.

A Dallas não teve esse freio, e produziu 8051 single clock, usando tecnologia similar.

O problema dessa tecnologia é a qualidade e truques que poucos sabem fazer.

Um dos maiores problemas que forçam os fabricantes a dividir o clock, é exatamente reduzir a sensibilidade do chip à RFI e ruidos eletromagnéticos que faz o chip se perder, dar reset, etc. Dividindo o clock e cadenciando tudo separadamente, alivia-se tais problemas. Os fabricantes que não liberam chips com single clock cycle, é porque ainda não dominaram tal tecnologia que a Atmel já havia dominado desde o início, e a Dallas seguiu nos mesmos passos.

O problema de toda tecnologia é exatamente clock alto. Quanto mais clock, muito mais crítico e problemático de projetar o chip e produzi-lo, acaba custando caro demais. Então o macete é usar o mesmo clock, porém com minusculos atrasos e simular um clock muito mais alto, como é o AVR, mas isso implica em técnicas que poucos conhecem.

Quando eu vi isso, os multiplos registradores, e o instruction set estilo INTEL, abracei os AVRs, pois sabia que estavam anos à frente.


W. Lipnharski



Talvez por isso a Arduino escolheu esses uCs.
"De cada um segundo sua capacidade a cada um segundo sua necessidade."
Avatar do usuário
eletroinf
Word
 
Mensagens: 948
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Re: AVR clock/instrução vs outros uC

Mensagempor tcpipchip » 10 Ago 2016 21:32

O W. Lipnharski sempre gostou do 8051 :)
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: AVR clock/instrução vs outros uC

Mensagempor andre_luis » 10 Ago 2016 23:13

tcpipchip escreveu:O W. Lipnharski sempre gostou do 8051 :)


Esse nome não me é familiar, mas...o primeiro resultado que encontrei na Web foi aqui no ASM51:
viewtopic.php?p=7838#p7838
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: AVR clock/instrução vs outros uC

Mensagempor pamv » 11 Ago 2016 00:04

andre_teprom escreveu:
tcpipchip escreveu:O W. Lipnharski sempre gostou do 8051 :)


Esse nome não me é familiar, mas...o primeiro resultado que encontrei na Web foi aqui no ASM51:
viewtopic.php?p=7838#p7838


Ele deixa claro "Eu sou um consultor Atmel na Florida..."
pamv
Word
 
Mensagens: 842
Registrado em: 20 Jun 2016 21:47

Re: AVR clock/instrução vs outros uC

Mensagempor msamsoniuk » 11 Ago 2016 03:40

pois eh, tem um fundo de fato e ficcao nessa historia... o fato eh que essa historia de multiplas fases de clock existe, porem ela eh bem antiga.

lah nos primordios da decada de 70, o 8080 usava dois clocks assimetricos:

Imagem

nao tenho muita certeza de como funciona: aparentemente eles usam a borda positiva de Φ1 e de Φ2, que sao distintas, mas as bordas negativas sao coincidentes. assim daria para gerar no maximo 3 estados distintos por clock... se for 3 estados distintos por clock de 2MHz, seria equivalente a 6MHz. mas acredito que sao apenas 2 estados por clock, o que seria equivalente a 4MHz. nao lembro muito sobre a capacidade de execucao: aparentemente ele requer pelo menos 4 clocks TTL por instrucao, o que daria 1 MNOP/s (milhoes de NOPs por segundo).

detalhes sinistros: pelas indicacoes de TΦ1 e TΦ2 eh de se pensar: se forem 2 estados, entao o tempo de propagacao flip-flop/flip-flop eh a soma dos tempos. se forem 3 estados, entao sao tempos distintos: 2 saltos de estados sao com TΦ1 e um com TΦ2.

o 6501, da mesma epoca, tambem usava dois clocks assimetricos:

Imagem

aparentemente, nenhuma das bordas eh coincidente, entao daria para usar tanto a borda positiva quanto negativa de Φ1 e de Φ2, gerando 4 estados distintos por clock. para um clock de 2MHz, os 4 estados distintos seriam equivalentes a um clock de 8MHz. como possui duas vezes mais estados por clock, a performance teorica seria de 2 MNOP/s.

detalhe sinistro: os valores de PWHΦ1 e PWHΦ2 sao bem bons, quase 1/2 periodo do oscilador... mas TD eh incrivelmente curto. o bom senso indica que deveria ter apenas 2 estados por clock...

bom, o 6502 possui um unico clock, porem tem uma maracutaia: ele gera a outra fase internamente. assim, se vc imaginar que o clock abaixo eh Φ2 e inferir o clock Φ1 segundo a relacao acima, podemos facilmente verificar alguns estados distintos correspondentes a Φ1:

Imagem

detalhe sinistro: embora o bom senso indique 2 estados por clock, nitidamente o desenho mostra em suas operacoes de read/write pelo menos 3 estados diferentes por clock. eu dei uma fucada em datasheets antigos e os diagramas de bus mostram claramente 3 estados/clock... nos diagramas do 65C816, que eh mais moderno, nitidamente parece existir 4 estados por clock. acho que nunca vou conseguir descobrir...

bom, na decada de 80, porem, a maioria dos processadores usava um unico clock e dois estados por clock, como no caso do 68000:

Imagem

se fosse comparar com os outros, a 2MHz, seria equivalente a 4MHz apenas. mas trata-se de um componente muito mais moderno: para um clock tipico de 16MHz, a capacidade com dois estados por clock jah seria equivalente a 32MHz. porem ele usa 8 estados por instrucao, o que limita a performance em 4MNOP/s.

o pulo do gato eh justamente esse: se vc diminuir a quantidade de clocks, vc consegue aumentar o clock. e na decada de 90 comecaram a surgir processadores trabalhando com uma unica borda de clock, como por exemplo, o 68040:

Imagem

neste caso, se fosse comparar com os 2MHz dos circuitos antigos, a performance efetiva seria de apenas 2MHz realmente. mas trabalhando com uma unica borda de clock esse componente consegue rodar a 40MHz. e a evolucao tecnologica eh notavel tambem na quantidade de estados por instrucao: 1 estado por instrucao, ou seja, performance de 40MNOP/s.

a historia nao acaba por aih: ainda na decada de 90 surgiram processadores super-escalares, vetoriais, etc. mas daih jah eh outra historia.

o fato eh que, conhecendo essa breve historia, dah para concluir que aquela historia do AVR tem um fundo de fato e um fundo de mito:: a tecnica existe e foi usada no passado, mas o AVR eh da decada de 90 e me parece bem improvavel que utilize multiplos estados por clock ou multiplas fases de clock. muita gente ainda prega as vantagens do 6502 hoje em dia, mas o fato eh que o 6502 eh "bad design": seria o mesmo que querer ressussitar o fusca. foi legal em sua epoca, mas passou. de fato, eh citado sempre que se trata de um RISC classico, com pipeline simples de dois estagios. mas como eh fechado, nao existem muitos detalhes...

bom, nao temos como fucar nas entranhas do AVR, mas dah para ilustrar como funciona:

https://darklife.org/marcelo/public/xilinx/src/core.v

este eh o codigo de um pequeno processador RISC que eu projetei em um final de semana qualquer para finalidades didaticas: malemal possui 100 linhas de codigo verilog, ocupa 1/3 de uma FPGA pequena de 5 obamas, possui 16 registros de 16 bits, roda tranquilamente a 80MHz e roda deterministicamente todas as instrucoes em apenas um clock, incluindo a instrucao de mutiplicacao 16x16 com shift integrado. como a ROM eh armazenada em blockram e ela requer um clock para leitura, acaba ficando implicito o pipeline simples de dois estagios (busca/executa), muito similar ao que li por aih do AVR. um fato importante: ele consegue atingir a casa dos 80MIPs justamente pq roda com uma unica borda de clock.

bom, estudando esse processador simples, dah para perceber a essencia do negocio: suponha que vc tem um par de flip-flops e entre eles tenha uma certa logica combinacional que consome um tempo t (por exemplo, o multiplicador de 16x16 bits). esse tempo t determina o periodo do seu clock, de modo que, quando o clock registra uma entrada no primeiro flip-flop, a saida que muda passa pela logica combinacional com delay t a tempo de ser registrado pelo segundo flip-flop. se vc usar duas fases, vc pode ter uma fase no primeiro flip-flop e outra fase no segundo. mas o tempo t de propagacao nao muda: assim, vc vai ter um tempo t entre uma fase e outra, portanto o periodo tem que ser 2t. assim aquele processador que rodava a 80MHz acaba tendo que rodar a 40MHz, ou seja, um desastre completo! talvez seja possivel adicionar pipelines extras e tentar compensar essa perda, mas o projeto comeca a complicar para, aparentemente, atingir exatamente o mesmo resultado que jah tinha antes. se eh para adicionar pipelines e complicar, seria mais interessante entao manter uma borda unica e partir para algo acima dos 80MHz. de fato, com pipelines, acredito que seja possivel atingir os 160MHz com facilidade. projetinho de fim de semana, usando talhadeira e martelo aqui na garagem! francamente, nao sei qual seria a dificuldade e/ou custos para a atmel ou qq outro projetar processadores melhores do que isso. ou talvez sejam apenas uma fachada para produtos chineses de baixa qualidade, sei lah.

bom, a conclusao eh que eu diria entao que parece bastante improvavel que o AVR use multiplas fases de clock. nao eh impossivel, afinal o 68000 continua sendo fabricado como era em 1979, usando duas bordas de clock... eles apenas fizeram um xerox dos filmes com uma reducao de 50% para aproveitar rebarbas das bolachas de silicio onde fabricam os powerpcs, daih os 68000 atuais andam rodando 4x mais rapido do que o datasheet indicam hehehe mas fora isso, eh o mesmo chip da decada de 80... o AVR eh muito mais moderno, parece dificil acreditar que alguem iria abrir um portal dimensional e trazer projetistas da decada de 70 para fazer algo do genero. entao eu acho que essa historia aih nao passa de ficcao! :)

de forma similar, a escolha para o arduino me parece muito mais acidental do que intencional: nao me parece existir absolutamente nenhum motivo especial para a escolha dele.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Re: AVR clock/instrução vs outros uC

Mensagempor tcpipchip » 11 Ago 2016 06:40

Eu conheço o cara deste de 1995...até comentou minha dissertação na época :)

Subject:
Re: Philips Microcontroller Forum Digest - Issue : 970313 at 21:51
Date:
Sun, 16 Mar 1997 08:15:41 -0600 (CST)
From:
WAGNERL@ix.netcom.com
To:
mw@inf.ufsc.br

Aloooooo pessoal, eh um enorme prazer ver anunciado no forum da Philips, Internet,
o seu 89C51 teste remoto de software. Parabens. Moro nos Estados Unidos e eh muito
bom fazer todo este mundao de ignorantes ver que no Brasil nao tem soh cobras,
jacares, samba, carnaval e Rio de Janeiro. Gracas a Deus nos temos uma das maiores
fabricas de cerebros, atrevimento no bom sentido, coragem, vontade e pricipalmente
determinacao. Ahhh como seria bom se pudessemos usar tudo isto para dar um basta
nesta robalheira e falta de justica... Basta ver o que se consegue fazer para um
carnaval... muita vontade e trabalho para muito pouco... se pudessemos realmente
por isto em pratica para o bem do Pais... Por um lado eh muito bom que o mundo nao
saiba bem o que nos temos no Brasil, porque no momento certo serah tarde demais
para eles e muito bom para nos brasileiros... espero. Todo o mundo fala em
proteger o mercado, desenvolver chips, etc, mas... quando eh que poderemos fabricar
um simples 80C51 e colocar no mercado para vender no varejo por tao somente $3.00 como eh aqui nos Estados Unidos? E aquele bando de corruptos que vao querer levar vantagem neste negocio e ganhar milhoes de dolares, que obviamente desviarao para o exterior? Eh interessante, ninguem fala em acabar com a robalheira, de verdade, serah que para proteger o
proprio rabo?
De qualquer forma, parabens mesmo! Vamos em frente que o futuro estah aih logo em
frente.
Um grande abraco de um gaucho e fanatico pela familia 8xx51. Contem comigo se
precisarem de alguma coisa daqui... se puder ajudar.
Wagner.
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: AVR clock/instrução vs outros uC

Mensagempor tcpipchip » 11 Ago 2016 06:43

Bela explicação Marcelo, posso copiar ?
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: AVR clock/instrução vs outros uC

Mensagempor msamsoniuk » 11 Ago 2016 11:46

tcpipchip escreveu:Bela explicação Marcelo, posso copiar ?


certamente! tem alguns pontos em aberto ainda, mas eh mais ou menos por aih a ideia. e se a figura do 68040 nao carregar, eh soh abrir separadamente para aceitar o certificado SSL expirado do site hehehe
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Re: AVR clock/instrução vs outros uC

Mensagempor eletroinf » 13 Ago 2016 10:55

Marcelo, que confusão, tu explica como é o 68 e conclui que o que o cara disse é suspeito pela forma como o 68 é... ?????????
"De cada um segundo sua capacidade a cada um segundo sua necessidade."
Avatar do usuário
eletroinf
Word
 
Mensagens: 948
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Re: AVR clock/instrução vs outros uC

Mensagempor pamv » 13 Ago 2016 11:59

eletroinf escreveu:Marcelo, que confusão, tu explica como é o 68 e conclui que o que o cara disse é suspeito pela forma como o 68 é... ?????????


Eu não entendi assim. Eu entendi que o Marcelo citou que o 6501 usava o mesmo sistema de clock assimétrico do 6800 e depois o 6502 passou a usar um clock simétrico externo que internamente podia ser dividido, etc. Esse tipo de coisa continuou com o 6809E q usava dois clocks em quadratura e isso tinha muito a ver com a comunicação com os chips de suporte e memória.
Na verdade esse debate pic vs avr lembra muito as cpu wars dos anos 80 entre os defensores do Z80 e os defensores do 6502. Em cada caso o sucesso deu-se por motivos diferentes, o Wozniak conta que escolheu o 6502 porque era bem mais barato que o 6800, e o Z80 fez sucesso porque era compatível com o 8080, barato e eficiente.
Eu acredito que a opção pelo AVR no Arduino tem a ver com o suporte à linguagem de alto nível que permitiu simplificar barbaramente a programação, afinal ele foi feito visando o ensino.
Quanto aos aspectos internos do 6502, Marcelo, vc já brincou neste site? http://www.visual6502.org/
pamv
Word
 
Mensagens: 842
Registrado em: 20 Jun 2016 21:47

Re: AVR clock/instrução vs outros uC

Mensagempor msamsoniuk » 13 Ago 2016 17:15

pamv escreveu:
eletroinf escreveu:Marcelo, que confusão, tu explica como é o 68 e conclui que o que o cara disse é suspeito pela forma como o 68 é... ?????????


Eu não entendi assim. Eu entendi que o Marcelo citou que o 6501 usava o mesmo sistema de clock assimétrico do 6800 e depois o 6502 passou a usar um clock simétrico externo que internamente podia ser dividido, etc. Esse tipo de coisa continuou com o 6809E q usava dois clocks em quadratura e isso tinha muito a ver com a comunicação com os chips de suporte e memória.
Na verdade esse debate pic vs avr lembra muito as cpu wars dos anos 80 entre os defensores do Z80 e os defensores do 6502. Em cada caso o sucesso deu-se por motivos diferentes, o Wozniak conta que escolheu o 6502 porque era bem mais barato que o 6800, e o Z80 fez sucesso porque era compatível com o 8080, barato e eficiente.
Eu acredito que a opção pelo AVR no Arduino tem a ver com o suporte à linguagem de alto nível que permitiu simplificar barbaramente a programação, afinal ele foi feito visando o ensino.
Quanto aos aspectos internos do 6502, Marcelo, vc já brincou neste site? http://www.visual6502.org/


entao, foi exatamente isso... lembro bem que o 8080, 6801 e 6501 usavam dois clocks com fases diferentes e bem assimetricas:

Imagem

eu peguei uma documentacao mais detalhada da intel que afirma que apenas as bordas positivas dos clocks sao usados, assim em cada clock temos dois diferentes estados logicos. no 6502, porem, encontrei um texto que afirma que as fases nao coincidentes permitem 4 bordas distintas (ele possui um unico clock, mas gera internamente um par de clocks similares ao 6501 e 6801). assim sendo, um 6502 de 1MHz deveria realmente ter performance equivalente a um 8080 de 2MHz. eh algo interessante, mas nao tenho certeza se vale a pena ficar fucando hehehe

o Z80 jah usava clock unico, mas usava as duas bordas do clock, como a maioria dos chips usariam durante a decada de 80. usei o 68000 como exemplo pq algumas partes das entranhas dele sao bem conhecidas e eles usam realmente as duas fases do clock. e entao, na decada de 90 os componentes comecam a migrar para uma borda unica de clock. como o atmel eh da decada de 90, achei que seria dificil usarem alguma coisa diferente dos outros. e de fato, esse paper comprova que ele usam uma unica fase de clock:

http://www.atmel.com/images/doc7903.pdf

eu conheco o site do 6502, mas nunca encontrei efetivamente uma temporizacao interna mostrando como as coisas funcionam nas diferentes fases de clock. tambem nao sei se eh um topico que valha a pena ir a fundo... para processadores, faz praticamente 20 anos que se usa apenas clock de fase unica. seria dificil o AVR ser diferente, de fato, seria ateh preocupante se ele usasse um design de 40 anos atras! :)

os geradores de clock tipicos nas FPGAs conseguem gerar com facilidade 4 fases de clock perfeitamente sincronos, mas o uso eh meio restrito a algumas aplicacoes de alta velocidade. por exemplo: vc pode fazer uma interface de comunicacao de alta velocidade que transmite na borda de subida e amostra na borda de descida. isso garante que, para um dado clock, os dois lados vao estar mudando os dados no bus em um momento nao coincidente com a amostragem dos dados, o que evita meta-estabilidade. porem quando a velocidade aumenta demais, vc acaba tendo um clock para as linhas de tx e outro clock para as linhas de rx, de modo que tanto o clock quanto as linhas permanecam sincronizadas, o que implica que os blocks de TX e RX vao funcionar de forma assincrona. a interface GMII funciona dessa forma: o TX e RX funcionam de forma independente, cada um formado por 8 bits de dados, um clock de 125MHz e um enable indicando que o frame estah presente.

enfim, o fato eh que o mito do AVR foi desvendado: eh um processador moderno como qualquer outro, o que eh um alivio! podem usar sem preocupaca! :) hahaha
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Re: AVR clock/instrução vs outros uC

Mensagempor msamsoniuk » 13 Ago 2016 17:29

eletroinf escreveu:Marcelo, que confusão, tu explica como é o 68 e conclui que o que o cara disse é suspeito pela forma como o 68 é... ?????????


usei como exemplo de sua geracao:

multi-clock, multi-fase: 8080, 680x, 650x, etc... processadores 8 bits do comeco da decada de 70
clock simples, duas fases: Z80, 68000, etc... processadores de 8, 16 e 32 bits do final da decada de 70 e boa parte da decada de 80
clock simples, uma fase: 68040, 80486 (?), powerpc, etc... processadores modernos da decada de 90 para diante

como o AVR eh da decada de 90, parece improvavel que a historia de multiplas fases de clock seja real... um paper da propria atmel torna claro isso! :)
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Re: AVR clock/instrução vs outros uC

Mensagempor brasilma » 13 Ago 2016 22:02

Uma opção que também penso ser possível para viabilizar a execução de uma instrução por ciclo da clock é com a modificação da estrutura de hardware envolvida no processo.

A operação de modo geral envolve os passos de busca da próxima instrução a ser executada, decodificação, e alguns passos para execução, em um processo cíclico e serial. Se ao invés disso todos os passos forem executados simultaneamente/paralelamente perde-se o tempo apenas na primeira instrução, depois disso "sai" uma a cada ciclo.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Re: AVR clock/instrução vs outros uC

Mensagempor KrafT » 13 Ago 2016 22:11

E eu que achei o circuito abaixo o máximo quando meu professor de 8051 do Senai me mostrou o gerador de pulso único:

Imagem
"..."Come to the edge," he said. And so they came. And he pushed them. And they flew."― Guillaume Apollinaire
Avatar do usuário
KrafT
Dword
 
Mensagens: 2228
Registrado em: 11 Out 2006 14:15
Localização: Blumenau -SC

Re: AVR clock/instrução vs outros uC

Mensagempor msamsoniuk » 14 Ago 2016 03:20

brasilma escreveu:Uma opção que também penso ser possível para viabilizar a execução de uma instrução por ciclo da clock é com a modificação da estrutura de hardware envolvida no processo.

A operação de modo geral envolve os passos de busca da próxima instrução a ser executada, decodificação, e alguns passos para execução, em um processo cíclico e serial. Se ao invés disso todos os passos forem executados simultaneamente/paralelamente perde-se o tempo apenas na primeira instrução, depois disso "sai" uma a cada ciclo.


acho que qualquer processador projetado no inicio da decada de 90 jah consegue atingir performance de pico de 1 instrucao/clock usando apenas uma fase do clock. eventualmente, existem outros detalhes externos a serem considerados: numero de barramentos, largura dos barramentos, caches, memorias, etc. mas em condicoes ideais, com barramentos de dados e instrucoes separados, barramento de instrucoes na largura das instrucoes e caches capazes de garantir zero wait-states, a tendencia eh qualquer processador moderno atingir a performance de 1 instrucao/clock. no caso do AVR, pelo que encontrei por aih, ele usa um pipeline de 2 estagios: um deles com fetch e decode, outro com busca de operando, execucao e escrita. executar 1 instrucao/clock hoje em dia nao eh o desafio... o problema eh executar rapido. no caso do AVR, a sequencia logica de busca de operando, execucao e escrita requer um caminho logico relativamente longo, o que se traduz em um certo tempo de propagacao. esse tempo eh justamente o periodo do clock que vai ser possivel rodar. se essa sequencia fosse quebrada em 3 estagios e a sequencia fetch e decode quebrada em 2 estagios (totalizando cinco), provavelmente seria possivel rodar com clock 2 ou 3 vezes maior. mas para o ganho de performance ser real, teria que mexer no compilador de modo que ele gere codigo que evite interlock dos pipelines, o que comeca a acontecer quando se aplica esse tipo de otimizacao no hardware. sem a otimizacao no compilador, os interlocks dos pipelines comecam a atuar meio que randomicamente. na pratica, se vc conseguir um clock 3x maior aumentando o numero de pipelines, existe o risco dos interlocks se tornarem tao constantes em certos segmentos de codigo que que o processador praticamente vai rodar com a performance que tinha originalmente.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Próximo

Voltar para AVR

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x