Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Fonte: http://www.techspot.com/article/904-history-of-the-personal-computer-part-5/
Departamento de Computação
Universidade Federal de São Carlos
Computador
Composto de um pequeno conjunto de componente
lógicos básicos
Podem
P d ser combinados
bi d para armazenar dados
d d bi á i
binários e
executar operações aritméticas e lógicas sobre esses
dados.
2
Computador
3
Computador
Alternativa: configuração de funções lógicas e
aritméticas de propósito geral
Conjunto
C j t ded componentes t d hardware
de h d capaz de
d executar
t
várias funções sobre os dados, dependendo dos sinais de
controle q
que lhe são aplicados.
p
Hardware de p propósito
p geral é capaz
g p de ler dados e
sinais de controle e produzir resultados.
4
Computador
5
Computador
Componentes importantes: módulo de interpretação de
instruções e o módulo de execução das funções
lógicas e aritméticas
Outros componentes:
p módulos de E/S (I/O), memória
7
Computador - Datapath
8
Computador
Função básica: executar um programa que é
constituído por um conjunto de instruções
armazenadas na memória.
O processador realiza o trabalho efetivo de executar as
instruções especificadas no programa.
A execução
ç de um
m pprograma
g m consiste na repetição
p ç
desse processo de busca e execução de instruções.
9
Computador
No contador de p programas
g m ((PC)) estará o endereço
ç da p
próxima
m
instrução a ser executada
O processador faz a busca da instrução na posição de memória
que está armazenada no PC
O PC é incrementado
A não ser q que a ppróxima
m instrução
ç não esteja
j armazenada
m na p
posição
ç
seguinte (instruções de desvio)
A instrução é armazenada no registrador de instrução (IR)
O processador
ss d interpreta
i t t a instrução
i st ã
10
Computador
A instrução buscada na memória e carregada no IR
contem bits que especificam a ação que o processador
deve executar após a interpretação da instrução.
Geralmente as ações são classificadas em quatro
categorias:
Processador-memória: transferência de dados do processador
para a memória ou da memória para o processador.
Contador
C t d ded programa (PC) = endereço
d d próxima
da ó i
instrução
12
Computador Hipotético
Códigos de operações:
14
Computador Hipotético
Soma de dois números
0001 - (AC) ← (mem)
0010 - (mem) ← (AC)
0101 - (AC) ← (AC) +(mem)
15
Assembly
Assembly
Os números binários são base da teoria computacional
100011000001 (bits): “Linguagem” do computador
17
Assembly
Palavras (=
( conjunto de bits) ->> podem ter diferentes
significados agrupados em: dados e instruções
18
Assembly
O que é isto? 15º bit 6º bit
0000100100000000100000
20
Pode ser interpretado como:
25 + 214 + 217
= 32 + 16.384 + 13.1072
= 147.488
19
Assembly
O que é isto?
00000001000000010000001000001000000000000100000
00000001000000110000010000001001000000000100000
00000010000010000000100100000101000000000100010
Melhorando...
00000001 00000001 00000010 00001000 0000000 00100000
00000001 00000011 00000100 00001001 0000000 00100000
00000010 00001000 00001001 00000101 0000000 00100010
20
Assembly
Melhor Assim?
1 1 2 8 0 32
1 3 4 9 0 32
2 8 9 5 0 34
Melhorando...
add $8,
$8 $1
$1, $2
add $9, $3, $4
sub
b $5
$5, $8
$8, $9
21
Assembly
Melhor Assim?
$8 = $1 + $2
$9 = $3 + $4
$5 = $8 - $9
Melhorando...
u=a+b
v=c+d
x=u-v
22
Assembly
Claro agora?
Cl ?
x = (a+b) - (c+d)
23
Assembly
• Linguagem de Montagem (Assembly): facilita a
programação pois é uma abstração da linguagem de
máquina.
24
Assembly
25
Fonte: Arquitetura e Organização de Computadores - 5ª Ed. Stallings, William
Assembly
Load $5 $FP($10)
Load $6
$ $$FP($11)
($ ) Programa em
Add $7 $5 $6 Assembly
Store $7 $FP($10)
Assembler
Programa em
Linguagem de
Máquina
(Código Objeto)
26
Assembler
• Montador (Assembler): Traduz programas escritos em
linguagem de montagem para linguagem de máquina.
Esse programa não apenas deve fazer a tradução
simbólica mas também associar um endereço de
memória a cada endereço simbólico.
27
Linguagens de Alto Nível
Abstração de linguagem de máquina mais amigável do
que linguagem assembly.
Ex: C++,, Java,
J , Pearl,, etc.
28
Linguagens de Alto Nível
Assembler
Programa em
Programa
Linguagem de Linker Executável
Máquina
(Código Objeto)
29
Linguagens de Alto Nível
30
ISA
ISA
A operação de uma CPU é determinada pelas
instruções que ela executa: instruções de máquina (
operação elementar que o processador é capaz de
realizar)
Conjunto de instruções: limite de visão do projetista e
d programador
do d d de computadores.
d
32
ISA
Arquitetura do conjunto de
instruções
34
ISA
Elementos essenciais de uma instrução:
Código de operação, que especifica a operação a ser realizada,
Referências aos operandos
p de origem
g e de destino, que
q
especificam os endereços dos dados de entrada e de saída da
operação.
Endereço da próxima instrução
instrução, que normalmente é implícito
implícito.
35
ISA
Representação das Instruções
Cada instrução é representada como uma sequencia de Bits
A iinstrução
ã é di
dividida
idid em pequenos campos. C
Cada
d campo
representa um elemento da instrução
36
ISA
Representação de instruções
Código de operação são representados por abreviações (mnemônicos) que é
uma representação simbólica para instruções. Exemplos:
ADD Adição
SUB Subtração
ç
MPY Multiplicação
DIV Divisão
LOAD Carregar dados da memória
STOR Armazenar dados na memória
37
ISA
Tipos de Instruções
Processamento de dados
dados: instruções aritméticas e lógicas
38
ISA
Número de Endereços
Instruções mais comuns teriam obrigatoriedade de ter 4
endereços de referência:
39
ISA
Número de Endereços
40
ISA
Número de Endereços
41
ISA
Projeto do Conjunto de Instruções
Muito complexo,
p pois
p afeta diversos aspectos
p do sistema.
42
ISA
Projeto do Conjunto de Instruções
Tipos
p de dados: quais
q os tipos
p de dados sobre os quais
q as operações
p ç
são efetuadas.
Arquitetura
q baseada em
m Acumulador
m (accumulator)
( m )
Implicitamente, um operando é o acumulador, e o outro é referenciado
explicitamente
44
ISA
ULA – Unidade Lógica
g Aritmética
m (ALU)
( )
Op1 Op2
Operation
A0 ... A7 B0 ... B7
Result Overflow
X
Y
Overflow
C0 ... C7 45
ISA
Arquitetura baseada em Pilha
Ex:: Os operandos
E d s da
d iinstrução
st ã ADD sãsão im
implicitamente
li it m t oss
dois elementos no topo da pilha. ADD faz POP dos dois
elementos no topo da pilha, soma-os, e faz PUSH do
resultado
l d no topo dda pilha.
lh
46
ISA
Arquitetura baseada em Pilha
TOS
...
ALU
...
memory
ALU ...
...
memory
Register-Register
registers
LOAD R1, A
LOAD R2,, B
ADD R3, R1, R2
...
STORE R3, C
ALU ...
memory
51
ISA
Arquitetura baseada em Registrador
Register-Memory
registers
LOAD R1, A
ADD R3
R3, R1
R1, B
STORE R3, C
ALU ...
...
memory
52
ISA
Arquitetura baseada em Registrador
Desde os anos 80, praticamente todo novo projeto
de processador é baseado em registradores (GPR
ISA).
Registradores
R i t d são
ã bbem mais
i rápidos
á id que a memória,
ó i
e se tornaram mais baratos de implementar
54
Patterson // Henn
nessy
Computer Organiization and Design.
Copyright © 20099 Elsevier, Inc.
ISA
Quantos Registradores ?
ISAs mais
ISA i modernas
d ttendem
d a tter um número
ú
maior de registradores visíveis
8 16,
8, 16 32,
32 64
64, 128
55
ISA
Quantos operandos por Instrução ?
GPR ISA
ISAs ttem d
duas características
t í ti bá
básicas:
i
ADD $5,
$5 $4
$4, $3 (Reg5= Reg4 + Reg3)
2 operandos: um deles é tanto entrada como saída
ADD $4,
$4 $3 (Reg4= Reg4 + Reg3)
2. O número de operandos
p que
q pode
p ser um endereço
ç
de memória
56
ISA
3 3 Memory- VAX
memory
Simplicidade
Si li id d d
do h
hardware
d necessário
á i para
implementá-la
Velocidade de processamento
58
ISA: Endereçamento
Uma instruções é composta em sua maioria de
um opcode e de alguma informação adicional: de
onde vêm os operandos
p e para
p onde vão os
resultados.
59
ISA: Endereçamento
A maioria das ISAs é endereçada byte
byte-a-byte
a byte
A menor porção de memória que pode ser
endereçada
ç é um byte
y
Cada byte tem um endereço, representado por uma
sequencia de bits
Ex: Se eu tenho 128 bytes de RAM endereçável,
cada byte tem um endereço composto por 7
bits;
60
ISA: Endereçamento
Normalmente uma ISA permite acesso a:
Normalmente,
bytes (8 bits)
half words (16 bits)
C (short integers)
Útil q
quando o tamanho
m das estrutura de dados é
importante (e.g., O/S)
Caracteres Unicode
61
ISA: Alinhamento de Memória
Na maioria dos computadores
computadores, o acesso a objetos
maiores que um byte deve ser alinhado.
Ler 1 endereço
L d arbitrário
bit á i requer um h
hardware
d
mais sofisticado e é mais caro
62
ISA: Alinhamento de Memória
63
ISA: Alinhamento de Memória
Definição de Alinhado: Um objeto de tamanho S
bytes está alinhado se o seu endereço é um
múltiplo de S (i.e., @ mod S = 0)
Exemplo:
p
Acessando 1 byte no endereço 000000: alinhado
Acessando 1 half word no endereço 000001: NÃO
alinhado
li h d
1 mod 2 = 1
Acessando 1 half word no endereço 000010: alinhado
Acessando 1 double word no endereço 011000: alinhado
24 mod 8 = 0
64
ISA: Alinhamento de Memória
0 1 2 3 4 5 6 7 8
1-byte
aligned
g aligned
g aligned
g aligned
g aligned
g aligned
g aligned
g aligned
g aligned
g @%1=0
access
misaligned misaligned
aligned
g @%8=0
misaligned
8-byte
access misaligned
misaligned
65
...
ISA: Alinhamento de Memória
Por que Alinhamento?
Explicação Simples: O hardware fica mais simples
O hardware de acesso à memória é construído de modo a
permitir o acesso alinhado a objetos de tamanho elevado
(ex: double word)
Assim, o acesso a objetos mal-alinhados
Assim mal alinhados aumentaria o
número de acessos à memória, reduzindo o desempenho
do sistema.
Exemplo:
66
ISA: Alinhamento de Registradores
A CPU possui vários registradores,
registradores podendo
armazenar bytes, half words, words, or double
words:
não importa
p byte
double word 67
ISA: Alinhamento de Registradores
Quando algum dado ou instrução é carregado da
memória p/ um registrador (Load), uma double word
é lida e colocada em um registrador de 64-bits
Além di
Alé disso, o tempo para transmitir
i i 8 sinais
i i em
paralelo (1 byte) e 64 sinais em paralelo (1 double-
word) é o mesmo
word),
68
ISA: Memória para Dados e Instruções
Outra decisão importante
mp com
m relação
ç ao acesso à memória
m m
é se a faixa de endereços da memória de dados será a
mesma da memória de instruções.
Isso ajuda
I j d principalmente
i i l t no PiPipeline,
li porque a CPU pode,
d no
mesmo ciclo, buscar uma instrução e buscar os dados de uma
outra instrução.
69
ISA: Ordenação de Bytes
Questão importante: como os bytes são
representados e referenciados dentro de uma
palavra ou como os bits são representados e
referenciados dentro de um byte.
70
ISA: Ordenação de Bytes
big endian
big-endian little endian
little-endian
71
ISA: Ordenação de Bytes
Little Endian: O byte
y cujoj endereçoç é x...x000 é colocado na
posição menos significativa, ou seja o “little end”
Ex: IA-32, x86
72
ISA: Ordenação de Bytes
Por que a ordenação é importante?
G
Geralmente,
l t isso
i é transparente
t t ao usuário
á i
Mas pode
M d ser um problema
bl quando
d o mesmo
endereço de memória é acessado como double-
word ou word ou byte.
byte
#include <stdio.h>
int main() {
struct {
int x;
char y;
} data;
data.x = 0x61626364;
a b c d \0
data.y
y = '\0';
printf("--> '%s'\n",(char*)&data);
74
ISA: Ordenação de Bytes
Em uma máquina Little Endian
#include <stdio.h>
int main() {
struct {
int x;
char y;
} data;
data.x = 0x61626364;
d c b a \0
data.y
y = '\0';
printf("--> '%s'\n",(char*)&data);
}
75
ISA: Ordenação de Bits
O bit de menor ordem é o bit menos significativo
do byte (little-endian) ou é o bit mais significativo
do byte (big-endian)?
76