Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

ARQUITETURA DE COMPUTADORES
CONCEITOS GERAIS
Prof. Geovani Rodrigo Scolaro
Unoesc
 Microprocessadores x Microcontroladores
 Estrutura Física
 Microcontrolador Genérico
 Introdução
 Perspectiva histórica
 Visão Geral
 Arquitetura Big Endian vs. Little Endian
Tópicos
Microprocessadores x Microcontroladores (1)
Microprocessador
Microcontrolador
 Os microprocessadores possuem:
 Largura de barramento de endereços elevada
 Desde meados da década de 1980 a 1990 que essa largura de barramento de 
endereços se estabilizou em 32 bits, chegando à 64 bits hoje
 Unidade de gerenciamento de memória integrada ou on-chip
 Tratamento de dados com representação binária de 8, 16, 32, 64 e até mesmo de 80 
bits
 Unidade de cálculo de matemática em ponto flutuante on-chip com suporte a operações 
numéricas bastante complexas com números reais
 Apresentam alto custo e alto consumo de energia
Microprocessadores x Microcontroladores (2)
 Os microcontroladores apresentam:
 Memória e unidades periféricas on-chip
 Barramento de endereços com poucos bits, só permitindo o gerenciamento de pequena 
quantidade de memória; algumas larguras típicas variam de 10 a 14 bits e, nesses 
casos, limitando seu acesso à memória variando de 1 KB a 8 KB
 Tratamento de dados restrito aos inteiros com representação binária de 8 bit; 
atualmente, algumas famílias permitem o tratamento de inteiros de 8 e de 16 bits
 Ausência de unidades aritméticas de ponto flutuante
 Em contrapartida, são de baixo custo, apresentam baixo consumo
Microprocessadores x Microcontroladores (3)
Estrutura Física (1)
Estrutura Física (2)
 A escolha de um 
microcontrolador depende das 
características econômicas e 
complexidade do projeto
 Existem desde 
microcontroladores de 4 bits 
com funções limitadas até 
modernos de 32 bits e clocks
elevados
Microcontrolador Genérico (1)
 CPU, Memórias e Dispositivos de I/O
 A CPU executa os programas 
controlando o sistema, sendo 
composta por três módulos
 ALU: Realiza operações 
aritméticas e lógicas
 Registradores: Armazenam 
dados temporários; nos 
microcontroladores esses são 
divididos em registradores de 
uso geral e específico
 Unidade de Controle: Decodifica 
a instrução e envia sinais de 
controle 
Microcontrolador Genérico (2)
 Barramentos de Dados, Endereço e 
Controle
 A CPU se comunica com os 
dispositivos de I/O ou as 
memórias via comunicação 
paralela
 A CPU só se comunica através de 
duas operações: Leitura e escrita
 Esse canal de comunicação é 
chamado barramento
Microcontrolador Genérico (3)
 Barramentos de Dados, Endereço e 
Controle
 Existem três tipos de barramento: 
Endereço, controle e dados 
 Barramento de Endereços: É 
uma via apenas de saída; 
é usado para endereçar o 
dispositivo (memórias, I/O) 
para realizar uma operação
 Barramento de Dados: É uma 
via bidirecional por onde 
trafegam os dados
 Barramento de Controle: 
Determina se a operação é 
leitura ou escrita
Microcontrolador Genérico (4)
 Memória de Armazenamento
 Memória não-volátil presente no 
próprio microcontrolador ou pode 
ser acoplada externamente a ele, 
para o armazenamento de dados 
de forma segura
Exemplo: Memórias EEPROM 
(Electrically Programmable 
Read Only Memory)
 Registradores
 São pequenas unidades de 
memória para alocação 
temporária de dados; trabalham 
diretamente com o processador, 
armazenando resultados de suas 
operações lógicas e aritméticas
Microcontrolador Genérico (5)
 Clock
 Fornece a sensibilidade de tempo 
para o processador, ou seja, ele 
fornece um sinal em forma de 
onda quadrada, sendo chamado 
de oscilador
 A cada nível alto, no mínimo 
uma instrução é executada
 Um ciclo de clock consiste na 
diferença de tempo entre 
dois níveis altos dessa onda
Microcontrolador Genérico (6)
 Todos os sistemas digitais representam tudo como 0s e 1s
 O 0 e 1 são, na verdade, duas diferentes faixas de tensão em eletrônica
 Tudo inclui:
 Números: inteiros e ponto-flutuante
 Caracteres: blocos de construção de strings
 Instruções: diretivas para a CPU construir um programa
 Ponteiros: endereços os objetos de dados armazenados na memória
 Estas codificações são armazenadas por todo o sistema computacional
 Em registradores, caches, memórias, discos, etc
 Todos eles precisam de endereços
 Uma forma de encontrá-los
 Encontrar um novo lugar para armazenar um novo item
 Recuperar o lugar na memória quando o dado não é mais necessário
Introdução (1)
 Representação de números em base 2
 Representar 35110 como 00000001010111112 ou 1010111112
 Implementação eletrônica
 Fácil de armazenar com elementos biestáveis
 Transmissões confiáveis em fios sujeitos a ruídos
Introdução (2)
0.0V
0.5V
2.8V
3.3V
0 1 0
 Há uma grande distância entre como nós pensamos a respeito de programas e 
dados e os 0s e 1s dos computadores
 Necessitamos de linguagens para descrever o que queremos
 Linguagens precisam ser traduzidas uma passo de cada vez
 Palavra-por-palavra
 Estruturas de frases
 Gramática
 Java é uma linguagem de programação
 Temos que descer até o nível dos 0s e 1s dos computadores
 Tentar não perder nada nesta tradução
 Encontramos bytecodes Java, linguagem C, linguagem Assembly e código de máquina
Introdução (3)
 C/Java, Assembly, e Código de Máquina
Introdução (4)
if (x != 0) 
y = (y+z)/x;
cmpl $0, -4(%ebp)
je .L2
movl -12(%ebp), %eax
movl -8(%ebp), %edx
leal (%edx, %eax), %eax
movl %eax, %edx
sarl $31, %edx
idivl -4(%ebp)
movl %eax, -8(%ebp)
1000001101111100001001000001110000000000
0111010000011000
10001011010001000010010000010100
10001011010001100010010100010100
100011010000010000000010
1000100111000010
110000011111101000011111
11110111011111000010010000011100
10001001010001000010010000011000
 C/Java, Assembly, e Código de Máquina
 Os três programas são equivalentes
 Normalmente as pessoas preferem programar em C ou Java, pois são linguagens 
mais ‘amigáveis’
 O hardware gosta de cadeias de bits! 0 e 1 como tensões altas e baixas
Introdução (5)
cmpl $0, -4(%ebp)
je .L2
movl -12(%ebp), %eax
movl -8(%ebp), %edx
leal (%edx, %eax), %eax
movl %eax, %edx
sarl $31, %edx
idivl -4(%ebp)
movl %eax, -8(%ebp)
1000001101111100001001000001110000000000
0111010000011000
10001011010001000010010000010100
10001011010001100010010100010100
100011010000010000000010
1000100111000010
110000011111101000011111
11110111011111000010010000011100
10001001010001000010010000011000



if (x != 0) 
y = (y+z)/x;
Introdução (6)
car *c = malloc(sizeof(car));
c->miles = 100;
c->gals = 17;
float mpg = get_mpg(c);
free(c);
Car c = new Car();
c.setMiles(100);
c.setGals(17);
float mpg = c.getMPG();
get_mpg:
pushq %rbp
movq %rsp, %rbp
...
popq %rbp
ret
JavaC
Linguagem 
Assembly
Código de 
máquina
0111010000011000
100011010000010000000010
1000100111000010
110000011111101000011111
Sistema 
computacional
OSAssembler
Compilador
 Hardware começou de forma muito primitiva
 Instruções simples para somar dois números inteiros, por exemplo
 Software também era muito primitivo
 Primitivas do software refletiam o hardware de forma muito próxima
Perspectiva Histórica (1)
Hardware
Especificação da Arquitetura (Interface)
 Assemblers (montadores)
 Tornaram a vida mais fácil
 1 instrução Assembly = 1 instrução em código de máquina
 Instruções Assembly são cadeias de caracteres, e não cadeias de bits, muito mais fácil 
de ler e escrever para pessoas
 Pode usar nomes simbólicos
Perspectiva Histórica (2)
Hardware
Programa
do 
usuário 
em
asm
Especificação Assembler
Assembler
 Nível mais alto de abstração
 1 linha em uma linguagem de alto nível é compilada em muitas (às vezes muitas e 
muitas) linhas em linguagem Assembly
Perspectiva Histórica (3)
Hardware
Programa
do 
usuário
em C
Especificaçãoda linguagem C
Assembler
Compilador
C
 Codificação → Compilação → (Tempo de) Execução
 Nota: O compilador e o montador são apenas programas, desenvolvidos usando 
este mesmo processo
Perspectiva Histórica (4)
Hardware
Programa
do 
usuário
em C
Assembler
Compilador 
C
Etapa de Codificação Etapa de Compilação
Etapa de Execução
Run Time
arquivo .exearquivo .c
 O que é um Computador?
 Três componentes principais
 Computação
 Comunicação
 Armazenamento (memória)
Visão Geral (1)
Sistema Computacional
Unidade de 
Computação
Unidade de 
Comunicação
Unidade de Memória/ 
Armazenamento
Sistema de 
Memória
Sistema de 
Armazenamento
 Hardware – Visão Lógica
Visão Geral (2)
CPU Memória
Barramento (Bus)
Discos Rede USB Etc.
 Hardware – Visão Semi-Lógica
Visão Geral (3)
 Hardware – Visão Física
Visão Geral (4)
 Memória da CPU: Registradores e Cache de Instruções
 Há um número fixo de registradores na CPU
 Registradores armazenam dados
 Há um I-cache na CPU que armazena as instruções acessadas mais recentemente
 Se um programa executar um laço que caiba no cache, a CPU irá à memória procurar 
as instruções somente uma vez, e então as executará de dentro do cache
Visão Geral (5)
Cache de
Instruções
Registradores
Memória
Movimentação de 
dados controlada
pelo programa
Cache de instruções
transparente
(controlado pelo hardware)
CPU
 Performance: Não é somente velocidade da CPU 
 Dados e instruções residem na memória
 Para executar uma instrução, ela precisa ser levada até a CPU
 A seguir, os dados aos quais a instrução opera precisam também ser buscados na 
memória e levados até a CPU
 Largura de barramento entre CPU  Memória pode limitar a performance
 Melhorando a performance 1: melhorar o hardware a fim de incrementar a largura do 
barramento de memória (Ex: DDR → DDR2 → DDR3)
 Melhorando a performance 2: mover menos dados para/da CPU
 Colocar alguma memória no chip da CPU (memória cache)
Visão Geral (6)
 Endianess (extremidade)
 Big endian vs. Little endian (MSB no byte mais alto ou mais baixo)
Arquitetura Big Endian vs. Little Endian (1)
 Vantagens Big endian 
 Inteiros armazenados na mesma ordem das cadeias de caracteres (da esquerda para a 
direita)
 Sinal do número determinado olhando para o byte de endereço base
 Vantagens Little endian
 Facilita conversão de representações com diferentes tamanhos (exemplo: Inteiro 12 é 
representado pelo byte 0x0C e pela palavra 0x000C: a localização de deslocamento 
mantém o mesmo valor, o que não acontecia na representação big endian)
Arquitetura Big Endian vs. Little Endian (2)
 PIC: Little endian
 8051: Big endian
 ATmega: Little endian
 Intel x86 e x86-64: Little endian
 Motorola 68000: Big Endian
 PowerPC: Big Endian
 JVM: Big Endian
Arquitetura Big Endian vs. Little Endian (3)
O TIFF (acrónimo para Tagged Image File Format) é um formato de arquivo para imagens digitais de alta resolução
 Programação em redes (sockets): Padronização para utilização do big-endian
 Por esse motivo, esse formato é também chamado de network order
 O formato utilizado nativamente pelo host é chamado de host order
 Inclusive os endereços são representados em big-endian
 A API de sockets possui várias funções para a conversão da representação de 
inteiros
 #include 
 uint16_t htons(uint16 data_in_host_order); 
 uint16_t ntohs(uint16 data_in_net_order); 
 uint32_t htonl(uint32 data_in_host_order); 
 uint32_t ntohl(uint32 data_in_net_order); 
Arquitetura Big Endian vs. Little Endian (4)

Mais conteúdos dessa disciplina