introdução – conceitos básicos
Transcrição
introdução – conceitos básicos
ArquiteturaComputadores.doc - 28/02/yy – página 1 APOSTILA DE ARQUITETURA DE COMPUTADORES Sérgio Miranda Paz 2005 ArquiteturaComputadores.doc - 28/02/yy – página 2 INTRODUÇÃO – CONCEITOS BÁSICOS “Arquitetura de Sistemas”, “Sistemas Operacionais” no “Aurélio”: sistema: conjunto de elementos, materiais ou ideais, entre os quais se possa encontrar ou definir alguma relação arquitetura: disposição das partes ou elementos de um edifício ou espaço urbano; (figuradamente) plano, projeto operação: complexo de meios que se combinam para a obtenção de certo resultado termos de sentido amplo, aplicáveis a muitos setores de atividades (e não especificamente à Computação!) neste curso, serão estudados os sistemas “computacionais” computador: aquele que faz cômputos (cômputo: conta, cálculo) (em processamento de dados): aparelho eletrônico capaz de receber informações, submetê-las a um conjunto especificado e predeterminado de operações lógicas ou matemáticas, e fornecer o resultado dessas operações; cérebro eletrônico (Aurélio, 1975) serão estudados os componentes dos sistemas computacionais, e suas relações, numa abordagem “top-down” (“de cima para baixo”) os sistemas computacionais englobam não só os computadores de uso geral, mas também os equipamentos computadorizados, de uso específico, ou dedicado (exemplos: eletrodomésticos diversos, controladores de processos, dispositivos para automação, etc.) ArquiteturaComputadores.doc - 28/02/yy – página 3 EVOLUÇÃO HISTÓRICA DOS COMPUTADORES dispositivos mecânicos (500a.C. a 1880) ábaco, em 500a.C., na Babilônia usado por comerciantes e agricultores estendeu-se a todo o Império Romano máquina de Blaise Pascal (matemático e filósofo francês), em 1642 aprimoramento do ábaco dotado de engrenagens dentadas, e de uma manivela precursora das calculadoras mecânicas máquina de Gottfried Leibniz (matemático e filósofo alemão), em 1673 aprimoramento da máquina de Pascal capaz de executar multiplicação e divisão máquinas de Charles Babbage (matemático inglês, considerado o “Pai da Computação Moderna”) máquina de diferenças, em 1823 máquina analítica baseada no processo das diferenças finitas usada para cálculos para navegação, pela Marinha Inglesa capaz de calcular polinômios e funções trigonométricas com 15 algarismos e de armazenar resultados (memória) estrutura semelhante à atual (entrada/saída, memória, processador) uso de cartões perfurados ficou apenas no projeto (a tecnologia para sua construção era insuficiente na época) problemas dos dispositivos mecânicos: dificuldade de construção, lentidão (devido à inércia das engrenagens), grandes dimensões, alto custo, pouca confiabilidade, reduzida capacidade de armazenamento dispositivos eletromecânicos (1880 – 1945) principal componente: relê (usado, na época, em telefonia) máquina tabuladora de Herman Hollerith, em 1889 acionada por motor elétrico classificava e ordenava informações em cartões perfurados usada no censo de 1890, nos Estados Unidos criou a “Computer Tabulating Recording Corporation”, que, em 1924, deu origem à “IBM – International Business Machines” máquinas de Konrad Zuse (estudante de engenharia alemão), em 1935-1941 primeira calculadora eletrônica uso de relês eletromecânicos, e do sistema binário máquinas Z1, Z2, Z3 e Z4, utilizadas no projeto de aviões e mísseis alemães destruídas durante a Segunda Guerra “Mark I”, de Howard Aiken (físico e matemático norte-americano), em 1944 uso das idéias de Charles Babbage uso de relês eletromecânicos, e do sistema decimal projeto financiado pela IBM executava uma soma em 6s, uma divisão em 12s ArquiteturaComputadores.doc - 28/02/yy – página 4 computadores eletrônicos (a partir de 1945) divisão (subjetiva) em gerações, baseada na tecnologia empregada 1a. geração: computadores à válvula válvula: dispositivo eletrônico, constituído por uma cápsula de vidro, com vácuo e placas metálicas em seu interior, com elevados consumo de energia e dissipação de calor “Colossus”, de Alan Turing (matemático inglês), de 1943 ENIAC (“Electronic Numerical Integrator And Computer”), de John Mauchly e John Eckert (professores norte-americanos, da Universidade da Pensilvânia) em 1958, a IBM já era, destacadamente, o maior fabricante de computadores do mundo 2a. geração: computadores a transistor transistor: dispositivo de silício, produzido pela primeira vez pelos laboratórios Bell, nos Estados Unidos, em 1947; mais barato, menor, de menor consumo e dissipação de calor do que a válvula computadores da série 7000, da IBM baseados nos computadores da série 700, mas agora transistorizados computadores da série PDP, da DEC (“Digital Equipment Corporation”), a partir de 1957 primeiro computador para fins comerciais utilizado no censo de 1950, nos Estados Unidos computadores da série 700, da IBM, ao longo dos anos 50 primeiro computador com programa armazenado (arquitetura de von Neumann, ainda hoje utilizada pela maioria dos computadores) dados e programa armazenados na mesma memória execução seqüencial de instruções: o ciclo de instrução formado pelos ciclos de busca e de execução UNIVAC 1 (“Universal Automatic Computer”), de Mauchly e Eckert, nos Estados Unidos, em 1949 projeto baseado no ENIAC abandonado por Mauchly e Eckert, que fundaram sua empresa UNIVAC (atual UNYSIS) IAS (do “Institute for Advanced Studies”), da Universidade de Princeton, Estados Unidos considerado o primeiro computador do mundo projeto financiado pelo exército norte-americano, para cálculos balísticos (não foi, porém, utilizado na guerra, pois ficou pronto depois do seu final) usado posteriormente para o desenvolvimento da bomba de hidrogênio 18.000 válvulas, 30 toneladas, 1.600m2, 140kW, 6.000 chaves cerca de 10.000 operações por segundo problema: manutenção (freqüente queima de válvulas) desmontado em 1955 EDVAC (“Electronic Discret Variable Automatic Computer”), em 1946 dedicado à quebra de códigos militares secretos alemães manteve-se em sigilo até recentemente não é reconhecido como o primeiro computador de menor porte do que as máquinas IBM, porém de ótimo desempenho, e custo bem menor grande sucesso comercial, o que fez da DEC a principal rival da IBM 3a. geração: computadores com circuitos integrados circuito integrado: circuito de reduzidíssimas dimensões, com milhares de transistores, construído pela primeira vez pela Texas Instruments, em 1958, numa peça de germânio, e aprimorado pela Fairchild Semiconductor, usando pastilhas de silício (“chips”) série IBM /360, da IBM, a partir de 1964 PDP11, da DEC, em 1970 introdução do conceito de “família” de computadores (sucessivos aprimoramentos, com manutenção da compatibilidade com os modelos anteriores) introdução da multiprogramação (vários programas compartilhando memória e processador, dando a impressão de execução simultânea) introdução do sistema operacional (conjunto de programas para gerenciar os recursos de “hardware”) “minicomputador” de maior sucesso comercial “Patinho Feio”, do Laboratório de Sistemas Digitais da Escola Politécnica da Universidade de São Paulo, em 1971/1972 primeiro computador projetado e construído no Brasil desenvolvido por professores e alunos da Escola Politécnica processador de 8 bits memória principal: 4Kbytes (de núcleo de ferrite) ciclo de instrução: 2s periféricos: leitora de fita de papel perfurada, terminal de vídeo, impressora, chaves e lâmpadas ArquiteturaComputadores.doc - 28/02/yy – página 5 4 . geração: computadores com circuitos integrados em escala muito grande (VLSI) VLSI (“very large scale integration”): milhões de transistores num único “chip”, produzido a partir do início dos anos 70, graças aos avanços da microeletrônica computadores de grande porte (“main frames”) a CRAY diversos fabricantes e modelos Intel (e outros): 8051 Motorola: 68HC05, 68HC11 National: Cop8 Microchip: PIC microcomputador, ou computador pessoal primeiro: INTEL-4004, da Intel Corporation, em 1971 outros da Intel: 8008, 8080 (em 1973), 8086 (em 1978), 80286 (em 1982), 80386 (em 1985), 80486 (em 1989), Pentium (em 1993), Pentium Pro (em 1993), Pentium II (em 1997) da Motorola: MC 6800 (em 1974), MC 68000 (em 1979), MC 68040 (em 1989) da Zilog: Z80 (em 1974), Z8000 (em 1979) microcontrolador: processador + memória + módulos de entrada/saída numa única pastilha primeiro “supercomputador”, assim chamado pela sua grande capacidade de processamento microprocessador: processador numa única pastilha aprimoramento da família /360, da IBM VAX, da DEC baseado em microprocessador baixo custo, pequena dimensão tipo “PC” (originalmente produzido pela IBM), com microprocessadores da linha Intel tipo “Macintosh” (originariamente produzido pela Apple), com microprocessadores produzidos pela Motorola tipo “PowerPC” (associação entre a Apple, a Motorola e a IBM) 5a. geração: ??? Lei de Moore (enunciada nos anos 70): “a velocidade e a capacidade de memória dos computadores dobram a cada 18 meses” há algum limite para isso? quando será atingido? porém. desde os anos 40, não houve significativas mudanças na arquitetura... ArquiteturaComputadores.doc - 28/02/yy – página 6 ARQUITETURA DE VON NEUMANN também chamada de arquitetura de “programa armazenado”, pois dados e instruções do programa compartilham a mesma memória para seu armazenamento componentes do sistema computacional, segundo a arquitetura de von Neumann unidade central de processamento (UCP, ou CPU, de “central process unit”) memória módulos de entrada módulos de saída M ó d u lo s de E ntrad a U n id a d e C en tral d e Processam en to M ó d u lo s d e S a íd a M e m ó r ia P r in c ip a l M e m ó r ia S e c u n d á r ia exemplos de sistemas computacionais de uso geral: supercomputadores, computadores de grande porte (“main frames”), minicomputadores, estações de trabalho (“workstations”), microcomputadores (computadores pessoais) de uso específico: aparelhos de vídeo-cassete; controladores de máquinas industriais; computadores de bordo de veículos; aparelhos eletrodomésticos MÓDULOS DE ENTRADA: responsáveis pela recepção de dados do mundo exterior (inclusive do operador) correspondem aos órgãos dos sentidos do ser humano interface com diversos dispositivos de entrada exemplos de dispositivos: teclado, “mouse”, botões, chaves, “scanner”, leitora óptica (de disco, de código de barras, de fita ou cartões perfurados), leitora magnética (de disco, de fita), microfone, sensores, modem de linha de comunicação UNIDADE CENTRAL DE PROCESSAMENTO: responsável pelo processamento dos dados recebidos do mundo exterior e pelo controle dos demais componentes corresponde ao cérebro do ser humano constituída pela unidade aritmética e lógica, pelos registradores e pela unidade de controle MÓDULOS DE SAÍDA: responsáveis pela transmissão de dados do mundo exterior (inclusive ao operador) correspondem aos músculos do ser humano interface com diversos dispositivos de saída exemplos de dispositivos: vídeo, mostrador (“display”), lâmpadas, painel, impressora, gravador magnético (de disco, de fita), alto-falante, atuadores e motores diversos, modem de linha de comunicação MEMÓRIA: responsável pelo armazenamento de dados e de programas corresponde à memória do ser humano pode ser classificada como Principal (acessada diretamente pela UCP) ou Secundária (acessada via módulos de entrada/saída) ArquiteturaComputadores.doc - 28/02/yy – página 7 COMPUTADOR “SERGIUM” (computador fictício, de poucos recursos, criado para fins pedagógicos, a fim de ilustrar a Arquitetura de von Neumann e o ciclo de instrução) registradores (1 byte=8 bits) instrução de máquina (2 bytes) EPI: endereço da próxima instrução código da operação | operando COD: código da instrução OPE: operando da instrução AC: acumulador AUX0-3: registradores auxiliares EAUX: endereço do registrador auxiliar A, B: operandos da Unidade Aritmética e Lógica C: resultado da Unidade Aritmética e Lógica EM: endereço da memória DM: dado da memória EE/S: endereço da porta de Entrada/Saída DE/S: dado da porta de Entrada/Saída conjunto de instruções código mnemônico operação Instruções de entrada e saída de dados 0 1 ENT PORTA=>AC SAI AC=> PORTA copiar porta <operando> no acumulador copiar acumulador na porta <operando> Instruções de movimentação de dados 2 3 4 5 6 COP AUX=>AC COP AC=>AUX COP MEM=>AC COP AC=>MEM COP VAL=>AC copiar auxiliar <operando> no acumulador copiar acumulador no auxiliar <operando> copiar posição <operando> da memória no acumulador copiar acumulador na posição <operando> da memória copiar o valor <operando> no acumulador 10 SOM ACAUX=>AC somar ao acumulador o auxiliar <operando> e guardar o resultado no acumulador Z: resultado zero (C=0) 11 SUB ACAUX=>AC subtrair do acumulador o auxiliar <operando> e guardar o resultado no acumulador P: resultado positivo (C>0) 12 SOM ACVAL=>AC somar ao acumulador o valor <operando> e guardar o resultado no acumulador 13 SUB ACVAL=>AC subtrair do acumulador o valor <operando> e guardar o resultado no acumulador 20 21 22 23 VAI VAI SE Z=1 VAI SE P=1 PÁRA Instruções de operações aritméticas indicadores (1 bit) Instruções de controle de execução desviar para a instrução na posição <operando> desviar para a instrução na posição <operando> se o indicador Z = 1 desviar para a instrução na posição <operando> se o indicador P = 1 parar (<operando> não considerado) ArquiteturaComputadores.doc - 28/02/yy – página 8 COMPUTADOR “SERGIUM” Funcionamento da Unidade de Controle no “reset”: 0) zera EPI ciclo de máquina: 1) ciclo de busca na memória 1.1) busca do código da operação na memória 1.1.1) copia EPI em EM 1.1.2) lê na memória (posição apontada por EM) e copia em DM 1.1.3) copia DM em COD 1.1.4) soma 1 a EPI 1.2) busca do operando 1.2.1) copia EPI em EM 1.2.2) lê na memória (posição apontada por EM) e copia em DM 1.2.3) copia DM em OPE 1.2.4) soma 1 a EPI 2) ciclo de execução se COD = 0: instrução ENT PORTA=>AC se COD = 1: instrução SAI AC>=PORTA 2.1) copia OPE em EE/S 2.1) copia OPE em EE/S 2.2) lê porta (apontada por EE/S) e copia em DE/S 2.2) copia AC em DE/S 2.3) copia DE/S em AC 2.3) copia DE/S e escreve em porta (apontada por EE/S) se COD = 2: instrução COP AUX=>AC se COD = 3: instrução COP AC=>AUX 2.1) copia OPE em EAUX 2.1) copia OPE em EAUX 2.2) copia AUX (apontado por EAUX) em AC 2.2) copia AC em AUX (apontado por EAUX) se COD = 4: instrução COP MEM=>AC se COD = 5: instrução COP AC=>MEM 2.1) copia OPE em EM 2.1) copia OPE em EM 2.2) lê na memória (posição apontada por EM) e copia em DM 2.2) copia AC em DM 2.3) copia DM em AC 2.3) copia DM e escreve na memória (posição apontada por EM) se COD = 6: instrução COP VAL=>AC 2.1) copia OPE em AC se COD = 10: instrução SOM AC+AUX=>AC se COD = 11: instrução SUB ACAUX=>AC 2.1) copia AC em A 2.1) copia AC em A 2.2) copia OPE em EAUX 2.2) copia OPE em EAUX 2.3) copia AUX (apontado por EAUX) em B 2.3) copia AUX (apontado por EAUX) em B 2.4) calcula C = A + B 2.4) calcula C = A – B 2.5) se C=0, então Z = 1, senão, Z = 0 2.5) se C=0, então Z = 1, senão, Z = 0 2.6) se C>0, então P = 1, senão, P = 0 2.6) se C>0, então P = 1, senão, P = 0 2.7) copia C em AC 2.7) copia C em AC se COD = 12: instrução SOM AC+VAL=>AC se COD = 13: instrução SUB ACVAL=>AC 2.1) copia AC em A 2.1) copia AC em A 2.2) copia OPE em B 2.2) copia OPE em B 2.3) calcula C = A + B 2.3) calcula C = A – B 2.4) se C=0, então Z = 1, senão, Z = 0 2.4) se C=0, então Z = 1, senão, Z = 0 2.5) se C>0, então P = 1, senão, P = 0 2.5) se C>0, então P = 1, senão, P = 0 2.6) copia C em AC 2.6) copia C em AC se COD = 20: instrução VAI se COD = 21: instrução VAI SE Z=1 2.1) copia OPE em EPI 2.1) se Z=1, copia OPE em EPI se COD = 22: instrução VAI SE P=1 se COD = 23: instrução PÁRA 2.1) se P=1, copia OPE em EPI 2.1) subtrai 1 de EPI 2.2) subtrai 1 de EPI 3) volta ao passo 1 Obs.: as operações em negrito fazem acesso à memória ArquiteturaComputadores.doc - 28/02/yy – página 9 Exemplos de programas do Computador “SERGIUM” 1) Ler dois números no teclado, armazená-los na memória (nas posições A e B, respectivamente 100 e 101), e imprimir a soma deles. endereç conteúdo o 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... ... 100 101 instrução rótulo 0 0 5 100 3 0 0 0 5 101 10 0 1 2 23 0 ... ... ??? ??? comentário mnemônico operando ENT PORTA=>AC 0 lê o primeiro número (A) COP AC=>MEM A guarda o primeiro número (A) na memória (endereço 100) COP AC=>AUX 0 salva o primeiro número (A) num registrador auxiliar (pois o acumulador vai ser perdido) ENT PORTA=>AC 0 lê o segundo número (B) COP AC=>MEM B guarda o segundo número (B) na memória (endereço 101) SOM AC+AUX 0 soma o segundo número (B) com o primeiro número (A, armazenado num registrador auxiliar) SAI AC=>PORTA 2 imprime a soma PÁRA 0 pára o programa (A + B) ... ... ... ??? ??? números lidos (A e B) 2) Carregar dois números previamente armazenados na memória (nas posições A e B, respectivamente 100 e 101), e mostrar no vídeo o maior deles. endereç conteúdo o 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... ... 100 101 4 100 3 1 4 101 3 2 11 1 22 18 2 1 1 1 23 0 2 2 1 1 23 0 ... ... ??? ??? instrução rótulo AMAIOR: BMAIOR: comentário mnemônico operando COP MEM=>AC A pega o primeiro número (A) na memória (endereço 100) COP AC=>AUX 1 salva o primeiro número (A) no auxiliar 1 COP MEM=>AC B pega o segundo número (B) na memória (endereço 101) COP AC=>AUX 2 salva o segundo número (B) no auxiliar 2 SUB ACAUX=>AC 1 subtrai o primeiro número (A) do segundo (B) (isto é, o segundo menos o primeiro (B-A)) VAI SE P=1 BMAIOR desvia se o segundo número (B) é maior COP AUX=>AC 1 recupera o primeiro número (A) SAI AC=>PORTA 1 apresenta o primeiro número (A) no vídeo PÁRA 0 pára o programa COP AUX=>AC 2 recupera o segundo número (B) SAI AC=>PORTA 1 apresenta o segundo número (B) no vídeo PÁRA 0 pára o programa ... ... ... ??? ??? números a serem comparados (A e B) ArquiteturaComputadores.doc - 28/02/yy – página 10 CICLO DE INSTRUÇÃO como visto no exemplo (Sergium), as instruções de um programa são executadas ciclicamente, seqüencialmente c ic l o d e in s t r u ç ã o i n í c io f im o ciclo de instrução pode, simplificadamente, ser dividido em 2 etapas, impropriamente também chamadas de “ciclos” o ciclo de busca, na memória, da instrução a ser executada o ciclo de execução da instrução in íc io c ic l o d e busca c ic l o d e execução f im “ciclo” de busca: obtenção da instrução a ser executada 2 1 3 etapas 1: cálculo do endereço do código da instrução 2: leitura do código da instrução, na memória 3: decodificação da instrução etapas realizadas obrigatoriamente, para todas as instruções “ciclo” de execução: execução da instrução propriamente dita 8 5 4 6 7 etapas 4: cálculo dos endereços dos operandos 5: leitura dos valores dos operandos, na memória (ou em registradores) 6: execução da operação, com os valores dos operandos 7: cálculo dos endereços dos resultados da operação 8: escrita dos valores dos resultados, na memória (ou em registradores) etapas que, para algumas instruções, podem não ser realizadas, e, para outras, podem ser realizadas diversas vezes ArquiteturaComputadores.doc - 28/02/yy – página 11 interrupção certas operações executadas pelo computador (como, por exemplo, entradas e saídas) consomem um tempo relativamente grande, quando comparado ao tempo do ciclo de instrução ao disparar uma operação de entrada/saída, o processador pode permanecer executando instruções que verificam se a operação já foi concluída quando isto ocorre, o processador executa um tratamento de fim de operação de entrada/saída, e retoma a execução normal do programa essa estratégia é conhecida como “espera por sinalização” (ou “wait for flag”) A 1 2 3 B 1 2 3 C te m p o trechos do programa sendo executado 1: disparo da operação de entrada/saída 2: espera pelo fim da operação de entrada/saída 3: tratamento do fim da operação de entrada/saída em outra possível estratégia, após disparar uma operação de entrada/saída, o operador prossegue com a execução normal do programa quando a operação de entrada/saída é concluída, o dispositivo por ela responsável avisa o processador, que interrompe a execução do programa, para executar o tratamento de fim de operação de entrada/saída em seguida, o processador retoma a execução do programa, a partir do ponto em que se deu a interrupção A 1 B1 2 A, B, C: 3 B2 1 C1 3 C2 te m p o 2 B1, B2: trechos do programa que compõem o trecho B C1, C2: trechos do programa que compõem o trecho C com a estratégia da interrupção, o processador não perde tempo esperando o fim de uma operação de entrada/saída interrupções podem ser geradas, também, por outros motivos situações anormais detectadas durante a execução do programa, como tentativa de divisão por zero, de execução de instrução inválida, ou de acesso a área de memória proibida falhas de “hardware” detectadas, como falha na memória ou na alimentação fim de uma temporização disparada pelo programa para permitir a ocorrência de uma interrupção, o ciclo de instrução ganha um 3o. passo “ciclo” de interrupção: atendimento a um pedido de interrupção, caso este tenha ocorrido e esteja habilitado 9 10 etapas 9: verificação da existência de pedido de interrupção 10: atendimento do pedido de interrupção (desvio para a rotina de seu tratamento) etapas que podem ser inibidas ou habilitadas pelo programa ArquiteturaComputadores.doc - 28/02/yy – página 12 esquema geral do ciclo de instrução 2 1 5 6 c ic l o d e execução 4 c ic l o d e busca f im 3 i n í c io 8 7 9 c ic l o d e in t e r r u p ç ã o 10 ArquiteturaComputadores.doc - 28/02/yy – página 13 CONEXÃO ENTRE OS COMPONENTES os componentes do sistema computacional se comunicam entre si, trocando informações que podem ser classificadas em dados endereços sinais de controle MEMÓRIA ESCRITA LEITURA DADOS ENDEREÇO INSTRUÇÕES DADOS MÓDULO E/S ESCRITA DADOS LEITURA ENDEREÇO DADOS Sinais de Controle UCP ENDEREÇOS INSTRUÇÕES DADOS Sinais de Controle Sinais de Controle informações destinadas a DADOS informações provenientes de MEMÓRIA sinais de controle de leitura e de escrita dados lidos dados a serem escritos instruções lidas endereço dos dados a serem lidos ou escritos MÓDULO DE ENTRADA sinais de controle de leitura dados obtidos no mundo exterior dados fornecidos pelo mundo exterior sinais de controle de “status” endereço do dispositivo de entrada MÓDULO DE SAÍDA sinais de controle de escrita dados fornecidos ao mundo exterior dados a serem enviados ao mundo exterior sinais de controle de “status” endereço do dispositivo de saída UNIDADE CENTRAL DE PROCESSAMENTO endereço (de memória ou de módulo de sinais de controle de “status” entrada/saída) dados lidos na memória ou no módulo de entrada dados a escrever na memória ou no módulo de saída instruções lidas na memória sinais de controle diversos ArquiteturaComputadores.doc - 28/02/yy – página 14 a troca de informações se faz através de conexões, chamadas de vias, ou barramentos barramento: conjunto de sinais (tipicamente, entre 50 e 100) com informações trocadas entre os componentes de um sistema computacional de acordo com a função dos sinais, o barramento pode ser: de de de de endereços dados controle alimentação de acordo com a utilização ao longo do tempo, o barramento pode ser: dedicado: cada linha é exclusiva a um único sinal multiplexado: uma mesma linha pode ser utilizada por sinais diferentes, em instantes diferentes é comum o compartilhamento de linhas por sinais de endereços e de dados vantagem: redução do número de linhas (“largura” do barramento) em relação à UCP, o barramento pode ser: externo: conecta UCP, Memória e Entradas e Saídas interno: conecta componentes da UCP (registradores, unidade aritmética e lógica, unidade de controle) de acordo com a relação temporal entre os sinais, o barramento pode ser: síncrono: os eventos (colocação, retirada, alteração de sinais) são todos coordenados por um sinal de sincronismo (o sinal “clock”) assíncrono: um evento em um sinal depende da ocorrência de outro evento, em outro sinal vantagens: maior flexibilidade e, em geral, maior velocidade desvantagem: maior complexidade “largura” do barramento: número de linhas que o compõem no caso do barramento de endereços, define o número de posições que podem ser referenciadas: N = 2n exemplo: se o barramento de endereços da memória é de 20 linhas, podem ser referenciadas 220 = 1M posições de memória em geral, diversos componentes (UCP, placas de memória, módulos de entrada/saída) se conectam ao barramento, provocando: a necessidade de um esquema de arbitragem, quando mais de um componente deseja transmitir informações pela mesma via arbitragem centralizada: um controlador central gerencia todos os pedidos de acesso ao barramento, e resolve as “colisões” arbitragem descentralizada: todos os dispositivos conectados ao barramento são capazes de acessá-lo, sem que haja “colisões” a separação hierárquica dos barramentos, através de interfaces de expansão e de pontes (“bridges”) dispositivos podem ser agrupados em barramentos, de acordo com sua posição hierárquica, ou com sua velocidade de operação ArquiteturaComputadores.doc - 28/02/yy – página 15 UCP b a r r a m e n t o lo c a l ponte b a r r a m e n t o d e s is t e m a m e m ó r ia "cache " m e m ó r ia p r in c ip a l b a r r a m e n t o d e a lt a v e lo c id a d e t e r m in a l g r á f ic o v íd e o r e d e lo c a l d is p o s it iv o s d e E / S d e a lt a v e lo c id a d e in t e r f a c e d e e xpansão b a r r a m e n t o d e m é d ia v e lo c id a d e fax m odem c o m u n ic a ç ã o s e r ia l d is p o s it iv o s d e E / S d e m é d ia v e lo c id a d e exemplo de barramento: PCI (“peripheral component interconnect”, ou interconexão entre componentes periféricos) lançado no início dos anos 90, pela Intel, para os sistemas da linha Pentium alta velocidade (> 4Gbits/s) síncrono arbitragem centralizada multiplexação entre endereços e dados 32 linhas de dados, com possível expansão para 64 linhas ArquiteturaComputadores.doc - 28/02/yy – página 16 ORGANIZAÇÃO E HIERARQUIA DA MEMÓRIA memória: componente do sistema computacional responsável pelo armazenamento de informações (dados e programas) operações: analogia com o ser humano: memória escrita, ou gravação, ou armazenamento de informação (“write”) leitura, ou recuperação de informação previamente armazenada (“read”) conceitos: endereço: indica “onde”, isto é, a posição na qual a informação deve ser escrita ou lida conteúdo: indica “o quê”, isto é, a informação que deve ser escrita ou que foi lida unidade endereçável (em geral, chamada de “palavra”): conjunto de bits que ocupam uma posição na memória um sistema computacional pode dispor de diferentes dispositivos para a função de armazenamento de informações diferentes tipos de memória características principais desses tipos localização capacidade unidade de transferência método de acesso desempenho propriedades físicas custo localização: onde o dispositivo de memória se encontra, em relação ao sistema computacional no processador registradores: posições de memória privilegiadas, dentro da UCP exemplos: acumulador, endereço da próxima instrução (contador de programa), “status” (“flags”), etc. memória “cache” (microprocessadores mais modernos) interna memória “cache” (“escondida”, “transparente”) (nem sempre existente): armazena os dados (da memória principal) de uso mais freqüente memória principal (ou real): onde o programa em execução e os dados sendo manipulados estão armazenados exemplos: RAM, ROM, EPROM, etc. externa memória secundária (ou virtual, ou de massa): para armazenamento de grandes quantidades de informação (programas e dados), que poderão ser utilizados no futuro exemplos: disco rígido (magnético ou óptico), disco flexível, fita (magnética ou de papel), etc. capacidade: medida da quantidade de informação que pode ser armazenada num dispositivo de memória produto do número de posições (endereços) pelo tamanho de cada posição (conteúdo) pode ser expressa em bits, em bytes (grupos de 8 bits) ou em palavras (grupos de bits, em geral 8, 16, 32 ou 64 bits, que definem a organização interna da memória) exemplo: memória de 8Kbits = 213 bits = 1Kbyte = 128 palavras de 64 bits unidade de transferência: número de bits a cada operação de leitura ou escrita na memória para a memória interna, corresponde, em geral, à palavra para a memória externa, é chamada de bloco (em geral, composto por diversas palavras) ArquiteturaComputadores.doc - 28/02/yy – página 17 método de acesso: forma pela qual o endereço de leitura ou escrita é acessado seqüencial: o acesso é feito a partir da posição inicial, passando pelas posições intermediárias, até a posição desejada exemplo: fita direto: o acesso é feito diretamente a uma posição próxima à desejada, e, a partir daí, de forma seqüencial até a posição desejada exemplo: disco randômico (ou aleatório): o acesso é feito diretamente à posição desejada exemplo: memória principal associativo: o acesso é feito por comparação de parte do conteúdo de cada palavra com um valor desejado, e não pelo endereço da posição (eventualmente, o valor procurado pode não ser encontrado) exemplo: memória “cache” desempenho: medidas da velocidade de execução das operações de memória tempo de acesso: tempo decorrido entre o fornecimento do endereço (ou do valor desejado, no caso do acesso associativo) à memória e a conclusão da operação de leitura ou escrita no caso do acesso seqüencial ou direto, varia em função da posição no caso do acesso randômico ou associativo, igual para todas as posições tempo de ciclo de memória: tempo de acesso, somado ao tempo necessário para um novo acesso taxa de transferência: quantidade de bits (ou palavras) que podem ser acessados, por unidade de tempo (isto é, o inverso do tempo de ciclo de memória) propriedades físicas material: tecnologia empregada na fabricação do dispositivo semicondutor: RAM, ROM, EPROM, “flash” magnético: disco (rígido ou flexível), fita óptico: disco (CD-ROM, DVD) volatilidade: capacidade de reter informação ou não, quando o dispositivo é desligado (“desenergizado”) não volátil: retém a informação, mesmo “desenergizado” exemplos: disco, fita, ROM, “flash”, CD-ROM, DVD volátil: perde a informação, se “desenergizado” exemplo: RAM alterabilidade: possibilidade de sucessivas operações de escrita alterável: disco magnético, fita magnética, RAM, EPROM, “flash” não alterável: ROM, CD-ROM custo: gastos com a produção do dispositivo, por bit alto: registradores, memória “cache” médio: memória principal baixo: memória secundária essas características acabam definindo uma organização hierárquica de memórias com o objetivo de obter, para o sistema, uma capacidade adequada, com alto desempenho e baixo custo em ordem decrescente de hierarquia: tipo capacidade desempenho custo freqüência de acesso registradores memória “cache” memória principal memória secundária (disco) memória secundária (fita) pequena pequena média alta muito alta alto alto médio baixo muito baixo alto alto médio baixo muito baixo alta alta média baixa baixa ArquiteturaComputadores.doc - 28/02/yy – página 18 re gs "cache " p r in c ip a l s e c u n d á r ia (d is c o ) s e c u n d á r ia (f it a ) ArquiteturaComputadores.doc - 28/02/yy – página 19 MEMÓRIA PRINCIPAL armazena as instruções do programa sendo executado pela UCP, e os dados por ele sendo manipulados (característica da arquitetura de von Neumann) nos primeiros computadores, empregou a tecnologia de matrizes de anéis com núcleos de ferrite (ferromagnético), hoje abandonada os computadores atuais utilizam pastilhas de semicondutor (silício) produzida com diferentes tecnologias, e, por isso, apresenta diferentes características, para diferentes aplicações célula representativa de 1 bit c o n t r o le s e le ç ã o c é lu la e s c r it a c o n t r o le d a d o a s e r e s c r it o s e le ç ã o c é lu la d a d o lid o l e it u r a sinal de seleção: ativa ou desativa a célula sinal de controle: se a célula está ativa, indica se a operação é de leitura ou de escrita ArquiteturaComputadores.doc - 28/02/yy – página 20 memória de “acesso aleatório” (“RAM – random access memory”) denominação infeliz (todas as tecnologias de memória principal apresentam acesso aleatório) permite operações de leitura e escrita utilizada em computadores de uso geral, para armazenar programas e dados, e em computadores de uso específico, para armazenar dados volátil; perde seu conteúdo quando desenergizada apresenta 2 tipos dinâmica (“DRAM – dynamic RAM”) célula básica: capacitor perde seu conteúdo com o tempo (mesmo energizada) necessita ser constantemente “refrescada”, exigindo um circuito especial de regeneração possibilita alta densidade de empacotamento (alta capacidade numa única pastilha) estática (“SRAM – static RAM”) célula básica: “flip-flop” não perde seu conteúdo com o tempo (desde que se mantenha energizada) vantagens sobre a DRAM: mais rápida, exige circuito mais simples desvantagens: menos densa, maior custo por bit (especialmente em memórias de alta capacidade, pois o custo do circuito de regeneração da DRAM fica diluído) memória apenas de leitura “ROM – read-only memory”) permite apenas operações de leitura utilizada em computadores de uso geral, para armazenar tabelas de constantes ou pequenas partes do sistema operacional (“BIOS – basic input/output system”), e em computadores de uso específico, para armazenar os programas de controle não volátil; não perde seu conteúdo quando desenergizada apresenta diversos tipos convencional programável (“PROM – programmable ROM”) pode ser apagada, todos os bytes simultaneamente, por raios ultra-violeta (em geral, precisa ser removida do circuito) depois de apagada, dados podem ser gravados eletricamente, pelo usuário (diversas vezes) programável, eletricamente apagável (“EEPROM – electrically EPROM”) não pode ser apagada dados podem ser gravados eletricamente, pelo usuário (apenas uma vez) programável, apagável (“EPROM – erasable PROM”) não pode ser apagada dados gravados pelo fabricante (apenas uma vez) pode ser apagada eletricamente, um byte de cada vez (sem precisar ser removida do circuito) dados podem ser gravados eletricamente, no próprio circuito (diversas vezes) tempo de escrita bem superior ao tempo de leitura apresenta menor densidade e maior custo por bit do que a EPROM “flash” (“rápida”) pode ser apagada eletricamente, um bloco de cada vez (sem precisar ser removida do circuito) depois de apagados, dados podem ser gravados eletricamente, no próprio circuito (diversas vezes) geralmente utilizada para armazenar dados de configuração, definidos pelo usuário durante a operação normal do equipamento, mas não com muita freqüência intermediária (em custo e em desempenho) entre a EPROM e a EEPROM ArquiteturaComputadores.doc - 28/02/yy – página 21 DETECÇÃO E CORREÇÃO DE ERROS NA MEMÓRIA PRINCIPAL a memória a semicondutor pode apresentar erro por diversos motivos defeito de fabricação descarga eletrostática falha de alimentação presença de partículas alfa (radiativas) excesso de uso condições ambientais inadequadas o erro apresentado pode ser temporário, ou moderado permanente, ou grave existem técnicas que permitem apenas detectar um erro detectar um erro, e corrigi-lo genericamente, nessas técnicas na operação de escrita, a cada M bits de informação a serem escritos, além dos M bits são escritos mais K bits adicionais, obtidos em função dos M bits de informação na operação de leitura, são lidos os M+K bits; em função dos M bits de informação lidos, são calculados os K bits adicionais, e comparados com os K bits adicionais lidos essa comparação permite detectar erros e, eventualmente, corrigir um erro detectado os K bits adicionais são chamados, geralmente, de bits de redundância, ou bits de paridade, ou de verificação estratégias bit de paridade na escrita, a cada byte de informação (M=8), grava-se um bit adicional (K=1), de paridade, de tal forma que os 9 bits apresentem um número par de bits em “1” na leitura dos 9 bits, se for obtido um número ímpar de bits em “1”, a ocorrência de um erro é indicada permite a detecção da ocorrência de um número ímpar de bits errados (1, 3, 5, ...); não permite a detecção de um número par de bits errados (2, 4, 6, ...) um erro apenas no bit de paridade provoca a falsa indicação de erro na informação eventualmente, pode-se empregar a estratégia oposta na geração do bit de paridade (forçar um número ímpar de bits em “1”) exemplo informação a ser escrita na memória: 01000011 bit de paridade acrescentado: 1 se lidos: 01000011 1 (não houve erro) não há indicação de erro OK se lidos: 01000001 1 (erro no penúltimo bit de informação) indicação de erro (sem correção) OK se lidos: 01000011 0 (erro no bit de paridade) indicação de erro (indevida) OK se lidos: 01010001 1 (2 erros: no 4o. e no penúltimo bits) não há indicação de erro! não OK ArquiteturaComputadores.doc - 28/02/yy – página 22 redundância triplicada na escrita, a cada bit de informação (M=1), gravam-se 2 bits adicionais (K=2), iguais ao bit de informação na leitura, os 3 bits lidos são comparados; havendo divergência (o que indica erro), faz-se uma “votação”, optando-se pelo valor que apresentar maioria de 2 a 1 permite a detecção e a correção de 1 único bit errado, a cada 3 bits armazenados inconveniente: alto consumo de memória (3*M) exemplo informação a ser escrita na memória: 0 bits de redundância acrescentados: 00 se lidos: 000 (não houve erro) não há indicação de erro OK se lidos: 010 (erro no 2o. bit) indicação de erro, adotado bit = 0 OK se lidos: 110 (2 erros, nos 2 primeiros bits) indicação de erro, adotado bit = 1 não OK código de Hamming (criado por Richard Hamming, dos Laboratórios Bell, nos Estados Unidos) a cada M bits de informação, são acrescentados K bits de verificação, de tal forma que M 2K-K-1 exemplo de cálculo, para M=4 K M máximo 3 4 5 6 7 8 4 11 26 57 120 247 K=3 sendo d0, d1, d2, e d3 os bits de informação, os bits de verificação v0, v1, e v2 são calculados por: v0 = d0 d1 d3 v1 = d0 d2 d3 v2 = d1 d2 d3 na escrita, os bits são armazenados na ordem: v0v1d0v2d1d2d3 na leitura, o vetor (P2,P1,P0) é calculado por: P 2 = v 2 d1 d2 d3 P 1 = v 1 d0 d2 d3 P 0 = v 0 d0 d1 d3 se o vetor (P2,P1,P0) = (0,0,0) não houve erro senão (P2,P1,P0) indica a posição do bit com erro exemplo: informação a ser escrita na memória: d0d1d2d3 = 1101 bits de verificação acrescentados: v0 = 1 1 1 = 1 v1 = 1 0 1 = 0 v2 = 1 0 1 = 0 dados escritos: v0v1d0v2d1d2d3 = 1010101 se lidos: v0v1d0v2d1d2d3 = 1010001 – erro no bit d1 P2 = 0 0 0 1 = 1 P1 = 0 1 0 1 = 0 P0 = 1 1 0 1 = 1 erro no 5o. bit = d1 OK! ArquiteturaComputadores.doc - 28/02/yy – página 23 MEMÓRIA “CACHE” a cada instrução executada, a UCP faz, pelo menos, um acesso à memória, para a leitura do código da instrução, durante o ciclo de busca (outros acessos, de leitura e/ou de escrita, podem, também, ser feitos durante o ciclo de execução) ao longo dos anos, com os avanços da tecnologia, o desempenho da UCP aumentou num ritmo acelerado, que não foi acompanhado pelo aumento do desempenho dos dispositivos de memória principal como conseqüência, a memória principal (antes do advento da memória “cache”) passou a ser uma espécie de “gargalo” dos sistemas computacionais, obrigando a UCP a diminuir um pouco seu ritmo (através da inclusão de estados de espera, ou “wait states”), para que as operações de leitura e de escrita na memória pudessem ser completadas para contornar esse problema, foi criado um novo nível hierárquico de memória, entre a memória da UCP (registradores) e a memória principal convencional o nome “cache” vem do Francês “caché”, que significa “escondido”, no sentido de que a introdução dessa memória seja “transparente” ao usuário do sistema computacional (isto é, que ele não precisa alterar seus procedimentos habituais) comparada com a memória principal, a memória “cache” é mais rápida (construída com tecnologia mais moderna) é mais cara (maior custo por bit) é menor (tem menor capacidade de armazenamento) procedimento de acesso à memória, pela UCP verifica, inicialmente, se a informação desejada já está na memória “cache” se estiver, faz o acesso se não estiver, faz o acesso à memória principal se o acesso for uma leitura, copia o dado lido na memória “cache” essa estratégia se baseia nos princípios da localidade princípio da localidade temporal: se uma palavra da memória é acessada por um programa, é bastante provável que essa mesma palavra volte a ser acessada pelo programa num curto intervalo de tempo princípio da localidade espacial: se uma palavra da memória é acessada por um programa, é bastante provável que outras palavras na vizinhança dessa palavra sejam acessadas pelo programa no projeto da memória “cache”, devem ser definidos o tamanho da memória “cache” a função de mapeamento o algoritmo de substituição a política de escrita na memória tamanho do bloco transferido para a memória “cache” o número de níveis de “cache” essas definições devem procurar maximizar a probabilidade de se encontrar uma informação na memória “cache”, minimizando a necessidade de acessos à memória principal com isso, consegue-se um tempo de acesso ao sistema de memória (“cache” + principal) próximo ao tempo de acesso da memória “cache” tamanho da memória “cache” deve ser grande o suficiente para que a necessidade de acessos à memória principal não seja freqüente deve ser pequena o suficiente para que não apresente custo elevado, e para que se mantenha com baixo tempo de resposta entre outros fatores, o tamanho ideal depende do tipo de programas sendo executados estudos mostram que a memória “cache” deve ter entre 1Kbyte e 512Kbytes ArquiteturaComputadores.doc - 28/02/yy – página 24 função de mapeamento como a área da memória “cache” é menor do que a da memória principal, é preciso que se defina a posição em que um bloco de dados deve ser armazenado na memória “cache”, em função do seu endereço na memória principal mapeamento direto: cada bloco da memória principal tem uma única posição na memória “cache” para ser armazenado mapeamento associativo: cada bloco da memória principal pode ser armazenado em qualquer posição da memória “cache” mapeamento associativo por conjuntos: cada bloco da memória principal tem um conjunto de posições na memória “cache” para ser armazenado para o bloco de dados poder ser localizado na memória “cache”, além das informações obtidas na memória principal, é armazenada, na memória “cache”, a informação que permite a identificação do endereço original do bloco na memória principal algoritmo de substituição como a memória “cache” é menor do que a memória principal, o armazenamento de um bloco no “cache” certamente implica na remoção de outro bloco previamente armazenado a escolha do bloco a ser substituído, no caso do mapeamento associativo (em que há mais de uma opção) pode obedecer ao critério do bloco que não é usado há mais tempo (em geral, o mais eficiente, devido ao princípio da localidade temporal) do bloco que foi armazenado há mais tempo do bloco que foi menos referenciado aleatório (mais simples, e de desempenho levemente inferior ao dos demais) política de escrita (ou de atualização) na memória quando um dado armazenado na memória “cache” é alterado por um programa, deve-se adotar uma política que defina como essa alteração deve ser realizada na memória principal a escolha dessa política deve considerar se a memória principal, além do “cache”, pode também ser acessada diretamente por módulo de entrada/saída, ou por outra UCP cada possível política apresenta vantagens e desvantagens escrita em ambas (“write through”): toda a escrita na memória “cache” causa a respectiva atualização da memória principal escrita somente no retorno (“write back”): a memória principal só é atualizada quando o respectivo bloco na memória “cache” é substituído vantagem: a memória principal está sempre válida desvantagem: há um número excessivo de acessos à memória principal (muitos deles, desnecessários), o que diminui o desempenho do “cache” vantagem: minimiza os acessos à memória principal desvantagem: a memória principal fica temporariamente desatualizada; um eventual acesso de outro dispositivo pode acarretar um erro sistemas com uma única memória principal compartilhada por diversos processadores, cada um deles possuindo sua própria memória “cache”, exigem estratégias ainda mais complexas tamanho do bloco transferido para a memória “cache” bloco muito pequeno não traz todos os “vizinhos da posição desejada bloco muito grande traz “vizinhos muito distantes da posição desejada estudos mostram que o bloco deve ter entre 2 e 8 palavras número de níveis de “cache” o conceito de “cache” pode ser estendido para diversos níveis hierárquicos de memória atualmente, alguns sistemas empregam 2 níveis de “cache” (chamados de L1 e L2), dos quais o superior é implementado na própria pastilha do processador (“cache” interno) estudos mostram que a melhoria do desempenho é pequena para mais de 2 níveis de “cache” pode-se, também, implementar uma área de “cache” para dados separada da área de “cache” para instruções de programa ArquiteturaComputadores.doc - 28/02/yy – página 25 MEMÓRIA SECUNDÁRIA outras denominações memória de massa, pois armazena grandes quantidades de informações memória externa, pois se localiza fora da UCP acesso feito através de módulos de entrada e saída pode, também, ser considerada entrada/saída armazena programas e dados que não necessariamente estejam sendo utilizados correntemente pela UCP comparação com a memória principal maior capacidade menor velocidade menor custo por byte principais dispositivos disco magnético (rígido ou flexível) disco óptico fita magnética fita e cartões de papel, perfurados (não mais utilizados) disco magnético prato de metal ou plástico, recoberto por material magnetizável mantido em rotação em torno de seu eixo central por um acionador de disco (“disk driver”) leitura e escrita de dados feita por uma bobina condutora chamada “cabeçote” os dados são gravados em anéis concêntricos, denominados trilhas (tipicamente, de 500 a 2.000 trilhas por disco) cada trilha tem a mesma largura da cabeça trilhas adjacentes são separadas por espaços vazios (“gaps”) a unidade de transferência é o bloco (tipicamente, composto por algumas centenas de bytes) cada bloco ocupa um setor de uma trilha (tipicamente, há entre 10 e 100 setores por trilha) setores adjacentes de uma mesma trilha também são separados por espaços vazios (“gaps”) intersetoriais trilhas mais internas apresentam maiores densidades de gravação, para possibilitar a manutenção da velocidade de rotação constante (independentemente da trilha sendo acessada) características dos discos mobilidade do cabeçote portabilidade prato único pratos múltiplos superpostos verticalmente neste caso, o conjunto das trilhas na mesma vertical (uma em cada face de cada prato) forma um cilindro distanciamento do cabeçote face simples face dupla número de pratos disco não removível disco removível número de faces de gravação cabeçotes fixos (um para cada trilha) cabeçote móvel (um cabeçote para cada face, que se move na direção radial) em contato com o disco (discos flexíveis) distância fixa distância aerodinâmica, variável (tecnologia Winchester, para discos rígidos) flexibilidade rígido (“hard”) flexível (“floppy”) ArquiteturaComputadores.doc - 28/02/yy – página 26 parâmetros de medida de desempenho três componentes que, somados, definem o tempo de acesso, isto é, o tempo decorrido entre a emissão de um comando de leitura ou escrita e a efetiva execução do comando tempo de busca (“seek time”) tempo gasto para a movimentação radial do cabeçote, até a trilha desejada varia (não linearmente) com o número de trilhas a serem atravessadas geralmente, maior componente do tempo de acesso, nos discos de cabeçote móvel (tipicamente, de 5ms a 300ms) tempo de busca = tempo de partida do cabeçote + número de trilhas “atravessadas” * tempo para “atravessar” uma trilha = 0, para os discos de cabeçotes fixos tempo de latência, ou atraso rotacional (“rotational delay”) tempo decorrido entre a chegada do cabeçote à trilha desejada e a passagem, sob o cabeçote, do primeiro setor (bloco) tempo médio de latência em média, é dado pela metade do tempo de 1 revolução do disco (isto é, 8,3ms, para uma velocidade típica de 3.600rpm) tempo de uma revoluçãodo disco 2 tempo de transferência (“transfer time”) tempo decorrido para o cabeçote percorrer o(s) setor(es) (bloco(s)) desejado(s) depende do número de bytes a serem acessados, do número de bytes por trilha e da velocidade rotacional do disco tempo de transferência tipicamente, inferior a 1ms, para o acesso a 1 bloco número de bytes a serem acessados número de bytes por trilha * velocidaderotacional tecnologia Winchester, para discos rígidos desenvolvida pela IBM, no início dos anos 80 tomou o nome de um modelo popular de fuzil um único dispositivo, selado, composto por disco, cabeçote e acionador distância aerodinâmica, variável, entre cabeçote e disco viabilizou discos com maior capacidade (superior a 1Gbyte), graças à maior densidade de gravação, e ao menor tempo de acesso tornou-se, popularmente, um sinônimo para disco rígido disco óptico (“CD-ROM – compact disk – read only memory”) prato com pequenas imperfeições, que provocam alterações detectáveis na reflexão de raios laser emitidos pelo acionador originário do disco compacto utilizado para armazenar informações digitalizadas de áudio apenas para operações de leitura (vem gravado de fábrica) dados gravados em blocos (setores) de uma trilha única, espiralada ao contrário dos discos magnéticos, nos discos ópticos a densidade de gravação é, em geral, igual em todas as trilhas (logo, as trilhas mais internas têm menos blocos), o que obriga a manutenção da velocidade constante (em conseqüência, a velocidade rotacional é maior para o acesso às trilhas mais internas) comparação com o disco magnético rígido vantagens desvantagens maior robustez maior portabilidade (removível) facilidade de produção em massa baixa velocidade impossibilidade da operação de escrita disco óptico gravável (“escrita única, leitura múltipla”) (“WORM – write-once, read many”) compatível com o acionador de CD-ROM convencional adequado para o armazenamento de documentos e arquivos disco óptico apagável pode ser gravado diversas vezes em geral, exige equipamentos de maior qualidade vantagens sobre os discos magnéticos maior capacidade maior portabilidade maior confiabilidade ArquiteturaComputadores.doc - 28/02/yy – página 27 disco de vídeo digital (“DVD - digital video disk”) adaptação do DVD utilizado para gravação de imagens capacidade extremente alta disco magneto-óptico gravação magnética, com o auxílio de raios laser leitura óptica vantagens sobre o disco magnético convencional maior densidade de gravação maior durabilidade menor custo por byte fita magnética mais antigo dispositivo de memória secundária mesma mídia do disco magnético leitura e escrita feitas por uma cabeça, fixa os dados são gravados ao longo de trilhas paralelas, longitudinais a unidade de transferência é o bloco, ou registro blocos adjacentes de uma mesma trilha são separados por espaços vazios inter-registros acesso seqüencial, isto é, necessário o acesso a todos os registros existentes entre o registro correntemente posicionado sob a cabeça, e o registro desejado baixo custo, baixa velocidade ocupa a posição inferior, na organização hierárquica de memórias ArquiteturaComputadores.doc - 28/02/yy – página 28 REDUNDÂNCIA NA MEMÓRIA SECUNDÁRIA (“RAID”) comparado com o desenvolvimento de processadores e de dispositivos de memória principal, o aprimoramento dos dispositivos de memória secundária tem se processado num ritmo bem mais lento, devido às dificuldades mecânicas na produção desses dispositivos diversas técnicas têm sido sugeridas, para aumentar o desempenho e a confiabilidade dos discos magnéticos rígidos na maioria dos casos, essas técnicas se utilizam de vários discos, eventualmente mais baratos, operando simultaneamente, armazenando dados de forma redundante uma dessas técnicas é a do arranjo redundante de discos independentes, conhecida como RAID (“redundant array of independent disks”) proposta por um grupo de pesquisadores da Universidade da Califórnia, em Berkeley, Estados Unidos, em 1988 originalmente, “redundant array of inexpensive disks”, ou “arranjo redundante de discos de baixo custo” define um conjunto de discos fisicamente separados, mas vistos como um único dispositivo os dados podem ser distribuídos pelos discos do conjunto os dados podem ser armazenados de maneira redundante, para possibilitar a sua recuperação, em caso de uma falha em disco, apesar do aumento da necessidade de espaço os discos podem ser acessados simultaneamente, buscando aumentar a velocidade de operação são definidos 7 níveis diferentes, com pequenas diferenças de implementação, em função da aplicação a que cada nível se destina nível 0: para aplicações que exigem alto desempenho (sem exigir confiabilidade) nível 1: para arquivos que exigem segurança nível 3: para aplicações com grande volume de dados, como processamento de imagens nível 5: para aplicações que exigem alta taxa de acessos para leitura nível 6: para aplicações que exigem grande disponibilidade níveis 2 e 4: atualmente, não comercializados (seu custo não é compensado pelo seu benefício) ArquiteturaComputadores.doc - 28/02/yy – página 29 DISPOSITIVOS DE ENTRADA E SAÍDA os sistemas computacionais se utilizam de uma grande variedade de dispositivos periféricos para comunicação com o mundo exterior, que empregam diferentes métodos de operação em geral, a taxa de transferência de dados desses dispositivos é bem inferior à taxa entre UCP e memória esses dispositivos se utilizam de padrões de dados e de comprimentos de palavras em geral diferentes dos utilizados pelo sistema computacional ao qual se conectam há, portanto, a necessidade de módulos de entrada e saída, servindo como interface com a UCP e a memória, através do barramento interface com os dispositivos periféricos, através de conexões específicas cada módulo pode servir de interface para um único dispositivo periférico para vários dispositivos periféricos dispositivos periféricos comunicação com o usuário: teclado, vídeo, "mouse", impressora, mostrador ("display"), "scanner", microfone, alto-falante, mesa digitalizadora, chaves, botões comunicação com equipamentos: acionador de disco, sensores, atuadores comunicação com dispositivos remotos: fax, modem, outro computador tipos de comunicação entre o módulo de entrada e saída e o dispositivo periférico serial (bit a bit) - uma única linha de conexão mais lenta que a paralela, mas mais econômica (menos fios) utilizada para comunicação a longa distância, ou em que não há exigência de velocidade exemplos: modem, teclado, mouse pode ser síncrona - controlada por um sinal que dá o ritmo da comunicação ("clock") o sinal “clock” pode ser enviado em outra linha, ou codificado, junto com a informação assíncrona - controlada por dados (caracteres ou bits) de sincronismo exemplos de caracteres e bits de sincronismo: "start of text", "end of text", "start bit", "stop bit" paralela (vários bits de uma só vez) - várias linhas de conexão utilizada para comunicação a curta distância exemplo: impressora, acionador de disco teclado categorias apenas (ou predominantemente) numéricos exemplos: calculadoras, caixas registradoras para sistemas dedicados, com teclas funcionais específicas exemplo: aparelho de vídeo-cassete, controlador de equipamento industrial comum, de uso geral, com teclas alfabéticas, numéricas, de símbolos e de controle exemplo: teclado de computador pessoal tecnologia de fabricação teclas mecânicas (de contato direto) vantagem: baixo custo, pequeno tamanho, longa vida útil (+/- 20 milhões de pressionamentos) teclas de efeito "hall" problema comum: “bouncing” (vibração, trepidação) solução: filtragem (“debouncing”) problema: oxidação dos contatos teclas capacitivas (de acoplamento de placas, com variação de capacitância) pode ser feita por filtro de “hardware” ou de “software” padrão ASCII (utilizado por outros dispositivos, como o vídeo) ArquiteturaComputadores.doc - 28/02/yy – página 30 vídeo outras denominações: monitor, tela, terminal tecnologia de fabricação tubo de raios catódicos (CRT - "cathode-ray tube") feixe de elétrons, defletidos por placas semelhante ao aparelho de TV comum diodos emissores de luz (LED - "light emitting diodes") vídeo de cristal líquido (LCD - "liquid-crystal display") vídeo de tela plana (FPD - "flat panel display") vídeo de plasma (4o. estado da matéria: gás ionizado) modalidade de representação textual - caracter a caracter semi-gráfico gráfico - ponto a ponto resolução - número de pontos ("pixels") exemplos: 320 x 200, 800 x 600, 1.024 x 768, 1.280 x 1.024, 1.920 x 1.080 cores monocromático colorido padrões mais comuns VGA, SVGA, CGA, EGA etc. impressora tecnologia de impressão de impacto de esfera de "margarida" matricial (de agulhas) sem impacto de jato de tinta de jato de cera a laser velocidade de impressão medida em caracteres por segundo, ou linhas por minuto, ou páginas por minuto (ppm) resolução de impressão medida em pontos por polegada (dpi - “dots per inch”) valores típicos: de 300dpi a 1.200dpi cores monocromática colorida comunicação com a Unidade Central de Processamento serial (mais lenta, mais barata, menos comum) paralela (mais rápida, mais comum - padrão CENTRONICS) padrão USB comunicação sem fio (“wireless”) "mouse" valores típicos: de 4ppm a 100ppm tecnologia de fabricação mecânico - esfera e roletes óptico-mecânico - esfera vazada, leds e foto-sensores óptico resolução típica: 400 pontos por polegada ArquiteturaComputadores.doc - 28/02/yy – página 31 funções básicas dos módulos de entrada e saída controle e "timing" coordenação do fluxo de informações entre o computador e o mundo exterior comunicação com o processador decodificação dos comandos recebidos do processador envio e recepção de dados ao processador envio do estado operacional corrente ("status") ao processador reconhecimento do endereço enviado pelo processador, referente a um dispositivo de entrada e saída sob seu comando comunicação com dispositivos periféricos envio, conforme o caso, de comandos, dados e solicitações de estados correntes ("status") a dispositivos periféricos, para o seu controle armazenamento de dados armazenamento temporário de dados trocados entre os dispositivos periféricos e o processador, para compatibilizar suas velocidades (pois cada dispositivo opera numa velocidade própria, diferente da do processador) detecção e sinalização de erros detecção de eventuais erros ocorridos durante a operação dos dispositivos, provocados por falhas elétricas, mecânicas ou operacionais, ou ainda por más condições ambientais, e sua sinalização ao processador um módulo de entrada e saída pode ser chamado de processador de entrada e saída, ou canal de entrada e saída executa a maior parte do tratamento de operações de entrada e saída existente, em geral, nos computadores de grande porte ("main frames") controlador de entrada e saída ou controlador de dispositivo mais primitivo, com recursos mais específicos e limitados existente nos microcomputadores pessoais ArquiteturaComputadores.doc - 28/02/yy – página 32 TIPOS DE OPERAÇÕES DE ENTRADA E SAÍDA modos de endereçamento do dispositivo onde a operação será efetuada mapeamento de entrada e saída em memória acesso ao dispositivo feito da mesma forma que a uma posição de memória distinção feita pelo endereço fornecido pelo processador, que corresponde a um dispositivo de entrada e saída (e não a uma posição de memória) dispositivos de entrada e saída e memória têm endereços distintos mapeamento de entrada e saída isolada instruções específicas para operações de entrada e saída permitem o acesso ao dispositivo (do tipo "input" e "output") dispositivos de entrada e saída e memória podem ter endereços coincidentes (o que os distingue é a instrução utilizada) estratégias para a realização das operações espera de sinalização ("wait for flag") (ou entrada/saída programada) controle, pelo processador, da operação de entrada e saída detecção, pelo processador, do término da operação de entrada e saída através do "status" periodicamente solicitado ao módulo de entrada e saída acionamento por interrupção o processador inicia a operação de entrada e saída enquanto a operação de entrada e saída se realiza, o processador prossegue sua atividade, realizando outras tarefas quando a operação de entrada e saída se completa, o módulo de entrada e saída envia um pedido de interrupção ao processador ao fim do ciclo de execução de uma instrução, o processador verifica se há um pedido de interrupção pendente, à espera de atendimento caso haja mais de um pedido de interrupção pendente, um esquema de prioridades define qual o pedido a ser tratado o processador trata a interrupção interrompe seu processamento salva o "contexto" (valores correntes dos registradores e endereço da próxima instrução) identifica quem fez a solicitação de interrupção passa ao tratamento da interrupção (efetivando a operação de entrada ou de saída) ao fim do tratamento da interrupção, o processador retorna ao ponto em que o programa foi interrompido em comparação com a entrada e saída por espera por sinalização, a entrada e saída por interrupção costuma apresentar melhor desempenho, pois o processador não precisa ficar sem fazer nada, até que a operação de entrada e saída seja concluída acesso direto à memória (DMA - "direct memory access") tanto na entrada e saída por programa quanto por interrupção, cabe ao processador a tarefa de controlar o tráfego de dados entre o módulo de entrada e saída e a memória alguns sistemas computacionais, porém, possuem uma conexão entre a memória principal e o módulo de entrada e saída nesses casos, cabe ao módulo de entrada e saída, por acesso direto à memória, o controle total da operação de entrada e saída, inclusive a transferência de dados da, ou para a memória principal (através do barramento) o processador, então, fica liberado para executar suas tarefas solicitação de "status" ao módulo de entrada e saída envio de comandos ao módulo de entrada e saída troca de dados com o módulo de entrada e saída ArquiteturaComputadores.doc - 28/02/yy – página 33 UNIDADE CENTRAL DE PROCESSAMENTO UCP: componente do sistema computacional responsável pelo processamento das informações e pelo controle dos demais componentes também chamada CPU - "central process unit" analogia com o ser humano: cérebro (no passado, o computador era chamado de "cérebro eletrônico") funções de processamento e de controle responsável pela execução de uma seqüência de "ciclos de instrução" cada ciclo de instrução busca uma instrução na memória, uma de cada vez decodifica (interpreta) a instrução busca os operandos executa efetivamente a operação guarda o resultado (se houver) reinicia o processo, buscando outra instrução no passado, esses passos eram executados seqüencialmente, um de cada vez hoje, emprega-se a técnica da linha de montagem ("pipeline"), que permite a execução simultânea de alguns desses passos principais elementos da UCP registradores unidade aritmética e lógica unidade de controle (incluindo o decodificador de instruções) memória “cache” (nas mais modernas) relógio implementação física dos elementos constituintes da UCP por componentes eletrônicos distintos (computadores mais antigos) numa única pastilha ("chip"): o microprocessador registradores servem para armazenar informações, utilizadas no interior da UCP memória de nível hierárquico mais alto número e tamanho dos registradores variam de acordo com o projeto da UCP quanto à função, podem ser classificados como acessíveis ao usuário - podem ser acessados através de instruções em linguagem de máquina (ou de montagem) dados - armazenam valores de operandos endereços - armazenam endereços de operandos uso geral - podem ter diversas funções sinalização ("flags") - indicam ocorrência de eventos e de situações especiais ("status") de controle - controlam a execução das instruções, sem que possam ser diretamente referenciados por elas uma instrução pode fazer referência a 0, 1, 2, 3 ou mais registradores (1 ou 2 são os mais comuns) de de de de ArquiteturaComputadores.doc - 28/02/yy – página 34 exemplos de registradores mais comumente utilizados pelas UCPs acumulador (ACC - "accumulator") endereço da próxima instrução (ou contador de instrução, ou contador de programa) (PC - "program counter") registrador de controle armazena o dado a ser escrito na memória, ou o dado (ou o código de instrução) recentemente lido na memória seu número de bits é, geralmente, igual à largura do barramento de dados sinalizadores, ou indicadores ("flags") registrador de controle armazena o endereço da posição da memória em que está sendo feita uma operação de leitura (de instrução ou de dado) ou de escrita (de dado) seu número de bits (n), geralmente igual à largura do barramento de endereços, determina a capacidade (N) da memória principal N=2n dado da memória (MBR - "memory buffer register") registrador de controle armazena o código da última instrução obtida na memória durante um ciclo de busca utilizado na decodificação (interpretação) da instrução sendo executada endereço da memória (MAR - "memory address register") presente em praticamente todos os processadores registrador de controle armazena o endereço que contém o código da próxima instrução a ser obtida na memória de programa (durante o ciclo de busca), para ser executada incrementado automaticamente, após a obtenção da instrução alterado pelas instruções de desvio (os "saltos") na ocorrência de interrupções ou de instruções de chamada de rotina, precisa ser guardado em um local em que possa ser posteriormente recuperado (em geral, na "pilha") seu número de bits (n) determina o comprimento máximo (N) dos programas N=2n (a menos que se utilize “memória virtual”) instrução sendo executada (IR - "instruction register") presente em diversos processadores registrador de acesso ao usuário mais freqüentemente utilizado, pela maioria dos programas tem esse nome porque, nas operações aritméticas e lógicas, além de armazenar um dos operandos, armazena também o resultado obtido ao final da operação empregado, também, para armazenar dados que são copiados de, e para, memória e módulos de entrada e saída tem, em geral, o mesmo tamanho que o da palavra de memória registradores de controle (alguns são, também, de acesso ao usuário) possuem 1 único bit cada podem formar, em conjunto, a "palavra de estado do programa" (PSW - "program status word") armazenam indicações de "status" (ocorrência de eventos e situações especiais) os mais comuns são zero (Z - "zero") - indica se o resultado da última operação é 0 (ou se o valor corrente do acumulador é 0) sinal (S - "sign") - indica o sinal (positivo ou negativo) do resultado da última operação (ou do valor corrente do acumulador) "vai-um", ou "vem-um" (C - "carry", ou B - "borrow") - indica se a última operação provocou um "vai-um" (no caso da adição) ou um "vem-um" (no caso da subtração) estouro (O - "overflow") - indica se a última operação provocou um "estouro" aritmético habilitação de interrupção (I - "interrupt enable") - indica se o estado corrente da habilitação de interrupções (habilitadas ou desabilitadas) registradores de uso geral registradores de acesso ao usuário possuem diversos nomes D0, D1, ..., D7, no microprocessador MC68000, da Motorola AX, BX, CX, DX, no microprocessador 8086, da Intel EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI, no microprocessador Pentium II, da Intel B, C, D, E, H, L, no microprocessador 8080, da Intel R0, R1, ..., R31, FPR0, FPR1, ..., FPR31, no microprocessador PowerPC, da IBM/Motorola armazenam dados utilizados com freqüência nas operações da UCP, por causa do seu pequeno tempo de acesso bastante utilizados pelos programas escritos em linguagem de montagem e pelo código gerado pelos compiladores ArquiteturaComputadores.doc - 28/02/yy – página 35 unidade aritmética e lógica (ALU - "arithmetic and logic unit") também chamada de ULA - "unidade lógico-aritmética" unidade que executa efetivamente, as operações algébricas (aritméticas e lógicas) circuito lógico combinatório, com portas de alta velocidade as operações envolvem 1 ou 2 operandos operações aritméticas usuais 2 operandos 1 operando incremento de 1 / decremento de 1 operações lógicas 2 operandos "e" ("AND") / "ou" ("OR") / "ou exclusivo" (XOR") 1 operando soma / subtração / multiplicação / divisão complemento ("NOT") / deslocamento ("shift") e/ou rotação ("rotate") à esquerda ou à direita algumas operações (em especial, multiplicação e divisão) não são executadas por processadores mais simples em geral, o acumulador armazena sempre um dos operandos, e, também, o resultado da operação alguns processadores permitem que sejam executadas operações entre os registradores de uso geral, sem o uso do acumulador unidade de controle parte da UCP de mais alta complexidade responsável pela decodificação da instrução sendo executada, e pela geração dos sinais de controle nos momentos adequados esses sinais de controle atuam em praticamente todos os componentes da UCP, e ainda na memória principal e nos módulos de entrada e saída métodos utilizados na implementação da unidade de controle por circuito ("hardware") os sinais de controle são gerados por um complexo circuito combinatório, que tem, como entradas, o código da instrução a ser executada, sinais de sinalização ("flags") e o sinal do relógio vantagem: alta velocidade para a geração dos sinais desvantagem: pouca flexibilidade para alterações no projeto por microprogramação ("software") cada instrução corresponde a uma seqüência de micro-operações, indicadas por micro-instruções, que compõem um microprograma uma micro-operação é a menor ação que pode ser realizada pelo processador, a cada pulso do relógio (exemplos: incrementa registrador de endereço da próxima instrução; copia acumulador em outro registrador de uso geral; copia registrador de uso geral no registrador de endereço da memória; etc.) a execução do microprograma é semelhante à de um programa (também seqüencial; também tem ciclo de micro-instrução), mas bem mais simples relógio ("clock") gera pulsos, que definem o ritmo de trabalho da UCP o intervalo de tempo entre 2 pulsos consecutivos é o chamado "ciclo de máquina" o inverso do ciclo de máquina (isto é, número de ciclos de máquina por unidade de tempo) é a freqüência do relógio durante cada ciclo de máquina, realiza-se, em geral, uma micro-operação assim, em geral, quanto maior a freqüência do relógio, maior a velocidade de operação do processador isso pode não ser verdade: uma máquina com freqüência de relógio menor do que a de outra máquina, pode ser mais rápida, se suas instruções exigem menos micro-operações analogia: um remador pode ter menor freqüência de remadas do que outro, mas ser mais rápido, se suas remadas forem mais fortes ArquiteturaComputadores.doc - 28/02/yy – página 36 UNIDADE ARITMÉTICA E LÓGICA manipula dados, realizando, com eles, operações aritméticas e lógicas tipos de dados manipulados caracter usado para representar símbolos gráficos (para textos) e de caracteres de controle (para comunicação) codificação EBCDIC ("Extended Binary Coded Decimal Interchange Code") definido pela IBM codificação ASCII ("American Standard Code for Information Interchange") uso universal lógico usado para variáveis que podem ter apenas 2 valores (0 ou 1; ou "falso" ou "verdadeiro") lógica binária operações lógicas usualmente executadas pela unidade aritmética e lógica "e" ("AND") - resultado é verdadeiro se e somente se todos os operandos são verdadeiros A 0 0 1 1 B 0 1 0 1 "ou" ("OR") - resultado é verdadeiro se e somente se pelo menos um dos operandos é verdadeiro A 0 0 1 1 B 0 1 0 1 X = NOT A = A = /A 1 0 "ou exclusivo" ("XOR") - resultado é verdadeiro se e somente se um número ímpar de operandos é verdadeiro A 0 0 1 1 B 0 1 0 1 soma subtração incremento de 1 decremento de 1 multiplicação (menos usual) divisão (menos usual) representação de dados numéricos X = A XOR B = A B 0 1 1 0 numérico usado para variáveis que exprimem quantidades operações numéricas usualmente executadas pela unidade aritmética e lógica X = A OR B = A B = A B 0 1 1 1 "não" ("NOT") - resultado é verdadeiro se e somente se o operando é falso A 0 1 X = A AND B = A B = A B 0 0 0 1 seqüência de dígitos binários, ou bits (0 ou 1) uso da base 2 representação em ponto fixo, para números inteiros sinal e magnitude complemento a 2 representação em ponto flutuante, para números fracionários notação científica (mantissa e exponente) notação científica normalizada representação em código binário decimal (BCD - "binary coded decimal"), para aplicações comerciais ArquiteturaComputadores.doc - 28/02/yy – página 37 representação em sinal e magnitude, com n bits 1 bit de sinal 0, para número positivo 1, para número negativo n-1 bits de magnitude representa números inteiros, de 0 a 2 n-1-1 faixa de representação: de -(2n-1-1) a +(2 n-1-1) n = 8 de -127 a +127 desvantagem: duas representações diferentes para o número 0 1000...0 e 0000...0 aritmética soma subtração sinais iguais soma as magnitudes mantém o sinal sinais diferentes subtrai a magnitude menor da magnitude maior mantém o sinal da magnitude maior inverte o sinal do subtraendo executa o algoritmo da soma detecção de "estouro" ("overflow") ocorrência de "vai-um" no bit de magnitude mais à esquerda representação em complemento a 2, com n bits número positivo representação igual a sinal e magnitude número negativo invertem-se todos os bits na representação positiva do número, e soma-se 1 ao resultado o bit mais à esquerda é o chamado bit de sinal, pois indica o sinal do número 0, para número positivo 1, para número negativo vantagens: uma única representação para o número 0 exige um único circuito apenas, para operações de soma e subtração faixa de representação: de -2 n-1 a +(2 n-1-1) n = 8 de -128 a +127 aritmética soma subtração soma, normalmente (se uma parcela for negativa, ela já deve estar representada em complemento a 2) complementa a 2 o subtraendo executa o algoritmo da soma detecção de "estouro" (ou “transbordo”) ("overflow") ocorrência de apenas um "vai-um" nos 2 bits mais à esquerda (ou para o bit de sinal, ou para fora, mas não ambos); ou sinal do resultado diferente dos sinais das parcelas, quando estes são iguais (parcelas com sinais diferentes nunca geram transbordo) representação em notação científica N = F x BE, onde N - número a ser representado - sinal do número F - mantissa, ou parte fracionária do número B - base de exponenciação E - expoente há diversos pares de valores para a mantissa F e o expoente E que representam um mesmo número, mantida uma base B ArquiteturaComputadores.doc - 28/02/yy – página 38 representação em notação científica normalizada mantissa fracionária (menor que 1) primeiro algarismo da mantissa, após a vírgula, diferente de zero há um único par de valores para a mantissa F e o expoente E, mantida a base B (=2) formato típico: 32 bits 1 bit para o sinal do número 1 bit para o sinal do expoente 6 bits para a magnitude do expoente 24 bits para a mantissa conversão de um valor decimal para a representação em notação científica normalizada converte o número, de decimal (base 10) para binário (base 2) desloca a vírgula, até que ela fique à esquerda do dígito mais significativo (o primeiro "1"), obtendo-se a mantissa o número de casas deslocadas indica a magnitude do expoente a direção do deslocamento indica o sinal do expoente (à esquerda indica expoente positivo; à direita indica expoente negativo) aritmética soma e subtração iguala os dois expoentes, em geral, pelo maior (isto é, a vírgula da mantissa de menor expoente é deslocada, à direita, tantas quantas forma as casas necessárias para os expoentes ficarem iguais) soma ou subtrai as mantissas (pelas regras da notação em ponto fixo), e mantém o expoente (agora, único) multiplicação e divisão o sinal do resultado é positivo (bit de sinal = 0), se os operandos têm sinais iguais; ou negativo (bit de sinal = 1), se os operandos têm sinais diferentes a mantissa do resultado é o produto ou a divisão entre as mantissas dos operandos o expoente do resultado é a soma (para a multiplicação) ou a diferença (para a divisão) entre os expoentes dos operandos representação em BCD codifica cada algarismo decimal em 4 dígitos binários (bits) permite obter resultados exatos (necessários, por exemplo, em aplicações financeiras), às custas de maior complexidade dos cálculos aritméticos ArquiteturaComputadores.doc - 28/02/yy – página 39 CONJUNTO DE INSTRUÇÕES instrução de máquina indicação de uma operação básica ("primitiva"), muito simples e objetiva, capaz de ser executada por um sistema computacional um comando (de linguagem de alto nível) é traduzido numa seqüência de instruções de máquina depende da estrutura do processador (na verdade, o projeto do processador parte da definição do conjunto de instruções e, a partir daí, são implementados os seus componentes) para a definição do conjunto de instruções, devem ser definidos a função de cada instrução o formato de cada instrução Exemplos: 1) some o conteúdo do acumulador com o conteúdo do registrador de uso geral R1, e guarde o resultado no acumulador 2) copie o conteúdo do acumulador na posição P da memória Contra-Exemplos: calcule X = A + B * C calcule X = raiz quadrada de A (não existe processador capaz de executar estes cálculos numa única operação básica) implementação física de uma instrução de máquina conjunto de bits agrupados em palavras e armazenados na memória principal tipos de instrução de máquina operações algébricas exemplos: operações aritméticas, operações lógicas operações de movimentação de dados exemplos: movimentação entre registradores, entre registradores e a memória (e vice-versa) operações de entrada e saída exemplos: leitura em dispositivo de entrada, escrita em dispositivo de saída operações de controle exemplos: desvio da seqüência de execução, suspensão da execução ArquiteturaComputadores.doc - 28/02/yy – página 40 o formato de cada instrução de máquina, em geral, apresenta 2 campos de bits campo do código da operação define a operação a ser executada o comprimento do campo do código da operação pode ser fixo (igual para todas as instruções) ou variável esse comprimento (n bits) determina o número máximo (N) de códigos diferentes: N = 2n se n = 8 N = 256 (suficiente, em geral, para um conjunto completo de instruções) se N = 500 usar 1 ou 2 bytes: - se 1o byte FFh código = 1o byte (255 possibilidades) - se 1o byte = FFh código = 2o byte (+256 possibilidades) campo dos operandos define o(s) valor(es) do(s) dado(s) com os quais a operação deve ser executada o comprimento do campo dos operandos também pode ser fixo ou variável o próprio número de operandos pode ser sempre o mesmo, ou variar de acordo com a instrução instruções com 4 operandos ADD A, B, X, ENDE MPY A, B, X, ENDE exemplos: A+B X, vai para o endereço ENDE A*B X, vai para o endereço ENDE (hoje, nenhum processador se utiliza do operando do endereço da próxima instrução, a não ser nas instruções de desvio) instruções com 3 operandos exemplos: ADD A, B, X A+B X MPY A, B, X A*B X (em ambos os casos, vai, implicitamente, para a instrução seguinte) instruções com 2 operandos exemplos: ADD A, B A+B A (o resultado é implicitamente armazenado no primeiro operando) MOV A, B BA instruções com 1 operando exemplos: MOV A A acumulador ADD A acumulador + A acumulador (o acumulador é um operando implícito, e também onde é armazenado o resultado) JMP ENDE vai para o endereço ENDE exemplos: STP encerra a execução NOP não faz nada (apenas consome um certo tempo) vantagens da instrução com muitos operandos instruções sem operandos completeza (possui todos os operandos explícitos) possibilita programas com menor número de instruções desvantagens da instrução com muitos operandos desperdício de bits, na maioria dos casos grande consumo de memória grande consumo de tempo (especialmente, no ciclo de busca) ArquiteturaComputadores.doc - 28/02/yy – página 41 MODOS DE ENDEREÇAMENTO os valores dos dados manipulados por uma instrução são obtidos de acordo com o modo de endereçamento da instrução endereçamento imediato o campo dos operandos da instrução fornece o próprio valor do dado modo mais rápido para a obtenção do valor do dado (lido junto com o código da instrução) utilizado, em programas, para iniciar variáveis; nas operações com constantes matemáticas; nas instruções de desvio desvantagem: limitação do valor máximo do dado (2n), pelo número de bits (n) do campo dos operandos endereçamento direto o campo dos operandos da instrução fornece o endereço, na memória, onde está (ou será) armazenado o valor do dado pode indicar o endereço inicial, na memória, a partir do qual podem estar armazenados diversos valores (vetor) utilizado, em programas, para manipulação de variáveis desvantagem: execução da instrução mais demorada do que no modo imediato (pois requer um acesso extra à memória) endereçamento indireto o campo dos operandos da instrução fornece o endereço, na memória, onde está armazenado o endereço, também na memória, onde está (ou será) armazenado o dado duplo endereçamento utilizado, por programas, para manipulação de variáveis apontadas por ponteiros desvantagem: execução da instrução mais demorada do que no modo direto (pois requer dois acessos extras à memória) endereçamento de registrador o campo dos operandos indica o registrador onde está (ou será) armazenado o valor do dado possibilita um menor comprimento do campo dos operandos (pois requer poucos bits para indicar o registrador, devido ao reduzido número de registradores da UCP) execução da instrução mais rápida do que nos modos direto e indireto (pois o acesso a um registrador é muito mais rápido do que um acesso à memória) utilizado, por programas, para variáveis muito utilizadas, isto é, com acessos freqüentes (como contadores, indexadores, indicadores, etc.), ou para resultados intermediários endereçamento indexado o campo dos operandos fornece um endereço de base, que, somado ao valor armazenado num registrador (índice), resulta no endereço, na memória, onde está (ou será) armazenado o dado execução da instrução um pouco mais demorada do que no modo direto (pois requer um acesso extra, ao registrador de índice, e uma soma) utilizado, em programas, para variáveis indexadas, do tipo vetor ou matriz ("array") desvantagem: exige maior complexidade no projeto da UCP (que deve ter um somador para o cálculo do endereço do dado) métodos para indicação do modo de endereçamento utilizado pela instrução implícito, pelo próprio código da instrução (cada código já indica um único modo de endereçamento) explícito, através de um campo específico de bits (um código pode apresentar modos de endereçamento diferentes) ArquiteturaComputadores.doc - 28/02/yy – página 42 Exemplo: Supondo a seguinte configuração da memória e dos registradores: memória endereço ... 15 ... 23 ... 26 ... valor ... 8 ... 15 ... 12 ... registradores R0 ... 3 ... então, supondo que as instruções MOVxxx carregam um valor no acumulador: tipo do endereçamento instrução efeito imediato direto indireto de registrador indexado MOVIME 23 MOVDIR 23 MOVIND 23 MOVREG R0 MOVINX 23, R0 23 acumulador 15 acumulador 8 acumulador 3 acumulador 12 acumulador