fundamentos de sistemas computacionais professor: ricardo quintão e-mail: [email protected] site:...

70
Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: [email protected] Site: www.rgquintao.com.br Versão 5.0

Upload: internet

Post on 21-Apr-2015

110 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Fundamentos de Sistemas Computacionais

Professor: Ricardo Quintão

e-mail: [email protected]

Site: www.rgquintao.com.br

Versão 5.0

Page 2: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de Numeração

• A base de representação numérica de um número está relacionada com a quantidade de símbolos disponíveis para representar este número.

• Se tivermos 10 símbolos para as representações numéricas, este número estará sendo representado na base 10, se tivermos 8 símbolos, ele estará na base 8 e assim sucessivamente.

2

0 1 2 3 4 5 6 7 8 9

Vazio

Base 10

0 1 2 3

Vazio

Base 4

0 1

VazioBase 2

Page 3: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de Numeração

• A maneira utilizada para representar qualquer valor com um número limitado de símbolos foi o da agrupagem.

• Se montarmos grupos contendo como quantidade de elementos a mesma quantidade de símbolos que temos para a representação numérica, isto é, a base do número, a quantidade de objetos que ficar sobrando será inferior a base, sendo então possível a sua representação.

3

Page 4: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de Numeração• Vamos entender graficamente como é feita esta representação.• Vamos fazer um exemplo na base 10, que é a nossa base diária.

4

34( )10

Page 5: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de Numeração• Agora vamos fazer um exemplo na base 3 com as mesmas 43 bolinhas.

5

1211( )3

4 3 31 3 14

1342 3

11

1211( )3

= 1 33 3x x x + 31 3x x + 32 x + 1

= 1 3x + 1 x + 2 x + 13 32 31 30x

= 27 + 9 + 6 + 1

= 43( )10

0123

Page 6: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de Numeração• Como será a representação no caso de bases superiores a base 10?• Neste caso, precisaremos de mais símbolos para representar estes novos valores.

Para facilitar, utilizou-se o alfabeto.

6

0 1 2 3 4 5 6 7 8 9 A B C D E F

Vazio

Base 16

Page 7: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de Numeração• Exemplo de conversão de bases superiores a base 10.

7

7126 1672 445

861627125 16

111

(7126)10 ( )16

6 13 (1BD6)16

6DB1( )16

= 1 16x + 11 x + 13 x + 63

162

161

160

x

= 4096 + 2816 + 208 + 6

= 7126( )10

0123

(1BD6)16 ( )10

Page 8: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoConversão de bases que são potências entre si.

• O que significa dizer que duas bases são potências entre si?• Primeiramente devemos representar a base maior numa potência da base menor. (B be) onde B > b

& e número inteiro maior que 1.• Se for possível escrever as potências acima, então as bases são potências entre si.

• O próximo passo é montar uma tabela de conversão entre estas bases.• Esta tabela terá uma quantidade de linhas de conversão igual ao valor da maior base (B).

Normalmente coloca-se uma linha adicional para o cabeçalho das colunas.• A quantidade de dígitos referente aos valores da menor base deve ser igual ao expoente usado nesta

base (e).• Monta-se uma tabela de duas colunas onde cada coluna representará uma base.• Na coluna da base maior (B) coloca-se, em seqüência e começando do zero, todos os seus símbolos.• Na coluna da base menor, coloca-se o valor equivalente escrito com uma quantidade de dígitos igual

ao expoente da base menor (e).• Pronto! Já temos a tabela pronta, agora é só usar.

8

Page 9: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoConversão de bases que são potências entre si.

• Exemplo:

Montar a tabela que converta da base 2 para a base 4.

Resolução:

Base 4 base 2 (4 = 22 são potências entre si)

Total de linhas da tabela: 4

Total de dígitos da base 2: 2

9

Base 4 Base 20 001 012 103 11

b) (111101011110101010110)2 ( )4

(0111101011110101010110)2

1 3 2 2 3 3 1 1 1 1 2= (13223311112)4

Exemplo:

a) (323121302)4 ( )2

(111011011001110010)2

1110=(3 2 3 1 2 1 3 0 2)4

110110 1101 0010

Page 10: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoConversão de bases que são potências entre si.

• Exemplo:

Montar a tabela que converta da base 2 para a base 8.

Resolução:

Base 8 base 2 (8 = 23 são potências entre si)

Total de linhas da tabela: 8

Total de dígitos da base 2: 3

10

Base 8 Base 20 0001 0012 0103 0114 1005 1016 1107 111

b) (111101011110101010110)2 ( )8

(111101011110101010110)2

7 5 3 6 5 2 6= (7536526)8

Exemplo:

a) (637254)8 ( )2

(110011111010101100)2

110=(6 3 7 2 5 4)8

011 111 010 100101

Page 11: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoConversão de bases que são potências entre si.

• Exemplo:

Montar a tabela que converta da base 2 para a base 16.

Resolução:

Base 16 base 2 (16 = 24 são potências entre si)

Total de linhas da tabela: 16

Total de dígitos da base 2: 4

11

Base 16 Base 20 00001 00012 00103 00114 01005 01016 01107 01118 10009 1001A 1010B 1011C 1100D 1101E 1110F 1111b) (111101011110101010110)2 ( )16

(000111101011110101010110)2

1 E B D 5 6= (1EBD56)16

Exemplo:

a) (AD3B9)16 ( )2

(10101101001110111001)2

1010=(A D 3 B 9)16

1101001110111001

Page 12: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoRepresentação de Números Negativos.

• Os computadores digitais utilizam principalmente três métodos para representar números negativos:– Sinal e Magnitude– Complemento de um– Complemento de dois

Para os três casos é importante definir a quantidade de bits usada na representação do número, porque o bit mais significativo (bit da esquerda) representará o sinal.

12

0 Positivo1 Negativo

Page 13: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoRepresentação de Números Negativos.

Sinal e MagnitudeEsta representação agrupa o bit de sinal com um valor (magnitude) que representa o valor absoluto de número como ilustrado abaixo:

13

...Sinal Magnitude

Número

Faixa de ValoresPara um número formado por n bits (incluindo o bit de sinal), é possível representar valores que vão deste -2n-1 + 1 até 2n-1 - 1.Exemplo:Para um número representado por 8 bits, isto é n = 8, teremos como faixa de valores:-28-1 + 1 até 28-1 - 1 -128 + 1 até 128 - 1 Faixa -127 até 127

Page 14: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoRepresentação de Números Negativos.

Sinal e MagnitudeConverta os valores abaixo para a sua representação em binário e em seguida apresente-os em hexadecimal (base 16). O valor de n representa a quantidade de bits utilizada na representação binária.

a) (-45)10, n = 8 bits.

Primeiro passo: Converter o valor sem sinal, 45, para binário.

(45)10 = (101101)2.

Segundo passo: Completar (à esquerda) com o valor zero os bits que faltam para chegar a n com exceção do bit mais à esquerda que deve representar o sinal. Neste caso o bit de sinal vale 1 pois o valor é negativo.

(-45)10 = (10101101)2 = (AD)16.

14Bit de Sinal

Page 15: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoRepresentação de Números Negativos.

Sinal e MagnitudeConverta os valores abaixo para a sua representação em binário e em seguida apresente-os em hexadecimal (base 16). O valor de n representa a quantidade de bits utilizada na representação binária.

b) (-7)10, n = 8 bits.

Primeiro passo: Converter o valor sem sinal, 7, para binário.

(7)10 = (111)2.

Segundo passo: Completar (à esquerda) com o valor zero os bits que faltam para chegar a n com exceção do bit mais à esquerda que deve representar o sinal. Neste caso o bit de sinal vale 1 pois o valor é negativo.

(-7)10 = (10000111)2 = (87)16.

15Bit de Sinal

Page 16: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoRepresentação de Números Negativos.

Sinal e MagnitudeUm ponto negativo em relação a esta representação é a existência de duas formas de representar o valor zero. Veja abaixo:

Para um número com 8 bits, temos:

(0)10 = (00000000)2.

(-0)10 = (10000000)2.

Como (0)10 = (-0)10

Então, (00000000)2 = (10000000)2.

Isto é, duas representações do zero.

16

Page 17: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoRepresentação de Números Negativos.

Complemento de 1Nesta representação, o valor negativo de um número é dado pela inversão de todos os seus bits. O bit mais à esquerda continua representando o sinal, porém os demais bits não representam a magnitude.

17

...Sinal Demais bits

Número

Faixa de ValoresPara um número formado por n bits (incluindo o bit de sinal), é possível representar valores que vão deste -2n-1 + 1 até 2n-1 - 1.Exemplo:Para um número representado por 8 bits, isto é n = 8, teremos como faixa de valores:-28-1 + 1 até 28-1 - 1 -128 + 1 até 128 - 1 Faixa -127 até 127

Page 18: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoRepresentação de Números Negativos.

Complemento de 1Converta os valores abaixo para a sua representação em binário e em seguida apresente-os em hexadecimal (base 16). O valor de n representa a quantidade de bits utilizada na representação binária.

a) (-45)10, n = 8 bits.

Primeiro passo: Converter o valor sem sinal, 45, para binário e representá-lo com 8 bits.

(45)10 = (00101101)2.

Segundo passo: Inverter todos os bits do número. Repare que o bit mais à esquerda continua representando o sinal.

(-45)10 = (11010010)2 = (D2)16.

18

Bit de Sinal

Page 19: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoRepresentação de Números Negativos.

Complemento de 1Converta os valores abaixo para a sua representação em binário e em seguida apresente-os em hexadecimal (base 16). O valor de n representa a quantidade de bits utilizada na representação binária.

b) (-7)10, n = 8 bits.

Primeiro passo: Converter o valor sem sinal, 7, para binário e representá-lo com 8 bits.

(7)10 = (00000111)2.

Segundo passo: Inverter todos os bits do número. Repare que o bit mais à esquerda continua representando o sinal.

(-7)10 = (11111000)2 = (F8)16.

19

Bit de Sinal

Page 20: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoRepresentação de Números Negativos.

Complemento de 1Um ponto negativo em relação a esta representação é a existência de duas formas de representar o valor zero. Veja abaixo:

Para um número com 8 bits, temos:

(0)10 = (00000000)2.

(-0)10 = (11111111)2.

Como (0)10 = (-0)10

Então, (00000000)2 = (11111111)2.

Isto é, duas representações do zero.

20

Page 21: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoRepresentação de Números Negativos.

Complemento de 2Nesta representação, o valor negativo de um número é dado pela inversão de todos os seus bits mais 1. O bit mais à esquerda continua representando o sinal, porém os demais bits não representam a magnitude.

21

...Sinal Demais bits

Número

Faixa de ValoresPara um número formado por n bits (incluindo o bit de sinal), é possível representar valores que vão deste -2n-1 até 2n-1 - 1.Exemplo:Para um número representado por 8 bits, isto é n = 8, teremos como faixa de valores:-28-1 até 28-1 - 1 -128 até 128 - 1 Faixa -128 até 127

Page 22: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoRepresentação de Números Negativos.

Complemento de 2Converta os valores abaixo para a sua representação em binário e em seguida apresente-os em hexadecimal (base 16). O valor de n representa a quantidade de bits utilizada na representação binária.

a) (-45)10, n = 8 bits.

Primeiro passo: Converter o valor sem sinal, 45, para binário e representá-lo com 8 bits.

(45)10 = (00101101)2.

Segundo passo: Inverter todos os bits do número

(11010010)2.

Terceiro passo: Somar 1 ao valor anterior. Repare que o bit mais à esquerda continua representando o sinal.

(-45)10 = (11010011)2 = (D3)16.

22

Bit de Sinal

Page 23: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoRepresentação de Números Negativos.

Complemento de 2Converta os valores abaixo para a sua representação em binário e em seguida apresente-os em hexadecimal (base 16). O valor de n representa a quantidade de bits utilizada na representação binária.

a) (-7)10, n = 8 bits.

Primeiro passo: Converter o valor sem sinal, 7, para binário e representá-lo com 8 bits.

(7)10 = (00000111)2.

Segundo passo: Inverter todos os bits do número.

(11111000)2.

Terceiro passo: Somar 1 ao valor anterior. Repare que o bit mais à esquerda continua representando o sinal.

(-7)10 = (11111001)2 = (F9)16.

23

Bit de Sinal

Page 24: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoRepresentação de Números Negativos.

Complemento de 2Diferente dos casos anteriores, esta representação possui apenas uma forma de representar o valor zero. Veja abaixo:

Para um número com 8 bits, temos:

(0)10 = (00000000)2.

(-0)10 = (11111111)2 + 1 = (100000000)2.

Como o número possui apenas 8 bits, o nono bit representado em azul deve ser descartado.

(-0)10 = (00000000)2.

Já que (0)10 = (-0)10

Então, (00000000)2 = (00000000)2.

Isto é, apenas uma representações do zero.

24

Page 25: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Sistema de NumeraçãoAritmética com Complemento de 2.

Como que a CPU faz para saber se o número utilizado é com ou sem sinal? Afinal de contas, isto é importante na hora de usar o número? Vamos supor os valores em binário abaixo representados por 8 bits.

(10000100)2 e (00001110)2

Como seria feita a soma destes números? Usando o método tradicional fica:

11 Considerando sem sinal Considerando com sinal

10000100 10000100 (+132)10 10000100 (-124)10

+ 00001110 + 00001110 (+14)10 + 00001110 (+14)10

10010010 10010010 (+146)10 10010010 (-110)10

Olha só que interessante! A mesma conta serve tanto para números sem sinal, como para números com sinal. O que vai mudar é a interpretação do resultado feito pelo seu programa.

25

Page 26: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memória

• Tipos de Memória

– Volátil

São aquelas que necessitam de energia elétrica para manter os seus dados armazenados.

– Não Volátil

São aquelas que não necessitam de energia elétrica para manter os seus dados armazenados.

26

Page 27: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias Voláteis

• Estática (SRAM – “Static Random Access Memory”) – A característica mais relevante deste tipo de memória é no fato dela ter um tempo de resposta muito pequeno, sendo assim usada para caches e registradores, e também por ocupar um espaço muito grande nas pastilhas de silício proporcionando um alto custo por bit.

• Dinâmica (DRAM – “Dynamic Random Access Memory”) – Esta memória ocupa um espaço muito pequeno da pastilha, levando a possibilidade de se produzir memórias com uma grande capacidade de armazenamento sendo utilizada para a memória principal, entretanto, ela possui um tempo de resposta muito alto, comparado com as SRAM.

27

Page 28: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias Voláteis

28

Volátil Estática Dinâmica

Vantagem Desvantagens Vantagens Desvantagem 1- Alto desempenho 1- Alto consumo de energia elétrica 1- Baixo consumo de energia elétrica 1- Baixo desempenho

2- Alta geração de calor 2- Baixa geração de calor 2- Refresh

3- Baixo grau de integração 3- Alto grau de integração

4- Baixa capacidade de armazenamento 4- Alta capacidade de armazenamento

5- Alto custo por bit 5- Baixo custo por bit

Exemplo de local onde é Utilizada Exemplo de local onde é Utilizada Memória Cache, Registradores Memória Principal

Page 29: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias Não Voláteis

• ROM (Read Only Memory) – Esta memória vem de fábrica com o seu conteúdo gravado, só sendo permitido ao usuário a operação de leitura (consulta dos dados). Devido ao alto custo da matriz de fabricação desta memória, a sua confecção só se torna financeiramente viável se for produzida em alta quantidade.

• PROM (Programmable Read Only Memory) – Esta memória vem de fábrica com todos os seu bits valendo “1”, sendo permitido ao usuário a gravação dos “0”. Uma vez que o valor “0” é gravado em um determinado bit, não é possível restaurar este bit para o valor “1”, sendo assim, dizemos que esta memória permite apenas uma gravação por bit.

29

Page 30: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias Não Voláteis

• EPROM (Erasable Programmable Read Only Memory) – Esta memória vem de fábrica com todos os seu bits valendo “1”, sendo permitido ao usuário a gravação dos “0” através da energia elétrica. Nesta memória é possível restaurar o valor “1” do bit, mas para isso deve-se expor a memória a luz ultra-violeta. Como a luz ultra-violeta será incidida em toda a memória, todos os bits de valor “0” serão retornados ao valor “1” original de fábrica.

• EEPROM ou E2PROM (Electrically Erasable Programmable Read Only Memory) – Esta memória vem de fábrica com todos os seu bits valendo “1”, sendo permitido ao usuário a gravação dos “0” através da energia elétrica. Nesta memória é possível restaurar o valor “1” do bit também com o uso da energia elétrica, neste caso, não existe a necessidade de apagar toda a memória antes de ser regravada.

30

Page 31: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias Não Voláteis• FLASH – É um tipo de E2PROM, onde a sua tecnologia permite uma maior

densidade de bits uma maior taxa de transferência dos dados e menor tempo de gravação.

31

BIOS (Basic Input Output System – Sistema Básico de Entrada e Saída) – Este é um programa que é executado assim que o computador é ligado. Ele tem por objetivo configurar o hardware existente e fazer as devidas verificações. Após toda a sua execução, ele solicita o carregamento do Sistema Operacional de alguma mídia. Devida a necessidade deste programa estar presente no momento em que a máquina é ligada, ele é armazenado em uma memória do tipo não volátil. Durante muitos anos foi utilizada a EPROM como meio de armazenamento da BIOS, mas hoje em dia usa-se a memória do tipo FLASH.

Page 32: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

32

Estrutura Interna da Memória Principal

Célula

Bit

Identificaçãoou

Endereço

0

1

2

3

N - 1

M.P.

Célula Unidade Mínima de Trabalho da M.P.N Total de Células da M.P.M Capacidade da Célula.CAP_MP Capacidade da M.P.CAP_MP = N x ME Total de bits do Endereço.2E Total de Endereços.N – 1 Endereço da Última Célula.Se o Total de Células = Total de Endereços então{ N = 2E

Maior Endereço = N – 1}

Page 33: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

33

Conexão da CPU com a MP

0

1

2

3

N - 1

MP.

UnidadesFuncionais

REM RDM UC

Barramento de Controle (BC)

Barramento de Dados (BD)

Barramento de Endereço (BE)

REM >= BE >= ERDM = BD >= M

TCA = RDM / M

REM Registrador de Endereço de Memória.RDM Registrador de Dados de Memória.UC Unidade de Controle.TCA Total de Células Acessadas em uma Única Operação

CPU

Page 34: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias Cache

• A Memória Cache foi criada devida a grande diferença de velocidade entre a CPU e a Memória Principal.

• Para conseguir um melhor desempenho, foi utilizada a tecnologia Estática na fabricação da Memória Cache.

• Ela foi introduzida entre a CPU e a Memória Principal com o objetivo de, caso possuísse o dado, respondesse mais rapidamente a solicitação da CPU.

• Abaixo temos um esquema de comunicação de memória com a Memória Cache.

34

Page 35: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias Cache

• O funcionamento da Memória Cache baseia-se totalmente nos conceitos de Localidade Temporal e Localidade Espacial. Estes conceitos estão relacionados ao comportamento dos softwares.– Localidade Temporal: uma vez acessada uma determinada região de memória,

existe uma grande probabilidade desta região ser novamente acessada em um curto espaço de tempo.

– Localidade Espacial: uma vez acessada uma determinada região de memória, existe uma grande probabilidade de serem acessadas as regiões que estão na sua vizinhança.

• Com base nestes dois conceitos, a Memória Cache passou a ter uma alta taxa de acertos (Hits) contra as taxas de faltas (Misses), já que na maioria das Memórias Caches o seu carregamento é feito sob demanda.

35

Page 36: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias Cache• A Memória Cache se divide em três características principais que se subdividem em

outras, como mostra o esquema abaixo:– Políticas de Carregamento:

• Mapeamento Direto• Puramente Associativo• Associativo por Conjunto

– Políticas de Substituição:• Aleatório• FIFO (First In First Out) • LFU (Least Frequently Used - Menos Freqüentemente Usado) • LRU (Least Recently Used - Menos Recentemente Usado)

– Políticas de Atualização:• Write Through (Escrita em Ambas) • Write Back (Escrita Atrasada) • Write Once (Utilizada na existência de mais de uma CPU)

36

Page 37: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias Cache• A Política de Carregamento estabelece o local interno da Memória Cache que os dados

serão carregados.• A Política de Substituição define qual região da Memória Cache terá seus dados

substituídos por outros vindos da Memória Principal.• A Política de Atualização define o momento que os dados escritos pela CPU serão

repassados a Memória Principal.

• A figura a seguir mostra o formato da Memória Cache.– O bit V (Válido) indica se o conteúdo da linha é válido ou não.– O bit M (Modificado) indica se a linha sofreu alguma alteração por parte da CPU.– A TAG indica de que lugar da memória principal pertence o dado carregado na

linha.– Blocos são um conjunto de células consecutivas com capacidade para preencher

uma linha da Memória Cache.

37

Page 38: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias Cache• Abaixo temos o formato da Memória Cache

38

Page 39: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias CacheMapeamento Direto

39

Page 40: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias CacheMapeamento Direto

• Nesta Memória temos os blocos sendo mapeados seqüencialmente nas linhas da Memória Cache.

• Quando um bloco é mapeado na última linha da Cache, o bloco seguinte volta a ser mapeado na sua primeira linha.

• Neste ponto é finalizado um ciclo e inicializado outro.• A característica mais importante de um ciclo é que não existe conflito de linhas da

Cache entre os blocos do mesmo ciclo.• Para que haja conflito de linhas, os blocos acessados deverão estar em ciclos diferentes

e separados por uma distância mínima equivalente a uma Cache inteira.• Devido ao conceito de Localidade Espacial, esta situação é pouco provável.

40

Page 41: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias CacheMapeamento Direto

• A TAG desta memória guarda o número do ciclo de onde o dado se originou.• Para trabalhar internamente, a Memória Cache precisa do valor da TAG, do Número da

Linha e do Número da Coluna para localizar o dado solicitado.• O pedido do dado se origina na CPU. Esta solicitação é feita pelo endereço da célula

da Memória Principal.• Este endereço é visto pela Cache como sendo composto pelas informações (TAG,

Número da Linha, Número da Coluna), como mostra a figura abaixo:

41

Page 42: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias CachePuramente Associativa

42

Page 43: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias CachePuramente Associativa

• Nesta Memória os blocos podem ser carregados em qualquer linha da Cache, ao contrário do Mapeamento Direto, onde as linhas já eram pré-definidas e não podiam ser mudadas.

• A TAG neste caso guarda o número do bloco, já que não existe a definição de ciclo nesta memória.

• Devida a possibilidade do bloco ser carregado em qualquer linha, existe a necessidade de verificar todas as linhas da Cache para saber se o dado se encontra ou não.

• Esta necessidade torna a implementação desta Cache mais difícil e pouco escalável, já que o aumento no número de linhas implica em mais circuitos de verificação de dados.

43

Page 44: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias CachePuramente Associativa

• Nesta memória, o número da linha não se originará do endereço da Memória Principal, e sim de um circuito interno de verificação.

• O endereço da Memória Principal é visto pela Cache como sendo composto pelas informações (TAG, Número da Coluna), como mostra a figura abaixo:

44

Page 45: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias CacheAssociativa por Conjunto

45

Page 46: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias CacheAssociativa por Conjunto

• Nesta Memória as linhas são agrupadas formando conjuntos. Os blocos são mapeados para os conjuntos de forma semelhante ao Mapeamento Direto, só que ao invés de ser mapeado para linha ele é mapeado para o conjunto.

• Dentro do conjunto o bloco pode ser carregado em qualquer uma de suas linhas, semelhante a Puramente Associativa, sendo que esta liberdade está restrita ao conjunto.

• A TAG neste caso guarda o número do ciclo, já que, devido ao mapeamento dos conjuntos, volta a existir a definição de ciclo.

• Devida a possibilidade do bloco ser carregado em qualquer linha do conjunto, existe a necessidade de verificar todas as suas linhas para saber se o dado se encontra ou não.

• Como esta necessidade está limitada ao conjunto, a implementação desta Memória Cache ficou mais fácil e escalável, já que o aumento no número de linhas da Cache não implica em mais circuitos de verificação de dados, pois não aumenta o número de linhas do conjunto.

46

Page 47: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias CacheAssociativa por Conjunto

• Nesta memória, o número da linha não se originará do endereço da Memória Principal, e sim o número do conjunto.

• A linha dentro do conjunto se originará de um circuito interno de verificação.• O endereço da Memória Principal é visto pela Cache como sendo composto pelas

informações (TAG, Número do Conjunto, Número da Coluna), como mostra a figura abaixo:

47

Page 48: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias CachePolíticas de Substituição

• A Política de Substituição tem como finalidade definir uma linha para ter seus dados substituídos por um novo conteúdo vindo da Memória Principal.

• Esta linha é denominada “Linha Vítima”.– Aleatório: Este método faz uma escolha casual de uma linha para ser a linha

vítima. Como este método não leva em consideração os acessos anteriores à Memória Cache, existirá uma grande chance de se fazer uma má escolha.

– FIFO: Este método faz a escolha da linha vítima de acordo com a ordem de carregamento (First-in, First-out). O método de escolha é simples e é levado em consideração a ordem de carregamento, que só é atualizado quando a linha for carregada, isto é, na ocorrência de um miss.

– LFU (Menos Freqüentemente Usada): Este método usa como base para a escolha da linha vítima a quantidade de vezes que as linhas foram referenciadas. A linha que foi referenciada menos vezes, é a linha vítima. Este método usa como critério a freqüência de acessos a uma determinada linha.

– LRU (Menos Recentemente Usada): O critério de escolha deste método é a ordem dos acessos feitos às linhas de cache. A linha que não é acessada a mais tempo é a candidata a linha vítima. 48

Page 49: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias CachePolíticas de Atualização

• A Política de Atualização faz referência ao momento em que o dado escrito pela CPU será transferido para a Memória Principal.

– Write Through: Este método faz a atualização da Memória Principal no momento em que foi feita a escrita na Memória Cache. A vantagem deste método é de manter a Memória Principal sempre atualizada, só que para cada escrita feita pela CPU, será consumido o tempo referente ao da Memória Principal. A vantagem da cache será apenas nas operações de leitura que, por serem muito mais freqüentes, ainda terá algum ganho com este método.

– Write Back: Para conseguir aumentar o desempenho nas operações de escrita, esta memória atrasa as atualizações na Memória Principal, mantendo os dados mais recentes apenas na Cache. A atualização será realizada somente no momento em que a respectiva linha tiver que ser substituída por outra, a não ser que ela não tenha sido alterada pela CPU.

49

Page 50: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias CachePolíticas de Atualização

– Write Once: Esta política de atualização é uma mistura dos dois métodos anteriores e tem como objetivo trazer vantagens tanto nas operações de leitura como nas operações de escrita em sistemas com mais de uma CPU. Este é um caso em que mais de um dispositivo está acessando a Memória Principal. Para que não aconteça o envio de uma informação errada para uma das CPUs, a Memória Cache utiliza do recurso da primeira escrita para avisar as demais caches do sistema que aquele bloco da Memória Principal passará a ser de uso exclusivo dela. A partir deste momento, todas as operações de escrita e leitura naquele bloco da Memória Principal ficarão restritos a esta cache. Quando alguma outra CPU necessitar das informações deste bloco, será feita uma solicitação de atualização à cache portadora do bloco. Esta cache irá então atualizar a Memória Principal possibilitando que as demais CPUs recebam o dado mais recente.

50

Page 51: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias Cache

51

Processador Cache L1 de I nstruções

Cache L1 de Dados Cache L2

64 KB 64 KB 512 KB ou 1 MB

Associativo por conjunto de 2 vias

Associativo por conjunto de 2 vias

Associativo por conjunto de 16 vias

Linhas de 64 bytes Linhas de 64 bytes Linhas de 64 bytes

Caminho de dados de 128 bits com o cache L2

Caminho de dados de 128 bits com o cache L2

Caminho de dados de 128 bits com o cache L1 de dados

Caminho de dados de 128 bits com a unidade de busca

Caminho de dados de 128 bits com o cache L1 de instruções

64 KB por núcleo 64 KB 1 MB por núcleo

Associativo por conjunto de 2 vias

Associativo por conjunto de 2 vias

Associativo por conjunto de 16 vias

Linhas de 64 bytes Linhas de 64 bytes Linhas de 64 bytes

Caminho de dados de 128 bits com o cache L2

Caminho de dados de 128 bits com o cache L2

Caminho de dados de 128 bits com o cache L1 de dados

Caminho de dados de 128 bits com a unidade de busca

Caminho de dados de 128 bits com o cache L1 de instruções

Athlon 64

Athlon 64 FX

Page 52: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias Cache

52

Processador Cache L1 de I nstruções

Cache L1 de Dados Cache L2

64 KB por núcleo 64 KB 512 KB ou 1 MB por núcleo

Associativo por conjunto de 2 vias

Associativo por conjunto de 2 vias

Associativo por conjunto de 16 vias

Linhas de 64 bytes Linhas de 64 bytes Linhas de 64 bytes

Caminho de dados de 128 bits com o cache L2

Caminho de dados de 128 bits com o cache L2

Caminho de dados de 128 bits com o cache L1 de dados

Caminho de dados de 128 bits com a unidade de busca

Caminho de dados de 128 bits com o cache L1 de instruções

64 KB por núcleo 64 KB 128 KB ou 256 KB

Associativo por conjunto de 2 vias

Associativo por conjunto de 2 vias

Associativo por conjunto de 16 vias

Linhas de 64 bytes Linhas de 64 bytes Linhas de 64 bytes

Caminho de dados de 128 bits com o cache L2

Caminho de dados de 128 bits com o cache L2

Caminho de dados de 128 bits com o cache L1 de dados

Caminho de dados de 128 bits com a unidade de busca

Caminho de dados de 128 bits com o cache L1 de instruções

Sempron (soquetes 754 e AM2)

Athlon 64 X2

Page 53: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias Cache

53

Processador Cache L1 de I nstruções

Cache L1 de Dados Cache L2

64 KB por núcleo 64 KB por núcleo 1 MB por núcleo

Associativo por conjunto de 2 vias

Associativo por conjunto de 2 vias

Associativo por conjunto de 16 vias

Linhas de 64 bytes Linhas de 64 bytes Linhas de 64 bytes

Caminho de dados de 128 bits com o cache L2

Caminho de dados de 128 bits com o cache L2

Caminho de dados de 128 bits com o cache L1 de dados

Caminho de dados de 128 bits com a unidade de busca

Caminho de dados de 128 bits com o cache L1 de instruções

8 KB 256 KB, 512 MB ou 1 MB

Associativo por conjunto de 4 vias

Associativo por conjunto de 8 vias

Linhas de 64 bytes Linhas de 128 bytes

Caminho de dados de 256 bits com o cache L2

Caminho de dados de 64 bits com a unidade de busca

Caminho de dados de 256 bits com o cache L1 de dados

Pentium 4 N/D *

Opteron

Page 54: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

Memórias Cache

54

Processador Cache L1 de Instruções

Cache L1 de Dados Cache L2

16 KB 1 MB ou 2 MB por núcleo

Associativo por conjunto de 4 vias

Associativo por conjunto de 8 vias

Linhas de 64 bytes Linhas de 128 bytes

Caminho de dados de 256 bits com o cache L2

Caminho de dados de 64 bits com a unidade de busca

Caminho de dados de 256 bits com o cache L1 de dados

32 KB 32 KB 2 MB ou 4 MB

Linha de dados de 64 bytes

Linha de dados de 64 bytes

Associativo por conjunto de 8 vias

Caminho de dados de 256 bits com a unidade de busca

Caminho de dados de 256 bits com o cache L2

Linhas de 64 bytes

Caminho de dados de 256 bits com o cache L1 de dados

32 KB 32 KB 1 MB

Linha de dados de 64 bytes

Linha de dados de 64 bytes

Associativo por conjunto de 8 vias

Caminho de dados de 256 bits com a unidade de busca

Caminho de dados de 256 bits com o cache L2

Linhas de 64 bytes

Caminho de dados de 256 bits com o cache L1 de dados

Pentium Dual Core

Pentium D N/D *

Core 2 Duo

Page 55: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

CPUCaracterísticas Gerais

• A CPU é um dispositivo eletrônico que tem a finalidade de executar operações previamente estabelecidas pelo seu fabricante (desenvolvedor).

• Dentro da CPU existem diversos circuitos específico para cada operação diferente definida pelo fabricante.

• Estas operações são chamadas de instruções de máquina.• As instruções de máquina são muito simples e, para que seja possível

realizar uma tarefa mais complexa, deve-se executar uma determinada seqüência destas instruções.

• Esta seqüência de instruções são os programas.

55

Page 56: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

CPUCaracterísticas Gerais

• O que é necessário para a execução do programa?1. As instruções a serem executadas devem estar armazenadas em células

sucessivas da Memória Principal;2. O endereço da primeira instrução deve estar armazenado no processador

para que ele possa começar a execução.• Após estabelecidos os passos anteriores, o processador realizará

ciclicamente os passos a seguir:a) Buscar uma instrução na Memória Principal, uma de cada vez, cujo

endereço deve estar armazenado em um registrador existente na CPU específico para este fim;

b) Interpretar que operação representa aquela instrução;c) Buscar os dados, onde estiverem, para trazê-los até o processador;d) Executar efetivamente a operação com os dados;e) Guardar o resultado, se houver algum, no local definido pela instrução;f) Reiniciar o procedimento buscando uma nova instrução.Este procedimento cíclico é chamado de “Ciclo de Instrução”. 56

Page 57: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

CPUCaracterísticas Gerais

• Este ciclo é realizado indefinidamente desde o momento em que a máquina foi ligada até o momento em que ela é desligada, reiniciada (resete), que ocorra algum tipo de erro ou que seja encontrada uma instrução de parada.

• A execução do ciclo de instrução foi sofrendo diversos melhoramentos com o passar dos anos com o objetivo de agilizar a execução dos programas.

• Um dos melhoramentos foi a utilização de pipelines (linha de montagem). Com esta técnica foi possível diminuir a ociosidade das unidades funcionais permitindo que todas elas trabalhassem simultaneamente. Desta forma, enquanto se interpreta uma instrução, já esta sendo feita a busca da próxima. No pipeline temos vária instruções sendo executadas ao mesmo tempo, porém cada uma delas em estágios diferentes.

• Outra melhoria foi permitir a execução simultânea de várias instruções no mesmo estágio. Estas CPUs são chamadas de superescalares.

57

Page 58: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

CPUCaracterísticas Gerais

• Os registradores são memórias especiais que possuem acesso direto às unidades de processamento.

• Eles são produzidos com a mesma tecnologia de fabricação da CPU e com isso, possuem o mesmo desempenho.

• Como é uma memória, a sua única funcionalidade é de guardar valores para uma futura consulta.

• Os registradores podem ser classificados como de uso geral (de dados) ou de uso específico (informações de uso interno da CPU).

• Os registradores de uso geral são usados para armazenar dados da execução do programa, como os valores que serão operados e o resultado das operações.

• Os registradores de uso específico guardam informações especiais. Já vimos dois deles: RDM e REM.

• Existe também o registrador PC (Program Counter) ou CI (Contador de Instruções) ou IP (Instruction Pointer – nomenclatura da Intel e da AMD). Este registrador guarda o endereço da próxima instrução a ser executada pela CPU.

• Um outro importante registrador é o RI (Registrador de Instrução). Este registrador guarda a instrução que está sendo executada pela CPU.

58

Page 59: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

CPUFormatos de uma Instrução de Máquina

• Como será que é formada a instrução de máquina?• Devemos ter em mente que a CPU possui um circuito para cada tarefa definida pelo

fabricante.• Para acessar estes circuitos e então ter tal operação realizada, eles foram identificados

com um código numérico.• Sempre que se deseja executar uma determinada operação, deve-se indicar o código do

circuito em questão. Este código é conhecido como opcode.• Além de indicar a operação, a maioria delas necessita de parâmetros (operandos).

Então, além do opcode, a instrução possui campos com os operandos da operação em questão.

• Nas arquiteturas mais comuns, as instruções podem ir desde apenas o opcode, zero operando, até três operandos.

59

OP. 1 OP. 2

Operandos

OPCODE OP. 3

Page 60: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

60

• Indicar o endereço do dado diretamente na instrução muitas das vezes é insuficiente para algumas estruturas de dados. Sendo assim, existem outras formas de formar o endereço onde os dados ou instruções estão guardados.

• Dentre os diversos modos de endereçamentos desenvolvidos para processadores, os principais são:– Imediato;– Direto;– Indireto;– Por registrador;– Indexado;– Base mais deslocamento.

• Nem todos estes modos estão incluídos nos conjuntos de instruções dos processadores contemporâneos, mas devem ser descritos não só por razões históricas mas para percepção do processo evolutivo da tecnologia.

CPUModos de Endereçamentos

Page 61: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

61

Modo Imediato• O método mais simples e rápido de obter um dado é indicar seu próprio valor no

campo operando da instrução, em vez de buscá-lo na memória. A vantagem desse método reside no curto tempo de execução da instrução, pois não gasta ciclo de memória para a sua execução, exceto o único requerido para a sua busca.

• Assim, o dado é transferido da memória juntamente com a instrução (para o RI), visto estar contido no campo operando da instrução.

• Este modo é útil:– Para inicialização de contadores (um valor sempre fixo em toda execução do

mesmo programa);– Na operação com constantes matemáticas;– Para armazenamento de ponteiros em registradores do processador;– Para indicação da quantidade de posições em que um determinado número será

deslocado para a direita ou para a esquerda (em operações de divisão e multiplicação por 2).

• Uma de suas desvantagens consiste na limitação do tamanho do campo operando das instruções o que reduz o valor máximo do dado a ser manipulado.

CPUModos de Endereçamentos

Page 62: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

62

Modo Direto• Nesse método, o valor binário contido no campo operando da instrução indica o

endereço de memória onde se localiza o dado.• O endereço pode ser o de uma célula onde o dado está inteiramente contido.• É também um modo simples de acesso, pois requer apenas uma referência à MP para

buscar o dado, sendo, porém mais lento que o modo imediato devido naturalmente à referência à memória.

• Quando um dado varia de valor a cada execução do programa, a melhor maneira de utilizá-lo é, inicialmente, armazená-lo na MP (do dispositivo de entrada para a memória). O programa, então, usa o dado através do modo direto, onde a instrução indica apenas o endereço onde ele se localiza. Esta é a característica de uma variável de programa: representar o endereço de uma variável.

• Uma possível desvantagem desse processo está na limitação da memória a ser usada, conforme o tamanho do campo operando. Isto é, se o campo tiver um tamanho, por exemplo, de 12 bits, com o emprego do modo direto somente se pode acessar as células de endereço na faixa de 0 a (4.095)10.

CPUModos de Endereçamentos

Page 63: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

63

Modo Indireto• Nesse método, o valor binário contido no campo operando da instrução representa o

endereço de uma célula; mas o conteúdo da referida célula não é o valor de um dado (como no modo direto), é um outro endereço de memória, cujo o conteúdo é o valor do dado.

• Assim, há um duplo endereçamento para o acesso a um dado e, conseqüentemente, mais ciclos de memória para buscar o dado, comparativamente com os métodos já apresentados.

• O endereço intermediário (conteúdo da célula endereçado pelo valor do campo operando) é conhecido como ponteiro, pois indica a localização do dado.

• Com esse processo, elimina-se o problema do modo direto, delimitação do valor do endereço do dado, pois estando o endereço armazenado na memória (pode ocupar uma ou mais células) se estenderá ao tamanho necessário à representação do maior endereço da MP, do sistema de computação em uso.

CPUModos de Endereçamentos

Page 64: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

64

Endereçamento por Registrador• Esse método tem característica semelhante aos modos direto e indireto, exceto que a

célula (ou palavra) de memória referenciada na instrução é substituída por um dos registradores do processador. Com isso, o endereço mencionado na instrução passa a ser o de um dos registradores, e não mais de uma célula da MP.

• A primeira vantagem, logo observada, consiste no menor número de bits necessários para endereçar os registradores, visto que estes existem em muito menor quantidade que as células de memória. Isso reduz o tamanho geral da instrução.

• Um computador que tenha, por exemplo, um processador com 16 registradores, requer apenas 4 bits para endereçá-los; no caso de endereçamentos de células da MP, como o espaço de endereçamento da memória é grande, há necessidade de 20 ou mais bits para indicar o endereço de cada uma das células.

• Outra vantagem está no próprio emprego do dado, que passa a ser armazenado em um meio (registrador) cujo acesso é muito mais rápido que o acesso à memória.

CPUModos de Endereçamentos

Page 65: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

65

Modo Indexado• Freqüentemente, durante a execução dos programas há necessidade de se manipular

endereços de acesso a elementos de certos tipos especiais de dados. Esses endereços servem, na realidade, de ponteiros para os referidos elementos.

• Por exemplo, o acesso aos elementos de um vetor deve considerar que tais elementos são armazenados seqüencialmente na memória e que sua localização pode ser referenciada por um ponteiro (endereço) que é alterado para indicar o elemento desejado (índice do elemento identifica univocamente cada um).

• A descrição dessas instruções caracterizam o modo de endereçamento denominado indexado. Esta denominação advém do fato de que a obtenção do endereço de um dado (elemento de um array) relaciona-se com o seu índice.

• Nesse tipo de instrução, o endereço do dado é a soma do valor do campo operando (fixo para todos os elementos de um dado array) e de um valor armazenado em um dos registradores (normalmente denominado registrador índice). O valor armazenado nesse registrador varia para o acesso a cada elemento.

• Na verdade, esse modo de endereçamento é uma evolução das técnicas desenvolvidos desde os primórdios da computação para manipulação dessas estruturas de dados especiais.

CPUModos de Endereçamentos

Page 66: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

66

Modo Base mais Deslocamento• Este modo de endereçamento tem característica semelhante ao modo indexado, visto

que o endereço de acesso a uma célula de memória se obtém através da soma de dois valores, um inserido no campo apropriado da instrução (normalmente denominado campo deslocamento) e o outro valor inserido é em um determinado registrador, denominado registrador – base ou registrador de segmento.

• A diferença entre eles está na aplicação do propósito do método e, por conseguinte, na forma de implementá-lo. Nesse caso, o valor a se manter fixo é o do registrador – base/segmento, variando o conteúdo do campo deslocamento em cada instrução, diferentemente do modo indexado, onde o conteúdo do registrador é que se altera.

• Os processadores da família Intel x86 possuem alguns registradores projetados especificamente com a finalidade de servir como registrador de segmento, como os registradores de 16 bits dos primeiros processadores Pentium seguidos posteriormente pelos registradores de segmentos de 32 bits.

• Este método de endereçamento acarreta uma redução do tamanho das instruções (e, com isso, economiza memória), bem como facilita o processo de relocação dinâmica de programas.

CPUModos de Endereçamentos

Page 67: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

67

Modo Base mais Deslocamento• A sua escolha decorre de dois fatores:

a) Durante a execução de uma grande quantidade de programas as referências as células de memória, onde se localizam os operandos, normalmente são seqüenciais, ocorrendo poucos acessos a outras instruções fora de ordem (exceto os desvios);

b) A maioria dos programas ocupam um pequeno espaço da MP disponível.• Dessa forma, em vez de ser necessário, em cada instrução, que o campo operando

tenha um tamanho correspondente à capacidade total de endereçamento da MP, basta que o endereço desejado seja obtido pela soma de um valor existente em um dos registradores da CPU com o valor contido na instrução.

• Por isso o método é chamado de base + deslocamento, consistindo, então, na utilização de dois campos na instrução (que substituem o campo operando): um, com o endereço de um registrador (chamado de base ou segmento), e outro, com valor denominado deslocamento (porque contem um valor relativo – que se desloca em relação – à primeira instrução).

CPUModos de Endereçamentos

Page 68: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

CPUArquitetura x86 – CISC x RISC

• A arquitetura x86 teve início no processador 8086 da Intel e vem prosseguindo até os processadores atuais.

• Esta arquitetura é de tecnologia CISC (Conjunto Complexo de Instrução), que foi muito útil para a época dos primeiros processadores desta linha, mas para os dias atuais tem sido um dificultador no aumento de desempenho dos processadores.

• A grande vantagem da tecnologia CISC na época vinha do fato da capacidade da memória principal ser muito pequena, lenta e também muito cara.

• Para diminuir esses efeitos, definiu-se um conjunto CISC de instrução para que os programas ficassem menores, consumindo menos memória.

• Além disso, uma instrução complexa tinha que ser destrinchada em micro-códigos internos da CPU que ao serem executados ofereciam um desempenho melhor, pois o acesso a memória era muito lento.

68

Page 69: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

CPUArquitetura x86 – CISC x RISC

• Uma outra tecnologia existente é a RISC (Conjunto Reduzido de Instruções).

• Quando as memórias começaram a ficar mais rápidas e baratas, possibilitando um aumento na sua capacidade, não havia mais empecilhos no uso da arquitetura RISC.

• A grande vantagem desta arquitetura era de possuir instruções bem simples e de tamanho fixo, possibilitando a construção de circuitos decodificadores bem mais simples e rápidos.

• Infelizmente, a arquitetura x86 se proliferou de forma tão rápida em âmbito mundial que quando o uso da tecnologia RISC se tornou viável, o mercado não iria aceitar, já que todos os softwares até então foram criados para a arquitetura x86.

• A solução adotada a princípio foi de manter o projeto da CPU com a arquitetura CISC x86.

69

Page 70: Fundamentos de Sistemas Computacionais Professor: Ricardo Quintão e-mail: rgquintao@gmail.com Site:  Versão 5.0

CPUArquitetura x86 – CISC x RISC

• Esta arquitetura foi mantida até o Pentium (8086, 80286, 80386, 80486, Pentium).

• Neste ponto, o uso da tecnologia CISC x86 não estava mais permitindo avanços no desempenho, tornando as CPUs tão complexas que se tornavam lentas e inviáveis.

• A solução adotada pela Intel a partir do Pentium Pro foi criar um pré-decodificador que converteria instruções CISC x86 em instruções RISC proprietárias de uso interno.

• A partir deste momento, a CPU passava a ser RISC, pois as instruções que eram executadas eram instruções RISC.

• Desta forma, novos avanços tecnológicos e de arquitetura foram criados permitindo uma taxa de aumento de clock elevada.

70