Baixe o app para aproveitar ainda mais
Prévia do material em texto
Figura 1. 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. Entretando, 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 https://wiki.ifsc.edu.br/mediawiki/index.php/Arquivo:MIParqbasica.png 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 (https://pt.wikipedia.org/wiki/Perif%C3%A9rico). Quando os dados são recebidos ou enviados a esses periféricos o processo é conhecido como entrada/saída (E/S). Camadas de Abstração Para compreender o funcionamento do computador, precisamos entender várias camadas de abstração diferente. https://pt.wikipedia.org/wiki/Perif%C3%A9rico https://wiki.ifsc.edu.br/mediawiki/index.php/Arquivo:Perifericos.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 (https://pt.wikipedia.org/wiki/N%C3%BAcleo_(sistema_operacional)) de um Sistema Operacional sendo usado como um meio de comunicação entre o Software e o Hardware: https://wiki.ifsc.edu.br/mediawiki/index.php/Arquivo:MIPcamadasabstr.png https://wiki.ifsc.edu.br/mediawiki/index.php/Arquivo:MIPcamadasabstr2.png https://pt.wikipedia.org/wiki/N%C3%BAcleo_(sistema_operacional) Nível 4 ou Nível da linguagem de montagem (http://br.ccm.net/faq/2707-introducao-a-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): https://wiki.ifsc.edu.br/mediawiki/index.php/Arquivo:MIPkernel.png http://br.ccm.net/faq/2707-introducao-a-linguagem-de-montagem 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. Estrutura dos primeiros computadores A estrutura dos primeiros computadores era limitada e sua programação difícil, como você já deve ter visto. Essas máquinas funcionavam com válvulas colocadas em quadros interligados e não dispunham de uma CPU, tendo que ser programadas manualmente cada vez que fossem executar uma nova tarefa. Na prática, toda a programação era feita reposicionando cabos e chaves até que um novo programa fosse carregado e só depois o computador processava as informações recebidas por essa programação (ARRUDA, 2011).Após o final da Segunda Guerra, John von Neumann implementou a arquitetura de uma máquina digital, chamada de “Arquitetura de von Neumann”. Esta arquitetura prevê a possibilidade de uma máquina digital armazenar os programas e os dados no mesmo espaço de memória e estes serão processados por uma unidade de processamento central (CPU), composta por uma unidade de controle e uma unidade aritmética e lógica (ULA). Os dados são fornecidos através de dispositivos de entrada e retornados através dos dispositivos de saída (RAINER; CEGIESLK, 2012). Mas você deve estar se perguntando: como essa arquitetura, que é usada até hoje nos computadores, conseguiu estabelecer um padrão aceitável para que as máquinas pudessem processar informações? Vejamos como isso foi pensado. Uma máquina que estiver baseada na arquitetura de Von Neumann terá todas as unidades previstas nesta tecnologia, como você pode ver na Figura abaixo: Arquitetura de John von Neumann. Fonte: ilustração baseada na descrição do vídeo The von Neumann Architecture. Arquitetura de John von Neumann. Fonte: ilustração baseada na descrição do vídeo The von Neumann Architecture. A descrição da arquitetura de von Neumann prevê cinco unidades distintas, como pode ser observado na Figura acima, e a organização dessas unidades é demonstrada na Figura abaixo, como segue: Arquitetura de John von Neumann. Fonte: Wikimedia Commons. Arquitetura de John von Neumann. Fonte: Wikimedia Commons. ➕ Pesquise mais Conheça mais sobre a arquitetura de um computador e aprofunde seus conhecimentos acessando o link. _______ https://wiki.ifsc.edu.br/mediawiki/index.php/Arquivo:MIPVonNeumann.png
Compartilhar