Prévia do material em texto
DISCIPLINA: ARQUITETURA DE COMPUTADORES CÓDIGO: 126102 CARGA HORÁRIA: 90 h CRÉDITOS: 6 OBJETIVOS DA DISCIPLINA Ao final do estudo da disciplina, o aluno será capaz de identificar e analisar as arquiteturas de forma qualitativa os seus impactos sobre o desempenho do sistema, projetar estruturas utilizando portas e circuitos lógicos, entender os componentes de um sistema computacional, buscando, ao final, compreender os princípios da constituição das arquiteturas convencionais e não convencionais. DESCRIÇÃO DO PROGRAMA 1 - Fundamentos da Arquitetura e Representação de Dados no Sistema Operacional Ao final da Unidade I, o aluno será capaz de descrever os principais componentes da arquitetura de um computador sequencial, e fazer conversão de base. Módulos Arquiteturas básicas de computadores Níveis e máquinas virtuais Notação posicional 2 - Funcionamento dos Circuitos Combinacionais e Sequenciais Ao final da Unidade II, o aluno será capaz de definir e identificar os circuitos combinacionais e sequenciais. Módulos Sistemas Digitais Circuitos Lógicos Circuito Combinacional Circuito Sequencial 3 - Funcionamento e Componentes Básicos Ao final da Unidade III, o aluno será capa de identificar os principais elementos da memória, da UCP e dos dispositivos de entrada/saída. Módulos Armazenamento de Informações Memória UCP – Unidade Central de Processamento Dispositivos de Entrada e Saída e Barramentos 4 - Arquiteturas Convencionais e Não-Convencionais Ao final da Unidade IV, o aluno será capaz de conhecer e classificar uma máquina que segue a arquitetura tradicional de von Neumann de uma máquina não convencional. Módulos Máquinas sequenciais, máquinas RISC e CISC Máquinas paralelas Ambiente Distribuído de Alto Desempenho - Fundamentos básicos Processadores de Rede, Dispositivos de Interconexão e Protocolos Leves CRITÉRIOS DE AVALIAÇÃO Os alunos serão avaliados por meio de: • Provas mensais; • Participação no fórum via Internet; • Outras atividades a critério do professor. BIBLIOGRAFIA • HENNESSY, John L., PATTERSON, David A. Arquitetura de Computadores - Uma Abordagem Quantitativa - 5ª Ed. 2014 • HENNESSY, John L.,PATTERSON, David A. Organização e Projeto de Computadores - 4 ª Ed. 2014 • MONTEIRO, Mario A. Introdução a Organização de Computadores - 5ª edição - 2007 • STALLINGS, William. Arquitetura e Organização de Computadores - 8ª Ed. • TANENBAUM, Andrew S. Organização Estruturada de computadores - 6ª edição 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 1 UNIDADE 1 – FUNDAMENTOS DA ARQUITETURA E REPRESENTAÇÃO DE DADOS NO SISTEMA OPERACIONAL MÓDULO 1 – ARQUITETURAS BÁSICAS DE COMPUTADORES 01 1 - CONCEITO DE ARQUITETURA DE COMPUTADORES Prezado(a) aluno(a) estamos começando nosso estudo sobre Arquitetura e Organização de Computadores (AOC) e nesse módulo veremos o conceito de Arquitetura de Computadores, faremos uma viagem no tempo para entender a evolução dos computadores através dos séculos (Histórico) e finalizaremos fazendo uma breve descrição dos principais componentes de um computador. Vamos começar? O estudo da matéria Arquitetura de Computadores é de suma importância para o entendimento dos aspectos da evolução tecnológica na área, de como é feita a montagem dos componentes de um computador, provendo assim uma visão e fundamentação teórica para que os profissionais da área tenham um desempenho melhor nas atividades da TI (Tecnologia da Informação). Alguns exemplos de projetos que exigem o conhecimento da Arquitetura de Computadores: projetos de redes de computadores, suporte e desenvolvimento de aplicações, automação de estabelecimentos comerciais, implantação de sistemas informatizados e outros. Vamos então ver algumas definições de autores, estudiosos e profissionais da área da TI (Tecnologia da Informação) sobre o que seja um computador (máquina), quais são seus componentes, e com base nisso começaremos o entendimento do que seja arquitetura e como é a organização de um computador. Seguem abaixo algumas definições: 02 Tanenbaum define como Arquitetura de Computadores o estudo que trata do funcionamento e também do comportamento de um sistema computacional (computador). Provavelmente você deve estar pensando: computador tem comportamento? Vamos esclarecer o que venha ser este “comportamento”. Quando falamos em comportamento estamos fazendo referência à forma como os componentes do computador interagem entre si. Quando perguntamos para um profissional da programação de software (programador), como ele visualiza um sistema computacional, provavelmente ele dirá que o mais importante é: plataforma 32 ou 64 bits, frequência do clock etc. Isso acontece porque, para programar, não é primordial saber como é a estrutura interna, a parte que não é “visível” aos nossos olhos para o programador (exemplo: frequência do relógio ou tamanho da memória física). 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 2 Tanenbaum Andrew Stuart "Andy" Tanenbaum é o chefe do Departamento de sistemas de computação, na Universidade Vrije, Amsterdã nos Países Baixos. Ele é o autor do MINIX, um sistema operacional baseado no Unix com propósito educacional, e bastante conhecido por seus livros sobre ciência da computação. 03 Aproveitando a abordagem anterior em que falamos sobre os programadores, vamos também entender outro conceito, conhecido como níveis na arquitetura de computadores (programação de baixo e alto nível). A ideia que está por trás deste conceito é que existem muitos níveis por meio dos quais o computador pode ser “visualizado”. Para tornar mais fácil o entendimento do conceito de nível, usaremos o seguinte exemplo: imagine uma sequência numérica em ordem crescente, começando de 0 até 5. Utilizando esse exemplo para fazer uma analogia com os níveis na Arquitetura de Computadores, podemos dizer que o nível “mais alto” seria o número “5”, local onde são executados os programas (softwares). Continuando com o exemplo da sequência numérica, podemos dizer que “0” seria o nível “mais baixo”, é nível da programação em linguagem de máquina (assembly), ou o funcionamento e programação dos registradores (componente do processador). 04 No intuito de reforçar o conceito de níveis na arquitetura de computadores, vamos utilizar como exemplo um carro de Fórmula 1. Vamos supor que você tenha a oportunidade de pilotar um carro de Fórmula 1. Ao entrar e sentar no “cockpit” você observa o volante e os vários instrumentos disponíveis no painel. Logo depois você sai para pista de corrida e sente a velocidade do carro. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 3 Nesse estágio, em que você observa o painel e instrumentos, seria comparado com o nível mais alto na arquitetura de computadores, pois durante o tempo em que você “curtiu a velocidade” e todos os recursos disponíveis, provavelmente não ficou preocupado como o funcionamento do motor e dos outros componentes, uma vez que esta é uma preocupação dos mecânicos e engenheiros. O nível do “motor e componentes” é comparado com o nível mais baixo nos “níveis de arquitetura de computadores”. Em suma, a linguagem de baixo nível (assembly) ou linguagem de máquina é usada pelos engenheiros de hardware para criar instruções que permitam o melhor aproveitamento dos recursos de hardware (processador, memória e etc.). 05 A linguagem de alto nível está relacionada aos aplicativos, softwares e utilitários que não se preocupam com os recursosde hardware existente em um computador. Seguindo a comparação com o carro de Fórmula 1, seria o nosso nível, em que estamos preocupados apenas em utilizar o carro de Fórmula 1 e não nos preocupamos com o motor e outros dispositivos. Vale destacar que este conceito não está relacionado a uma linguagem ser “melhor” ou “superior” pelo fato de ser de alto nível e o outro ser ruim por ser de baixo nível. Observe a figura abaixo para visualizar que, no nível “mais alto”, estão os aplicativos e utilitários e no nível “mais baixo” está a linguagem de máquina, microprogramação e os dispositivos físicos. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 4 06 Para compreender melhor e profundar seus conhecimentos sobre os níveis de máquina, assista ao vídeo a seguir. https://www.youtube.com/watch?v=xFzwnXyt09Q 07 Quando olhamos para um computador, o que nos parece é que é uma máquina formada por um conjunto de partes eletromecânicas e eletrônicas, que possuem a capacidade de armazenar, coletar, fornecer informações e manipular dados, tudo isso de forma automatizada. Também conseguimos visualizar o gabinete do computador e seus periféricos, isso é o que chamamos de hardware, que é uma palavra em inglês para nomear tudo aquilo que compõe fisicamente uma máquina (computador). Quando fazemos uma pesquisa na internet sobre "arquitetura de computadores", descobrimos que esta expressão foi pela primeira vez utilizada pelos pesquisadores da IBM, Lyle R. Johnson, Muhammad Usman Khan e Frederick P. Brooks, Jr. Estes pesquisadores, em 1959, trabalhavam no departamento de organização de máquinas da IBM. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 5 O pesquisador Johnson teve a iniciativa de fazer um relatório de pesquisa sobre o supercomputador, conhecido por Strech, que foi desenvolvido pela IBM para atender a um pedido do laboratório Nacional de Los Alamos (Los Alamos Scientific Laboratory). Johnson, durante a confecção do relatório da pesquisa, chegou ao nível de detalhar formatos, tipos de instruções, parâmetros de hardware e as melhorias de velocidade de processamento. Ele então chegou à conclusão que havia detalhado a arquitetura do sistema. Logo depois, outro pesquisador do Strech, chamado Brooks, ao iniciar o segundo capítulo do livro chamado “Planning a Computer System: Project Stretch”, no ano de 1962, definiu, mesmo com limitações tecnológicas e econômicas: "Arquitetura de computadores é a arte de determinar as necessidades do usuário de uma determinada estrutura”. Brooks queria dizer que as empresas, ao desenvolverem seus computadores, precisam estar atentas às necessidades dos usuários. Não basta criar um computador com “aparência bonita” é necessário que tenha componentes com qualidade e que sejam eficientes. Brooks veio a desempenhar um papel no desenvolvimento do IBM System/360 que foi uma linha de computadores cuja "arquitetura" ganhou uma nova expressão, considerando sobretudo "o que o usuário precisa saber". IBM É a sigla de International Business Machines, que significa Máquinas de Negócio Internacionais, e é uma empresa americana que trabalha com produtos voltados para a área de informática, como computadores, hardwares e softwares. A IBM é uma das maiores empresas da área de TI (Tecnologia da Informação) no mundo, e foi fundada em 1888. Strech O IBM 7030, também conhecido por Strech, foi o primeiro supercomputador lançado na segunda geração, desenvolvido pela IBM. Seu tamanho era bem reduzido comparado com máquinas como o ENIAC, podendo ocupar somente uma sala comum. Ele era utilizado por grandes companhias, custando em torno de 13 milhões de dólares na época. 08 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 6 Outra maneira interessante para o entendimento do que seja arquitetura e organização é fazer uma separação dos conceitos. Essa divisão significa entender o que vem a ser o conceito de arquitetura e em seguida o que é organização. Ao falarmos de arquitetura de um computador torna-se importante entender que estamos fazendo referência à aplicação teórica do que foi desenhado pelo fabricante do computador. Seria algo semelhante a um engenheiro que faz um desenho de um avião e especifica na teoria como será seu funcionamento. Similarmente, os fabricantes de computadores fazem um projeto, planejam como será o “comportamento” da máquina e especificam como determinada instrução (linha de código) será executada. Um usuário mais avançado, como por exemplo, um programador de software, estará atento ao desempenho do computador, pois isso irá impactar diretamente na execução do programa que ele está desenvolvendo. 09 Vamos agora falar da organização. Podemos dizer que é a estrutura e organização do hardware, ou seja, faz referência a como é o funcionamento interno da máquina (computador), as unidades operacionais e suas conexões que implementam as especificações de sua arquitetura, ou seja, como serão as características da arquitetura implementada. Ao falarmos em organização estamos fazendo referência à decisão e definição de como será implementada uma instrução (linha de código) por uma unidade específica de multiplicação. Podemos usar como exemplo a chamada “família” de processadores Intel x86. Esses processadores compartilham a mesma arquitetura básica ou o mesmo “comportamento” básico. Entretanto, a organização é diferente entre uma versão e outra. Sendo assim, um processador intel x86 core 2 duo tem a mesma arquitetura básica que o Intel core i7, mas em matéria de execução e performance são diferentes. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 7 A tecnologia está sempre em evolução, mas essa evolução é sempre um aperfeiçoamento do que já estava sendo utilizado. 10 2 - HISTÓRIA DA EVOLUÇÃO DOS COMPUTADORES Um pouco de história da evolução dos computadores ao olharmos para o passado possamos entender o presente e o que ainda estará por vir. Caro estudante, a compreensão do processo evolutivo dos computadores e por consequência da tecnologia no decorrer dos anos, mostra o quanto as máquinas contribuíram com as mudanças na história das civilizações. O ábaco, considerado a primeira calculadora conhecida, é um instrumento que foi e é ainda utilizado para cálculo. Alguns historiadores falam que o ábaco foi inventado, há mais de 5.000 anos, na Mesopotâmia, e depois os romanos e chineses foram os responsáveis pelo seu aperfeiçoamento. Com este instrumento é possível efetuar operações matemáticas básicas e principalmente os chineses o utilizam até hoje. 11 O francês Blaise Pascal, que viveu no século XVII, foi o responsável pela construção da primeira calculadora mecânica capaz de efetuar somas e subtrações. Entretanto, há historiadores que contestam quem foi o responsável pela construção da primeira máquina de calcular mecânica. Durante vários anos nada era sabido sobre uma máquina criada por Wilhelm Schickard, que viveu entre o século XVI e XVII, a referida máquina subtraía, multiplicava e dividia. Ela foi perdida durante a Guerra dos Trinta Anos. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 8 12 No século XIX, aproximadamente no ano de 1801, o inventor Joseph Marie Jacquard criou o que veio a serconhecido como o tear programável mecânico que era dotado de uma leitora de cartões perfurados, os quais representavam certos modelos usados nos desenhos do tecido. Em virtude do sucesso desse evento e por funcionar de maneira eficiente o tear veio causar desemprego em virtude da automação. Tear programável de Joseph Marie Jacquard 13 Charles Babbage, que viveu no século XIX, ano de 1822, criou o que veio a ser chamado de computador analítico. Essa máquina dispunha de um dispositivo de entrada (semelhante ao tear de Jacquard) para a leitura de cartões perfurados com determinados dados e instruções. Estes dados seriam números e as instruções seria o que deveria ser feito com estes dados. O computador analítico dispunha de um 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 9 dispositivo de memória para guardar os dados (números). Esta “memória” ganhou o nome de armazém. Este “armazém” utilizava um banco com 1000 registradores com capacidade de armazenar um número de 50 dígitos. O computador analítico Também havia um dispositivo para imprimir os resultados obtidos. Babbage teve a notável ajuda da filha de Lord Byron, a matemática Ada Augusta Byron. Ada, que também era condessa, foi a responsável pelo desenvolvimento de uma série de instruções e por isso é considerada a primeira programadora do mundo. Charles Babbage é chamado de o “precursor do computador” e a condessa Ada é considerada a precursora do desenvolvimento de software. 14 Herman Hollerith (1860-1929) também se inspirou nos cartões de Jacquard para criar uma máquina para acumular e classificar informações – a tabuladora de censo. Tabuladora de censo Em 1941, Konrad Zuse (Alemanha) criou o primeiro computador digital, automático, programável, de propósito geral, completamente funcional (eletromecânico). 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 10 0 15 Com a participação de Alan Turing, matemático e cientista da computação britânico, foi desenvolvido na Inglaterra no período de 1939 a 1943 (2ª guerra mundial) o Colossus criado com a intenção de quebrar o código da máquina de criptografia alemã conhecida com Enigma. Colossus Enigma 16 Em 1944 na Universidade de Harvard – EUA, o engenheiro Howard Aiken foi um pioneiro da computação, sendo o principal responsável pelo desenvolvimento do computador conhecido como Harvard Mark I, patrocinado pela IBM. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 11 Harvard Mark I 17 Acompanhe, na linha do tempo, outros acontecimentos importantes sobre a evolução dos computadores: No dia 5 de outubro de 1991 Linus Torvalds anunciou a primeira versão "oficial" do núcleo (kernel) do que veio a ser chamado de Linux, versão 0.02. Depois o kernel Linux foi utilizado no projeto capitaneado por Richard Stallman e passou a chamar GNU/Linux, junção do núcleo do sistema operacional (Kernel Linux) com a interface gráfica do projeto GNU (GNOME). GNOME (acrônimo para GNU Network Object Model Environment) é um projeto de software livre abrangendo o Ambiente de Trabalho GNOME, para os usuários, e a Plataforma de Desenvolvimento GNOME, para os desenvolvedores. O projeto dá ênfase especial a usabilidade, acessibilidade e internacionalização. 1946 Em 1946 os cientistas norte-americanos Jonh Eckert e John Mauchly, ambos da Electronic Control Company, criaram o ENIAC (Electrical Numerical Integrator and Calculator). O ENIAC é considerado o primeiro computador digital eletrônico de grande escala. Uma das destinações deste computador foi para cálculos de trajetórias durante a Segunda Guerra Mundial. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 12 1949 Em 1949 John Von Neumann participa da criação do computador EDSAC (Eletronic Delay Storage Automatic Calculator), primeiro a utilizar fita magnética. Foi também, um dos primeiros computadores fabricados na Inglaterra. 1956 A IBM inova no mercado em 1956 com a criação do IBM 305 RAMAC (Random Access Method of Accounting and Control ou método de acesso aleatório para contabilidade e controle), sendo o primeiro a utilizar disco rígido magnético. 1964 Em 1964, a IBM (International Business Machines empresa americana) lançou o IBM System/360 (S/360) que se constitui numa família de mainframes, que foi a primeira família de computadores a fazer uma distinção clara entre a arquitetura e a implementação, permitindo que a IBM lançasse um conjunto de projetos compatíveis em várias faixas de preço. 1972 Em 1972 é lançado pela Intel o microprocessador 8008, considerado o primeiro microprocessador de 8 bits. 1976 No ano de 1976 é lançado o Apple I, computador pessoal simples, desenhado por Steve Wozniak para uso próprio. Steve Jobs teve a ideia de comercializar este computador. 1977 Em 1977 é lançado o Apple II. Este equipamento tinha processador MOS Technology 6502, clock de 1 MHz, 4kb de memória RAM. 1984 Em 1984 surge o Macintosh ou MAC, que é considerado o primeiro computador pessoal a popularizar a interface gráfica GUI (Graphical User Interface). 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 13 1985 Em 1985, Bill Gates, cria o sistema operacional windows 1.0, sendo uma interface do DOS. 18 Alguns estudiosos da área costumam classificar os computadores (máquinas) por geração. Esta classificação especifica determinadas características das máquinas naquele período (anos), tudo relacionado à história da evolução dos computadores. Vejamos: 1ª geração As máquinas que são chamadas de Primeira Geração, período de 1930 a 1958, tinham por base a utilização de relés e válvulas eletrônicas para a realização de cálculos automaticamente, eram os computadores de primeira geração. 2ª geração Os computadores de Segunda Geração, período de 1955 a 1965, tiveram com mola propulsora a invenção do transistor no ano de 1948, sendo assim, o mundo dos computadores foi tomado por uma onda de novos projetos que deram origem, na década de 1960 a empresas que em nossos dias são reconhecidas mundialmente. Exemplo: IBM. 3ª geração Computadores da chamada Terceira Geração, período de 1965 a 1980, têm por característica a substituição dos transistores pela tecnologia dos circuitos integrados (transistores / componentes eletrônicos miniaturizados e montados numa única pastilha de silício = chip). No ano de 1961 os circuitos integrados tiveram sua inserção no mercado por meio da empresa americana “Fairchild Semicondutor” e também pela empresa americana “Texas Instruments”, ambas estavam localizadas no famoso e conhecido “Vale do Silício” que está situado na região de Palo Alto e Stanford, no estado da Califórnia, nos Estados Unidos. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 14 4ª geração Computadores chamados da Quarta Geração, período de 1980 a 1984, caracterizam-se pelo que foi chamado de LSI (Large Scale of Integration), que foi a integração em larga de escala, chegando a combinar até 65 mil componentes em apenas um chip (pastilha de silício). 5ª geração A chamada Quinta Geração, período de 1984 a 1990, tem como característica o uso de “Integrated Circuit Very LargeScale Integration” (ICVLSI), em uma tradução simples seria "Circuitos Integrados em Escala Maior de Integração". Os famosos chips começam a ter seu tamanho diminuído e tornando possível a criação de computadores cada vez menores (compactos). 6ª geração Os computadores da chamada Sexta Geração, a partir de 1990, são os chamados computadores da “Era da computação quântica”. Já existem protótipos mais ainda não é viável economicamente falando. O chamado CQ (Computador Quântico) utiliza as propriedades quânticas da matéria. De uma forma mais simples, podemos dizer que a computação quântica é a aplicação das teorias e propriedades da mecânica quântica ao computador. Em teoria, os computadores quânticos são muito mais rápidos do que os Desktops (PCs – Computador Pessoal ) atuais, inclusive há limitadores na física quântica. Um CQ pode ser formado por fótons, nêutrons, prótons, elétrons e pósitrons. Em suma, em virtude de poder ser formado por partículas tão pequenas, é também possível imaginar que os processadores dos CQ, poderão ter bem pequenos. 19 Para distrair um pouco e aproveitar para recordar como ocorreu a história da evolução da computação, assista aos dois vídeos a seguir. Eles tratam da importância dos computadores em nossa sociedade. Vamos lá? Evolução da Informática Dos primeiros computadores à internet https://www.youtube.com/watch?v=SLsqeUPW-fs Historia do computador em minutos https://www.youtube.com/watch?v=F3qWg1JBPZg 20 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 15 3 - OS COMPONENTES DO COMPUTADOR Muito bem! Vamos agora começar a fazer uma descrição básica dos componentes de um computador. Podemos dizer de maneira simples que um computador é constituído por 3 elementos básicos que são: microprocessador (CPU ou UCP), memória e dispositivos de entrada e saída (E/S). Quando falamos em memória é necessário haver a divisão em dois grupos, as memórias voláteis e as não voláteis ou também chamadas de armazenamento permanente. As memórias voláteis, ou memória RAM (Random Access Memory), necessitam de energia elétrica para manter as informações armazenadas. Quando desligamos o computador, as informações importantes são armazenadas nos dispositivos de memória não voláteis (como o disco rígido ou HD - Hard Drive). Os dispositivos de memória volátil são mais caros e de menor capacidade, porém são muito mais rápidos, tornando possível ao computador realizar o processamento de forma mais eficiente. 21 O computador é uma máquina poderosa de armazenamento de informações. Todo programa, pagina a qual se está navegando na internet ou algum arquivo que foi aberto, ficará registrado de alguma maneira, em um local do computador. Assim como em nós, usuários, a memória é uma das funções do sistema mais desenvolvida. O que você provavelmente ainda não sabe é que a RAM é apenas um componente de uma série de outros que também são responsáveis por armazenar informações digitais sem perdê-las. Alguns desses componentes você irá observar que são muito utilizados no cotidiano da informática, até por usuários menos experientes. Alguns nomes são: memória cache, ROM, HD, BIOS. Cada uma possui um papel específico e um momento certo para ser utilizada. Para entender um pouco melhor como é o funcionamento do seu PC, valerá a pena conhecer como é feito o caminho percorrido pelos dados e em quais memórias (volátil ou não) eles poderão ser armazenados no intuito de facilitar o trabalho do processador. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 16 Você imagina como é intensa o troca e fluxo de informações no processador e memória? Pois é! O fluxo é realmente grande é muito intenso, mesmo quando você não está utilizando com tanta intensidade. Muitos dados “passam” pelo processador, que necessita rapidamente ficar “livre” deles para poder receber outros dados e não ficar sobrecarregado. A CPU dispõe de diferentes memórias, sempre trabalhando para trafegar os dados da maneira mais rápida possível, em um processo que ocorre em ciclos e que pode ser resumido da seguinte maneira: 22 Fazendo uma explicação básica sobre a UCP ou CPU, chamada de Unidade Central de Processamento ou simplesmente processador, podemos dizer que: A CPU é a responsável em tornar possível a utilização (execução) dos programas que atenderão as tarefas que o usuário necessita. Por meio de vários cálculos e consultas a dados, caberá à CPU tornar possível a utilização, por exemplo, do navegar Internet Explorer, Firefox, Chrome ou etc. Contudo, caso você deseje abrir novamente o mesmo programa? O que você notará? Será que é mais rápido do que foi na primeira vez? Sim, será mais rápido, sabe por quê? Isto ocorre em virtude de toda a informação está distribuída em “memórias” espalhadas pelo hardware, sendo que cada uma possui características e especificidades diferentes. Uma dessas “memórias” é o CACHE. Ele é um tipo de memória importante no processador, cabe ao CACHE, em virtude de estar fisicamente próxima ao processador, ser mais rápido, guardar as informações temporárias que precisam ser processadas de maneira mais eficiente. Apesar da eficiência, o cache tem pequena capacidade de armazenamento, não excedendo KBs ou MBs. Atualmente a memória cache de um modelo básico de notebook é de aproximadamente 3Mb. Em virtude disso, sua principal função é guardar os resultados das operações do processador, que são fornecidos à medida do seu funcionamento. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 17 23 O cache é dividido em níveis, de acordo com sua capacidade e proximidade com a CPU. Os dados do nível 1 (cache L1) são menores, porém de fácil acesso e até mesmo atingindo o dobro da velocidade da memória principal (MP). No nível 2 (cache L2) não há tanta rapidez, mas a transmissão ainda não é comprometida. As demais camadas seguem o mesmo princípio. Todas elas estão em uso constante, mas nem sempre se encarregam de todo o armazenamento. Além de tudo isso, não é possível aumentar o tamanho da memória cache sem a substituição do processador. A memória RAM, também chamada de memória de acesso aleatório, torna possível que possamos acessar os dados de forma não sequencial, além de ser relativamente rápida, cabe a ela guardar algumas informações do sistema operacional, de softwares em uso e os processos em atividade, uma quantidade de dados muito maior do que o cache poderia armazenar. Quando você está jogando, por exemplo, cabe a RAM ser a responsável por acessar as texturas, animações e outros dados contidos para que o game rode (funcione) sem problemas. A memória RAM e a memória CACHE necessitam de energia (elétrica) para manterem o armazenamento, sendo assim, é possível dizer que seu “ponto negativo” é ser volátil, pois quando o computador é desligado as informações armazenadas são perdidas. Mesmo seu computador tendo uma capacidade razoável de memória RAM, isto não será suficiente se você utilizar seu computador para determinada atividade que exija muito processamento. Dependendo da situação, para a máquina não travar, ela buscará outras alternativas. Os dados que devem permanecer no sistema de qualquer maneira precisam de uma memória que não seja volátil, mas que consiga suportar um alto fluxo de informações. É aí que entra outra parte vital e importante do computador, o popular HD (disco rígido). 24 Armazenar memórias temporárias acaba sendo um trabalho para o HD em último caso, mesmo não sendo essaa sua principal função. Em formato de memória virtual (junção da MP e espaço em disco), ele 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 18 executa e registra os dados de forma mecânica, diferente do método eletrônico das demais (cache e RAM), tornando esse processo mais lento. O HD é um “tipo de memória” em que estão guardados os arquivos que não são perdidos a cada boot (inicialização), como músicas e fotos. Eles são acessados com frequência pelo usuário, mas não pedem uma velocidade de leitura tão absurda como os processos do sistema. Segundo o Terry’s Computer Tips (site sobre TI – Tecnologia da Informação – página na língua Inglesa), para efeito de comparação, acessar um dado a partir do disco rígido leva cerca de 0,013 segundos, enquanto o mesmo dado a partir da RAM chega em 0,000.000.01 segundos. Para compensar, o HD possui a maior capacidade entre as memórias citadas anteriormente. Então fique alerta ao perceber que seu computador está utilizando o HD (disco rígido) para armazenar memória (swaping ou paginação). Isto é um indicativo que seu PC já está saturado de arquivos, fazendo com que a máquina apresente lentidão e travamentos com certa regularidade. 25 4 - DISPOSITIVOS DE ENTRADA E DE SAÍDA Agora iremos falar dos chamados dispositivos de entrada e saída que são os responsáveis por tornar possível a interação com o usuário ou com outras máquinas, por exemplo: teclado, mouse, monitor, modem, impressora, webcam, dispositivos USB etc. Os dispositivos de entrada e saída (E/S) ou input/output (I /O) são também chamados de periféricos. Eles tornam possível uma melhor interação do processador com o homem, possibilitando a entrada e saída ou apenas a saída de dados. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 19 Há dispositivos que funcionam tanto para entrada como para saída de dados, por exemplo, o modem e o pendrive. Outro exemplo de dispositivo que funciona tanto para entrada como para saída de dados (dispositivo híbrido) é placa de rede do computador. A comunicação dos dispositivos de E/S é estabelecido por meio de uma via de comunicação, conhecida como: barramento. 26 Você já deve estar acostumado ao uso destes dispositivos, mas com o intuito de padronização do conceito iremos estudar que os principais dispositivos de entrada e saída de informações. Os dispositivos mais conhecidos de entrada são: teclado, mouse, drive de CD / DVD-ROM, pen drive, scanner, microfone, joystick, câmera filmadora, câmera digital, tela sensível ao toque, mesa gráfica, caneta ótica e outros. Os principais dispositivos de saída de informações são: monitor de vídeo, drive de CD-ROM, caixa de som, impressora, sensores movimento, temperatura etc. e óculos (para realidade virtual). No que tange os principais dispositivos que possuem a característica de ser tanto de entrada como de saída de informações, podemos exemplificar como: modem, drive de disquete, gravador de CD / DVD, placa de rede e disco rígido. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 20 Organização Funcional de um Computador 27 Dando continuidade ao nosso estudo, vamos fazer conhecer alguns componentes de um computador que geralmente não são muito comentados. Estes componentes são: gabinete, fonte, placa-mãe, BIOS, clock, barramento, placa de extensão, chipset, MOS. O chamado gabinete e o receptáculo, que contêm na sua parte interna a fonte, placa mãe, dispositivos de armazenamento, placas de expansão, memória etc. Existem vários modelos de desenho e tamanhos diferentes. Há a exigência de terem o tamanho adequado para serem compatíveis com determinados tipos de fonte e com as placas mãe. Atualmente a maioria das “fontes” são bivolts (110 ou 220 volts) e os modelos mais conhecidos são AT e ATX. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 21 28 A placa-mãe (motherboard) tem este nome por ser um componente físico (hardware) muito importante em um computador. A placa-mãe é quem coordena toda a comunicação entre os seus componentes (filhos). É na placa-mãe que o processador, memória, placa de rede, chipset, slots e etc. estão fisicamente conectados. Também é na placa-mãe que fica o barramento onde trafega os dados entre a CPU e os periféricos. Ao adquirirmos uma placa-mãe precisamos estar atentos a qual arquitetura ela foi desenvolvida para também sabermos quais e a compatibilidade dos componentes (Chipset, BIOS, Barramentos, Slots) adquiridos. Na placa-mãe há um cristal piezoelétrico (ou um circuito integrado) que é o responsável por gerar os sinais de sincronismo e determinar a velocidade de processamento. O cristal, conhecido como CLOCK, fornece um pulso de alta precisão cuja frequência irá depender do uso do processador. Quanto mais rápido o clock, mais instruções uma CPU pode executar por segundo. A velocidade de clock e expressada em megahertz (MHz), 1MHz é igual a 1 milhão de ciclos por segundo. O barramento também está localizado na placa-mãe. Cabe ao barramento ser o “caminho” por onde trafega toda comunicação entre os componentes, tornando possível a conexão e transporte dos dados entre os componentes que necessitam desta comunicação. Exemplo de componentes da placa-mãe: CPU, memória, placas de expansão, dispositivos de E/S e etc. O processador também estabelece comunicação com a memória principal por meio do barramento. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 22 29 Cabe às placas de extensão tornar possível o acréscimo de novos recursos ao computador. Elas são conectadas à placa-mãe por meio dosslots (termo em inglês para designar ranhura, fenda, conector, encaixe ou espaço.). Exemplos: placas de som, placa de vídeo, placa de rede etc. O chip denominado CMOS é composto por um relógio eletrônico e memória 64 bytes de memória RAM, e nesta memória que estão armazenadas as informações relativas à configuração do hardware do computador. O BIOS (Basic Input/Output System) é um pequeno programa armazenado em um chip de memória da placa de UCP. Ele é responsável por “despertar” o computador, sendo assim, ao ligar o computador o BIOS entra em ação, faz uma contagem e verifica a memória RAM, inicializa dispositivos, e principalmente, dá início ao processo de boot. Boot é a operação de passagem do sistema operacional do disco rígido (HD) onde fica armazenado para a memória do computador. Cabe ao chamado “chipset” ser o responsável pela gerência do funcionamento da placa-mãe. Ele faz o controle de memória cache, da memória RAM, do buffer de dados, da interface com a CPU etc.). É responsável, também, pelas informações necessárias ao reconhecimento de hardware (armazenadas na sua memória ROM). 30 Vamos aproveitar e assistir a este vídeo para reforçar o entendimento acerca dos dispositivos de entrada e saída (I/O). A interface homem-computador https://www.youtube.com/watch?v=UZ14m_yVmO4 31 RESUMO Durante o estudo deste módulo tivemos a oportunidade de entender que a arquitetura de computadores trata do funcionamento e também do comportamento de um sistema computacional (computador). Fica evidente a importância deste estudo para sua formação técnica. Vimos que atualmente as empresas, ao desenharem o projeto da Arquitetura de seus computadores, preocupam- se em entenderas necessidades do seu público alvo. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 23 É interessante destacar que, ao estudarmos a história da evolução dos computadores, estaremos entendendo a importância dos primeiros estudiosos do assunto. Graças às pesquisas destes obstinados pesquisadores é que podemos usufruir de tamanha evolução e também podemos traçar uma perspectiva do que o futuro nos reserva. Vimos também que um sistema computacional é agrupado em 3 subsistemas básicos, conhecidos como unidades operacionais, que são a CPU, memória e periféricos. Vimos que um sistema computacional é um conjunto de circuitos eletrônicos conectados, constituído por processadores, registradores, memórias, dispositivos de entrada e saída. Cada componente tem sua importância e função na arquitetura de computadores e cabe a esses dispositivos a manipulação dos dados digitalmente, proporcionando de maneira confiável a transmissão e representação dos dados. UNIDADE 1 – FUNDAMENTOS DA ARQUITETURA E REPRESENTAÇÃO DE DADOS NO SISTEMA OPERACIONAL MÓDULO 2 – NÍVEIS E MÁQUINAS VIRTUAIS 01 1 - REPRESENTAÇÃO DAS INFORMAÇÕES: O BIT, O BYTE E A PALAVRA Durante o estudo deste módulo, teremos a oportunidade de entender como é feita a representação das informações, o que é bit, o byte e a palavra, aprenderemos a identificar e a entender o que são os níveis de máquina e falaremos também sobre máquinas virtuais e sua classificação. Cabe uma ressalva importante ao iniciarmos este módulo. Você deve estar lembrado de que no início do nosso estudo falamos sobre o entendimento do conceito de níveis na arquitetura de computadores (programação de baixo e alto nível). A ideia que está por trás deste conceito é que existem muitos níveis nos quais o computador pode ser “visualizado”. Vamos relembrar o seguinte exemplo: imagine uma sequência numérica em ordem crescente, começando de 0 até 5. Utilizando este exemplo para fazer uma analogia com os NÍVEIS na Arquitetura de Computadores, podemos dizer que o nível “mais alto” seria o número “5”, local onde são executados os programas (softwares). Continuando com o exemplo, a sequência numérica, podemos dizer que “0” seria o nível “mais baixo”, é nível da programação em linguagem de máquina (assembly), ou o funcionamento e programação dos registradores (componente do processador). 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 24 02 No intuito de reforçar o conceito de “níveis na arquitetura de computadores” vamos utilizar como exemplo um carro de Fórmula 1. Vamos supor que você tenha a oportunidade de pilotar um carro de Fórmula 1. Ao entrar e sentar no “cockpit” você observa o volante e os vários instrumentos disponíveis no painel. Logo depois você sai para pista de corrida e sente a velocidade do carro. Neste nível em que você utiliza o carro e observa o painel e instrumentos, seria comparado com o nível mais alto na arquitetura de computadores, pois durante o tempo em que você “curtiu a velocidade” e todos os recursos disponíveis, provavelmente não ficou preocupado com o funcionamento do motor e dos outros componentes, que é uma preocupação dos mecânicos e engenheiros. O nível mais alto seria, então, o nosso nível, em que estamos preocupados apenas em utilizar o carro de Fórmula 1 e não nos preocupamos com o motor e outros dispositivos. O nível do “motor e componentes” é comparado com o nível mais baixo nos “níveis de arquitetura de computadores”. Em suma, a linguagem de baixo nível (assembly) ou linguagem de máquina é aquela utilizada pelos engenheiros de hardware para criar instruções que permitam o melhor aproveitamento dos recursos de hardware (processador, memória e etc.). Os engenheiros de hardware podem ser comparados aos engenheiros e mecânicos de um carro de Fórmula 1. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 25 Quando falamos em programação de alto nível (aplicativos) estamos falando dos softwares desenvolvidos por programadores. Esse nível está relacionado aos aplicativos, softwares e utilitários que não se preocupam com os recursos de hardware existentes em um computador. 03 Vale ressaltar que este conceito de nível não está relacionado a uma linguagem ser melhor ou superior pelo fato de ser de alto nível e o outro ser ruim por ser de baixo nível. Observe a figura abaixo que no nível “mais alto” estão os aplicativos e utilitários e no nível “mais baixo” está a linguagem de máquina, microprogramação e os dispositivos físicos. O entendimento do conceito de “níveis” na arquitetura de computadores ajudará na compreensão que no “nível mais baixo” os componentes trocam informações utilizando bits e bytes. Quando digitamos “www.google.com” no nosso navegador (browser), que está no nível mais alto, transforma esta informação em “bits e bytes”, passa por vários níveis até chegar ao nível mais baixo e ser transformado em sinais elétricos e enviado via placa de rede e assim por diante. Toda informação que será introduzida em um computador (sejam dados que serão processados ou instruções de um programa) necessita ser entendida pela máquina, para que possa interpretá-la e processá-la. Quando você lê esta aula, as informações apresentadas em forma de caracteres são entendidas pelo leitor porque ele conhece o formato e o significado dos símbolos que representam os caracteres alfabéticos, os numéricos (algarismos) e os sinais de pontuação ou matemáticos (+, -, X, /, >, <, = etc.). Para que seu computador 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 seria invedável economicamente e certamente seria difícil de ser construída para fins comerciais. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 26 Saiba + O computador ou um sistema computacional, sendo formado por circuitos eletrônicos interligados, troca e armazena informações (dados) internamente sob a forma eletrônica (sinais elétricos). Esta troca de informações é feita por alteração no valor de voltagem ou de corrente que está passando no barramento (linhas de comunicação que tornam possível a interligação entre os dispositivos de um sistema de computação). Cabe fazer uma ressalva quanto ao HD (disco rígido), pois ele armazena informações sobre a forma magnética ou CD/DVD/BlueRay que armazena informações sob forma ótica. 04 Considerando a necessidade de ser mais simples e confiável, optou-se em projetar um circuito capaz de gerar e manipular o menor número possível de valores distintos. Então surgiu o que é chamado de “máquina binária”, isto é, capaz de entender apenas dois valores diferentes: 0 e 1. Com base nesta base binária fica muito mais simples o emprego da lógica booleana (SIM/NÃO, ABERTO/FECHADO, ACIMA/ABAIXO, LIGADO/DESLIGADO). Dessa maneira, os computadores digitais são totalmente binários. Toda informação introduzida em um computador é convertida para a forma binária, por meio do emprego de um código qualquer de armazenamento, como será visto mais adiante. 05 A menor unidade de informação armazenável em um computador ou sistema computacional é o algarismo binário ou dígito binário, conhecido como bit (inglês= binary digit). O bit pode ter, então, somente dois valores: 0 ou 1. Isto quer dizer,que ele é representado numericamente somente pelo numeral 1 ou numeral 0. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 27 Consequentemente, em virtude de ter possibilidades tão limitadas, o bit pouco pode representar isoladamente; em virtude disso, as informações manipuladas por um computador são codificadas em grupos ordenados de bits, de modo a terem um significado útil. O menor grupo ordenado de bits representando uma informação útil e compreensível para nós, seres humanos, é o byte (leia-se "baite"). Coube a IBM a primeira definição para “byte”. Segundo a IBM, “byte” é um grupo ordenado de bits, que tem por função facilitar e tornar mais eficiente a manipulação interna (computador). Um byte é definido como um grupo ordenado de 8 bits, tratados de forma individual, como unidade de armazenamento e transferência. Em virtude dos principais códigos de representação de caracteres utilizarem grupos de oito bits por “caractere”, os conceitos de byte ecaractere passam a ser semelhantes e as palavras, praticamente sinônimas. Costumeiramente, no mercado atual, as memórias são construídas com a capacidade de acessar, armazenar e recuperar informações byte a byte. Como vimos anteriormente, os computadores são binários e, por consequência, todas as indicações numéricas referem-se a potências de 2. Para facilitar a representação, adotaram-se letras para corresponder a determinados valores, por exemplo, a letra “K” é a representação de 1.024 unidades (décima potência de 2 ou 210=1024) e a letra “M” (Mega) representa o valor de 1.048.576 unidades (valor igual a 1.024 x 1.024 ou 210 x210=220). 06 Quando falamos que determinada máquina tem capacidade de 64 Kbytes (pronuncia-se "sessenta e quatro k baites") estamos fazendo referência a um valor de 64 x 1.024 = 65.536 bytes, enquanto 2M bytes (pronuncia-se "dois mega baites") corresponde a 2 x 1.024 x 1.024 = 1.048.576 bytes. Com a evolução constante e o aumento vertiginoso da capacidade dos dispositivos de armazenamento dos computadores, criou-se um terceiro elemento para abreviar valores mais elevados: trata-se do giga, que é representado pela letra “G”. Ele representa um valor igual a 1.024 mega ou 1.048.576 K ou 230=210x210x210=1.073.741.824 unidades. Atualmente, já é possível ouvir o termo “terá”, para a representação de um valor igual a 240 ou 1.024 G. Há também o termo “peta” que é representado pela expressão 250 ou 1.024 teras. Enfim, a evolução não para e provavelmente em um futuro próximo, estaremos utilizando outras abreviaturas. Dessa maneira, os valores que são utilizados em computação para indicar capacidade de memória são normalmente compostos de um número (sempre entre 0 e 999) e umas das abreviaturas citadas. Além do bit e do byte, há outro conceito, também importante, a palavra. Ela (palavra) está relacionada com o armazenamento e a transferência de informações entre MP (Memória Principal) e UCP e especialmente relacionado ao processamento de dados pela CPU. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 28 Primeiramente, poderemos dizer que a “palavra” é a forma de chamar um conjunto de bits capaz de representar uma informação. Consequentemente, uma “palavra” está associada ao tipo de interação entre a memória principal (MP) e o processador (CPU). Sendo assim, a CPU 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. Entretanto, alguns fabricantes diferem quanto ao conceito de palavra. Para as empresas IBM e DIGITAL o tamanho dos registradores internos da CPU igual ao da palavra, mas para a empresa Control Data, a palavra tem características mais abrangentes. Palavra (inglês: word) É a unidade natural de informação usada pelos computadores. É uma sequência de bits com tamanho fixo e que é processado em conjunto em uma determinada máquina. O número de bits em uma palavra (tamanho / comprimento da palavra) é uma característica preponderante da arquitetura de um computador. Esta característica ecoa em vários aspectos de sua estrutura, da sua operação e na indicação da unidade de transferência entre a UCP e MP (memória principal). 07 No que se refere à unidade de armazenamento, considera-se mais importante a quantidade de bits que são recuperados em um acesso, em geral de tamanho igual a um byte. Esse valor de bits é pequeno demais para representar um número ou uma instrução de máquina e, então, não pode ser aceitável para o tamanho de uma palavra. Geralmente, são utilizados dois valores diferentes: um relacionado à unidade de armazenamento, o “byte”, e outro para indicar a unidade de transferência e processamento, a “palavra”. A UCP faz o processamento de valores representados por uma quantidade de “bits” igual à da “palavra”, sendo um indicando da capacidade de processamento do sistema. A empresa americana IBM, por exemplo, define a “palavra” para alguns de seus computadores como tendo um valor igual a 32 bits (4 bytes), enquanto a unidade de armazenamento é o byte. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 29 Atualmente, a maioria dos computadores utiliza a “palavra” com 64 bits, inclusive os supercomputadores que já se utilizam deste tamanho de palavra há mais tempo. 08 2 - ARQUIVOS E REGISTROS Agora vamos começar a conceituar o que são arquivos e registros. Para isso é preciso entender que todo processamento em um computador consiste, como já mencionado, na manipulação de dados segundo um conjunto de instruções que são, geralmente, chamados de programas. Para tornar possível individualizar grupos diferentes de informações, os sistemas operacionais (programas que controlam o armazenamento e recuperação dessas informações para entrada, saída ou guarda em memória secundária) estruturam esses grupos de dados sob uma forma denominada arquivo. Um arquivo de informações (ou dados) é um conjunto formado por dados (ou informações) de um mesmo tipo ou para uma mesma aplicação. Por exemplo, podemos ter um arquivo de alunos de uma turma (contendo informações sobre cada aluno individualmente), ou um arquivo contendo as instruções de um programa. Cada arquivo é constituído por itens individuais de informação (cada aluno, no nosso exemplo) chamados registros. Assim, um arquivo de uma turma de 70 alunos possui um total de 70 registros; um arquivo com informações sobre 7 mil empregados de uma organização possui 7 mil registros. Para entendermos melhor o conceito de armazenamento e recuperação de informações sob a forma de arquivos, podemos fazer uma analogia com um sistema semelhante, porém manual. Vamos supor que a empresa XYZ, fabricante de calçados, tenha um total de 500 empregados. Esta empresa precisa manipular diariamente um estoque de material de consumo com cerca de 9212 itens e que, por incrível que possa parecer, ainda não possui um sistema que automatize todo este controle, que não utilize um sistema informatizado. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 30 09 Vamos continuar a utilizar o exemplo da empresa XYZ. Tomaremos como exemplo a gerência de recursos humanos. No RH estão seguintes informações sobre os funcionários: Agora vamos ver como seria a gerência de material. No caso da empresa XYZ o controle dos itens do estoque de material são semelhantes ao do RH, sendo que,há uma ficha para cada item de estoque, contendo as informações pertinentes a cada um e estas fichas são armazenadas em pequenas caixas metálicas, chamadas arquivos portáteis. 10 Muito bem, agora vamos fazer uma analogia entre formulários, pastas, gavetas e etc. No exemplo da empresa XYZ, o armário de aço e a caixa metálica constituem arquivos, com função semelhante aos 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 31 arquivos de dados em uma máquina (computador), sendo que, cada pasta ou ficha constitui um registro, respectivamente, do funcionário ou do material de estoque. A maneira de como é estruturado o armazenamento e recuperação de informações no HD de um computador é projetada conforme o conceito de arquivos e registros. Isso ocorre no HD em virtude do sistema operacional poder guardar informações em grupos para ter maior eficiência na transferência para a MP. 11 3 - REPRESENTAÇÃO DE DADOS: OS CÓDIGOS ASCII, EBCDIC E UNICÓDIGO (UNICODE) Até agora estávamos estudando como o computador utiliza byts, bytes e palavras. Agora vamos entender que há determinados códigos que são responsáveis em fazer a representação de dados. Sabemos que um caractere é a unidade básica de armazenamento na maioria dos sistemas computacionais. O armazenamento de caracteres (letras, números e outros símbolos) é possível por meio de codificação onde, por convenção, certos conjuntos de bits representam determinados caracteres. Há três códigos mais conhecidos para a representação de caracteres, são eles: • ASCII (American Standard Code for Information Interchange), • EBCDIC (Extended Binary Coded Decimal Interchange Code) e • UNICÓDIGO (unicode). Veremos cada um desses tipos de códigos a seguir. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 32 12 O ASCII (American Standard Code for Information Interchange), que em uma tradução para português significa "Código Padrão Americano para o Intercâmbio de Informação", é uma codificação de caracteres de sete bits baseada no alfabeto inglês. Cada sequência de códigos na tabela ASCII corresponde a um caractere, no geral são representados pelos 8 bits (equivalente a um byte), sendo que o oitavo bit (da direita para a esquerda) serve como um bit de paridade. O bit de paridade é utilizado para detecção de algum tipo de erro. Para facilitar o entendimento, vamos supor que houve o envio do bit “10110”, sendo que o primeiro “1” como o bit de paridade, porém o receptor recebe o seguinte código: “00110”, ou seja, o circuito de verificação de paridade percebe que há dois “1”, isto é par, então é detectado o erro. Não segredo algum sendo fácil de entender o bit de paridade. Esta técnica consiste em adicionar, pelo transmissor, um bit de redundância ou também chamado de bit de paridade. Este bit é inserido logo após ou antes da sequência de bits enviados. A regra é a seguinte: a) Será o bit “1” quando for impar o número de vezes que apareceu o “1”, exemplo: 1101101 paridade = 1 . b) Na aparição do bit “1” em quantidade par de vezes será adicionado 0, exemplo: 010101010, paridade = 0. Os códigos ASCII começaram seu desenvolvimento a partir do ano de 1960, e a maioria das codificações de caracteres atuais tem por herança esta base. A codificação faz a definição de 128 caracteres, preenchendo completamente os sete bits disponíveis nas (27=128) sequências possíveis. Dessas codificações, o total de trinta e três não são passíveis de serem imprimidas, como caracteres de controle atualmente não utilizáveis para edição de texto, porém amplamente utilizados em dispositivos de comunicação, que afetam o processamento do texto. Veja a tabela abaixo com exemplo: 13 A codificação conhecida como EBCDIC (Extended Binary Coded Decimal Interchange Code) é uma codificação que utiliza 8 bits de caracteres, que tem descendência direta do código chamado de BCD, que possui 6 bits. Foi criada pela empresa IBM no ano de 1960 e utilizado no computador IBM/360. Como consequência desta descendência, o código EBCDIC pode até ser modificado para 6 bit e dar origem a um código BCD. Esta iniciativa representa uma normalização, pois na década de 1960, o governo americano havia normalizado o ASCII. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 33 No EBCDIC é feita pela primeira vez a utilização de 8 bits (1 byte) para a codificação de um determinado estado, tornado possível a codificação de 256 diferentes estados. Observe a tabela abaixo e veja como seria a representação em ASCII e ABCDIC das letras A e Z: 14 Na codificação chamada de UNICÓDIGO (ou Unicode), são utilizados dois bytes para a representação de mais de 65.000 caracteres ou símbolos. O UNICODE permite fazer o intercâmbio de dados e programas em línguas diferentes. 15 4 - MÁQUINAS VIRTUAIS Vamos agora começar o estudo sobre o que são as chamadas “máquinas virtuais”. Em virtude da constante evolução da TI (Tecnologia da Informação) está proporcionando, cada vez mais surgem opções de plataformas diferentes para computadores. Cada uma destas plataformas apresenta características próprias e peculiaridades de funcionamento que impossibilitam migrar arquivos executáveis (programas) de uma plataforma para outra. Um exemplo seria que determinados softwares funcionam apenas em determinadas plataformas, exemplo: plataforma Microsoft Windows, plataforma GNU/Linux ou na plataforma IOS da Apple. Sendo assim, caso código fonte de um programa, escrito em qualquer linguagem de programação, é necessário compilá-lo para determinada plataforma, pois o código executável deve ser compatível com determinada plataforma. Muito bem, esta necessidade de gerar arquivos executáveis para cada plataforma deu origem à ideia de criar uma ferramenta que tenha a capacidade de separar o desenvolvimento do programa com a sua execução em determinada plataforma ou sistema operacional ou computador. A solução para essa ideia 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 34 é a utilização do que é chamado de “máquina virtual”. Agora o que é uma máquina virtual? Para respondermos o que é uma máquina virtual é necessário o entendimento do que seja uma máquina real. Sabemos que você entende que sua máquina ou mesmo o computador que você utiliza são reais, mas no caso de nosso estudo vamos aprender que conceitualmente há uma diferenciação entre máquina real e virtual. 16 Um computador é uma máquina constituída de dois componentes principais dispostos hierarquicamente conforme expresso na figura abaixo. A partir deste escopo, observando a figura acima, a máquina virtual parte da ideia de acrescentar mais uma camada acima do sistema operacional e da CPU, de tal forma que os programas serão executados independentes da plataforma existente. Sendo assim, ao invés de um código fonte ser compilado em separado para cada plataforma que desejamos trabalhar, agora ele será compilado somente uma vez para a máquina virtual. Caberá a ela tratar a comunicação com as camadas inferiores, fazendo o programa ser executado, possibilitando a portabilidade de programas entre diferentes plataformas. Sistema Operacional A camada superior é o Sistema Operacional. Sistema Operacional é o software responsável pela gerência da memória, por coordenar o acesso aos periféricos e também administra todos os processos que serão executados em uma máquina, sendo a interfaceentre um programa e a CPU. Exemplo de sistemas operacionais: Android, Microsoft Windows, GNU/Linux e IOS da Apple. O sistema operacional, bem como, a UCP, exige que os programas a serem instalados, sigam suas especificações para serem executados. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 35 CPU A camada inferior é o centro da parte física do computador e corresponde à CPU (Unidade Central de Processamento). Como já estudamos anteriormente, cabe a CPU ser a responsável pela realização de todas as operações que um programa necessite executar. Algo importante de ser observado é a característica de sua arquitetura, isto é, a especificação e implementação de um conjunto de instruções que serão suportadas por tal componente. Sendo assim, para que determinado arquivo seja executável em uma determinada UCP, há necessidade de representar o código fonte que o originou através de instruções codificadas para ter o funcionamento correto. A codificação das instruções também faz parte do projeto da arquitetura da CPU e determina o que cada sequência de bits irá representar. 17 Sendo assim, para a implementação de uma máquina virtual é necessária a criação de uma infraestrutura básica, para a simulação de máquina real, independente da plataforma usada. Mas para que esse uso multiplataforma seja atendido, torna-se necessário delimitar cuidadosamente o funcionamento da máquina virtual, evitando e protegendo o hardware de operações perigosas, como por exemplo, acesso a regiões protegidas da memória. Em primeiro lugar é necessário especificar um conjunto de instruções que determinem como os programas serão executados. Esse conjunto de instruções é determinado e codificado da mesma maneira que se faz para uma UCP. Desse conjunto de instruções surgirá a necessidade de implementar compiladores que gerem códigos com essas instruções a partir dos códigos fonte do programa, porém, estes compiladores extrapolam as fronteiras exigidas para uma máquina virtual e estão vinculados às linguagens de programação que usufruirão desta máquina virtual, o que indica que ela não está vinculada a uma ououtra linguagem de programação. Consequentemente, ao compilarmos determinado programa, que tem por destino uma máquina virtual, será obtido um arquivo com a sequência de instruções suportadas pela máquina virtual. Este arquivo é chamado de bytecode. O bytecode, por sua vez, será tratado pela máquina virtual como se fosse um arquivo executável, usando áreas de memória do mesmo modo que ocorre em uma execução. Entretanto, ao invés da execução, a máquina virtual transformará as suas instruções em instruções suportadas pela arquitetura da máquina real. Será nesse momento que a máquina virtual tratará as peculiaridades da plataforma em que está trabalhando e é por isso que existe uma máquina virtual para cada plataforma. 18 A transformação dos bytecodes em instruções reais é feita de modo interpretado, isto é, da mesma maneira que ocorre com linguagens interpretadas. Os bytecodes são lidos em uma sequência e, de forma isolada, associados a uma instrução real. Finalmente, tendo o que pode ser chamado de o 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 36 “verdadeiro arquivo executável”, o programa passa para o SO (Sistema Operacional) em que ocorre o processo normal de uma máquina real. Para facilitar este processo observe a figura abaixo. Nesta figura vemos um programa (software) feito em “.java”, logo depois utilizando um compilador (compiler), que é o programa responsável em traduzir o código fonte de uma linguagem de programação de alto nível (java) para uma linguagem de programação de baixo nível (linguagem que o computador entende). O compilador cria o “.class” que será utilizado pelo JVM (Máquina Virtual Java). O JVM irá criar um ambiente virtual multiplataforma, isto é, poderá funcionar (rodar) em qualquer sistema operacional (Windows, GNU/Linux, MacOs). 19 Atualmente, o conceito de máquina virtual está ganhando novas fronteiras e mercados, com isso, uma alternativa que está sendo muito interessante é sua implementação é em hardware, no formato de microchips, por exemplo, o UltraJAVA. Destaca-se uma nova tendência, o uso de máquina virtual em celulares e em PDAs, tornando possível o reuso de aplicativos de PCs (computadores pessoais – desktops – laptops – notebooks), como ocorre com os jogos feitos em Java, e que estão sendo portados para celulares. Você já deve ter utilizado algum jogo para celular, não é? O jogo “Angry Birds” foi inicialmente feito para os IPhones, mas atualmente foi portado (compilado) para diversas plataformas, podendo ser jogado no Android, por exemplo. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 37 20 5 - VIRTUALIZAÇÃO DE MÁQUINAS Vamos agora falar do que venha a ser virtualização de máquinas. Há softwares de mercado como o VirtualBox da empresa americana Sun Microsystems, o VMWare da empresa também chamada VMware.Inc e outros que possibilitam a criação de uma máquina virtual por meio de um software que emula um ambiente computacional, tornando possível a instalação de um sistema operacional ou programa. A virtualização de máquinas, portanto, é o nome dado ao processo de criação de uma máquina, criada por meio de um software, que executa programas como se fosse um computador real. De maneira sucinta e simples, podemos falar que virtualização de máquina funciona como ter um “computador dentro do outro (computador)”. Parece estranho dizer “computador dentro do outro”, mas o software de virtualização (VMWare, VirtualBox) cria um ambiente de sistema computacional que torna possível instalar “um computador dentro do outro”. O software de virtualização cria todo o ambiente básico de um sistema computacional (memória, processador e dispositivos de entrada e saída) tornando possível a instalação do sistema operacional que você desejar. 21 Para facilitar o entendimento do conceito de máquina virtual, observe a figura abaixo. Note que há uma máquina real (física) que é composta por memória, processador e dispositivos de entrada e saída (sistema computacional) e também pelo sistema operacional. Na máquina real está instalado o software de virtualização (VMWare, VirtualBox). O software de virtualização, tendo por base o sistema computacional da máquina real, criará o ambiente (sistema computacional) que tornará possível a instalação de outro sistema operacional. Veja que na figura há duas “máquinas virtuais” e na base delas está o software de virtualização, que é o responsável em interagir com o sistema operacional 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 38 “hospedeiro” e utilizar o recurso de hardware disponível. Em suma, podemos ver na figura abaixo uma representação do conceito “computador dentro do outro”. Mas como isso pode ser feito? Como funciona? Hoje em dia, criar uma máquina virtual é algo muito simples. Para isso, é necessária apenas a instalação de um programa específico no seu computador, da mesma maneira que você já instalou outro qualquer. Será por meio desse programa (software) que você poderá criar os componentes básicos para o funcionamento de uma máquina real, exemplo: um HD (disco rígido) virtual, memória RAM virtual, placa de rede virtual. Tudo isso tornará possível executar um sistema operacional inteiro a partir dele. 22 A virtualização de máquinas é extremamenteútil nas tarefas do dia a dia, pois torna possível ao usuário executar (rodar) e testar outros sistemas operacionais, tendo acesso a todos os softwares que necessita. Você poderia utilizar um software, por exemplo o VirtualBox, para fazer um test-drive de um novo sistema operacional, sem necessidade de reinstalar seu computador, evitando diversos transtornos. Durante a virtualização de máquina você irá determinar o quanto será alocado de memória RAM, emulando um ambiente de computação física, quais serão as especificações de CPU, memória, disco rígido, rede e outros recursos de hardware. Tudo isso será gerenciado pelosoftware de virtualização, em uma camada chamada “camada de virtualização”, que faz a tradução das solicitações da máquina virtual para o hardware presente na máquina real. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 39 As máquinas virtuais tornam possível a instalação dos mesmos programas que você utiliza em seu computador, esses programas entendem que estão sendo executados diretamente no hardware físico, e não dentro de uma simulação. Peço que observe a figura abaixo para entender como e onde a máquina virtual ou virtualização de máquina intermedia a comunicação com a máquina real. 23 RESUMO Durante o estudo deste módulo, tivemos a oportunidade de entender como é feita a representação das informações. Entendemos que toda informação que é introduzida em um computador (sejam dados ou instruções de um programa) necessita ser entendida pela máquina, para que possa interpretá-la e processá-la. Estudamos que a menor unidade de informação armazenável em um computador ou sistema computacional é o algarismo binário ou dígito binário, conhecido como bit (inglês= binary digit). Entendemos que um byte é definido como um grupo ordenado de 8 bits, tratados de forma individual, como unidade de armazenamento e transferência. Compreendemos que “palavra” está relacionada com o armazenamento e a transferência de informações entre MP (Memória Principal) e UCP e especialmente relacionado ao processamento de dados pela CPU. Vimos a importância do entendimento de “níveis de máquina” em virtude que neste módulo falarmos do nível “mais baixo” que é como é feita a representação dos dados. Também estudamos que virtualização de máquina é o nome dado ao processo de criação de uma máquina, criada por meio de um software, que executa programas como se fosse um computador real. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 40 UNIDADE 1 – FUNDAMENTOS DA ARQUITETURA E REPRESENTAÇÃO DE DADOS NO SISTEMA OPERACIONAL MÓDULO 3 – NOTAÇÃO POSICIONAL 01 1 - SISTEMA DE NUMERAÇÃO DECIMAL, BINÁRIO E HEXADECIMAL. Nesse módulo iremos estudar os Sistemas de Numeração, os conceitos, as bases de numeração, número e numeral. Necessidade de representação em outras bases de numeração. Sistemas Decimal, binário, octal e hexadecimal. Conversão entre bases: da base 10 para uma base qualquer; de uma base qualquer para base 10. Desde que as primeiras civilizações buscando formas de perpetuar conhecimento por meio da escrita, o ser humano vem adotando maneiras e métodos específicos para representar números, possibilitando, com eles, contar objetos e efetuar operações aritméticas (soma, subtração, multiplicação, etc.). 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, nós do mundo ocidental, adotamos um sistema de numeração que possui dez diferentes algarismos - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 - 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 de grupamento. O sistema de dez algarismos, acima mencionado, tem base 10; um outro sistema que possua apenas dois algarismos diferentes (0 e 1) é de base 2, o que possui 16 algarismos diferentes é o de base 16, e assim por diante. 02 Generalizando, num sistema qualquer de numeração posicional, um número N é expresso da seguinte forma: N = (d n-1 dn-2d n-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; 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 41 b indica a base de numeração; n indica o número de dígitos inteiros. O valor do número pod e ser obtido do seguinte somatório: N=d n-1 X b n-1 + d n-2 Xb n-2 +.... + d1Xb1+d0Xb0 Agora vamos utilizar como exemplo o número 3748, estando na base 10, podemos representar da seguinte forma: N = 3748 onde: N 4 (quatro dígitos inteiros). Utilizando a fórmula indicada acima: d n-1 =3 ou d3 =3 / d2 =7 / d1 =4 / d0 =8 ou obtendo seu valor de acordo com a fórmula mostrada acima: N=3X103 + 7X102 + 4X101 + 8X100 = 3000 + 700 + 40 + 8 = 374810 03 O sistema de numeração é uma forma sistêmica (metódica, coerente) de utilização de numerais (conjuntos de um ou mais algarismos) para a representação dos números. Como vimos anteriormente, o sistema numérico mais conhecido é o decimal, chamado de “base 10”. Entretanto, existem outros sistemas numéricos, são eles: - Binário (base 2) - Octal (base 8) - Hexadecimal (base 16) A figura abaixo representa um número na base binária (base 2). 04 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 42 Após esta pequena introdução sobre o que venha a ser a notação posicional e bases numéricas, gostaríamos que você respondesse a seguinte pergunta: Em sua opinião, qual o sistema numérico utilizado nos computadores? Vamos aproveitar que você está indo muito bem e vamos fazer outra pergunta: Por que é utilizado o sistema binário e não o decimal nos computadores, pois diariamente utilizamos o sistema decimal? Caso você pare para pensar um pouco e veja que ao juntarmos os dedos da mão direita e esquerda teremos dez dedos, o que torna mais fácil o ensino das operações básicas da matemática. Todos nós já recorremos às nossas mãos para fazer contas, não é mesmo? 05 2 - SISTEMAS NUMÉRICOS BASE 10 Como falamos anteriormente e com o intuito de reforçar o conceito, quando dizemos Sistema Numérico base 10 é quando utilizamos 10 algarismos (símbolos) para representar qualquer quantidade (0 a 9). Exemplo: 0 1 2 3 4 5 6 7 8 9 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 43 Matematicamente falando, quando usamos a base é 10, entendemos que para cada posição à esquerda, o peso será 10 vezes maior do que a posição à direita. Para entendermos melhor veja este exemplo abaixo: (5248)10 = 5 x 103 + 2 x 102 + 4 x 101 + 8 x 100 Você pode notar que o número 5 é o que está mais à esquerda, na casa decimal milhar, contando a partir do número 8, temos três casas. Com o intuito de facilitar o entendimento colocamos desta forma: 5 x 103 Para os números 2,4 e 8 segue-se o mesmo raciocínio. 06 Base 2 A base do sistema binário é 2 e, consequentemente, qualquer número, quando representado nesse sistema, consiste exclusivamente em dígitos 0 e 1. O termo dígito binário é chamado bit, contração do termo inglês binary digit. Por exemplo, o número binário 11011 possui cinco dígitos, ou algarismos binários. Diz-se que o referido número é constituído de 5 bits. Ao falarmos do Sistema numérico base 2, sistema usado pelos computadores, observamos que este sistema utiliza somente dois algarismos para representar qualquer quantidade. A origem do nome é por ser apenas dois, então se chama binário. São eles: 0 1 Aproveitamos a base 2 para falarmos também do termo bit. Este termo vem das palavras binary digit (01001)2 07 Base 16 Em bases de valor superior a 10, usam-se letras do alfabeto para a representação de algarismos maiores que 9. Uma dessas bases é especialmente importante em computação; trata-se da base 16 ou hexadecimal, por ser de valor múltiplo de 2 (como a base 8). O sistema hexadecimal, também chamado de sistema de base 16 é utilizado nos projetos computacionais (hardware e software), também utilizado por ser mais próximo da base 10, é de fácil conversão para sistema binário. Como próprio nome diz, ele é composto por 16 símbolos, representados da seguinte forma: 0 1 2 3 4 5 6 7 8 9 A B C D E F 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 44 Nessa base, os “algarismos” A, B, C, D, E e F representam, respectivamente, os valores (da base 10): 10, 11, 12, 13, 14 e 15. 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15 Um número nessa base é representado na forma da expressão: (1A7B)16 O seu valor na base 10 será obtido usando-se a expressão: 1X163 + 10X162 + 7X161+11X160 = 4096 + 2560 + 112 + 11 = 677910 Observemos que na fórmula foram usados os valores 10 (para o algarismo A) e 11 (para o algarismo B) para multiplicar as potências de 16. Por isso, obtivemos o valor do número na base 10. 08 Em outras palavras, utilizamos valores e regras de aritmética da base 10 e, por isso, o resultado encontrado é um valor decimal. A tabela abaixo mostra a representação de números nas bases 2, 8, 10 e 16. 09 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 45 3 - CONVERSÃO DE BASES Uma vez entendido como representar números em notação posicional, e como esta notação é aplicável em qualquer base inteira, podemos exercitar a conversão de números de uma base para outra. Interessa-nos, principalmente, verificar o processo de conversão entre bases múltiplas de 2, e entre estas e a base 10, e vice-versa. Conversão entre Bases Potência de 2 • Entre as Bases 2 e 8 Em virtude do numeral oito ser igual ao numeral dois elevado a três (8 = 23), um número binário (base 2) pode ser facilmente convertido para o seu valor equivalente na base 8 (octal). 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 – exemplo 2). 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. Preste atenção nos seguintes exemplos: 10 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 46 • Conversão entre as Bases 2 e 16 O procedimento de conversão entre números binários e hexadecimais (base 16) é idêntico ao da conversão entre as bases 2 e 8, exceto que, neste caso, a relação é 16 = 24. 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. Caso o último bit não tenha o total de 4 bits, preenche-se com zeros à esquerda. Observe a seguinte tabela para auxiliar na resolução e compreensão dos exercícios abaixo: 27 26 25 24 23 22 21 20 128 64 32 16 8 4 2 1 Preste atenção nos seguintes exemplos: 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 47 Resolução do exemplo 1 Observando da esquerda para a direita, temos (0010). O bit que está “ligado”, o bit 1, está na posição do 21 , que é igual = 2 // por isso a resposta é 2. No segundo, (1101), temos o 1º, o 2º e o 4º bit ligado, então somando 23 + 22 + 20 temos o número 13, que corresponde na tabela hexadecimal a D. No terceiro, (1011), temos o 1º, o 3º e o 4º bit ligado, então somando 23 + 21 + 20 temos o número 11, que corresponde na tabela hexadecimal a B. (0010) (1101) (1011) 23 22 21 20 23 22 21 20 23 22 21 20 11 4 - 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 l0 é realizada empregando-se a fórmula. A melhor maneira de compreender o processo de conversão consiste na realização de alguns exemplos práticos, onde se indica, detalhadamente, a aplicação da referida fórmula. Os exemplos apresentados referem-se apenas a números inteiros. 1) (101101)2 = ( )10 Substituindo, 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 W produto mais à esquerda) d1 =1 1º produto: dn-1 X bn-1 = 1 X 25 Os demais produtos seguem a sequenciada expressão, resultando em: (1 X 25) + (0 X 24) + (1 X 23) + (1 X 22) + (O X 21) + (1 X 20) = 32 + O + 8 + 4 + O + 1 = (45)10 Exemplo 2 Exemplo 3 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 48 Exemplo 4 Exemplo 2 (27)8= ( )10 Da mesma maneira, substitui-se na expressão: b=8 n=2 n-1=1 dn-1=2 Valor total: 2X81 + 7X80 = 16+7=(23)10 Exemplo 3 (2A5)16 = ( )10 2 X162 + 10 X 161 +5 X160 = 512 + 160 + 5 = (677)10 Observação: Lembre-se que A representa 10 em hexadecimal. Exemplo 4 (6734)8= ( )10 6 X 83 + 7 X 82 + 3 X 81 + 4 X 80 = 3072 + 448 + 24 + 4 = (3548)10 12 5 - CONVERSÕES 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 B 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 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 49 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 na 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 podeser 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 b) Quando quociente for igual a zero, parar. c) 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). Exemplo Exemplo (3964)10= ( )8 3964/8 = 495 => resto 0 = 4 (algarismo menos significativo) 495/8 = 61 => resto =7 61/8 = 7 => resto2 =5 7/8 = O => resto3 = 7 (algarismo mais significativo) O número é, então, (7574)8 13 Exercício 02: (2293)10 = ( )8 O resultado será: 4365 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 50 Veja a figura abaixo para compreender melhor essa conversão: 14 Exercício 03: (217)10 = ( )2 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 51 O resultado será: 11011001 Veja a figura abaixo para entender esta conversão: 15 Para ajudar na compreensão de conversão de base, assista ao vídeo a seguir. 1° Aula de Eletrônica Digital - Bases Numéricas - Conversão de Bases https://www.youtube.com/watch?v=IoD6Br_cggc 16 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 52 RESUMO Durante o estudo deste módulo tivemos a oportunidade de conhecer o que são os sistemas de numeração decimal. Vimos que nós, do mundo ocidental, adotamos um sistema de numeração que possui dez diferentes algarismos - 0, 1, 2 , 3, 4, 5, 6, 7, 8, 9 - e, por essa razão, foi chamado de sistema decimal. O sistema de numeração é uma forma sistêmica (metódica, coerente) de utilização de numerais (conjuntos de um ou mais algarismos) para a representação dos números. Como vimos anteriormente, o sistema numérico mais conhecido é o decimal, chamado de “base 10”. Contudo, há outros sistemas numéricos, como o binário (base 2), Octal (base 8) e o Hexadecimal (base 16). Finalmente, uma vez que entendemos como é a representação dos números, fizemos vários exercícios sobre a conversão de números de uma base para outra com o intuito de fixar o entendimento do assunto. 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 53 102 – Arquitetura de Computadores | Unidade 01 © 2014 - AIEC - Associação Internacional de Educação Continuada 54 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 1 UNIDADE 2 – FUNCIONAMENTO DOS CIRCUITOS COMBINACIONAIS E SEQUENCIAIS MÓDULO 1 – SISTEMAS DIGITAIS 01 INTRODUÇÃO Durante o estudo deste módulo você terá oportunidade de entender o que seja sistema para ficar mais simples a compreensão do que sejam sistemas digitais. Os sistemas digitais modernos possuem diversos níveis de complexidade. Estes componentes podem ser uma simples chave de liga e desliga até sistemas computacionais completos. Estudaremos também a importância do cientista inglês George Boole e do matemático americano Shannon na utilização da álgebra booleana para demonstrar as propriedades dos circuitos elétricos. 1. CONCEITO DE SISTEMA Para compreendermos melhor o que são circuitos combinacionais e sequenciais é interessante começarmos pelo entendimento do que venha a ser sistema. Trata-se de um conceito aparentemente simples, porém, é um dos mais abrangentes e complexos de compreender. Mas não se assuste, vamos trabalhar juntos no entendimento deste conceito. Vamos lá? Você provavelmente já vivenciou a seguinte situação: uma pessoa verifica que seu aparelho celular está tendo problemas de “falta de sinal” e não consegue efetuar ligações. A pessoa entra em contato com a operadora de telefonia celular e após determinado tempo recebe como resposta que “foi verificado problema no sistema e assim que o sistema estiver em funcionamento o sinal será restabelecido”. Você também já deve ter ouvido a seguinte expressão: “a culpa de tudo isso é este “sistema de transporte” ultrapassado e que não funciona...” Enfim, o que não falta são exemplos do uso da palavra sistema. A origem da palavra sistema é do grego “sietemiun”, que significa formar conjunto. Um sistema pode ser definido como um conjunto de elementos que se relacionam e interagem com o objetivo de desempenhar determinada função. 02 No caso do mundo da computação, os componentes de um sistema computacional estão interconectados, de modo a formar um todo organizado, sendo assim, cada elemento desempenha determinada função e deve atingir uma meta geral. Um sistema deve ter sua função bem definida e esta definição é que irá identificar as funcionalidades de seus componentes. Uma das muitas funções de um computador é transformar as informações que você acessa na Internet e torná-las possíveis de serem entendidas, pois por trás das imagens há uma 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 2 infinidade de bits e bytes, códigos, programas etc. Sendo assim, é possível identificar dois aspectos básicos em qualquer sistema: • sua estrutura e • seu comportamento. A estrutura é reflexo dos componentes e a maneira como estão interconectados, já o comportamento é reflexo da funcionalidade do sistema. Nos sistemas em que há vários componentes, uma das características será a complexidade das inter- relações, então é por isso que são chamados de sistemas complexos. Em projetos que adotam os chamados sistemas complexos, a identificação da ordem ou regularidade é de suma importância, o que exige uma abordagem sistemática e estruturada. Em virtude de qual aspecto está sendo identificado, a representação que deve ser utilizada terá um nível de abstração adequada. As representações mais comuns utilizadas são de três tipos: • a comportamental, • a estruturada e • a física. 03 No caso da representação comportamental, a identificação do sistema é feita como uma “caixa preta” (difícil de saber o que contém seu interior) e se concentra na especificação do comportamento por meio de uma função com valores de entrada e de tempo (ver figura 01 abaixo). Fazendo um resumo, uma representação comportamental mostra como é o funcionamento, mas não mostra como é feita a implementação de determinado sistema (caixa preta), definindo apenas as saídas da “caixa preta” para qualquer tipo de combinação de valores de entrada, mas não descreve como é a construção ou projeto do sistema conforme certos componentes. 04 Já no caso da representação estrutural há uma definição da “caixa preta” como o conjunto de seus componentes e suas respectivas interconexões. Oposto da representação comportamental, a representação estrutural se atém às especificações e à implementação do sistema sem fazer referência à sua funcionalidade. Você pode observar isso na figura 02. 102 – Arquitetura decomputadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 3 Fica explícito que na maioria das vezes a funcionalidade pode ser obtida a partir dos componentes interconectados. Contudo, derivar a funcionalidade de um sistema desta forma é muito complicado, principalmente se o sistema possui um número grande de componentes. 05 A representação física de uma “caixa preta” especifica suas características, mostrando suas dimensões e a localização de cada componente e a conexão existente na descrição estrutural do sistema. No entanto a representação estrutural oferece a conectividade do sistema, somente a representação física faz a descrição precisa das relações espaciais dos vários componentes. Sendo assim, a representação física é utilizada para fazer a descrição do sistema logo após sua fabricação, especificando quais serão suas dimensões, peso, consumo de energia elétrica e as posições de cada dispositivo de entrada ou saída. Uma maneira simples e natural para representação da estrutura de um sistema é utilizando-se de diagramas de bloco. No diagrama de bloco os componentes podem ser representados por retângulos, chamados blocos, e as conexões que são representadas por linhas que interligam os blocos. A figura 03 mostra um exemplo de diagrama do Arduíno (hardware de prototipagem eletrônica). 06 A maneira como é feito o projeto de sistemas, principalmente relacionado a sistemas digitais e em particular a produtos eletrônicos em geral, tem por base sempre ao menos três fases, cada uma tendo como norte uma das representações de projeto: 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 4 Ao pararmos para pensar sobre o que vimos até agora quanto a sistemas e representações, entendemos que em qualquer projeto é possível montar ou criar algo quando seguimos estes passos (projeto) que utilizam diferentes tipos e níveis de abstração. Em determinado nível de abstração são representados apenas determinados detalhes. Geralmente, os detalhes identificados em uma dada fase do projeto dependem do quanto é complexo o sistema. Podemos usar o seguinte exemplo: é muito difícil ou quase impossível fazer um projeto de um microprocessador fazendo uso apenas das portas lógicas básicas. Geralmente, o projeto começa utilizando blocos básicos no nível lógico. Logo depois, estes blocos serão interconectados para comporem um sistema mais complexo. Esta seria uma maneira viável para projetar um microprocessador. 07 2- SISTEMAS DIGITAIS Vamos agora começar nosso estudo sobre sistemas digitais. Nosso objetivo é fazer uma pequena introdução sobre o que é um sistema digital. Daremos uma especial atenção aos componentes que são básicos para este sistema. Podemos definir um sistema digital como aquele que é formado por um conjunto de componentes interconectados que processam informações em forma digital ou discreta. Na maioria dos sistemas digitais, os componentes básicos utilizados são dispositivos eletrônicos chamados circuitos integrados (CIs). As conexões entre estes componentes eletrônicos são ligações físicas por meio das quais as informações digitais são transmitidas. Os sistemas digitais modernos abrangem diversos níveis de complexidade. Os componentes utilizados para construir um sistema digital são compostos desde o componente do tipo chave “liga/desliga” e vai até um sistema computacional completo. A quantidade de componentes que compõe um sistema digital pode variar de apenas um até vários componentes. Você já deve ter chegado à conclusão que quanto maior a quantidade de componentes necessários à implementação de um sistema digital, maior será sua complexidade, consequentemente, mais difícil de compreender como é seu funcionamento e de como fazer seu projeto. Tudo isso evidencia a importância do uso de níveis de abstração no processo de projeto de sistemas digitais. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 5 08 Você provavelmente deve estar perguntando: o que são níveis de abstração? Vamos juntos entender este conceito. Comecemos pelo conceito da palavra abstração. Há vários conceitos e definições para abstração, no dicionário, abstração significa: “ideias desvinculadas da realidade” ou “isolar mentalmente para considerar à parte um elemento de representação que não é dado separadamente na realidade”. Abstração tem sua origem do latim abstractio, que significa uma forma de mentalmente isolar em um conceito determinado elemento à exclusão de outros do todo. Um engenheiro, ao fazer a planta para construção de uma casa, utiliza certos símbolos, desenhos e traçados que representam paredes, quartos, janelas, canos, pilares, vigas e etc. Esta planta da obra é uma abstração do que será a casa ao final da construção. Você também pode pesquisar na Internet e encontrar sites que mostram os componentes de um motor automobilístico e como é a interação de seus componentes, com base nestas informações podemos imaginar (abstrair) como seriam estes componentes interagindo durante o funcionamento real do motor. 09 Um nível de abstração, ou de granularidade, é caracterizado pelo tipo de objetos utilizados na representação. Geralmente, é possível identificar 4 diferentes tipos de objetos em um produto eletrônico: 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 6 • registradores, • processadores, • portas e • transistores. Na tabela abaixo é possível observar os níveis de abstração. Conforme podemos observar na tabela acima, os principais componentes no nível de transistores são transistores, resistores e capacitores, que, ao serem combinados, formam os circuitos analógicos e digitais para realizar e exercer determinada funcionalidade. Esta funcionalidade é geralmente representada por um conjunto de equações diferenciais ou por determinado tipo de relacionamento entre corrente e tensão. Representar fisicamente estes circuitos, chamados células, consiste da composição ao nível de transistores e das conexões que os conectam. 10 Os componentes principais do nível de portas são os flip-flops e as portas lógicas. Portas lógicas são circuitos especializados que fazem uso de operações booleanas, exemplo: OR e AND. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 7 Um flip-flop é um elemento básico de memória que tem a capacidade de armazenamento de 1 bit de informação, consequentemente ele pode assumir um valor falso ou desligado (0) ou verdadeiro ou ligado (1). As portas e flip-flops são células digitais que, ao serem grupadas, formam módulos ou unidades aritméticas e de memória. Os módulos são utilizados na composição básica ao nível de registradores. Utilizando-se de equações booleanas e Finite State Machines - FSMs (diagramas de máquinas de estados finitas) é possível descrever o comportamento de cada módulo. 11 Os registradores têm por seus principais componentes as unidades de memória e aritméticas, tais como: multiplicadores, comparadores, somadores, contadores, filas, registradores, bancos de registradores e etc. Cada um destes componentes é um módulo, que possui dimensões padronizadas ou fixas, tendo um atraso de propagação e um conjunto fixo de posições para as saídas e entradas do módulo. Estes componentes do nível de registradores são montados e interconectados em microcircuitos,que geralmente são usados como componentes básicos no nível de abstração descrito na tabela. De maneira geral, os microcircuitos mencionados são exemplificados por diagramas de FSMs ou tabelas de estados, fluxogramas e conjuntos de instruções. 12 O nível de processador pode ser considerado como o nível mais alto de abstração apresentado na tabela 01. Os componentes básicos são: memórias, processadores, controladores e interfaces, e os chamados: Application Specific Integrated Circuits - ASICs (Circuitos de Aplicação Específica). 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 8 De maneira geral, os componentes expostos acima são montados em uma placa de circuito impresso e conectados com fios que são impressos na placa. A maneira de como será o comportamento de sistemas compostos destes componentes do nível de processadores é normalmente feita por meio de linguagem natural, uma especificação executável utilizando-se de Hardware Description Language – HDL – linguagem de descrição de hardware, ou um programa ou algoritmo feito em uma linguagem de programação, como, por exemplo: assembly (notação legível feito por seres humanos para o código de máquina). 13 A representação estrutural comumente utilizada para sistemas digitais é o diagrama de blocos. Dependendo do nível de abstração, cada bloco irá representar os objetos correspondentes ao nível de uma porta lógica quando relacionado ao nível de abstração de portas; registradores, somadores quando relacionado ao nível de registradores; controladores e ASICs quando relacionado ao nível de processador. As interconexões são representações da comunicação entre os objetos. A figura 04 é um exemplo de um diagrama de blocos, que representa uma ULA (Unidade Lógica e Aritmética) e também os registradores para a entrada e saída. Eles são componentes que constituem partes essenciais de qualquer tipo de sistema computacional. 14 Você deve ter observado que, em um diagrama de blocos, não há preocupação quanto ao detalhamento dos componentes, mas apenas uma ideia generalizada da estrutura como um todo. Cada bloco poderá até ser mostrado em um nível maior de detalhamento por meio de outro diagrama de blocos ou em um diagrama esquemático. Isto demonstra a natureza hierárquica que há em qualquer tipo de projeto de sistema. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 9 Para exemplificar o que falamos no parágrafo acima, podemos observar na figura 05, uma representação de um diagrama de blocos com um nível de detalhamento maior da ULA (Unidade Lógica e Aritmética). Você já havia observado na Figura 04 um diagrama de blocos que representa a ULA de uma maneira menos detalhada. 15 Na figura abaixo, figura 06, continuamos a detalhar ainda mais, vendo com detalhes como é um somador completo, que é um dos blocos que representa um dos componentes da ULA. Contudo, para a representação do comportamento de sistemas digitais no nível de portas lógicas, torna- se necessária a utilização de tabelas verdades e equações booleanas. No nível de registradores, utiliza- se de determinados tipos de linguagem para a descrição de como ocorrem as transferências de dados entre os registradores. Com o objetivo de possibilitar uma simulação do sistema no nível de processador, geralmente utilizamos as chamadas linguagens procedurais. Estas linguagens fazem uma descrição dos algoritmos na forma de programas executáveis. 16 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 10 Vamos agora usar uma descrição algorítmica. O algoritmo abaixo foi criado tendo por base o diagrama de blocos que representa a estrutura da ULA conforme a figura 4: Este pequeno algoritmo mostra que o valor de (controle) irá determinar se a ULA realizará uma soma ou uma subtração. 17 3. TIPOS DE DADOS E REPRESENTAÇÃO DE DADOS Anteriormente, falamos sobre notação posicional em que estudamos os sistemas de numeração e conversão de bases. Quando falamos em tipos de dados, o objetivo é entender que nos sistemas digitais a codificação mais utilizada é a binária. Os dados encontrados nos atuais computadores, que são sistemas digitais, são classificados em uma das seguintes categorias: • Números utilizados em cálculos matemáticos; • Letras do alfabeto, utilizadas para processar dados; • Os chamados símbolos discretos, que são utilizados para vários propósitos. Você estudou anteriormente que nos sistemas computacionais os dados são representados em formato binário porque este formato facilita a criação dos projetos de circuitos eletrônicos, pois há apenas duas condições possíveis, as quais foram convencionadas para serem interpretadas como os valores 0 e 1 de um dígito binário (bit). Tais circuitos eletrônicos são projetados para realizar um repertório de operações necessárias que são disponibilizadas nos computadores. 18 4. ÁLGEBRA BOOLEANA E CIRCUITOS LÓGICOS Você observou nos parágrafos anteriores que falamos sobre operações e lógica booleana. Para entendermos este conceito vamos começar falando sobre o conceito conhecido como: álgebra booleana. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 11 Podemos definir como álgebra booleana o conjunto de operadores e um conjunto de axiomas (verdades inquestionáveis universalmente válidas), que são assumidos verdadeiros sem precisar de prova. George Boole (1815-1864) No ano de 1854, o matemático inglês George Boole introduziu uma maneira sistemática e formal que até hoje é usada para o tratamento sistemático da lógica, conhecida como álgebra de Boole ou álgebra booleana. Com o passar dos anos, quase um século depois, outro cientista e matemático, o norte-americano Claude Elwood Shannon, teve a ideia de usar o sistema matemático de George Boole para analisar e projetar circuitos. Shannon utilizou a álgebra boolena para fazer a demonstração das propriedades dos circuitos elétricos de chaveamento com dois valores. 19 Oposto ao que conhecemos na matemática de nosso dia a dia, também conhecida como a álgebra ordinária dos reais, as variáveis podem assumir valores no intervalo (-8;+8) – infinito ao + infinito, entretanto, as variáveis booleanas só podem assumir um número finito de valores. Em especial, na álgebra booleana de dois valores, cada variável pode assumir um dentre dois valores possíveis, os quais podem ser denotados por falso ou verdadeiro (F,V), ligado ou desligado ou zero/um (0,1). Neste nosso estudo iremos utilizar a notação de zero e um [0,1], que utilizaremos também no estudo da eletrônica digital ou circuitos digitais. Em virtude do pequeno valor (finito) que cada variável pode assumir, a opção de estados que uma função booleana assume também será limitado (finito), consequentemente se torna fácil descrever completamente as funções booleanas com o uso de tabelas. Em virtude deste detalhe, uma tabela que descreva uma função booleana é chamada de tabela verdade. Ao estudarmos a álgebra booleana é importante entender que existem três funções básicas ou operações. São elas: • operação “OU”, • operação “E” e • complementação. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 12 Todas as funções booleanas podem ser representadas por meio destas operações básicas. Tabela verdade Éna tabela verdade que podemos listar todas as combinações de valores que as variáveis de entrada podem vir a assumir e os correspondentes valores da função, que serão as saídas. 20 4. 1 - OPERAÇÃO OU (ADIÇÃO LÓGICA) Uma definição para a operação “OU”, que também é chamada de adição lógica, é: A operação “OU” resulta “1” se pelo menos uma das variáveis de entrada valer “1”. Você viu nos parágrafos anteriores que uma variável booleana ou vale “1” ou vale “0”, e como o resultado de uma operação qualquer pode ser visto como (ou atribuído a) uma variável booleana, basta que definamos quando a operação vale 1. Automaticamente, a operação resultará 0 no restante dos casos. Sendo assim, pode-se concluir que a operação “OU” resulta “0” apenas quando todas as variáveis de entrada tiverem o valor “0”. Para representar a operação “OU” podemos usar o símbolo da adição algébrica dos números reais, o símbolo “+”. Entretanto, em virtude de estarmos trabalhando com variáveis booleanas, sabemos que não é uma adição algébrica, mas na verdade uma adição lógica. Observe a figura abaixo, que lista as possibilidades de combinações entre dois valores booleanos (0/1) e os correspondentes resultados para a operação “OU”. Preste muita atenção: a figura abaixo é a representação de uma operação booleana de adição lógica, pois na álgebra matemática (número reais) 1+1=2 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 13 21 Nas equações, geralmente não escrevemos todas as possibilidades de valores. Apenas convencionamos que uma letra (ou uma letra com um índice) irá designar uma variável booleana. Sendo assim, já sabemos que aquela variável poderá assumir ou o valor “0” (zero) ou o valor “1” (um). Consequentemente, supondo que vamos demonstrar o comportamento da equação “A OU B” (entende- se como: A + B), poderíamos reproduzir o resultado por meio da tabela verdade abaixo: Vamos agora acrescentar mais uma variável. Não se preocupe, pois da mesma maneira, podemos simular o comportamento da equação “A OU B OU C” por meio de uma tabela verdade. Outra maneira de representar a mesma equação seria: A+B+C (entende-se como: A OU BOU C). Como na equação há apenas o símbolo “+”, trata-se de uma operação “OU” com três variáveis. Consequentemente aplica-se diretamente a definição da operação OU. Vamos relembrar esta definição? Então vamos: o resultado será “1” (um) se pelo menos uma das variáveis de entrada valer “1” (um). Observe a tabela verdade abaixo: 22 Torna-se importante frisar que, em virtude do fato de haver somente um operador na equação, pode-se fazer também uma avaliação da equação dividindo-a em pares. Para melhorar o entendimento vamos supor que primeiramente vamos achar o resultado de A+B, para então operar os valores resultantes com os respectivos valores de C. Esta propriedade é conhecida como associativa. A ordem das variáveis não é importante em virtude da propriedade comutativa, sendo assim a ordem em que são avaliadas as variáveis A, B e C é irrelevante. Estas propriedades são visualizadas pela tabela verdade abaixo. Nesta tabela, os parêntesis servem para indicar as subexpressões que já foram avaliadas na coluna imediatamente à esquerda. Você deve ter observado que os valores das colunas referentes às expressões A+B+C, (A+B)+C e (B+C)+A são os mesmos (na mesma ordem). 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 14 Propriedade associativa Quer dizer que, ao associarmos algumas parcelas, o total fica inalterado. No conjunto dos números naturais, a adição éassociativa, isto é, é possível associar as parcelas de quaisquer modos, ou seja, com três números naturais, somando o primeiro com o segundo e ao resultado obtido somarmos um terceiro, obteremos um resultado que é igual à soma do primeiro com a soma do segundo e do terceiro. Exemplo: (2 + 3 ) + 4 = 2 + ( 3 + 4 ) = 9 Propriedade comutativa Quer dizer que a ordem das parcelas não altera a soma. No conjunto dos números naturais, a adição é comutativa, pois a ordem das parcelas não altera a soma, ou seja, somando a primeira parcela com a segunda parcela, teremos o mesmo resultado que somando a segunda parcela com a primeira parcela. Exemplo: 2 + 6 = 6 + 2 = 8 23 4.2 - OPERAÇÕES “E” (MULTIPLICAÇÃO LÓGICA) Seguiremos o mesmo raciocínio que utilizamos para a operação lógica OU. Veremos que na multiplicação lógica o operador é a letra “E”. A operação “E” é definida como operação que resulta “0” (zero) se pelo menos uma das variáveis de entrada tiver o valor de “0” (zero). Podemos deduzir pela definição que o resultado da operação E será 1 (um) se, e somente se todas as entradas tiverem o valor de 1 (um). 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 15 O símbolo usualmente utilizado na operação E é “.”, porém outra notação que alguns autores utilizam é “^”. Vamos, na tabela abaixo, listar as possibilidades de combinações entre dois valores booleanos e os respectivos resultados da operação E: 24 Também como a operação OU, a operação E só pode ser definida ao menos por duas variáveis. Consequentemente, o operador “.” (E) é também binário. No intuito de mostrar o comportamento da equação A . B (pode-se ler como: A e B), observe a tabela verdade abaixo: Conforme fizemos anteriormente, vamos verificar qual seria o resultado da equação A . B . C (pode-se ler como: A e B e C) utilizando de forma direta a definição da operação “E” que diz: o resultado será 0 (zero) se pelo menos uma das variáveis de entrada valer 0 (zero). 25 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 16 Você deve estar lembrado que falamos sobre as propriedades associativa e comutativa. Pois é, na operação E também valem estas propriedades. Sendo assim, a equação A . B . C pode ser analisada tomando-se as variáveis aos pares, sem necessidade de ordem. Observe a tabela verdade abaixo e verifique os resultados: 26 4.3 - COMPLEMENTAÇÃO (OU NEGAÇÃO, OU INVERSÃO) Dando continuidade ao estudo das operações booleanas, vamos agora estudar a operação chamada de Complementação. A operação de complementação consiste em que seu resultado é simplesmente o valor complementar ao que a variável apresenta. Em virtude desta condição, uma variável booleana pode assumir um entre somente dois valores, o valor complementar será “1” (um) se a variável valer “0” (zero) e será “0” (zero) se a variável tiver o valor de “1” (um). Você irá observar que os símbolos utilizados para a representação da operação complementação sobre uma variável booleana, exemplo a variável “A”, pode ser: A , ~A e A' (lê-se A negado). Para nosso estudo, iremos utilizar: A. Veja a tabela abaixo para entender o resultado da operação complementação: Você deve ter notado que diferentemente das operações “OU” e “E”, a operação de complementação só pode ser definida sobre uma variável, ou sobre o resultado de uma expressão. Neste caso, o operador 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 17 da operação de complementação é chamado de: unário. Veja a tabela abaixo para compreender melhor o que falamos: 27 5 - AVALIAÇÕES DE EXPRESSÕES BOOLEANAS Conforme observamos uma equação qualquer, que descreve uma função booleana, entendemos que oobjetivo é compreender com detalhes como esta função se comporta para qualquer combinação de entrada das variáveis. O comportamento de uma função pode ser observado em sua tabela verdade e isto é conhecido como expressão, que descreve a função considerada ou avaliação da função. Resumindo, deseja-se achar a tabela verdade para a função booleana. Uma tabela verdade, como o próprio nome informa, é formada basicamente por um conjunto de colunas, nas quais são listadas todas as combinações possíveis entre as variáveis de entrada (à esquerda) e o resultado da função (à direita). É possível, também, criar colunas intermediárias, onde serão listados os resultados de subexpressões contidas na expressão principal. Tudo isso tem por objetivo facilitar a avaliação, principalmente no caso de equações muito complexas, que possuem muitas variáveis. Seguindo o mesmo raciocínio, expressões que estão entre parêntesis têm precedência sobre operadores E e OU que estejam no mesmo patamar. No caso da operação de complementação, esta deve ser avaliada tão logo seja possível. Caso a complementação seja aplicada sobre uma subexpressão inteira, é necessário que se avalie primeiramente a subexpressão para, para apenas depois, inverter o seu resultado. 28 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 18 Você pode calcular o número de combinações que as variáveis de entrada podem assumir por meio do seguinte cálculo 2n. Nesse cálculo, o “n” representa o número de variáveis de entrada. Para criar uma tabela verdade tendo por base uma equação booleana é preciso observar 3 passos: 29 Vamos agora usar como exemplo a seguinte expressão W = X + Y . Z . Nesta expressão, a variável W representa a função booleana. Essa variável depende das variáveis que estão à direita do sinal = (igual), sendo assim, irá depender de X, Y e Z. Então, serão três as variáveis de entrada. Podemos então deduzir que o total de combinações entre 3 variáveis será 23=8. Por consequência, a tabela verdade para W deverá ter 3 colunas à esquerda e 8 linhas. Seguindo o que mencionamos acima, vamos criar uma coluna, e nela listar os valores para Z. Logo depois, começamos a avaliação propriamente dita, partindo do nível mais interno de parêntesis. Em virtude de não haver parêntesis na expressão, iremos começar resolvendo as subexpressões que envolvem a operação “E”. Na fórmula que estamos utilizando há somente uma subexpressão: X . Y. Em virtude disso, vamos criar uma coluna para X . Y , e nela colocaremos os resultados para este produto. Ao final, utilizam-se os resultados de X . Y, listados na coluna anterior, para operar o OU com a variável X. Observe os passos descritos na tabela verdade abaixo e veja que os parêntesis em torno do produto X . Y indicam apenas que este termo já passou por avaliação e que no passo referente a esta coluna, tomaram-se apenas os valores previamente encontrados. 30 RESUMO 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 19 Durante o estudo deste módulo tivemos oportunidade de estudar e entender que sistema pode ser definido como um conjunto de elementos que se relacionam e interagem com objetivo de desempenhar determinada função. Vimos que um sistema digital é formado por um conjunto de componentes interconectados que processam informações em forma digital ou discreta. Entendemos que em oposição ao que conhecemos na matemática de nosso dia a dia, também conhecida como a álgebra ordinária dos reais, as variáveis podem assumir valores no intervalo (-∞;+∞), entretanto as variáveis booleanas só podem assumir um número finito de valores, podendo ser 0 ou 1. Ao final vimos que na álgebra booleana há três funções básicas ou operações, elas são: operação “OU”, operação “E” e Complementação. Todas as funções booleanas podem ser representadas por meio destas operações básicas. UNIDADE 2 – FUNCIONAMENTO DOS CIRCUITOS COMBINACIONAIS E SEQUENCIAIS MÓDULO 2 – CIRCUITOS LÓGICOS 01 1 - PORTAS LÓGICAS Neste módulo iremos compreender que uma função booleana pode ser representada de forma gráfica, onde cada operador está associado a um símbolo específico (portas lógicas), tornando possível o imediato reconhecimento visual. Você terá oportunidade de entender que um circuito lógico tem por característica ser composto pelas portas lógicas relacionadas às operações realizadas sobre as variáveis de entrada. Então, os resultados das operações são conduzidos por meio de fios que representamos com a utilização de linhas simples. Faremos uma passagem pelos conceitos, leis e propriedades da álgebra booleana para podermos fundamentar nosso conhecimento. Ao final, veremos como, a partir de uma expressão booleana, podemos criar circuitos lógicos. Então vamos começar? Durante nosso estudo sobre função booleana entendemos que ela pode ser representada por uma equação ou também pode ser detalhada pela tabela verdade. Todavia uma função booleana também pode ter sua representação feita de forma gráfica, onde cada operador está associado a determinado símbolo específico, tornando possível o imediato reconhecimento visual. Estes símbolos são conhecidos como portas lógicas. Na verdade, muito além do que apenas símbolos de operadores lógicos, as portas lógicas representam recursos físicos, sendo assim, circuitos eletrônicos, com capacidade de realizar as operações lógicas. Na eletrônica trabalhamos apenas com dois estados, a qual é denominada eletrônica digital, o nível lógico 0 (zero) está associado normalmente à ausência de tensão (0 volt) enquanto o nível lógico 1 está associado à presença de tensão (de maneira geral é de 5 volts). Durante nosso estudo abordaremos 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 20 alguns pontos do vasto mundo da álgebra booleana, compreendendo que as portas lógicas representam também circuitos eletrônicos que, de alguma maneira, realizam as funções booleanas simbolizadas Consequentemente, chamaremos de circuito lógico ao conjunto de portas lógicas e respectivas conexões que simbolizam uma equação booleana. 02 1.1 - Porta OU O símbolo da porta OU pode ser visualizado na figura abaixo. Da mesma forma que na porta E, as entradas são colocadas à esquerda e a saída, à direita. Note, ao observar a figura abaixo, que há duas e três entradas e apenas uma saída. Observe também que deverá haver no mínimo duas entradas, contudo haverá somente uma saída. Você deve estar lembrado do operador lógico E, então, o funcionamento da porta E segue esta mesma definição operação. 03 1.2 - PORTA E O símbolo da porta E é mostrado na figura abaixo. À esquerda estão dispostas as entradas (conforme já falamos, no mínimo duas e à direita, apenas uma saída. Podemos dizer que as linhas que conduzem as variáveis de entrada e saída simbolizam os fios que transportam os sinais elétricos associados às variáveis. O comportamento da porta E segue estritamente o que estudamos anteriormente sobre a tabela verdade. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 21 04 1.3 - INVERSOR (NEGADOR OU PORTA INVERSORA) Relembrando o que estudamos, a porta que simboliza a operação complementação é chamada de inversor (negador ou porta inversora). Em virtude de a operação complementação ser apenas possível de realização sobre uma variável por vez ou sobre o resultado de umasubexpressão, consequentemente, o inversor só possui uma entrada e, claro, apenas uma saída. Então, se houver necessidade de complementar uma expressão, o primeiro passo será obter-se o seu resultado, para apenas então aplicar a complementação. O símbolo do inversor é mostrado na figura abaixo. 05 2 - EXEMPLO DE CIRCUITO LÓGICO Nosso objetivo até o momento é obtermos conhecimento suficiente para que, ao observar uma equação booleana qualquer, tenhamos capacidade de desenhar a implementação do circuito lógico. Vamos lá? Um circuito lógico tem por característica ser composto pelas portas lógicas relacionadas às operações realizadas sobre as variáveis de entrada. Então, os resultados das operações são conduzidos por meio de fios que representamos com a utilização de linhas simples. Os passos que devemos seguir para fazermos um desenho do circuito lógico tendo por base uma equação são similares aos usados na avaliação da expressão. Vamos usar como exemplo a equação (W= X + Y . Ž). O primeiro passo é identificar quais são as variáveis independentes, que neste exemplo são X, Y e Z. Para cada variável iremos traçar uma linha (observando que será da esquerda para a direita), estas linhas irão representar os fios que conduzem os sinais elétricos (valores). Logo depois vamos desenhar as portas necessárias para representar cada uma das subexpressões. Observe que há regras para a ordem tomada para a avaliação, que é: 1o parêntesis (dos mais internos para os mais externos); 2º operações E; 3º operações OU. Na figura abaixo podemos ver o desenho do circuito lógico para a equação: 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 22 06 3 - LEIS FUNDAMENTAIS E PROPRIEDADES DA ÁLGEBRA BOOLEANA Você já deve estar acostumado á seguinte expressão: “para tudo há regras ou leis”. Pois é, no mundo da álgebra booleana não é diferente, as leis da álgebra booleana tratam dos valores que uma variável pode assumir (espaço booleano) e as operações elementares deste espaço. As propriedades são deduzidas tendo por base as definições das operações. Vamos tomar como exemplo duas variáveis booleanas. Chamaremos de A e B. Vamos definir o espaço booleano tendo por base a figura abaixo: As operações elementares deste espaço são operação OU, operação E e complementação. As propriedades da álgebra booleana são as seguintes: 07 3.1 - TEOREMAS DE DE MORGAN 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 23 Veremos agora dois teoremas do lógico e matemático britânico Augustus De Morgan que viveu no século XIX. Pedimos que você não fique assustado com as proposições dos teoremas, pois aparentemente eles são complexos, mas são base para o entendimento dos circuitos lógicos. Veremos que Augustus De Morgan diz em seu primeiro teorema que a complementação de um produto (lógico) equivale à soma (lógica) das negações de cada variável do referido produto. Tendo por base a Figura 01 vista anteriormente, observe como seria em forma de equação: No segundo teorema de De Morgan observamos que é chamado de dual (espelho ou contrário) do primeiro, sendo assim, ele diz que a complementação de uma soma (lógica) equivale ao produto das negações individuais das variáveis. Tendo por base a Figura 02 vista anteriormente, veja como seria em forma de equação: Particularizando os teoremas de De Morgan para duas variáveis. Tendo por base a Figura 03 e 04 vistas anteriormente, veja como seria em forma de equação: 08 3.2 - DERIVAÇÃO DE EXPRESSÕES BOOLEANAS Tendo por base uma função booleana, conforme sua tabela verdade, derivar uma expressão booleana para esta função é encontrar descrição por meio de uma equação. Então, entendemos que a derivação de expressões booleanas é o problema inverso da avaliação de uma expressão booleana, conforme vimos anteriormente. Existem basicamente duas maneiras para descrever uma função booleana: 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 24 Toda e qualquer função booleana pode ser descrita tendo por base a soma de produtos ou por meio de produto de somas. Em virtude das funções booleanas só poderem assumir dois valores (0 ou 1), basta utilizar um dos dois métodos para encontrarmos uma equação para uma função. 09 3.3 - DERIVAÇÃO DE EXPRESSÕES USANDO SOMA DE PRODUTOS (SDP) Tendo por base uma função booleana que possui “n” variáveis ou “n” entradas, consequentemente poderá haver 2n (dois elevado a n) possibilidades de combinações de valores. Chamamos essas possibilidades de valores que as variáveis podem assumir, juntamente com os respectivos valores da função, de “espaço da função”. A cada combinação de entradas podemos associar um determinado termo produto, no qual todas as variáveis da função estarão presentes, e que é composto da seguinte maneira: • caso a variável correspondente tiver o valor 0 (zero), ela irá aparecer “negada”; • se a variável tiver o valor 1 (um), ela deve aparecer como “não negada”. Veja a tabela abaixo, na qual é possível observar os termos de produto associados a cada combinação de entradas para uma função booleana de três variáveis (A, B, C). Cada termo produto construído conforme a regra falada anteriormente é chamado de mintermo (também pode ser chamado de minitermo). Observe que, para determinado dado mintermo, caso substituirmos os valores das variáveis associadas, obteremos o valor 1 (um). Entretanto, se substituirmos nesse mesmo mintermo por qualquer outra combinação de valores, iremos obter o valor 0 (zero). Dessa maneira, caso queiramos encontrar a equação para uma função tendo por base sua tabela verdade, basta utilizar um “OU” entre os mintermos associados aos números um da função (conhecidos como: mintermos 1). 10 Tendo por base a tabela verdade abaixo, vamos encontrar a equação em soma de produtos (SdP) para a função: 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 25 Temos que F é uma função das variáveis A, B e C. Observamos que os valores para A, B e C quando F=1 são (0,1,0), (0,1,1), (1,0,1) e (1,1,0). Agora os “mintermos” (mintermos 1) associados a essas condições são respectivamente: Então, a equação em soma de produtos para F será o OU entre estes produtos. Observe a figura abaixo: Tendo por objetivo simplificar a notação, o símbolo da operação E poderá ficar oculto. Desta maneira, a equação vista anteriormente ficaria mais enxuta e ser escrita da seguinte forma: 11 3.4 - DERIVAÇÃO DE EXPRESSÕES USANDO PRODUTO DE SOMAS (PDS) Agora vamos ver que o método de derivação usando produto de somas é o dual (oposto) do método de derivação em soma de produtos. Sendo que em cada combinação das variáveis de entrada de uma função é possível fazer associação a um termo soma, no qual todas as variáveis da função estão presentes e que é formado da seguinte maneira: • caso uma variável correspondente tenha o valor de 1 (um), ela deve aparecer como: “negada”; • caso a variável tenha o valor 0 (zero), ela deve aparecer como: “não negada”. A tabela abaixo faz uma lista dos termos soma associados a cada combinação de entradas para uma função booleana quando utilizamos 3 variáveis (A, B, C). 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 26 Cada termo soma efetuado tendo por basea regra anteriormente falada é chamado de: maxtermo(maxitermo). Observe que, para um dado maxtermo, caso façamos a subtração dos valores das variáveis associadas, iremos obter o valor “0” (zero). Todavia, caso façamos a substituição nesse mesmo maxtermo com qualquer tipo de combinação de valores, iremos obter o valor 1 (um). Dessa maneira, caso queiramos encontrar a equação para uma função tendo por base a respectiva tabela verdade, basta utilizar um “E” entre os maxtermos associados aos valores zero da função que também podemos chamar de: maxtermos 0 (zero). 12 Por meio da tabela verdade abaixo iremos encontrar a equação em produto de somas (PdS) para a função F: Vamos utilizar a mesma função do exemplo anterior, para que possamos fazer comparações entre os dois métodos de derivação. Os valores das variáveis de entrada A,B,C para os quais F=0 são (0,0,0), (0,0,1), (1,0,0) e (1,1,1). Os maxtermos (maxtermos zero) associados a essas condições são respectivamente: Por consequência, a equação em produto de somas para F será o “E” entre estas somas: 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 27 13 3.5 - FORMAS CANÔNICAS, PADRÃO E NÃO-PADRÃO Você deve ter observado que as representações em soma de produtos e em produto de somas seguem um padrão, por isso elas são chamadas de: formas padrão. A soma de produtos e o produto de somas que estudamos nos parágrafos anteriores apresentam ainda uma característica peculiar: todas as variáveis da função estão presentes em cada termo soma e em cada termo produto. Em virtude desta característica, essas formas são chamadas de: canônicas. Muito mais do que foi visto nas representações mostradas nos parágrafos anteriores, há representações alternativas e também mais enxutas para as expressões canônicas. Caso façamos associação para cada combinação das variáveis de entrada e ao seu equivalente em decimal, cada mintermo pode ser representado por mi, onde i é o decimal associado. De forma parecida, cada maxtermo pode ser representado por Mi, onde i é o decimal associado. Na tabela abaixo temos uma listagem de todos os mintermos e maxtermos tendo por base uma função com três variáveis: A, B , C). 14 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 28 Retornando à função F que utilizamos como exemplo nos parágrafos anteriores, podemos refazer a expressão em soma de produtos, na forma canônica, como o seguinte: Podemos deixar esta expressão mais enxuta usando o símbolo de somatório (∑); vamos lá: Uma expressão em produto de somas, na forma canônica, podemos reescrever da seguinte forma: Podemos, também, deixar esta expressão mais enxuta utilizando o símbolo de produto (∏); vamos lá: Você deve ter notado que mesmo as representações canônicas sendo práticas, elas são pouco úteis quando o assunto é a implementação de circuitos digitais. O número de portas lógicas e conexões de um circuito lógico depende diretamente do número de operações booleanas (E, inversão, OU) contidas na expressão associada. Sendo assim, é mais prático a redução do número de operações contidas numa função, de tal maneira poder implementar utilizando circuitos lógicos mais simples, e por consequência, de custo mais reduzido. A diminuição da quantidade de operações é alcançada por meio da eliminação de literais da expressão, utilizando as propriedades da álgebra booleana descritas nos parágrafos anteriores. Podemos dizer que um “literal” pode ser uma “variável negada” ou uma “variável não negada”. Chamamos de simplificação o processo de redução de literais ou de redução de operações, equivalentemente. 15 Vamos agora usar exemplos para entendermos os passos básicos para a simplificação algébrica (literal) de expressões booleanas. Vamos utilizar uma expressão canônica, em soma de produtos, para uma dada função F: 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 29 A primeira observação que precisamos fazer é a identificação dos pares de “mintermos” que se diferenciam por apenas um literal, a fim de aplicar a propriedade (14). Os mintermos A C B e ABC , por exemplo, possuem os mesmos literais, exceto pela variável C: no primeiro, o literal é C , enquanto no segundo, o literal é C. Então, conforme a expressão abaixo que exemplifica que a propriedade Distributiva diz “da multiplicação em relação à adição”: Tendo por base esta propriedade podemos fatorar esses dois mintermos, tendo como resultado a expressão abaixo: Então pela propriedade Distributiva temos que C + C= 1 . Então, substituindo na expressão acima, obtemos: Pela propriedade da multiplicação lógica onde A . 1 = A podemos substituir e obtemos: Então, por meio da manipulação algébrica, iremos obter uma expressão em soma de produtos mais enxuta em comparação à mesma expressão em soma de produtos na forma canônica, em virtude da redução do número de operações e também de literais. Os símbolos utilizados para representar a operação complementação sobre uma variável Booleana A é o “-“ na parte superior da letra, exemplo: Ž. Observe a equação: Diferente do que é possível ver na equação acima, poderá haver situações que um mintermo ser . Neste caso ele poderia ser agrupado com o mintermo ABC, pois os dois possuem os mesmos literais, exceto pela variável A (A no primeiro e A no segundo). É muito natural que os passos que foram seguidos seriam os mesmos falados anteriormente. Sendo assim, a equação resultante seria um pouco 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 30 diferente, mas com a mesma quantidade de operações, sendo, por conseguinte, da mesma complexidade. Realmente, a melhor maneira seria se fosse possível agrupar o mintermo A C B com o mintermo ABC e ao mesmo tempo com o mintermo ABC . Por sorte, a propriedade “Da adição lógica” da álgebra booleana diz que (A + A = A); então o “OU” entre duas ou mais variáveis booleanas iguais é igual a própria variável booleana. Saiba + Fazendo uma ampliação desta propriedade, podemos falar que o “OU” entre duas ou mais funções (também os produtos) booleanas iguais é equivalente à própria função booleana. Desta maneira, podemos expandir o mintermo para: Esta manipulação algébrica é decorrente da propriedade “adição lógica” da álgebra booleana que afirma que (A + A = A). Saiba + Os símbolos utilizados para representar a operação de complementação sobre uma variável Booleana é o “ ¯ “ na parte superior da letra, por exemplo: E. Na explicação desta equação é possível entender que ABC e ACB são diferentes, pois possuem os mesmos literais que é a letra “A” (um “literal” pode ser uma “variável negada” ou uma “variável não negada”). O traço na parte superior é o indicativo. 16 Utilizando novamente a expressão: Também utilizando a expressão: Observando as duas expressões acima e por meio da propriedade “adição lógica” da álgebra booleana que afirma que (A + A = A), Consequentemente, notamos que as expressões acima são equivalentes, embora o mintermo apareça duplicado. E pelo fato de aparecer duas vezes, pode-se usar uma cópia de para simplificar com e outra para simplificar com . Para obter a simplificação vamos utilizar a propriedade Distributiva (da multiplicação em relação à adição) onde “A . (B + C) = A . B + A . C” então: 102 – Arquiteturade computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 31 Vamos simplificar utilizando a propriedade da multiplicação lógica onde “A . 1 = A” 17 Agora ao final vamos utilizar a propriedade da “adição lógica” da álgebra booleana que afirma que (A + A = A): Observe que o mintermo não pôde ser agrupado com outro mintermo. Veja também que utilizamos das simplificações possíveis, uma vez que foram agrupados e simplificados todos os pares de mintermos que se diferenciam de somente uma variável. Consequentemente, a última expressão acima é uma mostra da máxima simplificação possível sob a forma de soma de produtos. É em virtude disso que esta expressão é chamada de equação mínima em soma de produtos da função F. Ao voltarmos a falar sobre a expressão que foi simplificada: Dizemos que esta equação foi apenas simplificada, isto difere e ao mesmo tempo evidencia que toda equação mínima é simplificada, contudo, nem toda equação que foi simplificada é necessariamente mínima. 18 4. CIRCUITOS LÓGICOS PARA FORMAS PADRÃO E NÃO-PADRÃO Durante o desenvolvimento do estudo deste módulo, vimos as regras gerais para se realizar o desenho de circuitos lógicos. Neste parágrafo iremos ver as seguintes regras que devem ser observadas, com o intuito de facilitar a compreensão do desenho: • variáveis de entrada precisam ser identificadas de modo preferencial à esquerda, ao lado aos respectivos fios; • na equação os inversores devem ser inseridos para as variáveis que aparecem negadas; • conforme a ordem de avaliação os operadores as portas que implementam as operações booleanas devem aparecer na equação posicionados da esquerda para a direita. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 32 No caso de equações canônica ou simplificada, ou chamadas de soma de produtos, há um primeiro nível (desprezando possíveis inversores), provido somente por portas “E”, sendo cada porta “E” uma implementação dos produtos da equação. Existe ainda um segundo nível, composto por uma porta “OU”, responsável pela “soma” lógica dos produtos. 19 Tendo por base a equação abaixo, vamos criar um possível circuito lógico. Vamos agora ver como seria o circuito lógico tendo por base a equação acima, veja que em todas as interseções de fios em que há ligação física, deve também haver um ponto (com tamanho razoável), como se fosse uma “solda”. Então, quando não existe o referido ponto na interseção de fios, significa que estes fios estão “eletricamente isolados”. Vamos ver: Circuito Lógico 01 O circuito pode também ser desenhado por meio de uma notação simplificada para os inversores das entradas. Para isso, ao invés de fazer um desenho de um inversor para cada variável que aparece negada na equação, é colocado um círculo junto a cada entrada de cada porta na qual há uma variável negada. Podemos ver que a aplicação desse procedimento para o circuito da figura acima terá como resultado o seguinte desenho: 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 33 Circuito Lógico 02 No caso das equações que possuem a forma produto de somas, também conhecida como canônica ou simplificada, vemos que o primeiro nível será constituído por portas OU, sendo que cada porta responsável por uma das “somas” lógicas da equação. Continuando e chegando ao segundo nível, vemos que é constituído por uma porta E, que irá realizar o produto lógico das parcelas. 20 Tomemos por base a expressão lógica abaixo: Esta equação irá gerar o seguinte circuito lógico: Circuito Lógico 03 Em virtude da constatação de apresentarem apenas dois níveis de portas ou dois níveis lógicos, circuitos para equações que são representadas nas formas padrão, canônicas ou simplificadas, são chamados de: circuitos em dois níveis ou lógica a dois níveis. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 34 21 Vamos observar a seguinte equação, que é a fórmula mínima para o circuito lógico abaixo: Esta equação servirá para criar o seguinte circuito lógico: Circuito Lógico 04 Observe que este circuito é de menor complexidade que os circuitos que vimos anteriormente. A complexidade relativa de um circuito lógico é calculada ao somarmos o número de entradas das portas. Nos circuitos que vimos anteriormente notamos a presença de quatro portas de três entradas e uma porta de quatro entradas. Consequentemente, a complexidade relativa será: 4x3+1x4=16. No circuito da figura acima visualizamos duas portas de duas entradas e duas portas de três entradas. Então podemos dizer que a complexidade relativa será 2x2+2x3=10. Fica evidente que o circuito da figura acima possui menor complexidade em relação aos circuitos vistos anteriormente. 22 Os circuitos para formas fatoradas são vistos como o caso mais generalista. Geralmente, as formas fatoradas nos levam a circuitos em que o número de níveis lógicos é maior do que 2. Em virtude disso, os circuitos lógicos para formas fatoradas são chamados de circuitos multinível ou também lógica multinível. Estudamos, anteriormente, que às vezes uma forma fatorada apresenta um menor número de operações em relação à respectiva forma padrão. Quando isso ocorre, o circuito associado à forma 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 35 fatorada também terá menor complexidade relativa. Contudo, caso não haja redução no número de operações, mesmo assim é possível que o circuito para a forma fatorada tenha menor complexidade relativa, pois o conceito de complexidade relativa inclui também o número de entradas de cada porta. Sendo assim, a forma mais segura e objetiva de saber se o circuito associado à forma fatorada possui menor complexidade ou não é fazer um desenho e somar o número de entradas. Circuito Lógico 05 Circuito Lógico 06 A figura acima mostra o circuito para a seguinte equação: Observe que o número de operações booleanas desta equação é quatro. Entretanto, a complexidade do circuito da forma fatorada é 3x2+1x3=9, consequentemente é menor do que a complexidade do circuito 2.5. 23 RESUMO Neste módulo tivemos a oportunidade de verificar a importância das portas lógicas e sua utilidade. Conhecemos as Leis Fundamentais e Propriedades da Álgebra booleana e com este conhecimento entendemos a importância da teoria para a fundamentação do conhecimento. Tivemos a oportunidade de, por meio de equações booleanas, criarmos um Circuito Lógico e vermos a complexidade da interação dos componentes de um sistema computacional. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 36 UNIDADE 2 – FUNCIONAMENTO DOS CIRCUITOS COMBINACIONAIS E SEQUENCIAIS MÓDULO 3 – CIRCUITO COMBINACIONAL 01 1- TIPOS DE CIRCUITOS Neste módulo teremos a oportunidade de estudar o que são os circuitos sequencial e combinacional. Você compreenderá que a partir de um circuito combinacional podemos criar uma tabela de condição e notação. Ao final falaremos sobre circuitos combinacionais de interconexão que têm a responsabilidade pelas operações lógicas e aritméticas em um sistema digital (computador). Como já falamos nos módulos anteriores, nos sistemas digitais, os circuitos lógicos podem ser de dois tipos: • circuitos sequenciais e • circuitos combinacionais.Os componentes de um circuito sequencial são: • circuito combinacional e • elementos de memória. Estão conectadas somente ao circuito combinacional as entradas e as saídas do circuito sequencial. Os elementos de memória são circuitos com capacidade de armazenamento de informação codificada em binário. Interessante observar que algumas das saídas do circuito combinacional são entradas para os elementos de memória, recebendo o nome de: variáveis do próximo estado. Consequentemente, as saídas dos elementos de memória constituem parte das entradas para o circuito combinacional e recebem o nome de: variáveis do estado atual. As ligações ou conexões entre o circuito combinacional e os elementos de memória são geralmente chamados de laço de realimentação, em virtude da saída de um bloco ser a entrada para o outro e vice- versa. 02 A informação guardada nos elementos de memória em um determinado instante evidencia em que estado está o circuito sequencial. O circuito sequencial recebe informação de forma binária das entradas que, juntamente com a informação do estado atual, vão determinar os valores das saídas e os valores do próximo estado. Sendo assim, fica explícito que as saídas de um circuito sequencial não dependem apenas das entradas, dependem também do estado atual, guardado nos elementos de memória. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 37 Podemos dizer o mesmo sobre as variáveis de próximo estado. Em função deste comportamento sequencial, um circuito sequencial é especificado pela sequência temporária de entradas, saídas e estados internos. Observe a figura abaixo que mostra um circuito sequencial. Circuito Sequencial 03 Um circuito combinacional constitui-se por um conjunto de portas lógicas, as quais determinam os valores das saídas diretamente tendo por base os valores atuais das entradas. Podemos dizer que no circuito combinacional é realizada uma operação de processamento da informação, que poderá ser detalhada utilizando-se um conjunto de equações booleanas (0 ou 1 / V ou F / Sim ou Não / Y ou N). No caso, cada maneira de combinar os valores de entrada poderá ser vista como um resultado diferente e cada grupo de valores de saída representam o resultado da operação. Podermos observar, na figura abaixo, um diagrama de blocos (ilustrativo) de um circuito combinacional. 04 Para fazermos uma análise de um circuito combinacional é preciso entendê-lo e determinar qual será o seu comportamento. Consequentemente, tendo por base um diagrama qualquer de um determinado circuito, procura-se encontrar equações que podem descrever suas saídas. Conseguindo encontrá-las 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 38 (equações), poderemos conseguir uma “tabela verdade”, caso venha ter necessidade. Será de suma importância checar se o circuito é combinacional e não sequencial. Diagrama genérico de um circuito sequencial segundo o modelo de Mealy 05 Uma maneira eficiente para conseguir determinar as equações que descrevem as saídas de um circuito combinacional será possível observar abaixo: 1. Nomear as variáveis associadas a cada saída de cada porta do circuito, exceto aquelas saídas que já possuem um nome (exemplo: as saídas do circuito); 2. Tendo como orientação a esquerda, e seguindo uma ordem de precedência determinada pelas ligações, escolher as equações associadas a cada variável, até que as equações de todas as saídas tenham sido encontradas. Conseguindo determinar as equações das saídas, a montagem da tabela verdade será direta, havendo uma coluna para cada saída. Vamos reforçar o conceito do que é um circuito combinacional? Então podemos dizer que um circuito combinacional é todo circuito cuja saída tem dependência direta das várias combinações das variáveis de entrada. Por meio do estudo desses circuitos, iremos conseguir entender o funcionamento de circuitos somadores, somadores completos, subtratores, codificadores, decodificadores, circuitos que executam prioridades, dentre outros circuitos que são utilizados na arquitetura (construção) de computadores ou sistemas digitais. Para construir um circuito, como já falamos anteriormente, é necessário conhecer sua expressão característica. Uma maneira eficiente de construir a expressão de um problema consiste em construir a tabela verdade para cada situação do problema para, em seguida, 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 39 obter a expressão. Observe a figura abaixo e veja uma sequência para construção de uma expressão. Variável Em um programa de computador, uma variável é um objeto (uma posição, geralmente localizada na memória) capaz de armazenar e representar um determinado valor ou uma expressão. 06 O que você acha de fazermos um exemplo utilizando duas variáveis para melhor compreender como funciona um circuito? Então vamos observar a figura abaixo para iniciarmos: Iremos utilizar a figura acima, que representa um cruzamento de ruas em uma cidade, para melhor compreender o funcionamento de um circuito combinacional. Nesta cidade, há a necessidade de instalação de semáforos automatizados para controle do fluxo dos carros nas ruas A e B. Na figura acima vemos a representação do cruzamento das ruas A e B, cada rua com o seu respectivo semáforo. A rua “B” tem o semáforo 2 e a rua A, que é preferencial, tem o semáforo 1. As seguintes características devem ser observadas para automatização dos semáforos: 1- Quando houver carros trafegando somente na rua B, o semáforo 2 deverá permanecer “verde” para os carros trafegarem livremente. 2- Da mesma maneira, quando houver carros trafegando somente na rua A, o semáforo 1 deverá permanecer “verde”. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 40 3- Quando houver carros trafegando em ambas as ruas, o semáforo da rua A deve ficar “verde”, pois é a rua preferencial. 07 2- TABELA CONDIÇÃO/NOTAÇÃO Tendo por base as características apresentadas para automatizar os semáforos, então iremos criar um circuito lógico para solucionar esta situação, mas antes de mais nada, iremos criar uma expressão. Contudo, vamos visualizar a figura abaixo (Tabela Condição/Notação) para entendermos as condições e então estabelecermos uma notação. Observe na figura anterior (Tabela Condição/Notação), na qual para cada condição há uma notação. Veja que a lógica booleana está sendo usada. Exemplo: existência de carro na rua A, então a variável A receberá o valor 1, A = 1. Inexistindo carro na rua A, então a variável A receberá = 0. Relembrando: 0 e 1, podemos utilizar o numeral “1” para indicar que está ligado, e numeral “0” para indicar que está desligado. 08 Tendo por referência o que estudamos até agora, vamos montar uma tabela verdade com cada situação, podemos assim analisar cada situação. Veja na figura abaixo que começamos com a situação O (zero). Vamos lá. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 41 Observando a figura acima, vamos iniciar com a situação 0. Conforme falamos no início, esta situação representa que não há veículos nas ruas (A=0 e B=0). Desta forma, não é importante qual sinal permaneça aceso. Nestas situações, também chamadas de irrelevantes, utiliza-se o símbolo Ø para indicar que as variáveis podemassumir tanto o valor “0” ou o valor “1”. Observando a situação 1, notamos que a variável B recebeu o valor 1 (B=1). Esta situação representa a presença de veículos na rua B e que não há veículos na Rua A. Então, conforme a regra estabelecida, é preciso acender o sinal verde do semáforo 2 para a rua B. Note, também, que R1 está ligado (1) indicando que o sinal vermelho do semáforo 2 (rua A) está aceso (ligado) na para quem trafega na Rua A. Lembre-se de também observar a figura (Tabela Condição/Notação) para relembrar a dinâmica do tráfego. 09 Veja a situação 2. Note a representação da presença de veículos na rua A (A=1) e a inexistência de veículos na Rua B (B=0). Então, torna-se necessário acender o sinal verde na rua A e o sinal vermelho no semáforo 2 (Rua B). Observando a situação 3, verificamos a representação da presença de veículos em ambas as ruas. Nesta situação, o sinal verde para a rua A deve permanecer aceso, pois ela é preferencial. Consequentemente, na rua B o semáforo estará vermelho (sinal vermelho). 10 Observe a situação 0. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 42 Há saídas que convencionamos chamar de “irrelevantes”, uma vez que não importa qual sinal permanece aceso, então, pode-se omitir o que estiver com o símbolo Ø, e deixar a tabela apenas com os 0 e 1. Então, é possível entender o porquê do sinal 2 permanecer aceso no verde. Veja a tabela verdade abaixo com os valores preenchidos. Durante a construção das tabelas verdade, tomemos por base a situação 0, com saídas irrelevantes, em que é indiferente qual sinal permanece aceso. Consequentemente, é possível adotar que o verde do sinal 2 (semáforo 2 da rua B) permaneça aceso. Então, vamos escrever uma tabela verdade com novos valores preenchidos para a situação 0, lembrando que cada saída, G1, R1, G2, R2 terá um circuito independente. Veja, a seguir, como fica. 11 Iniciando pela escrita da expressão de G1, em quais situações G1 acende? Antes de iniciarmos, é importante consultar a tabela verdade. Iniciando pela escrita da expressão de G1, em quais situações G1 acende? Resposta: nas situações 2 OU 3 Veja resolução da situação 2 Veja resolução da situação 3 Como se tem G1=1 na Situação 2 OU (OR) Situação 3, uma porta OU contendo as expressões tanto da situação 2 quanto da situação 3 resultará no valor 1 nesses casos, que representa a situação referente ao verde aceso do semáforo 1, consequentemente a expressão seria a seguinte: 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 43 G1 = + A.B Tabela verdade Lembre-se de que, em qualquer bloco (porta ou função) lógico somente dois estados (0 ou 1) são permitidos em suas entradas e saídas. Vale a pena rever aqui algumas formas de representação de blocos: E (AND) OU (OR) NÃO (NOT) NÃO E (NAND) NÃO OU (NOR) OU EXCLUSIVO (XOR) Resolução da situação 2 Na situação 2 o preenchimento da equação é: Quando G1=1 quando A = 1 e B = 0, ou seja, A = 1 E = 1 Usando uma porta E, é possível escrever G1=1 quando A . =1 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 44 Resolução da situação 3 Na situação 3 seria: Quando G1=1 (verde do sinal 1 aceso) quando A = 1 e B = 1 Portanto, G1=1 quando A.B =1 12 Agora, em quais situações R1 (vermelho do sinal 1 aceso) acende? Resposta: nas situações 0 OU 1 Veja resolução da situação 0 Veja resolução da situação 1 Como se tem R1=1 na situação 0 OU situação 1, uma porta contendo as expressões tanto da situação 0 quanto da situação 1 resultará no valor 1 nesses casos, que representa a situação referente ao vermelho aceso do semáforo 1 Escreva as expressões quando • G2 = 1 • R2 = 1 G2 = 1 nas situações 0 OU 1 • Situação 0: = 1 • Situação 1: = 1 Portanto: R2= 1 nas situações 2 OU 3 • Situação 2: = 1 • Situação 3: = 1 Portanto: 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 45 Veja resolução da situação 0 Situação 0: R1=1 quando A = 0 e B = 0, ou seja, = 1 e = 1 Usando uma porta E, é possível escrever R1=1 quando . =1 Resolução da situação 1 Situação 1: R1=1 quando A = 0 e B = 1 Portanto, R1=1 quando .B =1 13 Com o intuito de ilustração, veja abaixo uma representação das equações e do circuito lógico. 14 3- Circuito combinacional Dando continuidade ao nosso estudo sobre arquitetura de organização de computadores, veremos o que é um circuito combinacional. Cabe ressaltar que o autor Willian Stallings chama circuito combinacional de circuitos combinatórios. Também teremos a oportunidade de estudar os tipos de circuitos combinacionais e o que seja o projeto de um multiplicador e de um decodificador. Vamos começar nosso estudo. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 46 No livro Arquitetura e Organização de Computadores, o autor Willian Stallings define que: Um circuito combinatório consiste em uma interconexão de portas lógicas (ou circuitos lógicos, dispositivos que operam um ou mais sinais lógicos de entrada para produzir uma e somente uma saída, dependente da função implementada no circuito). Portas lógicas são geralmente usadas em circuitos eletrônicos, em virtude das situações que os sinais deste tipo de circuito apresentem para presença de sinal o valor "1"; e a ausência de sinal "0". As situações chamadas de "Verdade" e/ou "Falso" são estudadas na lógica de Boole (lógica matemática), que é a origem do nome destas portas. A maneira de como é o comportamento das portas lógicas é conhecido pela tabela verdade, que apresenta os estados lógicos das entradas e das saídas. Desta forma, como em uma porta simples, a alteração de sinais de entrada é quase imediatamente seguida pela alteração correspondente no sinal de saída, apenas com retardo devido à transmissão de sinais por meio das portas do circuito. Portas lógicas As portas lógicas são circuitos eletrônicos que operam com um ou mais sinais de entrada de forma a produzir um sinal de saída. Uma vez que computador digital processa informações como um conjunto de sinais elétricos que podem ser considerados para representar valores binários onde um determinado valor pode ser interpretado como zero ou um. 15 Em termos gerais, um circuito combinatório consiste de n entradas binárias em m saídas binárias. Assim como uma porta, um circuito combinatório pode ser definido de três formas: No início da eletrônica, para ter uma solução para os problemas, utilizavam-se os sistemas analógicos. Com a evolução da tecnologia, os problemas passaram a ser resolvidos pela eletrônica digital. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 47 Na eletrônica digital, os sistemas (computadores pessoais, processadores, codificadores, decodificadores etc.) empregam um grupo pequeno de circuitos lógicos básicos, que são conhecidos como portas (e, ou, não e flip-flop). Com a utilização adequada dessas portas tem-se a possibilidade de implementação das expressões geradas pela álgebra booleana. Sistemas analógicos Dispositivos que manipulam quantidadesfísicas sob a forma analógica. Nestes sistemas, as quantidades variam continuamente dentro de uma faixa de valores. Exemplo de equipamentos analógico: videocassete. 16 Vale lembrar que, na álgebra de Boole ou Booleana, existem apenas dois estados (valores ou símbolos) que são permitidos, sendo o estado 0 (zero) e o estado 1 (um). Sendo assim, na álgebra de Boole ou booleana, se representarmos por 0 uma situação, a situação contrária é representada por 1 e assim por diante. Consequentemente, em qualquer bloco (porta ou função) lógico somente esses dois estados (0 ou 1) são permitidos em suas entradas e saídas. Vale a pena rever aqui algumas formas de representação de blocos: E (AND) OU (OR) NÃO (NOT) NÃO E (NAND) NÃO OU (NOR) OU EXCLUSIVO (XOR) 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 48 Tabela Verdade 17 Para fixar bem esse assunto e compreender melhor o conceito de portas lógicas e tabela verdade, assista ao vídeo a seguir. https://www.youtube.com/watch?v=17JHVZuK36A 18 4- CIRCUITOS COMBINACIONAIS DE INTERCONEXÃO Os circuitos combinacionais têm a responsabilidade pelas operações lógicas e aritméticas em um sistema digital (computador). Estes circuitos fazem muito mais que apenas operações lógicas e aritméticas, há ainda outras funções necessárias para a realização de ligações entre os diversos operadores. Dentre essas funções há: • a multiplexação e • a decodificação. Os responsáveis por realizar essas operações são denominados multiplexadores e decodificadores, respectivamente, e são também circuitos combinacionais. 4.1 - DECODIFICADORES Um decodificador é um circuito combinacional usado para ativar ou habilitar um (e somente um) dentre mcomponentes. Assume-se que cada componente tem um índice entre 0 e m-1, representado por um endereço em binário. Um decodificador n : m (lê-se n por m ) possui n entradas e m saídas, com m ≤ 2n. 19 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 49 No caso de um decodificador 3:8 (n =3 : m =8), serão 8 saídas, onde cada saída pode ser vista como um diferente endereço. Para ativar uma dentre 8 saídas, são necessárias 3 variáveis de entrada (por isso 3:8). Cada arranjo das variáveis de entrada seleciona uma e apenas uma dentre as 8 saídas, de tal maneira que cada saída apenas será selecionada por um dos 8 arranjos. Desta maneira, é presumido que se associe a cada saída um índice decimal que represente o arranjo de entradas responsável pela sua ativação. Tendo por base a ativação em lógica direta, sendo assim, uma saída está ativada quando seu valor é 1, então uma tabela verdade para um decodificador 3:8 poderia ser conforme a figura abaixo: Observe que uma saída terá o valor 1 para um determinado arranjo das variáveis de entrada. Para cada combinação de entrada só é ativada uma dentre todas as 8 saídas. O circuito de um decodificador 3:8 terá, portanto, 8 saídas, sendo cada saída um dentre os 8 termos possíveis para uma função Booleana de 3 variáveis. 20 Um decodificador pode vir a possuir uma entrada de enable (habilitação). Esta entrada tem a função de habilitar ou desabilitar seu funcionamento. Assim, se esta entrada tiver o valor 0, nenhuma saída estará ativada, independente dos valores das demais entradas. Caso a entrada de habilitação tiver o valor 1, o decodificador estará ativando uma das saídas. Na figura abaixo há uma tabela verdade de um decodificador 2:4: 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 50 Como pode ser visto nas primeiras 4 linhas, o sinal de habilitação (E) vale zero, o que desativa as saídas, independentemente dos valores das demais entradas (A1e A0). 21 Poderemos escrever novamente esta tabela de uma maneira mais enxuta, escrevendo em uma linha que, quando E=0, os valores das entradas A1 e A0 não interessam (=don’t cares de entrada): Figura A Figura B Nas figuras acima, observamos na figura A uma tabela para esse decodificador e na figura B visualiza-se uma possível implementação (circuito lógico). 22 Resumo Neste módulo tivemos a oportunidade de estudarmos juntos a importância do entendimento do que seja um circuito sequencial e um circuito combinacional. Vimos que em especial o circuito combinacional é constituído por um conjunto de portas lógicas, as quais determinam os valores das 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 51 saídas diretamente tendo por base os valores atuais das entradas. Você compreendeu, ao relembrar da importância da lógica booleana, que é a partir de um circuito combinacional que podemos criar uma tabela de condição e de notação. UNIDADE 2 – FUNCIONAMENTO DOS CIRCUITOS COMBINACIONAIS E SEQUENCIAIS MÓDULO 3 – CIRCUITO SEQUENCIAL 01 1 - CIRCUITO SEQUENCIAL Dando continuidade ao nosso estudo sobre arquitetura de organização de computadores, neste módulo vamos entender o que é um circuito sequencial, conhecer os principais tipos de circuitos sequenciais e o circuito equivalente a partir de uma expressão lógica. Também durante o estudo deste módulo iremos definir o que seja circuito sequencial, quais os tipos de flip-flops e entendermos o que é uma memória. Para começarmos a definir um circuito sequencial, precisamos relembrar que os circuitos combinatórios implementam as funções básicas de um computador digital. Contudo, exceto no caso especial da ROM, eles não disponibilizam informação de estado ou memória, elementos também essenciais para a operação de um computador digital. Para esse fim, utiliza-se uma forma mais complexa de circuito lógico digital, conhecido por circuito sequencial. A saída corrente de um circuito sequencial tem dependência não somente da entrada corrente, também tem de valores anteriores da entrada. Outra maneira, e normalmente mais útil, de visualizar esses circuitos é que a saída corrente de um circuito sequencial depende da entrada corrente e do estado do circuito. Isso quer dizer que, para se obter o próximo estado do sistema (circuito sequencial), é necessário lembrar-se do estado atual (em outros termos, o caminho que me leva à sala depende do lugar na casa onde estou). Significa que o sistema necessita possuir memorizar o estado atual para alcançar o estado seguinte. A lição disso é que o circuito sequencial necessita de elementos de memória. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 52 ROM Read-Only Memory (ROM), que em português quer dizer “Memória de Apenas Leitura”. Basicamente, a função da memória ROM é oferecer dados apenas para leitura. Normalmente, a ROM é utilizada para armazenar firmwares, pequenos softwares que funcionam apenas no hardware para o qual foram desenvolvidos e que controlam as funções mais básicas do dispositivo. Na ROM de uma calculadora, por exemplo, podemos encontrar as rotinas matemáticas básicas. No caso de celulares, o normal é que as ROMs carreguem o sistema operacional e os softwares básicos do dispositivo. 02 Dentre os tipos mais conhecidos de circuito sequencial, iniciaremos pela forma mais básica, que é o flip- flop. Há uma variedade de flip-flops, todos compartilhando duas características: 1- O flip-flop é um dispositivo biestável. Existe em 1 de 2 estados estáveis e, na falta de sinal de entrada,permanece nesse estado. Portanto, o flip- flop funciona similarmente a uma memória de 1 bit. 2- O flip-flop tem duas saídas, que geralmente possuem valor complementar uma da outra. Essas saídas são normalmente rotuladas de: Q e No intuito de exemplificar, é possível visualizar na figura uma configuração comumente reconhecida como flip-flop S-R ou latch S-R. Este circuito possui duas entradas, S (Set -) e R (Reset), e duas saídas, Q e , e consiste de duas portas NOR (NÃO OR), conectadas de forma que a saída retorna como entrada para a outra. Inicialmente, observe por que esse circuito é biestável, ou seja, tem dois estados. Imaginemos que tanto R quanto S tenha valor zero (0) e que Q também tenha o valor zero (0). As entradas da porta NOR inferior são Q=0 e S=0. Portanto, a saída =1 isto tem o significado que as entradas para a porta NOR superior são =1 e R=0, o que terá como saída Q = 0. Desta maneira, o estado do circuito é coerente internamente, e permanece estável desde que S = R = 0. Um raciocínio análogo mostra que o estado Q = 1, = 0 também é estável, para R = S =0. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 53 Flip-flop Um flip-flop é um circuito básico que armazena um bit de informação. 03 Agora vamos abordar a memória. Antes de qualquer coisa é preciso entender que a maioria dos dispositivos ou circuitos possuem dois estados estáveis, chamados de biestável. Uma lâmpada pode estar ligada ou desligada, dependendo da posição do interruptor. Determinado circuito poderá fazer uso de um componente que armazene (memória) sobre o estado que se encontra (ligado ou desligado), permanecendo em um estado definido até que alguém ou algo mude este estado. Quando um sinal de entrada é aplicado num dispositivo, a saída muda em resposta à entrada. Quando o sinal de entrada é retirado, a saída volta ao seu estado original. Este dispositivo não mostra a propriedade de memória, em virtude de sua saída voltar ao estado anterior. Há dispositivos e circuitos digitais que possuem memória. Esta característica faz que, ao receberem determinado sinal de entrada, esta informação fique guardada na memória. A saída desta informação da memória poderá mudar seu estado ou não, podendo inclusive permanecer o valor da entrada mesmo após a entrada ter sido retirada. Sendo assim, chama-se de memória a propriedade de reter sua resposta a uma entrada momentânea. Consequentemente, memória é todo dispositivo que mantém indefinidamente uma informação ao longo do tempo. Ao mencionar dispositivos com capacidade de memória, lembramos geralmente da mente humana e dos processadores digitais, entretanto, há vários tipos de memória. Pode parecer estranho e provavelmente você já sabe, mas os livros, fotos, CDs e DVDs de música são também dispositivos de memória. Até coisas simplórias podem ter a função de memória. Alguns historiadores dizem que o famoso Einstein usava uma caneta no bolso do lado esquerdo ou direito para poder lembrar se já havia ou não almoçado. 04 Nos sistemas digitais que têm por base a lógica combinacional, os estados de suas saídas são dependentes apenas dos estados presentes (agora) das entradas, logo, estes sistemas não conseguem lidar com a variável tempo e perceber sequências de eventos, portanto, não têm capacidade de resolver qualquer problema que envolva a noção de tempo. Usaremos como exemplo um controle automático de enchimento de uma caixa de descarga (caixa acoplada ao vaso sanitário). O objetivo é que o sistema controle a válvula de entrada V a partir de dois sensores de nível de água A e B, como no esquema a seguir. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 54 Um circuito de lógica sequencial possui elementos de armazenamento e as saídas não são dependentes apenas das entradas presentes no momento. Elas dependem também de valores armazenados. Sendo assim, pode ser visto como uma parte puramente combinatória juntamente com uma memória. Ao conjunto formado pelo bloco combinacional e também com mais um dispositivo de memória é o que chamaremos de lógica sequencial. Nesta lógica, os estados presentes das saídas não são dependentes apenas dos estados das entradas, mas são também dependentes dos estados anteriores do próprio sistema (memória). Uma solução para o problema da caixa de descarga é usarmos um dispositivo de memória com a capacidade de guardar um bit, que é a definição funcional de flip-flop. 05 2- SISTEMAS DIGITAIS Os sistemas digitais estão divididos em duas classes: • sistemas combinacionais e • sistemas sequenciais. Como já estudamos anteriormente, nos sistemas combinacionais, uma saída no tempo t depende somente da entrada no tempo t. Sendo assim, o sistema não possui memória em virtude da saída não depender de entradas anteriores. Consequentemente, a saída depende unicamente das variáveis de entrada. Para melhorar o entendimento, usaremos como exemplo um cadeado que utiliza números (códigos), geralmente utilizado para prender bicicletas no bicicletário. Este tipo de cadeado poderá ser aberto num dado tempo X quando a sequência numérica (código) do cadeado for colocado nas entradas em X, sem considerar a história das entradas. Caso o código utilizado seja 802, por exemplo, o cadeado somente será aberto quando a referida combinação for colocada nas entradas, independentemente da ordem adotada na colocação dos dígitos do código. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 55 Nos sistemas sequenciais, uma saída no tempo X depende da entrada no tempo X e será bem possível que também haja dependência da entrada no tempo anterior a X. A saída tem dependência das variáveis de entrada e/ou de seus estados anteriores guardados. 06 Outro exemplo interessante é o sistema de discagem telefônica. Um número utilizado por um usuário quando for discado será feito em um determinado momento X, caso sejam atendidas as seguintes condições: a) os números discados antes do instante X devem seguir uma sequência conforme o número do usuário; b) o número discado no instante X, isto é, o último a ser discado, corresponde ao último dígito do número do usuário; c) todos os números devem estar na memória e estarem disponíveis na mesma ordem da discagem no instante X. Ao obter o efeito memória (buffer realimentado) precisamos entender que construtivamente, um flip- flop pode ser descrito como um inversor realimentado por outro inversor, conforme pode ser observado na figura abaixo. Ao olharmos para a figura acima, podemos perceber que uma vez determinado um dos estados lógicos à entrada D, o estado da saída Q se manterá de forma sem definição. Como poderíamos mudar o estado de Q sem provocar uma contradição com o estado de Q? Vejamos a seguir. 07 Para mudar o estado de Q sem que provoque uma contradição com o estado de Q, a solução é adicionar terminais de entrada, trocando os inversores por portas lógicas Não-E. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 56 Sendo assim, podemos levar (Q = 1) impondo 0 em S (set) e levar (Q = 0) impondo 0 em R (reset), armazenando o estado que desejamos no flip-flop. Entretanto, o flip-flop necessita de aperfeiçoamento para atender à definição lógica de flip-flop, que é um dispositivo com duas saídas complementares Q e Q, com duas entradas S e R que operamde acordo com a tabela abaixo. 08 3- CIRCUITOS ELETRÔNICOS Numa breve explicação sobre circuito eletrônico podemos dizer que uma de suas características é ser biestável em virtude de possuir dois estados estáveis, isto é, sua saída é 0 (nível lógico 0) ou 1 (nível lógico 1). Assim, este dispositivo pode ser usado para armazenar um dígito binário (bit). Para melhorar o entendimento dos conceitos que iremos estudar, vamos inicialmente falar sobre Latch, que é a forma mais básica de se implementar um circuito lógico de memória. Latch significa, em português, trinco, ferrolho. O Latch é um circuito sequencial biestável assíncrono (muda de estado sem necessidade de sincronismo), sendo assim, é um circuito constituído por portas lógicas, podendo armazenar um bit de informação, onde as saídas em determinado momento dependem dos valores de entrada. Latches controlados D e RS são controlados ou ativados pelo nível lógico do sinal de controle. O significado é que enquanto houver o sinal de controle ativando o latch, eventuais mudanças nas entradas D ou R e S serão detectadas pelo latch e por consequência irá mudar de estado. Essa característica não é bem-vinda na construção de circuitos sequenciais síncronos, isto é devido ao fato de, nestes circuitos, qualquer mudança de estado deve acontecer de forma sincronizada conforme o sinal do clock (relógio). 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 57 Os flip-flops são circuitos que têm por referência os latches, porém sua ativação é feita pela transição do sinal de controle. Esta característica faz que um flip-flop se mantenha ativado apenas durante um pequeno intervalo de tempo, após a ocorrência de uma transição do sinal de controle. Sendo assim, uma provável troca de estado só deve ocorrer durante esse pequeno intervalo de tempo em que o flip- flop está ativado. O flip-flop mantém o último estado adquirido entre duas transições sucessivas do mesmo tipo (ou subida ou descida) do sinal de controle. 09 Já falamos anteriormente sobre flip-flops, mas está faltando uma definição formal do que venha a ser. Um flip-flop é um elemento de circuito que pode apresentar em seu funcionamento apenas dois estados estáveis. Aplicando um sinal de entrada poderá haver a mudança de um estado para outro e desta forma pode-se conhecer o respectivo estado do sinal em que se encontrava. Exemplo: um sinal é aplicado podendo ser 0 ou 1, caso o estado estivesse 0 ao aplicar o sinal 1 haveria mudança de estado e vice-versa. Sendo assim, este circuito é considerado como uma célula básica de memória da lógica sequencial capaz de guardar um bit. Na tabela acima vemos os possíveis estados do flip-flop. Vale lembrar que ele armazena apenas 1 bit e que este armazenamento obedece a regras de estabilidade, conforme estudamos nos parágrafos anteriores. Veja no quadro abaixo uma demonstração do S (set), R(reset) e o Q que é a saída. 10 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 58 Existem vários tipos de flip-flop, tais como: FLIP-FLOP SR BÁSICO, FLIP-FLOP JK, FLIP-FLOP JK Mestre- Escravo, FLIP-FLOP JK Mestre-Escravo com terminais de programa, FLIP-FLOP T e FLIP-FLOP D. Neste momento iremos falar especificamente do FLIP-FLOP SR BÁSICO. Ele possui duas entradas, definidas como Set e Reset e duas saídas Q e Q. Estas saídas somente podem permanecer com valores lógicos complementares. 11 4- MEMÓRIAS As memórias são dispositivos semicondutores que guardam informações na forma binária. Estas informações são constituídas de números, letras, caracteres diversos, comandos, operações, endereços e etc. Os bits das informações podem ser acessados no momento de leitura ou gravação/substituição, ou no procedimento de escrita ou armazenamento. As memórias semicondutoras são utilizadas como memória principal (interna) ou memória de trabalho de uma máquina (computador), pois mantêm comunicação constante com a unidade central de processamento (CPU) à medida que um programa de instruções está em execução. Outra maneira de armazenar no computador é pela memória auxiliar (externa) ou memória de massa ou memória secundária, que trabalha em uma velocidade inferior a memória principal e armazena programas e dados que não estão sendo usados a todo o momento pela CPU ou UCP. Para evitar troca excessiva de informações e instruções, esta memória transfere as informações para a memória principal apenas quando for necessário ou solicitado no processamento. 12 Uma memória guarda ou acessa as informações digitais em lugares denominados localidades, mediante o uso de um endereço (endereçamento). Para acessar estas localidades, um bloco possui uma série de 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 59 terminais de entradas de endereços que são ligados a um conjunto de fios denominado barra de endereços (inglês= addres bus). Para a entrada e saída dos dados, da mesma forma, o bloco possui uma série de terminais ligados à barra de dados (inglês= data bus). O bloco ainda possui terminais de controle ligados à barra de controle (inglês= control bus). A barra de dados é bidirecional, sendo assim, pode ser utilizada tanto como entrada como para saída de dados, onde um dos terminais da barra de controle irá definir o sentido. As memórias são especificadas pela notação N x M, onde N indica o número de localidades de memória (palavras) e M indica o número de bits da informação armazenada por localidade. O número de bits que podem compor uma palavra varia de computador para computador, estando na faixa de 4 bits até 36 bits, geralmente. Uma dada "pastilha" de memória guardará um dado número de palavras de tantos bits por palavra. Tomemos por exemplo uma pastilha de memória popular que a capacidade de armazenar 1024 palavras de 4 bits cada, totalizando 4096 bits (4K), que é a tamanho total de memória. 13 A maneira como é organizada uma pastilha de memória é por meio do estabelecimento de como é constituída por um grupo de registradores, onde cada registrador armazena uma palavra. A "largura" de cada registrador é o número de bits por palavra. O número de registradores é o número de palavras guardadas na memória. Valores comuns para o número de palavras por pastilha são 64, 256, 512,1024, 2048 e 4096. A maioria deles são de base dois (potências inteiras de 2). Os valores mais comuns para o tamanho da palavra são 1, 4 e 8. Também há a possibilidade de obtenção de outros tamanhos para as palavras, ao se combinar várias pastilhas de memória. As informações que estão em cada registrador estarão sujeitas a duas operações que são possíveis: escrita e leitura. A leitura é o processo de obtenção da palavra que está guardada no registrador e remetê-la para outra localização, onde poderá ser utilizada. As informações que estão guardadas no registrador não serão modificadas pela operação de leitura. A escrita é o processo de por uma nova palavra em um determinado 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 60 registrador. Fica evidente que a operação de escrita remove a palavra que estava previamente guardada no registrador. Contudo, não são todas as pastilhas de memória que possuem a propriedade de ter o seu conteúdo escrito. Palavra Palavra (inglês: word) é a unidade natural de informação usada pelo computadores. É uma sequência de bits comtamanho fixo e que é processado em conjunto em uma determinada máquina. O número de bits em uma palavra (tamanho / comprimento da palavra) é uma característica preponderante da arquitetura de um computador. Esta característica ecoa em vários aspectos de sua estrutura, da sua operação e na indicação da unidade de transferência entre a UCP e MP (memória principal). 14 Com todas as diferenças existentes na implementação de cada um dos tipos de memória e mesmo com toda evolução computacional, ainda permanecem da mesma forma a implementação e os princípios básicos de operação da memória. Particularmente em cada sistema há certo conjunto de tipos diferentes de entrada e saída para a realização das seguintes funções: a. Eleger o endereço que está sendo utilizado em determinada operação de leitura ou escrita; b. Escolher a operação que deverá ser realizada, leitura ou escrita; c. Ofertar os dados de entrada para a realização da operação de escrita; d. Estabilizar e manter as informações de saída da memória que são resultado de determinada operação de leitura, durante determinado tempo; e. Desativar (ou Ativar) a memória, de maneira a torná-la (ou não) em condições de responder ao endereço na entrada e ao comando de leitura/escrita. As memórias podem ser classificadas quanto: • à forma de acesso, • à volatilidade, • ao tipo de armazenamento, • capacidade de armazenamento e • à tecnologia. Veremos cada um desses tipos a seguir. 15 4.1– FORMA DE ACESSO. As maneiras de acessar uma locação de memória podem ser de dois tipos: acesso sequencial ou aleatório. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 61 16 4.2- VOLATILIDADE Quando falamos que é algo é volátil, geralmente, estamos dizendo que é algo que evapora com facilidade. Outras vezes podemos também entender, usando o sentido figurado, que é algo volúvel, ou seja, instável ou inconstante. Quando falamos em volátil uma substância geralmente lembrada é o éter, que evapora com muita facilidade. As memórias voláteis também possuem esta característica, pois quando é interrompida sua alimentação (corrente elétrica – computador é desligado) as informações armazenadas são perdidas. O exemplo da área da TI são as memórias RAM. Há as memórias que não são voláteis. Elas possuem a propriedade de mesmo sem alimentação permanecerem e manterem as informações que estão armazenadas. O exemplo utilizado da área da TI são as memórias ROM, PROM, EPROM. 17 4.3- TIPO DE ARMAZENAMENTO Quanto ao tipo de armazenamento, as memórias podem ser: 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 62 18 4.4- CAPACIDADE DE ARMAZENAMENTO Quando falamos em capacidade de armazenamento estamos fazendo referência ao número total de bits ou palavras que a memória pode guardar (armazenar). Veja o exemplo: quando lemos, em uma especificação de memória, a seguinte nomenclatura: 1.024 x 8, podemos entender que a numeração de 1.014 corresponde à capacidade de armazenamento de 1.024 palavras. O número 8 indica que cada palavra terá 8 bits, tudo isso totaliza 8.192 bits. 19 4.5– Quanto à tecnologia Quando falamos em tecnologia devemos entender o significado desta palavra. Tecnologia vem do grego (do grego ΤεΧνη — "técnica, arte, ofício" e λογια — "estudo", ou seja, “técnica + estudo") e está relacionada a tudo que envolve conhecimento científico e técnico e sua aplicação na transformação de ferramentas, de processos e nos materiais criados e utilizados a partir deste 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 63 conhecimento. As memórias são construídas com tecnologia que pode utilizar: • semicondutor bipolar, • semicondutor de óxido metálico (MOS) • ou semicondutor de óxido complementar (CMOS). As memórias do tipo bipolares são encontradas nos circuitos TTL padrão, e no Schottkye ECL. As memórias que são do tipo MOS, e utilizam o canal N, são as mais utilizadas em virtude de apresentarem grande densidade e serem de custo baixo. Contudo, as memórias CMOS têm por características serem mais lentas em comparação com as NMOS e bipolares, entretanto, possuem a vantagem de economizarem no consumo de energia e serem imunes a ruídos. Quando falamos em ruído, geralmente, estamos falando de barulho, som alto, poluição sonora ou aquela música que seu vizinho insiste em escutar no último volume. Contudo, quando falamos em ruídos na TI, estamos fazendo referência a todo sinal elétrico que, ao propagar-se por um meio de transmissão, pode sofrer algum tipo de alteração ou degradação. Sendo assim, as distorções de fase ou "ruídos" são perturbações de natureza aleatória, causadas por agentes externos ao sistema. Ruído São distorções de fase ou perturbações de natureza aleatória provocadas por agentes externos ao sistema e que podem causar perturbação ou degradação do sinal elétrico, interferindo em sua transmissão. 20 4.6 Memória flash Você já deve ter ouvido falar em memória FLASH. A memória Flash é um tipo particular de EEPROM (Memória Somente de Leitura Programável e Apagável Eletricamente). Podemos dizer que é um chip de memória de computador que mesmo sem uma fonte de energia mantém as informações armazenadas. A memória flash é geralmente utilizada em aparelhos eletrônicos portáteis, por exemplo: aparelhos de MP3, smartphones, câmeras digitais e pendrives. 102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 64 As memórias flash são assim chamadas em virtude de possuírem tempos curtos para serem apagadas e escritas. A maioria destas memórias apaga um bloco em poucos microssegundos. Contudo, também são encontradas atualmente algumas que permitem apagar dados por setor. Na tabela abaixo é possível verificar as vantagens e desvantagens dentre os vários tipos de memórias semicondutoras não voláteis. À proporção em que há o aumento da flexibilidade para apagar e programar, também há o aumento da complexidade e o aumento proporcional do custo do dispositivo. Microssegundo Microssegundo (mS) é um múltiplo do segundo, uma unidade de tempo, com o prefixo pelos padrões base multiplicador micro (µ), igual a 0,000001 segundo. 21 No intuito de incentivar a leitura e mostrar o quanto a eletrônica e os circuitos elétricos permeiam nosso dia a dia, visite a página da UNICAMP, onde é possível ler uma aula dos professores Zuben e Attux, os quais, numa aula de Introdução à Computação Natural, falam sobre a associação da biologia sintética com a eletrônica, comentam sobre a semelhança entre a interação de enzimas, fatores de transcrição e DNA, e circuitos elétricos, criando um interdisciplinaridade entre a computação e a biologia. Estes estudos nos levam também à nova área chamada nanotecnologia. A nanotecnologia visa produzir objetos e dispositivos na escala atômica (referida como escala nano) a partir dos átomos. Fernando Rebouças, em um artigo escrito para o sítio da Infoescola, diz que por meio da organização de átomos, a nanotecnologia é uma ciência que possibilita a capacidade de criar objetos em diferentes “microescalas” em sistema de planejamento em engenharia molecular. Esta área científica será responsável pela nova revolução industrial avançada. A nanotecnologia está presente na medicina, eletrônica, ciência da computação, física, química, biologia e engenharia.102 – Arquitetura de computadores | Unidade 02 © 2014 - AIEC - Associação Internacional de Educação Continuada 65 Assista a este vídeo sobre as 10 tecnologias de 2013: http://olhardigital.uol.com.br/embed/10-tecnologias-que-devem-crescer-em- 2013/33130 22 RESUMO Durante o estudo deste módulo compreendemos o que é um circuito sequencial e conhecemos os principais tipos de circuitos sequenciais e que a partir de uma expressão lógica conseguimos chegar a um circuito equivalente. Relembramos que, em um circuito combinacional, a saída depende apenas de uma combinação das entradas, enquanto que em um circuito sequencial, a saída depende, além de uma combinação das entradas, de uma combinação das variáveis de estado do sistema, ou seja, de variáveis que identifiquem o estado em que o sistema se encontrava. Vimos os tipos básicos de flip-flops e pudemos entender que as memórias são dispositivos semicondutores, que guardam informações na forma binária. Estas informações são constituídas de números, letras, caracteres diversos, comandos, operações, endereços e etc. Os bits das informações podem ser acessados no momento de leitura ou gravação/substituição, ou no procedimento de escrita ou armazenamento. Vimos que para aprender o que é um circuito sequencial, precisamos relembrar o que são os circuitos combinatórios. A esses circuitos cabe implementarem as funções básicas de um computador digital. Todavia, exceto no caso especial da ROM, eles (circuitos combinatórios) não disponibilizam informação de estado ou memória, elementos essenciais para a operação de um computador digital. Para esse fim, utiliza-se uma forma mais complexa de circuito lógico digital, que vimos que é o circuito sequencial. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 1 UNIDADE 3 – FUNCIONAMENTO E COMPONENTES BÁSICOS MÓDULO 1 – ARMAZENAMENTO DE INFORMAÇÕES 01 1- CIRCUITOS DE ARMAZENAMENTO Circuito de armazenamento é a parte dos circuitos digitais que se responsabiliza pelo armazenamento de informações. Quando falamos em circuitos de armazenamento precisamos entender que, nos sistemas digitais, em especial os computadores, as informações são representadas por meio de conjuntos de binários chamados de “PALAVRAS”. Atualmente, nos computadores, geralmente a PALAVRA tem o tamanho de 32, 64 ou 128 bits. Entretanto, tempos atrás, as estações de trabalho (computadores) usavam apenas 8 e 16 bits. É natural que um sistema digital seja projetado para trabalhar utilizando determinado tamanho de palavra, sendo assim, deve ter os recursos de hardware que suportem simultaneamente armazenar e processar conjunto de “n” bits (lembre-se: “n” corresponde ao tamanho da palavra). No desenvolver do estudo deste módulo, veremos os circuitos digitais responsáveis pelo armazenamento de informação, sendo eles os registradores e as memórias ROM e RAM. Dentre estes circuitos, há aqueles construídos de tal forma que conseguem manipular a informação armazenada. Dentre as operações possíveis, estão os deslocamentos (à direita e à esquerda), o incremento e o decremento. Incremento e decremento São operações aritméticas. Sendo que o incremento – aumenta “um” no operando (contador) e decremento – diminui “um” no operando. Um exemplo de operação de incremento seria: k = k + 1. Seguindo o mesmo raciocínio, o decremento é: K = K – 1. No desenvolvimento de programas para computadores é muito usado incremento e decremento nas estruturas de repetição na variável de controle. Um exemplo relacionado a manipulação de informações nos circuitos de armazenamento, podemos imaginar um circuito contador (Contadores digitais são circuitos implementados a partir de flip-flops) que possui uma conexão específica para cada flip-flop vizinho, de tal forma que os flip-flop de maior ordem é o responsável pela ordem de “incremento” de seu vizinho de menor ordem. 02 2 – REGISTRADORES O registrador é um circuito digital que tem em sua formação “n” flip-flops, que de forma simultânea, consegue armazenar (de forma independente) “n” bits. O registrador é considerado um elemento básico de armazenamento em um processador, podendo 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 2 variar de três até chegar a algumas dezenas. A localização de registradores dentro do processador tem por intuito acelerar o processamento, pois a manipulação dos dados acontece próximo dos recursos de processamento, reduzindo a necessidade de acessar a memória principal. Os registradores são circuitos digitais capazes de armazenar e deslocar informações binárias, e são tipicamente usados como um dispositivo de armazenamento temporário. São empregados na execução de programas de computadores, disponibilizando um local para armazenar dados. Na maioria dos computadores modernos, quando da execução das instruções de um programa, os dados são movidos da memória principal para os registradores. Então, as instruções que utilizam estes dados são executadas pelo processador e, finalmente, os dados são movidos de volta para a memória principal. O termo utilizado para armazenar dados em um registrador é carregar, embora as palavras escrever e armazenar também sejam usadas. A ação oposta a carregar um registrador é conhecida como ler os conteúdos de um registrador. A leitura consiste simplesmente em se conectar às saídas do registrador. Assim percebe-se que a leitura não está sincronizada com o relógio, além disso, não remove os bits do registrador nem os modifica de nenhum modo. 03 A figura abaixo mostra um registrador de quatro bits, com carga paralela, utilizando flip-flops. A letra D representa os flip-flops. Figura 01 Observe a imagem acima e veja que cada flip-flop é o responsável por armazenar um bit, observando a notação posicional, e cada bit possui um caminho independente do restante, tanto na entrada como na saída. É por este motivo que o registrador é chamado de carga paralela. Continuando a observação da figura, vemos que o flip-flop, que tem por índice 3, armazena o bit mais significativo de uma palavra de quatro bits. O índice 0 (zero) armazena o bit menos significativo. Podemos dizer que um registrador tem um funcionamento similar a uma barreira. Vemos na Figura 01 que os dados que estão nas entradas D0, D1, D1 e D3 serão somente copiados caso o sinal CK (relógio) passe por uma borda ascendente. As cópias dos valores feitas na passagem de uma borda ascendente ficarão armazenadas nos flip-flops até que haja uma ocorrência da próxima borda ascendente. Desta forma o registrador fica imune a uma possível mudança indesejada dos sinais. Estes sinais são 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 3 representados por D0, D1, D2 e D3. É na saída Q onde está o valor armazenado em um flip-flop qualquer. Diante desta característica que um dado que estiver armazenado no registrador poderá ser consultado por outro hardware em qualquer momento, mas, para isso acontecer, é necessário haver um caminho, um conjunto de fios, algo físico que estabeleça comunicação entre a saída do registrador e a entrada do outro dispositivo. O outro dispositivo, por exemplo, pode ser um somador/subtrator. Carga paralela É a carga simultânea de todos os bits, por meio da sincronização feita pelo clock (Nos circuitos digitais síncronos, o clock é um sinal usado para coordenar as ações de dois ou mais circuitos eletrônicos). Notação posicional É um modo de representação numérica naqual o valor de cada algarismo depende da sua posição relativa na composição do número. 04 No registrador exemplificado na Figura 01 há uma deficiência importante: toda vez que o sinal de relógio CK passar por uma borda ascendente, os valores das entradas D0, D1, D2 e D3 serão copiados, mesmo não sendo o objetivo desejado. Contudo, cabe à Unidade de Controle coordenar e ordenar os sinais dos circuitos de um computador. Na verdade, o sinal de CK (relógio) tem por função determinar o momento no qual uma ordem deverá ser obedecida. Sendo assim, um registrador de uma máquina (computador) deve possuir os recursos necessários para a realização da carga do dado quando o relógio passar pela borda ativa apenas se o sinal de “load” (carga) estiver ligado. Na figura abaixo é possível observar um registrador de quatro bits com sinal de carga e carga paralela. Figura 02 05 Os desenhos mais complexos de circuitos utilizam preferencialmente o símbolo utilizado na figura abaixo (Figura 03). Isso é feito para facilitar a compreensão e evitando a complexidade de um esquema complet o de um circuito. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 4 A figura abaixo simboliza um registrador de 4 bits. Ele possui uma carga paralela e sinal de carga (o sinal de carga é possível visualizar observando a figura 02 e também a figura 03). O sinal de carga é a representação da passagem de corrente (carga), que no caso da memória é um dado (parte de uma informação). Cabe relembrar a importância do conceito de clock (relógio): é ele o responsável de zelar para que os microprocessadores trabalhem em um rígido padrão de tempo. Cabe ao clock gerar pulsos (sinais) em intervalos regulares. A cada sinal (pulso) uma ou mais instruções internas são realizadas. O nome deste registrador é “Reg”. Figura 03 06 • Registrador com Carga Paralela Na figura abaixo vemos a forma de onda da saída Q para o circuito à esquerda da figura. Este exemplo ilustra como é o funcionamento do circuito associado a um bit de determinado registrador de carga paralela que também está com sinal de carga. Figura 04 07 • Registradores de Deslocamento (shift registers) 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 5 O deslocamento de bits é uma operação importante na aritmética binária. Essa operação é basicamente o deslocamento do conteúdo de um flip-flop para o seu adjacente. O sentido da operação pode ser da esquerda para a direita, que é chamado deslocamento à direita. Caso o sentido da operação seja da direita para a esquerda é chamado de deslocamento à esquerda. A importância das operações de deslocamento dos bits está no fato destas viabilizarem, entre outras, a realização de um grande número de operações lógicas e aritmética sem um sistema digital. 08 Na Figura 05 vemos um registrador de deslocamento à direita de 4 bits. Notamos que existe uma ligação entre a saída de cada flip-flop e a entrada do vizinho à direita. Este registrador não possui sinal de carga. Contudo, geralmente, este sinal existe. Figura 05 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 6 09 Na Figura 06 temos um registrador de “deslocamento à esquerda” que apresenta uma ligação entre a saída de cada flip-flop e a entrada do flip-flop logo a sua esquerda. Observe que a entrada serial está conectada ao flip-flop à direita que armazena o bit menos significativo. Você pode ver na Figura 06 um exemplo de um registrador de deslocamento à esquerda de 4 bits com reset assíncrono. Figura 06 Reset assíncrono Quando um flip-flop inicia suas atividades o valor de “Q” não é conhecido, podendo ter o valor 1 (um) ou valor 0 (zero). Valor 1 ativo (enable); valor 0 desativado (disable). Desta forma os flip-flops precisam ter uma forma de determinar o valor inicial de sua saída Q. Esta forma é o reset. O sinal de iniciação é chamado de sinal de reset podendo iniciar com valor um (1) ou zero (0), podendo ser síncrono ou assíncrono. O reset síncrono depende do clock sendo acionado quando o sinal do clock é quem inicia o processo. O reset assíncrono não depende do relógio (clock) sendo acionado quando estiver ativo. 10 • Registrador de deslocamento com sinal de carga paralela O que torna um registrador com grau de utilidade alto é que além de possibilitar a carga paralela através de sinal de carga, também possibilita deslocamentos tanto à direita como à esquerda. Tudo isso se torna 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 7 possível em virtude de na entrada de cada flip-flop haver um seletor com a capacidade de selecionar de onde vem o dado a ser armazenado no flip-flop corrente. Este corrente pode vir de uma fonte externa (carga paralela), vindo da direita, da esquerda, quando do deslocamento ou do próprio flip-flop, quando mantido o conteúdo inalterado. Um exemplo deste tipo de registrador pode ser observado na figura abaixo. Este registrador é chamado “registrador-deslocador” de quatro bits com reset assíncrono e sinal de carga. Figura 07 11 Este tipo de registrador é chamado também de shift-register e as seguintes operações são possíveis com ele: 1- Carga paralela; 2- Mantém seu conteúdo; 3- Zera o conteúdo (clear=1) 4- Desloca à esquerda e à direita O seu funcionamento acontece da seguinte maneira: caso o sinal “clear” for igual a um (1), e Q3=Q2=Q1=Q0=0 . Caso estas condições não sejam atendidas, haverá a necessidade de utilizar a seguinte tabela verdade: Tabela Verdade 01 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 8 12 • Registrador Contador Assíncrono Um registrador que faz contagem utilizando binário é chamado incrementador ou contador. Isso acontece por meio do sinal de relógio, então, a cada sinal, o conteúdo do registrador é incrementado de um valor (unidade). Um exemplo seria um registrador contador de 4 bits que pode contar de 0 (0000) até 15 (1111). Figura 08 Na figura acima podemos ver um circuito e traçar a forma da onda de Q. Um circuito que tem como função ser contador de mais bits necessita ter conexão entre cada flip-flop vizinho, de tal maneira que cada flip-flop de ordem maior será o responsável pela ordenação do incremento de seu vizinho de ordem menor. 13 3- MEMÓRIAS Vimos nos parágrafos anteriores como é feita a construção de alguns tipos de registradores. Os registradores são muito rápidos, mas em contrapartida possuem capacidade reduzida de armazenamento. Por exemplo, um registrador armazena somente uma palavra por vez. Contudo, geralmente, nos sistemas digitais e em especial nas máquinas (computadores), uma quantidade grande de palavras necessita ser armazenada. Para atingir este objetivo de armazenamento, passa a ser prioridade que um sistema digital tenha um conjunto específico de circuitos que sejam adequados para armazenarem simultaneamente um grande volume de palavras. O nome dado aos circuitos que executam este armazenamento é memória. Quanto ao seu funcionamento, a memória pode admitir apenas consulta no modo leitura ao seu conteúdo ou também poderá permitir o modo leitura e escrita (modificação). Há memórias que são chamadas de ROMs (Read-Only Memories) em virtude de ser apenas para leitura. Todavia, as memórias chamadas RAMs (Rondom-Access Memories) permitem leitura e escrita. 102 – Arquitetura de Computadores| Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 9 Você deve ter chegado à conclusão de que a memória é a responsável por armazenar os dados com os quais o processador irá trabalhar. Os conteúdos das ROMs podem ser gravados (escritos) durante a fabricação ou até mesmo pelo usuário, que poderia ser o fabricante do computador. É importante salientar que: Uma característica principal da memória ROM é que os dados uma vez gravados não poderão ser modificados e possuem apenas permissão de leitura. As memórias RAM possuem circuitos que têm por característica a capacidade de armazenar as informações binárias que podem ser modificadas por inúmeras vezes. 14 Memória RAM Vamos agora estudar como é a estrutura física ou os circuitos que compõem as memórias Random- Access Memory (RAM). A memória RAM tem como organização uma matriz de 2n linhas com m bits armazenados em cada linha, totalizando 2n x m bits. Geralmente, n está entre 16 e 32, podendo ser m enquanto for 1, 4,8, 16 ou 32. A figura abaixo (Figura 09) mostra como é essa organização matricial. Observe que há 2n linhas, chamadas também de posições. A cada posição há uma associação com um endereço que começa pelo endereço zero (0). Então, será preciso n bits para ocorrer a decodificação de 2n endereços existentes. Ilustração: refazer ou formatar a imagem, tornando os dados mais nítidos. Figura 09 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 10 Na Figura 09 é possível observar como é a organização de uma memória RAM e suas linhas e endereços. 15 Vamos supor que uma empresa irá fabricar apenas um circuito integrado (CHIP) em uma memória RAM com capacidade de armazenamento2n x m bits, conforme a organização que vimos anteriormente. A figura abaixo (Figura 10) é uma representação do chip que falamos agora. Este chip precisar ter “n” entradas de endereço (Na-1, ... , A1,A0), de tal maneira que seja possível selecionar uma e apenas uma dentre todas as 2n posições que há na matriz. Este chip poderá também conter “m” entradas (In-1 , ... , I1, I0), e “m” saídas (On-1 , ... , O1, O0 ), de tal maneira que seja possível a leitura/consulta do conteúdo de uma das 2n linhas ou a gravação/escrita de uma informação nova em uma das 2nlinhas da matriz. Em virtude de haver duas operações possíveis, leitura e escrita, sobre o conteúdo da matriz, é perfeitamente normal existir uma entrada de seleção da operação. Este tipo de entrada chamará RWS (Read/Write Select). Figura 10 Em suma, há a necessidade de haver um sinal de habilitação do chip (CS-Chip Select). Para exemplificar, se o CS for igual a zero (CS=0) é porque o chip está desativado. O mesmo seria se o CS for igual a um (CS=1), é por que o chip está realizando uma operação determinada pelo valor da entrada RWS. 16 Na Figura 10 (copiada abaixo) podemos ver as representações gráficas possíveis para um chip de memória RAM. Um sinal de habilitação do chip, CS, tem como serventia para o caso de haver necessidade de mais de um chip para implementar a memória do computador. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 11 Observe novamente a Figura 10 (a), que é um exemplo de quando o quantitativo de bits que precisam ser armazenados em cada posição de memória “m” for pequeno, o chip RAM poderá ter entradas separadas das saídas. Contudo, o comum é que um mesmo conjunto de pinos do chip sirva tanto como entrada ou saída, situação que pode ser visualizada na figura 10 (b). Neste caso a utilidade vai depender da operação que será realizada, que é selecionada através do pino RWS. Na verdade, o detalhe é justamente este, pois o uso compartilhado irá reduzir a quantidade de pinos no chip, vindo a baratear seu custo. Figura 10 17 Olhando pelo lado estrutural, uma memória RAM tem sua organização feita semelhante a uma matriz de elementos básicos de memória,buffers de entrada/saída e decodificador de endereços. Conforme é possível observar na figura 11, uma CM (célula de memória) pode ser representada por meio de símbolo, sendo constituída por um latch D controlado cuja entrada está ligada à saída e a saída ligada à entrada de um buffer. O buffer, também chamado driver, pode exercer duas funções: 1. reforçar o sinal lógico, em virtude da necessidade de quando há muitas portas conectadas a uma mesma saída ou quando o sinal vai percorrer um fio com grande extensão, 2. ou também exercer a função de uma chave eletrônica que isola fisicamente a saída da entrada, isto é, irá servir para disciplinar o acesso de vários sinais a um mesmo fio ou barramento. Entendido o que é buffer na memória e voltando à figura 11, quando o sinal de seleção de linha é = 1, o bit armazenado no latch passará pelo buffer, permanecendo disponível na “saída” da célula. Caso o sinal de habilitação de escrita valha também 1, o valor presente na “entrada” será mantido no latch. O sinal de “habilitação de escrita” serve como controle para o latch. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 12 Figura 11 18 A Figura 12 é uma representação da memória RAM por meio de um diagrama de blocos. Trata-se de um exemplo de memória RAM (4X4), formada por dezesseis CMs. Para cada acesso à memória, o decodificador de endereços ativa o sinal de seleção de linha associado ao endereço aplicado às suas entradas, o que ativa todos os CMs da linha escolhida. Assim, caso RWS seja igual a zero (0) e CS igual a um (1), os bits que estão armazenados na linha escolhida passarão pelos buffers de saída das respectivas CMs e também pelos buffers de entrada e saída do chip. Figura 12 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 13 19 A maneira como é organizada a memória RAM impacta em restrições no tempo das operações de leitura e escrita. Por exemplo, como o caminho crítico da entrada a saída passa pelo decodificador, as entradas de endereço necessitam estar estáveis antes de qualquer outro sinal ou sinais. Isso quer dizer que, durante o ciclo de leitura mostrado na figura 13abaixo, as entradas de endereço deverão ser fornecidas em t0, seguidas por CS em t1. Sendo assim, os dados da memória estarão disponíveis apenas em t2. O atraso t2 – t0 é chamado memory-access time (tempo de acesso à memória), enquanto que o tempo t2-t1 é chamado output-enable time (tempo de habilitação da saída). Observe que depois de os valores das entradas de endereço terem sido alterados em t3, os dados continuam disponíveis até t5. O intervalo t5 – t3 é chamado output-hold time (tempo de manutenção da saída). O intervalo t5 – t4 é chamado de output-disable time (tempo de desabilitação da saída). Figura 13 Em virtude de o caminho entre as entradas de endereço e as saídas ser maior do que o caminho entre CS até as saídas, o tempo de acessoaponta a validade dos dados sempre que o endereço e CS forem aplicados ao mesmo tempo. Em contrapartida, caso o endereço e CS não sejam mais válidos (CS igual a zero), o tempo de desabilitação especificará a validade dos dados. 20 A Figura 14 é possível ver as restrições temporais para a situação de um ciclo de escrita em uma memória RAM. Nesta figura observa-se por premissa que CS e RWS foram aplicados, ao mesmo tempo, 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 14 no instante t1. Em virtude de atraso entre o endereço e a saídaser maior do que o atraso entre CS ou RWS e a saída, o endereço deve ser aplicado um tempo antes, que neste caso, seria em t0. O atraso t1– t0é chamado de address setup time (tempo de preparação do endereço). Em virtude de cada CM ser feito a partir de um latch D controlado com CS exercendo a função de controle, cada bit do dado na borda de descida de CS (t3) será armazenado no correspondente latch. Contudo, é preciso que o dado já esteja estável um período antes e logo depois da borda de descida de CS para garantir a referida escrita. Observe a figura e veja que os tempos são descritos como data setup time (tempo de preparação do dado) e data hold time(tempo de manutenção do dado), sendo chamados respectivamente como: t3– t2 e t4– t3. Cabe salientar que CS ou RWS devem ter duração igual ou superior ao intervalo de tempo t3– t1, que é chamado de write-pulse width(duração do pulso de escrita). Também é importante saber que o endereço deve estar válido durante um tempo após a borda de descida de RWS ou CS. Este intervalo de tempo é denominado address-hold time (tempo de manutenção do endereço), que pode ser demonstrado na imagem como t5– t3. 21 Nós vimos aqui a CM representada pela composição de um latch D e duas portas, entretanto, muitos fabricantes utilizam estruturas menos complexas e também com poucos transistores. A maneira como é feita a implementação de CMs é que determina a classificação da memória RAM em estática e dinâmica. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 15 22 RESUMO Neste módulo estudamos os circuitos digitais responsáveis pelo armazenamento de informação, sendo eles os registradores e as memórias ROM e RAM. Vimos que o registrador é um circuito digital que tem em sua formação “n” flip-flops, que de forma simultânea, consegue armazenar (de forma independente) “n” bits. Vimos também como funcionam os registradores com carga paralela, os registradores de deslocamento, o registrador de deslocamento com sinal de carga paralela e o registrador contador assíncrono. As memórias ROM possuem organização semelhante às memórias RAM. Entretanto, a CM de uma ROM é muito mais simples, geralmente constituída por apenas um transistor ou diodo, que exerce a função para conceder acesso ao zero (=0V) lógico ou ao um (1) lógico (5V a 1,5V, conforme a tecnologia). As memórias ROM, nos computadores, tem por função o armazenamento das configurações básicas que não são alteradas. Um exemplo são as rotinas de entrada e saída que constituem a BIOS dos computadores. UNIDADE 3 – OBJETIVO DA ANÁLISE DAS DEMONSTRAÇÕES FINANCEIRAS MÓDULO 2 – CONCEITO DE ANÁLISE E DEMONSTRAÇÕES FINANCEIRAS OBRIGATÓRIAS 01 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 16 1 - CARACTERÍSTICAS DOS SISTEMAS DE MEMÓRIAS DOS COMPUTADORES Durante a leitura e estudo deste módulo você terá a oportunidade de entender as características dos sistemas de memória dos computadores. Dentre estas características, iremos destacar: localização, capacidade, unidade de transferência e método de acesso. Veremos também a forma hierárquica da organização da memória no computador, esta característica é em virtude de como é a sequência de utilização e acesso à memória. Entenderemos o que é memória RAM e ROM e as respectivas diferenças entre elas. E para finalizar veremos como é simples o cálculo da capacidade da MP (Memória Principal). Então vamos começar? 02 Para o adequado e eficaz funcionamento da manipulação das informações (instruções de um programa e dados) de e para a memória de um computador, constata-se a necessidade de se ter, em um mesmo computador, diferentes tipos de memória. Para determinadas atividades, por exemplo, é essencial que a transferência de informações seja a mais rápida possível. É o caso das atividades realizadas internamente no processador central, 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). O conceito de memória é aparentemente simples, pode-se até dizer que é aquele componente que apresenta maior variedade de tipos, tecnologia, organizações, desempenhos e custos, entre todos os elementos de um sistema de computador ou sistema computacional. Devido à grande variedade de tipos de memória, não é possível implementar um sistema de computação com uma única memória, pois nenhuma das tecnologias de memória existentes satisfaz de maneira ótima todos os requisitos de armazenamento de dados em computadores. Na realidade, há muitas memórias no computador, as quais se interligam de forma bem 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, ou seja, um sistema computacional típico é equipado com uma hierarquia de subsistemas de memória, algumas internas (diretamente acessíveis pelo processador) e outras externas (acessíveis pelo processador por meio de um módulo de E/S - entrada / saída). 03 Os sistemas de memória de computadores podem ser facilmente compreendidos por meio de sua classificação, de acordo com suas características fundamentais. Estas características podem ser visualizadas na tabela abaixo: 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 17 Estudaremos com mais detalhes cada uma dessas características a seguir. 04 • Localização O termo localização é utilizado para diferenciar se a memória é do tipo interna ou externa à máquina. No geral a memória interna é popularmente conhecida como a MP (memória principal), mas há outros tipos de memória interna. O processador necessita de uma memória local própria, formada por registradores. Consequentemente, conforme iremos estudar, a unidade de controle do processador também poderá ter sua memória interna própria. Outro exemplo de memória interna é a memória cache. A memória principal: também chamada de primária ou real, é o local em que estão armazenados as instruções e dados. É um dispositivo de armazenamento que mantêm os dados (informações) de maneira temporária dos serviços que estão em processamento no processador. É na MP que os dados ficam disponíveis para transferência para equipamentos de saída. A MP é desde o início da computação a memória básica de um sistema de computação. Em suma, é na MP onde o programa que será executado é armazenado para o processador faça a busca de instrução por instrução. A memória externa são todos os dispositivos de armazenamento, também conhecidos como periféricos. Exemplo:HD Externo. Estes periféricos são acessíveis ao processador (UCP) por meio de controladores de E/S (entrada e saída). A memória secundária também pode ser chamada de memória externa e “não-volátil”. O termo “não- - volátil” significa que esta mantém as informações armazenadas mesmo após o desligamento do 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 18 computador. Para facilitar o entendimento, usaremos o HD (Disco rígido) como exemplo de MS (memória secundária). É no HD que geralmente estão armazenados os programas (navegadores, jogos, leitores de PDF, leitores de texto etc.) e também os arquivos pessoais dos usuários. Contudo, em determinadas situações, o sistema operacional utilizará o HD como uma extensão da memória principal. Essa açãotem o intuito de evitar que haja travamentos do sistema. Em suma, quando falamos que o HD é um exemplo de memória secundária, estamos fazendo referência ao fato de os discos também desempenharem a função de ser uma extensão da memória principal, sendo uma segunda memória, caso não haja espaço suficiente na MP. 05 • Capacidade Quando você resolve adquirir um notebook ou outro modelo qualquer de computador, uma das características que provavelmente é observada é a capacidade da memória. Você pode escutar do vendedor que o computador “vem com a capacidade de 4GB de RAM”. Mas o que é capacidade de memória? Capacidade de memória é o número total de bits que o dispositivo é capaz de armazenar. Pode ser expresso de várias formas: 2048 bits; 2kb ou 256 Bytes. Por exemplo: computador da marca XXX vem equipado com 4GB (gigabytes) de memória. Na memória interna, a capacidade é geralmente especificada em razão das palavras ou dos bytes (1 byte= 8 bits). Os tamanhos mais usados para palavras são geralmente 8, 16, 32 ou 64 bits. No caso da memória externa, a capacidade é tipicamente expressa em bytes. • Unidade de transferência Um conceito que está relacionado ao assunto é a unidade de transferência de dados (UTD). Na memória interna, a UTD é proporcional ao número de linhas de dados do módulo de memória. Geralmente o número de linhas é igual ao tamanho da palavra. Para entender bem, veja estes três conceitos relacionados à memória interna: Unidade endereçável Em vários sistemas, a unidade endereçável de dados é a palavra. Contudo, outros sistemas permitem endereçamento de bytes. Em ambos os casos, a relação entre o tamanho em bits A de um determinado endereço e o número de unidades endereçáveis, onde N é 2ª = N . Palavra É naturalmente a unidade de organização de uma memória. O tamanho de uma palavra é geralmente igual ao número de bits usados para a representação de um número inteiro e ao tamanho de uma instrução. Entretanto, há várias exceções. Um exemplo que vale a pena mencionar foi o primeiro supercomputador da história, o Cray 1, que teve seu lançamento no ano 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 19 de 1976, criado pelo norte-americano Seymour Cray. No CRAY 1 uma palavra tinha 64 bits, porém a representação de números inteiros utilizava 24 bits. Outro exemplo foi a arquitetura VAX (Virtual Address eXtension), que foi uma família de minicomputadores de 32 bits, fabricado pela Digital (Digital Equipment Corporation) no ano de 1978. No VAX uma palavra tem 32 bits e há uma grande variedade de tamanhos das instruções, representados como múltiplos de byte. Unidade de transferência A unidade de transferência de dados da MP é o número de bits que podem ser escritos ou lidos de cada vez. Não há necessidade de ser igual a uma palavra ou à unidade endereçável de dados. No caso das memórias externas, as transferências são em unidades maiores que uma palavra, estas unidades são chamadas de blocos. 06 • Método de acesso O método de acesso aos dados é uma das maneiras de diferenciar os tipos de memória. Iremos destacar o acesso aleatório. No acesso aleatório, cada posição de memória endereçável possui um mecanismo único de endereçamento a ela fisicamente conectado. O tempo de acesso a uma determinada posição é constante e não depende da sequência de acessos anteriores. Dessa forma, qualquer posição será selecionada aleatoriamente, sendo acessada e endereçada diretamente. A MP, bem como algumas memórias cache, são exemplos de dispositivos de memória de acesso aleatório. • Desempenho A partir da visão do usuário, as características que mais se destacam em relação à memória são seu desempenho e sua capacidade. Há parâmetros que são usados para mensurar este desempenho, são eles: Tempo de ciclo de memória Conceito aplicável em especial a memórias de acesso aleatório e compreende no tempo de acesso e o tempo adicional antes que um segundo acesso seja iniciado. Esse tempo a mais poderá ser necessário para que haja o desaparecimento de transientes nas linhas de sinais ou para a regeneração dos dados, caso a leitura seja para subscrever o conteúdo. Tempo de acesso Em uma memória de acesso aleatório, é o tempo despendido para haver uma operação de escrita ou de leitura. Também é o tempo passado desde o instante em que um endereço é apresentado à 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 20 memória até o momento estão disponíveis para utilização ou armazenados. 07 • Tecnologias Várias tecnologias estão sendo usadas para fabricar memórias para computadores. Geralmente as memórias mais usadas são: • as memórias de semicondutor ou memórias semicondutoras, • memórias de superfície magnética (discos e fitas magnéticas), • as memórias ópticas e • magneto-óptico. • Características físicas As características físicas de armazenamento são de suma importância. Em uma memória volátil há perda de dados quando a energia é desligada. Na memória não-volátil, a partir do momento que os dados são gravados, permanecem disponíveis após o desligamento do computador. As memórias de semicondutor podem ser não-voláteis como voláteis. As memórias de superfície magnética (HD) são não-voláteis. • Organização A organização de memória é o arranjo físico dos bits para formar PALAVRAS. A organização é um aspecto que deve ser observado no projeto de memórias de acesso aleatório. Geralmente é fornecido como sendo o número de posições de memória versus o número de bits por posição como, por exemplo, 2kB, ou seja, 2x1024 Bytes ou 2048x8bits. Memórias Semicondutoras São memórias produzidas com componentes de estado sólido e dividem-se em dois tipos básicos: RAM (Random Access Memory) e ROM (Read Only Memory). Discos e fitas magnéticas Pode parecer incrível, mas as fitas magnéticas e os discos ópticos são os principais representantes para armazenamento de dados. Ousamos dizer que, provavelmente, é o suporte de dados mais antigos e ainda muito utilizados em sistemas computacionais, embora tenha havido várias evoluções desde sua criação na década de 1950. Taxa de transferência É a medida na qual os dados podem ser transferidos de ou para a unidade de memória. Na memória de acesso aleatório, é expressa da seguinte forma: 1/(tempo de ciclo) = 1 /Tc. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 21 08 2 - HIERARQUIA DE MEMÓRIA Nos computadores a memória é organizada de forma hierárquica. Esta hierarquia começa pela proximidade física ao processador. Vamos fazer uma analogia com uma pirâmide. Ao imaginarmos uma pirâmide, podemos visualizar que o nível mais alto (topo da pirâmide) é composto de registradores do processador, estão próximos fisicamente ao processador. Logo depois, do topo para baixo, há níveis de memória cache, que são chamados de caches L1, L2, L3 e L4. Mantendo a sequência, de cima para baixo, há a chamada memória principal, que geralmente utiliza módulos de memória dinâmica de acesso aleatório (DynamicRandom-Access Memory – DRAM). Essas memórias são chamadas de memórias internas ao sistema de computação. Memórias ópticas São memórias que utilizam a polarização e refração da luz. Os CDs gravam informações em duas dimensões, mas já experimentos que são capazes de armazenar em cinco dimensões. Um exemplo prático do uso de CD e DVD são os que armazenam informações e programas, sendo utilizados na instalação de programas no computador. Memória volátil São memórias que perdem o conteúdo retido quando deixam de seralimentadas (RAM). Memória não-volátil São memórias que retêm a informação mesmo quando não estão alimentadas (ROM). Dentre as memórias não-voláteis, sobressaem-se as memórias permanentes de computadores, que retêm programas de BIOS, SETUP e DIAGNÓSTICO,fabricadas pelos AWARD, PHOENIX, AMI etc. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 22 Esta estrutura hierárquica continua com a memória externa, na qual o nível subsequente é tipicamente composto por um HD fixo (disco rígido fixo), e com os níveis abaixo constituídos de meios removíveis, tais como discos ópticos, memória flash e fitas magnéticas. 09 Conforme vamos descendo pela hierarquia da memória, há também uma diminuição do custo por bit, isto é, a capacidade de memória vai aumentando, mas o tempo de acesso torna-se mais lento. Em virtude disso, você há de convir que o ideal é a utilização de apenas memórias mais rápidas; contudo, estas memórias são muito caras. Sendo assim, para manter um equilíbrio entre custo e o benefício, o tempo de acesso sofre diminuição em favor do custo mais baixo, e por consequência, utilizando memórias que são mais lentas. Fica evidente que diante desta situação criaram-se artifícios para facilitar e aumentar a performance. Uma das ideias foi organizar os dados e também os programas na memória de tal forma que as palavras de memória mais requisitadas sejam localizadas e encontradas de forma mais rápida. Geralmente, os acessos futuros à memória principal pelo processador sejam posições recentemente usadas na memória. Sendo assim, a memória cache mantém uma cópia das palavras da memória usadas recentemente. Isto agiliza o processo, pois as palavras que serão requisitadas pelo processador provavelmente estarão armazenadas na memória cache. 10 As limitações de um projeto de memória são possíveis de resumir em três itens: • quanto ao custo, • quanto à velocidade e • quanto à capacidade de armazenamento. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 23 11 Uma gama de tecnologias é empregada na implementação de sistemas de memória, mas o mais importante nesta implementação é observar as seguintes relações: - capacidade maior com um custo por bit menor; - capacidade maior com um tempo de acesso menor. - tempo de acesso mais rápido com o custo por bit maior; Observamos que o projetista de um sistema de memória precisa estar atento que a tecnologia empregada forneça grande capacidade de armazenamento de dados, com desempenho melhor e com tempo de acesso menor. Uma maneira para ajudar os projetistas foi empregar uma hierarquia de memórias, conforme já vimos. Para ajudar no entendimento desta hierarquia, observe a figura abaixo e, tomando como referência o topo da pirâmide, à medida que descemos há as seguintes relações: o custo por bit diminui, a capacidade aumenta, o tempo de acesso aumenta e a frequência de acesso à memória pelo processador diminui. Desta forma, as memórias menores e mais caras, porém, mais rápidas são combinadas com memórias maiores e mais baratas e também mais lentas. O grande segredo desta estrutura é a diminuição da frequência de acessos. Isto é em virtude dos registradores, memória cache e MP serem 100.000 vezes mais rápidas que as memórias (secundárias) que são os discos (HD). 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 24 12 Uma memória importante, mais cara e menor, é a memória FLASH, que é constituída de registradores internos do processador. Geralmente um processador possui várias centenas de registradores internos. O personagem principal das memórias internas é a MP (memória principal). Cada posição da MP possui endereço único. A maioria das instruções de máquina faz referência a um ou mais endereços da MP. Geralmente a MP é combinada com uma memória cache menor e de velocidade maior. A maioria de nós (usuários) e até mesmo usuários avançados (desenvolvedores de software) não prestamos atenção à memória cache. Mesmo passando despercebida a memória cache desempenha o papel importante de ser a responsável pela organização da movimentação de dados entre os registradores do processador e a MP, com o intuito de melhorar a performance. Observando a hierarquia, os registradores, memória cache e MP são os tipos de memória voláteis que utilizam a tecnologia de semicondutores. Este uso de 3 níveis de memória explora o fato de existir uma gama de tipos de memória de semicondutor que possuem diferenças no custo e na velocidade. Para o armazenamento de dados de forma permanente são usados dispositivos externos de armazenamento de massa, dentre os mais conhecidos temos: • os HD (Hard Disc - discos rígidos), • discos SSD (Solid State Drive) - são parecidos com os HDs, entretanto, os SSDs não utilizam discos magnéticos ou cabeças de leitura, mas gravação por chips de memória flash (NAND) não volátil, similar aos usados em pendrives.), • mídia removíveis (HD externo, pendrives, cartões SD), • fitas e dispositivos ópticos (CD-ROM, DVD, Blue Ray). 13 Há também a possibilidade de utilizar parte da MP como área de armazenamento temporário de dados que depois serão gravados em disco. Essa técnica é chamada de cache de disco, que tem por objetivo melhorar o desempenho do sistema fazendo operações de escrita em disco de forma agrupada ou invés de fazer transferências de pequenas quantidades de dados. Outra maneira é que alguns dados a serem escritos em disco podem ser referenciados outra vez pelo programa e antes que aconteça uma nova transferência de dados da cache para esse disco. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 25 Nos primórdios da computação, quando dos primeiros computadores, a tecnologia mais utilizada na época para fabricação da MP de acesso aleatório era utilizando um grupo de anéis de material ferromagnético, chamados de núcleos. Desde o seu aparecimento, as memórias que utilizam a tecnologia da microeletrônica são muito mais superiores às memórias de núcleo magnético. Nos dias atuais, o uso de pastilhas de semicondutores para a MP é muito difundido. Observe a figura abaixo sobre os tipos de memória de semicondutor: Na figura acima o tipo de memória de semicondutor mais conhecida é a memória de acesso aleatório (RAM - Random Access Memory). A RAM tem uma particular característica de possibilitar a leitura e gravação (escrita) de dados sejam de maneira fácil e rápida. Esta gravação e leitura são realizadas por meio de sinais elétricos. 14 3 - MEMÓRIA RAM Como já foi mencionado anteriormente, a memória RAM é volátil em virtude de necessitar de fornecimento de energia constante, pois caso seja interrompido este fornecimento, será perdido os dados. Consequentemente, a memória RAM é utilizada para armazenamento temporário de dados. A tecnologia da memória RAM é dividida em dinâmica e estática. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 26 Tanto a memória RAM dinâmica quanto a RAM estática têm por característica serem voláteis. O posicionamento de uma memória dinâmica é muito simples e, por consequência, tem o tamanho menor em relação à memória estática. A RAM dinâmica tem células menores que implicam em mais células por unidade de área, isto a torna mais densa e também mais barata do que a RAM estática. Contudo, ela requer um circuito de regeneração. Sendo assim, no caso de memórias de grande capacidade, o custo fixodo circuito de regeneração será compensado pelo menor custo das células da RAM dinâmica. Consequentemente, as RAM dinâmicas têm mais vantagem no quesito capacidade maior. Um detalhe importante a ser frisado é que as memórias estáticas são geralmente mais rápidas que as dinâmicas. 15 4 - MEMÓRIA ROM Contrastando com a memória RAM, há a memória chamada de “apenas de leitura” (Read-Only Memory – ROM). O nome nos remete que a ROM contém mantêm os dados e que eles não devem ser alterados. Embora ela permita ler seus dados, em contrapartida, ela não permite altera-los. A ROM tem sua importância destacada na microprogramação, nas bibliotecas de sub-rotinas, programas do sistema e tabelas de funções. Caso a capacidade de memória necessária for pequena, a vantagem da utilização de uma memória ROM é que os programas ou dados estão permanentemente armazenados na PM, não necessitando serem carregados a partir de um dispositivo de armazenamento secundário. Uma alternativa de menor custo para ROM é a PROM (programmable ROM), isto geralmente ocorre quando é necessário um pequeno número de memórias ROM com dado conteúdo de memória. Como pode ser evidenciado pelo nome “programmable”, a PROM é similar à memória ROM, e a PROM também é não-volátil, sendo que os dados podem ser gravados, mas apenas uma única vez. A gravação em uma memória PROM é feita eletricamente e geralmente é feita pelo usuário ou pelo fornecedor, após a fabricação da pastilha original. Variações principalmente da memória apenas de leitura, são mais úteis em aplicações que exigem armazenamento não-volátil e há uma certa frequência de operações de leitura em relação às operações de escrita. Existem três maneiras mais comuns de MP de leitura, que são: 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 27 • memória flash, • EEPROM e • EPROM. Memória flash A memória FLASH é outro tipo de memória de semicondutor que tem este nome em virtude da velocidade com que pode ser programada. A memória FLASH foi criada na década de 80, mostra características intermediárias entre a EEPROM e a EPROM, tanto na funcionalidade como no custo. Similarmente a EEPROM ela utiliza a tecnologia de apagamento elétrico dos dados, podendo em poucos segundos ter seu conteúdo apagado completamente. Também é possível apagar alguns blocos de memória e não a pastilha inteira. EEPROM A EEPROM (memória apenas de leitura programável e apagável eletricamente) os dados podem ser gravados sem que seja necessário apagar todo o seu conteúdo atual. Esta memória combina a vantagem da flexibilidade com a não volatilidade em virtude de poder ser diretamente atualizada, por meio das linhas de dados e de endereço usuais e do barramento de controle. EPROM EPROM (memória programável apenas de leitura) pode ser subscrita (apagada) por um processo ótico em que os dados podem ser gravados e lidos eletricamente. Todavia, antes de qualquer operação de escrita, todas as células de memória devem ser apagadas, voltando a ter o valor inicial. 16 5 - CÁLCULO DA CAPACIDADE DE UMA MEMÓRIA PRINCIPAL Para calcular a capacidade de uma MP (Memória Principal) precisamos entender que as memórias RAM são organizadas em células, que podem conter parte de um dado ou o dado completo. A mensuração (medida) utilizada para sua capacidade é o bit (Kbit, Mbit etc.) ou em quantidade de células diretamente. Em virtude de cada célula conter, no máximo, um determinado dado, e cada célula é identificada por umendereço, o mais importante componente para a determinação da capacidade máxima de memória de um sistema é a quantidade de células (ou endereços) suportada por um sistema. Na maioria dos sistemas são usadas células de 1 Byte (8 bits), no dia a dia usamos geralmente em bytes, por exemplo, compra-se um computador com 4 megabytes de memória. Outro exemplo: dizemos que um computador tem um pente de memória de 128 MB – 128 MegaBytes. No último exemplo, estamos dizendo é o número de células. Para realizar conversões, é necessário lembrar que: 2Kbytes = 2 x 1024 x 8 bits = 2 x 210 x 23 = 214 bits. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 28 Nas células são armazenados bits, então para determinada célula de M bits, podemos ter 2M diferentes símbolos. E uma célula com capacidade de 8 bits, podemos ter até 256 símbolos, que vão de 00000000 até 11111111. Caso determinada memória principal possua N endereços e E é a quantidade de bits que o compõe cada um dos N endereços, consequentemente N = 2E. Essa memória principal terá, por consequência, a capacidade de armazenar T igual a N x M = 2E x M. Então podemos resumir que para calcular o total de bits de uma memória principal é igual a N x M. Então: N = 2E, então, MP = 2Ex M. 17 RESUMO Estudamos neste módulo que a localização, capacidade, unidade de transferência e método de acesso são características dos sistemas de memória dos computadores. Vimos que há uma hierarquia no acesso à memória conforme a sua proximidade física ao processador. Entendemos que a forma hierárquica da organização da memória no computador é em virtude de como é a sequência de utilização e acesso à memória. Por proximidade o processador acessa primeiro a memória cache, depois a Memória Principal (MP) e depois a memória secundária. Esta é a maneira básica do uso dos recursos de memória em um computador. Várias tecnologias são empregadas na implementação de um sistema de memória. É interessante observar que o mais importante nesta implementação é conseguir uma capacidade de armazenamento maior com um custo por bit menor. Isto é, uma memória principal (MP) com maior capacidade e com um custo baixo (mais barata). Entretanto, ao compararmos com uma memória secundária (exemplo: HD) com a MP é fácil notar a diferença de capacidade de armazenamento, mas o acesso ao HD é muito mais lento do que o acesso a MP. Vimos que há a memória RAM e ROM e as respectivas diferenças entre elas. No caso da memória RAM ela é dividida em dinâmica e estática em virtude da tecnologia utilizada. Uma RAM dinâmica é constituída por células que armazenam dados com a carga de capacitores. Contrastando com a memória RAM, há a memória chamada de “apenas de leitura” (ROM). O nome nos remete que a ROM contém e mantêm os dados e que eles não devem ser alterados. Embora ela permita ler seus dados, em contrapartida, ela não permite alterá-los. A ROM tem sua importância destacada na microprogramação, nas bibliotecas de sub-rotinas, programas do sistema e tabelas de funções. E por fim, vimos que para calcular a capacidade de uma MP precisamos entender que as memórias RAM são organizadas em células, que podem conter parte de um dado ou o dado completo. A mensuração 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 29 (medida) utilizada para sua capacidade é o bit (Kbit, Mbit etc.) ou em quantidade de células diretamente. UNIDADE 3 – FUNCIONAMENTO E COMPONENTES BÁSICOS MÓDULO 3 – UCP – UNIDADE CENTRAL DE PROCESSAMENTO 01 1- ESTRUTURA INTERNA E FUNCIONAMENTO DO PROCESSADOR (CPU) Prezados estudantes, até o momento, já vimos algumas informações sobre o que é um processador. Estudamos também que há uma interação muito grande entre a UCP – unidade central de processamento ou CPU (processador), memória e dispositivos de entrada e saída. Neste módulo iremos nos aprofundar um pouco mais. Vamos observar a estrutura interna e o funcionamento da UCP. Ao final entenderemos que a UCP é composta pela unidade de controle, dos registradores, da unidadearitmética e lógica, da unidade de execução de instruções e das interconexões entre esses componentes. Geralmente quando o assunto é processador, a comparação clássica é que ele é o cérebro do computador e, embora seja uma comparação interessante e didática, esta definição está um pouco distante do que seja realmente o funcionamento de um processador. Agora, quando falamos do processador como componente eletrônico, dizemos que ele é um tipo especializado de microchip (circuito eletrônico miniaturizado). Destacamos que ele é composto por três componentes principais, que são: • a ULA – unidade lógica aritmética, • a UC – unidade de controle e • os Registradores. Veremos, oportunamente, cada um desses componentes. 02 As atividades realizadas pela CPU podem ser divididas em duas grandes categorias funcionais: função processamento e função controle. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 30 Dentre as várias tarefas importantes da CPU destacam-se as seguintes: • buscar na memória a instrução a ser executada; • interpretar que operação a instrução está explicitando; • buscar os dados onde estiverem armazenados; • executar efetivamente a operação com os dados e armazenar o resultado no local definido pela instrução; • reiniciar o processo, buscando a próxima instrução. Em suma, o processador é um poderoso dispositivo que realiza cálculos. As tarefas da CPU consistem, então, em: • endereçar, • acelerar, • preparar dados ou resolver conforme a aplicação ou as demandas. 03 Para ajudar na compreensão sobre processador, assista a este vídeo disponível no YouTube, que trata das características e funções do processador. O vídeo é muito interessante e vale a pena investir alguns minutos assistindo. https://www.youtube.com/watch?v=IfOIB4-pn1k 04 2 - COMPONENTES DO PROCESSADOR O processador é formado por um conjunto de componentes, sendo que cada um tem um papel específico no processamento de um dado, uma informação, um programa e etc. Enfim, é este conjunto de componentes que chamamos de processador ou UCP. Sendo assim, o papel principal do processador é tornar possível a execução dos programas. A seguir veremos cada um desses componentes. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 31 05 • ULA - Unidade Lógica Aritmética A ULA – unidade lógica aritmética, também chamada de ALU (Arithmetic Logic Unit), é o dispositivo principal da função processamento. A ULA é a responsável principal por realizar as operações matemáticas e booleanas. Tem por incumbência, como o próprio nome já deixa claro, realizar as operações matemáticas requisitadas durante o processamento (execução) de um programa. Quando falamos a sigla ULA parece que estamos fazendo referência à dança havaiana HULA, mas ULA (Unidade Lógica e Aritmética), como o próprio nome sugere e também já falamos, é o componente responsável em realizar as operações aritméticas e lógicas sobre os dados. Até poderíamos nos arriscar a usar o exemplo da dança havaiana HULA, para efeito de memorização, já que a ULA é a responsável pela “dança das operações aritméticas e lógicas dos dados” no processador. Todos os componentes de uma máquina (computador), como: registradores, unidade de controle, dispositivos de entrada e saída (E/S) e memória, enfim, todos eles têm como principal serventia trazer os dados para serem processados pela ULA e receber os resultados. Podemos, então, afirmar que a ULA é o núcleo ou a essência de uma máquina (computador). Assim como todos os demais componentes eletrônicos de um computador, a ULA tem como base dispositivos lógicos digitais simples, os quais têm capacidade de armazenar dígitos binários e efetuar operações simples de lógica booleana. 06 Observe a figura e veja como a ULA está conectada com o restante do processador e outros componentes do computador. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 32 Tanto os dados fornecidos à ULA, bem como o resultado de uma operação, são armazenados nos registradores. Esses registradores são áreas de armazenamento temporário dentro do processador, conectadas à ULA por meio de caminhos de sinais (barramento). A ULA pode também ativar flags (bits especiais) que indicam o resultado de uma operação. Caso haja uma operação que exceda a capacidade de armazenamento de um registrador, isso é indicado atribuindo o valor 1 ao bit de overflow (estouro de memória). Cabe à unidade de controle o fornecimento de sinais para fazer o controle da ULA e também pela transferência de dados entre a ULA e os registradores. Overflow É um estouro de memória, ou seja, condição que ocorre quando os dados resultantes do processamento ou de entrada necessitam de mais bits do que os que foram fornecidos no hardware ou no software para armazenamento de dados. 07 • UC - Unidade de controle A unidade de controle é o dispositivo mais complexo da CPU. A UC é responsável pelo controle das atividades de todos os componentes da máquina (computador). Um exemplo seria o controle da gravação de um dado no HD (Disco Rígido), outro exemplo seria uma determinada busca de instrução da memória principal. Além de possuir a lógica necessária para realizar a movimentação de dados e instruções de e para a CPU, a unidade de controle, como o próprio nome sugere, controla a ação da ULA. Os sinais de controle emitidos pela UC ocorrem em vários instantes durante o período de realização de um ciclo de instrução e, de modo geral, todos possuem uma duração fixa e igual, originada em um gerador de sinais comumente conhecido como relógio (clock). Clock É o dispositivo gerador de pulsos cuja duração é chamada de ciclo. A quantidade de vezes em que este pulso básico se repete em um segundo define a unidade de medida do relógio, denominada frequência, a qual também usamos para definir velocidade na CPU. 08 • Registradores Este componente do processador tem por característica ser veloz, localizado fisicamente próximo à UCP, tem por função principal guardar parte das informações que estão na memória principal. Ele funciona como uma memória interna de alta performance ou alto desempenho. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 33 Os registradores funcionam como pequenas unidades de memória, implementadas na CPU, com as seguintes características: Além dos registradores de dados, a CPU possui sempre outros registradores com funções específicas ou que funcionam para a área de controle, os quais não participam diretamente da função processamento. Os registradores mais conhecidos são o contador de programa (PC) e o registrador de instrução (IR). De maneira resumida, cabe ao contador de programa sinalizar qual será a próxima instrução (programa) a ser executada e ao registrador de instrução cabe a execução de fato da instrução (programa). 09 3 - MAIS SOBRE A UCP: MEMÓRIA CACHE, MMU, HERTZ, EVOLUÇÃO Memória cache No módulo sobre memória vimos os vários tipos de memórias e suas características. Neste momento, iremos dar destaque para a memória cache. Você deve lembrar que ela é a responsável pelo armazenamento das instruções dentro do processador. Quando diante de determinada quantidade de dados que a CPU possa vir a ter que processar, será no cache que serão alocadas as informações que estão sendo constantemente requisitadas. Esta estratégiade armazenar o que está “sendo constantemente requisitado” tem por objetivo agilizar o processamento ao armazenar no processador 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 34 os dados que estarão rapidamente acessíveis. Esta técnica evita e torna desnecessário percorrer o HD ou a RAM para buscar este tipo de informação. MMU (Memory Management Unit) Este dispositivo é o responsável em transformar as instruções lógicas (virtuais) em endereços físicos na memória RAM (memória principal). A MMU registra onde está localizada cada informação do sistema tornando possível ao processador saber onde buscar os dados e instruções na memória. A MMU é a coordenadora do funcionamento da memória, tornando possível o processador ser rápido ao agilizar o acesso à memória RAM. 10 Comparar processadores era algo que há um tempo atrás ficava restrito a computadores, mas com a popularização de smartphones e tablets esse cenário mudou. O processador é o coração do smartphone e é o responsável por fazer tudo funcionar. É preciso prestar atenção no número dos núcleos (cores) e no clock (quantos GHz) dele para avaliar o seu desempenho. Quanto mais núcleos e mais velocidade, melhor o desempenho do smartphone. Assim como em um computador, o processador é responsável pela velocidade de execução de tarefas (jogos, vídeos, câmeras, etc.) e aliado à memória e a outros fatores, garante a eficiência e a usabilidade do aparelho. Assista a um vídeo que fala um pouco sobre o funcionamento do processador de um smartphone. http://olhardigital.uol.com.br/embed/saiba-como-funciona-o-processasdor-de-seu-smartphone/35102 11 O que é HERTZ? Durante o tempo que você investiu ao assistir o vídeo anterior deve ter notado que a palavra HERTZ foi mencionada algumas vezes. Provavelmente deve ter observado que “que o equipamento XYZ tem mais ou menos Hertz”. Você conseguiu entender o que significa um processador ter tantos Hertz? Então vamos entender! Veja que interessante esta especificação de um fabricante a respeito de um processador (UCP): 3ª Geração do Processador Intel® Core™ i3-3217U (1.8GHz, 3Mb Cache, Placa de vídeo Intel HD Graphics Integrada). Veja que foi destacado em negrito o 1.8GHz para destacar que, caso você não tenha compreendido o 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 35 significa Hertz (Hz), entenda que é o quanto um processador troca dados com o sistema. Utilizando o exemplo acima: Processador Intel® Core™ i3-3217U 1.8GHz . Notamos que ele oferece 1.8GHz, isto quer dizer que ele é capaz de realizar 1,8 bilhões de ciclos por segundo. Há um componente fundamental para medir estes ciclos e orientar o fluxo de troca de informações no processador, este componente é o circuito clock, que estabelece os critérios de velocidade do processador. 12 Evolução dos processadores Para você compreender a evolução dos processadores nos dias atuais, empresas fabricantes de processadores como Intel e AMD (AdvancedMicro Devices) estão investindo em processadores chamados APUs (Accelerated Processing Unit), que numa tradução direta significa: Unidade de Processamento Acelerada. O diferencial em relação aos processadores normais é que as APUs trazem, no mesmo conjunto, CPU e GPU (Unidade de ProcessamentoGráfico ou Graphics Processing Unit), oferecendo uma velocidade muito maior de processamento gráfico. Mesmo as APUs trazendo o vídeo integrado, esta solução é diferente do modelo anterior de chips gráficos onboard (onboard, tradução “na placa”, consequentemente, quando você ouvir dizer que um computador é “onboard”, significa que a placa- mãe (motherboard / mainboard) responsável por conectar e interligar todos os componentes do computador) tem um ou mais dispositivos integrados, os quais podem incluir uma placa de rede, vídeo, som, vídeo e etc. Uma das maiores vantagens é a velocidade de comunicação entre CPU e GPU, aumentando significativamente o tempo de resposta e, em consequência, otimizando todo o sistema. 13 Assista ao vídeo da AMD, disponível na página do Youtube, e veja o que é APUs - Accelerated Processing Unit. https://www.youtube.com/watch?v=Fd-TNIhcmbg 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 36 14 4 -INSTRUÇÕES DE MÁQUINA Bom, até agora estávamos fazendo uma introdução do que venha ser uma UCP ou CPU, seus componentes e algumas características. Todavia, precisamos nos aprofundar e falar sobre o que são instruções de máquina. Um computador pode executar tarefas complicadas e sucessivas se for “instruído” sobre o que fazer e em que sequência isso deve ser jeito. Os seres humanos, ao receberem uma instrução do tipo “trazer a pasta do funcionário Pedro”, são capazes de localizar o arquivo onde estão as pastas de todos os funcionários – geralmente por ordem alfabética – e encontrar a pasta, trazendo-a a quem solicitou. Nessa tarefa, o nosso cérebro realizou uma série de ações intermediárias para que a instrução fosse concluída com sucesso. Entretanto, se a mesma instrução fosse dada a uma máquina e ela não tivesse qualquer orientação prévia registrada, jamais conseguiria localizar e trazer a pasta solicitada. Para a máquina, é necessário que a instrução seja detalhada em pequenos passos e numa linguagem própria, visto que ela é programada para ser capaz de entender só dessa forma, ou seja, em pequenas operações. No exemplo, a máquina deveria receber um conjunto de instruções específicas para ela, as chamadas instruções de máquina. O conjunto de instruções da máquina constitui o limite em que o projetista e o programador de computadores visualizam em um mesmo computador. Na visão do projetista, o conjunto de instruções de máquina fornece os requisitos funcionais para a CPU. Caso uma pessoa resolva utilizar a linguagem de máquina (Assembly) para programar, o primeiro passo será entender e conhecer sobre a estrutura de memória, sobre o conjunto de registradores da CPU, funcionamento da ULA e os tipos de dados disponíveis diretamente na máquina. A operação de uma CPU é determinada pelas instruções que ela executa, chamadas de instruções do computador ou instruções de máquina. A coletânea de diversas e diferentes instruções capazes de serem executas pela CPU é chamada de conjunto de instruções da CPU. 15 Internamente, cada instrução de uma máquina (computador) é representada como uma sequência de bits. Uma instrução é dividida em campos, correspondentes aos elementos da instrução. A CPU deve ser capaz de extrair os dados dos vários campos da instrução e efetuar a operação requerida. Torna-se difícil para um desenvolvedor de software (programador) lidar com representações binárias de instruções de máquina. Consequentemente, tornou-se usual a prática de usar uma representação simbólica para instruções de máquina. Os códigos de operação são representados por abreviações, que indicam a operação a ser efetuada. Veja na tabela abaixo um exemplo: 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 37 Veja um exemplo em que os operandos são representados de maneira simbólica: ADD W, Z A instrução acima significa adicionar o valor contido na posição Z com o conteúdo do registrador W. Neste caso, Z é um endereço de uma posição de memória e W indica um registrador específico. Podemos notar que a operação é feita sobre o conteúdo da posição de memória, e não sobre seu endereço.Operando Em matemática, um operando é uma das entradas (argumentos) de um operador. Por exemplo, em 3 + 6 = 9, + é o operador e 3 e 6 são os operandos. Em código de máquina é bem parecido. Um operando é um valor (um argumento) no qual a instrução opera. O operando pode ser um registrador, um endereço de memória, uma constante literal, ou um rótulo. Um exemplo simples na arquitetura PC é: MOV DS, AX em que o valor no operando registrador AX deve ser movido (MOV) para o registrador DS. Dependendo da instrução, pode haver zero, um, dois ou mais operandos. 16 Consequentemente, há a possibilidade de se escrever um programa utilizando-se linguagem de máquina de maneira simbólica. Cada código de operação simbólico tem um correspondente em representação binária, e cabe ao programador especificar qual o endereço de cada operando simbólico. O programador, por exemplo, pode especificar que Q = 8212 e E = 8213. Uma entrada simbólica pode ser “traduzida”, por meio de um programa, códigos de operações e referências em operandos na forma binária, tendo como resultado instruções de máquinas binárias. Atualmente, é muito difícil encontrar programadores que gostem de utilizar (programar) utilizando linguagem de máquina. A grande parte dos programas é escrita em linguagem chamadas de alto nível (java, pyton, shell script). Mesmo assim, a linguagem de máquina simbólica ainda permanece sendo uma ferramenta muito útil para a descrição de instruções de máquina. Um computador (estação de trabalho) deve possuir um conjunto de instruções que possibilita ao usuário criar qualquer tarefa de processamento de dados. Um programa qualquer que utiliza linguagem 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 38 de alto nível pode ser traduzido para uma linguagem de máquina, para que depois possa ser executado. Em consequência, o conjunto de instruções de máquina deve ser capaz de expressar qualquer comando de uma linguagem de alto nível. Operando Genericamente vários tipos de operandos que podem ser referenciados em uma instrução de máquina: • Operandos implícitos: são aqueles que, embora não explicitados na área de operandos da instrução, serão utilizados no seu processamento. • Operandos imediatos: são aqueles cujo valor faz parte da instrução; • Operandos indiretos: são aqueles onde a referência contida na instrução aponta para o local onde o valor do operando está armazenado. 17 A seguir iremos relacionar os tipos de instruções de máquina: • Movimentação de dados: instruções de memória; • Processamento de dados: instruções aritméticas e lógicas; • Armazenamento de dados: instruções de memória; • Controle: instruções de desvio e de teste. Instruções aritméticas proporcionam capacidade computacional para processar dados numéricos. As instruções booleanas operam sobre bits de uma PALAVRA; disponibilizam, então, uma capacidade para processar todo tipo de dado que o usuário desejar. Essas operações são primariamente efetuadas em dados guardados em registradores da CPU, consequentemente, é isto que motiva a existência de instruções de memória para mover dados entre os registradores e a memória e vice-versa. Para a transferência de programas e dados para a memória e para a transferência dos resultados retornando para o usuário é que há as instruções de E/S (Entrada e Saída). Instruções de teste, como o próprio nome diz, são para fazer o teste do valor de uma palavra de dados ou o estado de uma execução. Para o desvio da execução de um programa para uma nova instrução é que há as instruções de desvio, geralmente em detrimento do resultado de um teste. Os campos de endereço, no formato de instrução típico, são relativamente pequenos. Com o intuito de possibilitar a referência a uma grande quantidade de posições de MP, técnicas variadas de endereçamento vêm sendo empregadas. A maioria dessas técnicas envolve decisões que contrapõem a quantidade de posições de memória endereçáveis e ou a flexibilidade de endereçamento ao número de referências à memória em cada instrução e/ou à complexidade do cálculo de endereços. 18 O formato de uma instrução especifica como será a disposição dos bits da instrução, conforme ele é formado. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 39 Um formato de instrução deve ter um código de operação e zero ou mais operandos, explicitamente ou implícito. Cada operando explícito é feito referência utilizando-se os modos de endereçamento (endereçamento direto, registrador, indireto, deslocamento, pilha). O formato deve ser um indicador de maneira explícita ou implícita do modo de endereçamento para cada operando. São utilizados mais de um formato de instrução na maioria dos conjuntos de instruções. Para começo de um projeto sobre o tamanho de instrução, a questão primordial deste projeto é o tamanho do formato de instrução. Essa escolha interfere, e sofre interferência, pelo tamanho e pela maneira que a memória é organizada, pela complexidade e velocidade da UCP e pela estrutura de barramento (responsável em conectar à placa-mãe todos os componentes de um computador, como processadores, memórias, placas de vídeo). O dilema que se vislumbra é o conflito entre o desejo de oferecer uma variedade poderosa de instruções e a necessidade de economia de espaço. Programadores almejam mais operandos, mais códigos de operação, mais modos e maior espaço de endereçamento. Quantidade maior de operandos e códigos de operação facilitam o trabalho de programar, possibilitando escrever programas menores para executar determinada tarefa. Da mesma forma, mais modos de endereçamento dão ao programador flexibilidade maior na implementação de certas funções, tais como manipulação de tabelas e desvios com múltiplos endereços de destino. Saiba+ Em virtude do aumento da capacidade de armazenamento da MP e o uso crescente de memória virtual (somatório da MP e parte do HD), os programadores desejam endereçar uma maior área de memória. Códigos de operação, modos de endereçamento, operandos, endereços, requer bits na instrução, como consequência, instruções de maior tamanho. Todavia, instruções maiores podem significar desperdício, uma instrução de 32 bits ocupa duas vezes mais espaço que uma de 16 bits. 19 O tamanho da instrução deve ser proporcional ao tamanho da unidade de transferência de dados de e para a memória ou um deve ser múltiplo do outro. Caso contrário, não será obtido um número inteiro de instruções durante um ciclo de busca. Um aspecto importante é a taxa de transferência da memória. Essa taxa não está acompanhando o aumento da velocidade dos processadores. Então, a memória passará a ser o gargalo caso o processador seja mais rápido na execução das instruções. Uma solução adotada é usar instruções menores ou o uso de memória cache. Fica explícito que fixar o tamanho de instrução conflita com a capacidade de endereçamento e o número de códigos de operação. Número maior de códigos de operação impacta em mais bits no campo de código. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 40 O projetista se vê, então, diante de um conjunto de fatores que deverão ser considerados e equilibrados. Ainda não está bem definido até onde é crítico a escolha de uma ou outra alternativa. Para entendermos como é a organização da UCP (CPU), é necessário considerar as seguintes ações que devem ser executadas: • Busca de dados: a execução de determinada instrução poderá solicitar a leitura de dados de um módulo de E/S (Entrada e Saída) ou leiturade dados da memória. • Interpretação de instrução: a instrução propriamente dita; • Busca de instrução: a CPU faz a leitura de determinada instrução da memória; • Escrita de dados: os resultados da execução poderão solicitar escrita dos dados em um módulo de E/S ou na memória. • Processamento de dados: execução de determinada instrução pode vir a solicitar que seja efetuada uma operação lógica ou aritmética sobre os dados. 20 Para a execução dessas ações, a UCP necessita guardar temporariamente alguns dados. Ela manterá a posição de memória da última instrução, para ter ciência da próxima instrução, e necessita também de armazenar temporariamente dados e instruções, enquanto determinada instrução é executada. Em suma, a UCP precisa de uma pequena memória interna. Você deve estar lembrado que os componentes mais importantes da UCP (CPU) são a ULA (unidade lógica e aritmética) e a UC (unidade de controle). Cabe à ULA efetuar o processamento de dados e a UC o controle da operação da ULA como também pela transferência de dados e instruções para fora e para dentro da UCP. A figura abaixo mostra o barramento interno da UCP, que nada mais é do que os caminhos de transferência de dados e de sinais de controle. Cabe a ele ser o responsável pela transferência dos dados entre os vários registradores e a ULA, uma vez que a ULA opera apenas com dados localizados na memória interna da UCP. A figura também mostra os elementos básicos de uma ULA. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 41 21 Como estudamos anteriormente um sistema computacional emprega uma hierarquia de memória. Nos níveis mais altos a memória é mais rápida, menor e com o custo maior por bit. Na UCP, há um conjunto de registradores que funciona como um nível da hierarquia de memória acima da MP e da memória cache. Os registradores da UCP possuem duas funções: 22 RESUMO Durante o estudo deste módulo você compreendeu que um processador é um poderoso dispositivo que realiza cálculos. Conforme estão sendo processadas as instruções armazenadas na memória interna do processador, ele vai respondendo a esse volume e faz o processamento da informação. Estudamos que o processador é formado por um conjunto de componentes (ULA – Unidade Lógica Aritmética, UC – Unidade de controle, e Registradores), sendo que cada um tem um papel específico no processamento de um dado, uma informação, um programa e etc. A ULA é responsável pela execução das instruções dos programas. A Unidade de Controle (UC) é responsável por controlar as ações a serem realizadas. O registrador agiliza e armazena parte das informações que estão na memória principal, no intuito de evitar acesso contínuo a esta memória. Para finalizar, vimos que o conjunto de instruções da máquina constitui o limite em que o projetista e o programador de computadores visualizam em um mesmo computador. Na visão do projetista, o conjunto de instruções de máquina fornece os requisitos funcionais para a CPU. Na visão do usuário, que programar em linguagem de máquina (Assembly), há a necessidade do conhecimento básico sobre a estrutura de memória, sobre o conjunto de registradores da CPU, funcionamento da ULA e os tipos de dados disponíveis diretamente na máquina. A operação de uma CPU é determinada pelas instruções que ela executa, chamadas de instruções de máquina. A coletânea de diversas e diferentes instruções capazes de serem executas pela CPU é chamada de conjunto de instruções da CPU. UNIDADE 3 – FUNCIONAMENTO E COMPONENTES BÁSICOS MÓDULO 4 – DISPOSITIVOS DE ENTRADA E SAÍDA E BARRAMENTOS 01 1 - MÓDULOS DE ENTRADA E SAÍDA 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 42 Neste módulo iremos fazer uma pequena introdução a respeito dos dispositivos de entrada e saída (E/S). Veremos que é um dispositivo de entrada/saída, como são os métodos de realização de operações de E/S (entrada/saída) e o importante papel do barramento na comunicação de todos estes dispositivos. Além da memória e do processador, outro elemento importante e fundamental de um sistema computacional é o conjunto de módulos de E/S (entrada e saída). Cada módulo está conectado por meio do barramento ao sistema ou com o computador central e controla um ou vários dispositivos periféricos. Um módulo de entrada e saída (E/S) não é apenas um conjunto de conectores mecânicos que estão ligando um dispositivo ao barramento do sistema. Na verdade há um certo “raciocínio” ou uma inteligência, ou seja, há uma lógica dedicada ao desempenho da função de comunicar um periférico ao barramento. Barramento É um conjunto de linhas de comunicação que permitem a interligação entre dispositivos, como a CPU, a memória e outros periféricos. 02 Você poderá ficar em dúvida e questionar o motivo dos periféricos não estarem diretamente conectados ao barramento do sistema. A resposta é simples e abaixo seguem os motivos: • Há uma gama de periféricos, com vários e diferentes mecanismos de operação. Não seria possível incorporar ao processador a lógica necessária para poder controlar dispositivos de vários tipos. • Em virtude da taxa de transferência de dados dos periféricos, na maioria das vezes, ser bem menor do que a taxa de transferência de dados do processador ou da memória, fica impossível utilizar barramentos do sistema de alta velocidade para comunicar-se diretamente com um periférico. • Na maioria das vezes os periféricos utilizam tamanhos de palavras e formatos de dados diferentes dos utilizados na máquina (computador) em que estão conectados. Em virtude das razões expostas acima, torna-se necessário um módulo de entrada e saída (E/S) que irá desempenhar as seguintes funções(observe a figura abaixo): • Fazer a interface com um ou mais dispositivos periféricos, por meio de conexões adequadas de dados. • Oferecer uma interface com a memória e com o processador, por meio do comutador central ou pelo barramento. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 43 Comutador Dispositivo usado para inverter o sentido de uma corrente. Por exemplo, um interruptor. 03 2 - DISPOSITIVOS EXTERNOS Agora vamos falar dos dispositivos externos. As operações de entrada e saída são efetuadas utilizando- se uma gama de dispositivos externos, que disponibilizam um meio para efetuar a troca de dados entre o computador e o ambiente externo. Por meio de uma conexão de um módulo de entrada e saída um dispositivo externo, é conectado, por exemplo, uma impressora (conforme figura acima). Para a transferência de dados, informações de controle e informações de estado entre o módulo de entrada e saída utiliza-se esta conexão. Chama-se de periférico ou dispositivo periférico o dispositivo externo conectado a um módulo de E/S (entrada e saída). Classificação dos dispositivos Externos Os dispositivos externos são classificados segundo sua finalidade ou sua função. Podem ser: • Voltados para a comunicação com dispositivos remotos; • Voltados para a comunicação com a máquina; • Voltados para a comunicação com o usuário. O disco magnético (HD) é um exemplo de dispositivo voltado para a comunicação com a máquina. Provavelmente você agora deve estar se perguntando: já estudei que HD (disco magnético) também exerce função de memória, então, HD é um dispositivo de E/S ou uma memória secundária? Pois é, esta pergunta é totalmente pertinente e vamos explicar. O HD exerce as duas funções, de dispositivo de E/S e também de memóriasecundária, isto ocorre em virtude de como é o modelo de arquitetura de um sistema computacional (conjunto de hardware/software). Pela visão funcional, o HD faz parte da hierarquia de memória, e por outro lado, pela visão estrutural, o HD é controlado por um módulo de entrada e saída (E/S). Comunicação com o usuário São exemplos de dispositivos voltados para a comunicação com o usuário: impressoras e terminais de vídeo. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 44 Comunicação com a máquina Além do HD, há outros exemplos de dispositivos voltados para a comunicação com a máquina: sensores e controladores utilizados em robótica (estudo sobre utilização de robôs). Comunicação com dispositivos remotos Os dispositivos que são voltados para a comunicação com dispositivos remotos tornam possível um computador trocar dados remotamente com outros dispositivos, estes dispositivos podem ser voltados para a comunicação com o usuário, assim como um terminal, poderá ser com outra máquina ou uma comunicação interna. 04 A figura abaixo é um exemplo de modelo de um dispositivo externo. A lógica de controle associada ao dispositivo é que efetivamente faz o controle de sua operação, em resposta a um INPUT (comando recebido) no módulo de entrada e saída. Um transdutor é utilizado na conversão de dados codificados como sinais elétricos para alguma outra forma de energia, em uma operação de saída, ou dessa outra forma de energia para sinais elétricos, em uma operação de entrada. Normalmente, está associada ao transdutor uma área de armazenamento temporário para a transferência de dados entre o módulo de entrada e saída e um ambiente externo. A interface com o módulo de entrada e saída é feita por: 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 45 Transdutor Dispositivo que recebe um sinal e o retransmite, independentemente de conversão de energia. Interface É o conjunto de meios planejados, sendo físicos ou lógicos com o objetivo de fazer a adaptação entre dois sistemas. 05 Interação usuário/máquina De forma geral a maneira mais usual de interação entre um usuário e sua máquina (computador) é feita por meio da combinação teclado- mouse-monitor de vídeo, embora já se percebam outras formas de interação, como o reconhecimento de voz. Inclusive, atualmente, a interação está sendo via touch (toque) ou tecnologia touchscreen (tela sensível ao toque). Os dados são oferecidos pelo usuário por meio do teclado ou pelo toque. Essa entrada é então transmitida ao computador, podendo também ser mostrada no monitor de vídeo. Além do mais, o monitor mostra os dados fornecidos como um resultado das operações realizadas pela máquina (computador). É um caractere a unidade básica de troca de dados. A cada caractere está associado um código tipicamente de 7 ou 8 bits. A codificação mais usada é um condigo de 7 bits conhecido como ASCII (código americano para troca de informações). Cada caractere é representado por um código binário distinto de 7 bits; dessa maneira, podem ser representados até 128 caracteres diferentes. A tabela abaixo é um exemplo da correspondência das letras do alfabeto e o código ASCII. Veja que a letra A seu correspondente de 7 bits é = 1000001. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 46 Reconhecimento de voz Você já recebeu atendimento eletrônico no qual ele pedia que você “falasse a opção desejada”? Ou conhece algum smartphone que efetua sozinho uma ligação para a pessoa cujo nome é pronunciado por você? Esses programas ouvem o som emitido pela sua voz, classificam as sílabas e é aplicado um método de busca para associar estas informações com padrões de palavras a fim de encontrar semelhanças. Como funciona: para que o computador reconheça o som da sua voz juntamente com a fonética da palavra pronunciada e efetue a aplicação desejada, ele precisa encadear uma sequência de passos. Primeiro ele precisa digitalizar a fala que se quer reconhecer. Para isso, ele utiliza um conversor analógico-digital que capta as vibrações criadas pela sua voz e converte essas ondas em dados digitais. Em seguida, aplica-se uma medida para cada uma das ondas captadas e o som digitalizado é filtrado para separá-lo de ruídos e interferências. Então, efetua-se uma computação das características que representam o domínio espectral (frequências) contido na voz. Nessa etapa do processo, o som pode necessitar ser sincronizado, pois as pessoas não costumam utilizar o mesmo tom e nem sempre falam na mesma velocidade. Isso consiste em um ajuste com modelos de som já armazenados na memória do classificador. Então essa digitalização é separada em frações ainda menores, ou seja, sons fonéticos não maiores do que uma sílaba. Em seguida, o programa compara os sons captados com fonemas conhecidos e presentes em seu banco de dados que correspondam ao idioma que o locutor tenha falado. Em outras palavras, é aplicado um método de busca para associar as saídas com padrões de palavras e da voz de quem as emitiu. Finalmente, o sistema analisa o resultado e o compara com palavras e frases conhecidas e, como resultado, ele identifica o que seu usuário disse e converte para a funcionalidade desejada (texto em uma planilha, um comando, o reconhecimento do usuário, etc.). 06 Quando uma tecla é acionada pelo usuário, é gerado um sinal eletrônico, que ao ser interpretado pelo transdutor do teclado e faz a tradução conforme o padrão de bits correspondente ao código ASCII. Sendo assim, esse padrão de bits será transmitido para o módulo de E/S da máquina (computador). Um trabalho que você digitou poderá ser armazenado na máquina, codificado em ASCII. Durante uma operação de saída de dados, os caracteres em código ASCII são transmitidos para um dispositivo externo através do módulo de E/S. O transdutor desse dispositivo realiza a interpretação dos 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 47 códigos e os envia, por meio de sinais eletrônicos correspondentes, para o dispositivo de saída, que então irá executar alguma função de controle solicitada ou irá exibir o caractere indicado. A unidade de disco (HD) possui circuitos eletrônicos para troca de sinais de controle, de estados com o módulo de E/S, troca de dados, além de circuitos controladores do mecanismo de escrita e leitura do disco. Em um HD de cabeçote fixo, o transdutor faz a conversão dos padrões magnéticos da superfície do HD para bits da área de armazenagem temporária do dispositivo e vice-versa. Um HD de cabeçote móvel deve também ter a capacidade de mover o braço do disco na radialmente, sobre a superfície do HD. 07 3- FUNÇÕES DO MÓDULO DE ENTRADA/SAÍDA As funções mais importantes de um módulo de entrada e saída (E/S) são: - Comunicação com dispositivos; - Comunicação com o processador; - Controle e temporização; - Detecção de erros; - Área de armazenamento temporário de dados. O processador pode estabelecer uma comunicação em qualquer hora com um ou mais dispositivos externos, conforme as necessidades de entrada e saída do programa. Os recursos internos do sistema, como o barramento e a MP, são compartilhados para haver a realização de várias atividades, incluindo a entrada e saída de dados. Em virtude disso, um módulo de E/S inclui funções de temporização e controle, para efetivamente monitorar o fluxo de dados entre os recursos internos e os dispositivos externos. 08 Paraexemplificar, o controle de transferência de dados de um dispositivo externo para o processador envolve as seguintes etapas sequenciais: 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 48 09 Caso um barramento esteja sendo usado pelo sistema, cada uma das interações entre o módulo de entrada e saída e o processador irá envolver uma ou mais arbitrações (priorização) do barramento. Para que haja comunicação com o processador há necessidade de serem observados os seguintes itens: Decodificação de comando O módulo de E/S recebe comandos do processador, geralmente enviados como sinais, por meio do barramento de controle. Exemplo, um módulo de entrada e saída conectada a um HD poderá aceitar os seguintes comandos: leitura e escrita de um setor, busca de determinada trilha e pesquisa de determinado registro identificador. Dados Por meio do barramento de dados há transferências entre o processador e o módulo de entrada e saída. Informações de estado Geralmente os periféricos são muito lentos, em virtude disso, é necessário conhecer o estado do módulo de entrada e saída. Exemplo, um módulo de E/S não está pronto para uma operação de leitura em virtude de estar ainda processando um comando de entrada e saída anterior. Essa situação é enviada como um sinal de estado, podendo ser o sinal BUSY (ocupado) e READY (pronto). Há a possibilidade de haver também sinais para indicar condições de erro Reconhecimento de endereço Cada dispositivo de entrada e saída possui um endereço, assim como uma palavra de memória. Dessa forma, o módulo de entrada e saída deve ser capaz de reconhecer distintamente um endereço para cada periférico que esteja sob seu controle. 10 Uma tarefa primordial de um módulo de entrada e saída é o de armazenar temporariamente os dados. Enquanto a taxa de transferência de dados entre a MP e o processador é muito alta, entretanto, as taxas da maioria dos dispositivos periféricos são bem menores e variam em valores. A transferência de dados da MP para o módulo de entrada e saída é feita de forma muito rápida. Esses dados são armazenados de forma temporária no módulo de entrada e saída e, consequentemente, remetidos em uma taxa adequada para o dispositivo periférico. No sentido oposto à transmissão os dados também são armazenados de forma temporária no módulo de entrada e saída, para não manter a memória numa taxa baixa de transferência de dados. Dessa forma, o módulo de entrada e saída deverá ter a capacidade de realização de operações tanto à velocidade de um dispositivo externo como à velocidade da memória. 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 49 Cabe também ao módulo de entrada e saída (E/S) ser o responsável pela detecção de erros e do envio desta informação para o processador. A detecção de erro alerta sobre mau funcionamento elétrico ou mecânico sinalizado pelo dispositivo, assim como alguma alteração no padrão de bits transmitido por um dispositivo para o módulo de entrada e saída. É utilizado um tipo de código de detecção de erros para detectar erros de transmissão, podendo ser utilizado um bit de paridade em cada caractere de dados. Para exemplificar, sabemos que um código em ASCII ocupa 7 dos 8 bits de um byte e o valor que será atribuído ao oitavo bit de tal maneira que o número total de “1” no byte seja par (paridade par) ou impar (paridade impar). Então, ao receber um byte, o módulo de entrada e saída verifica a paridade e determina se houve erro ou não. 11 4 – BARRAMENTO E CONTROLADOR Barramentos são estruturas físicas localizadas nas placas eletrônicas (exemplo: placa-mãe) que têm por finalidade ser uma interface de comunicação entre os vários tipos de periféricos que fazem parte de um computador (máquina). Observando fisicamente uma estrutura de uma máquina, vemos que é composta por uma caixa de metal, uma placa de circuito impresso chamada de placa-mãe. Nessa placa há muitos chips, entre eles o chip processador e alguns slots nos quais os DIMM (Módulo de Memória em Linha Dupla), poderão ser inseridos. Há também na placa mãe um barramento que percorre todo o seu comprimento, e soquetes pelos quais são feitas as ligações dos conectores das placas aos controladores dos dispositivos de entrada e saída. Veja a figura abaixo que é um exemplo de um barramento único, onde estão conectados o processador à memória e os dispositivos de entrada e saída (E/S). 12 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 50 Cada dispositivo de entrada e saída (E/S) possui um circuito chamado de controlador que está ligado por meio de um slot livre à placa mãe, isto poderá ser para qualquer dispositivo de entrada e saída com exceção para os dispositivos on-board. A função do controlador é administrar o dispositivo de entrada e saída quanto ao acesso ao barramento. Ao executar uma determinada tarefa, ele inicia diversos comandos através dos barramentos de uma máquina aos vários dispositivos do sistema, que por meio de seus controladores irão obter esses dados e retornarão um bit após o outro. É uma das atribuições do controlador agrupar esses bits em unidades e os escrever na memória à medida que é reconhecida cada unidade. Um controlador poderá não utilizar o processador para ler e escrever dados na memória, esta operação é chamada de DMA (Direct MemoryAccess) que quer dizer acesso direto à memória. Não são apenas os controladores de E/S que utilizam o barramento, o processador também o utiliza para realizar busca de informações e instruções iniciadas por algum programa em execução. No barramento está localizado um circuito eletrônico inteligente que é capaz de dar prioridade na sequência das informações enviadas e recebidas, isto ocorre devido à presença de um chip chamado de árbitro do barramento, como se fosse um sinal de trânsito, que estabelece de quem é a vez. Geralmente os dispositivos de entrada e saída têm a preferência, deixando o processador em segundo lugar, pois o HD e outros dispositivos que utilizam dispositivos mecânicos (movimentar cabeça de leitura), não podem sofrer interrupções durante seus trabalhos, consequentemente forçá-los a ficar em modo de espera acarretará em perdas de dados. Slot Termo em inglês que significa: ranhura, fenda, conector, encaixe. Sua função é conectar os periféricos ao barramento. 13 Quando uma operação de entrada e saída estiver sendo realizada, haverá acesso prioritário garantido ao barramento o dispositivo que estiver efetuando a tarefa. Esse processo é chamado de Roubo de ciclo, que influencia diretamente na velocidade da máquina (computador). São exemplos de barramentos: Barramento ISA (Industry Standard Architecture ); EISA (Extended Industry Standard Architecture), PCI (Peripheral Component Interconnect) e SATA (Serial Advanced Technology Attachment). Observe na figura abaixo um exemplo de barramento PCI: 102 – Arquitetura de Computadores | Unidade 03 © 2014 - AIEC - Associação Internacional de Educação Continuada 51 Nesta figura é possível visualizar que o processador se comunica com a memória e também com os controladores por meio de uma conexão de alta velocidade e dedicada. A empresa americana de processadores INTEL definiu o barramento PCI com suporte para interconexão de componentes e periféricos com o intuito de garantir que o mercado não se tornasse uma variedade enorme de tipos de arquitetura de barramento local, que foram lançados em curto período de tempo. 14 RESUMO Estudamos e compreendemos duranteo desenvolvimento deste módulo que, além da memória e do processador, outro elemento importante e fundamental de um sistema computacional é o conjunto de módulos de E/S (entrada e saída). As operações de entrada e saída são efetuadas utilizando-se uma gama de dispositivos externos, que disponibilizam um meio para efetuar a troca de dados entre o computador e o ambiente externo. Estudamos que há três categorias de classificação dos dispositivos externos que são: os voltados para a comunicação com dispositivos remotos; os voltados para a comunicação com a máquina e os voltados para a comunicação com o usuário. Quando você clica em uma tecla qualquer é gerado um sinal eletrônico que ao ser interpretado pelo transdutor do teclado que irá fazer a tradução conforme o padrão de bits correspondente ao código ASCII. Uma das funções mais importantes de um módulo de entrada e saída (E/S) divide-se nas seguintes categorias: Comunicação com dispositivos; Comunicação com o processador; Controle e temporização; Detecção de erros e Área de armazenamento temporário de dados. Para finalizar vamos lembrar que ao falarmos em Barramentos precisamos entender que são estruturas físicas localizadas nas placas eletrônicas (exemplo: placa-mãe) que tem por finalidade ser uma interface de comunicação entre os vários tipos de periféricos que fazem parte de um computador (máquina). 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 1 UNIDADE 4 – ARQUITETURAS CONVENCIONAIS E NÃO CONVENCIONAIS MÓDULO 1 – MÁQUINAS SEQUENCIAIS, MÁQUINAS RISC E CISC 01 1 - MÁQUINAS SEQUENCIAIS DE VON NEUMANN Durante o estudo deste módulo falaremos sobre a importância das chamadas máquinas sequenciais de von Neumann para computação. Falaremos também sobre as máquinas não von Neumann e finalizaremos decorrendo sobre as características das arquiteturas RISC e CISC, bem como de projetos recentes utilizando o melhor de cada uma dessas arquiteturas. No início de nosso estudo sobre arquitetura e organização de computadores, começamos a ver o que é um sistema computacional, a importância dos seus componentes, que são memórias, processadores, dispositivos de E/S (entrada e saída) e meios de interconexão. No decorrer do nosso curso também tivemos oportunidade de estudar que componentes do processador, como controladores, registradores e coprocessadores, possuem um conjunto de instruções que operam sobre instruções e dados obtidos e armazenados externamente e organizados em palavras. Vimos que Memórias são formadas basicamente pela MP (memória principal) e MS (memória secundária), que o valor (custo) associado à memória está diretamente relacionado à sua velocidade de operação e capacidade de armazenamento. Os dispositivos de E/S (entrada e saída) são os que representam fisicamente os dados e são geralmente mais lentos em comparação ao processador. Os meios de interconexão são os responsáveis pela comunicação entre os componentes por meio dos barramentos que estão sob seu controle. Um dos problemas que ocorrem é a disputa pelo uso simultâneo dos recursos compartilhados. 02 O resumo que acabamos que ver tem como intuito relembrar conceitos que já estudamos. Para você ter um rendimento melhor nos estudos é necessário compreender que estes conceitos constituem a base teórica para entendermos que, tendo por referência o relacionamento e a organização dos componentes de um sistema computacional, poderemos classificar as máquinas que têm por base von Neumann e as máquinas chamadas de não von Neumann. Vimos a evolução da computação ao longo do tempo e também vimos que o cientista John von Neumann foi um dos principais estudiosos da matemática, física, meteorologia, economia e computação do século XX. Ele nasceu na Hungria, na cidade de Budapeste no ano de 1903 e faleceu em 1957. Para a área de TI, von Neumann, é o responsável pela estrutura clássica dos computadores digitais que armazenam programas na memória e geram outros programas. Ele também contribuiu de maneira importante na arquitetura de computadores, na análise de algoritmos, nos princípios de programação, na computação científica, na análise numérica, nas redes neurais, na 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 2 teoria dos autômatos e tolerância a falhas. 03 Uma característica básica da máquina von Neumann é sua composição. Esta é feita a partir de três subsistemas básicos, que são: CPU ou UCP, memória principal e sistema de E/S. Observe a figura abaixo: Vale a pena relembrar que a UCP (Unidade Central de Processamento) é formada pelos seguintes componentes: unidade de controle (UC), unidade Lógico Aritmética (ALU) e registradores. 04 Podemos destacar que dentre as características principais das máquinas de von Neumann estão: • o programa armazenado em memória, • existência de um único caminho entre memória e a UC (unidade de controle) • e a execução sequencial de instruções. Há uma sequência de ciclos do modelo da máquina de von Neumann que são a execução de um programa que faz uma busca da instrução (fetch), que nada mais é que uma transferência da instrução da posição de memória para a UCP, e a execução da instrução propriamente dita, que consiste na decodificação da instrução feita pela UC (Unidade de Controle) e a gerência dos passos para sua execução pela Unidade Lógica Aritmética (ULA). Outro modelo básico de máquinas von Neumann são as máquinas conhecidas como “máquinas de Harvard”. A diferença dos modelos pode ser observada pela existência de vias separadas para dados e 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 3 instruções entre a MP e UCP, conforme pode ser visualizado na figura abaixo. A origem do termo “Máquinas de Harvard” surgiu durante a criação dos computadores Mark I a Mark IV, desenvolvidos em Harvard, que tinham como característica possuir instruções e memórias de dados separadas. Mark I Chamado de Mark I (ASCC - Automatic Sequence Controlled Calculator) pela Universidade de Harvard, este foi o primeiro computador eletromecânico automático de larga escala desenvolvido nos EUA. Construído em 1944 num projeto da Universidade de Harvard em conjunto com a IBM. (Fonte: http://pt.wikipedia.org/wiki/Harvard_Mark_I). Saiba+ O Harvard Mark I, também conhecido como “Harvard-IBM Automatic Sequence Controlled Calculator”, foi concluído em 1944 pelo renomado engenheiro de computação Howard H. Aiken, tendo tido a contribuição e ajuda de uma equipe de engenheiros da IBM, que eram chefiados por Clair D. Lake. O Mark I teve apoio e financiamento da IBM (International Business Machines), bem como, da marinha americana. O projeto começou no ano de 1937 e o objetivo era construir um computador que ajudasse na construção de novas armas, no cálculo de trajetórias de artilharia e também decodificar os códigos secretos do inimigo. O Mark I era muito pesado, chegava a ter aproximadamente 5 toneladas e era composto por setenta e oito máquinas calculadoras, que eram controladas por dispositivos mecânicos e elétricos. O computador era operado por meio de uma fita de papel, na qual se armazenavam, por meio de perfurações, as instruções codificadas. Uma vez inserido o programa, o computador iniciava os cálculos. O Mark I teve sua utilidade voltada para fins militares e também foi utilizado no desenvolvimento da bomba atômica. Entre 1947 e 1952, o cientista Howard Aiken construiu versões melhoradas do Mark I, os Mark II, III e IV. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de EducaçãoContinuada 4 05 2 - MÁQUINAS NÃO VON NEUMANN As máquinas que não seguem o modelo de von Neumann são chamadas de máquinas “não von Neumann”. Porém, não quer dizer que esse modelo seja contra ou antagônico ao modelo de von Neumann, mas uma categoria um pouco mais ampla, em que incluímos os sistemas computacionais chamados de: 06 3 - AVALIAÇÃO DE DESEMPENHO Em virtude de haver um número grande de alternativas para a organização de um computador, é necessário haver mecanismos que possibilitem a realização de uma avaliação de cada arquitetura. Para isso, algumas medidas básicas de avaliação são necessárias. Atualmente o desempenho está associado à velocidade de execução das instruções básicas representadas em MIPS (milhões de instruções por segundo) e por flops. Outra maneira é a velocidade de execução de programas representativos das aplicações em benchmarks (teste para avaliação de performance na execução de um programa). Quando avaliamos o custo de um determinado componente precisamos nos atentar aos parâmetros que mais influenciam o valor final que são: número de pinos, área de chip e número de chips por sistema. Quando você resolve adquirir um laptop ou um notebook pode utilizar como parâmetro o tamanho, pois para você um item importante é a facilidade de transporte e uso em viagens. Será muito difícil avaliar um sistema de maneira isolada, geralmente a comparação básica que fazemos é o custo e desempenho, que tenha um preço justo e um desempenho aceitável, que possamos assistir a um filme em HD ou jogar determinado game. Aliás, quando falamos em jogos, o fator desempenho 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 5 ganha um vulto maior, pois dependendo do jogo haverá uma alta exigência de recursos como processador, memória, placa de vídeo dedicada, capacidade de armazenamento e etc. Vamos usar como exemplo uma propaganda sobre as especificações e vantagens de adquirir um notebook da Marca XYZ: “Você pode assistir a um filme de sucesso ou bater um recorde em um jogo sem problemas, pois a 4ª Geração dos Processadores XYZ oferece bateria de longa duração e uma experiência visual surpreendente para você aproveitar ao máximo seus aplicativos e jogos favoritos...” Sendo assim, o mais importante é o entendimento da necessidade e do emprego de determinada arquitetura. FLOPS Flop(s) é um acrônimo na computação que significa FLoating-point Operations Per Second, que, em português, quer dizer operações de ponto flutuante por segundo. Isto é usado para determinar o desempenho de um computador, especificamente no campo de cálculos científicos, que fazem grande uso de cálculos com ponto flutuante; similar a instruções por segundo. (Fonte: http://pt.wikipedia.org/wiki/FLOPS) 07 Arquitetura de alto desempenho Um projeto de um sistema com arquitetura de alto desempenho só é possível alterando os algoritmos para melhor ajustar à organização do sistema. Há outros casos em que apenas mudanças na organização básica do sistema também serão necessárias. Dependendo da arquitetura, será mais adequado o uso de paralelismo. No processo de definição de arquitetura torna-se necessário observar alguns questionamentos: - Qual será o tempo necessário para execução de um conjunto de programas de determinada aplicação? - Qual será o espaço necessário para o armazenamento de um conjunto de programas ou dados? - Qual será o uso efetivo dos diversos componentes do sistema? Diante destas perguntas chegamos à conclusão de que não há uma resposta simples. Essas perguntas exigem uma análise mais ampla, abrangendo o teste com programas (softwares) que exijam Benchmark Em computação, benchmark é o ato de executar um programa de computador, um conjunto de programas ou outras operações, a fim de avaliar a performance relativa de um objeto, normalmente executando uma série de testes padrões e ensaios. (Fonte: http://pt.wikipedia.org/wiki/Benchmark). Tamanho No caso do tamanho, a avaliação está nas características físicas, exemplo: peso, volume, facilidade de transporte e consumo de energia. Você também poderá considerar outro fator, por exemplo: para estudar. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 6 determinada resposta do sistema computacional. Por meio destes testes será possível desenvolver projetos computacionais com arquitetura de alto desempenho identificando e retirando os possíveis “gargalos” do sistema. Estes “gargalos” limitam o desempenho como um todo. Paralelismo O paralelismo ou também chamado de ILP (Paralelismo em nível de instrução) é uma técnica utilizada no desenvolvimento de processadores e compiladores que melhoram (aumentam) o desempenho dos computadores, fazendo que operações como multiplicações de ponto flutuante, adição de inteiros, escrita e leitura de memória sejam executadas em paralelo. No nível de instruções, o paralelismo é muito utilizado por arquiteturas de processadores que possuem a capacidade de operar dados ou executar instruções em paralelo. 08 4 - ARQUITETURA RISC Tendo por objetivo melhorar a performance, estudos sobre o comportamento da execução de programas em linguagens de alto nível visam orientar o projeto de um novo tipo de arquitetura para processadores, o chamado computador com conjunto reduzido de instruções(Reduced Instruction Set Computes), também conhecido como arquitetura RISC. Trata-se de uma linha de arquitetura de processadores que favorece um conjunto simples e pequeno de instruções que levam aproximadamente a mesma quantidade de tempo para serem executadas. Trata-se de uma linha de arquitetura de processadores que favorece um conjunto simples e pequeno de instruções que levam aproximadamente a mesma quantidade de tempo para serem executadas. Desde o surgimento e desenvolvimento do 1º computador que utilizava a memória para armazenamento dos programas, na década de 1950, não houve tantas mudanças significativas na área de Arquitetura de Organização de Computadores. Podemos destacar que os maiores avanços foram: 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 7 Linguagem de alto nível Linguagem com um nível de abstração relativamente elevado, longe do código de máquina e mais próximo à linguagem humana. Desse modo, as linguagens de alto nível não estão diretamente relacionadas à arquitetura do computador. O programador de uma linguagem de alto nível não precisa conhecer características do processador, como instruções e registradores. Essas características são abstraídas na linguagem de alto nível. (Fonte: http://pt.wikipedia.org/wiki/Linguagem_de_programa_de_alto_nivel) 09 Conforme vimos na lista anterior, é possível adicionar uma inovação muito interessante na arquitetura de computadores que é chamada deconjunto reduzido de instruções (RISC). Essa arquitetura (RISC) mudou as tendências da época na arquitetura de computadores. Mesmo que o sistema RISC tenha sido definido de muitas maneiras por grupos diferentes de projetistas, a maioria segue os seguintes elementos básicos: • Foco em otimizar o pipeline de instruções; • Número grande de registradores com o propósito geral ou o uso de tecnologias de compilação que otimizam o uso de registradores; • Conjunto de instruções limitado e simples. Uma das maneiras de evidenciar a evolução das linguagens de programação foi também a evolução dos computadores. Com a diminuição do valor (custo) do hardware, houve um aumento do software. Isso ocorreu devido à diminuição do número de programadores disponíveis para o desenvolvimento de 102– Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 8 programas. Sendo assim, o preço do software passou a ser maior, no ciclo de vida de um sistema, do que o do hardware. Além de apresentar um custo elevado, o software, geralmente, apresenta bugs, o que diminui a confiança. Infelizmente é comum nos depararmos com situações que programas ou aplicações apresentam erros inexplicáveis mesmo após vários anos de uso. Bugs Bug em inglês quer dizer “defeito”, é um erro no funcionamento de um software ou mesmo do hardware, também chamado de falha na lógica de um programa. Pode vir a causar comportamentos inesperados, como resultado incorreto ou comportamento indesejado. São geralmente causados por erros no próprio código-fonte (código desenvolvido pelo programador). (Fonte: http://pt.wikipedia.org/wiki/Bug) 10 5 - ARQUITETURA CISC Há também a arquitetura CISC - Complex Instruction Set Computer, ou Computador com um Conjunto Complexo de Instruções. É uma linha de arquitetura de processadores capaz de executar centenas de instruções complexas diferentes sendo, assim, extremamente versátil. Havia uma tendência para o uso de conjuntos de instruções cada vez mais ricas, incluindo um grande número de complexas instruções. Essa tendência teve por motivação duas grandes razões: desejo de otimizar o desempenho e o desejo de simplificação dos compiladores. Essas razões tinham por fundamentação a adoção da linguagem de alto nível nas atividades de programação; os projetistas de computadores almejavam projetar máquinas que oferecessem o melhor suporte possível para as linguagens de alto nível. Não será nosso objetivo questionar o que motivou alguns projetistas de computadores adotarem a técnica CISC. O importante é o entendimento que a tecnologia não para, como na canção do Cazuza “o tempo não para”, a TI também não para. Atualmente, para a TI, as tecnologias ficam obsoletas em um curto prazo de tempo. Consequentemente, as arquiteturas existentes variam dentro de um espectro, não podendo ser classificadas em apenas duas categorias, RISC ou CISC, pois é pouco provável que algum dia haja uma conclusão sobre o tipo de abordagem mais adequada, se uma arquitetura com reduzido número de instruções (RISC) ou se a arquitetura com um complexo conjunto constituído de grande quantidade de instruções (CISC). Compilador É um programa de sistema que traduz um programa descrito em uma linguagem de alto nível para um programa equivalente em código de máquina para um processador. Em geral, um compilador não produz diretamente o código de máquina, mas sim um programa em linguagem simbólica (assembly) semanticamente equivalente ao programa em linguagem de alto nível. O programa em linguagem simbólica é então traduzido para o programa em linguagem de máquina através de montadores. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 9 (Fonte: http://www.dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node37.html). 11 É interessante observar que mesmo a abordagem CISC tendo por premissa um complexo conjunto de instruções, ela veio contribuir para a simplificação dos compiladores. Um compilador gera uma sequência de instruções de máquina para cada comando da linguagem de alto nível. Caso existam instruções de máquina que se assemelhem aos comandos de linguagens de alto nível, essa tarefa tornar- se-á mais simples. Contudo, esse raciocínio vem sendo discutido por pesquisadores adeptos da arquitetura RISC. Eles descobriram que instruções de máquina complexas frequentemente são mais difíceis de serem utilizadas, em virtude de o compilador ter de encontrar os casos em que essas instruções estejam exatamente adequadas a uma dada construção da linguagem. Com o uso de um conjunto complexo de instruções, fica muito mais difícil a tarefa de melhorar (otimizar) o código gerado. Fica difícil minimizar seu tamanho, reduzir o número de instruções executadas e melhorar o desempenho da pipeline de instruções. Outro argumento utilizado e que merece destaque é a expectativa de que uma arquitetura CISC possa produzir programas menores e mais rápidos. Programas menores têm duas vantagens. A primeira é consumir um menor espaço de memória, resultando na economia desse recurso. Como a memória é, hoje em dia, mais accessível e tornou-se mais barata, essa vantagem deixa de ser tão significativa. A vantagem mais evidente e importante de programas menores é, consequentemente, contribuir para melhorar o desempenho. O problema com essa linha de raciocínio é que não se pode ter certeza de que um programa compilado para arquitetura CISC será menor que um programa compilado para uma arquitetura RISC correspondente. Em muitos casos, o programa CISC, expresso em linguagem de máquina simbólica, pode ter um número menor de instruções, mas o número de bits de memória ocupada pode não ser significativamente menor. Melhorar o desempenho Essa melhoria de desempenho pode acontecer de duas maneiras: • Primeiro, um menor número de instruções significa menor número de bytes de instruções a serem buscados. • Segundo, em um ambiente de paginação, programas menores ocupam um número menor de páginas, o que reduz a taxa de falta de páginas. Paginação Processo de virtualização da memória que consiste na subdivisão da memória física em pequenas partições (frames), para permitir uma utilização mais eficiente da mesma. As frames da memória física correspondem a páginas de memória virtual. A alocação de memória é requisitada por páginas, a menor unidade deste método. Cada página é mapeada numa frame de memória através de um processo que chama paginação. (http://pt.wikipedia.org/wiki/Mem%C3%B3ria_paginada). 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 10 12 RISC X CISC – Projetos Recentes Até o momento você deve ter observado as características de cada arquitetura (RISC X CISC) e provavelmente deve estar pensando ou querendo saber qual delas seria realmente a melhor arquitetura. O interessante neste caso não é saber quem é a melhor, mas sim reconhecer que o projeto RISC pode beneficiar-se com a inclusão de algumas características CISC e o CISC pode beneficiar-se com a inclusão de algumas características RISC. O resultado é que projetos RISC mais recentes não são RISC “100%”, assim como projetos CISC incorporam característica RISC. Sendo assim, não há atualmente processadores que sigam fielmente uma arquitetura específica, RISC ou CISC. Veja alguns exemplos. Visando à praticidade, uma vantagem da arquitetura CISC é que já há várias instruções guardadas no próprio processador, o que viabiliza o trabalho dos programadores que, desta forma, já têm disponível as instruções necessárias para seus programas. Caso o programador estivesse programando para uma arquitetura RISC, ele teria mais trabalho, pois as instruções são mais simples e exigiriam muito, caso houvesse a necessidade de executar algumas tarefas mais complexas. Uma comparação bem interessante e que ajuda na elucidação seria tentar usar uma calculadora comum (operações básicas) para fazer cálculos de estatística ou usar a calculadora comum para fazer conversão de base. Para finalizar nosso módulo, uma sugestão é você visitar a página (http://www.techtudo.com.br/dicas-e-tutoriais/noticia/2014/03/quais- as-diferencas-entre-os-processadores-amd-e-intel.html) e ler esta reportagem sobre as diferenças entre processadores da marca Intel e da marca AMD. Outra sugestão é a reportagem (http://www.tecmundo.com.br/processadores/2760-tabela-de- processadores-intel.htm) que explica com detalhes ascaracterísticas dos processadores da INTEL e vale a pena visitar a página da AMD (http://www.amd.com/pt-br/products/processors) para conhecer alguns tipos de processadores e suas características. 13 RESUMO Durante o estudo desta unidade tivemos a oportunidade de entender as chamadas: máquinas von Neumann e as não von Neumann. Uma característica básica da máquina von Neumann é sua composição, a qual é feita a partir de três subsistemas básicos: CPU ou UCP, memória principal e sistema de E/S. As máquinas que não seguem o modelo de von Neumann são chamadas de máquinas “não-von Neumann”. Porém, não quer dizer que este modelo seja contra ou antagônico ao modelo de 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 11 von Neumann. Um projeto de um sistema com arquitetura de alto desempenho só é possível alterando os algoritmos para melhor ajustar à organização do sistema. Tendo por objetivo melhorar a performance, estudos sobre o comportamento da execução de programas em linguagens de alto nível visam orientar o projeto de um novo tipo de arquitetura para processadores, o chamado computador com conjunto reduzido de instruções (Reduced Instruction Set Computes) ou também conhecido como arquitetura RISC. Há também a arquitetura CISC, que era resultado de uma tendência para o uso de conjuntos de instruções cada vez mais ricas, incluindo um grande número de complexas instruções. Essa tendência teve por motivação duas grandes razões: desejo de otimizar o desempenho e desejo de simplificação dos compiladores. Ao final, concluímos que o mais interessante não é saber quem é a melhor (RISC ou CISC), mas sim reconhecer que o projeto RISC pode beneficiar-se com a inclusão de algumas características CISC e o CISC pode beneficiar-se com a inclusão de algumas características RISC. O resultado é que projetos RISC mais recentes não são RISC “100%”, assim como projetos CISC incorporam características RISC. UNIDADE 4 – ARQUITETURAS CONVENCIONAIS E NÃO CONVENCIONAIS MÓDULO 2 – MÁQUINAS PARALELAS 01 1 - COMPUTAÇÃO PARALELA No decorrer do estudo deste módulo entenderemos que quando falamos em computação paralela fazemos referência à maneira de realizar vários cálculos (instruções) de maneira simultânea. Falaremos da organização SMP, que faz referência a vários processadores similares em um mesmo computador, ligados pelo barramento ou por meio de algum circuito de conexão. Você entenderá que cluster é o conjunto de máquinas, ligadas entre si, que trabalham juntas como um sistema computacional único, dando a impressão que é uma única máquina. Falaremos também do sistema NUMA no qual o tempo gasto para acesso a uma palavra na memória varia conforme a posição dessa palavra na referida memória. Você verá que computadores superescalares são máquinas que possuem várias unidades de execução no mesmo processador, sendo assim, executam em paralelo várias instruções de um mesmo programa. Estudaremos como é uma organização MIMD, na qual cada processador irá processar todas as instruções para, de forma adequada, realizar a transformação dos dados. Estudaremos a máquina SISD, a qual possui uma unidade de controle que oferece uma sequência de instruções para uma unidade de processamento. Na sequência, estudaremos o modelo PRAM, que é uma extensão do modelo sequencial RAM e também o mais conhecido dos modelos de computação paralela. Veremos o modelo Bulk Synchronous Parallel Model (BSP) que foi um dos primeiros a levar em consideração os custos da comunicação e não levar em conta as características de uma máquina paralela em um número pequeno de parâmetros. E ao final, veremos também o modelo Coarse Grained Multicomputer (CGM) que é muito similar ao modelo BSP. Vamos ao nosso estudo! 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 12 02 Caso alguém pedisse sua opinião para melhorar o desempenho de um sistema computacional, provavelmente você aconselharia a aumentar o número de processadores. Se você teve esta ideia, muito bem, está correto. A ideia de adicionar mais processadores para trabalharem (executarem) em paralelo para melhorar a performance diante de uma carga de trabalho é muito bem-vinda. Tanto é, que, hoje em dia, ao comprarmos uma máquina (computador) notamos que os processadores são, na maioria das vezes, multicore (processador com mais de um núcleo). Quando falamos em computação paralela, estamos fazendo referência à maneira de realizar vários cálculos (instruções) de forma simultânea. Trata-se de dividir um grande problema em problemas menores, os quais serão processados concorrentemente (paralelamente). Esta técnica, chamada de paralelismo, é empregada há muito tempo e seu foco sempre foi a computação de alto desempenho. Atualmente, em virtude da necessidade de criarmos máquinas mais potentes, de tamanho reduzido e que consumam menos energia elétrica, tornou-se ainda mais necessário o uso de processadores multinúcleo. Todavia, há várias maneiras de organizar múltiplos processadores, vamos destacar: • a organização de multiprocessadores simétricos (SMP), • os NUMA (acesso não uniforme à memória) e • os chamados agregados (clusters). Sistema computacional Conjunto de dispositivos eletrônicos (hardware) que processam informações de acordo com um programa (software). O software mais importante é o sistema operacional, porque ele fornece as bases para a execução das aplicações, às quais o usuário deseja executar. Exemplos de sistemas operacionais são: GNU/Linux, Microsoft Windows, o IOS da Apple. (Fonte: http://pt.wikipedia.org/wiki/Sistema_computacional). 03 2 - SMP / NUMA / CLUSTERS Quando falamos de uma organização SMP (Symmetric MultiProcessor - multiprocessadores simétricos), estamos fazendo referência a vários processadores similares em um mesmo computador, ligados pelo barramento ou por meio de algum circuito de conexão. O que há de crítico neste arranjo é o que chamamos de coerência de cache. Isto ocorre em virtude de cada processador ter sua memória cache e quando trabalham em conjunto, por algum motivo, alguma linha de dados for alterada indevidamente a MP (memória principal) terá uma versão inválida dessa linha. Reforçando o conceito, um SMP consiste em vários processadores que compartilham uma memória única ou mesmo um conjunto de memória através do compartilhamento de um barramento ou de outro tipo de conexão. Esse sistema tem por característica que o tempo de acesso a qualquer região da 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 13 memória é praticamente o mesmo para cada processador. O sistema SMP tem esta denominação em referência tanto quanto ao comportamento do sistema operacional quanto à arquitetura de hardware. Um sistema SMP tem as seguintes características: O controle do sistema é feito por um sistema operacional integrado, que estabelece uma interação entre seus programas e os processadores, em nível de dados, arquivos e de tarefas; Em virtude de serem simétricos, os processadores poderão desempenhar as mesmas funções; Tanto por meio de canais distintos ou comuns que provêm caminhos para os dispositivos, todos os processadores compartilham acesso aos dispositivos de entrada e saída (E/S); O tempo de acessa à memória é aproximadamente o mesmo para cada processador, isto ocorre em virtude dos processadores compartilharem as facilidades de E/S e a mesma MP e estão conectados por um barramento ou outro meio de conexão; Há dois ou mais processadores similares, com capacidade de computação compatível. 04 As vantagens do SMP são as seguintes: •necessita de espaço físico e demanda de energia menor que um cluster; • fisicamente falando é muito próximo ao modelo original de um processador único, sendo assim, fica mais fácil para as aplicações desenvolvidas para monoprocessadores, pois a aplicação não precisa “saber” quantos processadores há em uma máquina. Quando falamos em cluster estamos fazendo referência a um conjunto de máquinas, ligados entre si, que trabalham juntos como um sistema computacional único, dando a impressão que é uma única máquina. Coerência de cache Diversas arquiteturas de máquinas paralelas atuais são construídas com processadores produzidos em larga escala. Essas máquinas paralelas incorporam caches em suas arquiteturas, o que provoca o problema de coerência de cache, que, em síntese, é a inconsistência de dados. Essa inconsistência é provocada pelos seguintes motivos: - múltiplas cópias de mesma posição de memória podem existir em diferentes caches, - cada processador atualiza sua cópia local, não se preocupando com a existência de outras cópias em outros processadores; - cópias de mesmo endereço de memória poderão possuir valores diferentes. Sistema Operacional É um sistema que tem por objetivo organizar e controlar os softwares e o hardware tornando possível a utilização de um computador (máquina). (Fonte: http://pt.wikipedia.org/wiki/Sistema_operativo) 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 14 Quando falamos no sistema NUMA (Non-Uniform Memory Access ou acesso não uniforme à memória) estamos fazendo referência a um multiprocessador com memória compartilhada, no qual o tempo gasto para acesso a uma palavra na memória varia conforme a posição dessa palavra na referida memória. Então, como o próprio nome sugere, o tempo de acesso a diferentes regiões da memória pode não ser igual para um processador NUMA. Um grupo de computadores com apenas um processador ou de SMP independentes podem ser conectados por meio de cabos de rede ou outro tipo de conexão e formarem um cluster. Então não se esqueça, o sistema NUMA tem por característica o fato de todos os processadores possuírem acesso a todas as áreas da MP (memória principal), via operação de armazenamento e de carga. Sendo assim, o fator tempo de acesso à memória por um processador é diferente conforme a região utilizada. Isso acontece com todos os processadores, contudo, as regiões de memória na qual o acesso é mais rápido ou mais lento serão diferentes para diferentes tipos de organização utilizada nos processadores. 05 3 - MÁQUINA SEQUENCIAL / MÁQUINA PARALELA Tipicamente, uma máquina é vista como uma máquina sequencial. Grande parte das linguagens de programação exige a especificação do algoritmo como uma sequência de instruções. Esta visão é que os processadores executam programas através da execução sequencial de instruções de máquina. Contudo, esta visão não é totalmente verdadeira. Isso devido ao fato de que ao nível de microoperações, uma gama de sinais de controle é gerada ao mesmo tempo. A técnica de Pipeline de instruções é utilizada há um certo tempo, fazendo sobreposição nas operações de execução e busca de instruções. Esses são exemplos de execução em paralelo das funções. Essa visão nos remete a uma organização chamada superescalar, que tem por objetivo explorar o paralelismo ao nível de instrução. Nos chamados computadores superescalares, há várias unidades de execução no mesmo processador, sendo assim, executam em paralelo várias instruções de um mesmo programa. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 15 À proporção que há evolução da tecnologia e o preço do hardware da máquina (computador) diminui, os projetistas de máquina estão buscando outras maneiras de aproveitar o paralelismo, geralmente com o intuito de melhorar o desempenho e também aumentar a disponibilidade do sistema. O cientista da computação, o americano Michael J. Flynn foi o criador do primeiro sistema para a classificação de programas e computadores paralelos e sequenciais, ficando conhecida como a taxonomia de Flynn, que veremos a seguir. 06 Flynn fez a seguinte classificação para as categorias de sistemas de computação paralela: • SISD (Single Instruction Single Data) – “única instrução, único dado”. Significa que apenas um processador irá executar uma única sequência de instruções, utilizando os dados que estão armazenados em apenas uma memória. Pertencem a esta categoria os sistemas uniprocessados. Na estrutura de uma máquina SISD há uma UC (unidade de controle) que oferece uma SI (sequência de instruções) para uma UP (unidade de processamento). A UP opera sobre uma única SD de uma única UM (unidade de memória). Na máquina SIMD, há uma única UC, que alimenta múltiplos EP (elementos de processamento) com somente uma sequência de instruções. Cada elemento de processamento possui sua própria memória ou compartilha uma memória. Na organização MIMD, há múltiplas UC, cada qual alimentando seu próprio elemento de processamento com diferentes sequências de instruções. • SIMD (Single Instruction Multiple Data) – “única instrução múltiplos dados”. Significa que apenas uma instrução de máquina controla a execução simultânea de determinado número de elementos de processamento, em passos de execução. Cada elemento de processamento está associado a uma memória de dados, de tal maneira que cada instrução será executada em cada processador sobre um conjunto de dados diferentes. Pertencem a esta categoria os processadores matriciais e os vetoriais. 07 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 16 • MISD (Multiple Instruction Sigle Data) - “múltiplas instruções único dado”. Significa dizer que determinada sequência de dados é enviada para um conjunto de processadores, cada processador executa uma sequência diferente de instruções. Esta estrutura é experimental. • MIMD (Multiple Instruction Multiple Data) – “múltiplas instruções múltiplos dados”. Significa que determinado conjunto de processadores simultaneamente executam sequências diferentes de instrução, sobre conjuntos de dados distintos. Pertencem a esta categoria os SMP, clusters e sistemas NUMA. Na organização MIMD, os processadores são utilizados para propósito geral, cada processador irá processar todas as instruções para, de forma adequada, realizar a transformação dos dados. Os sistemas MIMD podem, conforme a forma de comunicação, ser subdivididos. Os processadores compartilham a mesma memória, então cada processador irá utilizar programas e dados que estão armazenados na memória compartilhada e toda comunicação entre eles (processadores) será por meio dessa memória. Este tipo de sistema é conhecido como SMP (multiprocessador simétrico). Até a pouco tempo, a maioria dos PC (computadores pessoais) e das workstation (estações de trabalho) possuíam apenas um processador. Em virtude da necessidade de melhor desempenho e a constante queda do custo dos processadores, os fabricantes começaram a introduzir os sistemas SMP. 08 Para complementar o seu estudo, assista ao vídeo abaixo. Neste vídeo você terá oportunidade de entender o que motivou o INPE (Instituto Nacional de Pesquisas Espaciais) a investir em um sistema computacional de alto desempenho para o CPTEC (Centro de Previsão do Tempo e Estudos Climáticos), 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 17 que é composto por um cluster de 1,1 mil processadores trabalhando em conjunto e está na lista dos 500 supercomputadores mais rápidos do mundo.https://www.youtube.com/watch?v=gfBSNxcYRiU Aproveite também para ler uma pequena reportagem da revista on-line Exame.com, que aborda como a USP está utilizando os maiores e mais potentes clusters (aglomerado de computadores) do mundo voltado para pesquisas de astronomia. http://exame.abril.com.br/tecnologia/noticias/supercomputador-da-usp-estuda-estrelas- gigantes/ 09 4 - CLUSTER: BENEFÍCIOS Cluster é um grupo de computadores interconectados, trabalhando em conjunto, como um sistema computacional unificado, dando a impressão de ser um único computador. Você poderá encontrar outras definições, que dizem: clusters são formados por vários “nós”, sendo que cada “nó” representa um computador, sendo assim, cluster também poderá ser chamado de conjunto de “nós” interconectados. Quando falamos em clusters podemos ver que é uma área muito utilizada e promissora do projeto de sistemas de computação. Clusters são uma alternativa para multiprocessadores simétricos (SMP), como abordagem para o provimento de alta disponibilidade e alto desempenho, sendo muito utilizados em ambiente de servidores. Servidor Na TI (Tecnologia da Informação) o termo “servidor” é utilizado para especificar um sistema de computação centralizado que fornece serviços a uma rede de computadores. Esses serviços podem ser de vários tipos, como por exemplo: servidor de arquivos (file server) ou de correio eletrônico (mail server). As máquinas (computadores) que utilizam os serviços de um servidor são chamadas de clientes ou estações de trabalho clientes. (Fonte: http://pt.wikipedia.org/wiki/Servidor). 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 18 10 No ano de 1997 o autor Brewer, no seu livro “Clustering multiply and conquer”, que em uma tradução simples seria “Cluster: dividir para conquistar”, fala sobre os benefícios do uso de clusters. Fazendo um “parêntese”, essa expressão “dividir para conquistar” foi utilizada por grandes personagens da história, como César (Roma) e Napoleão (França), no intuito de explicar uma estratégia de manter os inimigos divididos, em grupos pequenos, ficando mais fácil dominá-los. Contudo, em nosso “mundo da TI” e mais especificamente em Cluster, estamos fazendo referência a “dividir as tarefas” entre os processadores, para “conquistar” uma melhor performance. Abaixo podemos ver como Brewer relaciona os benefícios alcançados com clusters: • Escalabilidade incremental; • Escalabilidade absoluta; • Melhor relação custo/desempenho; • Alta disponibilidade. Tanto cluster como SMP (multiprocessadores simétricos) possuem uma configuração com vários processadores (múltiplos processadores) para suportar aplicações que exigem alto desempenho. Essas soluções (cluster e SMP) estão disponíveis no mercado, sendo que a principal vantagem dos sistemas SMP é a fácil configuração em relação a um cluster. Fica também claro o que motiva as empresas a investirem em clusters para aplicações de alto desempenho (exemplo do INPE, visto anteriormente), pois nos quesitos escalabilidade incremental, escalabilidade absoluta e disponibilidade os clusters são muito mais eficientes e superiores que os SMP. Escalabilidade Incremental Na configuração de um cluster é possível adicionar novos computadores, tornado sua expansão incremental. Dessa maneira, é possível começar com um sistema pequeno e expandir à medida do aumento das necessidades. Melhor relação custo/desempenho Em virtude da facilidade da construção de um cluster, utilizando máquinas mais simples, com poder de processamento menor ou mesmo máquinas que são consideradas ultrapassadas, é possível obter um cluster com poder de computação igual ou maior que um servidor de rede de ultima geração, com um valor muito mais acessível. Alta Disponibilidade Cada nó de um cluster é uma máquina independente, uma falha em qualquer destas máquinas não significa uma perda total do serviço, pois as outras máquinas mantêm a disponibilidade da aplicação ou serviço de rede. Escalabilidade Absoluta Capacidade de criação de grandes clusters, com capacidade de executar vários aplicativos de maneira que ultrapassa várias vezes a capacidade de uma máquina comum. Um cluster pode ser formado por muitas máquinas, sendo que cada uma constitui um processador ou multiprocessador. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 19 11 5 - NUMA: VANTAGENS E DESVANTAGENS Dentre as principais vantagens de um sistema NUMA destacamos o desempenho efetivo em níveis de paralelismo mais altos que o fornecido por sistemas SMP, sem necessidade de grandes mudanças no software. Com vários “nós” NUMA, o tráfego no barramento em qualquer “nó” estará limitado à demanda que esse barramento é capaz de suportar. Contudo, caso haja um grande número de acessos a posições de memória localizadas em “nós” remotos, o desempenho cairá sensivelmente. Mas tudo isso pode ser minimizado com uso da memória cache e também de memória virtual (visto anteriormente). Há também algumas desvantagens no sistema NUMA, a primeira é que este sistema não se apresenta de forma transparente como um SMP, havendo necessidade de modificações de software para a migração de sistemas operacionais e aplicações do sistema SMP para o sistema NUMA. A segunda desvantagem é a questão da disponibilidade, conforme vimos na comparação Cluster e SMP. Na grande maioria dos softwares desenvolvidos para máquinas paralelas observam apenas o problema da paralelização com baixos níveis de comunicação. Contudo, nas máquinas reais, o tempo de comunicação é, geralmente, mais elevado que o tempo de processamento (computação). Sendo assim, muitos algoritmos paralelos que na teoria são eficientes, para o modelo PRAM (memórias de acesso aleatório com mudança de fase), não têm o desempenho que se espera quando implementados em máquinas paralelas reais. 12 Com vimos até agora, o objetivo da computação paralela é a utilização simultaneamente de um conjunto de processadores interligados (conectados), de tal modo que resolva um problema de maneira conjunta e mais rapidamente do que seria em um processamento sequencial quando utilizado apenas um processador. Ao pararmos para pensar, poderemos ver que um computador paralelo é simplesmente um grupo (coleção) de processadores, geralmente do mesmo tipo, interligados de tal modo que permita a 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 20 coordenação de como é feita a troca de dados e também das suas atividades. Essas atividades podem ser: quando o volume de dados e cálculos é muito grande e necessita-se de rapidez na resolução. Na busca constante por um modelo adequado há a necessidade de compreender e incorporar, em tal modelo, características peculiares da computação paralela. No decorrer do nosso estudo vimos o modelo de computação sequencial de von Neumann, que assume a existência de apenas uma UCP e uma memória de acesso aleatório (RAM), é possível estabelecer uma relação entre os desempenhos das implementações e dos seus respectivos algoritmos por meio de medidas de complexidade de tempo. No modelo de von Neumann, estas medidas (complexidade de tempo) tornam possível medir de maneira mais eficiente a performance dos algoritmos sequenciais, servindo como referência para as implementações. Entretanto, na computação paralela, a mesma relação entre algoritmos e implementações não há ainda um modelo padrão. Em virtude da presença de vários elementos de processamento torna a definição de um modelo de computação paralela mais complicado. 13 6 - PRAM - PARALLEL RANDOMACCESS MACHINE O modelo PRAM (Parallel Random Access Machine) é uma extensão do modelo sequencial RAM e também o mais conhecido dos modelos de computação paralela. Podemos descrevê-lo como um conjunto de processadores que trabalham sob o controle do clock de maneira síncrona. Cada processador possui uma identificação única e uma memória local própria, comunicando-se com os demais processadores por meio de uma memória compartilhada. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 21 Apesar de sua importância conceitual e teórica, o modelo PRAM, não consegue espelhar com precisão a noção de paralelismo. Algumas características que não foram incorporadas ao modelo têm grande impacto no desempenho das implementações. Em virtude das limitações do modelo PRAM, outras alternativas surgiram para contornar estes problemas, estes modelos são chamados realísticos, exemplo, o BSP e o CGM, que veremos a seguir. Clock Significa a quantidade de ciclos que um processador é capaz de realizar durante um determinado tempo. (Fonte: http://pt.wikipedia.org/wiki/Clock) 14 7 – MODELOS BSP E CGM O modelo Bulk Synchronous Parallel Model (BSP), que em uma tradução simples seria “Modelo Paralelo Síncrono Volumoso”, teve sua proposição feita por Valiant (Leslie Valiant – professor de Harward), no ano de 1990, foi um dos primeiros em levar em consideração os custos da comunicação e não levar em conta as características de uma máquina paralela em um número pequeno de parâmetros. Este modelo tem como objetivo principal servir de ponte entre as necessidades na computação paralela de hardware e software. Conforme a proposição de Leslie Valiant, este é um dos fatores responsáveis pelo sucesso do modelo sequencial de von Neumann. O modelo de máquina BSP consiste de um conjunto de “p” processadores com memória local, trocando informações por meio de alguma interconexão, gerenciados por um roteador (faz a intermediação entre um ou mais pontos) e com facilidade de sincronização global. Um algoritmo BSP consiste de uma sequência de uma quantidade muito grande de passos (superpassos) separados por barreiras de sincronização. Há também o modelo Coarse Grained Multicomputer (CGM), que em uma tradução simples seria “Multicomputador com Granularidade Grossa”, teve sua proposição feita por Dehne et al, no ano de 1993. O modelo CGM é muito parecido com o modelo BSP, no entanto, é definido em apenas dois parâmetros: n = tamanho do problema e p número de processadores. Um algoritmo CGM consiste de sequência alternada de rodadas de computação e rodadas de comunicação, separadas por uma barreira de sincronização. Ao falarmos de um algoritmo CGM, precisamos entender que é uma sequência de rounds (rodadas), com alternância de fases bem definidas de processamento local e estabelecendo uma conexão global. Geralmente, durante uma rodada de computação é feita com a utilização do melhor algoritmo sequencial para o processamento dos dados disponibilizados localmente. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 22 O cálculo do custo de um algoritmo CGM é feito pela soma dos tempos obtidos em termos do número total de rounds de computação local e do número de superpassos, o que seria equivalente ao número total rodadas de comunicação. Granularidade grossa Quando se fala em “coarse grained” (granularidade grossa) é em virtude do tamanho de o problema ser razoavelmente maior que a quantidade de processadores, ou seja, “tamanho do problema” = “número de processadores” (n/p = p). 15 Os modelos modernos de computação paralalela, BSP e CGM, têm por objetivo a redução dos custos de comunicação de maneira muito semelhante e buscam a caracterização de uma máquina paralela por meio de um conjunto de parâmetros. Podemos destacar que no número de operações de computação local e no número de superpassos eles são muito semelhantes. Entretanto, há diferenças. Destacamos que o modelo CGM é mais simples no projeto e o desenvolvimento de algoritmos em virtude de ser um modelo mais simplificado e um pouco mais poderoso que o modelo BSP. É interessante destacar que um algoritmo CGM pode ser convertido para o modelo BSP sem nenhuma mudança. Em suma, os modelos BSP e CGM apresentam características muito parecidas. Contudo, o modelo CGM é mais simples quanto ao custo da comunicação, o que facilita bastante o projeto de algoritmos. Fazendo referência ao final da década de 1980, observamos que houve o crescimento grande do desenvolvimento de algoritmos paralelos para o modelo chamado PRAM. Em virtude, infelizmente, dos resultados teóricos obtidos não serem positivos eles não foram utilizados para implementações nas máquinas atuais. Na década de 1990, é quando surgem os modelos BSP e CGM. O desenvolvimento de algoritmos para esses modelos, quando foram implementados nas máquinas atuais, apresentam resultados satisfatórios de “Tempo do Algoritmo Sequencial Dividido pelo Tempo do Algoritmo Paralelo com “p” processadores” (speedup) semelhantes ao que havia sendo ensaiado nas análises teóricas. Os modelos BSP e CGM tornaram possível um progresso considerável na área de algoritmos paralelos, mas o mais interessante é que ainda há muito a melhorar e que muitas pesquisas ainda serão necessárias para atingir o estado da arte. 16 RESUMO Durante nosso estudo você teve oportunidade de conhecer o que é Computação Paralela e sua maneira de realizar vários cálculos (instruções) simultaneamente. Você compreendeu como é a organização SMP, que faz referência a vários processadores similares em um mesmo computador, ligados pelo barramento ou por meio de algum circuito de conexão. Você compreendeu que CLUSTER é o conjunto de máquinas, ligadas entre si, que trabalham juntas como um sistema computacional único, dando a impressão que é uma única máquina. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 23 Quando falamos em sistema NUMA estamos fazendo referência a um multiprocessador com memória compartilhada, no qual o tempo gasto para acesso a uma palavra na memória varia conforme a posição dessa palavra na referida memória. Você teve oportunidade de saber que computadores superescalares são máquinas que possuem várias unidades de execução no mesmo processador. Na organização MIMD, os processadores são utilizados para propósito geral, cada processador irá processar todas as instruções para, de forma adequada, realizar a transformação dos dados. Você compreendeu que na estrutura SISD há uma UC (unidade de controle) que oferece uma SI (sequência de instruções) para uma UP (unidade de processamento). Você também teve oportunidade de conhecer o que é um sistema NUMA (Acesso não uniforme à memória) que tem por característica que todos os processadores possuem acesso a todas as áreas da MP (memória principal), via operação de armazenamento e de carga. Você compreendeu que o modelo PRAM (Parallel Random Access Machine) é uma extensão do modelo sequencial RAM e também o mais conhecido dos modelos de computação paralela. Para finalizar você conheceu o modelo Bulk Synchronous Parallel Model (BSP) que foi um dos primeiros a levar em consideração os custos da comunicação e não levar em conta as características de uma máquina paralela em um número pequeno de parâmetros e o modelo Coarse Grained Multicomputer (CGM) que é muito similar ao modelo BSP, no entanto, é definido em apenas dois parâmetros: em que “n” é o tamanho do problema e “p” número de processadores. UNIDADE 4 – ARQUITETURAS CONVENCIONAIS E NÃO CONVENCIONAIS MÓDULO 3 – AMBIENTE DISTRIBUÍDO DE ALTO DESEMPENHO - FUNDAMENTOSBÁSICOS 01 1 - ARQUITETURAS COMPUTACIONAIS Durante o estudo deste módulo você terá a oportunidade de compreender que os sistemas computacionais estão cada vez mais elaborados e complexos, requerendo o processamento de grandes quantidades de informação e os computadores que as processam precisam ter um melhor balanceamento de carga, uma melhor distribuição na concorrência de tarefas, além da redução do tempo de resposta ao usuário. As opções mais usuais para a solução desses problemas são: a utilização de processadores mais rápidos (cujo custo normalmente é elevado); o desenvolvimento de melhores algoritmos (permitindo agilidade nas aplicações); ou então, a agregação (clusters) ou distribuição geográfica (grids) dos computadores locais permite a maximização da eficiência global das aplicações. Com microprocessadores cada vez mais potentes, com um custo cada vez menor, além do avanço na tecnologia de comunicação de dados houve a criação de um ambiente favorável para o desenvolvimento e utilização de sistemas distribuídos. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 24 A computação distribuída ou paralela diz respeito à interligação de vários computadores a uma rede com a finalidade de compartilhar e coordenar os recursos disponíveis para a solução de problemas complexos na execução de tarefas. 02 Há inúmeras possibilidades na arquitetura dos computadores com a finalidade de uniformizar as características dos sistemas computacionais, porém a taxonomia de Flynn é a mais aceita na área, pois considera tanto o número de instruções executadas, quanto o conjunto de dados para os quais essas instruções são submetidas. Vale a pena relembrar a classificação dos computadores segundo Flynn: 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 25 03 Ao permitir a introdução de fluxos múltiplos de dados ou instruções, as arquiteturas MIMD criaram o ambiente perfeito para o surgimento da computação distribuída. A classificação da arquitetura MIMD pode ser feita sob dois prismas: 1) Multiprocessadores: há vários processadores compartilhando uma única memória ou conjunto de memórias, sendo conhecida como fortemente acoplada, visto que há uma interligação entre processadores e memória, através de um sistema local de interconexão. O diferencial é que “a comunicação entre os processadores é efetuada através de instruções de acesso comum à memória (as operações de carregamento e armazenamento), pois os processadores compartilham a memória de uma forma global” (DANTAS, 2005). Há restrições na escalabilidade de processadores. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 26 Fortemente acoplado Sistemas fortemente acoplados são aqueles que possuem vários processadores compartilhando uma memória física. Exemplos: SMP(UMA) e NUMA. 04 A interconexão entre processadores e memória pode ser efetuada por meio de uma barra, que permite a configuração compartilhada. 05 Outra forma de interligação é usar um equipamento de comutação, (switch), estabelecendo uma configuração comutada simples e até multinível. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 27 06 2) Multicomputadores: este tipo de arquitetura é composta por ambientes fracamente acoplados, onde os processadores têm suas próprias memórias locais e a comunicação entre processos é caracterizada por “troca de mensagens entre os processos que estão executando nos processadores” (DANTAS, 2005). Há uma boa escalabilidade da estrutura da máquina. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 28 07 Os multicomputadores também podem ser ligados em barramento e por comutação conforme as figuras que se seguem: Multicomputadores ligados em barramento 08 2 - SMP, CCNUMA E MPP Multiprocessadores Simétricos (SMP) 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 29 Conforme vimos anteriormente, os Multiprocessadores Simétricos (SMP) são arquiteturas de compartilhamento total e representadas pelos Symmetric Multiprocessor SMP onde há inúmeros processadores compartilhando toda a base computacional e executando as instruções num único sistema operacional. São chamados de simétricos porque os processadores têm os mesmos custos para acesso à memória e a qualquer dispositivo conectado no sistema de entrada e saída. As máquinas são denominadas servidores de pequeno porte, que visam aumentar o desempenho de aplicações por meio do compartilhamento do código com uma memória única utilizando fortemente os processadores disponíveis, provendo maior rapidez nas consultas e atualizações de bancos de dados, por exemplo. Uma das características dessa arquitetura é que os ambientes não são muito escaláveis, pois o sistema de interconexão normalmente utilizado é um barramento que fixa a largura da banda e cria uma limitação. Fonte: Prof. Dr. Odemir Martinez Bruno – Processamento Paralelo – Slide ICMC – USP 09 ccNuma - Cache Coherence Non-Uniform Memory Access A arquitetura de acesso não uniforme à memória – ccNuma (Non-Uniform Memory Access NUMA) tem a característica de poder escalar centenas de processadores, preservando o modelo de programação simples de uma configuração SMP. Os processadores podem compartilhar os mesmos dados que estão armazenados em uma memória global. Há “um retardo para acesso a determinadas partes da memória por determinados processadores dependendo de suas localizações” (DANTAS, 2005). Referem-se a estas configurações como organização de multiprocessador distribuída de memória, onde cada nó processador possui um cache local que reduz o tráfego na rede de interconexão e o balanceamento de carga é realizado de forma dinâmica pelos protocolos de coerência das caches. As arquiteturas ccNUMA são complexas e suas implementações dependem das soluções de cada fabricante para a sincronização de acesso e consistência à memória, permitindo um melhor desempenho da máquina. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 30 10 MPP - Massively Parallel Processors É um tipo de arquitetura fracamente acoplada na qual os computadores são classificados como multicomputadores e as máquinas possuem configuração massivamente paralelas (MPP), podendo ser compostos por um conjunto de multiprocessadores, que representam um nó de uma configuração do tipo multicomputador, com cache e memória local, e há milhares de nós interligados por dispositivos de interconexão de alta velocidade. Cada nó possui uma cópia de sistema operacional, onde as aplicações executam localmente e se comunicam através de pacotes de troca de mensagem. A escalabilidade desta abordagem é maior, visto que cada nó tem sua estrutura própria de memória e a interligação de vários nós é efetuada por dispositivos chamados redes de interconexão, podendo ser implementadas de várias formas de acordo com sua topologia, seu algoritmo de roteamento, a estratégia de comutação e o controle do fluxo entre nós. 11 3 - SISTEMAS DISTRIBUÍDOS, CLUSTERS E GRIDS São configurações que agregam computadores existentes nas redes convencionais e possuem grande poder de escala em virtude disso. Nos ambientes distribuídos os conjuntos de máquinas existentespermitem configurações diferenciadas de SMPs, MPP, de clusters e grids computacionais. Muitos autores empregam o termo metacomputador como referência ao uso de sistemas distribuídos como um grande computador, vide a própria internet que possui máquinas agrupadas para a execução de uma aplicação. É importante que a segurança, o retardo de comunicação, a confiabilidade, a disponibilidade e a compatibilidade de versões de pacotes de software sejam analisados durante o processo de implementação desta configuração, visto que, como há mais computadores, a probabilidade de uma falha ocorrer aumenta substancialmente. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 31 12 Clusters É a agregação de computadores de uma forma dedicada ou não dedicada para a execução de aplicações específicas de uma organização ou que exijam um maior desempenho computacional agregado. Normalmente, os clusters se encontram geograficamente localizados em uma determinada área da organização, tendo uma disponibilidade de processadores, memórias e capacidade de armazenamento específicos para este atendimento. Nos clusters a escalabilidade é um diferencial, visto que a configuração pode ser aumentada de acordo com os recursos disponíveis, melhorando o desempenho das aplicações. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 32 13 Grids O termo computação em grade ou grids computacionais agregam ambientes geograficamente dispersos criando uma malha de serviços, com foco na qualidade. Seu principal objetivo é o compartilhamento dos mais diferentes tipos de recursos, desde os mais simples como um desktop até os de alto desempenho como os de grande porte e os clusters, utilizando o tempo ocioso de sistemas computacionais. Seu maior exemplo é a internet, que está num ambiente no qual diferentes tipos de aplicativos e de requerimentos de qualidade são tratados de forma equivalente, através dos grids consegue-se concentrar “toda a potencialidade de recursos e serviços disponíveis na internet para o processamento de tarefas dos usuários pertencentes a uma ou mais configurações de grid”. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 33 14 4 - ESCALONAMENTO (SCHEDULING) O escalonamento é necessário para minimizar o tempo de execução das aplicações, e consequentemente seus custos de comunicação, além de maximizar a utilização dos recursos computacionais disponíveis. Um algoritmo de escalonamento pode ser definido de diferentes formas mas seu objetivo principal é o de produzir um desempenho excelente nas combinações de hardware e software. Para tanto se deve verificar a plataforma computacional, o algoritmo de escalonamento e as aplicações executadas. A taxonomia proposta por Casavant (Casavant & Kuhl, 1988) é a mais abrangente e baseia-se nos tipos de informações usadas, onde as tarefas serão alocadas, e na forma como serão efetuadas as tomadas de decisão (centralizadas ou distribuídas) e a obtenção de informações. A classificação hierárquica é dividida em escalonamento local e global. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 34 15 No escalonamento local, os períodos de tempo de utilização de um único host são chamados de time- slices e são atribuídos aos processos em execução por meio da política de compartilhamento de tempo (time-sharing) (TANEMBAUM, 2001). O escalonamento global é a atividade que determina para qual o elemento o processo será alocado e executado, podendo ser estático, onde a atribuição do processo é feita antes da execução do programa, ou dinâmico, onde há a redistribuição de processos entre os elementos de processamento durante a execução do programa, balanceando a carga (load balancing). Fonte: Escalonamento de Processos em Sistemas Computacionais Distribuídos As decisões relativas ao balanceamento de carga podem ser feitas de forma centralizada, distribuída ou de uma combinação dessas abordagens. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 35 Centralizada Na forma centralizada (não distribuída), estabelece-se que um único elemento de processamento recebe as informações de carga, sendo responsável pelo escalonamento em todo o sistema. 16 5 - DEPENDABILIDADE Na sociedade moderna há uma grande dependência de sistemas computacionais e a dependabilidade diz respeito à capacidade destes sistemas em prestar um serviço no qual se pode justificadamente confiar. Avizienis (2001) caracteriza a dependabilidade a partir de um conjunto de conceitos divididos em três grupos: os atributos, os meios e as ameaças. 17 Atributos são medidas probabilísticas da dependabilidade. Em virtude da natureza não determinística das circunstâncias consideradas, são associadas variáveis aleatórias a cada atributo e as medidas obtidas são probabilidades. Os atributos comumente empregados são: Distribuída Na forma distribuída, cada elemento de processamento tem autonomia para estabelecer sob que condição ocorre a transferência de um processo. Combinação O processo de escalonamento pode ser feito de forma cooperativa, considerando os outros processadores do sistema, ou não cooperativa (independente). 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 36 Fonte: Repositório – UFSC - https://repositorio.ufsc.br/bitstream/handle/123456789/89586/242963.pdf?sequence=1 18 Meios Através dos meios da classificação da dependabilidade consegue-se trabalhar na prevenção, tolerância, remoção ou previsão das falhas. Assim sendo, podem-se tratar as falhas que geram erros e propagam defeitos. Prevenção de falhas Ao se preverem as falhas aumenta-se a confiabilidade dos sistemas, através de técnicas de controle da qualidade nas etapas de projeto e desenvolvimento de sistemas. Como não há como eliminar todas as falhas do sistema, estão previstos procedimentos manuais de reparo a fim de restaurar o sistema à condição de serviço correto. 19 Tolerância a falhas É a capacidade de um sistema apresentar um comportamento muito bem definido na ocorrência de falhas ativas, utilizando-se de técnicas que aumentem a segurança e a operacionalidade do sistema. a) Mascaramento: empregado para encobrir ou ocultar as falhas, porém sem apresentar defeito, é a 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 37 forma mais completa de tolerância a falhas, a mais desejada e a de maior custo. b) Não tolerância a falhas é uma forma extrema, porém a solução mais trivial, mais frágil e com o custo mais reduzido, sendo a mais indesejada, visto que o sistema apresentará defeito. Há também duas formas intermediárias de tolerância as falhas: o defeito seguro, que garante o estado seguro do sistema, mas nada diz sobre o seu estado operacional; e, tolerância a falhas sem mascaramento, onde o sistema permanecerá operacional, mesmo que ingresse num estado inseguro. A redundância é a chave para se conseguir a tolerância a falhas e os sistemas distribuídos se utilizam de múltiplas formas de redundância, como: a) estrutura; b) hardware e software; c) informação; d) tempo. Estrutura Técnica conhecida como N-version programming, que considera duas ou mais versões de um só algoritmo; 20 Implementaçãode tolerância a falhas Para tornar um sistema tolerante a falhas há a necessidade do emprego de pelo menos uma das formas de redundância, sendo que o ponto de partida é a detecção de erros. Como os erros são uma propriedade do estado do sistema e há testes que podem ser executados para sua detecção, que devem atender a três propriedades, um tanto difíceis de serem satisfeitas: basear-se somente nas especificações do sistema, ser completo e correto, possuir independência do sistema com relação à ocorrência de falhas para evitar erros nos testes. Hardware e software Replicação de partes componentes de um sistema, ou até mesmo o sistema como um todo, sendo para alguns a única forma capaz de permitir a tolerância de falhas permanentes; Informação Há técnicas que utilizam os códigos de paridade onde a redundância na informação pode ser suficiente; Tempo São métodos caracterizados pela repetição da mesma atividade uma ou mais vezes, visto que a causa do problema é de natureza atemporal. É mais utilizada na detecção de erros que resultem da ocorrência de falhas transientes. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 38 Outro passo é a recuperação do sistema, cujo objetivo é restaurá-lo a um estado onde não haja erros detectados e nem falhas ativadas, gerando novos erros. Pode-se realizá-la tanto pelo tratamento dos erros, quanto das falhas. O tratamento dos erros (error handling) pode ser efetuado através de: 21 O tratamento de falhas (fault handling) objetiva impedir que falhas identificadas sejam ativadas novamente e seu tratamento se dá em quatro etapas: Remoção de falhas Pode-se empregar a abordagem de remoção de falhas tanto na etapa de desenvolvimento, como durante a vida operacional de um sistema. No processo de desenvolvimento a remoção de falhas atua da seguinte forma: verificação (estática ou dinâmica), em que se analisa se o sistema atende às condições de verificação; o diagnóstico, em que as 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 39 origens das falhas são detectadas; e a correção, em quer as falhas são corrigidas. É importante avaliar se a técnica implementada será eficiente e há um mecanismo de injeção de falhas (fault injection) que introduz falhas controladas no sistema para avaliar o comportamento da técnica empregada, sob tais condições. A remoção de falhas é realizada normalmente por meio de atividades de manutenção corretiva ou preventiva. 22 Previsão de Falhas A técnica de previsão de falhas usa avaliação do comportamento do sistema com relação à ocorrência ou à ativação de falhas e possui dois aspectos: Ameaças são aspectos que podem ameaçar a dependabilidade de um sistema distribuído e é necessária a especificação do tipo de ameaça apresentada, por meio da identificação mais precisa de falhas, erros e defeitos. Há uma relação de dependência entre falhas, erros e defeitos chamada de patologia da falha. Fonte: Agnaldo L Martins – http://slideplayer.com.br/slide/1866374/ 23 A falha é aquilo que ocasiona o erro, provocando no sistema uma transição de estado não planejada, levando o sistema para o lado do erro. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 40 Quando a falha não apresenta erros é chamada de falha latente, quando produz um erro é chamada de falha ativa. A latência de falhas é o tempo entre o surgimento da falha e sua ativação. Avizienis (2001) classifica as falhas em três grupos distintos: • falhas de projeto - que podem ter sido geradas a especificações erradas ou incompletas; • falhas de interação - originadas de ações inadequadas do operador durante a operação e manutenção; • falhas físicas - resultantes do envelhecimento dos recursos computacionais existentes, seja por duração, valor ou extensão. Um erro é a manifestação da falha, fazendo que o sistema não atue de acordo com sua especificação, ou seja, é parte de um estado errôneo que constitui uma diferença de um estado válido. 24 Defeito é um erro existente no sistema que alcança a interface do serviço e altera o seu resultado esperado, ou seja, é um estado indesejado do sistema que pode resultar em um defeito. A latência de erro é o tempo entre o surgimento de um erro e a manifestação do defeito e sua duração depende das circunstâncias e do sistema computacional. Há modos de defeitos (failure modes) ou modelos de defeitos (failure models) que são usados para classificar os defeitos, em que os parâmetros mais utilizados são o domínio, a percepção pelos usuários e as consequências no ambiente. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 41 25 RESUMO Durante o estudo deste módulo você teve a oportunidade de compreender que há inúmeras possibilidades na arquitetura dos computadores com a finalidade de uniformizar as características dos sistemas computacionais, porém a taxonomia de Flynn é a mais aceita na área. Vimos que as arquiteturas ccNUMA são complexas e suas implementações dependem das soluções de cada fabricante para a sincronização de acesso e consistência à memória, permitindo um melhor desempenho da máquina. É um tipo de arquitetura fracamente acoplada na qual os computadores são classificados como multicomputadores e as máquinas possuem configuração massivamente paralelas (MPP), podendo ser compostas por um conjunto de multiprocessadores, que representam um nó de uma configuração do tipo multicomputador, com cache e memória local, e há milhares de nós interligados por dispositivos de interconexão de alta velocidade. Nos ambientes distribuídos, os conjuntos de máquinas existentes permitem configurações diferenciadas de SMPs, MPP, de clusters e grids computacionais. Vimos também que normalmente os clusters se encontram geograficamente localizados em uma determinada área da organização, tendo uma disponibilidade de processadores, memórias e capacidade de armazenamento específicos para este atendimento. No caso dos grids, o seu principal objetivo é o compartilhamento dos mais diferentes tipos de recursos, desde os mais simples, como um desktop, até os de alto desempenho como os de grande porte e os clusters, utilizando o tempo ocioso de sistemas computacionais. O escalonamento é necessário para minimizar o tempo de execução das aplicações, e consequentemente seus custos de comunicação, além de maximizar a utilização dos recursos computacionais disponíveis. Você estucou que nossa sociedade moderna tem uma grande dependência de sistemas computacionais. Esta dependência é chamada de dependabilidade. Este conceito diz respeito à capacidade que os sistemas têm em prestar um serviço no qual se pode justificadamente confiar. Através dos meios da classificação da dependabilidade consegue-se trabalhar na prevenção, tolerância, remoção ou previsão das falhas. Assim, podem-se tratar as falhas que geram erros e propagam defeitos. Ao final do módulo, vimos que, em sistemas de alto desempenho, a “tolerância a falhas” é a capacidade de um sistema apresentar um comportamento muito bem definido na ocorrência de falhas ativas, utilizando-se de técnicas que aumentem a segurança e a operacionalidade do sistema. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 42 UNIDADE 4 – ARQUITETURAS CONVENCIONAIS E NÃO CONVENCIONAIS MÓDULO 4 – PROCESSADORES DE REDE, DISPOSITIVOS DE INTERCONEXÃO E PROTOCOLOS LEVES 01 1 - MODELO TRADICIONAL DE REDE Durante o estudodeste módulo teremos a oportunidade de entender por que os sistemas computacionais necessitam de redes de comunicação cada vez mais eficazes, mas que, apesar do aumento da disponibilidade destas redes, o desempenho das aplicações não tem evoluído na mesma proporção, visto que são utilizados dispositivos de redes inadequados nos novos projetos de distribuição de recursos e também de pacotes de softwares. O incremento na oferta de largura da banda nos meios físicos de transmissão de concessionárias de telecomunicações e energia elétrica, assim como TV a cabo, tem permitido o desenvolvimento de novas tecnologias para aumentar a eficiência dos recursos disponibilizados. Urge fazer com que as aplicações sejam executadas com melhor desempenho, utilizando um maior volume de dados e fazendo uso de interfaces de rede, sistemas de interconexões de alta velocidade e protocolos mais leves para que a taxa efetiva de transmissão seja maximizada. No modelo tradicional, o sistema operacional acessa uma interface de rede (network interface card - NIC), podendo ser uma rede local (LAN) ou geograficamente distribuída (WAN), para a realização de uma aplicação, sendo que a rede é a responsável pelo envio das mensagens para a NIC do computador onde está a aplicação destinatária, fazendo o caminho inverso. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 43 02 Denominada primeira geração de rede há o reconhecimento de quadros elétricos e endereços de placa, tratados pelo dispositivo de rede do computador. 03 2 - APLICAÇÕES E INTERFACES DE REDE CONVENCIONAIS Com a oferta maior de banda larga, os custos operacionais têm diminuído e novas aplicações se beneficiam dessa situação, como: • VOIP (Voz sobre IP); • Transmissão áudio e vídeo; • Aplicações Fim a Fim; • VPN (Virtual Private Network). 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 44 Tudo o que requer serviços diferenciados, qualidade de serviço, segurança e gerenciamento, necessita de uma maior quantidade de processamento e consequentemente interfaces de rede que atendam a essas demandas específicas e não há um desenvolvimento exponencial crescente dos processadores, sinalizando que se deve buscar uma alternativa para as aplicações que utilizam a rede, minimizando o baixo rendimento de processador central dos computadores. Para o processamento de aplicações em rede, normalmente são utilizados os dispositivos FPGA (field programmable gate arrays) para processamento de baixo nível (hardware) e GPP para os de alto nível com aplicações mais complexas. VOIP (Voz sobre IP) Utiliza a rede de computadores para transmissão de voz. Transmissão áudio e vídeo Havendo uma infraestrutura eficiente o usuário pode usar seu computador para assistir vídeos e filmes, além de conteúdos formais de bibliotecas digitais. Aplicações Fim a Fim Permite que uma aplicação residente num computador possa submeter uma tarefa para um ou mais computadores. É também conhecido como P2P e o aplicativo mais conhecido é o SETI@HOME (2005), que permite a execução de dados coletados no espaço em seu computador, uma execução remota que não se restringe a uma busca, mas a um trabalho especifico. VPN (Virtual Private Network) São redes virtuais privadas que permite ao programador da aplicação o estabelecimento de formas de ligação que faz seu local de trabalho físico esteja conectado a regiões geográficas diferentes. É uma solução que pode prover redução no custo, oferecer maior segurança e um acesso remoto mais fácil às aplicações, mas depende de infraestrutura. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 45 04 3 - PROCESSADORES DE REDE No modelo tradicional de redes há retenções em virtude da governança e segurança das organizações e as aplicações dos usuários são submetidas aos pacotes de firewall e tradução de endereços (network address translation NAT), que geram um retardo às aplicações de rede. As redes de nova geração dão maior prioridade para as aplicações de rede utilizando os processadores de rede (network processors NP), que são roteadores, switches e interfaces para acelerar o processamento das solicitações. Na 2ª Geração de sistemas de rede, há o processamento de quadros elétricos, endereçamento de rede, classificação e reencaminhamento de pacotes efetuados na placa, cabendo ao processador central o controle e tratamento de exceções. 05 Na 3ª geração de sistemas de rede ou new generation network (NGN), quando uma aplicação envia mensagens para outra de forma remota, o processo é efetuado diretamente através de uma chamada de solicitação de transmissão para o processador de rede (NP) e há um processamento na placa de mensagens recebidas e aí há a entrega para a aplicação. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 46 06 As técnicas que tratam da comunicação das aplicações nas redes podem ser classificadas como: • ASIC (Application Specific Integrated Circuit): promove um alto desempenho de hardware, porém sem maior flexibilidade para programação. • ASIP (Application Specific Instruction Processor): há processador especializado para um domínio específico de aplicação, gerando um bom balanceamento entre flexibilidade de programação e desempenho; • Co-processor – é utilizada para melhorar uma determinada função de uma aplicação, como aplicações gráficas ou de visualização, porém não há muita flexibilidade de programação; • FPGA (Field programmable gate arrays): é um “dispositivo semiconductor que pode ser programado pelo usuário final para execução de uma grande variedade de funções lógicas” (Dantas, 2002). É programado em nível de portas e pode ser reconfigurado quando da mudança de requisitos de uma aplicação. • GPP (General Purpose Processor): possui grande flexibilidade de programação e pequeno desempenho, por ser um processador de uso geral. De todas as opções disponíveis, a melhor relação entre flexibilidade e desempenho é na tecnologia ASIP, visto que permite boa utilização de software aliada ao desempenho de hardware, resultando numa adaptação mais fácil aos padrões de rede e suas aplicações. Além disso, há uma excelente relação de custo/benefício entre o desenvolvimento de software e a implementação em hardware. 07 4 - CARACTERÍSTICAS DE UM PROCESSADOR DE REDE É um dispositivo programável com características de arquitetura e circuitos próprios para o processamento de pacotes de rede (Dantas, 2002). Há no mercado inúmeras opções disponíveis com grandes diferenças tecnológicas, no que tange à complexidade dos processadores, o suporte de software, o sistema de memória e a arquitetura. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 47 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 48 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 49 08 Os processadores de rede estão cada vez mais especializados e os dispositivos usados são classificados em três categorias: núcleo, borda e acesso. • Núcleo: usado em aplicações que requerem um alto desempenho com menor flexibilidade de programação, como os roteadores que transferem grandes quantidades de dados sem necessitar de flexibilidade de programação; 102 – Arquitetura de Computadores |Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 50 09 • Borda: como as aplicações executadas têm características de programação do nível do usuário final, os equipamentos requerem certa flexibilidade de programação, com um desempenho menor do que no tipo núcleo. Os dispositivos de borda tendem à utilização de processadores de rede ASIP; 10 • Acesso: seu foco está no provimento de acesso às redes, através de agregação do tráfego, encaminhando para uma rede estruturada convencional. Os dispositivos de acesso têm um baixo desempenho em relação aos demais tipos, porém são mais flexíveis para atender diferentes tipos de aplicativos, como celulares, tablets e palmtops. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 51 11 5 - DISPOSITIVOS DE INTERCONEXÃO Permitem um alto desempenho para aplicações distribuídas, classificados como: 1) Convencionais: interligados através de um cabo coaxial (thickwire), onde todos possuíam acesso limitado ao meio (Ether) caso estivesse desocupado. Esta abordagem criada pela Xerox foi chamada de Ethernet e aos poucos foi substituída por dispositivos concentradores (hubs), que através de pares trançados permite a comunicação entre equipamentos e comutados (switches), que permitem conexões paralelas através de interligação em pares. Cabe ressaltar que se o processador do computador não for muito veloz não adianta ter uma placa de rede com boa taxa de transferência efetiva. 12 2) Interconexão de alto desempenho: há inúmeras inovações tecnológicas nos multicomputadores e multiprocessadores, como a interconexão de processadores e memórias de arquiteturas paralelas, usualmente denominada de SAN (system area network), que propiciam ambientes de alta taxa de transferência e baixo retardo, similares aos multicomputadores ou multiprocessadores, utilizando-se de computadores convencionais do tipo PC. Sendo assim os aplicativos podem ser executados, consultando uma grande massa de 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 52 dados distribuída geograficamente, em supercomputadores dispersos numa rede com recursos já existentes. As principais características que este dispositivo deve dispor é a grande escalabilidade, um serviço de tolerância a falhas, retardo pequeno e a taxa de transmissão da ordem de Gbytes/segundo, além da disponibilidade de um pacote de biblioteca de software de programação para o equipamento. Há dois grupos que realizam essa interconexão: a) Programação de troca de mensagem entre processadores no nível de placa de rede, que possibilita a criação de configurações de multicomputadores. b) Abstração de uma memória virtual única (multiprocessador) entre todos os computadores interligados ao dispositivo. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 53 13 6 - PROTOCOLOS LEVES Esta abordagem enfoca não só a maximização da utilização da infraestrutura das redes, mas também o desempenho computacional de aplicações de diferentes naturezas em ambientes distribuídos de redes. Atualmente, há a utilização de maiores larguras de bandas (band-width) com menor retardo (latency) e o universo de equipamentos que estão sendo conectados às redes causam impacto nas arquiteturas de protocolos de redes. 6.1 Arquitetura TCP/IP O protocolo da camada da rede IP (internet protocol) é o padrão do ambiente internet, assim como os protocolos de transporte, TCP (transmission Control Protocol) e UDP (user datagram protocol), que representam o modo como as aplicações podem solicitar serviços orientados e não orientados à conexão. Foram projetados num período onde as redes físicas de enlace tinham uma baixa qualidade, ou seja, com alta frequência de erros nas redes de comunicação devido às condições físicas do meio, sendo protocolos bastante robustos, e quando utilizados em uma infraestrutura mais adequada de transmissão apresenta algumas deficiências. A retransmissão go-back-n é a implementada no protocolo TCP, quando uma conexão entre dois pontos estiver em curso ou um erro de recebimento for detectada, todos os pacotes a partir do pacote perdido serão retransmitidos. Uma delas é o desperdício da largura da banda para a transmissão de pacotes que já haviam chegado ao destinatário e também o processamento dos pacotes pelo nó destinatário e posterior descarte dos pacotes, ou seja, há necessidade de soluções mais adequadas quando do uso de redes com alta taxa de transmissão, alto custo e baixa ocorrência de erros. 14 6.2 Protocolos de Alto Desempenho Há alguns mecanismos que auxiliam no aproveitamento do uso de rede, porém muitas ferramentas foram projetadas para redes de comunicação e não para redes locais com altas disponibilidades de largura de banda e baixo retardo, assim sendo, necessita-se de uma mudança para protocolos mais leves (lightweight protocols) e mais eficientes, para que a troca de pacotes seja otimizada. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 54 Entre os exemplos existentes, há os sistemas denominados Beowulf que são um conjunto de computadores pessoais interligados através de uma rede SAN, com o objetivo de atender um determinado tipo de aplicação. São também chamados de o paradigma de Cluster Computing, uma forma mais abrangente da computação de alto desempenho, num único ambiente computacional, onde os recursos disponíveis são distribuídos. Não há uma correlação direta entre a infraestrutura e o desempenho das aplicações nas redes e os protocolos de transporte são inadequados para uma evolução das configurações atuais para ambientes de alto desempenho. 6.3 Protocolos e Melhoria de Desempenho Há três abordagens no que tange ao desempenho de uma arquitetura de protocolo: minimizar os requerimentos de processamento, através da gerência da conexão; diminuir o controle de erros (error free), com esquemas para tratamento de perda de dados na transmissão e buffer overflow, sem causar overhead na rede, e melhorar o algoritmo de controle de fluxo, para evitar congestionamento na banda. 15 6.4 PROTOCOLOS DE TRANSPORTE Para incrementar a utilização da largura da banda através de conexões eficientes de transporte há necessidade de novos protocolos e melhoria dos existentes. Há protocolos que foram projetados com o objetivo de alto desempenho, como demonstrados na tabela a seguir. 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 55 Fonte: Preparado pelo autor baseado em Dantas (2005) 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 56 16 7 - ANÁLISE DAS FUNÇÕES DO PROTOCOLO DE TRANSPORTE Dentre os mecanismos do protocolo de transporte, está a função de gerência de conexão, que estuda o início e término de uma associação de transporte, analisando os aspectos de: 17 RESUMO Durante nosso estudo tivemos a oportunidade de compreender que houve um incremento na oferta de largura da banda nos meios físicos de transmissão de concessionárias de telecomunicações e energia 102 – Arquitetura de Computadores | Unidade 04 © 2014 - AIEC - Associação Internacional de Educação Continuada 57 elétrica. Sendo assim, urge fazer com que as aplicações sejam executadas com melhor desempenho, utilizando um maior volume de dados e fazendo uso de