Baixe o app para aproveitar ainda mais
Prévia do material em texto
Arquitetura de Computadores Arquitetura de Computadores 2 ÍNDICE 1 - COMPONENTES DE UM SISTEMA DE COMPUTAÇÃO ..................................................................... 4 1.1 - DESCRIÇÃO DOS COMPONENTES ................................................................................................................ 4 1.2 - MÁQUINA DE VON NEUMANN .................................................................................................................... 5 1.3 - REPRESENTAÇÃO DAS INFORMAÇÕES ......................................................................................................... 6 1.3.1 - O Bit, o Caractere, o Byte e a Palavra ............................................................................................ 6 2 - CONVERSÃO DE BASES E ARITMÉTICA COMPUTACIONAL .......................................................... 9 2.1 - OUTRAS BASES DE NUMERAÇÃO ................................................................................................................. 9 2.2 - CONVERSÃO DE BASES ............................................................................................................................ 11 2.2.1 - Conversão entre Bases Potência de 2 ........................................................................................... 11 2.2.2 - Conversão de números de uma base B para a base 10 ................................................................. 12 2.2.3 - Conversão de números decimais para uma base B ....................................................................... 12 2.3 - ARITMÉTICA BINÁRIA E HEXADECIMAL ..................................................................................................... 13 3- MEMÓRIA .................................................................................................................................................. 16 3.1 - MEMÓRIA SECUNDÁRIA ........................................................................................................................... 17 3.2 - ORGANIZAÇÃO DA MEMÓRIA PRINCIPAL ................................................................................................... 17 3.2.1 - Organização de memória do tipo seleção linear........................................................................... 18 3.3 - OPERAÇÕES COM A MEMÓRIA PRINCIPAL ................................................................................................. 19 3.4 - CÁLCULOS COM CAPACIDADE DA MP ...................................................................................................... 21 3.5 - MEMÓRIA CACHE ................................................................................................................................... 23 3.5.1 - Utilização da memória cache ........................................................................................................ 23 3.5.2 - Conceito de localidade .................................................................................................................. 24 3.5.3 - Mapeamento de dados MP/Cache ................................................................................................. 24 3.5.4 - Algoritmos de substituição de dados na cache .............................................................................. 26 3.5.5 - Política de escrita pela memória cache ........................................................................................ 27 3.6 - REGISTRADORES ..................................................................................................................................... 27 3.7 - TIPOS (TECNOLOGIAS DE FABRICAÇÃO DE MEMÓRIAS) ............................................................................. 28 3.8 - EXERCÍCIOS: .......................................................................................................................................... 30 4 - UNIDADE CENTRAL DE PROCESSAMENTO (PROCESSADOR) .................................................... 34 4.1 - FUNÇÃO PROCESSAMENTO ...................................................................................................................... 35 4.1.1 - A influência do tamanho da palavra ............................................................................................. 36 4.2 - FUNÇÃO CONTROLE ................................................................................................................................ 36 4.2.1 - Unidade de Controle ..................................................................................................................... 37 4.2.2 - Relógio .......................................................................................................................................... 37 4.2.3 - Registrador de Instrução ............................................................................................................... 38 4.2.4 - Contador de Instrução .................................................................................................................. 38 4.2.5 - Decodificador de Instrução ........................................................................................................... 38 4.3 - INSTRUÇÕES DE MÁQUINA ....................................................................................................................... 38 4.3.1 - Formato das instruções ................................................................................................................. 39 4.4 - FUNCIONAMENTO DA UCP. O CICLO DA INSTRUÇÃO ............................................................................... 39 4.5 - METODOLOGIA TIPO LINHA DE MONTAGEM OU “PIPELINE” ..................................................................... 43 4.6 - TIPOS DE CONTROLE DE UM PROCESSADOR ............................................................................................ 47 4.6.1 - Controle programado no hardware .............................................................................................. 48 4.6.2 - Controle por Microprogramação .................................................................................................. 48 4.7 - BARRAMENTOS ....................................................................................................................................... 49 4.7.1 - Comparação entre o Barramento Síncrono e Assíncrono ............................................................. 52 Arquitetura de Computadores 3 5 - REPRESENTAÇÃO DE INSTRUÇÕES .................................................................................................. 53 5.1 - QUANTIDADE DE OPERANDOS ................................................................................................................. 54 5.2 - MODOS DE ENDEREÇAMENTO ................................................................................................................. 54 5.2.1 - Modo imediato .............................................................................................................................. 55 5.2.2 - Modo direto ................................................................................................................................... 55 5.2.3 - Modo indireto ................................................................................................................................ 56 5.2.4 – Endereçamento por Registrador ................................................................................................... 57 5.2.5 – Modo Indexado ............................................................................................................................. 59 5.2.6 – Modo Base Mais Deslocamento ................................................................................................... 60 6 – EXECUÇÃO DE PROGRAMAS ..............................................................................................................62 6.1 – LINGUAGENS DE PROGRAMAÇÃO ............................................................................................................ 62 6.2 – MONTAGEM ........................................................................................................................................... 62 6.3 – COMPILAÇÃO ......................................................................................................................................... 63 6.4 – LIGAÇÃO OU LINKEDIÇÃO ...................................................................................................................... 64 6.5 – INTERPRETAÇÃO .................................................................................................................................... 65 7 - ENTRADA E SAÍDA ................................................................................................................................. 66 7.1 - INTERFACES DE E/S ................................................................................................................................ 67 7.1.1 - Transmissão serial ........................................................................................................................ 68 7.1.2 - Transmissão Paralela ................................................................................................................... 68 Arquitetura de Computadores 4 1 - Componentes de um sistema de computação 1.1 - Descrição dos componentes Um sistema de computação é um conjunto de componentes que são integrados para funcionar como se fossem um único elemento e que têm por objetivo realizar manipulações com dados, isto é, realizar algum tipo de operação com os dados de modo a obter uma informação útil. Os comandos definidos (para realizar as operações com os dados) - que se constituem, em conjunto, no que se denomina um programa de computador - precisam ser interpretados pela máquina (pelo computador) e, para tal, precisam de algum modo ser introduzidos no hardware. Trata-se da primeira etapa de um processamento - Entrada - que requer um componente ou equipamento específico. No entanto, os computadores foram (e ainda são) projetados com capacidade de entender e realizar apenas tarefas bem simples. Ou seja, o programa introduzido no sistema pelo dispositivo de entrada não pode ser diretamente processado, pois seus comandos são complexos para o entendimento da máquina. E, por isso, o programa deve ser convertido para linguagem de máquina. As tarefas relacionadas são operações que uma determinada máquina (o computador) pode realizar. Chamam-se por causa disso instruções de máquina. O componente do computador que é capaz de entender e realizar uma operação definida por uma instrução de máquina denomina-se Unidade Central de Processamento - UCP. Para que a UCP possa trabalhar - entender e executar uma instrução de máquina - é necessário, em primeiro lugar, que o programa seja introduzido no sistema, para em seguida ser convertido, e depois a UCP começar a executar este último. Antes da execução, o programa e os dados devem ser guardados na própria máquina para, um a um, serem localizados pelo processador, entendidos e executados. O componente do sistema de computação responsável pelo armazenamento das informações introduzidas pelo componente de entrada é denominado Memória. Após a realização de todas as operações, os resultados devem ser apresentados ao usuário, através de algum dispositivo de Saída, em uma forma inteligível para ele (caracteres alfabéticos, algarismos decimais, sinais de pontuação de nossa linguagem, etc.) e não na linguagem do computador. A Unidade Central de Processamento é o componente vital do sistema, porque, além de efetivamente realizar as ações finais, controla quando e o que deve ser realizado pelos demais componentes, emitindo para isso sinais apropriados de controle. Os programas e os dados são armazenados na memória para execução imediata (memória principal) ou para execução ou uso posterior (memória secundária). Os dispositivos de entrada ou saída servem basicamente para permitir que o sistema de computação se comunique com o mundo exterior, realizando ainda, além da interligação, a conversão das linguagens do sistema para a linguagem do meio exterior (caracteres de nossas linguagens) e vice-versa. O teclado (dispositivo de entrada) interliga o usuário (mundo exterior) e o computador, permitindo a comunicação entre ambos através do uso das suas teclas. Ao ser pressionada a tecla correspondente ao caractere A, por exemplo, os circuitos eletrônicos existentes no teclado “convertem” a pressão mecânica em um grupo de sinais elétricos, alguns com voltagem alta (bit 1) e outros com voltagem baixa (bit 0), que corresponde, para o computador, ao caractere A Os dispositivos de saída operam de modo semelhante, porém em sentido inverso, isto é, do computador para o exterior, convertendo os sinais elétricos internos (que em grupos, podem representar um caractere inteligível pelo ser humano) em símbolos por nós conhecidos, como C, e, h, *, >, etc. Arquitetura de Computadores 5 Figura 1.1 - Componentes de um sistema de computação. 1.2 - Máquina de von Neumann O primeiro computador eletrônico e digital, construído no mundo para emprego geral, isto é, com programa de instruções que podiam alterar o tipo de cálculo a ser realizado com os dados, foi denominado ENIAC (Electronic Numerical Integrator And Computer, ou seja , Computador e Integrador Numérico Eletrônico) e foi projetado por John Mauchly e John P. Eckert, de 1943 a 1946, tendo funcionando daí em diante até 1955, quando foi desmontado. O ENIAC era uma máquina gigantesca, contendo mais de 17.000 válvulas e 800 quilômetros de cabos. Pesava cerca de 30 toneladas e consumia uma enorme quantidade de eletricidade, além do consumo de válvulas, que queimavam com grande freqüência devido ao calor. O ENIAC era extremamente rápido para sua época, realizando cerca de 10.000 operações por segundo. Ele possuía 20 registradores, cada um deles podendo armazenar um valor numérico de 10 dígitos; era uma máquina decimal (não binária) e, por isso, cada dígito era representado por um anel de 10 válvulas, uma das quais estava ligada em cada instante, indicando o algarismo desejado. O ENIAC era programado através da redistribuição de cabos em tomadas diferentes e rearranjo de chaves (possuía cerca de 6.000), tarefa que poderia levar muitos dias. Enquanto Mauchly e Eckert iniciaram a construção de um novo computador, o EDVAC (Electronic Discret Variable Automatic Computer, ou seja, Computador Automático Eletrônico de Variáveis Discretas), um dos colaboradores do projeto do ENIAC, o matemático John von Neumann, também iniciou outro projeto de aperfeiçoamento do computador inicial, denominado IAS, nome do local onde Von Neumman foi trabalhar, o Institute for Advanced Studies da Universidade de Princeton. O IAS embora pertencia à primeira geração de computadores e tenha sido, para os padrões atuais, uma máquina limitada, é fundamental no estudo da arquitetura de computadores, pois a grande maioria de suas especificações permanece válida até o momento. Seu projeto básico, agora conhecido como máquina de von Neumann, possuía cinco partes básicas: a memória, a unidade aritmética e lógica (UAL), a unidade de controle (UC) de programa e os dispositivos de entrada e saída. A memória consistia de 4096 palavras, cada palavra possuindo 40 bits(0 ou 1). Cada palavra armazenava duas instruções de 20 bits ou um inteiro de 39 bits com sinal. As instruções possuíam 8 bits dedicados a identificar o tipo da instrução, e 12 bits para especificar uma dentre 4096 palavras de memória. Saída Memória Controle Dados Entrada Leitura Escrita Teclado Vídeo Processador - UCP Arquitetura de Computadores 6 Dentro da unidade aritmética e lógica, a precursora da atual CPU (Central Processing Unit), ou seja UCP (Unidade Central de Processamento), havia um registrador interno especial de 40 bits denominado acumulador. Uma instrução típica adicionava uma palavra de memória ao acumulador ou armazenava o acumulador na memória. A máquina de von Neumann operava de modo repetitivo, executando um ciclo de instrução em seguida ao outro. Cada ciclo consistia em dois subciclos: o ciclo de busca (“fetch cycle”), onde o C.Op da próxima instrução era trazido da memória para o IR (Instruction Register) e a parte do endereço da instrução era armazenada no MAR (Memory Address Register). Tão logo o C.Op estivesse armazenado no IR, então se iniciava o outro subciclo, o ciclo de execução. O circuito de controle interpretava o código de operação e gerava os sinais apropriados para acarretar o movimento de dados ou a realização de uma operação na UAL (Unidade Aritmética e Lógica). Memória Entrada Unidade UAL de Controle Saída Acumulador Figura 1.2 - A máquina original de von Neumann. Conforme pode ser observado dessas especificações resumidas, o IAS possuía características de arquitetura que permaneceram ao longo do tempo. As máquinas evoluíram consideravelmente em velocidade, capacidade de armazenamento, miniaturização, consumo de energia, e outras inovações, mas a arquitetura básica permaneceu. 1.3 - Representação das informações 1.3.1 - O Bit, o Caractere, o Byte e a Palavra O computador, sendo um equipamento eletrônico, armazena e movimenta as informações internamente sob forma eletrônica; esta pode ser um valor de voltagem ou de corrente (sabemos também que na memória secundária as informações são armazenadas sob forma magnética ou ótica). Para que esta máquina pudesse representar eletricamente todos os símbolos utilizados na linguagem humana, seriam necessários mais de 100 diferentes valores de voltagem (ou corrente). Tal máquina certamente seria difícil de ser construída. Considerando que é muito mais simples e confiável projetar um circuito capaz de gerar e manipular o menor número possível de valores distintos, optou-se por uma máquina binária, isto é, capaz de entender apenas dois valores diferentes: 0 e 1. A menor unidade de informação armazenável em um computador é o algarismo binário ou dígito binário, conhecido como bit (contração das palavras inglesas binary digit). O bit pode ter, então, somente dois valores: 0 e 1. Evidentemente com possibilidades tão limitadas, o bit pouco pode representar isoladamente; por essa razão, as informações manipuladas por um computador são codificadas em grupos ordenados de bits, de modo a terem um significado útil. Arquitetura de Computadores 7 O menor grupo ordenado de bits representando uma informação útil e inteligível para o ser humano é o caractere. Qualquer caractere a ser armazenado em um sistema de computação é convertido em um conjunto de bits previamente definido para o referido sistema (chama-se código de representação de caracteres). Cada sistema poderá definir como (quantos bits e como se organizam) cada conjunto de bits irá representar um determinado caractere. A primeira definição formal atribuída a um grupo ordenado de bits, para efeito de manipulação interna mais eficiente, foi instituída pela IBM e é, atualmente, utilizada por praticamente todos os fabricantes de computadores. Trata-se do byte, definido como um grupo ordenado de oito bits, tratados de forma individual, como unidade de armazenamento e transferência. Como os principais códigos de representação de caracteres utilizam grupos de oito bits por caractere, os conceitos de byte e caractere tornam-se semelhantes e as palavras, quase sinônimas. É costume, no mercado, construírem memórias cujo acesso, armazenamento e recuperação de informações são efetuados byte a byte (ou caractere a caractere). Por essa razão, em anúncios de computadores, menciona-se que ele possui “256 Kbytes de memória cache” ou “16 Mbytes de memória”. O termo caractere é mais empregado para fins comerciais, enquanto o termo byte é empregado mais na linguagem técnica dos profissionais da área. O K e o M, referidos no exemplo, são letras indicativas de um valor numérico fixo, utilizado para reduzir a quantidade de algarismos representativos de um número. Nas grandezas métricas, usa- se o K para representar mil vezes. Como os computadores são binários, todas as indicações numéricas referem-se a potências de 2, e, por essa razão, o K representa 1.024 unidades (décima potência de 2 ou 210 = 1024) e o M (abreviatura do termo mega) representa 1.048.576 unidades (valor igual a 1.024 x 1.024 ou 210 x 210 = 220). Com o progressivo aumento da capacidade dos dispositivos de armazenamento dos computadores, criou-se um terceiro elemento para abreviar valores mais elevados: trata-se do giga, representado pelo caractere G e que indica um valor igual a 1.024 mega ou 1.048.576K ou 230. Atualmente, já se menciona o termo tera, para representar um valor igual a 240 ou 1.024 G e o peta para representar 250 ou 1.024 teras. Dessa forma, os valores utilizados em computação para indicar capacidade de memória são normalmente compostos de um número (sempre entre 0 e 999) e uma das abreviaturas citadas. Além do bit e do byte, há um outro conceito, também importante, relacionado com o armazenamento e a transferência de informações entre MP e UCP e especialmente relacionado ao processamento de dados pela UCP. Trata-se do conceito da palavra. Inicialmente, podemos definir a palavra como sendo um conjunto de bits que representa uma informação útil. Assim, uma palavra estaria associada ao tipo de interação entre MP e UCP, que é individual, informação por informação. Ou seja a UCP processa instrução por instrução (cada uma estaria associada a uma palavra), armazena ou recupera número a número (cada um estaria associado a uma palavra), e assim por diante. Todavia, o conceito de palavra não é rigorosamente igual para todos os fabricantes. No que se refere à unidade de armazenamento, considera-se mais importante a quantidade de bits recuperada em um acesso, em geral de tamanho igual ao de um byte. Esse valor de bits é pequeno demais para representar um número ou uma instrução de máquina e, por isso, não pode ser aceitável para o tamanho de uma palavra. Arquitetura de Computadores 8 De modo geral, usam-se dois valores diferentes: um relacionado à unidade de armazenamento - o byte (oito bits é o valor mais comum) e outro para indicar a unidade de transferência e processamento - a palavra (que, na quase totalidade de computadores, possui um número de bits múltiplo de 1 byte - 16 ou 32 bits é o valor mais comum). Em geral, a UCP processa valores representados por uma quantidade de bits igual à da palavra, indicando assim a capacidade de processamento do sistema. Arquitetura de Computadores 9 2 - Conversão de bases e aritmética computacional Desde os primórdios da civilização o homem vem adotando formas e métodos específicos para representar números, tornando possível, com eles, contar objetose efetuar operações aritméticas. A forma mais empregada de representação numérica é a chamada notação posicional. Nela, os algarismos componentes de um número assumem valores diferentes, dependendo de sua posição relativa no número. O valor total do número é a soma dos valores relativos de cada algarismo. Desse modo, é a posição do algarismo ou dígito que determina seu valor. A formação de números e as operações com eles efetuadas dependem, nos sistemas posicionais, da quantidade de algarismos diferentes disponíveis no referido sistema. Há muito tempo a cultura ocidental adotou um sistema de numeração que possui dez diferentes algarismos - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 - e, por essa razão, foi chamado de sistema decimal. A quantidade de algarismos disponíveis em um dado sistema de numeração é chamada de base; a base serve para contarmos grandezas maiores, indicando a noção do grupamento. O sistema de dez algarismos, acima mencionado, tem base 10; um outro que possua apenas dois algarismos diferentes (0 e 1) é de base 2, e assim por diante. Vamos exemplificar o conceito de sistema posicional. Seja o número 1303, representado na base 10, escrito da seguinte forma: 1 3 0 3 10 Neste exemplo, o número é composto de quatro algarismos: 1, 3, 0 e 3, cada algarismo possui um valor correspondente à sua posição no número. Assim, o primeiro 3 (algarismo mais à direita) representa 3 unidades. Neste caso, o valor absoluto do algarismo (que é 3) é igual ao seu valor relativo (que também é 3), por se tratar da primeira posição (posição mais à direita, que é a ordem das unidades). Enquanto o segundo 3 vale três vezes a potência de 2 na base 10 ou 300. O valor total do número seria 1 x 103 + 3 x 102 + 0 x 101 + 3 x 100 = 1303 10. Generalizando, num sistema qualquer de numeração posicional, um número N é expresso da seguinte forma: N = (dn-1 dn-2 dn-3 ... d1 d0 )b onde: d indica cada algarismo do número; n-1, n-2, 1, 0 índice, indicam a posição de cada algarismo; b indica a base de numeração; n indica o número de dígitos inteiros. O valor do número pode ser obtido do seguinte somatório: N = dn-1 x b n-1 + dn-2 x b n-2 + ... + d1 x b 1 + d0 x b 0 2.1 - Outras bases de numeração Entre as bases diferentes da 10, consideremos apenas as bases 2 e potências de 2, visto que todo computador digital representa internamente as informações em algarismos binários, ou seja, trabalha em base 2. Como os números representados em base 2 são muito extensos (quanto menor a base de numeração, maior é a quantidade de algarismos necessários para indicar um dado valor) e, portanto, de difícil manipulação visual, costuma-se representar externamente os valores binários em outras bases de valor mais elevado. Em geral, usam-se as bases octal ou hexadecimal, em vez da base decimal, por ser mais simples e rápido converter valores binários para valores em bases que são potências de 2. Arquitetura de Computadores 10 Através da notação posicional, representam-se números em qualquer base: (1011)2 - na base 2 (257)8 - na base 8 No entanto, nas bases diferentes de 10, o valor relativo do algarismo (valor dependente de sua posição no número) é normalmente calculado usando-se os valores resultantes de operações aritméticas em base 10 e não na base do número. Exemplo: Seja o número na base 2: (1011)2 Aplicando a expressão, teríamos: 1 x 2 3 + 0 x 2 2 + 1 x 2 1 + 1 x 2 0 = 8 + 0 + 2 + 1 = (11)10 Podemos concluir que: a-) O número máximo de algarismos de uma base é igual ao valor da base. b-) O valor do algarismo mais à esquerda (mais significativo) de um número de n algarismos inteiros é obtido pela multiplicação de seu valor absoluto (algarismo dn-1) pela base elevada à potência (n-1), ou seja: (dn-1 x b n-1 ). c-) O valor total do número é obtido somando-se n valores, cada um expressando o valor relativo de um dos n algarismos componentes do número. A base do sistema binário é 2, logo, qualquer número, quando representado nesse sistema consiste exclusivamente em dígitos 0 e 1. Em bases de valor superior a 10, utilizam-se letras do alfabeto para representação de algarismos maiores que 9. Uma base especialmente importante em computação é a 16 ou hexadecimal. Na base 16 (hexadecimal), dispomos de 16 algarismos (não números) diferentes: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Os “algarismos” A, B, C, D, E, F, representam respectivamente os valores (da base 10): 10, 11, 12, 13, 14, 15. Exemplo: . Seja o número na base 16: (1A7B)16 . Aplicando a expressão, para encontrar o seu valor na base 10, teríamos: 1 x 16 3 + 10 x 16 2 + 7 x 16 1 + 11 x 16 0 = 4096 + 2560 + 112 + 11 = (6779)10 Podemos observar que na fórmula foram usados os valores 10 (para o A) e 11 (para o B) para multiplicar as potências de 16. Por isso, obtivemos o valor do número na base 10. Utilizamos valores e regras de aritmética da base 10 e, por isso, o resultado encontrado é um valor decimal. A tabela a seguir, mostra a representação de números nas bases 2, 8, 10 e 16. Base 2 Base 8 Base 10 Base 16 Base 2 Base 8 Base 10 Base 16 0 0 0 0 1001 11 9 9 1 1 1 1 1010 12 10 A 10 2 2 2 1011 13 11 B 11 3 3 3 1100 14 12 C 100 4 4 4 1101 15 13 D 101 5 5 5 1110 16 14 E 110 6 6 6 1111 17 15 F 111 7 7 7 10000 20 16 10 1000 10 8 8 10001 21 17 11 Arquitetura de Computadores 11 Podemos observar na tabela que os dígitos octais e hexadecimais correspondem a combinações de 3 (octais) e 4 (hexadecimais) bits (algarismos binários). Sendo a base desses sistemas de valor maior que a base 2 e tendo em vista essa característica na representação de números nas bases 8 e 16 em relação à base 2, verifica-se que é possível converter rapidamente números da base 2 para as bases 8 ou 16, ou vice-versa. Por exemplo, o número (101111011101), na base 2, possui 12 algarismos (bits), mas pode ser representado com quatro algarismos octais ou com três algarismos hexadecimais. (101111011101)2 = (5735)8 ; porque: 101 = 5, 111 = 7 , 011 = 3 e 101 = 5 (101111011101)2 = (BDD)16 ; porque: 1011 = B, 1101 = D e 1101 = D. 2.2 - Conversão de Bases Entendido o conceito de representação de números em notação posicional, e sendo esta notação aplicável em qualquer base inteira, podemos exercitar a conversão de números de uma base para outra, principalmente no que se refere à conversão entre as bases múltiplas de 2, e entre estas e a base 10 e vice-versa. 2.2.1 - Conversão entre Bases Potência de 2 Entre as bases 2 e 8 Como 8 = 2 3 , um número binário pode ser facilmente convertido para o seu valor equivalente na base 8. Se o número binário for inteiro, basta dividi-lo, da direita para a esquerda, em grupos de 3 bits (o último grupo não sendo múltiplo de 3, preenche-se com zeros à esquerda). Então, para cada grupo, acha-se o algarismo octal equivalente. A conversão de números da base 8 para a 2 é realizada de forma semelhante, no sentido inverso; substitui-se cada algarismo octal pelos seus 3 bits correspondentes. Entre as bases 2 e 16 O procedimento de conversão entre números binários e hexadecimais é idêntico ao da conversão entre as bases 2 e 8, exceto que, neste caso, a relação é 16 = 2 4 . Desse modo, um algarismo hexadecimal é representado por 4 bits; converte-se um número binário em hexadecimal, dividindo-se este número em grupos de 4 bits da direita para a esquerda. A conversão de hexadecimal para binário é obtida substituindo-se o algarismo hexadecimal pelos 4 bits correspondentes, de acordo com os valores indicados na tabela. Entre as bases 8 e 16 O processo de conversão utiliza os mesmos princípios antes apresentados. No entanto, comoa base de referência para as substituições de valores é a base 2, esta deve ser empregada como intermediária no processo. Ou seja, convertendo-se da base 8 para a base 16, deve-se primeiro efetuar a conversão para a base 2 e depois para a base 16. O mesmo ocorre se a conversão for da base 16 para a base 8. Exemplo: (3174)8 = ( )16 = (011) (001) (111) (100)2 = (11001111100)2 = (0110) (0111) (1100)2 = (67C)16 Arquitetura de Computadores 12 2.2.2 - Conversão de números de uma base B para a base 10 A conversão de um número, representado em uma base B qualquer, para seu correspondente valor na base 10 é realizada empregando-se a expressão da notação posicional. Exemplo: (101101)2 = ( )10 Substituindo-se, na expressão, as letras pelos valores do exemplo, teremos: b = 2 (a base origem do número a ser convertido) n = 6 (6 algarismos) n - 1 = 5 (expoente do primeiro produto mais à esquerda) dn-1 = 1 Os produtos seguem a seqüência da expressão, resultando em: 1 x 2 5 + 0 x 2 4 + 1 x 2 3 + 1 x 2 2 + 0 x 2 1 + 1 x 2 0 = 32 + 0 + 8 + 4 + 0 + 1 = (45)10 2.2.3 - Conversão de números decimais para uma base B A conversão de números, representados na base 10, para seus valores equivalentes em uma base qualquer é efetuada através de um processo inverso ao do subitem anterior (base B para base 10). A conversão é obtida dividindo-se o número decimal pelo valor da base desejada; o resto encontrado é o algarismo menos significativo do valor na base B (mais à direita). Em seguida, divide-se o quociente encontrado pela base B; o resto é o outro algarismo (à esquerda); e assim, sucessivamente, vão-se dividindo os quocientes pelo valor da base até se obter quociente de valor zero. Em cada divisão, o resto encontrado é um algarismo significativo do número da nova base; o primeiro resto encontrado é o valor do algarismo menos significativo e o último resto será o algarismo mais significativo (mais à esquerda). Na realidade, o algoritmo de conversão pode ser definido com vários critérios de parada, tais como: a-) Enquanto quociente for diferente de zero: . dividir dividendo por divisor . extrair resto como algarismo e colocá-lo à esquerda do anterior . repetir . Quando quociente for igual a zero, parar. b-) Enquanto dividendo for maior que divisor: . dividir dividendo por divisor . extrair resto como algarismo e colocá-lo à esquerda do anterior . repetir . Usar o dividendo (que agora é menor que o divisor) como último algarismo à esquerda (algarismo mais significativo). Exemplos: 1-) (45)10 = ( )2 45 / 2 = 22 resto0 = 1 22 / 2 = 11 resto1 = 0 11 / 2 = 5 resto2 = 1 5 / 2 = 2 resto3 = 1 2 / 2 = 1 resto4 = 0 1 / 2 = 0 resto5 = 1 O número é (101101)2 Arquitetura de Computadores 13 2-) (490)10 = ( )16 490 / 16 = 30 resto0 = 1010 algarismo A16 30 / 16 = 1 resto1 = 1410 algarismo E16 1 / 16 = 0 resto2 = 110 algarismo 116 O número é (1EA)16 2.3 - Aritmética binária e hexadecimal Procedimentos de adição e subtração de números binários e hexadecimais, inteiros e sem sinal. Soma binária A operação de soma de dois números em base 2 é efetuada de modo semelhante à soma decimal, levando-se em conta, apenas, que só há dois algarismos disponíveis (0 e 1). Sendo assim: 0 + 0 = 0 1 + 0 = 1 0 + 1 = 1 1 + 1 = 0, com “vai 1” Exemplos: 11111 vai 1 111 101101 parcela 1 10101 +101011 parcela 2 +11100 1011000 110001 Subtração binária A subtração em base 2, na forma convencional, usada também no sistema decimal (minuendo - subtraendo = diferença), é relativamente mais complicada por dispormos apenas dos algarismos 0 e 1 e, dessa forma, 0 menos 1 necessita de “empréstimo” de um valor igual à base (no caso é 2), obtido do primeiro algarismo diferente de zero, existente à esquerda. Se estivéssemos operando na base decimal, o “empréstimo” seria de valor igual a 10. Exemplos: 101101 - 100111 000110 A partir da direita para a esquerda a-) 1 - 1 = 0 b-) 0 - 1 não é possível. Então, retira-se 1 da ordem à esquerda, que fica com 1 - 1 = 0, e passa-se para a ordem à direita, como 2, visto que 1 unidade de ordem à esquerda vale uma base de unidades (no caso: base = 2) da ordem direita. 2 - 1 = 1 c-) Agora tem-se 0 - 1 e, portanto, repete-se o procedimento do item acima 2 - 1 = 1 d-) 0 - 0 = 0 e-) 0 - 0 = 0 f-) 1 - 1 = 0 Resultado: 0001102 ou simplesmente 1102 Arquitetura de Computadores 14 Aritmética hexadecimal A aritmética com valores expressos em algarismos hexadecimais segue as mesmas regras para qualquer base. Exemplo 1: Adição 1 11 3A943B +23B7D5 5E4C10 Da direita para a esquerda, temos: a-) B = 1110 + 5 = 1610 Como 1610 não é um algarismo válido da base 16 (o maior algarismo, F, tem valor = 1510), então usa-se o princípio posicional, substituindo 16 unidades da ordem da direita por 1 unidade a ordem á esquerda (vai 1) B + 5 = 0 e vai 1 b-) 1 + 3 + D = 1 + 3 + 13 = 1710 1710 = 16 (vai 1 para a esquerda) + 1 c-) 1 + 4 + 7 = 1210 1210 equivalente ao algarismo C16. Coloca-se C como resultado e não há “vai 1”. d-) 9 + B = 9 + 11 = 2010 20 = 16 (vai 1 para a esquerda) + 4. Coloca-se 4 como resultado e “vai 1” para a esquerda. e-) 1 + A + 3 = 1 + 10 + 3 = 1410 1410 equivale ao algarismo E16 f-) 3 + 2 = 5 Resultado: 5E4C10 Exemplo 2: Subtração 4C7BE8 - 1E927A 2DE96E Da direita para a esquerda: a) 8 - A não é possível. Retira-se, então, 1 unidade da ordem à esquerda (E - 1 = D), passando 16 unidades (valor igual ao da base) para a direita, as quais são somadas ao valor existente, 8. 16 + 8 = 24 - A = 24 - 10 = 1410, equivalente ao algarismo E16. b) D - 7 = 13 - 7 = 6 c) B - 2 = 11 - 2 = 9 d) 7 - 9 não é possível. Retira-se 1 unidade da ordem à esquerda (C - 1 = B), passando 16 unidades para a direita, as quais são somadas ao valor existente, 7. 16 + 7 = 23 - 9 = 1410, equivalente ao algarismo E16. Arquitetura de Computadores 15 e) C - E não é possível. Retira-se 1 unidade da ordem à esquerda (4 - 1 = 3), passando 16 unidades para a direita, as quais são somadas ao valor existente, B16 = 1110. 1610 + B16 = 1610 + 1110 = 27 - 14 = 1310, equivalente ao algarismo D16. f) 3 - 1 = 2 Resultado: 2DE96E16 Arquitetura de Computadores 16 3- Memória A memória é o componente do computador cuja função é armazenar as informações que são, foram ou serão manipuladas pelo sistema. A memória de um computador possui tantas variedades - tais como: de velocidade, de capacidade de armazenamento, de tecnologia de construção de utilidade dentro do sistema - que se torna, na realidade, um sistema hierarquicamente estruturado. Na memória, o elemento a ser manipulado fisicamente é o bit, o qual, em grupo de n bits, corresponde a uma unidade de informação a ser armazenada, transferida, recuperada, etc. Ou seja, a memória serve para armazenar informações (na forma de bits) e recuperá-las quando desejado. Para isso, realizam-se ações de escrita (transferência de bits de outro componente para a memória; por exemplo: da UCP) e de leitura (transferência de bits da memória para a UCP). Por informação, entendem-se as instruções e os dados de um programa. Para o correto e eficaz funcionamento da manipulação das informações de e para a memória de um computador, verifica-se a necessidade de se ter em um mesmo computador diferentes tipos de memória. Para certas atividades, p. ex., é fundamental que a transferênciade informações seja a mais rápida possível. É o caso das atividades realizadas internamente no processador, onde a velocidade é primordial, porém a quantidade de bits a ser manipulada é muito pequena (em geral, corresponde à quantidade de bits necessária para representar um único valor - um único dado). Isso caracteriza um tipo de memória diferente, p. ex., daquele em que a capacidade de armazenamento é mais importante que a sua velocidade de transferência. O ideal, é claro, é que a capacidade e velocidade de transferência fossem grandes, mas nesse caso o custo seria alto demais. As memórias de um computador, se interligam de forma estruturada, constituindo um sistema em si, parte do sistema global de computação, podendo ser denominado subsistema de memória. Esse subsistema é projetado de modo que seus componentes sejam organizados hierarquicamente, conforme mostrado na estrutura em forma de pirâmide na figura 4.1. Figura 4.1 - Hierarquia de memória. Arquitetura de Computadores 17 3.1 - Memória secundária Na base da pirâmide que representa a hierarquia de memória em um computador encontra-se a memória denominada secundária ou memória auxiliar. Esta memória tem por objetivo garantir um armazenamento mais permanente a toda a estrutura de dados e programas do usuário, razão pela qual deve naturalmente possuir maior capacidade que as outras memórias. A memória secundária de um computador pode ser constituída por diferentes tipos de dispositivos, alguns diretamente ligados ao sistema para acesso imediato (discos rígidos, por exemplo), e outros que podem ser conectados quando desejado (como os disquetes, fitas de armazenamento, CD-ROM etc.). Uma das principais características dos dispositivos que constituem a memória secundária é sua não volatilidade. 3.2 - Organização da memória principal A MP é a área de trabalho da UCP, isto é, a UCP e a MP trabalham íntima e diretamente na execução de um programa. As instruções e os dados do programa ficam armazenados na MP e a UCP vai “buscando-os” um a um à medida que a execução vai se desenrolando. Os programas são organizados de modo que os comandos são descritos seqüencialmente e o armazenamento das instruções se faz da mesma maneira, fisicamente seqüencial (embora a execução nem sempre se mantenha de forma seqüencial). A memória principal é composta de um determinado número de células (ou posições), cada uma podendo armazenar uma parte da informação. Cada célula tem um número, chamado de seu endereço, pelo qual os programas podem referenciá-la. Se a memória tem N células, elas terão endereços de 0 a N - 1. Uma célula é constituída de um grupo de M bits, que é manipulado em conjunto (como se fosse uma única unidade) em uma operação de leitura ou de escrita. Cada célula representa uma parte da informação, instrução ou dado, propriamente dita. Seu significado é que ela é a menor unidade endereçável. A maioria dos fabricantes de computador padronizaram a célula de 8 bits, que é chamada byte. Já com relação às palavras, são formadas por um grupo de bytes (células). Um computador com uma palavra de 16 bits tem 2 bytes/palavra, enquanto que um computador com palavra de 32 bits tem 4 bytes/palavra. O significado de uma palavra é que a maioria das instruções operam em palavras inteiras. Uma máquina de 16 bits terá registradores de 16 bits e instruções que manipulam palavras de 16 bits, enquanto que uma máquina de 32 bits terá registradores de 32 bits e instruções para mover, somar, subtrair e outras que manipulam palavras de 32 bits. Teoricamente, a unidade de armazenamento da MP deveria ser a palavra, isto é, palavra e célula deveriam ser especificadas com o mesmo tamanho, o que, na realidade não acontece. Os fabricantes têm preferido organizar a MP com células de 1 byte de tamanho, com palavras de 16, 32 e 64 bits. Há autores que utilizam a palavra como unidade de transferência e armazenamento, neste caso, o endereçamento de memória é feito por palavra e não por célula. A memória é vista como um conjunto de palavras, o que não representa um problema, desde que a palavra seja constituída por um número de bits múltiplo da célula. No entanto, na prática é possível encontrar computadores cuja integração UCP/MP é realizada com uma unidade de transferência diferente não só da palavra, mas também do tamanho da célula, seja por razões técnicas, seja apenas por interesses comerciais. Existem também, computadores cuja palavra, nem sequer é formada por um conjunto bits múltiplo da célula. Arquitetura de Computadores 18 bit 0 bit 1 bit M - 1 Figura 4.2 - Organização básica da memória principal. 3.2.1 - Organização de memória do tipo seleção linear Por esta técnica todos os bits de uma dada célula (palavra) estão na mesma pastilha, o arranjo físico e lógico das células é o mesmo. O conjunto é organizado em N células de M bits cada. Por exemplo, uma pastilha de 16 K bits pode conter 1024 células de 16 bits cada. Os elementos de cada conjunto são conectados por linhas horizontais e verticais. Cada linha horizontal da memória (uma célula) é uma saída do decodificador de linha; cada linha vertical da memória (bit da célula) se conecta ao sensor de dados para receber ou enviar 1 bit da célula. Em outras palavras, o decodificador tem 2E saídas para E entradas, isto é, se cada endereço armazenado no REM tem E bits, a ligação REM - decodificador tem E linhas. A saída do decodificador terá x linhas, uma para cada um dos N = 2E células de memória. No exemplo acima, a pastilha de 16 K bits teria um REM de 10 bits, 10 linhas de saída do REM para o decodificador e deste sairiam 1024 linhas, uma para cada célula de memória. Dado um certo endereço, por exemplo, endereço 12 decimal ou 0000001100 em binário, armazenado no REM, isto acarretaria uma saída 1 na linha 13 do decodificador, correspondente ao endereço 12 (linha 13 porque o primeiro endereço é 0). As demais linhas seriam iguais a zero. O problema com este tipo de organização é o tamanho do decodificador. À medida que a quantidade de células aumenta, o decodificador tem que crescer demasiadamente e os circuitos se tornam mais complexos, apesar da grande vantagem de velocidade que tem. N células Todas as células têm a mesma quantidade M de bits MP endereço 0 M bits M bits endereço 1 endereço 2 endereço 3 endereço N - 2 endereço N - 1 Arquitetura de Computadores 19 3.3 - Operações com a memória principal Conforme descrito anteriormente as operações que podem ser realizadas com a MP são: escrita (write) e leitura (read). Os componentes utilizados durante estas operações são mostrados na figura abaixo e serão descritos a seguir. Estes componentes são conectados através de barramentos específcicos. O barramento de um sistema de computação é o elemento responsável pela interligação dos demais componentes, conduzindo de modo sincronizado o fluxo de informações entre eles - dados, endereços e sinais de controle - de acordo com uma programação de atividades previamente definida pela UC. Linhas de endereços REM E bits Decodificador por seleção de linha (1 entre N linhas) Memória N células Circuitos de E/S por colunas Read / Write Linha de bit Linha de célula Linhas de Dados Arquitetura de Computadores 20 Figura 3.3 - Estrutura UCP/MP e a utilização debarramento para comunicação entre elas. Registrador de dados da memória (RDM) - Memory Buffer Register (MBR) - registrador que armazena temporariamente o conteúdo de uma ou mais células que está sendo transferido da MP para a UCP (em uma operação de leitura) ou da UCP para a MP (em uma operação de escrita). Em seguida a informação é encaminhada para outro elemento da UCP para processamento ou para uma célula da MP, conforme o tipo da operação de transferência. Permite armazenar a mesma quantidade de bits do barramento de dados. Registrador de endereços da memória (REM) - Memory Address Register (MAR) - registrador que armazena temporariamente o endereço de acesso a uma posição de memória, ao início de uma operação de leitura ou de escrita. Em seguida, o endereço é encaminhado à área de controle da MP para decodificação e localização da célula desejada. Permite armazenar a mesma quantidade de bits do barramento de endereços. Barramento de controle - Interliga a UCP à MP para passagem de sinais de controle durante uma operação de leitura ou escrita. É bidirecional, porque a UCP pode enviar sinais indicando que a operação é de leitura ou escrita e a MP pode enviar sinais do tipo wait (para a UCP aguardar o término de uma operação). Barramento de endereços - Interliga o REM à MP para transferência dos bits que representam um determinado endereço. É unidirecional, visto que somente a UCP aciona a MP para a realização de operações de operações de leitura ou escrita. Possui tantas linhas de transmissão quantos são os bits que representam o valor de um endereço. Barramento de dados - Interliga o RDM à MP para transferência de informações entre MP e UCP (sejam instruções ou dados). É bidirecional, isto é, ora os sinais percorrem o barramento da UCP para a MP (operação de escrita), ora percorrem o caminho inverso (operação de leitura). A realização de uma operação de leitura é efetivada através da finalização de algumas operações menores (microoperações), cada uma consistindo em uma etapa. O tempo gasto para realização de todas estas etapas caracteriza o tempo de acesso. O intervalo de tempo decorrido entre duas operações consecutivas (leitura-leitura, leitura-escrita ou escrita-leitura) denomina-se ciclo de memória. Arquitetura de Computadores 21 Etapas de uma operação de leitura 1-) (REM) (outro registrador) 1.a-) O endereço é colocado no barramento de endereços 2-) Sinal de leitura é colocado no barramento de controle 3-) (RDM) (MP(REM)) 4-) (registrador) (RDM) Etapas de uma operação de escrita 1-) (REM) (registrador) - A UCP coloca o endereço no REM 1.a-) O endereço é colocado do barramento de endereços 2-) (RDM) (registrador) - A UCP coloca no RDM o dado a ser transferido 3-) Sinal de escrita - A UCP aciona o sinal de gravação pelo barramento de controle 4-) (MP(REM)) (RDM) - O dado é transferido para a célula de memória pelo barramento de dados 3.4 - Cálculos com capacidade da MP A memória principal é um conjunto de N células, cada uma armazenando um valor com M bits. Então, a quantidade de endereços da MP é também igual a N, visto que a cada conteúdo de célula está associado um número, que é o seu endereço. O valor de N representa a capacidade da memória, através da quantidade de células ou de endereços. O valor de M indica a quantidade de bits que podem ser armazenados em uma célula (que é a informação propriamente dita). Como 1 bit representa apenas um entre dois valores (base binária), podemos concluir que: a) pode-se armazenar em cada célula um valor entre 0 e 2M - 1. São 2M combinações possíveis. Por exemplo, se M = 8 bits, temos 2 8 = 256 Seriam armazenados valores entre 00000000 (0) e 11111111 (255). b) a MP tendo N endereços, N = 2 E , sendo E = quantidade de bits dos números que representam cada um dos N endereços. Por exemplo, se N = 512 (porque a MP tem 512 células), N = 2 9 , E = 9. c) o total de bits que podem ser armazenados na referida MP é T, sendo: T = N x M ou T = 2 E x M Utilizando os valores do exemplo acima, teremos: T = 512 x 8 = 4096 bits = 4K bits Exemplo 3.4.1: Uma memória RAM pode armazenar um máximo de 256K bits. Cada célula pode armazenar 8 bits. Qual o tamanho de cada endereço e qual é o total de células que podem ser utilizadas nesta memória ? Total de bits = T = 256K = 2 18 1 célula = 8 bits = M = 2 3 Sendo T = N x M, N = T / M = 2 18 / 2 3 = 2 15 Arquitetura de Computadores 22 Se N = 2 E , então: 2 15 = 2 E E = 15 Tamanho de cada endereço = 15 bits (E) Total de células: 2 15 = 32K Podemos acrescentar a esses elementos o REM, RDM, o barramento de dados e o de endereços. Como o barramento de dados interliga o RDM e a MP, então ambos possuem o mesmo tamanho em bits. O mesmo acontece entre o barramento de endereços e o REM. Como o REM tem por função armazenar o endereço de acesso a uma célula da MP, então seu tamanho deve corresponder à quantidade de bits de cada endereço. Já o RDM deve ter um tamanho correspondente à palavra do computador, visto que deve transferir os bits de uma palavra entre a UCP e a MP (ou vice-versa, dependendo da operação ser de escrita ou de leitura). Exemplo 3.4.2: Um computador, cuja memória principal tem uma capacidade máxima de 2K células de 16 bits cada, possui um REM, um RDM e a palavra possui tamanho de 32 bits. Qual o tamanho destes registradores, qual o valor do maior endereço dessa MP e qual a quantidade total de bits que nela podem ser armazenados ? M = 16 bits Se total de células = 2K, N = 2 11 , se N = 2 E então E = 11 Se cada endereço é um número de 11 bits, então o REM também deve ter o tamanho igual a 11 bits. Se a palavra tem 32 bits e o RDM é o registrador cuja função é armazenar uma palavra de dados, então: RDM = 32 bits Maior endereço: 2K - 1 = 2047 Total de bits: como T = N x M, então T = 2K x 16 = 32K bits Exercícios: 1-) Um computador possui um RDM com 16 bits de tamanho e um REM com capacidade para armazenar números com 20 bits. Sabe-se que a célula deste computador armazena dados com 8 bits de tamanho e que ele possui uma quantidade N de células, igual à sua capacidade máxima de armazenamento. Pergunta-se: a-) Qual é o tamanho do barramento de endereços ? b-) Quantas células de memória são lidas em uma única operação de leitura ? c-) Quantos bits tem a memória principal ? 2-) Um computador possui uma memória principal com 4K células, cada uma capaz de armazenar uma palavra de 8 bits. Pergunta-se: a-) Qual é o maior endereço desta memória ? b-) Qual é o tamanho do barramento de endereços deste sistema ? c-) Quantos bits podem ser armazenados no RDM e no REM ? d-) Qual é o total de bits que pode existir nesta memória ? 3-) Um computador possui uma memória principal com capacidade para armazenar palavras de 16 bits em cada uma de suas N células. O barramento de endereços tem 12 bits de tamanho. Quantos bytes poderão ser armazenados nessa memória ? Arquitetura de Computadores 23 3.5 - Memória Cache Em toda execução de uma instrução, a UCP acessa a memória principal (sem cache), pelo menos uma vez, para buscar a instrução e transferi-la para um dos seus registradores. Muitas instruções requerem outros acessos à memória, seja para a transferência de dados para a UCP (que serão processados na UAL), seja para a transferência do resultado de uma operação da UCP para a memória. Em resumo, para a realização do ciclo de uma instrução há sempre a necessidade de ser realizado um ou mais ciclosde memória. Parte do problema de limitação de velocidade do processador, refere-se à diferença de velocidade entre o ciclo de tempo da UCP e o ciclo de tempo da memória principal. A MP transfere bits para a UCP em velocidades sempre inferiores às que a UCP pode receber e operar os dados, o que acarreta, muitas vezes, a necessidade de acrescentar-se um tempo de espera para a UCP (wait- state - estado de espera). Se o processador (UCP) precisa esperar pelos bits enviados da MP, isto se faz em períodos fixos. Cada período destes chama-se um estado de espera. O número de estados de espera inseridos para que a transferência de dados se concretize depende da relação entre a velocidade da UCP e da MP. Se todos os circuitos da UCP e da MP fossem fabricados com elementos de mesma tecnologia, este problema deixaria de existir. O aperfeiçoamento tecnológico das memórias utilizadas como MP, não tem acompanhado a evolução dos processadores que vêm constantemente obtendo velocidades cada vez maiores em suas operações. Na busca de uma solução para este problema (congestionamento na comunicação UCP/MP), foi desenvolvida uma técnica que consiste na inclusão de um dispositivo de memória entre UCP e MP, denominado memória cache, cuja função é acelerar a velocidade de transferência das informações entre UCP e MP. Esse tipo de memória é fabricado com tecnologia semelhante à da UCP e, portanto, possui tempos de acesso compatíveis, resultando numa considerável redução da espera da UCP para receber dados e instruções da cache, ao contrário do que acontece em sistemas sem cache. 3.5.1 - Utilização da memória cache Com a inclusão da cache podemos descrever o funcionamento do sistema com a execução dos seguintes passos: 1) Sempre que a UCP vai buscar uma nova instrução (após a busca inicial), ela acessa a memória cache. 2) Se a instrução (ou dado) estiver na cache (chama-se acerto), ela é transferida em alta velocidade (compatível com a da UCP). 3) Se a instrução (ou dado) não estiver na cache (chama-se falta), então o sistema está programado para interromper a execução do programa e transferir a instrução desejada da MP para a cache. Porém essa transferência não é somente da instrução desejada, mas dela e de um grupo subseqüente, na pressuposição de que as instruções do grupo serão requeridas pela UCP em seguida e, portanto, já estarão na cache quando necessário (acertos). UCP CACHE MP Transferência cache/UCP célula por célula Transferência cache/MP bloco por bloco de células Arquitetura de Computadores 24 Para haver realmente aumento de desempenho do sistema, é necessário que haja mais acertos do que faltas. Isto é, a memória cache somente é produtiva se a UCP puder encontrar uma quantidade de palavras na cache, suficientemente grande para sobrepujar as eventuais perdas de tempo com faltas. 3.5.2 - Conceito de localidade Basicamente, podemos definir o conceito de localidade como sendo o fenômeno relacionado com o modo pelo qual os programas em média são escritos e executados pela UCP. A execução dos programas se realiza, na média, em pequenos grupos de instruções. Este fato pode ser decomposto em duas facetas do princípio da localidade: espacial e temporal. Assim, os programas não são executados de modo que a MP seja acessada randomicamente como seu nome sugere (RAM). Se um programa acessa uma palavra da memória, há uma boa possibilidade de que ele em breve acesse a mesma palavra novamente. Este é o princípio da localidade temporal. E se ele acessa uma palavra da memória, há uma boa probabilidade de que o programa acesse proximamente uma palavra subseqüente ou de endereço adjacente àquela palavra que ele acabou de acessar. É o princípio da localidade espacial. 3.5.3 - Mapeamento de dados MP/Cache Para entender o sentido desta função como elemento de projeto da memória cache , devemos considerar que uma MP consiste em um conjunto seqüencial de N = 2 E células endereçáveis, cada uma possuindo um único endereço com E bits. Consideremos ainda que a MP está dividida em um conjunto de B blocos (numerados de 0 a B -1), cada um constituído de K células, sendo B = N / K ou B = 2E / K. A memória cache constituída de Q linhas de dados, denominadas quadros, cada uma podendo armazenar K células. Q é bem menor que B para que a cache não seja muito cara. A cada instante, a memória cache possui um conjunto de blocos de MP armazenados em seus quadros, com os dados que a UCP deve precisar. Porém, como Q < B (há mais blocos que quadros), não é possível um quadro da cache estar dedicado a armazenar um específico bloco da MP, ou seja, um quadro é usado por mais de um bloco e, por conseguinte, é preciso identificar , em cada instante, qual o específico bloco que está armazenado no específico quadro da cache. Para isso, cada quadro tem um campo (além daquele para armazenar K células), denominado TAG, que contém a identificação do bloco e que, como veremos a seguir, faz parte dos E bits do endereço completo da MP. MP possui N células = 2 E células endereçáveis MP dividida em B blocos com K células - B = N / K Cache possui Q quadros (linhas de dados), cada uma contendo K células = tamanho do bloco da MP. Cada quadro possui um campo (TAG) que contém o número de identificação do bloco que nele está armazenado. Para definir a relação entre os blocos da MP e os quadros da cache, pode-se escolher uma das três alternativas de mapeamento disponíveis: direto, associativo, associativo por conjunto. Arquitetura de Computadores 25 Mapeamento direto: por esta técnica, cada bloco da MP tem um quadro da cache previamente definido para ser armazenado. Ou seja, uma certa região da cache só pode conter dados de uma determinada região da MP. Como há mais blocos de MP do que quadros da cache, isto significa que muitos blocos irão ser destinados a um mesmo quadro, sendo preciso definir a regra a ser seguida para a escolha do quadro de cada bloco. Podemos exemplificar considerando uma MP com espaço de endereçamento de 8 Mbytes (células), tendo cada uma um endereço com 23 bits (2 23 = 8 M). A cache associada a esta MP possui um tamanho correspondente a 128 Kbytes dividida em 1024 (2 10 ) quadros, com 128 bytes de dados cada um. Sabemos que podemos obter o total de blocos da MP calculando B=N/K onde: N = Número de células da MP = 2 23 K = Número de células do quadro da cache = 2 7 B = 2 23 / 2 7 = 2 16 = 64 K blocos. A memória principal será, então dividida em 64 K blocos de 128 bytes. Como há 65536 blocos na MP e 1024 quadros na cache, então cada quadro deverá armazenar (um de cada vez, é claro) 64 blocos = (2 6 ). Cada endereço da MP pode ser divido nos seguintes elementos: 6 bits mais significativos - indicam qual bloco entre os 64 alocados naquele quadro (TAG); 10 bits do meio - indicam o endereço do quadro da cache; 7 bits menos significativos - indicam o endereço da célula (byte) de dados no quadro. Esta técnica de mapeamento é, sem dúvida, simples e de baixo custo de implementação, além de não acarretar sensíveis atrasos de processamento dos endereços. O seu problema consiste justamente na fixação da localização para os blocos (no exemplo, 64 blocos estão destinados a um quadro, o que indica que somente 1 de cada vez pode estar lá armazenado). Se por exemplo, durante a execução de um programa, um dado código fizer repetidos acessos a palavras situadas em blocos alocados no mesmo quadro, então haverá necessidade de sucessivas idas à MP para substituição de blocos (muitas faltas) e a relação acerto/faltas será baixa, coma conseqüente redução do desempenho do sistema. bloco 0 (K células) bloco 1 bloco B - 1 célula de end. 0 célula de end. 1 célula de end. 2 célula de end. N-1 MP CACHE Tamanho do bloco (K células) TAG Arquitetura de Computadores 26 Mapeamento associativo: Neste tipo de mapeamento, os blocos não têm um quadro fixado previamente para seu armazenamento. Qualquer região da cache pode conter dados de qualquer região da MP, o que implica na varredura de toda a cache para verificar a presença dos dados. O endereço da MP é, neste caso, dividido apenas em duas partes: os 7 bits menos significativos, para indicar a célula desejada pela UCP; e os 16 bits restantes, indicam o endereço do bloco desejado. O campo TAG de cada quadro armazena o endereço completo do bloco armazenado no respectivo quadro. Embora esta técnica evite a fixação dos blocos aos quadros, por outro lado acarreta a necessidade de uma lógica complexa para, rapidamente, examinar cada campo TAG de todos os quadros da cache. Mapeamento associativo por conjuntos: Esta técnica tenta resolver o problema de conflito de blocos em um mesmo quadro (da técnica de mapeamento direto) e o problema de técnica de mapeamento associativo, de exaustiva busca e comparação do campo TAG de toda a memória cache. A técnica se resume em organizar os quadros da cache em grupos, denominados conjuntos, os quais estão vinculados a regiões da MP (como no mapeamento direto). Dentro do conjunto os quadros são complementarmente associativos, como na técnica anterior. Genericamente, a cache é dividida em C conjuntos de D quadros, de modo que: Q = C x D. O método estabelece que o endereço da memória principal é dividido da seguinte forma: 7 bits 9 bits 7 bits TAG número do conjunto endereço da célula 3.5.4 - Algoritmos de substituição de dados na cache O problema se resume em definir qual dos blocos atualmente armazenados na cache deve ser retirado para dar lugar a um novo bloco que está sendo transferido. Isto é necessário porque todos os quadros da cache estão sempre ocupados, visto que Q é muito menor que B. Dependendo de qual técnica de mapeamento se esteja usando, pode-se ter algumas opções de algoritmos. Por exemplo, se o método de mapeamento adotado foi o direto, então não há o que definir, pois, neste caso, somente há um único quadro possível para um dado bloco. No entanto para os outros dois métodos de mapeamento, pode-se optar por um dos seguintes algoritmos: . O que não é usado há mais tempo (LRU-Least recently used) - O sistema seleciona para ser substituído o bloco que está há mais tempo sem ser utilizado. . Fila (FIFO- First-in, First-out) - O sistema escolhe o bloco que está armazenado há mais tempo na cache, independentemente de estar sendo usado ou não com freqüência pela UCP. . O que tem menos referências (LFU-Least Frequently used) - O sistema escolhe o bloco que tem o menor número de acessos por parte da UCP. . Escolha aleatória - Trata-se de escolher aleatoriamente um bloco para ser substituído, independentemente de sua situação no conjunto. Arquitetura de Computadores 27 3.5.5 - Política de escrita pela memória cache Em sistemas com memória cache, sempre que a UCP realiza uma operação de gravação, esta ocorre imediatamente na cache. Sendo a cache apenas uma memória intermediária, não a principal, é necessário que, em algum momento, a MP seja atualizada, para não comprometer a integridade do sistema. Antes que um bloco seja substituído na cache, é preciso considerar se ele foi ou não alterado na cache e se estas alterações também foram realizadas na MP; caso contrário, isto significa que o bloco da cache está diferente do bloco da MP e isto não pode acontecer, pois a MP precisa ser tão corretamente mantida quanto a cache. Uma técnica que implemente a política de escrita, deve levar em consideração alguns fatores, tais como: . A memória principal pode ser acessada tanto pela cache quanto por elementos de entrada e saída (um dispositivo de acesso direto a memória (DMA)). Neste caso, é possível que uma célula da MP tenha sido alterada na cache e ainda não na MP e, assim, esta célula da MP está desatualizada. Ou um elemento de E/S pode ter alterado a célula da MP e, então, a célula da cache é que estará desatualizada. . A memória principal pode ser acessada por várias UCP, cada uma contendo sua memória cache. Neste caso, é possível que uma célula da MP seja alterada para atender à alteração de uma cache específica de uma UCP, e as demais caches cujo conteúdo esteja ligado a esta palavra estarão desatualizadas. Técnicas conhecidas: Escrita em ambas (Write through): Por esta técnica, cada escrita em uma célula da cache acarreta escrita igual na célula correspondente da MP, assegurando validade permanente e igual ao conteúdo de ambas as memórias. Caso haja outros módulos UCP/Cache, estes alterarão também suas caches correspondentes. Com a utilização desta técnica, pode haver uma grande quantidade de escritas desnecessárias na MP, com a natural redução de desempenho do sistema. Escrita somente no retorno (Write back): Esta técnica realiza a atualização quando o bloco foi substituído e se houve alteração. Sempre que ocorrer uma alteração da célula na cache, o quadro correspondente será marcado através de um bit adicional. Assim, quando o bloco armazenado no quadro específico for substituído, o sistema verifica o valor do bit adicional; caso seja igual a 1, o bloco é então escrito na MP; caso contrário, não. Esta técnica minimiza a desvantagem da técnica anterior, porém a MP fica potencialmente desatualizada para utilização por outros dispositivos a ela ligados, como o módulo de E/S, o que os obriga a acessar o dado através da cache, o que é um problema. Escrita uma vez (Write once): Técnica apropriada para sistemas multi-UCP/Cache, que compartilhem um mesmo barramento. Por ela, o controlador da cache atualiza o bloco da MP sempre que o bloco correspondente na cache foi atualizado pela primeira vez. Este fato não só atualiza ao mesmo tempo ambos os blocos (como na técnica Write through), mas também alerta os demais componentes que compartilham o barramento único. Estes são informados de que houve alteração daquela célula específica e impedem seu uso. Outras alterações naquele bloco apenas são realizadas, na cache local, pois o bloco somente é atualizado na MP quando foi substituído na cache. A política Write once pode ser conveniente, mas apenas para sistemas com múltiplas UCP. 3.6 - Registradores Em um computador, o destino do conteúdo de qualquer tipo de memória é o processador (a UCP). Isto é, o objetivo final de cada uma das memórias é armazenar informações destinadas a serem, em algum momento, utilizadas pelo processador. Ele é o responsável pela execução das instruções, pela manipulação dos dados e pela produção dos resultados das operações. Arquitetura de Computadores 28 Para executar a instrução o processador necessita buscá-la (na memória cache ou principal) e armazená-la em seu próprio interior. Em seguida a este armazenamento da instrução, o processador deverá, na maioria das vezes, buscar dados da memória para serem manipulados na UAL. Esses dados também precisam ser armazenados em algum local da UCP até serem utilizados. Os resultados de um processamento (de uma soma, subtração, operação lógica etc.) também precisam, às vezes ser guardados temporariamente na UCP, ou para serem novamente manipulados na UAL por uma outra instrução, ou para serem transferidos para uma memória externa à UCP. Esses dados, assim como as instruções, durante a etapa de busca, são armazenados na UCP em pequenas unidades de memória denominadas registradores. Os registradores são a memória interna da UCP. 3.7 - Tipos (Tecnologias defabricação de memórias) A memória principal da maioria dos computadores atuais é fabricada com tecnologia de semicondutores. Tendo em vista as características desses elementos eletrônicos, este tipo de dispositivo possui a particularidade de gastar o mesmo tempo para acessar qualquer célula de memória independente de sua localização. Qualquer que seja o endereço, aleatoriamente ou randomicamente escolhido, o tempo de acesso será o mesmo. Esse tipo de memória é denominado memória de acesso aleatório, sendo, no entanto, mais conhecida pela sigla de sue nome em inglês: RAM - Random Access Memory. Memórias RAM são normalmente utilizadas na implementação do espaço de endereçamento da memória principal dos computadores. No que se refere ao processo de fabricação e desempenho, há dois tipos de RAM no mercado: memórias RAM estáticas (Static RAM - SRAM) e memórias RAM dinâmicas (Dynamic RAM - DRAM). Memórias estáticas são aquelas em que o valor de 1 bit permanece armazenado na célula enquanto houver energia elétrica alimentando o dispositivo. Isto é, se uma operação de escrita armazena valor zero em uma célula, este valor permanece armazenado até que uma nova operação de escrita grave outro valor por cima (o valor 1). O valor então permanece estático. Nas memórias dinâmicas, o valor armazenado precisa ser reconstituído de tempos em tempos, visto que o armazenamento do valor do bit se realiza através da carga de um dispositivo eletrônico denominado capacitor, o qual vai perdendo a carga à medida que o tempo passa, necessitando de periódicas recargas para que o valor armazenado permaneça inalterado. A carga armazenada neste capacitor (que permanece por alguns milissegundos) faz a célula guardar o valor 1, e a ausência de carga representa o valor 0. Os poucos milissegundos de retenção do valor de carga logo passam e o dado estaria perdido se não houvesse um processo de reescrita. Ou seja, periodicamente as células de uma memória DRAM requerem uma operação de reescrita dos dados, que se denomina refreshing e que é responsável pela velocidade menor das DRAM em relação as SRAM. Por isso, um ciclo de memória em uma DRAM é maior que o tempo de acesso. Embora seja rápida e de acesso aleatório, a RAM possui algumas desvantagens, entre as quais a volatilidade, isto é, perde seu conteúdo quando a energia elétrica é interrompida. Além disso em alguns casos representam o inconveniente de permitir que se escreva normalmente em suas células, possibilitando a acidental eliminação do conteúdo de uma ou mais células. Uma vez que o processador nada realiza sem as instruções, é necessário que ele possua uma certa quantidade de memória não volátil. Neste tipo de memória são armazenadas as instruções que iniciam a operação e a inicialização do sistema, tão logo a alimentação elétrica seja ligada. Em microcomputadores costuma-se chamar de bootstrap ou simplesmente boot, enquanto outros fabricantes chamam IPL - Initial Program Load. Este tipo de memória é chamada ROM - Read Only Memory e além de ter que ser não volátil, permite apenas operações de leitura. No entanto, o tempo de acesso em memórias ROM também é constante, independentemente da localização da célula e, conseqüentemente são também memórias RAM. Arquitetura de Computadores 29 Um exemplo típico é o dos microcomputadores do tipo PC, que vêm da fábrica com um conjunto de rotinas básicas do sistema operacional armazenadas em ROM, denominadas em conjunto de BIOS - Basic Input Output System. Uma variação deste tipo de memória denomina-se PROM - Programmable Read Only Memory - ROM programável. Uma PROM é fabricada sem nenhum bit armazenado e posteriormente é realizada a etapa de gravação das informações, a qual, após seu término, também não permite alteração. Outros tipos de ROM são a EPROM - Erasable PROM e EEPROM - Electrically ou Electronically EPROM (também chamada EAROM - Electrically Alterable ROM). A EPROM pode ser utilizada diversas vezes porque os dados nela armazenados podem ser apagados ao se iluminar a pastilha com luz ultravioleta, a qual incide em uma janela de vidro, montada na parte superior da pastilha. Uma pastilha de EPROM. O outro tipo, EEPROM ou EAROM, permite que a programação (escrita de bits), o apagamento e a reprogramação sejam efetuadas por controle da UCP. Arquitetura de Computadores 30 3.8 - Exercícios: 1-) Considere uma palavra de memória cujo endereço é representado por um número binário com 32 dígitos. Em seu conteúdo encontra-se o valor, em hexadecimal, F10A. Pergunta-se: a-) Quais os tamanhos do REM e do RDM desse sistema? b-) Quantos bytes podem ser armazenados em memória? 2-) Um sistema possui uma memória principal com capacidade de armazenamento de 32 Mbytes. Sabendo que o processador transfere um grupo de 4 células de 16 bits nas operações com a MP, determine o tamanho em bits do REM e quantas palavras podem ser armazenadas. 3-) Considere uma memória com capacidade de armazenamento de 64 K bytes; cada célula pode armazenar 1 byte de informação e cada caractere é codificado com 8 bits. Resolveu-se armazenar na memória deste sistema um conjunto de caracteres do seguinte modo. A partir do endereço (hexadecimal) 27FA, foram escritos sucessivamente grupos de 128 caracteres iguais, iniciando pelo grupo de As, seguido do grupo de Bs, e assim por diante. Qual deverá ser o endereço correspondente ao local onde está armazenado o primeiro J? 4-) Um computador possui uma MP com 256 Mbits. Sabendo que a capacidade de transferência do sistema é de 32 bits e que uma célula possui a metade desta capacidade, pergunta-se: a-) Qual o tamanho do endereço de célula? b-) Qual o tamanho do RDM e da palavra? c-) Quantas células podem ser endereçadas neste computador? 5-) Um computador possui um RDM com 64 bits de tamanho e um REM com capacidade para armazenar números com 16 bits. Sabe-se que a célula deste computador armazena informações com 32 bits de tamanho e que ele possui uma quantidade N de células, igual à sua capacidade máxima de armazenamento. Pergunta-se: a-) Qual é o tamanho do barramento de endereços? b-) Quantos Kbytes podem ser armazenados na memória principal ? 6-) Um computador possui uma memória principal com 128K células, cada uma capaz de armazenar uma palavra de 32 bits. Pergunta-se: a-) Qual é o maior endereço de célula de memória? b-) Qual é o tamanho do barramento de endereços deste sistema? c-) Quantos bits podem ser armazenados no RDM e no REM? d-) Quantos Kbits podem ser armazenados em memória? 7-) Um computador possui uma memória principal com capacidade para armazenar palavras de 32 bits em cada uma de suas N células. O barramento de endereços tem 20 bits de tamanho. Quantos bytes poderão ser armazenados nessa memória? 8-) Um sistema é capaz de endereçar palavras de 64 bits em cada uma de suas 16 Mega posições de memória. Sabendo-se que uma palavra corresponde a oito células; pergunta-se: a-) Quantas células o sistema é capaz de endereçar? b-) Quantas palavras o sistema é capaz de endereçar? c-) quantos Mbits podem ser armazenados nesta memória? 9-) Sabendo-se que a capacidade total da memória de um certo computador é de 256 Mega bytes (1 Mega = 106) e que ela lê/escreve dados sempre no formato 64 bits a cada acesso, pode-se afirmar que o número mínimo de linhas (bits) com que o processador a endereça é de? 10-) Um computador pode armazenar até 4Gbytes de memória principal, organizada em células de 16 bits. O sistema possui uma memória cache, com método de mapeamento direto, composta por 4K quadros de 256 bytes. Qual o formato em bits do endereço de memória deste computador? Supondo que a UCP solicite a célula de endereço 1.048.580, determine o conteúdo do endereço de memória. Arquitetura de Computadores 31 11-) Utilizando as características
Compartilhar