Sumário CAPÍTULO 1 Introdução 35 1.1 Visão geral 35 1.2 Os principais componentes de um computador 37 1.3 Um sistema-exemplo: entrando no jargão 38 1.4 Organizações de padronização 47 1.5 Desenvolvimento histórico 48 1.5.1 Geração zero: Máquinas de cálculo mecânicas (1642 1945) 49 1.5.2 A primeira geração: Computadores com válvulas (1945 1953) 51 1.5.3 A segunda geração: Computadores transistorizados (1954 1965) 55 1.5.4 A terceira geração: Computadores com circuitos integrados (1965 1980) 58 1.5.5 A quarta geração: Computadores VLSI (1980????) 58 1.5.6 Lei de Moore 61 1.6 A hierarquia de níveis do computador 62 1.7 O modelo de von Neumann 64 1.8 Modelos diferentes do modelo de von Neumann 66 Resumo do capítulo 68 Leitura complementar 68 Referências 69 Revisão de termos e conceitos essenciais 70 Exercícios 71 CAPÍTULO 2 Representação de Dados em Sistemas de Computação 73 2.1 Introdução 73 2.2 Sistemas de numeração posicionais 74 2.3 Conversões de decimal para binário 74 2.3.1 Converter números inteiros sem sinal 75 2.3.2 Converter frações 77 2.3.3 Converter entre bases que são potências de dois 79
26 Sumário 2.4 Representação de inteiro com sinal 79 2.4.1 Magnitude com sinal 80 2.4.2 Sistemas de complemento 84 2.4.3 Números sem sinal versus números com sinal 90 2.4.4 Computadores, aritmética e algoritmo de Booth 91 2.4.5 Carry versus overflow 94 2.5 Representação em ponto-flutuante 95 2.5.1 Um modelo simples 96 2.5.2 Aritmética de ponto-flutuante 98 2.5.3 Erros em ponto-flutuante 99 2.5.4 A norma IEEE-754 de ponto-flutuante 101 2.5.5 Intervalo, precisão e exatidão 103 2.5.6 Problemas adicionais com números em ponto-flutuante 104 2.6 Códigos de caracteres 107 2.6.1 Decimal codificado em binário 107 2.6.2 EBCDIC 109 2.6.3 ASCII 109 2.6.4 Unicode 112 2.7 Detecção e correção de erros 113 2.7.1 Verificação por redundância cíclica 114 2.7.2 Códigos de Hamming 116 2.7.3 Reed-Solomon 122 Resumo do capítulo 123 Leitura complementar 123 Referências 124 Revisão de termos e conceitos essenciais 125 Exercícios 126 Em foco: códigos para gravação e transmissão de dados 132 2A.1 Código sem-retorno-a-zero 132 2A.2 Código sem-retorno-a-zero-invertido 133 2A.3 Modulação de fase (código Manchester) 134 2A.4 Modulação de frequência 135 2A.5 Código limitado pelo tamanho 135 2A.6 Codificação de probabilidade máxima de resposta parcial 138 2A.7 Resumo 139 Exercícios 139 CAPÍTULO 3 Álgebra Booleana e Lógica Digital 140 3.1 Introdução 140 3.2 Álgebra booleana 141 3.2.1 Expressões booleanas 142 3.2.2 Identidades booleanas 144 3.2.3 Simplificação de expressões booleanas 145 3.2.4 Complementos 146 3.2.5 Representar funções booleanas 148
Sumário 27 3.3 Portas lógicas 149 3.3.1 Símbolos para portas lógicas 150 3.3.2 Portas universais 150 3.3.3 Portas com múltiplas entradas 151 3.4 Componentes digitais 152 3.4.1 Circuitos digitais e seu relacionamento com a álgebra booleana 152 3.4.2 Circuitos integrados 154 3.5 Circuitos combinacionais 154 3.5.1 Conceitos básicos 155 3.5.2 Exemplos de circuitos combinacionais típicos 155 3.6 Circuitos sequenciais 162 3.6.1 Conceitos básicos 162 3.6.2 Relógios 162 3.6.3 Flip-flops 163 3.6.4 Máquinas de estados finitos 165 3.6.5 Exemplos de circuitos sequenciais 171 3.6.6 Uma aplicação de lógica sequencial: codificação convolucional e detecção Viterbi 175 3.7 Projetando circuitos 181 Resumo do capítulo 182 Leitura complementar 183 Referências 184 Revisão de termos e conceitos essenciais 185 Exercícios 186 Em foco: mapas de Karnaugh 194 3A.1 Introdução 194 3A.2 Descrição de Kmaps e terminologia 194 3A.3 Simplificação de Kmap para duas variáveis 196 3A.4 Simplificação de Kmap para três variáveis 198 3A.5 Simplificação de Kmap para quatro variáveis 200 3A.6 Condições que não importam 204 3A.7 Resumo 205 Exercícios 205 CAPÍTULO 4 MARIE: Uma Introdução a um Computador Simples 208 4.1 Introdução 208 4.2 Organização e componentes básicos da UCP 208 4.2.1 Os registradores 209 4.2.2 A UAL 210 4.2.3 A unidade de controle 210 4.3 O barramento 210 4.4 Relógios 215 4.5 O subsistema de entrada/saída 216 4.6 Organização e endereçamento da memória 217 4.7 Interrupções 220
28 Sumário 4.8 MARIE 221 4.8.1 A arquitetura 221 4.8.2 Registradores e barramentos 222 4.8.3 Arquitetura do conjunto de instruções 223 4.8.4 Notação de transferência entre registradores 227 4.9 Processamento de instrução 229 4.9.1 O ciclo busca-decodifica-executa 229 4.9.2 Interrupções e o ciclo de instrução 230 4.9.3 E/S de MARIE 234 4.10 Um programa simples 234 4.11 Uma discussão sobre montadores 237 4.11.1 O que faz um montador? 237 4.11.2 Por que usar linguagem simbólica? 239 4.12 Estendendo nosso conjunto de instruções 240 4.13 Uma discussão sobre decodificação: controle implementado em hardware versus microprogramado 245 4.13.1 Controle de máquina 246 4.13.2 Controle implementado em hardware 248 4.13.3 Controle microprogramado 249 4.14 Exemplos reais de arquiteturas de computador 254 4.14.1 Arquiteturas Intel 255 4.14.2 Arquiteturas MIPS 261 Resumo do capítulo 264 Leitura complementar 265 Referências 266 Revisão de termos e conceitos essenciais 267 Exercícios 268 Verdadeiro ou falso 272 CAPÍTULO 5 Um Exame Mais Detalhado das Arquiteturas de Conjuntos de Instruções 273 5.1 Introdução 273 5.2 Formatos de instruções 273 5.2.1 Decisões de projeto sobre os conjuntos de instruções 274 5.2.2 Little endian versus Big endian 275 5.2.3 Armazenamento interno na UCP: pilhas versus registradores 277 5.2.4 Número de operandos e tamanho da instrução 278 5.2.5 Opcodes expandidos 282 5.3 Tipos de instrução 284 5.3.1 Movimentação de dados 284 5.3.2 Operações aritméticas 284 5.3.3 Instruções de lógica booleana 284 5.3.4 Instruções de manipulação de bits 285 5.3.5 Instruções de entrada e saída 286
Sumário 29 5.3.6 Instruções para transferência de controle 286 5.3.7 Instruções de propósito especial 286 5.3.8 Ortogonalidade do conjunto de instruções 287 5.4 Endereçamento 287 5.4.1 Tipos de dados 287 5.4.2 Modos de endereçamento 288 5.5 Usando pipeline em nível de instrução 291 5.6 Exemplos de ISAs do mundo real 296 5.6.1 Intel 296 5.6.2 MIPS 297 5.6.3 Máquina virtual Java 297 Resumo do capítulo 301 Leitura complementar 302 Referências 303 Revisão de termos e conceitos essenciais 304 Exercícios 305 Verdadeiro ou falso 309 CAPÍTULO 6 Memória 310 6.1 Introdução 310 6.2 Tipos de memória 310 6.3 A hierarquia de memória 312 6.3.1 Localidade de referência 314 6.4 Memória cache 314 6.4.1 Esquemas de mapeamento de cache 317 6.4.2 Políticas de substituição 324 6.4.3 Tempo efetivo de acesso e quociente de acertos 325 6.4.4 Quando a cache não funciona? 326 6.4.5 Políticas de escrita na cache 326 6.4.6 Caches de instrução e dados 327 6.4.7 Níveis da cache 330 6.5 Memória virtual 331 6.5.1 Paginação 332 6.5.2 Tempo efetivo de acesso usando paginação 338 6.5.3 Reunindo tudo: usando cache, TLBs e paginação 342 6.5.4 Vantagens e desvantagens de paginação e memória virtual 343 6.5.5 Segmentação 343 6.5.6 Paginação combinada com segmentação 344 6.6 Um exemplo real de gerenciamento de memória 345 Resumo do capítulo 346 Leitura complementar 347 Referências 347 Revisão de termos e conceitos essenciais 348 Exercícios 349
30 Sumário CAPÍTULO 7 Sistemas de Entrada/Saída e Armazenamento 355 7.1 Introdução 355 7.2 E/S e performance 356 7.3 Lei de Amdahl 356 7.4 Arquiteturas de E/S 357 7.4.1 Métodos de controle E/S 359 7.4.2 E/S de caracteres versus E/S de blocos 366 7.4.3 Operação do barramento de E/S 366 7.5 Modos de transmissão de dados 369 7.5.1 Transmissão de dados paralela 369 7.5.2 Transmissão de dados serial 373 7.6 Tecnologia de disco magnético 373 7.6.1 Unidades de disco rígido 375 7.6.2 Discos flexíveis (floppy) 379 7.7 Discos óticos 381 7.7.1 CD-ROM 381 7.7.2 DVD 385 7.7.3 Discos laser azul-violeta 386 7.7.4 Métodos de gravação em disco ótico 386 7.8 Fita magnética 387 7.9 RAID 392 7.9.1 RAID Nível 0 393 7.9.2 RAID Nível 1 394 7.9.3 RAID Nível 2 394 7.9.4 RAID Nível 3 395 7.9.5 RAID Nível 4 396 7.9.6 RAID Nível 5 397 7.9.7 RAID Nível 6 398 7.9.8 Raid DP 399 7.9.9 Sistemas RAID híbridos 400 7.10 O futuro do armazenamento de dados 400 Resumo do capítulo 405 Leitura complementar 406 Referências 407 Revisão de termos e conceitos essenciais 408 Exercícios 409 Em foco: compressão de dados 413 7A.1 Introdução 413 7A.2 Codificação estatística 415 7A.2.1 Codificação Huffman 415 7A.2.2 Codificação aritmética 420 7A.3 Sistemas de dicionário Ziv-Lempel (lz) 422 7A.4 Compressão GIF e PNG 426
Sumário 31 7A.5 Compressão jpeg 427 7A.6 Resumo 432 Exercícios 432 CAPÍTULO 8 Software de Sistema 434 8.1 Introdução 434 8.2 Sistemas operacionais 435 8.2.1 História de sistemas operacionais 436 8.2.2 Projeto de sistemas operacionais 442 8.2.3 Serviços do sistema operacional 443 8.3 Ambientes protegidos 448 8.3.1 Máquinas virtuais 448 8.3.2 Subsistemas e partições 451 8.3.3 Ambientes protegidos e a evolução de arquiteturas de sistemas 453 8.4 Ferramentas de programação 455 8.4.1 Montadores e linguagem simbólica 455 8.4.2 Editores de ligação 458 8.4.3 Bibliotecas de ligação dinâmica 459 8.4.4 Compiladores 461 8.4.5 Interpretadores 465 8.5 JAVA: Todos os acima 466 8.6 Software de banco de dados 473 8.7 Gerenciadores de transações 479 Resumo do capítulo 481 Leitura complementar 482 Referências 483 Revisão de termos e conceitos essenciais 483 Exercícios 485 CAPÍTULO 9 Arquiteturas Alternativas 487 9.1 Introdução 487 9.2 Máquinas RISC 488 9.3 Taxonomia de Flynn 493 9.4 Arquiteturas paralelas e multiprocessadas 497 9.4.1 Superescalar e VLIW 498 9.4.2 Processadores vetoriais 500 9.4.3 Redes de interconexão 502 9.4.4 Multiprocessadores com memória compartilhada 506 9.4.5 Computação distribuída 510 9.5 Abordagens alternativas para processamento paralelo 513 9.5.1 Computação de fluxo de dados 513 9.5.2 Redes neurais 516 9.5.3 Arrays sistólicos 519
32 Sumário 9.6 Computação quântica 520 Resumo do capítulo 522 Leitura complementar 523 Referências 524 Revisão de termos e conceitos essenciais 525 Exercícios 526 CAPÍTULO 10 Tópicos em Sistemas Embarcados 530 10.1 Introdução 530 10.2 Uma visão geral de hardware embarcado 532 10.2.1 Sistemas padronizados de hardware embarcado 532 10.2.2 Hardware configurável 536 10.2.3 Hardware embarcado projetado sob encomenda 543 10.3 Uma visão geral de software embarcado 549 10.3.1 Organização de memória de sistemas embarcados 552 10.3.2 Sistemas operacionais embarcados 553 10.3.3 Desenvolvimento de software para sistemas embarcados 556 Resumo do capítulo 559 Leitura complementar 560 Referências 562 Revisão de termos e conceitos essenciais 563 Exercícios 563 CAPÍTULO 11 Medida e Análise de Desempenho 566 11.1 Introdução 566 11.2 Equações de performance de computador 566 11.3 Preliminares matemáticas 568 11.3.1 O que significa média 569 11.3.2 As estatísticas e semânticas 574 11.4 Benchmarking 576 11.4.1 Ciclo de relógio, MIPS e FLOPS 577 11.4.2 Benchmarks sintéticos: Whetstone, Linpack e Dhrystone 579 11.4.3 Benchmarks padrão de avaliação de performance 580 11.4.4 Benchmarks do conselho de performance de processamento de transações 584 11.4.5 Simulação de sistemas 591 11.5 Otimização de performance de UCP 592 11.5.1 Otimização de desvios 593 11.5.2 Uso de bons algoritmos e código simples 596 11.6 Performance de disco 599 11.6.1 Entendendo o problema 599 11.6.2 Considerações físicas 601 11.6.3 Considerações lógicas 602
Sumário 33 Resumo do capítulo 607 Leitura complementar 608 Referências 609 Revisão de termos e conceitos essenciais 610 Exercícios 611 CAPÍTULO 12 Organização e Arquitetura de Redes 615 12.1 Introdução 615 12.2 As primeiras redes de computadores comerciais 615 12.3 Primeiras redes acadêmicas e científicas: as raízes e a arquitetura da Internet 616 12.4 Protocolos de rede I: unificação de protocolos ISO/OSI 620 12.4.1 Uma parábola 621 12.4.2 O modelo de referência OSI 622 12.5 Protocolos de rede II: arquitetura de rede TCP/IP 626 12.5.1 A Camada IP para a versão 4 627 12.5.2 O problema com IP versão 4 630 12.5.3 Protocolo de controle de transmissão (TCP) 634 12.5.4 O funcionamento do protocolo TCP 635 12.5.5 IP versão 6 638 12.6 Organização da rede 646 12.6.1 Meio físico de transmissão 646 12.6.2 Placas de interface 654 12.6.3 Repetidores 655 12.6.4 Hubs 655 12.6.5 Comutadores 656 12.6.6 Pontes e gateways 657 12.6.7 Roteadores e roteamento 658 12.7 Ligação de dados de alta capacidade 667 12.7.1 A hierarquia digital 667 12.7.2 ISDN 672 12.7.3 Modo de transferência assíncrono 675 12.8 Examinando a Internet 676 12.8.1 O crescimento na Internet 677 12.8.2 O crescimento da Internet 684 Resumo do capítulo 685 Leitura complementar 686 Referências 687 Revisão de termos e conceitos essenciais 688 Exercícios 689
34 Sumário CAPÍTULO 13 Sistemas de Armazenamento e Interfaces Selecionados 693 13.1 Introdução 693 13.2 Arquitetura SCSI 694 13.2.1 SCSI paralela clássica 695 13.2.2 Modelo 3 da arquitetura SCSI 699 13.3 Internet SCSI 706 13.4 Redes de armazenamento 709 13.5 Outras conexões de E/S 709 13.5.1 Barramentos paralelos: XT a ATA 710 13.5.2 ATA serial e ligação serial SCSI 711 13.5.3 Interconexão de componentes periféricos 712 13.5.4 Uma interface serial: USB 713 13.5.5 Interface de periféricos de alta performance: HiPPI 713 Resumo do capítulo 714 Leitura complementar 715 Referências 715 Revisão de termos e conceitos essenciais 715 Exercícios 716 APÊNDICE A Estruturas de Dados e o Computador 718 A.1 Introdução 718 A.2 Estruturas fundamentais 718 A.2.1 Arrays 718 A.2.2 Filas e listas encadeadas 720 A.2.3 Pilhas 722 A.3 Árvores 724 A.4 Grafos de redes 731 Resumo 734 Leitura complementar 734 Referências 734 Exercícios 734 Glossário 738 Respostas e Dicas para Exercícios Selecionados 779 Índice 795