Arquitectura De Um Or

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Arquitectura De Um Or as PDF for free.

More details

  • Words: 1,925
  • Pages: 5
Arquitectura de um computador

Conjunto de instruções do CPU

● Caracterizada por:

● Instrução: definição de uma operação elementar, capaz de ser executada pela máquina (interpretada pelo CPU)

■Conjunto de instruções do processador (ISA) ■Estrutura interna do processador (que registadores existem, etc) ■Modelo de memória (dimensão endereçável, alcance que o bus permite) ■Topologias de interligação dos componentes CPU, memória e periféricos (estruturas de buses)

● Um mesmo conjunto de instruções pode ter distintas realizações: ■diferentes processadores e famílias de processadores, com custos e desempenhos variáveis (Intel vs. AMD; PIII vs. P4 vs PM;…) ASC1 - 2006/2007

107

Definição das instruções (1)

■Que operações implementar no hardware?

● Que informação deve incorporar-se no código de cada instrução? ■Como descrevemos a operação e informação usada pela operação ASC1 - 2006/2007

108

Definição das instruções (2) ● Os objectivos a considerar são muitos:

● As classes de instruções necessárias são poucas:

■Aproximar das linguagens de alto nível ■Reduzir o tamanho dos programas ■Oferecer instruções poderosas e eficientes ■Instruções simples, que facilitem realização eficiente ■Oferecer diversos modos de endereçar as variáveis em memória (ex. referências, matrizes, registos) ■Reduzir o número de acessos a memória central ■Oferecer só as instruções de facto úteis ■Promover uma abordagem em que instruções mais complexas não são oferecidas, mas podem ser implementadas, pelos programas, de forma eficiente

■Aritméticas e lógicas ■Transferências de dados ■Controlo da sequência de execução

ASC1 - 2006/2007

● Que tipo de instruções se devem incluir na arquitectura?

109

Definição das instruções (3)

ASC1 - 2006/2007

110

Exemplos de possíveis instruções ● Que instruções incluir no CPU?

● Para as boas soluções, contribuem: ■A definição do conjunto de instruções ■E todos os outros elementos da arquitectura…

● Uma boa solução é também fruto de compromissos: ■Custo ■Funcionalidade ■Desempenho ■Leis do mercado e circunstâncias tecnológicas…

■Multiplicação e divisão ■Aritmética de reais ■Chamada e retorno de funções/métodos ■Execução eficiente de ciclos tipo for ■Contar e temporizar acções ■Operar sobre cadeias de caracteres, sobre listas, sobre filas, sobre registos, sobre matrizes ■Mover e recolocar programas em memória ■Suspensão e reactivação de programas ■????

● A que nível: na arquitectura do computador ou em níveis superiores da hierarquia? (p.ex. SO?) ASC1 - 2006/2007

111

ASC1 - 2006/2007

112

1

Codificação de cada instrução máquina

Tamanho das instruções

● O formato depende do tipo de instrução:

● Quantos bits para o código? ■Depende do número de instruções distintas ■Exemplo: 8 bits  256 instruções possíveis

■O código da operação ou opcode (sempre!) ■A especificação dos operandos ou sua localização ■A especificação da localização para o resultado

● Quantos bits para os campos "op"?

● Exemplo: formato de instrução com 4 campos (3 operandos): op3  operação(op1, op2) ■Para operações com dois operandos (op1 e op2), deixando o resultado em op3 "op" pode indicar uma célula de memória ou um registo do CPU contendo o operando (op1 e op2 também podem ser o próprio valor do operando)

■codificação:

opcode op1

op2

op3

ASC1 - 2006/2007

113

■Depende de: ●onde estão os operandos, ●o modo como se endereça a memória, ●a capacidade do espaço de endereços

● Exemplo: ■Operandos e resultado em memória ■Memória de 64 KiloBytes  16 bits (2 Bytes) ■Então, uma instrução: 8 + 3 * 16 = 56 bits ASC1 - 2006/2007

114

Que alternativas?

Instruções de 2 operandos

● Instruções com operandos e resultado em registadores do CPU: "op" terá menos bits ● Instruções com menor número de operandos ● Instruções em que só figura uma parte do endereço ● Instruções que assumem que os operandos estão em locais pré-definidos ● As instruções podem não ser todas do mesmo tamanho

● formato de instrução com 3 campos (um dos operandos também será para o resultado): op1  operação(op1, op2) ■codificação: opcode op1 op2 ■Exemplo Intel: add eax, 4 (assembly) 05 04 00 00 00 (código em hexadecimal)

■Durante a descodificação pode necessitar de ler mais informação da memória ASC1 - 2006/2007

115

ASC1 - 2006/2007

Instruções de 1 operando

Instruções sem operandos

● formato de instrução com 2 campos (1 operando):

● formato de instrução com 1 campo (sem operandos ou estes estão implícitos):

op  operação(op) ■codificação: opcode op

116

■codificação: opcode ■exemplo: ret C3

● um único operando ■exemplo: not eax f7 d0

● ou mais operandos, mas estes estão implícitos (p.ex. um registo ou um operando pré definido) ■exemplo: inc ecx 41

ASC1 - 2006/2007

117

ASC1 - 2006/2007

118

2

Um computador muito simples

Características do MARIE

Vejamos um computador (virtual) muito simples: ● MARIE (A Machine Architecture that is Really Intuitive and Easy) ■ Do livro: The Essentials of Computer Organization and Architecture, L. Null, J. Lobur ■ Simulador escrito em Java

Binário Programa em memória (máquina de Von Neumann) Opera dados de 16 bits Memória central com células de 16 bits cada; endereços de 12 bits ● Um registo interno geral: AC – acumulador (16 bits) ● Instruções de tamanho fixo, com 2 campos: ● ● ● ●

4 bits para código da operação (opcode), 12 bits para um endereço

● Entrada/Saída (I/O) de 16 bits ASC1 - 2006/2007

119

0

CPU

16bits

ALU 16 bits 16 bits

Memória Central

AC InREG

16 bits

MBR MAR

16 bits

IR

BUS 12 bits

4 K words = 8 KBytes

PC

16 bits

120

Arquitectura do MARIE

Arquitectura do MARIE

OutREG

ASC1 - 2006/2007

12 bits

Unidade de controlo

4095

ASC1 - 2006/2007

121

● MAR (Memory Address Register): endereço da posição de memória referenciada – 12 bits ● MDR (Memory Data Register): Registo que recebe o valor lido da memória ou onde se coloca o valor a escrever na memória – 16 bits ● PC (Program Counter): endereço da instrução a executar – 12 bits ● IR (Instruction Register): contém a instrução que se está a executar – 16 bits ● OutREG (Output register): contém o dado a enviar para um periférico de saída – 16 bits (8 se ASCII) ● InREG (Input register): recebe o dado lido de um periférico de entrada – 16 bits (8 se ASCII) ASC1 - 2006/2007

122

Conjunto de instruções (ISA)

Notação na descrição da execução

● Codificação fixa em 16 bits ● Formato:

● Apresenta as acções internas (“microacções”) em termos das transferências entre os vários registos/memória

■4 bits para o código da instrução; 12 bits para um endereço (opcional)

■(RTN/RTL Register Transfer Notation/Language)

● A única maneira de referir um operando é pelo seu endereço em memória ■Os operandos ou estão em memória ou são implícitos

● Transferências: destino  fonte  sentido da transferência

● O destino e a fonte podem ser : Bit: 15

■Registos do CPU (MAR, PC, AC, ...) ■Mem[X] conteúdo da célula de memória na posição com o endereço X

endereço

opcode

12 11

0 ASC1 - 2006/2007

123

ASC1 - 2006/2007

124

3

Ciclo de execução no MARIE 1. Fetch Obtenção da instrução em memória

2. Decode Descodificação

3. Execute Mais à frente…



Fetch

while (running) { MAR  PC MBRMem[MAR] IR  MBR PC  PC +1 … MAR  IR[bits 11-0] if (instrução IR[bits 15-12] requer um operando da memória) { MBR  Mem[MAR] } … Executar a instrução… } ASC1 - 2006/2007

1

Load X

Carrega o conteúdo da posição de memória com endereço X no acumulador

0010

2

Store X

Guarda o conteúdo do acumulador na posição de memória com endereço X

0011

3

Add X

Soma Mem[X] com o conteúdo do acumulador, guardando o resultado no mesmo

0100

4

Subt X

Idem mas subtrai

0101

5

Input

Lê um valor para o acumulador

0110

6

Output

Escreve o que está no acumulador

0111

7

Halt

Pára a execução

1000

8

SkipCond

Salta por cima da próxima instrução de acordo com valor do acumulador

1001

9

Jump X

MAR 12 bits

16 bits

IR

16 bits BUS

Memória Central

12 bits

PC

Unidade de controlo

4095

ASC1 - 2006/2007

MAR  X MBR  Mem[MAR] AC MBR

● Store X MAR  X, MBR  AC Mem[MAR] MBR

127

126

● Add X MAR  X MBR  Mem[MAR] AC AC+MBR

● Subt X MAR  X MBR  Mem[MAR] AC AC-MBR

ASC1 - 2006/2007

128

As primeiras 9 intruções (cont.)

Add X CPU

● As operações de entrada e saída usam valores decimais

0

ALU

AC

16 bits MBR MAR 12 bits

X

InREG

MBR

MAR  PC MBRMem[MAR] IR  MBR PC  PC +1

Carrega o valor X no PC ASC1 - 2006/2007

IR

OutREG

16 bits

● Load X

0001

16 bits

0

RTL das instruções do MARIE (1)

Primeiras 9 instruções

InREG

AC

125

Código Binário Hexa Mnemónica Descrição

OutREG

CPU ALU

16 bits BUS

Memória Central

MAR  X MBR  Mem[MAR] AC AC+MBR

● A instrução skipcond usa os bits 11 e 10 para indicar a condição em que funciona:

12 bits

■00 salta (skip) se AC < 0 ■01 salta (skip) se AC == 0 ■10 salta (skip) se o AC >= 0

PC

Unidade de controlo

4095

ASC1 - 2006/2007

■a conversão para caracteres é feita automaticamente pelo simulador

129

ASC1 - 2006/2007

130

4

RTL das instruções do MARIE (2)

Um programa simples

● Input

Programa: Load 100 Add 101 Store 102 Halt

AC  InREG

● Output OutREG  AC

● Halt Running=False (O ciclo de execução de instruções termina)

● Jump X

Dados em memória antes da execução: 100: 24 101: 1 102: 0

PC IR[11-0]

Dados em memória depois da execução: 100: 24 101: 1 102: 25

● SkipCond if ( IR[11-10] == 002 ) if ( AC < 0 ) PC  PC + 1 else if ( IR[11-10] == 012 ) if ( AC == 0 ) PC  PC + 1 else if ( IR[11-10] == 102 ) if ( AC >= 0 ) PC  PC + 1 ASC1 - 2006/2007

131

ASC1 - 2006/2007

132

Linguagem “assembly”

Papel de um “assembler”

● Mnemónicas para as instruções máquina ● Operandos das instruções:

● Assembler é o tradutor da linguagem de Cabeçalho: assembly para a máquina

■Constantes (binário, decimal, hexadecimal) ■Endereços (podem ser simbólicos: etiquetas)

ORG 100 Load A Add B Store C Halt A, dec 24 B, hex 1 C, hex 0

● Características de um dado processador ■Nem todos os usos das mnemónicas podem ser válidos

● Pseudo instruções ■Não correspondem a instruções máquina ■Indicações dadas ao “assembler” ●Exemplos: comentários; indicar o endereço de carregamento em memória; valor inicial do PC ASC1 - 2006/2007

End. de carregamento Valor inicial do PC 0001000100000100 0011000100000101 ... ...

Assembler

0000000000011000 0000000000000001 0000000000000000

Ficheiro texto com o código em assembly 133

Etiquetas

Ficheiro objecto ASC1 - 2006/2007

134

Processamento das etiquetas ● “Assembler” processa o ficheiro linha a linha. Quando encontra uma etiqueta não sabe ainda o endereço de memória correspondente. ● Tem de fazer dois passos sobre o ficheiro fonte

● Permitem designar simbolicamente as posições de memória Load A 100 Load 104 Add B 101 Add 105 Store C  102 Store 106 Halt 103 Halt A, Dec 24 104 0024 B, Hex 1 105 0001 C, Hex 0 106 0000 ASC1 - 2006/2007

■No primeiro passo, é criada uma tabela de todos os símbolos

■No segundo passo o espaço dos endereços que não tinha sido preenchido, já o pode ser 135

ASC1 - 2006/2007

0x100

0001 ???? ???? ????

0x101

0011 ???? ???? ????

0x102

0010 ???? ???? ????

A

0x104

B

0x105

C

0x106

0x100

0001 0001 0000 0100

0x101

0011 0001 0000 0101

0x102

0010 0001 0000 0110 136

5

Related Documents