máquina Belt - Belt machine

Em engenharia da computação e em implementações de linguagem de programação , uma máquina cinto é um computador real ou emulada que usa um first in, first out ( FIFO fila) em vez de máquina individual processador registra para avaliar cada sub-expressão no programa. Um computador correia é programado com um conjunto de instruções que especifica os argumentos explicitamente, mas resulta implicitamente.

A alternativa comum para máquinas de correia são máquinas de , no qual cada instrução explicitamente os nomes dos registos específicos para usar para locais de argumentos operando e resultados. Máquinas de correia estão relacionados com a pilha de máquinas , que especificar ambos os argumentos e resultados implicitamente usando um pushdown pilha . Outras alternativas são máquinas de acumulador , que têm apenas um visível de propósito geral temporário registo e máquinas de memória-a-memória, que não têm registros temporários visíveis.

Uma máquina de correia implementa armazenamento temporário com uma fila de comprimento fixo FIFO, ou correia , por analogia, a uma correia transportadora . Os operandos das unidades aritméticas lógicas (ALUs) e outras unidades funcionais podem ser tomadas a partir de qualquer posição sobre a correia, e o resultado do cálculo é deixado cair (armazenado) na posição da frente da correia, avançando a correia para abrir espaço. À medida que o cinto é comprimento fixo, cai na frente são acompanhadas por operandos mais velhos caindo ao largo das costas; operandos empurraram-off tornam-se inacessíveis e devem ser explicitamente salvas se ainda necessário para trabalho posterior. A maioria das operações do conjunto de instruções de trabalho apenas com dados sobre o cinto, e não em registros de dados ou células da memória principal.

Para uma instrução típico como add, ambos os operandos de argumento vem de posições explicitamente nomeados no cinto, eo resultado é descartado na frente, pronto para a próxima instrução. Operações com vários resultados simplesmente deixar cair mais valores na frente do cinto. A maioria das instruções de correia são codificados como apenas um código de operação ( opcode ) e duas posições de correia, sem campos adicionados para especificar um registo resultado, endereço de memória, ou constante literal. Esta codificação é facilmente estendido para operações mais ricas com mais do que duas entradas ou mais do que um resultado. Operandos constantes são descartados pelo separadas load immediateinstruções. Todo o acesso de variáveis do programa em principal memória de acesso aleatório (RAM) é segregado em separado loadou storeinstruções contendo um endereço de memória, ou alguma forma de calcular esse endereço de operandos cinto.

Todas as máquinas de cinto tem variantes dos carga / loja opcodes para acessar as variáveis locais e da pilha. Isto pode ser por deslocamentos, a partir de um ponteiro no cinto, ou a partir de diferentes registos de bases de propósitos especiais. Da mesma forma, haverá instruções para ramificar para um endereço retirado do cinto, juntamente com filiais em relação ao contador de programa.

temporal abordando

Uma vez que cada gota de um resultado move o conteúdo da correia anterior ao longo de posições posteriores na fila, um determinado operando muda continuamente a sua posição (e, portanto, tratar) como um resultado de execução posterior. Com efeito, um acesso ao operando na posição zero é um pedido para o valor mais recente caiu para a correia, enquanto (por exemplo) uma referência para posicionar cinco é o sexto gota mais recente. Assim, os endereços de operandos cinto refletem a história da correia ao longo do tempo. Esta é temporal, abordando . É difícil para os programadores humanos para manter o controle de conteúdos da correia, e, portanto, operando endereços, ao escrever código de montagem para uma máquina cinto. No entanto, é fácil para um compilador para rastrear o conteúdo em mudança e emitem os endereços posição correta código gerado.

Derramar e encher

O cinto é comprimento fixo e pode ser muito curto para segurar todos os operandos transitórios ao vivo antes de serem empurrados para fora da extremidade. Se um operando é necessária por mais tempo do que o seu tempo de vida cinto, ele deve ser salvo enquanto ainda na correia (derrame) e mais tarde restaurado para o cinto quando necessário novamente (preenchimento). Esta situação é equivalente à necessidade de derramar registros de memória quando um programa é executado fora de registros em uma máquina de registo geral. Derramados operandos podem ser gravados na memória usando instruções normais de loja, e restaurado usando instruções de carga normal, ou derrame e preencha podem usar o armazenamento de propósito especial e operações associadas que são mais rápidos ou oferecem outras vantagens sobre carga e loja.

Liberdade de perigo

Os operandos na correia são somente leitura. Novos resultados não substituir valores anteriores. O cinto é assim um -atribuição única estrutura, e é imune aos perigos de dados que devem ser tratadas por máquinas de fora-de-fim modernas-registo geral.

código objeto compacto

Código de máquina densa foi muito valioso na década de 1960, quando a memória principal era muito caro e limitado, mesmo em computadores mainframe . Tornou-se importante novamente nas inicialmente-pequenas memórias de minicomputadores e, em seguida microprocessadores . Densidade continua a ser importante hoje, para aplicações para smartphones , ou baixado em navegadores através de conexões lentas de Internet, e na memória só de leitura (ROM) para aplicações embarcadas. Uma vantagem mais geral de um aumento da densidade é melhorada a eficácia de caches e pré-busca de instruções.

máquinas de correia têm instruções menores do que máquinas baseadas em registo, devido a não precisar de um endereço de destino para os resultados. Esta economia pode fazer uma diferença significativa para formatos de instruções de comprimento fixo, que normalmente usam potência de duas larguras de instrução. Se houver trinta e dois elementos endereçáveis ​​(registos sobre uma máquina de registo geral, as posições de cinto em uma máquina de correia), em seguida, cada endereço elemento ocupa cinco bits da instrução, necessitando de 15 bits para o formato de três endereços de um general-registo máquina, mas apenas 10 bits usando o formato de dois endereço de uma máquina de correia. Uma vez que também são necessários os bits de código de operação e outras informações na instrução, a largura de instruções (potência-de-dois constrangidos), muitas vezes determina o número máximo de elementos endereçáveis ​​possíveis em um desenho. Tipicamente, uma instrução de máquina de correia pode suportar a codificação do dobro do número de elementos endereçáveis ​​em comparação com uma máquina de registo geral, da mesma largura de instruções. Há ganhos semelhantes em codificações de instruções de comprimento variável.

No geral, o código de máquina cinto é menos compacto do que para máquinas de pilha, que usam nenhum endereço de operando, mas muitas vezes tem de introduzir instruções pilha de manipulação desnecessários em uma máquina cinto. As instruções para máquinas de acumulador não são acolchoadas com vários campos de registro, em vez disso, eles usam a pilha de retorno e preciso nenhuma instrução de referência de memória extra.

Implementação

Enquanto uma máquina de tela apresenta uma fila operando como o modelo do programa, não há necessariamente uma fila física ( shift register ) no hardware implementado. Em vez disso, uma concepção do cinto pode usar uma aplicação análoga ao registo mudar o nome comum nas modernas máquinas de registo geral. Valores de dados ao vivo são mantidos em recursos físicos convenientemente endereçáveis (registros individuais, registrar arquivos, memória de acesso aleatório estática (SRAM), ou encaminhamento operando a partir de unidades funcionais) e geralmente não se moviam para a duração da sua vida cinto. Decodificador de instrução mapeia posições cinto lógicas para localizações físicas. O mapeamento é atualizado para refletir as mudanças de posição lógica decorrente de resultados recém-lançadas.

A arquitetura da correia-máquina foi criada pela inicialização Moinho Computing, Inc., para uso em seu moinho arquitetura família de processadores de uso geral.

Veja também

Referências