·

Cursos Gerais ·

Organização de Computadores

Send your question to AI and receive an answer instantly

Ask Question

Preview text

Registradores e memória Arquitetura de Computadores Bruno Prado Departamento de Computação UFS Introdução Já foi visto que os computadores funcionam executando uma programação sequência de operações e de dados armazenada em memória Processador Código Dados Como os operandos são armazenados Imediata Registrador Memória Por que utilizar diferentes formas de armazenamento para os operandos C 2022 Bruno Prado Departamento de Computação UFS 2 53 Introdução Já foi visto que os computadores funcionam executando uma programação sequência de operações e de dados armazenada em memória Processador Código Dados Como os operandos são armazenados Imediata Registrador Memória Por que utilizar diferentes formas de armazenamento para os operandos C 2022 Bruno Prado Departamento de Computação UFS 3 53 Introdução Já foi visto que os computadores funcionam executando uma programação sequência de operações e de dados armazenada em memória Processador Código Dados Como os operandos são armazenados Imediata Registrador Memória Por que utilizar diferentes formas de armazenamento para os operandos C 2022 Bruno Prado Departamento de Computação UFS 4 53 Introdução Capacidade Custo Latência Tipo Capacidade Custo Latência Imediato 1 3 bytes SRAM 2 KiB 32 Mbit US 5k GiB 020 2 ns DRAM 1 16 GiB US 3 GiB 10 ns C 2022 Bruno Prado Departamento de Computação UFS 5 53 Registrador O que é um registrador É uma memória interna do processador Geralmente do tamanho da arquitetura 16 bits 32 bits 64 bits 0 15 0 31 0 63 Tipos Propósito geral Controle e status C 2022 Bruno Prado Departamento de Computação UFS 6 53 Registrador Propósito geral R0R25 Definido pelo programador Armazenamento ou endereçamento Processador R0 R1 R24 R25 C 2022 Bruno Prado Departamento de Computação UFS 7 53 Registrador Propósito geral R0R25 Indexáveis de 0 até 25 R0 possui valor constante 0 e os demais registradores podem armazenar valores de 32 bits com ou sem sinal 0 2147483648 2147483647 0 31 R0 0 31 R1 R25 C 2022 Bruno Prado Departamento de Computação UFS 8 53 Registrador Propósito geral R0R25 Indexáveis de 0 até 25 R0 possui valor constante 0 e os demais registradores podem armazenar valores de 32 bits com ou sem sinal 0 0 4294967295 0 31 R0 0 31 R1 R25 C 2022 Bruno Prado Departamento de Computação UFS 9 53 Registrador Controle e status IR PC SP SR Indexáveis de 28 até 31 São utilizados para o funcionamento do processador Processador R0 R1 R24 R25 IR PC SP SR C 2022 Bruno Prado Departamento de Computação UFS 10 53 Registrador Controle e status IR PC SP SR Indexáveis de 28 até 31 São utilizados para o funcionamento do processador Processador R0 R1 R24 R25 IR PC SP SR Registrador de instrução IR armazena a instrução carregada da memória e em execução C 2022 Bruno Prado Departamento de Computação UFS 11 53 Registrador Controle e status IR PC SP SR Indexáveis de 28 até 31 São utilizados para o funcionamento do processador Processador R0 R1 R24 R25 IR PC SP SR Contador de programa PC controla o fluxo de execução da aplicação apontando para as instruções C 2022 Bruno Prado Departamento de Computação UFS 12 53 Registrador Controle e status IR PC SP SR Indexáveis de 28 até 31 São utilizados para o funcionamento do processador Processador R0 R1 R24 R25 IR PC SP SR Ponteiro de pilha SP referencia o topo da pilha na memória alocação estática e subrotinas C 2022 Bruno Prado Departamento de Computação UFS 13 53 Registrador Controle e status IR PC SP SR Indexáveis de 28 até 31 São utilizados para o funcionamento do processador Processador R0 R1 R24 R25 IR PC SP SR Registrador de status SR controle de configurações e status das operações do processador C 2022 Bruno Prado Departamento de Computação UFS 14 53 Registrador Registrador de instrução IR Índice 28 Código da instrução 0 31 R28 IR Contador de programa PC Índice 29 Endereço da instrução 0 31 R29 PC Ponteiro de pilha SP Índice 30 Endereço da pilha 0 31 R30 SP C 2022 Bruno Prado Departamento de Computação UFS 15 53 Registrador Registrador de status SR Índice 31 ZN ZD SN OV IV CY 0 1 2 3 4 5 6 7 31 R31 SR Resultado de operações entre A e B ZN zero igual a 0 ZD divisão por zero divisor B 0 SN sinal sinal negativo OV overflow extrapolação de capacidade IV instrução inválida código de operação inválido CY carry vai a um aritmético C 2022 Bruno Prado Departamento de Computação UFS 16 53 Registrador Quais os cenários de operação com os dados 1 Acessar e operar diretamente em memória 2 Ler os dados da memória realizar as operações em registradores e escrever os resultados na memória Processador Memória 5 GHz 020 ns DDR4 10 ns Cenário com 100 instruções que acessam a memória para ler uma variável em memória Cenário 1 100 0 2 ns 10 ns 1020 ns Cenário 2 10 2 ns 100 0 2 ns 10 2 ns 40 4 ns Operações com registradores são 25 vezes mais rápidas C 2022 Bruno Prado Departamento de Computação UFS 17 53 Registrador Quais os cenários de operação com os dados 1 Acessar e operar diretamente em memória 2 Ler os dados da memória realizar as operações em registradores e escrever os resultados na memória Processador Memória 5 GHz 020 ns DDR4 10 ns Cenário com 100 instruções que acessam a memória para ler uma variável em memória Cenário 1 100 0 2 ns 10 ns 1020 ns Cenário 2 10 2 ns 100 0 2 ns 10 2 ns 40 4 ns Operações com registradores são 25 vezes mais rápidas C 2022 Bruno Prado Departamento de Computação UFS 18 53 Registrador Quais os cenários de operação com os dados 1 Acessar e operar diretamente em memória 2 Ler os dados da memória realizar as operações em registradores e escrever os resultados na memória Processador Memória 5 GHz 020 ns DDR4 10 ns Cenário com 100 instruções que acessam a memória para ler uma variável em memória Cenário 1 100 0 2 ns 10 ns 1020 ns Cenário 2 10 2 ns 100 0 2 ns 10 2 ns 40 4 ns Operações com registradores são 25 vezes mais rápidas C 2022 Bruno Prado Departamento de Computação UFS 19 53 Registrador Arquitetura de carregamentoarmazenamento Operações apenas com registradores loadstore Sempre que um dado é necessário é feito seu carregamento prévio da memória Quando todas as operações já foram concluídas o dado é armazenado de volta para a memória C 2022 Bruno Prado Departamento de Computação UFS 20 53 Registrador Arquitetura de carregamentoarmazenamento Operacdes apenas com registradores loaastore Sempre que um dado é necessario é feito seu carregamento prévio da memoria Quando todas as operacées jd foram concluidas o dado 6 armazenado de volta para a meméria VY Acesso muito rapido com registradores Regularidade e simplicidade no enderecamento C 2022 Bruno Prado Departamento de Computado UFS 2153 Registrador Arquitetura de carregamentoarmazenamento Operacdes apenas com registradores loaastore Sempre que um dado é necessario é feito seu carregamento prévio da memoria Quando todas as operacées jd foram concluidas o dado 6 armazenado de volta para a meméria X Baixa capacidade de armazenamento Numero limitado de registradores C 2022 Bruno Prado Departamento de Computado UFS 2253 Registrador E quando forem necessarios mais registradores do que estdo disponiveis Acessando multiplos elementos de um vetor Alocagdo dindmica e estdtica de dados Chamadas de funcdes aninhadas ou recursivas C 2022 Bruno Prado Departamento de Computado UFS 2353 Registrador E quando forem necessarios mais registradores do que estdo disponiveis Acessando multiplos elementos de um vetor Alocagdo dindmica e estdtica de dados Chamadas de funcdes aninhadas ou recursivas V Realizar mais acessos a memoria V Utilizar a estrutura de pilha C 2022 Bruno Prado Departamento de Computado UFS 2453 Memória O que é uma memória É um dispositivo semicondutor para armazenamento em estado sólido de informações Permite o endereçamento de posições para realização de operações de escrita e de leitura Todos os dados são codificados em formato binário Memória Endereço InstruçãoDado C 2022 Bruno Prado Departamento de Computação UFS 25 53 Memória O que é uma memória É um dispositivo semicondutor para armazenamento em estado sólido de informações Permite o endereçamento de posições para realização de operações de escrita e de leitura Todos os dados são codificados em formato binário Memória Endereço InstruçãoDado C 2022 Bruno Prado Departamento de Computação UFS 26 53 Memória O que é uma memória É um dispositivo semicondutor para armazenamento em estado sólido de informações Permite o endereçamento de posições para realização de operações de escrita e de leitura Todos os dados são codificados em formato binário Memória Endereço InstruçãoDado C 2022 Bruno Prado Departamento de Computação UFS 27 53 Memória Tecnologias de memória Volátil Não retém as informações com a interrupção de fornecimento de eletricidade Ex DRAM SRAM Não volátil Dados são escritos e lidos eletricamente com persistência da informação Ex ROM EEPROM Flash C 2022 Bruno Prado Departamento de Computação UFS 28 53 Memória Endereçamento de 32 bits 4 GiB Diagrama de blocos Processador Memória 32 1 32 32 32 1 32 32 Endereço Escritaleitura Dado Dado C 2022 Bruno Prado Departamento de Computação UFS 29 53 Memória Tipos de endereçamento Valor imediato para acessar endereços constantes 1 R1 Memória 0 x00000100 2 l8 r1 0 x100 3 R2 Memória 0 x00000100 4 l16 r2 0x80 5 R3 Memória 0 x00000100 6 l32 r3 0x40 C 2022 Bruno Prado Departamento de Computação UFS 30 53 Memória Tipos de endereçamento Baseado em registrador para acesso indireto 1 R1 0x100 2 mov r1 0x100 3 R2 Memória 0 x00000100 4 l8 r2 r1 5 R1 R1 1 6 sra r1 1 7 R3 Memória 0 x00000100 8 l16 r3 r1 9 R1 R1 1 10 sra r1 1 11 R4 Memória 0 x00000100 12 l32 r4 r1 C 2022 Bruno Prado Departamento de Computação UFS 31 53 Memória Tipos de endereçamento Indireto e imediato para acesso linear 1 R1 0x40 2 mov r1 0x40 3 R2 Memória 0 x00000100 4 l32 r2 r1 0 5 R3 Memória 0 x00000104 6 l32 r3 r1 1 7 R4 Memória 0 x00000108 8 l32 r4 r1 2 C 2022 Bruno Prado Departamento de Computação UFS 32 53 Memória Tamanho típico dos tipos de dados Tipos inteiros Tipo Bits Com sinal Sem sinal char 8 27 27 1 0 28 1 short 16 215 215 1 0 216 1 int¹ 16 64 263 263 1 0 264 1 long¹ 32 64 263 263 1 0 264 1 long long¹ 64 263 263 1 0 264 1 ¹ Valores dependentes da plataforma Padronização por tamanho e sinal em stdinth C 2022 Bruno Prado Departamento de Computação UFS 33 53 Memória Tamanho típico dos tipos de dados Tipos inteiros Tipo Bits Com sinal Sem sinal char 8 27 27 1 0 28 1 short 16 215 215 1 0 216 1 int¹ 16 64 263 263 1 0 264 1 long¹ 32 64 263 263 1 0 264 1 long long¹ 64 263 263 1 0 264 1 ¹ Valores dependentes da plataforma Padronização por tamanho e sinal em stdinth C 2022 Bruno Prado Departamento de Computação UFS 34 53 Memória Tamanho típico dos tipos de dados Tipos reais Tipo Bits Alcance float 32 1 2E38 3 4E38 double 64 2 3E308 1 7E308 long double¹ 80 128 3 4E4932 1 1E4932 ¹ Valores dependentes da plataforma C 2022 Bruno Prado Departamento de Computação UFS 35 53 Memória Alinhamento dos dados na memória Dados alinhados Preenchimento com zeros padding 1 char a 2 uint32t b 0xABCD1122 3 int16t c 0x1234 0x00000100 00 00 00 40 0x00000104 AB CD 11 22 0x00000108 00 00 12 34 Bigendian C 2022 Bruno Prado Departamento de Computação UFS 36 53 Memória Alinhamento dos dados na memória Dados alinhados Preenchimento com zeros padding 1 char a 2 uint32t b 0xABCD1122 3 int16t c 0x1234 0x00000100 00 00 00 40 0x00000104 AB CD 11 22 0x00000108 00 00 12 34 Bigendian C 2022 Bruno Prado Departamento de Computação UFS 37 53 Memória Alinhamento dos dados na memória Dados alinhados Preenchimento com zeros padding 1 char a 2 uint32t b 0xABCD1122 3 int16t c 0x1234 0x00000100 40 00 00 00 0x00000104 22 11 CD AB 0x00000108 34 12 00 00 Littleendian C 2022 Bruno Prado Departamento de Computação UFS 38 53 Memória Alinhamento dos dados na memória Dados alinhados Preenchimento com zeros padding 1 char a 2 uint32t b 0xABCD1122 3 int16t c 0x1234 0x00000100 40 00 00 00 0x00000104 22 11 CD AB 0x00000108 34 12 00 00 Littleendian C 2022 Bruno Prado Departamento de Computação UFS 39 53 Memória Alinhamento dos dados na memória Dados não alinhados Acesso complexo e específico 1 char a 2 uint32t b 0xABCD1122 3 int16t c 0x1234 0x00000100 40 AB CD 11 0x00000104 22 12 34 Bigendian C 2022 Bruno Prado Departamento de Computação UFS 40 53 Memória Alinhamento dos dados na memória Dados não alinhados Acesso complexo e específico 1 char a 2 uint32t b 0xABCD1122 3 int16t c 0x1234 0x00000100 40 22 11 CD 0x00000104 AB 34 12 Littleendian C 2022 Bruno Prado Departamento de Computação UFS 41 53 Memoria Alinnamento da meméria Qual é a melhor abordagem Alinnhados Ndo alinhados Desempenho no acesso Economia de espaco V Simplicidade de uso x Complexidade de acesso x Desperdicio de espaco x Suporte da arquitetura C 2022 Bruno Prado Departamento de Computado UFS 4253 Memória Arquitetura Harvard São utilizadas duas memórias fisicamente separadas para armazenar as instruções e os dados A memória de programa só permite leitura enquanto que a memória de dados permite escrita e leitura Aplicação text PC 0xFFFF 0x0000 Pilha Heap Dados não inicializados bss Dados inicializados data SP 0xFFFF 0x0000 C 2022 Bruno Prado Departamento de Computação UFS 43 53 Memoria Arquitetura Harvard Sdo utilizadas duas memérias fisicamente separadas para armazenar as instrudes e os dados Ameméria de programa so permite leitura enquanto que a meméria de dados permite escrita e leitura OxFFEFE OxFFEFE i Aplicacdo text Heap Dados nao inicializados ss Dados inicializados on Ox0000 deta Ox0000 V Acesso paralelo das instrucées e dos dados C 2022 Bruno Prado Departamento de Computado UFS 4453 Memoria Arquitetura Harvard Sdo utilizadas duas memérias fisicamente separadas para armazenar as instrudes e os dados Ameméria de programa so permite leitura enquanto que a meméria de dados permite escrita e leitura OxFFEFE OxFFEFE i Aplicacdo text Heap Dados nao inicializados ss Dados inicializados on Ox0000 deta Ox0000 V Protecdo contra modificacdo da aplicacdo C 2022 Bruno Prado Departamento de Computado UFS 4553 Memoria Arquitetura Harvard Sdo utilizadas duas memérias fisicamente separadas para armazenar as instrudes e os dados Ameméria de programa so permite leitura enquanto que a meméria de dados permite escrita e leitura OxFFEFE OxFFEFE Aplicacdo text Heap Dados nao inicializados ss Dados inicializados oe Ox0000 deta Ox0000 x Componente adicional de meméria C 2022 Bruno Prado Departamento de Computado UFS 46 53 Memoria Arquitetura Harvard Sdo utilizadas duas memérias fisicamente separadas para armazenar as instrudes e os dados Ameméria de programa so permite leitura enquanto que a meméria de dados permite escrita e leitura OxFFEFE OxFFEFE SP Aplicacdo text Heap Dados nao inicializados ss Dados inicializados oe Ox0000 deta Ox0000 X Pior aproveitamento da capacidade C 2022 Bruno Prado Departamento de Computado UFS 4753 Memória Arquitetura Von Neumann Princeton É utilizada somente uma memória compartilhada para armazenar as instruções e os dados Tanto o código de programa como os dados podem ser acessados para escrita e leitura Pilha Heap Dados não inicializados bss Dados inicializados data Aplicação text PC SP 0xFFFF 0x0000 C 2022 Bruno Prado Departamento de Computação UFS 48 53 Memoria Arquitetura Von Neumann Princeton E utilizada somente uma memoria compartilhada para armazenar as instrudes e os dados Tanto o cédigo de programa como os dados podem ser acessados para escrita e leitura OxFEFE Dados nao inicializados Bss Dados inicializados data Aplicacdo text PC OxO0000 Vv Capacidade de automodificacdo da aplicacdo C 2022 Bruno Prado Departamento de Computado UFS 4953 Memoria Arquitetura Von Neumann Princeton E utilizada somente uma memoria compartilhada para armazenar as instrudes e os dados Tanto o cédigo de programa como os dados podem ser acessados para escrita e leitura OxFEFE so Dados nao inicializados Bss Dados inicializados data Aplicacdo text PC OxO0000 V Uso eficiente da meméria C 2022 Bruno Prado Departamento de Computado UFS 5053 Memoria Arquitetura Von Neumann Princeton E utilizada somente uma memoria compartilhada para armazenar as instrudes e os dados Tanto o cédigo de programa como os dados podem ser acessados para escrita e leitura OxFEFE Dados nao inicializados Bss Dados inicializados data Aplicacdo text PC OxO0000 X Acesso sequencial de instrugoes e dados C 2022 Bruno Prado Departamento de Computado UFS 5153 Memoria Arquitetura Von Neumann Princeton E utilizada somente uma memoria compartilhada para armazenar as instrudes e os dados Tanto o cédigo de programa como os dados podem ser acessados para escrita e leitura OxFEFE Dados nao inicializados Bss Dados inicializados data Aplicacdo text PC OxO0000 X Mais vulnerdvel a ataques e falhas C 2022 Bruno Prado Departamento de Computado UFS 5253 Exemplo Considerando uma arquitetura loadstore e o código fonte abaixo calcule seu tempo de execução O processador opera com um frequência de 4 GHz e a memória possui latência média de 10 ns 1 Padrão de tipos por tamanho 2 include stdinth 3 Função principal 4 int main 5 uint32t a 1 i 1000 6 whilei 0 7 a a i 8 i 9 10 return 0 11 Compare o tempo de execução caso todas as operações acessem diretamente a memória C 2022 Bruno Prado Departamento de Computação UFS 53 53