Arquitetura de Computadores - Uma Aborda

Arquitetura de Computadores - Uma Aborda

(Parte 1 de 8)

Arquitetura de Computadores:

Uma Abordagem Quantitativa Quinta Edição

David A. Patterson John L. Hennessy

Tradugaoda sa Edigao

Tradugao:Eduardo Kraslcluk RevisaoTecnica: Ricardo Pannain

(2 CAMPUS

Do original: Computer Architecture: A Quantitative Approach Tradução autorizada do idioma inglês da edição publicada por Morgan Kaufmann, an imprint of Elsevier, Inc. Copyright © 2012 Elsevier Inc.

© 2014, Elsevier Editora Ltda.

Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. Nenhuma parte deste livro, sem autorização prévia por escrito da editora, poderá ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrônicos, mecânicos, fotográficos, gravação ou quaisquer outros.

Copidesque: Andréa Vidal Revisão Gráfica: Adriana Maria Patrício Takaki / Marco Antonio Corrêa / Roberto Mauro dos Santos Facce: Editoração Eletrônica: Thomson Digital

Elsevier Editora Ltda. Conhecimento sem Fronteiras Rua Sete de Setembro, 1 – 16o andar 20050-006 – Centro - Rio de Janeiro – RJ - Brasil

Rua Quintana, 753/8o andar 04569-011 Brooklin - São Paulo - SP - Brasil

Serviço de Atendimento ao Cliente O800-0265340 Atendimento1@elsevier.com

ISBN: 978-85-352-6122-6 ISBN (versão digital): 978-85-352-6411-1 Edição original: ISBN 978-0-12-383872-8

Nota: Muito zelo e técnica foram empregados na edição desta obra. No entanto, podem ocorrer erros de digitação, impressão ou dúvida conceitual. Em qualquer das hipóteses, solicitamos a comunicação ao nosso Serviço de Atendimento ao Cliente, para que possamos esclarecer ou encaminhar a questão.

Nem a editora nem o autor assumem qualquer responsabilidade por eventuais danos ou perdas a pessoas ou bens, ou bens, originados do uso desta publicação.

H436a

Hennessy, John L.

Arquitetura de computadores : uma abordagem quantitativa / John L. Hennessy,

Tradução de: Computer architecture, 5th ed. : a quantitative approach Inclui apêndice ISBN 978-85-352-6122-6

1. Arquitetura de computador. I. Patterson, David A. I. Título.

13-05666 CDD: 004.2 CDU: 004.2

John L. Hennessy é o décimo presidente da Universidade de Stanford, onde é membro do corpo docente desde 1977, nos departamentos de Engenharia Elétrica e Ciência da Computação. Hennessy é membro do IEEE e ACM, membro da Academia Nacional de Engenharia e da Sociedade Americana de Filosofia e membro da Academia Americana de Artes e Ciências. Entre seus muitos prêmios estão o Prêmio Eckert-Mauchly de 2001, por suas contribuições para a tecnologia RISC, o Prêmio Seymour Cray de Engenharia da Computação de 2001 e o Prêmio John von Neumann de 2000, que ele dividiu com David Patterson. Ele também recebeu sete doutorados honorários.

Em 1981, ele iniciou o Projeto MIPS, em Stanford, com um grupo de estudantes de pós-graduação. Depois de completar o projeto em 1984, tirou licença da universidade para co-fundar a MIPS Computer Systems (hoje MIPS Technologies), que desenvolveu um dos primeiros microprocessadores RISC comerciais. Em 2006, mais de 2 bilhões de microprocessadores MIPS foram vendidos em dispositivos, variando de video games e computadores palmtop a impressoras laser e switches de rede. Em seguida, Hennessy liderou o projeto DASH (Director Architeture for Shared Memory – Arquitetura Diretora para Memória Compartilhada), que criou o protótipo do primeiro microprocessador com cache coerente escalável. Muitas das ideias-chave desse projeto foram adotadas em multiprocessadores modernos. Além de suas atividades técnicas e responsabilidades na universidade, ele continuou a trabalhar com diversas empresas startup como conselheiro nos estágios iniciais e como investidor.

David A. Patterson ensina arquitetura de computadores na Universidade da Califórnia, em Berkeley, desde que se juntou ao corpo docente em 1977, onde ele ocupa a Cadeira Pardee de Ciência da Computação. Sua docência foi honrada com o Prêmio de Ensino Notável da Universidade da Califórnia, o Prêmio Karlstrom da ACM, a Medalha Mulligan de Educação e o Prêmio de Ensino Universitário do IEEE. Patterson recebeu o Prêmio de Realização Técnica do IEEE e o Prêmio Eckert-Mauchly por contribuições para o RISC e dividiu o Prêmio Johnson de Armazenamento de Informações por contribuições para o RAID. Ele também dividiu a Medalha John von Neumann do IEEE e o Prêmio C&C com John Hennessy. Como seu coautor, Patterson é membro da Academia Americana de Artes e Ciências, do Museu da História dos Computadores, ACM e IEEE, e foi eleito para a Academia Nacional de Engenharia, Academia Nacional de Ciências e para o Hall da Fama da Engenharia do Vale do Silício. Ele atuou no Comitê Consultivo de Tecnologia da Informação do presidente dos Estados Unidos, como presidente da divisão de CS no departamento EECS em Berkeley, como presidente da Associação de Pesquisa em Computação e como Presidente da ACM. Este histórico levou a prêmios de Serviço Destacado da ACM e CRA.

Em Berkeley, Patterson liderou o projeto e a implementação do RISC I, provavelmente o primeiro computador com conjunto reduzido de instruções VLSI, e a fundação da arquitetura comercial SPARC. Ele foi líder do projeto Arrays Redundantes de Discos Baratos

(Redundant Array of Inexpensive Disks – RAID), que levou a sistemas de armazenamento v

Sobre os Autores

confiáveis para muitas empresas. Ele também se envolveu no projeto Rede de Workstations (Network of Workstations – NOW), que levou à tecnologia de clusters usada pelas empresas de Internet e, mais tarde, à computação em nuvem. Esses projetos valeram três prêmios de dissertação da ACM. Seus projetos de pesquisa atuais são o Laboratório Algoritmo-Máquina-Pessoas e o Laboratório de Computação Paralela, onde ele é o diretor. O objetivo do Laboratório AMP é desenvolver algoritmos de aprendizado de máquina escaláveis, modelos de programação amigáveis para computadores em escala de depósito e ferramentas de crowd-sourcing para obter rapidamente insights valiosos de muitos dados na nuvem. O objetivo do laboratório Par é desenvolver tecnologias para entregar softwares escaláveis, portáveis, eficientes e produtivos para dispositivos pessoais móveis paralelos.

Sobre os Autoresvi

Para Andrea, Linda, e nossos quatro filhos Para Andrea, Linda, e nossos quatro filhos

Elogios para Arquitetura de Computadores: Uma Abordagem Quantitativa Quinta Edição

“A 5a edição de Arquitetura de Computadores: Uma Abordagem Quantitativa continua o legado, fornecendo aos estudantes de arquitetura de computadores as informações mais atualizadas sobre as plataformas computacionais atuais e insights arquitetônicos para ajudálos a projetar sistemas futuros. Um destaque da nova edição é o capítulo significativamente revisado sobre paralelismo em nível de dados, que desmistifica as arquiteturas de GPU com explicações claras, usando terminologia tradicional de arquitetura de computadores.”

—Krste Asanovic, Universidade da Califórnia, Berkeley

“Arquitetura de Computadores: Uma Abordagem Quantitativa é um clássico que, como um bom vinho, fica cada vez melhor. Eu comprei meu primeiro exemplar quando estava terminando a graduação e ele continua sendo um dos volumes que eu consulto com mais frequência. Quando a quarta edição saiu, havia tanto conteúdo novo que eu precisava comprá-la para continuar atualizado. E, enquanto eu revisava a quinta edição, percebi que Hennessy e Patterson tiveram sucesso de novo. Todo o conteúdo foi bastante atualizado e só o Capítulo 6 já torna esta nova edição uma leitura necessária para aqueles que realmente querem entender a computação em nuvem e em escala de depósito. Somente Hennessy e Patterson têm acesso ao pessoal do Google, Amazon, Microsoft e outros provedores de computação em nuvem e de aplicações em escala de Internet, e não existe melhor cobertura dessa importante área em outro lugar da indústria.”

—James Hamilton, Amazon Web Services

“Hennessy e Patterson escreveram a primeira edição deste livro quando os estudantes de pós-graduação construíam computadores com 50.0 transistores. Hoje, computadores em escala de depósito contêm esse mesmo número de servidores, cada qual consistindo de dúzias de processadores independentes e bilhões de transistores. A evolução da arquitetura de computadores tem sido rápida e incansável, mas Arquitetura de Computadores: Uma Abordagem Quantitativa acompanhou o processo com cada edição explicando e analisando com precisão as importantes novas ideias que tornam esse campo tão excitante.”

—James Larus, Microsoft Research

“Esta nova adição adiciona um soberbo novo capítulo sobre paralelismo em nível de dados em SIMD de vetor e arquiteturas de GPU. Ele explica conceitos-chave de arquitetura no interior das GPUs de mercado de massa, mapeando-os para termos tradicionais e comparando-os com arquiteturas de vetor e SIMD. Ele chega no momento certo e é relevante à mudança generalizada para a computação por GPU paralela. Arquitetura de Computadores: Uma Abordagem Quantitativa continua sendo o primeiro a apresentar uma cobertura completa da arquitetura de importantes novos desenvolvimentos!”

—John Nickolls, NVIDIA

“A nova edição deste livro – hoje um clássico – destaca a ascendência do paralelismo explícito (dados, thread, requisição) dedicando um capítulo inteiro a cada tipo. O capítulo sobre paralelismo de dados é particularmente esclarecedor: a comparação e o contraste entre SIMD de vetor, SIMD em nível de instrução e GPU ultrapassam o jargão associado a cada arquitetura e expõem as similaridades e diferenças entre elas.”

—Kunle Olukotun, Universidade de Stanford

“A 5a edição de Arquitetura de Computadores: Uma Abordagem Quantitativa explora os diversos conceitos paralelos e seus respectivos trade-offs. Assim como as edições anteriores, esta nova edição cobre as mais recentes tendências tecnológicas. Um destaque é o grande crescimento dos dispositivos pessoais móveis (Personal Mobile Devices – PMD) e da computação em escala de depósito (Warehouse-Scale Computing – WSC), cujo foco mudou para um equilíbrio mais sofisticado entre desempenho e eficiência energética em comparação com o desempenho bruto. Essas tendências estão alimentando nossa demanda por mais capacidade de processamento, que, por sua vez, está nos levando mais longe no caminho paralelo.”

—Andrew N. Sloss, Engenheiro consultor, ARM Autor de ARM System Developer's Guide

Agradecimentos

Embora este livro ainda esteja na quinta edição, criamos dez versões diferentes do conteúdo: três versões da primeira edição (alfa, beta e final) e duas versões da segunda, da terceira e da quarta edições (beta e final). Nesse percurso, recebemos a ajuda de centenas de revisores e usuários. Cada um deles ajudou a tornar este livro melhor. Por isso, decidimos fazer uma lista de todas as pessoas que colaboraram em alguma versão deste livro.

Assim como nas edições anteriores, este é um esforço comunitário que envolve diversos voluntários. Sem a ajuda deles, esta edição não estaria tão bem acabada.

Revisores Jason D. Bakos, University of South Carolina; Diana Franklin, The University of California, Santa Barbara; Norman P. Jouppi, HP Labs; Gregory Peterson, University of Tennessee; Parthasarathy Ranganathan, HP Labs; Mark Smotherman, Clemson University; Gurindar Sohi, University of Wisconsin–Madison; Mateo Valero, Universidad Politécnica de Cataluña; Sotirios G. Ziavras, New Jersey Institute of Technology.

Membros do Laboratório Par e Laboratório RAD da University of California–Berkeley, que fizeram frequentes revisões dos Capítulos 1, 4 e 6, moldando a explicação sobre GPUs e WSCs: Krste Asanovic, Michael Armbrust, Scott Beamer, Sarah Bird, Bryan Catanzaro, Jike Chong, Henry Cook, Derrick Coetzee, Randy Katz, Yun-sup Lee, Leo Meyervich, Mark Murphy, Zhangxi Tan, Vasily Volkov e Andrew Waterman.

Painel consultivo Luiz André Barroso, Google Inc.; Robert P. Colwell, R&E Colwell & Assoc. Inc.; Krisztian Flautner, VP de R&D na ARM Ltd.; Mary Jane Irwin, Penn State; David Kirk, NVIDIA; Grant Martin, cientista-chefe, Tensilica; Gurindar Sohi, University of Wisconsin–Madison; Mateo Valero, Universidad Politécnica de Cataluña.

Apêndices Krste Asanovic, University of California–Berkeley (Apêndice G); Thomas M. Conte, North Carolina State University (Apêndice E); José Duato, Universitat Politècnica de València and Simula (Apêndice F); David Goldberg, Xerox PARC (Apêndice J); Timothy M. Pinkston, University of Southern California (Apêndice F).

José Flich, da Universidad Politécnica de Valencia, deu contribuições significativas para a atualização do Apêndice F.

Agradecimentosxii

Estudos de caso e exercícios Jason D. Bakos, University of South Carolina (Capítulos 3 e 4); Diana Franklin, University of California, Santa Barbara (Capítulo 1 e Apêndice C); Norman P. Jouppi, HP Labs (Capítulo 2); Naveen Muralimanohar, HP Labs (Capítulo 2); Gregory Peterson, University of Tennessee (Apêndice A); Parthasarathy Ranganathan, HP Labs (Capítulo 6); Amr Zaky, University of Santa Clara (Capítulo 5 e Apêndice B).

Jichuan Chang, Kevin Lim e Justin Meza auxiliaram no desenvolvimento de testes dos estudos de caso e exercícios do Capítulo 6.

Material adicional John Nickolls, Steve Keckler e Michael Toksvig da NVIDIA (Capítulo 4, NVIDIA GPUs); Victor Lee, Intel (Capítulo 4, comparação do Core i7 e GPU); John Shalf, LBNL (Capítulo 4, arquiteturas recentes de vetor); Sam Williams, LBNL (modelo roofline para computadores no Capítulo 4); Steve Blackburn, da Australian National University, e Kathryn McKinley, da University of Texas, em Austin (Desempenho e medições de energia da Intel, no Capítulo 5); Luiz Barroso, Urs Hölzle, Jimmy Clidaris, Bob Felderman e Chris Johnson do Google (Google WSC, no Capítulo 6); James Hamilton, da Amazon Web Services (Distribuição de energia e modelo de custos, no Capítulo 6).

Jason D. Bakos. da University of South Carolina, desenvolveu os novos slides de aula para esta edição.

Mais uma vez, nosso agradecimento especial a Mark Smotherman, da Clemson University, que fez a leitura técnica final do nosso manuscrito. Mark encontrou diversos erros e ambiguidades, e, em consequência disso, o livro ficou muito mais limpo.

Este livro não poderia ter sido publicado sem uma editora, é claro. Queremos agradecer a toda a equipe da Morgan Kaufmann/Elsevier por seus esforços e suporte. Pelo trabalho nesta edição, particularmente, queremos agradecer aos nossos editores Nate McFadden e Todd Green, que coordenaram o painel consultivo, o desenvolvimento dos estudos de caso e exercícios, os grupos de foco, as revisões dos manuscritos e a atualização dos apêndices.

Também temos de agradecer à nossa equipe na universidade, Margaret Rowland e Roxana Infante, pelas inúmeras correspondências enviadas e pela “guarda do forte” em Stanford e Berkeley enquanto trabalhávamos no livro.

Nosso agradecimento final vai para nossas esposas, pelo sofrimento causado pelas leituras, trocas de ideias e escrita realizadas cada vez mais cedo todos os dias.

Revisores George Adams, Purdue University; Sarita Adve, University of Illinois, Urbana–Champaign; Jim Archibald, Brigham Young University; Krste Asanovic, Massachusetts Institute of Technology; Jean-Loup Baer, University of Washington; Paul Barr, Northeastern University; Rajendra V. Boppana, University of Texas, San Antonio; Mark Brehob, University of Michigan; Doug Burger, University of Texas, Austin; John Burger, SGI; Michael Butler; Thomas Casavant; Rohit Chandra; Peter Chen, University of Michigan; as turmas de SUNY Stony Brook, Carnegie Mellon, Stanford, Clemson e Wisconsin; Tim Coe, Vitesse Semiconductor; Robert P. Colwell; David Cummings; Bill Dally; David Douglas; José Duato, Universitat Politècnica de València and Simula; Anthony Duben, Southeast Missouri State University; Susan Eggers, University of Washington; Joel Emer; Barry Fagin, Dartmouth; Joel Ferguson, University of California, Santa

(Parte 1 de 8)

Comentários