Você está na página 1de 42

ArquiteturaComputadores.doc - 08/03/07

APOSTILA DE ARQUITETURA DE COMPUTADORES

Sérgio Miranda Paz

2007

ArquiteturaComputadores.doc - 08/03/07 – página

1

INTRODUÇÃO – CONCEITOS BÁSICOS

“Arquitetura de Sistemas”, “Sistemas Operacionais”

no “Aurélio”:

sistema: conjunto de elementos, materiais ou ideais, entre os quais se possa encontrar ou definir alguma relação arquitetura: disposição das partes ou elementos de um edifício ou espaço urbano; (figuradamente) plano, projeto operação: complexo de meios que se combinam para a obtenção de certo resultado termos de sentido amplo, aplicáveis a muitos setores de atividades (e não especificamente à Computação!) neste curso, serão estudados os sistemas “computacionais” computador: aquele que faz cômputos (cômputo: conta, cálculo) (em processamento de dados): aparelho eletrônico capaz de receber informações, submetê-las a um conjunto especificado e predeterminado de operações lógicas ou matemáticas, e fornecer o resultado dessas operações; cérebro eletrônico (Aurélio, 1975) serão estudados os componentes dos sistemas computacionais, e suas relações, numa abordagem “top-down” (“de cima para baixo”) os sistemas computacionais englobam não só os computadores de uso geral, mas também os equipamentos computadorizados, de uso específico, ou dedicado (exemplos: eletrodomésticos diversos, controladores de processos, dispositivos para automação, etc.)

ArquiteturaComputadores.doc - 08/03/07 – página

2

EVOLUÇÃO HISTÓRICA DOS COMPUTADORES

dispositivos mecânicos (500a.C. a 1880)

ábaco, em 500a.C., na Babilônia usado por comerciantes e agricultores estendeu-se a todo o Império Romano máquina de Blaise Pascal (matemático e filósofo francês), em 1642 aprimoramento do ábaco dotado de engrenagens dentadas, e de uma manivela precursora das calculadoras mecânicas máquina de Gottfried Leibniz (matemático e filósofo alemão), em 1673 aprimoramento da máquina de Pascal capaz de executar multiplicação e divisão máquinas de Charles Babbage (matemático inglês, considerado o “Pai da Computação Moderna”) máquina de diferenças, em 1823

baseada no processo das diferenças finitas usada para cálculos para navegação, pela Marinha Inglesa capaz de calcular polinômios e funções trigonométricas com 15 algarismos e de armazenar resultados (memória)

máquina analítica

estrutura semelhante à atual (entrada/saída, memória, processador) uso de cartões perfurados ficou apenas no projeto (a tecnologia para sua construção era insuficiente na época)

problemas dos dispositivos mecânicos: dificuldade de construção, lentidão (devido à inércia das engrenagens), grandes dimensões, alto custo, pouca confiabilidade, reduzida capacidade de armazenamento

dispositivos eletromecânicos (1880 – 1945)

principal componente: relê (usado, na época, em telefonia) máquina tabuladora de Herman Hollerith, em 1889 acionada por motor elétrico classificava e ordenava informações em cartões perfurados usada no censo de 1890, nos Estados Unidos criou a “Computer Tabulating Recording Corporation”, que, em 1924, deu origem à “IBM – International Business Machines” máquinas de Konrad Zuse (estudante de engenharia alemão), em 1935-1941 primeira calculadora eletrônica uso de relês eletromecânicos, e do sistema binário máquinas Z1, Z2, Z3 e Z4, utilizadas no projeto de aviões e mísseis alemães destruídas durante a Segunda Guerra “Mark I”, de Howard Aiken (físico e matemático norte-americano), em 1944 uso das idéias de Charles Babbage uso de relês eletromecânicos, e do sistema decimal projeto financiado pela IBM executava uma soma em 6s, uma divisão em 12s

ArquiteturaComputadores.doc - 08/03/07 – página

3

computadores eletrônicos (a partir de 1945)

divisão (subjetiva) em gerações, baseada na tecnologia empregada 1 a . geração: computadores à válvula válvula: dispositivo eletrônico, constituído por uma cápsula de vidro, com vácuo e placas metálicas em seu interior, com elevados consumo de energia e dissipação de calor “Colossus”, de Alan Turing (matemático inglês), de 1943

dedicado à quebra de códigos militares secretos alemães manteve-se em sigilo até recentemente não é reconhecido como o primeiro computador

ENIAC (“Electronic Numerical Integrator And Computer”), de John Mauchly e John Eckert (professores norte-americanos, da Universidade da Pensilvânia)

considerado o primeiro computador do mundo projeto financiado pelo exército norte-americano, para cálculos balísticos (não foi, porém, utilizado na guerra, pois ficou pronto depois do seu final) usado posteriormente para o desenvolvimento da bomba de hidrogênio 18.000 válvulas, 30 toneladas, 1.600m 2 , 140kW, 6.000 chaves cerca de 10.000 operações por segundo problema: manutenção (freqüente queima de válvulas) desmontado em 1955

EDVAC (“Electronic Discret Variable Automatic Computer”), em 1946

projeto baseado no ENIAC abandonado por Mauchly e Eckert, que fundaram sua empresa UNIVAC (atual UNYSIS)

IAS (do “Institute for Advanced Studies”), da Universidade de Princeton, Estados Unidos

primeiro computador com programa armazenado (arquitetura de von Neumann, ainda hoje utilizada pela maioria dos computadores) dados e programa armazenados na mesma memória execução seqüencial de instruções: o ciclo de instrução formado pelos ciclos de busca e de execução

UNIVAC 1 (“Universal Automatic Computer”), de Mauchly e Eckert, nos Estados Unidos, em 1949

primeiro computador para fins comerciais utilizado no censo de 1950, nos Estados Unidos

computadores da série 700, da IBM, ao longo dos anos 50

em 1958, a IBM já era, destacadamente, o maior fabricante de computadores do mundo

2 a . geração: computadores a transistor transistor: dispositivo de silício, produzido pela primeira vez pelos laboratórios Bell, nos Estados Unidos, em 1947; mais barato, menor, de menor consumo e dissipação de calor do que a válvula computadores da série 7000, da IBM

baseados nos computadores da série 700, mas agora transistorizados

computadores da série PDP, da DEC (“Digital Equipment Corporation”), a partir de 1957

de menor porte do que as máquinas IBM, porém de ótimo desempenho, e custo bem menor grande sucesso comercial, o que fez da DEC a principal rival da IBM

3 a . geração: computadores com circuitos integrados circuito integrado: circuito de reduzidíssimas dimensões, com milhares de transistores, construído pela primeira vez pela Texas Instruments, em 1958, numa peça de germânio, e aprimorado pela Fairchild Semiconductor, usando pastilhas de silício (“chips”) série IBM /360, da IBM, a partir de 1964

introdução do conceito de “família” de computadores (sucessivos aprimoramentos, com manutenção da compatibilidade com os modelos anteriores) introdução da multiprogramação (vários programas compartilhando memória e processador, dando a impressão de execução simultânea) introdução do sistema operacional (conjunto de programas para gerenciar os recursos de “hardware”)

PDP11, da DEC, em 1970

“minicomputador” de maior sucesso comercial

“Patinho Feio”, do Laboratório de Sistemas Digitais da Escola Politécnica da Universidade de São Paulo, em 1971/1972

primeiro computador projetado e construído no Brasil desenvolvido por professores e alunos da Escola Politécnica processador de 8 bits memória principal: 4Kbytes (de núcleo de ferrite) ciclo de instrução: 2 s periféricos: leitora de fita de papel perfurada, terminal de vídeo, impressora, chaves e lâmpadas

ArquiteturaComputadores.doc - 08/03/07 – página 4 a . geração: computadores com circuitos integrados em escala muito grande (VLSI) VLSI (“very large scale integration”): milhões de transistores num único “chip”, produzido a partir do início dos anos 70, graças aos avanços da microeletrônica computadores de grande porte (“main frames”)

4

aprimoramento da família /360, da IBM VAX, da DEC

CRAY

primeiro “supercomputador”, assim chamado pela sua grande capacidade de processamento

microprocessador: processador numa única pastilha

primeiro: INTEL-4004, da Intel Corporation, em 1971 outros da Intel: 8008, 8080 (em 1973), 8086 (em 1978), 80286 (em 1982), 80386 (em 1985), 80486 (em 1989), Pentium (em 1993), Pentium Pro (em 1993), Pentium II (em 1997) da Motorola: MC 6800 (em 1974), MC 68000 (em 1979), MC 68040 (em 1989) da Zilog: Z80 (em 1974), Z8000 (em 1979)

microcontrolador: processador + memória + módulos de entrada/saída numa única pastilha

diversos fabricantes e modelos Intel (e outros): 8051 Motorola: 68HC05, 68HC11 National: Cop8 Microchip: PIC

microcomputador, ou computador pessoal

baseado em microprocessador baixo custo, pequena dimensão tipo “PC” (originalmente produzido pela IBM), com microprocessadores da linha Intel tipo “Macintosh” (originariamente produzido pela Apple), com microprocessadores produzidos pela Motorola tipo “PowerPC” (associação entre a Apple, a Motorola e a IBM)

5 a . geração: ??? Lei de Moore (enunciada nos anos 70): “a velocidade e a capacidade de memória dos computadores dobram a cada 18 meses” há algum limite para isso? quando será atingido?

porém. desde os anos 40, não houve significativas mudanças na arquitetura

ArquiteturaComputadores.doc - 08/03/07 – página

5

ARQUITETURA DE VON NEUMANN

também chamada de arquitetura de “programa armazenado”, pois dados e instruções do programa compartilham a mesma memória para seu armazenamento componentes do sistema computacional, segundo a arquitetura de von Neumann

unidade central de processamento (UCP, ou CPU, de “central process unit”) memória módulos de entrada módulos de saída

Módulos

 

Unidade

   

de

de Central de Processamento Módulos
de Central de Processamento Módulos

Central de Processamento

de Central de Processamento Módulos

Módulos de Central de Processamento

   

de Saída   

Entrada

 
Entrada    
 
       
 
       
       
     
   
   
   
 

Memória

 

Principal

Memória

Memória
 

Secundária

 
Principal Memória   Secundária   exemplos de sistemas computacionais de uso geral:
Principal Memória   Secundária   exemplos de sistemas computacionais de uso geral:

exemplos de sistemas computacionais

de uso geral: supercomputadores, computadores de grande porte (“main frames”), minicomputadores, estações de trabalho (“workstations”), microcomputadores (computadores pessoais) de uso específico: aparelhos de vídeo-cassete; controladores de máquinas industriais; computadores de bordo de veículos; aparelhos eletrodomésticos

MÓDULOS DE ENTRADA: responsáveis pela recepção de dados do mundo exterior (inclusive do operador)

correspondem aos órgãos dos sentidos do ser humano interface com diversos dispositivos de entrada exemplos de dispositivos: teclado, “mouse”, botões, chaves, “scanner”, leitora óptica (de disco, de código de barras, de fita ou cartões perfurados), leitora magnética (de disco, de fita), microfone, sensores, modem de linha de comunicação

UNIDADE CENTRAL DE PROCESSAMENTO: responsável pelo processamento dos dados recebidos do mundo exterior e pelo controle dos demais componentes

corresponde ao cérebro do ser humano constituída pela unidade aritmética e lógica, pelos registradores e pela unidade de controle

MÓDULOS DE SAÍDA: responsáveis pela transmissão de dados do mundo exterior (inclusive ao operador)

correspondem aos músculos do ser humano interface com diversos dispositivos de saída exemplos de dispositivos: vídeo, mostrador (“display”), lâmpadas, painel, impressora, gravador magnético (de disco, de fita), alto-falante, atuadores e motores diversos, modem de linha de comunicação

MEMÓRIA: responsável pelo armazenamento de dados e de programas

corresponde à memória do ser humano pode ser classificada como Principal (acessada diretamente pela UCP) ou Secundária (acessada via módulos de entrada/saída)

ArquiteturaComputadores.doc - 08/03/07 – página

6

COMPUTADOR “SERGIUM”

(computador fictício, de poucos recursos, criado para fins pedagógicos, a fim de ilustrar a Arquitetura de von Neumann e o ciclo de instrução)

poucos recursos, criado para fins pedagógicos, a fim de ilustrar a Arquitetura de von Neumann e

ArquiteturaComputadores.doc - 08/03/07 – página

7

COMPUTADOR “SERGIUM”

Funcionamento da Unidade de Controle

no “reset”:

0) zera EPI ciclo de máquina:

1) ciclo de busca na memória 1.1) busca do código da operação na memória 1.1.1) copia EPI em EM 1.1.2) lê na memória (posição apontada por EM) e copia em DM 1.1.3) copia DM em COD 1.1.4) soma 1 a EPI 1.2) busca do operando 1.2.1) copia EPI em EM 1.2.2) lê na memória (posição apontada por EM) e copia em DM 1.2.3) copia DM em OPE 1.2.4) soma 1 a EPI 2) ciclo de execução

se COD = 0: instrução ENT PORTA=>AC

se COD = 1: instrução SAI AC>=PORTA

2.1) copia OPE em EE/S 2.2) lê porta (apontada por EE/S) e copia em DE/S 2.3) copia DE/S em AC

2.1) copia OPE em EE/S 2.2) copia AC em DE/S 2.3) copia DE/S e escreve em porta (apontada por EE/S)

se COD = 2: instrução COP AUX=>AC

se COD = 3: instrução COP AC=>AUX

2.1) copia OPE em EAUX 2.2) copia AUX (apontado por EAUX) em AC

2.1) copia OPE em EAUX 2.2) copia AC em AUX (apontado por EAUX)

se COD = 4: instrução COP MEM=>AC

se COD = 5: instrução COP AC=>MEM

2.1) copia OPE em EM 2.2) lê na memória (posição apontada por EM) e copia em DM 2.3) copia DM em AC

2.1) copia OPE em EM 2.2) copia AC em DM 2.3) copia DM e escreve na memória (posição apontada por EM)

se COD = 6: instrução COP VAL=>AC

 

2.1) copia OPE em AC

se COD = 10: instrução SOM AC+AUX=>AC

se COD = 11: instrução SUB AC AUX=>AC

2.1) copia AC em A 2.2) copia OPE em EAUX 2.3) copia AUX (apontado por EAUX) em B 2.4) calcula C = A + B 2.5) se C=0, então Z = 1, senão, Z = 0 2.6) se C>0, então P = 1, senão, P = 0 2.7) copia C em AC

2.1) copia AC em A 2.2) copia OPE em EAUX 2.3) copia AUX (apontado por EAUX) em B 2.4) calcula C = A – B 2.5) se C=0, então Z = 1, senão, Z = 0 2.6) se C>0, então P = 1, senão, P = 0 2.7) copia C em AC

se COD = 12: instrução SOM AC+VAL=>AC

se COD = 13: instrução SUB AC VAL=>AC

2.1) copia AC em A 2.2) copia OPE em B 2.3) calcula C = A + B 2.4) se C=0, então Z = 1, senão, Z = 0 2.5) se C>0, então P = 1, senão, P = 0 2.6) copia C em AC

2.1) copia AC em A 2.2) copia OPE em B 2.3) calcula C = A – B 2.4) se C=0, então Z = 1, senão, Z = 0 2.5) se C>0, então P = 1, senão, P = 0 2.6) copia C em AC

se COD = 20: instrução VAI

se COD = 21: instrução VAI SE Z=1

2.1) copia OPE em EPI

2.1) se Z=1, copia OPE em EPI

se COD = 22: instrução VAI SE P=1

se COD = 23: instrução PÁRA

2.1) se P=1, copia OPE em EPI

2.1) subtrai 1 de EPI 2.2) subtrai 1 de EPI

3) volta ao passo 1

Obs.: as operações em negrito fazem acesso à memória

ArquiteturaComputadores.doc - 08/03/07 – página

8

Exemplos de programas do Computador “SERGIUM”

1) Ler dois números no teclado, armazená-los na memória (nas posições A e B, respectivamente 100 e 101), e imprimir a soma deles.

endereço

conteúdo

 

instrução

comentário

rótulo

mnemônico

operando

0

0

 

ENT PORTA=>AC

0

lê o primeiro número (A)

1

0

2

5

 

COP AC=>MEM

A

guarda o primeiro número (A) na memória (endereço 100)

3

100

4

3

 

COP AC=>AUX

0

salva o primeiro número (A) num registrador auxiliar (pois o acumulador vai ser perdido)

5

0

6

0

 

ENT PORTA=>AC

0

lê o segundo número (B)

7

0

8

5

 

COP AC=>MEM

B

guarda o segundo número (B) na memória (endereço 101)

9

101

10

10

 

SOM AC+AUX

0

soma o segundo número (B) com o primeiro número (A, armazenado num registrador auxiliar)

11

0

12

1

 

SAI AC=>PORTA

2

imprime a soma

13

2

14

23

 

PÁRA

0

pára o programa (A + B)

15

0

100

???

 

???

???

números lidos (A e B)

101

???

2) Carregar dois números previamente armazenados na memória (nas posições A e B, respectivamente 100 e 101), e mostrar no vídeo o maior deles.

endereço

conteúdo

 

instrução

comentário

rótulo

mnemônico

operando

0

4

 

COP MEM=>AC

A

pega o primeiro número (A) na memória (endereço 100)

1

100

2

3

 

COP AC=>AUX

1

salva o primeiro número (A) no auxiliar 1

3

1

4

4

 

COP MEM=>AC

B

pega o segundo número (B) na memória (endereço 101)

5

101

6

3

 

COP AC=>AUX

2

salva o segundo número (B) no auxiliar 2

7

2

8

11

   

1

subtrai o primeiro número (A) do segundo (B) (isto é, o segundo menos o primeiro (B-A))

9

1

SUB AC AUX=>AC

10

22

 

VAI SE P=1

BMAIOR

desvia se o segundo número (B) é maior

11

18

12

2

AMAIOR:

COP AUX=>AC

1

recupera o primeiro número (A)

13

1

14

1

 

SAI AC=>PORTA

1

apresenta o primeiro número (A) no vídeo

15

1

16

23

 

PÁRA

0

pára o programa

17

0

18

2

BMAIOR:

COP AUX=>AC

2

recupera o segundo número (B)

19

2

20

1

 

SAI AC=>PORTA

1

apresenta o segundo número (B) no vídeo

21

1

22

23

 

PÁRA

0

pára o programa

23

0

100

???

 

???

???

números a serem comparados (A e B)

101

???

ArquiteturaComputadores.doc - 08/03/07 – página

9

CICLO DE INSTRUÇÃO

como visto no exemplo (Sergium), as instruções de um programa são executadas ciclicamente, seqüencialmente

início ciclo de instrução fim
início
ciclo de instrução
fim

o ciclo de instrução pode, simplificadamente, ser dividido em 2 etapas, impropriamente também chamadas de “ciclos”

o ciclo de busca, na memória, da instrução a ser executada o ciclo de execução da instrução

ciclo de ciclo de início fim busca execução
ciclo de
ciclo de
início
fim
busca
execução

“ciclo” de busca: obtenção da instrução a ser executada

2 1 3
2
1
3

etapas 1: cálculo do endereço do código da instrução 2: leitura do código da instrução, na memória 3: decodificação da instrução etapas realizadas obrigatoriamente, para todas as instruções

“ciclo” de execução: execução da instrução propriamente dita

5 8 4 6 7
5
8
4
6
7

etapas 4: cálculo dos endereços dos operandos 5: leitura dos valores dos operandos, na memória (ou em registradores) 6: execução da operação, com os valores dos operandos 7: cálculo dos endereços dos resultados da operação 8: escrita dos valores dos resultados, na memória (ou em registradores) etapas que, para algumas instruções, podem não ser realizadas, e, para outras, podem ser realizadas diversas vezes

ArquiteturaComputadores.doc - 08/03/07 – página

10

interrupção

certas operações executadas pelo computador (como, por exemplo, entradas e saídas) consomem um tempo relativamente grande, quando comparado ao tempo do ciclo de instrução ao disparar uma operação de entrada/saída, o processador pode permanecer executando instruções que verificam se a operação já foi concluída quando isto ocorre, o processador executa um tratamento de fim de operação de entrada/saída, e retoma a execução normal do programa essa estratégia é conhecida como “espera por sinalização” (ou “wait for flag”)

A 1 2 3 B 1 2 3 C

A

1

2

3

B

1

2

3

C

A 1 2 3 B 1 2 3 C
flag”) A 1 2 3 B 1 2 3 C tempo A, B, C: trechos do

tempo

A, B, C: trechos do programa sendo executado 1: disparo da operação de entrada/saída 2: espera pelo fim da operação de entrada/saída 3: tratamento do fim da operação de entrada/saída

em outra possível estratégia, após disparar uma operação de entrada/saída, o operador prossegue com a execução normal do programa quando a operação de entrada/saída é concluída, o dispositivo por ela responsável avisa o processador, que interrompe a execução do programa, para executar o tratamento de fim de operação de entrada/saída em seguida, o processador retoma a execução do programa, a partir do ponto em que se deu a interrupção

A 1 B1 3 B2 1 C1 3 C2

A

1

B1

3

B2

1

C1

3

C2

A 1 B1 3 B2 1 C1 3 C2
A 1 B1 3 B2 1 C1 3 C2 2 2 tempo B1, B2: trechos do
2
2
2
2

tempo

B1, B2: trechos do programa que compõem o trecho B C1, C2: trechos do programa que compõem o trecho C com a estratégia da interrupção, o processador não perde tempo esperando o fim de uma operação de entrada/saída interrupções podem ser geradas, também, por outros motivos situações anormais detectadas durante a execução do programa, como tentativa de divisão por zero, de execução de instrução inválida, ou de acesso a área de memória proibida falhas de “hardware” detectadas, como falha na memória ou na alimentação fim de uma temporização disparada pelo programa para permitir a ocorrência de uma interrupção, o ciclo de instrução ganha um 3 o . passo

“ciclo” de interrupção: atendimento a um pedido de interrupção, caso este tenha ocorrido e esteja habilitado

9 10
9
10

etapas 9: verificação da existência de pedido de interrupção 10: atendimento do pedido de interrupção (desvio para a rotina de seu tratamento) etapas que podem ser inibidas ou habilitadas pelo programa

ArquiteturaComputadores.doc - 08/03/07 – página

11

101

fiminício

esquema geral do ciclo de instrução

11 101 fiminício esquema geral do ciclo de instrução interrupção ciclo de busca execução ciclo de
interrupção ciclo de
interrupção ciclo de
interrupção ciclo de
interrupção ciclo de

interrupção

interrupção ciclo de

ciclo de

interrupção ciclo de
interrupção ciclo de
interrupção ciclo de
interrupção ciclo de
interrupção ciclo de
interrupção ciclo de
interrupção ciclo de
interrupção ciclo de
interrupção ciclo de
interrupção ciclo de
interrupção ciclo de
interrupção ciclo de
busca execução ciclo de ciclo de
busca execução ciclo de ciclo de
busca execução ciclo de ciclo de
busca execução ciclo de ciclo de
busca execução ciclo de ciclo de

busca

execução

busca execução
busca execução

ciclo de

ciclo de

geral do ciclo de instrução interrupção ciclo de busca execução ciclo de ciclo de 2 3
geral do ciclo de instrução interrupção ciclo de busca execução ciclo de ciclo de 2 3
2 3
2
3
5 4 6
5
4
6
8 7 9
8
7
9
geral do ciclo de instrução interrupção ciclo de busca execução ciclo de ciclo de 2 3

ArquiteturaComputadores.doc - 08/03/07 – página

12

CONEXÃO ENTRE OS COMPONENTES

os componentes do sistema computacional se comunicam entre si, trocando informações que podem ser classificadas em

dados endereços sinais de controle

MEMÓRIA ESCRITA LEITURA DADOS ENDEREÇO DADOS INSTRUÇÕES
MEMÓRIA
ESCRITA
LEITURA
DADOS
ENDEREÇO
DADOS
INSTRUÇÕES
ESCRITA LEITURA ENDEREÇO DADOS
ESCRITA
LEITURA
ENDEREÇO
DADOS

MÓDULO E/S

DADOS Sinais de Controle
DADOS
Sinais de Controle

UCP

INSTRUÇÕESENDEREÇO DADOS MÓDULO E/S DADOS Sinais de Controle UCP DADOS ENDEREÇOS Sinais de Controle DADOS Sinais

DADOSDADOS MÓDULO E/S DADOS Sinais de Controle UCP INSTRUÇÕES ENDEREÇOS Sinais de Controle DADOS Sinais de

MÓDULO E/S DADOS Sinais de Controle UCP INSTRUÇÕES DADOS ENDEREÇOS Sinais de Controle DADOS Sinais de

ENDEREÇOSMÓDULO E/S DADOS Sinais de Controle UCP INSTRUÇÕES DADOS Sinais de Controle DADOS Sinais de Controle

DADOS Sinais de Controle UCP INSTRUÇÕES DADOS ENDEREÇOS Sinais de Controle DADOS Sinais de Controle informações
DADOS Sinais de Controle UCP INSTRUÇÕES DADOS ENDEREÇOS Sinais de Controle DADOS Sinais de Controle informações
DADOS Sinais de Controle UCP INSTRUÇÕES DADOS ENDEREÇOS Sinais de Controle DADOS Sinais de Controle informações

Sinais de Controle

DADOSUCP INSTRUÇÕES DADOS ENDEREÇOS Sinais de Controle Sinais de Controle informações destinadas a MEMÓRIA

Sinais de Controle

informações destinadas a

MEMÓRIA

sinais de controle de leitura e de escrita dados a serem escritos endereço dos dados a serem lidos ou escritos

sinais de controle de leitura e de escrita dados a serem escritos endereço dos dados a

informações provenientes de

a serem lidos ou escritos informações provenientes de dados lidos instruções lidas MÓDULO DE ENTRADA sinais

dados lidos

instruções lidas

MÓDULO DE ENTRADA

MÓDULO DE ENTRADA

sinais de controle de leitura dados fornecidos pelo mundo exterior endereço do dispositivo de entrada

dados obtidos no mundo exterior sinais de controle de “status”

MÓDULO DE SAÍDA

MÓDULO DE SAÍDA

sinais de controle de escrita dados a serem enviados ao mundo exterior endereço do dispositivo de saída

dados fornecidos ao mundo exterior sinais de controle de “status”

UNIDADE CENTRAL DE PROCESSAMENTO

UNIDADE CENTRAL DE PROCESSAMENTO

sinais de controle de “status” dados lidos na memória ou no módulo de entrada instruções lidas na memória

endereço (de memória ou de módulo de entrada/saída) dados a escrever na memória ou no módulo de saída sinais de controle diversos

a troca de informações se faz através de conexões, chamadas de vias, ou barramentos barramento: conjunto de sinais (tipicamente, entre 50 e 100) com informações trocadas entre os componentes de um sistema computacional de acordo com a função dos sinais, o barramento pode ser:

de endereços de dados de controle de alimentação

de acordo com a utilização ao longo do tempo, o barramento pode ser:

dedicado: cada linha é exclusiva a um único sinal multiplexado: uma mesma linha pode ser utilizada por sinais diferentes, em instantes diferentes é comum o compartilhamento de linhas por sinais de endereços e de dados vantagem: redução do número de linhas (“largura” do barramento)

em relação à UCP, o barramento pode ser:

externo: conecta UCP, Memória e Entradas e Saídas interno: conecta componentes da UCP (registradores, unidade aritmética e lógica, unidade de controle)

ArquiteturaComputadores.doc - 08/03/07 – página

13

de acordo com a relação temporal entre os sinais, o barramento pode ser:

síncrono: os eventos (colocação, retirada, alteração de sinais) são todos coordenados por um sinal de sincronismo (o sinal “clock”) assíncrono: um evento em um sinal depende da ocorrência de outro evento, em outro sinal vantagens: maior flexibilidade e, em geral, maior velocidade desvantagem: maior complexidade

“largura” do barramento: número de linhas que o compõem

no caso do barramento de endereços, define o número de posições que podem ser referenciadas:

N = 2 n exemplo: se o barramento de endereços da memória é de 20 linhas, podem ser referenciadas 2 20 = 1M posições de memória

em geral, diversos componentes (UCP, placas de memória, módulos de entrada/saída) se conectam ao barramento, provocando:

a necessidade de um esquema de arbitragem, quando mais de um componente deseja transmitir informações pela mesma via arbitragem centralizada: um controlador central gerencia todos os pedidos de acesso ao barramento, e resolve as “colisões” arbitragem descentralizada: todos os dispositivos conectados ao barramento são capazes de acessá-lo, sem que haja “colisões” a separação hierárquica dos barramentos, através de interfaces de expansão e de pontes (“bridges”) dispositivos podem ser agrupados em barramentos, de acordo com sua posição hierárquica, ou com sua velocidade de operação

barramento local barramento de sistema UCP ponte memória memória "cache" principal barramento de alta
barramento local
barramento de sistema
UCP
ponte
memória
memória
"cache"
principal
barramento de alta velocidade
terminal
vídeo
rede local
gráfico
interface de
expansão
barramento de média velocidade
comunicação
fax
modem
serial

dispositivos de E/S de alta velocidade

dispositivos de E/S de média velocidade

exemplo de barramento: PCI (“peripheral component interconnect”, ou interconexão entre componentes periféricos)

lançado no início dos anos 90, pela Intel, para os sistemas da linha Pentium alta velocidade (> 4Gbits/s) síncrono arbitragem centralizada multiplexação entre endereços e dados 32 linhas de dados, com possível expansão para 64 linhas

ArquiteturaComputadores.doc - 08/03/07 – página

14

ORGANIZAÇÃO E HIERARQUIA DA MEMÓRIA

memória: componente do sistema computacional responsável pelo armazenamento de informações (dados e programas)

analogia com o ser humano: memória

operações:

escrita, ou gravação, ou armazenamento de informação (“write”) leitura, ou recuperação de informação previamente armazenada (“read”)

conceitos:

endereço: indica “onde”, isto é, a posição na qual a informação deve ser escrita ou lida conteúdo: indica “o quê”, isto é, a informação que deve ser escrita ou que foi lida unidade endereçável (em geral, chamada de “palavra”): conjunto de bits que ocupam uma posição na memória

um sistema computacional pode dispor de diferentes dispositivos para a função de armazenamento de informações

diferentes tipos de memória

características principais desses tipos

localização capacidade unidade de transferência método de acesso desempenho propriedades físicas custo

localização: onde o dispositivo de memória se encontra, em relação ao sistema computacional

no processador registradores: posições de memória privilegiadas, dentro da UCP

exemplos: acumulador, endereço da próxima instrução (contador de programa), “status” (“flags”), etc.

memória “cache” (microprocessadores mais modernos) interna memória “cache” (“escondida”, “transparente”) (nem sempre existente): armazena os dados (da memória principal) de uso mais freqüente memória principal (ou real): onde o programa em execução e os dados sendo manipulados estão armazenados

exemplos: RAM, ROM, EPROM, etc.

externa memória secundária (ou virtual, ou de massa): para armazenamento de grandes quantidades de informação (programas e dados), que poderão ser utilizados no futuro

exemplos: disco rígido (magnético ou óptico), disco flexível, fita (magnética ou de papel), etc.

capacidade: medida da quantidade de informação que pode ser armazenada num dispositivo de memória

produto do número de posições (endereços) pelo tamanho de cada posição (conteúdo) pode ser expressa em bits, em bytes (grupos de 8 bits) ou em palavras (grupos de bits, em geral 8, 16, 32 ou 64 bits, que definem a organização interna da memória) exemplo: memória de 8Kbits = 2 13 bits = 1Kbyte = 128 palavras de 64 bits

unidade de transferência: número de bits a cada operação de leitura ou escrita na memória

para a memória interna, corresponde, em geral, à palavra para a memória externa, é chamada de bloco (em geral, composto por diversas palavras)

ArquiteturaComputadores.doc - 08/03/07 – página

15

método de acesso: forma pela qual o endereço de leitura ou escrita é acessado

seqüencial: o acesso é feito a partir da posição inicial, passando pelas posições intermediárias, até a posição

desejada

exemplo: fita direto: o acesso é feito diretamente a uma posição próxima à desejada, e, a partir daí, de forma seqüencial até

a posição desejada exemplo: disco randômico (ou aleatório): o acesso é feito diretamente à posição desejada exemplo: memória principal associativo: o acesso é feito por comparação de parte do conteúdo de cada palavra com um valor desejado, e não pelo endereço da posição (eventualmente, o valor procurado pode não ser encontrado) exemplo: memória “cache”

desempenho: medidas da velocidade de execução das operações de memória

tempo de acesso: tempo decorrido entre o fornecimento do endereço (ou do valor desejado, no caso do acesso associativo) à memória e a conclusão da operação de leitura ou escrita no caso do acesso seqüencial ou direto, varia em função da posição no caso do acesso randômico ou associativo, igual para todas as posições

tempo de ciclo de memória: tempo de acesso, somado ao tempo necessário para um novo acesso taxa de transferência: quantidade de bits (ou palavras) que podem ser acessados, por unidade de tempo (isto é,

o inverso do tempo de ciclo de memória)

propriedades físicas

material: tecnologia empregada na fabricação do dispositivo semicondutor: RAM, ROM, EPROM, “flash” magnético: disco (rígido ou flexível), fita óptico: disco (CD-ROM, DVD)

volatilidade: capacidade de reter informação ou não, quando o dispositivo é desligado (“desenergizado”)

não volátil: retém a informação, mesmo “desenergizado” exemplos: disco, fita, ROM, “flash”, CD-ROM, DVD volátil: perde a informação, se “desenergizado” exemplo: RAM

alterabilidade: possibilidade de sucessivas operações de escrita

alterável: disco magnético, fita magnética, RAM, EPROM, “flash” não alterável: ROM, CD-ROM

custo: gastos com a produção do dispositivo, por bit

alto: registradores, memória “cache” médio: memória principal baixo: memória secundária

essas características acabam definindo uma organização hierárquica de memórias com o objetivo de obter, para o sistema, uma capacidade adequada, com alto desempenho e baixo custo

em ordem decrescente de hierarquia:

tipo

capacidade

desempenho

custo

freqüência de acesso

registradores

pequena

alto

alto

alta

memória “cache”

pequena

alto

alto

alta

memória principal

média

médio

médio

média

memória secundária (disco)

alta

baixo

baixo

baixa

memória secundária (fita)

muito alta

muito baixo

muito baixo

baixa

ArquiteturaComputadores.doc - 08/03/07 – página

16

regs
regs
"cache" principal
"cache"
principal
secundária (disco)
secundária (disco)

secundária (fita)

ArquiteturaComputadores.doc - 08/03/07 – página

17

MEMÓRIA PRINCIPAL

armazena as instruções do programa sendo executado pela UCP, e os dados por ele sendo manipulados (característica da arquitetura de von Neumann) nos primeiros computadores, empregou a tecnologia de matrizes de anéis com núcleos de ferrite (ferromagnético), hoje abandonada os computadores atuais utilizam pastilhas de semicondutor (silício) produzida com diferentes tecnologias, e, por isso, apresenta diferentes características, para diferentes aplicações célula representativa de 1 bit

controle seleção dado a ser escrito célula
controle
seleção
dado a ser escrito
célula

escrita

controle

célula

célula

célula
célula

dado lido

a ser escrito célula escrita controle célula dado lido seleção leitura sinal de seleção: ativa ou

seleção

célula escrita controle célula dado lido seleção leitura sinal de seleção: ativa ou desativa a célula

leitura

sinal de seleção: ativa ou desativa a célula sinal de controle: se a célula está ativa, indica se a operação é de leitura ou de escrita

ArquiteturaComputadores.doc - 08/03/07 – página

18

memória de “acesso aleatório” (“RAM – random access memory”)

denominação infeliz (todas as tecnologias de memória principal apresentam acesso aleatório) permite operações de leitura e escrita (número ilimitado de vezes) utilizada em computadores de uso geral, para armazenar programas e dados, e em computadores de uso específico, para armazenar dados volátil; perde seu conteúdo quando desenergizada apresenta 2 tipos dinâmica (“DRAM – dynamic RAM”)

célula básica: capacitor perde seu conteúdo com o tempo (mesmo energizada) necessita ser constantemente “refrescada”, exigindo um circuito especial de regeneração possibilita alta densidade de empacotamento (alta capacidade numa única pastilha)

estática (“SRAM – static RAM”)

célula básica: “flip-flop” não perde seu conteúdo com o tempo (desde que se mantenha energizada) vantagens sobre a DRAM: mais rápida, exige circuito mais simples desvantagens: menos densa, maior custo por bit (especialmente em memórias de alta capacidade, pois o custo do circuito de regeneração da DRAM fica diluído)

memória apenas de leitura “ROM – read-only memory”)

permite apenas operações de leitura utilizada em computadores de uso geral, para armazenar tabelas de constantes ou pequenas partes do sistema operacional (“BIOS – basic input/output system”), e em computadores de uso específico, para armazenar os programas de controle não volátil; não perde seu conteúdo quando desenergizada apresenta diversos tipos convencional

não pode ser apagada dados gravados pelo fabricante (apenas uma vez)

programável (“PROM – programmable ROM”)

não pode ser apagada dados podem ser gravados eletricamente, pelo usuário, em equipamento especial (apenas uma vez)

programável, apagável (“EPROM – erasable PROM”)

pode ser apagada, todos os bytes simultaneamente, por raios ultra-violeta (em geral, precisa ser removida do circuito) depois de apagada, dados podem ser gravados eletricamente, pelo usuário, em equipamento especial (algumas vezes)

memória não volátil, de leitura e escrita

permite operações de leitura (número ilimitado de vezes) e escrita (algumas vezes) não volátil; não perde seu conteúdo quando desenergizada utilizada para armazenar programas e/ou tabelas que podem ser alterados apresenta 2 tipos programável, eletricamente apagável (“EEPROM – electrically EPROM”)

pode ser apagada eletricamente, um byte de cada vez (sem precisar ser removida do circuito) dados podem ser gravados eletricamente, no próprio circuito (algumas vezes) tempo de escrita bem superior ao tempo de leitura apresenta menor densidade e maior custo por bit do que a EPROM

“flash” (“rápida”)

pode ser apagada eletricamente, um bloco de cada vez (sem precisar ser removida do circuito) depois de apagados, dados podem ser gravados eletricamente, no próprio circuito (algumas vezes; menos vezes que a EEPROM) intermediária (em custo e em desempenho) entre a EPROM e a EEPROM

ArquiteturaComputadores.doc - 08/03/07 – página

19

DETECÇÃO E CORREÇÃO DE ERROS NA MEMÓRIA PRINCIPAL

a memória a semicondutor pode apresentar erro por diversos motivos

defeito de fabricação descarga eletrostática falha de alimentação presença de partículas alfa (radiativas) excesso de uso condições ambientais inadequadas

o erro apresentado pode ser

temporário, ou moderado permanente, ou grave

existem técnicas que permitem

apenas detectar um erro detectar um erro, e corrigi-lo

genericamente, nessas técnicas

na operação de escrita, a cada M bits de informação a serem escritos, além dos M bits são escritos mais K bits adicionais, obtidos em função dos M bits de informação na operação de leitura, são lidos os M+K bits; em função dos M bits de informação lidos, são calculados os K bits adicionais, e comparados com os K bits adicionais lidos essa comparação permite detectar erros e, eventualmente, corrigir um erro detectado os K bits adicionais são chamados, geralmente, de bits de redundância, ou bits de paridade, ou de verificação

estratégias

bit de paridade

na escrita, a cada byte de informação (M=8), grava-se um bit adicional (K=1), de paridade, de tal forma que os 9 bits apresentem um número par de bits em “1” na leitura dos 9 bits, se for obtido um número ímpar de bits em “1”, a ocorrência de um erro é indicada

permite a detecção da ocorrência de um número ímpar de bits errados (1, 3, 5,

); não permite a

detecção de um número par de bits errados (2, 4, 6,

)

um erro apenas no bit de paridade provoca a falsa indicação de erro na informação eventualmente, pode-se empregar a estratégia oposta na geração do bit de paridade (forçar um número ímpar de bits em “1”) exemplo

informação a ser escrita na memória: 01000011 bit de paridade acrescentado: 1 se lidos: 01000011 1 (não houve erro)

se lidos: 01000001 1 (erro no penúltimo bit de informação)

se lidos: 01000011 0 (erro no bit de paridade) indicação de erro (indevida)

se lidos: 01010001 1 (2 erros: no 4 o . e no penúltimo bits)

não há indicação de erro

OK

indicação de erro (sem correção)

OK

OK

não há indicação de erro!

não OK

ArquiteturaComputadores.doc - 08/03/07 – página

20

redundância triplicada na escrita, a cada bit de informação (M=1), gravam-se 2 bits adicionais (K=2), iguais ao bit de informação na leitura, os 3 bits lidos são comparados; havendo divergência (o que indica erro), faz-se uma “votação”, optando-se pelo valor que apresentar maioria de 2 a 1 permite a detecção e a correção de 1 único bit errado, a cada 3 bits armazenados inconveniente: alto consumo de memória (3*M) exemplo

informação a ser escrita na memória: 0 bits de redundância acrescentados: 00 se lidos: 000 (não houve erro)

se lidos: 010 (erro no 2 o . bit)

não há indicação de erro

OK

indicação de erro, adotado bit = 0

OK

se lidos: 110 (2 erros, nos 2 primeiros bits)

indicação de erro, adotado bit = 1

não OK

código de Hamming (criado por Richard Hamming, dos Laboratórios Bell, nos Estados Unidos) a cada M bits de informação, são acrescentados K bits de verificação, de tal forma que

 

M

2 K -K-1

 

K

M máximo

3

4

4

11

5

26

6

57

7

120

8

247

exemplo de cálculo, para M=4

K=3

sendo d 0 , d 1 , d 2 , e d 3 os bits de informação, os bits de verificação v 0 , v 1 , e v 2 são calculados por:

d

d

d

na escrita, os bits são armazenados na ordem: v 0 v 1 d 0 v 2 d 1 d 2 d 3 na leitura, o vetor (P 2 ,P 1 ,P 0 ) é calculado por:

d 2 d 2 d 1

se o vetor (P 2 ,P 1 ,P 0 ) = (0,0,0)

v 0 = d 0 v 1 = d 0 v 2 = d 1

d 1 d 2 d 2

P 2 = v 2 P 1 = v 1 P 0 = v 0

d 1 d 0 d 0

3

3

3

d

d

d

3

3

3

não houve erro

senão

(P 2 ,P 1 ,P 0 ) indica a posição do bit com erro

exemplo:

informação a ser escrita na memória: d 0 d 1 d 2 d 3 = 1101 bits de verificação acrescentados:

v 0 = 1

1

1 = 1

v 1 = 1

0

1 = 0

v 2 = 1

0

1 = 0

dados escritos: v 0 v 1 d 0 v 2 d 1 d 2 d 3 = 1010101

se lidos: v 0 v 1 d 0 v 2 d 1 d 2 d 3 = 1010001 – erro no bit d 1 P 2 = 0

0

0

1 = 1

P 1 = 0

1

0

1 = 0

P 0 = 1

1

0

1 = 1

erro no 5 o . bit = d 1

OK!

ArquiteturaComputadores.doc - 08/03/07 – página

21

MEMÓRIA “CACHE”

a cada instrução executada, a UCP faz, pelo menos, um acesso à memória, para a leitura do código da instrução, durante o ciclo de busca (outros acessos, de leitura e/ou de escrita, podem, também, ser feitos durante o ciclo de execução) ao longo dos anos, com os avanços da tecnologia, o desempenho da UCP aumentou num ritmo acelerado, que não foi acompanhado pelo aumento do desempenho dos dispositivos de memória principal como conseqüência, a memória principal (antes do advento da memória “cache”) passou a ser uma espécie de “gargalo” dos sistemas computacionais, obrigando a UCP a diminuir um pouco seu ritmo (através da inclusão de estados de espera, ou “wait states”), para que as operações de leitura e de escrita na memória pudessem ser completadas para contornar esse problema, foi criado um novo nível hierárquico de memória, entre a memória da UCP (registradores) e a memória principal convencional o nome “cache” vem do Francês “caché”, que significa “escondido”, no sentido de que a introdução dessa memória seja “transparente” ao usuário do sistema computacional (isto é, que ele não precisa alterar seus procedimentos habituais) comparada com a memória principal, a memória “cache”

é mais rápida (construída com tecnologia mais moderna) é mais cara (maior custo por bit) é menor (tem menor capacidade de armazenamento)

procedimento de acesso à memória, pela UCP

verifica, inicialmente, se a informação desejada já está na memória “cache” se estiver, faz o acesso se não estiver, faz o acesso à memória principal se o acesso for uma leitura, copia o dado lido na memória “cache”

essa estratégia se baseia nos princípios da localidade

princípio da localidade temporal: se uma palavra da memória é acessada por um programa, é bastante provável que essa mesma palavra volte a ser acessada pelo programa num curto intervalo de tempo princípio da localidade espacial: se uma palavra da memória é acessada por um programa, é bastante provável que outras palavras na vizinhança dessa palavra sejam acessadas pelo programa

no projeto da memória “cache”, devem ser definidos

o tamanho da memória “cache” a função de mapeamento o algoritmo de substituição a política de escrita na memória tamanho do bloco transferido para a memória “cache” o número de níveis de “cache”

essas definições devem procurar maximizar a probabilidade de se encontrar uma informação na memória “cache”, minimizando a necessidade de acessos à memória principal com isso, consegue-se um tempo de acesso ao sistema de memória (“cache” + principal) próximo ao tempo de acesso da memória “cache” tamanho da memória “cache”

deve ser grande o suficiente para que a necessidade de acessos à memória principal não seja freqüente deve ser pequena o suficiente para que não apresente custo elevado, e para que se mantenha com baixo tempo de resposta entre outros fatores, o tamanho ideal depende do tipo de programas sendo executados estudos mostram que a memória “cache” deve ter entre 1Kbyte e 512Kbytes (depende do tamanho da memória principal)

ArquiteturaComputadores.doc - 08/03/07 – página

22

função de mapeamento

como a área da memória “cache” é menor do que a da memória principal, é preciso que se defina a posição em que um bloco de dados deve ser armazenado na memória “cache”, em função do seu endereço na memória principal mapeamento direto: cada bloco da memória principal tem uma única posição na memória “cache” para ser armazenado mapeamento associativo: cada bloco da memória principal pode ser armazenado em qualquer posição da memória “cache” mapeamento associativo por conjuntos: cada bloco da memória principal tem um conjunto de posições na memória “cache” para ser armazenado para o bloco de dados poder ser localizado na memória “cache”, além das informações obtidas na memória principal, é armazenada, na memória “cache”, a informação que permite a identificação do endereço original do bloco na memória principal

algoritmo de substituição

como a memória “cache” é menor do que a memória principal, o armazenamento de um bloco no “cache” certamente implica na remoção de outro bloco previamente armazenado a escolha do bloco a ser substituído, no caso do mapeamento associativo (em que há mais de uma opção) pode obedecer ao critério do bloco que não é usado há mais tempo (em geral, o mais eficiente, devido ao princípio da localidade temporal) do bloco que foi armazenado há mais tempo do bloco que foi menos referenciado aleatório (mais simples, e de desempenho levemente inferior ao dos demais)

política de escrita (ou de atualização) na memória

quando um dado armazenado na memória “cache” é alterado por um programa, deve-se adotar uma política que defina como essa alteração deve ser realizada na memória principal a escolha dessa política deve considerar se a memória principal, além do “cache”, pode também ser acessada diretamente por módulo de entrada/saída, ou por outra UCP cada possível política apresenta vantagens e desvantagens escrita em ambas (“write through”): toda a escrita na memória “cache” causa a respectiva atualização da memória principal

vantagem: a memória principal está sempre válida desvantagem: há um número excessivo de acessos à memória principal (muitos deles, desnecessários), o que diminui o desempenho do “cache”

escrita somente no retorno (“write back”): a memória principal só é atualizada quando o respectivo bloco na memória “cache” é substituído

vantagem: minimiza os acessos à memória principal desvantagem: a memória principal fica temporariamente desatualizada; um eventual acesso de outro dispositivo pode acarretar um erro

sistemas com uma única memória principal compartilhada por diversos processadores, cada um deles possuindo sua própria memória “cache”, exigem estratégias ainda mais complexas

tamanho do bloco transferido para a memória “cache”

bloco muito pequeno não traz todos os vizinhos da posição desejada bloco muito grande traz vizinhos muito distantes da posição desejada estudos mostram que o bloco deve ter entre 2 e 8 palavras

número de níveis de “cache”

o conceito de “cache” pode ser estendido para diversos níveis hierárquicos de memória atualmente, alguns sistemas empregam 2 níveis de “cache” (chamados de L1 e L2), dos quais o superior é implementado na própria pastilha do processador (“cache” interno) estudos mostram que a melhoria do desempenho é pequena para mais de 2 níveis de “cache” pode-se, também, implementar uma área de “cache” para dados separada da área de “cache” para instruções de programa

ArquiteturaComputadores.doc - 08/03/07 – página

23

MEMÓRIA SECUNDÁRIA

outras denominações

memória de massa, pois armazena grandes quantidades de informações memória externa, pois se localiza fora da UCP acesso feito através de módulos de entrada e saída

pode, também, ser considerada entrada/saída

armazena programas e dados que não necessariamente estejam sendo utilizados correntemente pela UCP comparação com a memória principal

maior capacidade menor velocidade menor custo por byte

principais dispositivos

disco magnético (rígido ou flexível) disco óptico fita magnética fita e cartões de papel, perfurados (não mais utilizados)

disco magnético

prato de metal ou plástico, recoberto por material magnetizável mantido em rotação em torno de seu eixo central por um acionador de disco (“disk driver”) leitura e escrita de dados feita por uma bobina condutora chamada “cabeçote” os dados são gravados em anéis concêntricos, denominados trilhas (tipicamente, de 500 a 2.000 trilhas por disco) cada trilha tem a mesma largura da cabeça trilhas adjacentes são separadas por espaços vazios (“gaps”) a unidade de transferência é o bloco (tipicamente, composto por algumas centenas de bytes) cada bloco ocupa um setor de uma trilha (tipicamente, há entre 10 e 100 setores por trilha) setores adjacentes de uma mesma trilha também são separados por espaços vazios (“gaps”) intersetoriais trilhas mais internas apresentam maiores densidades de gravação, para possibilitar a manutenção da velocidade de rotação constante (independentemente da trilha sendo acessada) características dos discos mobilidade do cabeçote

cabeçotes fixos (um para cada trilha) cabeçote móvel (um cabeçote para cada face, que se move na direção radial)

portabilidade

disco não removível disco removível

número de faces de gravação

face simples face dupla

número de pratos

prato único pratos múltiplos superpostos verticalmente neste caso, o conjunto das trilhas na mesma vertical (uma em cada face de cada prato) forma um cilindro

distanciamento do cabeçote

em contato com o disco (discos flexíveis) distância fixa distância aerodinâmica, variável (tecnologia Winchester, para discos rígidos)

flexibilidade

rígido (“hard”) flexível (“floppy”)

ArquiteturaComputadores.doc - 08/03/07 – página

24

parâmetros de medida de desempenho três componentes que, somados, definem o tempo de acesso, isto é, o tempo decorrido entre a emissão de um comando de leitura ou escrita e a efetiva execução do comando tempo de busca (“seek time”)

tempo gasto para a movimentação radial do cabeçote, até a trilha desejada varia (não linearmente) com o número de trilhas a serem atravessadas geralmente, maior componente do tempo de acesso, nos discos de cabeçote móvel (tipicamente, de 5ms a 300ms)

tempo de busca = tempo de partida do cabeçote + número de trilhas “atravessadas” * tempo para “atravessar” uma trilha

= 0, para os discos de cabeçotes fixos

tempo de latência, ou atraso rotacional (“rotational delay”)

tempo decorrido entre a chegada do cabeçote à trilha desejada e a passagem, sob o cabeçote, do primeiro setor (bloco)

tempo médio de latência =

tempo de uma revolução do disco

2

em média, é dado pela metade do tempo de 1 revolução do disco (isto é, 8,3ms, para uma velocidade típica de 3.600rpm)

tempo de transferência (“transfer time”)

tempo decorrido para o cabeçote percorrer o(s) setor(es) (bloco(s)) desejado(s) depende do número de bytes a serem acessados, do número de bytes por trilha e da velocidade rotacional do disco

tempo de transferência =

número de bytes a serem acessados

número de bytes por trilha

* velocidade rotacional

tipicamente, inferior a 1ms, para o acesso a 1 bloco

tecnologia Winchester, para discos rígidos desenvolvida pela IBM, no início dos anos 80 tomou o nome de um modelo popular de fuzil um único dispositivo, selado, composto por disco, cabeçote e acionador distância aerodinâmica, variável, entre cabeçote e disco viabilizou discos com maior capacidade (superior a 1Gbyte), graças à maior densidade de gravação, e ao menor tempo de acesso tornou-se, popularmente, um sinônimo para disco rígido

disco óptico (“CD-ROM – compact disk – read only memory”)

prato de resina (policarbonato), revestido com uma superfície de alumínio, de alta reflexão pequenas imperfeições provocam alterações detectáveis na reflexão de raios laser emitidos pelo acionador originário do disco compacto utilizado para armazenar informações digitalizadas de áudio apenas para operações de leitura (vem gravado de fábrica) dados gravados em blocos (setores) de uma trilha única, espiralada ao contrário dos discos magnéticos, nos discos ópticos a densidade de gravação é, em geral, igual em todas as trilhas (logo, as trilhas mais internas têm menos blocos), o que obriga a manutenção da velocidade linear constante (em conseqüência, a velocidade rotacional é maior para o acesso às trilhas mais internas) comparação com o disco magnético rígido vantagens

maior robustez maior portabilidade (removível) menor custo facilidade de produção em massa

desvantagens

baixa velocidade impossibilidade da operação de escrita

disco óptico gravável (“escrita única, leitura múltipla”) (“WORM – write-once, read many”) compatível com o acionador de CD-ROM convencional adequado para o armazenamento de documentos e arquivos disco óptico apagável pode ser gravado diversas vezes em geral, exige equipamentos de maior qualidade vantagens sobre os discos magnéticos

maior portabilidade maior confiabilidade

ArquiteturaComputadores.doc - 08/03/07 – página

25

disco de vídeo digital (“DVD - digital video disk”)

adaptação do DVD utilizado para gravação de imagens capacidade extremente alta

disco magneto-óptico

gravação magnética, com o auxílio de raios laser leitura óptica vantagens sobre o disco magnético convencional maior densidade de gravação maior durabilidade menor custo por byte

fita magnética

mais antigo dispositivo de memória secundária mesma mídia do disco magnético leitura e escrita feitas por uma cabeça, fixa os dados são gravados ao longo de trilhas paralelas, longitudinais a unidade de transferência é o bloco, ou registro blocos adjacentes de uma mesma trilha são separados por espaços vazios inter-registros acesso seqüencial, isto é, necessário o acesso a todos os registros existentes entre o registro correntemente posicionado sob a cabeça, e o registro desejado baixo custo, baixa velocidade ocupa a posição inferior, na organização hierárquica de memórias

ArquiteturaComputadores.doc - 08/03/07 – página

26

REDUNDÂNCIA NA MEMÓRIA SECUNDÁRIA (“RAID”)

comparado com o desenvolvimento de processadores e de dispositivos de memória principal, o aprimoramento dos dispositivos de memória secundária tem se processado num ritmo bem mais lento, devido às dificuldades mecânicas na produção desses dispositivos diversas técnicas têm sido sugeridas, para aumentar o desempenho e a confiabilidade dos discos magnéticos rígidos na maioria dos casos, essas técnicas se utilizam de vários discos, eventualmente mais baratos, operando simultaneamente, armazenando dados de forma redundante uma dessas técnicas é a do arranjo redundante de discos independentes, conhecida como RAID (“redundant array of independent disks”)

proposta por um grupo de pesquisadores da Universidade da Califórnia, em Berkeley, Estados Unidos, em 1988 originalmente, “redundant array of inexpensive disks”, ou “arranjo redundante de discos de baixo custo” define um conjunto de discos fisicamente separados, mas vistos como um único dispositivo os dados podem ser distribuídos pelos discos do conjunto os dados podem ser armazenados de maneira redundante, para possibilitar a sua recuperação, em caso de uma falha em disco, apesar do aumento da necessidade de espaço os discos podem ser acessados simultaneamente, buscando aumentar a velocidade de operação são definidos 7 níveis diferentes, com pequenas diferenças de implementação, em função da aplicação a que cada nível se destina nível 0: para aplicações que exigem alto desempenho (sem exigir confiabilidade) nível 1: para arquivos que exigem segurança nível 3: para aplicações com grande volume de dados, como processamento de imagens nível 5: para aplicações que exigem alta taxa de acessos para leitura nível 6: para aplicações que exigem grande disponibilidade níveis 2 e 4: atualmente, não comercializados (seu custo não é compensado pelo seu benefício)

ArquiteturaComputadores.doc - 08/03/07 – página

27

DISPOSITIVOS DE ENTRADA E SAÍDA

os sistemas computacionais se utilizam de uma grande variedade de dispositivos periféricos para comunicação com o mundo exterior, que empregam diferentes métodos de operação em geral, a taxa de transferência de dados desses dispositivos é bem inferior à taxa entre UCP e memória esses dispositivos se utilizam de padrões de dados e de comprimentos de palavras em geral diferentes dos utilizados pelo sistema computacional ao qual se conectam há, portanto, a necessidade de módulos de entrada e saída, servindo como

interface com a UCP e a memória, através do barramento interface com os dispositivos periféricos, através de conexões específicas

cada módulo pode servir de interface

para um único dispositivo periférico para vários dispositivos periféricos

dispositivos periféricos

comunicação com o usuário: teclado, vídeo, "mouse", impressora, mostrador ("display"), "scanner", microfone, alto-falante, mesa digitalizadora, chaves, botões comunicação com equipamentos: acionador de disco, sensores, atuadores comunicação com dispositivos remotos: fax, modem, outro computador

tipos de comunicação entre o módulo de entrada e saída e o dispositivo periférico

serial (bit a bit) - uma única linha de conexão mais lenta que a paralela, mas mais econômica (menos fios) utilizada para comunicação a longa distância, ou em que não há exigência de velocidade

exemplos: modem, teclado, mouse

pode ser

síncrona - controlada por um sinal que dá o ritmo da comunicação ("clock") o sinal “clock” pode ser enviado em outra linha, ou codificado, junto com a informação assíncrona - controlada por dados (caracteres ou bits) de sincronismo exemplos de caracteres e bits de sincronismo: "start of text", "end of text", "start bit", "stop bit"

paralela (vários bits de uma só vez) - várias linhas de conexão utilizada para comunicação a curta distância

exemplo: impressora, acionador de disco

teclado

categorias apenas (ou predominantemente) numéricos

exemplos: calculadoras, caixas registradoras

para sistemas dedicados, com teclas funcionais específicas

exemplo: aparelho de vídeo-cassete, controlador de equipamento industrial

comum, de uso geral, com teclas alfabéticas, numéricas, de símbolos e de controle

exemplo: teclado de computador pessoal

tecnologia de fabricação teclas mecânicas (de contato direto)

problema: oxidação dos contatos

teclas capacitivas (de acoplamento de placas, com variação de capacitância)

vantagem: baixo custo, pequeno tamanho, longa vida útil (+/- 20 milhões de pressionamentos)

teclas de efeito "hall" problema comum: “bouncing” (vibração, trepidação) solução: filtragem (“debouncing”)

pode ser feita por filtro de “hardware” ou de “software”

padrão ASCII (utilizado por outros dispositivos, como o vídeo)

ArquiteturaComputadores.doc - 08/03/07 – página

28

vídeo

outras denominações: monitor, tela, terminal tecnologia de fabricação tubo de raios catódicos (CRT - "cathode-ray tube")

feixe de elétrons, defletidos por placas semelhante ao aparelho de TV comum

diodos emissores de luz (LED - "light emitting diodes") vídeo de cristal líquido (LCD - "liquid-crystal display") vídeo de tela plana (FPD - "flat panel display") vídeo de plasma (4o. estado da matéria: gás ionizado) modalidade de representação textual - caracter a caracter semi-gráfico gráfico - ponto a ponto resolução - número de pontos ("pixels")

exemplos: 320 x 200, 800 x 600, 1.024 x 768, 1.280 x 1.024, 1.920 x 1.080

cores monocromático colorido padrões mais comuns VGA, SVGA, CGA, EGA etc.

impressora

tecnologia de impressão de impacto

de esfera de "margarida" matricial (de agulhas)

sem impacto

de jato de tinta de jato de cera a laser térmica

velocidade de impressão medida em caracteres por segundo, ou linhas por minuto, ou páginas por minuto (ppm)

valores típicos: de 4ppm a 100ppm

resolução de impressão medida em pontos por polegada (dpi - “dots per inch”)

valores típicos: de 300dpi a 1.200dpi

cores monocromática colorida comunicação com a Unidade Central de Processamento serial (mais lenta, mais barata, menos comum) paralela (mais rápida, mais comum - padrão CENTRONICS) padrão USB comunicação sem fio (“wireless”)

"mouse"

tecnologia de fabricação mecânico - esfera e roletes óptico-mecânico - disco vazado, leds e foto-sensores óptico resolução típica: 400 pontos por polegada

ArquiteturaComputadores.doc - 08/03/07 – página

29

funções básicas dos módulos de entrada e saída

controle e "timing" coordenação do fluxo de informações entre o computador e o mundo exterior comunicação com o processador decodificação dos comandos recebidos do processador envio e recepção de dados ao processador envio do estado operacional corrente ("status") ao processador reconhecimento do endereço enviado pelo processador, referente a um dispositivo de entrada e saída sob seu comando comunicação com dispositivos periféricos envio, conforme o caso, de comandos, dados e solicitações de estados correntes ("status") a dispositivos periféricos, para o seu controle armazenamento de dados armazenamento temporário de dados trocados entre os dispositivos periféricos e o processador, para compatibilizar suas velocidades (pois cada dispositivo opera numa velocidade própria, diferente da do processador) detecção e sinalização de erros detecção de eventuais erros ocorridos durante a operação dos dispositivos, provocados por falhas elétricas, mecânicas ou operacionais, ou ainda por más condições ambientais, e sua sinalização ao processador

um módulo de entrada e saída pode ser chamado de

processador de entrada e saída, ou canal de entrada e saída executa a maior parte do tratamento de operações de entrada e saída existente, em geral, nos computadores de grande porte ("main frames") controlador de entrada e saída ou controlador de dispositivo mais primitivo, com recursos mais específicos e limitados existente nos microcomputadores pessoais

ArquiteturaComputadores.doc - 08/03/07 – página

30

TIPOS DE OPERAÇÕES DE ENTRADA E SAÍDA

modos de endereçamento do dispositivo onde a operação será efetuada

mapeamento de entrada e saída em memória acesso ao dispositivo feito da mesma forma que a uma posição de memória distinção feita pelo endereço fornecido pelo processador, que corresponde a um dispositivo de entrada e saída (e não a uma posição de memória) dispositivos de entrada e saída e memória têm endereços distintos mapeamento de entrada e saída isolada instruções específicas para operações de entrada e saída permitem o acesso ao dispositivo (do tipo "input" e "output") dispositivos de entrada e saída e memória podem ter endereços coincidentes (o que os distingue é a instrução utilizada)

estratégias para a realização das operações

espera de sinalização ("wait for flag") (ou entrada/saída programada) controle, pelo processador, da operação de entrada e saída

solicitação de "status" ao módulo de entrada e saída envio de comandos ao módulo de entrada e saída troca de dados com o módulo de entrada e saída

detecção, pelo processador, do término da operação de entrada e saída

através do "status" periodicamente solicitado ao módulo de entrada e saída

acionamento por interrupção o processador inicia a operação de entrada e saída enquanto a operação de entrada e saída se realiza, o processador prossegue sua atividade, realizando outras tarefas quando a operação de entrada e saída se completa, o módulo de entrada e saída envia um pedido de interrupção ao processador ao fim do ciclo de execução de uma instrução, o processador verifica se há um pedido de interrupção pendente, à espera de atendimento caso haja mais de um pedido de interrupção pendente, um esquema de prioridades define qual o pedido a ser tratado o processador trata a interrupção

interrompe seu processamento salva o "contexto" (valores correntes dos registradores e endereço da próxima instrução) identifica quem fez a solicitação de interrupção passa ao tratamento da interrupção (efetivando a operação de entrada ou de saída)

ao fim do tratamento da interrupção, o processador retorna ao ponto em que o programa foi interrompido em comparação com a entrada e saída por espera por sinalização, a entrada e saída por interrupção costuma apresentar melhor desempenho, pois o processador não precisa ficar sem fazer nada, até que

a operação de entrada e saída seja concluída

acesso direto à memória (DMA - "direct memory access") tanto na entrada e saída por programa quanto por interrupção, cabe ao processador a tarefa de controlar

o tráfego de dados entre o módulo de entrada e saída e a memória

alguns sistemas computacionais, porém, possuem uma conexão entre a memória principal e o módulo de

entrada e saída nesses casos, cabe ao módulo de entrada e saída, por acesso direto à memória, o controle total da operação de entrada e saída, inclusive a transferência de dados da, ou para a memória principal (através do barramento) o processador, então, fica liberado para executar suas tarefas

ArquiteturaComputadores.doc - 08/03/07 – página

31

UNIDADE CENTRAL DE PROCESSAMENTO

UCP: componente do sistema computacional responsável pelo processamento das informações e pelo controle dos demais componentes

também chamada CPU - "central process unit" analogia com o ser humano: cérebro

(no passado, o computador era chamado de "cérebro eletrônico")

funções de processamento e de controle

responsável pela execução de uma seqüência de "ciclos de instrução"

cada ciclo de instrução busca uma instrução na memória, uma de cada vez decodifica (interpreta) a instrução busca os operandos executa efetivamente a operação guarda o resultado (se houver) reinicia o processo, buscando outra instrução no passado, esses passos eram executados seqüencialmente, um de cada vez hoje, emprega-se a técnica da linha de montagem ("pipeline"), que permite a execução simultânea de alguns desses passos

principais elementos da UCP

registradores unidade aritmética e lógica unidade de controle (incluindo o decodificador de instruções) memória “cache” (nas mais modernas) relógio

implementação física dos elementos constituintes da UCP

por componentes eletrônicos distintos (computadores mais antigos) numa única pastilha ("chip"): o microprocessador

registradores

servem para armazenar informações, utilizadas no interior da UCP

memória de nível hierárquico mais alto

número e tamanho dos registradores variam de acordo com o projeto da UCP quanto à função, podem ser classificados como acessíveis ao usuário - podem ser acessados através de instruções em linguagem de máquina (ou de montagem) de controle - controlam a execução das instruções, sem que possam ser diretamente referenciados por elas quanto ao conteúdo da informação armazenada, podem ser classificados como de dados - armazenam valores de operandos de endereços - armazenam endereços de operandos de uso geral - podem ter diversas funções de sinalização ("flags") - indicam ocorrência de eventos e de situações especiais ("status") uma instrução pode fazer referência a 0, 1, 2, 3 ou mais registradores (1 ou 2 são os mais comuns)

ArquiteturaComputadores.doc - 08/03/07 – página exemplos de registradores mais comumente utilizados pelas UCPs acumulador (ACC - "accumulator")

32

presente em diversos processadores registrador de acesso ao usuário mais freqüentemente utilizado, pela maioria dos programas tem esse nome porque, nas operações aritméticas e lógicas, além de armazenar um dos operandos, armazena também o resultado obtido ao final da operação empregado, também, para armazenar dados que são copiados de, e para, memória e módulos de entrada e saída tem, em geral, o mesmo tamanho que o da palavra de memória

endereço da próxima instrução (ou contador de instrução, ou contador de programa) (PC - "program counter")

presente em praticamente todos os processadores registrador de controle armazena o endereço que contém o código da próxima instrução a ser obtida na memória de programa (durante o ciclo de busca), para ser executada incrementado automaticamente, após a obtenção da instrução

alterado pelas instruções de desvio (os "saltos") na ocorrência de interrupções ou de instruções de chamada de rotina, precisa ser guardado em um local em que possa ser posteriormente recuperado (em geral, na "pilha")

seu número de bits (n) determina o comprimento máximo (N) dos programas virtual”)

N=2 n (a menos que se utilize “memória

instrução sendo executada (IR - "instruction register")

registrador de controle armazena o código da última instrução obtida na memória durante um ciclo de busca utilizado na decodificação (interpretação) da instrução sendo executada

endereço da memória (MAR - "memory address register")

registrador de controle armazena o endereço da posição da memória em que está sendo feita uma operação de leitura (de instrução ou de dado) ou de escrita (de dado) seu número de bits (n), geralmente igual à largura do barramento de endereços, determina a capacidade (N) da memória

principal

N=2 n

dado da memória (MBR - "memory buffer register")

registrador de controle armazena o dado a ser escrito na memória, ou o dado (ou o código de instrução) recentemente lido na memória seu número de bits é, geralmente, igual à largura do barramento de dados

sinalizadores, ou indicadores ("flags")

registradores de controle (alguns são, também, de acesso ao usuário) possuem 1 único bit cada podem formar, em conjunto, a "palavra de estado do programa" (PSW - "program status word") armazenam indicações de "status" (ocorrência de eventos e situações especiais) os mais comuns são zero (Z - "zero") - indica se o resultado da última operação é 0 (ou se o valor corrente do acumulador é 0) sinal (S - "sign") - indica o sinal (positivo ou negativo) do resultado da última operação (ou do valor corrente do acumulador) "vai-um", ou "vem-um" (C - "carry", ou B - "borrow") - indica se a última operação provocou um "vai-um" (no caso da adição) ou um "vem-um" (no caso da subtração) estouro ou transbordo (O - "overflow") - indica se a última operação provocou um "estouro" aritmético habilitação de interrupção (IE - "interrupt enable") - indica se o estado corrente da habilitação de interrupções (habilitadas ou desabilitadas)

registradores de uso geral

registradores de acesso ao usuário possuem diversos nomes

D0, D1,

AX, BX, CX, DX, no microprocessador 8086, da Intel

EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI, no microprocessador Pentium II, da Intel B, C, D, E, H, L, no microprocessador 8080, da Intel

R0, R1,

, D7, no microprocessador MC68000, da Motorola

, R31, FPR0, FPR1,

FPR31, no microprocessador PowerPC, da IBM/Motorola

, armazenam dados utilizados com freqüência nas operações da UCP, por causa do seu pequeno tempo de acesso bastante utilizados pelos programas escritos em linguagem de montagem e pelo código gerado pelos compiladores

ArquiteturaComputadores.doc - 08/03/07 – página

33

unidade aritmética e lógica (ALU - "arithmetic and logic unit")

também chamada de ULA - "unidade lógico-aritmética" unidade que executa efetivamente, as operações algébricas (aritméticas e lógicas) circuito lógico combinatório, com portas de alta velocidade as operações envolvem 1 ou 2 operandos operações aritméticas usuais 2 operandos

soma / subtração / multiplicação / divisão

1 operando

incremento de 1 / decremento de 1

operações lógicas 2 operandos

"e" ("AND") / "ou" ("OR") / "ou exclusivo" (XOR")

1 operando

complemento ("NOT") / deslocamento ("shift") e/ou rotação ("rotate") à esquerda ou à direita

algumas operações (em especial, multiplicação e divisão) não são executadas por processadores mais simples em geral, o acumulador armazena sempre um dos operandos, e, também, o resultado da operação alguns processadores permitem que sejam executadas operações entre os registradores de uso geral, sem o uso do acumulador

unidade de controle

parte da UCP de mais alta complexidade responsável pela decodificação da instrução sendo executada, e pela geração dos sinais de controle nos momentos adequados esses sinais de controle atuam em praticamente todos os componentes da UCP, e ainda na memória principal e nos módulos de entrada e saída métodos utilizados na implementação da unidade de controle por circuito ("hardware")

os sinais de controle são gerados por um complexo circuito combinatório, que tem, como entradas, o código da instrução a ser executada, sinais de sinalização ("flags") e o sinal do relógio vantagem: alta velocidade para a geração dos sinais desvantagem: pouca flexibilidade para alterações no projeto

por microprogramação ("software")

cada instrução corresponde a uma seqüência de micro-operações, indicadas por micro-instruções, que compõem um microprograma uma micro-operação é a menor ação que pode ser realizada pelo processador, a cada pulso do relógio (exemplos: incrementa registrador de endereço da próxima instrução; copia acumulador em outro registrador de uso geral; copia registrador de uso geral no registrador de endereço da memória; etc.) a execução do microprograma é semelhante à de um programa (também seqüencial; também tem ciclo de micro-instrução), mas bem mais simples

relógio ("clock")

gera pulsos, que definem o ritmo de trabalho da UCP o intervalo de tempo entre 2 pulsos consecutivos é o chamado "ciclo de máquina" o inverso do ciclo de máquina (isto é, número de ciclos de máquina por unidade de tempo) é a freqüência do relógio durante cada ciclo de máquina, realiza-se, em geral, uma micro-operação assim, em geral, quanto maior a freqüência do relógio, maior a velocidade de operação do processador isso pode não ser verdade: uma máquina com freqüência de relógio menor do que a de outra máquina, pode ser mais rápida, se suas instruções exigem menos micro-operações

analogia: um remador pode ter menor freqüência de remadas do que outro, mas ser mais rápido, se suas remadas forem mais fortes

possibilidades de melhorias no desempenho

aumento do número de registradores incorporação de memória “cache” utilização de “pipeline” (“linha de produção”) associação de múltiplos processadores (exemplo: “dual core”) utilização de conjunto de instruções reduzido ou expandido (RISC x CISC)

ArquiteturaComputadores.doc - 08/03/07 – página

34

UNIDADE ARITMÉTICA E LÓGICA

manipula dados, realizando, com eles, operações aritméticas e lógicas tipos de dados manipulados

caracter usado para representar símbolos gráficos (para textos) e de caracteres de controle (para comunicação) codificação EBCDIC ("Extended Binary Coded Decimal Interchange Code")

definido pela IBM

codificação ASCII ("American Standard Code for Information Interchange")

uso universal

lógico usado para variáveis que podem ter apenas 2 valores (0 ou 1; ou "falso" ou "verdadeiro")

lógica binária

operações lógicas usualmente executadas pela unidade aritmética e lógica

"e" ("AND") - resultado é verdadeiro se e somente se todos os operandos são verdadeiros

A

B

X = A AND B = A

B = A B

0

0

0

0

1

0

1

0

0

1

1

1

"ou" ("OR") - resultado é verdadeiro se e somente se pelo menos um dos operandos é verdadeiro

A

B

X

= A OR B = A

B = A + B

0

0

 

0

0

1

 

1

1

0

 

1

1

1

 

1

"não" ("NOT") - resultado é verdadeiro se e somente se o operando é falso

A

X

= NOT A =

A = /A

0

 

1

1

 

0

"ou exclusivo" ("XOR") - resultado é verdadeiro se e somente se um número ímpar de operandos é verdadeiro

A

B

X = A XOR B = A

B

0

0

0

0

1

1

1

0

1

1

1

0

numérico usado para variáveis que exprimem quantidades operações numéricas usualmente executadas pela unidade aritmética e lógica

soma subtração incremento de 1 decremento de 1 multiplicação (menos usual) divisão (menos usual)

representação de dados numéricos

seqüência de dígitos binários, ou bits (0 ou 1)

uso da base 2

representação em ponto fixo, para números inteiros sinal e magnitude complemento a 2 representação em ponto flutuante, para números fracionários notação científica (mantissa e exponente) notação científica normalizada representação em código binário decimal (BCD - "binary coded decimal"), para aplicações comerciais

ArquiteturaComputadores.doc - 08/03/07 – página

35

representação em sinal e magnitude, com n bits

1 bit de sinal 0, para número positivo 1, para número negativo n-1 bits de magnitude representa números inteiros, de 0 a 2 n-1 -1 faixa de representação: de -(2 n-1 -1) a +(2 n-1 -1)

n = 8

desvantagem: duas representações diferentes para o número 0

de -127 a +127

1000

0

e 0000

0

aritmética

soma

sinais iguais soma as magnitudes mantém o sinal sinais diferentes subtrai a magnitude menor da magnitude maior mantém o sinal da magnitude maior

subtração

inverte o sinal do subtraendo executa o algoritmo da soma

detecção de "estouro" ("overflow")

ocorrência de "vai-um" no bit de magnitude mais à esquerda

representação em complemento a 2, com n bits

número positivo representação igual a sinal e magnitude número negativo invertem-se todos os bits na representação positiva do número, e soma-se 1 ao resultado o bit mais à esquerda é o chamado bit de sinal, pois indica o sinal do número 0, para número positivo 1, para número negativo vantagens:

uma única representação para o número 0 exige um único circuito apenas, para operações de soma e subtração faixa de representação: de -2 n-1 a +(2 n-1 -1)

aritmética

soma

n = 8

de -128 a +127

soma, normalmente (se uma parcela for negativa, ela já deve estar representada em complemento a 2)

subtração

complementa a 2 o subtraendo executa o algoritmo da soma

detecção de "estouro" (ou “transbordo”) ("overflow")

ocorrência de apenas um "vai-um" nos 2 bits mais à esquerda (ou para o bit de sinal, ou para fora, mas não ambos); ou sinal do resultado diferente dos sinais das parcelas, quando estes são iguais (parcelas com sinais diferentes nunca geram transbordo)

representação em notação científica

N = ±F x B ±E , onde N - número a ser representado ± - sinal do número F - mantissa, ou parte fracionária do número B - base de exponenciação ±E - expoente há diversos pares de valores para a mantissa F e o expoente ±E que representam um mesmo número, mantida uma base B

ArquiteturaComputadores.doc - 08/03/07 – página

36

representação em notação científica normalizada

mantissa fracionária (menor que 1) primeiro algarismo da mantissa, após a vírgula, diferente de zero há um único par de valores para a mantissa F e o expoente E, mantida a base B (=2) formato típico: 32 bits 1 bit para o sinal do número 1 bit para o sinal do expoente 6 bits para a magnitude do expoente 24 bits para a mantissa conversão de um valor decimal para a representação em notação científica normalizada converte o número, de decimal (base 10) para binário (base 2) desloca a vírgula, até que ela fique à esquerda do dígito mais significativo (o primeiro "1"), obtendo-se a mantissa o número de casas deslocadas indica a magnitude do expoente a direção do deslocamento indica o sinal do expoente (à esquerda indica expoente positivo; à direita indica expoente negativo) aritmética soma e subtração

iguala os dois expoentes, em geral, pelo maior (isto é, a vírgula da mantissa de menor expoente é deslocada, à direita, tantas quantas forma as casas necessárias para os expoentes ficarem iguais) soma ou subtrai as mantissas (pelas regras da notação em ponto fixo), e mantém o expoente (agora, único)

multiplicação e divisão

o sinal do resultado é positivo (bit de sinal = 0), se os operandos têm sinais iguais; ou negativo (bit de sinal = 1), se os operandos têm sinais diferentes a mantissa do resultado é o produto ou a divisão entre as mantissas dos operandos o expoente do resultado é a soma (para a multiplicação) ou a diferença (para a divisão) entre os expoentes dos operandos

representação em BCD

codifica cada algarismo decimal em 4 dígitos binários (bits) permite obter resultados exatos (necessários, por exemplo, em aplicações financeiras), às custas de maior complexidade dos cálculos aritméticos

ArquiteturaComputadores.doc - 08/03/07 – página

37

CONJUNTO DE INSTRUÇÕES

instrução de máquina

indicação de uma operação básica ("primitiva"), muito simples e objetiva, capaz de ser executada por um sistema computacional um comando (de linguagem de alto nível) é traduzido numa seqüência de instruções de máquina depende da estrutura do processador

(na verdade, o projeto do processador parte da definição do conjunto de instruções e, a partir daí, são implementados os seus componentes)

para a definição do conjunto de instruções, devem ser definidos a função de cada instrução o formato de cada instrução

Exemplos:

1) some o conteúdo do acumulador com o conteúdo do registrador de uso geral R1, e guarde o resultado no acumulador 2) copie o conteúdo do acumulador na posição P da memória

Contra-Exemplos:

calcule X = A + B * C calcule X = raiz quadrada de A (não existe processador capaz de executar estes cálculos numa única operação básica)

implementação física de uma instrução de máquina

conjunto de bits agrupados em palavras e armazenados na memória principal

tipos de instrução de máquina

operações algébricas

exemplos: operações aritméticas, operações lógicas

operações de movimentação de dados

exemplos: movimentação entre registradores, entre registradores e a memória (e vice-versa)

operações de entrada e saída

exemplos: leitura em dispositivo de entrada, escrita em dispositivo de saída

operações de controle

exemplos: desvio da seqüência de execução, suspensão da execução

ArquiteturaComputadores.doc - 08/03/07 – página

38

o formato de cada instrução de máquina, em geral, apresenta 2 campos de bits

campo do código da operação define a operação a ser executada o comprimento do campo do código da operação pode ser fixo (igual para todas as instruções) ou variável esse comprimento (n bits) determina o número máximo (N) de códigos diferentes: N = 2 n

se n = 8

N = 256 (suficiente, em geral, para um conjunto completo de instruções)

se N = 500

usar 1 ou 2 bytes:

- se 1 o byte π FFh - se 1 o byte = FFh

código = 1 o byte (255 possibilidades) código = 2 o byte (+256 possibilidades)

campo dos operandos define o(s) valor(es) do(s) dado(s) com os quais a operação deve ser executada o comprimento do campo dos operandos também pode ser fixo ou variável o próprio número de operandos pode ser sempre o mesmo, ou variar de acordo com a instrução

instruções com 4 operandos

exemplos:

ADD A, B, X, ENDE

A+B

X, vai para o endereço ENDE

MPY A, B, X, ENDE

A*B

X, vai para o endereço ENDE

(hoje, nenhum processador se utiliza do operando do endereço da próxima instrução, a não ser nas instruções de desvio)

instruções com 3 operandos

exemplos:

ADD A, B, X MPY A, B, X

A+B

A*B

X

X

(em ambos os casos, vai, implicitamente, para a instrução seguinte)

instruções com 2 operandos

exemplos:

(o resultado é implicitamente armazenado no primeiro operando)

ADD A, B

A+B

A

MOV A, B

B

A

instruções com 1 operando

MOV A ADD A

exemplos:

A

acumulador + A

acumulador

acumulador

(o acumulador é um operando implícito, e também onde é armazenado o resultado)

JMP ENDE

instruções sem operandos

vai para o endereço ENDE

exemplos:

STP

encerra a execução não faz nada

NOP

(apenas consome um certo tempo)

vantagens da instrução com muitos operandos

completeza (possui todos os operandos explícitos) possibilita programas com menor número de instruções

desvantagens da instrução com muitos operandos

desperdício de bits, na maioria dos casos grande consumo de memória grande consumo de tempo (especialmente, no ciclo de busca)

ArquiteturaComputad