Você está na página 1de 73

Licenciatura em Telecomunicações e

Informática

Arquitetura e Tecnologia de Computadores


organização interna do computador

Paulo Cardoso
Grupo de Sistemas Embebidos
Departamento de Eletrónica Industrial
Escola de Engenharia
Universidade do Minho
Sumário

l Componentes de um computador
l O modelo de von Neumann
l O ciclo do processador
l Linguagens de alto nível
l Sistemas computacionais
l Sistemas computacionais baseados em
microcontroladores
Organização interna do computador
Componentes de um computador

l Componentes de um computador
l Na sua essência, um computador é um sistema
composto por três partes
l Um microprocessador
l Capaz de interpretar e executar instruções/programas
l Uma memória
l Para armazenar dados e programas
l Entrada/saída
l Um mecanismo para a transferência de dados de e para o
mundo exterior
l Modelo de von Neumann
l Mais detalhes adiante …
Organização interna do computador
Componentes de um computador

l O que diz o dicionário (generalista)


l Microprocessador
l Circuito integrado complexo que efetua as operações
básicas de um microcomputador
Fonte: dicionário da Porto Editora
l Microcomputador
l Computador de pequenas dimensões cujo órgão
central é um microprocessador
Fonte: dicionário da Porto Editora
l Computador
l Aparelho eletrónico que é capaz de receber, armazenar e
processar grande quantidade de informação em função de um
conjunto de instruções com que é programado
Fonte: dicionário da Porto Editora
Organização interna do computador
Componentes de um computador

l Palavras chave
l Microprocessador
l Circuito integrado complexo
l Microcomputador
l receber
l armazenar
l processar
l conjunto de instruções
l programado
Organização interna do computador
Componentes de um computador

l Componentes de um computador
l Microprocessador
l Unidade lógica/aritmética e unidade de controlo
l Entrada
l rato, teclado, ...
l Saída
l monitor, impressora, ...
l Memória
l Cache, RAM, disco, CD
l Onde são armazenadas as instruções e os dados
Organização interna do computador
Componentes de um computador

l Componentes de um computador

Fonte: David A. Patterson, John L. Hennessy, “Computer Organization and Design”


Organização interna do computador
Componentes de um computador

l Mas o que é um computador?


l Diferentes tipos
l embebidos, laptop, desktop, servidor
l Diferentes utilizações
l Processador de texto, ...
l Casas, carros, televisões, telefones, ...
l Diferentes fabricantes
l Intel, AMD, IBM, Atmel, MicroChip...
l Diferentes tecnologias de suporte e custos
Organização interna do computador
Componentes de um computador

l Nem sempre vemos os computadores


Organização interna do computador
O modelo de von Neumann

l O modelo de von Neumann


l Em 1945 publicou um relatório
l “First Draft of a Report on the EDVAC”
l O documento descreve a arquitetura de um computador com
os seguintes componentes
l Unidade de aritmética
l Unidade de controlo
l Memória
l Mecanismos de I/O

Fonte: https://en.wikipedia.org/wiki/
Von_Neumann_architecture
Organização interna do computador
O modelo de von Neumann

l Define o conceito de stored program


l Instruções (programas) e dados são
armazenados na memória sob a forma de
números
l Sendo assim fácil a sua alteração
l Levando ao conceito de stored program computer

l No ENIAC (computador anterior onde Von Newmann


colaborou)
l Toda a programação era ao nível da lógica digital
l A programação do computador envolvia mover fichas e fios
l Era necessária uma configuração de hardware diferente para
resolver cada tipo de problema
Organização interna do computador
O modelo de von Neumann

l É o paradigma sob o qual assenta a noção


de computador atual
l Atualmente os computadores stored programs
têm as seguintes características
l Três sistemas de hardware
l Uma unidade de processamento central
l Contendo o processamento e controlo
l Um sistema de memória principal
l Um sistema de I / O
l A capacidade de realizar o processamento sequencial
de instruções
l Um caminho único entre o CPU e a memória
l Bottleneck de von Neumann
Organização interna do computador
O modelo de von Neumann

l Os convencionais computadores stored


program
l Tiveram avanços incrementais ao longo do tempo
l Incluindo a adição de barramentos especializados,
unidades de virgula flutuante, memórias cache, . . .
l Alguns sistemas atuais possuem barramentos
separados para dados e instruções
l Designando-se arquiteturas Harvard
Organização interna do computador
O modelo de von Neumann

l Mais poder computacional exige outras


abordagens
l Instruction-level parallelism
l Paralelismo dentro do processador
(superscalar processor)
l Pipelining
l Duplicação de unidades funcionais do processador
l Hardware-multithreading
l Múltiplas threads partilham as unidades funcionais do
processador
Organização interna do computador
O modelo de von Neumann

l Mais poder computacional exige outras


abordagens
l Instruction-level parallelism
l Paralelismo dentro do processador
(superscalar processor)
l Pipelining
l Duplicação de unidades funcionais do processador
l Hardware-multithreading
l Múltiplas threads partilham as unidades funcionais do
processador
Organização interna do computador
O modelo de von Neumann

l Mais poder computacional exige outras


abordagens
l Computação paralela/distribuída/concorrente
l Aceleradores
l GPUs (Graphics Processing Units)
l Hardware especializado
l ...
Organização interna do computador
O modelo de von Neumann

l O modelo prevê a existência de um conjunto


de registos específicos contendo
nomeadamente
l PC: Endereço de memória da próxima instrução
l MAR: Endereço da instrução atual/dado a ser
carregada
l MDR: Dado recebido/a ser enviado para memória
l CIR: Instrução a ser executada
l ACC: Dado em processamento/resultado
Organização interna do computador
O modelo de von Neumann

l Atualmente os sistemas não contêm alguns


destes registos especiais
l Têm no entanto alguns registos genéricos que
são usados como memória para diminuir os
acessos à memória
Organização interna do computador
O modelo de von Neumann

l Representação

Datapath
Organização interna do computador
O modelo de von Neumann

l Execução das instruções feita em três passos


l Fetch
l Decode
l Execute

l O processador executa indefinidamente estes


três passos
l O ciclo do processador
Organização interna do computador
O ciclo do processador

l Fetch
l A unidade de controlo obtém a próxima instrução
l Usando o program counter para determinar a sua
localização na memória
Organização interna do computador
O ciclo do processador

l Decode
l A unidade de controlo descodifica a instrução e
l Gera os sinais que controlam o funcionamento da ALU
Organização interna do computador
O ciclo do processador

l Decode
l A unidade de controlo descodifica a instrução e
l Seleciona os registos/memória a entrar na ALU

Nem em todas as
arquiteturas é feito
este acesso
(RISC vs CISC)
Organização interna do computador
O ciclo do processador

l Execute
l A ALU executa a instrução e
l Coloca os resultados nos registos ou memória

Nem em todas as
arquiteturas é feito
este acesso
(RISC vs CISC)
Organização interna do computador
ISA
O ciclo do processador

Ociclo
 lO ciclododoprocessador
processador – outra perspectiva

fetch decode execute


Stored program
(conjunto de instruções)

Processor Memory Devices


000000 00000 00101 0001000010000000 Network
000000 00100 00010 0001000000100000
100011 00010 01111 0000000000000000
Control 100011 00010 10000 0000000000000100
101011 00010 10000 0000000000000000 Input
101011 00010 01111 0000000000000100
000000 11111 00000 0000000000001000
Datapath Output

Os dados não estão


representados

Introdução aos Sistemas de Computação e Comunicações 18/53


Organização interna do computador
ISA
O ciclo do processador

Ociclo
 lO ciclododoprocessador
processador – outra perspectiva
fetch decode execute

Processor Devices
Network
Control
000000 00100 00010 0001000000100000
Memory
Input
Datapath
Output

Nesta fase os operandos


são obtidos da memória
ou dos registos
Introdução aos Sistemas de Computação e Comunicações 19/53
Organização interna do computador
ISA
O ciclo do processador

Ociclo
 lO ciclododoprocessador
processador – outra perspectiva

fetch decode execute

Processor Devices
Network
Control
000000 00100 00010 0001000000100000
Memory
Input
Datapath
contents Reg #4 ADD contents Reg #2
results put in Reg #2 Output

Introdução aos Sistemas de Computação e Comunicações 20/53


Organização interna do computador
Linguagens de alto nível

l O que é o “stored program“?


l É o programa que está a executar
l São conjuntos de bits com instruções para o
processador
l O processador só entende bits
l Linguagem binária
Organização interna do computador
Linguagens de alto nível

l Escrita dos programas


l Em linguagem binária?
l A linguagem dos humanos é de muito mais alto nível
l Em linguagem assembly?
l Ainda é muito baixo nível...
l Porque não fazer os programas na “linguagem
humana”?
l Linguagens de programação de alto nível
l C, Pascal, Ada, ...
Organização interna do computador
Linguagens de alto nível

l Vantagens da linguagens de alto nível


l Programador pensa numa linguagem “natural”
l Aumenta a produtividade do programador
l Código mais legível e mais fácil de testar e depurar
l Melhor capacidade de manutenção do programa
l Portabilidade dos programas entre arquiteturas
l No caso dos microcontroladores exige algum cuidado
l Devido às extensões da linguagem
l Diferenças de implementação entre periféricos
l Otimizações dos compiladores
l Produzem código assembly muito eficiente para a
arquitetura alvo
Organização interna do computador
Linguagens de alto nível

l Programa em linguagem de alto nível ( C )


swap (int v[], int k) {
int temp; um
temp = v[k];
v[k] = v[k+1]; para
v[k+1] = temp; muitos
}

l Programa em linguagem assembly compilador C

swap: sll $2, $5, 2


add $2, $4, $2
lw $15, 0($2)
lw $16, 4($2) um
sw $16, 0($2) para
sw $15, 4($2) um
jr $31
l Código máquina (objecto) assembler
000000 00000 00101 0001000010000000
000000 00100 00010 0001000000100000
. . .
Organização interna do computador
Linguagens de alto nível

l Programa em linguagem de alto nível ( C )


swap (int v[], int k) {
int temp; um
temp = v[k];
v[k] = v[k+1]; para
v[k+1] = temp; muitos
}

l Programa em linguagem assembly compilador C

swap: sll $2, $5, 2


add $2, $4, $2
lw $15, 0($2)
lw $16, 4($2) um
sw $16, 0($2) para
sw $15, 4($2) um
jr $31
l Código máquina (objecto) assembler
000000 00000 00101 0001000010000000
000000 00100 00010 0001000000100000
. . .
Organização interna do computador
Linguagens de alto nível

Pré-process.
Código fonte Código
l Do código C em C em C

ao processo Compilador

Programa Programa
em assembly em assembly

Assembler Assembler

Programa Programa
objecto objecto

Desenvolvimento Executável Linker


Bibliotecas
(programador)
Execução
(sistema operativo) Programa
em execução Loader Biblilotecas
(processo)
Organização interna do computador
Linguagens de alto nível

l Pré-processador
l Processador de macros
l Passa ao compilador um ficheiro de código C
l Sem qualquer diretiva ou macro
l Apenas código C
Organização interna do computador
Linguagens de alto nível

l Compilador
l Transforma o código alto nível em assembly
l Os optimizadores dos compiladores atuais
l Produzem código quase tão bom como o de um
expert em assembly
l Muitas vezes melhor, no caso de um grande programa
Organização interna do computador
Linguagens de alto nível

l Assembler
l Gera um ficheiro objeto (código máquina)
l Criado a partir do código fonte (assembly)
l Mas não é executável (chamado código relocatable)
l Constrói uma tabela de símbolos associando as etiquetas
(labels) aos respetivos endereços
l Resolve as referências a dados e funções definidos dentro do
ficheiro
l Não resolve as referências a dados e funções definidos fora do
ficheiro
l Definidos noutro ficheiro de código fonte ou em bibliotecas
Organização interna do computador
Linguagens de alto nível

l Assembler
l Geração do ficheiro objeto
l Cria um ficheiro objeto a partir do código assembly
l Código relocatable
l Cujos endereços só são atribuídos em link time
l Relocation é o processo de ligar referências simbólicas a definições
simbólicas (papel do linker)
l Contém uma lista de
l Nomes e endereços de símbolos visíveis externamente
l Nomes e referências de símbolos que necessitam de relocation
Organização interna do computador
Linguagens de alto nível

l Linker
l Liga (Link) os vários ficheiros objeto
l Junta o código objeto dos vários ficheiros (módulos)
l Utiliza as tabelas de símbolos para resolver as invocações
noutros módulos
l Para os símbolos que não ficarem resolvidos
l Procura nas bibliotecas fornecidas pelo compilador
Organização interna do computador
Linguagens de alto nível
Programas e sua execução
l Linker

l Liga (Link) os vários ficheiros objeto


C program
C program
l Junta o código objeto dos vários ficheiros (módulos)
C program C program
C program
compiler
Utiliza as tabelas de símbolos para resolver as invocações
compiler
l
compiler
noutros móduloscompiler
compiler
assembly code
Para os code
l assembly símbolos que não ficarem resolvidos
assembly code assembly code Biblioteca
assembly
l code nas bibliotecas
Procura fornecidas pelo compilador
assembler do printf
assembler
assembler assembler
assembler
object code library
Código object code library
object code object code library
máquina object code

linker

executable
Organização interna do computador
Linguagens de alto nível
Programas e sua execução
l Loader
l Corre dentro do S.O.
Loader
Carrega o programa para ser executador
l

l Bem como bibliotecas dinâmicas que possam ser necessárias

executable shared lib


shared lib
shared lib
loader

memory
Organização interna do computador
Linguagens de alto nível

l Para além da compilação


l Existem outras técnicas de conversão de código
de alto nível
l Interpretação
l Um “interpretador” traduz e executa uma linha de cada vez
l O programa é sempre reinterpretado sempre que executa
novamente
l Para executar os programas
l O interpretador é sempre carregado para memória
l A interpretação “pura” atualmente não existe
l Máquina virtual
l Neste contexto é um programa que virtualiza uma aplicação
l Não um programa que virtualiza um sistema
l VMWare, VirtualBox, Qemu (virtualizam o hardware)
Organização interna do computador
Linguagens de alto nível

l Linguagem Java
l É traduzida para uma linguagem intermédia
(compilador)
l Byte code
l É executada numa máquina virtual
(interpretador)
l Java Virtual Machine (JVM)
l Traduz e executa cada instrução
Organização interna do computador
Linguagens de alto nível

l Linguagem Java
l Compilador

l Byte code
l É executada numa máquina virtual
(interpretador)
l Java Virtual Machine (JVM)
l Traduz e executa cada instrução

Fonte: https://www.baeldung.com/java-compiled-interpreted
Organização interna do computador
Linguagens de alto nível

l Linguagem Java
l Máquina virtual

Fonte: https://www.baeldung.com/java-compiled-interpreted
Organização interna do computador
Linguagens de alto nível

l Linguagem Python
l Compilação
l Máquina virtual

Fonte: https://www.gkindex.com/python-tutorial/python-virtual-machine.jsp
Organização interna do computador
Virtualização

l Virtualização
l Está na base da computação na cloud
l Versão de um recurso baseada em software
l E.g.: Computação; rede; armazenamento;

l Hipervisor
l Estão na base da virtualização
l Gestor de recursos de uma máquina virtual
l Tipo 1 (base metal)
l Server virtualization
l E.g.: VMWare ESXi; Microsoft Hyper-V; KVM (oper source)
l Tipo 2 (OS hosted)
l End user virtualization
l E.g. Oracle Virtualbox; VMWare Workstation
Organização interna do computador
Virtualização

l Máquina virtual
l Corre por cima do hipervisor
l Software based computer
l Process virtual machine
l Ou plataforma de execução
l Visa fornecer um ambiente de programação
independente de plataforma
l Abstraindo os detalhes do S.O. e hardware
l E.g. JVM, PVM, ART (Android Runtime)
l O ART ao contrário do JVM permite a compilação completa da
aplicação após instalada
Organização interna do computador
Virtualização

l A pilha de software
do Android
Organização interna do computador
Virtualização

l Contentor
l Baseados na tecnologia introduzida pelo Linux
l Namespaces; cgroups
l Agrupa uma aplicação e todas as suas
dependências
l E.g. Docker, Cloud Foundry (container runtimes)
Organização interna do computador
Virtualização

l Virtualização

A A A A
p p p p
p p p p
A A A A A A
App App App
p
p
p
p
p
p
p
p
p
p
p
p
A A
MV MV A A
Java
App
Python
App A A
Libs Libs Libs
p p p p p p
MV MV MV p p hipervisor p p JMV PMV p p Container runtime

hipervisor SO SO SO
hardware hardware hardware hardware
Organização interna do computador
Sistema computacional

l Deixando a virtualização
l Sistema computacional de uso genérico
l P.ex o nosso portátil
Organização interna do computador
Sistema computacional

l Sistema computacional
Organização interna do computador
Sistema computacional

l Processador
l Tem pelo menos 2 modos de operação
l User mode
l Modo não privilegiado de execução
l Limita o acesso a determinadas regiões de memória e recursos
l Impede o acesso a I/O
l Algumas instruções não podem ser executadas
l Privileged mode
l Modo privilegiado de execução
l Acede sem restrições a todos os recursos

NOTA: Isto não tem nada a ver com privilégios de


administrador na gestão do Windows/Linux
Organização interna do computador
Sistema computacional

l Processador
l Aplicações
l Executam em user mode
l Para evitar que as aplicações possam comprometer o sistema
l Sistema operativo (kernel)
l Executa em privileged mode
l Para poder gerir e multiplexar os recursos entre as aplicações

l Definição de sistema operativo


l Controla os recursos de hardware e a sua multiplexagem
pelas aplicações
l Fornece um interface às aplicações para utilização desses
recursos
Organização interna do computador
Sistema computacional

l Processador
l Tem pelo menos 2 modos de operação
l Quer isto dizer que se escrevêssemos um programa
em assembly
l Não podíamos usar todas as instruções aceites pelos
processador
l O nosso programa não corre em modo privilegiado
Organização interna do computador
Sistema computacional

l Processador
l MMU – Memory management unit
l Conceito relacionado mas independente
l Implementa o conceito de memória virtual
l Os endereços de memória não correspondem a endereços
físicos
l É necessário um “conversor” de endereços, a MMU
l Um programa vê o espaço de memória como se fosse todo seu
l O conceito de memória virtual impede que um
programa acede à memória do outro
l Cada programa ”vive” no seu “contentor” de memória
Organização interna do computador
Sistema computacional

l Sistema computacional
Organização interna do computador
Sistema computacional

l Sistemas operativo
l Os dois mecanismos apresentados são a base de
qualquer sistema operativo moderno
l Garantindo robustez ao sistema para que uma
aplicação mal comportada não comprometa todo o
sistema
l Um programa “normal” deixa de poder “mexer” directamente
com os recursos de hardware
l Definição
l Controla os recursos de hardware e a sua
multiplexagem pelas aplicações
l Fornece um interface às aplicações para utilização
desses recursos
Organização interna do computador
Sistema computacional

l Sistema operativo
l Então como fazem as aplicações para aceder aos
recursos (disco, memória, teclado, vídeo, etc.)?
l Invocam chamadas ao sistema operativo
l System calls
l Mas os meus programas usam tudo isso e nunca invoquei uma
system call…
As funções da biblioteca do C fazem-no por nós
Ex: printf(), fwrite(), malloc(), etc.
Nem todas as funções da biblioteca do C invocam system calls
Ex: sqrt(), pow(), strcmp(), strtok(), etc.
l Que “acedem” aos device drivers se necessário
Organização interna do computador
Sistema computacional

l Sistema operativo
l Por outro lado, todos os dias novos dispositivos
surgem no mercado
l Para se ligarem ao computador
l E.g. impressoras
l O S.O. não está preparado para comunicar estes
dispositivos
l Isto é feito através de device drivers
Organização interna do computador
Sistema computacional

l Sistema operativo
l Device drivers
Organização interna do computador
Sistema computacional

l Sistema computacional
Organização interna do computador
Sistema computacional microcontrolador

l Processos
l Aplicações em execução
l Usam diretamente o processador
l Para executar as instruções do programa
l Processarem os dados
l Interagindo com a memória do processo
l Interagem com o S.O. através de system calls
l Sempre que precisam de mais memória
l Aceder a recursos externos
l Disco, teclado vídeo, rede, porta série, etc...
l Comunicação entre processos
l ...
Organização interna do computador
Sistema computacional

l Processos
l Já vimos que os S.O. modernos colocam os
processos em “contentores”
l Estão confinados ao seu próprio espaço de
endereçamento
l De forma a não comprometerem o sistema, nem outros
processos
l Mas… e quando os processos querem comunicar
entre si?
l Terá de ser o S.O. a ajudar
Organização interna do computador
Sistema computacional

l Processos
l Comunicação entre processos
(Inter-process communication – IPC)
l Razões para processo querer comunicar com outro
l Partilha de dados
l Modularidade
l Desempenho
l Privilégios
l Conveniência
Organização interna do computador
Sistema computacional microcontrolador

l Sistema computacional
l Desktop vs microcontrolador
Organização interna do computador
Sistema computacional microcontrolador

l Sistema computacional microcontrolador


l Não tem um sistema operativo a gerir o
hardware como o Windows/Linux
l O micro não é complexo
l Tipicamente corre só uma aplicação/tarefa
l Quando há mais do que uma tarefa há necessidade de um
“library OS”
l Um SO que não é mais do que um conjunto de rotinas
compiladas com o nosso programa

l A aplicação corre diretamente no hardware


l Quando termina não pode voltar para o S.O.
l Tem acesso a todo o hardware e suas particularidades
Organização interna do computador
Sistema computacional microcontrolador

l A aplicação corre diretamente no hardware


l Quando termina não pode voltar para o S.O.
l Assim o programa que fizermos, nunca pode terminar
l Visto o micro estar sempre no ciclo fetch>decode>execute
l A processar instruções
l Que instruções vai processar se o nosso programa terminar?
l Comportamento indeterminado...
l O programa deve “terminar” com um ciclo infinito
l while (1)
l for(;;)
Organização interna do computador
Sistema computacional microcontrolador

l Anatomia de um programa em C
//declaracoes include

//Variaveis globais

//Funcoes auxiliares

void main (void) {


//Declaracao de variaveis

//inicializacoes

while (1) {
//codigo do programa

}
}
Organização interna do computador
Sistema computacional microcontrolador

l Sistema computacional microcontrolador


l Anatomia de um programa em C

https://www.eng.auburn.edu/~nelsovp/courses/elec3040_3050/C%20programming%20for%20embedded%20system%20applications.pdf
Organização interna do computador
Sistema computacional microcontrolador

l A aplicação corre diretamente no hardware


l Tem acesso a todo o hardware e suas
particularidades
l Para suporte aos elementos da arquitetura do micro
l Existem extensões à linguagem C
l Áreas de memória
l Tipos de dados
l Apontadores
l Atributos de funções

l Mas isto fica para depois...


Organização interna do computador
Obrigado

Você também pode gostar