AULA 2 - Microprocessadores - Graduação
Introdução à arquitetura e organização de computadores
Objetivos
Compreender os conceitos básicos relacionados aos computadores, seus componentes e à forma como os programas são executados.
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. Uma das formas de classificá-los é por meio das seguintes categorias:
- Notebooks: computadores portáteis. Geralmente de pequeno tamanho e baixo consumo, para que possam ser mantidos mais tempo por bateria recarregável.
- Desktop: Computadores de baixo-custo e com desempenho razoável para um usuário "comum".
- 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.
- Supercomputador: Computadores com capacidade de processamento superior. São utilizados para aplicações militares, de segurança e/ou científicas.
- Sistemas Embarcados: 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.
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).
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 quatro operações (STALLINGS, 2010):
- Processamento de dados.
- Armazenamento de dados.
- 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).
Camadas de Abstração
Para compreender o funcionamento do computador, precisamos entender várias camadas de abstração diferente.
A camada mais baixa de todas é aquela formada por transistores, tensão e corrente elétrica.
Uma camada acima, estão as 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.
Subindo mais um nível de abstração, começamos a lidar com estruturas mais complexas como registradores e unidades lógicas aritméticas - todas compostas por muitos flip-flops, somadores e multiplexadores. Nas disciplinas anteriores, vimos como todas essas estruturas realmente geram as instruções de cada máquina e como cada instrução funciona. Um exemplo é a Unidade Lógica Aritmética - estrutura usada por computadores para realizar cálculos.
Um nível além, estuda-se como combinar 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:
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.
E finalmente, na camada de abstração mais superior está o funcionamento de um programa de computador, do ponto de vista do usuário. Como, por exemplo, utilizar um aplicativo já criado.
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.
O computador é o responsável por processar os dados e transformá-los em informação, através da execução de instruções em linguagem de máquina (baixo nível) que o processador é capaz de executar.
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 (software).
As principais etapas de um algoritmo para a obtenção de uma solução computacional são:
- Elaboração do algoritmo computacional referente ao problema.
- Codificação do algoritmo numa linguagem de alto nível (programa fonte).
- Tradução ou compilação do programa fonte para o código correspondente
em linguagem de máquina (programa objeto).
- 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 do processador
podem executar.
software
São os programas com sequência
de instruções que serão
interpretadas e executadas pelo
processador.
Aula 1 - Introdução à arquitetura de computadores 17 e-Tec Brasil
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 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.
1.2 O modelo de Von Neumann
Os computadores digitais convencionais baseiam-se no modelo idealizado
por Von Neumann (Figura 1.2), 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.
Figura 1.2: Modelo Von Neumann de um computador digital
Fonte: CTISM, adaptado de Murdocca; Heuring, 2000
e-Tec Brasil 18 Arquitetura de Computadores
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.
1.3 O modelo de barramento do sistema
Atualmente,o modelo de Von Neumann foi aperfeiçoado para outro tipo de
barramento de sistema, formado por (MURDOCCA; HEURING, 2000):
a) CPU (Central Processing Unit) – é a Unidade Central de Processamento
ou processador, composta pela unidade de controle, unidade lógica e
aritmética e registradores.
b) Memória – armazena os dados e as instruções.
c) 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:
a) Barramento de dados – transporta a informação, movendo dados entre
os componentes do sistema.
Aula 1 - Introdução à arquitetura de computadores 19 e-Tec Brasil
b) Barramento de endereços – identifica para onde a informação está
sendo enviada.
c) Barramento de controle – descreve a forma como a informação está
sendo transmitida.
Os barramentos são um conjunto de fios agrupados por função. Um barramento
de dados de 64 bits tem 64 fios individuais, onde cada fio transporta
um bit da informação. Já 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.
A Figura 1.3 apresenta o modelo de barramento do sistema de um computador.
1.4 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 (0 s e 1 s).
bit
É a menor unidade num sistema
digital e pode assumir o valor
0 ou 1.
e-Tec Brasil 20 Arquitetura de Computadores
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.
1.5 Níveis das máquinas
Um sistema computacional é um sistema complexo que pode ser visto sob
diferentes perspectivas ou níveis, desde o nível mais alto (do usuário) até o
nível mais baixo (dos transistores).
Um computador é projetado como uma série de níveis, e cada um deles é
construído sobre seus antecessores. Nesse modelo, cada nível representa
uma abstração do subsequente. Ao utilizar um determinado nível não há a
necessidade de saber como o nível abaixo funciona, apenas é necessário saber
o que se pode fazer com as funcionalidades que o nível oferece.
Os computadores modernos são organizados normalmente em vários níveis
(Figura 1.4). A seguir é apresentada uma organização em sete níveis (MURDOCCA;
HEURING, 2000):
Aula 1 - Introdução à arquitetura de computadores 21 e-Tec Brasil
Figura 1.4: Níveis de máquina num computador moderno
Fonte: CTISM, adaptado de Murdocca; Heuring, 2000
a) Nível do usuário ou programa aplicativo – nele o usuário interage
com o computador usando programas como editores de texto, planilhas,
jogos ou programas que acessam a internet.
b) Nível da linguagem de alto nível – nesse nível o programador desenvolve
os programas, aplicativos e sistemas através de uma linguagem de
programação de alto nível como C, Java ou Pascal (Delphi).
c) Nível da linguagem de montagem (de máquina) – esse é o nível onde
as instruções são interpretadas e executadas pelo processador. Os programas
desenvolvidos em linguagens de alto nível são traduzidos para
uma linguagem de montagem ou Assembler, que apresenta um relacionamento
direto com as instruções que o processador consegue executar.
d) Nível de controle – aqui a unidade de controle, que está dentro do processador,
efetua as devidas transferências de dados entre os registradores,
memória e dispositivos de entrada e saída. Essa transferência é feita
através de sinais de controle por um circuito lógico.
e-Tec Brasil 22 Arquitetura de Computadores
e) Nível de unidades funcionais – nesse nível os registradores internos
da CPU, a unidade lógica e aritmética e, a memória do computador é
organizada sob a forma de unidades funcionais, de acordo com a função
que desempenham para realizar as transferências de dados entre estas
unidades funcionais.
f) Portas lógicas – as portas lógicas implementam o nível mais baixo de
funcionamento de um computador. As unidades funcionais do computador
são desenvolvidas usando portas lógicas.
g) Transistores e fios – este é o nível mais baixo do computador formado
por componentes eletrônicos e fios. As portas lógicas são implementadas
usando transistores e fios de conexão.
1.6 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
Figura 1.5 apresenta um computador de mesa típico.
Figura 1.5: Computador típico
Fonte: CTISM
Portas lógicas
São componentes eletrônicos
básicos usados em circuitos
eletrônicos que implementam as
operações lógicas básicas para a
eletrônica digital.
Aula 1 - Introdução à arquitetura de computadores 23 e-Tec Brasil
1.7 Tipos de computadores
1.8 Unidades métricas nos sistemas
computacionais
Os computadores digitais processam a informação através de bits. Um bit é a menor unidade num sistema digital e pode assumir o valor 0 ou 1. O agrupamento de 8 bits forma um byte e pode armazenar um valor numérico de 0 a 255 ou representar uma letra. Para medir o tamanho das memórias, discos, arquivos e banco de dados a unidade básica de medida é o byte e os seus múltiplos são 210. O Quadro 1.1 apresenta as unidades de medidas de armazenamento e a quantidade de bytes. Quadro 1.1: Unidades de medida de armazenamento (em bytes) Expoente Unidade Abreviatura Valor explícito 20 byte 1 B 1 byte ou 8 bits 210 kilobyte 1 KB 1.024 bytes 220 megabyte 1 MB 1.048.576 bytes ou 1024 KB 230 gigabyte 1 GB 1.073.741.824 bytes ou 1024 MB 240 terabyte 1 TB 1.099.511.627.776 bytes ou 1024 GB 250 petabyte 1 PB 1.125.899.906.842.624 bytes ou 1024 TB 260 exabyte 1 EB 1.152.921.504.606.846.976 bytes ou 1024 PB 270 zetabyte 1 ZB 1.180.591.620.717.411.303.424 bytes ou 1024 EB 280 yotabyte 1 YB 1.208.925.819.614.629.174.706.176 bytes ou 1024 ZB Fonte: Autores O maior supercomputador, em junho de 2012, é o Sequoia, desenvolvido pela IBM com 1.572.864 processadores, em 98.304 CPUs Power BQC 16 cores a 1.60 GHz, com 1.572.864 GB de memória, com sistema operacional Linux. Para saber mais sobre a lista com os 500 maiores supercomputadores, acesse: http://www.top500.org Aula 1 - Introdução à arquitetura de computadores 25 e-Tec Brasil Para medir a taxa de transferência de informações, as unidades de medida usadas são baseadas na quantidade de bits por segundo e seus múltiplos são 103 . O Quadro 1.2 apresenta as unidades de medidas de transferência de dados e a quantidade de bits por segundo. Quadro 1.2: Unidades de medida de transferência (em bits por segundo) Expoente Unidade Abreviatura Valor explícito 100 bit 1 bps 1 bit por segundo 103 kilobit 1 Kbps 1 000 bits por segundo 106 megabit 1 Mbps 1 000 000 bits por segundo 109 gigabit 1 Gbps 1 000 000 000 bits por segundo 1012 terabit 1 Tbps 1 000 000 000 000 bits por segundo 1015 petabit 1 Pbps 1 000 000 000 000 000 bits por segundo 1018 exabit 1 Ebps 1 000 000 000 000 000 000 bits por segundo 1021 zetabit 1 Zbps 1 000 000 000 000 000 000 000 bits por segundo 1024 yotabit 1 Ybps 1 000 000 000 000 000 000 000 000 bits por segundo Fonte: Autores Alguns dispositivos apresentam a sua taxa de transferência em bytes por segundo. Observe que deve haver uma conversão dividindo por 8 a quantidade em bits por segundo. O Quadro 1.3 a seguir apresenta a equivalência entre bits por segundo (bps ou bits/s) e bytes por segundo (Bps ou B/s). Quadro 1.3: Equivalência de bits por segundo para bytes por segundo Expoente Unidade Abreviatura Valor nominal Equivalência bits/s 20 byte por seg. 1 B/s 1 byte/s 8 bp/s 210 kilobyte por seg 1 KB/s 1024 bytes/s 8 Kbp/s 220 megabyte por seg 1 MB/s 1.048.576 bytes/s 8 Mbp/s 230 gigabyte por seg 1 GB/s 1.073.741.824 bytes/s 8 Gbp/s Fonte: Autores Para medir o desempenho dos computadores e o tempo de execução das instruções, as unidades de medida usadas são baseadas na frequência dos computadores em hertz, seus múltiplos são 103 . O tempo é medido em segundos e seus múltiplos são 10-3. O Quadro 1.4 apresenta as unidades de medidas de frequência e o Quadro 1.5 apresenta as unidades de tempo de execução. e-Tec Brasil 26 Arquitetura de Computadores Quadro 1.4: Unidades de medida de frequência (em hertz) Expoente Unidade Abreviatura Valor explícito 100 hertz 1 Hz 1 Hz 103 kilohertz 1 kHz 1 000 Hz 106 megahertz 1 MHz 1 000 000 Hz 109 gigahertz 1 GHz 1 000 000 000 Hz 1012 terahertz 1 THz 1 000 000 000 000 Hz 1015 petahertz 1 PHz 1 000 000 000 000 000 Hz Fonte: Autores Quadro 1.5: Unidades de medida de tempo de execução (em segundos) Expoente Unidade Abreviatura Valor explícito 100 segundo 1 s 1 s 10-3 milissegundo 1 ms 0,001 s 10-6 microssegundo 1 µs 0,000 001 s 10-9 nanossegundo 1 ns 0,000 000 001 s 10-12 picossegundo 1 ps 0,000 000 000 000 001 s 10-15 femtossegundo 1 fs 0,000 000 000 000 000 001 s Fonte: Autores Para medir o tamanho dos transistores que formam um processador ou um chip são usadas as unidades micrômetro ou micron (µm) e nanômetro (nm). Para se ter a ideia do tamanho, nos processadores mais modernos, um transistor mede 22 nm, enquanto que um fio de cabelo tem espessura de 70 a 80 µm, ou seja, um transistor é aproximadamente 3.500 vezes menor que a espessura de um fio de cabelo. O Quadro 1.6 apresenta as unidades de medida de tamanho para os transistores: Quadro 1.6: Unidades de medida de tamanho para transistores Expoente Unidade Abreviatura Valor explícito 100 metro 1 m 1 m ou 1 000 mm 10-3 milímetro 1 mm 0,001 m ou 1 mm 10-6 micrometro 1 µm 0,001 mm 10-9 nanômetro 1 nm 0,000 001 mm
| << Página da disciplina | < Introdução | Aula 2 - Arquitetura básica | O Processador > |
|---|












