"A lei de escala de Dennard e a lei de Moore estão mortas, e agora?" - uma peça em quatro atos de David Patterson“Queimamos as pontes que apressamos aqui, sem outra evidência de nosso movimento, exceto as lembranças do cheiro de fumaça e a suposição de que causou lágrimas” - “Rosencrantz e Guildenstern estão mortos”, uma peça absurda de Tom StoppardEm 15 de março, o Dr. David Patterson dirigiu-se a uma audiência de aproximadamente 200 engenheiros que comem pizza. O médico contou brevemente a história de meio século de construção de computadores nas arquibancadas da grande sala de conferências do Edifício E no campus da Texas Instruments em Santa Clara durante uma palestra do IEEE intitulada "50 Anos de Arquitetura de Computadores: Das Unidades Centrais de Processamento às DNN TPU e Open RISC-V". Esta é uma história de altos e baixos aleatórios, quedas e buracos negros que engoliram arquiteturas inteiras.
Patterson começou na década de 1960 com o inovador projeto IBM System / 360, baseado no trabalho de microprogramação de Maurice Wilks no início de 1951. Pelos padrões da TI, isso foi há muito tempo ... Perto do final do discurso, Patterson mostrou um diagrama incrível. Isso demonstra claramente como exatamente a morte da lei de escala de Dennard, seguida pela morte da lei de Moore, mudou completamente os métodos de design dos sistemas de computador. No final, ele explicou as conseqüências tecnológicas póstumas desses choques.
É sempre bom ver como um verdadeiro mestre está envolvido em sua arte favorita, e Patterson é realmente um especialista em arquitetura de computadores e as forças que a governam. Ele ensinou esse tópico desde 1976 e foi co-autor de um verdadeiro best-seller
, Computer Architecture. Abordagem Quantitativa ” com o Dr. John Hennessy. O livro sobreviveu recentemente à sexta edição. Portanto, Patterson era uma ordem de magnitude superior ao marco de 10.000 horas formulado por
Malcolm Gladwell para alcançar o domínio de qualquer assunto. E é visível.
Patterson capturou a atenção do público por 75 minutos, dividindo a apresentação em quatro atos. Como a peça absurda de Tom Stoppard, "Rosencrantz e o Guildenstern estão mortos", parece que nada nesta história - nada mesmo - está indo como planejado.
Dr. David Patterson na Seção IEEE Santa Clara Valley em 15 de março de 2018, antes de conceder a ele o Prêmio ACM Turing 2017. Fonte: Steve LeibsonPrimeiro ato: IBM System / 360, DEC VAX e CISC Prelude
Nas décadas de 1950 e 1960, experimentos grandiosos foram realizados com arquiteturas de conjunto de comandos (ISA) para mainframes (na época, quase nenhum computador era projetado, exceto mainframes). Quase todo mainframe tinha um ISA "novo e aprimorado". No início da década de 1960, apenas a IBM havia lançado quatro linhas de computadores: 650, 701, 702 e 1401, projetadas para aplicativos comerciais, científicos e em tempo real. Todos eles possuem arquiteturas de conjuntos de comandos mutuamente incompatíveis. Quatro ISAs incompatíveis significavam que a IBM estava desenvolvendo e mantendo quatro conjuntos de periféricos completamente independentes (unidades de fita, discos / unidades de tambor e impressoras), além de quatro conjuntos de ferramentas de desenvolvimento de software (montadores, compiladores, sistemas operacionais etc.) .
A situação claramente não parecia estável. Portanto, a IBM apostou alto. Ela decidiu desenvolver um conjunto de instruções binárias compatíveis para todas as suas máquinas. Um conjunto de instruções independente de dispositivo para tudo. O arquiteto-chefe Gene Amdahl e sua equipe desenvolveram a arquitetura System / 360, projetada para ser implementada no intervalo de séries de baixo custo a caras, com barramentos de dados de 8, 16, 32 e 64 bits.
Para simplificar o desenvolvimento do processador para o IBM System / 360, a equipe de desenvolvimento decidiu usar o microcódigo para a lógica de controle de design difícil. Maurice Wilkes inventou o microcódigo em 1951 e foi usado pela primeira vez no computador EDSAC 2 em 1958. De certa forma, o microcódigo já era uma tecnologia comprovada no momento em que o projeto System / 360 foi lançado. E ele novamente provou seu valor.
O microcódigo do processador foi imediatamente refletido no design do mainframe, especialmente quando os chips de memória semicondutores prejudicaram a lei de Moore. Talvez o maior exemplo do uso maciço de microcódigo seja o DEC VAX, introduzido em 1977. O VAX 11/780, um minicomputador inovador baseado em TTL e chips de memória, tornou-se a referência de desempenho até o final do século.
Os engenheiros da DEC criaram o ISA para VAX em um momento em que a programação de assembler prevalecia, em parte devido à inércia da engenharia (“sempre fizemos isso”) e em parte porque os compiladores rudimentares de alto nível da época geravam código de máquina que perdia para o conciso escrito à mão código de montagem. As instruções do VAX ISA suportavam um grande número de modos de endereçamento amigáveis ao programador e incluíam instruções separadas da máquina que executavam operações complexas, como inserir / excluir uma fila e calcular um polinômio. Os engenheiros da VAX ficaram encantados com o desenvolvimento de hardware que facilitou a vida dos programadores. O microcódigo facilitou a adição de novas instruções ao ISA - e o controle do firmware VAX de 99 bits foi aumentado para 4096 palavras.
Esse foco na expansão constante do número de instruções para facilitar a vida dos programadores de montadores provou ser uma vantagem competitiva real para o VAX da DEC. Os programadores gostavam de computadores que facilitam seu trabalho. Para muitos historiadores da computação, o VAX 11/780 marca o nascimento da arquitetura do processador CISC (com um conjunto completo de instruções).
Segundo Ato: Sucesso Aleatório e Grandes Falhas
O minicomputador DEC VAX 11/780 atingiu o pico quando o boom do microprocessador começou. Quase todos os primeiros microprocessadores eram máquinas CISC, porque diminuir a carga no programador continuava sendo uma vantagem competitiva, mesmo quando o computador era compactado em um único chip. Gordon Moore, da Intel, que cunhou a lei de Moore na Fairchild, foi incumbido de desenvolver o próximo ISA para substituir o ISA acidentalmente popular pelo Intel 8080/8085 (e Z80) de 8 bits. Participando do extremamente bem-sucedido projeto IBM System / 360 (um ISA para gerenciar tudo) e o outro da linha DEC de minicomputadores CISC da DEC, Gordon Moore também tentou desenvolver uma arquitetura universal de conjunto de instruções - um único Intel ISA, que permanecerá até o fim séculos.
Naquela época, os microprocessadores de 8 bits estavam em execução em um espaço de endereço de 16 bits, e a nova arquitetura do conjunto de instruções Intel ISA tinha um espaço de endereço de 32 bits e proteção de memória incorporada. Ela apoiou instruções de qualquer tamanho que começam com um pouco. E foi programado na mais nova e melhor linguagem de alto nível: Ada.
Esse ISA deveria fazer parte do processador Intel iAPX 432 e era um projeto muito grande e muito ambicioso para a Intel.
Se você estudar a história do "revolucionário" iAPX 432, verá que ele terminou em um terrível fracasso. O hardware necessário para a arquitetura IAPX 432 é extremamente complexo. Como resultado, o chip foi lançado com um grande atraso. (Exigiu um ciclo de desenvolvimento de 6 anos e apareceu apenas em 1981.) E quando o microprocessador finalmente apareceu, ele se mostrou excepcionalmente lento.
Moore, no início do projeto, percebeu que o desenvolvimento de um iAPX 432 levaria muito tempo; então, em 1976, ele lançou um projeto paralelo para desenvolver um microprocessador de 16 bits muito menos ambicioso, com base na extensão do bem-sucedido ISA de 8 bits de 8080, com compatibilidade no nível da fonte. código. Os desenvolvedores tinham apenas um ano para lançar o chip, então eles receberam apenas três semanas para desenvolver o ISA. O resultado foi um processador 8086 e um ISA universal, pelo menos nas próximas décadas.
Havia apenas um problema: de acordo com a descrição dos especialistas da Intel, o microprocessador 8086 saiu muito fraco.
O desempenho do Intel 8086 ficou aquém do de seus concorrentes mais próximos: o elegante Motorola 68000 (processador de 32 bits em roupas de 16 bits) e o Zilog Z8000 de 16 bits. Apesar do fraco desempenho, a IBM escolheu o Intel 8086 para seu projeto IBM PC, porque os engenheiros da Intel em Israel desenvolveram a variante 8088 - é o 8086 com um barramento de 8 bits. O microprocessador 8088 trabalhou um pouco mais devagar que o 8086, mas seu barramento de 8 bits parecia mais compatível com os chips periféricos existentes e reduziu o custo de fabricação de uma placa-mãe para PC.
De acordo com as previsões da IBM, planejava-se vender cerca de 250.000 computadores IBM PC. Em vez disso, as vendas excederam 100 milhões e o Intel 8088 foi um sucesso aleatório, mas absoluto.
O terceiro ato: o nascimento de RISC, VLIW e o naufrágio de "Itanika"
Em 1974, imediatamente após o aparecimento dos primeiros microprocessadores comerciais, a IBM John Kok tentou desenvolver um processador de controle para uma central telefônica eletrônica. Ele estima que o processador de controle precisa executar cerca de 10 milhões de instruções por segundo (MIPS) para atender aos requisitos do aplicativo. Os microprocessadores da época eram uma ordem de magnitude mais lenta, e até o mainframe IBM System / 370 não era adequado para esta tarefa: gerava cerca de 2 MIPS.
Assim, a equipe Kok, no âmbito do projeto 801, desenvolveu uma arquitetura de processador radicalmente modernizada com um barramento transportador e um circuito de controle rápido sem microcódigo - isso foi possível reduzindo o número de instruções a um mínimo para simplificar o gerenciamento. (A máquina recebeu o nome IBM 801 porque foi desenvolvida no prédio 801 do Thomas J. Watson IBM Research Center). Pela primeira vez, o IBM 801 implementou a arquitetura RISC (conjunto de instruções reduzido).
O protótipo do computador 801 foi construído em pequenos chips Motorola MECL 10K, que juntos proporcionaram um desempenho sem precedentes de 15 MIPS e se encaixavam facilmente nos requisitos técnicos. Como o conjunto de instruções abreviado é menos conveniente para o programador do que o conjunto de instruções CISC, a equipe da Coca teve que desenvolver compiladores otimizadores. Eles assumiram o ônus adicional de criar código de máquina eficiente a partir de algoritmos complexos escritos em linguagens de alto nível.
Depois disso, Kok ficou conhecido como o "pai do RISC". A IBM nunca lançou um comutador telefônico, mas o processador 801 evoluiu e acabou se tornando a base da grande linha de processadores RISC da IBM, amplamente utilizada em seus mainframes e servidores.
Mais tarde, vários engenheiros da DEC descobriram que cerca de 20% das instruções CISC da VAX ocupam cerca de 80% do microcódigo, mas apenas 0,2% do tempo total de execução do programa. Que despesa! Dados os resultados do projeto IBM 801 e as descobertas dos engenheiros da DEC, pode-se supor que a arquitetura CISC não é tão boa.
A suposição foi confirmada.
Em 1984, o professor de Stanford, John Hennessey, publicou um artigo de referência na revista
IEEE Transactions on Computers, intitulada
“Arquitetura de processador VLSI” , onde ele provou a superioridade das arquiteturas e do ISA no RISC para implementações de processador VLSI. Patterson resumiu a prova de Hennessey em sua palestra: RISC é, por definição, mais rápido, porque as máquinas CISC requerem 6 vezes mais ciclos de instrução do que as máquinas RISC. Embora a máquina CISC precise concluir metade das instruções para a mesma tarefa, o computador RISC é essencialmente três vezes mais rápido que o CISC.
Portanto, os processadores x86 em computadores modernos aparentemente apenas executam instruções de software compatíveis com CISC, mas, assim que essas instruções da RAM externa entram no processador, elas são imediatamente cortadas / cortadas em pedaços de "micro-comandos" mais simples (como a Intel chama instruções RISC), que depois na fila e executados em vários pipelines RISC. Os processadores x86 de hoje tornaram-se mais rápidos, transformando-se em máquinas RISC.
Vários desenvolvedores de arquitetura de processador decidiram desenvolver o ISA, que será muito melhor que o RISC ou o CISC. Com a ajuda de instruções muito longas da máquina (VLIW), tornou-se possível agrupar muitas operações paralelas em uma enorme instrução da máquina. Os arquitetos apelidaram esta versão do ISA como VLIW (Very Long Instruction Word). As máquinas VLIW tomam emprestado um dos princípios da operação RISC, confiando ao compilador a tarefa de planejar e empacotar no código da máquina as instruções VLIW geradas a partir do código fonte de alto nível.
A Intel decidiu que a arquitetura VLIW parece muito atraente - e começou o desenvolvimento do processador VLIW, que se tornará seu aplicativo para entrar no mundo inevitável dos processadores de 64 bits. A Intel chamou seu VLIW ISA IA-64. Como de costume, a Intel desenvolveu sua própria nomenclatura e seus nomes para termos familiares. No Intel Jargon, o VLIW evoluiu para EPIC (Explicitly Parallel Instruction Computing). A arquitetura EPIC não deve se basear no conjunto de instruções x86, em parte para impedir a cópia da AMD.
Mais tarde, os engenheiros do HP PA-RISC também decidiram que o potencial de desenvolvimento do RISC estava quase esgotado - e também foram infectados pelo VLIW. Em 1994, a HP uniu forças com a Intel para desenvolver uma arquitetura VLIW / EPIC de 64 bits. O resultado será chamado Itanium. O objetivo foi anunciado para lançar o primeiro processador Itanium em 1998.
No entanto, logo ficou claro que seria difícil desenvolver processadores e compiladores VLIW. A Intel não anunciou o nome Itanium até 1999 (a inteligência na Usenet imediatamente apelidou o processador de "Itanik"), e o primeiro processador em funcionamento foi lançado apenas em 2001. O Itanic acabou se afogando em segurança em 2017, quando a Intel anunciou a conclusão dos trabalhos no IA-64. (Consulte
"A Intel afundou o Itanium: talvez o projeto de processador com falha mais caro do mundo". )
A arquitetura EPIC também se tornou uma falha épica - uma versão em microprocessador de JJ Jinx de Star Wars. Embora ao mesmo tempo parecesse uma boa ideia.
Os processadores Itanium, EPIC e VLIW morreram por vários motivos, afirma Patterson:
- Ramificações imprevisíveis que complicam o planejamento e o empacotamento de operações paralelas em palavras de comando do VLIW.
- As falhas imprevisíveis do cache atrasaram a execução e levaram a atrasos variáveis na execução.
- Os conjuntos de instruções VLIW aumentaram a quantidade de código.
- Acabou sendo muito difícil criar bons compiladores de otimização para máquinas VLIW.
Talvez o especialista mais conhecido em algoritmos de computador do mundo, Donald Knuth, tenha observado: "A abordagem Itanium ... parecia tão boa - até que os compiladores desejados eram essencialmente impossíveis de escrever".
Os compiladores parecem se sair melhor com arquiteturas simples como o RISC.
As arquiteturas VLIW não fabricaram microprocessadores universais. Mas, mais tarde, eles ainda encontraram seu chamado, o que nos leva ao quarto ato da peça.
Ato quatro: a lei de escala de Dennard e a lei de Moore estão mortas, mas DSA, TPU e Open RISC-V estão vivos
Na peça de Tom Stoppard, Rosencrantz e Guildenstern estão mortos, dois personagens insignificantes arrancados de Hamlet de Shakespeare finalmente entendem no final do último ato que eles morreram durante a peça. No ato final da história do processador, Patterson morreu da lei de escala de Dennard e da lei de Moore. Aqui está um desenho da última edição do livro de Hennessey e Patterson, que mostra graficamente toda a história:
Fonte: John Hennessey e David Patterson, “Arquitetura de Computadores. The Quantitative Approach ”, 6ª ed. 2018O gráfico mostra que os microprocessadores RISC proporcionaram quase vinte anos de rápido crescimento da produtividade de 1986 a 2004, conforme evoluíram de acordo com a lei de Moore (o dobro de transistores em cada nova rodada da tecnologia de processo) e a lei de dimensionamento de Dennard (dobrando a velocidade com uma redução dupla no consumo de energia por transistor por cada novo ramo da tecnologia de processo). Então a lei de escala de Dennard morreu - e processadores individuais pararam de acelerar. O consumo de energia do transistor também parou pela metade em cada estágio.
A indústria compensou isso, contando apenas com a lei de Moore para dobrar o número de transistores - e aumentando rapidamente o número de processadores em um chip, entrando em uma era de múltiplos núcleos. O intervalo de duplicação da produtividade aumentou de 1,5 para 3,5 anos durante esta era, que durou menos de dez anos, antes da entrada em vigor da lei de Amdahl (reformulada como "há uma exploração limitada do paralelismo em todas as aplicações"). Poucos aplicativos podem carregar completamente dezenas de processadores.
Então a lei de Moore também faleceu.
Segundo Patterson, o resultado é tal que, desde 2015, o crescimento no desempenho do processador caiu para insignificantes 3% ao ano. A duplicação da lei de Moore ocorre agora em 1,5 e nem mesmo em 3,5 anos. Agora tem
vinte anos .
O fim do jogo? "Não", diz Patterson. Na arquitetura do processador, você pode tentar algumas coisas mais interessantes.
Um exemplo: as Arquiteturas Específicas de Domínio (DSAs) são processadores especialmente projetados que tentam acelerar a execução de um pequeno número de tarefas para aplicativos específicos. As arquiteturas VLIW não são adequadas para processadores universais, mas fazem sentido para aplicativos DSP com muito menos ramificações. Outro exemplo: Google TPU (Tensor Processing Unit), acelerando a execução do DNN (Deep Neural Network), usando um bloco de 65 536 unidades de adição de multiplicação (MAC) em um único chip.
Acontece que a computação matricial com precisão reduzida é a chave para obter DNNs realmente rápidos. 65.536 blocos MAC de oito bits nas TPUs do Google operam a 700 MHz e oferecem desempenho de 92 TOPS (teraoperations per second). Isso é cerca de 30 vezes mais rápido que a CPU do servidor e 15 vezes mais rápido que a GPU.
Multiplique pela metade do consumo de energia em uma TPU de 28 nanômetros em comparação com uma CPU ou GPU de servidor - e obtenha uma vantagem em energia / potência em 60 e 30 vezes, respectivamente.Por uma estranha coincidência, o professor David Patterson renunciou recentemente à Universidade da Califórnia em Berkeley, depois de lecionar e trabalhar lá por 40 anos. Ele agora ocupa o cargo de "Engenheiro Emérito" no Google para o projeto de desenvolvimento de TPU.Outra coisa interessante é a criação de arquiteturas ISA de código aberto, diz Patterson. Tais tentativas anteriores, incluindo o OpenRISC e o OpenSPARC , não decolaram, mas Patterson falou sobre um ISA de código aberto completamente novo - este é o RISC-Vque ele ajudou a desenvolver em Berkeley. Veja o SoC, diz Patterson, e você verá muitos processadores com diferentes ISAs. "Por quê?" Ele faz uma pergunta.Por que precisamos de um ISA universal, outro ISA para processamento de imagem, bem como ISA para processamento de vídeo, para processamento de áudio e ISA DSP em um único chip? Por que não fazer apenas um ou mais ISAs simples (e um conjunto de ferramentas de desenvolvimento de software) que podem ser reutilizados para aplicativos específicos? Por que não tornar o ISA open source para que todos possam usar essa arquitetura gratuitamente e melhorá-la? A única resposta de Patterson a essas perguntas é o RISC-V ISA. Fundação RISC-Vrecentemente criadaconceito semelhante ao Linux Foundation bem-sucedido. Ele já incluiu mais de 100 empresas e ele assumiu o trabalho de padronizar o RISC-V ISA. A missão do Fundo é contribuir para a implementação do RISC-V ISA e seu desenvolvimento futuro. Coincidentemente, o Dr. David Patterson, "aposentado", é o vice-presidente da Fundação RISC-V.Como Rosencrantz e Guildenstern, a lei de Dennard e a lei de Moore acabam mortas no final da peça histórica de Patterson, mas eventos interessantes na arquitetura de computadores estão apenas começando."Não há nada mais convincente do que a morte não convincente", disse a peça.Epílogo: em 21 de março, apenas uma semana após falar no IEEE, a Computing Technology Association (ACM) reconheceu a contribuição de Patterson e Hennessey para a arquitetura de computadores, concedendo a eles o ACM Turing Award 2017 “por uma abordagem computacional inovadora, sistemática e sistemática para projetar e avaliar arquiteturas de computadores que forneciam impacto duradouro na indústria de microprocessadores. ”