·

Engenharia de Software ·

Arquitetura de Computadores

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta

Texto de pré-visualização

Área Engenhar ia de Software UC Organização de Computadores e Sistemas Operacionais Aula 2 Os Motivadores Quais foram os impulsionadores que levaram à sistematização que precedeu a criação dos dispositivos computacionais modernos 1ª Geração Computadores com Válvulas 3 De 1943 a 1946 foi produzido o ENIAC 1º computador eletrônico e digital era programado manualmente 18000 válvulas Um anel de 10 válvulas representava um dígito 800 km de cabos 30 toneladas Realizava 10000 operações por segundo Desmontado em 1955 The Vacuum tube Histórico Componentes Eletrônicos Componentes mecânicos e eletromecânicos baixa velocidade de processamento mas alta confiabilidade dos resultados Exploração das válvulas dispositivos eletrônicos envoltos em vidro Capazes de representação binária Relativamente rápidos Relativamente pequenos para sua época 5 ENIAC O ENIAC consistia de 17480 tubos de vácuo operando a 100000 pulsos por Segundo Entrou em operação em 1946 Sem precedentes em relação aos dispositivos eletromecânicos até então existentes O mundo que se apresenta hoje nada mais é do que uma evolução do PósGuerra WW II Em termos gerais os tubos de vácuo exercem o mesmo papel que os transistores passaram a exercer e desta forma possibilitam a implementação de portas lógicas O impulso geracional seguinte à concepção do computador implementado com válvulas foi o advento do transistor que possibilitou uma dramática redução de custo espaço e velocidade Apenas para comparar o Pentium 4 no ano 2000 possuía 42000000 de transistores O Itanium 2 em 2004 592000000 de transistores A primeira geração do Core i7 partiu de 731 Milhões 7 Bilhões de portas lógicas é o comum no Core i9 CSIT 301 Blum 6 Primórdios da Programação CSIT 301 Blum 7 O UNIVAC foi o primeiro computador comercial de sucesso lançado em 1950 o UNIVAC II no final dos anos 50 e a IBM em 1953 com programa armazenado Em 1946 von Neumann e equipe começaram a desenvolver o computador IAS concluído em 1952 Mauchly Eckert e John von Neumann discutiram projetos para os computadores do futuro como o EDVAC no qual os programas seriam armazenados na memória do computador Um novo programa requeria uma nova arrumação da fiação Uma primeira limitação do ENIAC era a sua forma de programação com fios Os primeiros Programadores e Compiladores CSIT 301 Blum 8 Quem foi von Neumann John von Neumann era um consultor no projeto ENIAC A equipe discutia então a forma como os computadores eram programados Von Neumann difundiu e ajudou a popularizar estas ideias As instruções poderiam ser convertidas em números e colocadas em memória juntamente com os dados Este conceito é conhecido como stored program concept A combinação das unidades básicas ALU controle memória input e output e o conceito de stored program resultaram no que conhecemos hoje como von Neumann architecture CSIT 301 Blum 9 Harvard Architecture Na arquitetura de Von Neumann instruções e dados são mantidos na mesma memória Uma variação deste conceito é conhecido como Harvard architecture que mantém as instruções e dados em memórias separadas Uma variante contemporânea desta arquitetura é a manutenção de dados e instruções na mesma memória principal porém com distinção de cache no nível L1 a mais próxima do processador em que existe uma L1I e uma L1D CSIT 301 Blum 10 John von Neumann CSIT 301 Blum 11 2ª geração Computadores transistorizados Substituição das válvulas por transistores Mesma função Menor custo Maior desempenho Menor tamanho Primeiro transistor Bell em 1947 IBM começa a produzir máquinas científicas Prof José Couto Júnior 1 2 O princípio do transistor If a small current flows here it allows for a larger current to flow here Portas Lógicas O tijolo construtivo dos computadores são as portas lógicas A combinação de portas lógicas como veremos mais adiante permite criar máquinas de estado e implementar operações lógicas e aritméticas em hardware Portas lógicas são construídas em essência com dispositivos que assumem um de dois estados elétricos que chamamos de zero e um implementadas pelo transistor 14 Portas Lógicas e o Computador O software implementado a partir das instruções de máquina ao nível do assembly é uma evolução da ideia dos cartões perfurados que acabamos de ver ou seja como instruções em ROM Estes estados prédeterminados e prégravados é que aplicam as correntes aos transistores que implementam portas lógicas O software nada mais é portanto do que o hardware em movimento seguindo a cadência sequenciada por um relógio Em termos físicos o software é uma abstração que reflete ciclos de correntes elétricas atuando sobre dispositivos que se comportam como portas lógicas isto é transistores em mudanças de estado lógicoelétrico ditada pelo ritmo de um relógio 15 Tabela 12 As Gerações de Computadores 2016 Pearson Education Inc Hoboken NJ All rights reserved 3ª geração Computadores com circuitos integrados Necessidade acomodar mais e mais componentes eletrônicos em um único invólucro Surge a família 360 da IBM Memória e UCP CPU compartilhadas por vários programas Lançamento de programas que gerenciam o HW Prof José Couto Júnior 17 4ª Geração Computadores VLSI VLSI integração em muito larga escala Dispositivos eletrônicos capazes de armazenar milhares e até milhões de diminutos componentes chips Prof José Couto Júnior 1 8 Leitura Recomendada Capítulo 1 e Capítulo 2 STALLINGS Willian Arquitetura e Organização de Computadores projeto para o desempenho8edSão Paulo Pearson Pratice Hall 2010 Disponível na Biblioteca Virtual Person Gerações Posteriores LSI Large Scale Integration VLSI Very Large Scale Integration ULSI Ultra Large Scale Integration Semiconductor Memory Microprocessors 2016 Pearson Education Inc Hoboken NJ All rights reserved Memória em Semicondutor 2016 Pearson Education Inc Hoboken NJ All rights reserved Em 1970 a Fairchild produziu as primeiras memórias semicondutoras de capacidade relativamente elevada O Chip era cerca do mesmo tamanho de um único núcleo Podia armazenar 256 bits de memória Não destrututiva Mais rápida do que o núcleo magnético core Em 1974 o preço por bit da memória semicondutora caiu abaixo do preço por bit da memória core feita de anéis ferromagnéticos Desde então tem ocorrido um declínio constante nos preços da memória acompanhados do aumento da densidade correspondente Desenvolvimentos nas tecnologias de memória e processamento mudaram a forma dos computadores em menos de uma década Desde 1970 a memória semicondutora atravessou 13 gerações Cada geração apresentou quatro vezes a densidade de armazenamento em relação à geração anterior acompanhada por um declínio do custo por bit e do tempo de acesso Microprocessadores A densidade dos elementos em chips processadores continuou a aumentar Mais e mais elementos foram colocados em cada chip de tal forma que cada vez menos chips eram necessários para contruir um processador de computador único Em 1971 a Intel desenvolveu o 4004 Primeiro chip a conter todos os componentes de uma CPU em um único chip Marca o nascimento do microprocessador Em1972 a Intel desenvolveu o 8008 Primeiro microprocessador 8bit Em 1974 a Intel desenvolveu o 8080 Primeiro microprocessador de propósito geral Mais rápido com um conjunto de instruções rico uma grande capacidade relativa de endereçamento para a sua época 2016 Pearson Education Inc Hoboken NJ All rights reserved Evolução dos Microprocessadores Intel a 1970s Processors 2016 Pearson Education Inc Hoboken NJ All rights reserved Evolução dos Microprocessadores Intel b 1980s Processors 2016 Pearson Education Inc Hoboken NJ All rights reserved Evolução dos Microprocessadores Intel c 1990s Processors 2016 Pearson Education Inc Hoboken NJ All rights reserved Evolução dos Microprocessors Intel d Recent Processors 2016 Pearson Education Inc Hoboken NJ All rights reserved Outras referências para comparação Exemplo httpsversuscombrintelxeone78890v4vs intelxeonprocessore74880v2 Comparativo da Intel para processadores httpsarkintelcomProcessors A evolução da Arquitetura Intel x86 Duas famílias de processadores bastante populares são as arquiteturas Intel x86 CISC e ARM RISC Correntemente as ofertas x86 representam o resultado de décadas de esforço aplicado a projetos em torno dos denominados Complex Instruction Set Computers CISCs Uma alternativa ao projeto de processadores é o Reduced Instruction Set Computer RISC A arquitetura ARM é usada em uma ampla variedade de sistemas embarcados embedded systems e é um dos mais poderosos e melhor projetados sistemas RISC do Mercado Com o tempo ocorreu uma convergência entre o RISC e CISC Processadores x86 atuais incorporam aspectos importantes da arquitetura RISC Desta forma o critério de escolha em projetos hoje é da relação custobenefício consumo forma aplicabilidade capacidade em termos de desempenho e custo 2016 Pearson Education Inc Hoboken NJ All rights reserved Highlights da Evolução da linha Intel de Produtos 2016 Pearson Education Inc Hoboken NJ All rights reserved 8080 Primeiro microprocessador de propósito geral 8bit machine vida de dados 8 bit para memória Foi empregado no primeiro computador pessoal Z80 foi um concorrente famoso na época Motorola 6502 concorreu no Apple 8086 Um máquina mais poderosa 16bit Possui uma cache de instruções que faz o prefetches de algumas instruções antes de serem executadas A primeira aparição da arquitetura x86 O 8088 foi uma variante deste processador e foi usado no primeiro computador pessoal da IBM assegurando o sucesso da Intel 80286 Extensão do 8086 habililitando uma memória de 16 MB ao invés de apenas de 1MB 80386 Primeira máquina 32bits Primeiro processador da Intel a suportar multitasking 80486 Introduziu o uso de uma tecnologia de cache mais sofisticada e poderosa e um esquema de pipelining de instruções sofisticado Também oferecia um coprocessador matemático embutido Embedded Systems Interação com o mundo Real analógico 2016 Pearson Education Inc Hoboken NJ All rights reserved Roteiro da Apresentação 31 1 Apresentações 2 Ementa Plano de Aulas e Avaliações 3 Contextualização 4 A Evolução da Arquitetura de Computadores 5 A Arquitetura Básica e Seus Conceitos Essenciais Estrutura Função e Descrição Estrutura o modo como os componentes são interrelacionados Função a operação individual de cada componente como parte da estrutura Descrição A abordagem topdown de cima para baixo é reconhecidamente a mais eficaz Weinberg 1975 32 Arquitetura Estrutura e Função Sistema Hierárquico Conjunto de subsistemas interrelacionados A natureza hierárquica de sistemas complexos é essencial para o projeto e descrição O projetista necessita apenas lidar com um nível particular do Sistema por vez Abordagem concernente à estrutura e função em cada nível Estrutura A forma pela qual os componentes se relacionam uns com os outros Função A operação de componentes individuais como parte de uma estrutura 2016 Pearson Education Inc Hoboken NJ All rights reserved Função Há quatro funções básicas que um computador pode realizar Processamento de dados Dados podem tomar uma variedade de formas e a escala de processamento é extensa Armazenamento de Dados Curtoprazo Longoprazo Movimento de Dados Inputoutput IO quando os dados são recebidos ou enviados para um dispositivo periférico que está diretamente conectado ao computador Comunicação de Dados quando dados são movidos sobre longas distâncias depara um dispositivo remoto Controle Uma unidade de controle gerencia os recursos do computador e orquestra a performance de suas partes funcionas em resposta a instruções 2016 Pearson Education Inc Hoboken NJ All rights reserved Visão TopDown 2016 Pearson Education Inc Hoboken NJ All rights reserved Elementos Computacionais Fundamentais 2016 Pearson Education Inc Hoboken NJ All rights reserved Circuitos Integrados Um computador consiste de portas células de memória e interconexões entre este elementos As portas e células de memória são construídas a partir de componentes digitais simples Armazenamento de Dados fornecido por células de memória Processamento de Dados fornecido por portas Movimento de Dados os caminhos entre componentes são usados para mover dados de memória a memória e de memória através de portas até memória Controle as vias entre componentes pode transportar sinais Tais componentes como transistores resistores e condutores podem ser fabricados a partir de um semiconductor de silício Muitos transistores podem ser produzidos ao mesmo tempo em um simples wafer de silício Transistores podem ser conectados por metalização com um processador de forma a criar circuitos 2016 Pearson Education Inc Hoboken NJ All rights reserved 2016 Pearson Education Inc Hoboken NJ All rights reserved Wafer Chip e Gate 2016 Pearson Education Inc Hoboken NJ All rights reserved Estrutura de Computador Multicore Central processing unit CPU Parte do computador que faz os fetches e executa instruções Consiste de uma ALU a control unit e registradores Referenciada como um processador em um Sistema composto por apenas uma unidade de processamento Core Uma unidade individual de processamento em um chip processador Pode ser entendido como equivalente em funcionalidade a uma CPU em Sistemas uniCPU Unidades especializadas de processamento podem também ser referenciadas como Cores Processador Um peça física de silício contendo um ou mais cores núcleos É o componente de computador que interpreta e executa instruções Referenciado como um multicore processor se contém múltiplos cores 2016 Pearson Education Inc Hoboken NJ All rights reserved Memória Cache É bem mais rápida porém menor que a memória principal Funciona como uma memória recente e fica próxima ao processador São implementadas múltiplas camadas de memória entre o processador e a memória principal Usada para acelerar o acesso de memória ao colocar na cache dados da memória principal que possuem elevada probabilidade de serem utilizados proximamente Um maior desempenho em termos de performance pode ser obtido usando vários níveis de cache com o nível 1 L1 mais perto do core e níveis adicionais L2 L3 etc progressivamente distantes do núcleo core Várias técnicas de predição e otimização são utilizadas a fim de tirar o máximo proveito do desempenho da memória cache 2016 Pearson Education Inc Hoboken NJ All rights reserved 2016 Pearson Education Inc Hoboken NJ All rights reserved Elementos Principais de um Computador MultiCore Figura 14 zEnterprise EC12 Processor Unit PU Chip Diagram 2016 Pearson Education Inc Hoboken NJ All rights reserved Representação Esquemática da Arquitetura de Von Neumann com barramento 44 Arquitetura de Von Neumann com os registradores 45 Arquitetura de Von Neumann com os registradores 46 MDR também é chamado de MBR Registradores 2016 Pearson Education Inc Hoboken NJ All rights reserved Contém uma palavra a ser armazenada na memória ou enviada para a unidade de IO Ou usada para receber palabras word da memória ou da unidade de IO Memory buffer register MBR Especifica o endereço de memória da palavra esccrita ou lida da MBR Memory address register MAR Contém a instrução nbit opcode para execução Instruction register IR Contém o endereço da próxima instrução a ser buscada fetched em memória Program counter PC Empregado para guardar temporariamente operandos e resultados das operações da ALU Accumulator AC Arithmetic Logic Unit ALU Muitas das atividades internas no computador dizem respeito à movimentação de dados A computação propriamente dita a manipulação de dados que gera novos dados ocorre na ALU Considerando que os dados são representados na forma binária 1s e 0s decorre que a ALU é basicamente composta por portas lógicas logic gates São construídas sobre lógica combinatória Em português ULA ou unidade lógica aritmética CSIT 301 Blum 48 ALU Registradores e Acumuladores Além da lógica combinatória a ALU possui componentes sequenciais e que podem armazenar informação temporária Estas unidades de armazenamento são conhecidas como registradores Os registradores primários associados a uma ALU são denominados acumuladores CSIT 301 Blum 49 ALU e Controle Control Unit O Controle determina que ação deve ser realizada sobre qual dado Se a ação envolver um cálculo então o controle enviará os dados necessários para a ALU e a informará acerca da ação a ser realizada bem como o direcionamento do resultado de saída CSIT 301 Blum 51 Controle Todas as demais unidades de um computador possuem entradas de controle que determinam se estão ativas e qual ação devem efetuar A ação de controle é realizada no nível mais baixo ativando as entradas de controle com sinais de high e low ativando ou desativando Dizse que um dispositivo é active high quando é ativado com entrada de controle em nível alto Por outro lado podese determinar que o dispositivo seja ativo com nível sinal de entrada baixo active low CSIT 301 Blum 52 O Controle está descrito em ROM Em alto nível as instruções são organizadas dinamicamente Em baixo nível as instruções que regem o funcionamento essencial do computador são fixas Sequências de controle são aplicadas em Read Only Memory ROM ou EPROMs as quais raramente são reprogramadas eg quando é preciso realizer um Upgrade de Firmware CSIT 301 Blum 53 Memória DRAM Memórias RAM consistem de circuitos cuja função primária é armazenar informação temporariamente Memórias armazenam os dados sobre os quais o processador atua escrevendo sobresrevendo apagando e movendo Para este tipo de memória massiva utilizamos a terminologia RAM Random Access Memory CSIT 301 Blum 54 CSIT 301 Blum 55 Memória Endereço Valor 0000 10010100 0001 01010010 0010 00101100 0011 01011100 0100 01100110 Memória é um conjunto de células de registro às quais são atribuídos endereços CSIT 301 Blum 56 Random Access Acesso Aleatório Os dados de qualquer célula de armazenamento podem ser acessados prontamente a partir da apresentação de um endereçamento para fins de leitura e escrita Desta forma qualquer local aleatório random pode ser acessado de imediato Outro tipo de memória são as de tipo sequenciais nas quais devese passar por todos os locais de dados anteriormente endereçados antes de alcançar a posição desejada Exemplos estruturas como Pilhas e FIFOs InputOutput IO EntradaSaída ES A unidade de entrada permite que programas e dados sejam inseridos no computador A unidade de saída permite que os resultados do processamento sejam exportados para for a do computador outros dispositivos ou meios de comunicação Um hard drive possui tanto Input como Outrut CSIT 301 Blum 57 One Bus Two Buses Em inglês Bus em português barramento Via de Dados Na arquitetura simplificada conceitual aqui exemplificada existe apenas um barramento O barramento neste caso pode ser usado tanto para dados como para endereços multiplexado Isto torna o acesso à memória um processo de duas etapas lidar com endereços e depois dados Lidar com memória é sempre um processo em duas etapas mas nesta arquitetura o único barramento existente é associado aos dois passos sem paralelismo Usualmente as arquiteturas possuem um barramento de endereços e outro de dados 58 CSIT 301 Blum Elementos da Arquitetura Computadores 59 Portas de Entrada Exemplo um codificador de teclado converte as telas pressionadas no string correspondente de bits ASCII Input port 1 entrada dos dados de teclado usualmente contém memória um buffer onde os dados são mantidos até que o processador esteja habilitado para lêlos Input port 2 outros dados de entrada Porta é um termo que se aplica tanto a protocolos como o TCP ou UDP como a elementos físicos e que são endereçáveis CSIT 301 Blum 60 Program counter PC O program counter aponta para a linha corrente do programa armazenado em memória Observe que a seta que conecta o Program Counter com o bus é bidirecional Isto se deve à necessidade do PC poder requerer alterações para acomodar modificações que permitam executar Condicionais If Loops Saltos Subrotinas funções etc CSIT 301 Blum 61 MAR MDR e Memória MAR Memory Address Register contém o endereço de memória que está sendo lido ou escrito Não necessariamente o program counter Memory RAM local onde os dados e instruções estão armazenados MDR Memory Data Register contém o dado que está sendo lido ou escrito na memória Conexão bidirecional ao barramento bus para leitura e escrita CSIT 301 Blum 62 Instruction Register Instruction register contém a instrução que está correntemente em execução Uma dada linha de código assembly ou código de máquina envolve várias instruções de microcódigo e o instruction register mantém a instrução até que os passos da microinstrução sejam completados Exerce um papel análogo ao MAR mas aplicado à ROM ao invés da RAM CSIT 301 Blum 63 ControladorSequenciador Executa o programa ao nível mais baixo Envia sinais aos pinos de controle de todos os dispositivos envolvidos Estas instruções em nível mais baixo estão em ROM Cada instrução no nível assembly possui uma contraparte numérica machine language a contraparte numérica é o endereço do microcódigo daquela instrução armazenada em ROM CSIT 301 Blum 64 Acumulador e a ALU Acumulador registrador utilizado em conjunção com a ALU Dados sobre os quais as operações lógicas e aritméticas irão eventualmente ser efetivadas serão armazenadas aqui assim como os seus resultados ALU Arithmetic Logic Unit onde operações que modificam os dados são realizadas CSIT 301 Blum 65 Flags Flags são saídas da ALU distintas dos dados eg data output vai para o Acc A Por exemplo Um carry de uma adição Uma indicação de overflow Necessário para controle de programa ou para indicar erros Um resultado de comparação lógica São necessários para o controle ifs loops etc CSIT 301 Blum 66 Hierarquia de um armazenador de bits O circuito eletrônico que armazena um bit único 0 ou 1 é chamado de flipflop Um conjunto de flipflops 8 6 32 etc é chamados de registrador Um Contador é um tipo de registrador que armazena valores binários e também pode incrementálos Um shift register pode armazenar um número e também deslocálo shift 00101101 01011010 10110100 etc Um conjunto de registradores que pode ser endereçado selecionado a fim de acessar um registro em particular é denominado memória CSIT 301 Blum 67 Vamos revisitar PC MAR MBR Registrador interno D0 IR ALU CU e Memória Todos juntos 68 Fetch Cycle Address State o valor do program counter linha de endereço do programa a ser executada é colocada no memory address register MAR Increment State o program counter é incrementado tornandose pronto ready para o próximo ciclo Memory State a linha corrente do programa é colocada no instruction register e o Controle então sabe o que fazer em seguida ciclo de execução CSIT 301 Blum 69 Portas de Saída Output Ports Output port é a conexão com o mundo externo Usualmente inclui buffers Envolve circuitos e controladores especializados ou outros dispositivos computacionais a fim de realizar uma determinada tarefa display em vídeo comunicação com e sem fio armazenamento externo etc CSIT 301 Blum 70 Microcódigo O que é mantido em memória é uma instrução em baixo nível assembly ou código de máquina escrita diretamente ou como resultado de uma compilação de uma linguagem de alto nível Em um nível ainda mais baixo não visível ao programador assembly reside o microcódigo que é traduzido em sinais de controle que alimentam diretamente o hardware acionando uma sequência lógica A sequência lógica compreende transições de relógio e sinais de entrada e saída em uma estrutura composta por elementos da lógica digital portas lógicas e sua combinação CSIT 301 Blum 71 Microcódigo Toda instrução em alto nível incluindo o assembly em última instância é convertida em um nível ainda mais baixo pelo controle ou seja aquele que atua com sinais temporizados Um instrução em linguagem de máquina tal como Load Accumulator A consiste em realidade em várias instruções de microcódigo A grosso modo podemos dizer que estes microcódigos são sequências de sinais que alimentam um conjunto de flipflops e a lógica combinatória associada a interligados sincronizados e cadenciados pelo relógio o clock CSIT 301 Blum 72 Onde fica armazenado o microcódigo Primordialmente era costurado em hardware por fiação wired como no ENIAC O termo wired deu então origem ao hard wired Tipicamente armazenado em ROM Eventualmente o código é armazenado em um tipo de EEPROM que pode ser alterada microprogramming EEPROM Electrically Erasable Programmable ROM Também às vezes referenciada como firmware a rigor um intermediáro entre o software e o hardware CSIT 301 Blum 73 Linguagem de Máquina A Linguagem de Máquina reside um nível acima do microcódigo As instruções são números os quais são endereços do microcódigo em ROM A Linguagem de Máquina é dependente da implementaçao de uma dada máquina As localizações na ROM do microcódigo assim como formato de instruções são assim específicas de cada máquina Uma versão mnemônica da linguagem de máquina é denominada assembly language 74 Histórico George Boole filósofo e matemático inglês do século XIX Inventou uma lógica para raciocínio lógico de proposições Em 1932 Shannon descobriu a aplicação desta álgebra nos circuitos lógicos 75 George Boole Álgebra de Boole 76 Presente em Implementação de circuitos digitais e Desenvolvimento de códigos computacionais Variável lógica ou booleana Aceso ou apagado Ligado ou Desligado 1 ou 0 Aberto ou fechado Verdadeiro ou falso Representação Uma função lógica pode ser representada por Expressão algébrica FAB A and B Tabela verdade Símbolo ou circuito lógico 77 A B X 0 0 0 0 1 0 1 0 0 1 1 1 Tabela verdade Circuito lógico Funções primitivas 7 8 Produto lógico ou AND Soma lógica ou OR Negação ou NOT Função AND Produto lógico F ABCN ABCN F ABCN 1 se e somente se ABCN1 79 A B F 0 0 0 0 1 0 1 0 0 1 1 1 Tabela verdade Circuito lógico Função OR Outra Analogia Soma lógica F ABCN ABCN F ABCN 1 se e somente se A1 ou B1 ou C1 ou N1 80 A B F 0 0 0 0 1 1 1 0 1 1 1 1 Tabela verdade Circuito lógico A F B Função NOT LigaDesliga Negação F A A F A A 81 A F 0 1 1 0 A F Tabela verdade Circuito lógico Outras funções lógicas 8 2 NAND NOR OR Exclusivo XOR Função NAND NOT AND F ABCN ABCN F ABCN 0 se e somente se ABCN1 83 B A F A B F 0 0 1 0 1 1 1 0 1 1 1 0 Tabela verdade Circuito lógico Função NOR NOT OR F ABCN ABC N F ABCN 1 se e somente se ABCN0 84 B A F A B F 0 0 1 0 1 0 1 0 0 1 1 0 Tabela verdade Circuito lógico Função XOR OR exclusivo F AB A B F AB 1 se e somente se A B F AB 1 se A 0 e B 1 ou se A 1 e B 0 F AB AB AB 85 B A X A B X 0 0 0 0 1 1 1 0 1 1 1 0 Tabela verdade O XOR é um comparador A saída é verdadeira se e somente se as duas entradas são diferentes 86 Escrevendo o XOR usando andornot p q p q p q x y x yxy x y xy 1 1 0 1 0 1 0 1 1 0 0 0 x y xy xy xy xyxy Uma primeira utilidade 8 7 Como fazemos para somar dois números binários 11 10 10 01 01 01 00 00 Considere o bit menos significante qual é a lógica sugerida aqui 88 Como somar dois números binários Considere a adição de dois números de 1bit x e y 00 0 01 1 10 1 11 10 Carry x AND y Soma x XOR y O circuito que faz esta computação é chamado halfadder x y Carry Sum 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 89 O halfadder Soma x XOR y Carry x AND y x y Sum Carry x y Sum Carry x y Carry Sum 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 90 Usando half adders Podemos usar o halfadder para computar a soma de dois números booleanos 1 1 0 0 1 1 1 0 0 1 0 1 0 0 91 Como completar o circuito Full Adder Criar um adder que agregue o carry bit como entrada adicional Inputs x y carry in Outputs sum carry out Chamado de full adder Adiciona x e y com o halfadder Adiciona a soma com o carry in Sobre carry out 1 se xy 10 xy 01 e carry in 1 x y c carry sum 1 1 1 1 1 1 1 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 92 HA X Y S C HA X Y S C x y c c s HA X Y S C HA X Y S C x y c O Full Adder As caixas HA são halfadders x y c s1 c1 carry sum 1 1 1 0 1 1 1 1 1 0 0 1 1 0 1 0 1 1 0 1 0 1 0 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 s1 c1 93 Full adder O circuito completo de full adder x y s c c 94 Adicionando números maiores nbit Basta encadear e juntar os full adders HA X Y S C FA C Y X S C FA C Y X S C FA C Y X S C x1 y1 x2 y2 x3 y3 x0 y0 s0 s1 s2 s3 c Adicionando números ainda maiores Um half adder possui 4 portas lógicas Um full adder possui dois half adders e um OR gate Total de 9 portas lógicas Para adicionar números n bit é necessário 1 HA e n1 FAs Para adicionar números de 32 bits é necessário 1 HA e 31 FAs Total de 4931 283 portas lógicas Para adicionar números de 64 bits é preciso 1 HA e 63 FAs Total de 4963 571 portas lógicas 95 96 Sobre Portas Lógicas A implementação prática de portas lógicas requer o uso de transistores Transistores são encapsulados em ICs ou circuitos integrados Um processador típico pode conter centenas de milhões de transistores O que vimos até o momento 9 7 Uma revisão da álgebra booleana Como transformar equações lógicas em circuitos Criamos um circuito somador Um somador é uma dentre milhares de funções que um processador deve executar Podemos dizer que a ALU Arithmetic Logic Unit é composta por um grande número de circuitos digitais que realizam funções análogas às do somador Quais Somadores Multiplicadores Divisores Comparadores Codificadores Decodificadores Timers Árbitros Armazenadores Multiplexadores Demultiplexadores Imaginando os circuitos no interior do processador 98 ALU CONTROLE É simples Use o circuito somador e uma propriedade da aritmética binária Como construir a subtração 99 Para ver como pode ser implementada a expressão x y podemos computar alternativamente a expressão x y Da aritmética binária sabese que para negar um número aplicase a regra de inverter todos os bits e somar 1 Desta forma a expressão pode ser computada mais simplesmente como x invy 1 Sendo assim é suficiente inverter todas as entradas do segundo operando e implementar o somador de 1 Será que funciona Exemplo 128 15 Em binário 128 é 0 1000 0000 Em binário 15 é 0 0000 1111 Aplicando a regra da inversão teremos 1 1111 0000 Agora façamos a soma de 1 O valor 15 nos dá 1 1111 0001 Somemos agora para ver quanto dá 0 1000 0000 1 1111 0001 0 0111 0001 O que nos dá em decimal O valor de 113 Multiplicadores 101 httpwwwelectronicshuborgbinarymultiplication E os divisores Este já é um pouco mais complexo de implementar Building Blocks 103 Vimos até agora alguns dos principais blocos construtores que podem ser implementados com portas lógicas são eles Somadores Subtradores Multiplicadores Deslocadores Codificadores Decodificadores Contadores Priorizadores Armazenadores ie registradores Divisores e Multiplexadores Com base nestes blocos é que é possível construir a inteligência implementada na ALU e a lógica de Controle da CPU por meio de máquinas de estado sequenciais e lógica combinatória encadeadas e entrelaçadas Building Blocks 1 0 4 Estas sequências de operações serão regidas por sinais elétricos com um de dois valores representando 0 ou 1 estados da lógica booleana que em última instância estão gravados no microcódigo ROM Este código em ROM que nada mais é do que uma extensa sequência de estados representados por 0 ou 1 dita a sequência rígida hard de operações da máquina de estados Este é o firmware O programador poderá interferir nestas sequências por meio do código assembly linguagem de máquina que reflete uma sequência de microcódigos série de números binários em execução e que alteram as sequências de execução a fim de executar uma determinada tarefa Os microcódigos atuam alimentando sinais de entrada diretamente em portas lógicas as manivelas do sistema