Arquitetura de Computadores (5.ª Ed. At.)

Page 1

Abordagem moderna e prática dos sistemas digitais, para estudantes e profissionais. Com exemplos, exercícios resolvidos e exercícios propostos. C

M

Y

CM

MY

CY

CMY

K

Este livro reúne os aspetos mais importantes a ter em conta: como conceber uma boa experiência de jogo, o que caracteriza um jogo, a teoria de jogos, a indústria, como ser empreendedor, etc.

Conheça a organização e os mecanismos mais sofisticados de um sistema operativo e perceba como este gere e coordena o seu computador. Com exemplos em Unix (e variantes, Linux e Mac OS) e Windows.

Este livro, com múltiplos exemplos práticos, apresenta as bases e os conceitos que permitem compreender e aplicar as várias fases do desenvolvimento iterativo de uma boa interface utilizador.

17cm x 24cm

A melhor forma de otimizar o aproveitamento das capacidades de um computador é compreender os princípios básicos do seu funcionamento. Este livro descreve as técnicas subjacentes às várias arquiteturas de computador, desde os pequenos microcontroladores até aos grandes servidores, passando pelos dispositivos de computação pessoal (PCs, tablets e smartphones). O utilizador ficará a perceber, por exemplo, por que é que duplicar a frequência de relógio de um processador não reduz para metade o tempo de execução dos programas e por que é que às vezes o computador parece parar, com a luz de acesso ao disco ativa. O gestor de sistemas informáticos ficará com uma noção mais concreta do impacte da arquitetura dos seus servidores no desempenho dos programas e de quais são os pontos de estrangulamento no desempenho do sistema.

41,5mm

José Delgado Professor Associado do Departamento de Engenharia Informática do Instituto Superior Técnico, leciona há mais de 25 anos na área de Arquitetura de Computadores. É atualmente Regente da cadeira de Introdução à Arquitetura da Licenciatura em Engenharia Informática e Computadores, no polo do Taguspark.

Execute ao seu ritmo os 75 guiões experimentais, com um simulador para Windows, Linux e Mac; Fique a par das últimas evoluções nos processadores.

Carlos Ribeiro

O livro aborda os seguintes temas:

Professor Auxiliar do Departamento de Engenharia Informática do Instituto Superior Técnico, onde leciona desde 1993 nas áreas de Arquitetura de Computadores e de Sistemas Operativos. É atualmente Regente das cadeiras da área de Segurança.

Como construir computadores com simples portas lógicas; Como é que com apenas dois símbolos (0 e 1) é possível dominar o mundo; Conjunto de instruções e programação em linguagem assembly; Como é que os programas conseguem ser executados por um computador; Equilíbrio harmonioso entre as várias componentes de um computador; Como é que se projeta um computador; Microprogramação, processamento em estágios (pipelining), caches e memória virtual; Suporte para os sistemas operativos (processos); Evoluções mais recentes nos processadores, memórias e periféricos.

Esta 5.ª Edição Atualizada, refletindo a boa aceitação que a obra continua a ter no mercado, inclui os últimos avanços tecnológicos verificados ao nível dos processadores comerciais, mas também ao nível das memórias e dos periféricos, em particular na arquitetura dos PCs.

9 789727 227891

9cm x 24cm

Aprenda com um processador pedagógico;

Este livro está orientado ao autoestudo e experimentação. Inclui 75 guiões de laboratório, com base num simulador, que o leitor pode executar quando quiser, ao seu próprio ritmo, de forma a experimentar na prática os conceitos e técnicas que aprendeu. O livro baseia-se num processador pedagógico, PEPE, especialmente concebido para este efeito, suportando as características necessárias em qualquer processador mas sem as complicações dos processadores comerciais.

ISBN 978-972-722-789-1

17cm x 24cm

Conheça as reais capacidades e limitações do seu computador;

www.fca.pt

9cm x 24cm

Guiões de laboratório, simulador, slides com animação, exercícios resolvidos e diversos programas de exemplo em www.fca.pt, até o livro se esgotar ou ser publicada nova edição atualizada ou com alterações.

FCA

FCA


Distribuição

Lidel – edições técnicas, lda

SEDE: R. D. Estefânia, 183, R/C Dto., 1049‐057 LISBOA Internet: 21 354 14 18 – livraria@lidel.pt / Revenda: 21 351 14 43 – revenda@lidel.pt Formação/Marketing: 21 351 14 48 – formacao@lidel.pt / marketing@lidel.pt Ensino Línguas/Exportação: 21 351 14 42 – depinternacional@lidel.pt Fax: 21 352 26 84

LIVRARIA: Av. Praia da Vitória, 14 – 1000‐247 LISBOA Tel.: 21 354 14 18 – e‐mail: livraria@lidel.pt

Copyright © fevereiro 2014 (5.ª edição atualizada); fevereiro 2008 (2.ª edição revista e atualizada) FCA – Editora de Informática, Lda. ISBN: 978‐972‐722‐789‐1 Capa: José Manuel Reis Ilustração da capa: Miguel Montenegro Impressão e acabamento: Tipografia Lousanense, Lda. ‐ Lousã Depósito Legal N.º 371429/14 Livro segundo o Novo Acordo Ortográfico

Todos os nossos livros passam por um rigoroso controlo de qualidade, no entanto, aconselhamos a consulta periódica do nosso site (www.fca.pt) para fazer o download de eventuais correções. Os nomes comerciais referenciados neste livro têm patente registada.

Marcas Registadas de FCA – Editora de Informática, Lda. –

® ®

®

Reservados todos os direitos. Esta publicação não pode ser reproduzida, nem transmitida, no todo ou em parte, por qualquer processo eletrónico, mecânico, fotocópia, digitalização, gravação, sistema de armazenamento e disponibilização de informação, sítio Web, blogue ou outros, sem prévia autorização escrita da Editora, exceto o permitido pelo CDADC, em termos de cópia privada pela AGECOP – Associação para a Gestão da Cópia Privada, através do pagamento das respetivas taxas.


Índice Geral

Agradecimentos v Prefácio vii Índice das Simulações xxi 1- Introdução ao mundo dos computadores 1 1.1

O computador como ferramenta .................................................................................. 2

1.2

A importância dos computadores ................................................................................ 4

1.3

Processamento da informação ...................................................................................... 5

1.4

Estrutura básica de um computador ........................................................................... 6

1.5

O mundo com apenas dois símbolos ............................................................................ 9

1.6

Interação pessoa-computador .................................................................................... 11

1.7

A gestão de um computador ....................................................................................... 14

1.8

A evolução dos computadores .................................................................................... 16

1.9

Perspetivas de evolução futura ................................................................................... 27

1.10

Conclusões .................................................................................................................... 29 2 - O mundo binário 31

2.1

Circuitos eletrónicos analógicos ................................................................................. 32

2.2 Circuitos eletrónicos digitais ...................................................................................... 33 2.2.1 Funcionamento básico ............................................................................................. 33 2.2.2 Diagramas temporais ............................................................................................... 35 2.2.3 Portas lógicas ........................................................................................................... 36 2.3

Álgebra de Boole.......................................................................................................... 40

2.4

Funções lógicas ............................................................................................................ 41

2.5 Circuitos combinatórios .............................................................................................. 48 2.5.1 Síntese de circuitos combinatórios .......................................................................... 48 2.5.2 Multiplexers ............................................................................................................. 50 2.5.3 Descodificadores ..................................................................................................... 53 2.5.4 ROMs ...................................................................................................................... 56  FCA - Editora de Informática

xi


ARQUITETURA DE COMPUTADORES

2.6 Circuitos sequenciais ................................................................................................... 59 2.6.1 Elementos biestáveis ............................................................................................... 59 2.6.1.1 Trinco SR ....................................................................................................... 59 2.6.1.2 Trinco D ......................................................................................................... 60 2.6.1.3 Báscula D ....................................................................................................... 61 2.6.2 Registos ................................................................................................................... 65 2.6.3 Portas lógicas de três estados (tristate) .................................................................... 67 2.6.4 Banco de registos..................................................................................................... 68 2.6.5 Contadores ............................................................................................................... 70 2.6.6 Registos de deslocamento........................................................................................ 75 2.6.7 Máquinas de estados ................................................................................................ 76 2.6.7.1 Modelo das máquinas de estados ................................................................... 76 2.6.7.2 Diagramas de estados ..................................................................................... 78 2.6.7.3 Máquinas de estados sintetizadas ................................................................... 85 2.6.7.4 Máquinas de estados microprogramadas ....................................................... 85 2.7 Representação de números ......................................................................................... 89 2.7.1 Números em base 10 (decimais) e 2 (binários)........................................................ 89 2.7.2 Números em base 16 (hexadecimais) ...................................................................... 91 2.7.3 Potências de 2 .......................................................................................................... 93 2.7.4 Quantos bits para representar um número?.............................................................. 95 2.7.5 Representação de números negativos ...................................................................... 96 2.7.6 Representação de números em complemento para 2 ............................................... 97 2.7.7 Extensão do número de bits de um número ............................................................. 99 2.8 Operações aritméticas ............................................................................................... 101 2.8.1 Soma de dois números binários ............................................................................. 101 2.8.2 Subtração de dois números binários ...................................................................... 102 2.8.3 Excesso .................................................................................................................. 103 2.8.4 Multiplicação de dois números binários ................................................................ 105 2.8.5 Divisão de dois números binários .......................................................................... 107 2.9

Conclusões .................................................................................................................. 111

2.10

Exercícios ................................................................................................................... 112 3 - O meu primeiro computador 115

3.1

Componentes básicos de um computador ............................................................... 116

3.2

RAM – a memória para guardar informação ......................................................... 117

3.3 O processador (PEPE-8) ........................................................................................... 121 3.3.1 Unidade de dados .................................................................................................. 122 3.3.1.1 Registo na unidade de dados ........................................................................ 122 3.3.1.2 Unidade aritmética e lógica (ALU) .............................................................. 125 3.3.1.3 Funcionamento da unidade de dados ........................................................... 130 3.3.2 Unidade de controlo .............................................................................................. 133 3.3.2.1 Sinais de controlo ......................................................................................... 133 3.3.2.2 Contador de Programa (PC) ......................................................................... 134 3.3.2.3 Um programa simples .................................................................................. 135 3.3.2.4 Constantes no programa ............................................................................... 137 xii

 FCA - Editora de Informática


ÍNDICE GERAL

3.3.2.5 Saltos no programa ...................................................................................... 143 3.3.2.6 Funcionamento detalhado do programa ....................................................... 145 3.3.3 O processador (PEPE-8) e as memórias ................................................................ 148 3.3.3.1 Processador (PEPE-8) .................................................................................. 148 3.3.3.2 Memória de dados ........................................................................................ 149 3.3.3.3 Memória de instruções ................................................................................. 150 3.4 Programação em baixo nível de um computador ................................................... 152 3.4.1 Instruções em vez de sinais de controlo ................................................................ 152 3.4.2 Linguagem assembly ............................................................................................. 155 3.4.3 Implementação das instruções ............................................................................... 158 3.4.4 Programação em linguagem assembly ................................................................... 163 3.4.5 Programação do PEPE-8 em assembly: contagem de bits ..................................... 166 3.5 Periféricos .................................................................................................................. 168 3.5.1 Estrutura do hardware ........................................................................................... 168 3.5.2 Programação com periféricos ................................................................................ 176 3.5.2.1 Uso de periféricos de saída .......................................................................... 177 3.5.2.2 Uso de periféricos de entrada ....................................................................... 179 3.6

Soluções específicas ou genéricas? ........................................................................... 181

3.7

Conclusões .................................................................................................................. 182

3.8

Exercícios ................................................................................................................... 183 4 - Arquitetura básica de um processador 187

4.1

Banco de registos ....................................................................................................... 188

4.2 Endereços de dados e de instruções ......................................................................... 194 4.2.1 Memórias de dados e de instruções separadas: caches .......................................... 194 4.2.2 Espaço de endereçamento e mapa de endereços .................................................... 196 4.3

Impacte da largura das instruções ........................................................................... 198

4.4

Endereçamento de byte e de palavra ........................................................................ 200

4.5

Codificação das instruções ........................................................................................ 204

4.6

Registos....................................................................................................................... 207

4.7

Bits de estado ............................................................................................................. 209

4.8

Conjunto de instruções ............................................................................................. 214

4.9

Instruções de salto ..................................................................................................... 217

4.10 Instruções de transferência de dados ....................................................................... 220 4.10.1 Combinações de operandos ................................................................................... 220 4.10.2 Transferências entre registos ................................................................................. 222 4.10.3 Transferência de uma constante para um registo ................................................... 223 4.10.4 Transferências entre um registo e a memória ........................................................ 227 4.10.4.1 Endereços constantes e em registos ............................................................. 227 4.10.4.2 Modos de acesso à memória em 16 bits ....................................................... 228  FCA - Editora de Informática

xiii


ARQUITETURA DE COMPUTADORES

4.10.4.3 Acesso à memória em 16 bits com índice variável ...................................... 229 4.10.4.4 Acesso à memória em 16 bits sem índice ......................................................... 230 4.10.4.5 Acesso à memória em 16 bits com índice constante .................................... 231 4.10.4.6 Instruções de acesso à memória em 16 bits.................................................. 233 4.10.4.7 Acesso à memória em 8 bits ........................................................................ 234 4.10.4.8 Acesso à memória em 8 bits e 16 bits .......................................................... 239 4.10.5 Transferências para memória de uma constante ou memória ................................ 241 4.11 Instruções aritméticas ............................................................................................... 241 4.11.1 Instruções aritméticas mais simples....................................................................... 242 4.11.1.1 Soma e excesso: série de Fibonacci ............................................................. 243 4.11.1.2 Soma e transporte: números grandes............................................................ 244 4.11.2 Multiplicação e divisão.......................................................................................... 245 4.12 Instruções lógicas....................................................................................................... 249 4.12.1 Funcionalidade das instruções lógicas ................................................................... 249 4.12.2 Expressões booleanas ............................................................................................ 252 4.12.3 Instruções de manipulação de um só bit ................................................................ 254 4.12.4 Operações lógicas com máscaras........................................................................... 258 4.12.4.1 Funcionamento das máscaras ....................................................................... 258 4.12.4.2 Máscaras AND ............................................................................................. 259 4.12.4.3 Máscaras OR ................................................................................................ 261 4.12.4.4 Máscaras XOR ............................................................................................. 263 4.13 Instruções de deslocamento ...................................................................................... 265 4.13.1 Instruções de deslocamento linear ......................................................................... 266 4.13.2 Instruções de deslocamento circular (rotações) ..................................................... 270 4.14

Modos de endereçamento ......................................................................................... 272

4.15

Conclusões .................................................................................................................. 275

4.16

Exercícios ................................................................................................................... 276 5 - Programação de um computador 279

5.1 Um problema simples................................................................................................ 280 5.1.1 Modo de atuação de um ser humano ..................................................................... 280 5.1.2 Modo de atuação de um computador ..................................................................... 280 5.2

Modelação do problema com fluxogramas ............................................................. 281

5.3

Programação em alto nível ....................................................................................... 284

5.4

Mapeamento da programação de alto nível em linguagem assembly.................... 287

5.5 Dados, declarações e diretivas .................................................................................. 289 5.5.1 Constantes simbólicas e a diretiva EQU ................................................................ 289 5.5.2 Variáveis................................................................................................................ 290 5.5.2.1 Tipos das variáveis ....................................................................................... 290 5.5.2.2 Acesso a variáveis de tipos de dados estruturados ....................................... 291 5.5.2.3 Diretivas WORD, TABLE e STRING ......................................................... 292 5.5.3 A diretiva PLACE ................................................................................................. 295 5.5.4 Apontadores........................................................................................................... 299 xiv

 FCA - Editora de Informática


ÍNDICE GERAL

5.6 Instruções ................................................................................................................... 302 5.6.1 Atribuição e expressões ......................................................................................... 304 5.6.2 Decisão .................................................................................................................. 305 5.6.2.1 Decisão simples ........................................................................................... 305 5.6.2.2 Decisão múltipla .......................................................................................... 306 5.6.3 Iteração .................................................................................................................. 308 5.7 Rotinas........................................................................................................................ 310 5.7.1 Estruturação do código .......................................................................................... 310 5.7.1.1 Funções nas linguagens de alto nível ........................................................... 310 5.7.1.2 Rotinas em linguagem assembly .................................................................. 314 5.7.1.3 Variante com apontadores............................................................................ 318 5.7.2 Mecanismo de chamada e retorno ......................................................................... 320 5.7.2.1 Endereço de retorno ..................................................................................... 320 5.7.2.2 Chamada de rotinas com endereço de retorno em registo ............................ 321 5.7.2.3 Chamada de rotinas com endereço de retorno na memória (pilha) .............. 325 5.7.2.4 Qual dos mecanismos de chamada de rotinas se deve usar? ........................ 335 5.7.2.5 Variantes do funcionamento da pilha ........................................................... 337 5.7.3 Outras utilizações da pilha em rotinas ................................................................... 338 5.7.3.1 Guarda de registos nas rotinas ..................................................................... 338 5.7.3.2 Variáveis locais ............................................................................................ 346 5.7.3.3 Passagem de parâmetros e do resultado ....................................................... 349 5.7.3.4 Contextos de chamada das rotinas ............................................................... 355 5.7.3.5 Recursividade............................................................................................... 360 5.8 Gestão dos dados ....................................................................................................... 364 5.8.1 Quando os registos não chegam ............................................................................ 364 5.8.2 Cálculo de expressões............................................................................................ 365 5.8.3 Execução de instruções imbricadas ....................................................................... 366 5.8.4 Tabelas .................................................................................................................. 367 5.8.4.1 Tabelas de uma só dimensão ........................................................................ 367 5.8.4.2 Tabelas multidimensionais........................................................................... 372 5.8.4.3 Tabelas de apontadores ................................................................................ 378 5.8.5 Estruturas de dados dinâmicas (montão) ............................................................... 382 5.8.6 Listas ligadas ......................................................................................................... 386 5.9 Desenvolvimento de programas ............................................................................... 393 5.9.1 Ciclo de desenvolvimento ..................................................................................... 393 5.9.2 Programação em alto nível ou em linguagem assembly? ...................................... 398 5.9.3 Desenvolvimento em linguagem assembly ............................................................ 398 5.9.4 Ambientes de desenvolvimento ............................................................................. 400 5.9.4.1 Computador alvo e hospedeiro .................................................................... 400 5.9.4.2 Sistemas embebidos ..................................................................................... 405 5.10

Conclusões .................................................................................................................. 408

5.11

Exercícios ................................................................................................................... 409

 FCA - Editora de Informática

xv


ARQUITETURA DE COMPUTADORES

6 - O computador completo 413 6.1 Interligação dos componentes de um computador ................................................. 414 6.1.1 Barramentos........................................................................................................... 414 6.1.2 Operações de leitura e escrita ................................................................................ 417 6.1.3 Descodificação de endereços (de palavra) ............................................................. 420 6.1.3.1 Seleção de dispositivo a aceder .................................................................... 420 6.1.3.2 Implementação do mapa de endereços ......................................................... 421 6.1.3.3 Descodificação parcial dos endereços .......................................................... 426 6.1.3.4 Descodificação de mapas de endereços irregulares ..................................... 429 6.1.3.5 Descodificação de endereços programável .................................................. 431 6.1.4 Descodificação de endereços (de byte) .................................................................. 434 6.1.5 Impacte do endereçamento de byte ........................................................................ 439 6.1.5.1 Organização da memória em bytes .............................................................. 439 6.1.5.2 Endereçamento little-endian e big-endian .................................................. 442 6.1.5.3 Alinhamento dos acessos ............................................................................. 447 6.1.6 Ciclos de acesso à memória/periféricos ................................................................. 450 6.1.6.1 Ligação ao barramento de dados .................................................................. 450 6.1.6.2 Ciclos de leitura e escrita ............................................................................. 452 6.1.6.3 Temporizações no acesso aos dispositivos................................................... 455 6.1.6.4 Acesso a dispositivos lentos ......................................................................... 460 6.2 Exceções ..................................................................................................................... 463 6.2.1 Princípios básicos .................................................................................................. 463 6.2.2 Interrupções ........................................................................................................... 466 6.2.2.1 Pinos de interrupção ..................................................................................... 466 6.2.2.2 Controlo do atendimento de interrupções .................................................... 468 6.2.2.3 Comportamento das interrupções................................................................. 470 6.2.2.4 Mecanismo básico de atendimento de interrupções ..................................... 472 6.2.2.5 Programação com interrupções .................................................................... 473 6.2.2.6 Controlador de interrupções ......................................................................... 480 6.2.3 Outras exceções ..................................................................................................... 482 6.2.3.1 Invocação explícita e retorno de uma exceção ............................................. 482 6.2.3.2 Exceções predefinidas .................................................................................. 484 6.3 Tipos de periféricos ................................................................................................... 487 6.3.1 O que é um periférico? .......................................................................................... 487 6.3.2 Periféricos de memória de massa .......................................................................... 487 6.3.3 Periféricos gráficos ................................................................................................ 490 6.3.4 Periféricos de comunicação ................................................................................... 492 6.3.4.1 Princípios básicos......................................................................................... 492 6.3.4.2 Comunicação paralela .................................................................................. 494 6.3.4.3 Comunicação série ....................................................................................... 496 6.4 Arquitetura do sistema de periféricos ..................................................................... 510 6.4.1 Barramentos hierárquicos ...................................................................................... 510 6.4.2 Modos de transferência de dados........................................................................... 512 6.4.2.1 Transferência por teste (polling) .................................................................. 512 6.4.2.2 Transferência por interrupções..................................................................... 514 6.4.2.3 Transferência por acesso directo à memória (DMA) ................................... 515 6.4.2.4 Transferência por processador de entradas/saídas........................................ 520 xvi

 FCA - Editora de Informática


ÍNDICE GERAL

6.5 Exemplos de computadores completos .................................................................... 521 6.5.1 Classes de computadores ....................................................................................... 521 6.5.2 O PC ...................................................................................................................... 523 6.5.2.1 Arquitetura original ...................................................................................... 523 6.5.2.2 Evolução nos processadores......................................................................... 525 6.5.2.3 Evolução nas memórias ............................................................................... 533 6.5.2.4 Evolução nos periféricos .............................................................................. 536 6.5.2.5 Evolução nos barramentos ........................................................................... 538 6.5.3 O microcontrolador ............................................................................................... 541 6.5.3.1 Características básicas ................................................................................. 541 6.5.3.2 CREPE: um microcontrolador baseado no PEPE ........................................ 544 6.6 Avaliação de desempenho dos computadores ......................................................... 548 6.6.1 O que é o desempenho ........................................................................................... 548 6.6.2 Programas de avaliação (benchmarks) .................................................................. 549 6.6.3 A lei de Amdahl .................................................................................................... 552 6.6.4 Avaliação do desempenho do processador ............................................................ 553 6.6.5 Avaliação do desempenho da memória ................................................................. 555 6.6.6 O impacte do compilador ...................................................................................... 557 6.6.7 A filosofia RISC .................................................................................................... 559 6.6.8 Avaliação do desempenho dos periféricos ............................................................ 561 6.7

Conclusões .................................................................................................................. 566

6.8

Exercícios ................................................................................................................... 566 7 - O processador em detalhe 571

7.1

Diagrama de blocos geral.......................................................................................... 572

7.2 Núcleo do processador .............................................................................................. 574 7.2.1 Caminho de dados ................................................................................................. 574 7.2.1.1 Funcionamento geral .................................................................................... 574 7.2.1.2 Banco de registos ......................................................................................... 578 7.2.1.3 Gerador de constantes .................................................................................. 580 7.2.1.4 Unidade aritmética e lógica (ALU) .............................................................. 581 7.2.2 Unidade de exceções ............................................................................................. 585 7.2.3 Unidade de controlo .............................................................................................. 586 7.2.4 Microprogramação ................................................................................................ 591 7.2.4.1 Circuito simples microprogramado .............................................................. 591 7.2.4.2 Microprogramação no PEPE ........................................................................ 594 7.3 Processamento em estágios ....................................................................................... 601 7.3.1 Princípios de funcionamento ................................................................................. 601 7.3.2 Cadeias de estágios ................................................................................................ 605 7.3.3 Implementação das cadeias de estágios ................................................................. 609 7.3.3.1 Cadeia de estágios de instruções .................................................................. 609 7.3.3.2 Cadeia de estágios de microinstruções ......................................................... 614 7.3.4 Exceções com processamento em estágios ............................................................ 616 7.3.5 Dependências de dados.......................................................................................... 619 7.3.6 Dependências de controlo...................................................................................... 624  FCA - Editora de Informática

xvii


ARQUITETURA DE COMPUTADORES

7.4

Interface de memória ................................................................................................ 627

7.5 Caches ......................................................................................................................... 628 7.5.1 Princípios de funcionamento das caches ............................................................... 628 7.5.2 Organização das caches ......................................................................................... 631 7.5.2.1 Princípios da organização ............................................................................ 631 7.5.2.2 Mapeamento direto ...................................................................................... 633 7.5.2.3 Mapeamento associativo .............................................................................. 636 7.5.2.4 Mapeamento associativo por conjuntos ....................................................... 639 7.5.3 Políticas de substituição de blocos ........................................................................ 641 7.5.4 Políticas de escrita nas caches ............................................................................... 642 7.5.5 Evolução do subsistema de caches ........................................................................ 644 7.5.6 Casos em que não se quer cache ........................................................................... 646 7.5.7 Caches no PEPE .................................................................................................... 648 7.6 Memória virtual......................................................................................................... 649 7.6.1 Hierarquia de memórias ........................................................................................ 649 7.6.2 Princípios de funcionamento da memória virtual .................................................. 650 7.6.3 Tradução de endereços virtuais para físicos .......................................................... 654 7.6.4 Gestão das páginas ................................................................................................ 657 7.6.5 A TLB e o seu papel na tradução de endereços ..................................................... 661 7.6.6 Integração da memória virtual e das caches .......................................................... 663 7.6.7 Memória virtual no PEPE ...................................................................................... 667 7.7 Suporte para processos ............................................................................................. 671 7.7.1 Modelos de programação e de execução ............................................................... 671 7.7.2 Multiprogramação ................................................................................................. 672 7.7.3 Interação entre processos ....................................................................................... 678 7.7.3.1 Sincronização de baixo nível ....................................................................... 678 7.7.3.2 Sincronização com semáforos ...................................................................... 682 7.7.3.3 Comunicação ............................................................................................... 685 7.7.4 Programação cooperativa ...................................................................................... 685 7.7.5 Proteção ................................................................................................................. 689 7.7.6 Gestores de periféricos .......................................................................................... 692 7.8

Conclusões .................................................................................................................. 694

7.9

Exercícios ................................................................................................................... 695 Apêndice A - Manual de programador do PEPE 703

A.1

Pinos do módulo PEPE ............................................................................................. 703

A.2 Registos....................................................................................................................... 704 A.2.1 Registos principais................................................................................................. 704 A.2.2 Registos auxiliares ................................................................................................. 705 A.2.2.1 Configuração do núcleo ............................................................................... 706 A.2.2.2 Configuração das caches.............................................................................. 707 A.2.2.3 Configuração da memória virtual................................................................. 708 A.3

Exceções ..................................................................................................................... 709

A.4

Conjunto de instruções ............................................................................................. 709

xviii

 FCA - Editora de Informática


ÍNDICE GERAL

A.5

Programação do PEPE ............................................................................................. 716 Apêndice B - Manual de programador do CREPE 719

B.1

Pinos do módulo CREPE .......................................................................................... 719

B.2

Registos auxiliares ..................................................................................................... 719

B.3 Funcionamento dos periféricos ................................................................................ 722 B.3.1 Portos de entrada/saída .......................................................................................... 722 B.3.2 Temporizadores ..................................................................................................... 723 B.3.3 UARTs .................................................................................................................. 724 B.3.4 Informação sobre o estado dos periféricos ............................................................ 726 B.4

Exceções ..................................................................................................................... 726

B.5

Exemplo de utilização ............................................................................................... 729 Apêndice C - Introdução ao simulador (SIMAC) 733

C.1

Desenho de circuitos .................................................................................................. 733

C.2

Simulação de circuitos .............................................................................................. 736 Apêndice D - Computação em vírgula flutuante 743

D.1

Representação em vírgula flutuante ........................................................................ 743

D.2

A norma IEEE 754 .................................................................................................... 745

D.3

Operações aritméticas em vírgula flutuante ........................................................... 748 Apêndice E - Codificação de caracteres em ASCII 751 Bibliografia 753 Índice Remissivo 755

 FCA - Editora de Informática

xix



1- Introdução ao mundo dos computadores O computador é sem dúvida a maior invenção humana já realizada. Na sua curta história de pouco mais de 60 anos, já revolucionou completamente a nossa forma de existir, nas suas mais variadas vertentes. Tomou completamente conta de nós, e nem por sombras se pense que o impacte nas nossas vidas se limita ao computador pessoal que cada vez mais é um parceiro imprescindível de um crescente número de pessoas, tanto na sua vida profissional como no lazer. Nem sempre os vemos, mas eles estão por toda a parte, desde simples eletrodomésticos, passando pelos automóveis, até aos grandes sistemas de informação que gerem todos os serviços na sociedade moderna. Perceber como funcionam é essencial para melhor entendermos o papel que desempenham e o seu verdadeiro impacte nos programas que eles implementam, que cada vez fazem mais coisas e são mais complexos e elaborados. A procura de computadores com mais capacidades, em particular a rapidez de execução dos programas, é uma necessidade constante. A arquitetura (organização interna) de um computador é um fator essencial para o seu desempenho e constitui o foco principal deste livro. Neste primeiro capítulo apresentam-se os aspetos fundamentais do mundo dos computadores e estabelecem-se as bases para os capítulos seguintes, que aprofundam as várias vertentes da arquitetura dos computadores. Mostra-se também que um computador não é inteligente, limitando-se a seguir cegamente as instruções do seu programador. O grande trunfo de um computador é processar informação muito mais rapidamente do que um ser humano e ter uma memória muito grande e precisa, para além de poder trabalhar continuamente sem se cansar. No entanto, há algum paralelismo entre o modelo de funcionamento de um computador, incluindo os seus blocos constituintes, e o modelo macroscópico e organizacional do comportamento de um ser humano, na sua vida do dia a dia. Tanto uns como outros processam e memorizam informação e interagem com o mundo exterior. A grande diferença é que os computadores atacam os problemas de forma sistemática e repetitiva, sem se cansarem, enquanto os seres humanos preferem o raciocínio, a dedução, a intuição e a criatividade. Os seres humanos funcionam essencialmente por associações, com suporte em reações químicas e atividades bioelétricas, num conjunto harmonioso ainda muito pouco compreendido. Os computadores funcionam em base binária, só com dois símbolos (0 e 1), e apesar desta simplicidade conseguem fazer coisas extraordinárias. É fundamentalmente a arquitetura de um computador que determina a sua funcionalidade e capacidades. Este capítulo termina com uma breve resenha histórica da evolução dos computadores, incluindo a competição fervilhante do mercado atual nesta área.

 FCA - Editora de Informática

1


ARQUITETURA DE COMPUTADORES

1.1 O computador como ferramenta Há muitos animais que utilizam ferramentas, incluindo aves e até mesmo peixes, embora apenas com a finalidade de facilitar a sua alimentação (quebrar ovos ou cascas de frutos, por exemplo). Os primatas têm mais facilidade do que os outros animais não apenas porque possuem inteligência, como também porque desenvolveram um dedo oponível aos restantes. Desde há muito que o Homem se habituou a recorrer a ferramentas. Usou paus e pedras, não apenas no seu estado natural mas transformadas (pedras lascadas para melhor cortar, paus afiados para melhor perfurar). Dominou o fogo e os metais, melhorou o seu conhecimento das tecnologias e dos materiais, inventou os materiais sintéticos, como o plástico, com tecnologia fez mais ferramentas e com ferramentas fez mais tecnologia. O desenvolvimento da humanidade tem sido marcado por inventos, descobertas e criações históricas, como a invenção da roda, a descoberta da eletricidade e a invenção do motor, quer o de combustão, quer o elétrico. Mas numa História de acontecimentos importantes, que se têm sucedido a uma cadência cada vez mais rápida, nenhum teve impacte mais bombástico, tanto em termos de abrangência como de rapidez de mudança face à escala humana, do que o aparecimento do computador, e em particular o do computador pessoal. O computador é o rei das ferramentas! Não se trata de um equipamento mecânico, como uma alfaia agrícola ou uma simples alavanca. Mas o seu poder é tal que mesmo sem interferir diretamente de forma física no nosso mundo (embora o possa fazer indiretamente, controlando equipamento eletromecânico), mudou completamente a nossa forma de viver, comunicar e trabalhar, sendo responsável pela obsolescência de inúmeras áreas de trabalho e pela criação de muitas outras. É cada vez mais importante a sociedade saber lidar com computadores, mesmo que numa mera ótica de utilizador. Mais do que a própria televisão, o computador é “a caixa que mudou o mundo”. A televisão pode ser mais mediática, mas o computador bate-a aos pontos no que toca ao impacte nos mais variados aspetos da sociedade. Com o advento da televisão de alta definição e da melhoria das comunicações, a televisão e o computador parecem estar em rota de “colisão”, juntando-se a capacidade de distribuição de informação multimédia, de interatividade global e de processamento local de informação. No entanto, um computador em si não tem nada de mágico. Ao contrário dos seres humanos, não tem inteligência própria, no sentido de poder criar autonomamente novo conhecimento, através de raciocínio com base no que já tem memorizado. Trata-se simplesmente de um sistema eletrónico que consegue processar informação muito mais rapidamente do que um ser humano, de uma forma muito mais fiável e determinística, quer em termos de funcionalidade quer em termos de memória. É ótimo para executar tarefas repetitivas, mas tem de ser programado exaustivamente, prevendo-se todas as situações que podem ocorrer. A chamada Inteligência Artificial, um conjunto de técnicas que permitem a um programa de computador aprender conhecimento e inferir daí novas conclusões, consegue dotar o 2

 FCA - Editora de Informática


1 - INTRODUÇÃO AO MUNDO DOS COMPUTADORES

computador de uma inteligência aparente, em particular quando conjugada com a Robótica, de forma a permitir construir sistemas autónomos que decidam sozinhos perante situações não programadas previamente. No entanto, ainda estamos longe da visão do computador (comum nos filmes de ficção científica) de que consegue manter um diálogo e um raciocínio como se fosse uma pessoa. Nota

Existem já pequenos computadores (chamados redes neuronais) que conseguem aprender e tomar decisões de uma forma semelhante à do cérebro humano (simulando os neurónios). São ainda pequenos protótipos experimentais mas já com algumas aplicações interessantes, podendo um dia evoluir para sistemas mais inteligentes e, de alguma forma, substituir o Homem em tarefas que impliquem decisões, tal como as máquinas mecânicas vieram substituir, com vantagens, o músculo humano em massa (de que o maior expoente talvez tenha sido a construção das pirâmides no antigo Egito).

Excluindo estas áreas, o comportamento dos computadores é feito por programação e não por aprendizagem. O computador obedece a um padrão de comportamento predefinido por um programador através de um programa. Quando um computador reage de forma “esperta” perante uma dada situação, seja num jogo, seja num programa de trabalho (na área da contabilidade, por exemplo), o que sobressai é apenas a inteligência de quem fez o programa, que anteviu a situação e programou o computador para reagir de determinada forma. Não é o computador que, tendo apenas por base o conhecimento geral da matéria em causa, analisa a situação, raciocina, toma decisões na altura e aprende com os erros e os sucessos passados, como se fosse um ser humano. Pelo contrário, tal foi feito pelo programador antecipadamente, quando fez o tal jogo ou o tal programa de contabilidade. Tudo tem de estar já previsto. Um computador tem como blocos constituintes fundamentais um “cérebro” e uma memória. O dito cérebro não é mais do que uma unidade de processamento, capaz de operações muito, muito básicas. A memória não faz mais do que armazenar dados e as instruções dos programas. Um computador em funcionamento pode ser comparado a um ratinho num enorme labirinto, seguindo cegamente setas que indicam a direção a tomar (as instruções do programa). É o conjunto dessas instruções, que o programador desenvolveu, e o seu comportamento macroscópico que conferem a aparente inteligência ao computador. Esse, em si, não faz a mínima ideia do que está a fazer! Essencial

O computador é a verdadeira “caixa que mudou o mundo”, mas não por mérito

próprio. O computador executa cegamente as instruções que lhe dão, sem saber o que está a fazer. A inteligência aparente de alguns programas é apenas a do programador, que soube antever as várias situações possíveis;

O computador é a ferramenta mais elaborada que o Homem já desenvolveu.

Uma das suas características fundamentais é servir para desenvolver outras ferramentas, atuando como metaferramenta e aumentando de forma exponencial o ritmo de desenvolvimento da sociedade.

 FCA - Editora de Informática

3


ARQUITETURA DE COMPUTADORES

O objetivo deste livro é mostrar como é que esse “cérebro” e essa memória podem estar organizados de forma a conseguir implementar programas arbitrariamente complexos e funcionalidades de alto nível que nos são verdadeiramente úteis na nossa vida quotidiana e sem as quais já não conseguimos conceber a sociedade moderna.

1.2 A importância dos computadores Antes do advento dos computadores tudo era manual, com mão de obra intensiva. Os departamentos de contabilidade, as repartições públicas, etc., estavam cheias de pessoas que laboriosamente gastavam metade do tempo a anotar a informação em livros de registo e a outra metade a consultá-los. As pessoas passavam dezenas de anos no mesmo emprego, a executar as mesmas tarefas repetidamente e da mesma forma. O computador veio mudar tudo isto, com características imbatíveis por qualquer ser humano:

Automatização – O computador executa tarefas repetitivas indefinidamente e de forma autónoma sem se cansar, mesmo trabalhando 24 horas por dia; Capacidade de memória e de processamento – Permite memorizar enciclopédias inteiras com a maior das facilidades e efetuar cálculos muito complexos; Rapidez – Um computador consegue executar operações simples milhares de milhões de vezes mais rápido que um ser humano; Fiabilidade – A probabilidade de um computador cometer um erro fortuito é na ordem de biliões de vezes mais baixa do que a de um ser humano (não contando com os erros de programação que os programadores sempre introduzem!...); Custo – Um computador pode trabalhar continuamente sem contestar as ordens, sem receber qualquer ordenado, sem pedir aumentos e sem fazer greves. É o empregado ideal. Paga-se a ele próprio em pouco tempo!...

Pelo seu lado, as pessoas têm custos de ordenado cada vez mais elevados mas (ainda) conseguem apresentar algumas vantagens:

Inteligência – As capacidades de raciocínio de um computador são ainda demasiado primitivas em comparação com as dos seres humanos; Criatividade – O expoente máximo da natureza humana e em termos práticos totalmente fora do alcance das capacidades de um computador atual; Trabalho físico especializado – Apesar de todos os avanços tecnológicos na área da robótica, em termos de sensores artificiais (visão, tato, etc.), de atuadores eletromecânicos de precisão (mãos artificiais) e de programas de controlo e decisão, ainda nada consegue substituir os trabalhadores humanos nas operações que envolvam intervenção física não repetitiva.

Estas características têm sido responsáveis pela mudança estrutural das organizações e dos seus métodos de trabalho. Os empregos que têm por base tarefas repetitivas e de baixa especialização têm sido sistematicamente substituídos por outros, de maior nível tecnológico e suportados por um número crescente de computadores, que “ocupam” agora os empregos que antes estavam atribuídos a pessoas. 4

 FCA - Editora de Informática


1 - INTRODUÇÃO AO MUNDO DOS COMPUTADORES

1.3 Processamento da informação Mas afinal o que é que um computador é capaz de fazer, isto é, que tipo de problemas consegue resolver? Resposta: todos os que envolvam processamento de informação. Deste ponto de vista, a forma como um computador processa a informação não é assim tão diferente da do Homem. Consegue é fazê-lo de forma mais rápida, mais fiável e com maiores capacidades de processamento e de memória. Na prática, o que um computador faz é simular o comportamento de uma ou mais pessoas. Trata-se de uma simulação simplificada, uma vez que as pessoas necessitam de truques organizacionais e de coordenação que num computador são totalmente supérfluos.

Fig. 1.1 - O computador como sistema de processamento de informação

Um computador consegue facilmente simular (com grandes vantagens) muitas das tarefas que antigamente eram executadas por um batalhão de pessoas num departamento de contabilidade (por exemplo) de uma empresa. O mesmo não se pode dizer de simular o trabalho de uma só pessoa a criar, seja um escritor, um filósofo, um artista plástico, um cientista, etc. Onde é que está a diferença? O primeiro caso corresponde a uma área de trabalho com procedimentos repetitivos e metodologias bem definidas, enquanto no segundo o que está em causa é a inteligência e a criatividade, o desbravar de novas fronteiras, o estabelecer de novas regras. Portanto, o processamento de informação pressupõe a existência prévia de um algoritmo (conjunto de passos elementares para se atingir um dado objetivo), que num computador é implementado por um programa e no caso de uma pessoa se traduz por um manual de procedimentos (escrito ou simplesmente explicado oralmente ou ainda assumido de forma implícita). Aliás, o mesmo processamento pode ser implementado por algoritmos diferentes, alternativos. Por exemplo, o cálculo do perímetro de um retângulo pode ser implementado de duas formas distintas:

Algoritmo 1 – Somar os lados todos (três somas); Algoritmo 2 – Somar um lado com outro diferente e multiplicar a soma por 2 (uma soma e uma multiplicação).

A escolha do melhor algoritmo depende das condições que se tem para os implementar. Se a soma e a multiplicação forem da mesma ordem de grandeza em termos de complexidade e de tempo de execução, então o segundo algoritmo parece ser o melhor. Mas se a multiplicação for muito mais complicada e morosa do que a soma num dado computador, então o primeiro algoritmo tornar-se-á mais simples e rápido. Terá mais passos, mas mais simples.  FCA - Editora de Informática

5


ARQUITETURA DE COMPUTADORES

Em cada caso, tem de se avaliar a situação e escolher o algoritmo mais adequado. Um dado algoritmo pode ser bom para ser implementado num computador e mau para ser executado por uma pessoa e vice-versa, uma vez que pessoas e computadores têm capacidades distintas. Os componentes de informação fundamentais que estão em causa são os seguintes:

Programa – Conjunto de instruções (operações básicas) que quando executadas por uma dada ordem implementam o algoritmo; Dados de entrada – Conjunto de valores que o programa consome; Dados de saída – Conjunto de valores que o programa produz. Em termos intermédios, os dados de saída de uma instrução podem ser os dados de entrada de instruções seguintes; Regras de comunicação com o mundo exterior, em termos de:

-

Representação dos dados – Notação que todos entendam; Protocolo de comunicação – Regras conhecidas e aceites por todos.

1.4 Estrutura básica de um computador Nestas condições, poder-se-á dizer que um computador deverá ser constituído pelos seguintes blocos fundamentais: Nota

Processador – Executa as instruções; Memória de instruções – Local onde as instruções que compõem o programa estão armazenadas; Memória de dados – Usada para armazenar os dados de entrada, os dados intermédios e os dados de saída do programa; Interface com o mundo exterior – Para interação com este. Assume-se normalmente que, do ponto de vista da execução do programa, a memória de instruções suporta apenas leitura. A escrita, necessária para memorizar o programa, ocorre apenas antes de a execução começar, eliminando-se a possibilidade de um programa produzir alterações nele próprio. É uma questão de segurança (contra erros do próprio programa) e de simplicidade.

Este sistema funciona em ciclo no qual o processador é o motor, como se de um coração se tratasse, e executa repetidamente os seguintes passos: 1. 2. 3. 4. 5. 6. 6

Lê uma instrução da memória de instruções. Interpreta a instrução e vê que operação é necessário fazer. Retira da memória de dados a informação necessária para executar essa operação; Executa a operação. Armazena o resultado dessa operação na memória de dados. Volta ao passo 1 onde irá ler a instrução seguinte na memória de instruções.  FCA - Editora de Informática


5 - Progr amação de um computador Os seres humanos adquirem conhecimento através da aprendizagem. Conseguem aplicar o conhecimento que têm em novas situações, recolher informação sobre os resultados obtidos de forma a reforçar (ou eliminar) conceitos e associações, atualizando o seu conhecimento, e continuar este ciclo de aprendizagem. Pelo contrário, e com exceção de alguns pequenos protótipos experimentais e de alguns programas específicos, a esmagadora maioria dos computadores tem de ser programada. Para saberem o que fazer precisam de um programa que preveja todas as situações que poderão ocorrer. Um computador não tem inteligência própria, e não sabe o que fazer quando surge uma situação que o seu programa não antecipou. O capítulo 4 mostrou as características fundamentais de um processador (o cérebro de um computador) e as operações mais básicas que ele consegue efetuar. Não é nada parecido com o modelo de funcionamento humano. Isso significa que programar um computador não é uma tarefa nada fácil para um ser humano (o programador). Após conceber a ideia do que pretende, o programador tem de a transformar num conjunto de pequenas operações que o computador consiga processar, quer executando-as diretamente, quer efetuando transformações de modo a produzir sequências de operações mais elementares mas que no seu conjunto são funcionalmente equivalentes. O objetivo deste capítulo é estabelecer os passos necessários para que, dado um computador baseado num processador, como por exemplo o PEPE, se possam programar e executar programas arbitrariamente complexos. Hoje em dia já existem linguagens de programação de alto nível, que evitam muitos dos detalhes da programação em assembly. Este capítulo mostra como mapear uma linguagem de alto nível em linguagem assembly, de modo a que se perceba quais os passos envolvidos na programação de um computador, desde a ideia até ao programa pronto e a executar. A linguagem assembly é a mais enfatizada nos livros sobre arquitetura de computadores, pois tem uma relação muito mais direta com os recursos do hardware e com o seu funcionamento. Assim, este capítulo mostra como se deve programar nesta linguagem, apresentando uma série de exemplos que não só completam os do capítulo 4 como introduzem novas funcionalidades decorrentes das potencialidades do assembler. Se o capítulo 4 teve as instruções como ponto central, este capítulo coloca a sua ênfase no programa como sequência organizada de instruções, que implementa uma dada funcionalidade, e na imprescindível boa documentação que faz parte intrínseca da arte de bem programar, seja em alto nível ou em linguagem assembly.  FCA - Editora de Informática

279


ARQUITETURA DE COMPUTADORES

5.1 Um problema simples O capítulo 4 apresentou uma série de pequenos exemplos, destinados simplesmente a ilustrar as instruções básicas do PEPE. Os computadores conseguem executar programas muito mais elaborados, feitos inclusivamente por equipas de centenas de programadores. No entanto, o PEPE tem ainda muitas características por revelar, pelo que o melhor é começarmos com um exemplo simples. Imaginemos que a um ser humano e a um computador é dado um conjunto de números inteiros entre 0 e 9999, para ordenar por ordem crescente.

5.1.1 Modo de atuação de um ser humano Embora possa naturalmente haver variantes, o algoritmo tipicamente usado pelas pessoas para ordenar estes números é o seguinte: 1. Separa os vários números em dez grupos, de acordo com o seu algarismo dos milhares. 2. Em cada grupo dos milhares, separa os números em dez grupos, de acordo com o algarismo das centenas. 3. Em cada grupo das centenas, separa os números em dez grupos, de acordo com o algarismo das dezenas. 4. Em cada grupo das dezenas, ordena os números por comparação direta. 5. No fim, é só coligir todos os grupos das dezenas pela ordem crescente dentro das centenas e dentro dos milhares, ficando tudo ordenado.

5.1.2 Modo de atuação de um computador Um computador pode ser programado para executar exatamente este algoritmo. Mas só para imitar o ser humano, pois esta não é a forma mais natural de atuar por parte de um computador. Um computador não funciona em base 10, mas sim em base 2. Também não precisa de organizar os números em grupos (um truque usado pelos humanos para conseguir lidar mais facilmente com muitos números), além de que consegue executar muitas operações repetitivas de forma muito rápida e sem se aborrecer ou cansar. Existem algoritmos de ordenação bastante otimizados para o funcionamento de um computador, mas aqui vamos ilustrar um bastante simples, normalmente designado ordenação de bolha (bubble sort). Este algoritmo consiste simplesmente em: 1. Ir analisando os vários números da sequência dada, dois a dois, e trocar a sua posição na sequência se o primeiro for maior que o segundo (se forem iguais não vale a pena trocá-los).

280

 FCA - Editora de Informática


5 - PROGRAMAÇÃO DE UM COMPUTADOR

2. Acabando de analisar os números todos, volta-se ao princípio e repete-se esta operação tantas vezes quantas as necessárias até numa volta completa à sequência de números não ter havido uma só troca (caso em que os números estarão todos ordenados por ordem crescente). O nome “bolha” deriva do facto de que os números se vão deslocar aos poucos para um lado ou outro da sequência, consoante o seu valor, como se fossem bolhas de ar a deslocar-se à tona de água. Este é um algoritmo demasiado repetitivo para um ser humano! Mas as operações básicas são muito simples, o mais importante para um computador, que não se queixa por fazer repetidamente a mesma coisa e é muito rápido a fazer as operações. A Fig. 5.1 ilustra o algoritmo para uma sequência de quatro números. Em cada ronda pela sequência, o algoritmo faz N-1 iterações (3, neste caso), em que N (4) indica quantos números a sequência tem. O algoritmo termina quando uma ronda completa não produzir nenhuma troca. Sequência original

10

5

6

2

Ronda 1

Após iteração 1 Após iteração 2 Após iteração 3

5 5 5

10 6 6

6 10 2

2 2 10

Ronda 2

Após iteração 1 Após iteração 2 Após iteração 3

5 5 5

6 2 2

2 6 6

10 10 10

Ronda 3

Após iteração 1 Após iteração 2 Após iteração 3

2 2 2

5 5 5

6 6 6

10 10 10

Ronda 4

Após iteração 1 Após iteração 2 Após iteração 3

2 2 2

5 5 5

6 6 6

10 10 10

Fig. 5.1 - Ilustração do algoritmo de ordenação de bolha para quatro números. Os retângulos indicam os pares de números testados. Aqueles em que houve troca de números face à iteração anterior estão a cinzento

5.2 Modelação do problema com fluxogramas A Fig. 5.1 podia ser usada para simplesmente explicar o algoritmo a um ser humano, que o compreenderia por aprendizagem. Um computador é muito mais básico e não consegue entender a figura diretamente, pelo que se torna necessário desenvolver um processo de transformar o conceito do algoritmo ao nível humano até chegar ao código-máquina, constituído por instruções que o processador consegue executar diretamente, tal como representado na Fig. 1.4. O conceito é normalmente expresso primeiro por uma simples descrição textual, gráfica e/ou tabular (a chamada especificação). Depois, com alguma prática e em casos muito

 FCA - Editora de Informática

281


Abordagem moderna e prática dos sistemas digitais, para estudantes e profissionais. Com exemplos, exercícios resolvidos e exercícios propostos. C

M

Y

CM

MY

CY

CMY

K

Este livro reúne os aspetos mais importantes a ter em conta: como conceber uma boa experiência de jogo, o que caracteriza um jogo, a teoria de jogos, a indústria, como ser empreendedor, etc.

Conheça a organização e os mecanismos mais sofisticados de um sistema operativo e perceba como este gere e coordena o seu computador. Com exemplos em Unix (e variantes, Linux e Mac OS) e Windows.

Este livro, com múltiplos exemplos práticos, apresenta as bases e os conceitos que permitem compreender e aplicar as várias fases do desenvolvimento iterativo de uma boa interface utilizador.

17cm x 24cm

A melhor forma de otimizar o aproveitamento das capacidades de um computador é compreender os princípios básicos do seu funcionamento. Este livro descreve as técnicas subjacentes às várias arquiteturas de computador, desde os pequenos microcontroladores até aos grandes servidores, passando pelos dispositivos de computação pessoal (PCs, tablets e smartphones). O utilizador ficará a perceber, por exemplo, por que é que duplicar a frequência de relógio de um processador não reduz para metade o tempo de execução dos programas e por que é que às vezes o computador parece parar, com a luz de acesso ao disco ativa. O gestor de sistemas informáticos ficará com uma noção mais concreta do impacte da arquitetura dos seus servidores no desempenho dos programas e de quais são os pontos de estrangulamento no desempenho do sistema.

41,5mm

José Delgado Professor Associado do Departamento de Engenharia Informática do Instituto Superior Técnico, leciona há mais de 25 anos na área de Arquitetura de Computadores. É atualmente Regente da cadeira de Introdução à Arquitetura da Licenciatura em Engenharia Informática e Computadores, no polo do Taguspark.

Execute ao seu ritmo os 75 guiões experimentais, com um simulador para Windows, Linux e Mac; Fique a par das últimas evoluções nos processadores.

Carlos Ribeiro

O livro aborda os seguintes temas:

Professor Auxiliar do Departamento de Engenharia Informática do Instituto Superior Técnico, onde leciona desde 1993 nas áreas de Arquitetura de Computadores e de Sistemas Operativos. É atualmente Regente das cadeiras da área de Segurança.

Como construir computadores com simples portas lógicas; Como é que com apenas dois símbolos (0 e 1) é possível dominar o mundo; Conjunto de instruções e programação em linguagem assembly; Como é que os programas conseguem ser executados por um computador; Equilíbrio harmonioso entre as várias componentes de um computador; Como é que se projeta um computador; Microprogramação, processamento em estágios (pipelining), caches e memória virtual; Suporte para os sistemas operativos (processos); Evoluções mais recentes nos processadores, memórias e periféricos.

Esta 5.ª Edição Atualizada, refletindo a boa aceitação que a obra continua a ter no mercado, inclui os últimos avanços tecnológicos verificados ao nível dos processadores comerciais, mas também ao nível das memórias e dos periféricos, em particular na arquitetura dos PCs.

9 789727 227891

9cm x 24cm

Aprenda com um processador pedagógico;

Este livro está orientado ao autoestudo e experimentação. Inclui 75 guiões de laboratório, com base num simulador, que o leitor pode executar quando quiser, ao seu próprio ritmo, de forma a experimentar na prática os conceitos e técnicas que aprendeu. O livro baseia-se num processador pedagógico, PEPE, especialmente concebido para este efeito, suportando as características necessárias em qualquer processador mas sem as complicações dos processadores comerciais.

ISBN 978-972-722-789-1

17cm x 24cm

Conheça as reais capacidades e limitações do seu computador;

www.fca.pt

9cm x 24cm

Guiões de laboratório, simulador, slides com animação, exercícios resolvidos e diversos programas de exemplo em www.fca.pt, até o livro se esgotar ou ser publicada nova edição atualizada ou com alterações.

FCA

FCA


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.