Commit 15925d3b authored by Eduardo de Santana Medeiros Alexandre's avatar Eduardo de Santana Medeiros Alexandre
Browse files

Inclusão de novo capítulo

parent af751d3c
== Organização e Funcionamento do Computador
Objetivos do Capítulo
Ao final deste capítulo você deverá ser capaz de:
Descreve a arquitetura geral de um computador;
Ser capaz de descrever seus componentes básicos e suas funções, como exemplo
a UCP, a memória principal, e os dispositivos de E/S;
Ser capaz de descrever o ciclo de máquina responsável pela execução de
programas de computador.
Um sistema de computador é integrado pelo seu hardware e seu software.
O hardware é o equipamento propriamente dito, seus elementos básicos são:
unidade central de processamento, memória principal e seus dispositivos de
entrada e saída.
O software é constituído pelos programas que lhe permitem atender às
necessidades dos usuários. O software abriga programas fornecidos pelos
fabricantes do computador e programas desenvolvidos pelo usuário.
Neste capítulo iremos identificar como estes dois elementos unidos
permitem que atividades pré-programadas, através de uma linguagem, sejam
executas de forma automática pelo computador.
=== 4.1. Arquitetura de um Computador
Os circuitos de um computador que executam operações sobre dados,
tais como adição e subtração, são isolados em uma região chamada Unidade
Central de Processamento UCP (CPU – Central Processing Unit), ou processador.
Os dados que estão armazenados na memória principal do computador
são transferidos através de barramentos que interligam estes componentes.
A comunicação com o mundo externo, os usuários, se dá pelos
dispositivos de Entrada e Saída (E/S). A comunicação entre o computador e
estes dispositivos se dá através dos controladores de cada dispositivo de
E/S. Em computadores comuns estes controladores correspondem a placas de
circuito encaixadas na placa principal do computador (placa mãe). Esta
ilustrada na Figura 1, a arquitetura básica de um computador, demonstrando a
organização de seus componentes básicos.
Figura 1. Arquitetural geral de um computador.
Esta seção apresenta uma descrição sobre cada unidade desta
Arquitetura, descrevendo seus componentes e funções básicas.
==== 4.1.1Memória Principal
A memória do computador consiste numa coleção de registradores
numerados consecutivamente (endereçados), cada um dos quais possui um tamanho
denominado tamanho da palavra que pode variar em 16, 32, 64 e 128 bits, com a
palavra de 32 bits sendo a mais comum hoje em dia, e a palavra de 64 bits
aumentando de popularidade.
Cada registrador tem um endereço, chamado de localização na
memória, estas são organizadas linearmente em ordem consecutiva. O número
único que identifica cada palavra é chamado de endereço.
A memória possui um espaço de endereçamento, representado pelo
tamanho em bits do seu endereço, logo um espaço de endereçamento de 32 bits
pode acessar qualquer palavra de memória em qualquer lugar no intervalo de 0 a
232-1.
O espaço de endereçamento pode ser dividido em regiões distintas
usadas pelo sistema operacional, dispositivos de E/S, programas de usuário e
pilha do sistema operacional.
Figura 2. Mapa de Memória do Computador.
As regiões ilustradas na Figura 2 compõem um possível mapa de
memória. Os endereços acima de 2048 são reservados para uso do sistema
operacional. O espaço do usuário é onde um programa do usuário será
carregado. A porção do espaço de endereçamento entre 231 e 232 – 1 está
reservado para dispositivos de E/S.
É importante manter clara a distinção entre o que é endereço e o
que é dado. Uma palavra na memória, pode ter distintas representações
dependendo do seu uso. Ela pode armazenar uma instrução contendo a operação
e os operandos (dados de entrada) para a realização de uma específica
operação, mas também pode armazenar o endereço de uma outra região de
memória. Logo o endereço é um apontador para uma posição de memória que
contém dados e estes são informações significativas para a realização de
alguma atividade no computador, ou a representação de alguma informação.
==== 4.1.2 Unidade Central de Processamento (UCP)
A Unidade Central de Processamento, ilustrada na Figura 3, é composta
por duas partes principais: a unidade lógica e aritmética (ULA), formada por
circuitos que manipulam os dados através de operações binárias (dois
operandos) e unárias (um operando). Exemplos incluem a soma e operadores
lógicos: and, or e not. E a unidade de controle, cujos circuitos são
responsáveis por coordenar as operações da UCP.
Figura 3. Componente lógicos da UCP.
Para o armazenamento e a comunicação entre estas duas unidades a UCP
contém circuitos de armazenamento chamados de registradores, que se assemelham
as células de armazenamento da memória principal.
Alguns registradores funcionam como posições intermediárias de armazenamento
para os dados manipulados pela UCP. Nestes registradores são armazenados os
dados de entrada para a ULA e ainda proporcionam um local de armazenamento para
o resultado das operações.
Os dados a serem manipulados pela ULA tem origem na memória principal, sendo
de responsabilidade da unidade de controle a transferência destes dados aos
registradores, informar a ULA sobre quais registradores estão os dados de
entrada, ativar o circuito da operação apropriada e informar em que
registrador deve guardar o resultado da operação.
A transferência desta informação oriunda da memória principal se dá
através do barramento que é responsável por transmitir padrões de bits
entre a UCP, os dispositivos de E/S e a memória principal.
NOTE: Executar uma simples operação de soma é mais complexo que apenas somar
estes números. Coordenado pela unidade de controle, os registradores
intermediam a comunicação da memória principal e a ULA. Este processo pode
ser resumido assim:
. Passo 1. Obter da memória um dos valores da soma e guardar em um registrador;
. Passo 2. Obter da memória o outro número a ser somado e armazená-lo em
outro registrador;
. Passo 3. Acionar o circuito de adição tendo os registradores do passo 1 e 2
como entrada, e escolher outro registrador para armazenar o resultado;
. Passo 4. Armazenar o resultado na memória principal;
. Passo 5. Finalizar operação.
==== 4.1.3 Unidades de Entrada/Saída
Entrada/Saída (E/S) compreende todas as maneiras como o computador se
comunica com os usuários e outras máquinas ou dispositivos. Os dispositivos
de entrada aceitam dados e instruções do usuário, os dispositivos de saída
retornam os dados processados.
Os dispositivos de saída mais comuns são a tela de vídeo, conhecida
como monitor, e a impressora. Os dispositivos de entrada mais conhecidos são
teclado e mouse. Os sistemas de multimídia possuem alto-falante como saída e
microfone como entrada adicional.
Os dispositivos de E/S trabalham com a memória do computador do
seguinte modo: os dados captados pelos dispositivos de entrada são
representados em pulsos elétricos e transmitidos ao computador, ali estes
pulsos são convertidos em dados binários e armazenados na memória do
computador. No caminho inverso a informação binária é transformada em pulso
elétrico e encaminhada para o dispositivo de saída especialista para
tratá-lo e gerar uma saída ao usuário.
Um dispositivo especial de E/S de um computador é o disco rígido
(HD), nele são armazenados todos os dados que devem persistir num sistema
computacional, mesmo na ausência de energia. Todos os programas que não
estão em execução se encontram no disco, seu único problema é o tempo
excessivo para a recuperação e escrita de uma informação, havendo assim a
necessidade de se trabalhar com a memória volátil (memória principal), mais
rápida, porém mais cara.
==== 4.1.4 O Modelo de Barramento
O objetivo do barramento é reduzir o número de interconexões entre a
UCP e seus subsistemas. Em lugar de mantermos um caminho de comunicação entre
a memória e cada um dos dispositivos de entrada e saída, a UCP é
interconectada com os mesmos via barramento de sistema compartilhado.
Figura 4. Modelo de Barramento do Computador.
Os componentes são interconectados ao barramento na forma ilustrada na
Figura 4. A UCP gera endereços que são colocados no barramento de endereços,
e a memória recebe endereços do barramento de endereços. O caminho inverso
desta operação não é possível como pode ser observado na figura.
Durante a execução de um programa, cada instrução é levada até a
ULA (Unidade Lógica e Aritmética) a partir da memória, uma instrução de
cada vez, junto com qualquer dado que seja necessário para executá-la. A
saída do programa é colocada em um dispositivo tal como display de vídeo ou
disco. A comunicação entre os três componentes (UCP, memória e E/S) é
feita sempre pelos barramentos.
=== 4.2. Programando um computador
A grande evolução na arquitetura dos computadores foi a flexibilidade
da unidade de controle quanto ao tratamento de instruções. Em suas primeiras
versões existiam circuitos físicos montados na unidade de controle que
realizam algumas atividades específicas, sempre que o usuário quisesse
utilizar outras operações era necessário reprogramar fisicamente a fiação
do circuito para que a nova operação pudesse ser executada.
O leitor deve perceber que esta estratégia tornaria qualquer
programação inviável para leigos da área de circuitos eletrônicos. Esta
seção apresenta o funcionamento atual da UCP para executar os programas do
sistema e de usuários.
==== 4.2.1 Linguagem de Máquina
A unidade de controle moderna é projetada para reconhecer instruções
codificadas como padrões de bits. Ao conjunto destas instruções é dado o
nome de linguagem de máquina e cada uma destas instruções é chamada
instrução de máquina.
Algo que pode surpreender ao leitor é a pequena quantidade necessária
para a UCP decodificar. Sendo através da combinação destas poucas
instruções, bem planejadas, que o computador desenvolve tarefas de usos
gerais nas mais diversas situações em nosso cotidiano. E a grandeza da
Ciência da Computação é que se tivermos projetado instruções bem
planejadas, a adição de outras instruções mais específicas se torna
desnecessário, pois uma combinação das instruções básicas tem o mesmo
efeito lógico da instrução específica.
A decisão entre instruções específicas ou instruções de uso geral
levou a disputa de duas filosofias de projetos para as UCPs. A primeira,
chamada computador com conjunto mínimo de instruções (Reduced Instruction
Set Computer - RISC), tem em sua defesa o fato de criar máquinas simples e
eficientes.
O contraponto é a filosofia do computador com conjunto de instruções
complexas (Complex Instruction Set Computer - CISC). Em seus argumentos há a
facilidade de programação, já que uma única instrução é capaz de
realizar várias tarefas individuais do RISC.
As duas filosofias tem entrada no mercado, sendo o CISC adotado pela
família Pentium da Intel e o RISC adotado pela Apple Computer, IBM e Motorola.
Existem três tipos de instruções: as instruções de transferência
de dados, que realizam cópia de valores entre registradores da UCP e a
memória principal, como exemplo STORE e LOAD. As instruções lógicas e
aritméticas que ativam os circuitos específicos da ULA para a realização
das operações, como exemplo ADD, SHIFT, OR, AND e etc. E por fim, as
instruções de controle, responsáveis por tratar a sequencia da execução do
programa sem haver manipulação de seus dados, como exemplo temos o JUMP e
BRANCH, usadas para a mudança do fluxo normal de um programa, implementando
assim os desvios condicionais, códigos de repetição e etc.
A codificação de uma instrução é composta de duas partes, o campo código
da operação e o campo do operando.
Podemos observar no exemplo a seguir, a codificação da operação STORE e
seus operandos:
O primeiro dígito hexadecimal, o 11, representa, neste exemplo, a operação
STORE (armazena o conteúdo de um registrador em memória). O dígito
hexadecimal seguinte representa o identificador do registrador (valor 12) que
possui o conteúdo a ser gravado e o par de dígitos hexadecimais F3 representa
o endereço na memória principal onde o conteúdo do registrador 12 será
guardado. Podemos traduzir este código da seguinte forma:
“Armazene o padrão de bits contido no registrador 12 para a célula de
memória de endereço F3”
==== 4.2.2 Executando Programas em Linguagem de Máquina
Um programa é uma sequencia de instruções em uma linguagem a ser
executada com o objetivo de realizar uma determinada atividade pré-programada.
O programa em linguagem de máquina fica posto na memória principal,
sendo de responsabilidade da unidade de controle, a busca por cada instrução
de máquina, sua decodificação e o gerenciamento da execução desta
instrução com o auxílio da ULA. Após o término de cada instrução o
processo se repete dando continuidade ao ciclo de máquina, este ciclo está
ilustrado na Figura 5.
Figura 5. As 3 fases do ciclo de máquina.
Para o controle deste ciclo a unidade de controle possui dois registradores de
proposito específico: o contador de instruções e o registrador de
instruções. No contador de instruções é armazenado o endereço de memória
da próxima instrução a ser executada, assim a unidade de controle fica
informada sobre a posição do programa em execução. Já o registrador de
instruções guarda a instrução de máquina que esta em execução.
Como ilustrado na Figura 5, o ciclo de máquina é divido em três fases. Em
cada fase a unidade de controle utiliza seus registradores para auxiliá-la na
execução das instruções:
1. Busca: a unidade de controle pede para a memória principal transferir a
instrução contida no endereço de memória indicado pelo contador de
instruções e este conteúdo é armazenado no registrador de instruções. Por
fim, o conteúdo do contador de instruções é incrementado, ficando pronto
para a próxima fase de busca;
2. Decodificação: a unidade de controle separa os campos da instrução
contida no registrador de instruções de acordo com o tipo de operação,
identificando os operandos da instrução;
3. Execução: os circuitos específicos da ULA são ativados, os dados de
entrada carregados e a tarefa indicada na instrução é executada.
Ao final da execução, a unidade de controle recomeçará o ciclo, partindo da
fase de busca.
=== 4.3 Recapitulando
Neste capítulo estudamos a Arquitetura básica de um computador, identificamos
cada um dos seus componentes, descrevendo suas funcionalidades principais e um
resumo de seu funcionamento interno. Descrevemos como estes componentes
interagem entre si para o funcionamento do computador, dentre estes componentes
estudamos a Unidade Central de Processamento, a Memória Principal, os
dispositivos de Entrada e Saída e os Barramentos.
Por fim demos uma introdução sobre como o computador consegue executar um
programa desenvolvido em linguagem de máquina, apresentando, para isso, o
conceito de ciclo de máquina.
=== Atividades
1. Qual o papel de cada unidade dentro da UCP?
2. Qual a função dos registradores existente na UCP?
3. Qual a importância dos Barramentos na Arquitetura de um computador?
4. Como a unidade de controle gerencia o ciclo de máquina de um computador?
5. Descreva o caminho percorrido entre os componentes de um computador para que
uma soma de dois operandos tenha seu resultado apresentando em um monitor de
vídeo.
......@@ -16,8 +16,7 @@ include::capitulos/prefacio.asc[]
include::capitulos/historia-do-computador.asc[]
include::capitulos/representacao-da-informacao.asc[]
include::capitulos/sistema-de-numeracao.asc[]
include::capitulos/organizacao-computador.asc[]
// Sempre manter uma linha em branco no final
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment