Prévia do material em texto
<p>Barramento de Dados</p><p>A medida que os sistemas digitais ficam mais complexos, e os dados a serem processados passam a</p><p>ser palavras digitais, é necessário transferir todos os bits de uma palavra digital de um dispositivo</p><p>digital a outro.</p><p>Por exemplo, os dados de dois registradores de 32 bits devem ser transferidos para um circuito</p><p>somador. O resultado dessa soma, que também terá 32 bits, deve ser transferida para um dos</p><p>registradores. Essa palavra binária deve então ser transferida para um multiplexador. E assim por</p><p>diante.</p><p>Em resumo, a transferência dos dados processados se dá em palavras binárias, e não em bits</p><p>individuais. Dessa forma, criamos um barramento de dados, que conectará todos os bits de uma</p><p>palavra binária de um dispositivo digital a outro.</p><p>A medida que concectamos vários dispositivos a um mesmo barramento, temos situações em que</p><p>nem todos eles compartilharão os mesmos dados. Por isso, os dispositivos que não fizerem uso do</p><p>barramento, devem ser, de alguma forma, desconectados dele.</p><p>Assim, as unidades digitais conectados a um barramento, possuem suas entradas e saídas com 3</p><p>possíveis estados: o valor lógico BAIXO, o valor lógico ALTO e uma entrada/saída de alta</p><p>impedância. O terceiro estado estabelece uma alta impedância entre o dispositivo e o barramento,</p><p>funcionando como uma chave digital. Esse tipo de entrada/saída com 3 estados é conhecida como</p><p>tri-state.</p><p>Portanto, os dispositivos conectados ao barramento que não estão em comunicação, são</p><p>desabilitados (através da entrada enable), e suas entradas e saídas são colocadas em aberto.</p><p>Estabelecendo um caminho de conexão entre diversos dispositivos digitais, eles podem ser</p><p>combinados em um único equipamento, por exemplo um computador. Nele, há uma unidade</p><p>responsável por realizar operações matemáticas (úteis para endereçamento, execução de comandos,</p><p>etc), há também uma unidade de controle (responsável por estabelecer a comunicação entre os</p><p>diversos dispositivos), unidades de memória (para armazenamento permanente e temporária de</p><p>informação e comandos) e unidades periféricas (para comunicação com dispositivos externos ao</p><p>computador).</p><p>Unidade de Memória</p><p>Conforme citado acima, os dados processados e transmitidos entre os diversos dispositivos digitais</p><p>são frequentemente armazenados, sejam dados ou comandos a serem executados. Por isso, faz-se</p><p>necessário o uso de dispositivos capazes de armazenar tal informação digital.</p><p>Já foi visto que flip-flops, construídos por componentes lógicos baseados em semicondutores,</p><p>podem armazenar um dígito binário. A organização de um conjunto de flip-flops pode ser usado</p><p>para criar registradores, que armazenam temporariamente palavras binárias. Os registradores podem</p><p>ser organizados de tal forma a criar uma matriz de palavras binárias, constituindo um dispositivo de</p><p>memória.</p><p>Além de dispositivos semicondutores, meios ópticos e magnéticos podem também armazenar</p><p>informação digital de forma temporária ou permanente, e usados para conservar os dados</p><p>processados pelos computadores.</p><p>A principal diferença entre os diferentes meios de armazenamento de dados digitais estão na</p><p>velocidade de acesso (escrita e leitura) desses dados e o volume de informação que cada um</p><p>suporta.</p><p>Os meios mais rápidos, baseados em dispositivos semicondutores, são frequentemente usados para</p><p>armazenar comandos a serem executados pelas unidades lógica e de controle. Entretanto, sua</p><p>capacidade é geralmente pequena devido ao alto custo de produção. Essas memórias são chamadas</p><p>de memória principal.</p><p>Os dispositivos de acesso mais lento conseguem acumular maior volume de dados a um custo</p><p>reduzido, por isso armazenam os dados que são acessados exporadicamente de forma permanente.</p><p>Esses componentes são chamados de memória auxiliar.</p><p>Em todos os tipos de memória, as palavras binárias são armazenadas em posições específicas, que</p><p>devem ser acessíveis para realizar tanto a escrita quanto a leitura dos dados. Por isso, todas</p><p>memórias, independente do seu tipo, possuem endereços para cada palavra.</p><p>Em resumo, os dispositivos de memória realizam as seguintes operações:</p><p>- Habilitar o dispositivo para responder aos comandos de controle;</p><p>- Receber o endereço da palavra a ser acessada;</p><p>- No caso de operações de leitura, habilitar as saídas tri-state para disponibilizar nos pinos de saída</p><p>o dado armazenado no endereço especificado;</p><p>- No caso de operações de escrita, aplicar a palavra digital da entrada no endereço especificado;</p><p>- Ao terminar a operação de leitura/escrita, desativar os controles e desabilitar o dispositivo (saída</p><p>tri-state em estado aberto).</p><p>Entradas de endereço</p><p>A capacidade de armazenamento do dispositivo de memória, irá determinar o tamanho da palavra</p><p>de endereço. Por exemplo, um dispositivo hipotético ilustrado na figura abaixo armazena 32</p><p>palavras de 4 bits cada, por isso, são usados 5 bits de endereço.</p><p>Na figura (a) acima, podemos ver os pinos que caracterizam a memória. Os pinos da palavra [I]4 são</p><p>de entrada de dados, a palavra [O]4 contém a saída dos dados e a palavra [A]5 fornece o endereço da</p><p>memória. Os pinos de controle determinam a função a ser exercida pela memória, o pino ME</p><p>habilita a memória, o pino OE habilita a saída (retira o estado aberto da saída tri-state) e o pino WE</p><p>recebe o comando de leitura/escrita.</p><p>O pino ME determina se o dispositivo estará habilitado ou não. Na figura acima, tal pino é ativado</p><p>em nível lógico ALTO, o que significa que, se esse pino recebe um nível lógico BAIXO, nenhum</p><p>outro pino responderá às suas entradas. Os diversos tipos e modelos de memória dão a esse pino</p><p>nomes diversos, podendo ser CE (chip enable) ou CS (chip select).</p><p>O pino OE (output enable) determina se os pinos de saída tri-state estarão no estado aberto ou no</p><p>estado lógico. Tal pino é usado para forçar a sincronização da memória com outros dispositivos</p><p>conectados ao barramento de dados.</p><p>O comando controlado pelo pino WE determina se a memória deve realizar uma operação de escrita</p><p>ou leitura. Muitas vezes esse pino é referenciado como W ou R/W. Quando ativado, a memória</p><p>realizará a operação de escrita, ou seja, colocará o valor lido na palavra [I] no endereço especificado</p><p>por [A]. Caso desabilitado, escreverá em [O] o valor da palavra armazenada em [A]. Na figura</p><p>anterior, esse pino é barrado, o que significa que em nível lógico BAIXO, a memória realiza a</p><p>operação de escrita, caso contrário, de leitura.</p><p>O exposto acima, logicamente, representa os comandos e funções básicas de um dispositivo de</p><p>memória genérico. Funções e pinos adicionais podem ser encontrados em dispositivos de funções e</p><p>modelos diferentes.</p><p>Comunicação CPU-Memória</p><p>Uma vez introduzido os conceitos básicos de memória, é possível compreender o funcionamento de</p><p>um processador de um computador. Tal equipamento é usado para executar programas, que são, em</p><p>sua essência, comandos executados sequencialmente.</p><p>Os comandos a serem executados, bem como os dados a serem processados por tais comandos,</p><p>devem ser armazenados em dispositivos de memória. A unidade central de processamento (CPU)</p><p>é o dispositivo responsável por realizar as tarefas e por isso, deve ser capaz de acessar a memória. A</p><p>figura abaixo ilustra um esquema resumido de tal conexão.</p><p>Quando um computador executa as instruções de um programa, a CPU as informações nas posições</p><p>de memória que contém o código do programa representando as operações a serem realizadas, e</p><p>também os dados que devem ser processados por cada instrução. Caso instrução inclua uma</p><p>operação de escrita, a CPU deve escrever dados na memória.</p><p>Sempre que uma operação de leitura é realizada pela CPU, os passos a seguir são realizados:</p><p>- A CPU fornece o endereço binário da posição de memória da qual o dado deve ser recuperado,</p><p>colocando o valor binário</p><p>no barramento de endereço;</p><p>- Em seguida a CPU habilita do dispositivo de memória ativando inserindo o valor correspondente</p><p>(para o pino ME) no barramento de controle;</p><p>- São ativadas as linhas, também no barramento de controle, os valores apropriados para habilitar a</p><p>operação de leitura;</p><p>- Os CIs de memória decodificam internamente o endereço de memória e entregam em seu</p><p>registrador de saída, conectado ao barramento de dados, o valor lido;</p><p>- A CPU, por fim, lê os dados do barramento de dados.</p><p>Para uma operação de escrita, os passos são semelhantes:</p><p>- A CPU fornece o endereço binário da posição de memória da qual o dado deve ser escrito,</p><p>colocando o valor binário no barramento de endereço;</p><p>- Em seguida a CPU habilita do dispositivo de memória ativando inserindo o valor correspondente</p><p>(para o pino ME) no barramento de controle;</p><p>- Os dados a serem escritos são, então, inseridos no barramento de dados;</p><p>- São ativadas as linhas, no barramento de controle, os valores apropriados para habilitar a operação</p><p>de escrita;</p><p>- Os CIs de memória decodificam internamente o endereço de memória e escrevem no endereço</p><p>especificado, o valor lido no barramento de dados;</p><p>Fica evidente, portanto, a função e importância de cada um dos barramentos de conexão entre a</p><p>CPU e a memória. O barramento de endereço é unidirecional, transportando os valores binários da</p><p>CPU para os dispositivos de memória. O barramento de dados é bidirecional, podendo transportar</p><p>dados da CPU à memória, em operações de escrita e vice-versa para as operações de leitura. O</p><p>barramento de controle transporta os sinais de controle da memória, podendo também transportar</p><p>informações de feedback desses dispositivos, quando houver (p.e. um sinal de “fim de escrita”).</p><p>Tempo de Acesso</p><p>Em todos os dispositivos de memória, assim como os componentes lógicos estudados até agora,</p><p>possuem um tempo de processamento. Quando um endereço binário é inserido na memória, e em</p><p>seguida sinal de controle de leitura é ativado, a memória demorará um determinado tempo para</p><p>disponibilizar em sua saída, o dado lido. Esse atraso, denominado tempo de acesso, é uma medida</p><p>de velocidade de operação da memória.</p><p>A figura abaixo ilustra, de forma temporal, a temporização típica para uma operação de leitura de</p><p>uma memória.</p><p>Observe que, após inserido o endereço a ser lido, é habilitada a saída tri-state da memória, passando</p><p>de estado aberto para o estado lógico (pino OE). O tempo de acesso, portanto, é o intervalo entre a</p><p>habilitação da saída até a disponibilização do dado na saída da memória.</p><p>Memória ROM (Read Only Memory)</p><p>As memórias ROM possuem esse nome pois são dispositivos apenas para leitura. Isso significa que</p><p>os dados armazenados por ela são inseridos uma única vez, ou com uma frequência muito baixa.</p><p>Esse processo de inserção inicial dos dados é geralmente chamado de programação da memória ou</p><p>queima (do inglês burn).</p><p>Por serem programadas uma única vez, essas memórias são ditas não-voláteis, pois seus dados</p><p>armazenados de forma permanente. Isso faz com que o armazenamento não dependa de energia</p><p>elétrica para manter a informação gravada.</p><p>ROM programada por máscara</p><p>Essas ROMs possuem seus dados definidos e armazenados durante sua construção. O fabricante</p><p>dessas memórias recebem de seus clientes os dados binários que devem ser inseridos e esses são</p><p>gravados de forma definitiva, sem a possibilidade de regravação.</p><p>Uma das aplicações possíveis é a insersão de programas padrão que devem ser executados sempre</p><p>que um determinado equipamento é ligado. Isso garante o perfeito funcionamento do equipamento</p><p>sempre que ele é reiniciado, e impossibilita a mudança (hacking) desses programas. Logicamente</p><p>que tais dispositivos de memória não possuem a operação, e consequentemente, os pinos de</p><p>controle para operação de escrita.</p><p>ROM programável (Programable ROM - PROM)</p><p>Esse tipo de memória também armazenam informações binárias de forma permanente, sem a</p><p>possibilidade de reprogramação. A diferença com relação às ROMs programadas por máscara, está</p><p>no fato de a programação ser feita pelo usuário (desenvolvedores).</p><p>Na construção das PROMs, a conexão de cada elemento de memória (1 bit) com as tensões de</p><p>polarização, determinam se seus valores lógicos serão 0 ou 1. Para programar tais elementos, são</p><p>usados fusíveis que são “queimados” ou não, definindo os valores 0 e 1 respectivamente. Uma vez</p><p>queimados os fuzíveis, eles não podem ser reconstruídos, ou seja, a memória não pode ser</p><p>reprogramada.</p><p>ROM programável e apagável (Erasable and Programable ROM – EPROM)</p><p>Assim como as ROMs anteriores, essa memória é não-volátil, pois, uma vez gravada, ela não</p><p>perderá seus dados mesmo que alimentação elétrica seja interrompida. Apesar da não-volatilidade</p><p>dessa memória, ela pode ser apagada por um processo não elétrico, utilizando luz ultra-violeta. Ao</p><p>expor tal dipositivo por vários minutos sob uma luz UV, os dados armazenados são apagados.</p><p>A programação da EPROM, depois de apagada, é feita eletronicamente, inserindo na memória os</p><p>dados a serem armazenados através de um processo de escrita. Tal operação requer um circuito</p><p>próprio para a gravação, chamado de programadora de PROM.</p><p>A EPROM foi um avanço tecnológico durante a década de 1990, possibilitando os desenvolvedores</p><p>de hardware a aproveitarem os mesmos dispositivos de memória ao atualizarem seus equipamentos</p><p>digitais. Entretanto o processo de limpeza dos dados armazenados exige uma desconexão da</p><p>memória com o restante do circuito e sua exposição a luz UV, o que demanda tempo e trabalho.</p><p>Com o avanço de outros dispositivos de memória mais práticos, tais dispositivos cairam em desuso</p><p>ao longo dos anos.</p><p>A principal desvantagem das memórias EPROM é a necessidade de remover o CI de memória do</p><p>circuito para fazer apagar os dados e para fazer a escrita dos dados. Apesar dessa desvantagem, as</p><p>memórias EPROM tem alta densidade de dados (grande quantidade de dados com tamanho</p><p>reduzido de CI).</p><p>ROM programável e apagável eletronicamente (Electrically Erasable PROM)</p><p>A desvantagem nas operações de apagamento e escrita das EPROMs foi suprimida com a criação</p><p>das memórias EEPROMs. Essas memórias podem ser apagadas e programadas eletronicamente, não</p><p>necessitando da remoção do CI do circuito onde ele trabalha.</p><p>Apesar de o apagamento e escrita serem de forma eletrônica, a EEPROM também é uma memória</p><p>não-volátil, o que significa que se a alimentação for removida do dispositivo, as informações</p><p>armazenadas serão preservadas.</p><p>Em compensação, esse tipo de memória tem uma desvantagem quando comparada às EPROMs, que</p><p>é uma baixa densidade de dados. Em outras palavras, o número de bits por milímetro quadrado é</p><p>menor. Além disso, EEPROMs são mais caras de se fabricar.</p><p>A figura (a) abaixo ilustra um modelo 2846 de memória EEPROM da Intel. Esse dispositivo possui</p><p>uma capacidade de 8 kBytes de memória (8.192 = 213), o que requer 13 bits de endereço. Observe a</p><p>tabela (b) de possíveis valores para as entradas de controle e suas respectivas funções.</p><p>Como a operação de apagamento é feito eletronicamente, essas memórias oferecem a vantagem</p><p>adicional de possibilitar o apagamento de apenas alguns setores da memórias, ou até mesmo byte a</p><p>byte, ao contrário das EPROMs que apagam todo o seu conteúdo de uma única vez.</p><p>Memória Flash</p><p>Ao compararmos as memórias estudadas até agora, vimos que a EEPROM é a mais versátil, apesar</p><p>de oferecer uma densidade de dados menor que as EPROMs. Essas, por sua vez, são mais baratas e</p><p>possuem maior densidade, mas requerem a remoção do circuito para apagar os dados e</p><p>programação.</p><p>A memória Flash é uma evolução das memórias não-voláteis e basicamente oferece as vantagens de</p><p>cada uma dos outros tipos. Elas são eletronicamente apagáveis e programáveis, e oferecem</p><p>densidade e custo semelhantes às EPROMs.</p><p>O nome desse tipo de memória provem da</p><p>velocidade de apagamento e de escrita, muito maior se</p><p>comparado às memórias estudadas acima.</p><p>Com o tempo, e evolução dessas memórias, a densidade de dados aumentou consideravelmente, e</p><p>tais memórias passaram a ser usadas para armazenamento em massa de dados (imagens, vídeos,</p><p>etc). Entretanto, a leitura e escrita para cada byte da memória, faz com que o acesso aos dados seja</p><p>relativamente mais lento e a densidade não atinja valores desejados.</p><p>Para isso, foi desenvolvido um novo modelo de memórias flash, chamado de flash NAND, que</p><p>armazena, apaga e lê dados localizados em blocos (p.e. 512 bytes). Isso possibilita um aumento na</p><p>densidade de dados, se comparada às flash de leitura/escrita byte a byte (flash NOR).</p><p>Assim, as memórias flash NOR são mais usadas como memórias internas de processadores e</p><p>microcontroladores, enquanto as flash NAND são mais usadas para armazenamento em massa de</p><p>dados, com pen-drive e HD de estado sólido.</p><p>Aplicações</p><p>Por definição, a sigla ROM significa memória de apenas leitura, como foi chamada ao serem</p><p>criadas. Apesar disso, a sigla foi mantida para memórias que podem ser reescritas, tais como a</p><p>EPROM, EEPROM e flash. Na prática, a sigla ROM hoje se refere a memórias não voláteis.</p><p>A principal aplicação de uma memória ROM é intuitiva, e segue como armazenamento de dados.</p><p>Além dessa aplicação básica, podemos citar outras.</p><p>Memória bootstrap</p><p>Equipamentos como computadores e celulares modernos funcionam com sistemas operacionais para</p><p>comandar a execução de aplicativos e controle do hardware. Esses sistemas operacionais</p><p>geralmente são armazenados em dispositivos de armazenamento de massa, como discos magnéticos</p><p>(hard disk – HD) por exemplo.</p><p>Entretanto, o processador do equipamento precisa inicar os dispositivos de hardware do</p><p>computador, incluindo o dísco rígido. Por isso, os comandos de início do equipamento, e</p><p>carregamento do sistema operacional são geralmente armazenados em memórias ROM. Esse</p><p>procedimento é chamado de bootstrap (origem da expressão “boot” ao iniciar um equipamento).</p><p>Tabela de dados</p><p>Funções matemáticas não lineares, como funções trigonométricas, exponencial, logarítimo, etc, são</p><p>mais complexas de se realizar com álgebra digital, que tem como base as operações de soma,</p><p>subtração e divisão. O cálculo do resultado dessas funções geralmente exigem algoritmos</p><p>complexos, o que demanda tempo de processamento.</p><p>Por isso, é comum armazenar uma quantidade de valores pré-determinados de resultados dessas</p><p>funções em uma tabela de dados na memória. O tempo de acesso a esses resultados em um</p><p>dispositivo de memória é geralmente muito menor que a execução de algoritmos numéricos.</p><p>Dessa forma, é comum usar memórias ROM quando sistemas digitais requerem o cálculo de</p><p>funções matemáticas não-lineares.</p><p>Gerador de funções</p><p>Um gerador de funções tem como finalidade gerar tensões elétricas na forma de ondas periódicas</p><p>como senóides, ondas quadrada e triangular. A forma mais rápida de implementar tal funcionalidade</p><p>é armazenar em uma memória ROM os valores de cada amostra de um período da onda, e acessá-</p><p>las de forma repetida. A saída do valor numérico de cada amostra pode ser, então, convertida para</p><p>valores analógicos.</p><p>Memória RAM (Random Access Memory)</p><p>Memórias de acesso aleatório são memórias voláteis, ou seja, o armazenamento do dado digital</p><p>depende da alimentação do dispositivo, ou seja, ao serem desligadas, seu conteúdo é apagado. Tais</p><p>memórias possuem esse nome pois o tempo de acesso a qualquer endereço deve ter o mesmo tempo</p><p>de acesso.</p><p>A velocidade de acesso (leitura/escrita) é alta, fazendo dessas memórias uma ferramenta necessária</p><p>para interação de processadores. Por isso sua principal aplicação é em projetos de computadores e</p><p>equipamentos microcontrolados.</p><p>Há basicamente dois tipos de memórias RAM: a estática e a dinâmica.</p><p>RAM estática (SRAM)</p><p>São baseadas em flip-flops como células de armazenamento de 1 bit. Essa característica garante</p><p>uma vantagem ao ser comparada com as RAM dinâmicas (como veremos a seguir). O tempo de</p><p>acesso dessas memórias é baixo, garantido alta velocidade de transferência de dados entre a CPU e</p><p>a memória. A principal desvatagem desse tipo de memória é seu alto custo, e baixa densidade se</p><p>comparada às DRAMs.</p><p>RAM dinâmica (DRAM)</p><p>A célula base de armazenamento dessas memórias é um capacitor MOS (em geral com pequenos</p><p>picofarads). Isso torna a célula de armazenamento muito menor e mais barata. Consequentemente, a</p><p>densidade de dados e custo por bit desse tipo de memória RAM é muito inferior ao da SRAM.</p><p>A principal consequência dessa característica e a perda de carga elétrica (corrente de fuga) nos</p><p>capacitores ao longo do tempo, algo que não ocorre se o bit é armazenado em um FF. Por conta</p><p>dessa perda de carga, as memórias DRAM devem ser realimentadas frequentemente para recarregar</p><p>os capacitores e manterem seus dados inalterados. O processo de recarregamento dos capacitores é</p><p>chamado de refresh, sendo comum intervalos de tempo de 2 ms, devido à baixa capacitância.</p><p>O tempo de acesso, se comparado às SRAMs, é relativamente alto, fazendo com que essas</p><p>memórias não tenham o desempenho ótimo.</p><p>Portanto, ao comparar tais memórias com as estáticas, tem-se um conjunto de vantagens e</p><p>desvantagens. Dentre as vantagens temos maior densidade de dados, menor custo, menor consumo</p><p>de energia e menores dimensões físicas. As principais desvantagens são a necessidade de refresh,</p><p>demandando circuitos adicionais, e velocidade de acesso.</p><p>Aplicações</p><p>As SRAMs são memórias muito rápidas, otimizando a transferência de dados entre a CPU de um</p><p>processador e a memória. Entretanto possui alto custo, impossibilitando o uso generalizado pela</p><p>CPU. Por isso, essas memórias são muito usadas como memória volátil (temporária) interna de</p><p>processadores (p.e. memória cache).</p><p>As memórias DRAM, por sua vez, possuem baixo consumo de energia e alta densidade de dados,</p><p>tornando-se ideais como memórias voláteis em maior escala. Por isso, as memórias DRAM são</p><p>mais usadas como memórias temporárias expandidas em computadores e equipamentos</p><p>microcontrolados.</p><p>Tecnologias mais avançadas de memórias DRAM tornaram-na mais rápidas. Como exemplo</p><p>podemos citar a SDRAM, que faz uma transferência síncrona por blocos de dados (como “rajadas”</p><p>de dados), onde o sincronismo é feito com o clock do sistema. A DDRSDRAM (ou simplemente</p><p>DDR) dobra a taxa de transferência usando as duas bordas do clock, de descida e subida. Modelos</p><p>como DDR2 e DDR3 aumentam ainda mais a taxa de transferência (em até 8 vezes) comparadas</p><p>com as SDRAMs simples.</p><p>O detalhamento do funcionamento e especificações dessas memórias está além do escopo dessa</p><p>disciplina, e não serão tratados ou cobrados.</p>