Organização e Arquitetura de Computadores

Carlos Augusto de S. Almeida prof . c augusto almeida @gmail.com

Universidade Federal de Sergipe (UFS) São Cristovão – Sergipe

Abril de 2012

Processador Roteiro da Aula

2 Arquitetura de Von Neumann

(4) Unidade Lógica e Aritmética (ULA)

(5) Unidade de Controle (UC)

Unidade Central de Processamento (UCP)

(1) Unidade de Entrada (3)

Unidade de

Memória (2) Unidade de Saída

•Os dados e as instruções são armazenados em uma memória única; •O conteúdo da memória é endereçado pela sua posição;

•A execução das instruções ocorrem de modo sequencial;

•As CPUs tb contam com uma pequena quantidade de memória, são os registradores;

•Os registradores estão no topo da Hierarquia de Memória;

•Os registradores se dividem: –Reg. Visíveis ao Usuário;

–Reg. de Controle e Estado;

Máquina Ligada Máquina Desligada Execução de 1 Instrução

Processador (CPU) •Processador ou Unidade Central de Processamento (UCP)

•É responsável direta ou indiretamente pela realização de qualquer operação realizada por um computador:

–Direta: pq realiza as operações internas;

–Indireta: a CPU emite ordens para os demais componentes do computador realizarem alguma tarefa.

•Desde o momento que a máquina é ligada, a CPU executa instruções continuamente (nunca para);

•Essas instruções estão definidas em um programa;

•Atividades mais básicas da CPU (o Ciclo de Instrução Básico):

(1) buscar a próx. instrução a ser executada; e (2) executar a instrução; retornar p/ (1)

Ciclo da Instrução

•Enquanto estiver ligada a CPU:

1.Busca uma instrução na memória (ciclo de busca) •Busca a instrução em si;

•Interpreta a operação a ser executada;

•Busca os operandos (se houver).

2.Executa a instrução (ou ciclo de execução) •Executa efetivamente a instrução;

•Guarda o resultado (se houver) no local definido na instrução;

•Reinicia o processo (voltar ao passo 1), até o termino das instruções.

–Ciclo de Instrução = ciclo de busca + ciclo de execução

•O propósito da CPU é realizar operações sobre dados (processar dados), mas para isso ela precisa realizar algumas operações de controle para obter esses dados e depois guardar o resultado da operação. 5

Ciclo da Instrução

1.Cálculo do Endr.: determina o endr. da próx. instrução a ser executada; 2.Busca da Instr.: lê a instrução em seu local de memória para a CPU; 3.Decodificação da Op. da Instr.: determina o tipo de operação que será realizada;

4.Calc. do Endr. da Operando: determina o endr. do operando (se houver) na memória, ou em um dispositivo de E/S;

Ciclo de Instrução (mais detalhado)

Ciclo da Instrução

5.Busca do Operando: pega o operando da memória ou dispositivo E/S; 6.Operação sobre os Dados: realiza a operação efetivamente; 7.(o mesmo que 4) 8.Armazenamento do Operando: escreve o resultado da op. na memória ou disp. E/S.

Ciclo de Instrução (mais detalhado)

Fluxo de Dados

•Terminado o ciclo de leitura, a UC (Unidade de Controle) examina o conteúdo do Reg. de Instruções (IR);

•Caso o IR contenha um operando que usa endereçamento indireto, ainda é necessário realizar um ciclo de busca indireto de leitura. 8

Ciclo de Instrução Fluxo de dados do Ciclo de Busca, leitura de dados

Fluxo de Dados

•O ciclo de execução pode assumir muitas formas; que depende da instrução de máquina contida na IR.

–(1) reg. Ù reg(2) leitura/escrita de memória; (3) E/S; (4) utilização de ULA.

•Esse ciclo pode envolver: 9

Ciclo de Instrução

Fluxo de dados do Ciclo Indireto, leitura de dados

Executando Instruções

•Considere o exemplo de uma CPU hipotética com: –Um único reg. de dados, o AC (acumulador);

–O opcode das instruções é de 4-bits;

–E os seguintes registradores:

Executando Instruções

•Suponha a execução da operação em Assembler: –add mem(940h), mem(941h), mem(941h);

–Essa operação, soma os conteúdos das palavras de memória 940 e 941, e guarda o resultado no endr. 941;

–940 contém 3h, e 941 = 2h

Formato de um núm. inteiro: [ 1-bit sinal | 15-bits magnitude]

•Formato da instrução: [ 4-bits opcode | 12-bits endr. de memória ]

•Considere que em ling. de máquina essa operação é convertida em

3 instruções, que começam no endr. de memória 300

301: 5 9 4 1 h
302: 2 9 4 1 h
940: 0 0 0 3 h
941: 0 0 0 2 h

–endr. 300: 1 9 4 0 h

2h = armazena AC na memória05h = somar valor da mem. ao AC

–opcodes: 1h = carrega AC na memória 1

Executando Instruções

•endr. 300: 1 9 4 0 h1h opcode, 940h endr. de mem.
301: 5 9 4 1 h
302: 2 9 4 1 h
940: 0 0 0 3 h
941: 0 0 0 2 h

•add mem(940h), mem(941h), mem(941h);

2h = armazena AC na memória05h = somar valor da mem. ao AC

•opcodes: 1h = carrega AC na memória

IR (registrador de instrução) <= 1940h,depois PC é incrementado, PC = 301

1.[busca] PC (contador do programa) = 300, endr. da instrução a ser executada (obs.: processo simplificado)

3.[busca] PC = 301,IR <= 5941h, PC é incrementado PC = 302

2.[instrução] IR = 1940h (opcode diz para copiar mem(940h) => AC), AC <= 3h

4.[instrução] IR = 5941h (opcode diz mem(941h) + AC => AC), AC <= 2h (mem) + 3h (AC anterior)

5.[busca] PC = 302,IR <= 2941h, PC é incrementado PC = 303

6.[instrução] IR = 2941h (opcode diz para guardar AC na mem(941h)), mem(941h) <= 5h

Executando Instruções

13 Fig. 3.5: Stallings

Executando Instruções

14 •add mem(940h), mem(941h), mem(941h);

Executando Instruções

•add mem(940h), mem(941h), mem(941h); Executando Instruções

16 •add mem(940h), mem(941h), mem(941h);

Executando Instruções

•add mem(940h), mem(941h), mem(941h); Executando Instruções

18 •add mem(940h), mem(941h), mem(941h);

Executando Instruções

•add mem(940h), mem(941h), mem(941h); Executando Instruções

20 •add mem(940h), mem(941h), mem(941h);

Ciclo da Instrução (aceitando Interrupções)

Lembrando que uma interrupção pode ser gerada por: •Programa: p.ex. divisão por zero, uma exceção;

•Timer: um cronometro criado pelo Sistema Operacional dentro processo;

•E/S: p.ex. sinalizar o termino de um operação de E/S;

•Falha de Hardware: p.ex. falta de energia, erro de paridade de memória. 21

Ciclo de Instrução (versão detalhada) Ciclo da Instrução (aceitando Interrupções)

Ciclo de Instrução (versão básica) Fluxo de Dados

Ciclo de Instrução

Fluxo de dados do Ciclo de Interrupção, salvando o reg. PC do processo corrente antes de atender uma Interrupção

Funções do Processador

•As 2 funções básicas: –Função de Processamento;

–Função de Controle.

24 CPU, representação das funções mais básicas.

Funções do Processador

•UAL (ALU): Unidade Aritmética e Lógica •ACC e Reg. de dados;

•Os componentes em destaque fazem parte da ALU. 25

RDM (MBR): R. Buffer de Memória;

REM (MAR): R. Endr. da Memória;

UC: Unidade de Controle; RI (IR): R. Instruções;

CI (PC): Contador de Instruções;

Esquema baseado no Processador Intel 8080

Área Funcional de Processamento Basicamente consiste de:

•UAL (ou ALU): é o componente principal da área de processamento, o que efetivamente realiza as operações da máquina.

•Registradores de Dados: usados, –como Parâmetros das operações;

–para Armazenar dados;

–ou para Guardar resultados de operações.

•Barramento Interno:

–Interliga os componentes do processador. Em conjunto tb é chamado de data path.

Funções do Processador PSW

UAL (ou ALU)

–aritméticas:soma subtração multiplicação …
–lógicas:AND OR XOR …

•Responsável pelas operações:

•Uma ALU pode conter o mesmo componente repetidas vezes –Motivo: aumentar o paralelismo das operações

–P.ex. realizar 4 somas simultaneamente, 2 comparações, …

–Unid. de Cálculo (UC)ou Unid. de Execução (UE);

•Alguns fabricantes substituíram o nome ALU por:

–Na Intel a ALU é divida em: •IU: Integer Unit;

•FPU: Floating Point Unit;

•Principio básico: quanto menor for a ALU, mais rápida ela é. Equação de Einstein.

Funções do Processador :: Área Funcional de Processamento

Registradores de Dados

•A ALU realiza operações apenas sobre dados contidos em reg., e o resultado (se houver) tb só pode ser guardado em um reg.

•Em geral, a largura de um reg. é = a largura da palavra E a largura de reg. ponto flutuante = 2x a largura da palavra;

•A partir do Intel 8086, o reg. ACC, como mostrado na Fig. deixou de existir. Sendo substituído por reg. específicos;

•Além dos reg. de dados, os reg. possuem vários outros, p.ex.:

–PSW (Program Status Word), um reg. de controle usado nas operações aritméticas, onde cada um de seus bits possui uma finalidade específica:

•sinal: contém o sinal resultante de uma op. aritmética;

•overflow

•zero

•carry out

•paridade

Funções do Processador :: Área Funcional de Processamento

PSW Área Funcional de Controle

Funções do Processador

•A área de controle é projetada para entender: –o que fazer;

–como fazer;

–quem irá fazer;

–e quando deve ser feito.

•A área de controle é responsável por: –busca da instrução da próx. instrução a ser executada;

–interpretar a instrução (fetch cycle, ciclo de busca da instrução)

–geração dos sinais de controle apropriados para realizar a operação,

•P.ex. solicitação de leitura de um endr. da memória principal.

•Área Funcional de Controle = Cérebro Área de Processamento = Músculos.

Área Funcional de Controle

Funções do Processador

•Componentes Básicos: –Unid. de Controle (UC);

–Relógio (clock);

–IR: Reg. de Instrução;

–PC: Contador de Programa;

–MAR: Reg. de Endr.

–MBR: Reg. de Buffer de Memória;

–Decodificador de Instrução.

Unidade de Controle

Funções do Processador :: Área Funcional de Controle

•É o dispositivo mais complexo da CPU;

•Possui toda a lógica necessária para realizar a movimentação de dados e de instruções de fora para dentro da CPU, e vice-versa;

•Os sinais de controle sempre são emitidos em intervalos de tempos regulares, conforme o clock do processador;

•As microoperações comandadas pela UC segue uma: –Microprogramação;

–Programação escrita diretamente no hardware.

•O modo como a UC conduz a execução das instruções, define o tipo de arquitetura do processador:

–SSID: CPUs que exec. as instruções de modo sequencial;

–Pipeline (linha de montagem): CPUs que exec. instruções de modo concorrente;

–CPUs que exec. instruções paralelamente;

–CPUs que realizam processamento vetorial.

Pipeline de Instruções

•O ciclo de instrução apresentado até o momento é bem básico, e foi usado apenas nas primeiras CPUs 8080.

•Desde a CPU Intel 8086, que se utiliza um modelo similar, mas que busca realizar essas operações em paralelo, pipeline;

Intel 80486até 5 estágios,
Pentium Proaté 6 estágios,
Pentium Iaté 10 estágios,
Pentium 4até 20 estágios.

•Intel 8086 e 8088 introduziram 2 estágios de pipeline, 32

Questões de Projeto

•Algumas questões envolvidas no projeto de um Processador: –Tecnologia de Fabricação;

–Largura da Palavra;

–Conjunto de Instruções;

–Registradores de Dados (quantidade, tipo, e largura);

–Funcionamento da Unidade de Controle.

Tecnologia de Fabricação •Quanto + transistores por chip, + desempenho;

•+ transistores =>+ aquecimento + consumo de energia

–Solução para amenizar o problema: ao invés da CPU ter um único núcleo com muitos transistores, tem-se vários núcleos com menos transistores;

•Para --aquecimento => --reduzir a frequência=> --desempenho

–Uma solução (existem outras): modificar o conjunto de instruções & programas: (1) aumentar o paralelismo das instruções; e (2) criar formas de executar as instruções mais rapidamente.

•Quem detém a tecnologia atualmente:Intel e AMD.

Questões de Projeto

Largura da Palavra

•Uma palavra de largura maior pode representar a possibilidade do processador operar, de uma só vez, com valores maiores, algo muito usado por:

–Usuários domésticos: processamento de áudio, vídeo, e jogos;

–Empresas e pesquisadores: para operações envolvendo ponto flutuante.

•Não confundir: largura da palavracom o espaço de endereçamento

–Em geral, a largura da palavra de dados é = a largura da palavra de endr. Mas isso não é regra. P.ex. uma CPU pode ser de 64-bits e o endr. ser de 48-bits.

Largura do Barramento

•Por questões de desempenho, comumente a largura do barramento de dados é múltipla da largura da palavra.

–P.ex. largura do barramento de dados = 2x largura da palavra (ou até mais);

•O Pentium possuía palavras de 32-bits, mas o barramento de dados chegava até 128-bits (4x a largura da palavra) em algumas versões;

•O Pentium-4 de 64-bits possui barramento interno de 256-bits.

Questões de Projeto

Conjunto de Instruções

•O conjunto de instruções define as operações mais primitivas que a máquina irá realizar.

•Sendo assim, esse conjunto define como serão projetados boa parte dos componentes da máquina:

–P.ex. a CPU, os barramentos,

•Ver mais questões no Slide: Conjunto de Instruções

Questões de Projeto

Registradores de Dados

A existência de reg. de dados acarreta uma série de vantagens: +Reg. são mais rápidos do que a Memória Principal;

+É mais fácil para o compilador lidar com reg. do que com a pilha de dados; •Logo quanto mais reg. melhor.

•Pontos Flutuantes são armazenados em um tipo especial de reg. que costuma ser 2x maior que o tamanho da palavra padrão da CPU

–P.ex. CPUs de 32-bits possuem reg. de 64-bits para pontos flutuantes,

–CPUs de 64-bits possuem reg. 128 bits.

Intel 8080: possui 7 regPentium 4: 128 reg. SPARC: 512 reg.

•Alguns números: 37

Questões de Projeto

Organização dos Registradores

•A CPU possui 2 tipos básicos de registradores:

–Reg. Visíveis ao Usuário: podem ser usados pelos compiladores ou programadores assembler para evitar acessos a memória;

–Reg. de Controle e Estado: são usados apenas pela Unidade de Controle (UC) da CPU, e pelo Sistema Operacional para controlar os processos.

•Reg. Visíveis ao Usuário, podem ser de: –Uso Geral: podem ser usados para "qualquer coisa";

–Dados: guardam apenas dados e não-podem ser usados para guardar endr.;

•Ponteiros de Segmento;Registradores de Índice; Ponteiros de Pilha.

–Endereços: podem ser de uso geral, ou podem estar dedicados a um modo de endereçametno em particular;

–Códigos Condicionais (ou flags): são bits definidos pela CPU como resultado de alguma operação. São parcialmente visíveis ao usuário.

•Reg. de Controle e Estado

Organização dos Registradores

–Uso GeralDados Endereços Códigos Condicionais (ou flags)

•Reg. Visíveis ao Usuário, podem ser de: –Questões de Projeto •O reg. deve ser de uso geral ou específico;

•A quantidade de reg. disponíveis ao programador/compilador;

•O tamanho do reg.;

•Adotar ou não códigos condicionais (flags).

•Reg. de Controle e Estado

Organização dos Registradores •Reg. Visíveis ao Usuário

•Reg. de Controle e Estado, dependem da CPU, mas 4 deles são essenciais. Estes reg. são usados para transferir dados entre CPU Ù memória.

–Contador de Programa (CP, ou PC): contém o endr. da instrução lida (ou executada);

–Reg. de Instrução (RI): contém a última instrução lida;

–Reg. de Endr. de Memória (REM ou MAR): contém o endr. de uma posição de memória;

–Reg. de Buffer de Memória (RBM, RDM, ou MBR), ou Reg. de Dados temporários de Memória: contém uma palavra de dados para ser lida/escrita na memória;

mais recentes operações aritméticas, bits que habilitam interrupções,

–Palavra de Estado do Programa (PSW): possui bits para refletir resultado das

–Questões de Projeto •Alguns reg. são criados pensando no suporte ao Sistema Operacional;

•Informações de Controle e Estado podem ser guardadas em registradores ou na memória, tudo depende da relação velocidade vs custo. 40

Organização dos Registradores

•As CPUs (a) Motorola MC68000 e (b) Intel 8086 ambas são de 16-bits, mas apesar de projetadas na mesma época, são bem diferentes;

•O MC68000 possui um conjunto de reg. bastante regular, sem nenhum reg. de uso especializado;

•O 8086 é bem diferente, cada reg. é de uso específico, mas tb possui reg. de uso geral;

•A primeira CPU de uma família deve ser bem pensada. A CPU (c) Pentium 4 é de 32-bits, mas para permitir a compatibilidade dos programas mantém a organização original do 8086;

•Dessas duas formas de organização. Qual é a melhor?

Comentários