O conjunto de instru es
This presentation is the property of its rightful owner.
Sponsored Links
1 / 21

O Conjunto de Instruções PowerPoint PPT Presentation


  • 68 Views
  • Uploaded on
  • Presentation posted in: General

O Conjunto de Instruções. ISA – Instruction Set Architecture. Conjunto de instruções. Alguns conceitos... Linguagem máquina Combinação de ‘0’s e ‘1’s organizados segundo palavras que são as instruções que o processador percebe Linguagem assembly

Download Presentation

O Conjunto de Instruções

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


O conjunto de instru es

O Conjunto de Instruções

ISA – Instruction Set Architecture


Conjunto de instru es

Conjunto de instruções

  • Alguns conceitos...

    • Linguagem máquina

      • Combinação de ‘0’s e ‘1’s organizados segundo palavras que são as instruções que o processador percebe

    • Linguagem assembly

      • Linguagem que permite uma correspondência directa ao código máquina, e que para todos os efeitos é mais fácil de programar do que escrever directamente os ‘0’s e ‘1’s

    • Arquitectura

      • Hardware (circuitos)

      • Organização (datapath, unidade de controlo)

      • Conjunto de instruções ou ISA – Instruction Set Architecture


Conjunto de instru es1

Conjunto de instruções

  • Até agora, lidámos com o conjunto de instruções do processador MAC-1

  • É preciso ter em conta que CPUs diferentes têm arquitecturas diferentes e conjuntos de instruções diferentes

    • Por exemplo, o conjunto de instruções de um processador Intel Core 2 Duo é diferente do conjunto de instruções de um processador ARM (usado em telemóveis)

  • Mas apesar de os conjuntos de instruções serem diferentes, os tipos de instruções disponíveis em cada conjunto são idênticos


Instru es t picas

Instruções típicas

  • Transferências de dados

Notas:

Tipicamente, quando são utilizadas instruções do tipo Load / Store, a instrução MOV apenas permite transferências entre registos (ou então não existe).


Instru es t picas1

Instruções típicas

  • Aritméticas

Notas:

Geralmente existem instruções distintas para inteiros e reais (vírgula flutuante)

Exemplo:

IADD (inteiros)

FADD (vírgula flutuante)

Atenção a NEG, cuja finalidade costuma ser calcular o simétrico (complemento para 2) e não a negação...


Instru es t picas2

Instruções típicas

  • Lógicas

Notas:

CLR – colocar um registo a ‘0’

SET – colocar um registo a ‘1’

Existem tipicamente outros tipos de CLRs e SETs que visam colocar a ‘0’ ou a ‘1’ apenas um bit do estado (flag) da unidade funcional


Instru es t picas3

Instruções típicas

  • Controlo de programa

Notas:

Muitos processadores utilizam a designação branch em vez de jump. Na maioria das vezes as designações são sinónimas.

Noutros podem existir diferenças: por exemplo, jump poderia ser um salto para um endereço absoluto e branch um salto para um endereço relativo.


Instru es t picas4

Instruções típicas

  • Procedimentos

CALL / RETN – o endereço de retorno é colocado / lido da pilha.

JAL / JR – o endereço de retorno é colocado / lido de num registo.


Formatos de instru o

Formatos de instrução

  • As instruções encontram-se organizadas segundo campos com significado específico:

    • Código de operação (opcode)

      • Indica qual é o tipo ou finalidade da instrução

    • Operandos

      • Origem e destino dos dados (endereços ou registos)

      • Valores constantes que vão na própria instrução

    • Modo de endereçamento

      • Indica o modo como devem ser interpretados os operandos

      • Muitas vezes está incluído no próprio opcode e não num campo em separado


Formatos de instru o1

Formatos de instrução

  • Exemplos de algumas instruções já conhecidas

    • LODD x

    • LOCO c

    • INSP y


Formatos de instru o2

Formatos de instrução

  • É habitual classificar os formatos de instrução de acordo com o número de operandos

    • 1, 2, ou 3 operandos

    • …ou mesmo sem operandos(muito usadas em arquitecturas baseadas em stack)

  • Exemplo:

  • Considere que se pretende calcular:

  • M[x] ← (M[a] + M[b])  (M[c] - M[d])


Formatos de instru o3

Formatos de instrução

  • com 3 operandos...

    • Pode-se especificar um destino e duas fontes

ADD R1, a, b # R1 ← M[a] + M[b]

SUB R2, c, d # R2 ← M[c]+ M[d]

MUL x, R1, R2 # M[x] ← R1  R2

Nota:

Assumiu-se que as fontes / destino dos dados podem ser endereços ou registos. Como veremos mais à frente, não é uma assunção muito realista, uma vez que obriga a instruções com comprimento demasiado longo.


Formatos de instru o4

Formatos de instrução

  • com 2 operandos...

    • Especifica-se uma fonte e um destino

MOV R1, a# R1 ← M[a]

ADD R1, b # R1 ← R1 + M[b]

MOV R2, c# R2 ← M[c]

SUB R2, d# R2 ← R2 – M[d]

MUL R1, R2# R1 ← R1  R2

MOV x, R2# M[x] = R2

Nota: assumiu-se que o registo destino acumula resultados, pelo que serve de fonte, de uma forma implícita


Formatos de instru o5

Formatos de instrução

  • com 1 operando...

    • Vão sendo guardados os resultados num registo acumulador

    • Especifica-se apenas uma fonte ou um destino

LOAD a# AC ← M[a]

ADD b# AC ← AC + M[b]

STORE x# M[x] ← AC

LOAD c# AC ← M[c]

SUB d# AC ← AC + M[d]

MUL x# AC ← AC  M[x]

STORE x# M[x] ← AC


Formatos de instru o6

Formatos de instrução

  • sem operandos...

    • Todas as operações são feitas com recurso à pilha

    • As instruções fazem implicitamente pop dos operandos e push dos resultados

PUSH a # TOS ← M[A]

PUSH b # TOS ← M[B]

ADD # TOS ← TOS-1 + TOS

PUSH c # TOS ← M[C]

PUSH d # TOS ← M[D]

SUB # TOS ← TOS-1 – TOS

MUL # TOS ← TOS-1 TOSTOS – Topo da Pilha (Top of Stack)

POP x # M[X] ← TOSTOS-1 – 2º valor na pilha (a contar do topo)


Formatos de instru o7

Formatos de instrução

  • Curiosidade…

    • Para facilitar a implementação de código sem operandos, pode-se utilizar a notação RPN(Reverse Polish Notation)

      • Exemplo:

        a expressão

        (A+B)  (C-D)

        é equivalente à seguinte, em RPN:

        A B + C D - 

A ordem pela qual aparecem os operandos e as operações em RPN é a mesma que se segue num programa idêntico ao anterior


Formatos de instru o8

Formatos de instrução

  • Como maximizar o número de instruções do conjunto?

    • Expansão do opcode

      • Aproveita-se o facto de nem todas as instruções terem o mesmo número de operandos

      • Para se expandir o opcode, usa-se o espaço deixado por campos que não são utilizados

      • Resulta assim um opcode com mais bits, possibilitando um maior número de instruções

    • Instruções de comprimento variável

      • A ideia é ter instruções cujo comprimento varia consoante as necessidades (exemplo: dentro do mesmo conjunto, ter instruções de 16, 32 e 64 bits)


Formatos de instru o9

Formatos de instrução

  • Exemplo de expansão do opcode

    • Vamos supor que se pretende projectar um conjunto de instruções com os seguintes formatos:

      • Formato I

      • Formato II

Quantas Instruções serão possíveis para cada um dos formatos ?


Formatos de instru o10

Formatos de instrução

  • Exemplo de expansão do opcode (cont.)

    • Se fossem todas do formato I teríamos 24 = 16instruções diferentes

    • Aproveitando o espaço de 2 bits disponíveis no formato II para expansão do opcode, existem outras possibilidades:

      • 15 de formato I + 4 do formato II

      • 14 de formato I + 8 do formato II

      • 13 de formato I + 12 do formato II

    • De uma forma geral teríamos, neste caso:

      • 24–k instruções do formato I + k22 instruções do formato II

Repare que os expoentes ‘4’ e ‘2’ correspondem ao número de bits do opcode e da expansão, respectivamente


Formatos de instru o11

Formatos de instrução

  • Algumas considerações…

    • Em geral, se um conjunto de instruções permite mais operandos, menor será o número de instruções num programa

      • No entanto, maior será o comprimento das instruções, de forma a incluir todos os operandos necessários

    • Quanto menor for o comprimento das instruções,

      • Maior rapidez a efectuar o fetch (pois podem ser lidas mais instruções de uma só vez)

      • Haverá mais instruções, mas na prática irão ocupar menos espaço, pois são mais pequenas

      • Mais difícil será a possibilidade de futuras expansões ao conjunto de instruções (factor importante do ponto de vista comercial)

    • O normal é tentar que chegar a uma solução de compromisso


Formatos de instru o12

Formatos de instrução

  • Alguns exemplos reais

    • Intel (x86) – max. 2 operandos

    • PowerPC (Wii, Xbox 360) – max. 3 operandos

    • Cell (Playstation 3) – max. 4 operandos (maioria 3)

    • TMS (Processador de sinal) – max. 3 operandos

    • ARM – max. 3 operandos (maioria 2)

  • ...e virtuais

    • Java Virtual Machine – a maioria sem operandos

    • MAC-1– max. 1 operando

    • MIPS – max. 3 operandos


  • Login