Como os microcontroladores atingem desempenho> 1 MIPS / MHz?

19

Como este , que faz 1,49 DMIPS / MHz. Mesmo com o pipelining, ainda há apenas 1 estágio de execução por ciclo, não é?

Federico Russo
fonte
A única coisa superescalar típica neste segmento de microcontroladores é o MADD - multiplique e adicione em um único ciclo. Embora isso não ajude muito em Drystone.
precisa saber é o seguinte
Os DSPs são microcontroladores e podem ter implementações de hardware de transformação de Fourier, multiplicação de matriz etc. Eles também contam? Esta medida se aplica aqui? Mesmo DPSs muito antigos poderiam realizar 8 multiplicações em 16 registros diferentes em uma instrução.
vsz 21/08/12
5
Há mentiras, mentiras malditas e benchmarks ...

Respostas:

18

DMIPS e MIPS não são os mesmos. DMIPS significa "Dhrystone MIPS" e é um padrão para comparar o desempenho de diferentes microcontroladores / microprocessadores em diferentes conjuntos de instruções. O padrão não é mais tão novo (*); portanto, o que o processador de referência poderia fazer a 1 DMIPS / MHz em 1 segundo pode levar um controlador mais avançado a 670 ms na mesma velocidade de clock, apenas porque ele fará algumas ações em 1 instrução enquanto o outro controlador pode precisar de 2 instruções ou uma instrução que exija mais ciclos da máquina.

Uma arquitetura de 16 bits, por exemplo, normalmente terá um desempenho Dhrystone melhor do que uma arquitetura de 8 bits e uma de 32 bits, como a que você está se referindo, ainda mais.


(*) m.Alin refere-se ao benchmark CoreMark mais recente . Observe que isso está escrito em C, então na verdade você também está incluindo o desempenho do compilador no resultado (assim como Dhrystone, BTW).

stevenvh
fonte
Mas os resultados do Dhrystone também dependem do compilador (também está escrito em C), certo? Da Wikipedia: Grande parte do Dhrystone é suscetível à capacidade de um compilador de otimizar o trabalho; portanto, é mais uma referência compilador, em seguida, um ponto de referência hardware
m.Alin
1
@ m.Alin - Claro, eu não queria sugerir o contrário. Vou esclarecer minha resposta. Obrigado pelo feedback.
precisa saber é o seguinte
10

DMIPS é uma medida relativa e não absoluta. Ao contrário do MIPS, ele realmente mede a rapidez com que o uC pode fazer algo útil em vez da rapidez com que executa as instruções.

Como qualquer benchmark, ele tem suas limitações, mas uma maneira simples de ver é a rapidez com que ele pode concluir o código de benchmark em comparação com um VAX 11/780 (uma máquina de 1 MIPS).
Por exemplo, se o seu uC concluir o benchmark 100 vezes mais rápido do que um VAX 11/780, você tem uma máquina 100DMIPS. Se ele roda a 100 MHz, é classificado em 1 DMIPS / MHz.

Observe que o DMIPS anunciado geralmente é inatingível no uso normal, especialmente em uCs grandes com velocidade do flash, pré-busca, tempos de espera / falhas etc. Aqui está uma boa discussão sobre o desempenho do PIC32 DMIPS. Este link possui algum código Dhrystone para microcontroladores.

Oli Glaser
fonte
Seu link da wikipedia diz que o padrão Drystone já tem 28 anos. Você sabe se existem mais ferramentas de medição de desempenho atualizadas? Obrigado.
Federico Russo
3
@FedericoRusso CoreMark
m.Alin
@FedericoRusso: A questão da medição de desempenho é que ela é comparativa. Se você alterar seu método de comparação, todos os resultados existentes serão inúteis. Daí a longevidade de Dhrystone.
Clifford