O que é um computador Organização de um computador...
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