O que é um computador Organização de um computador...

40
Organização de um computador O que é um computador Organização de um computador Arquitectura de von Neumann

Transcript of O que é um computador Organização de um computador...

Organização de um computador

O que é um computadorOrganização de um computadorArquitectura de von Neumann

Arquitectura de Computadores (2008/2009): Organização de um computador 34

Execução de um programa

�Como um computador executa um programa?�O que é um computador?� E um programa?

computador

programasaída de dados

outputentrada de dados

input

bits bits

Arquitectura de Computadores (2008/2009): Organização de um computador 35

Alan Turing

�Matemático Inglês, considerado por alguns o pai da Ciência da Computação�Contribuiu nos domínios da lógica,

criptografia, inteligência artificial, formalização da algoritmia e da computação

�Máquina de Turing�Define formalmente a “máquina

universal”

�Trabalhou no projecto Colossus

1912 - 1954

Arquitectura de Computadores (2008/2009): Organização de um computador 36

Computador

�Equipamento com uma ou mais unidades (de processamento e periféricas) que é capaz de computar (incluindo operações aritméticas e lógicas) controlado por programas internos, sem intervenção humana.

� São Turing-complete, ou seja, máquinas de computação universais

Arquitectura de Computadores (2008/2009): Organização de um computador 37

Programas

�Conjunto de instruções escritas numa linguagem que alguma "máquina" é capaz de reconhecer e executar

� Instruções:�Mais próximas do domínio de aplicação

�mais complexas e específicas

�Mais próximas da arquitectura do computador�mais simples e genéricas

�Múltiplos níveis de linguagens�Noção de interface�Noção de transparência (ou opacidade)

Arquitectura de Computadores (2008/2009): Organização de um computador 38

Níveis nos sistemas informáticos

�Num sistema de computação:

Arquitectura de Computadores (2008/2009): Organização de um computador 39

Níveis nos sistemas informáticos

�Aplicações� Abstracções do domínio da aplicação ( … )

�Linguagens de programação� Abstracções das linguagens e suas bibliotecas (streams,

estruturas de dados, classes,…)

�Nível Assembly�Mnemónicas para diminuir o fosso entre as linguagens de

alto nível e as instruções máquina

�Sistemas de operação� Abstracções do sistema (processo, ficheiros, canais, … )

�Arquitectura do computador� Instruções da máquina, seus componentes e suas

interacções

�Circuitos digitais, electrónica, …

Arquitectura de Computadores (2008/2009): Organização de um computador 40

Níveis nos sistemas informáticos

�Quanto mais alto está um nível mais perto das abstracções do utilizador e mais longe da máquina está

�Cada nível faz uso das abstracções e funcionalidades oferecidas pelos níveis inferiores� Suporta as camadas superiores

Arquitectura de Computadores (2008/2009): Organização de um computador 41

Cada nível oferece

� Interface�Oferece um conjunto de "instruções"� Este define a "linguagem" e abstracções suportadas

�Opacidade� Esconde do nível superior a implementação das suas

instruções/abstracções�Oferece uma nova máquina (virtual)

Arquitectura de Computadores (2008/2009): Organização de um computador 42

Execução de programas por tradução

Programanível N

Programanível N-1

tradutor

Arquitectura de Computadores (2008/2009): Organização de um computador 43

�O hardware do computador é sempre o "interpretador" final

Programanível N

interpretadordas instruçõesde nível N-1

Execução de programas por interpretação

Arquitectura de Computadores (2008/2009): Organização de um computador 44

Exemplo de execução em Java

Ficheiro com o

código fonteCompilador

Ficheiro com o código

Máquina (bytecode)

InterpretadorJava Virtual Machine (JVM)

ExecuçãoChamar a JVM

Bibliotecascom o códigodas classes

Java

Programa (executável)

que implementa a JVM

Arquitectura de Computadores (2008/2009): Organização de um computador 45

Exemplo de execução em C

Ficheiro com o

código fonte

Ficheiro com ocódigo

executável

Bibliotecascom o códigodas funções da linguagem

Compilador

Ficheiro com ocódigo

assembly

Ficheiro com ocódigo

máquinaAssembler

Ligador

CompiladorCarregador do

sistema operativo

ExecuçãoProgramacarregado

para memória

Arquitectura de Computadores (2008/2009): Organização de um computador 46

computador

processador, memória, periféricos, etc.

Organização de um computador

�O computador executa um programa�Quais os seus componentes? �Como estes se organizam e interactuam?

programa

saída de dadosoutput

entrada de dadosinput

bits bits

Arquitectura de Computadores (2008/2009): Organização de um computador 47

Unidade central

Primórdios dos computadores

�O computador era programado por:� "reconfiguração" da máquina

�ligando interruptores e fios que ligam os componentes para efectuar as operações pretendidas

� programa lido do “exterior”, como no exemplo abaixo

Circuitosaritméticose lógicossaída

entrada

acumulador

circuito controlo

programa

outros regs.

Consolae/ou

Periféricos

Arquitectura de Computadores (2008/2009): Organização de um computador 48

John von Neumann

�Matemático Húngaro (naturalizado Americano), considerado por alguns o pai da arquitectura dos computadores binários modernos� Contribuiu nos domínios da física

quântica, economia, estatística, computação

� Autómato celular�Máquina de von Neumann� EDVAC (Electronic Discrete Variable

Automatic Computer)

1903 - 1957

Arquitectura de Computadores (2008/2009): Organização de um computador 49

Computadores com memória interna

�Von Neumann (e outros) propõe que o programa seja codificado numa memória interna tal como os dados� Tecnologia diferente da usada na unidade central

tornam possível dispor de “muitos registos” (a memória)

� A unidade central necessita de um novo componente responsável por aceder e interpretar esses programas

Arquitectura de Computadores (2008/2009): Organização de um computador 50

Unidade central

circuitodescodificadore controlo

Circuitosaritméticose lógicossaída

entrada

outros regs.

Consolae/ou

Periféricos

acumulador

Memória

programainstrução

prog. counter

Memória interna

�Cada célula de memória é numerada: endereço�É necessário ir buscar cada instrução à memória

para a executar� Program Counter indica o endereço da próxima

instrução

�A memória pode conter também os dados

Arquitectura de Computadores (2008/2009): Organização de um computador 51

Unidade Processadora Central (CPU)

Arquitectura de Von Neumann (década 1940)

periférico de saída

periférico de entrada

Memória

acumulador

unidade lógica e aritmética

Versão original

unidade de controlo

Ciclo de funcionamento:fetch (obter instrução da memória)decode (descodifica)execute (executa)

instructionregister

Arquitectura de Computadores (2008/2009): Organização de um computador 52

Processador - CPU

�Controlo global das operações do computador e responsável pela interpretação das instruções

�Contém:�Unidade de controlo: obtém, descodifica e interpreta

as instruções (uma de cada vez)�Unidade aritmética e lógica: ALU – Arithmetic andLogic Unit

� Conjunto de registadores (ou registos): células de memória locais ao CPU, para dados a usar pelas instruções e para valores intermédios

Arquitectura de Computadores (2008/2009): Organização de um computador 53

Memória central

�Guarda instruções e dados, sob a mesma representação simbólica, em células que contêm agrupamentos de bits:� 1 bit, byte (8 bits), ou palavra (normalmente da

dimensão, ou (sub)múltiplo, do bus de dados)

�É acedida como um vector:�Mem[0]… Mem[n-1] (capacidade = n bytes)�O endereço da célula corresponde ao índice i em Mem[i]�O endereço é representado em binário, como um

número inteiro sem sinal�O valor de Mem[i] é o do conteúdo da célula �O acesso é directo: dá-se i para aceder a Mem[i]

(RAM: Random Access Memory)

Arquitectura de Computadores (2008/2009): Organização de um computador 54

Unidades periféricas

�Comunicação com o exterior:� Portas de comunicação série, paralela, USB, firewire,

RJ45, etc.�para teclado, ecrã, rato�para ligação a rede de computadores�etc.

� Armazenamento de informação:�discos (suporte de memória secundária)�outros dispositivos externos de armazenamento

�CDs, DVDs, flash drives (pens), etc.

Arquitectura de Computadores (2008/2009): Organização de um computador 55

Ligações entre componentes

�Como os componentes comunicam?� Componentes internos do CPU� Componentes externos e CPU

�Tantas ligações quantos os bits a transportar de cada vez

�Cada componente ligado a todos os outros?� Complexo e dispendioso

�Os componentes partilham um meio único: o BUS (ou Barramento)� Seguem um protocolo para partilhar o BUS

Arquitectura de Computadores (2008/2009): Organização de um computador 56

Arquitectura de Von Neumann (2)

Unidade Aritmética e

Lógica (ALU)

periférico de entrada/saída

periférico de entrada/saída

Memória

Unidade de Controlo (CU)

Actual (com BUS de sistema)

registos

Bus Interface

CPU

Bus internoBus de sistema

Bus Interface

Bus Interface Bus Interface

Arquitectura de Computadores (2008/2009): Organização de um computador 57

Bus de sistema

�Conjunto de linhas paralelas, cada uma codificando um bit

�Bus de endereços: � Conjunto de linhas que codificam o interlocutor� Serve para identificar a célula de memória ou a unidade

periférica

�Bus de dados: � Codificam os dados a transferir

�Bus de controlo: � Para coordenar as transferências e as interacções entre

unidades, sinais de controlo ou enviando comandos (por exemplo: ler/escrever)

Arquitectura de Computadores (2008/2009): Organização de um computador 58

Bus de sistema

periférico de entrada/saída

Memória

CPU

Bus Interface

Bus de sistema

Bus Interface

Bus Interface

Data BUSAddress BUS

Control BUS

Arquitectura de Computadores (2008/2009): Organização de um computador 59

Hierarquia de buses

�O bus pode estar organizado de uma forma hierárquica:� Bus processador-memória: bus normalmente

dependente dos componentes, pequeno e com taxas de transmissão altas.

� Bus de I/O: bus independente dos componentes, maior e mais lento:�Partilhados por vários dispositivos de diferentes tipos e

com diferentes larguras de banda.�Têm de ser compatíveis com diferentes arquitecturas�Podem ser externos, por exemplo um bus SCSI externo

Arquitectura de Computadores (2008/2009): Organização de um computador 60

Hierarquia de buses

Memoria

CentralI/O

bridgeBus interface

ALU

Registos

CPU

Bus de sistema Bus de memória

Controlador

de disco

Placa

gráfica

Controlador

USB

Disco

rígido

Bus de

I/OSlots de expansão

PC

Memória

CentralI/O

bridge

Controlador

de disco

Rato Teclado Monitor

Arquitectura de Computadores (2008/2009): Organização de um computador 61

Arquitectura do computador

�Nível da “macro-arquitectura” (ISA – Instruction SetArchitecture):� Componentes: Processador, Memória, Unidades de

Entrada/Saída� Linguagem máquina: representação binária de

instruções e de dados (especificada sob a forma de mnemónicas, por conveniência: “assembly”)

�Nível da “micro-arquitectura”:� Componentes: portas lógicas, flip-flops, alguns registos,

buses, multiplexers, demultiplexers, codificadores, descodificadores, contadores, unidades aritméticas e lógicas, memória

� Realiza os componentes e as instruções da “macro-arquitectura”

Arquitectura de Computadores (2008/2009): Organização de um computador 62

Micro-acções

�O CPU tem mais do que é visível ao nível do código da máquina (InstructionSet Architecture -ISA)

�Mais registos e Micro Acções internas� Exemplo:

unidade aritmética e lógica (ALU)

BA

C

registos gerais

Bus interno

Bus de sistema

MAR

MDRdados

endereço

controlo

IP

IR

fetch: IR = mem[IP]

MAR ← IP

controlo ← lêr memória

IR ← MDR

IP

Ler mem

IR

Arquitectura de Computadores (2008/2009): Organização de um computador 63

computador

processador, memória, periféricos, etc.

Organização de um computador

�O computador executa um programa�Como é que estes são executados?

programa

saída de dadosoutput

entrada de dadosinput

bits bits

Arquitectura de Computadores (2008/2009): Organização de um computador 64

�O processador lê e interpreta instruções armazenadas na memória

�Para executar o programa hello é preciso carregá-lo para memória� Interagindo com uma interface do Sistema Operativo

�De texto (linha de comando):prompt> ./hello

hello, world

prompt>

�Gráfica (interface gráfica):

hello

Executar um programa

Arquitectura de Computadores (2008/2009): Organização de um computador 65

O utilizador escreve o nome do programa

Memoria

CentralI/O

bridgeBus interface

ALU

Registos

CPU

Bus de sistema Bus de memória

Controlador

de disco

Placa

gráfica

Controlador

USB

Disco

rígido

Bus de

I/OSlots de expansão

PC

Memória

CentralI/O

bridge

Controlador

de disco

"hello”

Rato Teclado Monitor

Arquitectura de Computadores (2008/2009): Organização de um computador 66

O computador carrega o programa

Memoria

CentralI/O

bridgeBus interface

ALU

Registos

CPU

Bus de sistema Bus de memória

Controlador

de disco

Placa

gráfica

Controlador

USB

Rato Teclado Monitor Disco

rígido

Bus de

I/OSlots de expansão

PC

Memória

CentralI/O

bridge

Controlador

de disco

Código do

programa hello

que contém a

string

"hello, world\n”

Arquitectura de Computadores (2008/2009): Organização de um computador 67

pla

tafo

rma

Um programa em execução

programaem memória

(bibliotecas)

Hardware (Processador, Memória, Discos, ...)

Sistema de Operação(sempre carregado em

Memória)

Instruções máquina executadas directamentepelo CPU(interpretadaspela máquina)

"Instruções" interpretadaspelo Sistema de Operação(por exemplo, escrita no ecrã,leitura do disco ...)

Arquitectura de Computadores (2008/2009): Organização de um computador 68

Escrita do resultado

Memoria

CentralI/O

bridgeBus interface

ALU

Registos

CPU

Bus de sistema Bus de memória

Controlador

de disco

Placa

gráfica

Controlador

USB

Disco

rígido

Bus de

I/OSlots de expansão

PC

Memória

CentralI/O

bridge

Controlador

de disco

Código do

programa hello

que contém a

string

"hello, world\n”

"hello, world\n”

Rato Teclado Monitor

Arquitectura de Computadores (2008/2009): Organização de um computador 69

Execução dentro do CPU

�A Unidade de controlo do CPU:1. Obtém a próxima instrução de memória (usa um

índice para o programa – PC ou IP) � fetch

2. Incrementa o PC3. Descodifica a instrução � decode

4. Emite os sinais de controlo, na micro-arquitectura, correspondentes ao encadeamento de acções necessárias para executar a instrução corrente e as transferências de informação necessárias �execute

Arquitectura de Computadores (2008/2009): Organização de um computador 70

Execução (2)

�A execução de uma instrução pode envolver:�Operações aritméticas e lógicas (pela ALU)

�A ALU opera sobre números binários

� Transferências CPU ↔ Memória

� Transferências CPU ↔ Periféricos

� Controlo da sequência de execução de instruções (alterar o endereço em PC)

Arquitectura de Computadores (2008/2009): Organização de um computador 71

Exemplos de operações

ADD NOTAND

carry

Arquitectura de Computadores (2008/2009): Organização de um computador 72

Exemplos de instruções

NOTAND

carry

registo acumulador

00 noop01 AND10 ADD11 NOT

ADDcontrolo

Descodificador

código máquina(em binário)

mnemónicasassembly