Arquitetura de Computadores

download Arquitetura de Computadores

of 206

Transcript of Arquitetura de Computadores

  • Introduo aos Sistemas Digitais eMicroprocessadores

    Guilherme Arroz Jos Monteiro Arlindo Oliveira

    23 de Maio de 2003

  • Contedo

    Prefcio 2

    1 Introduo 3

    2 Bases de Numerao e Cdigos 52.1 Bases de Numerao . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.1.1 Representao de nmeros em base

    . . . . . . . . . . . 62.1.2 Representao de nmeros em base . . . . . . . . . . . 72.1.3 Representao de nmeros em bases potncia de 2 . . . . 11

    2.2 Operaes aritmticas . . . . . . . . . . . . . . . . . . . . . . . . 142.2.1 Somas em base . . . . . . . . . . . . . . . . . . . . . . . 142.2.2 Multiplicaes em Base . . . . . . . . . . . . . . . . . . 162.2.3 Operaes aritmticas em outras bases . . . . . . . . . . 16

    2.3 Cdigos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.3.1 Codificao . . . . . . . . . . . . . . . . . . . . . . . . . . 182.3.2 Cdigos numricos . . . . . . . . . . . . . . . . . . . . . . 192.3.3 Cdigos alfanumricos . . . . . . . . . . . . . . . . . . . . 21

    2.4 Representao digital da informao . . . . . . . . . . . . . . . . 25

    3 Funes Lgicas 273.1 lgebra de Boole Binria . . . . . . . . . . . . . . . . . . . . . . . 27

    3.1.1 Funes Lgicas de Uma Varivel . . . . . . . . . . . . . 283.1.2 Funes de Duas Variveis . . . . . . . . . . . . . . . . . 293.1.3 As Funes AND e OR . . . . . . . . . . . . . . . . . . . . 303.1.4 Funo Conjuno . . . . . . . . . . . . . . . . . . . . . . 303.1.5 Funo Disjuno . . . . . . . . . . . . . . . . . . . . . . . 313.1.6 Princpio da Dualidade . . . . . . . . . . . . . . . . . . . 333.1.7 Prioridade na Execuo de Operaes . . . . . . . . . . . 333.1.8 Teoremas Envolvendo Conjuno e Disjuno . . . . . . 343.1.9 Definio Formal de lgebra de Boole . . . . . . . . . . . 363.1.10 Funes NAND e NOR . . . . . . . . . . . . . . . . . . . . 373.1.11 Funo XOR . . . . . . . . . . . . . . . . . . . . . . . . . . 383.1.12 Funes de Variveis . . . . . . . . . . . . . . . . . . . . 393.1.13 Manipulao de Expresses Lgicas . . . . . . . . . . . . 40

    3.2 Representao de Funes Lgicas . . . . . . . . . . . . . . . . . 433.2.1 Forma Cannica Normal Disjuntiva . . . . . . . . . . . . 453.2.2 Forma Cannica Normal Conjuntiva . . . . . . . . . . . . 473.2.3 Representao de Funes Usando um s Tipo de Funo 49

    i

  • ii CONTEDO

    3.3 Minimizao de Expresses Lgicas . . . . . . . . . . . . . . . . 523.3.1 Mtodo de Karnaugh . . . . . . . . . . . . . . . . . . . . . 533.3.2 Mtodo de Quine-McCluskey . . . . . . . . . . . . . . . . 71

    4 Realizao Fsica de Circuitos Lgicos 834.1 Famlias lgicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    4.1.1 Portas bsicas . . . . . . . . . . . . . . . . . . . . . . . . . 834.1.2 Elementos de alta impedncia . . . . . . . . . . . . . . . 834.1.3 Interligaes e barramentos . . . . . . . . . . . . . . . . . 83

    4.2 Realizao directa . . . . . . . . . . . . . . . . . . . . . . . . . . . 834.2.1 ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834.2.2 PLA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    4.3 Dispositivos programveis . . . . . . . . . . . . . . . . . . . . . . 834.4 Projecto assistido de circuitos lgicos . . . . . . . . . . . . . . . . 83

    4.4.1 Editor de esquemticos . . . . . . . . . . . . . . . . . . . 834.4.2 Simulao . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    5 Mdulos Combinatrios de Mdia Complexidade 855.1 Descodificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

    5.1.1 Descodificadores binrios . . . . . . . . . . . . . . . . . . 865.1.2 Interligao de descodificadores . . . . . . . . . . . . . . 865.1.3 Realizao de descodificadores . . . . . . . . . . . . . . . 86

    5.2 Codificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.2.1 Codificadores binrios . . . . . . . . . . . . . . . . . . . . 865.2.2 Codificadores com prioridade . . . . . . . . . . . . . . . . 865.2.3 Realizao de codificadores . . . . . . . . . . . . . . . . . 86

    5.3 Multiplexadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.3.1 Tipos de multiplexadores . . . . . . . . . . . . . . . . . . 865.3.2 Interligao de multiplexadores . . . . . . . . . . . . . . 865.3.3 Aplicaes de multiplexadores . . . . . . . . . . . . . . . 865.3.4 Realizao de multiplexadores . . . . . . . . . . . . . . . 86

    5.4 Realizao de funes lgicas commdulos de mdia complexi-dade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.4.1 Realizaes com descodificadores . . . . . . . . . . . . . 865.4.2 Realizaes com multiplexadores . . . . . . . . . . . . . . 865.4.3 Outras realizaes . . . . . . . . . . . . . . . . . . . . . . 86

    6 Circuitos aritmticos 876.1 Somadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

    6.1.1 Semi-somador de um bit . . . . . . . . . . . . . . . . . . . 886.1.2 Somador de um bit . . . . . . . . . . . . . . . . . . . . . . 886.1.3 Interligao em cadeia de somadores de um bit . . . . . 886.1.4 Subtraco usando somadores . . . . . . . . . . . . . . . 886.1.5 Somadores rpidos . . . . . . . . . . . . . . . . . . . . . . 88

    6.2 Nmeros com sinal . . . . . . . . . . . . . . . . . . . . . . . . . . 886.2.1 Codificao . . . . . . . . . . . . . . . . . . . . . . . . . . 886.2.2 Operaes com nmeros com sinal . . . . . . . . . . . . . 88

    6.3 Multiplicadores e Divisores . . . . . . . . . . . . . . . . . . . . . 886.4 Representaes em vrgula fixa . . . . . . . . . . . . . . . . . . . 88

    6.4.1 Operaes em vrgula fixa . . . . . . . . . . . . . . . . . . 88

  • CONTEDO iii

    6.4.2 Operaes em vrgula fixa usando unidades inteiras . . . 886.4.3 Limitaes da representao em vrgula fixa . . . . . . . 88

    6.5 Representaes em vrgula flutuante . . . . . . . . . . . . . . . . 886.5.1 Mantissa e expoente . . . . . . . . . . . . . . . . . . . . . 886.5.2 Mtodos de representao . . . . . . . . . . . . . . . . . . 886.5.3 O standard IEEE-754 . . . . . . . . . . . . . . . . . . . . . 88

    7 Circuitos Sequenciais 897.1 Comportamento Sequencial de Circuitos . . . . . . . . . . . . . . 907.2 Bsculas Sensveis ao Nvel . . . . . . . . . . . . . . . . . . . . . 91

    7.2.1 Bscula SR . . . . . . . . . . . . . . . . . . . . . . . . . . . 917.2.2 Realizao de Bsculas SR com Sinal de

    . . . . . 937.2.3 Bscula Tipo D . . . . . . . . . . . . . . . . . . . . . . . . 95

    7.3 Sinal de Relgio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967.3.1 Circuitos Sequenciais Sncronos e Assncronos . . . . . . 977.3.2 Caractersticas do Sinal de Relgio . . . . . . . . . . . . . 97

    7.4 Bsculas Actualizadas no Flanco do Relgio . . . . . . . . . . . . 987.4.1 Tipos de Amostragem . . . . . . . . . . . . . . . . . . . . 987.4.2 Tipos de Bsculas . . . . . . . . . . . . . . . . . . . . . . . 1017.4.3 Sinais de Controlo Imediato . . . . . . . . . . . . . . . . . 104

    7.5 Registos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057.5.1 Registos Bsicos . . . . . . . . . . . . . . . . . . . . . . . . 1067.5.2 Registos de Deslocamento . . . . . . . . . . . . . . . . . . 1067.5.3 Contadores . . . . . . . . . . . . . . . . . . . . . . . . . . 1067.5.4 Mtodos de Interligao de Registos . . . . . . . . . . . . 106

    7.6 Memrias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

    8 Projecto de Circuitos Sequenciais 1118.1 Descrio de circuitos sequenciais . . . . . . . . . . . . . . . . . 111

    8.1.1 Mquinas de Mealy e de Moore . . . . . . . . . . . . . . . 1118.1.2 Diagrama de estados . . . . . . . . . . . . . . . . . . . . . 1118.1.3 Fluxograma . . . . . . . . . . . . . . . . . . . . . . . . . . 1118.1.4 Tabelas de transio de estados . . . . . . . . . . . . . . . 1118.1.5 Reduo do nmero de estados . . . . . . . . . . . . . . . 111

    8.2 Sntese de circuitos sequenciais . . . . . . . . . . . . . . . . . . . 1118.2.1 1-bscula por estado . . . . . . . . . . . . . . . . . . . . . 1118.2.2 Codificao dos estados . . . . . . . . . . . . . . . . . . . 111

    8.3 Tcnicas de realizao de controladores . . . . . . . . . . . . . . 1118.3.1 Controladores realizados com lgica discreta . . . . . . . 1118.3.2 Controladores baseados em contadores . . . . . . . . . . 1118.3.3 Controladores micro-programados . . . . . . . . . . . . . 111

    9 Circuitos para Transferncia de Dados 1139.1 Nveis de Abstraco . . . . . . . . . . . . . . . . . . . . . . . . . 1149.2 Separao entre Circuito de Dados e Circuito de Controlo . . . . 116

    9.2.1 Exemplo de Motivao . . . . . . . . . . . . . . . . . . . . 1169.2.2 Unidade de Processamento . . . . . . . . . . . . . . . . . 1199.2.3 Unidade de Controlo . . . . . . . . . . . . . . . . . . . . . 121

    9.3 Linguagem de Descrio de Hardware . . . . . . . . . . . . . . . 1219.3.1 Linguagem de Transferncia entre Registos . . . . . . . . 122

  • iv CONTEDO

    9.3.2 Exemplo: Mximo Divisor Comum . . . . . . . . . . . . 1259.4 Unidades Lgicas e Aritmticas . . . . . . . . . . . . . . . . . . . 129

    9.4.1 Estrutura de uma ULA . . . . . . . . . . . . . . . . . . . . 1319.4.2 Bits de Estado . . . . . . . . . . . . . . . . . . . . . . . . . 1329.4.3 Unidade Aritmtica . . . . . . . . . . . . . . . . . . . . . 1339.4.4 Unidade Lgica . . . . . . . . . . . . . . . . . . . . . . . . 1359.4.5 Unidade de Deslocamento . . . . . . . . . . . . . . . . . . 1379.4.6 Tabela de Controlo da ULA . . . . . . . . . . . . . . . . . 1399.4.7 Exemplo Revisitado: Mximo Divisor Comum . . . . . . 140

    10 Arquitectura de um Computador 14510.1 Perspectiva Histrica . . . . . . . . . . . . . . . . . . . . . . . . . 14510.2 Tipos de Computadores . . . . . . . . . . . . . . . . . . . . . . . 14710.3 Organizao Interna de um Computador . . . . . . . . . . . . . 14710.4 Interaco com o Exterior . . . . . . . . . . . . . . . . . . . . . . 14910.5 Nveis de Abstraco de um Computador . . . . . . . . . . . . . 15110.6 Componentes de um Computador . . . . . . . . . . . . . . . . . 15310.7 Sumrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

    11 Conjuntos de Instrues 15511.1 Linguagens de Programao . . . . . . . . . . . . . . . . . . . . 15511.2 Instrues Assembly . . . . . . . . . . . . . . . . . . . . . . . . . 15811.3 Especificao dos Operandos . . . . . . . . . . . . . . . . . . . . 160

    11.3.1 Registos Internos . . . . . . . . . . . . . . . . . . . . . . . 16011.3.2 Constantes Especificadas na Prpria Instruo . . . . . . 16111.3.3 Memria e Portos de Entrada/Sada . . . . . . . . . . . . 16111.3.4 Modos de Endereamento . . . . . . . . . . . . . . . . . 16211.3.5 Utilizao de Pilhas . . . . . . . . . . . . . . . . . . . . . 164

    11.4 Codificao das Instrues . . . . . . . . . . . . . . . . . . . . . 16611.5 Controlo da Sequncia de Execuo . . . . . . . . . . . . . . . . 169

    11.5.1 Instrues de Salto . . . . . . . . . . . . . . . . . . . . . . 16911.5.2 Chamadas a Subrotinas . . . . . . . . . . . . . . . . . . . 17211.5.3 Interrupes . . . . . . . . . . . . . . . . . . . . . . . . . 173

    11.6 Conjunto de Instrues do Processador P3 . . . . . . . . . . . . 17511.6.1 Instrues Aritmticas . . . . . . . . . . . . . . . . . . . . 17611.6.2 Instrues Lgicas . . . . . . . . . . . . . . . . . . . . . . 17811.6.3 Instrues de Deslocamento . . . . . . . . . . . . . . . . . 17911.6.4 Instrues de Controlo . . . . . . . . . . . . . . . . . . . 18011.6.5 Instrues de Transferncia de Dados . . . . . . . . . . . 18211.6.6 Outras Instrues . . . . . . . . . . . . . . . . . . . . . . . 18211.6.7 Exemplos de Utilizao . . . . . . . . . . . . . . . . . . . 183

    11.7 Formato das Instrues do Processador P3 . . . . . . . . . . . . 18411.7.1 Instrues sem Operandos . . . . . . . . . . . . . . . . . 18511.7.2 Instrues com Um Operando . . . . . . . . . . . . . . . 18611.7.3 Instrues com Dois Operandos . . . . . . . . . . . . . . 18711.7.4 Instrues de Controlo . . . . . . . . . . . . . . . . . . . . 18711.7.5 Exemplos de Codificao . . . . . . . . . . . . . . . . . . 188

    11.8 Um Assembler para o Processador P3 . . . . . . . . . . . . . . . . 18911.9 Programao em Linguagem Assembly . . . . . . . . . . . . . . . 192

    11.9.1 Programao Estruturada em Assembly . . . . . . . . . . 193

  • CONTEDO v

    11.9.2 Exemplo de Programao em Assembly . . . . . . . . . . 193

    12 Estrutura Interna de um Processador 201

    12.1 Circuito de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . 20212.1.1 Banco de Registos . . . . . . . . . . . . . . . . . . . . . . . 20312.1.2 Unidade Lgica e Aritmtica . . . . . . . . . . . . . . . . 20412.1.3 Registo de Instruo . . . . . . . . . . . . . . . . . . . . . 20512.1.4 Registo de Estado . . . . . . . . . . . . . . . . . . . . . . 20512.1.5 Barramentos de Interligao . . . . . . . . . . . . . . . . . 20612.1.6 Controlo do Circuito de Dados . . . . . . . . . . . . . . . 206

    12.2 Unidade de Controlo . . . . . . . . . . . . . . . . . . . . . . . . . 20812.2.1 Formato das Micro-instrues . . . . . . . . . . . . . . . . 20912.2.2 Micro-Sequenciador . . . . . . . . . . . . . . . . . . . . . 21112.2.3 Teste de Condies . . . . . . . . . . . . . . . . . . . . . . 21312.2.4 Unidade de Mapeamento . . . . . . . . . . . . . . . . . . 21512.2.5 Controlo do Banco de Registos . . . . . . . . . . . . . . . 21812.2.6 Circuito de Controlo . . . . . . . . . . . . . . . . . . . . . 220

    12.3 Micro-Programao . . . . . . . . . . . . . . . . . . . . . . . . . 22112.3.1 Carregamento do Registo de Instruo . . . . . . . . . . 22212.3.2 Carregamento dos Operandos . . . . . . . . . . . . . . . 22312.3.3 Execuo das Instrues . . . . . . . . . . . . . . . . . . . 22612.3.4 Escrita do Resultado . . . . . . . . . . . . . . . . . . . . . 22712.3.5 Teste de Interrupes . . . . . . . . . . . . . . . . . . . . . 22812.3.6 Gerao do Micro-cdigo . . . . . . . . . . . . . . . . . . 229

    13 Sistemas de Memria 233

    13.1 Organizao de Sistemas de Memria . . . . . . . . . . . . . . . 23413.1.1 Planos de Memria . . . . . . . . . . . . . . . . . . . . . . 23413.1.2 Mapas de Memria . . . . . . . . . . . . . . . . . . . . . . 23613.1.3 Gerao dos Sinais de Controlo . . . . . . . . . . . . . . . 239

    13.2 Hierarquia de Memria . . . . . . . . . . . . . . . . . . . . . . . 24213.2.1 Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24413.2.2 Memria Virtual . . . . . . . . . . . . . . . . . . . . . . . 246

    13.3 Organizao de Sistemas de Cache . . . . . . . . . . . . . . . . . 24813.3.1 Mapeamento de Dados em Caches . . . . . . . . . . . . . 24813.3.2 Blocos de Cache . . . . . . . . . . . . . . . . . . . . . . . . 25113.3.3 Polticas de Substituio . . . . . . . . . . . . . . . . . . . 25413.3.4 Polticas de Escrita . . . . . . . . . . . . . . . . . . . . . . 25513.3.5 Bits de Controlo . . . . . . . . . . . . . . . . . . . . . . . . 255

    13.4 Memria Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . 25613.4.1 Tabelas de Pginas . . . . . . . . . . . . . . . . . . . . . . 25713.4.2 Poltica de Substituio . . . . . . . . . . . . . . . . . . . 26013.4.3 Poltica de Escrita . . . . . . . . . . . . . . . . . . . . . . . 26013.4.4 Bits de Controlo . . . . . . . . . . . . . . . . . . . . . . . . 26113.4.5 Translation Lookaside Buffers . . . . . . . . . . . . . . . . . 26113.4.6 Interligao da Memria Virtual com as Caches . . . . . 262

  • CONTEDO 1

    14 Entradas, Sadas e Comunicaes 26714.1 Arquitectura de Entradas/Sadas . . . . . . . . . . . . . . . . . . 268

    14.1.1 Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . 26814.1.2 Tipos de Endereamento dos Portos . . . . . . . . . . . . 270

    14.2 Perifricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27214.2.1 Teclados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27214.2.2 Monitores . . . . . . . . . . . . . . . . . . . . . . . . . . . 27414.2.3 Discos Magnticos . . . . . . . . . . . . . . . . . . . . . . 277

    14.3 Comunicao Paralela . . . . . . . . . . . . . . . . . . . . . . . . 27914.3.1 Interfaces sem Sincronizao . . . . . . . . . . . . . . . . 28014.3.2 Protocolos de Sincronizao . . . . . . . . . . . . . . . . . 28014.3.3 Interfaces Sncronas . . . . . . . . . . . . . . . . . . . . . 286

    14.4 Comunicao Srie . . . . . . . . . . . . . . . . . . . . . . . . . . 28714.4.1 Comunicao Assncrona . . . . . . . . . . . . . . . . . . 28814.4.2 Comunicao Sncrona . . . . . . . . . . . . . . . . . . . . 291

    14.5 Modos de Transferncia de Dados . . . . . . . . . . . . . . . . . 29314.5.1 Transferncia Controlada por Programa . . . . . . . . . . 29414.5.2 Transferncia Controlada por Interrupes . . . . . . . . 29414.5.3 Acesso Directo Memria . . . . . . . . . . . . . . . . . . 30314.5.4 Transferncia usando um Processador de Entrada/Sada 309

    15 Tpicos Avanados de Arquitectura 31115.1 Desempenho de micro-processadores . . . . . . . . . . . . . . . 312

    15.1.1 Factores limitativos do desempenho . . . . . . . . . . . . 31215.1.2 Explorao do paralelismo ao nvel de instruo . . . . . 312

    15.2 Computadores CISC e RISC . . . . . . . . . . . . . . . . . . . . . 31215.2.1 Simples e rpido vs. complexo e lento . . . . . . . . . . . 31215.2.2 Modos de endereamento . . . . . . . . . . . . . . . . . . 31215.2.3 Instrues . . . . . . . . . . . . . . . . . . . . . . . . . . . 31215.2.4 Conjunto de instrues para um processador RISC . . . 312

    15.3 Pipelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31215.3.1 Processador RISC com pipeline . . . . . . . . . . . . . . . 31215.3.2 Conflitos de dados . . . . . . . . . . . . . . . . . . . . . . 31215.3.3 Conflitos de controlo . . . . . . . . . . . . . . . . . . . . . 31215.3.4 Resoluo de conflitos . . . . . . . . . . . . . . . . . . . . 312

    15.4 Tcnicas avanadas de explorao de paralelismo . . . . . . . . 31215.4.1 Processadores super-escalares . . . . . . . . . . . . . . . . 31215.4.2 Execuo especulativa . . . . . . . . . . . . . . . . . . . . 31215.4.3 Previso de saltos . . . . . . . . . . . . . . . . . . . . . . . 31215.4.4 Agendamento dinmico de instrues . . . . . . . . . . . 312

    Glossrio 313

  • 112 CONTEDO

  • Captulo 9

    Circuitos para Transfernciade Dados

    As tcnicas de projecto de circuitos digitais, combinatrios e sequenciais, apre-sentadas nos captulos anteriores permitem a realizao de sistemas de baixae mdia complexidade. O nvel de detalhe a que estas tcnicas so aplicadas demasiado elevado para que possam ser usadas na concepo de circuitosde grande dimenso. Assim, no projecto de sistemas com uma funcionalidademais complexa necessrio um nvel de abstraco mais elevado de forma aesconder muitos detalhes e a tornar o problema manejvel.

    Neste captulo descreve-se o projecto de sistemas digitais em termos deduas componentes. Uma a Unidade de Processamento, tambm chamadade circuito de dados (ou datapath, em ingls), que contm toda a lgica que fazos clculos propriamente ditos bem como os registos onde os dados so guar-dados. A segunda a Unidade de Controlo que gere quais as operaes que aunidade de processamento deve efectuar em cada ciclo de relgio.

    Esta abordagem pressupe que uma complexidade de processamento maiselevada requer em geral vrios ciclos de relgio para se completar. De facto,operaes acima de um certo nvel de complexidade podem implicar um cir-cuito lgico especfico com uma dimenso tal que tornaria incomportvel asua realizao na prtica. Estas operaes so assim divididas numa sequnciade operaes mais simples, estas sim facilmente realizveis em hardware. Aunidade de processamento o circuito que disponibiliza estas operaes maissimples e a unidade de controlo o circuito que as sequencia de forma a re-alizar a operao complexa. Para permitir descrever de maneira clara o algo-ritmo de realizao de operaes complexas em termos das operaes bsicasda unidade de processamento, foram desenvolvidas linguagens de descriode hardware. Um exemplo simples deste tipo de linguagens apresentado naSeco 9.3, a ser usada no resto deste livro.

    Embora as unidades de processamento possam ser projectadas para umfim especfico, em muitos casos opta-se por usar unidades que disponibilizamum conjunto de operaes aritmticas e lgicas tpicas, chamadas UnidadesAritmticas e Lgicas ou ULA (em ingls, Arithmetic and Logic Unit ou ALU).Na Seco 9.4 descreve-se o exemplo de uma ULA, que ser usada no proces-sador P3, estudado no Captulo 12.

    113

  • 114 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS

    Sistema

    Transferncia

    entre Registos

    Porta Lgica

    Transistor

    Layout

    Mais Abstracto

    Mais Concreto

    Menos Detalhe

    Mais Detalhe

    Figura 9.1: Diferentes nveis de abstraco no projecto de sistemas lgicos com-plexos.

    9.1 Nveis de Abstraco

    A abordagem usada neste captulo para o projecto de circuitos corresponde asubir o nvel de abstraco na descrio de circuitos lgicos. O projecto de siste-mas complexos envolve diferentes nveis de abstraco, tendo o projecto inciono mais abstracto, descendo-se sucessivamente para nveis mais concretos. Aabordagem por nveis de abstraco torna possvel o projecto de sistemas paraos quais uma abordagem directa seria demasiado complexa.

    De forma a dar uma ideia geral deste processo e um melhor contexto paraos mtodos de projecto apresentados neste livro, descrevem-se em seguida osdiferentes nveis de abstraco tipicamente considerados no projecto de cir-cuitos lgicos complexos. A Figura 9.1 representa estes nveis de abstracoordenados de cima para baixo dos nveis mais abstractos para os nveis maisconcretos. Dito de outra forma, nesta ordenao o grau de detalhe na descriodo sistema aumenta de cima para baixo.

    O projecto tem incio ao nvel de sistema onde so feitas anlises globais,mas muito gerais, sobre o projecto, nomeadamente sobre o nmero de sub-sistemas em que o sistema se deve dividir, qual o tipo de sub-sistemas e asua forma de interligao. Termina ao nvel de layout onde se vai a um graude detalhe em que fica definido o caminho de cada interligao do circuitoelctrico, permitindo portanto a sua fabricao.

    Em cada nvel de abstraco, a anlise feita individualmente sobre mdu-los criados no nvel imediatamente acima. Assim, o projecto sucessivamentedividido em mdulos mais pequenos, o que permite ir aumentando o nvelde detalhe, mantendo-o sempre como um problema gervel em cada nvel. este processo de dividir para conquistar que faz o sucesso deste conceito denveis de abstraco.

    Por outro lado, num dado nvel de abstraco possvel desenvolver o pro-jecto sem necessitar de informao sobre nveis inferiores. Esta caracterstica

  • 9.1. NVEIS DE ABSTRACO 115

    esconde os detalhes de implementao, permitindo que o projectista se con-centre em conseguir a melhor soluo possvel a esse nvel.

    At ao captulo anterior, toda a anlise se debruou sobre circuitos descritosao nvel da porta lgica. Este o nvel de abstraco intermdio, como se podeobservar na hierarquia da Figura 9.1. Referiu-se atrs que a realizaode portaslgicas feita com o uso de transistores que, como se pode ver na figura, um nvel de abstraco imediatamente abaixo. No entanto, para a definiodas tcnicas de projecto apresentadas, nunca foi necessrio saber em concretocomo que as portas lgicas iriam ser realizadas em termos de transistores.

    Aps obtida uma especificao ao nvel de portas lgicas, o passo seguinte convert-las para transistores e fazer as ligaes elctricas. Para uma dada tec-nologia de fabrico de circuitos, a cada porta lgica corresponde um esquemaelctrico de interligao de transistores. No entanto, para alm deste mape-amento necessrio fazer o dimensionamento dos transistores de maneira agarantir, por exemplo, determinados tempos de atraso e consumos de potn-cia.

    Embora se possam realizar sistemas digitais com elementos discretos, cada vez mais comum que a realizao dos sistemas digitais seja em termosde circuito integrado. Neste caso, o passo final converter esta descrio a n-vel de transistor, que no fundo uma descrio de um circuito elctrico, paramscaras que so usadas directamente no fabrico de circuitos integrados, a quese chama nvel de layout. Estas mscaras definem linhas por onde passam certotipos de elementos que constituem o circuito final. Por exemplo, as interligesso normalmente realizadas por linhas de metal, podendo existir vrias cama-das destas linhas e correspondendo a cada camada uma mscara. No caso datecnologia CMOS, os transistores so formados pelo cruzamento de uma li-nha de polisilcio por outra de dopagem de substracto, correspondendo a maisduas mscaras diferentes. Tipicamente, na passagem do nvel de transistorpara o nvel de layout, o objectivo escolher o caminho de cada linha de formaminimizar a rea total ocupada pelo circuito. Estes dois nveis de abstraco,assim como o nvel de sistema, saem fora do mbito deste livro e portanto nosero discutidos.

    Neste captulo apresenta-se o nvel de transferncia entre registos, nvelimediatamente acima do nvel de porta lgica. De acordo com a filosofia dosnveis de abstraco, usam-se mdulos de complexidade mais elevada, massem detalhar a forma como so construdos. Por exemplo, so utilizados direc-tamente somadores sem haver a preocupao de como esses somadores serorealizados em termos de portas lgicas.

    De referir que, para a maior parte das operaes de projecto e optimizaoa cada nvel de abstraco, o projectista pode recorrer a ferramentas de sntesede circuitos. A partir de uma descrio do circuito a um dado nvel, estasferramentas geram automaticamente o circuito correspondente num nvel deabstracomais baixo, optimizando-o tendo em conta um conjunto de parme-tros que o projectista pode especificar. A rea de investigao de algoritmos desntese lgica uma rea de intensa actividade, mas este tambm um temaque sai fora do mbito deste livro.

  • 116 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS

    Unidade de

    Controlo Unidade de

    Processamento

    Entradas de

    Controlo

    Operandos

    Resultados

    Palavra de

    Controlo

    Bits de

    Estado (flags)

    Sadas de

    Controlo

    Figura 9.2: Estrutura de um sistema digital em termos de unidade de proces-samento e de unidade de controlo.

    9.2 Separao entre Circuito de Dados e Circuito de

    Controlo

    Um sistema digital pode ser construdo de raiz usando bsculas e portas lgi-cas discretas usando as tcnicas de projecto de circuitos sncronos apresentadasnos captulos anteriores. Porm, como discutido na seco prvia, esta aproxi-mao tem grandes limitaes. Por exemplo, qualquer dosmtodos de geraode circuitos combinatrios descritos na Seco 3.3 impraticvel quando o n-mero de variveis de entrada elevado.

    Os sistemas digitais so, assim, normalmente estruturados em duas uni-dades principais, a Unidade de Processamento e a Unidade de Controlo, conformeest ilustrado na Figura 9.2. A unidade de processamento constituda por pe-quenos mdulos interligados para armazenar e processar a informao til dosistema. Como indicado na figura, recebe as entradas a processar, ou seja, osoperandos ou dados do exterior e calcula o resultado. A unidade de controlo responsvel por gerar os sinais de controlo que sequenciam as operaes bsi-cas da unidade de processamento de forma a que o sistema realize operaescomplexas. Ao conjunto de sinais de controlo que saem da unidade de controlopara a unidade de processamento chama-se palavra de controlo. A sequncia desinais de controlo gerada pela unidade de controlo pode depender dos resulta-dos dos clculos efectuados pela unidade de processamento. Esta informao fornecida unidade de controlo por bits de estado ou flags, cujo funcionamentoser discutido mais frente. A unidade de controlo pode tambm receber in-formao directamente do exterior, como por exemplo, um sinal externo queindica quando dar incio operao ou qual a operao a realizar. Em geral,existiro sadas de controlo para indicar para o exterior o estado da computa-o, como por exemplo, um sinal que indica o fim da operao.

    Naturalmente, entre os ciclos de relgio necessrios ao processamento deuma operao complexa ter-se- que guardar valores temporrios de clcu-los intermdios. Estes so guardados em registos, disponveis na unidade deprocessamento. As formas de interligao de registos e mdulos de processa-mento foram apresentadas na Seco 7.5.4.

    9.2.1 Exemplo de Motivao

    Para ilustrar este processo de separao de uma operao complexa numasequncia de operaes mais simples, considere-se o caso de uma multipli-

  • 9.2. SEPARAOENTRECIRCUITODEDADOS ECIRCUITODECONTROLO117

    P

    A B

    X

    LD LD

    LD P

    AB

    +

    Reset

    ZeroLDDec

    LD

    LD

    (a) (b)

    Figura 9.3: Circuitos multiplicadores: (a) bloco combinatrio; (b) somas suces-sivas.

    cao. Na Seco 6.3 discutiu-se a realizao lgica de multiplicadores, nomea-damente o facto de serem mdulos complexos que requeremmuito hardware.

    Na Figura 9.3(a) apresentada a realizao directa para uma operao demultiplicao P=AB. Uma alternativa trivial a este circuito realizar esta mul-tiplicao atravs de somas sucessivas, somando A vezes o valor de B, con-forme Figura 9.3(b). Assim, em vez de um mdulo multiplicador ser neces-srio apenas um somador, mdulo significativamente mais simples. Para esteexemplo, o circuito da Figura 9.3(b) funciona como a sua unidade de processa-mento.

    O preo a pagar pela simplificao do hardware do circuito a necessidadede um mdulo adicional de controlo capaz de realizar a seguinte sequncia deoperaes:

    1. colocar registo P a zero.

    2. carregar em P a soma de P com B.

    3. decrementar o registo A.

    4. se o registo A no chegou a zero, voltar para 2.

    Para facilitar estas operaes, os registos utilizados tm algumas funcionalida-des adicionais. Assim, o registo A de facto um contador, com uma entrada decontrolo

    para fazer a sua decrementao e uma sada de estado

    quefica activa quando este registo contm o valor 0. Por seu lado, o registo P temum sinal de controlo

    que permite coloc-lo a zero.Tendo disponveis estes sinais de controlo, a unidade de controlo ser um

    circuito sequencial que gera a sequncia de sinais para realizar o algoritmoapresentado atrs. Na Figura 9.4 apresenta-se este algoritmo sob a forma deum fluxograma, ao qual foram adicionados dois sinais. A entrada

    servepara indicar quando se deve dar incio operao. A sada indica quandoa operao terminou. Este sinal til porque o nmero de ciclos de relgionecessrios para esta operao no fixo. Para cada operao de multiplicao

  • 118 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS

    Reset P

    Zero A

    Load P

    0

    Dec A

    inicio0

    1

    1

    fim

    Figura 9.4: Fluxograma que descreve a unidade de controlo para a operao demultiplicao por somas sucessivas.

    o tempo de processamento determinado pelo valor inicial de A e portanto importante que o sistema possa dar esta indicao para o exterior.

    descrio da Figura 9.4 possvel aplicar qualquer das tcnicas de pro-jecto de circuitos sequenciais apresentadas no Captulo 8.3. Nas seces se-guintes, apresenta-se uma linguagem de descrio que permite descrever asoperaes bsicas da unidade de processamento, facilitando a composio deum circuito sequencial que realize a operao complexa desejada.

    Este exemplo ilustra como se pode reduzir a complexidade do circuito aimplementar, traduzindo operaes complexas numa sequncia de operaesmais simples. Existe assim um compromisso que o projectista pode explorarentre a complexidade da unidade de processamento a implementar e o tempo(em termos de ciclos de relgio) que a operao demora a realizar. Em geral,quanto mais simples as operaes disponveis menor o hardware necessriona unidade de processamento, mas maior a sequncia de operaes, corres-pondendo portanto a um tempo total de execuo maior.

    O exemplo aqui apresentado simplesmente ilustrativo. Embora na pr-tica se evitem de facto os mdulos multiplicadores combinatrios devido sua complexidade, existem mtodos sequenciais mais eficientes do que o aquiapresentado. Alm disso, este exemplo discute duas alternativas possveis,uma combinatria, outra sequencial. Em muitos casos, as operaes so de talmodo complexas que a alternativa de um mdulo combinatrio puro est partida fora de causa.

  • 9.2. SEPARAOENTRECIRCUITODEDADOS ECIRCUITODECONTROLO119

    D

    A B

    X

    C

    +

    Figura 9.5: Unidade de processamento para realizar a operao

    .

    9.2.2 Unidade de Processamento

    As unidades de processamento so tipicamente construdas usando os mdu-los combinatrios de mdia complexidade estudados nos Captulos 5 e 6 eregistos estudados no Captulo 7.5. Sobre a informao contida nos registospodem ser realizadas operaes cujo resultado pode ser guardado no mesmoregisto, noutro registo ou mesmo numa posio de memria. Por exemplo, sese pretender um sistema para uma funcionalidade especfica como o clculode D=(A+B)C, uma possvel unidade de processamento seria simplesmentea indicada na Figura 9.5. Pela forma como o circuito da Figura 9.5 est dese-nhado, todos os ciclos de relgio o registo D actualizado com o valor (A+B)C,em que os valores de A, B e C so os destes registos no incio de cada ciclo derelgio.

    Existe alguma liberdade na construo da unidade de processamento. Emprimeiro lugar, o projectista tem ao seu dispr um conjunto de mdulos, se-jam eles aritmticos, lgicos ou outros, pelos quais poder optar dependendoda operao a realizar. Poder ainda construir mdulos novos e especficosusando as tcnicas de projecto do Captulo 3. No exemplo anterior, assumiu-se que estavam disponveis mdulos somadores, mdulos multiplicadores eregistos.

    Em segundo lugar, em muitos casos possvel fazer compromissos entre acomplexidade da unidade de processamento e a complexidade da unidade decontrolo, tentando-se arranjar um equilbrio entre a quantidade de hardwarenecessrio para o circuito e o desempenho deste. Concretizando para o exem-plo anterior, para poupar hardware, em vez de se usar um mdulo multiplica-dor, poder-se-ia optar por realizar a multiplicao por somas sucessivas, comodiscutido na seco anterior. Para isto seria necessrio um registo temporrioonde se somaria vezes o valor do registo C, sendo o valor do resultado A+B.A desvantagem bvia que a operao que antes se realizava num nico ciclode relgio agora necessita de ciclos para a multiplicao, mais um ciclo paraa soma original. A complexidade da unidade de controlo aumenta pois agoratem que controlar o nmero de vezes que a soma da multiplicao se efectua.

    Outro ponto a considerar no projecto de uma unidade de processamento

  • 120 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS

    D

    A B

    X

    C

    +

    T

    Figura 9.6: Reduo do perodo de relgio para a unidade de processamentoque realiza a operao

    .

    est relacionado com a frequncia mxima permitida para o sinal de relgio.Como referido na Seco 8.3, para o correcto funcionamento do sistema, o pe-rodo de relgio ter que ser sempre superior ao maior atraso na lgica en-tre 2 registos da unidade de processamento. Para o exemplo da Figura 9.5,

    . Portanto, mesmo que existam operaes muitosimples no sistema, esta ser sempre a granularidade mnima de durao deuma operao. Para reduzir esta granularidade, os mdulos podem ser inter-calados com registos, como ilustrado na Figura 9.6 onde o registo T guardatemporariamente o resultado da soma. Neste caso, a operao D=(A+B)C de-mora 2 ciclos de relgio, um para calcular a soma T=A+B e outro para calcu-lar a multiplicao D=TC, mas o ciclo de relgio foi reduzido para

    . De sublinhar que esta optimizaopode ter um impacto enorme no desempenho do sistema pois esta reduo deciclo de relgio tem influncia em todas as operaes simples do sistema.

    Uma vez escolhidos os mdulos para a unidade de processamento, ficamdefinidas quais as operaes que podem ser realizadas sobre a informao ar-mazenada nos registos a cada ciclo de relgio. Estas operaes so chamadasdemicro-operaes e estas definem os pontos de controlo para a unidade de con-trolo.

    Apresenta-se mais frente neste captulo um exemplo de uma unidade deprocessamento construda para um fim especfico (Seco 9.3.2). No entanto,podem-se contruir unidades de processamento para as quais no esteja defi-nida partida uma aplicao em particular, como o caso das unidades deprocessamento de computadores. Para estas situaes, define-se um conjuntode micro-operaes suficientemente genrico e poderoso para acomodar efici-entemente um conjunto grande de funcionalidades. A estas unidades de pro-cessamento d-se o nome de Unidade Lgica e Aritmtica ou ULA (em in-gls, Arithmetic and Logic Unit ou ALU). No final deste captulo exemplifica-sea construo de uma unidade de processamento deste tipo.

  • 9.3. LINGUAGEM DE DESCRIO DE HARDWARE 121

    9.2.3 Unidade de Controlo

    A unidade de controlo responsvel por definir quais as micro-operaes queso executadas na unidade de processamento em cada ciclo de relgio. Estasmicro-operaes so definidas atravs de um conjunto de sinais de controloaceites pela unidade de processamento, a cujo conjunto se chama palavra decontrolo. As unidades de controlo tm dois tipos de entradas. Por um ladotm entradas externas que controlam o funcionamento global do sistema. Poroutro lado, tm entradas provenientes da unidade de processamento, os bitsde estado. A partir destes, a unidade de controlo tem informao acerca doresultado de uma dada operao, podendo desencadear diferentes operaescom base nesta informao.

    Pegando novamente no exemplo da Seco 9.2.1, como se pode observarpelo fluxograma da unidade de controlo apresentado na Figura 9.4, esta uni-dade tem duas entradas, uma entrada de controlo externa e um bit de estadoda unidade de processamento. O sinal

    uma entrada de controlo queindica quando se deve iniciar um novo clculo. O sinal

    uma entradaproveniente da unidade de processamento que informa a unidade de controlodo resultado da operao anterior, permitindo a esta decidir qual a aco atomar.

    Para alm das sadas que formam a palavra de controlo, as unidades decontrolo podem tambm ter sadas de controlo que comunicam com entidadesexternas indicando o estado do sistema. Um exemplo deste tipo de sadas o

    da Figura 9.4. Neste caso, como o tempo de clculo no fixo, mas simdependente dos valores dos operandos, necessrio que o sistema informe oexterior acerca do estado do clculo, nomeadamente, se este j terminou ouno.

    Estando definida a unidade de processamento, o projectista tem que defi-nir a sequncia de micro-operaes necessrias para realizar a funcionalidadepretendida para o sistema. O projecto da unidade de controlo no mais doque o projecto de um circuito sequencial, como estudado no Captulo 8. Em-bora a sua realizao possa ser feita usando qualquer das tcnicas apresentadasnesse captulo, o nmero de entradas (bits de estado e entradas de controlo) esadas (largura da palavra de controlo e sadas de controlo) em geral muitoelevado, levando a que as tcnicas mais comuns usadas no projecto de unida-des de controlo assentem em controladores micro-programados, estudados naSeco 8.3.3.

    9.3 Linguagem de Descrio de Hardware

    A especificao de sistemas mais complexos necessita de uma linguagem dedescrio com um nvel de abstraco mais elevado do que as funes boole-anas ou os diagramas de estado de forma a esconder os detalhes do sistema eassim permitir descries sucintas. Estas linguagens chamam-se linguagens dedescrio de hardware.

    Embora o nvel de abstraco possa variar, em geral esta descrio feitaao nvel de transferncia entre registos, em que o projectista define quais asmicro-operaes efectuadas entre registos em cada ciclo de relgio. A formacomo as micro-operaes so realizadas em termos de portas lgicas no de-

  • 122 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS

    R2n

    R1

    Figura 9.7: Circuito lgico correspondente instruo .

    finida na descrio do sistema, pressupondo-se a criao de uma unidade deprocessamento que permita executar essas micro-operaes.

    Existem vrios formatos possveis para as linguagens de descrio de hard-ware. A linguagem adoptada neste livro e descrita em seguida muito simplese permite apenas especificar as micro-operaes que o sistema deve realizar.Outras linguagens, como VHDL e Verilog, tm um nvel de descrio igual aode uma linguagem de programao usual, mas com a diferena fundamentalde terem que acomodar o facto do hardware ser intrinsecamente concorrente.Para isso, as linguagens de descrio de hardware definem blocos de cdigoque descrevem uma operao e portanto so sequenciais, mas os diferentesblocos funcionam em paralelo.

    9.3.1 Linguagem de Transferncia entre Registos

    Define-se nesta seco a linguagem simples de descrio de hardware a n-vel de transferncia entre registos a ser usada nos captulos seguintes. Nestalinguagem, a especificao de um sistema digital conseguida atravs de umconjunto de micro-operaes que definem a funcionalidade pretendida.

    A transferncia de informao de um registo para outro, ou mais exacta-mente a replicao dessa informao, designada em forma simblica pelainstruo:

    que significa R2 recebe o contedo de R1. O valor guardado em R1 no alterado. Em termos de circuito lgico, a instruo anterior corresponde Fi-gura 9.7.

    Se para alm desta micro-operao simples de transferncia houver algumprocessamento, isso explicitado, por exemplo:

    ou

    A primeira destas instrues ser realizada pelo circuito lgico da Figura 9.8.Quando se do duas transferncias em simultneo, podem-se agrupar mi-

    cro-operaes separando-as por vrgulas:

    O circuito lgico correspondente o da Figura 9.9.Para alm de registos, os operandos das micro-operaes podero ser tam-

    bm valores constantes ou referncias a posies de memria. A indicaode uma posio de memria feita usando M[endereo], em que endereo

  • 9.3. LINGUAGEM DE DESCRIO DE HARDWARE 123

    +

    n

    n

    n

    R5

    R2

    R1

    Figura 9.8: Circuito lgico correspondente instruo

    .

    x

    R2

    R6

    R4

    n

    n

    n

    n

    2n

    R3

    R9

    Figura 9.9: Circuito lgico correspondente instruo , .

    poder por seu lado ser um valor constante ou um registo. Exemplos possveisde micro-operaes sero:

    Pela forma como esto expressas, as micro-operaes apresentadas at aquiocorrem em todos os ciclos de relgio. Num sistema digital no se pretendenormalmente que uma transferncia, com ou sem processamento, ocorra sem-pre que surge um impulso de relgio. Para indicar que uma certa operao sdeve ocorrer na presena de certas condies, usa-se o formato condio: micro-operao. Por exemplo, uma instruo como

    tem uma traduo num circuito lgico como o da Figura 9.10. Para haver ape-nas uma transferncia, a linha

    tem que permanecer a 1 apenas durante umatransio ascendente do sinal de relgio. Um exemplo de uma situao destetipo est ilustrada na Figura 9.11, onde a transferncia se d apenas no instante

    .A condio de activao da micro-operao pode ser uma expresso lgica

    genrica. Por exemplo,

  • 124 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS

    K1

    nR1 R2

    LD

    Figura 9.10: Circuito lgico correspondente instruo

    .

    t

    K1

    Clk

    Figura 9.11: Diagrama temporal que garante uma transferncia nica de R1para R2.

    significa que a cada ciclo de relgio apenas se transfere o contedo de R0 paraR5 se ambos os sinais

    e

    estiverem a 1.Por vezes til trabalhar no com todos os bits guardados num registo,

    mas apenas com um subconjunto dos seus bits. Para indicar que uma micro-operao apenas se aplica a parte dos bits de um registo, a seguir ao nome doregisto indica-se entre parntesis quais os bits envolvidos. Por exemplo, se seprentender trabalhar apenas com o bit 5 de um registo R2, isso seria indicadopor R2(5). Para uma gama de bits, a representao a seguinte:

    que neste caso indica que o octeto menos significativo de R6 copiado para oocteto mais significativo de R3. Naturalmente, ter que haver o cuidado de serconsistente no nmero de bits envolvidos numa micro-operao.

    Por outro lado, pode ser necessrio fazer a concatenao de vrios registospara uma dada operao, o que indicado pelo operador |. Por exemplo,

    significa que o resultado da multiplicao de R3 por R2, cujo resultado, comoreferido anteriormente, precisa do dobro dos bits dos operandos, ficar guar-dado em dois registos, R7 e R6, em que R7 tem a parte mais significativa e R6a menos significativa.

    Com esta linguagem simples possvel descrever unidades de processa-mento com uma complexidade arbitrria. Esta descrio indica quais as micro-operaes que podem ser executadas na unidade de processamento e sob quecondies elas ocorrem. Dada esta descrio, o projectista pode desenhar aunidade de controlo que gera a sequncia de sinais de controlo para realizar aoperao pretendida.

    De notar que esta linguagem no define completamente a implementaodo sistema. Muitas vezes existe alguma liberdade de escolha pois possvelconsiderar diferentes circuitos que realizam uma mesma funcionalidade. Por

  • 9.3. LINGUAGEM DE DESCRIO DE HARDWARE 125

    R2 R1

    R0

    MUXSel 0 1

    LD

    T1

    T2

    R2 R1

    R0LD

    T1T2 OE OE

    (a) (b)

    Figura 9.12: Circuitos equivalentes para realizar uma transferncia de duasfontes possveis.

    Maior_Divisor_Comum(X, Y)1. enquanto (Y

    0){2. se XY3. ento X=X-Y4. se no, troca X com Y5. }6. resultado em X

    Figura 9.13: Pseudo-cdigo do algoritmo para o clculo do mximo divisorcomum.

    exemplo, considere-se o caso comum de um registo que pode ser carregado apartir de uma de duas fontes:

    Como discutido na Seco 7.5.4, estes registos podem estar ligados atravs demultiplexadores ou atravs de barramentos. Estas duas situaes tm a repre-sentao em termos de circuito lgico indicada nas Figuras 9.12(a) e 9.12(b),respectivamente. Notar que no caso do barramento se usa menos hardware,mas h que ter o cuidado de garantir que os sinais

    e

    nunca esto activosem simultneo.

    9.3.2 Exemplo: Mximo Divisor Comum

    De forma a ilustrar os conceitos apresentados atrs, desenvolve-se nesta secoum exemplo completo. Considere-se que se pretende projectar um sistemapara calcular o mximo divisor comum de dois nmeros inteiros positivos de bits. Um algoritmo conhecido para realizar esta operao est indicado empseudo-cdigo na Figura 9.13.

    Por palavras, neste algoritmo subtrai-se sucessivamente omenor dos nme-ros ao maior at que o resultado desta subtraco seja 0. Quando isso acontece,o algoritmo termina e o resultado o valor final do outro operando. No

  • 126 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS

    T0

    inicio

    Rx>=Ry

    T1

    Rx Rx-Ry

    Ry=0

    0

    0

    1

    1

    1

    0

    fim

    Rx Ry,Ry Rx

    Figura 9.14: Fluxograma do algoritmo para o mximo divisor comum.

    um algoritmo muito eficiente pois, por vezes, demora muito a terminar, mas simples de realizar.

    Assume-se que na especificao do sistema se indica que os operandos

    ese encontram inicialmente guardados em dois registos, designados por Rx e

    Ry. Alm disso, essa especificao indica que existem dois sinais de controlo,um sinal de entrada

    para indicar que os registos Rx e Ry foram carre-gados com os operandos e que se deve dar incio ao clculo do maior divisorcomum entre eles, um sinal de sada que assinala o fim deste clculo. Paraum funcionamento correcto do sistema, o sinal

    e os registos Rx e Ry sdevem ser alterados do exterior quando o sinal estiver activo.

    Tendo em conta estas especificaes, o algoritmo da Figura 9.13 pode serapresentado sob a forma de fluxograma, como o apresentado na Figura 9.14. Oestado

    representa um estado de espera, onde nada acontece at que sejaaccionado o sinal

    . Neste estado a sada de controlo est activa.Quando a entrada

    vai a 1, o sistema avana para o estado

    , onde todoo processamento realizado. O sistema mantm-se neste estado enquanto Ryno chegar a zero, situao em que terminou o clculo, regressando o sistema a

    . Enquanto em

    , em cada ciclo os valores relativos de Rx e Ry so testadose, de acordo com este teste, ou se trocam os valores destes ou se subtrai Ry aRx. Neste fluxograma os registos Rx e Ry esto a ser re-utilizados durante aoperao uma vez que a cada ciclo de relgio no h novos valores a seremcriados que necessitem de novos registos.

    Neste ponto necessrio decidir a funcionalidade da unidade de proces-samento, ou seja, quais as micro-operaes que estaro disponveis. Para esteexemplo, as micro-operaes necessrias so simples, optando-se por inclu-lasna unidade de processamento. Em geral, no entanto, poder no ser este o caso,quer pela complexidade das operaes quer por se estar a usar uma unidadede processamento predefinida. Nesse caso ter-se- que subdividir as operaes

  • 9.3. LINGUAGEM DE DESCRIO DE HARDWARE 127

    1.

    2.

    :

    3.

    :

    ,

    ,

    4.

    :

    ,

    5.

    : Rx Rx Ry6.

    : Rx Ry, Ry Rx

    Figura 9.15: Descrio a nvel de transferncia entre registos do algoritmo parao clculo do mximo divisor comum.

    em sub-operaes mais simples que j sejam suportadas por micro-operaesda unidade de processamento. Esta situao estudada na Seco 9.4.7.

    Por observao do fluxograma da Figura 9.14, as operaes necessrias soapenas a transferncia de valores entre registos e uma subtraco. Estas indi-cam a necessidade de registos com sinal de controlo load,

    e

    , e umsubtractor.

    Alm das operaes, h trs condies a serem testadas:

    a 1, para oque no necessrio hardware especfico; o valor do registo Ry ter chegado a0; o valor Rx ser maior do que o valor de Ry. Para a segunda destas condies,pode-se assumir a existncia de um comparador com a constante 0, o que realizado atravs de uma porta NOR de entradas, onde esto ligados todosos bits sada de Ry. O mais usual utilizar para Ry um registo que inclui jesta porta NOR e portanto com uma sada de controlo,

    , que indica quando ovalor l guardado zero. Para a terceira condio necessrio um comparadornormal, ligado a Rx e Ry, e a cujo sinal de sada se atribuiu o nome

    .Tendo em conta a funcionalidade da unidade de processamento, o fluxo-

    grama da Figura 9.14 pode ser traduzido em linguagem de transferncia entreregistos como indicado na Figura 9.15. Nesta figura, os sinais

    e

    contro-lam a sequncia de execuo das restantes micro-operaes e portanto serogerados pela unidade de controlo.

    Como referido na seco anterior, a cada ciclo de relgio qualquer dasmicro-operaes das linhas da Figura 9.15 pode ocorrer. O que define quais as quede facto ocorrem so as condies indicadas na linha. Neste exemplo, para umfuncionamento correcto, apenas um dos sinais da unidade de controlo,

    e

    , estar activo. Com

    =1, apenas as operaes das linhas 2 e 3 poderoocorrer. Com

    =1, podero ocorrer as das trs ltimas linhas. No entanto, fcil ver que as condies destas trs linhas, geradas pelos sinais

    e

    , sodisjuntas, pelo que de facto apenas as micro-operaes de uma das trs ltimaslinhas da Figura 9.15 podem ocorrer em cada ciclo de relgio.

    Examinando linha a linha este cdigo, pode-se observar que na linha 1 ossinais de teste

    e

    so gerados em todos os ciclos de relgio. A linha 2indica que o sinal se mantm activo no estado

    . A linha 3 s ocorre se osistema estiver no estado

    e o sinal de

    ficar activo, passando o controlopara o estado

    . Portanto, com o sistema no estado

    e a linha

    desac-tiva, o sistema mantm-se indefinidamente neste estado e nada mais acontece.A linha 4 corresponde ao oposto, que detectar que o registo Ry chegou a zeroe que portanto o clculo terminou. A aco correspondente passar para oestado

    , que por sua vez ir activar a sada . As linhas 5 e 6 podero seractivadas durante o decorrer do clculo, em que o estado

    . A linha 5 fica

  • 128 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS

    Rx Ry

    A>=B

    ZLD LD Zy

    A BA-B

    n

    n

    A B

    MUX1 0

    Sel

    LDyLDx

    n

    n

    xMy

    Figura 9.16: Unidade de processamento para o mximo divisor comum.

    activa quando Rx

    Ry, subtraindo-se Ry a Rx. A linha 6 fica activa quandoRx Ry, activando-se a troca dos valores de Ry e Rx.

    Traduzindo para circuito lgico a descrio a nvel de transferncia entre re-gistos da Figura 9.15, apresenta-se na Figura 9.16 a unidade de processamentopara este problema. Os sinais

    e

    formam a palavra de controlo daunidade de controlo, indicando em que ciclos de relgio os registos so actua-lizados. Os sinais

    e

    so os bits de estado da unidade de processamentoe so entradas para a unidade de controlo. De notar que o controlo domultiple-xador entrada do registo Rx feito directamente pela sada do comparadorpois o carregamento para este registo controlado pelo sinal

    . Enquanto

    estiver inactivo no importa qual o valor que est entrada de Rx, e sem-pre que estiver activo a sada do multiplexador ser a correcta.

    O controlo desta unidade de processamento est indicado na Figura 9.17 efoi obtido a partir do fluxograma da Figura 9.14 por simples substituio dasoperaes pelos sinais de controlo das micro-operaes correspondentes e dostestes pelos bits de estado. Assim, o teste Ry=0 corresponde a testar se

    =1 eRx

    Ry a testar se

    =1. Por seu lado, para a operao Rx Rx Ry bastaactivar o sinal de

    do registo Rx, e para a operao de troca de valoresentre os registos activam-se ambos os sinais de

    . Notar que a seleco dovalor entrada de Rx, RxRy ou Ry, controlado directamente na unidade deprocessamento pelo sinal

    .Esta unidade de controlo to simples que no so necessrias tcnicas

    sofisticadas para a sua construo. Usando a tcnica de sntese de mquinas deestados da Seco 8.3.1, basta usar uma bscula tipo D para guardar o estado,codificando-se os estados da seguinte forma: 0 corresponde a

    ; e 1 a

    . Asntese da lgica trivial, chegando-se ao circuito da Figura 9.18.

    Os circuitos das Figuras 9.16 e 9.18 juntos, conforme a Figura 9.2, realizama funcionalidade pretendida de clculo do mximo divisor comum entre doisnmeros. A Figura 9.19 ilustra o funcionamento destes circuitos para o caso de

    e

    , em que se assumiu que os registos so actualizados no flanco

  • 9.4. UNIDADES LGICAS E ARITMTICAS 129

    T0

    inicio

    xMy

    LDy

    T1

    LDx

    Zy

    0

    0

    1

    1

    1

    0

    fim

    Figura 9.17: Fluxograma da unidade de controlo para o mximo divisor co-mum tendo em vista a unidade de processamento da Figura 9.16.

    D QQinicio

    Zy

    xMyLDy

    LDx

    fim

    Figura 9.18: Unidade de controlo para o mximo divisor comum.

    ascendente do sinal de relgio.

    9.4 Unidades Lgicas e Aritmticas

    No exemplo apresentado acima, a unidade de processamento foi projectadapara um fim especfico. De facto, essa ser sem dvida a abordagem maiseficiente para realizar um sistema digital pois assim inclui-se na unidade deprocessamento todos, e apenas, os mdulos necessrios s micro-operaes arealizar, interligados de forma ptima. No entanto, em muitos casos, tal no possvel por o nmero demicro-operaes ou a complexidade destas ser muitoelevado.

    Nestes casos, projecta-se para a unidade de processamento um circuito com

  • 130 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS

    Estado

    Inicio

    Fim

    Rx

    Ry

    LDx

    LDy

    xMy

    Zy

    Clk

    T0 T1 T1 T1 T1 T1 T1

    54

    36

    18 0

    36

    3654

    36 18 18

    18

    18

    18

    0 0

    18

    T0 T0

    18

    0

    Figura 9.19: Diagrama temporal para o clculo do mximo divisor comum en-tre

    e

    .

    as funcionalidades bsicas, em termos de operaes quer aritmticas quer lgi-cas, associado a um conjunto de registos genricos. Ao circuito que realiza asoperaes chama-se Unidade Lgica e Aritmtica ou ULA (em ingls, Arithmeticand Logic Unit ou ALU). O nmero, tipo e complexidade das micro-operaesincludas numa ULA pode variar grandemente dependendo do problema emvista. Aplica-se aqui o princpio referido na Seco 9.2.2 de que possvelsimplificar a unidade de processamento por transferncia de alguma comple-xidade para a unidade de controlo. As operaes mais complexas so assimrealizadas por uma sequncia de micro-operaes disponveis numa unidadede processamento mais simples.

    A ULA trabalha normalmente junto com um banco de registos (ver Sec-o 7.5.4) para guardar os operandos, resultados das operaes e valores tem-porrios, necessrios quando uma operao complexa substituda por umasequncia de operaes mais simples. Tambm aqui pode haver uma grandevariao de caso para caso em termos do nmero de registos disponveis nestebanco.

    Uma unidade de processamento deste tipo est representadana Figura 9.20.Assume-se o caso mais geral, em que a ULA aceita 2 operandos e tem umresultado nico. A palavra de controlo conter informao para a seleco dequais os 2 registos que servem como operandos e qual o registo destino paraguardar o resultado. A especificao da micro-operao a realizar pela ULA tambm parte da palavra de controlo. Por seu lado, a ULA gera um conjuntode bits de estado que, tal como referido anteriormente, podem ser usados pelaunidade de controlo para tomar decises em termos de execuo dependendo

  • 9.4. UNIDADES LGICAS E ARITMTICAS 131

    Bancode

    Registos

    ULA

    Palavra deControlo

    Bits deEstado

    Operandos

    Resultado

    Figura 9.20: Exemplo de unidade de processamento com ULA mais banco deregistos.

    do resultado de uma micro-operao.

    9.4.1 Estrutura de uma ULA

    Para ilustrar estes conceitos, projecta-se em seguida uma ULA, que ser poste-riormente usada na unidade de processamento do processador P3 apresentadono Captulo 12. A ULA definiu-se como um circuito que realiza operaesaritmticas e lgicas bsicas. Uma primeira observao que estes dois tiposde operaes no tm muito em comum. Assim, optou-se aqui por conside-rar em separado unidades para realizar cada um destes tipos de operaes,a unidade aritmtica e a unidade lgica. Alm destas, considera-se uma ter-ceira unidade para realizar o deslocamento direita e esquerda, funcionali-dade semelhante dos registos de deslocamento apresentados na Seco 7.5.2,mas neste caso efectuada por lgica puramente combinatria. Optou-se tam-bm por considerar esta unidade de deslocamento em separado pois corres-ponde a uma funcionalidade distinta das outras unidades. As operaes rea-lizadas pela unidade de deslocamento no se classificam em termos de opera-esaritmticas e lgicas pois, dependendo do tipo de deslocamento efectuado, aoperao pode ser considerada como de um tipo ou do outro, como se veradiante.

    A Figura 9.21 apresenta a estrutura da ULA em construo. Escolheu-seuma arquitectura em que as trs unidades referidas trabalham em paralelo,entrando os operandos directamente em cada uma delas. De notar que estaopo uma entre outras possibilidades de organizao. Uma alternativa pos-svel, com vantagens e desvantagens em relao escolhida, seria colocar aunidade de deslocamento sada do multiplexador, portanto em srie com asunidades aritmtica e lgica, o que permitiria executar micro-operaes maiscomplexas.

    A micro-operao realizada por qualquer destas unidades especificadapela palavra de controlo. O nmero de bits de controlo que entra em cada uni-dade, , e

    , depende do nmero de operaes disponveis em cada unidade.

  • 132 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS

    Palavra deControlo

    MUXSel

    n

    UnidadeAritmtica

    UnidadeLgica

    Unidade deDeslocamento

    n n n

    n

    0 1 2 3

    n

    A B

    Resultado

    2

    k

    p q r

    Figura 9.21: Estrutura da ULA.

    Esta palavra de controlo controla tambm omultiplexador sada, que escolhede qual das unidades que se pretende o resultado. De notar que s o resul-tado de uma vai ser usado na sada. Isto permite que os bits de controlo queentram em cada unidade possam ser partilhados, pois s importante especifi-car os bits de controlo para a unidade que vai ter o seu resultado seleccionado sada, sendo irrelevante qual a operao realizada pelas outras duas unidades.Notar tambm que, embora para no sobrecarregar a figura no esteja l repre-sentado, existe tambm um multiplexador para seleccionar os bits de estadoda unidade activa.

    9.4.2 Bits de Estado

    Sendo uma ULA uma unidade de processamento com micro-operaesaritmticas e lgicas simples, os bits de estado passados para a unidade decontrolo so tambm simples, e comuns a muitas destas micro-operaes. Paraa ULA em estudo, consideram-se 4 bits de estado, presentes na esmagadoramaioria das ULAs.

    Zero ( ): este bit fica a 1 quando o resultado da micro-operao foi 0. Estebit actualizado em qualquer micro-operao da ULA. Em termos derealizao, este bit pode ser gerado por uma porta lgica NOR entre todosos bits do resultado.

    Transporte (

    ) (ou carry): este bit usado pelas micro-operaes aritmticas(como soma e subtraco) para indicar que h um bit de transporte paral do bit mais significativo do resultado. tambm usado nas micro-operaes de deslocamento para guardar o bit que se perderia por sairpara fora do resultado.

    Sinal ( ): para o bit de sinal usado o bit mais significativo do resultado.Em notao de complemento para 2 ou sinal-magnitude, este bit indicaquando o resultado deu negativo.

  • 9.4. UNIDADES LGICAS E ARITMTICAS 133

    +Cout Cin

    SelB G

    CCout

    R

    BAn n

    n

    n

    Y

    SelCCin

    2

    2

    3

    Figura 9.22: Esquema de uma unidade aritmtica.

    Excesso ( ) (ou overflow): este bit s tem sentido para micro-operaesaritmticas e fica a 1 quando o resultado tem uma magnitude que ex-cede o valor mximo que possvel de representar com o nmero de bitsdisponveis para o resultado. Indica portanto que o valor de resposta estincorrecto. Este conceito de bit de excesso foi apresentado na Seco 6.2,onde se explicou como pode ser calculado pelo hardware.

    Algumas ULAs podem apresentar um maior nmero de bits de estado, de-pendendo da aplicao em vista. Por exemplo, nalguns casos pode facilitarmuito a existncia de um bit de estado paridade que indique que o nmero debits a 1 no resultado par. A regra normalmente a ULA fornecer informaoque til aplicao e que apenas possvel, ou substancialmente mais fcil,de obter directamente pelo hardware do que com (micro-)programao. Paraa ULA em estudo, consideram-se apenas os 4 bits de estado descritos atrs.

    9.4.3 Unidade Aritmtica

    Quando se pensa em operaes aritmticas bsicas natural pensar-se na adi-o, subtraco, multiplicao e diviso. De facto, a adio e a subtraco soquase que obrigatrias para as unidades aritmticas. A multiplicao, emboramuito comum, no includa em todas devido sua realizao em hardwareser bastante mais complexa, conforme foi referido atrs. A implicao destaopo que uma multiplicao ter que ser realizada por uma sequncia demicro-operaes mais elementares, como somas sucessivas, e portanto demo-rar bastante mais tempo a executar. A diviso tambm no realizada direc-tamente por muitas unidades aritmticas pois a sua realizao to complexacomo a multiplicao e uma operao bastante menos utilizada. Assim, a pe-nalizao que advm da sua execuo ser mais demorada no tem tanto pesono desempenho do sistema.

    A Figura 9.22 apresenta um exemplo de uma unidade aritmtica. Aqui,para simplificar, optou-se por no incluir as micro-operaes de multiplicaoe diviso. Assim, esta unidade aritmtica contruda em torno de um somador,que com a adio de blocos combinatrios simples que manipulam o operando

  • 134 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS

    00

    01

    10 111 0

    ...

    n

    n

    B

    G

    Y

    BBB

    Y Y Yn-1

    n-1

    1

    1 0

    0

    G0

    2

    ...

    (a) (b)

    Figura 9.23: Bloco combinatrio SelB (a) Descrio funcional. (b) Circuitolgico.

    00 001 110

    11

    GCinC

    G0

    1

    (a) (b)

    Figura 9.24: Bloco combinatrio SelC (a) Descrio funcional. (b) Circuitolgico.

    e a entrada do sinal de transporte, permite utilizar o somador para executarum conjunto interessante de micro-operaes.

    Como foi discutido na Seco 6.2.2, um somador pode ser facilmente con-vertido num subtractor por aplicao do complemento para 2 de um dos ope-randos. Este complemento para 2 pode ser obtido por complementao lgicabit a bit desse operando e por colocao do bit de transporte

    entrada a1. Os blocos combinatrios SelB e SelC, apresentados nas Figuras 9.23 e 9.24respectivamente, foram definidos de forma a que, com os sinais de controlo

    e

    , o sinal

    seleccione se a operao uma soma ou uma sub-traco. Como j referido, uma porta EXOR pode ser vista como um inversorcontrolado. Se o sinal

    estiver a 0, ento

    . Com

    tambm a 0, estaunidade realiza uma soma normal. Se o sinal

    estiver a 1, ento cada bit de

    o complemento do bit correspondente de

    . Como

    , ento tem-se ocomplemento para 2 de

    e esta unidade realiza a subtraco

    .Por vezes, pretende-se fazer uma soma entre operandos com um nmero

    de bits

    superior aos permitidos pela unidade aritmtica,

    . Uma formasimples de conseguir este objectivo comear por somar os bits menos sig-nificativos dos operandos e guardar o bit de transporte. Depois somam-se os bits seguintes, tendo agora em conta o bit de transporte anterior. Este procedi-mento pode-se repetir indefinidamente, permitindo a soma de operandos com

  • 9.4. UNIDADES LGICAS E ARITMTICAS 135

    Micro-Operao

    000

    0

    soma001

    1

    subtraco010

    soma com bit de transporte011

    subtraco com bit de transporte100 1 0

    decremento101 0 1

    incremento110 1

    decremento, se

    111 0

    incremento, se

    Tabela 9.1: Conjunto de micro-operaes da unidade aritmtica.

    um nmero arbitrrio de bits. O mesmo raciocnio funciona para a subtrac-o. De maneira a acomodar esta situao, a unidade aritmtica tem que poderaceitar um bit de transporte. Na unidade em questo, isto conseguido com osinal de controlo

    a 1, em que se tm as operaes

    ou

    dependendo do valor de

    .Por fim, outras operaes muito comuns so simples incrementos e decre-

    mentos de um operando. Para incrementar o operando

    , basta colocar a en-trada correspondente ao operando

    a 0 e o bit de transporte a 1, o que conseguido com as entradas de controlo

    =1,

    =0 e

    =1. De forma seme-lhante, para decrementar o operando

    faz-se a sua soma com

    =-1 e

    =0.Como o complemento para 2 de 1 um valor com todos os bits a 1, a diferenapara esta operao o sinal de controlo

    =0.A Tabela 9.1 resume as micro-operaes possveis de realizar pela unidade

    aritmtica apresentada na Figura 9.22, para cada combinao das entradas decontrolo

    . Note-se que as duas ltimas micro-operaes no foramprojectadas, mas surjem como efeitos secundrios das restantes operaes. Em-bora primeira vista no paream to teis como as seis que foramprojectadas,esto disponveis e podem ser usadas se necessrio.

    9.4.4 Unidade Lgica

    A diferena fundamental entre as operaes lgicas e as operaes aritmticas que as primeiras so operaes binrias e as segundas operam sobre valoresnumricos. Assim, para as operaes lgicas os bits so tratados de forma inde-pendente enquanto que para as aritmticas so os bits no seu conjunto que tmsignificado, de acordo com a notao usada em cada caso para a representaode valores numricos.

    As micro-operaes fornecidas pelas unidades lgicas aplicam-se individu-almente a cada bit dos operandos de entradas. Por exemplo, a micro-operao

    significa um AND entre cada bit dos operandos

    e

    :

    .Qualquer operao lgica pode ser includa numa unidade lgica. Para a

    ULA em projecto, consideram-se as micro-operaes NOT, AND, OR e XOR. AFigura 9.25 ilustra como estas micro-operaes so realizadas para um bit .Naturalmente, a unidade lgica necessitar de tantos blocos iguais ao da Figu-

  • 136 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS

    0

    MUX123 S

    R

    A

    B

    B

    B

    A

    A

    A i

    i

    i

    i

    i

    i

    i

    i

    S

    HH

    0

    0

    1

    1

    Figura 9.25: Esquema da unidade lgica.

    Micro-Operao

    00

    complemento01

    conjuno10

    disjuno11

    ou exclusivo

    Tabela 9.2: Conjunto de micro-operaes da unidade lgica.

    ra 9.25 quanto o nmero de bits dos operandos. Os sinais de controlo

    e

    escolhem qual das micro-operaes tem o seu resultado seleccionado sada.A Tabela 9.2 indica qual a correspondncia entre a combinao destes sinais ea micro-operao seleccionada.

    0C 0 C

    (a)

    0C C

    (b)

    C C

    (c)

    C C

    (d)

    Figura 9.26: Tipos de deslocamento: (a) Deslocamento lgico; (b) Desloca-mento aritmtico; (c) Rotao; (d) Rotao com transporte.

  • 9.4. UNIDADES LGICAS E ARITMTICAS 137

    9.4.5 Unidade de Deslocamento

    A unidade de deslocamento apenas admite um operando de entrada e permitedeslocar todos os bits deste operando uma posio esquerda ou direita.Existem vrios tipos de deslocamento possveis, indicados na Figura 9.26. Umaprimeira observao que em qualquer das formas de deslocamento o bit deestado transporte (

    ) recebe o bit que se perde com o deslocamento, o bit maissignificativo do operando no caso de deslocamentos esquerda, ou o bit menossignificativo nos deslocamentos direita.

    Deslocamento lgico (Figura 9.26(a)): o deslocamento mais simples em quecada bit passa para a posio seguinte, consoante seja deslocamento esquerda ou direita. O bit que sai do operando copiado para o bitde estado transporte (

    ) e o bit que entra sempre 0. Os bits de estadotransporte (

    ), zero ( ) e sinal ( ) so actualizados. Se se considerar ooperando de entrada como um nmero sem sinal, um deslocamento deuma posio esquerda ou direita omesmo do que umamultiplicaoou diviso por 2, respectivamente.

    Deslocamento aritmtico (Figura 9.26(b)): este tipo de deslocamento tem emvista a utilizao de um operando em formato de complemento para 2.O objectivo manter a regra da multiplicao e diviso por 2, agora emnmeros com sinal. No deslocamento esquerda, o movimento dos bits exactamente o mesmo do deslocamento lgico. A diferena est em quese o bit de sinal mudar de valor, isso significa que o resultado excedeu acapacidade para o nmero de bits do operando (uma multiplicao por 2no pode trocar o sinal) e portanto o bit de estado excesso ( ) ficar a 1.No deslocamento direita, a diferena est tambm na forma como o bitmais significativo tratado. Como o sinal numa diviso por 2 se tem quemanter, em vez de entrar sempre 0 no bit de maior peso, este bit mantmo valor anterior. Sendo uma operao aritmtica, todos os bits de estadoso actualizados.

    Rotao (Figura 9.26(c)): nesta micro-operao o movimento dos bits o mes-mo do deslocamento lgico, mas o bit que entra no 0 e sim igual ao bitque sai, fechando-se assim o crculo. Numa rotao esquerda, o bit demaior peso entra no bit de menor peso. Numa rotao direita, o bit demenor peso entra no bit de maior peso. Os bits de estado transporte (

    ),zero ( ) e sinal ( ) so actualizados.

    Rotao com transporte (Figura 9.26(d)): este tipo de rotao igual ao ante-rior, com a diferena que o bit de estado transporte includo no crculode rotao. O bit que entra , portanto, o bit que estava anteriormente nobit de estado transporte. Tambm aqui os bits de estado transporte (

    ),zero ( ) e sinal ( ) so actualizados.

    Um circuito que realiza estas micro-operaes de deslocamento est repre-sentado na Figura 9.27. Existem 8 micro-operaes possveis, portanto so ne-cessrios 3 sinais de controlo,

    ,

    e

    . Neste circuito,

    indica se o desloca-mento direita (0) ou esquerda (1). Para os bits intermdios do operando,este o nico sinal de controlo relevante, pois simplesmente se vai buscar o bitde peso imediatamente maior ou menor. Por outras palavras, o bit de sada

  • 138 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS

    0

    MUXS123

    0S

    0

    1

    MUXS1 0

    MUXS1 0

    MUXS1 0

    MUXS1 0

    MUXS123

    0S

    01J

    JJ0

    12

    A

    C 0 0

    A A A1A2A0 n-1n-1n-3An-2

    0

    An-1A

    C

    ...

    n

    n

    A

    R

    R R R R01n-1 n-2MUXS

    1 0

    C

    A A0n-1

    Figura 9.27: Esquema da unidade de deslocamento.

    Micro-Operao000 SHR

    deslocamento lgico direita001 SHL

    deslocamento lgico esquerda010 SHRA

    deslocamento aritmtico direita011 SHLA

    deslocamento aritmtico esquerda100 ROR

    rotao direita101 ROL

    rotao esquerda110 RORC

    rotao direita com transporte111 ROLC

    rotao esquerda com transporte

    Tabela 9.3: Micro-operaes possveis na unidade de deslocamento.

    fica igual ao bit de entrada

    ou

    consoante

    0 ou 1. Este tambmo nico sinal de controlo para a gerao do bit de estado transporte, que secarrega com o bit mais ou menos significativo dependendo se o deslocamento esquerda ou direita, respectivamente.

    Os sinais

    e

    servem para definir qual o tipo de deslocamento a execu-tar, o que se consegue pelo controlo do bit que entra, o bit mais significativonos deslocamentos direita e o bit menos significativo nos deslocamentos esquerda. No caso de um deslocamento direita, para um:

    deslocamento lgico: entra sempre um 0. deslocamento aritmtico: o bit mantm-se, pois um bit de sinal. rotao: entra o bit de menor peso do operando. rotao com transporte: entra o bit de estado transporte.

    De forma semelhante para um deslocamento esquerda:

    deslocamento lgico: entra sempre um 0. deslocamento aritmtico: entra sempre um 0. rotao: entra o bit de maior peso do operando. rotao com transporte: entra o bit de estado transporte.

  • 9.4. UNIDADES LGICAS E ARITMTICAS 139

    Micro-Operao

    00000

    soma00001

    subtraco00010

    soma com bit transporte00011

    subtraco com bit transporte00100

    decremento00101

    incremento00110

    decremento, se

    00111

    incremento, se

    01-00

    complemento01-01

    conjuno01-10

    disjuno01-11

    ou exclusivo10000 SHR

    deslocamento lgico direita10001 SHL

    deslocamento lgico esquerda10010 SHRA

    deslocamento aritmtico direita10011 SHLA

    deslocamento aritmtico esquerda10100 ROR

    rotao direita10101 ROL

    rotao esquerda10110 RORC

    rotao direita com transporte10111 ROLC

    rotao esquerda com transporte11- - -

    transferncia

    Tabela 9.4: Tabela das micro-operaes da ULA.

    A micro-operao realizada pela unidade de deslocamento para cada com-binao dos sinais de controlo encontra-se discriminada na Tabela 9.3.

    9.4.6 Tabela de Controlo da ULA

    Tendo-se estabelecido o funcionamento de cada uma das suas unidades inter-nas, pode-se definir o funcionamento global da ULA representada naFigura 9.21. Assim, a unidade aritmtica disponibiliza 8micro-operaes selec-cionadas pelos sinais

    , a unidade lgica disponibiliza 4micro-operaesseleccionadas pelos sinais

    e

    , e a unidade de deslocamento 8 micro-operaes seleccionadas pelos sinais

    ,

    e

    . Observe-se que o multiple-xador sada da ULA escolhe o resultado de uma destas unidades, e portantopara cada micro-operao apenas se tem que garantir que a unidade respon-svel pela sua execuo tem os bits de controlo certos. Ou seja, para cadamicro-operao de facto s existe a preocupao de controlar uma destas trsunidades. Isto significa que os sinais de controlo destas unidades podem serpartilhados:

    ,

    e

    . A nvel da ULA, areferncia a estes sinais ser

    ,

    e

    , respectivamente.Para alm destes 3 sinais de controlo, so necessrios mais 2 sinais,

    e

    ,

  • 140 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS

    para controlar os sinais de seleco do multiplexador. Arbitrariamente define-se que a combinao 00 selecciona a unidade aritmtica, a combinao 01 aunidade lgica e 10 a unidade de deslocamento. A combinao 11 fica dispo-nvel, tendo-se optado por fazer seleccionar a entrada

    de forma a se forneceruma micro-operao que se limita a copiar um operando directamente paraa sada. A Tabela 9.4 apresenta as micro-operaes disponibilizadas por estaULA e qual a palavra de controlo que as define.

    A forma como os bits de estado so actualizados depende de qual das uni-dades da ULA usada. Os bits zero ( ) e sinal ( ) so calculados de igualforma para todas as unidades, de acordo com o definido na Seco 9.4.2. O bitzero um NOR de todos os bits do resultado. Apesar de no ter muito signifi-cado para as micro-operaes lgicas, o bit de sinal sempre calculado devidoa ser simplesmente igual ao bit mais significativo do resultado.

    J o bit de transporte (

    ) calculado para as unidades aritmtica e de deslo-camento, e de forma diferente para estas. No caso da unidade aritmtica, estebit o bit de transporte sada do somador, o sinal

    da Figura 9.22. A formade clculo deste bit na unidade de deslocamento foi definida na Seco 9.4.5.Tipicamente o bit que sai do operando devido operao de deslocamento.

    Por ltimo, o bit excesso ( ) s tem sentido nas micro-operaes da uni-dade aritmtica e nas micro-operaes de deslocamento aritmtico da unidadede deslocamento. Nesta ltima, foi tambm explicado na Seco 9.4.5 que obit excesso fica a 1 quando uma operao de deslocamento aritmtico provocauma mudana do bit de sinal. Para a unidade aritmtica, este bit calculadoatravs de um EXOR entre os dois bits de transporte mais significativos do so-mador da Figura 9.22, como explicado no Captulo 6.

    Assume-se que os bits de transporte e excesso no so definidos quando amicro-operao executada utiliza uma unidade em que eles no so calculados.Naturalmente, est aqui includa a micro-operao de transferncia,

    ,pois no utiliza nenhuma destas unidades. Na prtica, uma possibilidade, toboa como qualquer outra, assumir que estes ficam a zero.

    O hardware necessrio gerao destes bits de estado e sua seleco sada da ALU no est representado explicitamente nas figuras desta secoapenas para as no sobrecarregar.

    9.4.7 Exemplo Revisitado: Mximo Divisor Comum

    Considerando novamente o exemplo da Seco 9.3.2, ilustra-se agora como se-ria a realizao de um sistema que calcula o Mximo Divisor Comum entredois operandos utilizando como unidade de processamento a ULA definidanesta seco. A descrio deste sistema utilizando apenas as micro-operaesque a ULA fornece encontra-se na Figura 9.28. Aqui assumiu-se que a ULAtem associado um banco de registos com pelo menos 3 registos, em que R1 eR2 tm inicialmente os dados de entrada, respectivamente

    e

    , e R3 servecomo registo temporrio. O resultado final fica em R2.

    Pode-se observar que esta descrio um pouco mais complexa do que naverso original. Como mencionado atrs, ao utilizar-se uma unidade de pro-cessamento genrica como esta ULA, em oposio a uma unidade de proces-samento especificamente desenhada para um dado problema, so necessriasmais micro-operaes para atingir um dado objectivo. Neste caso particular,na verso original era possvel no estado

    fazer uma comparao e efectuar

  • 9.4. UNIDADES LGICAS E ARITMTICAS 141

    1.

    :

    2.

    .

    :

    ,

    3.

    : R1 R1 R2,

    4.

    . :

    ,

    5.

    . :

    ,

    6.

    : R3 R1

    R2,

    ,

    ,

    7.

    : R1 R2,

    ,

    ,

    8.

    : R2 R3,

    ,

    ,

    Figura 9.28: Descrio a nvel de transferncia entre registos do algoritmo parao clculo do mximo divisor comum.

    ainda no mesmo ciclo uma subtraco ou uma troca de registos, dependendodo resultado desta comparao. Com a ULA, a comparao tem que ser feitaprimeiro e s no ciclo seguinte se pode fazer uma nova operao. No cdigo daFigura 9.28 foi feita uma optimizao trivial pois como a comparao tem queser realizada atravs de uma subtraco, caso o resultado ainda seja positivo asubtraco j est feita. Repare-se que caso o resultado seja negativo, h quesomar a R3 o valor de R2 para recuperar o valor inicial de R1. A outra dife-rena est em que na ULA no possvel fazer uma troca de valores entre doisregistos. Assim, so necessrios trs ciclos de relgio e um registo temporriopara efectuar esta operao.

    A sequncia de operaes a realizar est descrita no fluxograma daFigura 9.29. Ainda um fluxograma simples, pelo que qualquer das tcni-cas de projecto de mquinas de estados pode ser utilizada para a unidade decontrolo. Opta-se aqui por recorrer a um controlo micro-programado (ver Sec-o 8.3.3).

    A palavra de controlo ter que seleccionar a operao da ULA, os dois re-gistos com os operandos e o registo destino. Para a ULA so necessrios 5bits para a escolha da micro-operao, conforme indicado na Figura 9.21. As-sumindo os 3 registos do banco de registos (R1, R2 e R3), bastam 2 bits paraseleccionar cada um dos registos de cada operando e do registo para guardaro resultado. No total, a palavra de controlo ser composta por 11 bits:

    10 9 8 7 6 5 4 3 2 1 0

    operao ULA reg A reg B dest

    O nmero de estados no fluxograma da Figura 9.29 cinco, o que corres-ponde ao nmero de posies na ROM de controlo, pelo que o nmero de bitspara os endereos de controlo ser trs. Pode-se verificar neste fluxogramaque o estado

    pode ter 3 estados seguintes diferentes. Portanto, na micro-instruo tero de existir pelo menos dois endereos seguintes (assumindo queo terceiro pode ser obtido por incremento do CAR). Outra consequncia destaobservao que para decidir entre 3 endereos so necessrios 2 bits para aescolha do endereo seguinte a carregar no CAR. Por ltimo, as condies desalto so: o sinal de controlo

    no estado

    ; os bits de estado e em

    ; o estado seguinte em

    e

    (sem salto); salto incondicional em

    . Paracobrir estas quatro hipteses so necessrios 2 bits de controlo para seleccionara condio de salto. Finalmente, ter que existir um bit para a sada de controlo

    .

  • 142 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS

    T0

    inicio

    N

    T1

    Z

    0

    0

    1

    1

    1

    fim

    R1 R1-R2

    0

    T2

    R3 R1+R2

    T3

    R1 R2

    T4

    R2 R3

    Figura 9.29: Fluxograma da unidade de controlo para o mximo divisor co-mum.

    Adicionando palavra de controlo os dois endereos seguintes para o CAR(

    e

    ), os dois bits para a seleco da condio de salto (

    ) e o bitda sada de controlo, tem-se o formato completo da micro-instruo para aunidade de controlo:

    19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

    ES0 ES1 SEL operao ULA reg A reg B dest

    A Figura 9.30 apresenta um controlador micro-programvel ajustado scondies deste problema. sada da ROM de controlo tem-se amicro-instruocom a palavra de controlo que enviada directamente para a unidade de pro-cessamento, com os campos

    e

    que guardam 2 possveis endereosseguintes para o CAR e com o campo SEL que indica qual a condio de salto.Para este campo foi escolhido arbitrariamente que:

    00 - corresponde a um salto incondicional. A sada do multiplexador MUXStem sempre o valor 00, combinao que selecciona o campo

    damicro-instruo.

  • 9.4. UNIDADES LGICAS E ARITMTICAS 143

    CAR

    ROM deControlo

    MUXC

    0123

    MUXS

    3

    2

    Sel

    0inicio

    NZ

    +1

    01

    00

    1

    0

    destino

    reg Areg B

    Op ULA

    ES0

    ES1

    Sel

    SEL3 3

    33

    2

    52

    2

    2

    19

    fim

    2

    Figura 9.30: Unidade de controlo micro-programada para o mximo divisorcomum.

    01 - corresponde a no haver salto. O CAR simplesmente incrementado, por-que o MUXS apresenta sempre o valor 10 sada, o que leva a que a en-trada CAR+1 seja seleccionada no MUXC.

    10 - corresponde a testar a entrada de controlo

    . Quando

    =0 se-leccionado no MUXC a entrada

    e portanto d-se o salto. Se

    =1,o CAR incrementado.

    11 - corresponde a testar simultaneamente os bits de estado e . Se:

    , o salto feito para o endereo no campo

    .

    , o salto feito para o endereo no campo

    .

    , no h salto e o CAR simplesmente incrementado.

    , combinao impossvel.

    Falta agora definir o micro-programa que realiza o fluxograma da Figu-ra 9.29 (as posies sublinhadas indicam valores que so de facto indiferenas):

    Posio op reg reg reg

    ROM ES0 ES1 SEL

    ULA A B dest

    0: 00

    10 1

    001: 01 00 11 0 00001 01 10 012:

    01 0 00000 01 10 113:

    01 0 11000 10

    014: 01

    00 0 11000 11

    10

    Neste micro-programa existe uma correspondncia entre a posio de en-dereo da ROM de controlo e o ndice do estado

    do fluxograma. Assim:

    Posio 0: 1,

    : CAR 0,

    : CARCAR+1Neste estado a unidade de controlo est constantemente a carregar o CARcom 0 at que a entrada

    venha a 1, altura em que se deixa incre-mentar o CAR. Para isso, o campo SEL tem que ter o valor 10 de forma

  • 144 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS

    a permitir que o sinal

    passe no multiplexador MUXS para servir deseleco no MUXC. Enquanto

    for 0, o multiplexador MUXC selecci-ona a entrada 0, campo ES0 da micro-instruo que contm o endereo 0.Se

    vier a 1, ento a entrada 3 do MUXC que seleccionada. Nestaespera activa, a sada de controlo mantida a 1 e a unidade de pro-cessamento no faz nenhuma operao, o que se consegue especificandocomo registo destino um registo no existente, neste caso utilizou-se ondice 0.

    Posio 1: R1R1R2, : CAR0, : CAR1, : CAR CAR+1Aqui a ULA faz a subtraco entre R1 e R2, guardando-se o resultadoem R1. Caso o resultado seja 0, o algoritmo terminou e portanto carrega-se no CAR atravs do campo

    o endereo 0 para voltar ao incio (nomultiplexador MUXS seleccionada a entrada 3 e no MUXC a entrada 1).Enquanto o resultado for positivo (bit de estado

    ), a unidade decontrolo mantm-se no endereo 1 por carregamento do campo

    noCAR. Se o resultado for negativo, em vez da subtraco deve-se trocaros valores de R1 e R2, o que feito a partir do endereo 2, ou seja, porincremento do CAR. O teste que determina qual destes trs endereos se-guintes usado conseguido por SEL=11.

    Posio 2: R3R1

    R2, CARCAR+1Neste estado, colocado em R3 o valor que R1 tinha antes da subtraco,somando-lhe R2. O CAR simplesmente incrementado, o que se conseguefixando a entrada 1 do multiplexador MUXS.

    Posio 3: R1R2, CARCAR+1Aqui h uma simples transferncia entre registos, o valor de R2 copiadopara R1. Novamente incrementa-se o CAR.

    Posio 4: R2R3, CAR1Finalmente neste estado, efectua-se outra simples transferncia entre re-gistos, copiando-se o valor de R3 para R2. Executa-se um salto incon-dicional para o estado no endereo 1, o que se consegue seleccionando aentrada 0 domultiplexador MUXS, obrigando seleco do campo ES0 damicro-instruo.

  • Captulo 10

    Arquitectura de umComputador

    Embora um sistema digital para qualquer funo especfica possa ser conce-bido de raiz interligando registos e blocos funcionais, usando as tcnicas es-tudadas no Captulo 9, por razes de flexibilidade prefervel dispor de umsistema adaptvel e facilmente reprogramvel. Um computador exactamenteisso, um sistema digital cujo funcionamento especificado por um programaguardado em memria. Este captulo descreve de uma maneira resumida aevoluo dos computadores e a sua organizao interna.

    Um computador um sistema digital programvel atravs de uma sequn-cia de instrues guardadas em memria. Atravs desta sequncia de instru-es, o computador instrudo para executar operaes elementares de ma-nipulao de dados. Um elemento crucial num computador a sua unidadecentral de processamento, ou processador.

    O processador, em si mesmo, um sistema digital constitudo por um cir-cuito de dados e um circuito de controlo, tal como os sistemas estudados nocaptulo anterior. A sua flexibilidade resulta do facto de estes circuitos seremprojectados por forma a poderem executar todas as operaes bsicas de ma-nipulao de da