Arquitetura de
Computadores
Profª. Larissa Natália V. Carneiro
https://sites.google.com/site/proflarissacarneiro
Objetivo Principal
Entender os elementos e conceitos da Arquitetura de
computadores
Conhecer os elementos básicos da arquitetura de
processador e seu funcionamento,
Compreender a utilização de instruções;
Caracterizar a organização de sistemas de computação e
detalhar subsistemas memória, processador, dispositivos de
entrada e saída de dados e barramentos.
Objetivo Principal
Compreender os modos de endereçamento utilizados por um
sistema de computação.
Conhecer os princípios de organização de computadores.
Caracterizar as interfaces: paralela e serial.
Habilidades a alcançar
Compreender o funcionamento de um
sistema de computação e a interação dos
seus subsistemas
Agenda
Organização estruturada de computadores
Introdução
-
Linguagens, níveis e Maquinas Contemporâneas
-Métodos de Leitura
Maquinas Multiníveis Contemporâneas
Arquitetura de Von Neumann
Introdução
Visão Geral
O computador :
É uma máquina que serve para solucionar problemas.
Executa programas - Conjunto de instruções que
Um sistema de
processamento
Dois componentes principais:
• Hardware;
Definição
Hardware:
Rígido – difícil manuseio.
Software:
Introdução
Visão Geral
Arquitetura de Computadores
Trata dos aspectos que são transparentes ao programador
(alto nível). Refere-se às unidades operacionais e suas
interconexões que implementam sua arquitetura:
Sinais de controle, interfaces entre o computador e os
periféricos, tecnologia de memória, tamanho da
memória física, freqüência de clock, etc.
Ex.: Existe uma estrutura de multiplicação no hardware
Introdução
Visão Geral
Arquitetura de Computadores
Trata dos aspectos e atributos do sistema que são
visíveis a:
Linguagens de alto nível, conjunto de instruções,
número de bits usados para representação de dados,
mecanismos de E/S e etc.
Principais elementos de um
sistema de computação
A unidade central de processamento (central
processing unit – CPU)
A memória principal
A subsistema de E/S (entrada e saída)
Os mecanismos de interconexão entre esses
O processador
O módulo UCP (ou processador) é o mais importante,
pois controla todo o funcionamento do computador. É
subdivido em dois módulos: ULA e UC
O módulo ULA é responsável pelas operações aritméticas
e lógicas
O módulo UC é responsável pelo controle da realização
das operações do módulo ULA e da operação global do
computador, ou seja, ele controla a execução das
instruções da máquina. O controlador está localizado
dentro deste módulo.
Os circuitos de um computador (Hardware)
Reconhecem e executam um conjunto limitado e
simples de instruções (linguagem de máquina-
binária)
Para que o programa execute, deve ser
convertido em instruções simples.
Ex.: soma, comparação, transferência de dados
de uma parte da memória para outra parte e
etc.
Grande Lacuna: ____?____
(Como é a comunicação Alto nível -> Baixo nível )
Conveniência para as pessoas
Conveniência para os computadores
O que as pessoas precisam fazer é complexo e o conjunto de
instruções do computador é simples
Pessoas querem X, mas computadores só podem Y
(Resultado - Problema)
Exemplo:
O usuário quer calcular a correção da trajetória de um
foguete saindo da terra até a lua.
Como o usuário pode fazer isso em linguagem de
máquina? Trabalho difícil e tedioso para os humanos
Solução:
Criar uma hierarquia de abstrações de níveis mais
altos baseadas nos níveis mais baixos.
Criar uma organização estruturada de computadores
para facilitar a comunicação homem-máquina
Organização Estruturada de Computadores
Uma maneira de estruturar os computadores
como uma série de abstrações.
Sistemas de Computação sendo projetados de
modo estruturado e sistemático.
Linguagens, níveis e máquinas contemporâneas
O Problema pode ser abordado da seguinte forma:
Projetar um novo conj. de instruções que seja
mais conveniente para as pessoas, do que as
instruções da máquina L1.
As instruções de máquina formam a linguagem
L0.
L1: linguagem natural, do usuário (alto nível e complexa)
L0: linguagem da máquina (baixo nível e simples)
Programas escritos em L1 de alguma forma tem que se
transformar em L0.
(Máquinas só entendem linguagens de máquina)
Ou seja,
Como compatibilizar L1 com L0? Temos 2 soluções:
Usar um tradutor
Usar um interpretador
I.Tradução:
Cada instrução de L1 é substituída por um conjunto
de instruções equivalentes de L0
Processador executa programa em L0.
Todo programa em L0 é carregado em memória e é
executado
Programa pode ser traduzido uma única vez e
executado várias vezes
II. Interpretação:
Cada instrução de L1 é substituída por um conjunto de
instruções equivalentes de L0
Processador executa instrução de L1 (transformada para
L0) antes de executar próxima instrução.
Cada instrução de L1, transformada para L0, é carregada
na memória e executada
Não é criado um programa em L0
Programa deve ser novamente interpretado para ser
executado
Analogia:
Tradução (Traduzir um texto do inglês para o português e depois interpreta)
Interpretação (Ler um texto e o interpreta direto)
Em ambos os métodos o computador faz instruções em L1
que realizam seqüências equivalentes em L0.
A diferença é que na tradução, todo programa L1 é antes
convertido em L0.(L1 é descartado e L0 é carregado na
memória)
Na interpretação, após a decodificação de L1, ela é
Métodos de Leitura
Pode ser utilizada uma metodologia híbrida:
tradutor + interpretador.
Interesse
Nível mais Alto:
A maioria dos Programadores
Nível mais Baixo:
Máquinas de multiníveis
Em vez de pensar em tradução e
interpretação, pode-se imaginar a existência
de uma máquina hipotética(máquina real)
com linguagem L1.
Isso seria possível???
Máquinas de multiníveis
Uma máquina com linguagem de máquina C,
C++ ou Java seria realmente complexa, mas
fácil de construir com a tecnologia de hoje.
Porém é provável que tenha uma boa razão
para que isso não seja feito.
Máquinas de multiníveis
O seu custo não seria eficiente em
comparação com outras técnicas.
Não basta apenas ser viável, um projeto
Máquinas de multiníveis
Enquanto isso não é possível é preciso saber
da existem de vários níveis de tradução.
A maioria dos programadores estão
interessados apenas no nível superior.
Quem se interessa em entender o
funcionamento do computador precisa
estudar todos os níveis.
Máquinas Multiníveis
contemporâneas
A maioria dos computadores modernos tem dois ou mais níveis.
Computador de 6 níveis. Abaixo de cada nível está indicado o método de suporte.
A maioria dos computadores modernos consiste em
dois ou mais níveis.
Existem máquinas de até 6 níveis.
Máquinas Multiníveis
contemporâneas
Nível 0: Nível da Lógica Digital (hardware)
Nível mais baixo da estrutura.
Objetos de interesse são conhecidos como portas
lógicas, transistores e fios.
Cada porta lógica tem 1 ou mais entradas digitais
(aceitam 0 ou 1) e calculam funções lógicas simples
sobre essas entradas. Exemplo: AND, OR, NOT...
Portas lógicas são combinadas para formar o
Processador - principal dispositivo do computador
Máquinas Multiníveis
contemporâneas
Nível 1: Nível da Microarquitetura
Enxergamos uma memória local (8 a 32 registradores) e a
ULA (Unidade Aritmética Lógica) que realiza operações
aritméticas muito simples
Os registradores são conectados a ULA formando o
caminho dos dados
Operações são controladas por um micro programa ou
diretamente por hardware
Micro programa é um interpretador para as instruções do
nível 2.
Ex.: A ALU seleciona dois registros, faz uma operação (+,-...) e
guarda o resultado em um deles.
Máquinas Multiníveis
contemporâneas
Nível 2: Nível da Arquitetura do Conjunto de Instruções (nível ISA - Instruction Set Architeture)
Definida pelo fabricante e dependente da arquitetura da máquina Fabricantes disponibilizam "Manual de Referência da Linguagem
de Máquina" ou "Princípios de operação do Computador Modelo XYZ4W), ou algo similar.
Manuais descrevem como as instruções são executadas
interpretativamente pelo micro programa ou como elas são executadas diretamente pelo hardware.
Essas informações são necessárias para os desenvolvedores de
Máquinas Multiníveis
contemporâneas
Nível 3: Nível do Sistema Operacional
Instruções da linguagem deste nível também podem conter
instruções do nível ISA.
Suporta capacidade de rodar 2 ou mais programas
simultaneamente
Suporta sistemas de comandos(DOS) ou de janelas (Windows) Programadores deste nível, e também dos níveis mais baixos, são
conhecidos como programadores de sistema.
Os programadores dos níveis mais altos são chamados
programadores de aplicação.
Máquinas Multiníveis
contemporâneas
Nível 4: Nível da linguagem do montador ou de
montagem (Assembly language)
Linguagem de montagem: forma simbólica de representação das
linguagens do nível mais baixo.
Cada instrução de máquina é apelidada por um minemônico
(add, load, sub, mov ...)
Programas nessa linguagem são primeiro traduzidos para as
linguagens dos níveis 1, 2 e 3 e depois interpretados pela máquina
Programa que realiza essa tradução é chamado de montador
Máquinas Multiníveis
contemporâneas
Nível 5: Nível das linguagens orientadas
para solução dos problemas
Conhecidas como linguagens de alto nível.
Exemplos Basic, C, Pascal, Java, LISP, ....
Programas são geralmente traduzidos para os
níveis 3 e 4 por compiladores
Alguns são interpretados: Exemplo: programas
em Java, MatLab, Linguagens de Script ...
Máquinas Multiníveis
contemporâneas
Nível 6: Nível do usuário
O usuário interage com o computador executando
programas (editores de texto, planilhas e jogos).
O usuário vê o computador através de programas
que rodam nele.
O usuário não vê a sua estrutura interna.
Máquinas Multiníveis
contemporâneas
Há ainda a existência de outros níveis abaixo do
nível 0, que não estão representados na figura.
Estes níveis situam-se no campo da engenharia elétrica
e da física do estado sólido.
Nestes níveis os projetistas enxergam portas lógicas,
transistores individuais e o cristal semicondutor, que é o
substrato dos circuitos integrados.
Os níveis abaixo do nível 0 fogem ao escopo desta
disciplina.
Máquinas Multiníveis
contemporâneas
Observações do nível 3:
O nível 3 é híbrido por conter também instruções em sua
linguagem no nível ISA.
Entretanto há uma organização diferente de memória e um
conjunto de novas instruções.
Há mais variações entre projetos do nível 3 do que do nível 1 e 2.
Máquinas Multiníveis
contemporâneas
Observações gerais:
Os níveis 2 e 3 são sempre interpretados, porém, em geral, mas
nem sempre, os níveis 4 e 5 são traduzidos.
Os níveis 1, 2 e 3 consitem em linguagens numéricas e os níveis
4, 5 e superiores linguagens que contêm palavras e abreviações.
O nível 4 é uma forma simbólica para uma das linguagens
subjacentes, oferecendo um método de escrever programas para os níveis 1, 2 e 3 em uma forma que não seja tão desagradável.
Programas em linguagem de montagem (assembler) são primeiro
traduzidos para linguagem dos níveis 1, 2 e 3 e em seguida interpretados pela máquina real.
Máquinas Multiníveis
contemporâneas
Organização do software. Etapas da execução de um programa (adaptado de Patterson e
É fundamental lembrar:
Computadores são projetados com uma série de níveis
cada um construído sobre seus antecessores.
Conjunto de tipos de dados, operações e características
de cada nível é denominado arquitetura.
A arquitetura trata dos aspectos visíveis ao usuário
daquele nível.
Quantidade de memória disponível faz parte da
arquitetura.
Tipo de tecnologia usado para implementar a memória não
faz parte da arquitetura.
Na prática arquitetura e organização de computadores
Máquina de von Neumann
Memória
Unidade de Controle
Unidade Aritmética Lógica
Acumulador Input
Output • Uma única UCP responsável por todo controle do fluxo de dados
• Uma memória única
Arquitetura de Von Neumann
Consiste em 5 componentes:
Unidade de entrada;
Unidade de memória;
Unidade lógica aritmética;
Unidade de controle;
Arquitetura de Von Neumann
Unidade lógica aritmética + unidade de controle
=
Memória e interface E/S
A memória RAM é considerada um
dispositivo passivo, pois ela responde aos
sinais de controle da CPU.
As interfaces de E/S são consideradas
dispositivos ativos, pois elas podem gerar ou
receber sinais de controle da CPU.
A transferência das
informações
A memória principal transfere informação
para a CPU e para os periféricos (interfaces
E/S).
Dentro da CPU, o módulo ULA recebe dados
e o módulo UC recebe instruções.
Organização estruturada de
computadores
Cada computador tem um conjunto de
operações e convenções único para
determinar as posições dos dados com os
quais a operação será realizada.
Operação --- Operandos
Essa forma é denominada instrução.
Organização estruturada de
computadores
A operação especifica a função que será
desempenhada:
matemáticas (aritméticas, lógicas, de complemento,
de deslocamento...)
movimentação de dados (memória <--> registrador)
entrada-saída (leitura e escrita em dispositivos
externos - dispositivos de Entrada / Saída
Organização estruturada de
computadores
Os operandos fornecem a maneira de
calcular a posição atual dos dados. Ex: (+, -,
*, /, <<, >>, ~, =, !=, |, &, ^)
Um programa é constituído de uma
seqüência pré-determinada de instruções
que devem ser seguidas.
Ex. De conjunto de
instruções
Observações finais importantes :
Computadores são projetados como uma série de níveis, cada
um deles construídos em cima de seus precursores.
Cada nível representa uma abstração distinta, com diferentes
objetos e operações
A abstração permite ignorar, "abstrair", temporariamente
detalhes irrelevantes, de níveis mais baixos, reduzindo uma questão complexa a algo muito mais fácil de ser entendido.
O conjunto de tipos de dados, operações e características de
cada um dos níveis é chamado arquitetura do nível.
São parte da arquitetura, as características que um programador
do nível deve enxergar, por exemplo, a disponibilidade de memória