Processador ARM1 de engenharia reversa

Tradução do artigo de Ken Shirriff
Quase todo smartphone usa um processador baseado no chip ARM1, lançado em 1985. Mais de dez bilhões de núcleos ARM foram usados ​​em vários dispositivos, incluindo uma das maiores falhas da Apple, o computador de mão Newton, e um de seus sucessos mais ensurdecedores, o iPhone. Neste artigo, consideraremos as principais partes do processador ARM1: descreveremos a estrutura geral do chip, veremos como os transistores são organizados e como eles funcionam, interagindo uns com os outros para armazenar e processar dados, e também sobre a simulação visual desse microprocessador e descobrir o que acontece. dentro do ARM1 durante sua operação.

imagem

Visão geral do chip ARM1


O microprocessador ARM1 é construído a partir de blocos funcionais, cada um com uma finalidade específica. Registra dados de armazenamento, a ALU executa aritmética simples, decodificadores de comando determinam como executar cada comando e assim por diante. Comparado à maioria dos processadores, o circuito do chip ARM1 é simples e cada bloco de funções é bem distinguível. Para comparação, o layout dos chips, como 6502 ou Z-80, é otimizado manualmente para evitar pontos vazios no substrato. Nesses processadores, os blocos funcionais são colados, o que os torna difíceis de entender.

imagem
Os principais componentes do chip ARM1. Contatos não marcados são sinais de controle diferentes.

Agora você vê uma imagem mostrando as partes funcionais mais importantes do microprocessador ARM. O processamento real ocorre na parte inferior do chip, que se refere ao caminho dos dados. O chip processa 32 bits de cada vez, de modo que sua estrutura inclui 32 camadas horizontais: 31 bits de cima e 0 bits de baixo. Vários barramentos de dados operam horizontalmente para comunicar vários componentes do chip. Na imagem, você pode ver uma grande seção de 25 registros. O contador de instruções (décimo quinto registro) fica à esquerda da seção do registro e o registro zero está à direita. Nove em cada vinte e cinco registros são opcionais, pois existem cópias de alguns registros para uso no manuseio de interrupção.

Todos os cálculos ocorrem na unidade aritmética lógica (ALU), localizada à direita do bloco de registro. A ALU executa 16 operações diferentes: adição, adição com transferência, subtração, adição lógica e assim por diante ... A ALU usa duas entradas de 32 bits e gera 32 bits na saída. Você pode ler mais sobre o dispositivo ALU aqui . À direita da ALU está um dispositivo de mudança de 32 bits. Esse componente grande executa uma operação de deslocamento cíclico de entrada binária. À esquerda, estão as linhas de endereço que fornecem acesso aos endereços na memória através de contatos. À direita, existem linhas de dados que lêem e gravam valores de dados na memória.

A unidade de controle está localizada na parte superior. As linhas de controle são desenhadas verticalmente da unidade de controle para o diagrama de linhas de dados abaixo. Esses sinais selecionam os registradores, informam à ALU qual operação executar e assim por diante. O circuito de decodificação de instruções processa cada instrução e gera os sinais de controle necessários. A unidade de decodificação de registro processa os bits de seleção de registro na instrução e gera sinais de controle para selecionar os registros necessários.

Detalhes de contato


Os quadrados ao redor da superfície externa da imagem são os blocos que conectam o processador ao mundo exterior. A foto abaixo mostra a caixa de oitenta e quatro pinos do microprocessador ARM1. Contatos banhados a ouro são conectados a blocos em um chip de silício dentro do gabinete.

imagem
Processador ARM1 instalado no Acorn ARM Evaluation System

A maioria dos sites é usada para linhas de endereço e linhas de dados que levam à memória. O chip possui 26 linhas de endereço que permitem acessar 64 megabytes de memória e 32 linhas de dados, permitindo a leitura ou gravação de 32 bits por vez. As linhas de endereço estão no canto inferior esquerdo e as linhas de dados estão no direito. No modelo de simulação do chip, você pode ver que os sinais são enviados para as linhas de endereço da memória e as informações da memória são lidas ao longo das linhas de dados. O lado direito do simulador mostra os valores de endereço e dados apresentados em formato hexadecimal. Se você conhece o sistema numérico hexadecimal, é possível correlacionar facilmente esses valores com os estados do contato.

Cada canto do chip possui uma linha de energia (+) e uma linha de aterramento (-), fornecendo uma tensão de alimentação de 5 volts, necessária para a operação do chip. Vários sinais de controle estão localizados na parte superior do chip. No simulador, é fácil notar dois sinais de relógio que definem o pulso do relógio. As frequências da fase 1 e da fase 2 se alternam, fornecendo o sinal do relógio necessário para a operação do chip. Em nossa simulação visual, ele fica ativo aproximadamente duas vezes por segundo, mas o chip real tem uma frequência de 8 megahertz, que é mais de um milhão de vezes mais rápido. Preste atenção ao nome do fabricante "ACORN" no chip em vez de 82 pinos.

imagem
Dois sinais de temporização

Histórico do processador ARM


O microprocessador ARM1 foi projetado em 1985 pelos engenheiros Sophie Wilson e Steve Farber, da Acorn Computers. Inicialmente, o chip foi chamado Acorn RISC Machine e foi concebido como um coprocessador para o computador da BBC Micro .

imagem
Sophie Wilson e Steve Farber

No total, várias centenas de microprocessadores ARM1 foram produzidos, portanto, você pode pensar que foi perdido nas entranhas da história dos microprocessadores da década de 1980. No entanto, o primeiro chip ARM1 levou a uma arquitetura ARM surpreendentemente bem-sucedida, com mais de 50 bilhões de chips. O que aconteceu?

No início dos anos 80, pesquisas científicas sugeriram que, se você simplificar o conjunto de instruções para o processador, os desenvolvedores terão melhor desempenho - o processador será mais simples, mas mais rápido: um computador com um conjunto de instruções reduzido ou RISC (computador com conjunto de instruções reduzido). Pesquisas em Stanford e Berkeley inspiraram os desenvolvedores de ARM a escolher a arquitetura RISC. Além disso, dada a pequena equipe de desenvolvimento da Acorn, a escolha do RISC era uma solução prática.

Em um computador baseado em RISC, o conjunto de instruções era limitado aos mais usados, otimizados para alto desempenho e executados em um único ciclo de clock. As instruções, por sua vez, são de tamanho fixo que simplificam a lógica das instruções de decodificação. Para um processador RISC, são necessários muito menos circuitos para controle e decodificação de comandos, o que permite colocar mais componentes no chip.

A simplicidade do design RISC é evidente ao comparar os microprocessadores ARM1 e Intel 80386 lançados no mesmo ano: o ARM1 tinha cerca de 25 mil transistores e o 80386 tinha duzentos e setenta e cinco mil. Abaixo estão duas fotos dos processadores na mesma escala. A área do cristal ARM1 é de cinquenta milímetros quadrados, em comparação com os cento e quatro milímetros quadrados do 386º.

imagemimagem

Devido ao pequeno número de transistores, o processador ARM1 tinha baixa potência: cerca de um décimo de watt em comparação com quase dois watts no 386º. A combinação de alto desempenho e baixo consumo de energia tornou as versões posteriores dos microprocessadores ARM muito populares para sistemas embarcados. A Apple escolheu um processador ARM para o seu infeliz sistema Pocket Newton. Em 1990, a Acorn Computers, a Apple e a fabricante de chips VLSI Technology criaram Advanced RISC Machines para continuar desenvolvendo o ARM.

Desde então, o ARM se tornou a arquitetura mais popular, com mais de cinquenta bilhões de processadores. A maioria dos dispositivos móveis usa um microprocessador ARM. Por exemplo, o processador Apple A8 dentro do iPhone 6 usa o ARMv8-A de 64 bits. Apesar de seu começo humilde, o ARM1 fez a lista IEEE Spectrum de 25 chips que chocaram o mundo e se tornaram os microprocessadores mais influentes de acordo com o PC World de todos os tempos.

Curiosamente, a ARM não fabrica chips. Em vez disso, a propriedade intelectual da ARM é licenciada para centenas de empresas diferentes que fabricam chips usando a arquitetura ARM.

Estrutura de cavacos de baixo nível


O microprocessador ARM1 consiste em cinco camadas. Se você aumentar a escala do chip no modelo de simulação, poderá ver os componentes do chip criados a partir dessas camadas. O modelo de simulação usa uma cor específica para cada camada e designa as linhas de atividade com sua cor. A camada inferior consiste em silício, no qual estão localizados os transistores. Durante a produção, as áreas de silício são modificadas (ligadas) usando várias impurezas. O silício pode ser dopado positivamente para formar um transistor P-MOS (azul) ou negativamente para um transistor N-MOS (vermelho). O silício não ligado é basicamente um isolante (preto).

imagem
O simulador ARM1 apresenta várias camadas com suas próprias cores.

As linhas de polissilício marcadas em verde são aplicadas sobre o silício. Quando o polissilício atravessa o silício dopado, ele forma uma porta de transistor (amarela). Finalmente, duas camadas de metal, indicadas por cinza, estão localizadas no topo do polissilício e fornecem condutividade. Quadrados pretos são contatos que formam ligações entre diferentes camadas.

Para nossos propósitos, o transistor MOS pode ser considerado como um interruptor controlado por portas. Quando ligado (fechado), o dreno e a fonte nas regiões de silício são conectados. Quando desconectado (aberto), o dreno e a fonte são desconectados.

imagem
Estrutura MOSFET

Como a maioria dos processadores modernos, o ARM1 foi construído usando a tecnologia CMOS, que usa dois tipos de transistores MOS: canal N e canal P. Os MOSFETs de canal N são ativados apenas quando um sinal de nível alto é aplicado ao gate e a saída é puxada para o solo. Os MOSFETs do canal P são ativados quando um sinal de nível baixo é aplicado ao gate e tensões de até cinco volts são aplicadas à saída.

O conceito de um arquivo de registro


O arquivo de registro é um componente essencial do ARM1 que armazena informações dentro do chip. O arquivo de registro consiste em vinte e cinco registros, cada um contendo trinta e dois bits.

A imagem abaixo mostra dois transistores formando um inversor. Se um sinal de nível alto for recebido, o transistor N-MOS (vermelho) liga, conectando a saída ao terra, para que a saída tenha um sinal de nível baixo. Se a entrada receber um sinal de nível baixo, o transistor P-MOS (azul) será ligado, conectando a linha de energia à saída, para que a saída tenha um sinal de nível alto. Assim, a saída é oposta à entrada, criando um inversor.

imagem
Inversor

A combinação de dois inversores em um loop forma um esquema de armazenamento simples. Se na saída do primeiro inversor 1, o segundo produz 0, que vai para a entrada do primeiro inversor e 1 é criado em sua saída - o circuito é estável. Consequentemente, o circuito permanecerá nesse estado indefinidamente, "lembrando" um pouco, até que seja transferido à força para outro estado.

imagem
Dois inversores formam um registro que pode armazenar 1 bit

Para criar esse esquema na célula de registro usada, são adicionadas linhas de leitura e gravação, bem como linhas de seleção para conectar a célula às linhas de barramento. Quando a linha de gravação é ativada, o barramento é contatado com o inversor, permitindo que você substitua o valor atual por um novo bit. Da mesma forma, os transistores conectam o bit ao barramento de leitura quando a linha de seleção correspondente é ativada, permitindo a leitura do valor armazenado.

imagem
Esquema de um bit do arquivo de registro ARM1

Para criar um arquivo de registro, a célula de registro deve ser repetida 32 vezes na vertical para cada bit e 25 vezes na horizontal para formar cada registro. Cada registro possui três linhas horizontais - uma linha de gravação e duas linhas de leitura. Cada registro possui três linhas de controle verticais - uma linha de seleção de registros e duas linhas de seleção de leitura. Ao ativar as linhas de controle desejadas, dois registros podem ser lidos e um registro pode ser gravado por vez. No modelo de simulação - você pode ver linhas de controle verticais ativas para selecionar registros e bits de dados movendo-se em linhas de barramento horizontais.

Observando a célula de memória no simulador, é possível determinar qual inversor está ligado e se o bit 0 ou 1. Se a entrada do inversor superior está ativa, o bit é zero. Se a entrada do inversor inferior estiver ativa, o bit será igual a um. Assim, tendo examinado cuidadosamente, você pode ler os valores dos registros diretamente no simulador.

imagem
Imagem do arquivo de registro ARM1

Dispositivo de troca rápida


O dispositivo de troca rápida executa mudanças binárias e é outro componente interessante do ARM1. A maioria das instruções usa um shifter que permite mudar o argumento binário para a direita, esquerda ou alternar qualquer caractere (de 0 a 31 bits). Durante o início do simulador, você pode ver as linhas diagonais se movendo para a direita e esquerda em uma mudança rápida.

A imagem abaixo mostra a estrutura do dispositivo de cisalhamento. Os bits são deslocados verticalmente em relação ao zero e ao trigésimo primeiro bits. Os bits de saída são deslocados horizontalmente entre o bit zero da parte inferior e o trigésimo primeiro bit da parte superior. As linhas diagonais mostram onde as linhas verticais estão conectadas às horizontais, gerando uma mudança na saída. Posições diferentes da linha diagonal levam a diferentes turnos. A linha diagonal superior desloca os bits para a esquerda e a linha diagonal inferior para a direita. Durante um turno, as duas diagonais estão ativas; pode ser imperceptível, mas na parte de mudança da palavra, a parte se move para a direita e, muitas vezes, para a esquerda.

imagem
Estrutura do dispositivo de cisalhamento rápido

Vamos ampliar a área no dispositivo de cisalhamento para ver melhor seus principais componentes. Ele contém 32 por 32 seções transversais de transistores, cada um dos quais conecta uma linha vertical a uma horizontal. As portas do transistor são conectadas por linhas de controle diagonais; transistores ao longo da diagonal ativa conectam as linhas verticais e horizontais correspondentes. Assim, ativando as diagonais correspondentes, as linhas de saída são conectadas às linhas de entrada deslocadas por um certo número de bits. Como as linhas de entrada do microcircuito operam horizontalmente, existem 32 conexões entre as linhas de entrada e as linhas de bits verticais correspondentes.

imagem
Um olhar mais atento ao dispositivo de troca rápida ARM1

Conclusão


O microprocessador ARM1 levou à arquitetura surpreendentemente bem sucedida do processador ARM, que é o coração do seu smartphone e de qualquer dispositivo móvel em geral. A arquitetura RISC simples do chip ARM1 simplifica a compreensão do circuito do microprocessador em comparação com a estrutura 80386. A fascinante simulação visual do microprocessador ARM ajuda a entender o que está acontecendo dentro dele.

Nosso vídeo criado por este artigo: Inside the CPU: ARM1

Source: https://habr.com/ru/post/pt411425/


All Articles