Baixe o app para aproveitar ainda mais
Prévia do material em texto
Visão Geral da Arquitetura de Computadores 1 – Introdução Os primeiros computadores eletrônicos surgiram na década de 1940, contudo, as primeiras máquinas de calcular que os inspiraram tem centenas de anos. Hoje vemos o computador como uma máquina composta de diversos componentes eletrônicos e eletromecânicos que atuam em conjunto e que são capazes de receber, armazenar e tratar dados para produzir informações. Os dispositivos de cálculo começaram a aparecer ainda no século XVI, mas foi somente a partir do século XX que tais sistemas se popularizaram e começaram a se mostrar realmente úteis. Atualmente as famílias de computadores podem ser classificadas em cinco grupos distintos: os computadores pessoais (PCs), os minicomputadores, os superminicomputadores, os computadores de grande porte (mainframes) e os supercomputadores. 2 – Precursores das máquinas de calcular • Ábaco (3.500 a.C.): O mais antigo é datado de aproximadamente 3.500 a.C. Este ábaco da imagem foi encontrado no Vale entre os rios Tigre e Eufrates. Perto do ano de 2.600 a.C. surgiu o Suan-Pan, uma evolução do ábaco (fig. 1) associado ao povo chinês. Algo semelhante ocorreu no Japão, dando origem ao Soroban. O ábaco é um mecanismo manual que permite representar números e realizar cálculos no sistema decimal. Fig 1. Ábaco • Bastões de Napier (1610 - 1614): Feitos de marfim, eram tabelas móveis que permitiam realizar operações de multiplicação e divisão. Os Bastões de Napier (Fig. 2) eram compostos de 9 peças, sendo uma para cada dígito de 1 a 9. Cada uma das hastes do conjunto é uma coluna de uma tabela de multiplicação. Fig 2. Bastões de Napier • Réguas de Cálculo (1621). As Réguas de Cálculo (Fig. 3) representaram uma grande evolução e eram usadas por estudantes de engenharia até meados da década de 1970. Fig 3. Réguas de Cálculo 3 - As Gerações dos Computadores Apesar de auxiliar as pessoas a realizar operações de cálculos, os dispositivos apresentados anteriormente não podem ser considerados computadores. Se considerarmos que dispositivos mecânicos e eletromecânicos podem ser considerados computadores então podemos dividir os computadores em gerações de equipamentos. 3.1 - Geração Zero (século XVII) Eram “computadores” (na verdade calculadoras) essencialmente mecânicos e rígidos no que diz respeito à execução de programas. Os representantes dessa geração são: • Calculadora de Pascal (1642): Apesar de ter sido um fracasso comercial, foi uma invenção de extrema importância. Blaise Pascal desenvolveu em 1642 uma máquina de calcular totalmente mecânica. A máquina ficou conhecida como Pascaline (Fig. 4) e era baseada em um disco para cada potência de 10, sendo que cada disco possuía 10 dígitos, de 0 a 9. Fig 4. Pascalina • Calculadora de Leibnitz (1671): Filósofo e matemático, o alemão Leipzig, Gottfried Wilhelm von Leibnitz (21/06/1646 - 14/11/1716), introduziu o conceito de multiplicação e divisão por meio de somas e subtrações sucessivas. Sua invenção era uma evolução em relação a Pascalina. • Placa Perfurada (1801): Joseph Marie Jacquard introduziu um conceito que apesar de não ter sido usado para processamento de dados, serviu como inspiração. Trata-se de folhas perfuradas que eram usadas para controlar o padrão de costura em máquinas de tecelagem, como uma espécie de programação da máquina. • Arithmometer (1820): Charles Xavier Thomas inventou em 1820 a primeira máquina capaz de realizar as 4 operações básicas da matemática que se tornou um sucesso comercial. Para realizar multiplicações, utilizava o mesmo princípio da Calculadora de Leibnitz. • Máquina Diferencial de Babbage (1823): Charles Babbage (1792-1871), matemático e engenheiro britânico desenvolveu, também baseado no princípio dos discos, uma máquina interessante. Babbage é considerado por muitos como o pai da computação moderna. A Máquina Diferencial de Babbage permitia calcular tabelas de funções (logaritmos, funções trigonométricas, etc.) sem a intervenção de um operador humano. Ao operador cabia somente iniciar a cadeia de operações, e a seguir a máquina tomava seu curso de cálculos. • Máquina Analítica (1833): Charles Babbage projetou também uma máquina bem avançada, a Máquina Analítica. Ada Lovelace criou programas para a máquina tornando-se assim a primeira pessoa a programar computadores no mundo. A máquina analítica podia ser programada para realizar várias funções e era constituída de uma unidade de controle de memória aritmética e de entrada e saída. Sua operação era governada por um conjunto de cartões perfurados. • Máquina de Hollerith (1886): Ao perceber a demora (cerca de 10 anos) no processamento do censo nos Estados Unidos no qual a maioria das perguntas possuía respostas binárias (sim ou não), Herman Hollerith, funcionário do Departamento de Recenseamento, idealizou um cartão perfurado que seria capaz de armazenar as informações coletadas no censo e uma máquina capaz de tabular tais informações. Assim surgiu a Máquina Tabuladora ou Máquina de Recenseamento, que era composta das seguintes unidades: • Unidade de controle, responsável por dirigir a sequência de operações. • Entrada de dados que utilizava cartões perfurados. • Saída, que também utilizava cartões perfurados, perfurando-os. Esses cartões poderiam posteriormente ser usados como entradas. • Saída impressa que apresentavam os resultados finais. Anos mais tarde, Hollerith fundou uma companhia, a Tabulating Machine Company. Em 1924, tal empresa mudou de nome, tornando-se a International Business Machines Corporation, hoje mais conhecida como IBM. 3.2 - Primeira Geração (1930-1958) Esta geração é marcada pelo surgimento de relés e válvulas eletrônicas (fig. 5). Esses computadores permitiam a realização de cálculos automaticamente. Relés são eletroímãs que possuem a função de abrir ou fechar circuitos elétricos, já as válvulas, são dispositivos bem mais rápidos do que os relés, em que os elétrons circulam no vácuo. Fig 5. Relé (à esquerda) e Válvula (à direita) Todos os computadores de primeira geração eram baseados nessas tecnologias, e bastavam poucas horas de uso para apresentarem defeitos. Seus dispositivos de entrada e saída eram primitivos e seus cálculos eram realizados em alguns milésimos de segundos. O cartão perfurado era sua principal fonte de leitura de dados. Ainda que representassem um salto tecnológico em relação a seus antecessores, os computadores da primeira geração tinham várias limitações, dentre elas, o custo elevado, lentidão, pouca confiabilidade, o grande espaço que ocupavam e a quantidade de energia que consumiam, inclusive para a dissipação do calor das quase 20 mil válvulas que utilizavam, em média. Os principais computadores desta geração foram: • MARK I: criado entre 1937 e 1944, durante a II Guerra Mundial. Praticamente era uma calculadora gigante idealizada por H. Aiken na Universidade de Harvard, foi considerado o primeiro projeto de computador. Integrava conceitos de computadores digitais e analógicos, pois tinha sistema eletrônico e mecânico na mesma máquina. Seus sucessores foram o MARK II, III e IV. • ABC (Atanasoff Berry Computer) criado em 1939, foi o primeiro a usar válvulas para circuitos lógicos e o primeiro a ter memória para armazenar dados. Seu projeto foi baseado em quatro princípios: • Utilizar a eletricidade como meio; • Utilizar a lógica binária para operações; • Usar condensadores para memória que pudesse ser regenerado; • Realizar cálculos por ações lógicas diretas, e não vias convencionais de numeração. • ENIAC (Electronic Numeric Integrator and Calculator): criado entre 1943 e 1946, foi considerado o primeiro grande computador digital da história. Não utilizava nenhum programa de armazenamento interno, todos os programas que utilizava eram introduzidos por cabos que o preparavapara suas operações de cálculo, que podiam durar semanas. Por possuir diversos componentes discretos, não funcionava por muitos minutos sem que um deles fosse danificado. O ENIAC recebia dados através de cartões perfurados e seus programas eram recondicionados através de reconfigurações nos seus circuitos. Permaneceu operacional por mais de uma década e foi a partir dele que o conceito de programa armazenado introduzido por John von Neuman foi estabelecido. Deu origem ao EDVAC (Electronic Discrete Variable Automatic Computer), o IBM 650 (o primeiro computador da IBM), e o UNIVAC (Universal Automatic Computer). Uma curiosidade aqui. Como esses equipamentos eram grandes (ocupavam andares inteiros de um prédio), e muitos de seus componentes emitiam luz e calor, era comum a entrada de insetos em seu interior. Frequentemente os insetos (bug, em Inglês) morriam eletrocutados e causavam a queima de algum circuito. Daí a origem do termo bug para problemas/falhas em aplicações computacionais usado comumente até hoje. 3.3 - Segunda Geração (1955-1965) O surgimento dos transistores deu origem a diversos novos projetos. A segunda geração de computadores apresentou as memórias com anéis ferromagnéticos, sendo as fitas magnéticas a segunda forma de armazenamento. Essas fitas possuíam capacidade de armazenamento e acesso muito maior e mais rápido do que as fitas perfuradas. Também foi nessa geração que surgiram as memórias “RAM”. Os computadores se tornaram mais rápidos, mais baratos e também menores. Passaram a consumir menos energia, possuíam maior confiabilidade e tinham menos problemas com o aquecimento. 3.4 - Terceira Geração (1965-1980) Transistores foram substituídos por circuitos integrados, o que permitiu a substituição de dezenas de transistores em uma única peça de silício, originando assim computadores ainda menores, mais rápidos e baratos. Podemos dizer que foi nessa geração que surgiram os microprocessadores. Para o armazenamento dos dados eram utilizados discos magnéticos o que permitia acesso direto a arquivos grandes. Também foi nessa geração que surgiu o conceito de “família de computadores compatíveis”, o que facilitava a migração dos sistemas, quando isso se fazia necessário. 3.5 - Quarta Geração (1980 …em diante) Com a tecnologia de Integração de Alta Escala (LSI - Large Scale of Integration), concebida na década de 1970, foi possível combinar até 65 mil componentes em uma só pastilha de silício - chip. Durante a década de 1980 o número de componentes que podiam ser integrados passou de milhares para milhões e assim surgiram novos computadores, menores, mais velozes e ainda mais poderosos do que aqueles da geração anterior. Em todas as gerações passadas existia algo em comum entre todos os computadores, afinal todos possuíam uma única CPU para executar o processamento. Entretanto, a partir do século XXI, surgiram computadores com mais de uma CPU, permitindo assim aos computadores atingirem velocidades de processamento próximas à velocidade da luz. 4 - Tipos de Arquiteturas de Computadores Ao longo dos anos diferentes tipos de arquiteturas de computadores foram surgindo. Cada uma delas com algumas características próprias. Neste contexto, evita-se afirmar que uma arquitetura seja melhor que outra, entende-se que sejam diferentes e que cada uma delas seja mais adequada para determinados tipos de situações do que outras. Dentre os tipos mais comuns de arquiteturas de computadores, podemos citar as seguintes: • Arquitetura de Von Neumann: a principal característica é a possibilidade de um computador digital poder armazenar seus programas no mesmo espaço de memória em que são armazenados os dados. Este modelo utiliza uma Unidade Central de Processamento (CPU) e uma de armazenamento (Memória) para comportar dados e instruções. A arquitetura de Von Neumann possui os seguintes componentes: • Uma memória; • Uma unidade aritmética e lógica (ULA); • Uma unidade central de processamento (CPU), composta por diversos registradores; • Uma Unidade de Controle (UC), cuja função é a mesma da tabela de controle da Máquina de Turing universal: buscar um programa na memória, instrução por instrução, e executá-lo sobre os dados de entrada • Arquietura de Harvard: é baseada em conceitos mais recentes do que a arquitetura de Von Neumann devido à necessidade de fazer com que os microcontroladores sejam mais rápidos. Sua principal diferença em relação às demais está no fato de que esta arquitetura possui duas memórias diferentes e independentes. Tem como principal característica o acesso à memória de dados de modo separado em relação à memória de programa. 5 - O Sistema BIOS Com a redução dos custos de produção dos computadores, de seu tamanho e aumento de sua potência, a presença de computadores nas residências para uso doméstico e pessoal virou uma realidade. Entretanto, a maioria dos sistemas operacionais eram desenvolvidos especificamente para determinadas arquiteturas de computadores, sendo necessário desenvolver um novo sistema operacional quando essa arquitetura mudasse. Isso dificultava a inserção de computadores em mais lares e também era um grande problema para a indústria de software e também de hardware. Sem muitos detalhes, pode-se afirmar que a solução encontrada foi a de inserir como componente de hardware uma memória de conteúdo permanente e que fosse capaz de armazenar todas as informações básicas do computador além de realizar uma inicialização prévia de todo o sistema computacional. Tal sistema ficou conhecido como BIOS e o local no qual ele fica armazenado, foi chamado de ROM. Obviamente os sistemas operacionais modernos também tiveram que passar por adaptações e o resultado são sistemas operacionais que podem ser instalados em praticamente qualquer arquitetura computacional. Como parte da BIOS, um sistema com interface gráfica simples mas amigável foi desenvolvido e a partir desse sistema o usuário pode verificar informações sobre o computador e também interferir em seu funcionamento em nível de componentes. Este sistema é o SETUP da BIOS, e ainda que possa variar de fabricante para fabricante, seu CORE (núcleo) permanece o mesmo. 5.1 - Códigos de Erros do BIOS Como dito anteriormente, a depender do fabricante, algumas características do BIOS podem mudar, mas seu “coração”, CORE, é praticamente o mesmo para todos. Uma das funcionalidades do BIOS é fazer a verificação do sistema durante sua inicialização e caso alguma falha seja encontrada, emitir avisos para que o usuário possa providenciar os devidos reparos. Alguns dos códigos de erro do BIOS são: • 1 Bip Curto: Post Executado com sucesso: Este é um Bip feliz emitido pelo BIOS quando o POST é executado com sucesso. Caso o seu sistema esteja inicializando normalmente e você não esteja ouvindo este Bip , verifique se o speaker está ligado à placa mãe corretamente. • 1 Bip longo: Falha no Refresh (refresh Failure) : O circuito de refresh da placa mãe está com problemas, isto pode ser causado por danos na placa mãe ou falhas nos módulos de memória RAM • 1 Bip longo e 2 bips curtos ou 1 Bip longo e 3 bips curtos: Falha no Vídeo: Problemas com o BIOS da placa de vídeo. Tente retirar a placa, passar borracha de vinil em seus contatos e recolocá-la, talvez em outro slot. Na maioria das vezes este problema é causado por mau contato. • 2 bips curtos: Falha Geral: Não foi possível iniciar o computador. Este problema é causado por uma falha grave em algum componente que o BIOS não foi capaz de identificar. Em geral o problema é na placa mãe ou nos módulos de memória. • 2 Bips longos: Erro de paridade: Durante o POST, foi detectado um erro de paridade na memória RAM. Este problema pode ser tanto nos módulos de memória quanto nos próprios circuitos de paridade. Para determinar a causa do problema, basta fazer um teste com outros pentes de memória. Casoesteja utilizando pentes de memória sem o Bit de paridade você deve desativar a opção “Parity Check” encontrada no Setup. • 3 Bips longos: Falha nos primeiros 64 KB da memória RAM (Base 64k memory failure). Foi detectado um problema grave nos primeiros 64 KB da memória RAM. Isto pode ser causado por um defeito nas memórias ou na própria placa mãe. Outra possibilidade é o problema estar sendo causado por um simples mal contato. Experimente retirar os pentes de memória, limpar seus contatos usando uma borracha de vinil (aquelas borrachas plásticas de escola) e recolocá-los com cuidado. • 4 Bips Longos: Timer não operacional: O Timer 1 não está operacional ou não está conseguindo encontrar a memória RAM. O problema pode estar na placa mãe (mais provável) ou nos módulos de memória. • 5 Bips: Erro no processador O processador está danificado, ou mal encaixado. Verifique se o processador está bem encaixado, e se por descuido você não esqueceu de baixar a alavanca do soquete Zif (acontece nas melhores famílias. • 6 Bips: Falha no Gate 20 (8042 – Gate A20 failure): O gate 20 é um sinal gerado pelo chip 8042, responsável por colocar o processador em modo protegido. Neste caso, o problema poderia ser algum dano no processador ou mesmo problemas relacionados com o chip 8042 localizado na placa mãe. • 7 Bips: Processor exception (interrupt error): O processador gerou uma interrupção de exceção. Significa que o processador está apresentando um comportamento errático. Isso acontece às vezes no caso de um overclock mal sucedido. Se o problema for persistente, experimente baixar a frequência de operação do processador. Caso não dê certo, considere uma troca. • 8 Bips: Erro na memória da placa de vídeo (display memory error) : Problemas com a placa de vídeo, que podem estar sendo causados também por mal contato. Experimente, como no caso das memórias, retirar a placa de vídeo, passar borracha em seus contatos e recolocar cuidadosamente no slot. Caso não resolva, provavelmente a placa de vídeo está danificada. • 9 Bips: Erro na memória ROM (rom checksum error): Problemas com a memória Flash onde está gravado o BIOS. Isto pode ser causado por um dano físico no chip do BIOS, por um upgrade de BIOS mal sucedido ou mesmo pela ação de um vírus da linhagem do Chernobil. • 10 Bips: Falha no CMOS shutdown register (CMOS shutdown register error): O chamado de shutdown register enviado pelo CMOS apresentou erro. Este problema é causado por algum defeito no CMOS. Nesse caso será um problema físico do chip, não restando outra opção senão trocar a placa-mãe. • 11 Bips: Problemas com a memória cache (cache memory bad): Foi detectado um erro na memória cache. Geralmente quando isso acontece, o BIOS consegue inicializar o sistema normalmente, desabilitando a memória cache. Mas, claro, isso não é desejável, pois deteriora muito o desempenho do sistema. Uma coisa a ser tentada é entrar no Setup e aumentar os tempos de espera da memória cache. Muitas vezes com esse “refresco” conseguimos que ela volte a funcionar normalmente. Principais Tipos de Computação 1 – Introdução Atualmente (até o ano de 2020 pelo menos), podemos encontrar diversos tipos de computadores. Computadores não são somente equipamentos de médio ou grande porto, não são somente os computadores pessoais (PC’s) ou notebooks, que estão presentes em diversas empresas e residências. Computadores podem ser qualquer dispositivo eletroeletrônico capaz de executar instruções de software, não importando para isso se o referido dispositivo possui uma arquitetura complexa ou não. Diferentes necessidades levam a criação de diferentes tipos de computadores, alguns com maior e outros com menor capacidade de processamento e armazenamento, não. Ao classificarmos os tipos de computadores, podemos separá-los de acordo com sua arquitetura, finalidade, características tecnológicas, entre outros. 2 – Computação Monociclo e Multiciclo Antes de iniciar é importante esclarecer que veremos um pouco mais sobre este assunto em outras aulas. Outro ponto importante a ser considerado, é que para entendermos a diferença entre a computação monociclo e multiciclo, é preciso antes compreender quais são as fases de um processo de software. 2.1 – Ciclo de Vida de um Processo Apesar de este ser um conteúdo oriundo de outra disciplina, seu entendimento aqui facilitará na compreensão do que são ciclos de CPU e de como as tecnologias monociclo e multiciclo se comportam e como podem interferir no desempenho do sistema computacional em si. Quanto às fases do ciclo de vida de um processo, podemos dividi-las da seguinte forma: • Novo: Um novo processo foi aidionado a fila de execuções, então a CPU deverá buscar os dados necessários para executar o processo; • Pronto: O processo encontra-se pronto para ser executado, nesse ponto ele pode ser enviado para a CPU pois os dados básicos para sua execução já foram selecionados; • Em Execução: O processo está na CPU sendo executado; • Em Espera: O processo executou alguma operação de Entrada e Saída, ou depende de algum dado que deve ser fornecido por outro processo ou que não foi previamente carregado; • Terminado: O processo encerrou seu ciclo de execução. A figura 2.1 representa de este ciclo de forma mais lúdica. Figura 2.1. Ciclo de vida de um processo Em uma arquitetura monociclo, somente um processo pode ser executado a cada ciclo de CPU, isso significa dizer que nenhum outro processo poderá ser candidato a entrar na CPU até o processo em execução entre na fase de terminado. Estamos dizendo então que, mesmo que existam outros processos na fila de novos, este processo somente seguirá para a fila de pronto quando o processo que já está na CPU seguir para terminado. Mas arquiteturas multiciclo por sua vez, quando um processo é movido para a fila de processos em espera, um processo que se encontra na fila de pronto pode ser encaminhado para a CPU. Processos que estão em espera geralmente não dependem de qualquer ação da CPU, e por este motivo a CPU pode ser direcionada a execução de outros processos. 3 – Computação Linear, Pipeline e Paralela Além dos modelos de arquiteturas citados no tópico 2, podemos também citar as arquiteturas lineares, pipeline e paralelas. Estes tópicos são apresentados separadamente para deixar claro o fato de que uma arquitetura não necessariamente exclui a outra. A respeito dos modelos de arquiteturas que foram citadas: • Arquitetura Linear: via de regra, para toda arquitetura monociclo é também aplicada uma arquiteutra linear, ou seja, modelo de processamento no qual um processo inicia e finaliza seu ciclo de forma linear, sem interrupções ou desvio para ouro processo durante sua execução. • Arquitetura Pipeline: aplicada como forma de melhorar a performance em arquiteturas lineares mas capazes de operar em multiciplo, a arquietuta pipeline permite que o processador inicie outro processo enquanto um processo em execução encontra-se em estado de espera ou até mesmo pronto. Dessa forma, a CPU atua como uma linha de produção, os praocessos são vistos em várias fases e mais de um processo pode estar em executando em um estado de pseudo-paralelismo, cada um em um determinado estágio de seu ciclo de vida. • Arquitetura Palalela: pode executar os processos tanto no modelo linear quanto em pipeline. Nesse tipo de arquitetuta tem-se ou mais de uma CPU ou uma CPU com mais de um núcleo. Dessa forma nada impede que mais de um processo esteja em execução no mesmo espaço de tempo, basta somente que esses processos não estejam sendo executados na mesma CPU ou núcleo. Figura 2.2. Processamento Paralelo De fato essas não são as únicas, mas são as arquiteturas mais comumente utilizadas nos computadores mais acessíveis (até o momento de preparação desse material). O que podemos afirmar é que os componentes de hardware evoluem velozmente, e que logo teremosnovos modelos de arquitetura, a exemplo, citamos a computação quântica (DA SILVA, 2018). 4 – Tolerância a Falhas Assim como ocorre em diversas outras áreas do conhecimento, algumas funções ou necessidades requerem mais atenção e comprometimento do que outras. Vamos por exemplo comparar duas profissões. Não queremos aqui comprar o mérito entre as duas, mas sim analisar as consequências que podem resultar de falhas em cada uma das profissões. Supondo que um médico cirurgião cometa um erro grave durante um procedimento cirúrgico, o pior resultado que podemos ter é a perda de uma vida. Agora, suponha que um confeiteiro cometa o erro grave durante a preparação de um bolo de casamento. O pior resultado que podemos ter são noivos bem furiosos (claro, isso pode ser muito perigoso). Com essa comparação queremos deixar claro que, alguns sistemas computacionais devem possuir a capacidade de tolerar e se recuperar de falhas com maior agilidade do que outros. Um sistema de navegação de um avião por exemplo, este tipo de sistema não pode ser tão suscetível a falhas quanto o sistema de um computador pessoal. Então é correto dizer que, quanto mais “importante” for a finalidade para a qual o dispositivo está sendo desenvolvido, maior deverá ser sua capacidade de continuar em operação mesmo em caso de falhas. A tolerância a falhas pode ser obtida tanto através da implantação de componentes de hardware desenvolvidos especificamente para verificar a existência de falhas e tentar contornar ou reparar essas falhas, caso ocorram, como também através de uma técnica de redundância do hardware. Com isso, caso um falhe, o outro entra imediatamente em operação. 5 – Comunicação e Sincronização Entre Computadores Outra questão importante quando se considera os tipos de arquiteturas de computadores, é a forma como ocorrem a comunicação entre os componentes de um computador e até mesmo entre dois ou mais dispositivos computacionais diferentes. Nós nos referimos anteriormente a possibilidade da computação paralela, ou sea, processos sendo executados em paralelo, no mesmo espaço de tempo, mas em CPU’s ou núcleos diferentes. Entretanto, um processo não consome somente recursos de CPU, processos também consomem memória, e quando levamos isto em consideração, então devemos nos preocupar na forma como a comunicação e sincronização desses processos ocorrem. A bem da verdade é preciso dizer que grande parte desse problema fica a cargo do sistema operacional. Ao hardware cabe fornecer os recursos, ao software fica a responsabilidade de administrar, de forma correta e eficiência, esses recursos. Um desses recursos são as memórias, e no que se refere às memórias, um dos modelos mais comum de arquitetura é, de acordo com a Taxonomia de Flynn é o modelo MIMD - Multiple Instruction Multiple Data (VALDEVINO, 2011), e suas principais características são: • Memória Compartilhada com espaço de endereçamento único e comunicação através de Load e Store nos endereços de memória. • Memória Privativa com espaço de dendereçamento distinto para cada processador e comunicação através da troca de mensagens através das operações send e receive. Posteriormente estudaremos um pouco mais sobre os modelos propostos pela Taxonomia de Flynn. Entretanto, é altamente recomendado que, sendo possível, você estude as bibliografias utilizadas na confecção desse material. Sistemas Numéricos e Circuitos Lógicos em Arquiteturas Computacionais 1 – Sistemas Numéricos Ao longo da história diversos tipos de sistemas de numeração surgiram. Acredita-se que tais sistemas surgiram principalmente devido à necessidade humana de contagem mesmo em formas rudimentares de agricultura e pecuária Dessa forma foram sendo criados códigos e símbolos para representar valores e operações entre eles. Todo sistema numérico tem o mesmo propósito, variando principalmente em relação a seus símbolos e o que cada um deles representa. Em nosso cotidiano, o sistema de numeração que utilizamos é o sistema decimal, já na computação, os sistemas numéricos mais utilizados são o sistema binário, sistema octal e o sistema hexadecimal. 1.1 – Sistema Decimal Este é o sistema numérico mais conhecido e utilizado em todo o mundo. É composto por 10 elementos cujos símbolos são 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9,sistemas de base 10. Este tipo de sistema é muito aplicado na matemática, apesar de já terem sido, sem sucesso, aplicados na computação para representação de dados (STALLINGS, 2010). A nota 1.2 – Sistema Binário Este é o sistema numérico dos computadores e da grande maioria dos dispositivos eletrônicos. O sistema binário possui somente dois elementos, 0 e 1. É como decidir entre verdadeiro e falso. Combinando 0´s e 1´s pode-se representar qualquer outro número e codificar informação de outras naturezas tais como sons, imagens, vídeos, etc. Isso vale para outros sistemas, mas a base binária está na raiz da computação ainda nos dias de hoje. 1.3 – Sistema Octal Este sistema de numeração é também utilizado na matemática e na ciência da computação. Também conhecido como sistema de base 8, conta com 8 elementos para formação de quaisquer outros valores, são eles: 0, 1, 2, 3, 4, 5, 6 e 7. 1.4 – Sistema Hexadecimal Também muito aplicado na computação, o sistema hexadecimal, ou sistema de base 16, possui 16 elementos em sua composição, e permite formar qualquer sequência de valores utilizando os seguintes elementos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A (representa 10), B (representa 11), C (representa 12), D(representa 13), E (representa 14), F(representa 15). 2 – Relações Entre as Bases Numéricas Para cada um dos sistemas apresentados existe a possibilidade de conversão das bases e a realização de operações básicas da matemática. 2.1 - Também é possível encontrar na internet uma calculadora que realiza a conversão de bases, basta clicar no link: https://www.calculadoraonline.com.br/conversao-bases Por fim, apresentamos na Figura 3.1 uma tabela com a relação entre cada elemento de cada uma das bases apresentadas: Figura 3.1. Tabela de Relação entre os elementos das bases decimal, binária, octal e hexadecimal Para a computação, conhecer as bases binárias da relação que existe entre elas é extremamente importante. Os computadores, mesmo os mais modernos, representam todos os seus dados com base nesses valores, com isso, pode ser necessário, durante o processo de interação com o computador, compreender essa relação para se obter o resultado desejado em uma situação específica. 3 – Representação dos Dados https://www.calculadoraonline.com.br/conversao-bases O funcionamento dos computadores está baseado na presença ou não de corrente elétrica em seus componentes. Para ser mais específico, verifica-se a existência ou não de corrente em determinadas conexões existentes em seus componentes. Com base na existência ou ausência de corrente (1 ou 0 – binário), o componente realizará ou não uma determinada ação, podemos dizer então que, o conjunto de presença e ausência de corrente em determinadas portas de determinados componentes determinam ações e dados que o computador irá processar. Representar todos os dados necessários utilizando somente a base binária se mostrou um grande desafio e tornou o sistema mais complexo do que o necessário, Convencionou- se utilizar a base hexadecimal para representação dos dados por demandar muito menos espaço de memória. Para facilitar a relação entre os valores dos sistemas numéricos e os símbolos do alfabeto e demais caracteres especiais, as principais tabelas que mantém as relações entre esses valores são a ASCii, EBCDIC e UNICODE. 4 - Portas lógicas e circuitos lógicos A simbologia de portas lógicas é bastante comum em projetos de circuitos de computadores. Observe a relação entre as entradas e saídas de cada símbolo, lembrando sempre que sinais lógicos variam entre0 e 1. https://web.fe.up.pt/~ee96100/projecto/Tabela%20ascii.htm http://www.cadcobol.com.br/tabascii.htm https://www.tamasoft.co.jp/en/general-info/unicode.html Por meio de portas lógicas montamos circuitos lógicos que são a essência dos computadores. Os dois circuitos abaixo mostram as mesmas saídas para um mesmo conjunto de sinais lógicos. Observe a equivalência entre as expressões matemáticas correspondentes aos circuitos. Comunicação entre Componentes 1 – Introdução Os diversos componentes que fazem parte de um sistema computacional precisam ser capazes de trocar informações entre si. Para viabilizar a comunicação entre os componentes, é necessário um suporte físico e lógico. Em termos de arquitetura de computadores, este meio de comunicação é conhecido como barramento. 2 – Barramentos Chamamos de barramento o conjunto de cabos, fios, portas, circuitos impressos e outros que servem de via de comunicação para e entre os componentes que fazem parte do computador (STALLINGS, 2010). Alguns autores chamam barramentos de “autoestrada de dados”, devido a sua função de servir como via de transporte de dados, ou seja, via de comunicação. 2.1 – Objetivos dos Barramentos Além de servir como via para fluxo de dados na arquitetura computacional, os barramentos possuem também o objetivo de reduzir o número de vias de comunicação entre os diversos componentes que fazem parte do computador. Isso é possível pois os barramentos são a única vida de dados disponível para esses componentes. Figura 4.1. Comparação ligação sem barramentos e ligação com barramentos 3 – Funcionamento dos Barramentos Geralmente os barramentos possuem entre 50 e 100 linhas físicas que são classificadas em: • Barramento de dados: também conhecido como barramento de memória ou barramento de endereçamento, este barramento é unidirecional e responsável por transportar endereços de memória; • Barramento de endereços: este barramento é bidirecional, ou seja, pode transmitir dados para qualquer parte de suas pontas, ou seja, pode tanto trazer dados para o processador como levar dados do processador para outros componentes; e • Barramento de controle: também bidirecional, o barramento de controle é também conhecido como “barramento de encomendas”. Sua responsabilidade é transportar ordens e sinais de sincronização. É importante frisar que, bidirecionais ou não, os barramentos quando ocupados, ficam exclusivos para o componente que assumiu seu controle até que este componente renuncie ao controle do barramento. 1. 2. – Modelos de Barramentos Existem diversos tipos de barramentos sendo que os mais conhecidos são: • ISA (Industry Standard Architecture): primeiro barramento utilizado nos PC’s. Foi lançado no começo dos anos 1990 e começou a ser substituído pelo local PCI na década de 2000. O barramento ISA é formado pelos slots de 8 e 16 bits existentes nas placas de CPU, além de alguns dos seus circuitos internos. Foi originado no IBM PC, na versão de 8 bits, e posteriormente aperfeiçoado no IBM PC AT, chegando à versão de 16 bits. Possui as seguintes características: • Transferências em grupos de 8 ou 16 bits; • Clock de 8 MHz. Para saber mais sobre esse barramento visite https://www.gta.ufrj.br/grad/01_1/barramento/ parte_isa.htm. • EISA (Extended Industry Standard Architecture): este barramento possui as mesmas dimensões de um slot ISA de 16 bts, contudo, é mais alto, além de possuir duas linhas de contatos. Sua linha superior possui a mesma configuração de pinagem de um ISA de 16 bits, o que garante a compatibilidade com periféricos que fazem uso desse padrão, a linha inferior no entanto possui 90 novos contatos e são utilizados por placas de 32 bits. Para saber mais sobre esse modelo acesse https://www.hardware.com.br/termos/eisa. • VLB (VESA Local Bus): Lançado pela Video Electronics Standards Association em 1993, este é um barramento de expansão com velocidades muito superiores ao ISA e EISA. Atua na mesma frequência que a placa mãe. Trata-se de um barramento de 32 bits. As desvantagens do VLB incluem a falta de suporte a Bus Mastering e a Plug- and-Play, além de uma alta taxa de utilização do processador e limitações elétricas, que permitem um máximo de 2 ou 3 slots VLB por máquina. • Para saber mais sobre esse modelo de barramento visite https://www.hardware.com.br/termos/vlb. • PCI (Peripheral Component Interconnect): Concebido inicialmente para atuar com a frequência de 33 MHz e com 32 trilhas de comunicação no modo half-duplex. Depois de alguns anos, foi https://www.gta.ufrj.br/grad/01_1/barramento/parte_isa.htm https://www.gta.ufrj.br/grad/01_1/barramento/parte_isa.htm https://www.hardware.com.br/termos/eisa inserida uma versão com frequência de 66 MHz. Assim como a interface USB, o barramento PCI também é Plug And Play. • Mais informações sobre o barramento podem ser acessadas em: https://www.hardwarecentral.net/single- post/2018/01/10/o-barramento-pci. • AGP (Accelerated Graphics Port): Criada pela Intel, seu propósito era resolver problemas de desempenho no processamento de gráficos 3D apresentados por placas de vídeo PCI. Por padrão o modelo AGP transfere dados a 66 MHz e 32 bits. • Mais informações em: https://www.gta.ufrj.br/grad/01_1/barramento/p arte_agp.htm. • AMR (Audio and Modem Riser): Inicialmente criada para atuar com circuitos de som e modem, para que possam ser utilizadas é preciso que se tenha no chipset circuitos de áudio AC’97 e de modem MC’97. • CNR (Communications and Network Riser): Após a AMR a Intel lançou o padrão CNR, este padrão possui slot idêntico ao AMR, contudo permite que sejam instalados riser cards com funções de áudio, modem e rede. Para saber mais sobre os modelos AMR e CNR, visite o site: http://191.13.234.92/curso/info/miguel/Arquivos/Fun damentos/Hardware_Total/cap12%20- %20Barramentos%20da%20placa%20de%20CPU. pdf . Além destes, outros tipos e modelos de barramentos estão disponíveis no mercado, dentre eles podemos citar os barramentos locais, de memória, USB, SCSI, IDE e Firewire. Recomenda-se a leitura deste material para reforçar seu aprendizado. 4 – Hierarquia dos Barramentos https://www.hardwarecentral.net/single-post/2018/01/10/o-barramento-pci https://www.hardwarecentral.net/single-post/2018/01/10/o-barramento-pci https://www.gta.ufrj.br/grad/01_1/barramento/parte_agp.htm https://www.gta.ufrj.br/grad/01_1/barramento/parte_agp.htm http://191.13.234.92/curso/info/miguel/Arquivos/Fundamentos/Hardware_Total/cap12%20-%20Barramentos%20da%20placa%20de%20CPU.pdf%C2%A0 http://191.13.234.92/curso/info/miguel/Arquivos/Fundamentos/Hardware_Total/cap12%20-%20Barramentos%20da%20placa%20de%20CPU.pdf%C2%A0 http://191.13.234.92/curso/info/miguel/Arquivos/Fundamentos/Hardware_Total/cap12%20-%20Barramentos%20da%20placa%20de%20CPU.pdf%C2%A0 http://191.13.234.92/curso/info/miguel/Arquivos/Fundamentos/Hardware_Total/cap12%20-%20Barramentos%20da%20placa%20de%20CPU.pdf%C2%A0 Desde que os computadores começaram a ganhar visibilidade comercial, o tamanho dos equipamentos passou a fazer parte da real preocupação dos engenheiros eletrônicos e da computação. Assim sendo, adicionar mais barramentos ao conjunto, como forma de resolver possíveis gargalos de comunicação ou até mesmo melhorar o desempenho dos equipamentos não era uma opção viável. Uma forma de resolver a questão foi a criação de uma estrutura hierárquica para os barramentos (STALLINGS, 2010) (Figura 4.2). Figura 4.2. Hierarquia dos Barramentos Tal estrutura em hierarquia permite que os barramentos locais e de sistema ocupem-se de atividades diretamente relacionadas a CPU e Memórias, enquanto outros dispositivos podem estar no barramento de alta velocidade e periféricos em barramentos de expansão. Entendendo a Unidade Central de Processamento do Computador 1 – Introdução A CPU corresponde ao cérebro docomputador. Mas quando nos referimos à CPU não estamos nos referindo a somente um componente, estamos nos referindo a um conjunto de microcomponentes que juntos formam a CPU (Central Process Unit) ou UCP – Unidade Central de Processamento. 2 – A CPU Como vimos anteriormente, a CPU que também é conhecida como processador e dividida em várias partes, composta de vários microcomponentes que juntos formam o processador e permitem que ele realize todas as atividades que lhe são atribuídas (STALLINGS, 2010). Algumas pessoas confundem CPU com gabinete (Figura 5.1), e acham que CPU e processador são coisas distintas, mas não são. Figura 5.1. Gabinete (Isso não é uma CPU) Os principais componentes de uma CPU são os Registradores, a Unidade de Lógica e Aritmética e a Unidade de Controle, veremos um pouco mais sobre cada um desses componentes nos próximos tópicos. 2.1 – Unidade de Lógica e Aritmética (ULA) Também conhecida como ULA, que nada mais é do que uma acrônimo de Unidade de Lógica e Aritmética (Figura 5.2). É o circuito responsável pela realização de operações de lógica e também operações aritméticas. Este componente é parte fundamental tanto das CPU’s mais simples como das mais complexas. Ela é responsável por executar as principais operações lógicas e aritméticas do computador, e isso inclui não somente operações matemáticas básicas tais como soma, subtração, divisão, mas também testes de maior e menor, negativo ou positivo, etc. Figura 5.2. Esquema de uma ULA no qual A e B são operandos, R é saída, F é entrada de controle e D saída de status. Fonte: Apostila de Arquitetura e Organização de Computadores da Universidade Estadual do Amazonas 2.2 – Unidade de Controle A Unidade de Controle é responsável pela realização de três atividades, são elas a busca pela instrução, que consiste em recuperar de um local informado da memória a instrução que deve ser executada; decodificação, que consiste basicamente em converter a instrução recuperada em um formato que seja compreendido pela CPU; e execução, que consiste na execução propriamente dita da instrução. Dependendo da instrução, a execução pode requerer a participação da ULA e de outros componentes da CPU. 2.3 – Registradores Diversos processadores possuem pequenas memórias em sua composição. Essas memórias são conhecidas como registradores. Os registradores servem basicamente para o armazenamento temporário de dados que são gerados durante a execução de instruções pela CPU. Dentre os registradores, os mais importantes são o Contador de Programa (Program Counter - PC) que indica qual será a próxima instrução a ser executada, e o Registrador de Instrução (Instruction Register) que armazena a instrução que está sendo executada no momento. A respeito do Registrador PC, ele sempre será atualizado de forma incremental, ou seja, seu valor sempre será acrescido de 1, indicando assim a posição de memória na qual se encontra a próxima instrução a ser executada, esta lógica somente será desrespeitada nos casos em que a própria instrução em execução indique o endereço de memória da próxima instrução a ser executada (TANENBAUM e ZUCCHI, 2009). 3 – O Ciclo de uma CPU Sabemos que a velocidade de uma CPU é medida por sua taxa de clock e os clocks são medidos em termos de MHz (megahertz). Sendo assim, 1 MHz representa 1 milhão de ciclos por segundo, ou seja, 1 milhão de clocks por segundo (TANENBAUM e ZUCCHI, 2009). Durante um ciclo, ou seja, durante a execução de uma instrução, as seguintes atividades são realizadas pela CPU: 1. Recupera a próxima instrução da memória e a armazena no registrador de instruções; 2. Atualiza o contador de programa; 3. Determina qual foi o tipo de instrução recuperada; 4. Caso a instrução utilize palavra de memória, determina onde está essa palavra; 5. Trás a palavra para dentro de algum registrador da CPU, caso isso seja necessário; 6. Executa a instrução; e 7. Retorna para o passo 1. Como pode ser visto, essa é a vida da CPU, ficar repetindo esse ciclo infinitamente até que o computador seja desligado. Tal sequência é geralmente conhecida como buscar-decodificar-executar e com o passar dos anos, os processadores foram se tornando cada vez mais capazes de executar esses ciclos com mais e mais velocidade. 4 – Multiciclo e Pipeline Ainda que os computadores tenham evoluído incrivelmente, em determinados momentos surgem gargalos. Como continuar aumentando a velocidade de clock de um processador, se praticamente toda capacidade de inserir nano circuitos em pequenas pastas de silício já foram praticamente esgotadas? Duas soluções possíveis são: 1. Implementar técnicas de pipeline. Essa é uma tendência que já foi apresentada nesta disciplina e consiste basicamente em dividir o processo/instruções em fases, e, com auxílio dos recursos de interrupção, executar partes distintas de um mesmo processo ou de processos distintos em diferentes momentos, preferencialmente quando um processo está em modo de espera; e 2. Implementar recursos de multiciclos. Tais recursos podem inclusive ser implementados sobre as técnicas de pipeline. Se por um lado o espaço existente em uma CPU é pequeno demais para reproduzir todos os circuitos existentes na CPU, ele pode não ser pequeno demais para reprodução de parte desses componentes. Essa técnica permite criar CPU’s com vários núcleos que compartilham recursos como registradores. Dessa forma torna-se possível a execução de mais de um ciclo em uma mesma fração de tempo. Principais Tipos de Arquiteturas de CPU’s 1 – Introdução Quando aprofundamos nossos estudos em arquitetura de computadores, o estudo do funcionamento da CPU é o mais importante. Vamos agora estudar um pouco melhor os detalhes arquiteturais da CPU, entendendo o que são arquiteturas RISC e CISC, Máquinas Escalares e Máquinas Superescalares. 2 – Arquitetura CISC O termo CISC é o acrônimo de Complex Instruction Set Computer, ou seja, computador com conjunto de instruções complexo. Esta arquitetura está presente em diversos tipos de processadores de diversas fabricantes, a Intel e AMD são dois exemplos. Uma característica desse tipo de arquitetura é sua capacidade de suportar instruções mais complexas, ou seja, é capaz de suportar um número maior de instruções se comparado a outras arquiteturas. Entretanto, isso pode deixar o computador lento, principalmente quando o número de instruções complexas é pequeno e o processador atua com grandes conjuntos de instruções menos complexas, ou seja, reduzidas (TANENBAUM e ZUCCHI, 2009). 3 – Arquitetura RISC O termo RISC é o acrônimo de Reduced Instruction Set Computer, ou seja, computador com conjunto reduzido de instruções. Também presente em diversos processadores de diferentes fabricantes, tais como as já citadas Intel, AMD, Apple, IBM e Motorola. Uma de suas principais características é a capacidade de suportar somente pequenos conjuntos de instruções, ou seja, a cada ciclo de CPU, somente um conjunto reduzido de instruções. Isso pode ser vantajoso para a maioria dos computadores de uso doméstico (STALLINGS, 2010). 4 – RISC vs CISC A melhor forma de comparar as duas tecnologias é apresentar os resultados de um estudo que foi realizado especificamente para este fim. O resultado do estudo realizado por Mashey (1995) é apresentado na Figura 6.1, e de acordo com Stallings (2010), para o referido estudo, os seguintes itens foram considerados típicos de uma arquitetura RISC clássica, são eles: 1. Um tamanho único de instrução. 2. O tamanho é normalmente de 4 bytes. 3. Um número menor de modos de endereçamento, normalmente menos de cinco. Este parâmetro é difícil de determinar. Na tabela, modos literais e de registradores não são contados e formatos diferentes com tamanhos de off set diferentes são contados separadamente. 4. Nenhum endereçamento indireto que requer um acessoà memória para obter o endereço de um operando na memória. 5. Nenhuma operação que combina leitura/escrita com aritmética (por exemplo, adicionar da memória, adicionar para memória). 6. Não mais do que um operando endereçado em memória por instrução. 7. Não suporta alinhamento arbitrário de dados para operações de leitura/escrita. 8. Número máximo de usos da unidade de gerenciamento de memória (MMU) para um endereço de dados em uma instrução. 9. Número de bits para especificadores registradores inteiros igual a cinco ou mais. Isto significa que ao menos 32 registradores inteiros podem ser explicitamente referenciados em um momento. 10. Número de bits para especificadores de registradores de ponto flutuante igual a quatro ou mais. Isto significa que ao menos 16 registradores de ponto flutuante podem ser referenciados explicitamente em um momento. Figura 6.1. Tabela comparativa entre RISC vs CISC É preciso lembrar que muitos processadores são desenvolvidos ou com arquitetura principal CISC, e um emulador RISC, ou com arquitetura principal RISC e um emulador CISC (STALLINGS, 2010). 5 – Máquinas Escalares e Superescalares Máquinas escalares são basicamente os tipos mais comuns de processadores modernos. Dentro da taxonomia de Flyn tais processadores estão classificados como SISD - Single Instruction, Single Data - Instrução Única, Dados Únicos. Vejamos então um pouco mais sobre as máquinas superescalares. Os recursos de pipeline que vimos em outras ocasiões trazem ganhos consideráveis de desempenho. Imagine então dois ou mais pipelines operando juntos. Este é um dos recursos possíveis com a introdução das máquinas superescalares. Anteriormente vimos a possibilidade de uma única CPU ter dois ou mais núcleos compartilhando os demais recursos da CPU e do próprio computador. É exatamente essa alteração na arquitetura dos processadores que permite que dois ou mais pipelines sejam executados simultaneamente. Um bom exemplo do que estamos afirmando pode ser visto na Figura 6.2 extraída de (TANENBAUM e ZUCCHI, 2009). Figura 6.2. Pipeline duplo de cinco estágios com uma unidade de busca de instrução comum. Agora, tente imaginar a representação de sete pipelines de cinco estágios e com mais de uma unidade de busca de instrução. Isso também é possível. Execução de Instruções nas CPU’s 1 – Introdução Qualquer instrução que o computador necessite executar depende de instruções digitais, e é aqui que voltamos aos componentes de uma CPU e as etapas do Ciclo de Execução das Instruções. 2 – Ciclo de Execução das Instruções e Componentes da CPU Retomando a ideia de ciclo de execução de instruções: 1. Recupera a próxima instrução da memória e a armazena no registrador de instruções; 2. Atualiza o contador de programa; 3. Determina qual foi o tipo de instrução recuperada; 4. Caso a instrução utilize palavra de memória, determina onde está essa palavra; 5. Copia a palavra para dentro de algum registrador da CPU, caso isso seja necessário; 6. Executa a instrução; 7. Retorna para o passo 1. O primeiro passo do processo é a recuperação da instrução em alguma posição de memória. Para que isso seja possível, o valor armazenado no contador de programa deve ser convertido em um conjunto de sinais elétricos que serão transmitidos por várias portas que permitem a saída e entrada de sinais em diversos componentes da CPU. Lembram-se de quando estudamos as bases binárias, octais e hexadecimais? O endereço de memória armazenado em um contador de programa geralmente é representado em hexadecimal que pode ser convertido em binário e levar até a posição de memória desejada. Considerando um sistema de 16 bits, o endereço de memória CB4E poderia facilmente ser convertido na seguinte sequência binária 1100101101001110. Considerando que o valor 1 representa a presença de sinal elétrico e o valor 0 a ausência do sinal elétrico. Agora que a instrução foi recuperada, o próximo passo é atualizar o contador de programa, isso significa que o endereço de memória será atualizado para a próxima posição de memória. Depois disso, a CPU deve determinar qual é o tipo de instrução recuperada. Isso é uma atividade para a Unidade de Controle. Desconsiderando os detalhes, podemos afirmar que a UC recebeu como instrução um conjunto de 0’s e 1’s, e que depois de definir quais são os tipos de instrução, a Unidade de Controle verificará se será ou não necessário acessar e recuperar uma palavra de memória. Atuar exclusivamente com binários torna a operação mais lenta, em diversos casos, após receberem os sinais, os componentes eletrônicos convertem os binários em hexadecimais, o que reduz seu tamanho e facilita sua apresentação, execução e armazenamento. Antes de executar uma instrução, o UC deve decodificá-la, e parte disso é converter os comandos em sinais binários. 3 – Representação dos dados Praticamente todos os dados que trafegam pelo sistema computacional são convertidos hora em binários, hora em hexadecimais. Para facilitar e padronizar a interação entre equipamentos e pessoas, tabelas como a ASCii foram criadas. Tais tabelas apresentam relações entre valores hexadecimais e diversos símbolos que são utilizados nos mais variados alfabetos pelo mundo. Principais Tipos de Memórias de um Computador 1 – Introdução No computador temos as Memórias, e podemos dizer que elas possuem esse nome justamente por sua função de “memorizar” ou seja, armazenar conteúdos, dados, conhecimento e por que não dizer, lembranças do que foi realizado durante a utilização do computador. Nesse material veremos um pouco mais sobre esse dispositivo. 2 – O Sistemas de Memória Para facilitar a compreensão sobre o complexo sistema de memória dos computadores, Stallings (2010) opta por classificar as memórias de acordo com suas principais características (Figura 8.1). Antes de fazê-lo, vamos compreender melhor alguns termos que são frequentemente utilizados quando nos referimos ao sistema de memória do computador. De acordo com Stallings (2010), temos: • Palavra: unidade “natural” de organização da memória. O tamanho da palavra normalmente é igual ao número de bits usados para representar um inteiro e ao tamanho da instrução. • Unidades endereçáveis: em alguns sistemas são as próprias palavras, em outras entretanto o endereçamento pode ser feito em nível de bytes. De qualquer forma, o relacionamento entre o tamanho https://web.fe.up.pt/~ee96100/projecto/Tabela%20ascii.htm em bits A de um endereço e o número N de unidades endereçáveis é 2A = N. • Unidade de transferência: número de bits lidos ou escritos na memória de uma só vez. Características relacionadas ao modo de acesso à memória • Acesso sequencial: a memória é organizada em unidades de dados chamadas registros. O acesso é feito em uma sequência linear específica. • Acesso direto: assim como o acesso sequencial, o acesso direto envolve um mecanismo compartilhado de leitura-escrita compartilhado. Porém, os blocos ou registros individuais têm um endereço exclusivo, baseado no local físico. • Acesso aleatório: cada local endereçável na memória tem um mecanismo de endereçamento exclusivo, fisicamente interligado. • Associativo: esse é o tipo de memória de acesso aleatório que permite fazer uma comparação de um certo número de bit desejados dentro de uma palavra para uma combinação especificada, e faz isso para todas as palavras simultaneamente. Características relacionadas ao desempenho das memórias • Tempo de acesso (latência): para a memória de acesso aleatório, esse é o tempo gasto para realizar uma operação de leitura ou escrita, ou seja, o tempo desde o instante em que um endereço é apresentado à memória até o instante em que os dados foram armazenados ou se tornaram disponíveis para uso. • Tempo de ciclo de memória: esse conceito é aplicado principalmente à memória de acesso aleatório,e consiste no tempo de acesso mais qualquer tempo adicional antes que um segundo acesso possa iniciar. • Taxa de transferência: essa é a taxa em que os dados podem ser transferidos para dentro ou fora de uma unidade de memória. Para a memória de acesso aleatório, ela é igual a 1/(tempo de ciclo). Para a memória de acesso não aleatório, existe a seguinte relação: TN=TA+nRT_{N}=T_{A}+\dfrac{n}{R}TN=TA+Rn onde TN = tempo médio para ler ou escrever N bits TA = tempo de acesso médio n = número de bits R = taxa de transferência em bits por segundo (bps) Figura 8.1. Principais características do sistema de memórias do computador 3 – A hierarquia da Memoria Tanenbaum e Zucchi (2009) afirmam haver uma relação entre a capacidade, tempo de acesso e custo das memórias, e de acordo com os autores: • Tempo de acesso mais rápido, maior custo por bit. • Maior capacidade de armazenamento, menor custo por bit. • Maior capaciadade de armazenamento, tempo deacesso mais lento. Assim o projetista do sistema entra em um dilema, como construir um sistema extremamente eficiente, com boa capacidade de armazenamento e que não seja caro? Para resolver a questão, o projetista precisa empregar a hierarquia de memórias (STALLINGS, 2010). De acordo com Stallings (2010) e representado na Figura 8.2, quanto mais se desce na hierarquia de memórias, maior é: • Diminuição do custo por bit. • Aumento da capacidade. • Aumento do tempo de acesso. • Frequência de acesso à memória pelo computador Figura 8.2. A hierarquia de memória Quando se trata de sistema de memória de um computador, entramos em um assunto de extrema complexidade. Nesse caso o ideal é recorrer a algum material escrito por alguma autoridade no assunto. Como recomendação, sugiro a leitura do capítulo 4 do livro indicado em Stallings (2010).
Compartilhar