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 ain...
Índice
Introdução............................................................................................................
4.3.1 Módulos de Barramento de E/S e Interface...............................................................................
Organização e Arquitetura de Computadores
Eder Santana Freire 5
Introdução
Todos sabemos que os computadores se tornaram p...
Organização e Arquitetura de Computadores
Eder Santana Freire 6
1. Circuitos Lógicos Digitais
Este capítulo introduz o con...
Organização e Arquitetura de Computadores
Eder Santana Freire 7
• Os dispositivos de entrada e saída conectados ao computa...
Organização e Arquitetura de Computadores
Eder Santana Freire 8
Figura 2: Porta AND
OU (OR)
• A porta OR combina dois ou m...
Organização e Arquitetura de Computadores
Eder Santana Freire 9
Figura 5: Buffer
“Não-E” (NAND)
• A porta NAND equivale a ...
Organização e Arquitetura de Computadores
Eder Santana Freire 10
Figura 8: Porta XOR
“Não-OU” Exclusivo (XNOR)
• Esta port...
Organização e Arquitetura de Computadores
Eder Santana Freire 11
• Notar que, para que a expressão z' seja verdadeira, é n...
Organização e Arquitetura de Computadores
Eder Santana Freire 12
• Os símbolos para as portas inversor-E e para a porta OU...
Organização e Arquitetura de Computadores
Eder Santana Freire 13
1.5 Simplificação por Mapas de Karnaugh
• Além do uso da ...
Organização e Arquitetura de Computadores
Eder Santana Freire 14
• Cada variável sob as chaves contém metade dos quadrados...
Organização e Arquitetura de Computadores
Eder Santana Freire 15
quadrado de minitermo 4 para produzir o termo AB'. A funç...
Organização e Arquitetura de Computadores
Eder Santana Freire 16
• Esta aproximação é similar à simplificação por Soma-dos...
Organização e Arquitetura de Computadores
Eder Santana Freire 17
Figura 16: Diagramas lógicos com portas AND e OR
• A expr...
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 miniter...
Organização e Arquitetura de Computadores
Eder Santana Freire 19
Figura 18: Meio-somador
1.6.2 Somador Completo
• Um somad...
Organização e Arquitetura de Computadores
Eder Santana Freire 20
• Ele possui duas saídas, uma para o valor normal e outra...
Organização e Arquitetura de Computadores
Eder Santana Freire 21
• A operação do flip-flop SR se dá da seguinte forma:
• S...
Organização e Arquitetura de Computadores
Eder Santana Freire 22
Tabela 4: Características do flip-flop JK
Flip-Flop T
Ent...
Organização e Arquitetura de Computadores
Eder Santana Freire 23
• Para isto se torna necessário o uso de tabelas de excit...
Organização e Arquitetura de Computadores
Eder Santana Freire 24
• O comportamento de um circuito seqüencial é determinado...
Organização e Arquitetura de Computadores
Eder Santana Freire 25
2. Circuitos Integrados
Este capítulo explica em detalhes...
Organização e Arquitetura de Computadores
Eder Santana Freire 26
• Lógica transistor-transistor (Transistor-transistor log...
Organização e Arquitetura de Computadores
Eder Santana Freire 27
A saída do decodificador 3-para-8 pode ser expressa pelas...
Organização e Arquitetura de Computadores
Eder Santana Freire 28
Tabela 9: Tabela verdade do decodificador 2-para-4
• Uma ...
Organização e Arquitetura de Computadores
Eder Santana Freire 29
• Quando A2 = 1, o decodificador de baixo é habilitado e ...
Organização e Arquitetura de Computadores
Eder Santana Freire 30
Tabela 10: Tabela de função para um multiplexador 4-para-...
Organização e Arquitetura de Computadores
Eder Santana Freire 31
2.6 Registradores de Deslocamento
• Um registrador capaz ...
Organização e Arquitetura de Computadores
Eder Santana Freire 32
Tabela 11: Tabela de função para o modo de controle de um...
Organização e Arquitetura de Computadores
Eder Santana Freire 33
• Uma memória armazena informações binárias em grupos de ...
Organização e Arquitetura de Computadores
Eder Santana Freire 34
única diferença a ausência de linhas para controle de esc...
Organização e Arquitetura de Computadores
Eder Santana Freire 35
3. Unidade Central de Processamento
3.1 A CPU
• A CPU é o...
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 bi...
Organização e Arquitetura de Computadores
Eder Santana Freire 38
R1 ← R2 – R3
especifica R2 para a entrada A da ULA, R3 pa...
Organização e Arquitetura de Computadores
Eder Santana Freire 39
3.2.1 Organização da Pilha
• Uma pilha é um dispositivo d...
Organização e Arquitetura de Computadores
Eder Santana Freire 40
(chamadas de procedimentos) e interrupções.
• Deve-se tom...
Organização e Arquitetura de Computadores
Eder Santana Freire 41
• O PC é usado durante a fase de coleta, para a leitura d...
Organização e Arquitetura de Computadores
Eder Santana Freire 42
Instruções de Três Endereços
Computadores com formatos de...
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...
Organização e Arquitetura de Computadores
Eder Santana Freire 44
Modo de Auto-incremento e Auto-decremento – O mesmo que r...
Organização e Arquitetura de Computadores
Eder Santana Freire 45
modificam o caminho tomado pelo programa quando executado...
Organização e Arquitetura de Computadores
Eder Santana Freire 46
Modo Convenção Assembly Transferência de Registradores
En...
Organização e Arquitetura de Computadores
Eder Santana Freire 47
Nome Mnemônico
Incremento INC
Decremento DEC
Adição ADD
S...
Organização e Arquitetura de Computadores
Eder Santana Freire 48
quando aplicada à operação OR com a constante 1, produz o...
Organização e Arquitetura de Computadores
Eder Santana Freire 49
Rotação à direita ROR
Rotação à esquerda ROL
Rotação à di...
Organização e Arquitetura de Computadores
Eder Santana Freire 50
assembly como BR ADR, onde ADR é um nome simbólico para u...
Organização e Arquitetura de Computadores
Eder Santana Freire 51
Mnemônico Condição de Desvio Condição Testada
BZ Desvia s...
Organização e Arquitetura de Computadores
Eder Santana Freire 52
• São também conhecidas como traps.
• São exemplos de int...
Organização e Arquitetura de Computadores
Eder Santana Freire 53
4. Organização de Entrada e Saída
Este capítulo discute a...
Organização e Arquitetura de Computadores
Eder Santana Freire 54
• Grande banda dinâmica de cores contrastantes
• Grande v...
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Arquitetura de computadores_eder_freire
Próximos SlideShares
Carregando em…5
×

Arquitetura de computadores_eder_freire

282 visualizações

Publicada em

aaaaaaa

Publicada em: Dispositivos e hardware
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
282
No SlideShare
0
A partir de incorporações
0
Número de incorporações
7
Ações
Compartilhamentos
0
Downloads
6
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Arquitetura de computadores_eder_freire

  1. 1. Apostila sobre Organização e Arquitetura de Computadores Autor: Eder Santana Freire Versão 1.3
  2. 2. 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.
  3. 3. Í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. 4. 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
  5. 5. 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.
  6. 6. 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.
  7. 7. 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 de saí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.
  8. 8. 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.
  9. 9. 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.
  10. 10. 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.
  11. 11. 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
  12. 12. 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.
  13. 13. 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.
  14. 14. 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 objetivo da 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
  15. 15. 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.
  16. 16. 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:
  17. 17. 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
  18. 18. 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).
  19. 19. 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 dois bits. • 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.
  20. 20. 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
  21. 21. 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'
  22. 22. 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.
  23. 23. 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.
  24. 24. 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 às entradas 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.
  25. 25. 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:
  26. 26. 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
  27. 27. 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
  28. 28. 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).
  29. 29. 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ções biná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:
  30. 30. 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.
  31. 31. 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
  32. 32. 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.
  33. 33. 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
  34. 34. 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.
  35. 35. 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).
  36. 36. Organização e Arquitetura de Computadores Eder Santana Freire 36 Figura 27: Conjunto de registradores com uma ULA comum
  37. 37. 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 AAND 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
  38. 38. 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”.
  39. 39. 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 possuem basicamente 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
  40. 40. 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.
  41. 41. 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
  42. 42. 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):
  43. 43. 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 nos registradores. Modo Registrador Indireto – A instrução especifica um registrador cujo conteúdo fornece o endereço do operando na memória (isto é, o registrador contém um endereço, e não um valor).
  44. 44. Organização e Arquitetura de Computadores Eder Santana Freire 44 Modo de Auto-incremento e Auto-decremento – O mesmo que registrador indireto, exceto que o endereço no registrador é incrementado ou decrementado dependendo da operação. Modo de Endereçamento Direto – O endereço efetivo é igual ao endereço contido na instrução. O operando está na memória, e é especificado no campo do endereço. Modo de Endereçamento Indireto – O campo endereço fornece outro endereço na memória, onde o dado está efetivamente armazenado. A unidade de controle coleta a instrução da memória e usa o seu campo de endereço para novamente ler o endereço efetivo. Modo de Endereçamento Relativo – O conteúdo do registrador PC é adicionado ao campo endereço contido na instrução. Este campo pode ser um número positivo ou negativo. O resultado produz um endereço efetivo, relativo à atual (ou próxima) instrução (usada para branching). Modo de Endereçamento Indexado – O conteúdo de um registrador de índice é adicionado ao endereço parte da instrução, para se obter o endereço efetivo. O campo endereço especifica o endereço inicial de um arranjo de dados na memória. Cada operando no arranjo é armazenado na memória relativa ao endereço inicial. A distância entre o endereço inicial e o endereço do operando é armazenada no registrador de índice. Modo de Endereçamento do Registrador Base – O conteúdo de um registrador base é adicionado ao campo endereço da instrução para se obter o endereço efetivo. Funciona de forma similar ao modo de endereçamento indexado, exceto que o registrador agora é chamado de registrador base ao invés de registrador de índice. 3.3 Manipulação e Transferência de Dados • Os computadores possuem um conjunto extensivo de instruções, fornecendo ao usuário a flexibilidade de lidar com diversas tarefas computacionais • O conjunto de instruções de diferentes computadores diferem uns dos oturos, em sua maioria na forma em que os operandos são determinados pelos campos de endereço e modo. • As operações disponíveis em um conjunto de instruções na prática não são muito diferentes de um computador para outro. • O que ocorre, na verdade, é que os códigos binários para cada operação variam de computador para computador, mesmo para as mesmas operações. • Pode também acontecer de os nomes simbólicos dados às instruções na notação de linguagem de montagem serem diferentes em cada computador, mesmo em se tratando da mesma instrução. • A maioria das instruções de computador pode ser classificada em três categorias, a seguir: Instruções de transferência de dados Instruções de manipulação de dados Instruções de controle de programa • As instruções de transferência de dados causam a transferência de dados de um local para outro sem a necessidade de se modificar o conteúdo da informação binária. • As instruções de manipulação de dados fornecem capacidades de tomada de decisão e
  45. 45. Organização e Arquitetura de Computadores Eder Santana Freire 45 modificam o caminho tomado pelo programa quando executado no computador. • O conjunto de instruções de um computador em particular determina as operações de transferência de registradores e controla as decisões que estão disponíveis ao seu usuário. 3.3.1 Instruções de Transferência de Dados • As instruções de transferência de dados movem dados de um local do computador para outro, sem a necessidade de se modificar o conteúdo dos dados. • As transferências mais comuns ocorrem entre a memória e os registradores do processador, entre os registradores do processador e dispositivos de entrada e saída, e entre os próprios registradores do processador. A tabela 17 fornece uma lista de oito instruções de transferência de dados, usada em muitos computadores: Nome Mnemônico Load LD Store ST Move MOV Exchange XCH Input IN Output OUT Push PUSH Pop POP Tabela 17: Lista de instruções para transferência de dados • A instrução load é usada na maioria das vezes para designar uma transferência entre a memória e um registrador do processador, geralmente um acumulador. • O instrução store designa uma transferência de um registrador do processador para a memória. • A instrução move é usada em computadores com múltiplos registradores de CPU para designar uma transferência de um registrador para outro. E.a também é usada para transferência de dados entre os registradores da CPU e a memória, ou entre duas palavras de memória. • A instrução exchange realiza a troca de informação entre dois registradores ou um registrador e uma palavra de memória. • As instruções input e output transferem dados entre os registradores do processador e terminais de entrada ou saída. • As instruções push e pop transferem dados entre registradores do processador e uma pilha da memória. A tabela 18 mostra a convenção recomendada para linguagem assembly e a transferência de fato realizada em cada caso:
  46. 46. Organização e Arquitetura de Computadores Eder Santana Freire 46 Modo Convenção Assembly Transferência de Registradores Endereçamento Direto LD ADR AC ← M[ADR] Endereçamento Indireto LD @ADR AC ← M[M[ADR]] Endereçamento Relativo LD $ADR AC ← M[PC + ADR] Operando Imediato LD #NBR AC ← NBR Endereçamento Indexado LD ADR(X) AC ← M[ADR + XR] Registrador LD R1 AC ← R1 Registrador Indireto LD (R1) AC ← M[R1] Auto Incremento LD (R1)+ AC ← M[R1]; R1 ← R1 + 1 Tabela 18: Operações de transferência • ADR significa endereço; NBR significa um número ou operando • X é um índice, R1 é um registrador do processador, e AC é o registrador acumulador. • O caractere @ simboliza um endereço indireto. • O caractere $ antes de um endereço faz com que o mesmo seja relativo ao contador de programa PC. • O caractere # precede o operando em uma instrução de modo imediato. • Um registrador , quando colocado entre parênteses após o endereço simbólico, reconhece uma instrução de modo indexado • O modo registrador é simbolizado por fornecer o nome de um registrador do processador. No modo registrador indireto, o nome do registrador que contém o endereço de memória deve estar entre parênteses. • O modo de auto incremento se distingue do modo registrador indireto pela adição de um “+” após o registrador parentizado. • O modo de auto decremento é similar ao modo incremental, mas utiliza um “-” no lugar do “+”. Para que seja possível escrever programas em linguagem assembly para um computador, é necessário saber os tipos de instruções disponíveis e também ter familiaridade com os modos de endereçamento usados no computador em particular. 3.3.2 Instruções de Manipulação de Dados • O conjunto de instruções para manipulação de dados em um computador típico é normalmente dividido em três tipos: • Operações aritméticas As quatro operações aritméticas básicas são adição, subtração, multiplicação e divisão. Uma lista de instruções aritméticas típicas é dada na tabela 19:
  47. 47. Organização e Arquitetura de Computadores Eder Santana Freire 47 Nome Mnemônico Incremento INC Decremento DEC Adição ADD Subtração SUB Multiplicação MUL Divisão DIV Adição com carry (vai-um) ADDC Subtração com borrow (pega-emprestado) SUBB Negação (complemento de 2) NEG Tabela 19: Operações aritméticas típicas • A operação de incremento adiciona 1 ao valor armazenado em um registrador ou palavra de memória. Uma característica comum das operações de incremento quando executadas nos registradores do processador é que um número binário contendo apenas 1's, quando incrementado produz um resultado de apenas 0's. • A instrução de decremento subtrai 1 de um valor armazenado em um registrador ou palavra de memória. • Um número apenas com 0's, quando decrementado, produz um número apenas com 1's. • As instruções de adição, subtração, multiplicação e divisão podem estar disponíveis para diferentes tipos de dados. • O supostos tipos de dados presentes nos registradores do processador durante a execução destas operações aritméticas está incluso na definição do código de operação. • Uma instrução aritmética pode especificar dados de ponto fixo ou ponto flutuante, dados binários ou decimais, com precisão simples ou precisão dupla. 3.3.3 Instruções Lógicas e de Manipulação de Bits • Instruções lógicas e de manipulação de bits executam operações binárias em cadeias de bits armazenadas nos registradores. • Elas são úteis para manipulação de bits individuais ou de um grupo de bits que representam a informação codificada em binário. • A instrução AND é usada para zerar um bit ou um grupo selecionado de bits de um operando. Para qualquer variável booleana x, as relações x b0 = 0 e x b1 = x ditam que uma variável binária, quando em uma operação AND com a constante 0, produz o valor 0; mas a variável não tem o seu valor modificado quando em um AND com a constante 1. • Portanto, uma instrução AND pode ser usada para zerar os bits de um operando seletivamente, ao aplicar um AND ao mesmo, juntamente com outro operando que possui 0's nas posições de bit que devem ser zeradas. A instrução AND é também chamada de máscara porque a mesma mascara ou insere 0's em uma porção selecionada de um operando. • A instrução OR é usada para setar um bit ou um grupo selecionado de bits de um operando. Para qualquer variável booleana x, as relações x + 1 = 1 e x + 0 = x ditam que uma variável binária,
  48. 48. Organização e Arquitetura de Computadores Eder Santana Freire 48 quando aplicada à operação OR com a constante 1, produz o valor 1; mas a variável não muda o seu valor quando em um OR com a constante 0. • Portanto, uma instrução OR pode ser usada para setar seletivamente os bits de um operando ao aplicar a operação OR ao mesmo, juntamente com outro operando com 1's nas posições de bits que precisam ser setados para 1. • Similarmente, a instrução XOR é usada para seletivamente complementar os bits de um operando. • Isto ocorre por causa das relações booleanas X xor 1 = x'. Assim, uma variável binária é complementada quando aplicada a um XOR com a constante 1, mas não modifica em valor quando em um XOR com um 0. • Algumas outras instruções para manipulação de bits são mostradas na tabela 20. Bits individuais tais como o carry podem ser zerados, setados ou complementados, com as instruções apropriadas. A tabela 20 abaixo mostra as instruções mais comuns para manipulação de bits. Nome Mnemônico Zerar (clear) CLR Complemento COM E-lógico (AND) AND OU-lógico (OR) OR OU exclusivo XOR Zerar carry CLRC Setar carry SETC Complementar carry COMC Habilitar interrupção EI Desabilitar interrupção DI Tabela 20: Outras instruções para manipulação de bits 3.3.4 Instruções de Deslocamento • Deslocamentos são operações nas quais os bits de uma palavra são movidos para a esquerda ou para a direita. O bit deslocado na extremidade de uma palavra determina o tipo de deslocamento usado. Instruções de deslocamento podem ser tanto lógicas quanto aritméticas. Nome Mnemônico Deslocamento lógico à direita SHR Deslocamento lógico à esquerda SHL Deslocamento aritmético à direita SHRA Deslocamento aritmético à esquerda SHLA
  49. 49. Organização e Arquitetura de Computadores Eder Santana Freire 49 Rotação à direita ROR Rotação à esquerda ROL Rotação à direita com carry RORC Rotação à esquerda com carry ROLC Tabela 21: Tipos de instruções de deslocamento 3.4 Controle de Programa • As instruções são sempre armazenadas em locais sucessivos da memória. Quando processadas na CPU, as instruções são coletadas de locais de memória consecutivos, e então executadas • Cada vez que uma instrução é coletada da memória, o contador de programa (PC) é incrementado de forma que contenha o endereço da próxima instrução na seqüência. • Após a execução de uma instrução de transferência ou manipulação de dados, o controle retorna ao ciclo de coleta, com o contador de programa contendo o endereço da próxima instrução na seqüência. • Por outro lado, uma instrução do tipo controle de programa, quando executada, pode mudar o valor do endereço no contador de programa, e causar uma alteração no fluxo de controle. • Em outras palavras, instruções de controle de programa especificam condições para a alteração do conteúdo do contador de programa, enquanto instruções de transferência e manipulação de dados especificam condições para operações de processamento de dados. • A mudança no valor do contador de programa, como resultado da execução de uma instrução de controle de programa causa uma quebra na seqüência de execução de instruções. Esta é uma característica importante em computadores digitais, já que fornece controle sobre o fluxo de execução do programa e a capacidade de deslocamento do contador de programa para diferentes segmentos do mesmo. • Algumas instruções típicas de controle de programa são listadas na tabela 22. Nome Mnemônico Branch BR Jump JMP Skip SKP Call CALL Return RET Compare (por subtração) CMP Test (por operações AND) TST Tabela 22: Instruções de Controle de Programa Típicas • As instruções branch e jump são usadas intercambiavelmente para fazer a mesma coisa, mas algumas vezes as mesmas são usadas para denotar diferentes modos de endereçamento. • A instrução branch é normalmente uma instrução de um endereço. Ela é escrita em linguagem
  50. 50. Organização e Arquitetura de Computadores Eder Santana Freire 50 assembly como BR ADR, onde ADR é um nome simbólico para um endereço. • Quando executada, a instrução branch causa uma transferência do valor de ADR para o contador de programa. Uma vez que o PC contém o endereço da instrução a ser executada, a próxima instrução virá da localidade ADR. Instruções branch e jump podem ser condicionais ou incondicionais. Uma instrução branch incondicional causa um deslocamento para o endereço especificado sem quaisquer condições. 3.4.1 Condições de Bits de Estado • Bits de estado são também chamados de bits de código de condição, ou bits de flag. A figura 30 mostra o diagrama de blocos para uma ULA de 8 bits com um registrador de estado de 4 bits. Figura 30: Bits do registrador de estado • Os quatro bits de estado são simbolizados por C, S, Z e V. Os bits são setados ou zerados conforme os resultados das operações executadas na ULA • O bit C (carry, ou “vai-um”) é setado para 1 se o carry final Cg de uma operação aritmética for 1. Da mesma forma, este bit é zerado, caso o carry seja zero. • O bit S (sign) é setado para 1 se o bit de ordem mais alta F7 for 1. De forma análoga, o bit S é zerado se F7 for zero. • O bit Z (zero) é setado para 1 se a saída da ULA contém apenas 0's. Caso contrário, este bit é zerado. Em outras palavras, Z = 1 se a saída for zero, e Z = 0 se a saída for diferente de zero. • O bit V (overflow) é setado para 1 se a operação OU - Exclusivo dos últimos dois carries é igual a 1, e assume o valor 0 caso contrário. Esta é a condição para que ocorra um overflow quando números negativos estão em complemento de 2. Para a ULA de 8 bits, V será igual a 1 se a saída for maior que +127 ou menor que -128. 3.4.2 Instruções de Desvio Condicional • A tabela 23 fornece uma lista das instruções de desvio mais comuns. Cada mnemônico é construído com a letra B (de branch) e uma abreviação do nome da condição. • Quando o estado da condição oposta é usado, a letra N (de não) é usada.
  51. 51. Organização e Arquitetura de Computadores Eder Santana Freire 51 Mnemônico Condição de Desvio Condição Testada BZ Desvia se for zero Z = 1 BNZ Desvia se não for zero Z = 0 BC Desvia se houver carry C = 1 BNC Desvia se não houver carry C = 0 BP Desvia se for positivo S = 0 BM Desvia se for negativo S = 1 BV Desvia se houver overflow V = 1 BNV Desvia se não houver overflow V = 0 Condições de comparação sem sinal (A – B) BHI Desvia se for maior A > B BHE Desvia se for maior ou igual A>= B BLO Desvia se for menor A < B BLOE Desvia se for menor ou igual A <= B BE Desvia se for igual A = B BNE Desvia se não for igual A != B Condições de comparação com sinal (A – B) BGT Desvia se for maior que A > B BGE Desvia se for maior ou igual A >= B BLT Desvia se for menor que A < B BLE Desvia se for menor ou igual A <= B BE Desvia se for igual A = B BNE Desvia se não for igual A != B Tabela 23: Instruções de desvio condicional 3.4.3 Tipos de Interrupção Interrupções Externas • São provenientes de dispositivos de entrada e saída (E/S), de um dispositivo de temporização, de um circuito monitorando o suprimento de energia, ou de qualquer outra fonte externa. Interrupções Internas • Ocorrem pelo uso ilegal ou errôneo de uma instrução ou dado.
  52. 52. Organização e Arquitetura de Computadores Eder Santana Freire 52 • São também conhecidas como traps. • São exemplos de interrupções internas: overflow, tentativa de divisão por zero, etc. Interrupção por software • É um tipo especial de instrução de chamada que se comporta como um procedimento de interrupção a qualquer ponto desejado no programa. 3.5 RISC (Reduced Instruction Set Computer) • Significa computador com conjunto de instruções reduzido, em oposição a CISC (Complex Instruction Set Computer), cujo conjunto de instruções é mais complexo. • O conceito de uma arquitetura RISC envolve a tentativa de se reduzir o tempo de execução dos programas ao se simplificar o conjunto de instruções dos computadores. As principais características de um processador RISC são: 1. Instruções relativamente poucas. 2. Modos de endereçamento relativamente poucos. 3. Acesso à memória limitado a instruções de carga e armazenamento (load e store). 4. Todas as operações são feitas através de registradores da CPU. 5. Formato de instrução facilmente descodificável, e de tamanho fixo. 6. Execução de instruções em um único ciclo de clock. 7. Unidade de controle hardwired, ao invés de micro-programada. • O uso da arquitetura de processadores RISC segue algumas restrições, que são citadas abaixo: 1. Um número relativamente grande de registradores na unidade do processador. 2. Uso de janelas de registradores sobrepostas, para acelerar chamadas a procedimentos e o seu retorno. 3. Pipeline de instruções eficiente. 4. Suporte do compilador para tradução eficiente de programas em linguagens de alto nível para programas em linguagem de máquina.
  53. 53. Organização e Arquitetura de Computadores Eder Santana Freire 53 4. Organização de Entrada e Saída Este capítulo discute as técnicas que os computadores usam para se comunicarem com dispositivos de entrada e saída. Unidades de interface são apresentadas para mostrar a forma com a qual o processador interage com os periféricos externos. O procedimento para transferência assíncrona é discutido; E/S programada; transferências iniciadas por interrupções, acesso direto à memória e o uso de processadores de entrada e saída. Exemplos específicos ilustram os procedimentos para a transmissão de dados de forma serial. 4.1 Dispositivos Periféricos • O subsistema de entrada e saída de um computador é conhecido como E/S, ou I/O (input/output). • Este sistema fornece um modo eficiente de comunicação entre o sistema central e o ambiente externo. • Dispositivos que estão sob o controle direto do computador são chamados de dispositivos conectados on-line. • Estes dispositivos são designados para ler ou gravar informação da ou para a memória a partir de um comando da CPU e são consideradas como parte do sistema total do computador. • Dispositivos de entrada ou saída conectados ao computador são também chamados de periféricos. Monitor e Teclado • O meio mais familiar de se inserir informações em um computador é através de um teclado similar ao de uma máquina de escrever, que permite que o usuário entre com informações alfanuméricas diretamente. • Cada vez em que uma tecla é pressionada, o terminal envia um caractere codificado em binário para o computador. Monitor • É um dispositivo de saída que serve de interface visual para o usuário, na medida em que permite a visualização dos dados e sua interação com eles. • Os monitores são classificados de acordo com a tecnologia de amostragem de vídeo utilizada na formação da imagem. • Atualmente, são duas as tecnologias mais usadas: 1. CRT (Cathodic Ray Tube, ou Tubo de raios catódicos): é o monitor tradicional, em que a tela é repetidamente atingida por um feixe de elétrons, que atuam no material fosforescente que a reveste, assim formando as imagens. Algumas vantagens dos monitores CRT são: • Sua longa vida útil • Baixo custo de fabricação
  54. 54. Organização e Arquitetura de Computadores Eder Santana Freire 54 • Grande banda dinâmica de cores contrastantes • Grande versatilidade, podendo funcionar em diversas resoluções, sem que ocorram grandes distorções na imagem Como desvantagens deste tipo de monitor, podem ser citadas: • As suas grandes dimensões e peso; • O consumo elevado de energia; • O seu efeito de cintilação (também chamado de flicker) • A possibilidade de emissão de radiação danosa à saúde (raios x), em longos períodos de emissão Figura 31: Esquema de funcionamento de um monitor CRT 2. LCD (Liquid Cristal Display, ou Tela de cristal líquido): é o tipo mais moderno de monitor. Nele, a tela é composta por cristais que são polarizados para gerar as cores. Os monitores de cristal líquido possuem as seguintes vantagens: • Baixo consumo de energia; • Dimensões e peso reduzidos; • Não-emissão de radiações nocivas; • A capacidade de formar uma imagem estável, sem cintilação, que cansa menos a visão – desde que esteja operando na resolução nativa; Como desvantagens dos LCDs, são citadas:

×