Baixe o app para aproveitar ainda mais
Prévia do material em texto
Organização e Arquitetura de computadores 1 – Processamento de Dados e Estrutura Básica do Computador. 1 Processamento de Dados e Estrutura Básica do Computador 1.1 Organização e arquitetura de computadores A organização dos computadores trata da estrutura dessas máquinas, preocupando-se com os componentes físicos. Ou seja, busca-se saber como se dá o funcionamento do computador. Já a arquitetura dos computadores fornece elementos críticos a serem usados pelo programador. Por mais simples ou complexa que seja a estrutura de um computador, a sua função básica é o processamento de dados. 1.2 Processamento de dados, Informação e Conhecimento Dados são unidades básicas a partir das quais as informações poderão ser elaboradas ou obtidas. São fatos brutos, ainda não organizados nem processados. Processamento é a transformação de dados em informação. Informação é o conjunto de dados organizado de maneira que “faça sentido” àqueles que o estiverem lendo. Conhecimento tem uma aplicação. A informação associa-se à semântica, enquanto o conhecimento está associado à pragmática, ou seja, algo existente no mundo real. 1.3 Breve histórico dos computadores O primeiro computador de grande porte a usar eletrônica digital foi o ENIAC desenvolvido por John Eckert e John Mauchly em 1943, com financiamento militar. Em 1944, juntou-se ao grupo de pesquisadores o engenheiro John Von Neumann. Usava códigos numéricos. Foi produzido usando a tecnologia de válvulas a vácuo. É o marco da Primeira Geração de Computadores. A era da computação comercial iniciou-se em 1951, quando o UNIVAC foi entregue ao primeiro cliente. Pode-se dizer que o UNIVAC foi o resultado de modificações positivas no ENIAC. Em 1947, os cientistas John Bardeen, Walter H. Brattain e William Shockley desenvolveram o transistor. Um novo avanço, nesta mesma época, foi a criação de uma linguagem simbólica para manipular instruções das máquinas em vez de códigos numéricos. Esta foi chamada a segunda geração dos computadores. Entre 1965 e 1970, surgiu o Circuito Integrado (CI). Em 1965, os CIs começaram a substituir os transistores nos computadores e aí nós tivemos os Computadores de Terceira Geração. O marco importante desta terceira geração foi o lançamento do computador da série IBM 360 em 1964. Foi uma série com o intuito de inserir o uso de computadores nos negócios e em operações comerciais. Já a quarta geração de computadores, com início na década de 1970, traz consigo a criação do microprocessador. O primeiro computador pessoal que foi disponibilizado ao público em geral foi o MITS Altair, produzido em 1975. A evolução na velocidade dos microprocessadores é tida para alguns como a quinta geração dos computadores. O marco seria o microprocessador Intel 386, que permitia a execução de várias tarefas ao mesmo tempo. Quando Steve Jobs e Steve Wozniak mostraram ao público jovem o Apple I, todo mundo foi ao delírio! Ele possuía um teclado fácil de usar e tela! Em 1981, a IBM lançou seu primeiro computador pessoal e capturou a maior fatia de mercado em 18 meses. A Microsoft forneceu o sistema operacional para o computador pessoal da IBM. Este software, chamado de MS-DOS, foi usado pela IBM e pelas empresas que criaram computadores pessoais baseadas no padrão IBM PC. 1.4 Visão geral do computador pessoal O hardware de seu computador pessoal precisa dos seguintes componentes para um efetivo funcionamento: • dispositivos de entrada; • dispositivos de saída; • dispositivos de armazenamento secundário; • unidade de processamento. As informações são inseridas no ambiente computacional por meio dos dispositivos de entrada. Estas informações de entrada são armazenadas na memória, e a unidade central de processamento (UCP) realiza o devido tratamento destas. Após isto, dispositivos de saída podem exibir o resultado do processamento. Além disso, existem componentes que permitem a gravação de dados de maneira permanente e também o intercâmbio de dados. Estes dispositivos são chamados de dispositivos de armazenamento secundário. A UCP representa toda a unidade que faz o processamento, mas não é um único componente, pois reúne diversos outros. Ainda existem os Dispositivos para Comunicação Externa. No hardware de seu computador, ele é tratado com um dispositivo de entrada e saída, mas é interessante diferenciá-lo. Exemplos destes dispositivos são placas de rede; hub;• switch; modems. 1.5 Elementos Básicos da Arquitetura de Von Neumann A arquitetura de Von Neumann é a base da construção da principal arquitetura dos computadores modernos, os Pcs. Então, basicamente, na arquitetura de Von Neumann, o que ocorre é que uma máquina pode armazenar seus programas e executá-los numa unidade responsável por diferentes operações. 1.6 Construção de algoritmos simples Algoritmos são conjuntos sistemáticos e formalizados de instruções voltados para resolução de um problema (PIVA JR. et al, 2012). 1.6.1 Indicação de ambiente de desenvolvimento O programa VisuAlg é muito indicado para programadores iniciantes, uma vez que possui uma interface simplificada e de fácil compreensão. O ambiente VisuAlg utiliza a extensão .alg para representar os arquivos com algoritmos. 1.6.2 Estrutura básica de um algortimo Segundo Forbellone (2005), um algoritmo é uma sequência de passos que visa atingir um objetivo bem definido. Você pode entender o termo algoritmo como um conjunto de passos que busca a solução de um problema. Em geral, os algoritmos são utilizados para abstrair1 problemas do mundo real, e transformá-los em soluções no mundo computacional. No ciclo de vida do desenvolvimento de um programa, o primeiro estágio é a elaboração da representação algorítmica. Um algoritmo computacional pode ser representado por pseudocódigos, português estruturado ou portugol. 2 Representação de Dados 2.1 Elementos binários fundamentais: bits, bytes e words. Fundamentalmente, um dispositivo tem ou não corrente elétrica passando por ele, em suma, está desligado ou ligado. Por isso, a forma básica de representação de dados em componentes eletrônicos se baseia na linguagem binária (LAUDON & LAUDON, 2007; CAPRON & JOHNSON, 2004). A representação desses dois dígitos foi convencionada como sendo 0 ou 1. Bit é um dígito binário; Bytes é o conjunto de 8 bits; word é o número convencionado de bits adjacentes. 2.2 Bases numéricas 2.2.1 Base decimal Veja o exemplo abaixo de decomposição de números em base decimal: 15 = 1x10 + 5x1 146 = 1x100 + 4x10 + 6x1 8303 = 8x1000 + 3x100 + 0x10 + 3x1 Os números acima podem ser reescritos como em termos de potências de 10, lembrando que qualquer potência elevada zero é igual a 1: 15 = 1x101 + 5x100 Deve-se saber que há uma notação que explicita em que base o número deve ser entendido: (153)10 refere-se a 153 na base decimal. (1110)2 refere-se a 1110 na base binária. 2.2.2 Base binária Como sabemos, é mais adequado implementar dados em base binária no computador. (14)10 = (1 1 1 0)2 = (1x23) + (1x22) + (1x21) + (0x20) = 8 + 4 + 2 + 0 = 14 Assim como é possível somar e subtrair usando o sistema decimal, é possível fazer as opções aritméticas com o sistema binário, incluindo números de ponto flutuante. 2.2.3 Base hexadecimal Esse sistema possui o número 16 como base e é indicado por contração “hex”. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 A B C D E F Diversas representações computacionais, padrões e linguagens usam a base hexadecimal. Um exemplo são as representações de cores em HTML, em que se inicia com # para depois especificar quatro dígitos hexadecimais. A cor azul primária, por exemplo, é representada por “#0000FF”. 2.2.4 Conversão entre bases Para ilustrar aqui uma conversão simples, vamos mudar o número 9 da base decimal para binária. Vamos usar o método de divisão e resto (NULL & LOBUR, 2011), que serve apenas a números inteiros sem sinal. •Dividindo-se 9 por 2, temos 4 com resto 1. • Dividindo-se 4 por 2, temos 2 com resto 1. • Dividindo-se 2 por 2, temos 1 com resto 0, para converter precisamos fazer mais uma divisão. • Atenção: dividindo-se 1 por 2, considera-se o resultado 0 com resto 1. Usando os restos, na ordem da esquerda para a direita, temos: (9)10 = (1001)2 2.3 Representação de caracteres Também no pós--guerra, ainda em um contexto de escassez de memória, os sistemas computacionais adotaram o padrão ASCII (American Standard Code for Information Interchange). Assim, usando esse padrão, um sistema computacional lê “01000000” como “@”, “01111010” como “z”, etc. desde que tenha sido definido que o dado é um caracter não um número. Os limites do ASC, especialmente para lidar com caracteres de alfabetos além do latino e caracteres especiais, fez com que os construtores de hardware e desenvolvedores de software ampliassem os caracteres definidos. Nesse contexto, destaca-se o padrão Unicode. 2.4 Tipos de dados e uso de variáveis em algoritmos Para manipulação de informações nos algoritmos é necessário a utilização de um recurso denominado variáveis que é um elemento sintático do algoritmo que tem como funcionalidade armazenar um determinado valor. De acordo com o tipo de informação que será armazenado, é necessário especificar o tipo que será a variável (inteiro, real, caractere, booleanos). Uma variável deve obrigatoriamente iniciar como um caractere literal, não podem conter espaços, não utilizar caracteres especiais nem acentos. O termo computacional que indica o armazenamento de um valor em uma variável é atribuição. 3 – Álgebra Booleana e Operações Lógicas em Algoritmos 3.1 Álgebra booleana Segundo Linda Null e Julia Lobur, a álgebra booleana é “uma álgebra para a manipulação de objetos que podem assumir somente dois valores, normalmente verdadeiro ou falso” (NULL & LOBUR, 2011, p. 141). 3.1.1 Origens A álgebra booleana é fruto da formalização do pensamento lógico realizada por George Boole, um grande matemático inglês. Uma ilustração simples da álgebra booleana pode ser dada avaliando as três afirmações abaixo: Afirmação 1: Ana foi ao cinema. Afirmação 2: Paulo foi ao show. Afirmação 3: Ana foi ao cinema E Paulo foi ao show. Para a afirmação 3 ser verdadeira, tanto a afirmação 1 quanto a 2 devem ser também. Desse modo, basta uma única afirmação ser falsa para a conclusão também o ser na tabela-verdade E. Podemos ainda explicar mais um operador lógico a partir da seguinte assertiva: Afirmação 4: Ana foi ao cinema OU Paulo foi ao show. : Afirmação 1 OU Afirmação 2: p + q A afirmação 4 será verdadeira caso ambas as afirmativas sejam verdadeiras, mas também caso somente uma delas seja. Desse modo, basta que uma das afirmações seja verdadeira para a conclusão o ser também na tabela-verdade OU. 3.1.2 Operador E (Conjunção ou AND) Uma expressão com operador E resulta 1 somente se as suas entradas forem todas iguais a 1. p . q → p E q Chama-se essa expressão também de produto booleano, ou multiplicação lógica. 3.1.3 Operador OU (Disjunção ou OR) Uma expressão com operador OU resulta em 0 somente se as suas entradas forem todas iguais a 0. p +q → p OU q Essa expressão também é nomeada de soma booleana, ou adição lógica. 3.1.4 Operador Negação (Inversão ou NOT) Esse operador simplesmente inverte a entrada. a notação de “p negado” é: ~p 3.1.5 Operadores XOR, NOR, NAND Os operadores AND, OR e NOT podem ser combinados e aplicados sucessivamente a entradas. Disjunção exclusiva (XOR) O resultado dessa operação é 1 se, e somente se, apenas uma das entradas for 1. NEM (NOR) O resultado dessa operação é 1 se, e somente se, todas as entradas forem 0. NOU (“Não... e...”, NAND) O resultado dessa operação é 1 se pelo menos uma entrada for 0. 3.2 Portas lógicas Há símbolos gráficos para cada operador, chamadas portas lógicas. Na tabela a seguir, as entradas são representadas pelos traços à esquerda, podendo ser, cada uma, zero ou um. A saída é representada pelo traço à direita, também obedecendo à base binária. Para fins didáticos, tratamos de operações, portas lógicas e símbolos com apenas duas entradas. 3.3 Operações aritméticas e lógicas em algoritmos A seguir, vamos mostrar operações aritméticas e lógicas implementadas em algoritmos simples, usando o visualg. 3.3.1 Comandos de entrada e saída Para leitura de informações, o comando utilizado para entrada de dados é conhecido como leia. Por outro lado, para a apresentação de uma informação na tela é utilizada um comando de saída específico denominado escreva. 3.3.2 Operações e expressões As expressões são formadas essencialmente por operadores, operandos e parênteses. De acordo com o tipo de operador utilizado, podemos criar expressões denominadas: 3.3.3 Expressões aritméticas Neste grupo, os principais operadores utilizados são soma (+), subtração (–), multiplicação (*), divisão (/) e resto da divisão (%). 3.3.4 Expressões relacionais Quando construímos algoritmos é muito comum a necessidade de comparar, ou estabelecer relações entre determinados operandos. Os operadores relacionais conhecidos são: • maior (>) • menor (<) • menor ou igual (<=) • maior ou igual (>=) • igual (=) • diferente (<>). Em uma expressão relacional o resultado produzido pela avaliação da expressão é sempre um valor lógico. 3.3.5 Expressões lógicas Para criação de uma expressão lógica é necessário utilizar operadores booleanos, em que os principais são: • negação (NOT) • conjunção1 (E) • disjunção (OU) • disjunção-exclusiva (XOR) 4 – Instruções e Processamentos Neste capítulo, vamos entender melhor o que são instruções e quais são os seus tipos. 4.1 Componentes fundamentais para o processamento Segundo Null e Lobur, a UCP “é responsável por carregar instruções de programas, decodificar cada instrução carregada e realizar a sequência indicada de operações sobre os dados corretos” (2010, p. 208). Registradores São componentes de hardware que guardam dados binários relativos a dados, endereços de memórias e informações de controle. Não devem ser confundidos com os dispositivos de armazenamento do computador, pois são internos à UCP Unidade de Aritmética e Lógica (UAL) As operações matemáticas e de álgebra booleana são executadas pela UAL. Unidade de Controle Essa unidade é responsável por manipular os registradores adequadamente e ativar a UAL para as operações requeridas na ordem correta. Cabe ainda à Unidade de Controle executar interrupções e monitorar o estado das operações. Relógio A frequência desse dispositivo sincroniza todo o sistema computacional. Os registradores podem ser carregados com outros dados apenas com a passagem de um ciclo do relógio (NULL & LOBUR, 2010). Interfaces de Entrada e Saída (E/S) A UCP recebe e disponibiliza dados por meio de dispositivos externos. Barramento Conjunto de vias de transmissão de dados, instruções de controle e energia para comunicação entre periféricos. 4.2 Instruções de computador 4.2.1 Estrutura e tipos Cada tipo de processador é capaz de executar um determinado conjunto de instruções (MURDOCCA & HEURING, 2000). Esse fato ajuda a explicar os problemas de compatibilidade entre arquiteturas de computadores, pois elas possuem conjuntos diferentes. Segundo Stallings (2000), uma instrução deve possuir os seguintes elementos de modo a fornecer toda a informação requerida para a execução: • Código da operação. A operação de adição, por exemplo, é usualmente simbolizada por ADD. • Referência aos operandos de entrada: dados que serão processados, endereços de memória, entre outros. • Referência aos operandos de saída: resultado da operação. • Endereço da instrução seguinte. 4.2.2 Ciclo de instrução e interrupção Os computadores de hoje não mais realizam uma instrução só por vez. O modelo atualmente empregado usa o métodode pipelining, em que as instruções são executadas de forma paralela. Por esse método, as instruções são dividas em etapas, permitindo que a UCP armazene e execute diversas instruções por vez. Outro ponto positivo desse método, é que são armazenadas continuamente etapas de instruções nos registradores, evitando que se espere para buscá-las na memória principal, um procedimento mais lento. Como desvantagem do pipelining, está a maior complexidade do controle da instruções, o que pode implicar conflitos e problemas de fluxos de memória (MURDOCCA & HEURING, 2000). Overflow aritmético acontece quando o resultado matemático de uma operação ultrapassa o valor designado de memória e/ou o formato designado de sua variável. Qualquer ciclo que envolva instruções, pode ser interrompido por causa diversas (NULL & LOBUR, 2010): Instruções de entrada e saída; Erros em operações aritméticas; Problemas de hardware; Instruções inválidas. 4.3 Aspectos de arquitetura nos computadores pessoais Nesta seção, vamos explorar aspectos mais visíveis em nossos computadores de uso cotidiano. 4.3.1 Placa-mãe A placa-mãe realiza a comunicação e dá suporte físico aos componentes do computador. Estas possuem conjuntos de circuitos integrados (chipsets) que fazem a comunicação entre o processador, a memória e o controle de periféricos. 4.3.2 Software e instruções Por meio do software, o hardware recebe instruções detalhadas que dizem ao computador o que deve ser feito. Os dois tipos de software hoje existentes são o software de sistema e o software aplicativo. O software de sistema inclui os sistemas operacionais, os tradutores de linguagem e os programas utilitários. Os softwares aplicativos incluem as linguagens de programação, as linguagens de quarta geração e os pacotes de software . São software para utilização do usuário final. 4.3.2.1 Software de sistema O software de sistema operacional é aquele que “conversa” com o hardware e manipula seus recursos. O sistema operacional fica próximo do núcleo do computador, que é o hardware. Ele traduz as necessidades dos softwares aplicativos e, assim, os desenvolvedores têm mais facilidade para trabalhar. Um sistema operacional é uma coleção de outros softwares que gerenciam todos os dispositivos do computador. Em geral, ele possui os seguintes componentes: gerenciador (escalonador) de processos; gerenciador de memória; gerenciador de entrada e saída; gerenciador de sistema de arquivos. Estes componentes do sistema operacional, normalmente, não são visíveis ao usuário final. Digo normalmente porque, em sistemas com código fonte aberto, como o Linux, é possível ao usuário não só ver como alterar os códigos para os componentes do sistema operacional. 4.3.2.2 Tradutores de linguagem Os softwares de tradução convertem o código escrito numa linguagem de programação para a linguagem de máquina que será compreendida pelo hardware e usará recursos administrados pelo sistema operacional. Já os programas utilitários são aqueles que auxiliam o usuário na configuração e no gerenciamento do sistema operacional de seu computador. 4.3.2.3 Linguagens de programação A linguagem de programação serve para representarmos as instruções que um programa deve realizar para alguma tarefa. Porém o computador entende apenas sinais elétricos (binários) e para que a comunicação seja possível necessitamos de um tradutor que precisará converter o que você quiser para a linguagem de computador. Em computação, esse tradutor é chamado de compilador, e a conversão de uma linguagem em outra é chamada de processo de compilação. 4.3.2.4 Linguagens de quarto nível As linguagens de quarta geração consistem num conjunto de diversas ferramentas de software para auxiliar os usuários finais no desenvolvimento de softwares aplicativos sem necessitar tanto de conhecimentos mais técnicos. Não são procedurais, mas sim orientada a objetos. 4.3.2.4.1 Lei de Moore A lei de Moore surgiu em 1965 através de um conceito estabelecido por Gordon Earl Moore. Tal lei dizia que o poder de processamento dos computadores (entenda computadores como a informática geral, não os computadores domésticos) dobraria a cada 18 meses. Vale frisar que de modo algum Gordon queria se referenciar a sua empresa (Gordon é co- fundador da Intel), pois ele não havia como ter certeza que a empresa conseguiria evoluir em tal ritmo. Não há como dizer que esta lei vá perpetuar por muito mais tempo, mas até agora ela tem sido válida. 5 Memória e Dispositivos de Entrada e Saída A UCP precisa ter dados e instruções disponíveis para que possa cumprir a sua função. A fonte imediata de dados para a UCP encontra-se nos registradores, que são componentes internos à unidade. Os registradores se caracterizam pela rapidez com que se comunicam com o processador, porém eles possuem uma capacidade limitada de armazenamento e outros componentes de memória também precisam ser utilizados. 5.1 Memória 5.1.1 Hierarquia Os diversos tipos de memória são definidos em termos da sua relação com a UCP. Quanto mais direta for essa relação, considera-se maior a sua posição hierárquica. Deve-se notar que discos rígidos são considerados como armazenamento externo ou secundário. Durante o funcionamento da UCP, primeiro se verifica se o dado necessário está ou não na memória interna. Em caso contrário, é acionado o armazenamento externo e assim por diante. Deve-se notar que quanto mais alto estiver na hierarquia, mais custoso tende a ser o dispositivo. 5.1.2 Características dos dispositivos de memória Como a qualidade dos sistemas computacionais depende do desempenho dos seus dispositivos de memória, é importante termos métodos para avaliá-los. Stallings identifica três fatores fundamentais: Tempo de acesso; Tempo de ciclo de memória (intervalo requerido para que um acesso possa suceder o outro) e Taxa de transferência (bits). Também é preciso considerar a taxa de acerto, taxa que reflete quantas vezes o dado requerido esteve no nível especificado da memória em relação ao total de requisições. A memória interna também é subdivida em termos de comunicação com a UCP. Retomando o modelo de Von Neumann, a UCP precisa ser alimentada rápida e diretamente com dados e instruções. Essa é a função da memória principal. Para que a memória funcione com a UCP, é preciso haver uma integração de registradores, mecanismos de controle e o barramento. Em linguagens de programação como C++, um ponteiro armazena o endereço da posição de um dado na memória, servindo para referenciá-lo. A partir dos componentes acima, podemos descrever as duas operações básicas da memória: leitura e escrita. Perceba que há três tipos comunicações envolvidas: o endereço do dado, os sinais de controle de instrução e, por fim, o dado em si. 5.1.4 Memória RAM Nos computadores convencionais, o papel da memória principal é desempenhado pela memória RAM e parcialmente pela memória ROM. A memória RAM (memória de acesso randômico) serve para armazenar dados de trabalho do processador. Esta é uma memória volátil. O quadro relaciona os principais tipos de memória RAM. Deve-se destacar aquelas de tipo síncrono, que trabalham sem atraso (delay) com o processador. Outra diferença importante reside nas memórias RAM estáticas, que mantém os seus dados enquanto houver alimentação de energia, e as dinâmicas, que demandam recargas em períodos de poucos milissegundos. 5.1.5 Memórica Cache Uma memória pequena capaz de armazenar os dados usados com mais frequência. Como essa memória tem comunicação direta e rápida com a UCP, o desempenho do computador pode ser melhorado de forma significativa. O desafio para que a memória cache seja eficiente é que haja um bom mapeamento de memória e que realmente os dados mais úteis sejam armazenados. A memória cache é geralmente mapeada pelos métodos direto, associativo ou associativo por conjunto (NULL & LOBOUR,2011). 5.2 Dispositivos de entrada e saída E/S A comunicação entre usuário e computador se dá pelos sistemas de entrada e saída (E/S), ou, em inglês, In and Out (I/O). As arquiteturas dos computadores devem fornecer não só portas físicas para os dispositivos de E/S, mas um mapeamento de memória adequado e programação de baixo nível para comunicação, tal como em drivers. A transmissão de dados entre a interface do periférico e a memória/UCP pode se dar por formas bem distintas. Na transmissão serial, a comunicação se dá por uma linha única e, assim, um bit é transmitido de cada vez. Via de regra, a interface possui um buffer de forma a regular o fluxo e ritmo da transmissão. Na transmissão paralela, um conjunto de bits é repassado de uma só vez (MONTEIRO, 2007). 5.3 Tipos de Computadores A seguir serão apresentados brevemente os tipos principais de computadores. 5.3.1 Computadores pessoais São os chamados computadores de mesa (desktop) ou microcomputadores. Uma variação deste tipo de computador que é usada para serviços mais avançados são as estações de trabalho (workstations). 5.3.2 Notebooks Estes computadores são mais leves, projetados para o uso portátil. Os netbooks são uma variação dos notebooks. 5.3.3 Computadores handheld Também chamado de PDA (Personal Digital Assistant), são acessados por meio de uma caneta gráfica, possuindo tela sensível ao toque, sendo possível escrever sobre ela. Um smartphone é basicamente um celular com funções de um PDA. 5.3.4 Supercomputadores São os mais caros e mais poderosos computadores. Usados para grandes simulações, como previsão do tempo, análise do mercado de ações, efeitos especiais em produções cinematográficas. Também são muito usados por órgãos do governo para tarefas que envolvam gigantesca manipulação de dados.
Compartilhar