Upload
vuquynh
View
214
Download
0
Embed Size (px)
Citation preview
Organização Básica de computadores e linguagem de
montagem
1o Semestre de 2011
Prof. Edson Borin
Regras do Curso
Aulas na quarta-feira: CB03Aulas na sexta-feira: CC02/CC03 (Lab.) ou CC51 (Teóricas)
Página com informações sobre o programa da disciplina, horários de atendimento, etc...
http://www.ic.unicamp.br/~edson/mc404/2011-1s/
Regras do CursoCritérios de Avaliação:
2 Provas: P1 e P22 ou 3 trabalhos de laboratório: T1, T2, ...Média das provas:
MP = 0,3xP1 + 0,7xP2Média dos trabalhos:
MT = Média aritmética dos trabalhosMédia da Disciplina: MD
se MP >= 5,0 então MD = 0,5xMP + 0,5xMT,se MP < 5,0 então MD = 0,8xMP + 0,2xMT
Nota Final: NFse MD >= 5,0 então NF = MD, se MD < 5,0 então NF = (MD+Exame) / 2
Aviso aos trapaceiros: Cola implica em zero na disciplina.
Porque Aprender Linguagem de Montagem
•Permite compreender o funcionamento de uma CPU
Porque Aprender Linguagem de Montagem
•Permite compreender o funcionamento de uma CPU
•Utilizado na:•Programação de máquinas baseadas em micro-controladores.
Porque Aprender Linguagem de Montagem
•Permite compreender o funcionamento de uma CPU
•Utilizado na:•Programação de máquinas baseadas em micro-controladores.
•Programação de sistemas embarcados (embedded systems)
Porque Aprender Linguagem de Montagem
•Permite compreender o funcionamento de uma CPU
•Utilizado na:•Programação de máquinas baseadas em micro-controladores.
•Programação de sistemas embarcados (embedded systems)•Programaçao de trechos críticos (tempo e/ou memória)
Porque Aprender Linguagem de Montagem
•Permite compreender o funcionamento de uma CPU
•Utilizado na:•Programação de máquinas baseadas em micro-controladores.
•Programação de sistemas embarcados (embedded systems)•Programaçao de trechos críticos (tempo e/ou memória) •Acesso a recursos não disponíveis em alto nível
Porque Aprender Linguagem de Montagem
•Permite compreender o funcionamento de uma CPU
•Utilizado na:•Programação de máquinas baseadas em micro-controladores.
•Programação de sistemas embarcados (embedded systems)•Programaçao de trechos críticos (tempo e/ou memória) •Acesso a recursos não disponíveis em alto nível
•OBS.: A linguagem de montagem é absolutamente ligada ao hardware, depende de cada máquina específica (diferentemente das linguagens de alto nível)
Conceitos Básicos
Conceitos Básicos: Processadores
•Máquinas para manipular informações (ou dados)
ProcessadorDados deEntrada
Saída, ou dadosprocessados
Conceitos Básicos: Processadores
•Máquinas para manipular informações (ou dados)
ProcessadorDados deEntrada
Saída, ou dadosprocessados
Programa
Conceitos Básicos: Linguagens de Programação
•Máquinas para manipular informações (ou dados)
ProcessadorDados deEntrada
Saída, ou dadosprocessados
Programa fonte C/C++/JavaPascal/etc...
Linguagem de Montagem
Compilador (gcc, ...)
Montador (as, ...)
Linguagem de Máquina
Conceitos Básicos: Linguagens de Programação
Programa fonteLing. de alto nível (Java, ...)Laços, variáveis, objetos, ...Independente de máquina
Linguagem de Montagem
Linguagem de Máquina
Ling. de baixo nívelSequência de instruções, registradores, posições de memória, ...Dependente de máquina
Código binário (0s e 1s)
Conceitos Básicos: Representando Informações
•Como representar as informações em um processador?•Associando-as a uma grandeza física que possamos gerar, manipular, armazenar, ler, etc...
•Exemplos de grandezas: comprimento, posição angular, força, pressão, fluxo, tensão, corrente, etc...
Conceitos Básicos: Representando Informações
•Máq. Analógicas x Máq. Digitais•Analógicas: Informação associada a uma grandeza contínua•Digitais: Informação associada a uma grandeza discreta
•Máq. Digitais:•Normalmente um pequeno conjunto de faixa de valores (ex. 2 faixas), da grandeza escolhida para representar a informação, distintos e facilmente controláveis e dintinguíveis. Ex: Faixas de tensão.
•A informação é representada por números, na forma digitalizada, isto é, representada por dígitos: Ex: 10, 1001, 145, 80EA2, etc...
Conceitos Básicos: Representando Informações
•A quantidade de dígitos distintos define a base numérica:•Ex: Base 2 => 2 dígitos distintos (0 e 1)
•Utiliza-se tantos componentes digitais quantos necessários para representar a informação desejada.
•Ex:Para representar os valores de 0 a 1000, usando base 2 são necessários 10 componentes digitais - são necessários 1001 combinações diferentes dos estados dos componentes digitais.
•Símbolos normalmente usados para representação dos números:
•Base até 10: algarismos arábicos (0 1 2 ... 9)•Base maior do que 10: acrescenta-se letras,
•Ex Hexadecimal (Base 16): 0 1 2 3 4 5 6 7 8 9 A B C D E F
Conceitos Básicos: BITs e BYTEs
•Bit = BInary digiT = vale sempre 0 ou 1. Elemento básico de informação
Conceitos Básicos: BITs e BYTEs
•Bit = BInary digiT = vale sempre 0 ou 1. Elemento básico de informação•Byte = 8 bits processados em paralelo (ao mesmo tempo)•Word (Palavra) = n bytes
•Tamanho da palavra depende do processador em questão. •Double word = 2 words•Nibble = 4 bits (útil para BCD)
Conceitos Básicos: BITs e BYTEs
•Bit = BInary digiT = vale sempre 0 ou 1. Elemento básico de informação•Byte = 8 bits processados em paralelo (ao mesmo tempo)•Word (Palavra) = n bytes
•Tamanho da palavra depende do processador em questão. •Double word = 2 words•Nibble = 4 bits (útil para BCD)
•Posição dos bits:
0 1 0 1 1 0 1 015 14 13 12 11 10 9 8
0 1 0 1 1 0 1 07 6 5 4 3 2 1 0
0 1 0 1 1 0 1 07 6 5 4 3 2 1 0
1 word (de 16 bits)1 byte
high byte low byte
Conceitos Básicos: Representação de Números
•Representação binária de números não sinalizados
n-1 Qualquer número em qualquer base => N = Σ di x basei
i=0a) Base 10 (Decimal)
230910 = 2x103 + 3x102 + 0x101 + 9x100
= 2000 + 300 + 0 + 9
Conceitos Básicos: Representação de Números
•Representação binária de números não sinalizados
n-1 Qualquer número em qualquer base => N = Σ di x basei
i=0a) Base 10 (Decimal)
230910 = 2x103 + 3x102 + 0x101 + 9x100
= 2000 + 300 + 0 + 9
Exercício:
b) Base 2 (Binária)101001112 = ...
•Representação binária de números não sinalizados
n-1 Qualquer número em qualquer base => N = Σ di x basei
i=0a) Base 10 (Decimal)
230910 = 2x103 + 3x102 + 0x101 + 9x100
= 2000 + 300 + 0 + 9
Exercício:
b) Base 2 (Binária)101001112 = 1x27 + 0x26 + 1x25 + 0x24 + 0x23 + 1x22 + 1x21 + 1x20
= 128 + 0 + 32 + 0 + 0 + 4 + 2 + 1 = 16710 (Solução)
Conceitos Básicos: Representação de Números
•Representação binária de números não sinalizados
n-1 Qualquer número em qualquer base => N = Σ di x basei
i=0a) Base 10 (Decimal)
230910 = 2x103 + 3x102 + 0x101 + 9x100
= 2000 + 300 + 0 + 9
Exercício:
b) Base 2 (Binária)101001112 = 1x27 + 0x26 + 1x25 + 0x24 + 0x23 + 1x22 + 1x21 + 1x20
= 128 + 0 + 32 + 0 + 0 + 4 + 2 + 1 = 16710 (Solução)
MSB (Most significant bit): bit mais significativo.LSB (Least significant bit): bit menos significativo.
1 0 1 0 0 1 1 17 6 5 4 3 2 1 0
Conceitos Básicos: Representação de Números
MSB LSB
Conceitos Básicos: Representação de Números
•Representação binária de números não sinalizados
n-1 Qualquer número em qualquer base => N = Σ di x basei
i=0
Caso particulares de bases:
B = 1 - Unário - tem utilidade ? B = 2 - Binário B = 8 - Octal B = 10 - Decimal B = 16 - Hexadecimal
Dígitos hexadecimais: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, FNotação hexadecimal é uma forma compacta e prática para representar binários 01010111011011102 = 576E16
Conceitos Básicos: Representação de Números
•Conversão entre bases
Tipo de conversão Procedimento
Decimal => BinárioDivisões sucessivas por 2 até se obter zero no quociente. Leitura dos dígitos binários no resto de baixo para cima.
Binário => DecimalSoma de potências de 2 cujo expoente é a posição do bit e cujo coeficiente é o próprio bit.
Hexadecimal => BinárioExpandir cada dígito hexa em quatro dígitos binários segundo seu valor.
Binário => HexadecimalCompactar cada quatro dígitos binários em um único dígito hexa segundo seu valor.
Decimal => HexadecimalDivisões sucessivas por 16 até se obter zero no quociente. Converter restos p/ dígitos hexadecimais.Leitura dos dígitos de baixo para cima.
Hexadecimal => Decimal Soma de potências de 16 cujo expoente é a posição do dígito e cujo coeficiente é o valor do próprio dígito hexa.
•Representação binária de números sinalizados
1) Representação com sinal e magnitudeO bit mais significativo (MSB) é o sinal do número. Se for 1 o número é negativo se for 0 o número é positivo.
Exemplo 1: 011100012
valor não sinalizado = 0 x 27 + 1 x 26 + 1 x 25 + 1 x 24 + 0 x 23 + 0 x 22 + 0 x 21 + 1 x 20
= 64 + 32 + 16 + 1 = 11310
valor sinalizado bit de sinal = 0 => " + " (positivo) = 1 x 26 + 1 x 25 + 1 x 24 + 0 x 23 + 0 x 22 + 0 x 21 + 1 x 20 = = 64 + 32 + 16 + 1 = 11310, logo = +11310
Conceitos Básicos: Representação de Números
Exemplo 2: 101100012
valor não sinalizado = 1 x 27 + 0 x 26 + 1 x 25 + 1 x 24 + 0 x 23 + 0 x 22 + 0 x 21 + 1 x 20 = 128 + 32 + 16 + 1 = 17710
valor sinalizado bit de sinal = 1 => " - " (negativo) = 0 x 26 + 1 x 25 + 1 x 24 + 0 x 23 + 0 x 22 + 0 x 21 + 1 x 20 = 32 + 16 + 1 = 4910, logo = - 4910
Conceitos Básicos: Representação de Números
Conceitos Básicos: Representação de Números
•Exemplo 3:
70FF16 = 01110000111111112
valor não sinalizado: = 0 X 215 + 1 X 214 + . .. + 1 X 22 + 1 X 21 + 1 X 20
valor sinalizado: bit de sinal = 0 => " + " (positivo) = + (1 X 214 + . .. + 1 X 22 + 1 X 21 + 1 X 20)
Exemplo 4: C77716 = 11000111011101112
valor não sinalizado: = 1 X 215 + 1 X 214 + ... + 1 X 22 + 1 X 21 + 1 X 20
valor sinalizado: bit de sinal = 1 => " - " (negativo) = - (1 X 214 + ... + 1 X 22 + 1 X 21 + 1 X 20)
•Representação binária de números sinalizados
2) Complemento de 1
- X = (2n - 1) – X n é o número de bits utilizados na representação
3) Complemento de 2
- X = (2n) – X n é o número de bits utilizados na representação
Conceitos Básicos: Representação de Números
•Representações possíveis de números sinalizados
• Sinal e Magnitude Complemento de 1 Complemento de 2 000 = +0 000 = +0 000 = +0 001 = +1 001 = +1 001 = +1 010 = +2 010 = +2 010 = +2 011 = +3 011 = +3 011 = +3 100 = -0 100 = -3 100 = -4 101 = -1 101 = -2 101 = -3 110 = -2 110 = -1 110 = -2 111 = -3 111 = -0 111 = -1
•Representação em Complemento de 2 é utilizada pois temos apenas uma representação para o zero e podemos fazer a soma e subtração com apenas um circuito.
Conceitos Básicos: Representação de Números
• Números sinalizados de 32 bits, em Complemento de 2:
0000 0000 0000 0000 0000 0000 0000 00002 = 010
0000 0000 0000 0000 0000 0000 0000 00012 = + 110
0000 0000 0000 0000 0000 0000 0000 00102 = + 210
...0111 1111 1111 1111 1111 1111 1111 11102 = + 2,147,483,64610
0111 1111 1111 1111 1111 1111 1111 11112 = + 2,147,483,64710
1000 0000 0000 0000 0000 0000 0000 00002 = – 2,147,483,64810
1000 0000 0000 0000 0000 0000 0000 00012 = – 2,147,483,64710
1000 0000 0000 0000 0000 0000 0000 00102 = – 2,147,483,64610
...1111 1111 1111 1111 1111 1111 1111 11012 = – 310
1111 1111 1111 1111 1111 1111 1111 11102 = – 210
1111 1111 1111 1111 1111 1111 1111 11112 = – 110
Conceitos Básicos: Representação de Números
maxint
minint
Representação em Complemento de 2 de um número:
• Partindo-se da representação do negativo do valor a ser achado, nega-se
este número (negar = inverter) e somar 1
Exemplo 1:
-5 em Complemento de 2 (usando-se 5 bits para a sua representação)
Partindo-se da representação do 510 = 001012 => (invertendo os bits) =
11010 => (somando 1) = 110112 = - 5 em Complemento de 2
Exemplo 2:
+5 em Complemento de 2 (usando-se 5 bits para a sua representação)
Partindo-se da representação do -510 = 110112 => (invertendo os bits) =
001002 => (somando 1) = 001012 = +5 em Complemento de 2
Conceitos Básicos: Representação de Números
• Conversão de números com n bits em números com mais que n bits:
– copiar o bit mais significativo (bit de sinal) nos outros bits (extensão do
sinal):
Exemplo:
0010 => 0000 0010
1010 => 1111 1010
Conceitos Básicos: Representação de Números
Operações de soma e adição binárias
• Como aprenderam no primeiro grau: (vai-um/vem-um)
0111 (7) 0111 (7) 0110 (6) + 0110 (6) -0110 (6) -0101 (5)
1101 (13) 0001 (1) 0001 (1)
• Subtração em complemento de 2 é feito como se fosse uma soma • (A – B = A + (-B)):
– subtração usando adição de números negativos. Ex: 7 - 6 = 7 + (-6)
0111 (+7) + 1010 (-6)
0001 (=1)
Conceitos Básicos: Representação de Números
Overflow
• Overflow (resultado maior (menor) que a palavra do computador pode representar):
Exemplo: • Quando na operação abaixo ocorre e quando não ocorre overflow ???
0111 (7) ou (+7) + 0001 (1) ou (+1)
1000
Conceitos Básicos: Representação de Números
Detecção de Overflow
• Não existe overflow quando adicionamos um número positivo e um negativo• Não existe overflow quando os sinais dos números são os mesmos na
subtração• Ocorre overflow quando os valores afetam o sinal:
– Somando dois números positivos dá um número negativo– Somando dois números negativos dá um número positivo– Subtrai um número negativo de um positivo e dá negativo– Subtrai um número positivo de um negativo e dá positivo
Exercício: Compute o resultado das operações abaixo e verifique se houve overflow
• 4 + 5 em uma representação com números sinalizados de 8 bits• 4 + 5 em uma representação com números sinalizados de 4 bits
Conceitos Básicos: Representação de Números
Aula 2
Multiplicação Binária• Exemplo:1010 x 101
Conceitos Básicos: Representação de Números
Multiplicação Binária• Exemplo:1010 x 101
Solução: 1 0 1 0 x 1 0 1 1 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 1 0
Conceitos Básicos: Representação de Números
Divisão Binária• Exemplo:1 1 0 0 1 0 / 101
Conceitos Básicos: Representação de Números
Divisão Binária• Exemplo:1 1 0 0 1 0 / 101
Conceitos Básicos: Representação de Números
110010 101
1010-10100101
-1010000
Solução
Representação de Caracteres Alfanuméricos
• Padrão ASCII - American Standard Code for Information Interchange também conhecido como ISO 646-1973 (international) 7-bit code (128 different characters)
• Exemplo (Tabela ASCII)
Conceitos Básicos: Representação de Números
64 @65 A66 B67 C68 D69 E70 F71 G72 H73 I
48 049 150 251 352 453 554 655 756 857 9
96 ´97 a98 b99 c100 d101 e102 f103 g104 h105 i
Representação de Caracteres Alfanuméricos• ASCII - American Standard Code for Information Interchange (ISO 8859-1) 7-bit code (128 different characters) Números, pontuação e letras Alfabeto americano sem símbolos para á, é, í, ç...
Ainda é muito utilizado
•EBCDIC - Extended Binary-Coded-Decimal Interchange Code Formato proprietário da IBM 8-bit code Não é compatível com ASCII
•ISO Latin1 8-bit code ASCII aumentado, ou estendido (ASCII é compatível) Tem caracteres para linguagens européias, inclusive o português
•Unicode (16 bits)
Conceitos Básicos: Representação de Números
Conceitos Básicos: Memória
•Memória: local do computador (hardware) onde se armazenam temporária ou definitivamente dados (números, caracteres e instruções)•Posição de memória ou “endereço”: localidade física da memória onde se encontra o dado.
•Organização da memória:
Endereço Conteúdo... ...
4MB 10110101... ...
1048576 01001010... ...
1765 01001101... ...4 010100003 111111112 111010011 110110100 01100100
Conceitos Básicos: Endianness
•Words são representadas em bytes consecutivos na memória.•Endianness: define a organização das palavras (Words) na memória.
•Exemplo:102510 = 00000000 00000000 00000100 000000012
Representação RepresentaçãoEndereço Big-Endian (MOTOROLA) Little-Endian (INTEL) 00 00000000 00000001 01 00000000 00000100 02 00000100 00000000 03 00000001 00000000
Processo de tradução de umprograma em linguagem de alto nível
PROGRAMA LING. ALTO NÍVEL
COMPILADOR
PROGRAMA LING. INTERMEDIÁRIA
(LING. ASSEMBLY)
MONTADOR (ASSEMBLER)
PROGRAMA LING. OBJETO (BINÁRIO)
LIGADOR - LINKER
BIBLIOTECA DE FUNÇÕES DA LINGUAGEM
PROGRAMA LING. EXECUTÁVEL
(BINÁRIO)
Conceitos Básicos: Ling. de Programação
• Linguagem de Alto Nível – próximo ao ser humano, escrita de forma textual.– Ex: if (a==b) a=b+c;
• Linguagem de Montagem (Assembly) – próximo à linguagem de máquina, escrita em códigos (mnemônicos)– Ex: ADD AX,BX;
• Linguagem de Máquina – linguagem que o computador consegue executar – códigos binários– Ex: 01010001
Conceitos Básicos: Ling. de Programação
Memória Principal
Unidade deE/S
Barramento de controle
Barramento de endereço
Barramento de dados
REM RDM
UNIDADEDE
CONTROLE
PC
RI
SP
ULA
. . .Para todos o elementos internos da
CPUCPU
RegistradoresPropósito
Geral
Conceitos Básicos: O ComputadorOrganização Básica de um Computador Digital
Organização Básica de um Computador Digital
• Unidade Central de Processamento – CPU:– Unidade de Controle – UC;– Unidade Lógica e Aritmética – ULA;– Registradores de Propósito Geral – GPR;– Registradores Específicos.
• Unidade de Memória hierarquia de memória:– Memória Principal;– Memória Secundária;
• Unidade de Entrada e Saída:– Interfaces;– Canais de E/S;– Processadores E/S.
• Barramentos:– Barramento de Endereços;– Barramento de Dados;– Barramento de Controle.
Conceitos Básicos: O Computador
• Unidade Central de Processamento – CPU
– Responsável por todo o processamento (execução de programas) no sistema
• Unidade de Controle: circuito que gera os sinais de controle responsáveis pelo gerenciamento (controle) de todas as atividades do computador.
• Unidade Lógica e Aritmética – ULA: circuito responsável por efetuar todas as operações lógicas e aritméticas.
• Registradores de Propósito Geral – GPR: elementos de memória (circuitos) responsáveis por armazenar os dados que são utilizados durante a execução de um programa (instruções).
Conceitos Básicos: O Computador
• Unidade Central de Processamento – CPU (cont.)
• Registradores Específicos:– Program Counter – PC: armazena o endereço da próxima instrução a
ser executada;
– Stack Pointer – SP: armazena o endereço do topo da pilha;
– Registrador de Instrução – RI: armazena a instrução que está sendo executada;
– Registrador de Dados de Memória – RDM: armazena os dados que vem da memória (lidos) ou que vão para a memória (escritos);
– Registrador de Endereços de memória – REM: armazena o endereço enviado para a memória, quando ocorrer um acesso à mesma (leitura ou escrita)
Conceitos Básicos: O Computador
• Unidade de Memória – Hierarquia de Memória: sistema de memória com objetivo de melhorar o
desempenho de um sistema computacional, diminuindo o tempo de acesso médio
Regs. CPU
Memória Cache
MemóriaPrincipal
MemóriaSecundária
Custo de armazenamento por bit maiorTempo de acesso menorCapacidade de armazenamento menor
Custo de armazenamento por bit menorTempo de acesso maiorCapacidade de armazenamento maior
Conceitos Básicos: O Computador
• Memórias– Semicondutoras: fabricadas com materiais semicondutores (silício) –
circuitos integrados.• RAM – Random Access Memory : memória de acesso aleatório, volátil.
– SRAM – RAM estática: seu conteúdo só se altera quando se escreve nela ou quando se desliga a tensão de alimentação. Exemplo – registradores da CPU, memória cache.
– DRAM – RAM dinâmica: periodicamente é necessário reescrever o seu conteúdo (refresh de memória) pois há diminuição de cargas elétricas. Exemplo – memória principal.
• ROM – Read Only Memory: memória somente de leitura, não volátil.– ROM: gravação feita pelo fabricante da memória, não apagável;– PROM – Programmable ROM: programação feita pelo usuário, não apagável;– EPROM – Erasable PROM: programação feita pelo usuário, apagável através de
luz ultra-violeta;– EEPROM – Electrical EPROM: programação feita pelo usuário, apagável
eletricamente;• Flash – memória semicondutora, não volátil e de escrita e leitura, apagável.
Conceitos Básicos: O Computador
• Memórias (continuação)– Exemplo: memórias secundárias
• Magnéticas– Discos – Hard Disk – HDs– Fitas – cartuchos, rolos, etc.
• Ópticas – CD-ROM, DVD, etc.
Disco Magnético:pratos, lados, trilhas e setores
Conceitos Básicos: O Computador
Aula 3
• Unidade de Entrada e Saída
– Responsável por gerenciar a ligação entre CPU-Memória-barramentos e os periféricos.
– Interfaces – circuitos simples que apenas compatibilizam a comunicação (protocolo). O controle da transferência é feita pela CPU. Exemplo: interface serial RS232, interface paralela, interface USB;
– Canais de E/S – circuitos que controlam e compatibilizam a comunicação. A CPU apenas inicia a transferência. Exemplo – Controlador de Acesso Direto à Memória (DMA – Direct Access Memory);
– Processadores de E/S – são CPUs dedicadas a fazer E/S de dados. Iniciam e controlam a comunicação.
Conceitos Básicos: O Computador
• Barramentos: Conjunto de fios que fazem a ligação física entre as diversas unidades.– Barramento de Endereços: Por onde trafegam os endereços;– Barramento de Dados: Por onde trafegam os dados;– Barramento de Controle: por onde trafegam os sinais de controle;
• Observação: Internamente à CPU, existe um barramento interno de dados que liga os
registradoes com a ULA e a UC, e um barramento interno de controle que liga a UC a todos os elementos da CPU.
Conceitos Básicos: O Computador
• Conjunto de Instruções
– Cada processador tem o seu conjunto de instruções de linguagem de máquina (ISA – Instruction Set Architecture). Este conjunto contém todas as instruções, em linguagem de máquina, que o processador pode executar.
• Formato das Instruções
– Tamanho (número de bits) e o significado de cada campo de bits de uma instrução de linguagem de máquina.
Conceitos Básicos: Execução de Instruções
Memória Principal
Unidade deE/S
Barramento de controle
Barramento de endereço
Barramento de dados
REM RDM
UNIDADEDE
CONTROLE
PC
RI
SP
ULA
. . .Para todos o elementos internos da
CPUCPU
RegistradoresPropósito
Geral
Organização Básica de um Computador Digital
Conceitos Básicos: Execução de Instruções
Execução de uma instrução de acesso à memória pela CPU• Ciclos de execução de uma instrução:
– Leitura da instrução da memória principal – Fetch da Instrução• REM←PC• Read (sinal de controle)• PC ← PC atualizado• RDM ← [REM] (instrução lida)
– Decodificação da instrução• RI ← RDM (instrução)• É feita a decodificação pela Unidade de Controle
– Busca dos operandos da instrução na memória – se houver• REM ← Endereço do Dado • Read (sinal de controle)• RDM ← [REM] (operando lido)
– Execução da instrução – depende da instrução
– Escrita no Banco de Registradores• Obs – Quando usamos [..], significa que estamos acessando um conteúdo de memória, cujo endereço está
dentro dos colchetes.
Conceitos Básicos: Execução de Instruções
Execução de uma instrução sem acesso à memória pela CPU• Ciclos de execução de uma instrução:
– Leitura da instrução da memória principal – Fetch da Instrução• REM←PC• Read (sinal de controle)• PC ← PC atualizado• RDM ← [REM] (instrução lida)
– Decodificação da instrução• RI ← RDM (instrução)• É feita a decodificação pela Unidade de Controle
– Busca dos operandos da instrução no banco de registradores• Read-Banco-Reg (sinal de controle)• ULA ← Operandos lidos
– Execução da instrução – depende da instrução
– Escrita no Banco de Registradores
Conceitos Básicos: Execução de Instruções
ESTUDO DE CASO - CPU HIPOTÉTICA• Formatos das instruções da CPU HIPOTÉTICA:
– Formato tipo I – Uma palavra de 8 bits, com os seguintes campos:
00 – R001 – R110 – R211 – R3
Código que diz o que a instrução faz
Conceitos Básicos: Execução de Instruções
opcode reg1 reg2
4 bits 2 bits 2 bits
• Exemplo: MOV R0,R1 ; R0 ← R1
ESTUDO DE CASO - CPU HIPOTÉTICA• Formatos das instruções da CPU HIPOTÉTICA:
– Formato tipo II – Duas palavras de 8 bits, com os seguintes campos:
00 – R001 – R110 – R211 – R3
Código que diz o que a instrução faz
Conceitos Básicos: Execução de Instruções
opcode reg1 00
4 bits 2 bits 2 bits
Palavra 1
operando - número
8 bits
Palavra 2
• Exemplos:MOV R0, 5 ; R0 ← 5MOV R0, [5] ; R0 ← [5]
Conceitos Básicos: Execução de Instruções
Mnemônico Operandos Opcode SignificadoInstruções de Movimentação de DadosInstruções de Movimentação de DadosInstruções de Movimentação de DadosInstruções de Movimentação de Dados
1 MOV Reg1,Reg2 0000 Reg1 ←Reg2 2 MOV Reg,imed 1000 Reg ← imed3 MOV Reg,[end] 1001 Reg ← [end]4 MOV [end],Reg 1010 [end] ← Reg
Instruções Aritméticas e LógicasInstruções Aritméticas e LógicasInstruções Aritméticas e LógicasInstruções Aritméticas e Lógicas
5 ADD Reg1,Reg2 0001 Reg1 ← Reg1 + Reg2
6 ADD Reg,imed 1011 Reg ← Reg + imed
7 SUB Reg1,Reg2 0010 Reg1 ← Reg1 - Reg2
8 SUB Reg,imed 1100 Reg ← Reg – imed
9 AND Reg1,Reg2 0011 Reg1 ← Reg1 e Reg2
10 AND Reg,imed 1101 Reg ← Reg e imed
11 OR Reg1,Reg2 0100 Reg1 ← Reg1 ou Reg2Instruções de Manipulação de PilhaInstruções de Manipulação de PilhaInstruções de Manipulação de PilhaInstruções de Manipulação de Pilha
12 PUSH Reg 0101 SP-- , [SP] ← Reg
13 POP Reg 0110 Reg←[SP], SP++Instruções de Controle de Fluxo de ExecuçãoInstruções de Controle de Fluxo de ExecuçãoInstruções de Controle de Fluxo de ExecuçãoInstruções de Controle de Fluxo de Execução
14 JMP end 1110 PC ← end
15 CALL end 1111 SP-- , [SP]←PC , PC←end
16 RET --- 0111 PC←[SP] , SP++
Exercícios
• Mostrar o ciclo de execução de instruções para todas as instruções do ISA da CPU Hipotética 1.
Conceitos Básicos: Execução de Instruções
ESTUDO DE CASO - CPU HIPOTÉTICA 2
Memória Principal
Unidade deE/S
Bus de controle
Bus de endereço
Bus de dados
UNIDADEDE
CONTROLE
PC
RI
SP
ULA
Y . . .Para todos o elementos internos da
CPUZ
CPU
R0
R1
R2
R3
Conceitos Básicos: Execução de Instruções
Exercícios
• Mostrar o ciclo de execução de instruções para todas as instruções do ISA da CPU Hipotética 2.– O que difere da CPU hipotética 1?
Conceitos Básicos: Execução de Instruções
CPU HIPOTÉTICA 3
Memória PrincipalR
eg. I
nstr.
PC
U.C.
ULA
Banco
de Registra
dores
. . .
Barramento deControle
Barramento de Endereços
Barramento de Dados
CPU
Rx
Conceitos Básicos: Execução de Instruções
A
B
ESTUDO DE CASO - CPU HIPOTÉTICA 3 - Formato das instruções
00 – R001 – R110 – R211 – R3
Código que diz o que a instrução faz
Conceitos Básicos: Execução de Instruções
opcode reg1
3 bits 2 bits 2 bits
– Formato tipo S - subrotina– Formato tipo J – Jump
– Formato I – Imediato – Formato tipo R – Registrador
reg2
1 vago
opcode num
3 bits 5 bits
opcode num
3 bits 4 bits
1 bit função
00 – R001 – R110 – R211 – R3
Código que diz o que a instrução faz
opcode reg1
3 bits 2 bits 3 bits
num
Conceitos Básicos: Execução de Instruções
Mnemônico Operandos Opcode Significado
Instrução especialInstrução especialInstrução especialInstrução especial
1 MV Rx, reg 000 Rx ← Reg
Instruções de Acesso à MemóriaInstruções de Acesso à MemóriaInstruções de Acesso à MemóriaInstruções de Acesso à Memória
2 LW Reg, num 001 Reg ← [Rx + num]
3 SW Reg, num 010 [Rx + num] ← Reg
Instruções Aritméticas e LógicasInstruções Aritméticas e LógicasInstruções Aritméticas e LógicasInstruções Aritméticas e Lógicas
4 ADD Reg1,Reg2 011 Reg1 ← Reg1 + Reg2
5 SUB Reg1,Reg2 100 Reg1 ← Reg1 - Reg2
6 AND Reg1,Reg2 101 Reg1 ← Reg1 e Reg2
Instruções de Controle de Fluxo de ExecuçãoInstruções de Controle de Fluxo de ExecuçãoInstruções de Controle de Fluxo de ExecuçãoInstruções de Controle de Fluxo de Execução
7 JMP num 110 PC ← num
8 JAL num 111 0 Rx ← PC; PC ← num
9 RET - 111 1 PC ← Rx
ESTUDO DE CASO - CPU HIPOTÉTICA 3 - Conjunto de instruções
Exercícios
• Associar cada instrução a um formato apropriado• Mostrar o ciclo de execução de instruções para todas as instruções do ISA
da CPU Hipotética 3.• Representar o seguinte programa em linguagem de máquina
– MV R1, 0 – MV Rx, R1– LW R1, 0– MV R2, 1h– ADD R1, R2– SW R1, 0
Conceitos Básicos: Execução de Instruções
• Arquiteturas Harvard versus Von Neuman
– Arquitetura Harvard:• Computador: “Harvard Mark 1” - 1944
– Memórias separadas para armazenar dados e código (Instruções)
– Acesso à memória para busca da próxima instrução e para execução da instrução atual pode ser feito simultaneamente.
• Dados e Instruções são armazenados em espaços de endereçamentos diferentes.
– Arquitetura Von Neuman: Programa é armazenado na mesma memória que os dados.• Dado pode ser visto como código e código pode ser visto como dado.
– Código pode ser manipulado pela própria máquina. Ex:
• Carregar um programa do disco para a própria memória (dado) e depois executá-lo (código).
• Geração de código dinâmica e código auto-modificável.
Conceitos Básicos: Harvard x Von Neuman
Aula 4
• Arquiteturas Harvard modificadas
– Combinas características das arquiteturas Harvard e Von Neuman.
• A maioria dos processadores modernos utiliza caches distintas para armazenamento de dados e de código (x86, Sparc, PowerPC, MIPS, ...)
• Sob a perspectiva da CPU, dados e código são armazenados em dispositivos diferentes: cache de instruções (I$) e cache de dados (D$).
• Entretanto, sob a perspectiva do usuário (programador) tanto código quanto dados são armazenados na mesma memória (RAM). Os programados não precisam estar cientes da presença de caches na hierarquia de memória.
Conceitos Básicos: Harvard x Von Neuman
• Arquiteturas Harvard x Von Neuman x Harvard Modificadas
– Arquiteturas atuais não possuem uma distinção tão clara:
• Microcontroladores PIC17, PIC18 e o Atmel 8-bit AVR são considerados arquiteturas Harvard pois armazenam dado e código em espaços de endereçamento distintos (endereço 0 de dados aponta para uma posição de memória distinta do endereço 0 de código).
• A maioria dos processadores modernos (x86, PowerPC, MIPS, ARM9, ...) são considerados arquiteturas Harvard Modernas pois armazenam dados e memória no mesmo espaço de endereçamento (e dispositivo físico -- RAM) mas sob o aspecto da CPU existem dois dispositivos distintos para armazenar instruções e dados: a cache de instruções e a cache de dados.
• O microcontrolador ARM7TDMI é considerado uma arquitetura Von Neuman pois armazena tanto dado quanto instruções na mesma memória e não possui vias distintas para acesso a dados e à código.
Conceitos Básicos: Harvard x Von Neuman
• CISC: Complex Instruction Set Computer– Exemplos: System/360, PDP-11, VAX, Motorola 68k, and x86. – Instruções complexas: Uma instrução pode executar diversas operações (Ex:
carregar dado da memória, realizar uma operação aritmética e armazenar o dado de volta na memória)• Programas mais compactos e menos acessos à memória para busca de
instruções.– Tentativa de gerar um conjunto de instruções mais próximos às linguagens de
programação de alto nível. (Ex: instrução para controle de laço).– Complexidade do conjunto de instruções pode tornar o projeto do processador
um desafio à parte.
• RISC: Reduced Instruction Set Computer– Exemplos: MIPS, Sparc, ...– Instruções simples: Cada instrução faz uma operação simples.– Compiladores permitem o mapeamento automático (e eficiente) de ling. de alto
nível para instruções simples.– Simplicidade do conjunto de instruções permite focar no desempenho (execução
em pipeline, super-escalar, etc...)
Conceitos Básicos: RISC x CISC