Organização de Computadores - Aula 05 - Arquitetura do conjunto de instruções

00:22:53
https://www.youtube.com/watch?v=i01yuM5KyNg

Summary

TLDRA aula aborda a arquitetura do conjunto de instruções (ISA) em computadores, explorando as diferenças entre organização e arquitetura de um computador. Definindo cinco componentes principais da ISA, como repertório de operações e endereçamento, a apresentação discute as características de arquiteturas CISC e RISC, destacando como a complexidade e a simplicidade das instruções impactam o desempenho. O contexto histórico mostra a evolução da computação e a importância da compatibilidade nas arquiteturas, exemplificando com processadores como Intel e ARM.

Takeaways

  • 🖥️ Importância da diferenciação entre organização e arquitetura dos computadores.
  • 📋 O conjunto de instruções (ISA) define a programação de computadores.
  • 🔄 A compatibilidade de ISA permite executar códigos em diversas plataformas.
  • ⚙️ CISC opera com um conjunto complexo de instruções, exigindo múltiplos ciclos.
  • ⚡ RISC foca em instruções simples e de tamanho fixo, favorecendo execução rápida.
  • ☎️ Microprogramação permite instruções complexas serem escritas e executadas.
  • 🛠️ A evolução tecnológica influenciou a integração de características CISC e RISC.
  • 🏷️ O tamanho do operando é importante para as operações do conjunto de instruções.
  • 📖 Diversas arquiteturas, como ARM e SPARC, exemplificam RISC.
  • 💡 O número de instruções não é sinônimo de desempenho eficaz.

Timeline

  • 00:00:00 - 00:05:00

    Nesta quinta aula de organização de computadores, o foco é a arquitetura do conjunto de instruções e as definições de organização e arquitetura de um computador. A organização refere-se às unidades operacionais e suas interconexões, enquanto a arquitetura está relacionada a instruções visíveis para o programador, como bits de instruções e acesso à memória. A aula explora como a arquitetura influencia o desempenho e a compatibilidade entre diferentes processadores que compartilham o mesmo conjunto de instruções.

  • 00:05:00 - 00:10:00

    A discussão passa para os cinco elementos que caracterizam a arquitetura do conjunto de instruções (ISA). O primeiro item abordado é o repertório de operações, abrangendo instruções aritméticas (somar, subtrair, multiplicar), instruções lógicas e instruções de controle. Também são mencionadas as instruções de movimentação de dados e a necessidade de flexibilidade na execução de diferentes operações.

  • 00:10:00 - 00:15:00

    O segundo e terceiro aspectos discutidos são os tipos e tamanhos de operandos e o endereçamento. O tamanho dos operandos varia entre arquiteturas (8, 16, 32 ou 64 bits), impactando o processamento e operação dos dados. A arquitetura precisa definir como os operandos serão acessados na memória, com diferentes modos de endereçamento. Esses detalhes são cruciais para a execução de instruções no processador.

  • 00:15:00 - 00:22:53

    A aula então detalha o formato da instrução e o armazenamento de operandos, enfatizando a importancia da definição de como os componentes da arquitetura reconhecem as instruções e suas operações. Diferentes arquiteturas podem ter instruções de tamanhos fixos ou variáveis, o que afeta o design de hardware e a eficiência na execução das tarefas. A distinção entre cisc (Complex Instruction Set Computer) e risc (Reduced Instruction Set Computer) é também apresentada, associada à evolução histórica dos computadores e suas arquiteturas.

Show more

Mind Map

Video Q&A

  • O que é a diferença entre organização e arquitetura de um computador?

    Organização refere-se às unidades operacionais e suas interconexões, enquanto arquitetura define as instruções visíveis ao programador e o acesso à memória.

  • Quais são os cinco principais componentes da arquitetura do conjunto de instruções?

    Os cinco componentes são: repertório de operações, tipos e tamanhos dos operandos, endereçamento, formato da instrução e armazenamento dos operandos.

  • O que caracteriza a arquitetura CISC?

    CISC tem um conjunto complexo de instruções, onde muitas instruções podem realizar múltiplas operações em um só comando, mas requer múltiplos ciclos de relógio para execução.

  • O que caracteriza a arquitetura RISC?

    RISC utiliza um conjunto reduzido de instruções que são simples e de tamanho fixo, permitindo a execução em um único ciclo de relógio, mas com mais instruções necessárias para realizar tarefas.

  • Qual é a importância da compatibilidade da arquitetura de instruções?

    A compatibilidade permite que um código compilado em uma arquitetura específica possa ser executado em diferentes implementações da mesma ISA.

  • Como a evolução tecnológica influenciou as arquiteturas CISC e RISC?

    Avanços na tecnologia e aumento da capacidade de memória permitiram que implementações CISC e RISC intercalassem suas características e estratégias de desempenho.

  • Por que o número de instruções não é uma métrica para desempenho?

    O desempenho depende do tempo de ciclo e da eficiência da execução das instruções, não apenas do número de instruções.

  • O que é microprogramação em CISC?

    É um método que permite que instruções complexas sejam escritas na memória e executadas em um processador.

  • Quais são algumas arquiteturas comuns de RISC?

    ARM e SPARC são exemplos de arquiteturas RISC.

  • Qual a influência do código armazenado nas primeiras arquiteturas?

    Precisava ser eficiente devido à limitação de memória disponível, levando ao desenvolvimento de instruções compactas.

View more video summaries

Get instant access to free YouTube video summaries powered by AI!
Subtitles
pt
Auto Scroll:
  • 00:00:11
    [Música]
  • 00:00:21
    Olá hoje nós temos a quinta aula de
  • 00:00:24
    organização de computadores depois de
  • 00:00:26
    conversar sobre as características
  • 00:00:28
    gerais dos computadores suas classes
  • 00:00:30
    questões de desempenho e de falar do
  • 00:00:33
    modelo de fyan da arquitetura Harvard
  • 00:00:35
    das da modo de organizar esse computador
  • 00:00:38
    para que ele possa executar instruções
  • 00:00:40
    para que ele possa funcionar como um
  • 00:00:42
    computador programado hoje nós vamos
  • 00:00:44
    discutir Justamente a arquitetura do
  • 00:00:47
    conjunto de instruções ou seja essas
  • 00:00:49
    características que permitem que o
  • 00:00:51
    computador seja
  • 00:00:53
    programado mas antes da gente falar das
  • 00:00:56
    características do computador das
  • 00:00:58
    características do conjunto de
  • 00:01:00
    instruções é importante nós nos
  • 00:01:02
    atentarmos à duas definições a definição
  • 00:01:05
    do que é a organização de um computador
  • 00:01:07
    e do que é a arquitetura de um
  • 00:01:09
    computador são dois elementos
  • 00:01:11
    extremamente importantes que andam
  • 00:01:12
    juntos mas T diferenças
  • 00:01:14
    conceituais a organização de computador
  • 00:01:17
    ela se relaciona às unidades
  • 00:01:19
    operacionais e suas interconexões que
  • 00:01:21
    vão realizar essas especificações
  • 00:01:24
    arquiteturais portanto quando nós
  • 00:01:25
    falamos do modelo de fona que tinha
  • 00:01:28
    cinco elementos entrada saída memória e
  • 00:01:31
    o processador dividido em fluxo de dados
  • 00:01:33
    unidade de controle e que eu tinha um
  • 00:01:35
    único barramento que ligava o
  • 00:01:37
    processador à memória tudo isso está
  • 00:01:39
    ligado à organização do meu computador
  • 00:01:42
    tá então todas Quais são os elementos
  • 00:01:46
    Quais são
  • 00:01:47
    os os elementos que eu tô interligando
  • 00:01:50
    Quais são os como é essa interconexão
  • 00:01:53
    tudo isso caracteriza a
  • 00:01:56
    organização o outro aspecto agora com
  • 00:01:59
    relação a arquitetura né ela vai tá mais
  • 00:02:02
    próxima daquilo que é visível pro meu
  • 00:02:04
    programador ou seja Quais são as
  • 00:02:07
    instruções que eu posso executar quantos
  • 00:02:10
    bits tem essa instrução esse Esse
  • 00:02:12
    processador é de 32 bits é de 64 é de 16
  • 00:02:16
    né como é que o acesso à memória Então
  • 00:02:18
    essas características que que fazem que
  • 00:02:21
    são importantes pro programador que vão
  • 00:02:23
    afetar o desempenho de um programa tão
  • 00:02:26
    mais associadas à arquitetura do
  • 00:02:28
    computador e é justamente disso que nós
  • 00:02:30
    vamos discutir hoje né O que que
  • 00:02:33
    caracteriza a arquitetura do meu
  • 00:02:35
    computador ou mais precisamente a
  • 00:02:38
    arquitetura do conjunto de instruções né
  • 00:02:41
    do inglês nós temos o termo instruction
  • 00:02:43
    set architecture ou Isa é uma sigla que
  • 00:02:46
    aparece com outros significados também
  • 00:02:48
    na no ambiente de computação mas aqui no
  • 00:02:51
    nosso domínio Isa a instruction s
  • 00:02:53
    architecture ou a arquitetura do
  • 00:02:55
    conjunto de instruções e Justamente esse
  • 00:02:58
    conjunto de instruções de maneira
  • 00:03:00
    simplificada ele vai dizer para mim qual
  • 00:03:02
    que é o repertório de instruções de um
  • 00:03:04
    computador ou seja quais as instruções
  • 00:03:07
    que eu posso executar o que que eu posso
  • 00:03:09
    acessar em termos de memória tudo isso
  • 00:03:11
    caracteriza bom Por que que isso é
  • 00:03:13
    importante porque nós temos computadores
  • 00:03:15
    diferentes nós temos por exemplo no caso
  • 00:03:18
    da Intel se a gente observar temos o i7
  • 00:03:20
    i5 E3 voltando mais no tempo penum 486
  • 00:03:25
    386 todos esses processadores da Intel
  • 00:03:28
    eles têm caracter ticas internas
  • 00:03:30
    diferentes eles vão executar um
  • 00:03:33
    determinado programa em tempos de
  • 00:03:35
    execução diferentes mas eles
  • 00:03:37
    compartilham o mesmo conjunto de
  • 00:03:39
    instruções eles compartilham a mesma Isa
  • 00:03:41
    né Essa é uma característica que a Intel
  • 00:03:44
    se propôs a carregar desde os primeiros
  • 00:03:46
    computadores lá do da Dé final da década
  • 00:03:49
    de 70 Eles procuram garantir essa
  • 00:03:51
    compatibilidade da arquitetura de
  • 00:03:53
    instruções do conjunto de instruções
  • 00:03:55
    então uma vez que eu tenho esses esse
  • 00:03:58
    código compilado eu consigo executar em
  • 00:04:01
    diversas plataformas diferentes então
  • 00:04:03
    por isso que a gente fala diferentes
  • 00:04:05
    implementações para um mesmo conjunto de
  • 00:04:07
    instruções tá as mesmas características
  • 00:04:10
    pro programador gerar esse código em
  • 00:04:13
    assembly mas ele é capaz de rodar em
  • 00:04:15
    qualquer elemento em qualquer
  • 00:04:17
    implementação dessa minha arquitetura do
  • 00:04:19
    conjunto de instruções
  • 00:04:23
    ah apesar de existirem muitos
  • 00:04:26
    computadores diferentes por exemplo Arm
  • 00:04:28
    mips Park Power PC a própria Intel essas
  • 00:04:32
    esse conjunto de instruções ele tem
  • 00:04:34
    vários elementos que são comuns né a
  • 00:04:37
    gente tem principais elementos aqui são
  • 00:04:39
    cinco elementos principais que
  • 00:04:41
    justamente vão caracterizar como
  • 00:04:44
    funciona esse repertório Como funciona
  • 00:04:46
    essa Isa tá Ah e a ideia justamente hoje
  • 00:04:50
    a gente explorar o que que significam
  • 00:04:52
    esses cinco elementos que tipo de
  • 00:04:53
    impacto esses cinco elementos podem ter
  • 00:04:56
    na no nas características que a gente
  • 00:04:58
    vai ter do conjunto de instruções bom o
  • 00:05:00
    primeiro item aqui é o repertório das
  • 00:05:03
    operações quantas operações eu preciso
  • 00:05:06
    quantas instruções eu preciso bom a
  • 00:05:08
    gente pode começar pelas instruções
  • 00:05:10
    aritméticas eu preciso saber somar
  • 00:05:12
    subtrair adicionar dividir
  • 00:05:15
    multiplicar a gente tem as instruções
  • 00:05:17
    lógicas posso fazer end posso fazer a
  • 00:05:20
    operação or posso fazer A negação né eu
  • 00:05:24
    tenho as instruções de deslocamento à
  • 00:05:26
    esquerda deslocamento à direita então
  • 00:05:28
    todas essas são instruções que a gente
  • 00:05:30
    chama de instruções lógico aritméticas
  • 00:05:32
    depois eu vou ter as instruções de
  • 00:05:34
    movimentação de dados mesmo que eu tenha
  • 00:05:36
    a uma arquitetura memória memória né Eh
  • 00:05:40
    eu posso precisar fazer alguma
  • 00:05:42
    movimentação de dado mas tipicamente as
  • 00:05:44
    arquiteturas envolvem algum uso de
  • 00:05:45
    registrador ou de pilha e eu preciso ser
  • 00:05:48
    capaz de tirar um dado da memória e
  • 00:05:50
    levar para esses registradores então a
  • 00:05:52
    gente usa as instruções de load e Store
  • 00:05:54
    tirar da memória pro registrador load e
  • 00:05:57
    do registrador pra memória as instruções
  • 00:05:59
    de História o outro conjunto de
  • 00:06:02
    instruções que a gente tem aqui são as
  • 00:06:04
    instruções de controle um dos princípios
  • 00:06:07
    de fona que o programa era executado
  • 00:06:10
    sequencialmente mas quando a gente vai
  • 00:06:12
    programar a gente usa por exemplo
  • 00:06:13
    condições if e else se for uma igualdade
  • 00:06:18
    eu vou executar uma instrução se for
  • 00:06:20
    diferente um outro conjunto muitas vezes
  • 00:06:22
    nós escrevemos lups né contínuos para
  • 00:06:25
    repetir uma determinada conta para
  • 00:06:27
    permitir por exemplo uma multiplicação
  • 00:06:28
    de uma matriz fazemos dois os Loops de
  • 00:06:31
    for Então essas interações todas estão
  • 00:06:33
    relacionadas à sequência do programa ou
  • 00:06:36
    seja ao controle do programa Então as
  • 00:06:39
    instruções que de desvio que vão mudar a
  • 00:06:41
    ordem que eu tô executando as instruções
  • 00:06:43
    também são importantes e nós temos
  • 00:06:46
    podemos agrupar as instruções de
  • 00:06:47
    controle em dois tipos as instruções
  • 00:06:50
    incondicionais Por exemplo quando existe
  • 00:06:52
    um salto um Jump né a gente além do jump
  • 00:06:56
    tem o retorno desse Jump por exemplo
  • 00:06:58
    a que retorna pro endereço prévio e a
  • 00:07:01
    gente tem as instruções de desvio
  • 00:07:03
    condicional por exemplo se uma igualdade
  • 00:07:06
    for verdade se o valor for igual a zero
  • 00:07:09
    eu executo o desvio Caso contrário eu
  • 00:07:12
    executo sequencialmente então esses são
  • 00:07:14
    todos instruções que entram aqui no
  • 00:07:17
    Nosso repertório a gente pode ter ainda
  • 00:07:19
    instruções associadas aos dispositivos
  • 00:07:21
    de entrada e saída segundo aspecto
  • 00:07:24
    importante é os tipos e os tamanhos dos
  • 00:07:27
    meus operandos os meus dados tá tá então
  • 00:07:30
    por exemplo a gente tem arquiteturas
  • 00:07:31
    hoje de 64 bits há algum tempo atrás as
  • 00:07:34
    arquiteturas eram de 32 bits para quem
  • 00:07:37
    trabalha com sistemas embarcados for
  • 00:07:38
    trabalhar com sistemas embarcados a
  • 00:07:40
    gente vai ver que tem alguns
  • 00:07:41
    dispositivos que são de 8 bits ou de 16
  • 00:07:43
    bits cada uma dessas plataformas tem um
  • 00:07:45
    tamanho típico de palavra então numa
  • 00:07:48
    arquitetura de 8 bits a minha palavra
  • 00:07:50
    tem 8 bits na arquitetura de 64 minha
  • 00:07:52
    palavra tem 64 bits Então eu preciso ser
  • 00:07:55
    capaz de fazer operações todas essas
  • 00:07:58
    operações do meu repertório
  • 00:08:00
    inicialmente sobre a palavra da minha
  • 00:08:03
    arquitetura bom mas não é porque eu tô
  • 00:08:05
    numa arquitetura de 64 bits que eu não
  • 00:08:07
    posso querer fazer uma operação em cima
  • 00:08:09
    de um byte ou em cima de meia palavra
  • 00:08:12
    então a arquitetura também precisa
  • 00:08:14
    definir Quais são os tipo e tamanh de
  • 00:08:16
    operandos tipicamente a gente pode fazer
  • 00:08:19
    operações com bite com meia palavra ou
  • 00:08:22
    com a palavra inteira da minha
  • 00:08:23
    arquitetura é importante também definir
  • 00:08:26
    né quando a gente como é que a gente
  • 00:08:28
    mapeia esses tipos de dados por exemplo
  • 00:08:30
    nas instruções nos tipos de dados das
  • 00:08:32
    linguagens de alto nível como c o
  • 00:08:35
    inteiro quantos bits ele tem isso vai
  • 00:08:37
    depender da minha plataforma então a
  • 00:08:39
    gente também pode utilizar nas
  • 00:08:41
    declarações das linguagens de alto nível
  • 00:08:43
    dizer que o inteiro por exemplo é de 16
  • 00:08:45
    bits usar o int 16 isso não vai fazer
  • 00:08:47
    diferença se eu tô numa plataforma de 16
  • 00:08:50
    de 32 ou de 64 bits aquele dado vai ter
  • 00:08:53
    sempre o mesmo tamanho vai ser tratado
  • 00:08:55
    sempre da mesma
  • 00:08:56
    forma bom terceiro aspecto que a gente
  • 00:08:59
    tem é o endereçamento dos operandos
  • 00:09:01
    então na minha instrução se for uma
  • 00:09:03
    instrução de soma como é que eu vou
  • 00:09:05
    fazer essa soma eu vou apontar para um
  • 00:09:07
    registrador que tá os meus operandos eu
  • 00:09:09
    vou apontar para um endereço da memória
  • 00:09:11
    eu vou apontar para um registrador que
  • 00:09:13
    tem um endereço de memória onde eu vou
  • 00:09:15
    ter que carregar o operando Então a
  • 00:09:17
    gente tem várias formas que a gente pode
  • 00:09:19
    acessar os operandos e tudo isso é
  • 00:09:21
    caracterizado pela nossa arquitetura do
  • 00:09:22
    conjunto de instruções ela precisa
  • 00:09:24
    definir Quais são os modos de
  • 00:09:26
    endereçamento e como funcionam esses
  • 00:09:28
    modos de
  • 00:09:31
    endereçamento quarto aspecto é o formato
  • 00:09:33
    da instrução Então eu preciso definir
  • 00:09:36
    como é que a unidade de controle do
  • 00:09:39
    processador vai reconhecer que aquela
  • 00:09:41
    instrução é uma instrução de soma de
  • 00:09:44
    movimentação de dados ou uma instrução
  • 00:09:46
    de controle então tipicamente eu preciso
  • 00:09:48
    definir um conjunto de bits pro meu
  • 00:09:50
    código de operação pro meu upcode Então
  • 00:09:52
    esse é um dos primeiros componentes que
  • 00:09:54
    a gente tem aqui no formato da instrução
  • 00:09:57
    além do upcode para caracter essa minha
  • 00:10:00
    instrução eu preciso determinar como é
  • 00:10:02
    que eu sei quais são os operandos se é
  • 00:10:04
    uma instrução de soma eu vou ter dois
  • 00:10:06
    operandos ou vou ter três operandos se
  • 00:10:08
    eu tiver três operandos um destino e
  • 00:10:10
    duas origens isso tem que tá explícito e
  • 00:10:12
    eu tenho que ter uma sequência escrita
  • 00:10:14
    no meu formato de instrução a gente pode
  • 00:10:16
    ter uma instrução que tem dois operandos
  • 00:10:19
    onde o primeiro deles é naturalmente o
  • 00:10:22
    destino e um dos operandos isso
  • 00:10:25
    simplifica o formato da minha instrução
  • 00:10:27
    Mas por outro lado a minha unidade de
  • 00:10:29
    controle tem que saber entender que
  • 00:10:31
    aquele mesmo valor vai ser utilizado de
  • 00:10:34
    duas formas diferentes como operando e
  • 00:10:36
    como destino
  • 00:10:38
    ah Além disso também a característica do
  • 00:10:40
    formato de instrução quantos bits ela
  • 00:10:42
    tem se ela tem tamanho fixo ou tamanho
  • 00:10:44
    variável para algumas arquiteturas todas
  • 00:10:47
    as instruções TM por exemplo 32 bits
  • 00:10:49
    como é o caso do mips que nós vamos
  • 00:10:51
    conversar em algumas aulas à frente
  • 00:10:54
    outras arquiteturas como é o caso da
  • 00:10:55
    Intel a instrução tem tamanho variável
  • 00:10:58
    Como existe esse legado essa
  • 00:11:00
    compatibilidade com as com as várias ah
  • 00:11:03
    com as ampliações que a gente teve nas
  • 00:11:05
    arquiteturas pode ser que tenha
  • 00:11:07
    instruções de 8 bits instruções de 16
  • 00:11:09
    instruções de 32 64 então precisa saber
  • 00:11:12
    lidar e interpretar com esses vários
  • 00:11:14
    formatos de instrução e finalmente o
  • 00:11:18
    nosso último aspecto aqui é o
  • 00:11:19
    armazenamento dos
  • 00:11:21
    operandos eu posso pegar um operando que
  • 00:11:23
    tá na própria instrução por exemplo tem
  • 00:11:25
    uma constante que faz parte da instrução
  • 00:11:28
    eu posso ter um operando que tá num
  • 00:11:29
    registrador que tá num acumulador eu
  • 00:11:31
    posso ter um operando que tá na memória
  • 00:11:33
    Então tudo isso tem que ser definido no
  • 00:11:36
    meu na arquitetura do meu conjunto de
  • 00:11:38
    instrução para saber como eu vou fazer
  • 00:11:40
    essa busca desse operando e Esse aspecto
  • 00:11:43
    tá associado também ao endereçamento e
  • 00:11:46
    ao meu formato de instruções essas essas
  • 00:11:49
    informações todas são extremamente
  • 00:11:51
    relacionadas tá
  • 00:11:53
    Ah e por exemplo no caso do acumulador
  • 00:11:57
    ele ele já destina onde vai ser
  • 00:11:59
    armazenado o resultado então eu também
  • 00:12:01
    preciso determinar onde eu armazeno o
  • 00:12:03
    meu resultado das minhas operações Então
  • 00:12:06
    tudo isso são características da Isa
  • 00:12:08
    então toda e qualquer arquitetura vai
  • 00:12:11
    ter que definir esses aspectos todos tá
  • 00:12:14
    seja ela a arquitetura da Intel de 32
  • 00:12:17
    bits seja ela o a arquitetura da arm
  • 00:12:19
    seja ela a arquitetura do mips não
  • 00:12:21
    importa qual arquitetura ela tem que
  • 00:12:23
    definir esses aspectos
  • 00:12:26
    todos bom e E aí Então dependendo de
  • 00:12:30
    todas essas características a gente tem
  • 00:12:32
    a arquiteturas com características
  • 00:12:35
    diferentes uma possibilidade infinita de
  • 00:12:38
    ou uma possibilidade muito grande de
  • 00:12:40
    combinação desses parâmetros para
  • 00:12:42
    resultar e nessas escolhas nessas
  • 00:12:44
    possibilidades então de novo colocando
  • 00:12:47
    agora em perspectiva a nossa evolução
  • 00:12:49
    histórica da Computação nós tivemos lá
  • 00:12:51
    os primeiros computadores com propósito
  • 00:12:53
    específico programação através de Chaves
  • 00:12:55
    e relê Aí lá na década de 40 veio o mod
  • 00:12:59
    de phoa com o conceito de armazenamento
  • 00:13:02
    do programa né e determinando como é que
  • 00:13:04
    a gente poderia ter esse programa para
  • 00:13:06
    ser executado a memória era alguma coisa
  • 00:13:09
    que era cara naquela época e não era
  • 00:13:11
    muito grande nós não tínhamos
  • 00:13:12
    computadores como hoje que tem 8 GB de
  • 00:13:15
    de Ram facilmente era muito menor as
  • 00:13:17
    quantidades naquela época então o código
  • 00:13:21
    armazenado né o resultado do Programa
  • 00:13:23
    que eu ia escrever que eu gostaria de
  • 00:13:25
    armazenar no meu programa tinha que ser
  • 00:13:26
    pensado para ser eficiente porque eu
  • 00:13:28
    tinha pouca memória ela tinha que ser
  • 00:13:30
    dividida entre dado e instrução Então o
  • 00:13:33
    que fez com que nessa época na década de
  • 00:13:35
    50 se tivesse uma abordagem de que as
  • 00:13:38
    minhas instruções tinham que ser
  • 00:13:40
    compactas então a gente eh o que a gente
  • 00:13:42
    vê nessa época eh são as instruções ou
  • 00:13:46
    conjunto de instruções de característica
  • 00:13:48
    cisc Complex instruction set computer né
  • 00:13:51
    ou computador com conjunto de instrução
  • 00:13:53
    complexo O que quer dizer esse complexo
  • 00:13:56
    primeiro lugar eu tenho muitas
  • 00:13:58
    instruções uma infinidade de instruções
  • 00:14:00
    possíveis não é só soma é soma e faz
  • 00:14:04
    mais alguma coisa depois disso então
  • 00:14:05
    existe uma combinação muito grande de
  • 00:14:07
    tipos de instruções instruções com duas
  • 00:14:10
    funções associadas Mas por que associar
  • 00:14:13
    duas funções a uma mesma instrução
  • 00:14:15
    justamente porque a memória era cara eu
  • 00:14:17
    quero que essa minha instrução ela faça
  • 00:14:20
    bastante coisa para uma mesma informação
  • 00:14:22
    que tá codificada tá ah então por isso
  • 00:14:26
    que houve essa motivação para
  • 00:14:27
    desenvolver esses tipos de instruções
  • 00:14:29
    complexas trazer na medida do possível
  • 00:14:32
    uma proximidade das instruções que
  • 00:14:34
    estavam sendo programadas pro meu
  • 00:14:37
    computador com as instruções como a
  • 00:14:39
    gente vê nós humanos vemos a definição
  • 00:14:41
    do problema e um conceito importante
  • 00:14:44
    para
  • 00:14:45
    permitir esse uso das instruções Cis foi
  • 00:14:48
    o conceito de
  • 00:14:49
    microprogramação que ele permitia que a
  • 00:14:51
    gente tivesse instruções complexas
  • 00:14:53
    escritas na memória e que ela fosse
  • 00:14:56
    executada Ou micro programada para ser
  • 00:14:59
    executada no nosso
  • 00:15:01
    processador bom então falando um
  • 00:15:03
    pouquinho mais de cisc Aqui nós temos
  • 00:15:05
    três exemplos de instrução Então a
  • 00:15:07
    primeira dela cas compare and operant ou
  • 00:15:10
    seja duas instruções a primeira eu vou
  • 00:15:12
    comparar dois operandos dependendo
  • 00:15:14
    doesse meu resultado de comparação eu
  • 00:15:17
    vou trocar esses
  • 00:15:19
    operandos aqui por exemplo no rtr eu vou
  • 00:15:22
    retornar e restaurar códigos Então essas
  • 00:15:25
    instruções todas que a gente tem aqui
  • 00:15:27
    esses três exemplos eu tô fazendo duas
  • 00:15:29
    instruções com uma única
  • 00:15:33
    codificação então quando a gente pensa
  • 00:15:35
    nas características de projeto do cisc O
  • 00:15:38
    que que a gente tem primeiro formato de
  • 00:15:40
    dois operandos é o mais comum eu tô
  • 00:15:42
    simplificando a minha instrução então
  • 00:15:45
    por exemplo eu vou somar o conteúdo do
  • 00:15:47
    registrador cx com um determinado
  • 00:15:49
    endereço de memória e armazenar no meu
  • 00:15:52
    registrador
  • 00:15:53
    cx segundo aspecto eu tenho vários modos
  • 00:15:56
    de combinar essas instruções eu posso
  • 00:15:59
    trabalhar com dois registradores como
  • 00:16:00
    operando registrador memória que é esse
  • 00:16:03
    exemplo ou memória registrador então não
  • 00:16:05
    importa a ordem eu poderia ter aqui um
  • 00:16:08
    endereço de memória como destino e como
  • 00:16:10
    operando Então essa grande flexibilidade
  • 00:16:12
    nos modos é uma característica das
  • 00:16:14
    organizações
  • 00:16:15
    cisc a gente tem múltiplos modos de
  • 00:16:18
    endereçamento também associado a esses
  • 00:16:20
    múltiplos modos né e a própria maneira
  • 00:16:23
    como eu vou acessar a memória eu posso
  • 00:16:25
    simplesmente acessar o endereço de
  • 00:16:26
    memória específico eu posso acessar um
  • 00:16:29
    endereço de memória ou um registrador
  • 00:16:30
    para pegar o endereço que eu quero ler
  • 00:16:32
    depois então essa combinação essa
  • 00:16:35
    flexibilidade permite com que a gente
  • 00:16:37
    torne essas instruções ainda mais
  • 00:16:40
    complexas bom se eu tenho múltiplos
  • 00:16:42
    modos de instrução múltiplas combinações
  • 00:16:45
    isso vai fazer com que as instruções
  • 00:16:47
    tenham uma largura variável eu tenho
  • 00:16:49
    instruções que podem ser menores ou
  • 00:16:51
    maiores eu posso ter dois operandos três
  • 00:16:53
    operandos endereços de memória endereço
  • 00:16:55
    de registrador tudo isso leva a uma
  • 00:16:57
    instrução com largura variável
  • 00:16:59
    ah como essas instruções são complexas
  • 00:17:02
    por exemplo posso ter duas instruções
  • 00:17:04
    sendo especificada por uma única
  • 00:17:06
    instrução isso vai fazer com que eu
  • 00:17:07
    precise de múltiplos ciclos de relógio
  • 00:17:10
    para executar essa instrução então pro
  • 00:17:12
    programador é uma única instrução mas
  • 00:17:14
    pro meu hard pro meu processador eu vou
  • 00:17:16
    ter múltiplas múltiplas instruções sendo
  • 00:17:19
    executadas naquele ciclo isso faz com
  • 00:17:22
    que eu tenha as um tempo de execução
  • 00:17:24
    maior para uma dada instrução e o último
  • 00:17:27
    aspecto é que o hardware poucos
  • 00:17:29
    registradores Até porque eu tenho
  • 00:17:31
    bastante flexibilidade com a maneira de
  • 00:17:33
    fazer esse
  • 00:17:35
    endereçamento bom em contraposição a
  • 00:17:38
    esse caminho todo de de abordagem de
  • 00:17:41
    conjunto de instruções de cisc que
  • 00:17:43
    surgiu na década de 50 meados da década
  • 00:17:46
    de 70 mais forte no começo da década de
  • 00:17:48
    80 a gente teve um outro movimento de
  • 00:17:50
    projeto que tratava de um conjunto
  • 00:17:53
    reduzido de instruções ou seja o risque
  • 00:17:56
    o red reduced instruction set computer
  • 00:17:59
    ou um conjunto de instruções reduzido
  • 00:18:02
    reduzido traz várias implicações tá
  • 00:18:06
    então primeiro eu tenho menos instruções
  • 00:18:08
    eu tenho instruções mais simples então
  • 00:18:11
    cabe ao programador ou ao compilador
  • 00:18:14
    usar mais instruções para atingir essa
  • 00:18:16
    tarefa de alto nível que foi diferente
  • 00:18:18
    do que acontecia no cisc né ah todas as
  • 00:18:22
    instruções sem tamanho fixo então numa
  • 00:18:24
    arquitetura de 32 bits todas as minhas
  • 00:18:26
    instruções risque vão ter exatamente de
  • 00:18:28
    32 bits isso simplifica o meu projeto do
  • 00:18:31
    Hard simplifica o meu processo de
  • 00:18:33
    decodificação porque eu sempre vou
  • 00:18:35
    trabalhar com o tamanho da minha palavra
  • 00:18:37
    pra minha instrução eu tenho poucos
  • 00:18:39
    modos de endereçamento por que que eu
  • 00:18:41
    tenho poucos modos de endereçamento
  • 00:18:43
    porque a minha instrução para ter poucos
  • 00:18:45
    formatos de instrução para ter essa
  • 00:18:47
    previsibilidade essa Simplicidade no
  • 00:18:49
    processo eu preciso conseguir capturar
  • 00:18:52
    esses modos todos de endereçamento
  • 00:18:54
    dentro desses poucos tipos de instrução
  • 00:18:56
    que eu tenho tá então a simplicidade
  • 00:18:59
    desse conjunto de instrução reduzido vai
  • 00:19:01
    fazer com que o meu hardware seja mais
  • 00:19:03
    simples e vai sobre alguns aspectos ter
  • 00:19:06
    menos flexibilidade do que a gente tem
  • 00:19:08
    numa organização cisc num computador
  • 00:19:10
    cisc bom mas se tudo isso aqui é mais
  • 00:19:14
    estável mais simples mais regular isso
  • 00:19:17
    vai permitir com que eu tenha um
  • 00:19:18
    desempenho melhor do meu hardware a
  • 00:19:19
    unidade de controle é feita todo em
  • 00:19:22
    hardware e ela consegue tratar muitas
  • 00:19:24
    vezes com as instruções serem executadas
  • 00:19:26
    num único ciclo de relógio Então apesar
  • 00:19:29
    de eu ter mais instruções para mesmo
  • 00:19:31
    programa numa organização num computador
  • 00:19:34
    risque eu vou precisar posso eu posso
  • 00:19:37
    precisar de menos tempo do que num
  • 00:19:39
    computador cisc se no computador cisc eu
  • 00:19:41
    tenho poucas instruções mas que duram
  • 00:19:43
    muito no Risk eu posso ter muitas
  • 00:19:45
    instruções mas com um ciclo de execução
  • 00:19:48
    então é importante a gente lembrar que o
  • 00:19:50
    número de instruções não é uma métrica
  • 00:19:52
    para desempenho eu preciso saber qual
  • 00:19:53
    que é o meu tempo de ciclo então
  • 00:19:55
    justamente essa contraposição de Risk
  • 00:19:58
    cisk com relação ao número de instruções
  • 00:20:00
    e a o tem o número de ciclos para
  • 00:20:02
    executar cada instrução pode fazer com
  • 00:20:04
    que a gente tenha desempenho parecidos
  • 00:20:06
    ou diferentes dependendo de como foi
  • 00:20:08
    esse projeto do
  • 00:20:10
    Hardware bom pra gente contextualizar
  • 00:20:13
    aqui ah como eu falei para vocês aqui
  • 00:20:15
    tem uma vários eh projetos Risk aí da
  • 00:20:20
    década de 80 que eu gostaria de destacar
  • 00:20:22
    aqui para vocês eh que esse projeto da
  • 00:20:25
    década de 80 o Risk aqui ele dá
  • 00:20:27
    justamente
  • 00:20:29
    início a linhagem do arm do processador
  • 00:20:31
    que a gente tem bastante utilizado em
  • 00:20:33
    domínio de sistemas embarcados hoje aqui
  • 00:20:35
    aparece também o Spark e outros
  • 00:20:38
    processadores que aparecem aí no uso de
  • 00:20:41
    servidores bom o que que a gente tem
  • 00:20:44
    implementado hoje né Nem tanto risque
  • 00:20:47
    nem tanto cisk a gente ainda tem alguns
  • 00:20:48
    computadores Risk sendo implementados
  • 00:20:50
    sendo utilizados como eu falei o caso do
  • 00:20:52
    arm mas por exemplo a própria Intel que
  • 00:20:54
    começou com essa característica de cisc
  • 00:20:57
    hoje ela não apesar do conjunto de
  • 00:20:59
    instruções para esse cisc a
  • 00:21:01
    implementação não é completamente cisc
  • 00:21:04
    por quê Porque a gente teve avanços na
  • 00:21:06
    tecnologia né As Memórias têm muito mais
  • 00:21:08
    capacidade então não tem essa restrição
  • 00:21:11
    que a gente tem com relação a ao espaço
  • 00:21:13
    que o código vai gerar né e por outro
  • 00:21:16
    lado as arquiteturas Risk permitiram uma
  • 00:21:18
    série de evoluções com relação às
  • 00:21:20
    estratégias de desempenho que levaram a
  • 00:21:23
    o uso dessas técnicas dentro das
  • 00:21:25
    arquiteturas Risk dentro dessas
  • 00:21:27
    organizações micro programadas então não
  • 00:21:30
    tem mais essa distinção Clara desses
  • 00:21:33
    dois dado essa a mudança dos requisitos
  • 00:21:35
    e a essa evolução das técnicas que a
  • 00:21:39
    gente teve para projeto de arquitetura e
  • 00:21:41
    que acabaram sendo levadas pros dois
  • 00:21:43
    ambientes aí Risk
  • 00:21:46
    cisc aqui a gente tem vários elementos
  • 00:21:48
    para considerar gostaria de destacar
  • 00:21:50
    aqui o 486 como um cisc de 32 bits Pain
  • 00:21:55
    Então a gente tem aqui as arquiteturas
  • 00:21:56
    da Intel nessa região e aqui a gente vê
  • 00:21:59
    o arm como um exemplo clássico de
  • 00:22:03
    risque E aí como referências a gente tem
  • 00:22:06
    o Capítulo 2 do Livro do Patterson e do
  • 00:22:08
    henes e o capítulo 10 do livro do stal
  • 00:22:26
    [Música]
  • 00:22:28
    C
  • 00:22:41
    [Música]
Tags
  • Arquitetura de Computadores
  • Conjunto de Instruções
  • CISC
  • RISC
  • ISA
  • Programação
  • Educação em Computação
  • Desempenho de Computadores
  • Microprogramação
  • Desempenho