Baixe o app para aproveitar ainda mais
Prévia do material em texto
Apostila sobre Organização e Arquitetura de Computadores Autor: Eder Santana Freire Versão 1.3 Apresentação A idéia de preparar uma apostila que abordasse o tema de Organização e Arquitetura de Computadores surgiu ainda durante a graduação, mas foi durante a realização de uma pós-graduação nesta área que pude compilar os tópicos de maior interesse dentro desta área, com o objetivo e de ajudar outras pessoas em busca de conhecimento, além de me ajudar a fixar e aprofundar os conhecimentos na área. Esta apostila está estruturada em tópicos e sub-tópicos, retirados de livros, notas de aula e outras fontes na Internet, e fornecem o conhecimento básico necessário ao entendimento da operação do hardware dos computadores digitais. A sua leitura é bem objetiva e simples, e procurou-se abordar os temas de forma bastante direta, de modo a facilitar uma rápida consulta por parte do leitor. Deve-se salientar que o objetivo desta apostila é transmitir a idéia geral por trás do tema, e não um conhecimento aprofundado a respeito dos tópicos cobertos. Portanto, o texto aqui apresentado serve como ponto de partida para quem se interessar pelo assunto, cujo conhecimento adquirido não só pode, como deve ser aprofundado por meio de livros e de outras fontes. Este arquivo PDF é de livre distribuição, impressão, cópia e reprodução, desde que respeitados os créditos para o autor. O mesma pode ser baixado originalmente em: www.ederfreire.tk, onde também pode ser encontrado o meu currículo, além de trabalhos futuros. A sua comercialização, em todo ou em parte, é proibida de todas as formas devendo neste caso o autor ser contactado imediatamente através do e-mail ederfreire@gmail.com. Críticas, sugestões e avisos de erros também podem ser enviados para este endereço. Sobre o autor: Eder Freire é bacharel em Engenharia de Computação pela Universidade Estadual de Feira de Santana (Bahia), onde adquiriu interesse pela área de Arquitetura de Computadores e Sistemas Digitais. Desenvolveu o seu trabalho de conclusão de curso baseado na arquitetura do sistema computacional Atari 2600, vídeo-game de grande sucesso nos anos 1980. Foi selecionado como bolsista no Programa CI Brasil, do CNPq / Governo Federal, tendo concluído com sucesso a pós-graduação em Projeto de Circuitos Integrados, com ênfase em Sistemas Digitais, no Centro de Treinamento 2, localizado no Centro de Tecnologia da Informação Renato Archer (Campinas-SP). Atualmente é bolsista do CI BRASIL / CNPq em uma Design House em Salvador, e mestrando em Mecatrônica / Sistemas Computacionais pela Universidade Federal da Bahia – UFBA. Índice Introdução ........................................................................................................................................................ 5 1. Circuitos Lógicos Digitais ............................................................................................................................ 6 1.2 Organização, Projeto e Arquitetura de Computadores ........................................................................ 7 1.3 Portas Lógicas ........................................................................................................................................ 7 1.4 Álgebra Booleana ................................................................................................................................. 10 1.4.1 Identidades básicas da Álgebra Booleana ............................................................................................ 11 1.4.2 Teorema de De-Morgan ....................................................................................................................... 11 1.4.3 Complemento de uma função .............................................................................................................. 12 1.5 Simplificação por Mapas de Karnaugh ............................................................................................... 13 1.5.1 Mapas de Variáveis ............................................................................................................................. 13 1.5.2 Simplificação por Soma-de-Produtos .................................................................................................. 14 1.5.3 Simplificação por Produto-das-Somas ................................................................................................. 15 1.5.4 Condições Irrelevantes (don't care) ..................................................................................................... 17 1.6 Circuitos Combinacionais .................................................................................................................... 18 1.6.1 Meio-Somador .................................................................................................................................... 18 1.6.2 Somador Completo ............................................................................................................................. 19 1.6.3 Flip-Flops ........................................................................................................................................... 19 1.7 Circuitos Seqüenciais ........................................................................................................................... 23 1.7.1 Procedimento para o Projeto de Circuitos Seqüenciais ......................................................................... 24 2. Circuitos Integrados .................................................................................................................................. 25 2.1 Circuitos Integrados ............................................................................................................................ 25 2.2 Decodificadores .................................................................................................................................... 26 2.3 Codificadores ....................................................................................................................................... 29 2.4 Multiplexadores ................................................................................................................................... 29 2.5 Registradores ....................................................................................................................................... 30 2.6 Registradores de Deslocamento ........................................................................................................... 31 2.7 Contadores Binários ............................................................................................................................ 32 2.8 Unidade de Memória ........................................................................................................................... 32 2.8.1 Memória de Acesso Aleatório (Random Access Memory – RAM) ........................................................ 33 2.8.2 Memória Somente-Leitura (Read-Only Memory – ROM) .................................................................... 33 3. Unidade Central de Processamento ........................................................................................................... 35 3.1 A CPU ................................................................................................................................................... 35 3.2 Organização Geral dos Registradores ................................................................................................. 35 3.2.1 Organização da Pilha .......................................................................................................................... 39 3.2.2 Pilha da Memória ................................................................................................................................40 3.2.3 Formatos de Instrução ......................................................................................................................... 41 3.2.4 Modos de Endereçamento ................................................................................................................... 43 3.3 Manipulação e Transferência de Dados .............................................................................................. 44 3.3.1 Instruções de Transferência de Dados .................................................................................................. 45 3.3.2 Instruções de Manipulação de Dados ................................................................................................... 46 3.3.3 Instruções Lógicas e de Manipulação de Bits ....................................................................................... 47 3.3.4 Instruções de Deslocamento ................................................................................................................ 48 3.4 Controle de Programa ......................................................................................................................... 49 3.4.1 Condições de Bits de Estado ............................................................................................................... 50 3.4.2 Instruções de Desvio Condicional ....................................................................................................... 50 3.4.3 Tipos de Interrupção ........................................................................................................................... 51 3.5 RISC (Reduced Instruction Set Computer) ........................................................................................... 52 4. Organização de Entrada e Saída ............................................................................................................... 53 4.1 Dispositivos Periféricos ........................................................................................................................ 53 4.2 Caracteres Alfanuméricos ASCII ........................................................................................................ 56 4.3 Interface de Entrada e Saída ............................................................................................................... 58 4.3.1 Módulos de Barramento de E/S e Interface .......................................................................................... 59 4.3.2 E/S versus Barramento de Memória .................................................................................................... 61 4.3.3 E/S Isolada versus Mapeada na Memória ............................................................................................ 61 4.3.4 Exemplo de Uma Interface de E/S ....................................................................................................... 62 4.4 Transferência de Dados ....................................................................................................................... 63 4.4.1 Transferência Síncrona ........................................................................................................................ 63 4.4.3 Controle por Strobe ............................................................................................................................. 64 4.4.4 Handshaking ....................................................................................................................................... 66 4.4.5 Transmissão Serial e Paralela .............................................................................................................. 69 4.4.6 Interface de Comunicação Assíncrona ................................................................................................. 71 4.4.7 Buffer First In First Out – FIFO.......................................................................................................... 72 4.5 Modos de Transferência ....................................................................................................................... 74 4.5.1 Exemplo de E/S Programada ............................................................................................................... 75 4.5.2 E/S Iniciada por Interrupção ................................................................................................................ 76 4.6 Interrupção por Prioridade ................................................................................................................. 76 4.6.1 Prioridade por Daisy Chaining ............................................................................................................ 77 4.6.2 Interrupção por Prioridade Paralela ..................................................................................................... 78 4.6.3 Codificador de Prioridade ................................................................................................................... 81 4.6.4 Ciclo de Interrupção ............................................................................................................................ 81 4.6.5 Rotinas de Software ............................................................................................................................ 82 4.6.6 Operação Inicial e Final ...................................................................................................................... 84 4.7 Acesso Direto à Memória ..................................................................................................................... 84 4.7.1 Controlador DMA ............................................................................................................................... 85 4.7.2 Transferência por DMA ...................................................................................................................... 87 4.8 Processador de Entrada e Saída .......................................................................................................... 89 4.8.1 Comunicação CPU – IOP .................................................................................................................... 90 4.9 Comunicação Serial ........................................................................................................................ 92 4.9.1 Protocolo Orientado a Caracteres ........................................................................................................ 93 4.9.2 Exemplo de Transmissão ..................................................................................................................... 94 5. Organização da Memória .......................................................................................................................... 96 5.1 Memória principal ............................................................................................................................... 96 5.1.1 Chips ROM e RAM ............................................................................................................................ 97 5.1.2 Mapa de Endereços de Memória ......................................................................................................... 99 5.1.3 Conexão da Memória com a CPU ....................................................................................................... 99 5.2 Memória Associativa .......................................................................................................................... 101 5.2.1 Organização do Hardware ................................................................................................................. 102 5.3 Memória Cache .................................................................................................................................. 102 5.3.1 Mapeamento Associativo ..................................................................................................................103 5.3.2 Mapeamento Direto .......................................................................................................................... 103 5.4 Memória Virtual ................................................................................................................................ 105 5.4.1 Espaço de Endereço e Espaço de Memória ........................................................................................ 105 5.4.2 Tabela de Páginas da Memória Associativa ........................................................................................ 106 5.4.3 Substituição de Páginas ..................................................................................................................... 107 Exercícios ...................................................................................................................................................... 111 Seção I ....................................................................................................................................................... 111 Seção II ..................................................................................................................................................... 113 Seção III .................................................................................................................................................... 114 Bibliografia ................................................................................................................................................... 116 Organização e Arquitetura de Computadores Eder Santana Freire 5 Introdução Todos sabemos que os computadores se tornaram parte da vida rotineira. O trabalho inteligente que eles executam com uma dada instrução vale à pena a sua exploração. À primeira vista, uma questão comum que surge quando começamos a estudar o funcionamento dos computadores é: “que tipo de processo está acontecendo dentro de um computador quando lhe damos uma instrução ou comando? o que acontece dentro dele?” É isto que vai ser explorado nesta apostila. Como o tema abordado é Organização e Arquitetura de Computadores, deve-se primeiramente diferenciar os termos organização e arquitetura. A Organização de Computadores está focada na forma com que os componentes de hardware estão interconectados para formar um sistema computacional. A Arquitetura de Computadores preocupa-se com a estrutura e comportamento dos vários módulos funcionais de um computador, e como eles interagem para atender às necessidades de processamento do usuário. Primeiramente, serão abordados os circuitos lógicos digitais, com a idéia de um computador básico, introdução às portas lógicas e suas características, álgebra booleana, simplificação por mapas, e circuitos combinacionais e seqüenciais. Em seguida, a apostila trata dos circuitos integrados, como codificadores, decodificadores, registradores, registradores de deslocamento e unidades de memória. Posteriormente, é abordada a unidade central de processamento, com a organização interna dos seus registradores, instruções, transferência e manipulação de dados, controle de programa e arquiteturas RISC. A organização do sistema de entrada e saída é também discutida, citando dispositivos periféricos, interfaces, modos de transferência de dados, interrupções, acesso direto à memória, processador de E/S, comunicação serial e paralela, entre outros. Por fim, o texto trata da organização de memória, que abrange a memória principal, memórias auxiliares, cache e seus tipos, e a memória virtual, com algoritmos de substituição de páginas. A apostila ainda conta com alguns exercícios, que servem como recurso para fixação do aprendizado. Organização e Arquitetura de Computadores Eder Santana Freire 6 1. Circuitos Lógicos Digitais Este capítulo introduz o conceito fundamental para o projeto de sistemas digitais construídos a partir de portas lógicas individuais e flip-flops. O mesmo cobre álgebra booleana, e circuitos combinacionais e seqüenciais. Assim, é fornecida a base necessária para compreensão dos circuitos digitais a serem apresentados. 1.1 Computadores Digitais • Computadores digitais usam o sistema numérico binário, o qual possui dois dígitos, 0 e 1. • Um dígito binário é chamado de bit (BInary digiT). • Bits podem ser agrupados em bytes (8 bits) ou palavras (vários bytes), para formar determinado tipo de representação compreendido pelo computador. • Uma seqüência de instruções para o computador é conhecida como um programa. O diagrama de blocos de um computador digital básico é demonstrado na figura 1, e é baseado na arquitetura proposta por John Von Neumann: Figura 1: Diagrama de um computador básico O hardware do computador normalmente é dividido em três partes principais: • A Unidade Central de Processamento (do inglês Central Processing Unit – CPU), que contém uma unidade lógico-aritmética para manipulação de dados, um número de registradores para manipulação de dados, e circuitos de controle para a coleta e execução de instruções. • A memória de um computador contém armazenamento para instruções e dados, e é chamada de Memória de Acesso Aleatório (Random Access Memory – RAM). A CPU pode acessar qualquer local de forma aleatória na memória, e recuperar a informação binária em um intervalo fixo de tempo. • O processador de entrada e saída contém circuitos eletrônicos para comunicação e controle da transferência de informações entre o computador e o mundo externo. Organização e Arquitetura de Computadores Eder Santana Freire 7 • Os dispositivos de entrada e saída conectados ao computador incluem teclado, mouse, impressoras, terminais, discos magnéticos e outros dispositivos de comunicação. 1.2 Organização, Projeto e Arquitetura de Computadores • A organização de computadores está envolvida com a forma com o que o hardware do computador opera e a forma com o que os seus dispositivos são interconectados para formar o sistema computacional. Supõe-se que os vários componentes estão nos seus devidos lugares, e a tarefa é investigar a estrutura organizacional a fim de se verificar que as partes do computador operam conforme deveriam. • O projeto de computadores está envolvido com o projeto do hardware de um computador propriamente dito. Uma vez que a especificação do computador é formulada, é tarefa do projetista desenvolver o hardware para o sistema. O projeto de computadores está preocupado com a determinação de qual componente de hardware deve ser utilizado, e como as suas partes devem ser conectadas. Este aspecto do hardware de computadores é algumas vezes chamado de implementação de computadores. • A arquitetura de computadores está direcionada à estrutura e comportamento do computador conforme a visão do seu usuário. Ela inclui os formatos da informação, o conjunto de instruções e técnicas para endereçamento da memória. 1.3 Portas Lógicas • As informações binárias são representadas em computadores digitais por meio de sinais elétricos. • Estes sinais podem ser representados pela tensão, que vai especificar um estado, de dois possíveis. Por exemplo, se um fio contém um sinal de 3 volts, considera-se que o mesmo representa o valor digital 1. • Da mesma forma, se o fio contém 1.5 volts, então este representa o valor digital 0. • A manipulação de informação binária em um computador é feita por meio de circuitos lógicos, chamados portas. As portas são: E (AND) • A porta AND combina dois ou mais sinais de entrada de forma equivalente a um circuito em série, para produzir um único sinal desaída, ou seja, ela produz uma saída 1, se todos os sinais de entrada forem 1; caso qualquer um dos sinais de entrada for 0, a porta AND produzirá um sinal de saída igual a zero. Organização e Arquitetura de Computadores Eder Santana Freire 8 Figura 2: Porta AND OU (OR) • A porta OR combina dois ou mais sinais de entrada de forma equivalente a um circuito em paralelo, para produzir um único sinal de saída, ou seja, ela produz uma saída 1, se qualquer um dos sinais de entrada for igual a 1; a porta OR produzirá um sinal de saída igual a zero apenas se todos os sinais de entrada forem 0. Figura 3: Porta OR Porta Não (Inversor, NOT) • A porta NOT inverte o sinal de entrada (executa a NEGAÇÃO do sinal de entrada), ou seja, se o sinal de entrada for 0 ela produz uma saída 1, se a entrada for 1 ela produz uma saída 0. Figura 4: Inversor Buffer • O buffer funciona como um circuito temporário para armazenamento de uma variável lógica, não modificando o seu valor inicial. Organização e Arquitetura de Computadores Eder Santana Freire 9 Figura 5: Buffer “Não-E” (NAND) • A porta NAND equivale a uma porta AND seguida por uma porta NOT, isto é, ela produz uma saída que é o inverso da saída produzida pela porta AND. Figura 6: Porta NAND “Não-OU” (NOR) • A porta NOR equivale a uma porta OR seguida por uma porta NOT, isto é, ela produz uma saída que é o inverso da saída produzida pela porta OR. Figura 7: Porta NOR OU Exclusivo (XOR) • A porta XOR compara os bits; ela produz saída 0 quando todos os bits de entrada são iguais e saída 1 quando pelo menos um dos bits de entrada é diferente dos demais. Organização e Arquitetura de Computadores Eder Santana Freire 10 Figura 8: Porta XOR “Não-OU” Exclusivo (XNOR) • Esta porta é também conhecida como porta lógica coincidência, cuja operação é a inversa da porta XOR. Figura 9: Porta XNOR 1.4 Álgebra Booleana Podem ser utilizados para representar uma função booleana: • Tabelas-verdade • Diagramas lógicos • Expressões algébricas • Álgebra booleana é uma variação da álgebra para manipulação de variáveis binárias e operações lógicas. • Variáveis são designadas por letras, como A, B, x e y. • Uma função booleana pode ser expressada algebricamente por variáveis binárias, símbolos de operações lógicas, parênteses e o sinal de igual. • O resultado de uma operação booleana será sempre 0 ou 1. • Considere a seguinte função booleana: F = xy + z' • A função F é igual a 1 se ambos x e y possuírem valor 1, ou se a expressão z' for verdadeira. Organização e Arquitetura de Computadores Eder Santana Freire 11 • Notar que, para que a expressão z' seja verdadeira, é necessário que z possua valor 0, uma vez que z' representa o complemento de z. 1.4.1 Identidades básicas da Álgebra Booleana Abaixo são listadas as 17 identidades básicas da álgebra de Boole, para consulta do leitor: 1.4.2 Teorema de De-Morgan • Este teorema é muito importante para a manipulação de portas NOR e NAND. Ele declara que uma porta NOR que executa a função (x + y)' é equivalente à função x'y'. De forma similar, uma função NAND pode ser expressa tanto por (xy)' como por (x' + y'). Por esta razão, as portas NOR e NAND possuem dois símbolos gráficos distintos. Figura 10: OU invertido e inversor-E Organização e Arquitetura de Computadores Eder Santana Freire 12 • Os símbolos para as portas inversor-E e para a porta OU invertido seguem o teorema de De- Morgan, onde foi convencionado que os pequenos círculos utilizados denotam complementação. • De forma similar, as portas NAND possuem dois símbolos distintos, conforme mostra a figura: Figura 11: Inversor-OU e E invertido 1.4.3 Complemento de uma função • O complemento de uma função F, quando expresso em uma tabela verdade, é obtido pela permuta de 1's e 0's nos valores de F da tabela. • Quando a função é expressa na forma algébrica, o complemento da função pode ser derivado por meio do teorema de De-Morgan. • A forma geral do teorema de De-Morgan pode ser expressa da seguinte forma: (x1+x2+x3+….Xn) = x1’x2’x3’…xn’ (x1x2x3…xn)’=x1’+x2’+x3’+…+xn’ • Ao se substituir todas as operações OR por operações AND e vice-versa, e complementar cada variável individual, é possível derivar um procedimento simples para obtenção do complemento da uma expressão algébrica. Por exemplo: F = AB+C’D’+B’D F’=(A’+B’)(C+D)(B+D’) • Portanto, a expressão complementar é obtida pelo intercâmbio de operações AND e OR, e o posterior complemento de cada operando. Organização e Arquitetura de Computadores Eder Santana Freire 13 1.5 Simplificação por Mapas de Karnaugh • Além do uso da Álgebra Booleana para simplificação de uma função, uma técnica chamada simplificação por mapas também pode ser utilizada. • O método de mapas é conhecido como mapa de Karnaugh ou mapa-K. • Cada combinação de variáveis em uma tabela verdade é chamada de minitermo. • Existem 2n minitermos para uma função com n variáveis. • Uma quarta representação de uma função Booleana pode ser dada pela soma dos minitermos das funções (soma dos produtos). Exemplos F(x,y,z)=Σ(1,4,5,6,7) 1.5.1 Mapas de Variáveis A seguir estão mapas para funções de duas, três ou quatro variáveis: Figura 12: Mapas para funções de 2, 3 e 4 variáveis • Os nomes das variáveis são listados por ambos os lados da linha diagonal na extremidade do mapa. • Os 0's e 1's marcados ao longo de cada linha e coluna designam os valores das variáveis. Organização e Arquitetura de Computadores Eder Santana Freire 14 • Cada variável sob as chaves contém metade dos quadrados no mapa, onde a mesma aparece pronta para uso. • O minitermo representado por um quadrado é determinado pela atribuição binária da variável ao longo das extremidades superiores à esquerda do mapa. • Aqui, o minitermo 5, no mapa de três variáveis, é representado por 101, na segunda coluna. Este minitermo representa um valor para as variáveis binárias A, B e C, com A e C não estando pronta e B sendo estando pronta para uso. 1.5.2 Simplificação por Soma-de-Produtos • Uma função booleana representada por uma tabela verdade é plotada no mapa ao se inserir 1's nestes quadrados onde a função é 1. • As funções booleanas podem então ser simplificadas pela identificação de quadrados adjacentes no mapa de Karnaugh que contém um 1. • Um quadrado é considerado adjacente a outro quadrado se está próximo, acima ou abaixo dele. Além disso, quadrados nos extremos da mesma linha horizontal também são considerados adjacentes. O mesmo se aplica para quadrados no topo e na base de uma coluna. • O objetivo é identificar quadrados adjacentes contendo 1's e agrupá-los. • Os grupos devem conter um número de quadrados que é uma potência integral de 2. • Grupos de quadrados adjacentes combinados podem compartilhar um ou mais quadrados com um ou mais grupos. • Cada grupo de quadrados representa um termo algébrico, e a operação OR desses termos fornece a expressão algébrica simplificada para a função. • Para encontrar a expressão algébrica mais simplificada, o objetivoda simplificação por mapas é identificar o menor número de grupos com o maior número possível de membros. • Simplificando a função Booleana F (A,B,C) = Σ(3,4,6,7): • O mapa de três variáveis para esta função é mostrado na figura anterior. • Existem quatro quadrados marcados com 1's, um para cada minitermo que produz 1 para a função. Estes quadrados pertencem ao minitermo 3,4,6,7 e são reconhecidos na figura b. • Dois quadrados adjacentes são combinados na terceira coluna. Esta coluna pertence conjuntamente a B e C e produz o termo BC. • Os dois últimos quadrados restantes com 1's nos dois cantos da segunda linha são adjacentes, e pertencem às linhas e colunas de C', de modo que eles produzem o termo AC'. A expressão simplificada para a função é a função OR dos dois termos: F = BC + AC’ • O segundo exemplo simplifica a seguinte função booleana: F(A,B,C) = Σ(0,2,4,5,6) • Os cinco minitermos são marcados com 1's nos quadrados correspondentes do mapa de três variáveis. • Os quatro quadrados na primeira e quarta colunas são adjacentes, e representam o termo C'. • O quadrado restante marcado com 1 pertence ao minitermo 5 e pode ser combinado com o Organização e Arquitetura de Computadores Eder Santana Freire 15 quadrado de minitermo 4 para produzir o termo AB'. A função simplificada é: F = C’+AB’ Figura 13: Mapa para F (A,B,C) = Σ(3,4,6,7) O terceiro exemplo necessita de um mapa de quatro variáveis: F(A,B,C,D)=Σ(0,1,2,6,8,9,10) Figura 14: Mapa para F(A,B,C,D)=Σ(0,1,2,6,8,9,10) • A área no mapa coberta por estas quatro variáveis consiste nos quadrados marcados com 1's na figura 14 acima. A função contém 1's nos quatro cantos que, quando tomados como grupos, fornecem o termo B'D'. Isto é possível porque estes quatro quadrados são adjacentes quando o mapa é considerado com as suas bordas superior e inferior ou esquerda e direita se tocando. • Os dois 1's na linha da base são combinados com os dois 1's na esquerda da linha da base para fornecer o termo B'C'. • O 1 restante no quadrado do minitermo 6 é combinado com o minitermo 2 para fornecer o termo A'CD'. A função simplificada é: F = B’D’ + B’C’ + A’CD’ 1.5.3 Simplificação por Produto-das-Somas • Outro método para simplifcação de expressões booleanas pode ser representar a função como um produto de somas. Organização e Arquitetura de Computadores Eder Santana Freire 16 • Esta aproximação é similar à simplificação por Soma-dos-Produtos, mas identificando quadrados adjacentes contendo 0's ao invés de 1's para formar grupos de quadrados adjacentes. • Então, ao invés de representar a função como uma soma de produtos, a função é representada como um produto de somas. Exemplos: F(A,B,C,D) = Σ(0,1,2,5,8,9,10) • Os 1's marcados no mapa da figura 15 representam os minitermos que produzem 1 para a função, • Os quadrados marcados com 0's representam o minitermo não incluso em F e portanto denotam o o seu complemento. • Ao se combinar os quadrados com 1's, se obtém a função simplificada na forma da soma-de- produtos: F = B’D +B’C’+A’C’D • Se os quadrados marcados com 0's são combinados conforme mostrado no diagrama, se obtém a função complementar simplificada: F’=(A’+B’)(C’D’)(B’+D) Figura 15: Mapa para F(A,B,C,D) = Σ(0,1,2,5,8,9,10) • O diagrama lógico das duas expressões simplificadas são mostrados na figura 16: Organização e Arquitetura de Computadores Eder Santana Freire 17 Figura 16: Diagramas lógicos com portas AND e OR • A expressão da soma de produtos é implementada na figura 16(a), com um grupo de portas AND, uma para cada termo AND. • As saídas das portas AND são conectadas às entradas de uma única porta OR. A mesma função é implementada na figura 16(b) na forma de produto das somas, com um grupo de portas OR, uma para cada termo OR, e as suas saídas são conectadas às entradas de uma única porta AND. • Em cada caso, pressupõe-se que as variáveis de entrada estão diretamente disponíveis nos seus complementos, logo inversores não estão inclusos. Figura 17: Diagramas lógicos com portas NAND e NOR 1.5.4 Condições Irrelevantes (don't care) • Nesta ocasião, não importa se a função produz um 0 ou 1 para um dado minitermo. • Quando esta condição ocorre, um X é usado no mapa para representar a condição de don't care. • Então, ao se efetuar a simplificação por mapa, um quadrado contendo um X pode ser usado em ambas aproximações Soma-de-Produtos e Produto-das-Somas. • Ao se escolher quadrados adjacentes para a função no mapa, pode se assumir que os x's possuem valor 0 ou 1, seja qual for retornará a expressão mais simples. • Além disso, um X não precisa ser usado na expressão, uma vez que o mesmo não contribui para a simplificação da função. • Em cada caso a escolha depende somente da simplificação que pode ser obtida. Como exemplo, considere as seguintes funções booleanas, juntamente com os minitermos don't Organização e Arquitetura de Computadores Eder Santana Freire 18 care: F(A,B,C) = Σ(0,2,6) d(A,B,C) = Σ(1,3,5) • O minitermo listado em F produz um 1 para a função. Os mini-termos don't care listados em d podem produzir tanto um 0 quanto um 1 para a função. Os minitermos restantes 4,7 produzem um 0 para a função. • Os minitermos de F são marcados com 1's, os de d são marcados com x's, e os quadrados restantes são marcados com 0's. • Os 1's e x's são combinados em qualquer maneira conveniente, de forma a aproximar o máximo número de quadrados adjacentes • Não é necessário incluir os minitermos don't care 1 e 3. • Com os 1's na primeira linha obtemos o termo, BC'. A expressão simplificada é dada por: F = A’ + BC 1.6 Circuitos Combinacionais • Um circuito combinacional é um arranjo de portas lógicas conectadas a um conjunto de entradas e saídas. • A qualquer tempo, os valores binários das saídas são uma função dos valores binários das suas entradas. • O projeto de um circuito combinacional se inicia pelo esboço verbal do problema e finaliza com um diagrama de circuito lógico. O procedimento envolve os seguintes passos: • O problema é iniciado. • As variáveis de entrada e saída são relacionadas a letras e símbolos. • A tabela verdade que define a relação entre entradas e saídas é derivada. • As funções booleanas simplificadas para cada saída são obtidas. • O diagrama lógico é desenhado. 1.6.1 Meio-Somador • É o circuito aritmético mais básico. • Realiza a adição de dois dígitos binários. • As variáveis de entrada de um meio-somador são dois valores lógicos quaisquer ( 0 ou 1); • As variáveis de saída de um meio-somador são chamadas de soma e carry (vai - um). Organização e Arquitetura de Computadores Eder Santana Freire 19 Figura 18: Meio-somador 1.6.2 Somador Completo • Um somador completo realiza a adição de três dígitos binários. • Dois meio-somadores podem ser combinados para formar um somador completo. Figura 19: circuito de um somador completo • Embora um somador completo possua três entradas, o mesmo ainda possui somente duas saídas, já que o maior número possível é 1 + 1 + 1 = 3, e 3 pode ser representado por doisbits. • O circuito do somador completo contém dois meio-somadores e uma porta OR. Tabela 1: Tabela verdade para o somador completo. 1.6.3 Flip-Flops • Um Flip-flop é uma célula binária capaz de armazenar um bit de informação. Organização e Arquitetura de Computadores Eder Santana Freire 20 • Ele possui duas saídas, uma para o valor normal e outra para o complemento do bit que está armazenando. • Flip-flops são elementos de armazenamento utilizados em circuitos seqüenciais síncronos. • Circuitos seqüenciais síncronos empregam sinais que afetam elementos de armazenamento apenas em instâncias discretas de tempo. • Um dispositivo de temporização chamado gerador de pulso de clock, que produz uma sucessão periódica de pulsos de clock, é o elemento responsável pela sincronização. • Os valores mantidos pelos elementos de armazenamento podem mudar apenas por meio de pulsos de clock. • Assim, um flip-flop mantém um estado binário até que seja direcionado por um pulso de clock para alternar os estados. • A diferença dos tipos de flip-flops é o número de entradas e a maneira pela qual as entradas afetam o estado binário. • Flip-flops podem ser descritos por uma tabela de características que permuta todas as possíveis entradas (da mesma forma que uma tabela verdade). • A tabela de características de um flip-flop descreve todas as saídas possíveis (chamadas de próximo estado) no tempo Q(t + 1), a partir de todas as entradas possíveis e do estado atual no tempo Q(t). • Os tipos de flip-flop mais comuns são: � Flip-flops SR � Flip-flops D � Flip-flops JK � Flip-flops T Flip-Flop SR Entradas: • S (para set) • R (para reset) • C (para clock) Saídas: • Q • Q' Tabela 2: Características do flip-flop SR Organização e Arquitetura de Computadores Eder Santana Freire 21 • A operação do flip-flop SR se dá da seguinte forma: • Se não há sinal na entrada de clock C,a saída do circuito não pode mudar, independentemente dos valores nas entradas S e R. • Somente quando o sinal de clock muda de 0 para 1, a saída pode ser afetada de acordo com os valores nas entradas S e R. • Se S = 1 e R = 0 quando C muda de 0 para 1, a saída Q terá valor 1. • Se S = 0 e R = 1 quando C muda de 0 para 1, a saída Q terá valor 0. • Se ambos S e R possuem valor 0 durante a transição de clock, a saída não se modifica. • Quando ambas entradas S e R são iguais a 1, a saída é imprevisível e pode se tornar tanto 0 como 1, dependendo da temporização interna que ocorre dentro do circuito. Flip-Flop D Entradas: • D (para dados) • C (para clock) Saídas: • Q • Q' Tabela 3: Características do flip-flop D Flip-Flop JK Entradas: • J • K • C (para clock) Saídas: • Q • Q' Organização e Arquitetura de Computadores Eder Santana Freire 22 Tabela 4: Características do flip-flop JK Flip-Flop T Entradas: • T (para toggle) • C (para clock) Saídas: • Q • Q' Tabela 5: Características do flip-flop T • A maioria dos flip-flops é sensível à borda, o que significa que a transição de valores ocorre em um nível específico do pulso de clock. • Uma transição em borda positiva ocorre na borda de subida do sinal de clock. • Uma transição em borda negativa ocorre na borda de descida do sinal de clock. • Um outro tipo de flip-flop é o chamado flip-flop mestre-escravo, que consiste basicamente de dois flip-flops em série. • Os flip-flops também podem incluir terminais especiais de entrada para setar ou resetar (zerar) o flip-flop assincronamente. Estas entradas são normalmente chamadas de preset e clear e são úteis para inicializar os flip-flops antes que as operações de clock se iniciem. Tabelas de Excitação dos Flip-Flops • Durante o projeto de circuitos seqüenciais, a transição requerida do estado atual para o próximo estado é conhecida. • O que o projetista precisa saber é quais condições de entrada precisam existir para implementar o que é requerido. Organização e Arquitetura de Computadores Eder Santana Freire 23 • Para isto se torna necessário o uso de tabelas de excitação de flip-flops. Tabela 6: Excitação dos flip-flops SR e JK Tabela 7: Excitação dos flip-flops D e T 1.7 Circuitos Seqüenciais • Quando um circuito contém somente portas, é chamado de circuito combinacional. • Entretanto, se um circuito usa tanto portas como flip-flops, o mesmo é chamado de circuito seqüencial. • Assim, um circuito seqüencial é uma interconexão de flip-flops e portas lógicas. • Pode-se considerar um circuito seqüencial como uma caixa preta que, quando alimentada com determinadas entradas externas, produz determinadas saídas externas. Um circuito seqüencial típico funcionaria da seguinte forma: • As entradas externas constituem algumas das entradas para o circuito combinacional. • As entradas internas do circuito combinacional são as entradas internas conectadas aos flip- flops. • As saídas internas dos flip-flops constituem as entradas restantes para o circuito combinacional. • As saídas externas são combinações das saídas provenientes dos circuitos combinacionais e de flip-flops. Organização e Arquitetura de Computadores Eder Santana Freire 24 • O comportamento de um circuito seqüencial é determinado por suas entradas, saídas e pelo estado dos seus flip-flops. • Ambas as saídas e o próximo estado são determinados pelas entradas e pelo estado atual do circuito. Uma tabela de estados pode representar este relacionamento. • Um diagrama de estados pode representar a informação em uma tabela de estados graficamente, onde os estados são representados por círculos (vértices), e transições em entradas específicas são representadas pelos rótulos nas linhas direcionadas (bordas) conectando os círculos. 1.7.1 Procedimento para o Projeto de Circuitos Seqüenciais 1. Formular o comportamento do circuito por meio de um diagrama de estados. 2. Determinar o número n de flip-flops necessários (igual a n bits nos círculos). 3. Determinar o número n de entradas (especificadas por bordas no diagrama). 4. Criar uma tabela de estados, designando letras para flip-flops, e variáveis de entrada e saída. 5. Para cada linha, listar o próximo estado como especificado no diagrama de estados. 6. Selecionar o tipo de flip-flop a ser usado no circuito. 7. Estender a tabela de estados para uma tabela de excitação, incluindo colunas para cada entrada, de cada flip-flop. 8. Usando a tabela de excitação e as atuais transições do estado atual para o próximo estado, formular as condições de entrada para os flip-flops. 9. Construir a tabela verdade para o circuito combinacional usando o estado atual e as colunas de entrada da tabela de excitação (para entradas) e entradas dos flip-flops (para saídas). 10. Usar a simplificação por mapas da tabela verdade para obter as equações de entrada dos flip- flops.** 11. Determinar as saídas externas para o circuito seqüencial (saídas de flip-flops, e potencialmente saídas de circuitos combinacionais). 12. Desenhar o diagrama lógico da seguinte forma: 13. Desenhar flip-flops e nomear todas as suas entradas e saídas. 14. Desenhar o circuito combinacional a partir das expressões booleanas dadas pelas equações de entrada dos flip-flops. 15. Conectar as saídas dos flip-flops às entradas do circuito combinacional. 16. Conectar as saídas do circuito combinacional àsentradas dos flip-flops. * Para m flip-flops e n entradas, a tabela de estados irá consistir de m colunas para o estado atual, n colunas para as entradas e m colunas para o próximo estado. O número de linhas na tabela será de até 2m+n, uma linha para cada combinação binária entre o atual estado e as entradas. ** Cada equação de entrada dos flip-flops especifica um diagrama lógico cuja saída deve ser conectada ao uma das entradas do flip-flop. Organização e Arquitetura de Computadores Eder Santana Freire 25 2. Circuitos Integrados Este capítulo explica em detalhes as operações lógicas dos componentes digitais padrão mais comuns. Isto inclui decodificadores, registradores de multiplexadores, contadores e memórias. Estes componentes digitais são usados como blocos prontos para o projeto de unidades maiores, no capítulo seguinte. 2.1 Circuitos Integrados • Circuitos digitais são construídos a partir de circuitos integrados. • Um circuito integrado (CI) é um pequeno cristal semicondutor de silicone, chamado de chip, e contém os componentes eletrônicos necessários para as portas digitais. • As portas são interconectadas no interior do chip para formar o requerido circuito. • O chip é montado em um encapsulamento de cerâmica ou plástico, e fios finos de ouro fazem a ligação com os pinos externos, para formar as conexões soldadas do circuito integrado. • O número de pinos pode variar de 14 em um pequeno encapsulamento de CI para milhares em um grande encapsulamento. • À medida que a tecnologia evoluiu, o número de portas que podiam ser colocadas em um único chip aumentou consideravelmente. • Os chips são classificados nas seguintes categorias, primariamente baseadas no número de portas que cada uma contém. • Integração em pequena escala (Small-scale integration – SII) • Número de portas normalmente menor que 10. • Entradas e saídas tipicamente conectadas diretamente aos pinos. • Integração em média escala (Medium-scale integration – MSI) • Número de portas: entre 10 e 200. • Tipicamente executam funções digitais elementares específicas. • Exemplos: decodificadores, somadores, registradores • Integração em larga escala (Large Scale Integration - LSI) • Número de portas: entre 200 e alguns milhares • Sistemais digitais mais complexos • Exemplos: Processadores, chips de memória, módulos programáveis • Integração em larga escala (Very Large Scale Integration VLSI) • Número de portas: milhares • Sistemas digitais ainda mais complexos • Exemplos: grandes arranjos de memória, chips de microcomputador complexos • Circuitos integrados digitais são classificados não apenas pelas suas operações lógicas, mas também pela tecnologia específica do circuito (família de lógica digital) às quais eles pertencem. As famílias de lógica digital mais populares são: Organização e Arquitetura de Computadores Eder Santana Freire 26 • Lógica transistor-transistor (Transistor-transistor logic – TTL) • Família lógica amplamente utilizada • Utiliza transistores para implementar as portas • Lógica acoplada por emissor (Emitter-coupled logic – ECL) • Usada em sistemas de alta performance • Utiliza transistores especiais não-saturados para atingir velocidades muito altas • Semicondutor metal-óxido (Metal-oxide semiconductor – MOS) • Usada em circuitos que possuem alta densidade de componentes • Utiliza transistores unipolares • Semicondutor metal-óxido complementar (Complementary metal-oxide semiconductor – CMOS) • Também utilizada em circuitos que possuem alta densidade de componentes • Também utiliza transistores unipolares, mas os conecta em uma disposição complementar • Mais econômica que a MOS devido ao baixo consumo de potência 2.2 Decodificadores • Um código binário de n bits é capaz de representar até 2n elementos distintos em informação codificada. • Um decodificador é um circuito combinacional que converte informação binária das n entradas codificadas em um número máximo de 2n saídas distintas. Decodificador de 3-8 linhas • Se a informação codificada em n bits tem combinações de bits não utilizadas, o decodificador pode possuir menos do que 2n saídas. • Um decodificador de n-para-m linhas, onde m <= 2n, tem até m variáveis de saída para n variáveis de entrada. • Decodificadores tipicamente incluem uma ou mais entradas de habilitação (enable) para controlar (habilitar/desabilitar) a operação do circuito. Tabela 8: Tabela-verdade do decodificador 3-para-8 Organização e Arquitetura de Computadores Eder Santana Freire 27 A saída do decodificador 3-para-8 pode ser expressa pelas seguintes funções binárias: D0 = EA2'A1'A0' D1 = EA2'A1'A0 D2 = EA2'A1A0' D3 = EA2'A1A0 D4 = EA2A1'A0' D5 = EA2A1'A0 D6 = EA2A1A0' D7 = EA2A1A0 Deste modo, é possível construir o circuito do decodificador, da seguinte forma: Figura 20: Esquema do decodificador de 3 para 8 • Um decodificador também pode ser construído a partir das portas lógicas AND e NAND. • A figura 21 abaixo demonstra um decodificador de 2-para-4 construído com portas NAND: Figura 21: Decodificador 2-para-4 com portas NAND Organização e Arquitetura de Computadores Eder Santana Freire 28 Tabela 9: Tabela verdade do decodificador 2-para-4 • Uma técnica chamada expansão de decodificador pode ser utilizada para construir decodificadores maiores a partir de alguns menores. Por exemplo, dois decodificadores 2-para-4 podem ser combinados para construir um decodificador 3-para-8. Figura 22: Decodificador 3-para-8 construído a partir de dois decodificadores 2-para-4 • A figura 22 acima mostra como decodificadores com entradas de habilitação podem ser conectados para formar um decodificador maior. • Como pode ser visto na figura, dois decodificadores 2-para-4 são combinados para se obter um decodificador 3-para-8. • Os dois bits menos significativos da entrada são conectados a ambos decodificadores. • O bit mais significativo é conectado à entrada de habilitação (E) de um decodificador e, por meio de um inversor, à entrada de habilitação do outro decodificador. • Aqui, assume-se que cada decodificador é habilitado quando a sua entrada E é igual a 1. • Quando E é igual a zero, o decodificador é desabilitado, e todas as suas saídas estão no nível 0. Quando A2 = 0, o decodificador mais acima é habilitado e o mais abaixo é desabilitado. • As saídas do decodificador de baixo se tornam inativas com todas as saídas em 0. As saídas do decodificador de cima geram as saídas D0 a D3, dependendo dos valores de A1 a A0 (enquanto A2 = 0). Organização e Arquitetura de Computadores Eder Santana Freire 29 • Quando A2 = 1, o decodificador de baixo é habilitado e o de cima é desabilitado. O decodificador de baixo gera o equivalente binário D4 a D7, uma vez que estes números binários possuem 1 na posição A2. 2.3 Codificadores • Um codificador é um circuito combinacional que executa a operação inversa de um decodificador. • As suas linhas de saída geram o código binário correspondente aos valores de entrada de um decodificador. • Um codificador possui 2n (ou menos) entradas distintas e n saídas. Figura 23: Esquema de um codificador 4-para-2 • Portanto, a saída do codificador 4-para-2 pode ser expressa pelas seguintes funçõesbinárias: F0 = A3 + A0 F1 = A1' . A0' 2.4 Multiplexadores • Um multiplexador é um circuito combinacional que recebe a entrada de uma das suas 2n linhas de entrada e direciona-a para uma única linha de saída. • A seleção de uma linha de entrada de dados para uma saída em particular é determinada por um conjunto de entradas de seleção. • Um multiplexador 2n-para-1 possui 2n linhas de entrada de dados e n linhas de seleção de entrada para determinar qual linha de entrada deve ser selecionada e direcionada à única linha de saída. • Uma tabela de função pode ser usada para descrever a funcionalidade de um multiplexador, conforme demonstra a figura: Organização e Arquitetura de Computadores Eder Santana Freire 30 Tabela 10: Tabela de função para um multiplexador 4-para-1 • Assim como os codificadores, os multiplexadores podem ter uma entrada de habilitação para controlar a operação da unidade. • Adicionalmente, multiplexadores podem ser agrupados entre si para executar tarefas de maior complexidade. • Também são chamados pela abreviação MUX (do inglês multiplexer), e são identificados pelo símbolo da figura 24: Figura 24: Esquema de um multiplexador de 2 entradas 2.5 Registradores • Um registrador é um grupo de flip-flops dispostos em conjunto, capazes de armazenar, cada um, 1 bit de informação. • Um registrador de n bits possui um grupo de n flip-flops e é capaz de armazenar qualquer informação binária de até n bits. • Adicionalmente aos flip-flops, os registradores podem possuir portas lógicas combinacionais que executam determinadas tarefas de processamento de dados. As portas controlam como e quando novas informações são transferidas para os registradores. • A transferência de novas informações para um registrador é conhecida como carga do registrador (register load). Se a carga ocorre simultaneamente a uma transição de pulso de clock comum, se dizer que a carga é feita em paralelo. • A entrada da carga em um registrador determina a ação a ser tomada a cada pulso de clock. • Quando a entrada de carga é 1, o dado nas linhas de entrada é transferido para os flip-flops do registrador. Quando a entrada de carga é 0, as entradas de dados são inibidas e o flip-flop mantém o seu estado atual. Organização e Arquitetura de Computadores Eder Santana Freire 31 2.6 Registradores de Deslocamento • Um registrador capaz de deslocar a sua informação binária em uma ou ambas direções é chamado de registrador de deslocamento. • Registradores de deslocamento são construídos conectando-se flip-flops em cascata, onde a saída de um flip-flop é conectada á entrada do flip-flop seguinte. • Todos os flip-flops recebem o mesmo pulso de clock, que inicia o deslocamento de um estágio para o próximo. • Um registrador de deslocamento com entrada serial possui uma única entrada externa (chamada de entrada serial), entrando no flip-flop mais externo. Cada flip-flop restante usa a saída do flip-flop anterior como sua entrada, com o último flip-flop produzindo a saída externa (chamada de saída serial). • Um registrador capaz de deslocar em apenas uma direção (somente da esquerda para a direita, ou da direita para a esquerda) é chamado de registrador de deslocamento unidirecional. • Já um registrador capaz de deslocar os dados em ambas as direções (esquerda ou direita) é chamado de registrador de deslocamento bidirecional. • De um modo geral, um registrador de deslocamento pode possuir os seguintes componentes: • Uma entrada para pulsos de clock para sincronizar todas as operações. • Uma operação de deslocamento à direita e uma linha de entrada serial associada ao deslocamento à direita. • Uma operação de deslocamento à esquerda e uma linha de entrada serial associada ao deslocamento à esquerda. • Uma operação de carga paralela e n linhas de entrada associadas à transferência paralela. • N linhas de saída paralelas. • Um controle de estado que permite que a informação no registrador fique intacta, mesmo quando pulsos de clock são aplicados continuamente. • Um controle de modo para determinar que tipo de operação realizar. • A figura 25 abaixo demonstra o esquema de um registrador de deslocamento básico. Figura 25: esquema básico de um registrador de deslocamento à direita Organização e Arquitetura de Computadores Eder Santana Freire 32 Tabela 11: Tabela de função para o modo de controle de um registrador de deslocamento 2.7 Contadores Binários • Um registrador que armazena uma seqüência predeterminada de estados a partir da aplicação de pulsos de entrada é chamado de contador. • Os pulsos de entrada podem ser pulsos de clock ou podem se originar em uma fonte externa. Eles podem ocorrer em períodos uniformes de tempo ou de forma aleatória. • Um contador que segue uma seqüência binária é chamado de contador binário. Um contador binário de n bits é um registrador com n flip-flops juntamente com um circuito combinacional que produz continuamente uma contagem binária de n bits, possuindo valores entre 0 e 2n-1. • De forma geral, um registrador contador binário possui as seguintes características: • Uma entrada para pulsos de clock para sincronizar todas as operações. • Uma operação de incremento que faz com que o registrador incremente o seu valor em 1. • Uma operação paralela de clear que seta todos os valores em flip-flops para 0. • Uma operação paralela de carga que seta todos os valores dos flip-flops de acordo com os valores das n linhas de entrada associadas à carga paralela. • N linhas de saída paralelas. • Um controle de estado que permite que a informação no registrador fique intacta, mesmo quando pulsos de clock são aplicados continuamente. Tabela 12: Tabela de função de um registrador contador binário 2.8 Unidade de Memória • Uma unidade de memória é uma coleção de células de armazenamento juntamente com circuitos associados, necessários para transferir informações de entrada e saída. Organização e Arquitetura de Computadores Eder Santana Freire 33 • Uma memória armazena informações binárias em grupos de bits chamados palavras. • Uma palavra de memória pode ser usada para representar qualquer tipo de informação em codificação binária. • Um grupo de oito bits é chamado de byte. A maioria dos sistemas usam palavras de memória, que são múltiplas de oito. • Assim, uma palavra de 16 bits contém dois bytes. Uma palavra de 32 bits contém quatro bytes, e assim por diante. • O número de palavras contidas em uma unidade memória e o número de bits em cada palavra definem a sua estrutura interna. • Linhas de entrada especiais chamadas linhas de endereço são usadas para selecionar uma palavra em particular. • Cada palavra na memória está relacionada a um único endereço, variando de 0 para 2k-1, onde k é o número de linhas de endereço. • Ao se aplicar o endereço binário de k bits nas linhas de endereço da memória faz com que a mesma selecione uma palavra específica na memória. • Um decodificador integrado à memória aceita o endereço e abre os caminhos necessários para selecionar os bits na palavra especificada. • Memórias de computador variam a partir de 1024 palavras, necessitando de um endereço de 10 bits, até 232 palavras, necessitando de 32 bits para endereçamento. • É comum a referência do número de palavras em uma memória ser feita com as letras K (kilo), M (mega), G (giga), T (tera), onde K é igual a 210, M é igual a 220, G é igual a 230, e T é igual a 240. • Assim, 64K = 216, 2M= 221, 4G = 232 e 1T = 240. • Dois tipos principais de memória são usados em sistemas computacionais, conforme será visto a seguir. 2.8.1 Memória de Acesso Aleatório (Random Access Memory – RAM) • O conceito de acesso aleatório vem do fato de que o processo de localização de uma palavra na memória é sempre o mesmo, e requer um mesmo intervalo de tempo independentemente da sua posição física. • Transferências de dados ocorrem através das linhas de entrada e saída de dados, linhas de seleção de endereços e linhas de controle. • As duas operações que uma memória de acesso aleatório pode executar são as de leitura e escrita (read e write). • Para executar a operação de leitura, o endereço de memória da palavra a ser lida é colocado nas linhas de seleção de endereço e a linha de controle de leitura é habilitada. A unidade de memória então coloca os dados desejados nas linhas de saída de dados. • De forma similar, para executar a operação de gravação, o endereço de memória da palavra a ser gravada é colocado nas linhas de seleção de endereço, os dados a serem gravados são colocados nas linhas de entrada de dados, e a linha de controle de gravação é habilitada. 2.8.2 Memória Somente-Leitura (Read-Only Memory – ROM) • Como o nome sugere, a memória somente leitura pode executar, a princípio, apenas operações de leitura. • A inserção de dados em uma ROM deve ser feita no momento da produção do seu hardware. • A operação de leitura em uma ROM é idêntica à operação em uma RAM, constando como Organização e Arquitetura de Computadores Eder Santana Freire 34 única diferença a ausência de linhas para controle de escrita. • Um tipo especial de ROM, chamado de ROM programável (programmable read-only memory – PROM) permite ao seu usuário escrever na memória apenas uma vez. • Existe também outro tipo de ROM, chamado de PROM apagável (eraseable PROM – EPROM), que permite ao usuário do sistema a capacidade de modificar os dados em uma ROM. Entretanto, isto deve ser feito fisicamente, colocando-se o chip de memória sobre luz ultravioleta por um intervalo específico de tempo. • Finalmente, existe ainda um quarto tipo de ROM, que permite a sua programação por meio elétrico (electrically eraseable programmable read-only memory – EEPROM). Embora possam ser reprogramados mais de uma vez, este número é limitado (entre 100 mil e 1 milhão de vezes), devido à deterioração interna do chip à medida que o mesmo é reprogramado. Organização e Arquitetura de Computadores Eder Santana Freire 35 3. Unidade Central de Processamento 3.1 A CPU • A CPU é o ponto focal de um computador, guiando todas as ações que se desenvolvem no sistema. • A mesma contém uma unidade lógico-aritmética, ou ULA (Arithmetic and Logic Unit – ALU), para executar todas as adições, subtrações, operações lógicas, etc. • A ULA também contém diversos registradores, que funcionam como pequenas porções muito rápidas de memória, usadas para armazenar temporariamente os dados sendo utilizados pela mesma. • Contém toda a lógica de controle, para coordenar as ações entre todos os elementos da CPU, assim como os outros componentes de hardware do computador. • A CPU geralmente está contida inteiramente em um único circuito integrado (CI), ou chip. Figura 26: Esquema básico de uma CPU 3.2 Organização Geral dos Registradores • O conjunto de registradores em um computador está conectado à ULA através de barramentos e multiplexadores. • Uma palavra de controle de 14 bits especifica dois registradores de origem (SELA e SELB), um registrador de destino (SELD), e uma operação (OPR). Organização e Arquitetura de Computadores Eder Santana Freire 36 Figura 27: Conjunto de registradores com uma ULA comum Organização e Arquitetura de Computadores Eder Santana Freire 37 • Os registradores podem ser especificados usando três bits cada, conforme segue: Código Binário SELA SELB SELD 000 Entrada Entrada Nenhum 001 R1 R1 R1 010 R2 R2 R2 011 R3 R3 R3 100 R5 R5 R5 101 R5 R5 R5 110 R6 R6 R6 111 R7 R7 R7 Tabela 13: Codificação dos Registradores Os quatro bits restantes da palavra de controle podem ser usados para especificar as seguintes operações da ULA: Seleção de OPR Operação Símbolo 00000 Transfere A TSFA 00001 Incremento de A INCA 00010 Adiciona A + B ADD 00101 Subtrai A - B SUB 00110 Decrementa A DECA 01000 A AND B AND 01010 A OR B OR 01100 A XOR B XOR 01110 Complemento de A COMA 10000 Desloca A à direita SHRA 11000 Desloca A à esquerda SHLA Tabela 14: Operações da ULA São exemplos de micro-operações: • Uma palavra de controle de 14 bits é necessária para especificar uma micro operação da CPU. A palavra de controle para uma dada micro operação pode ser derivada das variáveis de seleção. Por exemplo, a micro operação de subtração dada pela declaração Organização e Arquitetura de Computadores Eder Santana Freire 38 R1 ← R2 – R3 especifica R2 para a entrada A da ULA, R3 para a entrada B, R1 para o registrador de destino, e uma operação da ULA para subtrair A – B. • Assim, a palavra de controle é especificada pelos quatro campos e pelo valor binário correspondente para cada campo é obtido pela codificação listada nas tabelas x e y. • A palavra de controle binária para a micro-operação de subtração é: 010 011 001 00101, e é obtida do seguinte modo: Campo: SELA SELB SELD OPR Símbolo: R2 R3 R1 SUB Palavra de controle: 010 011 001 0010 Tabela 15: Palavra binária para operação de subtração • As palavras de controle para esta e outras micro operações estão listadas na tabela 16. • As micro operações de incremento e transferência não utilizam a entrada B da ULA. Para estes casos, o campo B é marcado com um hífen “-”. Aqui, foi atribuído o valor 000 para um campo não utilizado, embora qualquer outro número binário possa ser utilizado. Micro-operação SELA SELB SELD OPR Palavra de Controle R1 ← R2 – R3 R2 R3 R1 SUB 010 011 001 00101 R4 ← R4 v R5 R4 R5 R4 OR 100 101 100 01010 R6 ← R6 + 1 R6 - R6 INCA 110 000 110 00001 R7 ← R1 R1 - R7 TSFA 001 000 111 00000 Saída ← R2 R2 - Nenhum TSFA 010 000 000 00000 Saída ← Entrada Entrada - Nenhum TSFA 000 000 000 00000 R4 ← shl R4 R4 R5 R5 SHLA 100 000 100 11000 R5 ← 0 R5 R5 R5 XOR 101 101 101 01100 Tabela 16: Exemplos de micro-operações de uma CPU • É importante ver, através destes exemplos, que muitas outras micro-operações podem ser geradas na CPU. A maneira mais eficiente de gerar palavras de controle com um grande número de bits é armazená-los em uma unidade de memória. • Uma unidade de memória que armazena palavras de controle é conhecida como memória de controle. Ao se ler palavras de controle consecutivas da memória, é possível se iniciar a sequência desejada de micro-operações para a CPU. • Este tipo de controle é conhecido como controle micro-programado. Uma unidade de controle micro-programado é mostrada na figura 27. A palavra de controle binária para a CPU é recebida a partir das saídas da memória de controle marcadas como “micro-ops”. Organização e Arquitetura de Computadores Eder Santana Freire 39 3.2.1 Organização da Pilha • Uma pilha é um dispositivo de armazenamento que guarda as informações em uma disposição último a entrar, primeiro a sair (last-in, first-out – LIFO). • As pilhas possuembasicamente duas operações: push, que insere os dados para armazenamento, e pop, que retira os dados da memória. • Um computador pode ter uma memória separada, reservada apenas para operações de pilha. Entretanto, a maioria utiliza a memória principal para representar pilhas. • Assim, todos os programas de montagem devem alocar memória para a utilização de uma pilha. • O diagrama de blocos de uma pilha pode ser visto na figura 28 a seguir: Figura 28: diagrama de blocos para uma pilha de 64 palavras • O registrador SP (de stack pointer) inicialmente é carregado com o endereço do topo da pilha. • Na memória, a pilha na verdade trabalha de cima para baixo, de modo que quando alguma informação é inserida na pilha, o stack pointer é decrementado. SP ← SP – 1 M[SP] ← DR • E, quando algum dado é retirado da pilha, o stack pointer é incrementado: DR ← M[SP] SP ← SP + 1 • As instruções push e pop podem ser explicitamente executadas em um programa. Entretanto, elas também são implicitamente executadas em outras operações, tais como procedure calls Organização e Arquitetura de Computadores Eder Santana Freire 40 (chamadas de procedimentos) e interrupções. • Deve-se tomar cuidado ao efetuar operações de pilha para garantir que um overflow ou underflow da pilha (isto é, a ultrapassagem dos seus limites, para cima ou para baixo) não ocorra. 3.2.2 Pilha da Memória A figura 29 a seguir mostra uma porção de uma memória de computador particionada em três segmentos: Programa, dados e pilha. Figura 29: Memória de computador com os segmentos de programa, dados e pilha A partir do exemplo dado pela figura acima, é possível tirar as seguintes conclusões: • O contador de programa (Program Counter – PC) aponta para o endereço da próxima instrução do programa. • O registrador de endereço (Address Register – AR) aponta para um arranjo de dados. • O ponteiro da pilha SP aponta para o topo da mesma. • Os três registradores estão conectados a um barramento de endereços comum, e qualquer um pode fornecer um endereço para a memória. Organização e Arquitetura de Computadores Eder Santana Freire 41 • O PC é usado durante a fase de coleta, para a leitura de uma instrução. • O AR é usado durante a fase de execução, para a leitura de um operando. • O SP é usado para inserir ou retirar itens para ou da pilha. • O valor inicial do SP é 4001 e a pilha cresce com endereços decrescentes. Assim, o primeiro item é armazenado no endereço 4000, o segundo item é armazenado no último endereço que pode ser utilizado pela pilha, no caso, 3000. • Assume-se que o item na pilha se comunica com o registrador de dados – DR. Um novo item é inserido a partir de uma operação push, conforme segue: SP ← SP – 1 M[SP] ← DR • O ponteiro da pilha é decrementado de modo que o mesmo aponte para o endereço da próxima palavra. • Uma operação de escrita na memória insere a palavra em DR no topo da pilha. • Um novo item é deletado a partir de uma operação pop, conforme segue: DR ← M[SP] SP ← SP + 1 • O item no topo da pilha é transferido para o registrador DR. • O ponteiro da pilha é então incrementado de modo que o mesmo aponte para o próximo item da mesma. 3.2.3 Formatos de Instrução • Já foram demonstrados aqui alguns tipos diferentes de formatos de instrução. De fato, existem diversos tipos diferentes de formatos. • Entretanto, cada tipo de formato normalmente possui as seguintes características em comum: • Um campo de código de operação que especifica a operação a ser realizada. • Um campo de endereço que designa um endereço de memória ou registradores do processador. • Um campo de modo que especifica a forma com o que o operando ou o endereço efetivo é determinado. • As instruções também podem variar em comprimento. O tamanho é tipicamente um fator de quantos endereços são especificados na instrução. • O número de endereços usados pelas instruções dependem da organização interna dos registradores do computador. A maioria dos computadores se encaixa em um dos três tipos de organização de CPUs: • Organização de registrador geral • Organização de acumulador único • Organização de pilha Organização e Arquitetura de Computadores Eder Santana Freire 42 Instruções de Três Endereços Computadores com formatos de instrução de três endereços se encaixam na categoria de organização de registrador geral. Os três endereços podem ser usados para especificar registradores do processador ou endereços de memória. Exemplo Add R1, A, B R1 ← M[A] + M[B] Add R2, C, D R2 ← M[C] + M[D] Mul X, R1, R2 M[X] ← R1 * R2 • Assume-se que o computador possui dois registradores do processador, R1 e R2. • O símbolo M[A] denota o operando no endereço de memória simbolizado por A. • A vantagem do formato de três endereços é que o mesmo resulta em programas curtos, quando se avalia expressões aritméticas. • A desvantagem é que as instruções codificadas em binário necessitam de muitos bits para especificar três endereços. Instruções de Dois Endereços • Computadores com formatos de instrução de dois endereços também entram na categoria de organização de acumulador único. • Estes endereços sempre expecificam endereços de memória, uma vez que está implícito que o registrador acumulador (AC) será usado para todas as manipulações de dados. • O programa para se avaliar X = (A+B) * (C+D) segue como exemplo: Exemplo MOV R1, A R1 ← M[A] ADD R1, B, R1 ← R1 + M[B] MOV R2, C R2 ← M[C] ADD R2, D R2 ← R2 + M[D] MUL R1, R2 R1 ← R1 * R2 MOV X, R1 M[X] ← R1 Instruções de Um Endereço • Computadores com formatos de instrução de um endereço se encaixam na categoria de organização de acumulador. • Da mesma forma que nas instruções de dois endereços, este campo endereço deve especificar um endereço de memória, já que novamente o registrador AC é usado para manipular dados. • O exemplo a seguir mostra o trecho assembly para calcular X = (A+B) * (C+D): Organização e Arquitetura de Computadores Eder Santana Freire 43 Exemplo LOAD A AC ← M[A] ADD B AC ← AC + M[B] STORE T M[T] ← AC LOAD C AC ← M[C] ADD D AC ← AC + M[D] MUL T AC ← AC * M[T] STORE X M[X] ← AC Instruções de Zero Endereços • Computadores com formatos de instrução de zero endereços se encaixam na categoria de organização de pilha. • Embora chamada de instrução de zero endereço, um endereço de memória precisa ser especificado ao se inserir ou retirar itens da pilha. • Entretanto, instruções como ADD ou MUL não necessitam de endereços. • O seguinte programa mostra como X = (A + B) * (C + D) pode ser escrito em um computador organizado por pilha.: Exemplo: PUSH A TOS ← A PUSH B TOS ← B ADD TOS ← (A + B) PUSH C TOS ← C PUSH D TOS ← D ADD TOS ← (C + D) MUL TOS ← (C + D) * (A + B) POP X M[X] ← TOS • Onde TOS representa o topo da pilha (Top of Stack) 3.2.4 Modos de Endereçamento Modo Implícito – Operandos são especificados implicitamente na definição da instrução (instruções de acumulador ou de zero endereços). Modo Imediato – Operandos especificados na instrução propriamente dita. O campo do operando contém o que será de fato usado em conjunção com a operação especificada na instrução. Modo Registrador – O campo endereço especifica um registrador do processador. Os operandos são os valores
Compartilhar