Pergunta

Linus Torvalds costumava trabalhar para uma empresa processador chamada Transmeta. O processador fizeram foi um objecto com base no núcleo RISC. Se bem me lembro, a idéia era que o núcleo publicou um arbitrário e "camada de emulação de processador" atualizável (pode ser x86, PowerPC etc), que traduziu os opcodes de alto nível para o conjunto de instruções RISC núcleo.

O que aconteceu com essa idéia, e que na sua opinião foram os prós, contras e situações em que essa abordagem poderia ter tido uma vantagem (em termos de programação)?

Foi útil?

Solução

A empresa não fazer tão bem quanto eles esperavam, e acabaram por ser adquirida pela Novafora para ele é a tecnologia de economia de energia. ( http://www.novafora.com/pr01-28-09.html)

De todas as contas que eu estou ciente de, a tecnologia simplesmente não competir com os sistemas existentes. Eles ficaram muito aquém dos seus números de desempenho. Além disso, embora possa ter sido possível colocar outro tradutor no topo de seu projeto VLIW, eu não estou ciente de quaisquer produtos que eles produziram que fizeram. Eu não me lembro o chip Crusoe ser capaz de aceitar uma "tradução" de download alternativo microcódigo.

Eu pessoalmente possuía um dispositivo que usou um processador Crusoe, e enquanto ela certamente entregues na vida da bateria, o desempenho do dispositivo foi lúgubre. Parte da culpa provavelmente poderia ser nivelada na versão especial do Windows é utilizado, mas ainda era lento.

Na melhor das hipóteses, era bom para desktop remoto portátil.

IMHO, a tecnologia tem os mesmos benefícios que o software VM como .Net eo JVM:

  • A vantagem é que você provavelmente pode acelerar o código mais rápido com um solução de hardware (como IBM faz com é processadores acelerador Java) de JIT software puro.
  • A desvantagem é que você nunca terá a matéria desempenho que os processadores de execução código get nativa.

De algumas perspectivas que você pode pensar de chips x86 modernos como morphing código, embora como os muito especializados. Eles traduzem a arquitetura x86 em um RISC-como conjunto subinstruction mais eficiente, e depois executá-los.

Outro exemplo deste tipo de tecnologia poderia ser FPGAs que podem ser programados para emular em um nível circuito vários tipos de processadores ou circuitos matérias. Acredito que alguns sistemas Cray pode vir com "nós acelerador" deste tipo.

Outras dicas

Por um lado a maioria dos processadores CISC traduzir internamente suas opcodes para UOPs micro-ops que são semelhantes aos ops RISC. Pipelining e vários núcleos de ter fechado o gap em processadores RISC para o ponto onde é uma diferença muito pequena entre eles, se houver. Se você precisar de compatibilidade cruzamento da fonte C ou outra extremidade do conjunto da frente você pode usar LLVM. http://llvm.org/

pros óbvios:

  • Capacidade de executar qualquer sistema operacional (basta mudar a emulação do processador para o que é necessário)
  • Possibility (com suporte do kernel é claro) de executar binários para arquiteturas diferentes no mesmo processador / OS sem o suporte de software.

con Óbvio:

  • camada de emulação extra == mais sobrecarga == processador mais rápido necessário para obter um desempenho equivalente para tudo.

Eu diria que as reduções de custo vêm com quantidade, então algo como o chip Transmeta tem que vender um monte de volume antes que possa competir em preço com chips x86 de alto volume existentes.

Se bem me lembro, a ponto do chip Transmeta é que era de baixa potência. Ter menos portas de silício para back flip e para trás a cada ciclo de clock economiza energia. O morphing código era assim que você poderia executar um conjunto de instruções complexo (CISC) em um chip RISC baixo consumo de energia.

primeiro processador da Transmeta, a Crusoe, não fez muito bem devido a problemas mesmo executando o software de referência. Seu segundo processador, o Efficeon, conseguiu usar menos energia do que o Intel Atom (na mesma categoria de desempenho), e um desempenho melhor do que o Centrino no mesmo envelope de energia.

Agora, olhando para ele a partir do software e flexibilidade ponto de vista como você é, Código Morphing é apenas uma forma de compilação Just-In-Time, com todos os benefícios e malefícios dessa tecnologia. Seu código x86 é essencialmente rodando em uma máquina virtual e sendo emulado por outro processador. O maior benefício da virtualização agora é a capacidade de compartilhar um único processador entre muitas máquinas virtuais para que você têm menos ciclos de CPU ociosos, que é mais eficiente (custo de hardware e custo de energia).

Assim, parece-me que morphing código, assim como qualquer forma de virtualização, é tudo sobre ser mais eficiente com recursos.

Para uma outra abordagem para assistida por hardware de virtualização x86 ISA, você pode querer ler sobre o Loongson 3 CPU.

A maioria dos processadores modernos realmente implementar os seus conjuntos de instruções usando microcódigo . Há muitas razões para isso, incluindo preocupações de compatibilidade, mas também há outra razões.

A distinção entre o que é "hardware" eo que é "software" é realmente difícil de fazer. máquinas virtuais modernas, como a JVM ou CIL (NET) pode muito bem ser implementado em hardware, mas que provavelmente só ser feito usando o microcódigo de qualquer maneira.

Uma das razões para ter várias camadas de abstração em um sistema é que o programadores / engenheiros não tem que pensar sobre detalhes irrelevantes quando eles estão trabalhando em um nível mais elevado.

bibliotecas

O sistema operacional e de sistema também fornecem camadas de abstração adicionais. Mas ter essas camadas só faz o sistema "mais lento", se a pessoa não precisa as características que eles fornecem (ou seja, o agendamento de segmento feito pelo OS). Não é uma tarefa fácil de obter o seu próprio programador específico do programa para bater um no kernel do Linux.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top