A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Fundamentos de Sistemas Computacionais

Apresentações semelhantes


Apresentação em tema: "Fundamentos de Sistemas Computacionais"— Transcrição da apresentação:

1 Fundamentos de Sistemas Computacionais
Professor: Ricardo Quintão Site: Versão 5.0

2 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. 0  1  2  3  4  5  6  7  8  9  Vazio 0  1  2  3  Vazio Base 4 Base 10 0  1  Vazio Base 2

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

4 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 3 ) 10

5 Sistema de Numeração Agora vamos fazer um exemplo na base 3 com as mesmas 43 bolinhas. ( 1 1 2 1 ) 3 4 3 3 1 3 14 3 1 2 4 3 1 1 3 2 1 ( 1 1 2 1 ) = 1 x 3 x 3 x 3 + 1 x 3 x 3 + 2 x 3 + 1 3 = 1 x 3 3 + 1 x 2 1 3 + 2 x 3 + 1 x 3 = 27 + 9 + 6 + 1 = ( 43 ) 10

6 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. 0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  Vazio Base 16

7 Sistema de Numeração Exemplo de conversão de bases superiores a base 10. (7126)10  ( )16 7126 16 72 445 16 86 125 27 16 (1BD6)16 6 13 11 1 (1BD6)16  ( )10 3 2 1 ( 1 B D 6 ) 16 3 2 1 = 1 x 16 + 11 x 16 + 13 x 16 + 6 x 16 = 4096 + 2816 + 208 + 6 = ( 7126 ) 10

8 Sistema de Numeração Conversã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.

9 Sistema de Numeração Conversã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 Exemplo: Base 4 Base 2 00 1 01 2 10 3 11 ( )4  ( )2 ( )4 = ( )2 11 10 11 01 10 01 11 00 10 ( )2  ( )4 ( )2 1 3 2 = ( )4

10 Sistema de Numeração Conversã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 Exemplo: Base 8 Base 2 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111 (637254)8  ( )2 ( )8 = ( )2 110 011 111 010 101 100 ( )2  ( )8 ( )2 = ( )8 7 5 3 6 5 2 6

11 Sistema de Numeração Conversã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 Base 16 Base 2 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111 Exemplo: (AD3B9)16  ( )2 (A D B 9)16 = ( )2 1010 1101 0011 1011 1001 ( )2  ( )16 ( )2 = (1EBD56)16 1 E B D 5 6

12 Sistema de Numeração Representaçã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. 0  Positivo 1  Negativo

13 Sistema de Numeração Representação de Números Negativos.
... Sinal Magnitude Número Sinal e Magnitude Esta representação agrupa o bit de sinal com um valor (magnitude) que representa o valor absoluto de número como ilustrado abaixo: Faixa de Valores Para um número formado por n bits (incluindo o bit de sinal), é possível representar valores que vão deste -2n até 2n Exemplo: Para um número representado por 8 bits, isto é n = 8, teremos como faixa de valores: até  até  Faixa  -127 até 127

14 Sistema de Numeração Representação de Números Negativos.
Sinal e Magnitude Converta 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. (-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 = ( )2 = (AD)16. Bit de Sinal

15 Sistema de Numeração Representação de Números Negativos.
Sinal e Magnitude Converta 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. (-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 = ( )2 = (87)16. Bit de Sinal

16 Sistema de Numeração Representação de Números Negativos.
Sinal e Magnitude Um 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 = ( )2. (-0)10 = ( )2. Como (0)10 = (-0)10 Então, ( )2 = ( )2. Isto é, duas representações do zero.

17 Sistema de Numeração Representação de Números Negativos.
... Sinal Demais bits Número Complemento de 1 Nesta 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. Faixa de Valores Para um número formado por n bits (incluindo o bit de sinal), é possível representar valores que vão deste -2n até 2n Exemplo: Para um número representado por 8 bits, isto é n = 8, teremos como faixa de valores: até  até  Faixa  -127 até 127

18 Sistema de Numeração Representação de Números Negativos.
Complemento de 1 Converta 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. (-45)10, n = 8 bits. Primeiro passo: Converter o valor sem sinal, 45, para binário e representá-lo com 8 bits. (45)10 = ( )2. Segundo passo: Inverter todos os bits do número. Repare que o bit mais à esquerda continua representando o sinal. (-45)10 = ( )2 = (D2)16. Bit de Sinal

19 Sistema de Numeração Representação de Números Negativos.
Complemento de 1 Converta 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. (-7)10, n = 8 bits. Primeiro passo: Converter o valor sem sinal, 7, para binário e representá-lo com 8 bits. (7)10 = ( )2. Segundo passo: Inverter todos os bits do número. Repare que o bit mais à esquerda continua representando o sinal. (-7)10 = ( )2 = (F8)16. Bit de Sinal

20 Sistema de Numeração Representação de Números Negativos.
Complemento de 1 Um 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 = ( )2. (-0)10 = ( )2. Como (0)10 = (-0)10 Então, ( )2 = ( )2. Isto é, duas representações do zero.

21 Sistema de Numeração Representação de Números Negativos.
... Sinal Demais bits Número Complemento de 2 Nesta 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. Faixa de Valores Para um número formado por n bits (incluindo o bit de sinal), é possível representar valores que vão deste -2n-1 até 2n Exemplo: Para um número representado por 8 bits, isto é n = 8, teremos como faixa de valores: até  -128 até  Faixa  -128 até 127

22 Sistema de Numeração Representação de Números Negativos.
Complemento de 2 Converta 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. (-45)10, n = 8 bits. Primeiro passo: Converter o valor sem sinal, 45, para binário e representá-lo com 8 bits. (45)10 = ( )2. Segundo passo: Inverter todos os bits do número ( )2. Terceiro passo: Somar 1 ao valor anterior. Repare que o bit mais à esquerda continua representando o sinal. (-45)10 = ( )2 = (D3)16. Bit de Sinal

23 Sistema de Numeração Representação de Números Negativos.
Complemento de 2 Converta 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. (-7)10, n = 8 bits. Primeiro passo: Converter o valor sem sinal, 7, para binário e representá-lo com 8 bits. (7)10 = ( )2. Segundo passo: Inverter todos os bits do número. ( )2. Terceiro passo: Somar 1 ao valor anterior. Repare que o bit mais à esquerda continua representando o sinal. (-7)10 = ( )2 = (F9)16. Bit de Sinal

24 Sistema de Numeração Representação de Números Negativos.
Complemento de 2 Diferente 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 = ( )2. (-0)10 = ( )2 + 1 = ( )2. Como o número possui apenas 8 bits, o nono bit representado em azul deve ser descartado. (-0)10 = ( )2. Já que (0)10 = (-0)10 Então, ( )2 = ( )2. Isto é, apenas uma representações do zero.

25 Sistema de Numeração Aritmé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. ( )2 e ( )2 Como seria feita a soma destes números? Usando o método tradicional fica: 11 Considerando sem sinal Considerando com sinal  (+132)  (-124)   (+14)10   (+14)  (+146)  (-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.

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

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

28 Memórias Voláteis

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

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

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

32 Estrutura Interna da Memória Principal
M.P. Bit Célula 1 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 M E  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 } Identificação ou Endereço 2 3 N - 1

33 Conexão da CPU com a MP CPU MP. Unidades Funcionais 1 2 3 REM RDM UC
Unidades Funcionais 1 2 3 REM RDM UC N - 1 Barramento de Controle (BC) Barramento de Dados (BD) Barramento de Endereço (BE) 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 REM >= BE >= E RDM = BD >= M TCA = RDM / M

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

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

36 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)

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

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

39 Memórias Cache Mapeamento Direto

40 Memórias Cache Mapeamento 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.

41 Memórias Cache Mapeamento 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:

42 Memórias Cache Puramente Associativa

43 Memórias Cache Puramente 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.

44 Memórias Cache Puramente 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:

45 Memórias Cache Associativa por Conjunto

46 Memórias Cache Associativa 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.

47 Memórias Cache Associativa 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:

48 Memórias Cache Polí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.

49 Memórias Cache Polí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.

50 Memórias Cache Polí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.

51 Memórias Cache

52 Memórias Cache

53 Memórias Cache

54 Memórias Cache

55 CPU Caracterí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.

56 CPU Características Gerais
O que é necessário para a execução do programa? As instruções a serem executadas devem estar armazenadas em células sucessivas da Memória Principal; 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: 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; Interpretar que operação representa aquela instrução; Buscar os dados, onde estiverem, para trazê-los até o processador; Executar efetivamente a operação com os dados; Guardar o resultado, se houver algum, no local definido pela instrução; Reiniciar o procedimento buscando uma nova instrução. Este procedimento cíclico é chamado de “Ciclo de Instrução”.

57 CPU Caracterí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.

58 CPU Caracterí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.

59 CPU Formatos 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. Operandos OPCODE OP. 1 OP. 2 OP. 3

60 CPU Modos de Endereçamentos
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.

61 CPU Modos de Endereçamentos
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.

62 CPU Modos de Endereçamentos
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.

63 CPU Modos de Endereçamentos
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.

64 CPU Modos de Endereçamentos
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.

65 CPU Modos de Endereçamentos
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.

66 CPU Modos de Endereçamentos
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.

67 CPU Modos de Endereçamentos
Modo Base mais Deslocamento A sua escolha decorre de dois fatores: 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); 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).

68 CPU Arquitetura 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.

69 CPU Arquitetura 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.

70 CPU Arquitetura 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.


Carregar ppt "Fundamentos de Sistemas Computacionais"

Apresentações semelhantes


Anúncios Google