Acumulador (computação)

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Cadastre-se em que os resultados aritméticos e lógicos intermediários de uma CPU são armazenados
Walther WSR-16 calculadora mecânica. A linha de rodas de dígitos na carruagem (na frente), é o acumulador.

Na unidade de processamento central (CPU) de um computador, o acumulador é um registro no qual os resultados da unidade lógica aritmética intermediária são armazenados.

Sem um registrador como um acumulador, seria necessário escrever o resultado de cada cálculo (adição, multiplicação, deslocamento, etc.) na memória principal, talvez apenas para ser lido novamente para uso na próxima operação.

O acesso à memória principal é mais lento do que o acesso a um registrador como um acumulador porque a tecnologia usada para a grande memória principal é mais lenta (mas mais barata) do que a usada para um registrador. Os primeiros sistemas de computador eletrônico eram freqüentemente divididos em dois grupos, aqueles com acumuladores e aqueles sem.

Sistemas de computador modernos geralmente têm vários registradores de uso geral que podem operar como acumuladores, e o termo não é mais tão comum quanto antes. No entanto, para simplificar seu projeto, vários processadores para fins especiais ainda usam um único acumulador.

Conceito básico

As operações matemáticas geralmente ocorrem de forma gradual, usando os resultados de uma operação como entrada para a próxima. Por exemplo, um cálculo manual da folha de pagamento semanal de um trabalhador pode ser algo como:

  1. Olhe para cima o número de horas trabalhadas a partir do cartão de tempo do empregado
  2. procurar a taxa de pagamento para aquele empregado de uma tabela
  3. multiplicar as horas pela taxa de pagamento para obter o seu salário semanal básico
  4. multiplicar o seu salário básico por uma percentagem fixa para contabilizar o imposto sobre o rendimento
  5. subtrair esse número do seu salário básico para obter o seu salário semanal após o imposto
  6. multiplicar o resultado por outra percentagem fixa para contabilizar os planos de reforma
  7. subtrair esse número do seu salário básico para obter o seu salário semanal após todas as deduções

Um programa de computador executando a mesma tarefa seguiria a mesma sequência básica de operações, embora os valores pesquisados fossem todos armazenados na memória do computador. Nos primeiros computadores, o número de horas provavelmente seria registrado em um cartão perfurado e a taxa de pagamento em alguma outra forma de memória, talvez um tambor magnético. Uma vez que a multiplicação esteja completa, o resultado precisa ser colocado em algum lugar. Em uma "drum machine" isso provavelmente seria voltar ao tambor, uma operação que leva um tempo considerável. E então a próxima operação tem que ler esse valor de volta, o que introduz outro atraso considerável.

Os acumuladores melhoram drasticamente o desempenho em sistemas como esses, fornecendo uma área de rascunho onde os resultados de uma operação podem ser alimentados para a próxima com pouca ou nenhuma perda de desempenho. No exemplo acima, o salário básico semanal seria calculado e colocado no acumulador, que poderia ser imediatamente utilizado pelo cálculo do imposto de renda. Isso remove uma operação de salvamento e uma de leitura da sequência, operações que geralmente demoravam dezenas a centenas de vezes mais do que a própria multiplicação.

Máquinas acumuladoras

Uma máquina acumuladora, também chamada de máquina de 1 operando, ou uma CPU com arquitetura baseada em acumuladores, é um tipo de CPU onde, embora possa ter vários registradores, a CPU geralmente armazena os resultados dos cálculos em um registrador especial, normalmente chamado de "o acumulador". Quase todos os antigos computadores eram máquinas acumuladoras com apenas os "supercomputadores" ter vários registradores. Então, quando os sistemas de mainframe deram lugar aos microcomputadores, as arquiteturas de acumuladores tornaram-se novamente populares, sendo o MOS 6502 um exemplo notável. Muitos microcontroladores de 8 bits que ainda são populares em 2014, como o PICmicro e o 8051, são máquinas baseadas em acumuladores.

CPUs modernas são tipicamente máquinas de 2 ou 3 operandos. Os operandos adicionais especificam quais dos muitos registradores de propósito geral (também chamados de "acumuladores de propósito geral") são usados como fonte e destino para cálculos. Essas CPUs não são consideradas "máquinas acumuladoras".

A característica que distingue um registrador como sendo o acumulador de uma arquitetura de computador é que o acumulador (se a arquitetura tivesse um) seria usado como um operando implícito para instruções aritméticas. Por exemplo, uma CPU pode ter uma instrução como: ADD memaddress que adiciona o valor lido da localização da memória memaddress ao valor no acumulador, colocando o resultado de volta no acumulador. O acumulador não é identificado na instrução por um número de registrador; está implícito na instrução e nenhum outro registrador pode ser especificado na instrução. Algumas arquiteturas usam um registrador particular como um acumulador em algumas instruções, mas outras instruções usam números de registradores para especificação explícita de operandos.

História do acumulador de computador

Qualquer sistema que usa uma única "memória" para armazenar o resultado de múltiplas operações pode ser considerado um acumulador. J. Presper Eckert refere-se até mesmo às primeiras máquinas de somar de Gottfried Leibniz e Blaise Pascal como sistemas baseados em acumuladores. Percy Ludgate foi o primeiro a conceber um multiplicador-acumulador (MAC) em sua Máquina Analítica de 1909.

A convenção histórica dedica um registro ao "acumulador", um "órgão aritmético" que literalmente acumula seu número durante uma sequência de operações aritméticas:

"A primeira parte do nosso órgão aritmético... deve ser um órgão de armazenamento paralelo que pode receber um número e adicioná-lo ao já nele, que também é capaz de limpar o seu conteúdo e que pode armazenar o que contém. Chamaremos a tal órgão um acumulador. É bastante convencional em princípio em máquinas de computação passadas e atuais dos tipos mais variados, por exemplo, multiplicadores de mesa, contadores padrão IBM, máquinas de relé mais modernas, o ENIAC" (Goldstine e von Neumann, 1946; p. 98 em Bell e Newell 1971).

Apenas algumas das instruções são, por exemplo (com alguma interpretação moderna):

  • Acumulador claro e adicionar número do local de memória X
  • Acumulador claro e número subtrato do local de memória X
  • Adicionar número copiado do local de memória X para o conteúdo do acumulador
  • Número do subtrato copiado do local da memória X do conteúdo do acumulador
  • Limpar o accumulator e mudar o conteúdo do registro no acumulador

Não existe nenhuma convenção em relação aos nomes das operações de registradores para acumulador e de acumulador para registradores. A tradição (por exemplo, o hipotético computador MIX de Donald Knuth (1973)), por exemplo, usa duas instruções chamadas carregar acumulador do registrador/memória (por exemplo, "LDA r") e armazenar acumulador para registrar/memória (por exemplo, "STA r"). O modelo de Knuth também tem muitas outras instruções.

Notáveis computadores baseados em acumuladores

Painel frontal de um computador IBM 701 com luzes exibindo o acumulador e outros registros

A configuração de 1945 do ENIAC tinha 20 acumuladores, que podiam operar em paralelo. Cada um poderia armazenar um número de oito dígitos decimais e adicionar a ele (ou subtrair) um número recebido. A maioria dos primeiros binários "científicos" os computadores, começando com o tubo de vácuo IBM 701 em 1952, usavam um único acumulador de 36 bits, juntamente com um registrador multiplicador/quociente separado para lidar com operações com resultados mais longos. O IBM 650, uma máquina decimal, tinha um distribuidor de 10 dígitos e dois acumuladores de dez dígitos; o IBM 7070, uma máquina decimal transistorizada posterior, tinha três acumuladores. O IBM System/360 e o PDP-6 da Digital Equipment Corporation tinham 16 registradores de uso geral, embora o PDP-6 e seu sucessor, o PDP-10, os chamem de acumuladores.

O PDP-8 de 12 bits foi um dos primeiros minicomputadores a usar acumuladores e inspirou muitas máquinas posteriores. O PDP-8 tinha apenas um acumulador. A HP 2100 e a Data General Nova tinham 2 e 4 acumuladores. O Nova foi criado quando esta continuação do PDP-8 foi rejeitada em favor do que se tornaria o PDP-11. O Nova fornecia quatro acumuladores, AC0-AC3, embora AC2 e AC3 também pudessem ser usados para fornecer endereços de deslocamento, tendendo a uma generalização do uso dos registradores. O PDP-11 tinha 8 registradores de uso geral, nos moldes do System/360 e do PDP-10; a maioria das máquinas CISC e RISC posteriores forneciam vários registradores de uso geral.

Os primeiros microprocessadores de 4 e 8 bits, como o 4004, 8008 e vários outros, geralmente tinham acumuladores únicos. O microcontrolador 8051 possui dois, um acumulador primário e um acumulador secundário, onde o segundo é utilizado por instruções apenas na multiplicação (MUL AB) ou divisão (DIV AB); o primeiro divide o resultado de 16 bits entre os dois acumuladores de 8 bits, enquanto o último armazena o quociente no acumulador primário A e o restante no acumulador secundário B. Como descendente direto do 8008, do 8080 e do 8086, os onipresentes processadores Intel x86 modernos ainda usam o acumulador primário EAX e o acumulador secundário EDX para multiplicação e divisão de grandes números. Por exemplo, MUL ECX multiplicará os registradores de 32 bits ECX e EAX e dividirá o resultado de 64 bits entre EAX e EDX. No entanto, MUL e DIV são casos especiais; outras instruções aritméticas e lógicas (ADD, SUB, CMP, AND, OR, XOR, TEST) podem especificar qualquer um dos oito registradores EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI como o acumulador (ou seja, operando esquerdo e destino). Isso também é suportado para multiplicar se a metade superior do resultado não for necessária. x86 é, portanto, uma arquitetura de registro bastante geral, apesar de ser baseada em um modelo de acumulador. A extensão de 64 bits de x86, x86-64, foi posteriormente generalizada para 16 em vez de 8 registradores gerais.

Contenido relacionado

APL (linguagem de programação)

APL é uma linguagem de programação desenvolvida na década de 1960 por Kenneth E. Iverson. Seu tipo de dados central é o array multidimensional. Ele usa...

Problema de satisfatibilidade booleana

Na lógica e na ciência da computação, o problema de satisfatibilidade booleana é o problema de determinar se existe uma interpretação que satisfaça...

Sistema operacional de disco

Um sistema operacional de disco é um sistema operacional de computador que reside e pode usar um dispositivo de armazenamento em disco, como disquete...
Más resultados...
Tamaño del texto:
Copiar