tópico: introdução à organização de computadores · – cada palavra é uma unidade de dados...

84
Instituto Federal de Minas Gerais Campus Formiga Tópico: Introdução à Organização de Computadores de Computadores Introdução à Computação Prof. Diego Mello ([email protected])

Upload: hoangmien

Post on 27-Nov-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Instituto Federal de Minas Gerais

Campus Formiga

Tópico: Introdução à Organização de Computadoresde Computadores

Introdução à ComputaçãoProf. Diego Mello

([email protected])

Page 2: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Primeiros Computadores• No princípio, programar um computador era um feito

mais de engenharia elétrica do que de projeto de algoritmos

• Programar era sinônimo de conectar cabos à plugues

Diagrama esquemático do ENIAC.do ENIAC.

Fonte: Adaptado de [3]

Page 3: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Primeiros ComputadoresDois acumuladores do ENIAC ligados por fio para realizar uma adição.

As luzes de neon mostram os números +1203762893 e +3033331112.

Fonte: Computer History Museum

Page 4: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Primeiros Computadores

Programadoras em frente ao painel de controle do ENIAC.

Fonte: Computer History Museum

Page 5: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Primeiros Computadores

Um engenheiro do ENIAC e uma programadoraverificam a configuração próximo dos racks

multiplicadores. Os 20 acumuladores eram sua unidade funcional primária, unidade funcional primária, mas o ENIAC também tinha unidades especiais para multiplicação, divisão e raízquadrada.

Fonte: Computer HistoryMuseum.

Page 6: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura de Von Neumann

• Nos primeiros computadores, havia necessidade de reconfigurar os cabos para cada novo problema a se resolver

• Mauchly e Eckert (ENIAC) – Imaginaram uma forma de armazenar as instruções do programa,

evitando o trabalho entediante de recabear o sistema. Idéia base para o EDVAC (1944).para o EDVAC (1944).

• Em 1945, John Von Neumann publica o conceito de programa armazenado– Sequência de instruções armazenados na memória para serem

usados pela máquina no seu processamento (programa)

– Computador pode ser usado como um dispositivo de propósito geral

Page 7: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura de Von Neumann: Características

• Dispositivo de entrada no qual dados e instruções

podem ser inseridos

• Um armazenamento onde resultados podem ser inseridos e de onde instruções e dados podem ser inseridos e de onde instruções e dados podem ser buscados

• Uma unidade aritmética para processar dados

• Uma unidade de controle para buscar, interpretar e executar instruções a partir do armazenamento

• Um dispositivo de saída para entregar os resultados

para o usuário

Page 8: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura de Von Neumann

• CPU– Registradores

– ALU

– Controle

• Memória

Fonte: Adaptado de [4]

• Memória

• Sistema I/O

Page 9: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura de Von Neumann

• Memória– Células de memória arranjadas na forma de diversas palavras

– Cada palavra é uma unidade de dados que pode ser lida ou escrita

– Cada palavra tem um endereço

• Registradores• Registradores– Palavras de memória especiais, embutidas na CPU

– Contador de Programa (PC), Registrador de Instrução (IR), Acumuladores,

Memory Data Register (MDR) e Memory Address Register (MAR)

• Unidade Aritmética/Lógica (ALU)– Cálculos

– Comparações

– Realiza as operações aritméticas e lógicas nos registradores ou memória

Page 10: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura de Von Neumann

• Em algumas implementações, existe um registrador especial para separar os dados das instruções na memória sequencial.sequencial.

• Instruction Pointer ou Program

Counter é um registro especial, que guarda o endereço da instrução a ser executada no próximo ciclo.

Fonte: Adaptado de [6]

Page 11: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura de Von Neumann

• Unidade de Controle– Contador de Programa (PC):– Registrador de Instrução (IR)

• Contador de Programa– Contém o endereço da próxima instrução a ser carregada

• Registrador de Instrução– Contém a instrução buscada da memória para execução

• Sistema de Entrada/Saída– Acesso aos dispositivos externos à CPU

• Barramento– Estrutura na qual os dados e endereços fluem– O fluxo é gerenciado pela unidade de controle, por meio de sinais

Page 12: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura de Von Neumann

• Ciclo de Execução de Von Neumann

– A próxima instrução a ser executada, cujo endereço é obtido do PC, é buscada da memória e armazenada no IR

– Instrução é decodificada

– Operandos são buscados da memória e armazenados em

registradores da CPU

– A instrução é executada na ALU

– O resultado é transferido dos registradores da CPU para a memória

Page 13: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Refinamento: Von Neumann + Sistema de Barramento

Fonte: Adaptado de [2]Arquitetura dos computadores modernos se assemelhaà esse modelo.

Page 14: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Organização de Sistemas Computacionais: Hierarquia de Níveis

Arquitetura, Compiladores, Linguagens Formais, Teoria Computação, Paradigmas

AED, Projeto de Algoritmos, Paradigmas de Programação

Eng. Software, AED, Programação, BD, IHM, SI

Fonte: Adaptado de [3]

Lógica, Eletrônica Digital, Sistemas Digitais, Arquitetura

Arquitetura/Organização de Computadores,

Microprocessadores, Progr.

Organização de Comp., Microprocessadores, Progr.

Sistemas Operacionais, Sistemas Distribuídos, Redes

Page 15: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Abstração de Memória

• Array de células adjacentes, cada qual capaz de armazenar 1 bit de informação: 0 ou 1.

• Estas células são organizadas para formar grupos de tamanho fixo.– 1 byte = 8 bits– 1 byte = 8 bits

• Word: a menor quantidade de memória endereçável

• À cada word está associado um endereço– Local da memória onde a word está armazenada.– Usado nas operação de memory read e memory write.

Page 16: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Abstração de Memória

Fonte: Adaptado de [8]

Page 17: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Memory Write (Escrita)

• A CPU carrega a word a ser escrita na memória para no registrador Memory Data Register (MDR)

• A CPU carrega o endereço onde a word deverá ser escrita no registrador Memory Address Registerescrita no registrador Memory Address Register(MAR)

• Um sinal especial, denominado de write, é gerado pela CPU para indicar que a word armazenada no MDR deve ser gravada no endereço contido no MAR.

Page 18: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Memory Write (Escrita)

Fonte: Adaptado de [8]

Page 19: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Memory Read (Leitura)

• O endereço da word a ser recuperada da memória é armazenado no Memory Address Register (MAR)

• Um sinal de read é gerado pela CPU para indicar que a word cujo endereço está anotado no MAR deve ser word cujo endereço está anotado no MAR deve ser recuperado da memória e armazenado no registrador Memory Data Register (MDR).

• Após um determinado tempo (atraso de leitura da memória) a word requerida estará armazenada no registrador MDR e está pronta para ser lida pela CPU

Page 20: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Memory Read (Leitura)

Fonte: Adaptado de [8]

Page 21: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Pilha

• É uma estrutura de dados onde o último item (dado) armazenado é o primeiro a ser recuperado.

• É util para fazer chamadas de função durante a • É util para fazer chamadas de função durante a execução de um programa.

– Argumentos da função são empilhados antes da chamada

– A chamada é feita e desloca a execução do programa para outra parte do código

– Dentro da função os argumentos são lidos e processados

Page 22: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Operações em Pilha

• Registro:

– Stack Pointer (SP): marca o topo da pilha

• Operação Push• Operação Push

– Insere uma word no topo da pilha

• Operação Pop

– Recupera a word do topo da pilha

Page 23: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Operações em Pilha

Inserindo o valor 5A na pilha com PUSH

Fonte: Adaptado de [8]

Retirando o valor 5A na pilha com POP

Page 24: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Conjunto de Instruções

• Conjunto de Instruções (Instruction Set): é o vocabulário de comandos entendido por uma dada arquitetura.

• Cada arquitetura tem seu próprio conjunto de instruções

• Entretando, a hierarquia de camadas dos sistemas computacionais permite que o mesmo programa rode em arquiteturas compatíveis.

Page 25: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Operandos

• Qualquer informação envolvida em uma operação de CPU precisa ser endereçada.

• Na terminologia de computação, denominamos essa • Na terminologia de computação, denominamos essa informação de operando.

• Nas instruções, temos

– opcode: qual é a operação a ser realizada

– endereço: local onde se aplica a operação

Page 26: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Operandos

• Operação / Operando Origem / Operando Destino

• Exemplo de operação– add, sub, write e read

• Operando de Origem– Constante, Valor na Memória, Valor no Registrador

• Operando de Destino– Registrador ou Endereço de Memória

Page 27: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Movimentação de Dados

• São instruções usadas para movimentar dados entre as diferentes unidades da máquina

Operacao Descrição

MOVEMove uma word ou bloco de dados de uma origem (registrador ou

• LOAD R1 , R2

• STORE 1022, R1

• MOVE R2 , 2045

MOVEmemória) para um destino

LOAD Carrega dados da memória para um registrador

STORE Armazena dados de um registrador para a memória

PUSH Armazena dados de um registrador para a pilha

POP Recupera dados da pilha para um registrador

Page 28: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Aritméticas e Lógicas

• São usadas para realizar operações aritméticas e lógicas nos conteúdos de registradores e memória

Operacao Descrição

ADD Soma aritmética de dois operandos

SUB Diferença aritmética de dois operandos

• ADD R1, R2

• SUB R1, R2, R0

• INC R1

SUB Diferença aritmética de dois operandos

MULT Produto de dois operandos

DIV Divisão de dois operandos

INC Incrementa o conteúdo de um registrador em 1 unidade

DEC Decrementa o conteúdo de um registrador em 1 unidade

Page 29: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Aritméticas e Lógicas

• São usadas para realizar operações aritméticas e lógicas nos conteúdos de registradores e memória

Operacao Descrição

AND Realiza o E lógico de dois operandos

OR Realiza o OU lógico de dois operandos

• AND R1, R2

• NOT R1

• SHIFT R1

OR Realiza o OU lógico de dois operandos

XOR Realiza o OU Exclusivo de dois operandos

NOT Realiza o complemento de um operando

SHIFT Deslocamento do conteúdo de um registrador

COMPARE Realiza a comparação lógica de dois operandos e seta o flag correspondente

ROTATE Rotação do conteúdo de um registrador

Page 30: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Instruções de sequência são usadas para mudar a sequência na qual as instruções são executadas

• Tipos– Branching incondicional: Jump

– Branching condicional: Jump de acordo com os flags– Branching condicional: Jump de acordo com os flags

– Call

• Independente do tipo, todas alteram o registro contador de programa (PC)

• Pode ser usada para fazer repetições

Page 31: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• JUMP 950 ; Incondicional

FLAG Valor

Negative (N) 1 se o resultado da operação mais recente é negativo, 0 caso contrário

Zero (Z) 1 se o resultado da operação mais recente é zero, 0 caso contrário

Overflow (V) 1 se o resultado da operação mais recente causa overflow, 0 caso contrário

Carry (C) 1 se o resultado da operação mais recente resulta em um 'vai um', 0 caso contrário

JUMP 950 ; Incondicional

• JNZ 950 ; Jump se != 0

• JNEG 100 ; Jump se Negativo

• JE 1250 ; Jump se == 0

• JGE 3000 ; Jump se >= 0

• JLE 5000 ; Jump se <= 0

Page 32: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo de laço com condicional

50 LOAD 3, R0

51 LOAD 0, R1

52 LOAD 100, R252 LOAD 100, R2

53 LOOP: ADD R0, R1, R1

54 DEC R2

55 JNZ LOOP

• Qual será o valor contido no registrador R2 após a execução do código acima?

Page 33: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instruções: Controle de Sequência

• Instruções CALL são usadas para fazer com que a execução de um programa seja transferido para uma sub-rotina.

• Execução retorna para o código principal após um RET

• Implementam as chamadas de função das linguagens alto nível

Page 34: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

...

50 CLEAR R0

51 MOV 5, R1

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505

...

500 17

Exemplo: Empregando CALL e RET para deslocar o controle de fluxo do programa para uma sub-rotina

500 17

501 13

502 10

503 5

504 55

505 0

...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

...

para uma sub-rotina

Page 35: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

0

XXXX

50

504 55

505 0

Page 36: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

0

5XX

51

504 55

505 0

Page 37: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

0

5500

52

504 55

505 0

Page 38: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

0

5500

53

504 55

505 0

Page 39: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

17

5500

1250

504 55

505 0

Page 40: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

17

5501

1251

504 55

505 0

Page 41: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

17

4501

1252

504 55

505 0

Page 42: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

17

4501

1253

504 55

505 0

Page 43: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

30

4501

1250

504 55

505 0

Page 44: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

30

4502

1251

504 55

505 0

Page 45: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

30

3502

1252

504 55

505 0

Page 46: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

30

3502

1253

504 55

505 0

Page 47: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

504 55

505 0

40

3502

1250

Page 48: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

40

3503

1251

504 55

505 0

Page 49: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

40

2503

1252

504 55

505 0

Page 50: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

40

2503

1253

504 55

505 0

Page 51: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

45

2503

1250

504 55

505 0

Page 52: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

45

2504

1251

504 55

505 0

Page 53: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

45

1504

1252

504 55

505 0

Page 54: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

45

1504

1253

504 55

505 0

Page 55: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

100

1504

1250

504 55

505 0

Page 56: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

100

1505

1251

504 55

505 0

Page 57: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

100

0505

1252

504 55

505 0

Page 58: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

100

0505

1253

504 55

505 0

Page 59: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

100

0505

1254

504 55

505 0

Page 60: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Controle de Sequência

• Exemplo:

...

50 CLEAR R0

51 MOV 5, R1

...

500 17

501 13

502 10

503 5

504 55

R0

R1

R2

PC

52 MOV 500, R2

53 CALL SOMA

54 MOVE R0, 505...

1250 SOMA: ADD R0,(R2),R0

1251 INC R2

1252 DEC R1

1253 JGE SOMA

1254 RET

100

0505

54

504 55

505 100

Page 61: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Tipos de Instrução: Entrada e Saída

• Instruções de I/O são usados para transferir dados entre o computador e seus periféricos

• IN: transfere dados de um dispositivo de entrada para o processadorprocessador– Acessa o Input Data Register através do endereço do dispositivo

– Coloca o resultado lido no IDR no acumulador

• OUT: transfere dados do processador para um dispositivo de saída– Acessa o Output Data Register através do endereço do

dispositivo

– Coloca o valor do acumulador no ODR

Page 62: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Ex: Conjunto de Instruções Z80Mnemonic: Description: Mnemonic: Description:

ADC ADD WITH CARRY NOP NO OPERATION

ADD ADD OR --

AND LOGICAL AND OTDR OUTPUT, DEC HL, DEC B, REPEAT IF B>0

BIT BIT TEST OTIR OUTPUT, INC HL, DEC B, REPEAT IF B>0

CALL CALL SUB ROUTINE OUT OUTPUT TO PORT

CCF COMPLEMENT CARRY FLAG OUTD OUTPUT, DEC HL, DEC B

CP COMPARE OUTI OUTPUT, INC HL, DEC B

CPD COMPARE AND DECREMENT POP POP FROM STACK

CPDR COMPARE DECREMENT AND REPEAT PUSH PUSH INTO STACK

CPI COMPARE AND INCREMENT RES RESET BIT

CPIR COMPARE INCREMENT AND REPEAT RET RETURN FROM SUB ROUTINE

CPL COMPLEMENT ACCUMULATOR RETI RETURN FROM INTERRUPT

DAA DECIMAL ADJUST ACCUMULATOR RETN RETURN FROM NON MASKABEL INTERRUPT

DEC DECREMENT RL ROTATE LEFT registerDEC DECREMENT RL ROTATE LEFT register

DI DISABLE INTERRUPTS RLA ROTATE LEFT ACUMULATOR

DJNZ DEC JUMP NON-ZERO RLC ROTATE LEFT THROUGH CARRY register

EI ENABLE INTERRUPTS RLCA ROTATE LEFT THROUGH CARRY ACCUMULATUR

EX EXCHANGE REGISTER PAIR RLD ROTATE LEFT DIGIT

EXX EXCHANGE ALTERNATE REGISTERS RR ROTATE RIGHT register

HALT HALT, WAIT FOR INTERRUPT OR RESET RRA ROTATE RIGHT ACCUMULATOR

IM INTERRUPT MODE 0 1 2 RRC ROTATE RIGHT CIRCULAR register

IN INPUT FROM PORT RRCA ROTATE RIGHT CIRCULAR ACCUMULATOR

INC INCREMENT RRD ROTATE RIGHT DIGIT

IND INPUT, DEC HL, DEC B RST RESTART

INDR INPUT, DEC HL, DEC B, REPEAT IF B>0 SBC SUBTRACT WITH CARRY

INI INPUT, INC HL, DEC B SCF SET CARRY FLAG

INIR INPUT, INC HL, DEC B, REPEAT IF B>0 SET SET BIT

JP JUMP SLA SHIFT LEFT ARITHMETIC register

JR JUMP RELATIVE SRA SHIFT RIGHT ARITHMETIC register

LD LOAD DATA TO/FROM REGISTERS/MEMORY SRL SHIFT RIGHT LOGICAL register

LDD LOAD DECREMENT SUB SUBTRACTION

LDDR LOAD DECREMENT AND REPEAT XOR EXCLUSIVE OR

LDI LOAD AND INCREMENT

LDIR LOAD INCREMENT AND REPEAT

NEG NEGATE ACCUMULATOR 2'S COMPLEMENT

Page 63: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Ex: Conjunto de Instruções PIC

Page 64: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Ex: Conjunto de Instruções 8086

Page 65: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura 8086

Page 66: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura 8086

• AX (AH / AL): Acumulador– Aritmética, Lógica e Transferência de Dados

– Multiplicação/Divisão

– Entrada/Saída

• BX (BH / BL): Registro de Endereço Base

Page 67: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura 8086

• CX (CH / CL): Contador

– Segmentos de código iterativo usando a instrução LOOP

– Operações repetitivas em string usando a instrução REP

– Quantidade (CL) de bits a rotacionar ou deslocar

Page 68: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura 8086

• DX (DH / DL): Registro de Dados

– Concatena DX:AX em registros de 32 bits para algumas operações de MULT e DIV

– Especifica o endereço de portas em operações IN e OUT

Page 69: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura 8086

• SI: Indexador de Origem (Source index Register)

– Pode ser usado para apontar para um endereço

– Usado como origem em algumas instruções de string

– Endereço de offset relativo a DS

Page 70: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura 8086

• DI: Indexador de Destion (Destination index Register)

– Pode ser usado para apontar para um endereço

– Usado como destinoem algumas instruções de string

– Endereço de offset relativo a ES

Page 71: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura 8086

• BP (Base Pointer)– Usado para acessar parâmetros passados para a pilha– Endereço de offset relativo a SS

• SP (Stack Pointer)– Aponta para o item no topo da pilha– Endereço de offset relativo a SS

Page 72: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura 8086

• CS: Code Segment– Aponta para o segmento que contém o código

• DS: Data Segment– Aponta para o segmento que contém as variáveis do programa

• ES: Extra Segment– Segmento extra, usado de acordo com o que o programador quiser

• SS: Stack Segment– Aponta para o segmento que contém a pilha

Page 73: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura 8086

• IP: Instruction Pointer

– Aponta para a próxima instrução a ser executada

– Endereço de offset relativo à CS

Page 74: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura 8086

• Carry Flag (CF)

– 1 quando houver um overflow sem sinal (‘vai um’): 255 + 1 = 0

• Parity Flag (PF)

– 1 quando houver um número par de bits 1 no resultado

• Auxiliary Flag (AF)

– 1 quando houver um overflow sem sinal em um nibble

Page 75: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura 8086

• Zero Flag (ZF)

– 1 quando o resultado de uma operação resulta zero

• Sign Flag (SF)

– 1 quando o resultado é negativo (tem sinal)

• Interrupt Enable Flag (IF)

– 1 quando a CPU reage a uma interrupção de dispositivo externo

Page 76: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Arquitetura 8086

• Direction Flag (DF)

– Processamento de cadeira de dados. 1 se processamento for pra ordem direta, 0 se processamento for ordem reversa

• Overflow Flag (VF)

– 1 quando houver overflow com sinal (100 + 50)

Page 77: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Linguagem de Montagem (Assembly)

#include <stdio.h>

void Testa(int num1, int num2)

{

if(num1 < num2)

{

printf("Hello World\n");

}}

}

void main()

{

int a;

int b;

a = 222;

b = 333;

Testa(a,b);

}

Compilação: # gcc codigo.c -S -masm=intel -o codigo.asm

Page 78: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Linguagem de Montagem.file "codigo.c"

.intel_syntax noprefix

.section .rodata

.LC0:

.string "Hello World"

.text

.globl Testa

.type Testa, @function

Testa:

.LFB0:

.cfi_startproc

push rbp

.LFE0:

.size Testa, .-Testa

.globl main

.type main, @function

main:

.LFB1:

.cfi_startproc

push rbp

.cfi_def_cfa_offset 16

.cfi_offset 6, -16

mov rbp, rsp

.cfi_def_cfa_register 6push rbp

.cfi_def_cfa_offset 16

.cfi_offset 6, -16

mov rbp, rsp

.cfi_def_cfa_register 6

sub rsp, 16

mov DWORD PTR [rbp-4], edi

mov DWORD PTR [rbp-8], esi

mov eax, DWORD PTR [rbp-4]

cmp eax, DWORD PTR [rbp-8]

jge .L1

mov edi, OFFSET FLAT:.LC0

call puts

.L1:

leave

.cfi_def_cfa 7, 8

ret

.cfi_endproc

.cfi_def_cfa_register 6

sub rsp, 16

mov DWORD PTR [rbp-8], 222

mov DWORD PTR [rbp-4], 333

mov edx, DWORD PTR [rbp-4]

mov eax, DWORD PTR [rbp-8]

mov esi, edx

mov edi, eax

call Testa

leave

.cfi_def_cfa 7, 8

ret

.cfi_endproc

.LFE1:

.size main, .-main

.ident "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5)

4.6.3"

.section .note.GNU-stack,"",@progbits

Page 79: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Importante!

• Princípio chave dos computadores atuais– Instruções são armazenadas na memória como números

– Programas são armazenados na memória para serem lidos ou escritos, porém como números

• Como instruções são armazenadas como números• Como instruções são armazenadas como números– Programas são distribuídos como arquivos de números

binários

– Computadores podem herdar programas prontos que sejam compatíveis com seu conjunto de instruções

– ‘Compatibilidade binária’ -> Indústria se alinha com um pequeno número de arquiteturas de conjunto de instruções

Page 80: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Linguagem de Máquina

• Linguagem de máquina: Representação binária usada para comunicação dentro de um sistema computacional

• Código de máquina: sequencia de instruções em • Código de máquina: sequencia de instruções em linguagem de máquina.

• Formato da Instrução: uma forma de representação de uma instrução composta de campos de números binários.

Page 81: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Linguagem de Maquina

Fonte: Bochs x86 PC Emulator. Disponível em: http://sourceforge.net/projects/bochs/

Page 82: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Ementa: Arquitetura e Organização de Computadores

• Circuitos Combinacionais

• Circuitos Sequenciais

• Multiplexadores e Demultiplexadores

• Circuitos Aritméticos

• Circuitos Comparadores

• Arquitetura de Von Neumann: CPU e organização

• Barramentos

• Hierarquia de Memória

• Dispositivos de Entrada e Saída

Page 83: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Referências

• [1] Shiva S. G., Computer Design and Architecture, 3th Edition. Editora Dekker. ISBN: 0-8247-0368-5

• [2] Shiva S. G., Computer Organization, Design and Architecture, 4th Edition. Editora CRC Press. ISBN: 0-8493-0416-4

• [3] Rojas R., Hashagen U. The First Computers – History andArchitectures. Editora MIT Press. ISBN: 0-262-18197-5

• [4] Null L., Labur J. The Essencials of Computer Organization andArchitecture. Editora Jones and Bartlett Publishers. ISBN: 0-7637-0444-X

Page 84: Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados que pode ser lida ou escrita ... – Contador de Programa (PC), Registrador de

Referências

• [5] Duntemann J. Assembly Language – Step By Step. Editora John Wiley and Son. ISBN: 0-471-57814-2

• [6] Blum R. Professional Assembly Language. Editora John Wiley andSons. ISBN: 0-7645-7901-0

• [7] Patterson D., Hennessy J. Computer Organization and Design – TheHardware/Software Interface, 3rd Edition. Editora Morgan Kaufmann. ISBN: 1-55860-604-1.

• [8] Abd-El-Barr M., El-Rewini H. Fundamental os ComputerOrganization and Architecture, 7th Edition. Editora John Wiley and Son. ISBN: 0-471-46741-3.