MI1022806 2020 1 AULA02

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Tipos de computadores

Objetivos

Compreender os conceitos básicos relacionados aos computadores, seus componentes e à forma como os programas são executados.

Definição de computador

Como computador entendemos qualquer tipo de dispositivo capaz de receber uma entrada e que retorna uma saída após realizar uma série de operações com base nos valores recebidos e armazenados.

Para ser considerado um computador ele precisa ter processador, memória e dispositivos de entrada e/ou saída, que podem ser utilizados de modo eficiente na solução dos tipos de problemas, os quais possuem uma grande complexidade ou um grande volume de dados. Os computadores eletrônicos digitais recebem essa denominação porque são desenvolvidos a partir de circuitos eletrônicos e são capazes de realizar cálculos, operações lógicas e movimentação de dados entre o processador, seus dispositivos de armazenamento e de entrada e saída.

Existem vários tipos de computadores. Os principais tipos de computadores disponíveis atualmente são (TANENBAUM, 2007):


  • Notebooks: computadores portáteis. Geralmente de pequeno tamanho e baixo consumo, para que possam ser mantidos mais tempo por bateria recarregável. São computadores completos, mas com dimensões reduzidas e limitações quanto ao tamanho da tela, teclado, conexões com periféricos e capacidade de expansão. Nessa categoria, também se enquadram os laptops, smartphones, os tablets, os PDAs (Personal Digital Assistant) e os netbooks.
Fig046 MI1022806.png
Fig046b MI1022806.png


  • Desktop: Computadores de baixo-custo e com desempenho razoável para um usuário "comum", ou residencial. Podem ser desde computadores baratos, utilizados principalmente para jogos, como computadores mais potentes, utilizados em escolas, empresas ou universidades. No topo dos modelos de computadores pessoais, estão as chamadas estações de trabalho, que nada mais são do que um computador pessoal com grande poder de processamento.
Fig047 MI1022806.png
Fig048 MI1022806.png
  • Servidor: Máquinas projetadas para ter um desempenho considerado bom para uma aplicação muito grande e complexa ou então para um número muito grande de operações mais simples. Alguns servidores são simples computadores de Desktop melhorados. Entretanto, existem também aqueles que possuem arquiteturas muito mais sofisticadas que contam com dezenas ou até mesmo centenas de processadores. Os servidores, normalmente, são desenvolvidos para suportar um número maior de processadores, mais conexões de rede, mais espaço de armazenamento em disco e seus componentes permitem que o mesmo fique ligado de forma ininterrupta.
Fig049 MI1022806.png
Fig050 MI1022806.png
Fig051 MI1022806.png


  • Cluster - Conjunto de estações de trabalho ou cluster são vários computadores pessoais ou estações de trabalho, conectados por uma rede de alto desempenho, executando um software especial que permite a todas as máquinas trabalharem juntas em uma única tarefa, como se fosse um único supercomputador.
Fig052 MI1022806.png
Fig053 MI1022806.png
  • Mainframes – são grandes computadores, descendentes diretos dos computadores da década de 1960. Eles podem manipular e processar um grande volume de dados e ter milhares de conexões simultâneas. Seu uso é adequado para empresas que há décadas trabalham com programas dessa natureza como os bancos, por exemplo.
Fig054 MI1022806.png
  • Supercomputador: Computadores com capacidade de processamento superior e grande capacidade de memória, para aplicações que exigem cálculos complexos e tarefas intensivas. São utilizados para aplicações militares, de segurança e/ou científicas. São construídos com milhares de processadores interconectados por um barramento específico.
Fig055 MI1022806.png
  • Sistemas Embarcados/microcontrolados: Possuem um uso dedicado à uma única tarefa e normalmente vem embutidos em outros aparelhos como celulares, microondas, elevadores ou veículos. Possuem uma Entrada/Saída muito simples.
Fig056 MI1022806.png


  • Computador descartável – são computadores desenvolvidos num único chip e são usados em chips de RFID (Radio-Frequency IDentification) em etiquetas de produtos e em cartões de felicitações para, normalmente, tocar uma música. Esses dispositivos custam menos de US$ 1,00.
Fig057 MI1022806.png

Arquitetura e organização de computadores

Hoje em dia há muitos tipos de computadores e diversas arquiteturas. Elas são frutos de muitos estudos, pesquisas e avanços tecnológicos. Mas todos computadores compartilham uma arquitetura comum. Essa arquitetura é o que separa um computador de uma calculadora de bolso, de um aparelho de televisão ou um relógio de pulso. Essa arquitetura é apresentada na figura abaixo:


Fig056 MI1022806.png
Figura - Arquitetura básica de um computador.


Todo computador possui uma Unidade Central de Processamento, ou, do inglês, Central Processing Unit (CPU) e uma Memória Principal. Todos os dados a serem processados pela CPU, para operações lógicas e aritméticas, precisam estar na memória.


Da memória os dados são transferidos para a CPU através de fios paralelos de comunicação, chamados de Barramento de Dados.


Entretanto, a CPU não toma decisões por si própria. Ela não sabe que dados deve trazer da memória, muito menos que operação executar com eles. Para isso, ela precisa que instruções, também armazenadas na memória, sejam trazidas para a CPU através do Barramento de Endereço. Cada instrução informa para a CPU que operação ela deve executar, com quais dados e o que ela deve fazer com o resultado da operação.


Para poder se localizar, a memória é organizada em endereços. Todos os dados e as instruções são localizadas através desses endereços. Cada instrução indica para a CPU que dados devem ser transferidos e processados através dos endereços desses dados.


Esse endereço é transferido para a memória pela CPU através do Barramento de Endereço.


A memória localiza o tal dado e o transfere para a CPU via Barramento de Dados.


As instruções são desenvolvidas pelo programador, através de linguagens de programação. As ferramentas de compilação transformam os programas escritos em linguagens de alto nível, como C, Java e Phython, em instruções de máquina, que são finalmente copiadas para a memória no momento em que precisam ser executadas. Cada instrução é armazenada em um endereço diferente da memória.


Na execução normal, a CPU passa para a memória, via Barramento de Endereço, o endereço da primeira instrução do programa, a memória transfere a instrução pelo Barramento de Instrução, a CPU a executa e, em seguida, solicita a instrução do endereço seguinte. Assim, os programas são executados sempre de forma sequencial, a não ser que uma instrução especial solicite que ela salte para uma instrução que não seja a consecutiva. Isso é o caso quando há instruções condicionais (como o ``se” ou ``if”), instruções de repetição (como ``while” e o ``for”), ou chamadas a sub-programas, ou mesmo, por ordem do Sistema Operacional, para que o programa pare de executar para que um outro tome seu lugar.


As memórias são, quase sempre, muito mais lentas do que as CPUs. Isso exigiu, ao longo dos anos, que as CPUs possuíssem também uma porção interna de memória muito rápida, chamada Memória Cache. A tecnologia que permite essas memórias serem mais rápidas, tornam-as também muito caras.


Por isso que sua capacidade geralmente é muito limitada. Para acelerar ainda mais, elas são instaladas dentro das CPUs. Todos os dados e instruções transferidos da Memória Principal para a CPU são salvos também na Cache. Como a Cache não é capaz de guardar todos os dados da Memória Principal, apenas os dados mais recentes transferidos para a CPU permanecem na Cache. Técnicas muito avançadas são aplicadas para que se consiga, no máximo possível, manter os dados mais importantes daquele instante na Memória Cache.

A CPU também é responsável por enviar sinais de controle aos outros dispositivos do computador, como periféricos, dispositivos de entrada e saída, e memórias externas. Esse sinais são enviados quando uma instrução dá ordem para tal. Por exemplo, quando uma instrução pede que uma mensagem sem impressa na tela, a CPU, ao receber e executar essa instrução, envia para o controle do monitor que imprima na tela a mensagem contida o endereço que também foi passada pela instrução.


É esse comportamento que diferencia um computador de outros dispositivos eletrônicos mais simples. A essência da CPU não é muito diferente de uma calculadora de bolso. Ela executa operações lógicas e aritméticas. Entretanto, no projeto do computador, o papel do homem foi substituído pela programação. Todas instruções das tarefas que a CPU precisa executar são armazenadas na memória e, a partir de então, a CPU pode trabalhar sem qualquer interferência externa. Com a programação, a CPU pode também executar tarefas diversas, desde simulações, jogos, tocar músicas e vídeos etc. Simplificando, o computador é uma máquina programável e de propósito geral.


Os princípios estudados em Arquitetura de Computadores são fundamentais para se projetar máquinas realmente eficientes.

A arquitetura de computadores se refere ao comportamento de um sistema computacional visível para o programador, ou seja, aos aspectos relacionados com a execução lógica de um programa. A Arquitetura de Computadores é o projeto conceitual e fundamental da estrutura operacional de um sistema computacional. Ela é o estudo dos requisitos necessários para que um computador funcione e de como organizar os diversos componentes para obter melhores desempenhos. Saber como o computador funciona nos permitirá entender sua capacidade (e incapacidade) de resolver problemas, sobre como programá-los da melhor forma possível, como deixar o computador e os dados contidos neles mais seguros, como ganhar desempenho e o que faz ele ficar tão lento às vezes a ponto de querermos destruí-lo.


Já o termo organização de computadores se refere às unidades estruturais e seus relacionamentos lógicos e eletrônicos (STALLINGS, 2010), que permitem que uma determinada arquitetura seja implementada.

Os sistemas digitais, em seu nível mais baixo, representam as informações somente através de dígitos binários.

Num nível mais alto, estes dígitos codificados formam diferentes combinações capazes de representar qualquer tipo de informação.


Hardware

É a parte física do computador formada por componentes e circuitos eletrônicos.

O que diferencia um computador de um equipamento eletrônico é a capacidade de poder executar qualquer programa que seja carregado em sua memória. Esta capacidade é dada pelo processador.

Desta forma, o computador digital é um sistema digital binário, pois a informação é representada nele somente através dos dígitos binários 0 e 1.

Um computador é capaz de realizar basicamente trÊs operações básicas (STALLINGS, 2010):

  1. Processamento de dados
  2. Armazenamento de dados
  3. Movimentação de dados


A movimentação de dados é a transferência de um dado de um ponto para outro do computador. Pode ser de um endereço de memória para outro, de um dispositivo de entrada para a memória, ou da memória para um dispositivo de saída. O processamento de dados ocorre quando a CPU recebe um determinado dado e executa uma operação que o modifica de alguma forma. Já as operações de armazenamento ocorrem quando a CPU precisa registrar um dado em algum local específico, como salvar um dado no disco rígido, ou num pendrive, ou mesmo na Memória Principal.

A memória é um dispositivo eletrônico que tem a capacidade de armazenar essas informações e fornecê-las quando solicitadas.

O computador precisa também ser capaz de movimentar os dados entre ele e o mundo exterior. Um sistema computacional contém dispositivos que são usados como origem ou destino dos dados, denominados periféricos. Quando os dados são recebidos ou enviados a esses periféricos o processo é conhecido como entrada/saída (E/S).

Fig057 MI1022806.png

Camadas de abstração

Para compreender o funcionamento do computador, precisamos entender várias camadas de abstração diferente.

Fig058 MI1022806.png
Fig059 MI1022806.png

Um computador com n níveis pode ser visto como n diferentes máquinas virtuais, cada uma com a sua linguagem de máquina.

Um programador de nível n não precisa conhecer os níveis inferiores.

Nível 0 ou nível de lógica digital é o hardware verdadeiro da máquina, cujos circuitos executam os programas em linguagem de máquina de nível 1. Não existe aqui o conceito de programa como uma seqüência de instruções a serem executadas. Neste nível, os objetos são denominados portas lógicas - todas elas compostas por transistores. Neste nível estuda-se como criar estruturas mais complexas combinando-se as diversas portas como AND, OR e NOT para criar estruturas como multiplexadores, flip-flops e somadores. Neste estágio pode-se usar linguagens como o Verilog ou VHDL para programar circuitos.

Nível 1 ou nível de microprogramação é o verdadeiro nível de máquina, havendo um programa denominado microprograma, cuja função é interpretar as instruções de nível 2. A instrução neste nível é denominada microinstrução.

Nível 2 ou nível convencional de máquina é o primeiro nível de máquina virtual. A linguagem de máquina deste nível é comumente denominada linguagem de máquina. As instruções são executadas interpretativamente pelo microprograma. Em máquinas que não tenham o nível de microprogramação, as instruções de nível convencional de máquina são executadas diretamente pelos circuitos.

Nível 3 ou nível de sistema operacional apresenta a maior parte das instruções em linguagem de nível 2, um conjunto de novas instruções, organização diferente da memória, capacidade de execução de dois ou mais programas em paralelo. As novas facilidades são realizadas por um interpretador denominado sistema operacional, em execução no nível 2. As instruções de nível 3 idênticas às de nível 2 são executadas diretamente pelo microprograma.

Esta camada combina as instruções da camada anterior para realizar comandos mais sofisticados, como as operações da lingüagem C e como coordenar o funcionamento de um sistema operacional por meio de interrupções e outros recursos. A imagem abaixo é um diagrama que representa o Kernel de um Sistema Operacional sendo usado como um meio de comunicação entre o Software e o Hardware:

Nível 4 ou Nível da linguagem de montagem (de máquina) consiste de uma forma simbólica para uma linguagem de nível inferior. Esse é o nível onde as instruções são interpretadas e executadas pelo processador. Os programas em linguagem de montagem são traduzidos para uma linguagem de nível 2 ou 3, e, então, interpretados pela máquina apropriada. O programa que executa a tradução é denominado montador.

Acima desta camada, está o estudo do funcionamento de funções de bibliotecas, APIs e a programação de aplicativos e programas de computador simples.

Nível 5 ou nível de linguagem orientada para problemas consiste de linguagem de alto-nível. Os programas escritos nessas linguagens são, normalmente, traduzidos para o nível 3 ou 4 por tradutores conhecidos como compiladores.


E finalmente, na camada de abstração mais superior está o funcionamento de um programa de computador, do ponto de vista do usuário. Também chamado Nível do usuário ou de aplicativo – nele o usuário interage com o computador usando programas como editores de texto, planilhas, jogos ou programas que acessam a internet.


Os níveis 2 e 3 são sempre interpretados, enquanto os níveis 4 e 5 são, geralmente, traduzidos.

As linguagens de máquina dos níveis 1, 2 e 3 são numéricas, ao passo que as dos níveis 4 e 5 são simbólicas, contendo palavras e abreviaturas.

O hardware é constituído pelos circuitos eletrônicos e o software é constituído pelos programas. O firmware consiste no software embutido em dispositivos eletrônicos durante a fabricação.

Em muitos computadores, o microprograma está em firmware.

Normalmente, analistas de sistema, programadores e desenvolvedores de software trabalham nas camadas mais altas de abstração, enquanto físicos, engenheiros eletrônicos e engenheiros eletricistas, nas mais baixas.

Software

Para que um problema possa ser resolvido pelo computador, é necessário criar um algoritmo computacional, composto por uma sequência de passos ou ações que determinam a solução do problema e a respectiva codificação, usando uma linguagem de alto nível, que é mais fácil de ser escrita.

Essa codificação transforma o algoritmo num programa, ou software.

As principais etapas de um algoritmo para a obtenção de uma solução computacional são:

  1. Elaboração do algoritmo computacional referente ao problema.
  2. Codificação do algoritmo numa linguagem de alto nível (programa fonte).
  3. Tradução ou compilação do programa fonte para o código correspondente em linguagem de máquina (programa objeto).
  4. Execução do programa objeto (executável) pelo computador.

Atualmente, a grande maioria dos programas é desenvolvida utilizando uma linguagem de alto nível, a qual é traduzida para linguagem de máquina através da interpretação ou da compilação do programa fonte.

Na interpretação, cada instrução expressa em linguagem de alto nível é interpretada por um programa específico que está em execução (interpretador). Este, por sua vez, executa a instrução correspondente, através do hardware do computador.

Linguagem de máquina

É a comunicação em forma de códigos binários referente aos comandos que os circuitos eletrônicos de um processador específico podem executar. Também conhecida como Assembly.

No processo de compilação, um programa fonte, escrito em linguagem de alto nível, é transformado em instruções básicas de um processador. Essas instruções básicas, que na verdade são mesmo códigos binários, apresentados para os programadores na forma hexadecimal, ou de código (mnemônicos) são executadas diretamente pelos circuitos eletrônicos do computador.

Um programa escrito numa linguagem de baixo nível é composto de um conjunto de instruções simples executadas pelo processador. Para que um computador possa executar um programa é necessário que ele esteja armazenado na memória.

Modelo de Von Neumann

Os computadores digitais convencionais baseiam-se no modelo idealizado por Von Neumann, em 1946, baseado em cinco componentes principais (MURDOCCA; HEURING, 2000):

  • Unidade de entrada – provê instruções e dados ao sistema.
  • Unidade de memória – armazena os dados do sistema.
  • Unidade lógica e aritmética – processa os dados.
  • Unidade de controle – controla a execução das instruções e o processamento dos dados.
  • Unidade de saída – apresenta os resultados dos dados processados.

O aspecto mais importante do modelo de Von Neumann é o programa armazenado na memória do computador, juntamente com os dados a serem processados. Após o programa ser armazenado na memória, em uma série de endereços consecutivos, o processador inicia a execução do programa. O primeiro endereço de um programa contém, necessariamente, uma instrução para o processador.

Para realizar o processamento, a unidade de controle busca a instrução que estiver armazenada no primeiro endereço de memória onde se encontra o programa.

Em seguida, essa instrução é decodificada, ou seja, o processador define o código de operação daquela instrução em particular.


O passo seguinte é a execução da instrução, seguido de outro passo, o armazenamento do resultado, caso seja necessário. Nesse processo de busca, decodificação e execução, os dados e as instruções são armazenados dentro do processador em registradores.

Este ciclo se repetirá até que a instrução a ser executada seja a de encerrar o programa.

Arquiteturas Harvard

Semelhantemente às arquiteturas de von Neumann, as máquinas Harvard utilizam unidades de controle, unidades de entrada e saída, etc. A diferença é que as máquinas Harvard possuem memórias distintas para dados e programas.

Como são unidades separadas, o desempenho destas máquinas é superior, uma vez que o processador pode mandar buscar uma instrução, enquanto executa outra.

Modelo de barramento do sistema

Atualmente,o modelo de Von Neumann foi aperfeiçoado para outro tipo de modelo, chamado de modelo de barramento de sistema, formado por (MURDOCCA; HEURING, 2000):

  1. CPU (Central Processing Unit) – é a Unidade Central de Processamento ou processador, composta pela unidade de controle, unidade lógica e aritmética e registradores.
  2. Memória – armazena os dados e as instruções.
  3. Entrada e Saída (E/S) – agrupa as unidades de entrada e saída numa única unidade.

Esses componentes se comunicam através de um barramento do sistema, composto por:

  • Barramento de dados – transporta a informação, movendo dados entre os componentes do sistema.
  • Barramento de endereços – identifica para onde a informação está sendo enviada.
  • Barramento de controle – descreve a forma como a informação está sendo transmitida.

Os barramentos são um conjunto de fios de cobre, ou ouro, agrupados por função.

Um barramento de dados de 64 bits tem 64 fios individuais, onde cada fio transporta um bit da informação.

Um barramento de endereços de 32 bits, tem em cada fio o bit necessário para determinar o endereço onde vai ler ou escrever a informação e pode acessar qualquer endereço de 0 a 4 GB, pois 32 bits permitem acessar 4.294.967.296 endereços distintos.

Já o barramento de controle possui informações que determinam se a operação será de leitura ou escrita e, se será na memória ou nos dispositivos de E/S.

Sinal de clock

Para coordenar as atividades e a comunicação entre os componentes básicos que compõem o sistema de um computador existe um componente eletrônico que gera um sinal de clock, o qual alterna entre as tensões altas e baixas,

A frequência do clock é medida em hertz (Hz) ou ciclos por segundo. Um sinal de 1 Hz alterna valores altos e baixos, uma vez em cada segundo. Já um sinal de 1 MHz alterna esses valores um milhão de vezes por segundo.

O período de clock é o tempo decorrido entre duas repetições sucessivas do clock. O período é o inverso da frequência. Uma frequência de 1 MHz tem um período de clock de 0,000001 s ou 1 µs (1 microssegundo).

Um computador com processador cuja frequência é de 2 GHz consegue realizar 2 bilhões de ciclos por segundo, e pode-se dizer, que ele consegue executar 2 bilhões de instruções por segundo. Cada instrução demora 0,0000000005 segundos ou 0,5 nanossegundos para ser executada.

Na prática, um processador não consegue executar uma instrução por ciclo, pois as instruções são complexas e, na maioria das vezes, elas necessitam vários ciclos para sua execução completa, mas como eles podem executar mais de uma instrução simultaneamente, ele consegue executar um pouco menos de 2 bilhões de instruções por segundo.

Num sistema digital, o período do sinal de clock é a menor unidade de tempo perceptível. Em sistemas digitais, todas as ações ocorrem em intervalos de tempo que são múltiplos inteiros do período do clock da máquina.


Sistema de computador típico

Um computador de mesa (desktop) típico apresenta uma configuração com um gabinete contendo a fonte de alimentação, uma placa-mãe com processador, memória, controlador de vídeo, áudio e rede, uma unidade de disco rígido (HD – Hard Drive), unidade de disco ótico (DVD ou Blu-Ray), conectados a um monitor (LCD ou LED), um teclado, um mouse e uma caixa de som. A





Icone voltar.png Icone menu.png Icone prox.png