Buscar

AULA 2 - Microprocessadores - Graduação - Wiki do IF-SC (Parte 2)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Outros materiais