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

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

Sintesi

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.

Punti di forza

  • 🖥️ 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.

Linea temporale

  • 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.

Mostra di più

Mappa mentale

Video Domande e Risposte

  • 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.

Visualizza altre sintesi video

Ottenete l'accesso immediato ai riassunti gratuiti dei video di YouTube grazie all'intelligenza artificiale!
Sottotitoli
pt
Scorrimento automatico:
  • 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]
Tag
  • Arquitetura de Computadores
  • Conjunto de Instruções
  • CISC
  • RISC
  • ISA
  • Programação
  • Educação em Computação
  • Desempenho de Computadores
  • Microprogramação
  • Desempenho